KIM-1 for me!
I remember doing the noob thing, keying in a short machine-language program from the excellent manuals by Chuck Peddle. It added together two 8-bit values held in zero-page and stored the result back in zero-page. The program worked -- behaved as the manual said it should -- but it was a struggle for me to grasp what had occurred.
That's because I had no previous computer background, and elementary concepts such as "address" were new to me.
This was also a time when I was teaching myself about gates, flipflops and so on. The KIM-1 became my canvas! I boosted the RAM from 1K to 5K to
9K, and added a pair of VIA's and a Cheap Video display a la Don Lancaster. The VIA's let me talk to an ASCII keyboard, a
paper-tape reader (!) and other delights such as a homebrew programmer for 2716 EPROMs (2 Kbyte capacity)! What a triumph it was to achieve non-volatile storage
-- other than audio cassette, I mean.
And the video display + ascii keyboard opened the door to FIG Forth -- the object-code for which I had keyed in by hand and stored on cassette (later replaced by a homebrew floppy system).
The poor KIM-1 endured a long series of hacks perpetrated by a beginner, and its appearance became more and more... unconventional!
The crowning touch came a while later : a 128K DRAM board which I purchased on the surplus market. Yes,
128K bytes! -- I could scarcely believe it.
To manage this un-dreamt-of expanse, I invented a Don Lancaster-esque scheme that recognized
undefined NOP's as prefix instructions. The scheme gave them a
time-bomb effect which toggled the state of a newly-minted A16 output, typically just as the CPU reached the data access cycle(s) of the instruction following the prefix. The pre-toggle delay (which you'd specify by selecting among the various NOP instructions) was variable to accommodate faster and slower address modes such as Absolute and (indirect),Y. Typically A16 would invert back to its original state after one cycle, but you could also specify 3 cycles if you wanted to do a Read-Modify-Write. Or, if you intended to JMP, JSR or RTS, there were patterns that
didn't return A16 to its original state. The essence of the prefix logic was pretty simple -- just a shift register that'd get loaded with a pattern from a 32-byte lookup ROM. The bits got trotted out of the shift reg at a rate of one per cycle, and every "1" cued an inversion of A16.
Almost by accident, I had begun expanding the 6502 instruction set. I knew those same ideas could be developed further, but the KIM-1 "canvas" was filled to overflowing. I needed a fresh start -- a new computer.
I dubbed the new machine Kim Klone because I liked the corny name and because the new machine and its predecessor both expand the 65xx envelope. But, to avoid implying a broader similarity to the KIM-1, nowadays I just use the moniker "
KK Computer."
-- Jeff