Hi Justine, AGAin =)
I looked through your code and found some errors.
![smoke :smoke:](./images/smilies/smoke.gif)
I would like to draw your attention for a command line buffer is not always ends as space (20) code (for example commands without parameters), so I added check zero code for end of buffer.
At label "parse_start" I added "ld a,(de)". You increase DE but never had rereading value to the A.
At line where you is checked "@" - wrong JP. I replaced "jp no_match" on the "jp z,no_match".
You store "PUSH AF" but forgot remove it from stack!
![badevil :badevil:](./images/smilies/badevil.gif)
I added "pop af" at line with label "forward" and "no_match".
You did not properly invoke the command "JP (HL)"
![wacko %)](./images/smilies/wacko.gif)
First we need to read a value into the register pair HL, and then make a jump to the address.
So... now i think, code right a bit and work correctly. In the archive you will find source code and snapshot for emulator.
I compiled with the help of sjasmplus, so you may need to replace hex values of numbers, for example #20 to the h'20
![confused :confused:](./images/smilies/confused.gif)