Cool AppleSoft BASIC trick I never thought of before

From: Eric J. Korpela <korpela_at_albert.ssl.berkeley.edu>
Date: Thu May 18 17:11:06 2000

> 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
Received on Thu May 18 2000 - 17:11:06 BST

This archive was generated by hypermail 2.3.0 : Fri Oct 10 2014 - 23:33:09 BST