diff --git a/src/anti-m.a b/src/anti-m.a index 13451d0..9d4a1f1 100644 --- a/src/anti-m.a +++ b/src/anti-m.a @@ -47,6 +47,8 @@ cmp1 = $F8 ; word cmp2 = $FA ; word tmp = $FC ; byte + lda #$00 + sta $85FF ; boot drive 1 jsr TEXT lda BUTTON0 ora BUTTON1 @@ -54,6 +56,8 @@ tmp = $FC ; byte lda DEVNUM cmp #$60 bne Boot + jsr CheckDrive2 + bcc Boot2 @showprompt jsr HOME lda MACHINEID @@ -72,12 +76,16 @@ tmp = $FC ; byte bit STROBE cmp #$8D ; return beq Boot + cmp #$B2 ; 2 + beq Boot2 jsr MLI !byte $65 !word .quitparm .quitparm !byte $04,$00,$00,$00,$00,$00,$00 +Boot2 + inc $85FF ; boot drive 2 Boot jsr HOME ldx #$00 @@ -87,7 +95,7 @@ Boot bne - lda $865C cmp #$80 - bne + + bne @check2 lda #$18 sta $865C lda #$08 @@ -102,7 +110,26 @@ Boot stx $86A3 dex stx $86A5 -+ lda #Tracer ldy $86F8 cpy #$4C @@ -123,6 +150,33 @@ Boot @unknowncontroller jmp $C600 +CheckDrive2 + lda $C0E9 + lda $C0EB + ldy #6 +-- ldx #$11 +- dex + bne - + sec + sbc #1 + bne -- + dey + bpl -- + ldy #0 +- lda $C0EC + jsr @knownret + pha + pla + cmp $C0EC + clc + bne + + dey + bne - + sec ++ lda $C0E8 +@knownret + rts + Tracer jsr IDBroderbund bcc BeginTheBoot @@ -185,13 +239,19 @@ StringTable !word @mainmenu @header - !text "Anti-M v1.2 by 4am 2019-03-24" + !text "Anti-M v1.3-pre by 4am 2019-04-10" !text "________________________________________",$8D - !text $8D,$8D,$8D,$8D,$8D,$8D,$8D,$8D,$00 + !text $8D,$8D,$8D,$8D,$00 @mainmenu !text " Insert original disk in slot 6 drive 1",$8D !text $8D - !text " and press to boot",$00 + !text " and press to boot",$8D + !text $8D + !text " or",$8D + !text $8D + !text " Insert original disk in slot 6 drive 2",$8D + !text $8D + !text " and press 2 to boot",$00 !src "src/compare.a" !src "src/idbroderbund.a" diff --git a/src/idboot.a b/src/idboot.a index 49c1479..7fe8281 100644 --- a/src/idboot.a +++ b/src/idboot.a @@ -69,6 +69,8 @@ IDBoot inc $86D2 - lda @decode53,y sta $86D5,y + lda @decode53+$100,y + sta $86D5+$100,y iny bne - lda #$02 @@ -91,10 +93,15 @@ IDBoot tay iny sty @patch53+1 - ldx #0 ldy $8FE + tya + pha + lda #$FF + pha iny tya + ldx #<@callback53_2 + ldy #>@callback53_2 bne - @decode53 !pseudopc $86D5 { @@ -162,4 +169,133 @@ IDBoot bcs + jmp $865D + jmp ($44) + +@CompareMemoryRel + sta cmp1+1 + stx cmp1 + pla + sta cmp2 + pla + sta cmp2+1 + tax + tya + clc + adc cmp2 + bcc + + inx ++ sta tmp + txa + pha + lda tmp + pha +.cmp + lda (cmp2),y + dey + bmi .success + cmp (cmp1),y + beq .cmp + cmp #WILDCARD + beq .cmp + sec + !byte $24 ; hide CLC +.success clc + lda cmp1+1 + ldx cmp1 + rts + +@callback53_2 + lda $85FF + beq @skip2 + lda #$29 + ldx #$6E + ldy #8 + jsr @CompareMemoryRel + !byte $BD,$8A,$C0 ;LDA $C08A,X + !byte $B0,$03 ;BCS *+5 + !byte $BD,$8B,$C0 ;LDA $C08B,X + bcs @notinfocom + inc $296F +@skip2 + rts + +@notinfocom + lda #$3D + ldx #$5F + ldy #8 + jsr @CompareMemoryRel + !byte $BD,$8A,$C0 ;LDA $C08A,X + !byte $B0,$03 ;BCS *+5 + !byte $BD,$8B,$C0 ;LDA $C08B,X + bcs @notdos32a + inc $3D60 + ldx #$60 + rts + +@notdos32a + lda #$BD + ldx #$6E + ldy #8 + jsr @CompareMemoryRel + !byte $BD,$8A,$C0 ;LDA $C08A,X + !byte $B0,$03 ;BCS *+5 + !byte $BD,$8B,$C0 ;LDA $C08B,X + bcs @notdos32b + inc $BD6F + ldx #$60 + rts + +@notdos32b + lda #$3D + ldx #$6E + ldy #8 + jsr @CompareMemoryRel + !byte $BD,$8A,$C0 ;LDA $C08A,X + !byte $B0,$03 ;BCS *+5 + !byte $BD,$8B,$C0 ;LDA $C08B,X + bcs @notdos32c + inc $3D6F + ldx #$60 + rts + +@notdos32c + lda #$BD + ldx #$5F + ldy #8 + jsr @CompareMemoryRel + !byte $BD,$8A,$C0 ;LDA $C08A,X + !byte $B0,$03 ;BCS *+5 + !byte $BD,$8B,$C0 ;LDA $C08B,X + bcs @notdos32d + inc $BD60 + ldx #$60 + rts + +@notdos32d + lda #$24 + ldx #$6E + ldy #8 + jsr @CompareMemoryRel + !byte $BD,$8A,$C0 ;LDA $C08A,X + !byte $B0,$03 ;BCS *+5 + !byte $BD,$8B,$C0 ;LDA $C08B,X + bcs @notdos32e + inc $246F + ldx #$60 + rts + +@notdos32e + lda #$7D + ldx #$5F + ldy #8 + jsr @CompareMemoryRel + !byte $BD,$8A,$C0 ;LDA $C08A,X + !byte $B0,$03 ;BCS *+5 + !byte $BD,$8B,$C0 ;LDA $C08B,X + bcs @notdos32f + inc $7D60 + ldx #$60 + rts + +@notdos32f + rts } diff --git a/src/idbroderbund.a b/src/idbroderbund.a index d52716a..9b011fc 100644 --- a/src/idbroderbund.a +++ b/src/idbroderbund.a @@ -258,6 +258,10 @@ IDBroderbund ldx #<@BugAttackCallback ldy #>@BugAttackCallback cmp #$A1 + beq @hookhybrid + ldx #<@DOS33Callback + ldy #>@DOS33Callback + cmp #$B6 bne @jmpdos @hookhybrid @@ -302,6 +306,11 @@ IDBroderbund sta $300-1,y dey bne - + lda $85FF + sta @SpaceEggsPatch+1 + beq @skip2a + inc $3D60 +@skip2a + jmp $3700 ; let it goooo... @SpaceEggsCallback3 !pseudopc $300 { @@ -309,6 +318,11 @@ IDBroderbund jsr $3700 pla pla +@SpaceEggsPatch + lda #$00 + beq @skip2b + inc $5D60 +@skip2b jsr $5700 lda #$EA sta $49C3 @@ -355,6 +369,10 @@ IDBroderbund sta @StarThiefCallback2x-1,y dey bne - + lda $85FF + beq @skip2c + inc $421C +@skip2c lda #$4C sta $42C0 lda #<@StarThiefCallback2x @@ -381,8 +399,30 @@ IDBroderbund sta $A2F7 lda #>@BugAttackCallback2x sta $A2F8 + lda $85FF + beq @skip2d + inc $A234 +@skip2d jmp $A200 +@DOS33Callback + lda $85FF + beq @skip2e + lda #$BD + ldx #$5F + ldy #8 + jsr CompareMemory + !byte $BD,$8A,$C0 ;LDA $C08A,X + !byte $B0,$03 ;BCS *+5 + !byte $BD,$8B,$C0 ;LDA $C08B,X + bcs @notdos33 + inc $BD60 + +@notdos33 +@skip2e + ldx #$60 + jmp $B700 + @StarThiefCallback2 !pseudopc $110 { @StarThiefCallback2x lda #$4C diff --git a/src/idspiradisc.a b/src/idspiradisc.a index e54e6b3..b439a46 100644 --- a/src/idspiradisc.a +++ b/src/idspiradisc.a @@ -29,6 +29,24 @@ IDSpiraDisc rts @callback1 + lda $85FF + beq @skip2 + lda $B5F9 + cmp #$8A + bne + + inc $B5F9 ++ lda $B608 + cmp #$8A + bne + + inc $B608 ++ lda $B618 + cmp #$8A + bne + + inc $B618 ++ + +@skip2 + ; disable ROM checksum-failure branching lda $B845 cmp #$5C