Z80 REPL (2018)

adunk 154 points 18 comments September 23, 2026
abagames.github.io · View on Hacker News

Discussion Highlights (6 comments)

networked

Cool idea! The REPL needs to handle whitespace after an instruction with no operands: > ld c,20h 0E 20 (7 cycles) > ld c,20h [<-- trailing space here] 0E 20 (7 cycles) > nop 00 (4 cycles) > nop [<-- trailing space here] unknown instruction: nop I also wish I could select from the completion list with Tab without typing more of the instruction, fish-style. I.e., you press Tab to go through completion 1, completion 2, ..., completion N, completion 1 again with Enter to confirm your pick.

j4cobgarby

Really nice! Would be fun if there were a few examples that could be loaded into memory

jottinger

The source code for this is apparently 8 years old: https://github.com/abagames/z80-repl With that said, I love the idea.

flyinghamster

The one thing I lamented about the Apple II Plus (vs. the original with Integer BASIC) was that to make room for autostart, they had to rip out the mini-assembler in the Monitor ROM. That was the closest thing I ever saw to an assembly-language REPL before this. At least they were able to keep the disassembler.

torutofu

the fun part is how fast you can get back into Z80 muscle memory once the repl is giving you immediate feedback

jhallenworld

You should support symbols... For example, the monitor on my 6800 / 6809 Exorciser simulator has this (the "Offset at..." is printed when it fixes forward references): ~/exorsim$ exor -d % a 1000 1000: start bra skip 1002: nop 1003: nop 1004: skip ldx #10 Offset at 1001 set to 02 1007: loop dex 1008: nop 1009: bne loop 100b: rts 100c: % sy 1007 loop 1004 skip 1000 start % u 1000 1000: 20 02 BRA $1004 1002: 01 NOP 1003: 01 NOP 1004: CE 00 0A LDX #$000A 1007: 09 DEX 1008: 01 NOP 1009: 26 FC BNE $1007 100B: 39 RTS What would be even better: "a" brings up a built-in mini-editor. When you exit, the code is assembled. https://github.com/jhallen/exorsim

Semantic search powered by Rivestack pgvector
7,510 stories · 69,432 chunks indexed