From b7924c651ec57b96c8765e19aecb352315489052 Mon Sep 17 00:00:00 2001 From: Peter Ferrie Date: Mon, 23 Jan 2017 16:57:43 -0800 Subject: [PATCH] local labels FTW, support FBFF protection --- src/analyze.a | 87 ++++---- src/applyglobals.a | 74 +++---- src/compare.a | 12 +- src/id/datasoft.a | 24 +-- src/id/dos33.a | 72 +++---- src/id/encode44.a | 6 +- src/id/encode53.a | 8 +- src/id/inspect0.a | 52 ++--- src/id/jsr8b3.a | 38 ++-- src/id/mecc.a | 38 ++-- src/id/protecteddos.a | 34 +-- src/id/specdelivery.a | 30 +-- src/id/trace.a | 36 ++-- src/keys.a | 10 +- src/memory.a | 64 +++--- src/mli.a | 81 +++++--- src/modify.a | 28 +-- src/passport.a | 161 +++++++------- src/patchers/a5count.a | 8 +- src/patchers/a6bc95.a | 14 +- src/patchers/bademu.a | 8 +- src/patchers/bademu2.a | 10 +- src/patchers/border.a | 10 +- src/patchers/c9ff.a | 6 +- src/patchers/d5d5f7.a | 10 +- src/patchers/datasoft.a | 8 +- src/patchers/davidbb03.a | 32 +-- src/patchers/diskvol.a | 24 ++- src/patchers/fbff.a | 35 +++- src/patchers/jmpae8e.a | 10 +- src/patchers/jmpb400.a | 12 +- src/patchers/jmpb4bb.a | 12 +- src/patchers/jmpb4bbhi.a | 8 +- src/patchers/jmpb660.a | 8 +- src/patchers/jmpb720.a | 12 +- src/patchers/jmpbbfe.a | 8 +- src/patchers/jmpbcf0.a | 8 +- src/patchers/jmpbeb1.a | 16 +- src/patchers/jmpbeca.a | 8 +- src/patchers/jmpbeca2.a | 10 +- src/patchers/jsrbb03.a | 20 +- src/patchers/meccm7.a | 52 ++--- src/patchers/meccm8.a | 52 ++--- src/patchers/nibtable.a | 90 ++++---- src/patchers/prodosmecc.a | 26 +-- src/patchers/prodosrwts.a | 12 +- src/patchers/protecteddos.a | 108 +++++----- src/patchers/rol1e.a | 30 +-- src/patchers/runhello.a | 38 ++-- src/patchers/rwts.a | 246 +++++++++++----------- src/patchers/rwtsswap.a | 16 +- src/patchers/rwtsswap2.a | 10 +- src/patchers/rwtsswapmecc.a | 8 +- src/patchers/sunburst.a | 22 +- src/patchers/thunder.a | 30 +-- src/patchers/universale7.a | 84 ++++---- src/prefs.a | 32 +-- src/print.a | 128 ++++++------ src/rwts.a | 28 +-- src/sectormap.a | 20 +- src/slots.a | 36 ++-- src/strings/en.a | 280 ++++++++++++------------- src/universalrwts.a | 404 ++++++++++++++++++------------------ 63 files changed, 1544 insertions(+), 1360 deletions(-) diff --git a/src/analyze.a b/src/analyze.a index 0177df5..0e1823b 100755 --- a/src/analyze.a +++ b/src/analyze.a @@ -8,6 +8,7 @@ ; out C clear if sequence was found ; C set if sequence was not found ;------------------------------- +!zone { IsF7 lda $C0E9 lda #$00 @@ -19,34 +20,34 @@ IsF7 bpl - cmp #$F7 beq + -restart iny +.restart iny bne - dec nibcount bne - beq F7fail -- -+ lda $C0EC ++ +- lda $C0EC bpl - cmp #$F6 - bne restart + bne .restart - lda $C0EC bpl - cmp #$EF - bne restart + bne .restart - lda $C0EC bpl - cmp #$EE - bne restart + bne .restart - lda $C0EC bpl - cmp #$AB - bne restart + bne .restart clc !byte $24 ; hides SEC F7fail sec lda $C0E8 rts - +} ;------------------------------- ; IsSyncBytes ; check if track is mostly $FF bytes @@ -106,6 +107,7 @@ nibloop ldx $C0EC ; out: C clear if protection code was found ; C set if protection code was not found ;------------------------------- +!zone { xHeredityDog lda $08FE clc @@ -114,27 +116,28 @@ xHeredityDog ldx #$16 ldy #$0B jsr CompareMemory - !byte $F0,05,$A2,$B2,$4C,$F0,$BB,$BD,$8C,$C0,$A9 + !byte $F0,$05,$A2,$B2,$4C,$F0,$BB,$BD,$8C,$C0,$A9 pla - bcc analyze_maybe - jmp no1 + bcc .maybe + jmp .no ; don't check byte at $BB21 because it can vary -analyze_maybe +.maybe ldx #$22 ldy #$3E jsr CompareMemory - !byte $8D,00,02,$BD,$8C,$C0,$10,$FB,$C9,$EB,$D0,$F7,$BD,$8C + !byte $8D,$00,$02,$BD,$8C,$C0,$10,$FB,$C9,$EB,$D0,$F7,$BD,$8C !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 - bcs no1 -yes1 + !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 + bcs .no +.yes lda #$80 sta T00S0A -no1 +.no rts +} ;------------------------------- ; xSunburst @@ -146,6 +149,7 @@ no1 ; out: C clear if Sunburst RWTS was found ; C set otherwise ;------------------------------- +!zone { xSunburst lda $08FE clc @@ -156,15 +160,16 @@ xSunburst !byte $48,$A5,$2A,$4A,$A8,$B9,$29,$BA !byte $8D,$6A,$B9,$8D,$84,$BC,$B9,$34 !byte $BA,$8D,$FC,$B8,$8D,$5D,$B8,$C0 - !byte $11,$D0,03,$A9,02,$AC,$A9,$0E - !byte $8D,$C0,$BF,$68,$69,00,$48,$AD - !byte $78,04,$90,$2B - bcs no2 -yes2 + !byte $11,$D0,$03,$A9,$02,$AC,$A9,$0E + !byte $8D,$C0,$BF,$68,$69,$00,$48,$AD + !byte $78,$04,$90,$2B + bcs .no +.yes lda #$80 sta T11S0F -no2 +.no rts +} ;------------------------------- ; xOptimumRes @@ -176,26 +181,28 @@ no2 ; out: C clear if OptimumRes bootloader was found ; C set otherwise ;------------------------------- +!zone { xOptimumRes lda #$08 ldx #$5D ldy #$0C jsr CompareMemory - !byte $68,$85,$F0,$68,$85,$F1,$A0,01 + !byte $68,$85,$F0,$68,$85,$F1,$A0,$01 !byte $B1,$F0,$85,$54 - bcc yes3 + bcc .yes lda #$08 ldx #$5D ldy #$0C jsr CompareMemory - !byte $68,$85,$A0,$68,$85,$A1,$A0,01 + !byte $68,$85,$A0,$68,$85,$A1,$A0,$01 !byte $B1,$A0,$85,$54 - bcs no3 -yes3 + bcs .no +.yes lda #$80 sta T01S0F -no3 +.no rts +} ;------------------------------- ; xB4BB @@ -207,6 +214,7 @@ no3 ; out: C clear if RWTS was modified in this routine ; C set otherwise ;------------------------------- +!zone { xB4BB lda gTrack pha @@ -218,9 +226,9 @@ b4bbcompare ldy #$20 jsr CompareMemory !byte $D8,$A9,$DF,$48,$A9,$FF,$48,$A9 - !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 + !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 bcs _b4bbexit lda #$00 sta gTrack @@ -260,6 +268,7 @@ _b4bbexit pla sta gTrack rts +} ;------------------------------- ; xB660 @@ -276,18 +285,20 @@ _b4bbexit ; out: C clear if $B660 routine was found ; C set otherwise ;------------------------------- +!zone { xB660 lda #$08 ldx #$60 ldy #$1A jsr CompareMemory !byte $BD,$8C,$C0,$10,$FB,$C9,$AD,$D0 - !byte $F4,$A9,$F8,$3D,$8C,$C0,$D0,02 + !byte $F4,$A9,$F8,$3D,$8C,$C0,$D0,$02 !byte $EA,$EA,$EA,$EA,$BD,$8C,$C0,$2A - !byte $30,02 - bcs no4 -yes4 + !byte $30,$02 + bcs .no +.yes lda #$FE sta T00S09 -no4 +.no rts +} diff --git a/src/applyglobals.a b/src/applyglobals.a index 903e812..fe29438 100755 --- a/src/applyglobals.a +++ b/src/applyglobals.a @@ -2,6 +2,7 @@ ; initialize some variables that are used by many ; other patchers on track $00 ; +!zone { ApplyGlobals lda #$00 ldx #$00 @@ -12,72 +13,72 @@ ApplyGlobals ; we're going to patch the sector and trace it to capture ; the RWTS. - !byte 01,$A5,$27,$C9,09,$D0,$18,$A5 - !byte $2B,$4A,$4A,$4A,$4A,09,$C0,$85 + !byte $01,$A5,$27,$C9,$09,$D0,$18,$A5 + !byte $2B,$4A,$4A,$4A,$4A,$09,$C0,$85 !byte $3F,$A9,$5C,$85,$3E,$18,$AD,$FE - !byte 08,$6D,$FF,08,$8D,$FE,08,$AE - !byte $FF,08,$30,$15,$BD,$4D,08,$85 - !byte $3D,$CE,$FF,08,$AD,$FE,08,$85 - !byte $27,$CE,$FE,08,$A6,$2B,$6C,$3E - !byte 00,$EE,$FE,08,$EE,$FE,08,$20 + !byte $08,$6D,$FF,$08,$8D,$FE,$08,$AE + !byte $FF,$08,$30,$15,$BD,$4D,$08,$85 + !byte $3D,$CE,$FF,$08,$AD,$FE,$08,$85 + !byte $27,$CE,$FE,$08,$A6,$2B,$6C,$3E + !byte $00,$EE,$FE,$08,$EE,$FE,$08,$20 !byte $89,$FE,$20,$93,$FE,$20,$2F,$FB !byte $A6,$2B ldx #TRUE - bcc boot0 + bcc .boot0 ldx #FALSE -boot0 +.boot0 stx gIsBoot0 lda #$01 ldx #$00 ldy #$38 jsr compare ; if T00,S01,$00 == - !byte $8E,$E9,$B7,$8E,$F7,$B7,$A9,01 + !byte $8E,$E9,$B7,$8E,$F7,$B7,$A9,$01 !byte $8D,$F8,$B7,$8D,$EA,$B7,$AD,$E0 - !byte $B7,$8D,$E1,$B7,$A9,02,$8D,$EC - !byte $B7,$A9,04,$8D,$ED,$B7,$AC,$E7 - !byte $B7,$88,$8C,$F1,$B7,$A9,01,$8D + !byte $B7,$8D,$E1,$B7,$A9,$02,$8D,$EC + !byte $B7,$A9,$04,$8D,$ED,$B7,$AC,$E7 + !byte $B7,$88,$8C,$F1,$B7,$A9,$01,$8D !byte $F4,$B7,$8A,$4A,$4A,$4A,$4A,$AA - !byte $A9,00,$9D,$F8,04,$9D,$78,04 + !byte $A9,$00,$9D,$F8,$04,$9D,$78,$04 ldx #TRUE - bcc boot1 + bcc .boot1 ldx #FALSE -:boot1 +.boot1 stx gIsBoot1 lda #$01 ldx #$00 ldy #$38 jsr compare ; if T00,S01,$00 == - !byte $8E,$E9,$37,$8E,$F7,$37,$A9,01 + !byte $8E,$E9,$37,$8E,$F7,$37,$A9,$01 !byte $8D,$F8,$37,$8D,$EA,$37,$AD,$E0 - !byte $37,$8D,$E1,$37,$A9,02,$8D,$EC - !byte $37,$A9,04,$8D,$ED,$37,$AC,$E7 - !byte $37,$88,$8C,$F1,$37,$A9,01,$8D + !byte $37,$8D,$E1,$37,$A9,$02,$8D,$EC + !byte $37,$A9,$04,$8D,$ED,$37,$AC,$E7 + !byte $37,$88,$8C,$F1,$37,$A9,$01,$8D !byte $F4,$37,$8A,$4A,$4A,$4A,$4A,$AA - !byte $A9,00,$9D,$F8,04,$9D,$78,04 + !byte $A9,$00,$9D,$F8,$04,$9D,$78,$04 ldx #TRUE - bcc master + bcc .master ldx #FALSE -master +.master stx gIsMaster lda #$07 ldx #$00 ldy #$40 jsr compare ; if T00,S07,$00 == - !byte $84,$48,$85,$49,$A0,02,$8C,$F8 - !byte 06,$A0,04,$8C,$F8,04,$A0,01 + !byte $84,$48,$85,$49,$A0,$02,$8C,$F8 + !byte $06,$A0,$04,$8C,$F8,$04,$A0,$01 !byte $B1,$48,$AA,$A0,$0F,$D1,$48,$F0 !byte $1B,$8A,$48,$B1,$48,$AA,$68,$48 - !byte $91,$48,$BD,$8E,$C0,$A0,08,$BD + !byte $91,$48,$BD,$8E,$C0,$A0,$08,$BD !byte $8C,$C0,$DD,$8C,$C0,$D0,$F6,$88 !byte $D0,$F8,$68,$AA,$BD,$8E,$C0,$BD - !byte $8C,$C0,$A0,08,$BD,$8C,$C0,$48 + !byte $8C,$C0,$A0,$08,$BD,$8C,$C0,$48 ldx #TRUE - bcc rwts + bcc .rwts ldx #FALSE -rwts +.rwts stx gIsRWTS lda #$00 @@ -94,9 +95,9 @@ rwts !byte 01,$38,$B0,$03,$4C ldx #TRUE - bcc prodos + bcc .prodos ldx #FALSE -prodos +.prodos stx gIsProDOS lda #$00 @@ -108,9 +109,9 @@ prodos ; The wildcard in 7th position catches alternate jump ; addresses (e.g. Wizardry I, Sundog Frozen Legacy) - !byte 01,$E0,$60,$F0,03,$4C,$97,$08 + !byte $01,$E0,$60,$F0,$03,$4C,$97,$08 ldx #TRUE - bcc pascal + bcc .pascal lda #$00 ldx #$00 ldy #$08 @@ -118,11 +119,12 @@ prodos ; Pascal 1.3 signature [thanks Marco V.] - !byte 01,$E0,$07,$B0,04,$E0,$40,$B0 + !byte $01,$E0,$07,$B0,$04,$E0,$40,$B0 ldx #TRUE - bcc pascal + bcc .pascal ldx #FALSE -pascal +.pascal stx gIsPascal rts +} diff --git a/src/compare.a b/src/compare.a index c85b12c..4101d26 100755 --- a/src/compare.a +++ b/src/compare.a @@ -161,6 +161,7 @@ all_done_set ; $cmp2 zero page clobbered ; stack set to first instruction after string ;------------------------------- +!zone { compare clc adc #BASEPAGE @@ -182,17 +183,17 @@ CompareMemory pha lda tmp pha -xcmp +.cmp lda (cmp2),y dey - bmi success + bmi .success cmp (cmp1),y - beq xcmp + beq .cmp cmp #WILDCARD - beq xcmp + beq .cmp sec !byte $24 ; hide CLC -success clc +.success clc php lda cmp1+1 sec @@ -200,3 +201,4 @@ success clc ldx cmp1 plp rts +} diff --git a/src/id/datasoft.a b/src/id/datasoft.a index 78b8082..fe91ab6 100755 --- a/src/id/datasoft.a +++ b/src/id/datasoft.a @@ -13,20 +13,20 @@ IDDatasoft ldx #$00 ldy #$7E jsr compare - !byte 01,$4C,$7E,08,04,$8A,$0C,$B8 - !byte 00,$56,$10,$7A,00,00,$1A,$16 - !byte $12,$0E,$0A,06,$53,$18,$9A,02 - !byte $10,$1B,02,$10,$4D,$56,$15,$0B + !byte $01,$4C,$7E,$08,$04,$8A,$0C,$B8 + !byte $00,$56,$10,$7A,$00,$00,$1A,$16 + !byte $12,$0E,$0A,$06,$53,$18,$9A,$02 + !byte $10,$1B,$02,$10,$4D,$56,$15,$0B !byte $BF,$14,$14,$54,$54,$54,$92,$81 - !byte $1B,$10,$10,$41,06,$73,$0A,$10 - !byte $33,$4E,00,$73,$12,$10,$33,$7C - !byte 00,$11,$20,$E3,$49,$50,$73,$1A - !byte $10,$41,00,$23,$80,$5B,$0A,$10 + !byte $1B,$10,$10,$41,$06,$73,$0A,$10 + !byte $33,$4E,$00,$73,$12,$10,$33,$7C + !byte $00,$11,$20,$E3,$49,$50,$73,$1A + !byte $10,$41,$00,$23,$80,$5B,$0A,$10 !byte $0B,$4E,$9D,$0A,$10,$9D,$0C,$10 !byte $60,$1E,$53,$10,$90,$53,$BC,$90 - !byte $53,00,$90,$D8,$52,00,$D8,$7C - !byte 00,$53,$80,$0B,06,$41,00,09 - !byte 04,$45,$0C,$63,04,$90,$94,$D0 - !byte $D4,$23,04,$91,$A1,$EB,$CD,06 + !byte $53,$00,$90,$D8,$52,$00,$D8,$7C + !byte $00,$53,$80,$0B,$06,$41,$00,$09 + !byte $04,$45,$0C,$63,$04,$90,$94,$D0 + !byte $D4,$23,$04,$91,$A1,$EB,$CD,$06 !byte $95,$A1,$E1,$98,$97,$86 rts diff --git a/src/id/dos33.a b/src/id/dos33.a index 0cc73e5..174022b 100755 --- a/src/id/dos33.a +++ b/src/id/dos33.a @@ -10,82 +10,84 @@ ; all registers clobbered ; all other flags clobbered ;------------------------------- +!zone { IDDOS33 lda $08FE ; $08FE must be either $36 or $B6 cmp #$36 ; (prevents matching on some - beq match0 ; Infocom disks that would + beq .match0 ; Infocom disks that would cmp #$B6 ; otherwise match but then load - beq match0 ; boot1 over program space and crash) - jmp notd33boot0 + beq .match0 ; boot1 over program space and crash) + jmp .notd33boot0 -match0 +.match0 lda #$00 ; match first $1C bytes of T00S00 ldx #$00 ; against standard DOS 3.3 boot0 ldy #$1C jsr compare - !byte 01,$A5,$27,$C9,09,$D0,$18,$A5 - !byte $2B,$4A,$4A,$4A,$4A,09,$C0,$85 + !byte $01,$A5,$27,$C9,$09,$D0,$18,$A5 + !byte $2B,$4A,$4A,$4A,$4A,$09,$C0,$85 !byte $3F,$A9,$5C,$85,$3E,$18,$AD,$FE - !byte 08,$6D,$FF,08 - bcc maybe_d33_1 - jmp notd33boot0 + !byte $08,$6D,$FF,$08 + bcc .maybe_d33_1 + jmp .notd33boot0 -maybe_d33_1 +.maybe_d33_1 lda #$00 ; match more bytes of T00S00 ldx #$1F ; against standard DOS 3.3 boot0 ldy #$2B jsr compare !byte $AE - !byte $FF,08,$30,$15,$BD,$4D,08,$85 - !byte $3D,$CE,$FF,08,$AD,$FE,08,$85 - !byte $27,$CE,$FE,08,$A6,$2B,$6C,$3E - !byte 00,$EE,$FE,08,$EE,$FE,08,$20 + !byte $FF,$08,$30,$15,$BD,$4D,$08,$85 + !byte $3D,$CE,$FF,$08,$AD,$FE,$08,$85 + !byte $27,$CE,$FE,$08,$A6,$2B,$6C,$3E + !byte $00,$EE,$FE,$08,$EE,$FE,$08,$20 !byte $89,$FE,$20,$93,$FE,$20,$2F,$FB !byte $A6,$2B - bcc maybe_d33_2 - jmp notd33boot0 + bcc .maybe_d33_2 + jmp .notd33boot0 -maybe_d33_2 +.maybe_d33_2 lda #$00 ; check sector order map ldx #$4D ldy #$10 jsr compare - !byte 00,$0D,$0B,09,07,05,03,01 - !byte $0E,$0C,$0A,08,06,04,02,$0F - bcc maybe_d33_3 - jmp notd33boot0 + !byte $00,$0D,$0B,$09,$07,$05,$03,$01 + !byte $0E,$0C,$0A,$08,$06,$04,$02,$0F + bcc .maybe_d33_3 + jmp .notd33boot0 -maybe_d33_3 +.maybe_d33_3 lda #$00 ; match 3 final bytes of T00S00 ldx #$1C ; against standard DOS 3.3 boot0 ldy #$03 jsr compare - !byte $8D,$FE,08 - bcs maybe_d33_4 - jmp founddos33 + !byte $8D,$FE,$08 + bcs .maybe_d33_4 + jmp .founddos33 -maybe_d33_4 +.maybe_d33_4 lda #$00 ; minor variation (e.g. Terrapin ldx #$1C ; Logo 3.0) jumps to $08F0 and ldy #$03 ; back, but still safe to trace jsr compare - !byte $4C,$F0,08 - bcc maybe_d33_5 - jmp notd33boot0 + !byte $4C,$F0,$08 + bcc .maybe_d33_5 + jmp .notd33boot0 -maybe_d33_5 +.maybe_d33_5 lda #$00 ldx #$F0 ldy #$09 jsr compare - !byte $8D,$FE,08,$EE,$F3,03,$4C,$1F - !byte 08 - bcs notd33boot0 + !byte $8D,$FE,$08,$EE,$F3,$03,$4C,$1F + !byte $08 + bcs .notd33boot0 -founddos33 +.founddos33 clc !byte $24 ; hide next SEC -notd33boot0 +.notd33boot0 sec rts +} diff --git a/src/id/encode44.a b/src/id/encode44.a index 90f57cf..5e3c0a5 100755 --- a/src/id/encode44.a +++ b/src/id/encode44.a @@ -10,10 +10,12 @@ ; all registers clobbered ; all other flags clobbered ;------------------------------- +!zone { IDEncoded44 ldy #$07 jsr SearchTrack !byte $BD,$8C,$C0,$10,$FB,$38,$2A - bcs encoded44_exit -encoded44_exit + bcs .exit +.exit rts +} diff --git a/src/id/encode53.a b/src/id/encode53.a index 3bb48c1..589b4d5 100755 --- a/src/id/encode53.a +++ b/src/id/encode53.a @@ -10,11 +10,13 @@ ; all registers clobbered ; all other flags clobbered ;------------------------------- +!zone { IDEncoded53 ldy #$10 jsr SearchTrack !byte $BD,$8C,$C0,$10,$FB,$C9,$B5,$F0 - !byte 09,$28,$90,$DF,$49,$AD,$F0,$1F - bcs encoded53_exit -encoded53_exit + !byte $09,$28,$90,$DF,$49,$AD,$F0,$1F + bcs .exit +.exit rts +} diff --git a/src/id/inspect0.a b/src/id/inspect0.a index e817a3a..35206a4 100755 --- a/src/id/inspect0.a +++ b/src/id/inspect0.a @@ -3,6 +3,7 @@ ; main entry point to identify the bootloader ; based on T00,S00 (currently in memory at $0800) ;------------------------------- +!zone { CheckT00S00 lda #FALSE sta gIsBoot0 @@ -43,86 +44,86 @@ CheckT00S00 ; we can maybe trace to capture the RWTS in memory. ; jsr IDDOS33 - bcs notdos33 + bcs .notdos33 lda #s_dosb0 jsr PrintByID jmp TraceDOS33 -notdos33 +.notdos33 ; ; Try to identify a variant bootloader that calls to $08B3 ; early to munge the nibble tables used by the drive firmware. ; jsr ID8b3 - bcs not8b3 + bcs .not8b3 jmp found8b3 -not8b3 +.not8b3 ; ; Try to identify all the different MECC fastloader variants. ; jsr IDMECC - bcs notmecc + bcs .notmecc jsr IDMECCM8 - bcs notmeccm8 + bcs .notmeccm8 jmp foundmeccm8 -notmeccm8 +.notmeccm8 jsr IDMECCM7 - bcs notmeccm7 + bcs .notmeccm7 jmp foundmeccm7 -notmeccm7 -notmecc +.notmeccm7 +.notmecc ; ; Try to identify the encrypted Datasoft bootloader. ; jsr IDDatasoft - bcs notdatasoft + bcs .notdatasoft lda #s_datasoftb0 jsr PrintByID lda #TRUE sta gIsDatasoft - jmp useuniv + jmp .useuniv -:notdatasoft +.notdatasoft ; ; Try to identify ProDOS bootloader. ; lda gIsProDOS - bne notprodos + bne .notprodos lda #s_prodosb0 jsr PrintByID - jmp useuniv + jmp .useuniv -notprodos +.notprodos ; ; Try to identify Apple Pascal bootloader (all variants). ; lda gIsPascal - bne notpascal + bne .notpascal lda #s_pascalb0 jsr PrintByID -notpascal +.notpascal jsr IDSpecDel - bcs notspecdel + bcs .notspecdel lda #s_specdel jsr PrintByID jmp TraceSpecDel -notspecdel +.notspecdel ; ; Try to detect whether there is code in the boot sector ; that loads 4-and-4-encoded data. This is an early escape ; hatch for disks that are guaranteed to fail later anyway. ; jsr IDEncoded44 - bcs notencoded44 + bcs .notencoded44 lda #s_encoded44 jsr PrintByID jmp TheEnd -notencoded44 +.notencoded44 ; ; Try to detect whether there is code in the boot sector ; that loads 5-and-3-encoded data (like DOS 3.2 disks with @@ -132,15 +133,16 @@ notencoded44 ; guaranteed to fail later anyway. ; jsr IDEncoded53 - bcs notencoded53 + bcs .notencoded53 lda #s_encoded53 jsr PrintByID jmp TheEnd -notencoded53 -useuniv +.notencoded53 +.useuniv ; ; We didn't recognize the boot sector, so use the universal ; (built-in) RWTS and hope for the best ; jmp UseUniversal +} diff --git a/src/id/jsr8b3.a b/src/id/jsr8b3.a index 836eb44..9b8ee2c 100755 --- a/src/id/jsr8b3.a +++ b/src/id/jsr8b3.a @@ -10,38 +10,39 @@ ; all other flags clobbered ; all registers clobbered ;------------------------------- +!zone { ID8b3 lda #$00 ldx #$00 ldy #$5A jsr compare - !byte 01,$20,$B3,08,$D0,$19,$EA,$A5 - !byte $2B,$4A,$4A,$4A,$4A,09,$C0,$85 + !byte $01,$20,$B3,$08,$D0,$19,$EA,$A5 + !byte $2B,$4A,$4A,$4A,$4A,$09,$C0,$85 !byte $3F,$A9,$5C,$85,$3E,$18,$AD,$FE - !byte 08,$6D,$FF,08,$8D,$FE,08,$AE - !byte $FF,08,$F0,$15,$8A,$EA,$EA,$85 - !byte $3D,$CE,$FF,08,$AD,$FE,08,$85 - !byte $27,$CE,$FE,08,$A6,$2B,$6C,$3E - !byte 00,$EE,$FE,08,$EE,$FE,08,$20 + !byte $08,$6D,$FF,$08,$8D,$FE,$08,$AE + !byte $FF,$08,$F0,$15,$8A,$EA,$EA,$85 + !byte $3D,$CE,$FF,$08,$AD,$FE,$08,$85 + !byte $27,$CE,$FE,$08,$A6,$2B,$6C,$3E + !byte $00,$EE,$FE,$08,$EE,$FE,$08,$20 !byte $89,$FE,$20,$93,$FE,$20,$2F,$FB - !byte $A2,$FF,$BD,00,08,$9D,00,$B6 - !byte $CA,$E0,$FF,$D0,$F5,$20,$CC,08 + !byte $A2,$FF,$BD,$00,$08,$9D,$00,$B6 + !byte $CA,$E0,$FF,$D0,$F5,$20,$CC,$08 !byte $A6,$2B - bcc jsr8b3_maybe + bcc .maybe rts -jsr8b3_maybe +.maybe lda #$00 ldx #$B3 ldy #$36 jsr compare - !byte $A9,$3F,$8D,$6C,03 - !byte $A9,$1C,$8D,$CC,03,$A9,00,$8D - !byte $D5,03,$A9,$37,$8D,$A3,03,$A5 - !byte $27,$C9,09,$60,$A9,00,$85,00 - !byte $A9,$B5,$85,01,$A0,$FF,$C8,$B9 - !byte 00,$F0,$91,00,$C0,$FF,$D0,$F6 - !byte $C6,01,$A9,08,$C5,01,$D0,$EC + !byte $A9,$3F,$8D,$6C,$03 + !byte $A9,$1C,$8D,$CC,$03,$A9,$00,$8D + !byte $D5,$03,$A9,$37,$8D,$A3,$03,$A5 + !byte $27,$C9,$09,$60,$A9,$00,$85,$00 + !byte $A9,$B5,$85,$01,$A0,$FF,$C8,$B9 + !byte $00,$F0,$91,$00,$C0,$FF,$D0,$F6 + !byte $C6,$01,$A9,$08,$C5,$01,$D0,$EC !byte $60 rts @@ -75,3 +76,4 @@ B8b3 sta T02,y pla plp jmp $0801 +} diff --git a/src/id/mecc.a b/src/id/mecc.a index 0e5c5d6..741c1ff 100755 --- a/src/id/mecc.a +++ b/src/id/mecc.a @@ -16,9 +16,9 @@ IDMECC ldx #$00 ldy #$17 jsr compare - !byte 01,$4C,$1A,08,$17,$0F,00,00 - !byte $0D,$0B,09,07,05,03,01,$0E - !byte $0C,$0A,08,06,04,02,$0F + !byte $01,$4C,$1A,$08,$17,$0F,$00,$00 + !byte $0D,$0B,$09,$07,$05,$03,$01,$0E + !byte $0C,$0A,$08,$06,$04,$02,$0F rts ;------------------------------- @@ -31,6 +31,7 @@ IDMECC ; all other flags clobbered ; all registers clobbered ;------------------------------- +!zone { IDMECCM8 lda #$00 sta gTrack @@ -42,7 +43,7 @@ IDMECCM8 sta gAddress+1 jsr ReadSector bcc + -mecc_no1 +.no rts + lda #$0B @@ -50,34 +51,34 @@ mecc_no1 ldy #$06 jsr compare ; IF T00,S0B,$02 == !byte $BD,$8C,$C0,$10,$FB,$C9 - bcs mecc_no1 + bcs .no lda #$0B ldx #$09 ldy #$09 jsr compare ; AND T00,S0B,$09 == !byte $D0,$EF,$EA,$BD,$8C,$C0,$10,$FB !byte $C9 - bcs mecc_no1 + bcs .no lda #$0B ldx #$13 ldy #$0A jsr compare ; AND T00,S0B,$13 == - !byte $D0,$E5,$A0,03,$BD,$8C,$C0,$10 + !byte $D0,$E5,$A0,$03,$BD,$8C,$C0,$10 !byte $FB,$C9 - bcs mecc_no1 + bcs .no lda #$0B ldx #$89 ldy #$06 jsr compare ; AND T00,S0B,$89 == !byte $BD,$8C,$C0,$10,$FB,$C9 - bcs mecc_no1 + bcs .no lda #$0B ldx #$90 ldy #$09 jsr compare ; AND T00,S0B,$90 == !byte $D0,$F4,$EA,$BD,$8C,$C0,$10,$FB !byte $C9 - bcs mecc_no1 + bcs .no lda #$0B ldx #$9A ldy #$09 @@ -125,6 +126,7 @@ foundmeccm8 pla plp jmp ADStyle +} ;------------------------------- ; IDMECCM7 @@ -136,6 +138,7 @@ foundmeccm8 ; all other flags clobbered ; all registers clobbered ;------------------------------- +!zone { IDMECCM7 lda #$00 sta gTrack @@ -147,7 +150,7 @@ IDMECCM7 sta gAddress+1 jsr ReadSector bcc + -mecc_no2 +.no rts + lda #$07 @@ -155,31 +158,31 @@ mecc_no2 ldy #$06 jsr compare ; IF T00,S07,$7D == !byte $BD,$8C,$C0,$10,$FB,$C9 - bcs mecc_no2 + bcs .no lda #$07 ldx #$84 ldy #$09 jsr compare ; AND T00,S07,$84 == !byte $D0,$F0,$EA,$BD,$8C,$C0,$10,$FB,$C9 - bcs mecc_no2 + bcs .no lda #$07 ldx #$8E ldy #$0A jsr compare ; and T00,S07,$8E == - !byte $D0,$F2,$A0,03,$BD,$8C,$C0,$10,$FB,$C9 - bcs mecc_no2 + !byte $D0,$F2,$A0,$03,$BD,$8C,$C0,$10,$FB,$C9 + bcs .no lda #$07 ldx #$0F ldy #$06 jsr compare ; and T00,S07,$0F == !byte $BD,$8C,$C0,$10,$FB,$49 - bcs mecc_no2 + bcs .no lda #$07 ldx #$18 ldy #$07 jsr compare ; and T00,S07,$18 == !byte $EA,$BD,$8C,$C0,$10,$FB,$C9 - bcs mecc_no2 + bcs .no lda #$07 ldx #$20 ldy #$0A @@ -228,3 +231,4 @@ foundmeccm7 pla plp jmp ADStyle +} diff --git a/src/id/protecteddos.a b/src/id/protecteddos.a index ef7cbf3..52075f9 100755 --- a/src/id/protecteddos.a +++ b/src/id/protecteddos.a @@ -6,19 +6,20 @@ ; C set if "Protected DOS" was not found ; gProtectedDOS is set to TRUE or FALSE ;------------------------------- +!zone { ProtectedDOS lda #$B7 ldx #$00 ldy #$1A jsr CompareMemory - !byte $A0,$1A,$B9,00,$B7,$49,$97,$99 - !byte 00,$B7,$C8,$D0,$F5,$EE,04,$B7 - !byte $EE,09,$B7,$AD,09,$B7,$C9,$C0 + !byte $A0,$1A,$B9,$00,$B7,$49,$97,$99 + !byte $00,$B7,$C8,$D0,$F5,$EE,$04,$B7 + !byte $EE,$09,$B7,$AD,$09,$B7,$C9,$C0 !byte $D0,$E8 - bcs protecteddos_exit + bcs .exit lda $B706 ; decryption key - sta key+1 + sta .key+1 sta gDisplayBytes lda #s_protdos jsr PrintByID @@ -27,19 +28,19 @@ ProtectedDOS ; decrypt RWTS in memory ; lda #$B7 - sta decrypt+2 - sta store+2 + sta .decrypt+2 + sta .store+2 ldy #$1A -decrypt lda $B700,y -key eor #$FF ; set at runtime -store sta $B700,y +.decrypt lda $B700,y +.key eor #$FF ; set at runtime +.store sta $B700,y iny - bne decrypt - inc decrypt+2 - inc store+2 - lda store+2 + bne .decrypt + inc .decrypt+2 + inc .store+2 + lda .store+2 cmp #$C0 - bne decrypt + bne .decrypt ; ; this RWTS swaps the A/Y hi/lo parameter table address @@ -50,5 +51,6 @@ store sta $B700,y lda #TRUE sta gIsProtDOS clc -protecteddos_exit +.exit rts +} diff --git a/src/id/specdelivery.a b/src/id/specdelivery.a index 4ef6798..530b6e2 100755 --- a/src/id/specdelivery.a +++ b/src/id/specdelivery.a @@ -12,15 +12,15 @@ IDSpecDel ldx #$00 ldy #$58 jsr compare - !byte 02,$90,$4A,$C6,$27,$BD,$31,09 + !byte $02,$90,$4A,$C6,$27,$BD,$31,$09 !byte $49,$B0,$48,$C6,$3D,$98,$C8,$48 - !byte $CE,00,08,$A9,$20,$C6,$27,$48 + !byte $CE,$00,$08,$A9,$20,$C6,$27,$48 !byte $51,$26,$91,$26,$AA,$A5,$27,$85 - !byte $32,$CE,00,08,$A8,$B5,$33,$84 + !byte $32,$CE,$00,$08,$A8,$B5,$33,$84 !byte $29,$84,$21,$8A,$A2,$17,$86,$31 - !byte $D5,$33,$A6,$2B,$5D,$31,09,$85 - !byte $29,$5D,$32,09,$C6,$3D,$85,$28 - !byte $5D,$33,09,$85,$48,$A0,$2B,$84 + !byte $D5,$33,$A6,$2B,$5D,$31,$09,$85 + !byte $29,$5D,$32,$09,$C6,$3D,$85,$28 + !byte $5D,$33,$09,$85,$48,$A0,$2B,$84 !byte $20,$C6,$40,$30,$3E,$24,$40,$30 !byte $33,$24,$24,$24,$24,$40,$40,$40 rts @@ -225,18 +225,18 @@ skipsectors ; rev. a5b839d7d0fa21b0ff3a7776d9f6c9750b09ae10 of 2016-11-29 ; SDboot0 - !byte 01,$a8,$ee,06,08,$ad,$4e,08 + !byte $01,$a8,$ee,$06,$08,$ad,$4e,$08 !byte $c9,$c0,$f0,$40,$85,$27,$c8,$c0 - !byte $10,$90,09,$f0,05,$20,$2f,08 - !byte $a8,$2c,$a0,01,$84,$3d,$c8,$a5 + !byte $10,$90,$09,$f0,$05,$20,$2f,$08 + !byte $a8,$2c,$a0,$01,$84,$3d,$c8,$a5 !byte $27,$f0,$df,$8a,$4a,$4a,$4a,$4a - !byte 09,$c0,$48,$a9,$5b,$48,$60,$e6 - !byte $41,06,$40,$20,$37,08,$18,$20 - !byte $3c,08,$e6,$40,$a5,$40,$29,03 - !byte $2a,05,$2b,$a8,$b9,$80,$c0,$a9 + !byte $09,$c0,$48,$a9,$5b,$48,$60,$e6 + !byte $41,$06,$40,$20,$37,$08,$18,$20 + !byte $3c,$08,$e6,$40,$a5,$40,$29,$03 + !byte $2a,$05,$2b,$a8,$b9,$80,$c0,$a9 !byte $30,$4c,$a8,$fc,$4c,$b3,$10 - !byte $1E,$1D,$1C,$1B,00,00,00,00 - !byte 00,00,$13,$12,$11,$10,$1F,$20 + !byte $1E,$1D,$1C,$1B,$00,$00,$00,$00 + !byte $00,$00,$13,$12,$11,$10,$1F,$20 !byte $2E,$2D,$2C,$2B,$2A,$29,$28,$27 !byte $26,$25,$24,$23,$22,$21,$2F,$30 !byte $3E,$3D,$3C,$3B,$3A,$39,$38,$37 diff --git a/src/id/trace.a b/src/id/trace.a index e3a3e58..4fccdbf 100755 --- a/src/id/trace.a +++ b/src/id/trace.a @@ -3,6 +3,7 @@ ; set up 1st-level boot trace on ; a DOS 3.3-shaped bootloader ;------------------------------- +!zone { TraceDOS33 ; ; Before we trace through the drive firmware (which -- @@ -52,8 +53,8 @@ TraceDOS33c clc adc #$02 _Inspect1a - sta x1+1 - sta x2+1 + sta .x1+1 + sta .x2+1 sta b4bbmodify+2 sta b4bbmodify2+2 clc @@ -61,36 +62,36 @@ _Inspect1a sta b4bbcompare+1 sec sbc #$02 - sta x3+1 - sta x4+1 + sta .x3+1 + sta .x4+1 sta callrwts+2 jsr ProtectedDOS ; check for a specific (encrypted) ; bootloader called "Protected DOS" - bcs notprotdos + bcs .notprotdos jmp ADStyle -notprotdos +.notprotdos lda callrwts+2 ldx #$00 ; check for "STY $48;STA $49" ldy #$04 ; at RWTS entry point jsr CompareMemory ; (e.g. $BD00 or $3D00) !byte $84,$48,$85,$49 - bcc x1 + bcc .x1 jmp UseUniversal -x1 lda #$FF ; check for "SEC;RTS" at $B942 +.x1 lda #$FF ; check for "SEC;RTS" at $B942 ldx #$42 ldy #$02 jsr CompareMemory !byte $38,$60 - bcc x2 + bcc .x2 jmp UseUniversal -x2 lda #$FF ; check for "LDA $C08C,X" at $B94F +.x2 lda #$FF ; check for "LDA $C08C,X" at $B94F ldx #$4F ldy #$03 jsr CompareMemory !byte $BD,$8C,$C0 - bcc x3 + bcc .x3 jmp UseUniversal -x3 lda #$FF ; check for "JSR $xx00" at $BDB9 +.x3 lda #$FF ; check for "JSR $xx00" at $BDB9 ldx #$B9 ldy #$02 jsr CompareMemory @@ -100,7 +101,7 @@ x3 lda #$FF ; check for "JSR $xx00" at $BDB9 ; Check for RWTS variant that has extra code before ; JSR $B800 e.g. Verb Viper (DLM), Advanced Analogies (Hartley) ; -x4 lda #$FF ; check for "JSR $xx00" at $BDC5 +.x4 lda #$FF ; check for "JSR $xx00" at $BDC5 ldx #$C5 ldy #$02 jsr CompareMemory @@ -137,20 +138,21 @@ Trace pla ldy $B6F8 cpy #$4C - bne maybe_gs + bne .maybe_gs sty $B6F8 ; JMP sta $B6F9 ; lo byte of callback stx $B6FA ; hi byte of callback jmp $B600 -maybe_gs +.maybe_gs ldy $B6FB cpy #$4C - bne unknowndrive + bne .unknowndrive sty $B6FB ; JMP sta $B6FC ; lo byte of callback stx $B6FD ; hi byte of callback jmp $B600 -unknowndrive +.unknowndrive lda #s_canttrace jsr PrintByID jmp UseUniversal +} diff --git a/src/keys.a b/src/keys.a index 7c28e12..17d4130 100755 --- a/src/keys.a +++ b/src/keys.a @@ -1,20 +1,22 @@ KEY = $C000 STROBE = $C010 +!zone { WaitForKey bit STROBE -k lda KEY - bpl k +.k lda KEY + bpl .k bit STROBE cmp #"*" - bne noast + bne .noast jsr TEXT lda #s_reset jsr PrintByID jmp $FF59 -noast +.noast cmp #$E1 bcc + and #$DF ; force uppercase + rts +} diff --git a/src/memory.a b/src/memory.a index a352e43..f2df4af 100755 --- a/src/memory.a +++ b/src/memory.a @@ -5,19 +5,21 @@ ; Y = number of pages to copy ; out: all flags and registers clobbered ;------------------------------- +!zone { CopyMemory - sta source1+2 - stx dest1+2 + sta .source+2 + stx .dest+2 ldx #$00 -source1 lda $FF00,x -dest1 sta $FF00,x +.source lda $FF00,x +.dest sta $FF00,x inx - bne source1 - inc source1+2 - inc dest1+2 + bne .source + inc .source+2 + inc .dest+2 dey - bne source1 + bne .source rts +} ;------------------------------- ; ClearMemory @@ -26,17 +28,19 @@ dest1 sta $FF00,x ; Y = number of pages ; out: all flags and registers clobbered ;------------------------------- +!zone { ClearMemory - sta dest2+2 + sta .dest+2 txa ldx #$00 -dest2 sta $FF00,x +.dest sta $FF00,x inx - bne dest2 - inc dest2+2 + bne .dest + inc .dest+2 dey - bne dest2 + bne .dest rts +} ;------------------------------- ; ClearTSBuffer @@ -58,27 +62,29 @@ ClearTSBuffer ; Y = number of pages to copy ; out: all flags and registers clobbered ;------------------------------- +!zone { SwapMemory - sta source11+2 - sta source22+2 - stx dest11+2 - stx dest22+2 + sta .source1+2 + sta .source2+2 + stx .dest1+2 + stx .dest2+2 ldx #$00 -source11 lda $FF00,x +.source1 lda $FF00,x pha -dest11 lda $FF00,x -source22 sta $FF00,x +.dest1 lda $FF00,x +.source2 sta $FF00,x pla -dest22 sta $FF00,x +.dest2 sta $FF00,x inx - bne source11 - inc source11+2 - inc source22+2 - inc dest11+2 - inc dest22+2 + bne .source1 + inc .source1+2 + inc .source2+2 + inc .dest1+2 + inc .dest2+2 dey - bne source11 + bne .source1 rts +} ;------------------------------- ; SaveProDOS @@ -87,6 +93,7 @@ dest22 sta $FF00,x ; in: none ; out: all flags and registers clobbered ;------------------------------- +!zone { SaveProDOS lda #$00 ldx #$40 @@ -100,8 +107,9 @@ SaveProDOS ldx #$42 ldy #$01 jsr CopyMemory -memory_exit +.exit rts +} ;------------------------------- ; SwapProDOS diff --git a/src/mli.a b/src/mli.a index 7716939..474e72d 100755 --- a/src/mli.a +++ b/src/mli.a @@ -38,6 +38,7 @@ ERR_EOF = $4C ; all other flags clobbered ; all registers clobbered ;------------------------------- +!zone { WriteTrackMLI jsr SwapProDOS jsr ReorderBuffer @@ -68,7 +69,7 @@ WriteTrackMLI lda #$00 sta mliparam+2 ; lo byte of data buffer lda #$08 - sta blockcount + sta .blockcount lda gTrack asl asl @@ -79,20 +80,20 @@ WriteTrackMLI sta mliparam+5 ; hi byte of block number lda #BASEPAGE ; hi byte of data buffer sta mliparam+3 -writeloop +.writeloop lda mlicmd ldy #$03 ; parameter count jsr mli - bcs mli_writeerr + bcs .writeerr inc mliparam+3 ; 2 pages per block inc mliparam+3 inc mliparam+4 - dec blockcount - bne writeloop + dec .blockcount + bne .writeloop clc - bcc writedone -mli_writeerr -writedone + bcc .writedone +.writeerr +.writedone php pha jsr ReorderBuffer @@ -101,8 +102,8 @@ writedone plp rts -blockcount !byte $FF - +.blockcount !byte $FF +} ;------------------------------- ; ReorderBuffer - convert data ; buffer between ProDOS and @@ -114,6 +115,7 @@ blockcount !byte $FF ; all registers clobbered ; @cmp1, @cmp2 clobbered ;------------------------------- +!zone { ReorderBuffer lda #$00 sta cmp1 @@ -128,19 +130,20 @@ ReorderBuffer adc #BASEPAGE sta cmp2+1 ldx #$07 -L lda (cmp1),y +.L lda (cmp1),y pha lda (cmp2),y sta (cmp1),y pla sta (cmp2),y iny - bne L + bne .L inc cmp1+1 dec cmp2+1 dex - bne L + bne .L rts +} ;------------------------------- ; SaveFile1Shot @@ -161,6 +164,7 @@ L lda (cmp1),y ; all registers clobbered ; stack set to next instruction after parameters ;------------------------------- +!zone { SaveFile1Shot pla sta $00 @@ -170,9 +174,9 @@ SaveFile1Shot lda #$0B clc adc $00 - bcc mli_noinc1 + bcc .noinc inx -mli_noinc1 +.noinc tay txa pha @@ -196,7 +200,7 @@ mli_noinc1 lda ($00),y ; hi byte of aux file type sta mliparam+6 jsr CreateFile - bcs savefile1s + bcs .savefile1s ldy #$0A lda ($00),y ; lo byte of ProDOS file buffer @@ -205,7 +209,7 @@ mli_noinc1 lda ($00),y ; hi byte of ProDOS file buffer sta mliparam+4 jsr OpenFile - bcs savefile1s + bcs .savefile1s pha ; push file reference number ldy #$06 @@ -230,8 +234,9 @@ mli_noinc1 ; (so caller gets codes from write attempt, ; not close) -savefile1s +.savefile1s rts +} ;------------------------------- ; LoadFile1Shot @@ -251,6 +256,7 @@ savefile1s ; all registers clobbered ; stack set to next instruction after parameters ;------------------------------- +!zone { LoadFile1Shot pla sta $00 @@ -260,9 +266,9 @@ LoadFile1Shot lda #$08 clc adc $00 - bcc mli_noinc2 + bcc .noinc inx -mli_noinc2 +.noinc tay txa pha @@ -283,7 +289,7 @@ mli_noinc2 sta mliparam+4 jsr OpenFile - bcs loadfile1s ; C set on error + bcs .loadfile1s ; C set on error pha ; push file reference number ldy #$03 @@ -307,8 +313,9 @@ mli_noinc2 plp ; restore flags from readfile ; (so caller gets codes from read attempt, ; not close) -loadfile1s +.loadfile1s rts +} ;------------------------------- ; open file via ProDOS MLI @@ -321,16 +328,18 @@ loadfile1s ; if C clear, open succeeded and A contains ; file reference number ;------------------------------- +!zone { OpenFile lda #CMD_OPEN ; MLI command ldy #PC_OPEN ; number of parameters for 'open' command jsr mli - bcs openfile + bcs .openfile lda refnum ; caller should save file reference number ; as this memory location may be ; overwritten by later MLI calls -openfile +.openfile rts +} ;------------------------------- ; set line-by-line mode via ProDOS MLI @@ -343,6 +352,7 @@ openfile lbl_mask = $7F lbl_cr = $0D +!zone { SetLineByLine sta mliparam+1 ; store file reference number lda #lbl_mask ; accept high bit set or clear @@ -352,10 +362,11 @@ SetLineByLine lda #CMD_NEWLINE ; MLI 'newline' command to set read mode ldy #PC_NEWLINE ; number of parameters for 'newline' command jsr mli - bcs setlinebylin + bcs .setlinebylin lda mliparam+1 ; if no error, return file reference number -setlinebylin +.setlinebylin rts +} ;------------------------------- ; read an open file via ProDOS MLI @@ -367,15 +378,17 @@ setlinebylin ; if C clear, read succeeded and A contains the same ; file reference number that was passed in ;------------------------------- +!zone { ReadFile sta mliparam+1 ; store file reference number lda #CMD_READ ; MLI read command ldy #PC_READ ; number of parameters for 'read' command jsr mli - bcs readfile + bcs .readfile lda mliparam+1 ; if no error, return file reference number -readfile +.readfile rts +} ;------------------------------- ; change file position in an open file via ProDOS MLI @@ -387,14 +400,16 @@ readfile ; if C clear, set_mark call succeeded and A contains ; the same file reference number that was passed in ;------------------------------- +!zone { SetMark sta mliparam+1 ; store file reference number lda #CMD_SETMARK ; MLI set_mark command ldy #PC_SETMARK ; number of params for 'set_mark' cmd jsr mli - bcs mli_exit + bcs .exit lda mliparam+1 ; if no error, return file refnum -mli_exit rts +.exit rts +} ;------------------------------- ; write to an open file via ProDOS MLI @@ -406,15 +421,17 @@ mli_exit rts ; if C clear, write succeeded and A contains the same ; file reference number that was passed in ;------------------------------- +!zone { WriteFile sta mliparam+1 ; store file reference number lda #CMD_WRITE ; MLI write command ldy #PC_WRITE ; number of parameters for 'write' command jsr mli - bcs writefile + bcs .writefile lda mliparam+1 ; if no error, return file reference number -writefile +.writefile rts +} ;------------------------------- ; close an open file diff --git a/src/modify.a b/src/modify.a index 6d56bd5..0ac38fa 100755 --- a/src/modify.a +++ b/src/modify.a @@ -13,6 +13,7 @@ ; all registers clobbered ; all flags clobbered ;------------------------------- +!zone { modify sta gDisplayBytes clc @@ -28,9 +29,9 @@ modify tya clc adc modsrc - bcc noinc + bcc .noinc inx -noinc +.noinc sta tmp txa pha @@ -38,36 +39,37 @@ noinc pha sty modtmp bit gMode - bpl exitnomod ; verify mode -> no modify - bvc exitnomod ; demuffin mode -> no modify + bpl .exitnomod ; verify mode -> no modify + bvc .exitnomod ; demuffin mode -> no modify lda #s_modify jsr PrintByID ldy #0 -dest +.dest lda (moddest),y jsr PrintByte iny cpy modtmp - bne dest + bne .dest lda #s_modifyto jsr PrintByID ldy #0 -src +.src iny lda (modsrc),y jsr PrintByte cpy modtmp - bne src + bne .src lda #$8D jsr PrintA -mod +.mod lda (modsrc),y dey - bmi modify_exit + bmi .exit sta (moddest),y clv - bvc mod ; unconditional branch -modify_exit + bvc .mod ; unconditional branch +.exit inc gPatchCount -exitnomod +.exitnomod rts +} diff --git a/src/passport.a b/src/passport.a index 2281b8c..27dd6f7 100755 --- a/src/passport.a +++ b/src/passport.a @@ -113,7 +113,7 @@ FM lda $2000,x jmp OneTimeSetup !pseudopc *+$4800 { - +!zone ; use localized strings based on current language !if LANG=ENGLISH { @@ -159,15 +159,15 @@ OneTimeSetup jsr SaveProDOS ldx MACHINEID cpx #$EA - bne slotscan + bne .slotscan lda #$DF sta kForceLower -slotscan +.slotscan jsr ScanForDiskII lda DiskIIArray+5 - bne founds6 + bne .founds6 jmp FatalNoSlot6 -founds6 +.founds6 jsr LoadPrefs ; load preferences (if available) bcc ResetVector jsr SavePrefs ; save preferences (if possible) @@ -195,13 +195,13 @@ MainMenu jsr PrintByID lda #s_mainmenu jsr PrintByID -:getkey +.getkey jsr WaitForKey cmp #$9B - beq jmptoexit + beq .jmptoexit cmp #k_quit bne + -jmptoexit +.jmptoexit jmp CleanExit + cmp #k_slot @@ -222,7 +222,7 @@ jmptoexit bne Action ; unconditional branch + cmp #k_crack - bne getkey + bne .getkey lda #%11000000 ; note: execution falls through here @@ -264,9 +264,9 @@ Action ldy #gRWTSParams ; if T00,S00 is readable jsr $BD00 ; (only care about the return code) - bcs fatalt00s00 - jmp checkt00s00 -:fatalt00s00 + bcs .fatalt00s00 + jmp .checkt00s00 +.fatalt00s00 lda #$F0 sta $B959 lda #$05 @@ -274,7 +274,7 @@ Action ldy #gRWTSParams jsr $BD00 - bcs reallyfatal + bcs .reallyfatal ; ; Bad emulator detected (disk controller presents nibbles ; immediately instead of based on cycle count). Patch the @@ -284,14 +284,14 @@ Action sta _B959 lda #$05 sta _B95A - bne checkt00s00 ; unconditional branch -reallyfatal + bne .checkt00s00 ; unconditional branch +.reallyfatal lda #s_fail jsr PrintByID lda #s_fatal0000 jsr PrintByID jmp TheEnd -checkt00s00 +.checkt00s00 jmp CheckT00S00 ; /src/id/inspect0 @@ -315,20 +315,20 @@ ADStyle ; before we start. ; jsr xHeredityDog - bcs noDog + bcs .noDog lda #s_bb00 jsr PrintByID -noDog +.noDog jsr xSunburst - bcs noSun + bcs .noSun lda #s_sunburst jsr PrintByID -noSun +.noSun jsr xOptimumRes - bcs noOptimum + bcs .noOptimum lda #s_optimum jsr PrintByID -noOptimum +.noOptimum jsr xB660 jsr xB4BB jmp ReadWithRWTS @@ -348,7 +348,7 @@ ReadWithRWTS sta checksector+1 lda #>T22S0F sta checksector+2 -read +.read lda KEY bpl checksector jmp Cancel @@ -372,7 +372,7 @@ checksector ; on markers in the bootloader. ; cmp #$80 - beq optional + beq .optional ; ; If we're in the middle of a track, try switching to the ; universal RWTS and see if that helps. (Many disks contain @@ -382,7 +382,7 @@ checksector ; lda gSector cmp #$0F - bne tryuniversal + bne .tryuniversal ; ; We just got to this track, so check for a variety ; of whole-track conditions @@ -390,52 +390,52 @@ checksector ; 1) unformatted track ; jsr IsUnformatted - bcs checkf7 + bcs .checkf7 lda #s_unformat jsr PrintByID - jmp skiptrack + jmp .skiptrack ; ; 2) $F7 protection track (F7F6EFEAAB nibble sequence) ; -checkf7 +.checkf7 jsr IsF7 - bcs checksync + bcs .checksync lda #s_f7 jsr PrintByID - jmp skiptrack + jmp .skiptrack ; ; 3) nibble count track (mostly $FF sync bytes) ; -:checksync +.checksync jsr IsSyncBytes - bcs tryuniversal + bcs .tryuniversal lda #s_sync jsr PrintByID ; note: execution falls through here -skiptrack +.skiptrack lda #$00 ; skip rest of track jsr ChangeSector lda checksector+1 sec sbc #$0F sta checksector+1 - bcs notrackdec + bcs .notrackdec dec checksector+2 -notrackdec +.notrackdec jmp nextsector -:tryuniversal +.tryuniversal lda gTriedUniv ; have we tried the universal RWTS? - beq fatal ; yes, so read error is fatal + beq .fatal ; yes, so read error is fatal jsr SwitchToUniv ; no, switch it in now - jmp read ; and re-read this sector + jmp .read ; and re-read this sector -fatal pla ; if we get to here, we've +.fatal pla ; if we get to here, we've jmp FatalError ; decided the read error is fatal -optional +.optional lda #s_optbad ; say we're skipping this jsr PrintByID ; optional sector @@ -446,17 +446,17 @@ nextsector dec checksector+1 lda checksector+1 cmp #$FF - bne nodec + bne .nodec dec checksector+2 -nodec +.nodec lda gSector sec sbc #$01 jsr ChangeSector lda gSector - bmi prevtrack - jmp read -prevtrack + bmi .prevtrack + jmp .read +.prevtrack lda #$0F jsr ChangeSector lda gTrack @@ -465,27 +465,27 @@ prevtrack jsr ChangeTrack jsr IncProgress lda gTrack - bmi pass + bmi .pass cmp gLastTrack - bcc pass - jmp read -pass + bcc .pass + jmp .read +.pass bit gMode - bmi passwrite + bmi .passwrite lda #s_pass - bne passprint ; always branches -passwrite - bvs ppasscrack + bne .passprint ; always branches +.passwrite + bvs .passcrack lda #s_passdemuf - bne passprint ; always branches -ppasscrack + bne .passprint ; always branches +.passcrack lda gPatchCount - beq ppasscrack0 + beq .passcrack0 lda #s_passcrack !byte $2C ; hide next LDA -ppasscrack0 +.passcrack0 lda #s_passcrack0 -passprint +.passprint jsr PrintByID jmp TheEnd @@ -523,14 +523,14 @@ FatalError jsr PrintByID lda gTrack cmp #$22 - beq failont22 + beq .failont22 jmp TheEnd -failont22 +.failont22 lda gSector cmp #$0F - beq failont22s0f + beq .failont22s0f jmp TheEnd -failont22s0f +.failont22s0f lda #s_fatal220f jsr PrintByID @@ -548,14 +548,14 @@ TheEnd CleanExit jsr SwapProDOS lda gChangedPrefs - bne doquit + bne .doquit jsr SavePrefs -doquit +.doquit jsr MLI !byte $65 - !word quitparm -quitparm - !byte 04,00,00,00,00,00,00 + !word .quitparm +.quitparm + !byte $04,$00,$00,$00,$00,$00,$00 FatalNoSlot6 lda #s_noslot6 @@ -589,32 +589,32 @@ WriteTrack WriteTrackNA ; entry point used by Special Delivery tracer ; to write track with "N"o "A"nalysis bit gMode - bpl pdone ; verify mode -> no write + bpl .done ; verify mode -> no write lda gSaidWriting - beq write + beq .write lda #s_writing ; only print "writing to" message once jsr PrintByID lda #TRUE sta gSaidWriting -write +.write jsr WriteTrackMLI - bcc pdone + bcc .done sta gDisplayBytes ; for use in error messages, if any cmp #MLI_IOERR - beq ioerr + beq .ioerr cmp #MLI_NODEV - beq nodev + beq .nodev cmp #MLI_WRITEPROT - beq pwriteprot + beq .writeprot lda #s_othermli !byte $2C ; hide next LDA -ioerr +.ioerr lda #s_writeioerr !byte $2C ; hide next LDA -nodev +.nodev lda #s_writenodev !byte $2C ; hide next LDA -pwriteprot +.writeprot lda #s_writeprot pha lda #s_writeerr @@ -622,7 +622,7 @@ pwriteprot pla jsr PrintByID jmp TheEnd -pdone +.done rts ;------------------------------- @@ -698,6 +698,7 @@ _applyToT00 !source "patchers/nibtable.a" !source "patchers/diskvol.a" !source "patchers/c9ff.a" + !source "patchers/fbff.a" _applyToAll !source "patchers/universale7.a" !source "patchers/runhello.a" @@ -710,10 +711,10 @@ _applyToAll !source "patchers/protecteddos.a" lda gPatchCount - beq nopatches + beq .nopatches clc !byte $24 ; hide next SEC -nopatches +.nopatches sec ; set carry if nothing happened rts diff --git a/src/patchers/a5count.a b/src/patchers/a5count.a index bec5fee..b63d8da 100644 --- a/src/patchers/a5count.a +++ b/src/patchers/a5count.a @@ -4,15 +4,16 @@ ; address prologue ; e.g. Game Frame One, Game Frame Two ;------------------------------- +!zone { _a5count lda gIsPascal ; only ever seen this protection - bne a5count_exit ; on Pascal disks + bne .exit ; on Pascal disks ldy #$0A jsr SearchTrack !byte $07,$E6,$02,$D0,$03,$4C,$A5,$00 !byte $C9,$A5 - bcs a5count_exit + bcs .exit sta gDisplayBytes pha lda #s_a5count @@ -25,4 +26,5 @@ _a5count ldy #$02 jsr modify !byte $D0,$7B -a5count_exit +.exit +} diff --git a/src/patchers/a6bc95.a b/src/patchers/a6bc95.a index 1575b38..89dfc76 100755 --- a/src/patchers/a6bc95.a +++ b/src/patchers/a6bc95.a @@ -3,30 +3,31 @@ ; nibble count after "A6 BC 95" prologue ; e.g. The Secrets of Science Island ;------------------------------- +!zone { _a6bc95 lda gIsPascal ; only ever seen this protection - bne a6bc95_exit ; on Pascal disks + bne .exit ; on Pascal disks ldy #$09 jsr SearchTrack !byte $BD,$8C,$C0,$10,$FB,$C9,$A6,$D0 !byte $ED - bcs a6bc95_exit + bcs .exit ldy #$09 jsr SearchTrack !byte $BD,$8C,$C0,$10,$FB,$C9,$BC,$D0 !byte $E4 - bcs a6bc95_exit + bcs .exit ldy #$09 jsr SearchTrack !byte $BD,$8C,$C0,$10,$FB,$C9,$95,$D0 !byte $DB - bcs a6bc95_exit + bcs .exit ldy #$0E jsr SearchTrack !byte $AE,$F8,$01,$A9,$0A,$8D,$FE,$01 !byte $BD,$8E,$C0,$BD,$89,$C0 - bcs a6bc95_exit + bcs .exit sta gDisplayBytes pha lda #s_a6bc95 @@ -35,4 +36,5 @@ _a6bc95 ldy #$01 jsr modify !byte $60 -a6bc95_exit +.exit +} diff --git a/src/patchers/bademu.a b/src/patchers/bademu.a index f785972..a3800b5 100755 --- a/src/patchers/bademu.a +++ b/src/patchers/bademu.a @@ -8,9 +8,10 @@ ; so we patch it for compatibility ; e.g. Dino Dig, Make A Face ;------------------------------- +!zone { _bademu lda gIsRWTS ; if DOS 3.3 RWTS - bne bademu_exit + bne .exit lda #$03 ldx #$4F ldy #$11 @@ -18,10 +19,11 @@ _bademu !byte $BD,$8C,$C0,$10,$FB,$C9,$D5,$D0 !byte $F0,$EA,$BD,$8C,$C0,$C9,$D5,$F0 !byte $12 - bcs bademu_exit + bcs .exit lda #$03 ldx #$58 ldy #$02 jsr modify ; and set T00,S03,$58 = !byte $F0,06 -bademu_exit +.exit +} diff --git a/src/patchers/bademu2.a b/src/patchers/bademu2.a index 8e91092..815b398 100755 --- a/src/patchers/bademu2.a +++ b/src/patchers/bademu2.a @@ -8,9 +8,10 @@ ; so we patch it for compatibility ; e.g. Dinosaur Days ;------------------------------- +!zone { _bademu2 lda gIsRWTS ; if DOS 3.3 RWTS - bne bademu2_exit + bne .exit lda #$03 ldx #$4F ldy #$11 @@ -18,10 +19,11 @@ _bademu2 !byte $BD,$8C,$C0,$10,$FB,$4A,$C9,$6A !byte $D0,$EF,$BD,$8C,$C0,$C9,$D5,$F0 !byte $12 - bcs bademu2_exit + bcs .exit lda #$03 ldx #$59 ldy #$02 jsr modify ; and set T00,S03,$59 = - !byte $F0,05 -bademu2_exit + !byte $F0,$05 +.exit +} diff --git a/src/patchers/border.a b/src/patchers/border.a index ccb8704..9d30112 100644 --- a/src/patchers/border.a +++ b/src/patchers/border.a @@ -6,17 +6,18 @@ ; e.g. Arena, Early Bird by ; Border Software ;------------------------------- +!zone { _border lda gIsBoot0 ; if DOS 3.3 boot0 loader - bne border_exit + bne .exit lda gIsBoot1 ; and DOS 3.3 boot1 loader - bne border_exit + bne .exit lda #$08 ldx #$5A ldy #$0A jsr compare ; and T00,S08,$5A == !byte $C9,$23,$B0,$EB,$0A,$20,$6C,$BF,$EA,$EA - bcs border_exit + bcs .exit sta gDisplayBytes pha lda #s_bytrack @@ -25,4 +26,5 @@ _border ldy #$0A jsr modify ; then set T00,S08,$5A = !byte $48,$A0,$01,$B1,$3C,$6A,$68,$90,$08,$0A -border_exit +.exit +} diff --git a/src/patchers/c9ff.a b/src/patchers/c9ff.a index 1b9d610..907a150 100644 --- a/src/patchers/c9ff.a +++ b/src/patchers/c9ff.a @@ -12,6 +12,7 @@ ; track because there is no fixed ; position for it to start. ;------------------------------- +!zone { _c9ff ldy #$1A jsr SearchTrack @@ -19,7 +20,7 @@ _c9ff !byte $C9,$FF,$D0,$0C,$EA,$BD,$8C,$C0 !byte $10,$FB,$C9,$FF,$D0,$02,$18,$60 !byte $38,$60 - bcs c9ff_exit + bcs .exit sta gDisplayBytes pha txa @@ -40,4 +41,5 @@ _c9ff ldy #$01 jsr modify !byte $AA -c9ff_exit +.exit +} diff --git a/src/patchers/d5d5f7.a b/src/patchers/d5d5f7.a index 8c7900c..5eaec42 100755 --- a/src/patchers/d5d5f7.a +++ b/src/patchers/d5d5f7.a @@ -5,14 +5,15 @@ ; e.g. NoteCard Maker, many Mindplay titles ; (Ace Detective, Robomath, Fraction-oids) ;------------------------------- +!zone { _d5d5f7 ldy #$20 jsr SearchTrack !byte $BD,$8C,$C0,$10,$FB,$48,$68,$C9 - !byte $D5,$D0,$F5,$A0,00,$8C,$97,$97 + !byte $D5,$D0,$F5,$A0,$00,$8C,$97,$97 !byte $BD,$8C,$C0,$10,$FB,$C9,$D5,$F0 - !byte $0F,$C9,$F7,$D0,01,$C8,$18,$6D - bcs d5d5f7_exit + !byte $0F,$C9,$F7,$D0,$01,$C8,$18,$6D + bcs .exit sta gDisplayBytes pha lda #s_d5d5f7 @@ -21,4 +22,5 @@ _d5d5f7 ldy #$01 jsr modify !byte $60 -d5d5f7_exit +.exit +} diff --git a/src/patchers/datasoft.a b/src/patchers/datasoft.a index aad72c1..2425e76 100755 --- a/src/patchers/datasoft.a +++ b/src/patchers/datasoft.a @@ -3,14 +3,15 @@ ; nibble count in encrypted bootloader ; e.g. Video Title Shop, Tomahawk //e ;------------------------------- +!zone { _datasoft lda gIsDatasoft ; only ever seen this protection - bne datasoft_exit ; on Datasoft disks (ID'd earlier) + bne .exit ; on Datasoft disks (ID'd earlier) ldy #$06 jsr SearchTrack !byte $5D,$D4,$80,$49,00,$19 - bcs datasoft_exit + bcs .exit sta gDisplayBytes pha lda #s_datasoft @@ -19,4 +20,5 @@ _datasoft ldy #$01 jsr modify !byte $C0 -datasoft_exit +.exit +} diff --git a/src/patchers/davidbb03.a b/src/patchers/davidbb03.a index 4a0afb5..a363008 100755 --- a/src/patchers/davidbb03.a +++ b/src/patchers/davidbb03.a @@ -9,41 +9,43 @@ ; Chick, Mrs. Wigglesworth's Secret ; Mystery of the Witch's Shoes ;------------------------------- +!zone { _davidbb03 lda #$00 ldx #$00 ldy #$38 jsr compare ; and T00,S00,$00 == - !byte 01,$A5,$27,$C9,09,$D0,$17,$A5 - !byte $2B,$4A,$4A,$4A,$4A,$AA,09,$C0 - !byte $85,$3F,$A9,00,$9D,$78,04,$9D - !byte $F8,04,$A9,$5C,$85,$3E,$AE,$FF - !byte 08,$30,$15,$BD,$ED,08,$85,$3D - !byte $CE,$FF,08,$AD,$FE,08,$85,$27 - !byte $CE,$FE,08,$A6,$2B,$6C,$3E,00 - bcs davidbb03_exit + !byte $01,$A5,$27,$C9,$09,$D0,$17,$A5 + !byte $2B,$4A,$4A,$4A,$4A,$AA,$09,$C0 + !byte $85,$3F,$A9,$00,$9D,$78,$04,$9D + !byte $F8,$04,$A9,$5C,$85,$3E,$AE,$FF + !byte $08,$30,$15,$BD,$ED,$08,$85,$3D + !byte $CE,$FF,$08,$AD,$FE,$08,$85,$27 + !byte $CE,$FE,$08,$A6,$2B,$6C,$3E,$00 + bcs .exit lda #$00 ldx #$8B ldy #$03 jsr compare ; and T00,S00,$8B == !byte $20,03,$BB - bcs davidbb03_exit + bcs .exit lda #$07 ldx #$03 ldy #$25 jsr compare ; and T00,S07,$03 == - !byte $4E,06,$BB,$71,$6E + !byte $4E,$06,$BB,$71,$6E !byte $0A,$BB,$40,$27,$6E,$0F,$BB,$DD !byte $1B,$BB,$6E,$15,$BB,$DC,$1E,$BB - !byte $6E,$25,$BB,$72,00,$BB,$B3,00 - !byte $B8,$99,00,$BB,$C8,$A0,$F4,$B0 - bcs davidbb03_exit + !byte $6E,$25,$BB,$72,$00,$BB,$B3,$00 + !byte $B8,$99,$00,$BB,$C8,$A0,$F4,$B0 + bcs .exit lda #s_jsrbb03 jsr PrintByID lda #$07 ldx #$03 ldy #$0B jsr modify ; then set T00,S07,$03 = - !byte $A9,$B5,$48,$A9,$18,$48,$A0,04 + !byte $A9,$B5,$48,$A9,$18,$48,$A0,$04 !byte $4C,$A9,$B7 -davidbb03_exit +.exit +} diff --git a/src/patchers/diskvol.a b/src/patchers/diskvol.a index 4b3b1f9..5122646 100755 --- a/src/patchers/diskvol.a +++ b/src/patchers/diskvol.a @@ -3,44 +3,46 @@ ; non-standard disk volume prevents ; DOS from loading ;------------------------------- +!zone { _diskvol lda gIsRWTS ; if DOS 3.3 RWTS - bne diskvol_exit + bne .exit lda #$01 ldx #$EE ldy #$01 jsr compare ; and T00,S01,$EE == !byte $FB - bcs diskvol_exit + bcs .exit lda #$01 ldx #$FB ldy #$04 jsr compare ; and T00,S01,$FB == - !byte 00,01,$EF,$D8 - bcs diskvol_exit + !byte $00,$01,$EF,$D8 + bcs .exit lda #$08 ldx #$10 ldy #$05 jsr compare ; and T00,S08,$10 == - !byte $A0,03,$B1,$48,$48 - bcs diskvol_exit + !byte $A0,$03,$B1,$48,$48 + bcs .exit lda #$01 ldx #$EB ldy #$01 jsr compare ; and T00,S01,$EB != !byte $FE - bcc diskvol_exit + bcc .exit lda #$01 ldx #$EB ldy #$01 jsr compare ; and T00,S01,$EB != - !byte 00 - bcc diskvol_exit + !byte $00 + bcc .exit lda #s_diskvol jsr PrintByID lda #$08 ldx #$12 ldy #$02 jsr modify ; then set T00,S08,$12 = - !byte $A9,00 -diskvol_exit + !byte $A9,$00 +.exit +} diff --git a/src/patchers/fbff.a b/src/patchers/fbff.a index 612e7cc..577189d 100755 --- a/src/patchers/fbff.a +++ b/src/patchers/fbff.a @@ -1 +1,34 @@ -ª­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ª £ÆÂÆƪ ãïííïî ðòïôåãôéïî ãèåãë ôèáôª ìïïëó æïò Æ ÆÆ ÆÆ ÆÆ ÆÆ îéââìåª óåñõåîãå ÷éôè á óðåãéæéã ðáôôåòîª ïæ ôéíéîç âéôó éî âåô÷åå­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ßæâææ ìäù  £¤³³ êóò  ÓåáòãèÔòáãë ÈÅØ ÂøÃð±°ÆÂðÆÂÄ° ÈÅØ ÅÄÆ°°°ÅÁÅÁÂøÃð ÈÅؠ𰸲Á°°ÂÂøÃð ÈÅØ ±°ÆÂðÆÆİĸưÅ ÈÅØ ÂøÃð±°Æ¸´¹·Ã¹ ÈÅØ °ÁÄ°ÃÂÂĸÃð±°Æ ÈÅØ ³¸²Á²µ âãó  ºåøéô óôá çÄéóðìáùÂùôåó óôᠺ᫱ óôø ºø«± ìäá £óßæâææ êóò ÐòéîôÂùÉÄ ìäá £¤°´ óôá ºãïõîô«±ºãïõîô ìäø £¤ÆÆ » íïäéæéåä áô òõîôéíå âíé ºåøéô ìäá ºçáð¬ø ãìã áäã ºø«± óôá ºø«± âãã º° éî㠺᫱º° ìäá ºöáìõå¬ø óôá ºíïäöáìºá ìäá £¤ÆÆ » íïäéæéåä áô òõîôéíåºø ìäø £¤ÆÆ » íïäéæéåä áô òõîôéíå ìäù £¤°± êóò íïäéæùºíïäöáì ÈÅØ ÆÆ » íïäéæéåä áô òõîôéíå äåã ºãïõîô«± êíð ºãïõîôºçáð ÈÅØ °±°¹±·°Ã°¶ºöáìõå ÈÅØ ÆÆÁ¹²´³¸Äµºåøéô \ No newline at end of file +;------------------------------- +; #FBFF +; Activision's Timing Bit Detection: +; FB+FF FF+FF FF+FD FF+FF+FF+FF+FF+FF+FF+FF+FF+ and +; DE AA EB+FF+FF+FF+FF+FF+FF D5 AA +; Magic key is #FF, usually EOR'ed with #$AA but not always +; As found on Aliens, Maniac Mansion + 22 other titles +; +; Module by Brian Troha +;------------------------------- +!zone { +_fbff + ldy #$45 + jsr SearchTrack + !byte $BD,$89,$C0,$A9,$56,$85,$FD,$A9 + !byte $08,$C6,$FC,$D0,$04,$C6,$FD,$F0 + !byte $34,$BC,$8C,$C0,$10,$FB,$C0,$FB + !byte $D0,$ED,$F0,$00,$EA,$EA,$BC,$8C + !byte $C0,$C0,$08,$2A,$B0,$0B,$BC,$8C + !byte $C0,$10,$FB,$C0,$FF,$D0,$D8,$F0 + !byte $EB,$BC,$8C,$C0,$10,$FB,$84,$FC + !byte $C9,$0A,$D0,$CB,$BD,$8C,$C0,$10 + !byte $FB,$38,$2A,$25,$FC + bcs .exit + sta gDisplayBytes + pha + lda #s_fbff + jsr PrintByID + pla + ldy #$05 + jsr modify + !byte $A9,$FF,$18,$90,$40 +.exit +} diff --git a/src/patchers/jmpae8e.a b/src/patchers/jmpae8e.a index 475f0e5..58a8734 100755 --- a/src/patchers/jmpae8e.a +++ b/src/patchers/jmpae8e.a @@ -4,17 +4,18 @@ ; for a nibble check ; e.g. Alien Addition ;------------------------------- +!zone { _jmpae8e lda gIsBoot0 ; if DOS 3.3 boot0 loader - bne jmpae8e_exit + bne .exit lda gIsBoot1 ; and DOS 3.3 boot1 loader - bne jmpae8e_exit + bne .exit lda #$0D ldx #$4D ldy #$03 jsr compare ; and T00,S0D,$4D == !byte $4C,$8E,$AE - bcs jmpae8e_exit + bcs .exit lda #s_jmpae8e jsr PrintByID lda #$0D @@ -22,4 +23,5 @@ _jmpae8e ldy #$02 jsr modify ; then set T00,S0D,$4E = !byte $80,$A1 -jmpae8e_exit +.exit +} diff --git a/src/patchers/jmpb400.a b/src/patchers/jmpb400.a index 7a3ab1e..aeeb72b 100755 --- a/src/patchers/jmpb400.a +++ b/src/patchers/jmpb400.a @@ -4,18 +4,19 @@ ; $B400 instead of $9D84 ; e.g. Decimal Discovery ;------------------------------- +!zone { _jmpb400 lda gIsBoot0 ; if DOS 3.3 boot0 loader - bne jmpb400_exit + bne .exit lda gIsBoot1 ; and DOS 3.3 boot1 loader - bne jmpb400_exit + bne .exit lda #$01 sta gDisplayBytes ldx #$47 ldy #$03 jsr compare ; and T00,S01,$47 == - !byte $4C,00,$B4 - bcs jmpb400_exit + !byte $4C,$00,$B4 + bcs .exit lda #s_jmpb400 jsr PrintByID lda #$01 @@ -23,4 +24,5 @@ _jmpb400 ldy #$02 jsr modify ; then set T00,S01,$48 = !byte $84,$9D -jmpb400_exit +.exit +} diff --git a/src/patchers/jmpb4bb.a b/src/patchers/jmpb4bb.a index 754f691..2275032 100755 --- a/src/patchers/jmpb4bb.a +++ b/src/patchers/jmpb4bb.a @@ -4,16 +4,17 @@ ; nibble check ; e.g. Troll's Tale ;------------------------------- -_jmpb4bb +!zone { +jmpb4bb lda gIsMaster ; if DOS 3.3 lomem bootloader - bne jmpb4bb_exit + bne .exit lda #$0C sta gDisplayBytes ldx #$84 ldy #$03 jsr compare ; and T00,S0C,$84 == !byte $4C,$BB,$B4 - bcs jmpb4bb_exit + bcs .exit lda #s_jmpb4bb lda #$0C ldx #$84 @@ -30,10 +31,11 @@ _jmpb4bb ldy #$03 jsr compare ; if T00,S0D,$BA == !byte $4C,$0B,$37 - bcs jmpb4bb_exit + bcs .exit lda #$0D ldx #$BA ldy #$03 jsr modify ; then set T00,S0D,$BA = !byte $6C,$38,00 -jmpb4bb_exit +.exit +} diff --git a/src/patchers/jmpb4bbhi.a b/src/patchers/jmpb4bbhi.a index 16b4ee3..e2ea1dd 100755 --- a/src/patchers/jmpb4bbhi.a +++ b/src/patchers/jmpb4bbhi.a @@ -4,16 +4,17 @@ ; nibble check ; e.g. Snooper Troops 2 ;------------------------------- +!zone { _jmpb4bbhi lda gIsBoot1 ; if DOS 3.3 bootloader - bne jmpb4bbhi_exit + bne .exit lda #$0C sta gDisplayBytes ldx #$84 ldy #$03 jsr compare ; and T00,S0C,$84 == !byte $4C,$BB,$B4 - bcs jmpb4bbhi_exit + bcs .exit lda #s_jmpb4bb jsr PrintByID lda #$0C @@ -21,4 +22,5 @@ _jmpb4bbhi ldy #$03 jsr modify ; then set T00,S0C,$84 = !byte $AD,$E9,$B7 -jmpb4bbhi_exit +.exit +} diff --git a/src/patchers/jmpb660.a b/src/patchers/jmpb660.a index 6e03615..3eeba0d 100755 --- a/src/patchers/jmpb660.a +++ b/src/patchers/jmpb660.a @@ -4,9 +4,10 @@ ; checking third data prologue ; e.g. Analogies Tutorial, Verb Viper ;------------------------------- +!zone { _jmpb660 lda gIsRWTS ; if DOS 3.3-shaped RWTS - bne jmpb660_exit + bne .exit lda #$02 ldx #$DC ldy #$1D @@ -15,7 +16,7 @@ _jmpb660 !byte $10,$FB,$49,$97,$D0,$F4,$EA,$BD !byte $8C,$C0,$10,$FB,$C9,$97,$D0,$F2 !byte $A0,$56,$4C,$60,$B6 - bcs jmpb660_exit + bcs .exit lda #s_jmpb660 jsr PrintByID lda #$02 @@ -23,4 +24,5 @@ _jmpb660 ldy #$03 jsr modify ; then set T00,S02,$F6 = !byte $BD,$8C,$C0 -jmpb660_exit +.exit +} diff --git a/src/patchers/jmpb720.a b/src/patchers/jmpb720.a index b182c38..0fb6c87 100755 --- a/src/patchers/jmpb720.a +++ b/src/patchers/jmpb720.a @@ -5,20 +5,22 @@ ; third data prologue ; e.g. Analogies Tutorial, Verb Viper ;------------------------------- +!zone { _jmpb720 lda gIsRWTS ; if DOS 3.3-shaped RWTS - bne jmpb720_exit + bne .exit lda #$0B ldx #$08 ldy #$18 jsr compare ; and T00,S0B,$08 == - !byte $4C,$20,$B7,$4C,$0E,$A9,$A2,02 - !byte $BD,$0B,$B7,$9D,$5E,$B8,$BD,08 + !byte $4C,$20,$B7,$4C,$0E,$A9,$A2,$02 + !byte $BD,$0B,$B7,$9D,$5E,$B8,$BD,$08 !byte $B7,$9D,$F6,$B8,$CA,$10,$F1,$60 - bcs jmpb720_exit + bcs .exit lda #$0B ldx #$08 ldy #$06 jsr modify ; then set T00,S0B,$08 = !byte $BD,$8C,$C0,$20,$B8,$B8 -jmpb720_exit +.exit +} diff --git a/src/patchers/jmpbbfe.a b/src/patchers/jmpbbfe.a index 934e605..ba033ed 100755 --- a/src/patchers/jmpbbfe.a +++ b/src/patchers/jmpbbfe.a @@ -4,18 +4,20 @@ ; ($BBFE) instead of ($08FD) ; e.g. Mind Over Matter ;------------------------------- +!zone { _jmpbbfe lda gIsBoot0 ; if DOS 3.3 boot0 loader - bne jmpbbfe_exit + bne .exit lda #$00 ldx #$4A ldy #$03 jsr compare ; and T00,S00,$4A == !byte $6C,$FE,$BB - bcs jmpbbfe_exit + bcs .exit lda #$00 ldx #$4B ldy #$02 jsr modify ; then set T00,S00,$4B = !byte $FD,08 -jmpbbfe_exit +.exit +} diff --git a/src/patchers/jmpbcf0.a b/src/patchers/jmpbcf0.a index 08a90a8..d2a04e7 100755 --- a/src/patchers/jmpbcf0.a +++ b/src/patchers/jmpbcf0.a @@ -6,15 +6,16 @@ ; NOTE: must be run before RWTS ; patchers due to overlapping bytes ;------------------------------- +!zone { _jmpbcf0 lda gIsRWTS ; if DOS 3.3 RWTS - bne jmpbcf0_exit + bne .exit lda #$03 ldx #$94 ldy #$08 jsr compare ; and T00,S03,$94 == !byte $DD,$8C,$C0,$D0,$A9,$4C,$F0,$BC - bcs jmpbcf0_exit + bcs .exit lda #s_jmpbcf0 jsr PrintByID lda #$03 @@ -22,4 +23,5 @@ _jmpbcf0 ldy #$08 jsr modify ; then set T00,S03,$94 = !byte $EA,$BD,$8C,$C0,$10,$FB,$C9,$AA -jmpbcf0_exit +.exit +} diff --git a/src/patchers/jmpbeb1.a b/src/patchers/jmpbeb1.a index 1b93c5b..40098d9 100755 --- a/src/patchers/jmpbeb1.a +++ b/src/patchers/jmpbeb1.a @@ -6,33 +6,34 @@ ; NOTE: must be run before RWTS ; patchers due to overlapping bytes ;------------------------------- +!zone { _jmpbeb1 lda gIsRWTS ; if DOS 3.3 RWTS - bne jmpbeb1_exit + bne .exit lda #$02 ldx #$48 ldy #$10 jsr compare ; and T00,S03,$48 == - !byte $A0,03,$48,$68,$20,$B9,$B8,$88 + !byte $A0,$03,$48,$68,$20,$B9,$B8,$88 !byte $D0,$F8,$4C,$B1,$BE,$EA,$EA,$A9 - bcs jmpbeb1_exit + bcs .exit lda #$02 ldx #$59 ldy #$04 jsr compare ; and T00,S02,$59 == !byte $20,$B8,$B8,$A9 - bcs jmpbeb1_exit + bcs .exit lda #$02 ldx #$5E ldy #$03 jsr compare ; and T00,S04,$5E == !byte $20,$BB,$B8 - bcs jmpbeb1_exit + bcs .exit lda #$02 ldx #$49 ldy #$01 jsr modify ; then set T00,S02,$49 = - !byte 04 + !byte $04 lda #$02 ldx #$52 ldy #$05 @@ -43,4 +44,5 @@ _jmpbeb1 ldy #$01 jsr modify ; and set T00,S02,$5F = !byte $B8 -jmpbeb1_exit +.exit +} diff --git a/src/patchers/jmpbeca.a b/src/patchers/jmpbeca.a index 4e5985d..e0893fe 100755 --- a/src/patchers/jmpbeca.a +++ b/src/patchers/jmpbeca.a @@ -6,16 +6,17 @@ ; NOTE: must be run before RWTS ; patchers due to overlapping bytes ;------------------------------- +!zone { _jmpbeca lda gIsRWTS ; if DOS 3.3 RWTS - bne jmpbeca_exit + bne .exit lda #$02 ldx #$F4 ldy #$0D jsr compare ; and T00,S02,$F4 == !byte $EA,$BD,$8C,$C0,$10,$FB,$C9,$AD !byte $D0,$E8,$4C,$CA,$BE - bcs jmpbeca_exit + bcs .exit lda #s_jmpbeca jsr PrintByID lda #$02 @@ -24,4 +25,5 @@ _jmpbeca jsr modify ; and set T00,S02,$F4 = !byte $A0,$56,$BD,$8C,$C0,$10,$FB,$C9 !byte $AD,$D0,$E7,$A9,$00 -jmpbeca_exit +.exit +} diff --git a/src/patchers/jmpbeca2.a b/src/patchers/jmpbeca2.a index 7d40cfc..1685d36 100755 --- a/src/patchers/jmpbeca2.a +++ b/src/patchers/jmpbeca2.a @@ -7,16 +7,17 @@ ; NOTE: must be run before RWTS ; patchers due to overlapping bytes ;------------------------------- +!zone { _jmpbeca2 lda gIsRWTS ; if DOS 3.3 RWTS - bne jmpbeca2_exit + bne .exit lda #$02 ldx #$F4 ldy #$0D jsr compare ; and T00,S02,$F4 == !byte $4C,$CA,$BE,$EA,$BD,$8C,$C0,$10 !byte $FB,$49,$AD,$D0,$DD - bcs jmpbeca2_exit + bcs .exit lda #s_jmpbeca jsr PrintByID lda #$02 @@ -24,5 +25,6 @@ _jmpbeca2 ldy #$0D jsr modify ; and set T00,S02,$F4 = !byte $A0,$56,$BD,$8C,$C0,$10,$FB,$C9 - !byte $AD,$D0,$E7,$A9,00 -jmpbeca2_exit + !byte $AD,$D0,$E7,$A9,$00 +.exit +} diff --git a/src/patchers/jsrbb03.a b/src/patchers/jsrbb03.a index 488f5b9..77be6c2 100755 --- a/src/patchers/jsrbb03.a +++ b/src/patchers/jsrbb03.a @@ -6,27 +6,28 @@ ; e.g. Classifying Animals with ; Backbones, EduCalc ;------------------------------- +!zone { _jsrbb03 lda gIsBoot0 ; if DOS 3.3 boot0 loader - bne jsrbb03_exit + bne .exit lda gIsBoot1 ; and DOS 3.3 boot1 loader - bne jsrbb03_exit + bne .exit lda #$01 ldx #$38 ldy #$03 jsr compare ; and T00,S01,$38 == - !byte $20,03,$BB - bcs jsrbb03_exit + !byte $20,$03,$BB + bcs .exit lda #$05 ldx #$03 ldy #$25 jsr compare ; and T00,S05,$03 == - !byte $4E,06,$BB,$71,$6E + !byte $4E,$06,$BB,$71,$6E !byte $0A,$BB,$40,$27,$6E,$0F,$BB,$DD !byte $1B,$BB,$6E,$15,$BB,$DC,$1E,$BB - !byte $6E,$25,$BB,$72,00,$BB,$B3,00 - !byte $B8,$99,00,$BB,$C8,$A0,$F4,$B0 - bcs jsrbb03_exit + !byte $6E,$25,$BB,$72,$00,$BB,$B3,$00 + !byte $B8,$99,$00,$BB,$C8,$A0,$F4,$B0 + bcs .exit lda #s_jsrbb03 jsr PrintByID lda #$05 @@ -34,4 +35,5 @@ _jsrbb03 ldy #$09 jsr modify ; then set T00,S05,$03 = !byte $A9,$B5,$48,$A9,$18,$48,$4C,$93,$B7 -jsrbb03_exit +.exit +} diff --git a/src/patchers/meccm7.a b/src/patchers/meccm7.a index fd90b6b..447ecc5 100755 --- a/src/patchers/meccm7.a +++ b/src/patchers/meccm7.a @@ -4,123 +4,125 @@ ; address and data prologues ; e.g. Phonics Prime Time series ;------------------------------- +!zone { _meccm7 lda #$00 ldx #$00 ldy #$17 jsr compare ; if T00,S00,$00 == - !byte 01,$4C,$1A,08,$17,$0F,00,00 - !byte $0D,$0B,09,07,05,03,01,$0E - !byte $0C,$0A,08,06,04,02,$0F - bcs meccm7_exit + !byte $01,$4C,$1A,$08,$17,$0F,$00,$00 + !byte $0D,$0B,$09,$07,$05,$03,$01,$0E + !byte $0C,$0A,$08,$06,$04,$02,$0F + bcs .exit lda #$07 ldx #$7D ldy #$06 jsr compare ; and T00,S07,$7D == !byte $BD,$8C,$C0,$10,$FB,$C9 - bcs meccm7_exit + bcs .exit lda #$07 ldx #$84 ldy #$09 jsr compare ; and T00,S07,$84 == !byte $D0,$F0,$EA,$BD,$8C,$C0,$10,$FB,$C9 - bcs meccm7_exit + bcs .exit lda #$07 ldx #$8E ldy #$0A jsr compare ; and T00,S07,$8E == !byte $D0,$F2,$A0,03,$BD,$8C,$C0,$10,$FB,$C9 - bcs meccm7_exit + bcs .exit lda #$07 ldx #$0F ldy #$06 jsr compare ; and T00,S07,$0F == !byte $BD,$8C,$C0,$10,$FB,$49 - bcs meccm7_exit + bcs .exit lda #$07 ldx #$18 ldy #$07 jsr compare ; and T00,S07,$18 == !byte $EA,$BD,$8C,$C0,$10,$FB,$C9 - bcs meccm7_exit + bcs .exit lda #$07 ldx #$20 ldy #$0A jsr compare ; and T00,S07,$20 == !byte $D0,$F2,$A0,$56,$BD,$8C,$C0,$10,$FB,$C9 - bcc meccm7_allclear -meccm7_exit - jmp meccm7_exit2 -meccm7_allclear + bcc .allclear +.exit + jmp .exit2 +.allclear lda #$07 ldx #$83 ldy #$01 jsr compare ; if T00,S07,$83 != !byte $D5 - bcc meccm7_addr2 + bcc .addr2 lda #$07 ldx #$83 ldy #$01 jsr modify ; then set T00,S07,$83 = !byte $D5 -meccm7_addr2 +.addr2 lda #$07 ldx #$8D ldy #$01 jsr compare ; if T00,S07,$8D != !byte $AA - bcc meccm7_addr3 + bcc .addr3 lda #$07 ldx #$8D ldy #$01 jsr modify ; then set T00,S07,$8D = !byte $AA -meccm7_addr3 +.addr3 lda #$07 ldx #$98 ldy #$01 jsr compare ; if T00,S07,$98 != !byte $96 - bcc meccm7_data1 + bcc .data1 lda #$07 ldx #$98 ldy #$01 jsr modify ; then set T00,S07,$98 = !byte $96 -meccm7_data1 +.data1 lda #$07 ldx #$15 ldy #$01 jsr compare ; if T00,S07,$15 != !byte $D5 - bcc meccm7_data2 + bcc .data2 lda #$07 ldx #$15 ldy #$01 jsr modify ; then set T00,S07,$15 = !byte $D5 -meccm7_data2 +.data2 lda #$07 ldx #$1F ldy #$01 jsr compare ; if T00,S07,$1F != !byte $AA - bcc meccm7_data3 + bcc .data3 lda #$07 ldx #$1F ldy #$01 jsr modify ; then set T00,S07,$1F = !byte $AA -meccm7_data3 +.data3 lda #$07 ldx #$2A ldy #$01 jsr compare ; if T00,S07,$2A != !byte $AD - bcc meccm7_exit2 + bcc .exit2 lda #$07 ldx #$2A ldy #$01 jsr modify ; then set T00,S07,$2A = !byte $AD -meccm7_exit2 +.exit2 +} diff --git a/src/patchers/meccm8.a b/src/patchers/meccm8.a index 54d2626..4e6ab0d 100755 --- a/src/patchers/meccm8.a +++ b/src/patchers/meccm8.a @@ -4,127 +4,129 @@ ; address and data prologues ; e.g. Word Munchers ;------------------------------- +!zone { _meccm8 lda #$00 ldx #$00 ldy #$17 jsr compare ; if T00,S00,$00 == - !byte 01,$4C,$1A,08,$17,$0F,00,00 - !byte $0D,$0B,09,07,05,03,01,$0E - !byte $0C,$0A,08,06,04,02,$0F - bcs meccm8_exit + !byte $01,$4C,$1A,$08,$17,$0F,$00,$00 + !byte $0D,$0B,$09,$07,$05,$03,$01,$0E + !byte $0C,$0A,$08,$06,$04,$02,$0F + bcs .exit lda #$0B ldx #$02 ldy #$06 jsr compare ; and T00,S0B,$02 == !byte $BD,$8C,$C0,$10,$FB,$C9 - bcs meccm8_exit + bcs .exit lda #$0B ldx #$09 ldy #$09 jsr compare ; and T00,S0B,$09 == !byte $D0,$EF,$EA,$BD,$8C,$C0,$10,$FB !byte $C9 - bcs meccm8_exit + bcs .exit lda #$0B ldx #$13 ldy #$0A jsr compare ; and T00,S0B,$13 == !byte $D0,$E5,$A0,$03,$BD,$8C,$C0,$10 !byte $FB,$C9 - bcs meccm8_exit + bcs .exit lda #$0B ldx #$89 ldy #$06 jsr compare ; and T00,S0B,$89 == !byte $BD,$8C,$C0,$10,$FB,$C9 - bcs meccm8_exit + bcs .exit lda #$0B ldx #$90 ldy #$09 jsr compare ; and T00,S0B,$90 == !byte $D0,$F4,$EA,$BD,$8C,$C0,$10,$FB !byte $C9 - bcs meccm8_exit + bcs .exit lda #$0B ldx #$9A ldy #$09 jsr compare ; and T00,S0B,$9A == !byte $D0,$F2,$EA,$BD,$8C,$C0,$10,$FB !byte $C9 - bcc meccm8_allclear -meccm8_exit - jmp meccm8_exit2 -meccm8_allclear + bcc .allclear +.exit + jmp .exit2 +.allclear lda #$0B ldx #$08 ldy #$01 jsr compare ; if T00,S0B,$08 != !byte $D5 - bcc meccm8_addr2 + bcc .addr2 lda #$0B ldx #$08 ldy #$01 jsr modify ; then set T00,S0B,$0B = !byte $D5 -meccm8_addr2 +.addr2 lda #$0B ldx #$12 ldy #$01 jsr compare ; if T00,S0B,$12 != !byte $AA - bcc meccm8_addr3 + bcc .addr3 lda #$0B ldx #$12 ldy #$01 jsr modify ; then set T00,S0B,$12 = !byte $AA -meccm8_addr3 +.addr3 lda #$0B ldx #$1D ldy #$01 jsr compare ; if T00,S0B,$1D != !byte $96 - bcc meccm8_data1 + bcc .data1 lda #$0B ldx #$1D ldy #$01 jsr modify ; then set T00,S0B,$1D = !byte $96 -meccm8_data1 +.data1 lda #$0B ldx #$8F ldy #$01 jsr compare ; if T00,S0B,$8F != !byte $D5 - bcc meccm8_data2 + bcc .data2 lda #$0B ldx #$8F ldy #$01 jsr modify ; then set T00,S0B,$8F = !byte $D5 -meccm8_data2 +.data2 lda #$0B ldx #$99 ldy #$01 jsr compare ; if T00,S0B,$99 != !byte $AA - bcc meccm8_data3 + bcc .data3 lda #$0B ldx #$99 ldy #$01 jsr modify ; then set T00,S0B,$99 = !byte $AA -meccm8_data3 +.data3 lda #$0B ldx #$A3 ldy #$01 jsr compare ; if T00,S0B,$A3 != !byte $AD - bcc meccm8_exit2 + bcc .exit2 lda #$0B ldx #$A3 ldy #$01 jsr modify ; then set T00,S0B,$A3 = !byte $AD -meccm8_exit2 +.exit2 +} diff --git a/src/patchers/nibtable.a b/src/patchers/nibtable.a index 6631123..9bf212a 100755 --- a/src/patchers/nibtable.a +++ b/src/patchers/nibtable.a @@ -4,14 +4,15 @@ ; nibble-to-byte translation ; e.g. Travels with Za-Zoom ;------------------------------- +!zone { _nibtable - jmp checkread + jmp .checkread -readdata - !byte 00,01 - !byte $98,$99,02,03,$9C,04,05,06 - !byte $A0,$A1,$A2,$A3,$A4,$A5,07,08 - !byte $A8,$A9,$AA,09,$0A,$0B,$0C,$0D +.readdata + !byte $00,$01 + !byte $98,$99,$02,$03,$9C,$04,$05,$06 + !byte $A0,$A1,$A2,$A3,$A4,$A5,$07,$08 + !byte $A8,$A9,$AA,$09,$0A,$0B,$0C,$0D !byte $B0,$B1,$0E,$0F,$10,$11,$12,$13 !byte $B8,$14,$15,$16,$17,$18,$19,$1A !byte $C0,$C1,$C2,$C3,$C4,$C5,$C6,$C7 @@ -23,7 +24,7 @@ readdata !byte $F0,$F1,$33,$34,$35,$36,$37,$38 !byte $F8,$39,$3A,$3B,$3C,$3D,$3E,$3F -writedata +.writedata !byte $96,$97,$9A,$9B,$9D,$9E,$9F,$A6 !byte $A7,$AB,$AC,$AD,$AE,$AF,$B2,$B3 !byte $B4,$B5,$B6,$B7,$B9,$BA,$BB,$BC @@ -33,104 +34,105 @@ writedata !byte $ED,$EE,$EF,$F2,$F3,$F4,$F5,$F6 !byte $F7,$F9,$FA,$FB,$FC,$FD,$FE,$FF -checkread +.checkread lda gIsRWTS ; if DOS 3.3 RWTS - bne nibtable_exit + bne .exit lda #$02 ldx #$6D ldy #$03 jsr compare ; and T00,S02,$6D == !byte $BD,$29,$BA - bcs checkwrite + bcs .checkwrite lda #$02 ldx #$82 ldy #$03 jsr compare ; and T00,S02,$82 == !byte $BD,$29,$BA - bcs checkwrite + bcs .checkwrite lda #$02 ldx #$95 ldy #$03 jsr compare ; and T00,S02,$95 == !byte $BD,$29,$BA - bcs checkwrite - jsr fixwrite -checkwrite + bcs .checkwrite + jsr .fixwrite +.checkwrite lda #$03 ldx #$09 ldy #$03 jsr compare ; if T00,S03,$09 == - !byte $59,00,$BA - bcs nibtable_exit + !byte $59,$00,$BA + bcs .exit lda #$03 ldx #$1A ldy #$03 jsr compare ; and T00,S03,$1A == - !byte $59,00,$BA - bcs nibtable_exit + !byte $59,$00,$BA + bcs .exit lda #$03 ldx #$2A ldy #$03 jsr compare ; and T00,S03,$2A == - !byte $D9,00,$BA - bcs nibtable_exit - jsr fixread -nibtable_exit - jmp nibtable_exit2 + !byte $D9,$00,$BA + bcs .exit + jsr .fixread +.exit + jmp .exit2 -fixread +.fixread lda #$00 sta nibsrcindex lda #$96 sta nibdestindex -nibtable_read +.read ldx nibsrcindex - lda readdata,x - sta nibcmpr - sta nibmodr + lda .readdata,x + sta .nibcmpr + sta .nibmodr lda #$04 ldx nibdestindex ldy #$01 jsr compare -nibcmpr !byte $FF - bcc nomodr +.nibcmpr !byte $FF + bcc .nomodr lda #$04 ldx nibdestindex ldy #$01 jsr modify -nibmodr !byte $FF -nomodr +.nibmodr !byte $FF +.nomodr inc nibsrcindex inc nibdestindex - bne nibtable_read + bne .read rts -fixwrite +.fixwrite lda #$00 sta nibsrcindex lda #$29 sta nibdestindex -nibtable_write +.write ldx nibsrcindex - lda writedata,x - sta nibcmpw - sta nibmodw + lda .writedata,x + sta .nibcmpw + sta .nibmodw lda #$04 ldx nibdestindex ldy #$01 jsr compare -nibcmpw !byte $FF - bcc nomodw +.nibcmpw !byte $FF + bcc .nomodw lda #$04 ldx nibdestindex ldy #$01 jsr modify -nibmodw !byte $FF -nomodw +.nibmodw !byte $FF +.nomodw inc nibsrcindex inc nibdestindex lda nibsrcindex cmp #$40 - bne nibtable_write + bne .write rts -nibtable_exit2 +.exit2 +} diff --git a/src/patchers/prodosmecc.a b/src/patchers/prodosmecc.a index e712454..6f5b9f6 100755 --- a/src/patchers/prodosmecc.a +++ b/src/patchers/prodosmecc.a @@ -4,14 +4,15 @@ ; ProDOS-based MECC disks ; [thanks LoGo] ;------------------------------- +!zone { _prodosmecc lda gIsProDOS beq + - jmp prodosmecc_exit + jmp .exit + ldy #$0E jsr SearchTrack - !byte $50,$54,$58,$5C,$60,$64,$68,00 + !byte $50,$54,$58,$5C,$60,$64,$68,$00 !byte $20,$10,$30,$97,$AA,$EB bcs + sta gDisplayBytes @@ -36,9 +37,9 @@ _prodosmecc + ldy #$15 jsr SearchTrack - !byte $AD,$C4,$D1,$CD,$C8,$D4,08,$2C - !byte $81,$C0,$28,$D0,06,$C9,$DE,$F0 - !byte 02,$18,$24,$38,$60 + !byte $AD,$C4,$D1,$CD,$C8,$D4,$08,$2C + !byte $81,$C0,$28,$D0,$06,$C9,$DE,$F0 + !byte $02,$18,$24,$38,$60 bcs + sta gDisplayBytes inx @@ -73,9 +74,9 @@ _prodosmecc ; variation seen in e.g. A-232 Spelling Press - !byte $AD,$C4,$D1,$CD,$C8,$D4,08,$2C - !byte $81,$C0,$28,$D0,09,$8D,$97,$97 - !byte $C9,$DE,$F0,02,$18,$24,$38,$60 + !byte $AD,$C4,$D1,$CD,$C8,$D4,$08,$2C + !byte $81,$C0,$28,$D0,$09,$8D,$97,$97 + !byte $C9,$DE,$F0,$02,$18,$24,$38,$60 bcs + sta gDisplayBytes inx @@ -110,7 +111,7 @@ _prodosmecc + ldy #$0C jsr SearchTrack - !byte $30,$A2,$20,00,$BF,$80,$97,$97,$B0,$98,$38,$60 + !byte $30,$A2,$20,$00,$BF,$80,$97,$97,$B0,$98,$38,$60 bcs + inx inx @@ -133,14 +134,15 @@ _prodosmecc ldy #$0B jsr SearchTrack !byte $30,$91,$38,$60,00,$20,00,03,00,03,00 - bcs prodosmecc_exit + bcs .exit inx inx ldy #$01 jsr compare !byte $38 - bcs prodosmecc_exit + bcs .exit ldy #$01 jsr modify !byte $18 -prodosmecc_exit +.exit +} diff --git a/src/patchers/prodosrwts.a b/src/patchers/prodosrwts.a index 6a25cee..337fc11 100755 --- a/src/patchers/prodosrwts.a +++ b/src/patchers/prodosrwts.a @@ -3,15 +3,16 @@ ; patch ProDOS RWTS ; e.g. ProDOS-based MECC disks ;------------------------------- +!zone { _prodosrwts lda gIsProDOS - bne prodosrwts_exit + bne .exit ldy #$14 jsr SearchTrack !byte $29,$FC,$5D,$97,$97,$D0,$0C,$A6 !byte $97,$BD,$8C,$C0,$10,$FB,$C9,$97 - !byte $18,$F0,01,$38 - bcs prodosrwts_exit + !byte $18,$F0,$01,$38 + bcs .exit sta gDisplayBytes inx inx @@ -31,8 +32,9 @@ _prodosrwts ldy #$01 jsr compare !byte $DE - bcc prodosrwts_exit + bcc .exit ldy #$01 jsr modify !byte $DE -prodosrwts_exit +.exit +} diff --git a/src/patchers/protecteddos.a b/src/patchers/protecteddos.a index c3d7102..70f11c4 100755 --- a/src/patchers/protecteddos.a +++ b/src/patchers/protecteddos.a @@ -8,10 +8,11 @@ ; (Home Alone / Outdoor Safety / Famous People), ; Math Blaster, Moebius ;------------------------------- +!zone { _protdos lda gIsProtDOS beq + - jmp protdos_exit + jmp .exit + ; ; Find secondary/tertiary RWTS swappers on any track @@ -21,30 +22,30 @@ _protdos jsr SearchTrack !byte $A9,$B5,$85,$4E,$8D,$5D,$BD,$A9 !byte $D5,$8D,$2C,$BF - bcs specific - sta swapper2+1 + bcs .specific + sta .swapper2+1 inx - stx swapper1+1 + stx .swapper1+1 ldy #$01 - jsr modify ; offset $01: $B5 -> $AD + jsr modify ; offset $01. $B5 -> $AD !byte $AD -swapper1 +.swapper1 lda #$FF ; modified at runtime clc adc #$07 tax -swapper2 +.swapper2 lda #$FF ; modified at runtime ldy #$01 - jsr modify ; offset $08: $D5 -> 9B + jsr modify ; offset $08. $D5 -> 9B !byte $9B -specific +.specific lda gTrack cmp #$02 - bcc strip - jmp protdos_exit -strip + bcc .strip + jmp .exit +.strip ; ; strip 6-digit numeric serial number ; (appears on both track 0 and 1, but @@ -64,27 +65,27 @@ strip inx lda #$02 ++ - stx serial+2 - stx serialb+2 + stx .serial+2 + stx .serialb+2 sta gDisplayBytes+3 lda #$C5 - sta serial+1 - sta serialb+1 + sta .serial+1 + sta .serialb+1 ldy #$00 -serialloop - jsr serial +.serialloop + jsr .serial tax - jsr serial - jsr XA2byte + jsr .serial + jsr .XA2byte sta gDisplayBytes,y iny cpy #$03 - bne serialloop + bne .serialloop lda #s_protserial jsr PrintByID lda gTrack - beq track0 + beq .track0 ; ; disable RWTS swapper (technically make the @@ -97,7 +98,7 @@ serialloop jsr compare ; if T01,S02,$AF == !byte $A2,$B5,$86,$4E,$8E,$5D,$BD,$A2 !byte $D5,$8E,$2C,$BF - bcs exitt1 + bcs .exitt1 lda #$02 ldx #$B0 ldy #$01 @@ -109,10 +110,10 @@ serialloop jsr modify ; and set T01,S02,$B7 = !byte $9B -exitt1 - jmp protdos_exit +.exitt1 + jmp .exit -:track0 +.track0 ; ; decrypt RWTS in track buffer ; @@ -120,22 +121,22 @@ exitt1 jsr PrintByID ldx #BASEPAGE inx - stx a+2 - stx b+2 - stx c+2 -a lda $FF06 ; modified at runtime - sta pdkey+1 + stx .a+2 + stx .b+2 + stx .c+2 +.a lda $FF06 ; modified at runtime + sta .key+1 ldx #$09 ldy #$1A -b lda $FF00,Y ; modified at runtime -pdkey eor #$FF ; modified at runtime -c sta $FF00,Y ; modified at runtime +.b lda $FF00,Y ; modified at runtime +.key eor #$FF ; modified at runtime +.c sta $FF00,Y ; modified at runtime iny - bne b - inc b+2 - inc c+2 + bne .b + inc .b+2 + inc .c+2 dex - bne b + bne .b ; ; disable decryption loop @@ -153,12 +154,12 @@ c sta $FF00,Y ; modified at runtime ldx #$93 ldy #$03 jsr compare ; if T00,S01,$93 == - !byte $4C,00,$B8 - bcs skipcheck + !byte $4C,$00,$B8 + bcs .skipcheck ldy #$03 jsr modify ; then set T00,S01,$93 = !byte $AC,$E5,$B7 -skipcheck +.skipcheck ; ; fake "found disk volume" in RWTS parameter table @@ -170,10 +171,10 @@ skipcheck ldy #$02 jsr compare ; if T00,S05,$15 == !byte $A5,$2F - bcs protdos_exit + bcs .exit ldy #$02 jsr modify ; then set T00,S05,$15 = - !byte $A9,00 + !byte $A9,$00 ; ; re-enable write mode if it was disabled @@ -182,34 +183,34 @@ skipcheck ldx #$48 ldy #$19 jsr compare ; if T00,S07,$48 == - !byte $A0,04,$48,$68,$A0,$B9,$BD,$88 + !byte $A0,$04,$48,$68,$A0,$B9,$BD,$88 !byte $D0,$F8,$A9,$97,$20,$B8,$BD,$A9 !byte $97,$20,$B8,$BD,$A9,$97,$20,$B8 !byte $BD - bcs writeIsOK + bcs .writeIsOK ldx #$4C ldy #$01 jsr modify ; then set T00,S07,$4C = !byte $20 -writeIsOK - jmp protdos_exit +.writeIsOK + jmp .exit ; subroutines for getting (and erasing) the embedded ; 6-digit serial number and converting them to bytes ; for printing -serial +.serial lda $FFFF ; modified at runtime pha lda #$B0 -serialb +.serialb sta $FFFF ; modified at runtime pla - inc serial+1 - inc serialb+1 + inc .serial+1 + inc .serialb+1 inc gPatchCount rts -XA2byte +.XA2byte and #$0F sta tmp txa @@ -220,4 +221,5 @@ XA2byte ora tmp rts -protdos_exit +.exit +} diff --git a/src/patchers/rol1e.a b/src/patchers/rol1e.a index f8598eb..176da67 100755 --- a/src/patchers/rol1e.a +++ b/src/patchers/rol1e.a @@ -3,28 +3,29 @@ ; RWTS stores timing bits in $1E ; e.g. Spellicopter ;------------------------------- +!zone { _rol1e lda #$03 ldx #$00 ldy #$2F jsr compare ; if T00,S03,$00 == - !byte $86,$1B,$BA,$BD,02,01,$85,03 - !byte $18,$69,04,$85,05,$A0,00,$84 - !byte 02,$A0,$40,$84,04,$A0,$39,$A9 - !byte $93,$91,02,$C8,$A5,03,$91,02 - !byte $A0,$7F,$B1,04,$99,00,08,$88 - !byte $10,$F8,$A6,$1B,$4C,00,08 - bcs rol1e_exit + !byte $86,$1B,$BA,$BD,$02,$01,$85,$03 + !byte $18,$69,$04,$85,$05,$A0,$00,$84 + !byte $02,$A0,$40,$84,$04,$A0,$39,$A9 + !byte $93,$91,$02,$C8,$A5,$03,$91,$02 + !byte $A0,$7F,$B1,$04,$99,$00,$08,$88 + !byte $10,$F8,$A6,$1B,$4C,$00,$08 + bcs .exit lda #$03 ldx #$40 ldy #$28 jsr compare ; and T00,S03,$40 == - !byte $A9,00,$A0,$EC,$91,02,$C8,$91 - !byte 02,$A9,09,$A0,$F1,$91,02,$A9 - !byte 08,$A0,$E1,$91,02,$A9,$4C,$85 - !byte 01,$A9,$93,$85,02,$20,01,00 - !byte $A0,00,$84,02,$A5,$1E,$85,08 - bcs rol1e_exit + !byte $A9,$00,$A0,$EC,$91,$02,$C8,$91 + !byte $02,$A9,$09,$A0,$F1,$91,$02,$A9 + !byte $08,$A0,$E1,$91,$02,$A9,$4C,$85 + !byte $01,$A9,$93,$85,$02,$20,$01,$00 + !byte $A0,$00,$84,$02,$A5,$1E,$85,$08 + bcs .exit lda #s_rol1e jsr PrintByID lda #$03 @@ -32,4 +33,5 @@ _rol1e ldy #$02 jsr modify ; then set T00,S03,$64 = !byte $A9,$F7 -rol1e_exit +.exit +} diff --git a/src/patchers/runhello.a b/src/patchers/runhello.a index e26248a..6452054 100755 --- a/src/patchers/runhello.a +++ b/src/patchers/runhello.a @@ -5,48 +5,50 @@ ; startup program after succeeding ; e.g. Microzine 15, Alpine Tram Ride ;------------------------------- +!zone { _runhello lda gIsProDOS ; this exact protection is only - beq runhello_exit ; on DOS 3.3 disks (other patchers + beq .exit ; on DOS 3.3 disks (other patchers lda gIsPascal ; will catch other variations) - beq runhello_exit + beq .exit lda #$0F - sta rhsector+1 -rhsector lda #$FF ; modified at runtime + sta .sector+1 +.sector lda #$FF ; modified at runtime ldx #$04 ldy #$05 jsr compare - !byte $20,$E3,03,$85,$FB + !byte $20,$E3,$03,$85,$FB bcc + - jmp rhnextsector + jmp .nextsector + - lda rhsector+1 + lda .sector+1 ldx #$19 ldy #$06 jsr compare !byte $CA,$10,$F8,$8A,$48,$20 bcc + - jmp rhnextsector + jmp .nextsector + - lda rhsector+1 + lda .sector+1 ldx #$21 ldy #$06 jsr compare - !byte $A0,01,$B1,$FA,$AA,$20 + !byte $A0,$01,$B1,$FA,$AA,$20 bcc + - jmp rhnextsector + jmp .nextsector + - lda rhsector+1 + lda .sector+1 sta gDisplayBytes lda #s_runhello jsr PrintByID - lda rhsector+1 + lda .sector+1 ldx #$26 ldy #$01 jsr modify !byte $2C -rhnextsector - dec rhsector+1 - bmi runhello_exit - jmp rhsector -runhello_exit +.nextsector + dec .sector+1 + bmi .exit + jmp .sector +.exit +} diff --git a/src/patchers/rwts.a b/src/patchers/rwts.a index 2d0ecfe..22c1df6 100755 --- a/src/patchers/rwts.a +++ b/src/patchers/rwts.a @@ -2,598 +2,599 @@ ; RWTS fixup #AP1R ; address prologue byte 1 (read) ;------------------------------- +!zone { rwtspatcher lda gIsRWTS ; if DOS 3.3 RWTS - bne ap1r + bne .ap1r lda #$03 ldx #$4F ldy #$06 jsr compare ; and T00,S03,$4F == !byte $BD,$8C,$C0,$10,$FB,$C9 - bcs ap1r + bcs .ap1r ldx #$56 ldy #$03 jsr compare ; and T00,S03,$56 == !byte $D0,$F0,$EA - bcs ap1r + bcs .ap1r ldx #$55 ldy #$01 jsr compare ; and T00,S03,$55 != !byte $D5 - bcc ap1r + bcc .ap1r ldy #$01 jsr modify ; then set T00,S03,$55 = !byte $D5 -ap1r +.ap1r ;------------------------------- ; RWTS fixup #AP2R ; address prologue byte 2 (read) ;------------------------------- lda gIsRWTS ; if DOS 3.3 RWTS - bne ap2r + bne .ap2r lda #$03 ldx #$59 ldy #$06 jsr compare ; and T00,S03,$59 == !byte $BD,$8C,$C0,$10,$FB,$C9 - bcs ap2r + bcs .ap2r ldx #$60 ldy #$04 jsr compare ; and T00,S03,$60 == !byte $D0,$F2,$A0,$03 - bcs ap2r + bcs .ap2r ldx #$5F ldy #$01 jsr compare ; and T00,S03,$5F != !byte $AA - bcc ap2r + bcc .ap2r ldy #$01 jsr modify ; then set T00,S03,$5F = !byte $AA -ap2r +.ap2r ;------------------------------- ; RWTS fixup #AP3R ; address prologue byte 3 (read) ;------------------------------- lda gIsRWTS ; if DOS 3.3 RWTS - bne ap3r + bne .ap3r lda #$03 ldx #$64 ldy #$06 jsr compare ; and T00,S03,$64 == !byte $BD,$8C,$C0,$10,$FB,$C9 - bcs ap3r + bcs .ap3r ldx #$6B ldy #$02 jsr compare ; and T00,S03,$6B == !byte $D0,$E7 - bcs ap3r + bcs .ap3r ldx #$6A ldy #$01 jsr compare ; and T00,S03,$6A != !byte $96 - bcc ap3r + bcc .ap3r ldy #$01 jsr modify ; then set T00,S03,$6A = !byte $96 -ap3r +.ap3r ;------------------------------- ; RWTS fixup #AE1R ; address epilogue byte 1 (read) ;------------------------------- lda gIsRWTS ; if DOS 3.3 RWTS - bne ae1r + bne .ae1r lda #$03 ldx #$8B ldy #$06 jsr compare ; and T00,S03,$8B == !byte $BD,$8C,$C0,$10,$FB,$C9 - bcs ae1r + bcs .ae1r ldx #$92 ldy #$03 jsr compare ; and T00,S03,$92 == !byte $D0,$AE,$EA - bcs ae1r + bcs .ae1r ldx #$91 ldy #$01 jsr compare ; and T00,S03,$91 != !byte $DE - bcc ae1r + bcc .ae1r ldy #$01 jsr modify ; then set T00,S03,$91 = !byte $DE -ae1r +.ae1r ;------------------------------- ; RWTS fixup #AE2R ; address epilogue byte 2 (read) ;------------------------------- lda gIsRWTS ; if DOS 3.3 RWTS - bne ae2r + bne .ae2r lda #$03 ldx #$95 ldy #$06 jsr compare ; and T00,S03,$95 == !byte $BD,$8C,$C0,$10,$FB,$C9 - bcs ae2r + bcs .ae2r ldx #$9C ldy #$03 jsr compare ; and T00,S03,$9C == !byte $D0,$A4,$18 - bcs ae2r + bcs .ae2r ldx #$9B ldy #$01 jsr compare ; and T00,S03,$9B != !byte $AA - bcc ae2r + bcc .ae2r ldy #$01 jsr modify ; then set T00,S03,$9B = !byte $AA -ae2r +.ae2r ;------------------------------- ; RWTS fixus #DP1R ; data prologue byte 1 (read) ;------------------------------- lda gIsRWTS ; if DOS 3.3 RWTS - bne dp1r + bne .dp1r lda #$02 ldx #$E1 ldy #$06 jsr compare ; and T00,S02,$E1 == !byte $BD,$8C,$C0,$10,$FB,$49 - bcs dp1r + bcs .dp1r ldx #$E8 ldy #$03 jsr compare ; and T00,S02,$E8 == !byte $D0,$F4,$EA - bcs dp1r + bcs .dp1r ldx #$E7 ldy #$01 jsr compare ; and T00,S02,$E7 != !byte $D5 - bcc dp1r + bcc .dp1r ldy #$01 jsr modify ; then set T00,S02,$E7 = !byte $D5 -dp1r +.dp1r ;------------------------------- ; RWTS fixup #DP2R ; data prologue byte 2 (read) ;------------------------------- lda gIsRWTS ; if DOS 3.3 RWTS - bne dp2r + bne .dp2r lda #$02 ldx #$EB ldy #$06 jsr compare ; and T00,S02,$EB == !byte $BD,$8C,$C0,$10,$FB,$C9 - bcs dp2r + bcs .dp2r ldx #$F2 ldy #$04 jsr compare ; and T00,S02,$F2 == !byte $D0,$F2,$A0,$56 - bcs dp2r + bcs .dp2r ldx #$F1 ldy #$01 jsr compare ; and T00,S02,$F1 != !byte $AA - bcc dp2r + bcc .dp2r ldy #$01 jsr modify ; then set T00,S02,$F1 = !byte $AA -dp2r +.dp2r ;------------------------------- ; RWTS fixup #DP3R ; data prologue byte 3 (read) ;------------------------------- lda gIsRWTS ; if DOS 3.3 RWTS - bne dp3r + bne .dp3r lda #$02 ldx #$F6 ldy #$06 jsr compare ; and T00,S02,$F6 == !byte $BD,$8C,$C0,$10,$FB,$C9 - bcs dp3r + bcs .dp3r ldx #$FD ldy #$02 jsr compare ; and T00,S02,$FD == !byte $D0,$E7 - bcs dp3r + bcs .dp3r ldx #$FC ldy #$01 jsr compare ; and T00,S02,$FC != !byte $AD - bcc dp3r + bcc .dp3r ldy #$01 jsr modify ; then set T00,S02,$FC = !byte $AD -dp3r +.dp3r ;------------------------------- ; RWTS fixup #DE1R ; data epilogue byte 1 (read) ;------------------------------- lda gIsRWTS ; if DOS 3.3 RWTS - bne de1r + bne .de1r lda #$03 ldx #$2F ldy #$06 jsr compare ; and T00,S03,$2F == !byte $BD,$8C,$C0,$10,$FB,$C9 - bcs de1r + bcs .de1r ldx #$36 ldy #$03 jsr compare ; and T00,S03,$36 == !byte $D0,$0A,$EA - bcs de1r + bcs .de1r ldx #$35 ldy #$01 jsr compare ; and T00,S03,$35 != !byte $DE - bcc de1r + bcc .de1r ldy #$01 jsr modify ; then set T00,S03,$35 = !byte $DE -de1r +.de1r ;------------------------------- ; RWTS fixup #DE2R ; data epilogue byte 2 (read) ;------------------------------- lda gIsRWTS ; if DOS 3.3 RWTS - bne de2r + bne .de2r lda #$03 ldx #$39 ldy #$06 jsr compare ; and T00,S03,$39 == !byte $BD,$8C,$C0,$10,$FB,$C9 - bcs de2r + bcs .de2r ldx #$40 ldy #$03 jsr compare ; and T00,S03,$40 == !byte $F0,$5C,$38 - bcs de2r + bcs .de2r ldx #$3F ldy #$01 jsr compare ; and T00,S03,$3F != !byte $AA - bcc de2r + bcc .de2r ldy #$01 jsr modify ; then set T00,S03,$3F = !byte $AA -de2r +.de2r ;------------------------------- ; RWTS fixup #AP1W ; address prologue byte 1 (write) ;------------------------------- lda gIsRWTS ; if DOS 3.3 RWTS - bne ap1w + bne .ap1w lda #$06 ldx #$79 ldy #$01 jsr compare ; and T00,S06,$79 == !byte $A9 - bcs ap1w + bcs .ap1w ldx #$7B ldy #$02 jsr compare ; and T00,S06,$7B == !byte $20,$D5 - bcs ap1w + bcs .ap1w ldx #$7A ldy #$01 jsr compare ; and T00,S06,$7A != !byte $D5 - bcc ap1w + bcc .ap1w ldy #$01 jsr modify ; then set T00,S06,$7A = !byte $D5 -ap1w +.ap1w ;------------------------------- ; RWTS fixup #AP2W ; address prologue byte 2 (write) ;------------------------------- lda gIsRWTS ; if DOS 3.3 RWTS - bne ap2w + bne .ap2w lda #$06 ldx #$7E ldy #$01 jsr compare ; and T00,S06,$7E == !byte $A9 - bcs ap2w + bcs .ap2w ldx #$80 ldy #$02 jsr compare ; and T00,S06,$80 == !byte $20,$D5 - bcs ap2w + bcs .ap2w ldx #$7F ldy #$01 jsr compare ; and T00,S06,$7F != !byte $AA - bcc ap2w + bcc .ap2w ldy #$01 jsr modify ; then set T00,S06,$7F = !byte $AA -ap2w +.ap2w ;------------------------------- ; RWTS fixup #AP3W ; address prologue byte 3 (write) ;------------------------------- lda gIsRWTS ; if DOS 3.3 RWTS - bne ap3w + bne .ap3w lda #$06 ldx #$83 ldy #$01 jsr compare ; and T00,S06,$83 == !byte $A9 - bcs ap3w + bcs .ap3w ldx #$85 ldy #$02 jsr compare ; and T00,S06,$85 == !byte $20,$D5 - bcs ap3w + bcs .ap3w ldx #$84 ldy #$01 jsr compare ; and T00,S06,$84 != !byte $96 - bcc ap3w + bcc .ap3w ldy #$01 jsr modify ; then set T00,S06,$84 = !byte $96 -ap3w +.ap3w ;------------------------------- ; RWTS fixup #AE1W ; address epilogue byte 1 (write) ;------------------------------- lda gIsRWTS ; if DOS 3.3 RWTS - bne ae1w + bne .ae1w lda #$06 ldx #$AD ldy #$01 jsr compare ; and T00,S06,$AD == !byte $A9 - bcs ae1w + bcs .ae1w ldx #$AF ldy #$02 jsr compare ; and T00,S06,$AF == !byte $20,$D5 - bcs ae1w + bcs .ae1w ldx #$AE ldy #$01 jsr compare ; and T00,S06,$AE != !byte $DE - bcc ae1w + bcc .ae1w ldy #$01 jsr modify ; then set T00,S06,$AE = !byte $DE -ae1w +.ae1w ;------------------------------- ; RWTS fixup #AE2W ; address epilogue byte 2 (write) ;------------------------------- lda gIsRWTS ; if DOS 3.3 RWTS - bne ae2w + bne .ae2w lda #$06 ldx #$B2 ldy #$01 jsr compare ; and T00,S06,$B2 == !byte $A9 - bcs ae2w + bcs .ae2w ldx #$B4 ldy #$02 jsr compare ; and T00,S06,$B4 == !byte $20,$D5 - bcs ae2w + bcs .ae2w ldx #$B3 ldy #$01 jsr compare ; and T00,S06,$B3 != !byte $AA - bcc ae2w + bcc .ae2w ldy #$01 jsr modify ; then set T00,S06,$B3 = !byte $AA -ae2w +.ae2w ;------------------------------- ; RWTS fixup #AE3W ; address epilogue byte 3 (write) ;------------------------------- lda gIsRWTS ; if DOS 3.3 RWTS - bne ae3w + bne .ae3w lda #$06 ldx #$B7 ldy #$01 jsr compare ; and T00,S06,$B7 == !byte $A9 - bcs ae3w + bcs .ae3w ldx #$B9 ldy #$02 jsr compare ; and T00,S06,$B9 == !byte $20,$D5 - bcs ae3w + bcs .ae3w ldx #$B8 ldy #$01 jsr compare ; and T00,S06,$B8 != !byte $EB - bcc ae3w + bcc .ae3w ldy #$01 jsr modify ; then set T00,S06,$B8 = !byte $EB -ae3w +.ae3w ;------------------------------- ; RWTS fixup #DP1W ; data prologue byte 1 (write) ;------------------------------- lda gIsRWTS ; if DOS 3.3 RWTS - bne dp1w + bne .dp1w lda #$02 ldx #$52 ldy #$01 jsr compare ; and T00,S02,$52 == !byte $A9 - bcs dp1w + bcs .dp1w ldx #$54 ldy #$02 jsr compare ; and T00,S02,$54 == !byte $20,$B8 - bcs dp1w + bcs .dp1w ldx #$53 ldy #$01 jsr compare ; and T00,S02,$53 != !byte $D5 - bcc dp1w + bcc .dp1w ldy #$01 jsr modify ; then set T00,S02,$53 = !byte $D5 -dp1w +.dp1w ;------------------------------- ; RWTS fixup #DP2W ; data prologue byte 2 (write) ;------------------------------- lda gIsRWTS ; if DOS 3.3 RWTS - bne dp2w + bne .dp2w lda #$02 ldx #$57 ldy #$01 jsr compare ; and T00,S02,$57 == !byte $A9 - bcs dp2w + bcs .dp2w ldx #$59 ldy #$02 jsr compare ; and T00,S02,$59 == !byte $20,$B8 - bcs dp2w + bcs .dp2w ldx #$58 ldy #$01 jsr compare ; and T00,S02,$58 == !byte $AA - bcc dp2w + bcc .dp2w ldy #$01 jsr modify ; then set T00,S02,$58 = !byte $AA -dp2w +.dp2w ;------------------------------- ; RWTS fixup #DP3W ; data prologue byte 3 (write) ;------------------------------- lda gIsRWTS ; if DOS 3.3 RWTS - bne dp3w + bne .dp3w lda #$02 ldx #$5C ldy #$01 jsr compare ; and T00,S02,$5C == !byte $A9 - bcs dp3w + bcs .dp3w ldx #$5E ldy #$02 jsr compare ; and T00,S02,$5E == !byte $20,$B8 - bcs dp3w + bcs .dp3w ldx #$5D ldy #$01 jsr compare ; and T00,S02,$5D != !byte $AD - bcc dp3w + bcc .dp3w ldy #$01 jsr modify ; then set T00,S02,$5D = !byte $AD -dp3w +.dp3w ;------------------------------- ; RWTS fixup #DE1W ; data epilogue byte 1 (write) ;------------------------------- lda gIsRWTS ; if DOS 3.3 RWTS - bne de1w + bne .de1w lda #$02 ldx #$9D ldy #$01 jsr compare ; and T00,S02,$9D == !byte $A9 - bcs de1w + bcs .de1w ldx #$9F ldy #$02 jsr compare ; and T00,S02,$9F == !byte $20,$B8 - bcs de1w + bcs .de1w ldx #$9E ldy #$01 jsr compare ; and T00,S02,$9E != !byte $DE - bcc de1w + bcc .de1w ldy #$01 jsr modify ; then set T00,S02,$9E = !byte $DE -de1w +.de1w ;------------------------------- ; RWTS fixup #DE2W ; data epilogue byte 2 (write) ;------------------------------- lda gIsRWTS ; if DOS 3.3 RWTS - bne de2w + bne .de2w lda #$02 ldx #$A2 ldy #$01 jsr compare ; and T00,S02,$A2 == !byte $A9 - bcs de2w + bcs .de2w ldx #$A4 ldy #$02 jsr compare ; and T00,S02,$A4 == !byte $20,$B8 - bcs de2w + bcs .de2w ldx #$A3 ldy #$01 jsr compare ; and T00,S02,$A3 != !byte $AA - bcc de2w + bcc .de2w ldy #$01 jsr modify ; then set T00,S02,$A3 = !byte $AA -de2w +.de2w ;------------------------------- ; RWTS fixup #DE3W ; data epilogue byte 3 (write) ;------------------------------- lda gIsRWTS ; if DOS 3.3 RWTS - bne de3w + bne .de3w lda #$02 ldx #$A7 ldy #$01 jsr compare ; and T00,S02,$A7 == !byte $A9 - bcs de3w + bcs .de3w ldx #$A9 ldy #$02 jsr compare ; and T00,S02,$A9 == !byte $20,$B8 - bcs de3w + bcs .de3w ldx #$A8 ldy #$01 jsr compare ; and T00,S02,$A8 != !byte $EB - bcc de3w + bcc .de3w ldy #$01 jsr modify ; then set T00,S02,$A8 = !byte $EB -de3w +.de3w ;------------------------------- ; RWTS fixup #DE4W @@ -601,27 +602,27 @@ de3w ; needed by some Sunburst disks ;------------------------------- lda gIsRWTS ; if DOS 3.3 RWTS - bne de4w + bne .de4w lda #$02 ldx #$AC ldy #$01 jsr compare ; and T00,S02,$AC == !byte $A9 - bcs de4w + bcs .de4w ldx #$AE ldy #$02 jsr compare ; and T00,S02,$AE == !byte $20,$B8 - bcs de4w + bcs .de4w ldx #$AD ldy #$01 jsr compare ; and T00,S02,$AD != !byte $FF - bcc de4w + bcc .de4w ldy #$01 jsr modify ; then set T00,S02,$AD = !byte $FF -de4w +.de4w ;------------------------------- ; RWTS "LSR $6A" identification @@ -631,17 +632,17 @@ de4w ; log it) ;------------------------------- lda gIsRWTS ; if DOS 3.3 RWTS - bne rwts_lsr6a + bne .lsr6a lda #$03 ldx #$4F ldy #$0A jsr compare ; and T00,S03,$4F == !byte $BD,$8C,$C0,$10,$FB,$4A,$97,$6A,$D0,$EF - bcs rwts_lsr6a + bcs .lsr6a lda #s_lsr6a jsr PrintByID inc gPatchCount -rwts_lsr6a +.lsr6a ;------------------------------- ; RWTS "CMP #$08 / BCS" identification @@ -651,14 +652,15 @@ rwts_lsr6a ; log it) ;------------------------------- lda gIsRWTS ; if DOS 3.3 RWTS - bne rwts_bcs08 + bne .bcs08 lda #$03 ldx #$8B ldy #$15 jsr compare ; and T00,S03,$8B == - !byte $BD,$8C,$C0,$10,$FB,$C9,$DE,$F0,$0A,$48,$68,$BD,$8C,$C0,$C9,08,$B0,$A5,$EA,$18,$60 - bcs rwts_bcs08 + !byte $BD,$8C,$C0,$10,$FB,$C9,$DE,$F0,$0A,$48,$68,$BD,$8C,$C0,$C9,$08,$B0,$A5,$EA,$18,$60 + bcs .bcs08 lda #s_bcs08 jsr PrintByID inc gPatchCount -rwts_bcs08 +.bcs08 +} diff --git a/src/patchers/rwtsswap.a b/src/patchers/rwtsswap.a index a44af72..126d45c 100755 --- a/src/patchers/rwtsswap.a +++ b/src/patchers/rwtsswap.a @@ -6,25 +6,26 @@ ; fly ; e.g. Puzzle Master ;------------------------------- +!zone { _rwtsswap lda gIsBoot0 ; if DOS 3.3 boot0 loader - bne rwtsswap_exit + bne .exit lda gIsBoot1 ; and DOS 3.3 boot1 loader - bne rwtsswap_exit + bne .exit lda #$04 ldx #$69 ldy #$0B jsr compare ; and T00,S04,$69 == - !byte $A0,07,$B9,$DF,$BC,$99,$94,$B9 + !byte $A0,$07,$B9,$DF,$BC,$99,$94,$B9 !byte $88,$10,$F7 - bcs rwtsswap_exit + bcs .exit lda #$04 ldx #$7F ldy #$0B jsr compare ; and T00,S04,$7F == - !byte $A0,07,$B9,$E7,$BC,$99,$94,$B9 + !byte $A0,$07,$B9,$E7,$BC,$99,$94,$B9 !byte $88,$10,$F7 - bcs rwtsswap_exit + bcs .exit lda #$04 ldx #$69 ldy #$01 @@ -35,4 +36,5 @@ _rwtsswap ldy #$01 jsr modify ; and set T00,S04,$7F = !byte $60 -rwtsswap_exit +.exit +} diff --git a/src/patchers/rwtsswap2.a b/src/patchers/rwtsswap2.a index 5032617..463cbd9 100755 --- a/src/patchers/rwtsswap2.a +++ b/src/patchers/rwtsswap2.a @@ -6,9 +6,10 @@ ; fly ; e.g. Mask Parade ;------------------------------- +!zone { _rwtsswap2 lda gIsBoot0 ; if DOS 3.3 boot0 loader - bne rwtsswap2_exit + bne .exit lda #$04 ldx #$69 ldy #$13 @@ -16,7 +17,7 @@ _rwtsswap2 !byte $A9,$AB,$8D,$4B,$B8,$A9,$FF,$20 !byte $DF,$BC,$20,$EC,$BC,$A9,$AA,$8D !byte $29,$BA,$60 - bcs rwtsswap2_exit + bcs .exit lda #$04 ldx #$7D ldy #$15 @@ -24,7 +25,7 @@ _rwtsswap2 !byte $A9,$FF,$8D,$4B,$B8,$A9,$DE,$20 !byte $DF,$BC,$A9,$AA,$20,$EC,$BC,$A9 !byte $96,$8D,$29,$BA,$60 - bcs rwtsswap2_exit + bcs .exit lda #$04 ldx #$69 ldy #$01 @@ -35,4 +36,5 @@ _rwtsswap2 ldy #$01 jsr modify ; and set T00,S04,$7D = !byte $60 -rwtsswap2_exit +.exit +} diff --git a/src/patchers/rwtsswapmecc.a b/src/patchers/rwtsswapmecc.a index 7f61319..ddcf778 100755 --- a/src/patchers/rwtsswapmecc.a +++ b/src/patchers/rwtsswapmecc.a @@ -3,15 +3,17 @@ ; post-boot RWTS swapper in MECC ; disks ;------------------------------- +!zone { _rwtsswapmecc ldy #$11 jsr SearchTrack !byte $0A,$18,$69,$FF,$A8,$8D,$8B,$C0 !byte $8D,$8B,$C0,$B9,$97,$97,$8D,$AC !byte $D5 - bcs rwtsswapmecc_exit + bcs .exit sta gDisplayBytes ldy #$03 jsr modify - !byte $A9,00,$24 -rwtsswapmecc_exit + !byte $A9,$00,$24 +.exit +} diff --git a/src/patchers/sunburst.a b/src/patchers/sunburst.a index 0d0dc24..4639094 100755 --- a/src/patchers/sunburst.a +++ b/src/patchers/sunburst.a @@ -6,22 +6,23 @@ ; NOTE: must be run before RWTS ; patchers due to overlapping bytes ;------------------------------- +!zone { _sunburst sec lda gIsRWTS ; if DOS 3.3 RWTS - bne sunburst_exit + bne .exit lda #$03 ldx #$40 ldy #$01 jsr compare ; and T00,S03,$40 == !byte $D0 - bcs sunburst_exit + bcs .exit lda #$03 ldx #$9C ldy #$01 jsr compare ; and T00,S03,$9C == !byte $F0 - bcs sunburst_exit + bcs .exit lda #$04 ldx #$69 ldy #$2C @@ -32,22 +33,22 @@ _sunburst !byte $11,$D0,03,$A9,02,$AC,$A9,$0E !byte $8D,$C0,$BF,$68,$69,00,$48,$AD !byte $78,04,$90,$2B - bcs sunburst_exit + bcs .exit lda #$06 ldx #$69 ldy #$06 jsr compare ; and T00,S06,$69 == !byte $4C,$B8,$B6,$EA,$EA,$EA - bcs sunburst_exit + bcs .exit lda #$08 ldx #$8C ldy #$02 jsr compare ; and T00,S08,$8C == !byte $69,$BA - bcc sunburst_yes -sunburst_exit - bcs sunburst_exit2 -sunburst_yes + bcc .yes +.exit + bcs .exit2 +.yes lda #$03 ldx #$40 ldy #$01 @@ -68,4 +69,5 @@ sunburst_yes ldy #$02 jsr modify ; and set T00,S08,$8C = !byte $A0,$B9 -sunburst_exit2 +.exit2 +} diff --git a/src/patchers/thunder.a b/src/patchers/thunder.a index 59c34d2..3143f9e 100755 --- a/src/patchers/thunder.a +++ b/src/patchers/thunder.a @@ -7,36 +7,37 @@ ; e.g. Thunder Mountain versions of ; Dig Dug, Pac-Man, Galaxian ;------------------------------- +!zone { _thunder lda gIsBoot0 ; if DOS 3.3 boot0 loader - bne thunder_no + bne .no lda gIsBoot1 ; and DOS 3.3 boot1 loader - bne thunder_no + bne .no lda #$03 ldx #$3E ldy #$04 jsr compare ; and T00,S03,$3E == !byte $4C,$B3,$B6,$EA bcc + -thunder_no - jmp thunder_exit +.no + jmp .exit + lda #$01 ldx #$47 ldy #$4C jsr compare ; and T00,S01,$47 == !byte $4C - !byte $C1,$B3,$60,$48,$A9,02,$8D,$EC - !byte $B7,$A9,00,$8D,$EB,$B7,$8D,$F2 - !byte $B7,$A9,05,$8D,$ED,$B7,$A9,$36 + !byte $C1,$B3,$60,$48,$A9,$02,$8D,$EC + !byte $B7,$A9,$00,$8D,$EB,$B7,$8D,$F2 + !byte $B7,$A9,$05,$8D,$ED,$B7,$A9,$36 !byte $8D,$F0,$B7,$A9,$B4,$8D,$F1,$B7 - !byte $A9,01,$8D,$E1,$B7,$8D,$F4,$B7 - !byte $20,$93,$B7,$90,09,$4C,$62,$FA + !byte $A9,$01,$8D,$E1,$B7,$8D,$F4,$B7 + !byte $20,$93,$B7,$90,$09,$4C,$62,$FA !byte $EA,$EA,$EA,$EA,$EA,$EA,$20,$36 - !byte $B4,$68,$F0,03,$6C,$72,$AA,$6C - !byte $58,$9D,00,$A9,00,$F0,$BC,$A9 - !byte 01,$D0,$B8 - bcs thunder_exit + !byte $B4,$68,$F0,$03,$6C,$72,$AA,$6C + !byte $58,$9D,$00,$A9,$00,$F0,$BC,$A9 + !byte $01,$D0,$B8 + bcs .exit lda #s_thunder jsr PrintByID lda #$01 @@ -54,4 +55,5 @@ thunder_no ldy #$04 jsr modify ; and set T00,S03,$3E = !byte $C9,$AA,$F0,$5C -thunder_exit +.exit +} diff --git a/src/patchers/universale7.a b/src/patchers/universale7.a index 25d84b4..cbd7b70 100755 --- a/src/patchers/universale7.a +++ b/src/patchers/universale7.a @@ -6,62 +6,64 @@ ; (invented by qkumba, see PoC||GTFO 0x11 ; and 4am crack no. 655 Rocky's Boots 4.0) ;------------------------------- -_universale7 +!zone { +universale7 lda #$0F - sta sector+1 -sector lda #$FF ; modified at runtime + sta .sector+1 +.sector lda #$FF ; modified at runtime ldx #$A0 ldy #$60 jsr compare - !byte $AC,00,$AC,00,$AC,00,$AC,00 - !byte $AC,00,$AC,00,$AC,00,$AC,00 - !byte $AC,00,$AC,00,$AC,00,$AC,00 - !byte $AC,00,$AC,00,$AC,00,$AC,00 - !byte $AC,00,$AC,00,$AC,00,$AC,00 - !byte $AC,00,$AC,00,$AC,00,$AC,00 - !byte $AC,00,$AC,00,$AC,00,$AC,00 - !byte $AC,00,$AC,00,$AC,00,$AC,00 - !byte $AC,00,$AC,00,$AC,00,$AC,00 - !byte $AC,00,$AC,00,$AC,00,$AC,00 - !byte $AC,00,$AC,00,$AC,00,$AC,00 - !byte $AC,00,$AC,00,$AC,00,$AC,00 + !byte $AC,$00,$AC,$00,$AC,$00,$AC,$00 + !byte $AC,$00,$AC,$00,$AC,$00,$AC,$00 + !byte $AC,$00,$AC,$00,$AC,$00,$AC,$00 + !byte $AC,$00,$AC,$00,$AC,$00,$AC,$00 + !byte $AC,$00,$AC,$00,$AC,$00,$AC,$00 + !byte $AC,$00,$AC,$00,$AC,$00,$AC,$00 + !byte $AC,$00,$AC,$00,$AC,$00,$AC,$00 + !byte $AC,$00,$AC,$00,$AC,$00,$AC,$00 + !byte $AC,$00,$AC,$00,$AC,$00,$AC,$00 + !byte $AC,$00,$AC,$00,$AC,$00,$AC,$00 + !byte $AC,$00,$AC,$00,$AC,$00,$AC,$00 + !byte $AC,$00,$AC,$00,$AC,$00,$AC,$00 bcc + - jmp e7nextsector + jmp .nextsector + - lda sector+1 + lda .sector+1 ldx #$00 ldy #$80 jsr compare - !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 - !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 - !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 - !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 - !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 - !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 + !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 + !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 + !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 + !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 + !byte $00,$00,$00,$00,$00,$00,$00,$00 + !byte $00,$00,$00,$00,$00,$00,$00,$00 bcc + - jmp e7nextsector + jmp .nextsector + - lda sector+1 + lda .sector+1 sta gDisplayBytes lda #s_e7 jsr PrintByID - lda sector+1 + lda .sector+1 ldx #$A3 ldy #$0C jsr modify !byte $64,$B4,$44,$80,$2C,$DC,$18,$B4,$44,$80,$44,$B4 -e7nextsector - dec sector+1 - bmi universale7_exit - jmp sector -universale7_exit +.nextsector + dec .sector+1 + bmi .exit + jmp .sector +.exit +} diff --git a/src/prefs.a b/src/prefs.a index 1daa2ae..271e4d3 100755 --- a/src/prefs.a +++ b/src/prefs.a @@ -46,8 +46,8 @@ SavePrefs jsr ValidatePrefs jsr SaveFile1Shot !word PREFSFILE - !byte 04 ; text file - !byte 00,00 ; no aux file type + !byte $04 ; text file + !byte $00,$00 ; no aux file type !word PREFSVER !word PREFSWRITELEN !word PREFSBUFFER @@ -67,49 +67,51 @@ SavePrefs ; C clear if all prefs were valid ; A,X clobbered ;------------------------------- +!zone { ValidatePrefs ldx #$00 lda PREFSVER cmp #CURRENTVER - beq checkslot + beq .checkslot lda #CURRENTVER sta PREFSVER lda #$FF sta SLOT sta DRIVE inx -checkslot +.checkslot lda SLOT sec sbc #$30 - beq badslot + beq .badslot cmp #$08 - bcc checkdrive -badslot + bcc .checkdrive +.badslot lda #DEFSLOT sta SLOT inx -checkdrive +.checkdrive lda DRIVE sec sbc #$30 - beq baddrive + beq .baddrive cmp #$03 - bcc checks6d1 -baddrive + bcc .checks6d1 +.baddrive lda #DEFDRIVE sta DRIVE inx -checks6d1 +.checks6d1 lda SLOT cmp #$36 - bne prefs_done + bne .done lda DRIVE cmp #$31 - bne prefs_done + bne .done lda #$32 sta DRIVE inx -prefs_done +.done cpx #$01 ; set carry if anything changed rts +} \ No newline at end of file diff --git a/src/print.a b/src/print.a index e6c66dc..38a636b 100755 --- a/src/print.a +++ b/src/print.a @@ -8,91 +8,92 @@ gDisplayBytes !fill 10 ; array of ten bytes for use as ; Print a string from the string table; ; handles string substitutions and ; auto-uppercases on older machines -; in A = string ID -; out C clear if string was printed +; in: A = string ID +; out: C clear if string was printed ; C set if string ID was invalid ; all other flags clobbered ; X register preserved, others clobbered ;------------------------------- +!zone { PrintByID - stx x + stx .x ldy #0 ; substitution mode flag cmp #STRINGCOUNT - bcs error + bcs .error asl tax lda StringTable,x - sta print+1 + sta .print+1 lda StringTable+1,x - sta print+2 -print + sta .print+2 +.print lda $FFFF ; modified at runtime - beq print_done + beq .done cpy #0 ; are we in substitution mode? - beq nosub ; no -> branch + beq .nosub ; no -> branch ldy #0 cmp #"t" ; "%t" = current track - bne sub1 + bne .sub1 lda gTrack - bpl printbyte ; unconditional branch -sub1 + bpl .printbyte ; unconditional branch +.sub1 cmp #"s" ; "%s" = current sector - bne sub2 + bne .sub2 lda gSector - bpl printbyte ; unconditional branch -sub2 + bpl .printbyte ; unconditional branch +.sub2 cmp #"S" ; write slot - bne sub3 + bne .sub3 lda SLOT - bne printsd ; unconditional branch -sub3 + bne .printsd ; unconditional branch +.sub3 cmp #"D" ; write drive - bne sub4 + bne .sub4 lda DRIVE -printsd +.printsd ora #$80 jsr PrintA - bvc next ; unconditional branch -sub4 + bvc .next ; unconditional branch +.sub4 cmp #"0" ; "%0" through "%9" - bcc nosub + bcc .nosub cmp #":" - bcs nosub + bcs .nosub sec sbc #"0" tax lda gDisplayBytes,x -printbyte +.printbyte jsr PrintByte - bvc next ; unconditional branch -nosub + bvc .next ; unconditional branch +.nosub cmp #"%" - bne stillnosub + bne .stillnosub iny ; switch to substitution mode - bne next ; (next character will be interpreted) -stillnosub + bne .next ; (next character will be interpreted) +.stillnosub cmp #$E1 - bcc noforce + bcc .noforce and kForceLower -noforce +.noforce jsr COUT -next - inc print+1 - bne print - inc print+2 - bne print -print_done +.next + inc .print+1 + bne .print + inc .print+2 + bne .print +.done clc -error - ldx x +.error + ldx .x rts -x !byte 00 +.x !byte 00 ;------------------------------- ; PrintByte ; print a hexadecimal byte -; in A contains byte to print -; out all registers preserved +; in: A contains byte to print +; out: all registers preserved ; all flags clobbered ; @tmpa clobbered ; @tmpx clobbered @@ -112,8 +113,8 @@ PrintByte ;------------------------------- ; PrintA ; print a single character through COUT -; in A contains character to print -; out all registers preserved +; in: A contains character to print +; out: all registers preserved ; all flags clobbered ; @tmpa clobbered ; @tmpx clobbered @@ -136,40 +137,41 @@ PrintA ClearScreen jsr TEXT lda $C061 - bpl home + bpl .home lda $C062 - bpl home -begin + bpl .home +.begin ldx #$04 stx counter - stx loop+2 - stx change+2 + stx .loop+2 + stx .change+2 ldy #$00 sty flag -loop +.loop lda $FF00,y ; modified at runtime cmp #$A0 - beq nochange - bcs down + beq .nochange + bcs .down clc adc #$01 - bne change -down + bne .change +.down sec sbc #$01 -change +.change sta $FF00,y ; modified at runtime sta flag -nochange +.nochange iny - bne loop - inc loop+2 - inc change+2 + bne .loop + inc .loop+2 + inc .change+2 dec counter - bne loop + bne .loop lda #$01 jsr WAIT lda flag - bne begin -home + bne .begin +.home jmp HOME +} \ No newline at end of file diff --git a/src/rwts.a b/src/rwts.a index 97b1943..2dff46b 100755 --- a/src/rwts.a +++ b/src/rwts.a @@ -37,39 +37,41 @@ endread ; nibble is stored in zp$4E and varies based on track ; and sector. ; +!zone { _protread lda gTrack ; T02,S05+ use "protected" mode cmp #$03 ; (altered data prologue and - bcs protected ; nibble translate table) + bcs .protected ; nibble translate table) cmp #$02 ; T00,S00 - T02,S04 use - bcc standard ; "standard" mode + bcc .standard ; "standard" mode lda gSector cmp #$05 - bcs protected -standard + bcs .protected +.standard lda #$9B sta $BF2C - bne go ; unconditional branch -protected + bne .go ; unconditional branch +.protected lda #$B5 sta $4E lda #$D5 sta $BF2C ; execution falls through here -go +.go lda #gRWTSParams jsr $BA00 ; note non-standard entry point bcc endprotread lda gOnAClearDayYouCanReadForever - beq go + beq .go endprotread rts +} gRWTSParams ; used to read each sector - !byte 01,$60,01,00 -gTrack !byte 00 -gSector !byte 00 + !byte $01,$60,$01,$00 +gTrack !byte $00 +gSector !byte $00 !word dct gAddress !word $1F00 - !byte 00,00,01,00,$FE,$60,01,00,00 -dct !byte 00,01,$EF,$D8,00 + !byte $00,$00,$01,$00,$FE,$60,$01,$00,$00 +dct !byte $00,$01,$EF,$D8,$00 diff --git a/src/sectormap.a b/src/sectormap.a index 0eede1f..d7c8ebe 100755 --- a/src/sectormap.a +++ b/src/sectormap.a @@ -1,20 +1,22 @@ +!zone { InitSectorMap lda #sectormap - sta B+2 + sta .B+2 lda #$FF ldx #$22 -A ldy #$0F -B sta $FFFF - inc B+1 +.A ldy #$0F +.B sta $FFFF + inc .B+1 bne + - inc B+2 + inc .B+2 + dey - bpl B + bpl .B dex - bpl A + bpl .A rts +} ;------------------------------- ; This is a map of how much we care about each sector @@ -31,7 +33,7 @@ B sta $FFFF ; 80 = sector is optional -- read, but ignore any errors ; FE = sector is required, and switch to the built-in RWTS ; after reading it (if we haven't already) -; $FF = sector is required -- read, and any error is fatal +; FF = sector is required -- read, and any error is fatal ; (this is the default value for all sectors) ;------------------------------- sectormap diff --git a/src/slots.a b/src/slots.a index 711b627..5420d0f 100755 --- a/src/slots.a +++ b/src/slots.a @@ -10,65 +10,69 @@ DiskIIArray ; all flags clobbered ; DiskIIArray filled with 00 or FF ;------------------------------- +!zone { ScanForDiskII lda #$00 sta cmp1 ldx #$07 -fingerprint +.fingerprint txa ora #$C0 sta cmp1+1 ldy #$01 lda (cmp1),y cmp #$20 - bne slots_next + bne .next ldy #$03 lda (cmp1),y - bne slots_next + bne .next ldy #$05 lda (cmp1),y cmp #$03 - bne slots_next + bne .next ldy #$FF lda (cmp1),y - bne slots_next + bne .next tya sta DiskIIArray-1,x -slots_next +.next dex - bne fingerprint + bne .fingerprint rts +} ;------------------------------- ; NextSlot ;------------------------------- +!zone { NextSlot lda DRIVE cmp #$31 - bne incslot + bne .incslot lda #$32 sta DRIVE - bne slots_done ; unconditional branch -incslot + bne .done ; unconditional branch +.incslot lda #$31 sta DRIVE inc SLOT lda SLOT cmp #$38 - bne nowrap + bne .nowrap lda #$31 sta SLOT -nowrap +.nowrap sec sbc #$30 tax lda DiskIIArray-1,x - beq incslot -slots_done + beq .incslot +.done lda SLOT cmp #$36 - bne reallydone + bne .reallydone lda #$32 sta DRIVE -reallydone +.reallydone rts +} diff --git a/src/strings/en.a b/src/strings/en.a index eff4fec..c961153 100755 --- a/src/strings/en.a +++ b/src/strings/en.a @@ -1,6 +1,6 @@ ; ; Main menu keys -; (should match the text in mainmenu below) +; (should match the text in .mainmenu below) ; (these are NOT case-sensitive) ; !ct "lcase.ct" @@ -85,75 +85,76 @@ s_bytrack = $42 s_a5count = $43 STRINGCOUNT = $44 +!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 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 - !word bytrack - !word a5count + !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 .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 + !word .bytrack + !word .a5count ; ; Text can contain substitution strings, which ; are replaced by current values at runtime. Each @@ -167,7 +168,7 @@ StringTable ; ; Substitution strings are case-sensitive. ; -; Supported substitution strings +; Supported substitution strings: ; %S destination (write) slot ; %D destination (write) drive ; %t current track (during read and patch) @@ -178,9 +179,9 @@ StringTable ; These are stored in the gDisplayBytes array and ; can be set directly before calling PrintByID. ; -header - !text "Passport by 4am 2017-01-17",00 -mainmenu +.header + !text "Passport by 4am 2017-01-23",00 +.mainmenu !text "________________________________________",$8D,$8D,$8D,$8D,$8D,$8D,$8D !text " " !scrxor $40, "V" @@ -197,47 +198,47 @@ mainmenu !text "source: S6,D1 target: " !scrxor $40, "S" !text "%S,D%D",00 -progbar +.progbar !byte $8D !text " ______________________________________",$8D !text " " !scrxor $00, " " !text "____________________________________" !scrxor $00, " ",$8D,$8D,$8D,00 -reading +.reading !text "Reading from S6,D1",$8D,00 -diskrwts +.diskrwts !text "Using disk's own RWTS",$8D,00 -bb00 +.bb00 !text "T00,S05 Found $BB00 protection check",$8D !text "T00,S0A might be unreadable",$8D,00 -sunburst +.sunburst !text "T00,S04 Found Sunburst disk",$8D !text "T11,S0F might be unreadable",$8D,00 -optimum +.optimum !text "T00,S00 Found Optimum Resource disk",$8D !text "T01,S0F might be unreadable",$8D,00 -builtin +.builtin !text "Using built-in RWTS",$8D,00 -switch +.switch !text "Switching to built-in RWTS",$8D,00 -writing +.writing !text "Writing to S%S,D%D",$8D,00 -unformat +.unformat !text "T%t is unformatted",$8D,00 -f7 +.f7 !text "T%t Found $F7F6EFEEAB protection",$8D,00 -sync +.sync !text "T%t Found nibble count protection",$8D,00 -optbad +.optbad !text "T%t,S%s is unreadable (ignoring)",$8D,00 -passver +.passver !text "Verification complete. The disk is good.",00 -passdemuf +.passdemuf !text "Demuffin complete.",$8D,00 -passcrack +.passcrack !text "Crack complete.",$8D,00 -passcrack0 +.passcrack0 !byte $8D !text "The disk was copied successfully, but",$8D !text "Passport did not apply any patches.",$8D,$8D @@ -246,38 +247,38 @@ passcrack0 !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 +.fail !byte $8D !text "T%t,S%s Fatal read error",$8D,00 -fatal0000 +.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 +.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 +.done !byte $8D !text "Press any key to continue " !scrxor $40, " ",00 -noslot6 +.noslot6 !text "Passport requires a Disk II drive in S6.",$8D !text "Press any key to quit " !scrxor $40, " ",00 -writeerr +.writeerr !byte $8D !text "T%t Fatal write error",$8D,$8D,00 ; ; MLI error $27 ; -writeioerr +.writeioerr !text "Possible reasons:",$8D !text "- There is no disk in S%S,D%D.",$8D !text "- The disk has bad sectors.",$8D @@ -285,118 +286,119 @@ writeioerr ; ; MLI error $28 ; -writenodev +.writenodev !text "S%S,D%D does not exist.",$8D,00 ; ; MLI error $2B ; -writeprot +.writeprot !text "The disk in S%S,D%D is write-protected.",$8D,00 ; ; other MLI error ; -othermli +.othermli !text "MLI error $%0.",$8D !text "Please contact the developer.",$8D,00 -canttrace +.canttrace !text "Unrecognized drive, tracing is disabled",$8D,00 -canceled +.canceled !text "Canceled at your request.",$8D,00 -bademu +.bademu !byte 00 -reset +.reset !byte $8D !text "Press to continue.",$8D,00 -smodify +.modify !text "T%t,S%0,$%1: ",00 -modifyto +.modifyto !text " -> ",00 -dosboot0 +.dosboot0 !text "T00,S00 Found DOS 3.3 bootloader",$8D,00 -prodosboot0 +.prodosboot0 !text "T00,S00 Found ProDOS bootloader",$8D,00 -pascalboot0 +.pascalboot0 !text "T00,S00 Found Pascal bootloader",$8D,00 -meccboot0 +.meccboot0 !text "T00 Found MECC M8 bootloader",$8D,00 -sierra +.sierra !text "T%t,S%0 Found Sierra protection check",$8D,00 -a6bc95 +.a6bc95 !text "T%t,S%0 Found A6BC95 protection check",$8D,00 -jmpbcf0 +.jmpbcf0 !text "T00,S03 RWTS requires a timing bit after" !text "the first data epilogue by jumping to",$8D !text "$BCF0.",$8D,00 -rol1e +.rol1e !text "T00,S03 RWTS accumulates timing bits in",$8D !text "$1E and checks its value later.",$8D,00 -runhello +.runhello !text "T%t,S%0 Startup program executes a",$8D !text "protection check before running the real" !text "startup program.",$8D,00 -e7 +.e7 !text "T%t,S%0 Found E7 bitstream",$8D,00 -jmpb4bb +.jmpb4bb !text "T00,S0C Disk calls a protection check at" !text "$B4BB before initializing DOS.",$8D,00 -jmpb400 +.jmpb400 !text "T00,S01 Disk calls a protection check at" !text "$B400 before initializing DOS.",$8D,00 -jmpbeca +.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 +.jsrbb03 !text "T00,S05 Found a self-decrypting",$8D !text "protection check at $BB03.",$8D,00 -thunder +.thunder !text "T00,S03 RWTS counts timing bits and",$8D !text "checks them later.",$8D,00 -jmpae8e +.jmpae8e !text "T00,S0D Disk calls a protection check at" !text "$AE8E after initializing DOS.",$8D,00 -diskvol +.diskvol !text "T00,S08 RWTS requires a non-standard",$8D !text "disk volume number.",$8D,00 -d5d5f7 +.d5d5f7 !text "T%t,S%0 Found D5D5F7 protection check",$8D,00 -meccm7 +.meccm7 !text "T00 Found MECC M7 bootloader",$8D,00 -datasoftb0 +.datasoftb0 !text "T00,S00 Found Datasoft bootloader",$8D,00 -datasoft +.datasoft !text "T%t,S%0 Found Datasoft protection check",$8D,00 -lsr6a +.lsr6a !text "T00,S03 RWTS accepts $D4 or $D5 for the",$8D !text "first address prologue nibble.",$8D,00 -bcs08 +.bcs08 !text "T00,S03 RWTS accepts $DE or a timing bit" !text "for the first address epilogue nibble.",$8D,00 -jmpb660 +.jmpb660 !text "T00,S02 RWTS requires timing bits after",$8D !text "the data prologue by jumping to $B660.",$8D,00 -protdos +.protdos !text "T00,S01 Found encrypted RWTS, key=$%0",$8D,00 -protdosw +.protdosw !text "T00 Decrypting RWTS before writing",$8D,00 -protserial +.protserial !text "T%t,S%3 Erasing serial number %0%1%2",$8D,00 -fbff +.fbff !text "T%t,S%0 Found FBFF protection check",$8D,00 -encoded44 +.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 +.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 +.specdel !text "T00,S00 Found DOS 3.3P bootloader",$8D,00 -bytrack +.bytrack !text "T%t,S%0 RWTS changes based on track",$8D,$00 -a5count +.a5count !text "T%t,S%0 Found A5 nibble count",$8D,$00 +} diff --git a/src/universalrwts.a b/src/universalrwts.a index fc59ebb..2410da9 100755 --- a/src/universalrwts.a +++ b/src/universalrwts.a @@ -28,75 +28,75 @@ !fill 256-(* & 255), 0 } universalrwts - !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 - !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 - !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 - !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 - !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 - !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 - !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 - !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 - !byte 00,00,$a0,00,$a2,$56,$ca,$30 - !byte $fb,$b9,00,$bb,$5e,00,$bc,$2a - !byte $5e,00,$bc,$2a,$91,$3e,$c8,$c4 + !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 + !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 + !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 + !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 + !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 + !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 + !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 + !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 + !byte $00,$00,$a0,$00,$a2,$56,$ca,$30 + !byte $fb,$b9,$00,$bb,$5e,$00,$bc,$2a + !byte $5e,$00,$bc,$2a,$91,$3e,$c8,$c4 !byte $26,$d0,$eb,$60,$a0,$20,$88,$f0 !byte $61,$bd,$8c,$c0,$10,$fb,$49,$d5 !byte $d0,$f4,$ea,$bd,$8c,$c0,$10,$fb !byte $c9,$aa,$d0,$f2,$a0,$56,$bd,$8c !byte $c0,$10,$fb,$c9,$ad,$d0,$e7,$a9 - !byte 00,$88,$84,$26,$bc,$8c,$c0,$10 - !byte $fb,$59,00,$ba,$a4,$26,$99,00 + !byte $00,$88,$84,$26,$bc,$8c,$c0,$10 + !byte $fb,$59,$00,$ba,$a4,$26,$99,$00 !byte $bc,$d0,$ee,$84,$26,$bc,$8c,$c0 - !byte $10,$fb,$59,00,$ba,$a4,$26,$99 - !byte 00,$bb,$c8,$d0,$ee,$bc,$8c,$c0 - !byte $10,$fb,$d9,00,$ba,$d0,$13,$18 - !byte $60,00,00,00,00,00,00,00 - !byte 00,00,00,00,00,00,00,00 - !byte 00,00,$38,$60,$a0,$fc,$84,$26 - !byte $c8,$d0,04,$e6,$26,$f0,$f3,$bd + !byte $10,$fb,$59,$00,$ba,$a4,$26,$99 + !byte $00,$bb,$c8,$d0,$ee,$bc,$8c,$c0 + !byte $10,$fb,$d9,$00,$ba,$d0,$13,$18 + !byte $60,$00,$00,$00,$00,$00,$00,$00 + !byte $00,$00,$00,$00,$00,$00,$00,$00 + !byte $00,$00,$38,$60,$a0,$fc,$84,$26 + !byte $c8,$d0,$04,$e6,$26,$f0,$f3,$bd !byte $8c,$c0,$10,$fb,$4a,$c9,$6a,$d0 !byte $ef _B959 !byte $bd _B95A !byte $8c,$c0,$c9,$d5,$f0,$36 !byte $bd,$8c,$c0,$10,$fb,$c9,$aa,$d0 !byte $df,$bd,$8c,$c0,$10,$fb,$c9,$96 - !byte $d0,$d6,$a0,03,$a9,00,$85,$27 + !byte $d0,$d6,$a0,$03,$a9,$00,$85,$27 !byte $bd,$8c,$c0,$10,$fb,$2a,$85,$26 !byte $bd,$8c,$c0,$10,$fb,$25,$26,$99 - !byte $2c,00,$45,$27,$88,$10,$e7,$a8 - !byte $d0,00,$18,$60,$38,$60,$8D,$9B - !byte $B9,$F0,$D7,00,00,00,$18,$60 + !byte $2c,$00,$45,$27,$88,$10,$e7,$a8 + !byte $d0,$00,$18,$60,$38,$60,$8D,$9B + !byte $B9,$F0,$D7,$00,$00,$00,$18,$60 !byte $86,$2b,$85,$2a,$cd,$78,$04,$f0 - !byte $53,$a9,00,$85,$26,$ad,$78,04 + !byte $53,$a9,$00,$85,$26,$ad,$78,$04 !byte $85,$27,$38,$e5,$2a,$f0,$33,$b0 - !byte 07,$49,$ff,$ee,$78,04,$90,05 - !byte $69,$fe,$ce,$78,04,$c5,$26,$90 - !byte 02,$a5,$26,$c9,$0c,$b0,01,$a8 + !byte $07,$49,$ff,$ee,$78,$04,$90,$05 + !byte $69,$fe,$ce,$78,$04,$c5,$26,$90 + !byte $02,$a5,$26,$c9,$0c,$b0,$01,$a8 !byte $38,$20,$ee,$b9,$b9,$11,$ba,$20 - !byte 00,$ba,$a5,$27,$18,$20,$f1,$b9 - !byte $b9,$1d,$ba,$20,00,$ba,$e6,$26 - !byte $d0,$c3,$20,00,$ba,$18,$ad,$78 - !byte 04,$29,03,$2a,05,$2b,$aa,$bd + !byte $00,$ba,$a5,$27,$18,$20,$f1,$b9 + !byte $b9,$1d,$ba,$20,$00,$ba,$e6,$26 + !byte $d0,$c3,$20,$00,$ba,$18,$ad,$78 + !byte $04,$29,$03,$2a,$05,$2b,$aa,$bd !byte $80,$c0,$a6,$2b,$60,$aa,$a0,$a0 nibtable !byte $a2,$11,$ca,$d0,$fd,$e6,$46,$d0 - !byte 02,$e6,$47,$38,$e9,01,$d0,$f0 - !byte $60,01,$30,$28,$24,$20,$1e,$1d + !byte $02,$e6,$47,$38,$e9,$01,$d0,$f0 + !byte $60,$01,$30,$28,$24,$20,$1e,$1d !byte $1c,$1c,$1c,$1c,$1c,$70,$2c,$26 !byte $22,$1f,$1e,$1d,$1c,$1c,$1c,$1c !byte $1c,$96,$97,$9a,$9b,$9d,$9e,$9f @@ -107,17 +107,17 @@ nibtable !byte $a2,$11,$ca,$d0,$fd,$e6,$46,$d0 !byte $de,$df,$e5,$e6,$e7,$e9,$ea,$eb !byte $ec,$ed,$ee,$ef,$f2,$f3,$f4,$f5 !byte $f6,$f7,$f9,$fa,$fb,$fc,$fd,$fe - !byte $ff,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 + !byte $ff,$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 ; these $FF bytes (at $BA80..$BA94) are used by the ; routine that checks whether a track is formatted !byte $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff !byte $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff - !byte $ff,$ff,$ff,$ff,$ff,$ff,00,01 - !byte $98,$99,02,03,$9c,04,05,06 - !byte $a0,$a1,$a2,$a3,$a4,$a5,07,08 - !byte $a8,$a9,$aa,09,$0a,$0b,$0c,$0d + !byte $ff,$ff,$ff,$ff,$ff,$ff,$00,$01 + !byte $98,$99,$02,$03,$9c,$04,$05,$06 + !byte $a0,$a1,$a2,$a3,$a4,$a5,$07,$08 + !byte $a8,$a9,$aa,$09,$0a,$0b,$0c,$0d !byte $b0,$b1,$0e,$0f,$10,$11,$12,$13 !byte $b8,$14,$15,$16,$17,$18,$19,$1a !byte $c0,$c1,$c2,$c3,$c4,$c5,$c6,$c7 @@ -130,163 +130,163 @@ nibtable !byte $a2,$11,$ca,$d0,$fd,$e6,$46,$d0 !byte $f8,$39,$3a,$3b,$3c,$3d,$3e nibtableff !byte $3f - !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 - !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 - !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 - !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 - !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 - !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 - !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 - !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 - !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 - !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 - !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 - !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 - !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 - !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 - !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 - !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 - !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 - !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 - !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 - !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 - !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 - !byte 00,00,00,00,00,00,00,00 - !byte $84,$48,$85,$49,$a0,02,$8c,$f8 - !byte 06,$a0,04,$8c,$f8,04,$a0,01 + !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 + !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 + !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 + !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 + !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 + !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 + !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 + !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 + !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 + !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 + !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 + !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 + !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 + !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 + !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 + !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 + !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 + !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 + !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 + !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 + !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 + !byte $00,$00,$00,$00,$00,$00,$00,$00 + !byte $84,$48,$85,$49,$a0,$02,$8c,$f8 + !byte $06,$a0,$04,$8c,$f8,$04,$a0,$01 !byte $b1,$48,$aa,$a0,$0f,$d1,$48,$f0 !byte $1b,$8a,$48,$b1,$48,$aa,$68,$48 - !byte $91,$48,$bd,$8e,$c0,$a0,08,$bd + !byte $91,$48,$bd,$8e,$c0,$a0,$08,$bd !byte $8c,$c0,$dd,$8c,$c0,$d0,$f6,$88 !byte $d0,$f8,$68,$aa,$bd,$8e,$c0,$bd - !byte $8c,$c0,$a0,08,$bd,$8c,$c0,$48 - !byte $68,$48,$68,$8e,$f8,05,$dd,$8c - !byte $c0,$d0,03,$88,$d0,$ee,08,$bd - !byte $89,$c0,$a0,06,$b1,$48,$99,$36 - !byte 00,$c8,$c0,$0a,$d0,$f6,$a0,03 - !byte $b1,$3c,$85,$47,$a0,02,$b1,$48 - !byte $a0,$10,$d1,$48,$f0,06,$91,$48 - !byte $28,$a0,00,08,$6a,$90,05,$bd - !byte $8a,$c0,$b0,03,$bd,$8b,$c0,$66 - !byte $35,$28,$08,$d0,$0b,$a0,07,$20 - !byte 00,$ba,$88,$d0,$fa,$ae,$f8,05 - !byte $a0,04,$b1,$48,$20,$5a,$be,$28 + !byte $8c,$c0,$a0,$08,$bd,$8c,$c0,$48 + !byte $68,$48,$68,$8e,$f8,$05,$dd,$8c + !byte $c0,$d0,$03,$88,$d0,$ee,$08,$bd + !byte $89,$c0,$a0,$06,$b1,$48,$99,$36 + !byte $00,$c8,$c0,$0a,$d0,$f6,$a0,$03 + !byte $b1,$3c,$85,$47,$a0,$02,$b1,$48 + !byte $a0,$10,$d1,$48,$f0,$06,$91,$48 + !byte $28,$a0,$00,$08,$6a,$90,$05,$bd + !byte $8a,$c0,$b0,$03,$bd,$8b,$c0,$66 + !byte $35,$28,$08,$d0,$0b,$a0,$07,$20 + !byte $00,$ba,$88,$d0,$fa,$ae,$f8,$05 + !byte $a0,$04,$b1,$48,$20,$5a,$be,$28 !byte $d0,$11,$a4,$47,$10,$0d,$a0,$12 !byte $88,$d0,$fd,$e6,$46,$d0,$f7,$e6 !byte $47,$d0,$f3,$a0,$0c,$b1,$48,$f0 - !byte $5a,$c9,04,$f0,$58,$6a,08,$b0 - !byte 03,$20,00,$b8,$a0,$30,$8c,$78 - !byte 05,$ae,$f8,05,$20,$44,$b9,$90 - !byte $24,$ce,$78,05,$10,$f3,$ad,$78 - !byte 04,$48,$a9,$60,$20,$95,$be,$ce - !byte $f8,06,$f0,$28,$a9,$04,$8d,$f8 - !byte 04,$a9,00,$20,$5a,$be,$68,$20 + !byte $5a,$c9,$04,$f0,$58,$6a,$08,$b0 + !byte $03,$20,$00,$b8,$a0,$30,$8c,$78 + !byte $05,$ae,$f8,$05,$20,$44,$b9,$90 + !byte $24,$ce,$78,$05,$10,$f3,$ad,$78 + !byte $04,$48,$a9,$60,$20,$95,$be,$ce + !byte $f8,$06,$f0,$28,$a9,$04,$8d,$f8 + !byte $04,$a9,$00,$20,$5a,$be,$68,$20 !byte $5a,$be,$4c,$bc,$bd,$a4,$2e,$cc - !byte $78,04,$f0,$1c,$ad,$78,04,$48 - !byte $98,$20,$95,$be,$68,$ce,$f8,04 + !byte $78,$04,$f0,$1c,$ad,$78,$04,$48 + !byte $98,$20,$95,$be,$68,$ce,$f8,$04 !byte $d0,$e5,$f0,$ca,$68,$a9,$40,$28 !byte $4c,$48,$be,$f0,$39,$4c,$af,$be - !byte $a0,03,$b1,$48,$48,$a5,$2f,$a0 - !byte $0e,$91,$48,$68,$f0,08,$c5,$2f - !byte $f0,04,$a9,$20,$d0,$e1,$a0,05 + !byte $a0,$03,$b1,$48,$48,$a5,$2f,$a0 + !byte $0e,$91,$48,$68,$f0,$08,$c5,$2f + !byte $f0,$04,$a9,$20,$d0,$e1,$a0,$05 !byte $b1,$48,$a8,$b9,$b8,$bf,$c5,$2d !byte $d0,$97,$28,$90,$1c,$20,$dc,$b8 - !byte 08,$b0,$8e,$28,$a2,00,$86,$26 - !byte $20,$c2,$b8,$ae,$f8,05,$18,$24 + !byte $08,$b0,$8e,$28,$a2,$00,$86,$26 + !byte $20,$c2,$b8,$ae,$f8,$05,$18,$24 !byte $38,$a0,$0d,$91,$48,$bd,$88,$c0 !byte $60,$20,$2a,$b8,$90,$f0,$a9,$10 - !byte $b0,$ee,$48,$a0,01,$b1,$3c,$6a - !byte $68,$90,08,$0a,$20,$6b,$be,$4e - !byte $78,04,$60,$85,$2a,$20,$8e,$be - !byte $b9,$78,04,$24,$35,$30,03,$b9 - !byte $f8,04,$8d,$78,$04,$a5,$2a,$24 - !byte $35,$30,05,$99,$f8,04,$10,03 - !byte $99,$78,04,$4c,$a0,$b9,$8a,$4a - !byte $4a,$4a,$4a,$a8,$60,$48,$a0,02 + !byte $b0,$ee,$48,$a0,$01,$b1,$3c,$6a + !byte $68,$90,$08,$0a,$20,$6b,$be,$4e + !byte $78,$04,$60,$85,$2a,$20,$8e,$be + !byte $b9,$78,$04,$24,$35,$30,$03,$b9 + !byte $f8,$04,$8d,$78,$04,$a5,$2a,$24 + !byte $35,$30,$05,$99,$f8,$04,$10,$03 + !byte $99,$78,$04,$4c,$a0,$b9,$8a,$4a + !byte $4a,$4a,$4a,$a8,$60,$48,$a0,$02 !byte $b1,$48,$6a,$66,$35,$20,$8e,$be - !byte $68,$0a,$24,$35,$30,05,$99,$f8 - !byte 04,$10,03,$99,$78,04,$60,00 - !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 - !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 - !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 - !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 - !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 - !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 - !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 - !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 - !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 - !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 - !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 - !byte 00,$0d,$0b,09,07,05,03,01 - !byte $0e,$0c,$0a,08,06,04,02,$0f - !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 - !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 - !byte 00,00,00,00,00,00,00,00 + !byte $68,$0a,$24,$35,$30,$05,$99,$f8 + !byte $04,$10,$03,$99,$78,$04,$60,$00 + !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 + !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 + !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 + !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 + !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 + !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 + !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 + !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 + !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 + !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 + !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 + !byte $00,$0d,$0b,$09,$07,$05,$03,$01 + !byte $0e,$0c,$0a,$08,$06,$04,$02,$0f + !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 + !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 + !byte $00,$00,$00,$00,$00,$00,$00,$00