Most other-than-IO functions performed during I/O such
as graphics, sound,
etcetera on the Atari 8-bits utilized the fact that for 1 60th of a second
the screen is not painted. While the 'vertical blank' was occurring you
had several cpu cycles available. If you wrote very tight code you could
do a lot in those few cycles. On the Atari this was accomplished by GTIA
'display lists' which are programs for the GTIA coprocessor.
Apple interleaved graphics output (and DRAM refresh) with CPU cycles. This
works because the 6502 only performs memory accesses at very predictable
times. So there are no vertical (or horizontal) blank intervals in which
the CPU is not doing something else.
Can the Apple II be convinced to perform this feat? I
have allways
wondered but not passionatly enough to investigate about the Apple II
series i/o scheme.
In the case of disk and tape I/O, the Apple ][ is heavily dependent on
instruction timing. What it comes down to, is that no interrupts can be
allowed while a disk block read/write or any portion of a tape read/write
is happening. It also means that a multitasking OS can't block on I/O the
way a system that supported interupt driven port I/O or DMA could.
I assume that this was fixed somewhere in the Apple ][ line. Perhaps in
Unidisk type controllers?
Eric