diff --git a/src/anti-m.a b/src/anti-m.a index a75f4d3..db05bb5 100644 --- a/src/anti-m.a +++ b/src/anti-m.a @@ -207,10 +207,13 @@ Tracer13 bcc BeginTheBoot13 jsr IDBoot13 bcc BeginTheBoot13 + jsr IDSensible + bcc BeginTheBoot13 ; [execution falls through here] ; [and runs anyway] BeginTheBoot13 + ldx #$B3 ;Sensible Software fix ldy $0300 jmp $0301 @@ -255,7 +258,7 @@ StringTable !word @mainmenu @header - !text "Anti-M v1.7 by 4am 2020-08-11" + !text "Anti-M v1.8pre by 4am 2020-10-15" !text "________________________________________",$8D !text $8D,$8D,$8D,$8D,$8D,$8D,$8D,$8D,$00 @mainmenu @@ -273,3 +276,4 @@ StringTable !src "src/idprogame.a" !src "src/idpersonal.a" !src "src/idalphabeta.a" + !src "src/idsensible.a" diff --git a/src/idboot.a b/src/idboot.a index 810456b..29ad11e 100644 --- a/src/idboot.a +++ b/src/idboot.a @@ -10,6 +10,11 @@ IDBoot ldy #$5C sty @patch+1 bcc + + +; we found D5 AA 96 T00S00 D5 AA .. +; check for weird Sensible Software 13-sector disk with D5 AA 96 sectors + cmp #$B5 + beq ++ lda #$90 sta $867B @@ -29,7 +34,7 @@ IDBoot bne @patch ; and loop anyway in case it's a hybrid disk and we missed the D5 AA 96 - dec @retries +++ dec @retries bne @patch ; found nothing but D5 AA B5, proceed as 13-sector diff --git a/src/idsensible.a b/src/idsensible.a new file mode 100644 index 0000000..5fcb34d --- /dev/null +++ b/src/idsensible.a @@ -0,0 +1,42 @@ +; Sensible Software tracer +; written by qkumba +; +; tested on +; - Sensible Speller +; +IDSensible + lda #3 + ldx #1 + ldy #6 + jsr CompareMemory + !byte $29,$00 ;AND #$00 + !byte $85,$3A ;STA $3A + !byte $9A ;TXS + !byte $08 ;PHP + bcs @exit + +; patch encoded code to regain control after it loads sectors into $400+ + lda #(<@pcallback) xor $99 + sta $03A3 + lda #(>@pcallback) xor $99 + sta $03A4 + +@exit + rts + +@pcallback + !word @callback + +@callback + +; disable ROM checksum-failure branching + lda $6CE + cmp #$4C + bne + + lda #$60 + sta $6CE + +; and nibble check which fails occasionally + lda #$2C + sta $79B ++ jmp ($0026)