From 5fa48ec59133aec5060dddf7d85a9b7b6c9c1929 Mon Sep 17 00:00:00 2001 From: tudnai Date: Wed, 16 Nov 2022 12:19:12 -0800 Subject: [PATCH] Save_RAM() --- src/dev/mem/mmio.c | 28 ++++++++++++++++++++++++---- src/dev/mem/mmio.h | 2 ++ 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/dev/mem/mmio.c b/src/dev/mem/mmio.c index 32dc857..42f8dd7 100644 --- a/src/dev/mem/mmio.c +++ b/src/dev/mem/mmio.c @@ -157,6 +157,26 @@ INLINE void save_AUX(void) { } +/// Save entire +void save_RAM() { + // save the content of Shadow ZP + Stack + memcpy( (void*) currentZPSTCKMEM, shadowZPSTCKMEM, 0x200); + // save LoMem + memcpy( (void*) currentLowWRMEM + 0x200, WRLOMEM + 0x200, 0xBE00); + + save_AUX(); + + if ( activeTextPage ) { + // save the content of Shadow Memory + memcpy(activeTextPage, shadowTextPage, 0x400); + } + +} + + + + + INLINE void select_RAM_BANK( uint16_t addr ) { // RAM Bank 1 or 2? switch ((uint8_t)addr) { @@ -1378,19 +1398,19 @@ void auxMemorySelect( MEMcfg_t newMEMcfg ) { newReadMEM = Apple2_64K_AUX + 0x200; } else { - newReadMEM = Apple2_64K_MEM + 0x200; + newReadMEM = Apple2_64K_RAM + 0x200; } if ( newMEMcfg.WR_AUX_MEM ) { newWriteMEM = Apple2_64K_AUX; } else { - newWriteMEM = Apple2_64K_MEM; + newWriteMEM = Apple2_64K_RAM; } } else { - newReadMEM = Apple2_64K_MEM + 0x200; - newWriteMEM = Apple2_64K_MEM; + newReadMEM = Apple2_64K_RAM + 0x200; + newWriteMEM = Apple2_64K_RAM; } diff --git a/src/dev/mem/mmio.h b/src/dev/mem/mmio.h index 6170aab..a49658c 100644 --- a/src/dev/mem/mmio.h +++ b/src/dev/mem/mmio.h @@ -87,6 +87,8 @@ extern void kbdUp (void); extern uint8_t getIO ( uint16_t ioaddr ); extern void setIO ( uint16_t ioaddr, uint8_t val ); +extern void save_RAM(); + #ifndef DEBUGGER extern uint8_t getMEM ( uint16_t ioaddr ); extern uint16_t getMEM16 ( uint16_t ioaddr );