Z80 REPL (2018)

131 points18 comments11 hours ago
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.

show comments
jottinger

The source code for this is apparently 8 years old: https://github.com/abagames/z80-repl

With that said, I love the idea.

show comments
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

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.
torutofu

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

j4cobgarby

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