add support for Micrograms bootloader and RWTS patching

This commit is contained in:
4am 2017-06-20 10:43:17 -04:00
parent 0b2e96cacb
commit 1eb86bf597
5 changed files with 71 additions and 3 deletions

View File

@ -187,6 +187,13 @@ IDBootloader
jsr PrintByID jsr PrintByID
bcc .useuniv ; always branches bcc .useuniv ; always branches
; ;
; Micrograms bootloader
;
+ jsr IDMicrograms
bcs +
lda #s_micrograms
jsr PrintByID
;
; David-DOS II ; David-DOS II
; ;
+ jsr IDDavid + jsr IDDavid

29
src/id/micrograms.a Normal file
View File

@ -0,0 +1,29 @@
;-------------------------------
; IDMicrograms
; 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)
; C set if not found
; all other flags clobbered
; all registers clobbered
;-------------------------------
!zone {
IDMicrograms
lda #$00
ldx #$01
ldy #$0A
jsr compare
!byte $A5,$27
!byte $C9,$09
!byte $D0,$12
!byte $A9,$C6
!byte $85,$3F
bcs .exit
ldx #$42
ldy #$03
jsr compare
!byte $4C,$00,$0D
.exit rts
}

View File

@ -95,7 +95,7 @@ flag = $FF ; byte
} }
; Application constants (not zero addresses) ; Application constants (not zero addresses)
RELBASE = $6000 ; address to move Passport code RELBASE = $5F00 ; address to move Passport code
; so that it's out of the way ; so that it's out of the way
LOWPOINT = $4300 ; lowest available address for code LOWPOINT = $4300 ; lowest available address for code
BASEPAGE = $10 ; Special Delivery tracer assumes BASEPAGE = $10 ; Special Delivery tracer assumes
@ -160,6 +160,7 @@ FirstMover
!source "id/prontodos.a" !source "id/prontodos.a"
!source "id/d5d5f7.a" !source "id/d5d5f7.a"
!source "id/laureate.a" !source "id/laureate.a"
!source "id/micrograms.a"
!source "print.a" !source "print.a"
!source "compare.a" !source "compare.a"
!source "modify.a" !source "modify.a"
@ -705,6 +706,7 @@ _applyToT00
!source "patchers/jsr8b3.a" !source "patchers/jsr8b3.a"
!source "patchers/laureate.a" !source "patchers/laureate.a"
!source "patchers/pascalrwts.a" !source "patchers/pascalrwts.a"
!source "patchers/micrograms.a"
_applyToAll _applyToAll
!source "patchers/universale7.a" !source "patchers/universale7.a"
!source "patchers/runhello.a" ; (!gIsProDOS && !gIsPascal) only !source "patchers/runhello.a" ; (!gIsProDOS && !gIsPascal) only

26
src/patchers/micrograms.a Normal file
View File

@ -0,0 +1,26 @@
;-------------------------------
; #MICROGRAMS
; Micrograms RWTS requires a non-standard
; third epilogue nibble ($BE)
;
; tested on
; Wild West Math Level 3
; Wild West Math Level 4
; Wild West Math Level 5
;-------------------------------
!zone {
lda #$06
ldx #$01
ldy #$09
jsr compare ; and T00,S06,$01 ==
!byte $AD,$EC,$C0
!byte $10,$FB
!byte $C9,$BE
!byte $D0,$E5
bcs .exit
ldx #$09
ldy #$01
jsr modify ; then set T00,S06,$07 =
!byte $00
.exit
}

View File

@ -99,7 +99,8 @@ s_prontodos = $50
s_jmpb412 = $51 s_jmpb412 = $51
s_laureate = $52 s_laureate = $52
s_bbf9 = $53 s_bbf9 = $53
STRINGCOUNT = $54 s_micrograms = $54
STRINGCOUNT = $55
!zone { !zone {
StringTable StringTable
@ -187,6 +188,7 @@ StringTable
!word .jmpb412 !word .jmpb412
!word .laureate !word .laureate
!word .bbf9 !word .bbf9
!word .micrograms
; ;
; 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
@ -212,7 +214,7 @@ StringTable
; can be set directly before calling PrintByID. ; can be set directly before calling PrintByID.
; ;
.header .header
!text "Passport by 4am 2017-06-19",00 !text "Passport by 4am 2017-06-20",00
.mainmenu .mainmenu
!text "________________________________________",$8D,$8D,$8D,$8D,$8D,$8D,$8D !text "________________________________________",$8D,$8D,$8D,$8D,$8D,$8D,$8D
!text " " !text " "
@ -470,4 +472,6 @@ StringTable
!text "T00,S00 Found Laureate bootloader",$8D,00 !text "T00,S00 Found Laureate bootloader",$8D,00
.bbf9 .bbf9
!text "T%t,S%0 Found BBF9 protection check",$8D,00 !text "T%t,S%0 Found BBF9 protection check",$8D,00
.micrograms
!text "T00,S00 Found Micrograms bootloader",$8D,00
} }