> > While we are on the "we alone have ..." thought, look at the Clive "I= can do > > magic" Sinclair ZX80 which used an ancient and venerable (and venerated?) > > Z80 plus a shift register to work video magic. It also managed to pretend to > > be a "full" computer during the flyback period. The CISC set-and-forg= et > > block move instruction has it's place :-). > = > Correct me if I am wrong, but... > = > I believe the ZX80 did _not_ use a block move instruction to do the video. > Instead, it set a special flag that indicated that it was about to > _execute_(!) video. When this flag was set the opcodes being fetched fr= om > RAM were routed to the screen. Of course this would confuse the process= or > something awful (or else really restrict what could be displayed). So, the > hardware would 'jam' a no-op onto the processor's data bus when the vid= eo > flag was set, regardless of what instruction was fetched from memory. I believe it worked more like this... One of the address lines was connected to the interrupt request line. There was a loop in software th= at accessed successive characters from RAM, apparently doing nothing with them, but it was placed in ROM such that the address line in question wen= t low just at the value was read. The character value remained on the data= bus due to bus capacitance, during the next cycle when normally an interrupting device would place its vector number onto the bus. Thus, th= e character gets looked up in the interrupt vector table, which effectively= becomes the character generator table. Yes, you could change the interru= pt vector table pointer register to change the character set, unfortunately = it would only work within the ROM area, not RAM, so none of the other choice= s produced anything but garbage (made a nifty effect to quickly cycle throu= gh the possibilities, hoever!). Note that this lookup took place even thoug= h the Z80 wasn't in vectored interrupt mode, one of various undocumented features that were relied upon by the design. The only external hardware= used was an 8-bit shift register that picked up the translated pixel data= , and a 3-bit counter (or maybe it was just a latch) that held the scanline= number within the 8-pixel high character cell. Jason Harper -- http://www.piclist.com#nomail Going offline? Don't AutoReply us! email listserv@mitvma.mit.edu with SET PICList DIGEST in the body