Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines
A jam submission

Toy CPU SimulatorView game page

Simulation of a simple computer that you program using "switches and lights." Look at the pretty blinkenlights!
Submitted by jimhall — 1 day, 2 hours before the deadline
Add to collection

Play game

Toy CPU Simulator's itch.io page

Results

CriteriaRankScore*Raw Score
Humor#14.0004.000
Mood#14.5004.500
Fun#14.5004.500
Graphics/Art#24.5004.500
Overall#24.5004.500
Theme#33.5003.500
Audio#51.0001.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

Developer(+1)

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)

(+1)

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.

Developer(+1)

Thanks so much! I'd hoped it would be both educational and fun - glad you found it so.

Submitted (2 edits) (+1)

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.

Developer(+1)

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. :-)

Submitted(+1)

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.