Show HN: Q8, an In-Browser VM for Learning and Visualizing Bytecode Programming
anchovieshat.github.io
anchovieshat.github.io
If you like this, you can catch my other projects at http://pentaquine.com. If you happen to be hiring I'd love to hear from you. I've recently moved to the West Coast and am currently looking for a new job.
https://ocw.mit.edu/courses/electrical-engineering-and-compu...
The lessons and guides you published are definitely my key takeaway from this project. I think there is an opportunity for an integrated trove such as this to serve as a great learning platform; timed just right, as simple, minimal chips and vms are recently experiencing new enthusiasm.
So keep up the good work!
https://zenoamaro.github.io/chip3/
It runs in the browser, featuring a fully inspectable CPU and RAM, rewindable execution, and simple inline disassembly of the source. It's also got a simple assembler (no GUI yet, sorry for that) which it uses to run the example program[1].
The hardware is as simple as possible:
- 3-bit instruction set, for a grand total of 8 instructions, inspired by the PDP-8
- 5-bit addressing, giving 32 words of 8 bit RAM
- A simple, integrated printer
The source is, I hope, documented well enough[2]. There is a handbook available[3], and a small IDE is in the works.
[1]: https://github.com/zenoamaro/chip3/blob/master/dist/index.ht...
[2]: https://github.com/zenoamaro/chip3/blob/master/src/System/CP...
[3]: https://github.com/zenoamaro/chip3#programmers-handbook
In reality, I've considered switching to a regular mapping, so to have 32 no-operand instructions instead, which would fit the original five operations, all sensible combinations, plus more.
But chaining operands is definitely a more extravagant thing, so I think it can be instructive in showing how creative a solution can be in face of limitations .
[1] http://www.righto.com/2013/09/the-z-80-has-4-bit-alu-heres-h...
It might help if you did some smaller programs first where it is clear what the numbers in the grid really mean. Do those numbers map over (assemble) to the instructions?
I guess they do but I never could find a table that said "store" is this number...
It does look cool though!
In addition, once you have filled in the boxes a little, you can step through the code and the blue box under the grid will give you another, very brief bit on the instruction that your program counter is on.
Thanks for asking!
If I use the buttons to run the existing program it does nothing but check if register A is zero, jumps to cell 254 and executes the error instruction.
There is something I'm missing but perhaps what I am missing is not so obvious.
Are you sure you can't edit once you highlight a cell? If so that's probably a bug.
Sometimes it will allow me to update the cells but whatever I type merely appends to the existing contents with no obvious way to clear an individual cell.
Now it seems to work... sort of... sometimes it'll clear one of the characters in the cell and sometimes instead the global handler traps it and attempts to navigate to the previous page in my web history.