Path: utzoo!mnetor!uunet!mcvax!nikhefh!t68 From: t68@nikhefh.hep.nl (Jos Vermaseren) Newsgroups: comp.sys.atari.st Subject: Re: TRAP handler question Message-ID: <444@nikhefh.hep.nl> Date: 30 Mar 88 09:54:14 GMT References: <3738@watcgl.waterloo.edu> <197@bdt.UUCP> Reply-To: t68@nikhefh.hep.nl (Jos Vermaseren) Organization: Nikhef-H, Amsterdam (the Netherlands). Lines: 38 Reguarding the interception of trap 1 and inparticular Cconws to make the screen faster: One much faster way to write to the screen is the use of Bconout(5,c) which is a poorly documented feature. It writes characters to the screen in a 'raw' mode. This means that the VT52 escape codes are not interpreted and all characters are written, including escapes, hex 00 etc. The controle codes can then be done with Bconout(2,c). This gives an improvement of a factor two or more over using Cconout and also an improvement of about a factor two over Cconws. Much time is used in the filtering of the escape codes apparently. To make another BIOS traphandler doesn't look like a solution, as most of the screen writing time sits in the trap handler and the saving of registers that comes with it. The reason that some programs like Tempus have such a fast screen has several reasons: 1: The screen routines are user routines that are directly accessible for the program. They are written in such a way that it is not necessary to save registers. 2: In Tempus the font files have been reshuffled to make the order of the pixels different from the GEM format. 3: Absolutely no interpretation of tabs takes place. A good tab handler would slow the output down by about a factor two (guestimate). Putting a trap handler inbetween would spoil much already. I think that Tempus comes rather close to what is possible on the ST so any general solution will never come close to it. What is missing from the BIOS would be an equivalent of Cconws. Let us call that Bconws. It would have to accept a device number and the number of characters in the string because the raw output should not be stopped by a 0x00. That would avoid the traphandler for most of the output. If you install such an extra function your screen will become much faster than the Bconout(5,c) call. All other BIOS calls will become a little slower then, unless you find a version independent way to copy the BIOS jumptables at the installation of your program. Jos Vermaseren T68@nikhefh.hep.nl