Quote:
The author of that book, Don Lancaster, has electronic copies of that, and much more, on his website.
Yes -- he's quite a guy, and it's quite a site!
I wrote about Cheap Video on
this page of my own site, but here's a summary based on my own experience.
I've implemented Cheap Video three times (including on
my Franken-KIM). No two of those implementations were alike, and none of them was quite like Lancaster's. But they all used Lancaster's idea of
tricking the CPU's PC register into behaving as a counter for generating memory addresses.
The KIM-1 is a good candidate because it already has tristate buffers which separate the memory data bus and the CPU data bus. Ordinarily these two buses would carry the same data, but during a Cheap Video horizontal scan line the tristate buffer is inhibited, and the CPU doesn't see what's really in memory.
Instead, the CPU gets repeatedly fed a dummy instruction such as
CMP #$C9 -- a 2-byte instruction which also consumes 2 cycles. This causes the PC register to behave like a counter. (The final dummy instruction is an RTS, and that's what breaks the spell and takes us back into reality.)
Meanwhile during the scan line, memory simply fetches bytes from the addresses supplied by the "counter" and these bytes appear on the
memory data bus (but not the CPU data bus).
On a small system (KIM-1) you'll probably feed the memory bytes to a Character Generator ROM whose output in turn feeds the video shift register. But for a bit-mapped display the bytes from memory go straight into the video shift register (ie, there is no CG ROM).
During the Hor-retrace interval the CPU executes some "real" code (albeit very timing sensitive) which sets up the next scan line. Then a JSR occurs, and (in Lancaster's version) it is the new address (ie, that of the video buffer) which causes an address decoder to turn off the tristate buffer and feed the CPU
CMP #$C9 instead of what's really in the buffer. Hope that helps!
-- Jeff
ps - Back in the day, Lancaster relied fairly heavily on 32-byte TTL PROM's. Nowadays it's reasonable to use a much, much large EPROM (wasting most of its capacity), or use a PLD to create a 32-byte ROM equivalent.
_________________
In 1988 my 65C02 got six new registers and 44 new full-speed instructions!
https://laughtonelectronics.com/Arcana/ ... mmary.html