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.asm
binary (akaBROM
) is mapped from address_lineBOOTSEQUENCE_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
PC
atBOOTSEQUENCE_ORG = 0x34
BROM
goal is to copyPROM
to RAM atDEFAULT_PROGRAM_ORG = 0x80
- Followed by
jmp DEFAULT_PROGRAM_ORG
- Programs like
programs/ping_pong.asm
are translated into binary and are referred to asPROM
. PROM
is connected to as input-output device.- The equivalent program is loaded in RAM at
DEFAULT_PROGRAM_ORG = 0x80
, followed by execution after boot sequence.