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.