A 16-bit address, 32-bit data line general-purpose processor architecture. Key features include external ROM program execution and real-time I/O capabilities.
- Ping Pong
- 16x8 LED display with W/S/Up/Down keyboard controller
- Source: ping_pong.asm
- Generate resolved assembly: python3 -m planner asm -r programs/ping_pong.asm[example]
- Generate binary: python3 -m planner asm -b programs/ping_pong.asm[example]
- Run on python emulator: python3 -m planner compile_and_execute ping_pong
- Run on verilog emulator: make verilog_simulate
 
- Memory Address Line: 16-bits (points to a byte)
- Memory Value Line: 32-bits (4 bytes)
- Max Memory: 64KB
- Memory layout: here
- programs/boot_sequence.asmbinary (aka- BROM) is mapped from address_line- BOOTSEQUENCE_LOAD = 0x30
- Memory Read
- If BOOTSEQUENCE_ORG <= address_line < DEFAULT_PROGRAM_ORG, pulls value fromBROM
- Otherwise, pulls the value from RAM
 
- If 
- Execution starts with PCatBOOTSEQUENCE_ORG = 0x34
- BROMgoal is to copy- PROMto RAM at- DEFAULT_PROGRAM_ORG = 0x80
- Followed by jmp DEFAULT_PROGRAM_ORG
- Programs like programs/ping_pong.asmare translated into binary and are referred to asPROM.
- PROMis connected to as input-output device.
- The equivalent program is loaded in RAM at DEFAULT_PROGRAM_ORG = 0x80, followed by execution after boot sequence.
