Re: Dating a C-64 board

From: Marko Mäkelä (msmakela_at_cc.hut.fi)
Date: 1999-04-19 07:32:36

On Sun, 18 Apr 1999, William Levak wrote:

> I can say that at the end of every eight raster lines, the VIC chip needs
> to fetch character and sprite data from RAM.

Actually sprite data is fetched on every line the corresponding sprite is
being displayed.  For details, see the document
<URL:http://www.funet.fi/pub/cbm/documents/chipdata/VIC-Article.gz>.
Fetching sprite data steals 2 cycles of CPU per sprite.  What happens in
the first line of each text row is that the character pointers and colors
are fetched.  This will halt the CPU for 40 cycles.  And in order to
circumvent the bug/feature of NMOS 6502 processors (they do not obey the
RDY line during write cycles), the video chip will halt the processor 3
cycles in advance.  (The maximum number of consecutive writes is 3, that's
in the beginning of an interrupt sequence.)

Actually the serial bus routines in the C64 (at least in the PAL C64) do
not compensate enough for the lost cycles.  If you enable all sprites and
try to load something from the disk drive, it will hang.

> This means that the CPU on the C64 may not respond as fast as the
> VIC20 CPU to interrupts from the drive.

To be precise, there are no interrupts; the routines use polling.

> The VIC20, on the other hand, uses the old scheme from the PET.  The
> screen is updated every thirtieth of a second, using a system interrupt.

I'm sorry but I have a totally different view.  The dot clock in the
VIC-20 is only 4 times the bus clock.  This means that the video chip has
2 clock halves for each character to be displayed.  The VIC-I will read
the character code and color on the first clock, and the character image
on the second clock.  There is no need to stop the processor, and if you
write a program that modifies the character codes while the screen is
being drawn, the changes will take place immediately, and not like on the
C64, where the changes could only become effective on every 8th line.

> This is fast enough for the disk drive, but not for the cassette, hence
> the screen is blanked while accessing the cassette.

On the VIC-20, the screen is not blanked while accessing the cassette.
But you probably meant the Commodore 64.

	Marko

-
This message was sent through the cbm-hackers mailing list.
To unsubscribe: echo unsubscribe | mail cbm-hackers-request@dot.tcm.hut.fi.

Archive generated by hypermail 2.1.1.