BBS: Inland Empire Archive
Date: 03-14-92 (03:14) Number: 137
From: SCOTT WUNSCH Refer#: NONE
To: STEVE HALKO Recvd: NO
Subj: Direct screen writes Conf: (2) Quik_Bas
On 11 March 1992, Steve Halko wrote to Michael Malley...
SH> MM>DB> There is only one thing I'm stuck on... I'd like to use
SH> MM>DB>direct video for the screen writes, as opposed to LOCATEs,
SH> MM>DB>since I am working with a VIEW PRINT (Right now it is
SH> MM>Why do that when QB 4.5 (don't know about 4.0) writes directly to the
SH> MM>screen anyway?
SH> Actually, direct screen writes are TONS faster than LOCATE/PRINT. QB
SH> uses direct screen writes, but only after wading through all the
SH> internal code for LOCATE and PRINT.
That is correct. The PRINT routines are very complex because they
must process the control characters (eg. beep for a CHR$(7)), and they
must support the display of characters in graphics mode. PDS comes
with a stub file that removes all of those features, providing screen
updates that are about as fast as a direct screen writing.
Now, on to explanations of how to actually do it. The following QB
code should work, but I haven't tested it:
SUB DirectPRINT (Text$, Lin%, Col%, Fore%, Back%)
Start% = (Lin% * 80) + Col%
Colour% = (Back% * 16) + Fore%
DEF SEG = &HB800
FOR X = 1 TO LEN(Text$)
OffSet = (Start% + X) * 2
POKE OffSet, ASC(MID$(Text$, X, 1))
POKE OffSet + 1, Colour%
The DEF SEG statement sets the segment in which video memory is.
Monochrome and colour adapters use different video segments, however.
Monochrome uses &HB000, and colour uses &HB800.
For fastest results, this routine should be written in assembly.
Also, keep in mind it will cause "snow" on most CGA monitors. If
you're interested, both points are addressed with some sample code
in The QBNews.
SH> * SLMR 2.1a * recursion, noun - see recursion.
Neat tagline - I'll have to steal it!
-= Scott =-
... OFFLINE 1.36 * Recursion, noun: see recursion
--- Maximus 2.00
* Origin: The Green Zone - Regina, Sask, Canada (1:140/23)