mirror of
https://github.com/a2-4am/passport.git
synced 2024-06-25 21:29:54 +00:00
refactor track 0 patchers
This commit is contained in:
parent
d8c9f21877
commit
765bde89d7
|
@ -215,18 +215,6 @@ FIRSTFILTER
|
|||
!byte FALSE ; 0=true, 1=false
|
||||
; reset before each operation
|
||||
; set in patchers/t11diskvol.a after reading T11,S00
|
||||
;gIsRWTS
|
||||
!byte FALSE ; 0=true, 1=false
|
||||
; reset before each operation
|
||||
; set in AnalyzeT00() after reading T00
|
||||
;gIsMaster
|
||||
!byte FALSE ; 0=true, 1=false
|
||||
; reset before each operation
|
||||
; set in AnalyzeT00() after reading T00
|
||||
;gIsBoot1
|
||||
!byte FALSE ; 0=true, 1=false
|
||||
; reset before each operation
|
||||
; set in AnalyzeT00() after reading T00
|
||||
;gIsBoot0
|
||||
!byte FALSE ; 0=true, 1=false
|
||||
; reset before each operation
|
||||
|
|
|
@ -118,10 +118,7 @@ gDiskVolumeNumber = gLastTrack-$01 ; byte
|
|||
;FIRSTFILTER ; add new gIs* below this line
|
||||
gIsDOS32 = gDiskVolumeNumber-$01 ; byte
|
||||
gIsBoot0 = gIsDOS32-$01 ; byte
|
||||
gIsBoot1 = gIsBoot0-$01 ; byte
|
||||
gIsMaster = gIsBoot1-$01 ; byte
|
||||
gIsRWTS = gIsMaster-$01 ; byte
|
||||
gCapturedDiskVolumeNumber = gIsRWTS-$01 ; byte
|
||||
gCapturedDiskVolumeNumber = gIsBoot0-$01 ; byte
|
||||
gIsProDOS = gCapturedDiskVolumeNumber-$01 ; byte
|
||||
gIsDinkeyDOS = gIsProDOS-$01 ; byte
|
||||
gIsPascal = gIsDinkeyDOS-$01 ; byte
|
||||
|
@ -203,9 +200,6 @@ ConstructStandardDelivery = jConstructStandardDelivery
|
|||
!warn "gLastTrack=",gLastTrack
|
||||
!warn "gIsDOS32=",gIsDOS32
|
||||
!warn "gIsBoot0=",gIsBoot0
|
||||
!warn "gIsBoot1=",gIsBoot1
|
||||
!warn "gIsMaster=",gIsMaster
|
||||
!warn "gIsRWTS=",gIsRWTS
|
||||
!warn "gCapturedDiskVolumeNumber=",gCapturedDiskVolumeNumber
|
||||
!warn "gIsProDOS=",gIsProDOS
|
||||
!warn "gIsDinkeyDOS=",gIsDinkeyDOS
|
||||
|
|
|
@ -10,118 +10,89 @@ WILDCARD = $97 ; from compare.a
|
|||
|
||||
;-------------------------------
|
||||
; AnalyzeT00
|
||||
; set additional flags based on contents of track $00
|
||||
; apply track $00-specific patchers
|
||||
;
|
||||
; in: Track $00 in data buffer
|
||||
; out: gIsBoot1, gIsMaster, gIsRWTS set to #TRUE or #FALSE
|
||||
; all flags clobbered
|
||||
; out: all flags clobbered
|
||||
; all registers clobbered
|
||||
;-------------------------------
|
||||
!zone {
|
||||
AnalyzeT00
|
||||
lda #$01
|
||||
ldx #$00
|
||||
ldy #$38
|
||||
jsr compare ; if T00,S01,$00 ==
|
||||
!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 $F4,$B7,$8A,$4A,$4A,$4A,$4A,$AA
|
||||
!byte $A9,$00,$9D,$F8,$04,$9D,$78,$04
|
||||
ldx #TRUE
|
||||
bcc .boot1
|
||||
ldx #FALSE
|
||||
.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 $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 $F4,$37,$8A,$4A,$4A,$4A,$4A,$AA
|
||||
!byte $A9,$00,$9D,$F8,$04,$9D,$78,$04
|
||||
ldx #TRUE
|
||||
bcc .master
|
||||
ldx #FALSE
|
||||
.master
|
||||
stx gIsMaster
|
||||
|
||||
lda #$07
|
||||
ldx #$04
|
||||
ldy #$3C
|
||||
jsr compare ; if T00,S07,$00 ==
|
||||
!byte $A0,$02,$8C,WILDCARD
|
||||
!byte WILDCARD,$A0,$04,$8C,WILDCARD,WILDCARD,$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 $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
|
||||
ldx #TRUE
|
||||
bcc .rwts
|
||||
ldx #FALSE
|
||||
.rwts
|
||||
stx gIsRWTS
|
||||
}
|
||||
ldy #$21
|
||||
jsr compare ; if T00,S07,$04 ==
|
||||
!byte $A0,$02
|
||||
!byte $8C,WILDCARD,WILDCARD
|
||||
!byte $A0,$04
|
||||
!byte $8C,WILDCARD,WILDCARD
|
||||
!byte $A0,$01
|
||||
!byte $B1,$48
|
||||
!byte $AA
|
||||
!byte $A0,$0F
|
||||
!byte $D1,$48
|
||||
!byte $F0,$1B
|
||||
!byte $8A
|
||||
!byte $48
|
||||
!byte $B1,$48
|
||||
!byte $AA
|
||||
!byte $68
|
||||
!byte $48
|
||||
!byte $91,$48
|
||||
!byte $BD,$8E,$C0
|
||||
bcc +
|
||||
jmp T00_IsNotRWTS
|
||||
+
|
||||
; DOS 3.3 RWTS patchers
|
||||
!source "../patchers/t00_artsci.a"
|
||||
!source "../patchers/t00_bademu.a"
|
||||
!source "../patchers/t00_bademu2.a"
|
||||
!source "../patchers/t00_border.a"
|
||||
!source "../patchers/t00_dakin5.a"
|
||||
!source "../patchers/t00_datasoft2.a"
|
||||
!source "../patchers/t00_earthware.a"
|
||||
!source "../patchers/t00_jmpb500.a"
|
||||
!source "../patchers/t00_jmpb660.a"
|
||||
!source "../patchers/t00_jmpb720.a"
|
||||
!source "../patchers/t00_jmpbbfe.a"
|
||||
!source "../patchers/t00_jmpbcf0.a"
|
||||
!source "../patchers/t00_jmpbeb1.a"
|
||||
!source "../patchers/t00_jmpbeca.a"
|
||||
!source "../patchers/t00_jsrb6cc.a"
|
||||
!source "../patchers/t00_mastery.a"
|
||||
!source "../patchers/t00_methods.a"
|
||||
!source "../patchers/t00_microfun.a"
|
||||
!source "../patchers/t00_microfun2.a"
|
||||
!source "../patchers/t00_milliken.a"
|
||||
!source "../patchers/t00_muserwts.a"
|
||||
!source "../patchers/t00_panglosdos.a"
|
||||
!source "../patchers/t00_rps.a"
|
||||
!source "../patchers/t00_rwtsswap.a"
|
||||
!source "../patchers/t00_rwtsswapmicrofun.a"
|
||||
!source "../patchers/t00_springboard.a"
|
||||
!source "../patchers/t00_sunburst.a"
|
||||
!source "../patchers/t00_sve.a"
|
||||
!source "../patchers/t00_swordthrust.a"
|
||||
; ----- add new DOS 3.3 patchers above this line -----
|
||||
!source "../patchers/t00_nibtable.a"
|
||||
!source "../patchers/t00_rwts.a"
|
||||
!source "../patchers/t00_diskvol.a"
|
||||
; /!\ execution falls through here
|
||||
|
||||
!source "../patchers/sunburst.a"
|
||||
!source "../patchers/jmpbcf0.a"
|
||||
!source "../patchers/jmpbeb1.a"
|
||||
!source "../patchers/jmpbeca.a"
|
||||
!source "../patchers/jmpb660.a"
|
||||
!source "../patchers/jmpb720.a"
|
||||
!source "../patchers/bademu.a"
|
||||
!source "../patchers/bademu2.a"
|
||||
!source "../patchers/rwts.a"
|
||||
!source "../patchers/rwtslog.a"
|
||||
!source "../patchers/mecc.a"
|
||||
!source "../patchers/rol1e.a"
|
||||
!source "../patchers/rps.a"
|
||||
!source "../patchers/bb03.a"
|
||||
!source "../patchers/rwtsswap.a"
|
||||
!source "../patchers/rwtsswap2.a"
|
||||
!source "../patchers/rwtsswapmicrofun.a"
|
||||
!source "../patchers/border.a"
|
||||
!source "../patchers/jmpae8e.a"
|
||||
!source "../patchers/jmpbbfe.a"
|
||||
!source "../patchers/datasoft.a"
|
||||
!source "../patchers/nibtable.a"
|
||||
!source "../patchers/milliken.a"
|
||||
!source "../patchers/methods.a"
|
||||
!source "../patchers/jsr8b3.a"
|
||||
!source "../patchers/laureate.a"
|
||||
!source "../patchers/pascalrwts.a"
|
||||
!source "../patchers/micrograms.a"
|
||||
!source "../patchers/dos32.a"
|
||||
!source "../patchers/dos32dlm.a"
|
||||
!source "../patchers/microfun.a"
|
||||
!source "../patchers/microfun2.a"
|
||||
!source "../patchers/panglosdos.a"
|
||||
!source "../patchers/rdos13.a"
|
||||
!source "../patchers/swordthrust.a"
|
||||
!source "../patchers/dakin5.a"
|
||||
!source "../patchers/muserwts.a"
|
||||
!source "../patchers/artsci.a"
|
||||
!source "../patchers/springboard.a"
|
||||
!source "../patchers/hoffman.a"
|
||||
!source "../patchers/datasoft2.a"
|
||||
!source "../patchers/jmpb500.a"
|
||||
!source "../patchers/mastery.a"
|
||||
!source "../patchers/jsrb6cc.a"
|
||||
!source "../patchers/earthware.a"
|
||||
!source "../patchers/sve.a"
|
||||
|
||||
;add only above this line
|
||||
|
||||
!source "../patchers/diskvol.a"
|
||||
T00_IsNotRWTS
|
||||
; patchers that run on every disk
|
||||
!source "../patchers/t00_bb03.a"
|
||||
!source "../patchers/t00_datasoft.a"
|
||||
!source "../patchers/t00_dos32.a"
|
||||
!source "../patchers/t00_dos32dlm.a"
|
||||
!source "../patchers/t00_hoffman.a"
|
||||
!source "../patchers/t00_jsr8b3.a"
|
||||
!source "../patchers/t00_laureate.a"
|
||||
!source "../patchers/t00_mecc.a"
|
||||
!source "../patchers/t00_micrograms.a"
|
||||
!source "../patchers/t00_pascalrwts.a"
|
||||
!source "../patchers/t00_rdos13.a"
|
||||
!source "../patchers/t00_rol1e.a"
|
||||
!source "../patchers/t00_rwtslog.a"
|
||||
rts
|
||||
|
||||
!if * > $4000 {
|
||||
|
|
|
@ -272,7 +272,7 @@ AnalyzeTrack
|
|||
; /!\ execution falls through here
|
||||
@applyToAll
|
||||
; run these modules in verify and crack mode
|
||||
!source "patchers/t11diskvol.a" ; T11 && gIsRWTS only
|
||||
!source "patchers/t11diskvol.a" ; T11 only
|
||||
!source "patchers/t02volumename.a" ; T02 && gIsBoot0 only
|
||||
bit gMode
|
||||
bmi +
|
||||
|
@ -308,10 +308,10 @@ AnalyzeTrack
|
|||
!source "patchers/jmp2012.a" ; T02 only
|
||||
!source "patchers/jmpb400.a" ; T02 && gIsBoot0 only
|
||||
!source "patchers/advint.a" ; gAdventureInternational only
|
||||
!source "patchers/jsr8635.a" ; gIsRWTS only
|
||||
!source "patchers/jsr8635.a" ; gIsBoot0 only
|
||||
!source "patchers/jmpb4bb.a" ; T02 only
|
||||
!source "patchers/dos32muse.a" ; T01 && gIsDOS32 only
|
||||
!source "patchers/sra.a" ; gIsDOS32 || gIsRWTS only
|
||||
!source "patchers/sra.a" ; gIsDOS32 || gIsBoot0 only
|
||||
!source "patchers/sierra13.a" ; gIsDOS32 only
|
||||
!source "patchers/ssprot.a" ; gIsF7F6 only
|
||||
!source "patchers/f7f6.a" ; gIsF7F6 only
|
||||
|
@ -415,8 +415,8 @@ _byte_skip_hi:
|
|||
!source "id/davidson.a"
|
||||
!source "id/holle.a"
|
||||
!source "id/phoenix.a"
|
||||
!source "id/bootfailure.a"
|
||||
!source "id/555.a"
|
||||
!source "id/bootfailure.a"
|
||||
!source "print.a"
|
||||
!source "compare.a"
|
||||
!source "modify.a"
|
||||
|
|
|
@ -26,8 +26,7 @@
|
|||
; (This filter is subject to revision if we find
|
||||
; additional samples.)
|
||||
;
|
||||
lda gIsBoot0
|
||||
ora gPossibleD5D5F7
|
||||
lda gPossibleD5D5F7
|
||||
bne .exit
|
||||
|
||||
+ ldy #$20
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
;-------------------------------
|
||||
; #JMPAE8E
|
||||
; Late stage DOS jumps to $AE8E
|
||||
; for a nibble check
|
||||
; e.g. Alien Addition
|
||||
;-------------------------------
|
||||
!zone {
|
||||
lda gIsBoot0 ; if DOS 3.3 boot0 loader
|
||||
ora gIsBoot1 ; and DOS 3.3 boot1 loader
|
||||
bne .exit
|
||||
lda #$0D
|
||||
ldx #$4D
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S0D,$4D ==
|
||||
!byte $4C,$8E,$AE
|
||||
bcs .exit
|
||||
jsr PrintByID
|
||||
!byte s_jmpae8e
|
||||
inx ; X=#$4E
|
||||
dey ; Y=#$01
|
||||
jsr modify ; then set T00,S0D,$4E =
|
||||
!byte $80,$A1
|
||||
.exit
|
||||
}
|
|
@ -11,7 +11,7 @@
|
|||
; - Leadsheeter Utilities
|
||||
;-------------------------------
|
||||
!zone {
|
||||
lda gIsDiversi ; only if we found Diversi-DOS boot sector earlier
|
||||
lda gIsDiversi ; only seen this protection on Diversi-DOS disks
|
||||
bne .exit
|
||||
ldy #14
|
||||
jsr SearchTrack
|
||||
|
|
|
@ -24,9 +24,8 @@
|
|||
!byte s_lsr6a
|
||||
inc gPatchCount
|
||||
+
|
||||
lda .sector+1
|
||||
ldx #$EF
|
||||
ldy #$07
|
||||
dey
|
||||
jsr compare
|
||||
!byte $48
|
||||
!byte $68
|
||||
|
|
|
@ -1,47 +0,0 @@
|
|||
;-------------------------------
|
||||
; #RWTSSWAP2
|
||||
; after DOS loads, program calls
|
||||
; subroutines at $BA69 and $BA7D
|
||||
; to swap RWTS parameters on the
|
||||
; fly
|
||||
; e.g. Mask Parade
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_rwtsswap2
|
||||
lda gIsBoot0 ; if DOS 3.3 boot0 loader
|
||||
bne .exit
|
||||
lda #$04
|
||||
ldx #$69
|
||||
ldy #$13
|
||||
jsr compare ; and T00,S04,$69 ==
|
||||
!byte $A9,$AB
|
||||
!byte $8D,$4B,$B8
|
||||
!byte $A9,$FF
|
||||
!byte $20,$DF,$BC
|
||||
!byte $20,$EC,$BC
|
||||
!byte $A9,$AA
|
||||
!byte $8D,$29,$BA
|
||||
!byte $60
|
||||
bcs .exit
|
||||
ldx #$7D
|
||||
ldy #$15
|
||||
jsr compare ; and T00,S04,$7D ==
|
||||
!byte $A9,$FF
|
||||
!byte $8D,$4B,$B8
|
||||
!byte $A9,$DE
|
||||
!byte $20,$DF,$BC
|
||||
!byte $A9,$AA
|
||||
!byte $20,$EC,$BC
|
||||
!byte $A9,$96
|
||||
!byte $8D,$29,$BA
|
||||
!byte $60
|
||||
bcs .exit ; passport-test-suite/Mask Parade.woz [C=0] matches
|
||||
ldx #$69
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S04,$69 =
|
||||
!byte $60
|
||||
ldx #$7D
|
||||
jsr modify ; and set T00,S04,$7D =
|
||||
!byte $60
|
||||
.exit
|
||||
}
|
|
@ -10,7 +10,7 @@
|
|||
; - Xyphus
|
||||
;-------------------------------
|
||||
!zone {
|
||||
ldx gTrack ; and track 1
|
||||
ldx gTrack ; if track = 1
|
||||
dex
|
||||
bne .exit
|
||||
lda #$04
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;-------------------------------
|
||||
; #SIGCHECK
|
||||
; productized fat track protection check
|
||||
; productized extra wide track protection check
|
||||
;
|
||||
; tested on
|
||||
; - Advanced Electricity
|
||||
|
|
|
@ -9,8 +9,8 @@
|
|||
; - Photar
|
||||
;-------------------------------
|
||||
!zone {
|
||||
lda gIsRWTS
|
||||
bne .exit
|
||||
; gTrack = 0
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda #$0A
|
||||
ldx #$FE
|
|
@ -13,8 +13,9 @@
|
|||
; - Let's Go There: Beginning Map and Geography Skills (Troll Associates)
|
||||
;-------------------------------
|
||||
!zone {
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne .exit
|
||||
; gTrack = 0
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda #$03
|
||||
ldx #$4F
|
||||
ldy #$11
|
|
@ -11,8 +11,9 @@
|
|||
; - Dinosaur Days
|
||||
;-------------------------------
|
||||
!zone {
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne .exit
|
||||
; gTrack = 0
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda #$03
|
||||
ldx #$4F
|
||||
ldy #$11
|
|
@ -26,7 +26,6 @@
|
|||
ldx gIsDavidDOS
|
||||
beq .maybe
|
||||
lda gIsBoot0 ; if DOS 3.3 boot0 loader
|
||||
ora gIsBoot1 ; and DOS 3.3 boot1 loader
|
||||
bne .noButInYellow
|
||||
lda #$05 ; sector to check for DOS 3.3 variant
|
||||
.maybe
|
|
@ -7,9 +7,9 @@
|
|||
; Border Software
|
||||
;-------------------------------
|
||||
!zone {
|
||||
lda gIsBoot0 ; if DOS 3.3 boot0 loader
|
||||
ora gIsBoot1 ; and DOS 3.3 boot1 loader
|
||||
bne .exit
|
||||
; gTrack = 0
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda #$08
|
||||
ldx #$5A
|
||||
ldy #$0A
|
|
@ -8,8 +8,9 @@
|
|||
; - Rings of Saturn
|
||||
;-------------------------------
|
||||
!zone {
|
||||
lda gIsRWTS
|
||||
bne .exit
|
||||
; gTrack = 0
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda #$00
|
||||
ldx #$B3
|
||||
ldy #(@compareend-@comparestart)
|
|
@ -4,8 +4,8 @@
|
|||
; e.g. Canyon Climber, Fathom's 40
|
||||
;-------------------------------
|
||||
!zone {
|
||||
lda gIsRWTS
|
||||
bne .exit
|
||||
; gTrack = 0
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda #$01
|
||||
ldx #$48
|
|
@ -5,8 +5,8 @@
|
|||
; or even its own DOS
|
||||
;-------------------------------
|
||||
!zone {
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne .exit
|
||||
; gTrack = 0
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda #$01
|
||||
ldx #$EE
|
|
@ -10,8 +10,8 @@
|
|||
; - Star Search (Earthware Computer Services)
|
||||
;-------------------------------
|
||||
EARTHWARE
|
||||
lda gIsBoot0
|
||||
bne @exit
|
||||
; gTrack = 0
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda #$02
|
||||
ldx #$F6
|
|
@ -15,6 +15,8 @@
|
|||
; - Good Thinking! Sequencing Events Level Two (Hoffman Educational Systems)
|
||||
;-------------------------------
|
||||
!zone {
|
||||
; gTrack = 0 here
|
||||
|
||||
lda #$0C
|
||||
ldx #$00
|
||||
ldy #$19
|
|
@ -8,8 +8,8 @@
|
|||
; Starship Commander (1981, Voyager Software)
|
||||
;-------------------------------
|
||||
!zone {
|
||||
lda gIsRWTS ; if DOS 3.3-shaped RWTS
|
||||
bne .exit
|
||||
; gTrack = 0
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda #$B5
|
||||
sta gDisplayBytes+1 ; address (hi)
|
|
@ -6,8 +6,9 @@
|
|||
;-------------------------------
|
||||
!zone {
|
||||
_jmpb660
|
||||
lda gIsRWTS ; if DOS 3.3-shaped RWTS
|
||||
bne .exit
|
||||
; gTrack = 0
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda #$02
|
||||
ldx #$DC
|
||||
ldy #$1D
|
|
@ -7,8 +7,9 @@
|
|||
;-------------------------------
|
||||
!zone {
|
||||
_jmpb720
|
||||
lda gIsRWTS ; if DOS 3.3-shaped RWTS
|
||||
bne .exit
|
||||
; gTrack = 0
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda #$0B
|
||||
ldx #$08
|
||||
ldy #$18
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
; #JMPBBFE
|
||||
; marketed as 'Lock-It-Up'
|
||||
; boot0 jumps to ($BBFE) instead of ($08FD)
|
||||
|
@ -40,6 +39,7 @@
|
|||
; - Kindercomp (first release)
|
||||
; - Knowledge Master (all disks)
|
||||
; - La Triviata
|
||||
; - Mask Parade
|
||||
; - MasterType and Training Ground 2.1
|
||||
; - MasterType's Figures and Formulas
|
||||
; - Mastering Consonants
|
||||
|
@ -93,11 +93,13 @@
|
|||
;-------------------------------
|
||||
!zone {
|
||||
_jmpbbfe
|
||||
lda gIsBoot0 ; if DOS 3.3 boot0 loader
|
||||
bne .exit
|
||||
; gTrack = 0 here
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda #$00
|
||||
ldx #$4B
|
||||
ldy #$02
|
||||
jsr compare ; and T00,S00,$4B ==
|
||||
jsr compare ; if T00,S00,$4B ==
|
||||
!byte $FE,$BB
|
||||
bcs .exit
|
||||
|
||||
|
@ -120,7 +122,7 @@ _jmpbbfe
|
|||
!byte $8D,$00,$02
|
||||
bcs .exit
|
||||
|
||||
.yes stx + ; byte offset (varies)
|
||||
.yes stx @offset ; byte offset (varies)
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
|
@ -133,20 +135,24 @@ _jmpbbfe
|
|||
ldx #$FE
|
||||
ldy #$01
|
||||
jsr modify
|
||||
+ !byte $FD ; SMC (byte offset of new entry point)
|
||||
@offset !byte $FD ; SMC (byte offset of new entry point)
|
||||
|
||||
; check for code that branches over a serial number
|
||||
|
||||
ldx #$5E
|
||||
iny ; Y=#$02
|
||||
jsr compare ; check for code that branches over serial number
|
||||
jsr compare
|
||||
!byte $D0,$05
|
||||
bcs .exit
|
||||
bcs .checkSwapper
|
||||
|
||||
; see if there is actually a non-zero serial number
|
||||
|
||||
inx
|
||||
inx
|
||||
ldy #$05
|
||||
jsr compare ; see if there is actually a non-zero serial number
|
||||
jsr compare
|
||||
!byte $00,$00,$00,$00,$00
|
||||
bcc .exit ; passport-test-suite/Quadrilaterals.woz [C=1] here
|
||||
bcc .checkSwapper ; passport-test-suite/Quadrilaterals.woz [C=1] here
|
||||
|
||||
ldy #4
|
||||
- lda $1560, y
|
||||
|
@ -158,5 +164,24 @@ _jmpbbfe
|
|||
jsr PrintByID
|
||||
!byte s_lockitupserial
|
||||
|
||||
.checkSwapper
|
||||
; check for RWTS swappers
|
||||
|
||||
lda #$04
|
||||
ldx #$69
|
||||
ldy #$01
|
||||
jsr compare ; if T00,S04,$69 ==
|
||||
!byte $A9
|
||||
bcs + ; passport-test-suite/Mask Parade.woz [C=0] matches
|
||||
jsr modify ; then set T00,S04,$69 =
|
||||
!byte $60
|
||||
+
|
||||
ldx #$7D
|
||||
jsr compare ; if T00,S04,$7D ==
|
||||
!byte $A9
|
||||
bcs + ; passport-test-suite/Mask Parade.woz [C=0] matches
|
||||
jsr modify ; then set T00,S04,$7D =
|
||||
!byte $60
|
||||
+
|
||||
.exit
|
||||
}
|
|
@ -8,8 +8,9 @@
|
|||
;-------------------------------
|
||||
!zone {
|
||||
_jmpbcf0
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne .exit
|
||||
; gTrack = 0
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda #$03
|
||||
ldx #$94
|
||||
ldy #$08
|
|
@ -31,8 +31,9 @@
|
|||
;-------------------------------
|
||||
!zone {
|
||||
_jmpbeb1
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne .exit
|
||||
; gTrack = 0
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda #$02
|
||||
ldx #$48
|
||||
ldy #$10
|
|
@ -8,8 +8,9 @@
|
|||
; see jmpbeb1.a for compatibility list
|
||||
;-------------------------------
|
||||
!zone {
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne .exit
|
||||
; gTrack = 0
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda #$02
|
||||
ldx #$F4
|
||||
ldy #$0D
|
|
@ -6,8 +6,9 @@
|
|||
; - KidWriter (Spinnaker Software)
|
||||
;-------------------------------
|
||||
!zone {
|
||||
lda gIsRWTS ; if DOS 3.3-shaped RWTS
|
||||
bne .exit
|
||||
; gTrack = 0
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda #$07
|
||||
ldx #$00
|
||||
ldy #$03
|
|
@ -6,8 +6,9 @@
|
|||
; - Mastery Arithmetic Games v1.2 (Mastery Development)
|
||||
;-------------------------------
|
||||
!zone {
|
||||
lda gIsRWTS ; if DOS 3.3-shaped RWTS
|
||||
bne .exit
|
||||
; gTrack = 0
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda #$07
|
||||
ldx #$00
|
||||
ldy #$03
|
|
@ -8,6 +8,8 @@
|
|||
; e.g. 4: A-201 Conquering Whole Numbers
|
||||
;-------------------------------
|
||||
!zone {
|
||||
; gTrack = 0 here
|
||||
|
||||
lda gMECCFastloadType
|
||||
cmp #ID_MECC1
|
||||
bcc .scaninfo
|
|
@ -6,8 +6,9 @@
|
|||
; and others by Methods & Solutions
|
||||
;-------------------------------
|
||||
!zone {
|
||||
lda gIsBoot0 ; if DOS 3.3 boot0 loader
|
||||
bne .exit
|
||||
; gTrack = 0
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda #$08
|
||||
ldx #$5A
|
||||
ldy #$03
|
|
@ -11,8 +11,9 @@
|
|||
; - Short Circuit
|
||||
;-------------------------------
|
||||
!zone {
|
||||
lda gIsRWTS ; if DOS 3.3-shaped RWTS
|
||||
bne .exit
|
||||
; gTrack = 0
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
ldy #$09
|
||||
jsr SearchTrack
|
||||
!byte $A0,$00 ; LDY #$00
|
|
@ -6,8 +6,9 @@
|
|||
; - Crown Of Arthain
|
||||
;-------------------------------
|
||||
!zone {
|
||||
lda gIsRWTS ; if DOS 3.3-shaped RWTS
|
||||
bne .exit
|
||||
; gTrack = 0
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda #$02
|
||||
ldx #$5E
|
||||
ldy #$03
|
|
@ -7,6 +7,9 @@
|
|||
; - The Function Game (MUSE)
|
||||
;-------------------------------
|
||||
!zone {
|
||||
; gTrack = 0
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda gIsMUSERWTS
|
||||
bne .exit
|
||||
lda #$06
|
|
@ -6,8 +6,9 @@
|
|||
;-------------------------------
|
||||
!zone {
|
||||
_nibtable
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne .exit
|
||||
; gTrack = 0
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda #$02
|
||||
ldx #$6D
|
||||
ldy #$03
|
|
@ -19,7 +19,7 @@
|
|||
!zone {
|
||||
lda gIsPanglosDOS ; only if PanglossianDOS
|
||||
bne .exit
|
||||
ldy #6
|
||||
ldy #$06
|
||||
jsr SearchTrack
|
||||
!byte $C9,$AD ;CMP #$AD
|
||||
!byte $D0,$E7 ;BNE *-$17
|
||||
|
@ -32,7 +32,7 @@
|
|||
ldy #$02
|
||||
jsr modify
|
||||
!byte $A9,$00 ;LDA #$00
|
||||
ldy #6
|
||||
ldy #$06
|
||||
jsr SearchTrack
|
||||
!byte $C9,$96 ;CMP #$96
|
||||
!byte $D0,$E7 ;BNE *-$17
|
||||
|
@ -47,7 +47,7 @@
|
|||
!byte $A9,$00 ;LDA #$00
|
||||
|
||||
;Monopoly
|
||||
ldy #6
|
||||
ldy #$06
|
||||
jsr SearchTrack
|
||||
!byte $C9,$AB ;CMP #$AB
|
||||
!byte $D0,$A4 ;BNE *-$5A
|
||||
|
@ -58,11 +58,10 @@
|
|||
ldy #$01
|
||||
jsr modify
|
||||
!byte $AA
|
||||
ldy #3
|
||||
ldy #$03
|
||||
jsr SearchTrack
|
||||
!byte $4C,$56,$BB ;JMP $BB56
|
||||
bcs .exit
|
||||
ldy #$03
|
||||
jsr modify
|
||||
!byte $AD,$00,$E0 ;LDA $E000
|
||||
.exit
|
|
@ -21,8 +21,8 @@
|
|||
; - Problem Solving in Algebra (Encyclopaedia Britannica)
|
||||
;-------------------------------
|
||||
!zone {
|
||||
lda gIsBoot1 ; and DOS 3.3 boot1 loader
|
||||
bne .exit
|
||||
; gTrack = 0
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda #$01
|
||||
ldx #$48
|
||||
|
@ -39,7 +39,6 @@
|
|||
!byte $EA
|
||||
bcs .variant0 ; passport-test-suite/Math Skills Elementary Level.woz [C=1] here
|
||||
|
||||
ldy #$04
|
||||
jsr modify ; then set T00,S03,$3E =
|
||||
!byte $C9,$AA
|
||||
!byte $F0,$5C
|
||||
|
@ -61,8 +60,9 @@
|
|||
|
||||
.variant1
|
||||
;A=#$01 here regardless of how we got here
|
||||
;Y=#$02 here regardless of how we got here
|
||||
ldx #$87
|
||||
ldy #$03
|
||||
iny
|
||||
jsr compare ; if T00,S01,$87 ==
|
||||
!byte $6C,$58,$9D
|
||||
bcs .variant2 ; passport-test-suite/Pac-Man (Thunder Mountain).woz [C=0] here
|
|
@ -3,9 +3,8 @@
|
|||
;-------------------------------
|
||||
|
||||
!zone {
|
||||
ldy gIsRWTS ; DOS 3.3-shaped RWTSen only
|
||||
beq .initmatch1
|
||||
jmp .exit
|
||||
ldy #0
|
||||
jmp .initmatch1
|
||||
|
||||
; address prologue (read)
|
||||
; A,X
|
|
@ -5,6 +5,8 @@
|
|||
; but don't require any patches
|
||||
;-------------------------------
|
||||
_rwtslog_start
|
||||
; gTrack = 0 here
|
||||
|
||||
bit gMode ; nothing to do here in verify mode
|
||||
bmi @lsr6a_start
|
||||
jmp _rwtslog_end
|
|
@ -7,9 +7,9 @@
|
|||
; e.g. Puzzle Master
|
||||
;-------------------------------
|
||||
!zone {
|
||||
lda gIsBoot0 ; if DOS 3.3 boot0 loader
|
||||
ora gIsBoot1 ; and DOS 3.3 boot1 loader
|
||||
bne .exit
|
||||
; gTrack = 0
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda #$04
|
||||
ldx #$69
|
||||
ldy #$0B
|
|
@ -6,6 +6,9 @@
|
|||
; - Crown of Arthain
|
||||
;-------------------------------
|
||||
!zone {
|
||||
; gTrack = 0 here
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda #$06
|
||||
ldx #$56
|
||||
ldy #$05
|
|
@ -11,8 +11,9 @@
|
|||
; - The Chalice of Mostania (Coastal)
|
||||
;-------------------------------
|
||||
!zone {
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne .exit
|
||||
; gTrack = 0
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda #$03
|
||||
ldx #$92
|
||||
ldy #$07
|
|
@ -57,13 +57,13 @@
|
|||
; - Word Quest (1985)
|
||||
;-------------------------------
|
||||
!zone {
|
||||
sec
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne .exit
|
||||
; gTrack = 0
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda #$03
|
||||
ldx #$40
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S03,$40 ==
|
||||
jsr compare ; if T00,S03,$40 ==
|
||||
!byte $D0
|
||||
bcs .exit
|
||||
ldx #$9C
|
|
@ -7,8 +7,9 @@
|
|||
; - The Fourth R - Reasoning
|
||||
;-------------------------------
|
||||
!zone {
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne .exit
|
||||
; gTrack = 0
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda #$08
|
||||
ldx #$5A
|
||||
ldy #$03
|
|
@ -6,6 +6,9 @@
|
|||
; - Swordthrust
|
||||
;-------------------------------
|
||||
!zone {
|
||||
; gTrack = 0
|
||||
; Caller found DOS 3.3 RWTS
|
||||
|
||||
lda #$01
|
||||
ldx #$75
|
||||
ldy #(@end_swordthrust-@begin_swordthrust)
|
|
@ -22,10 +22,7 @@
|
|||
jsr PrintByID
|
||||
!byte s_trillium
|
||||
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
jsr inx4
|
||||
ldy #$01
|
||||
jsr modify
|
||||
!byte $2C ; BIT
|
||||
|
|
|
@ -56,7 +56,7 @@ StringTableLow
|
|||
!byte <.jmpbeca
|
||||
!byte <.bb03
|
||||
!byte <.rps
|
||||
!byte <.jmpae8e
|
||||
!byte <.nodiskin
|
||||
!byte <.diskvol
|
||||
!byte <.d5d5f7
|
||||
!byte <.construct
|
||||
|
@ -156,7 +156,6 @@ StringTableLow
|
|||
!byte <.erasingserialnumber
|
||||
!byte <.lockitupserial
|
||||
!byte <.protection
|
||||
!byte <.nodiskin
|
||||
|
||||
StringTableHigh
|
||||
!byte >.header
|
||||
|
@ -207,7 +206,7 @@ StringTableHigh
|
|||
!byte >.jmpbeca
|
||||
!byte >.bb03
|
||||
!byte >.rps
|
||||
!byte >.jmpae8e
|
||||
!byte >.nodiskin
|
||||
!byte >.diskvol
|
||||
!byte >.d5d5f7
|
||||
!byte >.construct
|
||||
|
@ -307,7 +306,6 @@ StringTableHigh
|
|||
!byte >.erasingserialnumber
|
||||
!byte >.lockitupserial
|
||||
!byte >.protection
|
||||
!byte >.nodiskin
|
||||
|
||||
;
|
||||
; Text can contain substitution strings, which
|
||||
|
@ -343,7 +341,7 @@ StringTableHigh
|
|||
.passport
|
||||
!text "Passport ",$00
|
||||
.header
|
||||
!text "@",s_passport,"by 4am@",s_space7,"@",s_space7," 2021-06-13",$00
|
||||
!text "@",s_passport,"by 4am@",s_space7,"@",s_space7," 2021-06-14",$00
|
||||
.bar9
|
||||
!text "_________",$00
|
||||
.bar18
|
||||
|
@ -558,10 +556,7 @@ StringTableHigh
|
|||
.rps
|
||||
!text "@",s_found,"RPS @",s_protectioncheck,$8D
|
||||
!text "Some sectors on T02 @",s_maybeunreadable,$8D,$00
|
||||
.jmpae8e
|
||||
!text "T00,S0D Disk calls a @",s_protectioncheck," at"
|
||||
!text "$AE8E after initializing DOS",$8D,$00
|
||||
.diskvol
|
||||
.diskvol
|
||||
!text "@",s_rwts,"requires a non-standard",$8D
|
||||
!text "disk volume number",$8D,$00
|
||||
.d5d5f7
|
||||
|
|
|
@ -50,7 +50,7 @@ s_e7 = $2C
|
|||
s_jmpbeca = $2D
|
||||
s_bb03 = $2E
|
||||
s_rps = $2F
|
||||
s_jmpae8e = $30
|
||||
s_nodiskin = $30
|
||||
s_diskvol = $31
|
||||
s_d5d5f7 = $32
|
||||
s_construct= $33
|
||||
|
@ -150,4 +150,3 @@ s_555 = $90
|
|||
s_erasingserialnumber = $91
|
||||
s_lockitupserial = $92
|
||||
s_protection = $93
|
||||
s_nodiskin = $94
|
||||
|
|
Loading…
Reference in New Issue
Block a user