Hacking the Gibson

escapades in technology tinkering

A Common Apple 1 Emulation Bug

Recently I was bringing up an Apple 1 and I did the first thing I always do to do an initial checkout, which is run the Test Program from the Apple-1 Operation Manual. This is a very simple program that runs a loop that counts from 0x00 to 0xFF and prints each byte as an ASCII character. Here is the program:

0000 LDA #0 0002 TAX 0003 JSR ECHO 0006 INX 0007 TXA 0008 JMP $0002

This time when I brought up the Apple 1 I saw the following output:

The last time I had run this program, I had run it on an emulator and seen the following:

Remembering how the output looked I thought there was a problem with my Apple 1. After further investigation I found the answer in the Apple 1 schematics.

It turns out that character output is tied to RD6 or RD7. This was overlooked in every Apple 1 emulator that I have looked at.