mirror of
https://github.com/a2-4am/passport.git
synced 2024-06-28 11:30:21 +00:00
add support for Davidson disks (ID on T22, patch FORTH and asm variants)
This commit is contained in:
parent
5ed95fa109
commit
d6e3e0033e
|
@ -49,6 +49,10 @@
|
||||||
; compile-time flag, no way to change at runtime
|
; compile-time flag, no way to change at runtime
|
||||||
|
|
||||||
FIRSTFILTER
|
FIRSTFILTER
|
||||||
|
;gIsDavidson
|
||||||
|
!byte FALSE ; 0=true, 1=false
|
||||||
|
; reset before each operation
|
||||||
|
; set after reading T22,S00
|
||||||
;gIsPanglosDOS
|
;gIsPanglosDOS
|
||||||
!byte FALSE ; 0=true, 1=false
|
!byte FALSE ; 0=true, 1=false
|
||||||
; reset before each operation
|
; reset before each operation
|
||||||
|
|
|
@ -89,9 +89,10 @@ gPolarwareTamperCheck = gIsTrillium-$01 ; byte
|
||||||
gForceDiskVol = gPolarwareTamperCheck-$01 ; byte
|
gForceDiskVol = gPolarwareTamperCheck-$01 ; byte
|
||||||
gIsAdvent = gForceDiskVol-$01 ; byte
|
gIsAdvent = gForceDiskVol-$01 ; byte
|
||||||
gIsPanglosDOS = gIsAdvent-$01 ; byte
|
gIsPanglosDOS = gIsAdvent-$01 ; byte
|
||||||
|
gIsDavidson = gIsPanglosDOS-$01 ; byte
|
||||||
;LASTFILTER ; add new gIs* above this line
|
;LASTFILTER ; add new gIs* above this line
|
||||||
|
|
||||||
gOnAClearDayYouCanReadForever = gIsPanglosDOS-$01 ; byte
|
gOnAClearDayYouCanReadForever = gIsDavidson-$01 ; byte
|
||||||
gUsingRAMDisk = gOnAClearDayYouCanReadForever-$01 ; byte
|
gUsingRAMDisk = gOnAClearDayYouCanReadForever-$01 ; byte
|
||||||
gRAMDiskRef = gUsingRAMDisk-$01 ; byte
|
gRAMDiskRef = gUsingRAMDisk-$01 ; byte
|
||||||
gDisplayBytes = gRAMDiskRef-$0A ; 10 bytes
|
gDisplayBytes = gRAMDiskRef-$0A ; 10 bytes
|
||||||
|
@ -152,13 +153,14 @@ ConstructStandardDelivery = jConstructStandardDelivery
|
||||||
!warn "gIsLaureate=",gIsLaureate
|
!warn "gIsLaureate=",gIsLaureate
|
||||||
!warn "gIsDatasoft=",gIsDatasoft
|
!warn "gIsDatasoft=",gIsDatasoft
|
||||||
!warn "gIsSierra=",gIsSierra
|
!warn "gIsSierra=",gIsSierra
|
||||||
!warn "gIsSierra13=",gIsSierra13
|
!warn "gissierra13=",gissierra13
|
||||||
!warn "gIsF7F6=",gIsF7F6
|
!warn "gIsF7F6=",gIsF7F6
|
||||||
!warn "gIsTrillium=",gIsTrillium
|
!warn "gIsTrillium=",gIsTrillium
|
||||||
!warn "gPolarwareTamperCheck=",gPolarwareTamperCheck
|
!warn "gPolarwareTamperCheck=",gPolarwareTamperCheck
|
||||||
!warn "gForceDiskVol=",gIsForceDiskVol
|
!warn "gForceDiskVol=",gIsForceDiskVol
|
||||||
!warn "gIsAdvent=",gIsAdvent
|
!warn "gIsAdvent=",gIsAdvent
|
||||||
!warn "gIsPanglosDOS=",gIsPanglosDOS
|
!warn "gIsPanglosDOS=",gIsPanglosDOS
|
||||||
|
!warn "gIsDavidson=",gIsDavidson
|
||||||
!warn "gOnAClearDayYouCanReadForever=",gOnAClearDayYouCanReadForever
|
!warn "gOnAClearDayYouCanReadForever=",gOnAClearDayYouCanReadForever
|
||||||
!warn "gUsingRAMDisk=",gUsingRAMDisk
|
!warn "gUsingRAMDisk=",gUsingRAMDisk
|
||||||
!warn "gRAMDiskRef=",gRAMDiskRef
|
!warn "gRAMDiskRef=",gRAMDiskRef
|
||||||
|
|
34
src/id/davidson.a
Normal file
34
src/id/davidson.a
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
;-------------------------------
|
||||||
|
; IDDavidson
|
||||||
|
; identify Davidson disk after failing to read T22,S00
|
||||||
|
;
|
||||||
|
; in: track buffer contains track $22
|
||||||
|
; out: C clear if Davidson disk found
|
||||||
|
; C set otherwise
|
||||||
|
; all registers clobbered
|
||||||
|
; all other flags clobbered
|
||||||
|
;-------------------------------
|
||||||
|
!zone {
|
||||||
|
IDDavidson
|
||||||
|
lda gIsProDOS ; ProDOS?
|
||||||
|
bne .no ; no, give up
|
||||||
|
lda gTrack ; track $22?
|
||||||
|
cmp #$22
|
||||||
|
bne .no ; no, give up
|
||||||
|
lda gSector ; sector $00?
|
||||||
|
bne .no ; no, give up
|
||||||
|
lda #$00 ; try re-reading the sector but
|
||||||
|
sta $B92E ; ignore data field checksum failure
|
||||||
|
jsr ReadSector
|
||||||
|
lda #$13
|
||||||
|
sta $B92E
|
||||||
|
bcs .no ; didn't work, give up
|
||||||
|
lda #s_davidson
|
||||||
|
jsr PrintByID
|
||||||
|
lda #TRUE
|
||||||
|
sta gIsDavidson
|
||||||
|
clc
|
||||||
|
!byte $24
|
||||||
|
.no sec
|
||||||
|
rts
|
||||||
|
}
|
|
@ -149,6 +149,7 @@ FirstMover
|
||||||
!source "id/dinkeydos.a"
|
!source "id/dinkeydos.a"
|
||||||
!source "id/advent.a"
|
!source "id/advent.a"
|
||||||
!source "id/panglosdos.a"
|
!source "id/panglosdos.a"
|
||||||
|
!source "id/davidson.a"
|
||||||
!source "print.a"
|
!source "print.a"
|
||||||
!source "compare.a"
|
!source "compare.a"
|
||||||
!source "modify.a"
|
!source "modify.a"
|
||||||
|
@ -440,10 +441,14 @@ checksector
|
||||||
lda gIsDOS32 ; is this a DOS 3.2 disk?
|
lda gIsDOS32 ; is this a DOS 3.2 disk?
|
||||||
beq .fatal ; yes, so read error is fatal
|
beq .fatal ; yes, so read error is fatal
|
||||||
lda gTriedUniv ; have we tried the universal RWTS?
|
lda gTriedUniv ; have we tried the universal RWTS?
|
||||||
beq .fatal ; yes, so read error is fatal
|
beq .maybedavidson ; yes, but check one last thing
|
||||||
jsr SwitchToUniv ; no, switch it in now
|
jsr SwitchToUniv ; no, switch it in now
|
||||||
jmp .read ; and re-read this sector
|
jmp .read ; and re-read this sector
|
||||||
|
|
||||||
|
.maybedavidson
|
||||||
|
jsr IDDavidson
|
||||||
|
bcc .optional
|
||||||
|
|
||||||
.fatal pla ; if we get to here, we've
|
.fatal pla ; if we get to here, we've
|
||||||
jmp FatalError ; decided the read error is fatal
|
jmp FatalError ; decided the read error is fatal
|
||||||
|
|
||||||
|
@ -780,6 +785,8 @@ _applyToAll
|
||||||
!source "patchers/f7f6.a" ; gIsF7F6 only
|
!source "patchers/f7f6.a" ; gIsF7F6 only
|
||||||
!source "patchers/trillium.a" ; gIsTrillium only
|
!source "patchers/trillium.a" ; gIsTrillium only
|
||||||
!source "patchers/advent.a" ; gIsAdvent only
|
!source "patchers/advent.a" ; gIsAdvent only
|
||||||
|
!source "patchers/davidsonforth.a" ; gIsDavidson only
|
||||||
|
!source "patchers/davidsonasm.a" ; gIsDavidson only
|
||||||
|
|
||||||
lda gPatchCount
|
lda gPatchCount
|
||||||
beq .nopatches
|
beq .nopatches
|
||||||
|
|
36
src/patchers/davidsonasm.a
Normal file
36
src/patchers/davidsonasm.a
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
;-------------------------------
|
||||||
|
; #DAVIDSONASM
|
||||||
|
; bad block check of T22,S00
|
||||||
|
; implemented in assembly
|
||||||
|
;
|
||||||
|
; tested on
|
||||||
|
; - Alge-Blaster Plus 1.0
|
||||||
|
; - Math Blaster Mystery 1.0
|
||||||
|
; - Math Blaster Mystery 1.3
|
||||||
|
; - Reading and Me
|
||||||
|
; - Spell It Plus
|
||||||
|
; - Word Attack Plus 1.2
|
||||||
|
; - Word Attack Plus French 1.2
|
||||||
|
; - Word Attack Plus Spanish 1.2
|
||||||
|
;-------------------------------
|
||||||
|
!zone {
|
||||||
|
lda gIsDavidson
|
||||||
|
bne .exit
|
||||||
|
|
||||||
|
lda #$0F
|
||||||
|
sta .sector+1
|
||||||
|
.sector lda #$FF ; modified at runtime
|
||||||
|
ldx #$00
|
||||||
|
ldy #$06
|
||||||
|
jsr compare
|
||||||
|
!byte $20,$D2,$25; JSR $25D2
|
||||||
|
!byte $4C,$74,$08; JMP $0874
|
||||||
|
bcs +
|
||||||
|
ldx #$04
|
||||||
|
ldy #$01
|
||||||
|
jsr modify
|
||||||
|
!byte $79 ; JMP to $0879 instead
|
||||||
|
+ dec .sector+1
|
||||||
|
bpl .sector
|
||||||
|
.exit
|
||||||
|
}
|
26
src/patchers/davidsonforth.a
Normal file
26
src/patchers/davidsonforth.a
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
;-------------------------------
|
||||||
|
; #DAVIDSONFORTH
|
||||||
|
; bad block check of T22,S00
|
||||||
|
; implemented in FORTH
|
||||||
|
;
|
||||||
|
; tested on
|
||||||
|
; - Math Blaster Plus 1.6
|
||||||
|
; - Read N Roll 1.0
|
||||||
|
; - Read N Roll 1.1
|
||||||
|
; - Math and Me 1.0
|
||||||
|
;-------------------------------
|
||||||
|
!zone {
|
||||||
|
lda gIsDavidson
|
||||||
|
bne .exit
|
||||||
|
|
||||||
|
ldy #$08
|
||||||
|
jsr SearchTrack
|
||||||
|
!byte $08,$80,$00,$FD,$1C,$D1,$0D,$EC
|
||||||
|
bcs .exit
|
||||||
|
sta gDisplayBytes
|
||||||
|
inx
|
||||||
|
ldy #$01
|
||||||
|
jsr modify
|
||||||
|
!byte $CC ; MLI CLOSE command (instead of BLOCKREAD)
|
||||||
|
.exit
|
||||||
|
}
|
|
@ -118,6 +118,7 @@ StringTable
|
||||||
!word .microfun
|
!word .microfun
|
||||||
!word .advent
|
!word .advent
|
||||||
!word .gathering
|
!word .gathering
|
||||||
|
!word .davidson
|
||||||
;
|
;
|
||||||
; 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
|
||||||
|
@ -143,7 +144,7 @@ StringTable
|
||||||
; can be set directly before calling PrintByID.
|
; can be set directly before calling PrintByID.
|
||||||
;
|
;
|
||||||
.header
|
.header
|
||||||
!text "Passport by 4am 2018-06-08",$00
|
!text "Passport by 4am 2018-06-16",$00
|
||||||
.mainmenu
|
.mainmenu
|
||||||
!text "________________________________________",$8D,$8D,$8D,$8D,$8D,$8D,$8D
|
!text "________________________________________",$8D,$8D,$8D,$8D,$8D,$8D,$8D
|
||||||
!text " "
|
!text " "
|
||||||
|
@ -442,5 +443,7 @@ StringTable
|
||||||
.advent
|
.advent
|
||||||
!text "T%t,S%0 Found Interplay bootloader",$8D,$00
|
!text "T%t,S%0 Found Interplay bootloader",$8D,$00
|
||||||
.gathering
|
.gathering
|
||||||
!text "Gathering per-file encryption keys",$8D,00
|
!text "Gathering per-file encryption keys",$8D,$00
|
||||||
|
.davidson
|
||||||
|
!text "T%t Found Davidson & Associates disk",$8D,$00
|
||||||
}
|
}
|
||||||
|
|
|
@ -105,4 +105,5 @@ s_tamper = $63
|
||||||
s_microfun = $64
|
s_microfun = $64
|
||||||
s_advent = $65
|
s_advent = $65
|
||||||
s_gathering = $66
|
s_gathering = $66
|
||||||
STRINGCOUNT = $67
|
s_davidson = $67
|
||||||
|
STRINGCOUNT = $68
|
||||||
|
|
Loading…
Reference in New Issue
Block a user