mirror of
https://github.com/a2-4am/passport.git
synced 2025-01-27 14:32:36 +00:00
add log message for D5-plus-timing-bit patch; expand support for detection of possible Gamco protection
This commit is contained in:
parent
28ff54ed44
commit
fd0dd20afe
@ -24,7 +24,7 @@ SkipTrack
|
||||
.checkunformat
|
||||
jsr IsUnformatted
|
||||
bcs .checkf7
|
||||
lda #s_unformat
|
||||
+ lda #s_unformat
|
||||
bcc .skiptrack ; always taken
|
||||
;
|
||||
; 3) $F7 protection track (F7F6EFEAAB nibble sequence)
|
||||
@ -53,7 +53,22 @@ SkipTrack
|
||||
; note: execution falls through here
|
||||
.skiptrack
|
||||
jsr PrintByID
|
||||
clc
|
||||
;
|
||||
; Skipping T22 on a ProDOS disk might indicate the presence of a
|
||||
; Gamco Industries protection elsewhere on the disk. Different
|
||||
; Gamco disks present as different types of weirdness on T22 --
|
||||
; EEEF, sync, or even unformatted. (The actual protection is just
|
||||
; a bad block check, so putting the code here will catch all
|
||||
; possible cases.)
|
||||
;
|
||||
lda gTrack
|
||||
cmp #$22
|
||||
bne +
|
||||
lda gIsProDOS
|
||||
bne +
|
||||
lda #TRUE
|
||||
sta gPossibleGamco
|
||||
+ clc
|
||||
!byte $24 ; hides next SEC
|
||||
.fail
|
||||
sec
|
||||
@ -159,8 +174,6 @@ IsEEEF
|
||||
bpl -
|
||||
cmp #$AE
|
||||
bne .restart
|
||||
lda #TRUE
|
||||
sta gIsEEEF
|
||||
clc
|
||||
!byte $24 ; hides SEC
|
||||
.fail sec
|
||||
|
@ -21,8 +21,8 @@ IDBootloader
|
||||
sta gIsProtDOS
|
||||
sta gIsDavidDOS
|
||||
sta gIsEA
|
||||
sta gIsEEEF
|
||||
sta gIsMECCFastloader
|
||||
sta gPossibleGamco
|
||||
sta gPossibleD5D5F7
|
||||
lda #$00
|
||||
sta gLastTrack
|
||||
|
@ -95,7 +95,7 @@ flag = $FF ; byte
|
||||
}
|
||||
|
||||
; Application constants (not zero addresses)
|
||||
RELBASE = $5D00 ; address to move Passport code
|
||||
RELBASE = $5C00 ; address to move Passport code
|
||||
; so that it's out of the way
|
||||
LOWPOINT = $4300 ; lowest available address for code
|
||||
BASEPAGE = $10 ; Special Delivery tracer assumes
|
||||
@ -737,7 +737,7 @@ _applyToAll
|
||||
!source "patchers/sierra.a" ; gIsBoot0 only
|
||||
!source "patchers/corrupter.a" ; T13 only
|
||||
!source "patchers/ea.a" ; (gIsEA || gIsBoot0) only
|
||||
!source "patchers/gamco.a" ; gIsEEEF only
|
||||
!source "patchers/gamco.a" ; gPossibleGamco only
|
||||
!source "patchers/optimum.a" ; gIsOptimum only
|
||||
!source "patchers/bootcounter.a" ; T01 only
|
||||
!source "patchers/jmpb412.a" ; T02 only
|
||||
@ -821,10 +821,10 @@ gIsEA
|
||||
!byte FALSE ; 0=true, 1=false
|
||||
; reset before each operation
|
||||
; set in IDBootloader() after reading T00,S00
|
||||
gIsEEEF
|
||||
gPossibleGamco
|
||||
!byte FALSE ; 0=true, 1=false
|
||||
; reset before each operation
|
||||
; set in IsEEEF() after reading T22
|
||||
; set in SkipTrack() after reading T22
|
||||
gIsOptimum
|
||||
!byte FALSE ; 0=true, 1=false
|
||||
; reset before each operation
|
||||
|
@ -12,6 +12,7 @@
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne .exit
|
||||
lda #$03
|
||||
sta gDisplayBytes
|
||||
ldx #$4F
|
||||
ldy #$11
|
||||
jsr compare ; and T00,S03,$4F ==
|
||||
@ -24,6 +25,8 @@
|
||||
!byte $C9,$D5 ; CMP #$D5
|
||||
!byte $F0,$12 ; BEQ +$12
|
||||
bcs .exit
|
||||
lda #s_d5timing
|
||||
jsr PrintByID
|
||||
lda #$03
|
||||
ldx #$58
|
||||
ldy #$02
|
||||
|
@ -5,9 +5,11 @@
|
||||
; e.g. Essential Grammar, Math Football
|
||||
;-------------------------------
|
||||
!zone {
|
||||
; [speed optimization: only ever seen this protection on disks with a specific
|
||||
; nibble sequence on track $22]
|
||||
lda gIsEEEF
|
||||
; [speed optimization: only ever seen this protection on disks with
|
||||
; a specific nibble sequence on track $22, or an unformatted T22 --
|
||||
; if this global variable is set in SkipTrack() after failing to read T22S0F,
|
||||
; then we scan every other track for the Gamco protection code]
|
||||
lda gPossibleGamco
|
||||
bne .exit
|
||||
ldy #$12
|
||||
jsr SearchTrack
|
||||
|
@ -102,7 +102,8 @@ s_bbf9 = $53
|
||||
s_micrograms = $54
|
||||
s_cmpbne0 = $55
|
||||
s_writeram = $56
|
||||
STRINGCOUNT = $57
|
||||
s_d5timing = $57
|
||||
STRINGCOUNT = $58
|
||||
|
||||
!zone {
|
||||
StringTable
|
||||
@ -193,6 +194,7 @@ StringTable
|
||||
!word .micrograms
|
||||
!word .cmpbne0
|
||||
!word .writeram
|
||||
!word .d5timing
|
||||
;
|
||||
; Text can contain substitution strings, which
|
||||
; are replaced by current values at runtime. Each
|
||||
@ -218,7 +220,7 @@ StringTable
|
||||
; can be set directly before calling PrintByID.
|
||||
;
|
||||
.header
|
||||
!text "Passport by 4am 2017-07-02",00
|
||||
!text "Passport by 4am 2017-07-03",00
|
||||
.mainmenu
|
||||
!text "________________________________________",$8D,$8D,$8D,$8D,$8D,$8D,$8D
|
||||
!text " "
|
||||
@ -483,4 +485,7 @@ StringTable
|
||||
!text "first address epilogue nibble.",$8D,00
|
||||
.writeram
|
||||
!text "Writing to RAM disk",$8D,00
|
||||
.d5timing
|
||||
!text "T%t,S%0 RWTS accepts $D5 plus a timing",$8D
|
||||
!text "bit as the entire address prologue.",$8D,$00
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user