diff --git a/src/analyze.a b/src/analyze.a index c9a61d5..5810beb 100755 --- a/src/analyze.a +++ b/src/analyze.a @@ -7,7 +7,8 @@ SkipTrack ; don't look for whole-track protections on track 0, that's silly lda gTrack - beq .donotskip + sec + beq .linknoskip ; ; Electronic Arts protection track? ; @@ -24,6 +25,7 @@ SkipTrack ; Unformatted track? ; jsr IsUnformatted +.linknoskip bcs .donotskip ; ; $F7F6EFEAAB protection track? @@ -52,15 +54,12 @@ SkipTrack ; lda gTrack cmp #$22 - bne + + clc + bne .donotskip lda gIsProDOS - bne + - lda #TRUE + bne .donotskip sta gPossibleGamco -+ clc - !byte $24 ; hides next SEC .donotskip - sec rts } @@ -79,40 +78,40 @@ IsF7F6 lda $C0E9 lda #$00 jsr WAIT + tay lda #$19 sta nibcount - ldy #$00 -- lda $C0EC - bpl - + jsr .readnib cmp #$F7 beq + .restart iny bne - dec nibcount bne - - beq .fail + sec + beq .driveoff + -- lda $C0EC - bpl - + jsr .readnib cmp #$F6 bne .restart -- lda $C0EC - bpl - + jsr .readnib cmp #$EF bne .restart -- lda $C0EC - bpl - + jsr .readnib cmp #$EE bne .restart -- lda $C0EC - bpl - + jsr .readnib cmp #$AB bne .restart clc - !byte $24 ; hides SEC -.fail sec +.driveoff lda $C0E8 rts + +.readnib +- lda $C0EC + bpl - + rts } ;------------------------------- @@ -250,7 +249,6 @@ xHeredityDog lda $08FE clc adc #$04 - pha ldx #$16 ldy #$4A jsr CompareMemory @@ -259,7 +257,6 @@ xHeredityDog !byte $C0,$10,$FB,$C9,$D5,$D0,$EE,$BD,$8C,$C0,$10,$FB,$C9,$AA,$D0,$E5 !byte $A9,$4C,$A0,$00,$99,$00,$95,$88,$D0,$FA,$CE,$46,$BB,$AD,$46,$BB !byte $C9,$07,$D0,$EC,$A9,$18,$8D,$42,$B9,$A9,$0A,$8D,$ED,$B7,$D0,$05 - pla bcs .exit lda #kSectorOptional sta T00S0A @@ -351,9 +348,8 @@ b4bbcompare !byte $08,$85,$3D,$85,$43,$A9,$BF,$85 !byte $3F,$A9,$00,$85,$3C,$85,$42,$E6 !byte $42,$A9,$FE,$85,$3E,$A0,$00,$AD - bcc + - jmp _b4bbexit -+ lda gIsDOS32 + bcs _b4bbexit + ldy gIsDOS32 beq .dos32 lda #$55 ; low byte of address that checks address prologue 1 sta b4bbmodify+1 @@ -368,14 +364,13 @@ b4bbcompare lda #$B2 ; low byte of address that checks address epilogue 1 sta b4bbmodify2+1 ldx #$01 ; track - ldy #$00 ; sector + ;;ldy #$00 ; sector .all stx gTrack sty gSector lda #$00 sta gAddress lda #$0C - clc adc #BASEPAGE sta gAddress+1 jsr ReadSector ; read sector so we can look for 'JMP $B4BB' marker @@ -386,13 +381,11 @@ b4bbcompare jsr compare !byte $4C,$BB,$B4 bcs _b4bbexit - lda gIsDOS32 - beq .dos32b ldx #$02 ; track ldy #$02 ; sector - bne .allb ; always branches + lda gIsDOS32 + bne .allb .dos32b - ldx #$02 ; track ldy #$09 ; sector .allb stx gTrack @@ -400,7 +393,6 @@ b4bbcompare jsr ReadSector ; read sector to get address prologue 3 for rest of disk bcs _b4bbexit lda #$0C - clc adc #BASEPAGE sta x0+2 x0 lda $FFC2 ; high byte modified at runtime (above) diff --git a/src/apidefs.a b/src/apidefs.a index ab037b9..679ef74 100644 --- a/src/apidefs.a +++ b/src/apidefs.a @@ -48,7 +48,7 @@ flag = $FF ; byte RELBASE = $2000 ; dummy assignment for first build ; to allow calculation of proper value } -LOWPOINT = $4300 ; lowest available address for code +LOWPOINT = $4000 ; lowest available address for code HIGHPOINT = $B200 ; highest available address+1 for code BASEPAGE = $10 ; Special Delivery tracer assumes ; this is $10, so don't change it! diff --git a/src/id/datasoft.a b/src/id/datasoft.a index fe91ab6..b2c718c 100755 --- a/src/id/datasoft.a +++ b/src/id/datasoft.a @@ -10,7 +10,7 @@ ;------------------------------- IDDatasoft lda #$00 - ldx #$00 + tax ldy #$7E jsr compare !byte $01,$4C,$7E,$08,$04,$8A,$0C,$B8 diff --git a/src/id/davidson.a b/src/id/davidson.a index e715253..00538aa 100644 --- a/src/id/davidson.a +++ b/src/id/davidson.a @@ -17,7 +17,7 @@ IDDavidson bne .no ; no, give up lda gSector ; sector $00? bne .no ; no, give up - lda #$00 ; try re-reading the sector but + ;;lda #$00 ; try re-reading the sector but sta $B92E ; ignore data field checksum failure jsr ReadSector lda #$13 diff --git a/src/id/dos33.a b/src/id/dos33.a index 41a249b..24d8cb7 100755 --- a/src/id/dos33.a +++ b/src/id/dos33.a @@ -32,7 +32,7 @@ IDDOS33 ; Code at $0801 must be standard (with one exception) ; ++ lda #$00 - ldx #$00 + tax ldy #$3F jsr compare ; if T00,S00,$00 == !byte $01 diff --git a/src/id/inspect0.a b/src/id/inspect0.a index 9aff5ca..0067ffb 100755 --- a/src/id/inspect0.a +++ b/src/id/inspect0.a @@ -26,16 +26,16 @@ IDBootloader dex bpl - - lda gIsInfocom18 - bne .check13 lda #s_infocom18 - jsr PrintByID - jmp UseUniversal + ldx gIsInfocom18 + beq .printinfo .check13 lda gIs13Sector bne .sanity lda #s_13sector + +.printinfo jsr PrintByID jmp UseUniversal @@ -74,16 +74,14 @@ IDBootloader lda #TRUE sta gPossibleD5D5F7 + jsr IDDiversi - bcc .diversi - jsr IDPronto - bcc .pronto - lda #s_dosb0 - !byte $2c -.diversi lda #s_diversidos - !byte $2c -.pronto + bcc .printdos + jsr IDPronto lda #s_prontodos + bcc .printdos + lda #s_dosb0 + +.printdos jsr PrintByID jmp TraceDOS33 ; @@ -217,18 +215,16 @@ IDBootloader lda #TRUE sta gIsProDOS jsr IDVolumeName - bcc + - jmp .useuniv -+ + bcs .useuniv + ; ; Dinkey-DOS (ProDOS file structure with DOS 3.3-ish RWTS in language card) ; detectable now because IDVolumeName just read the first sector of the ; volume directory into memory so we can look for a unique filename ; jsr IDDinkeyDOS - bcc + - jmp .useuniv -+ lda #s_dinkeydos + bcs .useuniv + lda #s_dinkeydos jsr PrintByID lda #TRUE sta gIsDinkeyDOS diff --git a/src/id/jsr8b3.a b/src/id/jsr8b3.a index 6e52d9a..0dc0500 100755 --- a/src/id/jsr8b3.a +++ b/src/id/jsr8b3.a @@ -13,7 +13,7 @@ !zone { ID8b3 lda #$00 - ldx #$00 + tax ldy #$5A jsr compare !byte $01,$20,$B3,$08,$D0,$19,$EA,$A5 diff --git a/src/id/mecc.a b/src/id/mecc.a index 07de565..ab978dc 100755 --- a/src/id/mecc.a +++ b/src/id/mecc.a @@ -16,7 +16,7 @@ !zone { IDMECC lda #$00 - ldx #$00 + tax ldy #$17 jsr compare !byte $01,$4C,$1A,$08,$17,$0F,$00,$00 diff --git a/src/id/pascal.a b/src/id/pascal.a index a1041cf..bd271ca 100644 --- a/src/id/pascal.a +++ b/src/id/pascal.a @@ -17,7 +17,7 @@ IDPascal ; addresses (e.g. Wizardry I, Sundog Frozen Legacy) ; lda #$00 - ldx #$00 + tax ldy #$08 jsr compare ; if T00,S00,$00 == !byte $01 diff --git a/src/id/prodos.a b/src/id/prodos.a index 4b29e68..4878ab2 100644 --- a/src/id/prodos.a +++ b/src/id/prodos.a @@ -17,7 +17,7 @@ IDProDOS ; Dazzle Draw, SuperPrint II). All of these variants ; will match. lda #$00 - ldx #$00 + tax ldy #$05 jsr compare ; if T00,S00,$00 == !byte $01 diff --git a/src/id/rdos.a b/src/id/rdos.a index e3902e1..4371be7 100644 --- a/src/id/rdos.a +++ b/src/id/rdos.a @@ -12,7 +12,7 @@ !zone { IDRDOS lda #$00 - ldx #$00 + tax ldy #$0E jsr compare ; if T00,S00,$00 == !byte $01 diff --git a/src/id/trace.a b/src/id/trace.a index ffb0a9f..aac3506 100644 --- a/src/id/trace.a +++ b/src/id/trace.a @@ -15,24 +15,21 @@ Trace ldy #$01 jsr CopyMemory pla - tax - pla + ldx #0 ldy $B6F8 cpy #$4C - bne + - sty $B6F8 ; JMP for Disk II controller - sta $B6F9 ; lo byte of callback - stx $B6FA ; hi byte of callback - jmp $B600 -+ ldy $B6FB + beq + + ldx #3 + ldy $B6FB cpy #$4C - bne + - sty $B6FB ; JMP for IIgs smart controller - sta $B6FC ; lo byte of callback - stx $B6FD ; hi byte of callback + bne ++ ++ sta $B6FA,x ; hi byte of callback + pla + sta $B6F9,x ; lo byte of callback jmp $B600 -+ lda #s_canttrace ; unknown disk controller +++ pla + lda #s_canttrace ; unknown disk controller jsr PrintByID jmp UseUniversal } diff --git a/src/id/trace32.a b/src/id/trace32.a index 26b9702..df6ed59 100644 --- a/src/id/trace32.a +++ b/src/id/trace32.a @@ -10,7 +10,7 @@ !zone { IDDOS32 lda #$00 - ldx #$00 + tax ldy #$0F jsr compare !byte $01 @@ -52,7 +52,7 @@ IDDOS32 !zone { IDDOS32LO lda #$00 - ldx #$00 + tax ldy #$0F jsr compare !byte $01 @@ -74,6 +74,11 @@ IDDOS32LO ldy #$03 jsr compare !byte $4C,$01,$03; JMP $0301 + bcc .exit + ldx #$37 + ldy #$03 + jsr compare + !byte $4C,$01,$03; JMP $0301 .exit rts } @@ -85,10 +90,11 @@ IDDOS32LO TraceDOS32 lda #<.TraceDOS32b ldx #>.TraceDOS32b - jmp Trace + bne .linktrace TraceDOS32LO lda #<.TraceDOS32LOb ldx #>.TraceDOS32LOb +.linktrace jmp Trace .TraceDOS32b @@ -96,13 +102,19 @@ TraceDOS32LO sta $0846 lda #>.TraceDOS32c sta $0847 - jmp $0801 + bne .linkjmp .TraceDOS32LOb - lda #<.TraceDOS32c - sta $0842 + ldy #$00 + lda $0837 + cmp #$4C + beq + + ldy #$0A ++ lda #<.TraceDOS32c + sta $0838,y lda #>.TraceDOS32c - sta $0843 + sta $0839,y +.linkjmp jmp $0801 .TraceDOS32c @@ -138,7 +150,7 @@ TraceDOS32LO !byte $85,$3F !byte $E6,$3F !byte $6C,$3E,$00 - bcs .fail + bcs .tryChoplifter lda $03CC cmp #$B6 beq + @@ -174,6 +186,24 @@ TraceDOS32LO ldy $0300 jmp $0301 +.tryChoplifter + lda #$03 + ldx #$01 + ldy #$10 + jsr CompareMemory + !byte $A2,$2E ;LDX #$2E + !byte $9A ;TXS + !byte $84,$48 ;STY $48 + !byte $A2,$00 ;LDX #$00 + !byte $BC,$00,$03 ;LDY $0300,X + !byte $88 ;DEY + !byte $A9,$EA ;LDA #$EA + !byte $20,$26,$03 ;JSR $0326 + bcs .fail + lda #s_choplifter + jsr PrintByID + jmp Choplifter + ; something did not match, not comfortable tracing, ; but we know enough to know that the universal RWTS won't work, ; so we're done @@ -308,13 +338,13 @@ FFer bne + iny bne - + tya ldy jCallRWTS+2 dey sty .G+2 dey sty .F+2 - ldy #$00 - tya + tay .F sta $FF00,y iny bne .F diff --git a/src/id/trace33p.a b/src/id/trace33p.a index 9693e86..fcdddf6 100755 --- a/src/id/trace33p.a +++ b/src/id/trace33p.a @@ -9,7 +9,7 @@ ;------------------------------- IDSpecDel lda #$00 - ldx #$00 + tax ldy #$58 jsr compare !byte $02,$90,$4A,$C6,$27,$BD,$31,$09 @@ -35,7 +35,7 @@ TraceSpecDel jsr ClearTSBuffer lda #$00 ; set a marker to see if entire sta $3FFF ; RWTS loads successfully later - lda #$00 ; save zero page before trace +;; lda #$00 ; save zero page before trace ldx #$0A ldy #$01 jsr CopyMemory @@ -164,9 +164,10 @@ SDsuccess jsr IncProgress inc gTrack - lda #$20 - ldx #$10 - ldy #$10 + lda #$10 + tax + tay + asl jsr CopyMemory jsr WriteTrackNA ; doesn't really write anything in verify-only mode diff --git a/src/initscan.a b/src/initscan.a new file mode 100644 index 0000000..34cebc8 --- /dev/null +++ b/src/initscan.a @@ -0,0 +1,205 @@ +;------------------------------- +; ScanForDiskII +; scan all slots for things that +; look like Disk II cards +; +; out: all registers clobbered +; all flags clobbered +; DiskIIArray filled with 00 or FF +;------------------------------- +!zone { +ScanForDiskII + lda #$00 + sta cmp1 + ldx #$07 +.fingerprint + txa + ora #$C0 + sta cmp1+1 + ldy #$01 + lda (cmp1),y + cmp #$20 + bne .next + ldy #$03 + lda (cmp1),y + bne .next + ldy #$05 + lda (cmp1),y + cmp #$03 + bne .next + ldy #$FF + lda (cmp1),y + bne .next + tya + sta DiskIIArray-1,x +.next + dex + bne .fingerprint + rts +} + +!zone { +ScanForRAMDisk + lda #$00 + sta iunit +- lda iunit + clc + adc #$10 + sta iunit + beq .done + cmp #$80 + beq - + pha + and #$70 + lsr + lsr + lsr + lsr + tay + pla + ldx DiskIIArray-1,y + bne - + jsr GetVolumeName + bcs - + lda OnlineReturn + beq - + jsr GetVolumeInfo + + ;watch for RAM disk type + + lda filetype + and #$0F + cmp #$0F + bne - + + ;check for RAM[x] by name + + ldy OnlineReturn + cpy #4 + beq + + cpy #5 + bne - + dey ++ +-- lda SlashRAM-1,y + cmp VolumeName-1,y + bne - + dey + bne -- + + ;check free space + ;need at least $118 blocks + + sec + lda auxtype + sbc blocks + tax + lda auxtype+1 + sbc blocks+1 + cmp #1 + bcc - + bne + + cpx #$18 + bcc - ++ lda #TRUE + sta gUsingRAMDisk +.done + rts + +SlashRAM !byte $2F, $52, $41, $4D +} + +;------------------------------- +; LoadPrefs +; load preferences from file +; +; in: ProDOS must be in memory +;------------------------------- +LoadPrefs + lda #$FF + sta PREFSVER + jsr LoadFile1Shot + !word PREFSFILE + !word PREFSVER + !word PREFSREADLEN + !word PREFSBUFFER + jsr ValidatePrefs + bcc .goodprefs + jmp SavePrefs + +.goodprefs + rts + +;------------------------------- +; LoadFile1Shot +; load a file into memory all at once, +; using ProDOS MLI calls +; +; in: stack contains 8 bytes of parameters: +; +1 address of pathname +; +3 address of data buffer (to receive file contents) +; +5 [word] maximum length of data to read +; +7 address of ProDOS file buffer +; out: if C set, load failed and A contains error code +; from open or read +; if C clear, load succeeded and ($02) contains +; data loaded from file +; all other flags clobbered +; all registers clobbered +; stack set to next instruction after parameters +;------------------------------- +!zone { +LoadFile1Shot + clc + pla + adc #$08 + sta $00 + tax + pla + adc #$00 + sta $01 + pha + txa + pha + + ldy #$01 + lda ($00),y ; lo byte of pathname + sta mliparam+1 + iny + lda ($00),y ; hi byte of pathname + sta mliparam+2 + ldy #$07 + lda ($00),y ; lo byte of ProDOS file buffer + sta mliparam+3 + iny + lda ($00),y ; hi byte of ProDOS file buffer + sta mliparam+4 + + jsr OpenFile + bcs .loadfile1s ; C set on error + + pha ; push file reference number + ldy #$03 + lda ($00),y ; lo address of data buffer + sta mliparam+2 + iny + lda ($00),y ; hi address of data buffer + sta mliparam+3 + iny + lda ($00),y ; lo data length + sta mliparam+4 + iny + lda ($00),y ; hi data length + sta mliparam+5 + pla ; pull file reference number + jsr ReadFile + php ; save flags from readfile + pha + jsr CloseFile ; always close whether read worked or not + pla + plp ; restore flags from readfile + ; (so caller gets codes from read attempt, + ; not close) +.loadfile1s + rts +} diff --git a/src/memory.a b/src/memory.a index 62bcaaa..342c3c7 100755 --- a/src/memory.a +++ b/src/memory.a @@ -7,16 +7,32 @@ ; 0A00..0AFF - backup of zero page during Special Delivery tracer, used by RAM disk ; 0B00..0BFF - used by RAM disk ; 0C00..0CFF - clobbered by Special Delivery tracer -; 0D00..0FFF - unused +; 0D00..0EFF - unused +; 0F00..0FFF - backup of page $BF (SaveProDOS, SwapProDOS) ; 1000..1FFF - data buffer for current track ; 2000..35FF - clobbered by Special Delivery tracer ; 3600..3FFF - clobbered by lomem DOS 3.3 / Special Delivery tracers -; 4000..42FF - backup of zero page, page 3, page $BF (SaveProDOS, SwapProDOS) -; 4300..B1FF - program code +; 4000..B1FF - program code ; B200..BFFF - clobbered by DOS boot tracer (RDOS is B200+, DOS 3.x is B600+) ;------------------------------- +;------------------------------- +; SaveProDOS +; saves memory pages used by ProDOS +; pages $BF +; in: none +; out: all flags and registers clobbered +;------------------------------- +!zone { +SaveProDOS +SaveGlobal + lda #$BF + ldx #$0F + ldy #$01 + ;;jsr CopyMemory ; fall through +} + ;------------------------------- ; CopyMemory ; in: A = source address (high) @@ -40,27 +56,6 @@ CopyMemory rts } -;------------------------------- -; ClearMemory -; in: A = source address (high) -; X = value to set -; Y = number of pages -; out: all flags and registers clobbered -;------------------------------- -!zone { -ClearMemory - sta .dest+2 - txa - ldx #$00 -.dest sta $FF00,x - inx - bne .dest - inc .dest+2 - dey - bne .dest - rts -} - ;------------------------------- ; ClearTSBuffer ; clear the $1000 byte memory buffer @@ -72,7 +67,59 @@ ClearTSBuffer lda #BASEPAGE ldx #$00 ldy #$10 - jmp ClearMemory + ;; jmp ClearMemory ; fall through + +;------------------------------- +; ClearMemory +; in: A = source address (high) +; X = value to set +; Y = number of pages +; out: all flags and registers clobbered +;------------------------------- +!zone { +ClearMemory + sta .dest+2 +.dest stx $FF00 + inc .dest+1 + bne .dest + inc .dest+2 + dey + bne .dest + rts +} + +;------------------------------- +; ReorderBuffer - convert data +; buffer between ProDOS and +; DOS 3.3 ordering (use after +; read or before write under +; ProDOS) +; in: none +; out: all flags clobbered +; all registers clobbered +;------------------------------- +!zone { +ReorderBuffer + lda #BASEPAGE+1 + ldx #BASEPAGE+$0E + ldy #$07 + clc + bcc SwapMemory ; branch always +} + +;------------------------------- +; SwapProDOS +; saves/restores memory pages used by ProDOS +; pages $BF +; in: none +; out: all flags and registers clobbered +;------------------------------- +SwapProDOS + lda #$BF + ldx #$0F + ldy #$01 + sec + ;;jsr SwapMemory ; fall through ;------------------------------- ; SwapMemory @@ -114,76 +161,6 @@ SwapMemory rts } -;------------------------------- -; ReorderBuffer - convert data -; buffer between ProDOS and -; DOS 3.3 ordering (use after -; read or before write under -; ProDOS) -; in: none -; out: all flags clobbered -; all registers clobbered -;------------------------------- -!zone { -ReorderBuffer - lda #BASEPAGE+1 - ldx #BASEPAGE+$0E - ldy #$07 - clc - jmp SwapMemory -} - -;------------------------------- -; SaveProDOS -; saves memory pages used by ProDOS -; pages $00, $03, $BF -; in: none -; out: all flags and registers clobbered -;------------------------------- -!zone { -SaveProDOS - lda #$00 - ldx #$40 - ldy #$01 - jsr CopyMemory - lda #$03 - ldx #$41 - ldy #$01 - jsr CopyMemory -SaveGlobal - lda #$BF - ldx #$42 - ldy #$01 - jsr CopyMemory -.exit - rts -} - -;------------------------------- -; SwapProDOS -; saves/restores memory pages used by ProDOS -; pages $00, $03, $BF -; in: none -; out: all flags and registers clobbered -;------------------------------- -SwapProDOS - lda #$00 - ldx #$40 - ldy #$01 - sec - jsr SwapMemory - lda #$03 - ldx #$41 - ldy #$01 - sec - jsr SwapMemory - lda #$BF - ldx #$42 - ldy #$01 - sec - jsr SwapMemory - rts - ;------------------------------- ; ReorderLogicalToPhysical - reorder pages in ; track data buffer for disks that expect diff --git a/src/mli.a b/src/mli.a index fba5f1a..c8bd48a 100755 --- a/src/mli.a +++ b/src/mli.a @@ -139,21 +139,16 @@ WriteTrackMLI ;------------------------------- !zone { SaveFile1Shot - pla - sta $00 - pla - sta $01 - tax - lda #$0B clc - adc $00 - bcc .noinc - inx -.noinc - tay - txa + pla + adc #$0B + sta $00 + tax + pla + adc #$00 + sta $01 pha - tya + txa pha ldy #$01 @@ -211,85 +206,6 @@ SaveFile1Shot rts } -;------------------------------- -; LoadFile1Shot -; load a file into memory all at once, -; using ProDOS MLI calls -; -; in: stack contains 8 bytes of parameters: -; +1 address of pathname -; +3 address of data buffer (to receive file contents) -; +5 [word] maximum length of data to read -; +7 address of ProDOS file buffer -; out: if C set, load failed and A contains error code -; from open or read -; if C clear, load succeeded and ($02) contains -; data loaded from file -; all other flags clobbered -; all registers clobbered -; stack set to next instruction after parameters -;------------------------------- -!zone { -LoadFile1Shot - pla - sta $00 - pla - sta $01 - tax - lda #$08 - clc - adc $00 - bcc .noinc - inx -.noinc - tay - txa - pha - tya - pha - - ldy #$01 - lda ($00),y ; lo byte of pathname - sta mliparam+1 - iny - lda ($00),y ; hi byte of pathname - sta mliparam+2 - ldy #$07 - lda ($00),y ; lo byte of ProDOS file buffer - sta mliparam+3 - iny - lda ($00),y ; hi byte of ProDOS file buffer - sta mliparam+4 - - jsr OpenFile - bcs .loadfile1s ; C set on error - - pha ; push file reference number - ldy #$03 - lda ($00),y ; lo address of data buffer - sta mliparam+2 - iny - lda ($00),y ; hi address of data buffer - sta mliparam+3 - iny - lda ($00),y ; lo data length - sta mliparam+4 - iny - lda ($00),y ; hi data length - sta mliparam+5 - pla ; pull file reference number - jsr ReadFile - php ; save flags from readfile - pha - jsr CloseFile ; always close whether read worked or not - pla - plp ; restore flags from readfile - ; (so caller gets codes from read attempt, - ; not close) -.loadfile1s - rts -} - ;------------------------------- ; open file via ProDOS MLI ; diff --git a/src/passport.a b/src/passport.a index 40544c4..368f58e 100755 --- a/src/passport.a +++ b/src/passport.a @@ -96,7 +96,26 @@ FM lda LastMover - 256,x lda FM+5 cmp #(>RELBASE)-((>(RELBASE+255))->RELBASE)-1 bne FM - jmp OneTimeSetup + +OneTimeSetup + lda $C0E8 + jsr SaveProDOS + ldx MACHINEID + cpx #$EA + bne .slotscan + lda #$DF + sta kForceLower +.slotscan + jsr ScanForDiskII + lda DiskIIArray+5 + bne .founds6 + jmp FatalNoSlot6 +.founds6 + jsr ScanForRAMDisk + jsr LoadPrefs ; load preferences (if available) + jmp ResetVector + + !source "initscan.a" FirstMover !pseudopc RELBASE { @@ -165,24 +184,6 @@ FirstMover !source "rwts.a" !source "standarddelivery.a" -OneTimeSetup - lda $C0E8 - jsr SaveProDOS - ldx MACHINEID - cpx #$EA - bne .slotscan - lda #$DF - sta kForceLower -.slotscan - jsr ScanForDiskII - lda DiskIIArray+5 - bne .founds6 - jmp FatalNoSlot6 -.founds6 - jsr ScanForRAMDisk - jsr LoadPrefs ; load preferences (if available) - bcc ResetVector - jsr SavePrefs ; save preferences (if possible) ResetVector lda #(.resume-1) + pha + lda #<(.resume-1) + pha + jmp $4000 + +.resume + ldx #0 +- lda .stager,x + sta $500,x + lda (*+$ff) and $ff00,x + sta $200,x + lda (*+$1ff) and $ff00,x + sta $400,x + txs + inx + bne - + jsr .dostep4 + ldy #2 ; pagehi, first table + sty $807 + ldy #$60 ; rts + sty $84c + ldx $2b + jsr .callSD ; including original $8xx to $7xx + asl $807 ; 4xx, second table + jmp $500 + +.stager !pseudopc $500 { + jsr .callSD + jsr .step + lda #$60 ; rts + sta $801 + + ; to enable writing requires finding three spare pages + ; that is common to all games. I did not succeed. + ; for that reason, auto-crack is read-only. + + sta $207 + + lda #4 + sta $27 + jsr $823 ; read patch table to $400 + ldy #0 ; avoid CFFA bug (Y is not zero on return) +- lda $400,y + sta .patcher+1 + lda $401,y + sta .patcher+2 + lda $402,y + iny + iny + iny + +.patcher + sta $d1d1 + cmp #$ea + bne - + jsr .dostep2 ; reach track $22 + sta $3d + dec $27 + jsr $823 ; read high scores to $400 + ldy #0 ; avoid CFFA bug (Y is not zero on return) +- lda $700,y + sta $800,y + iny + bne - + lda $C088,x + jmp ($20) + +.callSD + sta $806 ; pagelo + ldy #$ff + jsr $805 + beq .step + +.dostep4 + jsr .dostep2 + +.dostep2 + jsr .step + +.step + jsr $82F + lsr $40 + rts + } ;$5xx + } ;$Bxxx +} diff --git a/src/patchers/d5d5f7.a b/src/patchers/d5d5f7.a index 9c64a3a..cd9f585 100755 --- a/src/patchers/d5d5f7.a +++ b/src/patchers/d5d5f7.a @@ -29,8 +29,7 @@ ; additional samples.) ; lda gIsBoot0 - bne .exit - lda gPossibleD5D5F7 + ora gPossibleD5D5F7 bne .exit + ldy #$20 diff --git a/src/patchers/diskvol.a b/src/patchers/diskvol.a index aa936a5..de3e5ae 100755 --- a/src/patchers/diskvol.a +++ b/src/patchers/diskvol.a @@ -12,7 +12,7 @@ lda #$01 ldx #$EE - ldy #$01 + tay jsr compare ; and T00,S01,$EE == !byte $FB bcs .exit @@ -27,8 +27,7 @@ beq .yes lda gIsPanglosDOS - bne + - lda gCapturedDiskVolumeNumber + ora gCapturedDiskVolumeNumber bne + lda gDiskVolumeNumber cmp #$FE diff --git a/src/patchers/dos32muse.a b/src/patchers/dos32muse.a index c63051c..4833aaa 100644 --- a/src/patchers/dos32muse.a +++ b/src/patchers/dos32muse.a @@ -10,8 +10,8 @@ bpl .exit lda gIsDOS32 bne .exit - lda gTrack - cmp #$01 + ldx gTrack + dex bne .exit lda #$08 ldx #$D6 diff --git a/src/patchers/hallabs.a b/src/patchers/hallabs.a index b1a61af..4a6a9f2 100644 --- a/src/patchers/hallabs.a +++ b/src/patchers/hallabs.a @@ -11,8 +11,8 @@ bpl .exit lda gIsBoot0 bne .exit - lda gTrack - cmp #$01 + ldx gTrack + dex bne .exit ldy #(@search1end-@search1start) diff --git a/src/patchers/holle.a b/src/patchers/holle.a index 57fe3a4..edc63b2 100644 --- a/src/patchers/holle.a +++ b/src/patchers/holle.a @@ -18,8 +18,7 @@ - jmp .exit + bvc - ; nothing to do here in demuffin mode lda gIsHolle - beq + - jmp .exit + bne - + lda gTrack bne + jmp .DecryptBootloader @@ -246,11 +245,11 @@ EOR $01 AND #$01 .alternatingTrackEnd - bcs + + bcs .exit ldy #$01 jsr modify !byte $A9 ; EOR -> LDA so alternating track check always passes -+ + jmp .exit .reorderAndExit jsr ReorderBuffer diff --git a/src/patchers/jmpae8e.a b/src/patchers/jmpae8e.a index d480af4..536456a 100755 --- a/src/patchers/jmpae8e.a +++ b/src/patchers/jmpae8e.a @@ -8,8 +8,7 @@ bit gMode ; nothing to do here in verify-only mode bpl .exit lda gIsBoot0 ; if DOS 3.3 boot0 loader - bne .exit - lda gIsBoot1 ; and DOS 3.3 boot1 loader + ora gIsBoot1 ; and DOS 3.3 boot1 loader bne .exit lda #$0D ldx #$4D diff --git a/src/patchers/jmpb400.a b/src/patchers/jmpb400.a index e84f6b2..110b139 100644 --- a/src/patchers/jmpb400.a +++ b/src/patchers/jmpb400.a @@ -52,7 +52,7 @@ jsr PrintByID lda #$03 ldx #$00 - ldy #$03 + tay jsr modify ; then set T02,S03,$00 = !byte $4C,$84,$9D .exit diff --git a/src/patchers/jmpb4bb.a b/src/patchers/jmpb4bb.a index fc6818e..73bfe36 100755 --- a/src/patchers/jmpb4bb.a +++ b/src/patchers/jmpb4bb.a @@ -10,12 +10,11 @@ lda gTrack cmp #$02 bne .exit - lda gIsDOS32 + lda #$03 + ldx gIsDOS32 bne + lda #$0A - !byte $2C ; hide next LDA -+ lda #$03 - sta gDisplayBytes ++ sta gDisplayBytes ldx #$D7 ldy #$04 jsr compare ; and T02,S0x,$D7 == diff --git a/src/patchers/jmpbbfe.a b/src/patchers/jmpbbfe.a index 28e9d13..878e228 100755 --- a/src/patchers/jmpbbfe.a +++ b/src/patchers/jmpbbfe.a @@ -10,7 +10,6 @@ _jmpbbfe bpl .exit lda gIsBoot0 ; if DOS 3.3 boot0 loader bne .exit - lda #$00 ldx #$4A ldy #$03 jsr compare ; and T00,S00,$4A == diff --git a/src/patchers/micrograms.a b/src/patchers/micrograms.a index e0bdf35..e3610a6 100644 --- a/src/patchers/micrograms.a +++ b/src/patchers/micrograms.a @@ -19,14 +19,11 @@ !byte $C9,$BE !byte $D0,$E5 bcs .exit - inx - inx - inx - inx - inx - inx - inx - inx + tay + txa + adc #8 + tax + tya ldy #$01 jsr modify ; change BNE to continue instead !byte $00 diff --git a/src/patchers/prodosmecc.a b/src/patchers/prodosmecc.a index f6d24b3..f085305 100755 --- a/src/patchers/prodosmecc.a +++ b/src/patchers/prodosmecc.a @@ -18,17 +18,11 @@ !byte $20,$10,$30,WILDCARD,$AA,$EB bcs + sta gDisplayBytes - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx + tay + txa + adc #$0B + tax + tya ldy #$01 jsr compare !byte $DE @@ -44,25 +38,11 @@ !byte $02,$18,$24,$38,$60 bcs + sta gDisplayBytes - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx + tay + txa + adc #$13 + tax + tya ldy #$01 jsr compare !byte $38 @@ -81,28 +61,11 @@ !byte $C9,$DE,$F0,$02,$18,$24,$38,$60 bcs + sta gDisplayBytes - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx + tay + txa + adc #$16 + tax + tya ldy #$01 jsr compare !byte $38 @@ -121,16 +84,11 @@ !byte $38 !byte $60 bcs + - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx + tay + txa + adc #$0A + tax + tya ldy #$01 jsr compare !byte $38 diff --git a/src/patchers/prodosrwts.a b/src/patchers/prodosrwts.a index 5447efd..d95ba77 100755 --- a/src/patchers/prodosrwts.a +++ b/src/patchers/prodosrwts.a @@ -23,21 +23,11 @@ _prodosrwts !byte $38 bcs .exit sta gDisplayBytes - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx - inx + tay + txa + adc #$0F + tax + tya ldy #$01 jsr compare !byte $DE diff --git a/src/patchers/protecteddos.a b/src/patchers/protecteddos.a index 7b9fa0c..0377175 100755 --- a/src/patchers/protecteddos.a +++ b/src/patchers/protecteddos.a @@ -152,7 +152,7 @@ ; lda #$01 ldx #$07 - ldy #$01 + tay jsr modify ; set T00,S01,$07 = !byte $2C diff --git a/src/patchers/rwtsswap.a b/src/patchers/rwtsswap.a index 61dbea4..64f2172 100755 --- a/src/patchers/rwtsswap.a +++ b/src/patchers/rwtsswap.a @@ -10,8 +10,7 @@ bit gMode ; nothing to do here in verify-only mode bpl .exit lda gIsBoot0 ; if DOS 3.3 boot0 loader - bne .exit - lda gIsBoot1 ; and DOS 3.3 boot1 loader + ora gIsBoot1 ; and DOS 3.3 boot1 loader bne .exit lda #$04 ldx #$69 diff --git a/src/patchers/rwtsswappenguin.a b/src/patchers/rwtsswappenguin.a index 81d9d84..cdf4d76 100644 --- a/src/patchers/rwtsswappenguin.a +++ b/src/patchers/rwtsswappenguin.a @@ -12,8 +12,8 @@ !zone { bit gMode ; nothing to do here in verify-only mode bpl .exit - lda gTrack ; and track 1 - cmp #$01 + ldx gTrack ; and track 1 + dex bne .exit lda #$04 ldx #$52 diff --git a/src/patchers/universale7.a b/src/patchers/universale7.a index bb5e6d0..436749c 100755 --- a/src/patchers/universale7.a +++ b/src/patchers/universale7.a @@ -54,9 +54,8 @@ universale7 !byte $00,$00,$00,$00,$00,$00,$00,$00 !byte $00,$00,$00,$00,$00,$00,$00,$00 !byte $00,$00,$00,$00,$00,$00,$00,$00 - bcc + - jmp .nextsector -+ + bcs .nextsector + lda .sector+1 sta gDisplayBytes lda #s_e7 diff --git a/src/prefs.a b/src/prefs.a index 4ea84de..d397958 100755 --- a/src/prefs.a +++ b/src/prefs.a @@ -20,22 +20,6 @@ DRIVE !byte $FF !text "+---PREFS VERSION (DO NOT CHANGE)",$8D PREFSWRITELEN = *-PREFSVER -;------------------------------- -; LoadPrefs -; load preferences from file -; -; in: ProDOS must be in memory -;------------------------------- -LoadPrefs - lda #$FF - sta PREFSVER - jsr LoadFile1Shot - !word PREFSFILE - !word PREFSVER - !word PREFSREADLEN - !word PREFSBUFFER - jmp ValidatePrefs - ;------------------------------- ; SavePrefs ; save preferences to file diff --git a/src/print.a b/src/print.a index eeb8ba8..5f9d4df 100755 --- a/src/print.a +++ b/src/print.a @@ -14,15 +14,14 @@ kForceLower !byte $FF ; AND mask for lowercase letters ;------------------------------- !zone { PrintByID - stx .x + stx .x+1 ldy #0 ; substitution mode flag cmp #STRINGCOUNT bcs .error - asl tax - lda StringTable,x + lda StringTableLow,x sta .print+1 - lda StringTable+1,x + lda StringTableHigh,x sta .print+2 .print lda $FFFF ; modified at runtime @@ -83,9 +82,8 @@ PrintByID .done clc .error - ldx .x +.x ldx #$d1 rts -.x !byte 00 ;------------------------------- ; PrintByte @@ -98,15 +96,9 @@ PrintByID ; @tmpy clobbered ;------------------------------- PrintByte - sta tmpa - stx tmpx - sty tmpy + jsr .saveAXY jsr PRBYTE - lda tmpa - ldx tmpx - ldy tmpy - clv - rts + jmp .loadAXY ;------------------------------- ; PrintA @@ -119,16 +111,22 @@ PrintByte ; @tmpy clobbered ;------------------------------- PrintA - sta tmpa - stx tmpx - sty tmpy + jsr .saveAXY jsr COUT + +.loadAXY lda tmpa ldx tmpx ldy tmpy clv rts +.saveAXY + sta tmpa + stx tmpx + sty tmpy + rts + ;------------------------------- ; ClearScreen ;------------------------------- @@ -146,17 +144,16 @@ ClearScreen ldy #$00 sty flag .loop - lda $FF00,y ; modified at runtime - cmp #$A0 + ldx $FF00,y ; modified at runtime + cpx #$A0 beq .nochange bcs .down - clc - adc #$01 + inx bne .change .down - sec - sbc #$01 + dex .change + txa sta $FF00,y ; modified at runtime sta flag .nochange diff --git a/src/rwts.a b/src/rwts.a index 27d1b31..51ff023 100755 --- a/src/rwts.a +++ b/src/rwts.a @@ -199,5 +199,6 @@ _track !byte $00 _sector !byte $00 !word dct gAddress !word $1F00 - !byte $00,$00,$01,$00,$FE,$60,$01,$00,$00 + !byte $00,$00 +gCommand !byte $01,$00,$FE,$60,$01,$00,$00 dct !byte $00,$01,$EF,$D8,$00 diff --git a/src/slots.a b/src/slots.a index 8943159..47d18b5 100755 --- a/src/slots.a +++ b/src/slots.a @@ -1,46 +1,6 @@ DiskIIArray !byte 00,00,00,00,00,00,00 -;------------------------------- -; ScanForDiskII -; scan all slots for things that -; look like Disk II cards -; -; out: all registers clobbered -; all flags clobbered -; DiskIIArray filled with 00 or FF -;------------------------------- -!zone { -ScanForDiskII - lda #$00 - sta cmp1 - ldx #$07 -.fingerprint - txa - ora #$C0 - sta cmp1+1 - ldy #$01 - lda (cmp1),y - cmp #$20 - bne .next - ldy #$03 - lda (cmp1),y - bne .next - ldy #$05 - lda (cmp1),y - cmp #$03 - bne .next - ldy #$FF - lda (cmp1),y - bne .next - tya - sta DiskIIArray-1,x -.next - dex - bne .fingerprint - rts -} - ;------------------------------- ; NextSlot ;------------------------------- @@ -76,74 +36,3 @@ NextSlot .reallydone rts } - -!zone { -ScanForRAMDisk - lda #$00 - sta iunit -- lda iunit - clc - adc #$10 - sta iunit - beq .done - cmp #$80 - beq - - pha - and #$70 - lsr - lsr - lsr - lsr - tay - pla - ldx DiskIIArray-1,y - bne - - jsr GetVolumeName - bcs - - lda OnlineReturn - beq - - jsr GetVolumeInfo - - ;watch for RAM disk type - - lda filetype - and #$0F - cmp #$0F - bne - - - ;check for RAM[x] by name - - ldy OnlineReturn - cpy #4 - beq + - cpy #5 - bne - - dey -+ --- lda SlashRAM-1,y - cmp VolumeName-1,y - bne - - dey - bne -- - - ;check free space - ;need at least $118 blocks - - sec - lda auxtype - sbc blocks - tax - lda auxtype+1 - sbc blocks+1 - cmp #1 - bcc - - bne + - cpx #$18 - bcc - -+ lda #TRUE - sta gUsingRAMDisk -.done - rts - -SlashRAM !byte $2F, $52, $41, $4D -} diff --git a/src/strings/en.a b/src/strings/en.a index fa5549a..48621f2 100755 --- a/src/strings/en.a +++ b/src/strings/en.a @@ -15,124 +15,246 @@ k_redo_with_ignore = $92; !source "strings/enid.a" !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 .bb03 - !word .thunder - !word .jmpae8e - !word .diskvol - !word .d5d5f7 - !word .construct - !word .datasoftb0 - !word .datasoft - !word .lsr6a - !word .bcs08 - !word .jmpb660 - !word .protdos - !word .decryptrwts - !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 - !word .rwtswrite - !word .rdos - !word .sra - !word .muse - !word .origin - !word .volumename - !word .dinkeydos - !word .trillium - !word .tamper - !word .microfun - !word .advent - !word .gathering - !word .davidson - !word .rdos13 - !word .ssi - !word .aacount - !word .infocom18 - !word .toverify - !word .sector13 - !word .dakin5 - !word .springboard - !word .hallabs - !word .holle - !word .hoffman - !word .diskvol0 - !word .e7everywhere +StringTableLow + !byte <.header + !byte <.mainmenu + !byte <.progbar + !byte <.reading + !byte <.diskrwts + !byte <.bb00 + !byte <.sunburst + !byte <.optimum + !byte <.builtin + !byte <.switch + !byte <.writing + !byte <.unformat + !byte <.f7 + !byte <.sync + !byte <.optbad + !byte <.passver + !byte <.passdemuf + !byte <.passcrack + !byte <.passcrack0 + !byte <.fail + !byte <.fatal0000 + !byte <.fatal220f + !byte <.done + !byte <.noslot6 + !byte <.writeerr + !byte <.writeioerr + !byte <.writenodev + !byte <.writeprot + !byte <.othermli + !byte <.canttrace + !byte <.canceled + !byte <.bademu + !byte <.reset + !byte <.modify + !byte <.modifyto + !byte <.dos33boot0 + !byte <.prodosboot0 + !byte <.pascalboot0 + !byte <.mecc + !byte <.sierra + !byte <.a6bc95 + !byte <.jmpbcf0 + !byte <.rol1e + !byte <.runhello + !byte <.e7 + !byte <.jmpb4bb + !byte <.jmpb400 + !byte <.jmpbeca + !byte <.bb03 + !byte <.thunder + !byte <.jmpae8e + !byte <.diskvol + !byte <.d5d5f7 + !byte <.construct + !byte <.datasoftb0 + !byte <.datasoft + !byte <.lsr6a + !byte <.bcs08 + !byte <.jmpb660 + !byte <.protdos + !byte <.decryptrwts + !byte <.protserial + !byte <.fbff + !byte <.encoded44 + !byte <.encoded53 + !byte <.specdel + !byte <.bytrack + !byte <.a5count + !byte <.restart + !byte <.corrupter + !byte <.eaboot0 + !byte <.eatrk6 + !byte <.eeef + !byte <.poke + !byte <.bootcounter + !byte <.milliken + !byte <.jsr8b3 + !byte <.daviddos + !byte <.quickdos + !byte <.diversidos + !byte <.prontodos + !byte <.jmpb412 + !byte <.laureate + !byte <.bbf9 + !byte <.micrograms + !byte <.cmpbne0 + !byte <.writeram + !byte <.d5timing + !byte <.advint + !byte <.dos32boot0 + !byte <.bootwrite + !byte <.rwtswrite + !byte <.rdos + !byte <.sra + !byte <.muse + !byte <.origin + !byte <.volumename + !byte <.dinkeydos + !byte <.trillium + !byte <.tamper + !byte <.microfun + !byte <.advent + !byte <.gathering + !byte <.davidson + !byte <.rdos13 + !byte <.ssi + !byte <.aacount + !byte <.infocom18 + !byte <.toverify + !byte <.sector13 + !byte <.dakin5 + !byte <.springboard + !byte <.hallabs + !byte <.holle + !byte <.hoffman + !byte <.diskvol0 + !byte <.e7everywhere + !byte <.choplifter + +StringTableHigh + !byte >.header + !byte >.mainmenu + !byte >.progbar + !byte >.reading + !byte >.diskrwts + !byte >.bb00 + !byte >.sunburst + !byte >.optimum + !byte >.builtin + !byte >.switch + !byte >.writing + !byte >.unformat + !byte >.f7 + !byte >.sync + !byte >.optbad + !byte >.passver + !byte >.passdemuf + !byte >.passcrack + !byte >.passcrack0 + !byte >.fail + !byte >.fatal0000 + !byte >.fatal220f + !byte >.done + !byte >.noslot6 + !byte >.writeerr + !byte >.writeioerr + !byte >.writenodev + !byte >.writeprot + !byte >.othermli + !byte >.canttrace + !byte >.canceled + !byte >.bademu + !byte >.reset + !byte >.modify + !byte >.modifyto + !byte >.dos33boot0 + !byte >.prodosboot0 + !byte >.pascalboot0 + !byte >.mecc + !byte >.sierra + !byte >.a6bc95 + !byte >.jmpbcf0 + !byte >.rol1e + !byte >.runhello + !byte >.e7 + !byte >.jmpb4bb + !byte >.jmpb400 + !byte >.jmpbeca + !byte >.bb03 + !byte >.thunder + !byte >.jmpae8e + !byte >.diskvol + !byte >.d5d5f7 + !byte >.construct + !byte >.datasoftb0 + !byte >.datasoft + !byte >.lsr6a + !byte >.bcs08 + !byte >.jmpb660 + !byte >.protdos + !byte >.decryptrwts + !byte >.protserial + !byte >.fbff + !byte >.encoded44 + !byte >.encoded53 + !byte >.specdel + !byte >.bytrack + !byte >.a5count + !byte >.restart + !byte >.corrupter + !byte >.eaboot0 + !byte >.eatrk6 + !byte >.eeef + !byte >.poke + !byte >.bootcounter + !byte >.milliken + !byte >.jsr8b3 + !byte >.daviddos + !byte >.quickdos + !byte >.diversidos + !byte >.prontodos + !byte >.jmpb412 + !byte >.laureate + !byte >.bbf9 + !byte >.micrograms + !byte >.cmpbne0 + !byte >.writeram + !byte >.d5timing + !byte >.advint + !byte >.dos32boot0 + !byte >.bootwrite + !byte >.rwtswrite + !byte >.rdos + !byte >.sra + !byte >.muse + !byte >.origin + !byte >.volumename + !byte >.dinkeydos + !byte >.trillium + !byte >.tamper + !byte >.microfun + !byte >.advent + !byte >.gathering + !byte >.davidson + !byte >.rdos13 + !byte >.ssi + !byte >.aacount + !byte >.infocom18 + !byte >.toverify + !byte >.sector13 + !byte >.dakin5 + !byte >.springboard + !byte >.hallabs + !byte >.holle + !byte >.hoffman + !byte >.diskvol0 + !byte >.e7everywhere + !byte >.choplifter + ; ; Text can contain substitution strings, which ; are replaced by current values at runtime. Each @@ -158,7 +280,7 @@ StringTable ; can be set directly before calling PrintByID. ; .header - !text "Passport by 4am 2019-04-13",$00 + !text "Passport by 4am 2019-04-15",$00 .mainmenu !text "________________________________________",$8D,$8D,$8D,$8D,$8D,$8D,$8D !text " " @@ -486,4 +608,6 @@ StringTable !text "T%t,S%0 Disk requires volume number 000",$8D,$00 .e7everywhere !text "T%t,S%0 Found E7 Everywhere protection",$8D,$00 +.choplifter + !text "T00,S01 Found Choplifter protection",$8D,$00 } diff --git a/src/strings/enid.a b/src/strings/enid.a index 8ea28a4..899f190 100644 --- a/src/strings/enid.a +++ b/src/strings/enid.a @@ -119,4 +119,5 @@ s_holle = $71 s_hoffman = $72 s_diskvol0 = $73 s_e7everywhere=$74 -STRINGCOUNT = $75 +s_choplifter = $75 +STRINGCOUNT = $76