Path: utzoo!mnetor!uunet!mcvax!ukc!mupsy!liv-cs!unpowell From: unpowell@csvax.liv.ac.uk Newsgroups: comp.sys.atari.st Subject: Re: TRAP handler question (ST hardware scrolling) Message-ID: <544@csvax.liv.ac.uk> Date: 19 Apr 88 17:57:30 GMT Lines: 34 Organisation: Computer Science CSVAX (VAX1), Liverpool University I've never seen or heard of this program Tempus, but one way I know of to considerably speed up character output and one that may be used in this program is to "hardware scroll" the screen. A factor I'd like to draw your attention to is that in all three screen resolutions a row of characters occupies $500 or 1280 bytes of memory. Say the screen is at location $70000. The physical screen position should first be put to $70000. All character rows are printed normally until it comes time to scroll. Instead of moving 32000-1280=30720 bytes to scroll the screen we instead add $500 to the physical screen position, thus displaying the area of memory one character line further forward in memory i.e. $70500. Snag. We will eventually run out of memory if we keep moving the screen onwards though memory. So we reserve an area approximately twice the size of the standard screen, 64000 bytes say. When we are displaying the last 32000 bytes of this block we then copy rows 1 to 24 (remember row 0 is the top one) to the start of this extended screen area and then display the first 32000 bytes of this area as the screen. Reserving 64000 bytes (enough for 50 character rows) will involve moving 32000 bytes of memory every 25 scrolls. The standard BIOS routine has to move (32000-1280)*25=768000 bytes every 25 scrolls. Quite a saving in time for just an extra 32K screen memory. Using this method speeds up screen output fantastically. Mark Powell ******************************************************************************** "...there's no success JANET unpowell@uk.ac.liv.csvax like failure and UUCP {backbone}!mcvax!ukc!mupsy!liv-cs!unpowell failure's no success ARPA unpowell%csvax.liv.ac.uk@nss.cs.ucl.ac.uk at all..." B.Dylan ********************************************************************************