Path: utzoo!utgpu!watmath!isishq!Geoffrey.Welsh From: Geoffrey.Welsh@isishq.FIDONET.ORG (Geoffrey Welsh) Newsgroups: comp.sys.cbm Subject: Re: C64 text screen Message-ID: <944.23A6D6D4@isishq.FIDONET.ORG> Date: 11 Dec 88 16:50:30 GMT Organization: International Student Information Service -- Headquarters Lines: 42 > From: lechner@ucscb.UCSC.EDU (Eric Lechner) > Message-ID: <5673@saturn.ucsc.edu> > I would like to keep each screen in a different place in > memory, so > that I need only change the pointer to the text screen. I assume that this is running in C64 mode? The location you mentioned (648 decimal) is for the C64 ROMs, and all it does is tell BASIC where to put the screen. If you're going to be using BASIC PRINT routines, then you'll want to update that byte, too, but the bytes you;re looking for are on the VIC chip. First of all, you'll have to set bits 1 and zero to the 16K block number that your intended screen is in. NOTE: If I rememer correctly, the character generator ROM is only visible to the VIC-II chip if its bank is set to 0 or 2 (!). If both of your screens are in the first 16K of memory, then you don;t have to worry about changing these two bits. Next you'll have to set bits 7 through 4 of the memory pointer register at $D018 to match bits 13 through 10 of the base address of your screen. Summary: Take the base address of the screen you want to display; put bits 15 and 14 of that address into bits 1 and 0 of $DD00. Put bits 13 though 10 of the address into bits 7 through 4 of $D018. That SHOULD make the VIC-II chip display your intended screen. It will not, however, update all the pointers the BASIC and KERNAL routines need to print stuff to the screen - I suggest that, if you're going to go this far you might as well do all of your own direct screen writes anyway. Geoff ( watmath!isishq!izot ) -- Geoffrey Welsh - via FidoNet node 1:221/162 UUCP: ...!watmath!isishq!Geoffrey.Welsh Internet: Geoffrey.Welsh@isishq.FIDONET.ORG