I ran across Logicly today, which is a Flash-based logic gate simulator. While it’s all very slick, I found it disappointing. It’s a mere shadow of Rocky’s Boots for the Commodore 64. The key differences are that Rocky’s Boots had D-flip flops, SR-latches, and simulated propogation delays, giving rise to glitches and hazards. While Logicly seems to handle self-reference somewhat well, enabling you to build your own flip flops, it doesn’t support any kind of abstraction so the overall support for sequential circuits is poor. (edit: Josh has added propagation delays, check it out!)
I could wax nostalgic about Rocky’s Boots; it was among my favorites when I was growing up, but I’ll spare you, dear readers. Truth be told, much like vintage BASIC, RB has a truly wretched user interface by modern standards, something that became painfully clear when I strolled through Rocky’s Boots a few years ago on a whim. I started into its sequel, Robot Odyssey, which I never got to play as a kid, but I didn’t get far due to the user interface.
Maybe Josh has plans for improving Logicly, I don’t know. Truth be told; it really is a travesty that Rocky’s Boots has not been remade and re-imagined many times over the last 27 years. At least it appears that Robot Odyssey has been remade a few times: here is a Java version that stays much too faithful to the original, down to replicating the same wretched interface. On the other hand, Gate seems reasonably promising… but it doesn’t appear to simulate propogation delay (then again, did Robot Odyssey?), nor does it have abstraction mechanisms like Robot Odyssey did.
So, if one was to remake Rocky’s Boots and/or Robot Odyessy, how would you do it? Might you use Functional Reactive Programming? How efficient would this be, and how large of a circuit could this handle? Could you make good use of modern SIMD and/or multiple cores? Although I daresay reaching children would be a particularly good goal for such a project, thus delivering it as Flash has definite appeal.