add support for detecting ProDOS RWTS that alternates D4/D5 prologue, requires timing bit for address epilogue

This commit is contained in:
4am 2017-03-04 10:29:44 -05:00
parent 51323ea92b
commit 438711b396
4 changed files with 44 additions and 3 deletions

View File

@ -697,6 +697,7 @@ _applyToAll
!source "patchers/a5count.a" !source "patchers/a5count.a"
!source "patchers/d5d5f7.a" !source "patchers/d5d5f7.a"
!source "patchers/prodosrwts.a" !source "patchers/prodosrwts.a"
!source "patchers/prodos6a.a"
!source "patchers/prodosmecc.a" !source "patchers/prodosmecc.a"
!source "patchers/rwtsswapmecc.a" !source "patchers/rwtsswapmecc.a"
!source "patchers/protecteddos.a" !source "patchers/protecteddos.a"

38
src/patchers/prodos6a.a Normal file
View File

@ -0,0 +1,38 @@
;-------------------------------
; #PRODOS6A
; disk allows either $D4 or $D5 for the
; first address prologue nibble
; (no patches required, but we want to
; log it)
;-------------------------------
!zone {
prodos6a
lda gIsProDOS ; only if ProDOS (separate check for DOS)
bne .exit
lda #$0F
sta .sector+1
.sector lda #$FF ; modified at runtime
sta gDisplayBytes
ldx #$A5
ldy #$08
jsr compare
!byte $BD,$8C,$C0,$10,$FB,$4A,$C9,$6A
bcs +
lda #s_lsr6a
jsr PrintByID
inc gPatchCount
+
lda .sector+1
ldx #$EF
ldy #$07
jsr compare
!byte $48,$68,$BD,$8C,$C0,$C9,$08
bcs .nextsector
lda #s_bcs08
jsr PrintByID
inc gPatchCount
.nextsector
dec .sector+1
bpl .sector
.exit
}

View File

@ -634,6 +634,7 @@ rwtspatcher
lda gIsRWTS ; if DOS 3.3 RWTS lda gIsRWTS ; if DOS 3.3 RWTS
bne .lsr6a bne .lsr6a
lda #$03 lda #$03
sta gDisplayBytes
ldx #$4F ldx #$4F
ldy #$0A ldy #$0A
jsr compare ; and T00,S03,$4F == jsr compare ; and T00,S03,$4F ==
@ -654,6 +655,7 @@ rwtspatcher
lda gIsRWTS ; if DOS 3.3 RWTS lda gIsRWTS ; if DOS 3.3 RWTS
bne .bcs08 bne .bcs08
lda #$03 lda #$03
sta gDisplayBytes
ldx #$8B ldx #$8B
ldy #$15 ldy #$15
jsr compare ; and T00,S03,$8B == jsr compare ; and T00,S03,$8B ==

View File

@ -192,7 +192,7 @@ StringTable
; can be set directly before calling PrintByID. ; can be set directly before calling PrintByID.
; ;
.header .header
!text "Passport by 4am 2017-03-03",00 !text "Passport by 4am 2017-03-04",00
.mainmenu .mainmenu
!text "________________________________________",$8D,$8D,$8D,$8D,$8D,$8D,$8D !text "________________________________________",$8D,$8D,$8D,$8D,$8D,$8D,$8D
!text " " !text " "
@ -381,10 +381,10 @@ StringTable
.datasoft .datasoft
!text "T%t,S%0 Found Datasoft protection check",$8D,00 !text "T%t,S%0 Found Datasoft protection check",$8D,00
.lsr6a .lsr6a
!text "T00,S03 RWTS accepts $D4 or $D5 for the",$8D !text "T%t,S%0 RWTS accepts $D4 or $D5 for the",$8D
!text "first address prologue nibble.",$8D,00 !text "first address prologue nibble.",$8D,00
.bcs08 .bcs08
!text "T00,S03 RWTS accepts $DE or a timing bit" !text "T%t,S%0 RWTS accepts $DE or a timing bit"
!text "for the first address epilogue nibble.",$8D,00 !text "for the first address epilogue nibble.",$8D,00
.jmpb660 .jmpb660
!text "T00,S02 RWTS requires timing bits after",$8D !text "T00,S02 RWTS requires timing bits after",$8D