mirror of
https://github.com/a2-4am/passport.git
synced 2024-12-26 16:30:22 +00:00
add support for Enlightenment disks [fixes Paul Whitehead Teaches Chess]
This commit is contained in:
parent
d4793ce09f
commit
5f6f15ce78
@ -115,6 +115,10 @@ were common in educational software.
|
|||||||
e.g. Problem Solving in Algebra,
|
e.g. Problem Solving in Algebra,
|
||||||
Math Skills: Elementary Level
|
Math Skills: Elementary Level
|
||||||
|
|
||||||
|
- Enlightenment
|
||||||
|
e.g. Paul Whitehead Teaches Chess,
|
||||||
|
Living Chess Library
|
||||||
|
|
||||||
- Focus Media
|
- Focus Media
|
||||||
e.g. The Time Tunnel (series),
|
e.g. The Time Tunnel (series),
|
||||||
Travels with Za-Zoom
|
Travels with Za-Zoom
|
||||||
@ -417,7 +421,7 @@ IN THE SOFTWARE.
|
|||||||
|
|
||||||
## History
|
## History
|
||||||
|
|
||||||
2022-07-07
|
2022-07-12
|
||||||
- NEW: patchers/mak.a (fixes "Kittens,
|
- NEW: patchers/mak.a (fixes "Kittens,
|
||||||
Kids, and a Frog")
|
Kids, and a Frog")
|
||||||
- NEW: patchers/t00_baudville.a (fixes
|
- NEW: patchers/t00_baudville.a (fixes
|
||||||
@ -428,6 +432,8 @@ IN THE SOFTWARE.
|
|||||||
pfs:* Pascal titles)
|
pfs:* Pascal titles)
|
||||||
- NEW: patchers/pfs.prodos.a (fixes
|
- NEW: patchers/pfs.prodos.a (fixes
|
||||||
pfs:* ProDOS titles)
|
pfs:* ProDOS titles)
|
||||||
|
- NEW: patchers/enlightenment.a (fixes
|
||||||
|
Paul Whitehead Teaches Chess)
|
||||||
- IMPROVED: id/555.a (fixes Fax,
|
- IMPROVED: id/555.a (fixes Fax,
|
||||||
Funbunch College Prep)
|
Funbunch College Prep)
|
||||||
- IMPROVED: patchers/ea.a (fixes
|
- IMPROVED: patchers/ea.a (fixes
|
||||||
|
@ -79,6 +79,10 @@
|
|||||||
; set in IDBootFailure() after reading T00
|
; set in IDBootFailure() after reading T00
|
||||||
|
|
||||||
FIRSTFILTER
|
FIRSTFILTER
|
||||||
|
;gIsEnlightenment
|
||||||
|
!byte FALSE ; 0=true, 1=false
|
||||||
|
; reset before each operation
|
||||||
|
; set in IDBootloader() after reading T00,S00
|
||||||
;gIsBaudville
|
;gIsBaudville
|
||||||
!byte FALSE ; 0=true, 1=false
|
!byte FALSE ; 0=true, 1=false
|
||||||
; reset before each operation
|
; reset before each operation
|
||||||
|
@ -184,9 +184,10 @@ gPossibleWoodbury = gPossibleMECCSwapper-$01 ; byte
|
|||||||
gPossibleB4BBBasic = gPossibleWoodbury-$01 ; byte
|
gPossibleB4BBBasic = gPossibleWoodbury-$01 ; byte
|
||||||
gIsLowDOS = gPossibleB4BBBasic-$01 ; byte
|
gIsLowDOS = gPossibleB4BBBasic-$01 ; byte
|
||||||
gIsBaudville = gIsLowDOS-$01 ; byte
|
gIsBaudville = gIsLowDOS-$01 ; byte
|
||||||
|
gIsEnlightenment = gIsBaudville-$01 ; byte
|
||||||
;LASTFILTER ; add new gIs* above this line
|
;LASTFILTER ; add new gIs* above this line
|
||||||
;gIsInfocom18 is a special case whose ID is not in the regular inspection path
|
;gIsInfocom18 is a special case whose ID is not in the regular inspection path
|
||||||
gIsInfocom18 = gIsBaudville-$01 ; byte
|
gIsInfocom18 = gIsEnlightenment-$01 ; byte
|
||||||
;gIs13Sector is a special case whose ID is not in the regular inspection path
|
;gIs13Sector is a special case whose ID is not in the regular inspection path
|
||||||
gIs13Sector = gIsInfocom18-$01 ; byte
|
gIs13Sector = gIsInfocom18-$01 ; byte
|
||||||
;gMECCFastloadType is a special case integer whose default value cannot be #FALSE
|
;gMECCFastloadType is a special case integer whose default value cannot be #FALSE
|
||||||
|
18
src/id/enlightenment.a
Normal file
18
src/id/enlightenment.a
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
;-------------------------------
|
||||||
|
; IDEnlightenment
|
||||||
|
; identify Enlightenment bootloader
|
||||||
|
;
|
||||||
|
; in: $800..$8FF contains T00,S00
|
||||||
|
; out: C clear if Enlightenment bootloader found
|
||||||
|
; C set otherwise
|
||||||
|
; all other registers & flags clobbered
|
||||||
|
;-------------------------------
|
||||||
|
!macro IDEnlightenment {
|
||||||
|
lda #$08
|
||||||
|
ldx #$01
|
||||||
|
ldy #$04
|
||||||
|
jsr CompareMemory
|
||||||
|
!byte $A9,$B7
|
||||||
|
!byte $85,$27
|
||||||
|
; passport-test-suite/Paul Whitehead Teaches Chess.woz [C=0] matches
|
||||||
|
}
|
@ -57,6 +57,7 @@ IDBootloader
|
|||||||
.sanity
|
.sanity
|
||||||
;
|
;
|
||||||
; Quick sanity check -- only recognized values for $0800 are
|
; Quick sanity check -- only recognized values for $0800 are
|
||||||
|
; $00 = some Enlightenment disks
|
||||||
; $01 = most disks
|
; $01 = most disks
|
||||||
; $02 = Special Delivery (DOS 3.3P)
|
; $02 = Special Delivery (DOS 3.3P)
|
||||||
; $05 = some EA disks
|
; $05 = some EA disks
|
||||||
@ -67,7 +68,19 @@ IDBootloader
|
|||||||
bcc .sane
|
bcc .sane
|
||||||
cmp #$05
|
cmp #$05
|
||||||
beq .sane
|
beq .sane
|
||||||
+ jmp UseUniversal
|
- jmp UseUniversal
|
||||||
|
+
|
||||||
|
;
|
||||||
|
; Try to identify Enlightenment bootloader.
|
||||||
|
; (in none; out none)
|
||||||
|
;
|
||||||
|
+IDEnlightenment
|
||||||
|
bcs -
|
||||||
|
lda #TRUE
|
||||||
|
sta gIsEnlightenment
|
||||||
|
jsr PrintByID
|
||||||
|
!byte s_enlightenmentb0
|
||||||
|
bvc - ; always branches
|
||||||
|
|
||||||
.sane
|
.sane
|
||||||
;
|
;
|
||||||
|
@ -96,6 +96,7 @@ T00_IsNotRWTS
|
|||||||
!source "../patchers/t00_rol1e.a"
|
!source "../patchers/t00_rol1e.a"
|
||||||
!source "../patchers/t00_sigcheck.a"
|
!source "../patchers/t00_sigcheck.a"
|
||||||
!source "../patchers/t00_baudville.a"
|
!source "../patchers/t00_baudville.a"
|
||||||
|
!source "../patchers/t00_enlightenment.a"
|
||||||
rts
|
rts
|
||||||
|
|
||||||
!if * > $3200 {
|
!if * > $3200 {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
;-------------------------------
|
;-------------------------------
|
||||||
; Passport
|
; Passport
|
||||||
; a 4am hack
|
; a 4am hack
|
||||||
; (c) 2016-2021 by 4am
|
; (c) 2016-2022 by 4am
|
||||||
;
|
;
|
||||||
; Permission is hereby granted, free of charge, to any
|
; Permission is hereby granted, free of charge, to any
|
||||||
; person obtaining a copy of this software and associated
|
; person obtaining a copy of this software and associated
|
||||||
@ -72,6 +72,7 @@ NonRelocatable
|
|||||||
!source "id/dinkeydos.a"
|
!source "id/dinkeydos.a"
|
||||||
!source "id/advent.a"
|
!source "id/advent.a"
|
||||||
!source "id/baudville.a"
|
!source "id/baudville.a"
|
||||||
|
!source "id/enlightenment.a"
|
||||||
!source "id/panglosdos.a"
|
!source "id/panglosdos.a"
|
||||||
!source "id/davidson.a"
|
!source "id/davidson.a"
|
||||||
!source "id/holle.a"
|
!source "id/holle.a"
|
||||||
@ -368,6 +369,7 @@ AnalyzeTrack
|
|||||||
!source "patchers/b4bbbasic.a" ; gPossibleB4BBBasic only
|
!source "patchers/b4bbbasic.a" ; gPossibleB4BBBasic only
|
||||||
!source "patchers/sigcheck.a" ; gPossibleSigCheck only
|
!source "patchers/sigcheck.a" ; gPossibleSigCheck only
|
||||||
!source "patchers/errord51.a" ; gIsLowDOS only
|
!source "patchers/errord51.a" ; gIsLowDOS only
|
||||||
|
!source "patchers/enlightenment.a" ; gIsEnlightenment && T02 only
|
||||||
;
|
;
|
||||||
; DOS 3.3-specific patchers
|
; DOS 3.3-specific patchers
|
||||||
;
|
;
|
||||||
|
50
src/patchers/enlightenment.a
Normal file
50
src/patchers/enlightenment.a
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
;-------------------------------
|
||||||
|
; #ENLIGHTENMENT
|
||||||
|
; anti-tamper checks on the changes
|
||||||
|
; we're about to make on track 0
|
||||||
|
; to disable the RWTS swapper and
|
||||||
|
; protection check
|
||||||
|
;-------------------------------
|
||||||
|
!zone {
|
||||||
|
lda gIsEnlightenment
|
||||||
|
bne .exit
|
||||||
|
lda gTrack
|
||||||
|
cmp #$02
|
||||||
|
bne .exit
|
||||||
|
|
||||||
|
lda #$01
|
||||||
|
ldx #$AE
|
||||||
|
jsr compare1
|
||||||
|
!byte $48
|
||||||
|
bcs +
|
||||||
|
|
||||||
|
jsr PrintByID
|
||||||
|
!byte s_tamper
|
||||||
|
jsr modify1
|
||||||
|
!byte $EA
|
||||||
|
+
|
||||||
|
lda #$01
|
||||||
|
ldx #$D5
|
||||||
|
jsr compare1
|
||||||
|
!byte $48
|
||||||
|
bcs +
|
||||||
|
|
||||||
|
jsr PrintByID
|
||||||
|
!byte s_tamper
|
||||||
|
jsr modify1
|
||||||
|
!byte $EA
|
||||||
|
+
|
||||||
|
lda #$09
|
||||||
|
ldx #$8A
|
||||||
|
jsr compare3
|
||||||
|
!byte $A9,$00
|
||||||
|
!byte $48
|
||||||
|
bcs +
|
||||||
|
inx
|
||||||
|
jsr PrintByID
|
||||||
|
!byte s_tamper
|
||||||
|
jsr modify1
|
||||||
|
!byte $52
|
||||||
|
+
|
||||||
|
.exit
|
||||||
|
}
|
41
src/patchers/t00_enlightenment.a
Normal file
41
src/patchers/t00_enlightenment.a
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
;-------------------------------
|
||||||
|
; #T00_ENLIGHTENMENT
|
||||||
|
; RWTS third data prologue varies,
|
||||||
|
; also an insane flux-level timing
|
||||||
|
; protection
|
||||||
|
;
|
||||||
|
; tested on
|
||||||
|
; - Paul Whitehead Teaches Chess
|
||||||
|
; - King's Indian Defense
|
||||||
|
; - Living Chess Library - 50 Classic Games
|
||||||
|
;-------------------------------
|
||||||
|
!zone {
|
||||||
|
lda gIsEnlightenment
|
||||||
|
bne .exit
|
||||||
|
|
||||||
|
lda #$0A
|
||||||
|
ldx #$26
|
||||||
|
jsr compare2
|
||||||
|
!byte $85,$3D
|
||||||
|
bcs +
|
||||||
|
|
||||||
|
jsr PrintByID
|
||||||
|
!byte s_enlightenment
|
||||||
|
jsr modify2
|
||||||
|
!byte $18
|
||||||
|
!byte $60
|
||||||
|
+
|
||||||
|
lda #$0C
|
||||||
|
ldx #$94
|
||||||
|
jsr compare3
|
||||||
|
!byte $BD,$00,$BF
|
||||||
|
bcs +
|
||||||
|
|
||||||
|
jsr PrintByID
|
||||||
|
!byte s_bytrack
|
||||||
|
jsr modify3
|
||||||
|
!byte $EA
|
||||||
|
!byte $A9,$AD
|
||||||
|
+
|
||||||
|
.exit
|
||||||
|
}
|
@ -213,6 +213,8 @@ StringTableLow ; must be kept in sync with constants in enid.a
|
|||||||
!byte <.protection
|
!byte <.protection
|
||||||
!byte <.baudville
|
!byte <.baudville
|
||||||
!byte <.pfs
|
!byte <.pfs
|
||||||
|
!byte <.enlightenmentb0
|
||||||
|
!byte <.enlightenment
|
||||||
|
|
||||||
StringTableHigh ; must be kept in sync with constants in enid.a
|
StringTableHigh ; must be kept in sync with constants in enid.a
|
||||||
!byte >.header
|
!byte >.header
|
||||||
@ -365,11 +367,13 @@ StringTableHigh ; must be kept in sync with constants in enid.a
|
|||||||
!byte >.protection
|
!byte >.protection
|
||||||
!byte >.baudville
|
!byte >.baudville
|
||||||
!byte >.pfs
|
!byte >.pfs
|
||||||
|
!byte >.enlightenmentb0
|
||||||
|
!byte >.enlightenment
|
||||||
|
|
||||||
.passport
|
.passport
|
||||||
!text "Passport ",$00
|
!text "Passport ",$00
|
||||||
.header
|
.header
|
||||||
!text "@",s_passport,"by 4am@",s_space7,"@",s_space7," 2022-07-07",$00
|
!text "@",s_passport,"by 4am@",s_space7,"@",s_space7," 2022-07-09",$00
|
||||||
.bar9
|
.bar9
|
||||||
!text "_________",$00
|
!text "_________",$00
|
||||||
.bar18
|
.bar18
|
||||||
@ -756,3 +760,7 @@ StringTableHigh ; must be kept in sync with constants in enid.a
|
|||||||
!text "@",s_found,"Baudville @",s_bootloader,$8D,$00
|
!text "@",s_found,"Baudville @",s_bootloader,$8D,$00
|
||||||
.pfs
|
.pfs
|
||||||
!text "@",s_found,"PFS @",s_protectioncheck,$8D,$00
|
!text "@",s_found,"PFS @",s_protectioncheck,$8D,$00
|
||||||
|
.enlightenmentb0
|
||||||
|
!text "@",s_found,"Enlightenment @",s_bootloader,$8D,$00
|
||||||
|
.enlightenment
|
||||||
|
!text "@",s_found,"flux timing @",s_protection,$8D,$00
|
||||||
|
@ -151,3 +151,5 @@ s_lockitupserial = $92
|
|||||||
s_protection = $93
|
s_protection = $93
|
||||||
s_baudville = $94
|
s_baudville = $94
|
||||||
s_pfs = $95
|
s_pfs = $95
|
||||||
|
s_enlightenmentb0 = $96
|
||||||
|
s_enlightenment = $97
|
||||||
|
Loading…
Reference in New Issue
Block a user