From adf3d10db04fe5051b134a938b5096df2c0b61a0 Mon Sep 17 00:00:00 2001 From: Tom Greene Date: Sat, 8 Oct 2022 19:55:28 -0400 Subject: [PATCH] Detect broken VBL on Mac IIe card (#508) --- src/hw.vbl.init.a | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/hw.vbl.init.a b/src/hw.vbl.init.a index de558847a..70064810d 100644 --- a/src/hw.vbl.init.a +++ b/src/hw.vbl.init.a @@ -22,7 +22,7 @@ BuildVBLFunction beq @build_iic ; //c family lda romid_mac cmp #ROMID_IIECARD - beq @build_none ; broken in some versions, disable + beq @build_iiecard ; Mac Apple IIe card sec jsr idroutine ; check for IIgs bcs @NotGS @@ -45,6 +45,21 @@ BuildVBLFunction lda #$4C sta UnwaitForVBL rts + +@build_iiecard + lda $FBBE ; check IIe card software version because v2.2.2d1 is broken + cmp #$03 ; $03 = v2.2.x + bne @NotGS ; all other versions are ok + + ldy #$08 ; Found v2.2.x but don't know which one, so test if VBL works + ldx #$00 +- bit $C019 + bmi @NotGS + dex + bne - + dey ; keep checking for ~22,000 cycles (a little over 1/50 of a second) + bne - ; if no VBL by then fall through to @build_none + @build_none lda #$60 sta WaitForVBL