mirror of https://github.com/a2-4am/passport.git
395 lines
11 KiB
Plaintext
Executable File
395 lines
11 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_meccb0 = $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_meccm7 = $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
|
|
STRINGCOUNT = $42
|
|
|
|
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 smodify
|
|
!word modifyto
|
|
!word dosboot0
|
|
!word prodosboot0
|
|
!word pascalboot0
|
|
!word meccboot0
|
|
!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 meccm7
|
|
!word datasoftb0
|
|
!word datasoft
|
|
!word lsr6a
|
|
!word bcs08
|
|
!word jmpb660
|
|
!word protdos
|
|
!word protdosw
|
|
!word protserial
|
|
!word fbff
|
|
!word encoded44
|
|
!word encoded53
|
|
!word specdel
|
|
;
|
|
; 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 20161230-en",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
|
|
smodify
|
|
!text "T%t,S%0,$%1: ",00
|
|
modifyto
|
|
!text " -> ",00
|
|
dosboot0
|
|
!text "T00,S00 Found DOS 3.3 bootloader",$8D,00
|
|
prodosboot0
|
|
!text "T00,S00 Found ProDOS bootloader",$8D,00
|
|
pascalboot0
|
|
!text "T00,S00 Found Pascal bootloader",$8D,00
|
|
meccboot0
|
|
!text "T00 Found MECC M8 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 "T00,S01 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
|
|
meccm7
|
|
!text "T00 Found MECC M7 bootloader",$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 "T00,S03 RWTS accepts $D4 or $D5 for the",$8D
|
|
!text "first address prologue nibble.",$8D,00
|
|
bcs08
|
|
!text "T00,S03 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
|