mirror of
https://github.com/a2-4am/passport.git
synced 2024-11-19 03:06:34 +00:00
filter d5d5f7 patcher based on markers in T00S00
This commit is contained in:
parent
4016698078
commit
edc2f30894
34
src/id/d5d5f7.a
Normal file
34
src/id/d5d5f7.a
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
;-------------------------------
|
||||||
|
; IDD5D5F7
|
||||||
|
; Identify specific version of DOS 3.3 bootloader
|
||||||
|
; shared by all disks that use the D5D5F7 check.
|
||||||
|
; Note: this detection pattern makes no logical
|
||||||
|
; sense; it just happens to be a useful filter for
|
||||||
|
; the D5D5F7 patcher to use later. It filters out
|
||||||
|
; about 2/3 of disks on which I've never seen a
|
||||||
|
; D5D5F7 protection check, so we can save time by
|
||||||
|
; not doing full-track searches on those disks.
|
||||||
|
;
|
||||||
|
; in: $0800..$08FF contains T00,S00
|
||||||
|
; IDDOS33 returned success
|
||||||
|
; out: C clear if specific version of DOS 3.3 bootloader found
|
||||||
|
; C set otherwise
|
||||||
|
; X,Y preserved
|
||||||
|
; all other flags and registers clobbered
|
||||||
|
;-------------------------------
|
||||||
|
!zone {
|
||||||
|
IDD5D5F7
|
||||||
|
lda $084C
|
||||||
|
cmp #$08
|
||||||
|
bne .no
|
||||||
|
lda $08B0
|
||||||
|
cmp #$B6
|
||||||
|
bne .no
|
||||||
|
lda $08D0
|
||||||
|
cmp #$20
|
||||||
|
bne .no
|
||||||
|
clc
|
||||||
|
!byte $24
|
||||||
|
.no sec
|
||||||
|
rts
|
||||||
|
}
|
@ -22,6 +22,7 @@ IDBootloader
|
|||||||
sta gIsEA
|
sta gIsEA
|
||||||
sta gIsEEEF
|
sta gIsEEEF
|
||||||
sta gIsMECCFastloader
|
sta gIsMECCFastloader
|
||||||
|
sta gPossibleD5D5F7
|
||||||
lda #$00
|
lda #$00
|
||||||
sta gLastTrack
|
sta gLastTrack
|
||||||
;
|
;
|
||||||
@ -50,10 +51,14 @@ IDBootloader
|
|||||||
; Exit via custom trace function if found.
|
; Exit via custom trace function if found.
|
||||||
;
|
;
|
||||||
jsr IDDOS33
|
jsr IDDOS33
|
||||||
bcs +
|
bcs .notdos33
|
||||||
lda #TRUE
|
lda #TRUE
|
||||||
sta gIsBoot0
|
sta gIsBoot0
|
||||||
jsr IDDiversi
|
jsr IDD5D5F7
|
||||||
|
bcs +
|
||||||
|
lda #TRUE
|
||||||
|
sta gPossibleD5D5F7
|
||||||
|
+ jsr IDDiversi
|
||||||
bcc .diversi
|
bcc .diversi
|
||||||
jsr IDPronto
|
jsr IDPronto
|
||||||
bcc .pronto
|
bcc .pronto
|
||||||
@ -71,7 +76,8 @@ IDBootloader
|
|||||||
; early to munge the nibble tables used by the drive firmware.
|
; early to munge the nibble tables used by the drive firmware.
|
||||||
; Exit via custom trace function if found.
|
; Exit via custom trace function if found.
|
||||||
;
|
;
|
||||||
+ jsr ID8b3
|
.notdos33
|
||||||
|
jsr ID8b3
|
||||||
bcs +
|
bcs +
|
||||||
lda #s_jsr8b3
|
lda #s_jsr8b3
|
||||||
jsr PrintByID
|
jsr PrintByID
|
||||||
|
@ -157,6 +157,7 @@ FirstMover
|
|||||||
!source "id/quickdos.a"
|
!source "id/quickdos.a"
|
||||||
!source "id/diversidos.a"
|
!source "id/diversidos.a"
|
||||||
!source "id/prontodos.a"
|
!source "id/prontodos.a"
|
||||||
|
!source "id/d5d5f7.a"
|
||||||
!source "print.a"
|
!source "print.a"
|
||||||
!source "compare.a"
|
!source "compare.a"
|
||||||
!source "modify.a"
|
!source "modify.a"
|
||||||
@ -806,6 +807,10 @@ gIsMECCFastloader
|
|||||||
!byte FALSE ; 0=true, 1=false
|
!byte FALSE ; 0=true, 1=false
|
||||||
; reset before each operation
|
; reset before each operation
|
||||||
; set in IDBootloader() after reading T00,S00
|
; set in IDBootloader() after reading T00,S00
|
||||||
|
gPossibleD5D5F7
|
||||||
|
!byte FALSE ; 0=true, 1=false
|
||||||
|
; reset before each operation
|
||||||
|
; set in IDBootloader() after reading T00,S00
|
||||||
gOnAClearDayYouCanReadForever
|
gOnAClearDayYouCanReadForever
|
||||||
!byte FALSE ; 0=true, 1=false
|
!byte FALSE ; 0=true, 1=false
|
||||||
; retry reads with a captured RWTS forever,
|
; retry reads with a captured RWTS forever,
|
||||||
|
@ -2,11 +2,37 @@
|
|||||||
; #D5D5F7
|
; #D5D5F7
|
||||||
; nibble count with weird bitstream
|
; nibble count with weird bitstream
|
||||||
; involving $D5 and $F7 as delimiters
|
; involving $D5 and $F7 as delimiters
|
||||||
; e.g. NoteCard Maker, many Mindplay titles
|
;
|
||||||
; (Ace Detective, Robomath, Fraction-oids)
|
; Ace Detective
|
||||||
|
; Cat 'N Mouse
|
||||||
|
; Cotton Tales
|
||||||
|
; Dyno-Quest
|
||||||
|
; Easy Street
|
||||||
|
; Fraction-oids
|
||||||
|
; Math Magic
|
||||||
|
; RoboMath
|
||||||
|
; Sum Ducks
|
||||||
|
; NoteCard Maker
|
||||||
;-------------------------------
|
;-------------------------------
|
||||||
!zone {
|
!zone {
|
||||||
ldy #$20
|
;
|
||||||
|
; always run on Pascal disks
|
||||||
|
;
|
||||||
|
lda gIsPascal
|
||||||
|
beq +
|
||||||
|
;
|
||||||
|
; if DOS 3.3-shaped bootloader, only run if we found
|
||||||
|
; specific markers on T00,S00 earlier that are shared
|
||||||
|
; by all the samples I have that use this protection.
|
||||||
|
; (This filter is subject to revision if we find
|
||||||
|
; additional samples.)
|
||||||
|
;
|
||||||
|
lda gIsBoot0
|
||||||
|
bne .exit
|
||||||
|
lda gPossibleD5D5F7
|
||||||
|
bne .exit
|
||||||
|
|
||||||
|
+ ldy #$20
|
||||||
jsr SearchTrack
|
jsr SearchTrack
|
||||||
!byte $BD,$8C,$C0; LDA $C08C,X
|
!byte $BD,$8C,$C0; LDA $C08C,X
|
||||||
!byte $10,$FB ; BPL -$FB
|
!byte $10,$FB ; BPL -$FB
|
||||||
|
Loading…
Reference in New Issue
Block a user