From 42e4f419978bc2ae4ef6f491ba48bcc167e3f7c1 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Tue, 4 Sep 2018 12:51:13 -0400 Subject: [PATCH] ksp_theme: fix interrupt bug on older Apple IIs --- mockingboard/ksp_theme_6ch.s | 12 ++++++++---- mockingboard/ksp_theme_interrupt.s | 15 +++++++++++++-- mockingboard/mock_test.dsk | Bin 143360 -> 143360 bytes 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/mockingboard/ksp_theme_6ch.s b/mockingboard/ksp_theme_6ch.s index a370d951..1f405dbf 100644 --- a/mockingboard/ksp_theme_6ch.s +++ b/mockingboard/ksp_theme_6ch.s @@ -352,7 +352,8 @@ forever_loop: ; Then it sets up the stack like an interrupt and calls 0x3fe interrupt_handler: - pha ; save A +; pha ; save A + ; A saved by firmware to $45 txa pha tya @@ -549,10 +550,13 @@ done_left_interrupt: done_interrupt: pla - tay - pla - tax + tay ; restore Y + pla + tax ; restore X + + lda $45 ; restore A + rti diff --git a/mockingboard/ksp_theme_interrupt.s b/mockingboard/ksp_theme_interrupt.s index d76fc0bf..542084e7 100644 --- a/mockingboard/ksp_theme_interrupt.s +++ b/mockingboard/ksp_theme_interrupt.s @@ -338,8 +338,13 @@ forever_loop: ; Then it sets up the stack like an interrupt and calls 0x3fe interrupt_handler: - pha ; save A - ; Should we save X and Y too? +; pha ; firmware saves A to $45 for us + txa ; save X + pha + tya + pha ; save Y + + bit $C404 ; can clear 6522 interrupt by reading T1C-L @@ -437,6 +442,12 @@ not_done: done_interrupt: pla + tay ; restore y + pla + tax ; restore X + + lda $45 ; restore A + rti diff --git a/mockingboard/mock_test.dsk b/mockingboard/mock_test.dsk index 4a32fd6987d7e78bf4d453278b7c3f07d9dea23e..c03ccf2596c4be295bcc280da7ae57bc81587eaa 100644 GIT binary patch delta 3439 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 U{@d3lM%4pZx1OK>^z$?G4;QHyq5uE@