mirror of
https://github.com/a2-4am/passport.git
synced 2024-05-28 21:41:27 +00:00
505 lines
15 KiB
Plaintext
Executable File
505 lines
15 KiB
Plaintext
Executable File
;
|
|
; Main menu keys
|
|
; (should match the text in .mainmenu below)
|
|
; (these are NOT case-sensitive)
|
|
;
|
|
!ct "lcase.ct"
|
|
k_verify = "V"
|
|
k_demuffin = "D"
|
|
k_crack = "C"
|
|
k_slot = "S"
|
|
k_quit = "Q"
|
|
; <Esc> will also quit
|
|
|
|
;
|
|
; String IDs
|
|
; (pass in accumulator to PrintByID)
|
|
;
|
|
s_header = $00
|
|
s_mainmenu = $01
|
|
s_progbar = $02
|
|
s_reading = $03
|
|
s_diskrwts = $04
|
|
s_bb00 = $05
|
|
s_sunburst = $06
|
|
s_optimum = $07
|
|
s_builtin = $08
|
|
s_switch = $09
|
|
s_writing = $0A
|
|
s_unformat = $0B
|
|
s_f7 = $0C
|
|
s_sync = $0D
|
|
s_optbad = $0E
|
|
s_pass = $0F
|
|
s_passdemuf = $10
|
|
s_passcrack = $11
|
|
s_passcrack0 = $12
|
|
s_fail = $13
|
|
s_fatal0000 = $14
|
|
s_fatal220f = $15
|
|
s_done = $16
|
|
s_noslot6 = $17
|
|
s_writeerr = $18
|
|
s_writeioerr = $19
|
|
s_writenodev = $1A
|
|
s_writeprot = $1B
|
|
s_othermli = $1C
|
|
s_canttrace = $1D
|
|
s_canceled = $1E
|
|
s_bademu = $1F
|
|
s_reset = $20
|
|
s_modify = $21
|
|
s_modifyto = $22
|
|
s_dosb0 = $23
|
|
s_prodosb0 = $24
|
|
s_pascalb0 = $25
|
|
s_mecc = $26
|
|
s_sierra = $27
|
|
s_a6bc95 = $28
|
|
s_jmpbcf0 = $29
|
|
s_rol1e = $2A
|
|
s_runhello = $2B
|
|
s_e7 = $2C
|
|
s_jmpb4bb = $2D
|
|
s_jmpb400 = $2E
|
|
s_jmpbeca = $2F
|
|
s_jsrbb03 = $30
|
|
s_thunder = $31
|
|
s_jmpae8e = $32
|
|
s_diskvol = $33
|
|
s_d5d5f7 = $34
|
|
s_construct= $35
|
|
s_datasoftb0 = $36
|
|
s_datasoft = $37
|
|
s_lsr6a = $38
|
|
s_bcs08 = $39
|
|
s_jmpb660 = $3A
|
|
s_protdos = $3B
|
|
s_protdosw = $3C
|
|
s_protserial = $3D
|
|
s_fbff = $3E
|
|
s_encoded44 = $3F
|
|
s_encoded53 = $40
|
|
s_specdel = $41
|
|
s_bytrack = $42
|
|
s_a5count = $43
|
|
s_restart = $44
|
|
s_corrupter= $45
|
|
s_eab0 = $46
|
|
s_eatrk6 = $47
|
|
s_eeef = $48
|
|
s_poke = $49
|
|
s_bootcounter = $4A
|
|
s_milliken = $4B
|
|
s_jsr8b3 = $4C
|
|
s_daviddos = $4D
|
|
s_quickdos = $4E
|
|
s_diversidos = $4F
|
|
s_prontodos = $50
|
|
s_jmpb412 = $51
|
|
s_laureate = $52
|
|
s_bbf9 = $53
|
|
s_micrograms = $54
|
|
s_cmpbne0 = $55
|
|
s_writeram = $56
|
|
s_d5timing = $57
|
|
s_advint = $58
|
|
s_dos32b0 = $59
|
|
s_bootwrite = $5A
|
|
STRINGCOUNT = $5B
|
|
|
|
!zone {
|
|
StringTable
|
|
!word .header
|
|
!word .mainmenu
|
|
!word .progbar
|
|
!word .reading
|
|
!word .diskrwts
|
|
!word .bb00
|
|
!word .sunburst
|
|
!word .optimum
|
|
!word .builtin
|
|
!word .switch
|
|
!word .writing
|
|
!word .unformat
|
|
!word .f7
|
|
!word .sync
|
|
!word .optbad
|
|
!word .passver
|
|
!word .passdemuf
|
|
!word .passcrack
|
|
!word .passcrack0
|
|
!word .fail
|
|
!word .fatal0000
|
|
!word .fatal220f
|
|
!word .done
|
|
!word .noslot6
|
|
!word .writeerr
|
|
!word .writeioerr
|
|
!word .writenodev
|
|
!word .writeprot
|
|
!word .othermli
|
|
!word .canttrace
|
|
!word .canceled
|
|
!word .bademu
|
|
!word .reset
|
|
!word .modify
|
|
!word .modifyto
|
|
!word .dos33boot0
|
|
!word .prodosboot0
|
|
!word .pascalboot0
|
|
!word .mecc
|
|
!word .sierra
|
|
!word .a6bc95
|
|
!word .jmpbcf0
|
|
!word .rol1e
|
|
!word .runhello
|
|
!word .e7
|
|
!word .jmpb4bb
|
|
!word .jmpb400
|
|
!word .jmpbeca
|
|
!word .jsrbb03
|
|
!word .thunder
|
|
!word .jmpae8e
|
|
!word .diskvol
|
|
!word .d5d5f7
|
|
!word .construct
|
|
!word .datasoftb0
|
|
!word .datasoft
|
|
!word .lsr6a
|
|
!word .bcs08
|
|
!word .jmpb660
|
|
!word .protdos
|
|
!word .protdosw
|
|
!word .protserial
|
|
!word .fbff
|
|
!word .encoded44
|
|
!word .encoded53
|
|
!word .specdel
|
|
!word .bytrack
|
|
!word .a5count
|
|
!word .restart
|
|
!word .corrupter
|
|
!word .eaboot0
|
|
!word .eatrk6
|
|
!word .eeef
|
|
!word .poke
|
|
!word .bootcounter
|
|
!word .milliken
|
|
!word .jsr8b3
|
|
!word .daviddos
|
|
!word .quickdos
|
|
!word .diversidos
|
|
!word .prontodos
|
|
!word .jmpb412
|
|
!word .laureate
|
|
!word .bbf9
|
|
!word .micrograms
|
|
!word .cmpbne0
|
|
!word .writeram
|
|
!word .d5timing
|
|
!word .advint
|
|
!word .dos32boot0
|
|
!word .bootwrite
|
|
;
|
|
; Text can contain substitution strings, which
|
|
; are replaced by current values at runtime. Each
|
|
; substitution string is two bytes long. The first
|
|
; byte is always "%", which puts the print routine
|
|
; into substitution mode. The next byte controls
|
|
; which value is printed (see list below), then
|
|
; substitution mode ends automatically. Unknown
|
|
; substitution strings are silently ignored and
|
|
; produce no output.
|
|
;
|
|
; Substitution strings are case-sensitive.
|
|
;
|
|
; Supported substitution strings:
|
|
; %S destination (write) slot
|
|
; %D destination (write) drive
|
|
; %t current track (during read and patch)
|
|
; %s current sector (during read)
|
|
;
|
|
; In addition, it supports "%0" through "%9"
|
|
; for printing arbitrary hexadecimal values.
|
|
; These are stored in the gDisplayBytes array and
|
|
; can be set directly before calling PrintByID.
|
|
;
|
|
.header
|
|
!text "Passport by 4am 2017-08-15",$00
|
|
.mainmenu
|
|
!text "________________________________________",$8D,$8D,$8D,$8D,$8D,$8D,$8D
|
|
!text " "
|
|
!scrxor $40, "V"
|
|
!text "erify disk",$8D,$8D
|
|
!text " "
|
|
!scrxor $40, "D"
|
|
!text "emuffin disk",$8D,$8D
|
|
!text " "
|
|
!scrxor $40, "C"
|
|
!text "rack disk",$8D,$8D
|
|
!text " "
|
|
!scrxor $40, "Q"
|
|
!text "uit",$8D,$8D,$8D,$8D,$8D,$8D,$8D
|
|
!text "source: S6,D1 target: "
|
|
!scrxor $40, "S"
|
|
!text "%S,D%D",$00
|
|
.progbar
|
|
!byte $8D
|
|
!text " ______________________________________",$8D
|
|
!text " "
|
|
!scrxor $00, " "
|
|
!text "____________________________________"
|
|
!scrxor $00, " ",$8D,$8D,$8D,$00
|
|
.reading
|
|
!text "Reading from S6,D1",$8D,$00
|
|
.diskrwts
|
|
!text "Using disk's own RWTS",$8D,$00
|
|
.bb00
|
|
!text "T00,S05 Found $BB00 protection check",$8D
|
|
!text "T00,S0A might be unreadable",$8D,$00
|
|
.sunburst
|
|
!text "T00,S04 Found Sunburst disk",$8D
|
|
!text "T11,S0F might be unreadable",$8D,$00
|
|
.optimum
|
|
!text "T00,S00 Found Optimum Resource disk",$8D
|
|
!text "T01,S0F might be unreadable",$8D,$00
|
|
.builtin
|
|
!text "Using built-in RWTS",$8D,$00
|
|
.switch
|
|
!text "Switching to built-in RWTS",$8D,$00
|
|
.writing
|
|
!text "Writing to S%S,D%D",$8D,$00
|
|
.unformat
|
|
!text "T%t is unformatted",$8D,$00
|
|
.f7
|
|
!text "T%t Found $F7F6EFEEAB protection",$8D,$00
|
|
.sync
|
|
!text "T%t Found nibble count protection",$8D,$00
|
|
.optbad
|
|
!text "T%t,S%s is unreadable (ignoring)",$8D,$00
|
|
.passver
|
|
!text "Verification complete. The disk is good.",$00
|
|
.passdemuf
|
|
!text "Demuffin complete.",$8D,$00
|
|
.passcrack
|
|
!text "Crack complete.",$8D,$00
|
|
.passcrack0
|
|
!byte $8D
|
|
!text "The disk was copied successfully, but",$8D
|
|
!text "Passport did not apply any patches.",$8D,$8D
|
|
!text "Possible reasons:",$8D
|
|
!text "- The source disk is not copy protected."
|
|
!text "- The target disk works without patches."
|
|
!text "- The disk uses an unknown protection,",$8D
|
|
!text " and Passport can not help any further.",$00
|
|
.fail
|
|
!byte $8D
|
|
!text "T%t,S%s Fatal read error",$8D,$00
|
|
.fatal0000
|
|
!byte $8D
|
|
!text "Possible reasons:",$8D
|
|
!text "- There is no disk in S6,D1.",$8D
|
|
!text "- It is not an Apple ][ disk.",$8D
|
|
!text "- The disk is DOS 3.2-only.",$8D
|
|
!text "- The disk is unformatted.",$8D,$00
|
|
.fatal220f
|
|
!byte $8D
|
|
!text "Passport does not work on this disk.",$8D,$8D
|
|
!text "Possible reasons:",$8D
|
|
!text "- This is not a 16-sector disk.",$8D
|
|
!text "- The disk modifies its RWTS in ways",$8D
|
|
!text " that Passport is not able to detect.",$8D,$00
|
|
.done
|
|
!byte $8D
|
|
!text "Press any key to continue "
|
|
!scrxor $40, " ",$00
|
|
.noslot6
|
|
!text "Passport requires a Disk II drive in S6.",$8D
|
|
!text "Press any key to quit "
|
|
!scrxor $40, " ",$00
|
|
.writeerr
|
|
!byte $8D
|
|
!text "T%t Fatal write error",$8D,$8D,$00
|
|
;
|
|
; MLI error $27
|
|
;
|
|
.writeioerr
|
|
!text "Possible reasons:",$8D
|
|
!text "- There is no disk in S%S,D%D.",$8D
|
|
!text "- The disk has bad sectors.",$8D
|
|
!text "- The disk is unformatted.",$8D,$8D,$00
|
|
;
|
|
; MLI error $28
|
|
;
|
|
.writenodev
|
|
!text "S%S,D%D does not exist.",$8D,$00
|
|
;
|
|
; MLI error $2B
|
|
;
|
|
.writeprot
|
|
!text "The disk in S%S,D%D is write-protected.",$8D,$00
|
|
;
|
|
; other MLI error
|
|
;
|
|
.othermli
|
|
!text "MLI error $%0.",$8D
|
|
!text "Please contact the developer.",$8D,$00
|
|
|
|
.canttrace
|
|
!text "Unrecognized drive, tracing is disabled",$8D,$00
|
|
.canceled
|
|
!text "Canceled at your request.",$8D,$00
|
|
.bademu
|
|
!byte 00
|
|
.reset
|
|
!byte $8D
|
|
!text "Press <Ctrl-Reset> to continue.",$8D,$00
|
|
.modify
|
|
!text "T%t,S%0,$%1: ",$00
|
|
.modifyto
|
|
!text " -> ",$00
|
|
.dos33boot0
|
|
!text "T00,S00 Found DOS 3.3 bootloader",$8D,$00
|
|
.dos32boot0
|
|
!text "T00,S00 Found DOS 3.2 bootloader",$8D,$00
|
|
.prodosboot0
|
|
!text "T00,S00 Found ProDOS bootloader",$8D,$00
|
|
.pascalboot0
|
|
!text "T00,S00 Found Pascal bootloader",$8D,$00
|
|
.mecc
|
|
!text "T00,S00 Found MECC bootloader",$8D,$00
|
|
.sierra
|
|
!text "T%t,S%0 Found Sierra protection check",$8D,$00
|
|
.a6bc95
|
|
!text "T%t,S%0 Found A6BC95 protection check",$8D,$00
|
|
.jmpbcf0
|
|
!text "T00,S03 RWTS requires a timing bit after"
|
|
!text "the first data epilogue by jumping to",$8D
|
|
!text "$BCF0.",$8D,$00
|
|
.rol1e
|
|
!text "T00,S03 RWTS accumulates timing bits in",$8D
|
|
!text "$1E and checks its value later.",$8D,$00
|
|
.runhello
|
|
!text "T%t,S%0 Startup program executes a",$8D
|
|
!text "protection check before running the real"
|
|
!text "startup program.",$8D,$00
|
|
.e7
|
|
!text "T%t,S%0 Found E7 bitstream",$8D,$00
|
|
.jmpb4bb
|
|
!text "T00,S0C Disk calls a protection check at"
|
|
!text "$B4BB before initializing DOS.",$8D,$00
|
|
.jmpb400
|
|
!text "T%t,S%0 Disk calls a protection check at"
|
|
!text "$B400 before initializing DOS.",$8D,$00
|
|
.jmpbeca
|
|
!text "T00,S02 RWTS requires extra nibbles and",$8D
|
|
!text "timing bits after the data prologue by",$8D
|
|
!text "jumping to $BECA.",$8D,$00
|
|
.jsrbb03
|
|
!text "T00,S05 Found a self-decrypting",$8D
|
|
!text "protection check at $BB03.",$8D,$00
|
|
.thunder
|
|
!text "T00,S03 RWTS counts timing bits and",$8D
|
|
!text "checks them later.",$8D,$00
|
|
.jmpae8e
|
|
!text "T00,S0D Disk calls a protection check at"
|
|
!text "$AE8E after initializing DOS.",$8D,$00
|
|
.diskvol
|
|
!text "T00,S08 RWTS requires a non-standard",$8D
|
|
!text "disk volume number.",$8D,$00
|
|
.d5d5f7
|
|
!text "T%t,S%0 Found D5D5F7 protection check",$8D,$00
|
|
.construct
|
|
!text "T01,S0F Reconstructing missing data",$8D,$00
|
|
.datasoftb0
|
|
!text "T00,S00 Found Datasoft bootloader",$8D,$00
|
|
.datasoft
|
|
!text "T%t,S%0 Found Datasoft protection check",$8D,$00
|
|
.lsr6a
|
|
!text "T%t,S%0 RWTS accepts $D4 or $D5 for the",$8D
|
|
!text "first address prologue nibble.",$8D,$00
|
|
.bcs08
|
|
!text "T%t,S%0 RWTS accepts $DE or a timing bit"
|
|
!text "for the first address epilogue nibble.",$8D,$00
|
|
.jmpb660
|
|
!text "T00,S02 RWTS requires timing bits after",$8D
|
|
!text "the data prologue by jumping to $B660.",$8D,$00
|
|
.protdos
|
|
!text "T00,S01 Found encrypted RWTS, key=$%0",$8D,$00
|
|
.protdosw
|
|
!text "T00 Decrypting RWTS before writing",$8D,$00
|
|
.protserial
|
|
!text "T%t,S%3 Erasing serial number %0%1%2",$8D,$00
|
|
.fbff
|
|
!text "T%t,S%0 Found FBFF protection check",$8D,$00
|
|
.encoded44
|
|
!byte $8D
|
|
!text "T00,S00 Fatal error",$8D,$8D
|
|
!text "Passport does not work on this disk,",$8D
|
|
!text "because it uses a 4-and-4 encoding.",$8D,$00
|
|
.encoded53
|
|
!byte $8D
|
|
!text "T00,S00 Fatal error",$8D,$8D
|
|
!text "Passport does not work on this disk,",$8D
|
|
!text "because it uses a 5-and-3 encoding.",$8D,$00
|
|
.specdel
|
|
!text "T00,S00 Found DOS 3.3P bootloader",$8D,$00
|
|
.bytrack
|
|
!text "T%t,S%0 RWTS changes based on track",$8D,$00
|
|
.a5count
|
|
!text "T%t,S%0 Found A5 nibble count",$8D,$00
|
|
.restart
|
|
!text "Restarting scan",$8D,$00
|
|
.corrupter
|
|
!text "T13,S0E Protection check intentionally",$8D
|
|
!text "destroys unauthorized copies",$8D,$00
|
|
.eaboot0
|
|
!text "T00 Found Electronic Arts bootloader",$8D,$00
|
|
.eatrk6
|
|
!text "T06 Found EA protection track",$8D,$00
|
|
.eeef
|
|
!text "T%t Found $EEEFBBBA protection",$8D,$00
|
|
.poke
|
|
!text "T%t,S%0 BASIC program POKEs protection",$8D
|
|
!text "check into memory and CALLs it.",$8D,$00
|
|
.bootcounter
|
|
!text "T%t,S%0 Original disk destroys itself",$8D
|
|
!text "after a limited number of boots.",$8D,$00
|
|
.milliken
|
|
!text "T00,S0A Found Milliken protection check",$8D
|
|
!text "T02,S05 might be unreadable",$8D,$00
|
|
.jsr8b3
|
|
!text "T00,S00 Found JSR $08B3 bootloader",$8D,$00
|
|
.daviddos
|
|
!text "T00,S00 Found David-DOS bootloader",$8D,$00
|
|
.quickdos
|
|
!text "T00,S00 Found Quick-DOS bootloader",$8D,$00
|
|
.diversidos
|
|
!text "T00,S00 Found Diversi-DOS bootloader",$8D,$00
|
|
.prontodos
|
|
!text "T00,S00 Found Pronto-DOS bootloader",$8D,$00
|
|
.jmpb412
|
|
!text "T02,S00 Disk calls a protection check",$8D
|
|
!text "at $B412 before initializing DOS.",$8D,$00
|
|
.laureate
|
|
!text "T00,S00 Found Laureate bootloader",$8D,$00
|
|
.bbf9
|
|
!text "T%t,S%0 Found BBF9 protection check",$8D,$00
|
|
.micrograms
|
|
!text "T00,S00 Found Micrograms bootloader",$8D,$00
|
|
.cmpbne0
|
|
!text "T%t,S%0 RWTS accepts any value for the",$8D
|
|
!text "first address epilogue nibble.",$8D,$00
|
|
.writeram
|
|
!text "Writing to RAM disk",$8D,$00
|
|
.d5timing
|
|
!text "T%t,S%0 RWTS accepts $D5 plus a timing",$8D
|
|
!text "bit as the entire address prologue.",$8D,$00
|
|
.advint
|
|
!text "T%t,S%0 Found Adventure International",$8D
|
|
!text "protection check",$8D,$00
|
|
.bootwrite
|
|
!text "T00 Writing Standard Delivery bootloader",$00
|
|
}
|