diff --git a/A2Mac.xcodeproj/xcuserdata/trudnai.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/A2Mac.xcodeproj/xcuserdata/trudnai.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
index bc42f26..a1d3ad7 100644
--- a/A2Mac.xcodeproj/xcuserdata/trudnai.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
+++ b/A2Mac.xcodeproj/xcuserdata/trudnai.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
@@ -657,8 +657,8 @@
filePath = "A2Mac/ViewController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
- startingLineNumber = "562"
- endingLineNumber = "562"
+ startingLineNumber = "558"
+ endingLineNumber = "558"
landmarkName = "viewDidLoad()"
landmarkType = "7">
@@ -881,22 +881,6 @@
landmarkType = "7">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/cpu/6502.c b/src/cpu/6502.c
index 1e0430f..88f5b1e 100644
--- a/src/cpu/6502.c
+++ b/src/cpu/6502.c
@@ -888,8 +888,6 @@ void rom_loadFile( const char * bundlePath, const char * filename ) {
else if ( flen == 16 * KB ) {
read_rom( bundlePath, filename, Apple2_16K_ROM, 0);
memcpy(Apple2_64K_MEM + 0xC000, Apple2_16K_ROM, 16 * KB);
-
-// SWITCH_CX_ROM( RAM_PG_RD_TBL, 0xC0, Apple2_16K_ROM, 0x00);
}
else if ( flen == 12 * KB ) {
diff --git a/src/cpu/instructions/6502_instr_stack.h b/src/cpu/instructions/6502_instr_stack.h
index 3c13232..7a5355a 100644
--- a/src/cpu/instructions/6502_instr_stack.h
+++ b/src/cpu/instructions/6502_instr_stack.h
@@ -18,8 +18,6 @@ INLINE void PUSH( uint8_t src ) {
}
INLINE uint8_t POP() {
-// return RAM[ stack_base_addr | ++m6502.SP ];
-// return *( RAM_PG_RD_TBL[ stack_base_addr >> 8 ] + ++m6502.SP );
return RDLOMEM[ stack_base_addr | ++m6502.SP ];
}
diff --git a/src/dev/mem/mmio.h b/src/dev/mem/mmio.h
index 4de6379..726f1c6 100644
--- a/src/dev/mem/mmio.h
+++ b/src/dev/mem/mmio.h
@@ -188,72 +188,6 @@ uint8_t * const WRHIMEM = Apple2_Dummy_RAM; // Pointer to the Shadow Memory
NULL, \
NULL
-uint8_t * RAM_PG_RD_TBL[256] = {
- // 48K main memory
- DEF_RAM_PAGE16( Apple2_64K_MEM, 0x00),
- DEF_RAM_PAGE16( Apple2_64K_MEM, 0x10),
- DEF_RAM_PAGE16( Apple2_64K_MEM, 0x20),
- DEF_RAM_PAGE16( Apple2_64K_MEM, 0x30),
- DEF_RAM_PAGE16( Apple2_64K_MEM, 0x40),
- DEF_RAM_PAGE16( Apple2_64K_MEM, 0x50),
- DEF_RAM_PAGE16( Apple2_64K_MEM, 0x60),
- DEF_RAM_PAGE16( Apple2_64K_MEM, 0x70),
- DEF_RAM_PAGE16( Apple2_64K_MEM, 0x80),
- DEF_RAM_PAGE16( Apple2_64K_MEM, 0x90),
- DEF_RAM_PAGE16( Apple2_64K_MEM, 0xA0),
- DEF_RAM_PAGE16( Apple2_64K_MEM, 0xB0),
- // I/O Addresses
- DEF_RAM_PAGE16( Apple2_64K_MEM, 0xC0),
- // Reading from the ROM
- DEF_RAM_PAGE16( Apple2_16K_ROM, 0x10), // D0
- DEF_RAM_PAGE16( Apple2_16K_ROM, 0x20), // E0
- DEF_RAM_PAGE16( Apple2_16K_ROM, 0x30) // F0
-};
-
-uint8_t * RAM_PG_WR_TBL[256] = {
- // 48K main memory
- DEF_RAM_PAGE16( Apple2_64K_MEM, 0x00),
- DEF_RAM_PAGE16( Apple2_64K_MEM, 0x10),
- DEF_RAM_PAGE16( Apple2_64K_MEM, 0x20),
- DEF_RAM_PAGE16( Apple2_64K_MEM, 0x30),
- DEF_RAM_PAGE16( Apple2_64K_MEM, 0x40),
- DEF_RAM_PAGE16( Apple2_64K_MEM, 0x50),
- DEF_RAM_PAGE16( Apple2_64K_MEM, 0x60),
- DEF_RAM_PAGE16( Apple2_64K_MEM, 0x70),
- DEF_RAM_PAGE16( Apple2_64K_MEM, 0x80),
- DEF_RAM_PAGE16( Apple2_64K_MEM, 0x90),
- DEF_RAM_PAGE16( Apple2_64K_MEM, 0xA0),
- DEF_RAM_PAGE16( Apple2_64K_MEM, 0xB0),
- // I/O Addresses
-// DEF_RAM_DUMMY16,
-
- DEF_RAM_PAGE16( Apple2_64K_MEM, 0xC0),
-
-// DEF_RAM_PAGE(Apple2_64K_RAM, 0xC0),
-// // SLOT ROM is non-writeable
-// DEF_RAM_PAGE(Apple2_Dummy_Page, 0), // 01
-// DEF_RAM_PAGE(Apple2_Dummy_Page, 0), // 02
-// DEF_RAM_PAGE(Apple2_Dummy_Page, 0), // 03
-// DEF_RAM_PAGE(Apple2_Dummy_Page, 0), // 04
-// DEF_RAM_PAGE(Apple2_Dummy_Page, 0), // 05
-// DEF_RAM_PAGE(Apple2_Dummy_Page, 0), // 06
-// DEF_RAM_PAGE(Apple2_Dummy_Page, 0), // 07
-// DEF_RAM_PAGE(Apple2_Dummy_Page, 0), // 08
-// DEF_RAM_PAGE(Apple2_Dummy_Page, 0), // 09
-// DEF_RAM_PAGE(Apple2_Dummy_Page, 0), // 0A
-// DEF_RAM_PAGE(Apple2_Dummy_Page, 0), // 0B
-// DEF_RAM_PAGE(Apple2_Dummy_Page, 0), // 0C
-// DEF_RAM_PAGE(Apple2_Dummy_Page, 0), // 0D
-// DEF_RAM_PAGE(Apple2_Dummy_Page, 0), // 0E
-// DEF_RAM_PAGE(Apple2_Dummy_Page, 0), // 0F
-
- // NO Writing to the ROM
- DEF_RAM_DUMMY16,
- DEF_RAM_DUMMY16,
- DEF_RAM_DUMMY16,
-};
-
-
enum slot {
SLOT0 = 0x00,
@@ -362,46 +296,8 @@ enum mmio {
void resetMemory() {
- // 48K main memory
- SWITCH_RAM_PAGE16( RAM_PG_RD_TBL, 0x00, Apple2_64K_MEM, 0x00)
- SWITCH_RAM_PAGE16( RAM_PG_RD_TBL, 0x10, Apple2_64K_MEM, 0x10)
- SWITCH_RAM_PAGE16( RAM_PG_RD_TBL, 0x20, Apple2_64K_MEM, 0x20)
- SWITCH_RAM_PAGE16( RAM_PG_RD_TBL, 0x30, Apple2_64K_MEM, 0x30)
- SWITCH_RAM_PAGE16( RAM_PG_RD_TBL, 0x40, Apple2_64K_MEM, 0x40)
- SWITCH_RAM_PAGE16( RAM_PG_RD_TBL, 0x50, Apple2_64K_MEM, 0x50)
- SWITCH_RAM_PAGE16( RAM_PG_RD_TBL, 0x60, Apple2_64K_MEM, 0x60)
- SWITCH_RAM_PAGE16( RAM_PG_RD_TBL, 0x70, Apple2_64K_MEM, 0x70)
- SWITCH_RAM_PAGE16( RAM_PG_RD_TBL, 0x80, Apple2_64K_MEM, 0x80)
- SWITCH_RAM_PAGE16( RAM_PG_RD_TBL, 0x90, Apple2_64K_MEM, 0x90)
- SWITCH_RAM_PAGE16( RAM_PG_RD_TBL, 0xA0, Apple2_64K_MEM, 0xA0)
- SWITCH_RAM_PAGE16( RAM_PG_RD_TBL, 0xB0, Apple2_64K_MEM, 0xB0)
- // I/O Addresses
- SWITCH_RAM_PAGE16( RAM_PG_RD_TBL, 0xC0, Apple2_64K_MEM, 0xC0)
- // Reading from the ROM
- SWITCH_RAM_PAGE16( RAM_PG_RD_TBL, 0xD0, Apple2_16K_ROM, 0x10) // D0
- SWITCH_RAM_PAGE16( RAM_PG_RD_TBL, 0xE0, Apple2_16K_ROM, 0x20) // E0
- SWITCH_RAM_PAGE16( RAM_PG_RD_TBL, 0xF0, Apple2_16K_ROM, 0x30) // F0
-
- // 48K main memory
- SWITCH_RAM_PAGE16( RAM_PG_WR_TBL, 0x00, Apple2_64K_MEM, 0x00)
- SWITCH_RAM_PAGE16( RAM_PG_WR_TBL, 0x10, Apple2_64K_MEM, 0x10)
- SWITCH_RAM_PAGE16( RAM_PG_WR_TBL, 0x20, Apple2_64K_MEM, 0x20)
- SWITCH_RAM_PAGE16( RAM_PG_WR_TBL, 0x30, Apple2_64K_MEM, 0x30)
- SWITCH_RAM_PAGE16( RAM_PG_WR_TBL, 0x40, Apple2_64K_MEM, 0x40)
- SWITCH_RAM_PAGE16( RAM_PG_WR_TBL, 0x50, Apple2_64K_MEM, 0x50)
- SWITCH_RAM_PAGE16( RAM_PG_WR_TBL, 0x60, Apple2_64K_MEM, 0x60)
- SWITCH_RAM_PAGE16( RAM_PG_WR_TBL, 0x70, Apple2_64K_MEM, 0x70)
- SWITCH_RAM_PAGE16( RAM_PG_WR_TBL, 0x80, Apple2_64K_MEM, 0x80)
- SWITCH_RAM_PAGE16( RAM_PG_WR_TBL, 0x90, Apple2_64K_MEM, 0x90)
- SWITCH_RAM_PAGE16( RAM_PG_WR_TBL, 0xA0, Apple2_64K_MEM, 0xA0)
- SWITCH_RAM_PAGE16( RAM_PG_WR_TBL, 0xB0, Apple2_64K_MEM, 0xB0)
- // I/O Addresses
- SWITCH_RAM_PAGE16( RAM_PG_WR_TBL, 0xC0, Apple2_64K_MEM, 0xC0)
- // NO Writing to the ROM
- SWITCH_RAM_PAGE16( RAM_PG_WR_TBL, 0xD0, Apple2_Dummy_RAM, 0 );
- SWITCH_RAM_PAGE16( RAM_PG_WR_TBL, 0xE0, Apple2_Dummy_RAM, 0 );
- SWITCH_RAM_PAGE16( RAM_PG_WR_TBL, 0xF0, Apple2_Dummy_RAM, 0 );
-
+
+ // Reset memory configuration
MEMcfg.RAM_16K = 0;
MEMcfg.RAM_128K = 1;
MEMcfg.RD_RAM = 0;
@@ -442,8 +338,6 @@ void textPageSelect() {
// load the content of Video Page 2
memcpy(shadow, Apple2_64K_AUX, 0x400);
- SWITCH_VIDEO_RAM( RAM_PG_RD_TBL, 0x04, Apple2_64K_MEM, 0x04)
- SWITCH_VIDEO_RAM( RAM_PG_WR_TBL, 0x04, Apple2_64K_MEM, 0x04)
}
else {
// save the content of Shadow Memory
@@ -452,8 +346,6 @@ void textPageSelect() {
// load the content of Video Page 2
memcpy(shadow, Apple2_64K_RAM, 0x400);
- SWITCH_VIDEO_RAM( RAM_PG_RD_TBL, 0x04, Apple2_64K_MEM, 0x04)
- SWITCH_VIDEO_RAM( RAM_PG_WR_TBL, 0x04, Apple2_64K_MEM, 0x04)
}
}
@@ -473,8 +365,6 @@ void auxMemorySelect() {
// load the content of Aux Memory
memcpy(Apple2_64K_MEM + 0x200, Apple2_64K_AUX, 0xA00);
-
- SWITCH_AUX_MEM( RAM_PG_RD_TBL, Apple2_64K_MEM );
}
else {
memory = Apple2_64K_RAM + 0x200;
@@ -484,20 +374,17 @@ void auxMemorySelect() {
// load the content of Int Memory
memcpy(Apple2_64K_MEM + 0x200, Apple2_64K_RAM, 0xA00);
-
- SWITCH_AUX_MEM( RAM_PG_RD_TBL, Apple2_64K_MEM );
}
if ( MEMcfg.WR_AUX_MEM ) {
- SWITCH_AUX_MEM( RAM_PG_WR_TBL, Apple2_64K_MEM );
+ // TODO: set write table for AUX
}
else {
- SWITCH_AUX_MEM( RAM_PG_WR_TBL, Apple2_64K_MEM );
+ // TODO: set write table for RAM
}
}
else {
- SWITCH_AUX_MEM( RAM_PG_RD_TBL, Apple2_64K_MEM );
- SWITCH_AUX_MEM( RAM_PG_WR_TBL, Apple2_64K_MEM );
+ // TODO: set read table for RAM
}
// load new content to shadow memory
@@ -649,9 +536,6 @@ INLINE uint8_t ioRead( uint16_t addr ) {
memcpy(Apple2_64K_MEM + 0xD000, Apple2_64K_AUX, 0x3000);
// set the RAM extension to read on the upper memory area
- SWITCH_RAM_PAGE16( RAM_PG_RD_TBL, 0xD0, RAM_BANK, 0x00 );
- SWITCH_RAM_PAGE16( RAM_PG_RD_TBL, 0xE0, Apple2_64K_AUX, 0xE0 );
- SWITCH_RAM_PAGE16( RAM_PG_RD_TBL, 0xF0, Apple2_64K_AUX, 0xF0 );
break;
default:
@@ -664,9 +548,6 @@ INLINE uint8_t ioRead( uint16_t addr ) {
memcpy(Apple2_64K_MEM + 0xD000, Apple2_16K_ROM + 0x1000, 0x3000);
// set the ROM to read on the upper memory area
- SWITCH_RAM_PAGE16( RAM_PG_RD_TBL, 0xD0, Apple2_16K_ROM, 0x10 );
- SWITCH_RAM_PAGE16( RAM_PG_RD_TBL, 0xE0, Apple2_16K_ROM, 0x20 );
- SWITCH_RAM_PAGE16( RAM_PG_RD_TBL, 0xF0, Apple2_16K_ROM, 0x30 );
break;
}
@@ -678,17 +559,11 @@ INLINE uint8_t ioRead( uint16_t addr ) {
case io_MEM_RDRAM_WRAM_1:
MEMcfg.WR_RAM = 1;
// set the RAM extension to read from the upper memory area
- SWITCH_RAM_PAGE16( RAM_PG_WR_TBL, 0xD0, RAM_BANK, 0x00 );
- SWITCH_RAM_PAGE16( RAM_PG_WR_TBL, 0xE0, Apple2_64K_AUX, 0xE0 );
- SWITCH_RAM_PAGE16( RAM_PG_WR_TBL, 0xF0, Apple2_64K_AUX, 0xF0 );
break;
default:
MEMcfg.WR_RAM = 0;
// set the ROM to read on the upper memory area
- SWITCH_RAM_PAGE16( RAM_PG_WR_TBL, 0xD0, Apple2_Dummy_RAM, 0 );
- SWITCH_RAM_PAGE16( RAM_PG_WR_TBL, 0xE0, Apple2_Dummy_RAM, 0 );
- SWITCH_RAM_PAGE16( RAM_PG_WR_TBL, 0xF0, Apple2_Dummy_RAM, 0 );
break;
}
@@ -826,38 +701,36 @@ INLINE void ioWrite( uint16_t addr, uint8_t val ) {
case io_SETSTDZP:
MEMcfg.ALT_ZP = 0;
- SWITCH_STACK_ZP(RAM_PG_RD_TBL, Apple2_64K_RAM);
- SWITCH_STACK_ZP(RAM_PG_WR_TBL, Apple2_64K_RAM);
+ // TODO: set zero page table to RAM
break;
case io_SETALTZP:
MEMcfg.ALT_ZP = 1;
- SWITCH_STACK_ZP(RAM_PG_RD_TBL, Apple2_64K_AUX);
- SWITCH_STACK_ZP(RAM_PG_WR_TBL, Apple2_64K_AUX);
+ // TODO: set zero page table to AUX
break;
case io_SETSLOTCXROM:
// printf("io_SETSLOTCXROM\n");
MEMcfg.int_Cx_ROM = 0;
- SWITCH_CX_ROM( RAM_PG_RD_TBL, 0xC0, Apple2_64K_RAM, 0xC0);
+ // TODO: set Cx00 ROM area table to SLOT
break;
case io_SETINTCXROM:
// printf("io_SETINTCXROM\n");
MEMcfg.int_Cx_ROM = 1;
- SWITCH_CX_ROM( RAM_PG_RD_TBL, 0xC0, Apple2_16K_ROM, 0x00);
+ // TODO: set Cx00 ROM area table to INT
break;
case io_SETSLOTC3ROM:
// printf("io_SETSLOTC3ROM\n");
MEMcfg.slot_C3_ROM = 1;
- SWITCH_ROM_PAGE( RAM_PG_RD_TBL, 0xC3, Apple2_64K_RAM, 0xC3);
+ // TODO: set C300 ROM area table to SLOT
break;
case io_SETINTC3ROM:
// printf("io_SETINTC3ROM\n");
MEMcfg.slot_C3_ROM = 0;
- SWITCH_ROM_PAGE( RAM_PG_RD_TBL, 0xC3, Apple2_16K_ROM, 0x03);
+ // TODO: set C300 ROM area table to INT
break;
case io_VID_CLR80VID:
@@ -914,10 +787,6 @@ INLINE void ioWrite( uint16_t addr, uint8_t val ) {
/**
Naive implementation of RAM read from address
**/
-INLINE uint8_t memread8_paged( uint16_t addr ) {
- return * ( RAM_PG_RD_TBL[addr >> 8] + (addr & 0xFF) );
-// return RAM[addr];
-}
INLINE uint8_t memread8_low( uint16_t addr ) {
return RDLOMEM[addr];
}
@@ -997,7 +866,6 @@ INLINE void memwrite( uint16_t addr, uint8_t data ) {
ioWrite(addr, data);
}
else {
-// *(RAM_PG_WR_TBL[ addr >> 8 ] + (addr & 0xFF)) = data;
memwrite8_high(addr, data);
}
}
@@ -1005,15 +873,6 @@ INLINE void memwrite( uint16_t addr, uint8_t data ) {
memwrite8_low(addr, data);
}
-// // I/O or ROM or RAM EXP
-// if ( ( addr >= 0xC000 ) && ( addr < 0xC100 ) ) {
-// return ioWrite( addr, src );
-// }
-//
-// // DO NOT MAKE IT NICER! faster this way!
-// *(RAM_PG_WR_TBL[ addr >> 8 ] + (addr & 0xFF)) = src;
-//// RAM[addr] = src;
-//
}
/**