Play game
Toy CPU Simulator's itch.io pageResults
Criteria | Rank | Score* | Raw Score |
Humor | #1 | 4.000 | 4.000 |
Mood | #1 | 4.500 | 4.500 |
Fun | #1 | 4.500 | 4.500 |
Graphics/Art | #2 | 4.500 | 4.500 |
Overall | #2 | 4.500 | 4.500 |
Theme | #3 | 3.500 | 3.500 |
Audio | #5 | 1.000 | 1.000 |
Ranked from 2 ratings. Score is adjusted from raw score by the median number of ratings per game in the jam.
Source code repository
https://github.com/freedosproject/toycpu
Tools used
FreeDOS (operating system; open source), OpenWatcom (compiler; open source), FED (editor; open source) running on Fedora Linux (operating system; open source) via VirtualBox (virtual machine; open source) and QEMU (virtual machine; open source)
Leave a comment
Log in with itch.io to leave a comment.
Comments
Very nice toy indeed,
I think, it should be the entry point to CS
If anyone wants to try entering a program, here's the "A+B=C" program code. You can use the "cheat sheet" that's "taped" to the front of the Toy to figure out the machine language instructions:
0. LOAD
1. 7 ("A")
2. ADD
3. 8 ("B")
4. STORE
5. 9 ("C")
6. STOP
7. 1 (this is "A")
8. 3 (this is "B")
9. 0 (this is "C", will get overwritten)
If you wanted this to teach programming, it succeeds with flying colours. It works as intended, is fun to use and I feel genuinely smarter from using this.
Thanks so much! I'd hoped it would be both educational and fun - glad you found it so.
A really fun and charming way of getting newcomers into "machine language". I genuinely think a computing curriculum could use ideas like this. There is a bit of a learning curve at first, but I have a feeling this was probably the intention.
The use of colours is also worth a mention as they really help to sell the "toy-like" feel.
Don't take the audio being at 1 stars personally. It just indicates that there is no audio. I think it was a wise decision not to have it given that it will not appear at machine-level.
Thanks for the great comment! I got the original idea for this when I read the Understanding the Digital World textbook, by Brian Kernighan, where he used a Javascript implementation of a similar "Toy" using assembly. (I shared the Linux prototype of my Toy CPU with Brian. He liked it.)
I tried to balance "fun/easy to use" with "programming in machine language." That's a hard balance to make with machine language. :-) I used the Linux prototype in a 100-level course about "how technology works," for our unit on programming. I showed how to enter a "flash the lights" program, then we watched it run. I had my students write a simple program ("A+B=C") in machine language for the Toy, which I entered for them. They said it was hard to do at first, but they got it. And that made learning the "how it works" of programming much easier. I rewrote the "A+B=C" program in assembly, and in higher level programming languages .. the students were much more engaged and directly connected the "A+B=C" assembly program to machine language, and could see how "A+B=C" as a higher level language (like C) could be translated to assembly (and thus into machine language).
That's as far as we got, since it's not a computer science class. :-)
I think getting the approval of the creator of your basis can be really encouraging for something like this.
It's also great how such a game can both be enjoyable whilst having some educational value. Very rarely can that kind of balance be found; especially when you're working with a rather abstract interface, like you were saying when it came to mixing fun and ease of use.