diff --git a/src/id/inspect0.a b/src/id/inspect0.a index 3d52c86..0a586d7 100755 --- a/src/id/inspect0.a +++ b/src/id/inspect0.a @@ -187,6 +187,13 @@ IDBootloader jsr PrintByID bcc .useuniv ; always branches ; +; Micrograms bootloader +; ++ jsr IDMicrograms + bcs + + lda #s_micrograms + jsr PrintByID +; ; David-DOS II ; + jsr IDDavid diff --git a/src/id/micrograms.a b/src/id/micrograms.a new file mode 100644 index 0000000..1755b25 --- /dev/null +++ b/src/id/micrograms.a @@ -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 +} diff --git a/src/passport.a b/src/passport.a index d5656be..df52910 100755 --- a/src/passport.a +++ b/src/passport.a @@ -95,7 +95,7 @@ flag = $FF ; byte } ; 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 LOWPOINT = $4300 ; lowest available address for code BASEPAGE = $10 ; Special Delivery tracer assumes @@ -160,6 +160,7 @@ FirstMover !source "id/prontodos.a" !source "id/d5d5f7.a" !source "id/laureate.a" + !source "id/micrograms.a" !source "print.a" !source "compare.a" !source "modify.a" @@ -705,6 +706,7 @@ _applyToT00 !source "patchers/jsr8b3.a" !source "patchers/laureate.a" !source "patchers/pascalrwts.a" + !source "patchers/micrograms.a" _applyToAll !source "patchers/universale7.a" !source "patchers/runhello.a" ; (!gIsProDOS && !gIsPascal) only diff --git a/src/patchers/micrograms.a b/src/patchers/micrograms.a new file mode 100644 index 0000000..aec95c3 --- /dev/null +++ b/src/patchers/micrograms.a @@ -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 +} diff --git a/src/strings/en.a b/src/strings/en.a index e3af55e..d441516 100755 --- a/src/strings/en.a +++ b/src/strings/en.a @@ -99,7 +99,8 @@ s_prontodos = $50 s_jmpb412 = $51 s_laureate = $52 s_bbf9 = $53 -STRINGCOUNT = $54 +s_micrograms = $54 +STRINGCOUNT = $55 !zone { StringTable @@ -187,6 +188,7 @@ StringTable !word .jmpb412 !word .laureate !word .bbf9 + !word .micrograms ; ; Text can contain substitution strings, which ; are replaced by current values at runtime. Each @@ -212,7 +214,7 @@ StringTable ; can be set directly before calling PrintByID. ; .header - !text "Passport by 4am 2017-06-19",00 + !text "Passport by 4am 2017-06-20",00 .mainmenu !text "________________________________________",$8D,$8D,$8D,$8D,$8D,$8D,$8D !text " " @@ -470,4 +472,6 @@ StringTable !text "T00,S00 Found Laureate bootloader",$8D,00 .bbf9 !text "T%t,S%0 Found BBF9 protection check",$8D,00 +.micrograms + !text "T00,S00 Found Micrograms bootloader",$8D,00 }