# Dev notes — 2023-08-15 ## Goals for today - [x] Review planned changes to simulator - [x] 'opcodes' and 'operands' - [x] fix $00 contains $20 bug - [x] Review planned changes to the system - [x] CHP, CFC -> FHP, FTG -- dev note 2023-08-07 - [/] bank-switching flag in 0 page - added notes below, but decided to leave implementation for another day - [x] ? 5x5 display - [/] Implement any changes necessary for writing a program? - [-] Write a program - [-] LOGO turtle on 5x5? ## Overflow flag Ken Shirriff, [The 6502 overflow flag explained mathematically](https://www.righto.com/2012/12/the-6502-overflow-flag-explained.html): > A common definition of overflow is `V = C6 xor C7`. That is, overflow happens if the carry into bit 7 is different from the carry out. ## Bank switching ### Planned memory map - `00-0F` - display (4x4) - `10-1F` - keypad? (details TBD) - `20 ` - pointer to display memory - `21 ` - pointer to keypad memory - `22 ` - pointer to memory bank - `23-2F` - reserved for future use / variable storage - `30 ` - initial value for IP - `30-80` - free - `80-FF` - free, can be bank-switched ## Looping using an interval timer const loop = setInterval(async () => { step = step + 1; // Temporary limit as a lazy way to halt infinite loops: if (CYCLE_LIMIT && (step > CYCLE_LIMIT)) { console.log('SIMULATION HALTING - reached cycle limit'); clearInterval(loop); } if (!CPU.running) clearInterval(loop); if (CPU.IP >= CPU.memory.length) clearInterval(loop); stepCPU(); await logCPUState(debug); }, frameRate);