MAR and memory
Memory Address Register (MAR) and Memory Memory is (obviously) an essential part of a computer, and this blog post is part of a series and concerns adding different types of memory to my 8-bit computer . The memory of my 8-bit computer is addressed with a 16-bit address register, which gives access to 64k of memory. I have divided this memory space into ROM (EEPROM), VRAM (for the LED WS21812b module ) and SRAM, with the following memory divisions: 0x0000-0x7FFF: ROM 0x8000-0x87FF: VRAM 0x8800-0xFFFF: SRAM A zero-page in SRAM can be accessed at 0x8800-0x88FF. In terms of the electronics, this is achieved by not writing to the high databus (D8-D15), and instead letting a set of pull up and down resistors set the high databus to 0x88 by pulling D15 and D11 high, and D14-12 and D10-8 to ground. By not writing "0x88" explicitly to the high databus, instructions that access this memory are quicker than they otherwise would be. The address decoding logic is fairly straightforwa