Next steps: - Verify Locks needed - Audit Keyboard <-> IO Port Interaction - Add remote gdb interface Registers to check access to: IO PORT MISCCR MMU FSR MMU FAR MMU Alignment Checks in general MMU r7: Wait for Interrupt File Manager: Read from 0x08080000: Probe memory size??? -> Add mirrored mapping of SRAM? Annunciators: Bits set in Column 132 of the LCD screen memory: Row 0: Transmit Row 1: Left Shift Row 2: Right Shift Row 3: Alpha Row 4: Battery Row 5: Busy IRQ Branch Table: 08000020: IRQ reads 08000020 + (IRQOFFSET << 2), branches there IRQ returns with "subs pc, lr, #4" The speed of the emulator is an issue... It is running about 20 times SLOWER than the original calculator at the moment on my 400 MHz UltraSparc. There will be quite some speedup running on a modern PC or workstation with faster processor. Also, at the moment I have a lot of debugging enabled, which slows down the emulator. Getting the full 75 MHz out of the emulated ARM core will be hard work, I have not looked into the potential optimizations that can be done in the core emulator, but there are some things done during every instruction that we don't need for this machine. There are generally two options to speed up or use the emulator: 1. Emulate the hardware as closely as possible to help debug programms digging into the s3c2410. 2. Emulate the saturn part to make it a usable calculator. Here one could implement some of the most often used KOS syscalls directly in the emulator without doing these on the emulated ARM core. This would speed up the calculator significantly. Optimally there will be a runtime option to switch between these two modes.