passport/src/patchers/gamco.a
2022-11-17 01:06:05 -05:00

42 lines
1.4 KiB
Plaintext

;-------------------------------
; #GAMCO
; bad block check POKEd into memory
; from compiled BASIC
; e.g. Essential Grammar, Math Football
;-------------------------------
!zone {
; [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
!byte $33,$32,$01,$30,$03,$31,$39,$31
!byte $03,$31,$32,$38,$02,$31,$31,$02
!byte $39,$36
bcs .var2 ; passport-test-suite/Essential Grammar.woz [C=0] matches
jsr PrintByID
!byte s_poke
jsr modify
!byte $34,$34,$01,$30,$02,$31,$30,$03
!byte $32,$33,$34,$03,$31,$36,$39,$02
!byte $33,$39
bvc .exit
.var2
ldy #$12
jsr SearchTrack
!byte $32,$01,$30,$03,$31,$39,$31,$03
!byte $31,$32,$38,$03,$32,$35,$30,$02
!byte $33,$31
bcs .exit ; passport-test-suite/Percent (Gamco).woz [C=0] matches
jsr PrintByID
!byte s_poke
jsr modify
!byte $36,$01,$30,$03,$31,$36,$39,$03
!byte $31,$32,$38,$03,$31,$36,$39,$02
!byte $33,$39
.exit
}