[net.micro.cbm] Using Raster Interrupts

goodenough@vogon.DEC (Jeff Goodenough, IPG Reading DEC-UK) (02/28/86)

In reply to Greg (lost the last name), using raster interrupts to
work a split screen involves very little code.  You need a few lines of
initialization code to set up the interrupt vector, two subroutines,
(one to turn split screen on, one to turn it off), and an interrupt
routine.  When a raster interrupt occurs, the interrupt routine changes the
screen mode and stores the scan line number in the raster register for the
next point on the screen where you want to change modes.  You aren't limited
to one split - in one program I wrote I had the top two (character) rows
as normal text, the next 10 rows (80 scan lines) in multicolor bitmap mode,
and the rest of the screen in hires bitmap mode.

Scan lines start at 0, but the first 50 are off the top of the screen, so
the top scan line of the first visible character row is scan 51. With 8
scan lines per row, and 25 rows, the bottom-most visible scan line is 250.
Make sure and leave a gap in your display, at least 4 scan lines each side
of the split, or else whenever you press a key you'll get flicker.  That's
because the C64 kernel's keyboard scan is very inefficient, and does it all
at interrupt level, so raster interrupt processing gets held up.

I'll mail the sample code separately to anyone besides Greg who asks
me for it.

Jeff.