mirror of
https://github.com/a2-4am/passport.git
synced 2024-08-31 08:29:14 +00:00
add support for Didatech [fixes Crosscountry USA, Canada, California]
This commit is contained in:
parent
540c9fb161
commit
84a1713b5b
@ -180,7 +180,7 @@ ADStyle
|
|||||||
;
|
;
|
||||||
+
|
+
|
||||||
b4bbcompare
|
b4bbcompare
|
||||||
lda #$FD ; modified at runtime (in Inspect1)
|
lda #$FD ; SMC
|
||||||
ldx #$00
|
ldx #$00
|
||||||
ldy #$20
|
ldy #$20
|
||||||
jsr CompareMemory
|
jsr CompareMemory
|
||||||
@ -236,10 +236,10 @@ x0 lda $FFC2 ; high byte modified at runtime (above)
|
|||||||
sta gPossibleB4BBBasic
|
sta gPossibleB4BBBasic
|
||||||
lda #$BB
|
lda #$BB
|
||||||
b4bbmodify
|
b4bbmodify
|
||||||
sta $FFFF ; modified at runtime (high byte in Inspect1, low byte above)
|
sta $FFFF ; SMC
|
||||||
lda #$DE
|
lda #$DE
|
||||||
b4bbmodify2
|
b4bbmodify2
|
||||||
sta $FFFF ; modified at runtime (high byte in Inspect1, low byte above)
|
sta $FFFF ; SMC
|
||||||
lda gIsDOS32
|
lda gIsDOS32
|
||||||
bne _b4bbexit
|
bne _b4bbexit
|
||||||
lda #kSectorCustomDOS32B4BB
|
lda #kSectorCustomDOS32B4BB
|
||||||
|
@ -79,6 +79,10 @@
|
|||||||
; set in IDBootFailure() after reading T00
|
; set in IDBootFailure() after reading T00
|
||||||
|
|
||||||
FIRSTFILTER
|
FIRSTFILTER
|
||||||
|
;gIsDidatech
|
||||||
|
!byte FALSE ; 0=true, 1=false
|
||||||
|
; reset before each operation
|
||||||
|
; set in TraceDOS33c() after tracing DOS 3.3-shaped RWTS
|
||||||
;gIsEnlightenment
|
;gIsEnlightenment
|
||||||
!byte FALSE ; 0=true, 1=false
|
!byte FALSE ; 0=true, 1=false
|
||||||
; reset before each operation
|
; reset before each operation
|
||||||
|
@ -185,9 +185,10 @@ gPossibleB4BBBasic = gPossibleWoodbury-$01 ; byte
|
|||||||
gIsLowDOS = gPossibleB4BBBasic-$01 ; byte
|
gIsLowDOS = gPossibleB4BBBasic-$01 ; byte
|
||||||
gIsBaudville = gIsLowDOS-$01 ; byte
|
gIsBaudville = gIsLowDOS-$01 ; byte
|
||||||
gIsEnlightenment = gIsBaudville-$01 ; byte
|
gIsEnlightenment = gIsBaudville-$01 ; byte
|
||||||
|
gIsDidatech = gIsEnlightenment-$01 ; byte
|
||||||
;LASTFILTER ; add new gIs* above this line
|
;LASTFILTER ; add new gIs* above this line
|
||||||
;gIsInfocom18 is a special case whose ID is not in the regular inspection path
|
;gIsInfocom18 is a special case whose ID is not in the regular inspection path
|
||||||
gIsInfocom18 = gIsEnlightenment-$01 ; byte
|
gIsInfocom18 = gIsDidatech-$01 ; byte
|
||||||
;gIs13Sector is a special case whose ID is not in the regular inspection path
|
;gIs13Sector is a special case whose ID is not in the regular inspection path
|
||||||
gIs13Sector = gIsInfocom18-$01 ; byte
|
gIs13Sector = gIsInfocom18-$01 ; byte
|
||||||
;gMECCFastloadType is a special case integer whose default value cannot be #FALSE
|
;gMECCFastloadType is a special case integer whose default value cannot be #FALSE
|
||||||
|
@ -204,6 +204,28 @@ TraceDOS33c ; 2nd-level trace callback is here
|
|||||||
sta T02S05
|
sta T02S05
|
||||||
.notMilliken
|
.notMilliken
|
||||||
;
|
;
|
||||||
|
; Check for Didatech decryption routine
|
||||||
|
; (affects readable/ignoreable sector map, so must ID now)
|
||||||
|
;
|
||||||
|
jsr $ff58
|
||||||
|
lda MaybeBC
|
||||||
|
ldx #$E1
|
||||||
|
ldy #$0A
|
||||||
|
jsr CompareMemory
|
||||||
|
!byte $A2,$04
|
||||||
|
!byte $A0,$05
|
||||||
|
!byte $A9,$96
|
||||||
|
!byte $59,$00,$08
|
||||||
|
!byte $99
|
||||||
|
bcs .notDidatech ; passport-test-suite/Crosscountry Canada.woz [C=0] matches
|
||||||
|
jsr PrintByID
|
||||||
|
!byte s_didatech
|
||||||
|
lda #kSectorOptional
|
||||||
|
sta T02S07
|
||||||
|
lda #TRUE
|
||||||
|
sta gIsDidatech
|
||||||
|
.notDidatech
|
||||||
|
;
|
||||||
; Try to initialize the 'current track' variable like the bootloader would --
|
; Try to initialize the 'current track' variable like the bootloader would --
|
||||||
; required for some disks that use a strange location for this variable
|
; required for some disks that use a strange location for this variable
|
||||||
; e.g. Super Taxman II
|
; e.g. Super Taxman II
|
||||||
|
@ -385,7 +385,8 @@ AnalyzeTrack
|
|||||||
!source "patchers/mak.a" ; gIsBoot0 && T02 only
|
!source "patchers/mak.a" ; gIsBoot0 && T02 only
|
||||||
!source "patchers/jsr8635.a" ; gIsBoot0 only
|
!source "patchers/jsr8635.a" ; gIsBoot0 only
|
||||||
!source "patchers/sierra.a" ; gIsBoot0 only
|
!source "patchers/sierra.a" ; gIsBoot0 only
|
||||||
!source "patchers/probs5.a"
|
!source "patchers/probs5.a" ; gIsBoot0 only
|
||||||
|
!source "patchers/didatech.a" ; gIsBoot0 && gIsDidatech only
|
||||||
_endDOS33Patchers
|
_endDOS33Patchers
|
||||||
;
|
;
|
||||||
; Diversi-DOS-specific patchers
|
; Diversi-DOS-specific patchers
|
||||||
|
25
src/patchers/didatech.a
Normal file
25
src/patchers/didatech.a
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
;-------------------------------
|
||||||
|
; #DIDATECH
|
||||||
|
; nibble check of malformed T02,S07
|
||||||
|
;
|
||||||
|
; tested on
|
||||||
|
; - Crosscountry Canada
|
||||||
|
; - Crosscountry USA
|
||||||
|
; - Crosscountry California
|
||||||
|
;-------------------------------
|
||||||
|
lda gIsDidatech
|
||||||
|
bne +
|
||||||
|
|
||||||
|
ldy #$09
|
||||||
|
jsr SearchTrack; code is XOR #$96 but not tamper-checked
|
||||||
|
!byte $06,$59 ; BCC -$CF
|
||||||
|
!byte $8E ; CLC
|
||||||
|
!byte $36,$68 ; LDY #$FE
|
||||||
|
!byte $06,$97 ; BCC +$01
|
||||||
|
!byte $5E ; INY
|
||||||
|
!byte $1A ; STY ....
|
||||||
|
bcs + ; passport-test-suite/Crosscountry Canada.woz [C=0] matches
|
||||||
|
jsr inx7
|
||||||
|
jsr modify1
|
||||||
|
!byte $7C ; NOP instead of INY
|
||||||
|
+
|
@ -75,6 +75,7 @@ T01S0F = T01 + $0F
|
|||||||
T02 = T01 + $10
|
T02 = T01 + $10
|
||||||
T02S04 = T02 + $04
|
T02S04 = T02 + $04
|
||||||
T02S05 = T02 + $05
|
T02S05 = T02 + $05
|
||||||
|
T02S07 = T02 + $07
|
||||||
T02S0A = T02 + $0A
|
T02S0A = T02 + $0A
|
||||||
T02S0C = T02 + $0C
|
T02S0C = T02 + $0C
|
||||||
T02S0F = T02 + $0F
|
T02S0F = T02 + $0F
|
||||||
|
@ -218,6 +218,7 @@ StringTableLow ; must be kept in sync with constants in enid.a
|
|||||||
!byte <.sfc
|
!byte <.sfc
|
||||||
!byte <.neosoft
|
!byte <.neosoft
|
||||||
!byte <.probs5
|
!byte <.probs5
|
||||||
|
!byte <.didatech
|
||||||
|
|
||||||
StringTableHigh ; must be kept in sync with constants in enid.a
|
StringTableHigh ; must be kept in sync with constants in enid.a
|
||||||
!byte >.header
|
!byte >.header
|
||||||
@ -375,6 +376,7 @@ StringTableHigh ; must be kept in sync with constants in enid.a
|
|||||||
!byte >.sfc
|
!byte >.sfc
|
||||||
!byte >.neosoft
|
!byte >.neosoft
|
||||||
!byte >.probs5
|
!byte >.probs5
|
||||||
|
!byte >.didatech
|
||||||
|
|
||||||
.passport
|
.passport
|
||||||
!text "Passport ",$00
|
!text "Passport ",$00
|
||||||
@ -776,3 +778,6 @@ StringTableHigh ; must be kept in sync with constants in enid.a
|
|||||||
!text "@",s_found,"Neosoft @",s_protectioncheck,$8D,$00
|
!text "@",s_found,"Neosoft @",s_protectioncheck,$8D,$00
|
||||||
.probs5
|
.probs5
|
||||||
!text "@",s_found,"PROBS5 @",s_protectioncheck,$8D,$00
|
!text "@",s_found,"PROBS5 @",s_protectioncheck,$8D,$00
|
||||||
|
.didatech
|
||||||
|
!text "@",s_found,"Didatech @",s_protectioncheck,$8D
|
||||||
|
!text "T02,S07 @",s_maybeunreadable,$8D,$00
|
||||||
|
@ -156,3 +156,4 @@ s_enlightenment = $97
|
|||||||
s_sfc = $98
|
s_sfc = $98
|
||||||
s_neosoft = $99
|
s_neosoft = $99
|
||||||
s_probs5 = $9A
|
s_probs5 = $9A
|
||||||
|
s_didatech = $9B
|
||||||
|
Loading…
Reference in New Issue
Block a user