Recreating VisiCalc in 6502 assembly for the Apple ][+. The latest version of WilliCalc is hosted here - and is fully useable - for your interest, amusement, and productivity.
All Posts
Emulating the Apple ][ part 5: ray-tracing in assembly
Trying my hand at 6502 assembly, and putting the 500MHz 6502 through its paces, with (what else?) ray-tracing.
Emulating the Apple ][ part 4: optimising for speed
Rewriting everything in C++ achieves a several hundred-fold increase in spead, begetting a monster belonging to alternative history sci-fi: a 500MHz 8-bit CPU.
Emulating the Apple ][ part 3: graphics modes
Implementing low- and high-res graphics modes, allowing the Apple ][ emulator to run all kinds of original 1970s software.
Emulating the Apple ][ part 2: text mode
Reverse-engineering the arcane character generation and line interleaving systems on the Apple ][ to produce a working emulation that boots into the original ROM.
Emulating the Apple ][ part 1: simulating an 8-bit microprocessor
Building a cycle-accurate simulation of the MOS 6502 microprocessor using test-driven development against millions of real-world states. Gratification when it successfully runs real assembly code.
Simulating a geartrain (and revisiting the pendulum clock)
Ray-tracing from scratch part 4: diffuse reflection and lens effects
Simulating the paths of individual photons from emission to absorption, in order to accurately predict how glass will focus light; how surfaces will bounce-illumanate one another; and how hot my laptop's cpu can get.
Pictionary with Recurrent Neural Networks
Instead of playing pictionary with your friends, now you can play it with AI. And after you've played it, you can read about how it was made.
Training an AI to catch fruit using Deep Reinforcement Learning
A foray into an early form of reinforcement learning, the Deep Q Network. After much teeth-pulling, tweaking, and training, our hero eventually learns out how to play a simple game with mediocre competence.