mirror of
https://github.com/a2-4am/passport.git
synced 2025-04-08 11:36:59 +00:00
add support for Zoom Grafix
This commit is contained in:
parent
852dfc43f5
commit
edb2ebd60c
@ -64,6 +64,10 @@
|
||||
; set in IDBootloader() after reading T00,S00
|
||||
|
||||
FIRSTFILTER
|
||||
;gIsPhoenix
|
||||
!byte FALSE ; 0=true, 1=false
|
||||
; reset before each operation
|
||||
; set in IDBootloader() after reading T00,S00
|
||||
;gIsHolle
|
||||
!byte FALSE ; 0=true, 1=false
|
||||
; reset before each operation
|
||||
|
@ -100,9 +100,10 @@ gIsDavidson = gIsPanglosDOS-$01 ; byte
|
||||
gIsRDOS13 = gIsDavidson-$01 ; byte
|
||||
gIsMUSERWTS = gIsRDOS13-$01 ; byte
|
||||
gIsHolle = gIsMUSERWTS-$01 ; byte
|
||||
gIsPhoenix = gIsHolle-$01 ; byte
|
||||
;LASTFILTER ; add new gIs* above this line
|
||||
;gIsInfocom18 is a special case whose ID is not in the regular inspection path
|
||||
gIsInfocom18 = gIsHolle-$01 ; byte
|
||||
gIsInfocom18 = gIsPhoenix-$01 ; byte
|
||||
;gIs13Sector is a special case whose ID is not in the regular inspection path
|
||||
gIs13Sector = gIsInfocom18-$01 ; byte
|
||||
;gMECCFastloadType is a special case integer whose default value cannot be #FALSE
|
||||
@ -175,6 +176,7 @@ ConstructStandardDelivery = jConstructStandardDelivery
|
||||
!warn "gIsDavidson=",gIsDavidson
|
||||
!warn "gIsMUSERWTS=",gIsMUSERWTS
|
||||
!warn "gIsHolle=",gIsHolle
|
||||
!warn "gIsPhoenix=",gIsPhoenix
|
||||
!warn "gIsRDOS13=",gIsRDOS13
|
||||
!warn "gIsInfocom18=",gIsInfocom18
|
||||
!warn "gIs13Sector=",gIs13Sector
|
||||
|
@ -217,16 +217,18 @@ IDBootloader
|
||||
lda #TRUE
|
||||
sta gIsProDOS
|
||||
jsr IDVolumeName
|
||||
bcs .useuniv
|
||||
; [note: execution may fall through here]
|
||||
bcc +
|
||||
jmp .useuniv
|
||||
+
|
||||
;
|
||||
; Dinkey-DOS (ProDOS file structure with DOS 3.3-ish RWTS in language card)
|
||||
; detectable now because IDVolumeName just read the first sector of the
|
||||
; volume directory into memory so we can look for a unique filename
|
||||
;
|
||||
jsr IDDinkeyDOS
|
||||
bcs .useuniv
|
||||
lda #s_dinkeydos
|
||||
bcc +
|
||||
jmp .useuniv
|
||||
+ lda #s_dinkeydos
|
||||
jsr PrintByID
|
||||
lda #TRUE
|
||||
sta gIsDinkeyDOS
|
||||
@ -264,6 +266,7 @@ IDBootloader
|
||||
beq .useuniv ; always branches
|
||||
;
|
||||
; Micrograms bootloader
|
||||
; (just for display)
|
||||
;
|
||||
+ jsr IDMicrograms
|
||||
bcs +
|
||||
@ -272,6 +275,7 @@ IDBootloader
|
||||
bcc .useuniv ; always branches
|
||||
;
|
||||
; Quick-DOS
|
||||
; (just for display)
|
||||
;
|
||||
+ jsr IDQuickDOS
|
||||
bcs +
|
||||
@ -280,14 +284,17 @@ IDBootloader
|
||||
bcc .useuniv ; always branches
|
||||
;
|
||||
; RDOS
|
||||
; (just for display)
|
||||
;
|
||||
+ jsr IDRDOS
|
||||
bcs +
|
||||
lda #s_rdos
|
||||
jsr PrintByID
|
||||
bcc .useuniv ; always branches
|
||||
|
||||
;
|
||||
; Dav Holle encrypted bootloader
|
||||
; (will be decrypted and patched)
|
||||
;
|
||||
+ jsr IDHolle
|
||||
bcs +
|
||||
|
@ -3,8 +3,7 @@
|
||||
; identify Micrograms bootloader
|
||||
;
|
||||
; in: track buffer contains T00,S00
|
||||
; out: C clear if MECC bootloader was found
|
||||
; (and track buffer now contains all of track 0)
|
||||
; out: C clear if Micrograms bootloader was found
|
||||
; C set if not found
|
||||
; all other flags clobbered
|
||||
; all registers clobbered
|
||||
|
19
src/id/phoenix.a
Normal file
19
src/id/phoenix.a
Normal file
@ -0,0 +1,19 @@
|
||||
;-------------------------------
|
||||
; IDPhoenix
|
||||
; identify Phoenix bootloader
|
||||
;
|
||||
; in: track buffer contains T00,S00
|
||||
; out: C clear if Phoenix bootloader was found
|
||||
; C set if not found
|
||||
; all other flags clobbered
|
||||
; all registers clobbered
|
||||
;-------------------------------
|
||||
!zone {
|
||||
IDPhoenix
|
||||
lda #$00
|
||||
ldx #$B8
|
||||
ldy #$03
|
||||
jsr compare
|
||||
!byte $AC,$B7,$F6
|
||||
rts
|
||||
}
|
@ -208,6 +208,14 @@ _Inspect1a
|
||||
lda #TRUE
|
||||
sta gAdventureInternational
|
||||
;
|
||||
; Check for Phoenix bootloader/RWTS
|
||||
; (implies possible secondary protection elsewhere)
|
||||
;
|
||||
+ jsr IDPhoenix
|
||||
bcs +
|
||||
lda #TRUE
|
||||
sta gIsPhoenix
|
||||
;
|
||||
; Turn off drive recalibration
|
||||
;
|
||||
+ lda jCallRWTS+2; check for code at $BDD2
|
||||
|
@ -151,6 +151,7 @@ FirstMover
|
||||
!source "id/panglosdos.a"
|
||||
!source "id/davidson.a"
|
||||
!source "id/holle.a"
|
||||
!source "id/phoenix.a"
|
||||
!source "print.a"
|
||||
!source "compare.a"
|
||||
!source "modify.a"
|
||||
@ -844,6 +845,7 @@ _applyToAll
|
||||
!source "patchers/aacount.a"
|
||||
!source "patchers/hallabs.a" ; T01 only
|
||||
!source "patchers/holle.a" ; gIsHolle only
|
||||
!source "patchers/zoomgrafix.a" ; gIsPhoenix only
|
||||
|
||||
lda gPatchCount
|
||||
beq .nopatches
|
||||
|
31
src/patchers/zoomgrafix.a
Normal file
31
src/patchers/zoomgrafix.a
Normal file
@ -0,0 +1,31 @@
|
||||
;-------------------------------
|
||||
; #ZOOMGRAFIX
|
||||
; secondary protection expects
|
||||
; disk volume number 0
|
||||
;
|
||||
; tested on
|
||||
; - Zoom Grafix (Phoenix Software) multiple versions
|
||||
;-------------------------------
|
||||
!zone {
|
||||
bit gMode ; nothing to do here in verify-only mode
|
||||
bpl .exit
|
||||
lda gIsPhoenix ; only if we found Phoenix boot sector earlier
|
||||
bne .exit
|
||||
ldy #$0C
|
||||
jsr SearchTrack
|
||||
!byte $4C,$4D,$D0,$E2,$28,$4B,$42,$C9 ; 'LM = PEEK(KB - 2058)' in BASIC
|
||||
!byte $32,$30,$35,$38
|
||||
bcs .exit
|
||||
sta gDisplayBytes
|
||||
lda #s_diskvol0
|
||||
jsr PrintByID
|
||||
txa
|
||||
clc
|
||||
adc #$0B
|
||||
tax
|
||||
lda gDisplayBytes
|
||||
ldy #$01
|
||||
jsr modify
|
||||
!byte $35 ; 'LM = PEEK(KB - 2055)' instead
|
||||
.exit
|
||||
}
|
@ -131,6 +131,7 @@ StringTable
|
||||
!word .hallabs
|
||||
!word .holle
|
||||
!word .hoffman
|
||||
!word .diskvol0
|
||||
;
|
||||
; Text can contain substitution strings, which
|
||||
; are replaced by current values at runtime. Each
|
||||
@ -156,7 +157,7 @@ StringTable
|
||||
; can be set directly before calling PrintByID.
|
||||
;
|
||||
.header
|
||||
!text "Passport by 4am 2019-04-04",$00
|
||||
!text "Passport by 4am 2019-04-07",$00
|
||||
.mainmenu
|
||||
!text "________________________________________",$8D,$8D,$8D,$8D,$8D,$8D,$8D
|
||||
!text " "
|
||||
@ -481,4 +482,7 @@ StringTable
|
||||
!text "T00,S00 Found Holle bootloader",$8D,$00
|
||||
.hoffman
|
||||
!text "T%t,S%0 Found Hoffman protection check",$8D,$00
|
||||
.diskvol0
|
||||
!text "T%t,S%s Secondary protection requires",$8D
|
||||
!text "disk volume number 000",$8D,$00
|
||||
}
|
||||
|
@ -117,4 +117,5 @@ s_springboard =$6F
|
||||
s_hallabs = $70
|
||||
s_holle = $71
|
||||
s_hoffman = $72
|
||||
STRINGCOUNT = $73
|
||||
s_diskvol0 = $73
|
||||
STRINGCOUNT = $74
|
||||
|
Loading…
x
Reference in New Issue
Block a user