lowen said:
...writeup on 'Beamhacking' ...requires hand written assembly code on the Z80, with accounting having to be made of every single T-state in the code...
That's basically what we call "
Real-Time" code (RT), because timing of real world events become the critical constraint upon what can work and what can't work.
When I write real-time assembly language code I put the opcode byte count and execution state time in the comment field before any comments so I can quickly see how quick or tight the code is.
There's no clear definition of what real-time firmware might encompass so its better to see by example. Some 8bit micro Real-Time projects I've done follow: (note some of these use the same 8bit micros in your vintage computers)
I used an 8085 and a Signetics state machine to control four winchester disk drives from a Multi-Bus card,
directly formatting the sector headers and data with interleave, reading and writing data passing thought the board as it was directly DMA'd to another Multi-Bus memory card without buffering on-board. First controller capable of handling the faster Fujitsu Eagle at the time. (circa 1981)
I used a Intel Multi-bus card in an existing postal sorter augmented to monitor mail sorted envelops flying past a segmented magnetometer sensor at 600 feet a minute to detect by sensed pattern which envelops had checks inside so they could be diverted to immediate deposit; that's why they ask not to staple or paper-clip your check. (circa 1985)
I used two Z80s to sort microfiche records traveling about the same speed past a laser barcode scanner, sorting them virtually and passing on ID and destination to the second Z80 to virtually run their positions on the belts by monitoring blocked optical sensors and to divert them into the correct trays by solenoid activation. The barcodes were decoded in real-time using my faster base 40 scheme, replacing the client's arbitrary and obtuse base 43 scheme. (circa 1985)
I used an 8085 to do digital packets over a voice radio channel at 2400 and 4800 baud. Had to redesign the packet protocol because a contract test was changed to turn off the radio 1ms of every 10ms and our shortest packet was 70ms, we won that contract after give 6 weeks to resubmit. My solution was to rebuild packets from shattered pieces in the receive buffer. (circa 1986)
I used a Texas Instruments TMS 700(?) in a cellphone design for Tandy/ Radio Shack to send muted digital packets between the base and handset phones to communicate various data... Tandy patented that. (circa 1987)
After grad school and a few years at MCI Telecommunications I designed and programmed a 3D accelerometer using a 12Mhz 8051 that rendered 3D resultant vector magnitudes 100 times a second sensitive and accurate enough to detect footsteps, fingers tapping on a desk or cars within a particular range. (circa XXXX)
Since then I'm been working primarily with a 16bit Texas Instruments MSP-430 micro, not because 8bit micros lack processing power but because the MSP-430 is excellent at ultra-low power for sensors running from battery. One of the design constraints of this particular market is that the system cannot run wire power the units. :S
Just recently I started another 8bit design using an eZ80 which will include real-time code to
directly control signals on the floppy cable going to the floppy disk drive. It will format, read and write the floppy disks directly from the eZ80 pins, i.e. no Floppy Disk Controller (FDC) required. The firmware and the eZ80 will directly convert the READDATA signal and write the WRITEDATA signal to the floppy disk drive. It seems rather *ZEN* because its like the very first design I mentioned from 1981.
Each of those were 8bit micros, like the ones in your vintage computers, which have been elsewhere characterized as *good for keyboard interfacing*