From ac30c8c15a6b4f1b6d21bc2b37de28995fd4bf43 Mon Sep 17 00:00:00 2001 From: Michaelangel007 Date: Fri, 10 Nov 2017 10:58:09 -0800 Subject: [PATCH] Add LC aux/main test --- softswitch.po | Bin 143360 -> 143360 bytes test.lc | Bin 0 -> 124 bytes test.lc.s | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 132 insertions(+) create mode 100644 test.lc create mode 100644 test.lc.s diff --git a/softswitch.po b/softswitch.po index 880b583632f013d08b76efe52a84267cdcad4fc3..89893b07457a583437df39856b8f64c81236a41c 100644 GIT binary patch delta 210 zcmZp8z|ru4V}mLSBim#(mJ@2?A+Et8dOpq!P{8KRz{pU;z>uY^!>!Eln1MM<*_@kc zG9%NQO>CTOjQpFqc)oSk_c9zw&!t%ySu-PhI%l+jL;Main, C=1 Main->Aux +MOVE = $FE2C ; Main<->Main, *MUST* set Y=0 prior! + +; We want an address in ROM that has a printable byte 'R' = $92 +;across all ROM versions +; +; $FD92 is a ROM entry point for PRA1 +; It is called from $FDB3 +; FDB3:20 92 FD 832 XAM JSR PRA1 +; ^^ +; 'R' +TEST = $FDB4 + +SAVE_A = $400 ; LC Aux +SAVE_M = $401 ; LC Main +SAVE_R = $402 ; LC ROM + +OUT_1 = $480 +OUT_2 = $481 +OUT_3 = $482 + +; ==================== + + ORG $300 ; Yes, on the stack + +__LEN = __END - __MAIN + +__MAIN + STA STORE80 ; Allow RD*RAM and WR*RAM to work + +; 22 bytes +; LDA #0 +; LDX #<__END +; LDY #>__MAIN +; STA MOV_SRC+0 +; STX MOV_END+0 +; STA MOV_DST+0 +; STY MOV_SRC+1 +; STY MOV_END+1 +; STY MOV_DST+1 +; SEC ; C=1 Main->Aux +; JSR AUXMOVE + +; 17 bytes + LDX #<__END + STA RDMAINRAM + STA WRCARDRAM +Copy2Aux + LDA __MAIN,X + STA __MAIN,X + DEX + BNE Copy2Aux ; off-by-one bug but is OK + + STA ROMIN2 ; bank LC ROM + LDA TEST + STA WRMAINRAM + STA SAVE_R ; save original ROM $E000 + + LDA LCBANK2 ; Enable LC RAM read + LDA LCBANK2 ; Enable LC RAM write + +SaveE000 + LDX #'A'+$80 + LDY #'M'+$80 + + STA SETALTZP ; Aux $D000..$FFFF + LDA TEST + STA SAVE_A ; save original Aux $E000 + STX TEST ; Visual Aux flag 'A' + + STA SETSTDZP ; Main $D000..$FFFF + LDA TEST + STA SAVE_M ; save original Main $E000 + STY TEST ; Visual Main flag 'M' + +; Test 1 = Aux LC RAM + STA SETALTZP ; moment of truth + LDA TEST ; should be 'A' + STA OUT_1 ; + +; Test 2 = Main LC RAM + STA SETSTDZP ; moment of truth + LDX TEST ; should be 'M' + STX OUT_2 + +; Test 3 = n/a LC ROM + STA ROMIN2 + STA SETALTZP ; moment of truth - won't matter if STD or ALT + LDY TEST ; should be ROM + STY OUT_3 + +LoadE000 + LDA LCBANK2 ; Enable LC RAM read + LDA LCBANK2 ; Enable LC RAM write + + LDX SAVE_A + LDY SAVE_M + STX TEST ; restore CARD $E000 + STA SETSTDZP + STY TEST ; restore MAIN $E000 + + STA ROMIN2 ; ROM + STA STORE80+1 ; + RTS +__END +