add jmpb412 patcher

This commit is contained in:
4am 2017-05-05 14:04:32 -04:00
parent b53bd0708b
commit 320872ff9e
4 changed files with 77 additions and 12 deletions

View File

@ -701,22 +701,23 @@ _applyToT00
!source "patchers/jsr8b3.a" !source "patchers/jsr8b3.a"
_applyToAll _applyToAll
!source "patchers/universale7.a" !source "patchers/universale7.a"
!source "patchers/runhello.a" !source "patchers/runhello.a" ; !gIsProDOS && !gIsPascal only
!source "patchers/a6bc95.a" !source "patchers/a6bc95.a" ; gIsPascal only
!source "patchers/a5count.a" !source "patchers/a5count.a" ; gIsPascal only
!source "patchers/d5d5f7.a" !source "patchers/d5d5f7.a"
!source "patchers/prodosrwts.a" !source "patchers/prodosrwts.a" ; gIsProDOS only
!source "patchers/prodos6a.a" !source "patchers/prodos6a.a" ; gIsProDOS only
!source "patchers/prodosmecc.a" !source "patchers/prodosmecc.a" ; gIsProDOS only
!source "patchers/rwtsswapmecc.a" !source "patchers/rwtsswapmecc.a"
!source "patchers/protecteddos.a" !source "patchers/protecteddos.a" ; gIsProtDOS only
!source "patchers/fbff.a" !source "patchers/fbff.a"
!source "patchers/sierra.a" !source "patchers/sierra.a"
!source "patchers/corrupter.a" !source "patchers/corrupter.a"
!source "patchers/ea.a" !source "patchers/ea.a" ; gIsEA only (+gIsBoot0 for DOS titles)
!source "patchers/gamco.a" !source "patchers/gamco.a" ; gIsEEEF only
!source "patchers/optimum.a" !source "patchers/optimum.a" ; gIsOptimum only
!source "patchers/bootcounter.a" !source "patchers/bootcounter.a" ; T01 only
!source "patchers/jmpb412.a" ; T02 only
lda gPatchCount lda gPatchCount
beq .nopatches beq .nopatches

57
src/patchers/jmpb412.a Normal file
View File

@ -0,0 +1,57 @@
;-------------------------------
; #JMPB412
; Boot1 jumps to $B3C3 to read
; and decrypt a nibble check at
; $B412, which exits via $9D84
; if successful
;
; Zoo Goer
; Zoo Collector
; Zoo Builder
; America Coast to Coast (Mindscape release)
;-------------------------------
!zone {
lda gTrack
cmp #$02
bne .exit
lda #$00
ldx #$C3
ldy #$35
jsr compare ; if T02,S00,$C3 ==
!byte $A9,WILDCARD;LDA #$**
!byte $8D,$EC,$B7; STA $B7EC
!byte $A9,WILDCARD;LDA #$**
!byte $8D,$ED,$B7; STA $B7ED
!byte $A9,$B4 ; LDA #$B4
!byte $8D,$F1,$B7; STA $B7F1
!byte $A9,$00 ; LDA #$00
!byte $8D,$F3,$B7; STA $B7F3
!byte $8D,$EB,$B7; STA $B7EB
!byte $A9,$B7 ; LDA #$B7
!byte $A0,$E8 ; LDY #$E8
!byte $20,$B5,$B7; JSR $B7B5
!byte $A0,$00 ; LDY #$00
!byte $B9,$12,$B4; LDA $B412,Y
!byte $49,WILDCARD;EOR #$**
!byte $99,$12,$B4; STA $B412,Y
!byte $C8 ; INY
!byte $C0,$FF ; CPY #$FF
!byte $D0,$F3 ; BNE
!byte WILDCARD
!byte WILDCARD
!byte WILDCARD
!byte WILDCARD
!byte WILDCARD
!byte $4C,$12,$B4; JMP $B412
bcs .exit
sta gDisplayBytes
lda #s_jmpb412
jsr PrintByID
lda #$00
ldx #$F6
ldy #$02
jsr modify ; then set T02,S00,$F6 =
!byte $84,$9D
.exit
}

View File

@ -2,6 +2,8 @@
; #RWTSSWAPMECC ; #RWTSSWAPMECC
; post-boot RWTS swapper in MECC ; post-boot RWTS swapper in MECC
; disks ; disks
; TODO might be able to gate this on MECC fastloader
; (I think it's only used on Dataquest disks)
;------------------------------- ;-------------------------------
!zone { !zone {
_rwtsswapmecc _rwtsswapmecc

View File

@ -96,7 +96,8 @@ s_daviddos = $4D
s_quickdos = $4E s_quickdos = $4E
s_diversidos = $4F s_diversidos = $4F
s_prontodos = $50 s_prontodos = $50
STRINGCOUNT = $51 s_jmpb412 = $51
STRINGCOUNT = $52
!zone { !zone {
StringTable StringTable
@ -181,6 +182,7 @@ StringTable
!word .quickdos !word .quickdos
!word .diversidos !word .diversidos
!word .prontodos !word .prontodos
!word .jmpb412
; ;
; Text can contain substitution strings, which ; Text can contain substitution strings, which
; are replaced by current values at runtime. Each ; are replaced by current values at runtime. Each
@ -457,4 +459,7 @@ StringTable
!text "T00,S00 Found Diversi-DOS bootloader",$8D,00 !text "T00,S00 Found Diversi-DOS bootloader",$8D,00
.prontodos .prontodos
!text "T00,S00 Found Pronto-DOS bootloader",$8D,00 !text "T00,S00 Found Pronto-DOS bootloader",$8D,00
.jmpb412
!text "T02,S00 Disk calls a protection check",$8D
!text "at $B412 before initializing DOS.",$8D,00
} }