2018 Apple ][ Christmas Demo


This is a Christmas Demo I made on the Apple ][.

Years ago I used to make a Christmas demo every year but I had fallen out of the habit. This year I thought I would try to use some of my newfound Apple II cycle counting skills.


I apologize for the quality of the video. The machine with my video capture device unexpectedly broke, so I had to resort to using a camera.

System Requirements


Apple II Code/Disk Images

Development Notes

V1.1 notes -- 12/23/2018 This release fixes a few bugs. The reflections on the red ball are properly done now. You can now mute the music with 'M' during the wreath scene. It now auto-restarts if you want to leave it running. Also the horizontal scroll wipe is 5s faster due to table lookup.

V1.0 notes -- 12/21/2018 I had planned on a slightly fancier demo, but ran into a hard deadline of getting it done before Christmas (or at least, before I left work for the year as my Apple II machines are at my office).

The music I made myself. I was hoping to have a second piece, a bit more chip-tune like, but ran out of time (and skills).

The first scene is a wreath with flickering candles.

There is trickery here; vapor-lock and cycle counting switch graphics modes mid-screen, allowing low-res for the flames and hi-res for the rest.

The next part is scroll text:

More vapor-lock/cycle-counting, as you usually can't have a hires/lores split. I was hoping the reflection-on-the-ball effect would look cooler but ran out of time (and RAM) to do it properly.

The end part is a horizontal slide.

On some architectures you can do this with a few register writes. On the Apple II you not only have to read, shift, then write 8k of data but also the data is in 7-bit chunks with random color bits in the way, and Woz of course put things least-significant bit first. My original code took 70s to scroll a third, after lots of unrolling and optimizing I gave up once I had it down to about 25s or so. There are probably better/faster ways. (Update, was randomly thinking and realized that answer is probably a lookup table. Will eat some RAM but would make things faster. Did get it 5s faster with a 128 byte table).
Other VMW Christmas Demos
Other VMW Software Demos
Other Apple2 Projects
Back to the VMW Software Productions Page