home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Stars of Shareware: Programmierung
/
SOURCE.mdf
/
programm
/
msdos
/
basic
/
qlib57
/
intro.doc
< prev
next >
Wrap
Text File
|
1994-01-05
|
49KB
|
806 lines
QLIB version 5.7 advanced function library for Microsoft BASIC compilers
Copyright (C) 1988-1993 Douglas Herr ■ all rights reserved
WHAT IS QLIB?
QLIB is a library of functions and subroutines for the following
Microsoft BASIC compilers:
QuickBASIC 4.0
QuickBASIC 4.0b
QuickBASIC 4.5
BASIC Professional Development System 7.0
BASIC Professional Development System 7.1
Visual Basic for DOS (with thanks to Lee Bonnifield and Tony Kulik)
QLIB subroutines provide the BASIC programmer with many additional
functions and commands, along with un-BASIC-like speed and power.
WHY USE QLIB?
Compiled BASIC programming represents an enormous leap in BASIC
programming over interpreted BASICA or GWBASIC, and is a language that
many programmers already know. However, many programmers also know that
many compiled BASIC commands are not really quick, can be extremely
cumbersome, and/or will eat tremendous amounts of memory.
QLIB subroutines are written in assembly language for maximum speed and
compact size. QLIB subroutines can be up to 10 times faster than
comparable BASIC commands and can reduce the size of your .EXE files
dramatically. QLIB's subroutines also provide many functions and screen
modes which are impossible with BASIC alone.
Ideas for these routines come from a wide variety of sources. If you want
to see additional routines, let me hear about it. In this way, QLIB's
users can affect the direction QLIB takes.
DISCLAIMER
Each QLIB routine has been tested extensively, but since I cannot foresee
every possible use or abuse of QLIB, I cannot be held responsible for any
damages resulting from its use. I have used QLIB with IBM PC/XT, PC/AT,
PS/2 Model 30, 50z, Leading Edge model D, Zenith SuperSport 286, ATT 6300,
and with XT, 286, 386sx, 386-33 and 486-25 clones with PC/MS-DOS
versions 3.1 through 5.0. Video systems tested include IBM EGA
with 64k, Paradise EGA 480, Everex Micro Enhancer EGA, IBM's MCGA
and VGA built into the PS/2s, Hercules Graphics Card Plus, Hercules
InColor, cheap Hercules clones, IBM's Monochrome Display Adapter, and
a few SuperVGAs. I have tested the subroutines with QuickBASIC versions
4.0b and 4.5, with BC 7.0 and with BC7's QBX.
DISTRIBUTION and REGISTRATION
QLIB is user-supported shareware, NOT public domain software. The QLIB
files you have received are the complete QLIB package, usable within the
QuickBASIC or QBX editor to develop programs, and linkable with your
object code to create stand-alone .EXE programs. These files may be
distributed freely in un-altered form, but if you use QLIB in your BASIC
programs, you are expected to register.
The advantages of registering are many:
Registered users receive the latest version available when they register
and may upgrade at any time for the paltry fee of $10.00.
Registered users will receive the huge model library QLIBH.LIB as well
as an updated medium model QLIB.LIB
Registered users may request custom modifications to any of QLIB's
subroutines (but I will not guarantee I can make all modifications!).
Your registration fee supports my efforts, and encourages me to continue
development of QLIB.
No royalties are required and registration costs only $25, and you will
have confidence that you are using a version of QLIB which has not been
altered by others.
Register by sending $25 to:
Douglas R. Herr
P. O. Box 207
Sacramento, CA 95812
U. S. A.
telephone (916) 721-8762
CompuServe 71247,3542
Please specify which size disk you prefer, and which version you are
registering (QLIB for QuickBASIC 4.x or BC6, or QXLIB for BC7/QBX or
VBDOS). If you want both QLIB and QXLIB, please add $10.
Assembly-language source code for any of the libraries is an
additional $25.
Any questions or problems should be sent to me at the above address.
Please include a stamped, self-addressed envelope if you are not a
registered user, or for fastest response, send a message on CompuServe.
QLIB is a rapidly evolving library, so it is likely that by the time you
register there will be several additional routines or refinements to
existing routines available.
HOW DO I USE QLIB?
Beginning with version 5.0, QLIB has been optimized for QuickBASIC 4.0,
4.5 and BC7. There are two versions of the QLIB5 library: QLIB.LIB
for QuickBASIC 4.0 and QuickBASIC 4.5, and QXLIB.LIB is for BC7, QBX
and VBDOS.
QLIB may be used with your BASIC compiler by copying QLIB.BI and
QLIB.LIB (or QXLIB.LIB) to your BASIC directory. You will need to
make a .QLB version of QLIB to use QLIB with the QB, QBX or VBDOS
development enviornment. You will need the BQLB4x.LIB, QBXQLB.LIB
or VBDOSQLB.LIB libraries supplied by Microsoft with your compiler.
Make your .QLB file this way:
QuickBASIC 4.0: LINK /Q QLIB.LIB,,nul,BQLB40.LIB;
QuickBASIC 4.0b: LINK /Q QLIB.LIB,,nul,BQLB41.LIB;
QuickBASIC 4.5: LINK /Q QLIB.LIB,,nul,BQLB45.LIB;
QBX: LINK /Q QXLIB.LIB,,nul,QBXQLB.LIB;
VBDOS: LINK /Q QXLIB.LIB,,nul,VBDOSQLB.LIB;
If you are using QuickBASIC 4.0 or 4.0b, LINK will give you an error
message related to QLIB's use of the 8087 emulator. This error message
is expected. The practical effect of this error is that QLIB
subroutines which use BASIC's 8087 emulator will not work within the
QuickBASIC editor enviornment if you do not have a math coprocessor.
The emulator will be linked properly when you create your .EXE files.
QuickBASIC 4.0b's BQLB41.LIB library can be patched to eliminate the
error (this may also work with QB 4.0's BQLB40.LIB):
Step 1: extract object files from BCOM41.LIB
C:\LIB BCOM41 *BFPSIG *FIXUPS *EMOEM *PIEMR;
Step 2: add these object files to BQLB41
C:\LIB BQLB41 +BFPSIG +FIXUPS +EMOEM +PIEMR,BQLB42;
Step 3: Make a new QLIB.QLB
C:\LINK /Q QLIB.LIB,,NUL,BQLB42;
I have not had the 8087 emulation problem with BQLB45.LIB or with
QBXQLB.LIB. This patch seems to work within the QuickBASIC editor
but since 90% of the PCs I've used have math coprocessors, I can't
be certain. Your experience with your own system is your best guide.
To load QLIB with the QuickBASIC editor, use the command
QB /L QLIB.QLB
or for QBX, use:
QBX /L QXLIB.QLB
for VBDOS:
VBDOS /L QXLIB.QLB
To use QLIB's functions, you MUST include the INCLUDE file QLIB.BI in
your source code. QLIB.BI changes BASIC's default data type from
SINGLE to INTEGER, and also contains the declarations for QLIB's
functions. QLIB's functions MUST be declared before they can be used,
and the INTEGER default data type is required. You should change
the default data type to INTEGER whether you use QLIB or not, so your
programs will be smaller and faster. Use SINGLE and DOUBLE data types
only when nessesary. The documentation for QLIB's functions shows
you how to use the INCLUDE file.
QLIB.BI has the function declarations for ALL of QLIB's functions.
You should use this as a template for the function declarations for
your programs. If you compile your programs using an un-altered
QLIB.BI file, all of the functions declared in the INCLUDE file
may be included in your .EXE program whether the program uses the
functions or not. Edit QLIB.BI to remove functions you don't need
and you will have more space in the development enviornment and,
depending on which BASIC you use, your .EXE programs may be smaller.
REGISTERED USERS: note that QLIBH.BI should be used in place of QLIB.BI
if you are using the huge model library QLIBH.LIB.
SPECIAL NOTE TO VBDOS PROGRAMMERS:
I have not purchased VBDOS yet, so all my information regarding
compatibility of QXLIB with VBDOS is from you people in the trenches.
Feedback from Lee Bonnifield and Tony Kulik has been particularly
valuable and informative; if you are using VBDOS and you run into
problems, let me hear about it! I can't fix the problem if I don't
know it exists!
VBDOS programmers may also need to include QXLIB subroutine
declarations in the .BI file when compiling from the DOS command line.
Example:
DECLARE SUB QPrint(s$, row%, column%, attribute%)
Compile your source code using
BC myprog /O;
(many QLIB subroutines require the /O option)
Link QLIB with your object files with
LINK /EX /NOE myprog,,NUL,QLIB.LIB;
or LINK /EX /NOE myprog,,NUL,QXLIB.LIB;
You may compile your source code and link to QLIB.LIB from within the
QuickBASIC editor, but QuickBASIC may include the ENTIRE QLIB.LIB file
in your .EXE file, whether you use any subroutines or not. This is not
the way to keep your program small! Link from the command line as I have
shown and your .EXE file will include only the subroutines you need.
QLIB's documentation has been divided into several files in order to keep
each one down to a managable size. The .DOC files are:
INTRO.DOC this file
INPUT.DOC keyboard input subroutines
COMPLEX.DOC COMPLEX data subroutines
DATA.DOC data manipulation subroutines
DISK.DOC disk and file management subroutines
EMSXMS.DOC Expanded and Extended Memory subroutines
SYSTEM.DOC subroutines which determine PC equipment or status
GRAPHICS.DOC subroutines for graphics
SOLVE.DOC solutions for common mathematical equations
VIDEO.DOC video input and output subroutines (text modes)
UPDATE.DOC important information if you are upgrading from an
earlier version of QLIB
Note: the other files which make up the QLIB5 package are:
QLIB.LIB QuickBASIC link library
QXLIB.LIB BC7/VBDOS link library
QLIB.BI INCLUDE file for QuickBASIC, BC7/QBX and VBDOS
In the spirit of QB 4.5's on-line documentation, each of the .DOC
files may be loaded into the QuickBASIC or QBX editor (use DOCUMENT
switch), from which you may cut and paste into your source code to
your heart's content. Hard copy of the documentation may be easily
(and inexpensively) obtained by using your printer.
If you are upgrading from a version of QLIB prior to 5.0, read ALL of
the new .DOC files completely. Many subroutines have been changed to
functions, and others have been replaced by new subroutines. While
this may cause you some inconvenience in the short run, doing this
allowed me to provide higher performance and smaller code.
BASIC DATA TYPES
QLIB's documentation is filled with reference to data of the %, &,
!, # and $ types. If you already know what these mean, you may skip
this section, as long as you pay attention to the data types required
by QLIB's subroutines. If you are not familiar with BASIC's data types,
by all means read your manual.
Even if you don't use QLIB, the data types you use in your programs
will affect the speed and size of your programs. In general, you
should use INTEGER (%) data types where possible, and DOUBLE (#)
types only where nessesary.
BASIC assumes that all data is SINGLE (!) unless otherwise declared.
You can change the default data type to INTEGER with the command
DEFINT A-Z
I put this at the beginning of all my programs to improve speed, reduce
size and to eliminate the need for those silly % signs. This statement
is part of the INCLUDE file QLIB.BI.
When using QLIB subroutines, pay particular attention to the data types
required by each subroutine. If you use the wrong data types, it is
likely (though not certain) that you will end up with garbage. If you
find that it helps, you can add subroutine declarations to the QLIB.BI
INCLUDE file so that your BC compiler or QB/QBX/VBDOS development
environment will check data types for you. I haven't done this because
adding all of QLIB's subroutines to QLIB.BI takes too much memory and
slows the loading of QLIB.BI to a snail's pace.
Example:
DECLARE SUB QPrint(s$, row%, column%, attribute%)
QLIB supports a COMPLEX data type consisting of paired SINGLE data.
Each COMPLEX value is 8 bytes. COMPLEX data arrays should be allocated
with BASIC's DIM statement as DOUBLE data. Once QLIB has established the
values of the COMPLEX data, BASIC in general will not interpret the data
correctly. Exception: for complex conjugates, you can use BASIC:
if c0# is a QLIB COMPLEX data type, this BASIC statement will result in
c1# = complex conjugate of c0#:
c1# = -c0#
Subroutines specific to the COMPLEX data type are described in
COMPLEX.DOC.
SUBROUTINE REFERENCE
Documentation for QLIB's subroutines can be found in the following .DOC
files:
Name description .DOC file
AddINTArray add a constant to an integer array DATA.DOC
AddLNGArray add a constant to a long integer array DATA.DOC
AddSNG adds two SINGLE values, returning error flag DATA.DOC
AddDBL adds two DOUBLE values, returning error flag DATA.DOC
AllocEMS allocate an expanded memory block EMSXMS.DOC
AllocMem allocates memory for QLIB from DOS memory area DATA.DOC
AllocVMS allocate a Virtual Memory block EMSXMS.DOC
AllocXMS allocate an extended memory block EMSXMS.DOC
ANSIColor determines color attribute used by ANSI.SYS VIDEO.DOC
APrint Print on the screen using ANSI device driver VIDEO.DOC
APrintN like APrint, but advances cursor to next line VIDEO.DOC
APrintT APrint plus tab on same line VIDEO.DOC
ASCII returns ASCII code of a string, avoiding error DATA.DOC
Bezier draws a Bezier curve GRAPHICS.DOC
BigPrint print string on screen in big characters VIDEO.DOC
BIOSRead use BIOS functions to read text screen VIDEO.DOC
Bit2INT converts a bit pattern to an integer DATA.DOC
BitBlockBytes graphics screen manipulation GRAPHICS.DOC
BitBlockRestore restore graphics screen saved earlier GRAPHICS.DOC
BitBlockSave save part of graphics screen GRAPHICS.DOC
BitPlaneRestore restore graphics plane saved earlier GRAPHICS.DOC
BitPlaneSave save part of a plane of graphics screen GRAPHICS.DOC
BitPlaneBytes calculates bytes required for BitPlaneSave GRAPHICS.DOC
BlockFrame BIOS routine to frame a block of the screen VIDEO.DOC
Border changes color of screen border VIDEO.DOC
BPrint BIOS print on screen VIDEO.DOC
BPrintL BIOS print, lower case VIDEO.DOC
BPrintU BIOS print, upper case VIDEO.DOC
C2F converts degrees Celcius to Farenheit SOLVE.DOC
CapsOFF force capslock toggle off SYSTEM.DOC
CapsON force capslock toggle on SYSTEM.DOC
CircleAspect DrawCircle options GRAPHICS.DOC
ClearBlock BIOS clear portion of screen VIDEO.DOC
ClearEOL clears a row from cursor to edge of screen VIDEO.DOC
ClearKey clears the keyboard 'type ahead' buffer INPUT.DOC
ClearView clear portion of Graphics screen GRAPHICS.DOC
Clock prints a time display on text-mode screens VIDEO.DOC (b)
ClrScreen quickly clear entire screen VIDEO.DOC
Color16 calculate color value for changing palette GRAPHICS.DOC
Color256 calculate color value for changing palette GRAPHICS.DOC
ColorAttr calculate color attibute VIDEO.DOC
CombineINTArray Add one array to another (or subtract) DATA.DOC
CombineLNGArray Add one array to another (or subtract) DATA.DOC
CombineSNGArray Add one array to another (or subtract) DATA.DOC
CombineDBLArray Add one array to another (or subtract) DATA.DOC
CopyMem copies a block of memory DATA.DOC
CPX2Real splits COMPLEX value to real & imaginary parts COMPLEX.DOC
CPXAdd add two COMPLEX values COMPLEX.DOC
CPXDiv divides COMPLEX values COMPLEX.DOC
CPXMul multiplies two COMPLEX values COMPLEX.DOC
CPXNeg returns negative of a COMPLEX value COMPLEX.DOC
CPXNegI returns complex conjugate of a COMPLEX values COMPLEX.DOC
CPXNegR returns negative complex conjugate COMPLEX.DOC
CubeFitF4 use Least Squares to fit a curve to coordinates SOLVE.DOC
CubeFitF8 use Least Squares to fit a curve to coordinates SOLVE.DOC
CubeFitI2 use Least Squares to fit a curve to coordinates SOLVE.DOC
CubeFitI4 use Least Squares to fit a curve to coordinates SOLVE.DOC
CursorColor enables InColor color palette, sets cursor color VIDEO.DOC
CursorOFF makes text cursor invisible VIDEO.DOC
CursorON places cursor on text screen VIDEO.DOC
Date2LNG compresses a date to a long integer for storage DATA.DOC
DayName returns ASCII day name given day number 1-7 DATA.DOC
DayOfWeek returns the day of week for any given date DATA.DOC
DelArray2 deletes one element from an array of 2-byte data DATA.DOC
DelArray4 deletes one element from an array of 4-byte data DATA.DOC
DelArray8 deletes one element from an array of 8-byte data DATA.DOC
DelVSTRArray deletes one element from a string array DATA.DOC
DBL2STR DOUBLE-to-string conversion with formatting DATA.DOC
DGeyKey DOS keyboard input; may be redirected INPUT.DOC
DiskInfo determines disk parameters DISK.DOC
DiskWP traps "drive not ready" errors DISK.DOC
DOSError returns MS-DOS error code for last DOS function SYSTEM.DOC
DotBAK renames existing file as backup (.BAK) file DISK.DOC
DrawBox draws a box on a graphics screen GRAPHICS.DOC
DrawCircle draws a circle on graphics screen GRAPHICS.DOC
DrawLine draws a line on graphics screen GRAPHICS.DOC
DriveSpace determine free and total space on a disk DISK.DOC
EGAinfo determine EGA configuration SYSTEM.DOC
EMSError returns error code for previous EMS call EMSXMS.DOC
EMSFree determines free EMS memory EMSXMS.DOC
EMGet copies data from EMS memory block to an array EMSXMS.DOC
EMGet1 copies one byte from EMS memory EMSXMS.DOC
EMGet2 copies two bytes from EMS memory EMSXMS.DOC
EMGet4 copies four bytes from EMS memory EMSXMS.DOC
EMGet8 copies eight bytes from EMS memory EMSXMS.DOC
EMSTotal determines total EMS memory installed EMSXMS.DOC
EMSversion determines EMS software version EMSXMS.DOC
EMPut copies data to an EMS memory block EMSXMS.DOC
EMPut1 copies one byte to EMS memory EMSXMS.DOC
EMPut2 copies two bytes to EMS memory EMSXMS.DOC
EMPut4 copies four bytes to EMS memory EMSXMS.DOC
EMPut8 copies eight bytes to EMS memory EMSXMS.DOC
EXEName returns full drive and path name of program SYSTEM.DOC
Exist see if a file or subdirectory exists DISK.DOC
F2C converts degrees Farenheit to Celcius SOLVE.DOC
Factorial calculates the factorial of an integer SOLVE.DOC
FCopy copy a file to another disk or directory DISK.DOC
FClose close a file opened by FCreate or FOpen DISK.DOC
FCreate creates a new file for fast binary I/O DISK.DOC
FFlush flushes QLIB and DOS file buffer DISK.DOC
FGet buffered input from a file opened by FOpen DISK.DOC
FGet1 fast 1-byte input from a file opened by FOpen DISK.DOC
FGet2 fast 2-byte input from a file opened by FOpen DISK.DOC
FGet4 fast 4-byte input from a file opened by FOpen DISK.DOC
FGet8 fast 8-byte input from a file opened by FOpen DISK.DOC
FGetSTR fast string input from a file opened by FOpen DISK.DOC
FileCount counts the number of files matching a template DISK.DOC
FillArea fills an irregular region on graphics screen GRAPHICS.DOC
FillBox fills a box on graphics screen GRAPHICS.DOC
FillEOL fills from cursor position to edge of screen VIDEO.DOC
FillPattern establish fill pattern GRAPHICS.DOC
Find1 finds 1-byte value in an array DATA.DOC
Find2 finds 2-byte value in an array DATA.DOC
Find4 finds 4-byte value in an array DATA.DOC
Find8 finds 8-byte value in an array DATA.DOC
FindFileAttr FindFirstMatch/FindNextMatch option DISK.DOC
FindFileDate FindFirstMatch/FindNextMatch option DISK.DOC
FindFileName FindFirstMatch/FindNextMatch option DISK.DOC
FindFileSize FindFirstMatch/FindNextMatch option DISK.DOC
FindFileTime FindFirstMatch/FindNextMatch option DISK.DOC
FindFirstMatch find first matching file with wildcards DISK.DOC
FindMONO determine if a monochrome monitor is present SYSTEM.DOC
FindNextMatch find next file with wildcards DISK.DOC
FLoad quickly loads a disk file into far memory DISK.DOC
FLoadEMS quickly loads a disk file into EMS memory EMSXMS.DOC
FLoadXMS quickly loads a disk file into XMS memory EMSXMS.DOC
Floppies determine number of floppy drives installed SYSTEM.DOC
FloppyType determine type of floppy drive installed SYSTEM.DOC
FontWidth Changes GPrint default character width GRAPHICS.DOC
FOpen opens an existing file for fast input or output DISK.DOC
FPrimeF4 calculate the differential of a polynomial SOLVE.DOC
FPrimeI2 calculate the differential of a polynomial SOLVE.DOC
FPut fast output to a file opened by FOpen or FCreate DISK.DOC
FPut1 fast byte output to file opened by FOpen/FCreate DISK.DOC
FPut2 2-byte output to file opened by FOpen or FCreate DISK.DOC
FPut4 4-byte output to file opened by FOpen or FCreate DISK.DOC
FPut8 8-byte output to file opened by FOpen or FCreate DISK.DOC
FPutCRLF CR+LF output to file opened by FOpen or FCreate DISK.DOC
FPutSTR string output to file opened by FOpen or FCreate DISK.DOC
FreeEMS releases expanded memory block EMSXMS.DOC
FreeMem releases memory block allocated by QLIB DATA.DOC
FreeVMS releases virtual memory block EMSXMS.DOC
FreeXMS releases extended memory block EMSXMS.DOC
FSeek set the file pointer position for a file DISK.DOC
FSize determine size of a file opened by QLIB DISK.DOC
FValue calculate future value of contant cash flow SOLVE.DOC
GBaseSeg direct QLIB graphics to an alternate buffer GRAPHICS.DOC
GCenter centers a string on a graphics screen GRAPHICS.DOC
GCenterX centers a string on a graphics screen GRAPHICS.DOC
GCopy copies one page of Graphics memory to another GRAPHICS.DOC
GCursor puts a text cursor on graphics screen GRAPHICS.DOC
GetCHR determine character & color at screen location VIDEO.DOC
GetCMD returns case-sensetive command line parameter SYSTEM.DOC
GetCPU determine processor installed SYSTEM.DOC
GetCRT determine video system SYSTEM.DOC
GetBorder determine border color on CGA, EGA, VGA systems VIDEO.DOC
GetDOSVer determine DOS version installed SYSTEM.DOC
GetDot determine pixel status on graphics screen GRAPHICS.DOC
GetDRIVE determine default drive DISK.DOC
GetFileAttr determine file attributes DISK.DOC
GetKBDToggle determine status of key toggles and shift keys SYSTEM.DOC
GetKey returns first key pressed INPUT.DOC
GetMouseSpeed determines mouse cursor speed INPUT.DOC
GetPOS determine cursor position VIDEO.DOC
GetSpeed determine if CPU is operating at fast speed SYSTEM.DOC
GetSUB determine default subdirectory DISK.DOC
GetTime returns system time to program DATA.DOC
GetView determine current graphics viewport GRAPHICS.DOC
GLineEdit line editor for graphics screen GRAPHICS.DOC
GLoad copies a graphics image file to video memory GRAPHICS.DOC
GLoadEMS copies a graphics image from EMS to screen GRAPHICS.DOC
GMouse initialize alternate graphics mouse cursor GRAPHICS.DOC
GoodDrive determines if a logical disk drive is installed DISK.DOC
GPage combines UseGPage and ShowGPage subroutines GRAPHICS.DOC
GPlaneSize calculates array size for GPlane subroutines GRAPHICS.DOC
GPrint print text on a graphics screen GRAPHICS.DOC
GPrintDOWN text on graphics screen from top to bottom GRAPHICS.DOC
GPrintUP text on graphics screen from bottom to top GRAPHICS.DOC
GPrintX expanded text on graphics screen GRAPHICS.DOC
GPrint2X expanded text on graphics screen GRAPHICS.DOC
GPrintDOWNX expanded text on graphics screen GRAPHICS.DOC
GPrintDOWN2X expanded text on graphics screen GRAPHICS.DOC
GPrintUPX expanded text on graphics screen GRAPHICS.DOC
GPrintUP2X expanded text on graphics screen GRAPHICS.DOC
GPullDown pull-down menu system for graphics modes INPUT.DOC (b)
GSave saves a graphics screen as a file GRAPHICS.DOC
GSaveEMS saves a graphics screen in EMS memory GRAPHICS.DOC
GUCursor puts underscore cursor on graphics screen GRAPHICS.DOC
GVertList vertical list menu subroutine for graphics modes INPUT.DOC
HGraph establish Hercules graphics mode GRAPHICS.DOC
HGraph0 same as HGraph, but clears only page 0 GRAPHICS.DOC
HideMouse make mouse cursor invisible INPUT.DOC
HideGMouse make alternate graphics mouse invisible INPUT.DOC
HRam8043 switch to RamFont 43-row mode VIDEO.DOC
HRam9025 switch to RamFont 90-column mode VIDEO.DOC
HRam9043 switch to RamFont 90-column, 43-row mode VIDEO.DOC
HScroll quick horizontal scroll of text screen VIDEO.DOC
HText return to text mode from Hercules graphics GRAPHICS.DOC
InsArray2 inserts 2-byte data in an array DATA.DOC
InsArray4 inserts 4-byte data in an array DATA.DOC
InsArray8 inserts 8-byte data in an array DATA.DOC
InsVSTRArray insert a string in a variable-length string array DATA.DOC
InsertOFF force insert mode off SYSTEM.DOC
InsertON force insert mode on SYSTEM.DOC
InsertString insert one string in another, at any position DATA.DOC
InString INSTR-like function DATA.DOC
InStringCount counts number of times a pattern is in a string DATA.DOC
InString2 INSTR-like function, case-insensitive DATA.DOC
InStringR Reverse INSTR-like function DATA.DOC
InString2R Reverse INSTR-like function, case-insensitive DATA.DOC
INT2SNG integer to floating point conversion DATA.DOC
INT2STR integer to string conversion with formatting DATA.DOC
IsAlpha determines if a key code is A-Z or a-z INPUT.DOC
IsATT determines if program is running on ATT 6300 SYSTEM.DOC
IsDigit determines if a key code is 0-9 INPUT.DOC
IsEMS determines if EMS is installed EMSXMS.DOC
IsLower determines if a key code is a-z INPUT.DOC
IsMouse determine if mouse is available SYSTEM.DOC
IsMSHERC determines if MSHERC.COM is loaded SYSTEM.DOC
IsSEVGA determines if a Super EGA/VGA is installed SYSTEM.DOC
IsUpper determines if a key code is A-Z INPUT.DOC
IsXMS determines if XMS driver is installed EMSXMS.DOC
JaNein German language version of YesNo INPUT.DOC
KBDType determine if an enhanced keyboard is present SYSTEM.DOC
KeyFilter returns selected keys given input key code INPUT.DOC
KeyIfWaiting returns key if one is waiting in keyboard buffer INPUT.DOC
KeyOrButton returns first keyboard or mouse input INPUT.DOC
KeyRate sets keyboard typematic rate (AT and PS/2) SYSTEM.DOC
KeyWaiting determines if a key has been pressed INPUT.DOC
KillFile deletes file, with error trapping DISK.DOC
KillSUB deletes subdirectory, with error trapping DISK.DOC
KillVScreen release VScreen memory VIDEO.DOC
LastEdit option for LineEdit and GLineEdit INPUT.DOC
LineEdit text-mode line editor INPUT.DOC
LineFitF4 use Least Squares to fit a line to coordinates SOLVE.DOC
LineFitF8 use Least Squares to fit a line to coordinates SOLVE.DOC
LineFitI2 use Least Squares to fit a line to coordinates SOLVE.DOC
LineFitI4 use Least Squares to fit a line to coordinates SOLVE.DOC
LinePattern DrawLine and DrawBox option GRAPHICS.DOC
LNG2Date uncompresses a date stored by Date2LNG DATA.DOC
LNG2SNG long integer to floating point conversion DATA.DOC
LNG2STR long integer to string conversion DATA.DOC
LoadPCX load .PCX-format file to screen GRAPHICS.DOC
LOcase converts text to lower case DATA.DOC
MakeSUB creates a new subdirectory with error trapping DISK.DOC
MakeVScreen virtual screens for quick video subroutines VIDEO.DOC
MaskEdit edit string with fixed field(s) and delimiters INPUT.DOC
MathChip find math coprocessor SYSTEM.DOC
MaxDBLArray find maximum of double-precision array DATA.DOC
MaxDBLb find maximum of multi-dimensioned array DATA.DOC
MaxINTArray find maximum of integer array DATA.DOC
MaxINTb find maximum of multi-dimensioned array DATA.DOC
MaxLNGArray find maximum of long integer array DATA.DOC
MaxLNGb find maximum of multi-dimensioned array DATA.DOC
MaxSNGArray find maximum of single-precision array DATA.DOC
MaxSNGb find maximum of multi-dimensioned array DATA.DOC
MaxVSTRArray find longest in variable-length string array DATA.DOC (b)
MinDBLArray find minimum of double-precision array DATA.DOC
MinDBLb find minimum of multi-dimensioned array DATA.DOC
MinINTArray find minimum of integer array DATA.DOC
MinINTb find minimum of multi-dimensioned array DATA.DOC
MinLNGArray find minimum of long integer array DATA.DOC
MinLNGb find minimum of multi-dimensioned array DATA.DOC
MinSNGArray find minimum of single-precision array DATA.DOC
MinSNGb find minimum of multi-dimensioned array DATA.DOC
MinVSTRArray find shortest in variable-length string array DATA.DOC (b)
ModeColor switch to color text mode VIDEO.DOC
ModeMono switch to monochrome monitor VIDEO.DOC
Mode43 switch to EGA 43-row mode (VGA 50-row mode) VIDEO.DOC
MonthName returns ASCII month name given month number DATA.DOC
MouseLimit limit range of mouse motion SYSTEM.DOC
MousePos position mouse cursor on the screen SYSTEM.DOC
MouseStatus returns mouse position and button status INPUT.DOC
MouseType determines type of mouse SYSTEM.DOC
MovePOS moves the cursor by row and column offsets VIDEO.DOC
MulCURArray multiply CURRENCY array by a constant DATA.DOC (a)
MulCURb multiply CURRENCY array by a constant DATA.DOC (a)
MulDBLArray multiply double-precision array by a constant DATA.DOC
MulDBLb multiply double-precision array by a constant DATA.DOC
MulINTArray multiply integer array by a constant DATA.DOC
MulINTb multiply integer array by a constant DATA.DOC
MulLNGArray multiply long integer array by a constant DATA.DOC
MulLNGb multiply long integer array by a constant DATA.DOC
MulSNGArray multiply single-precision array by a constant DATA.DOC
MulSNGb multiply single-precision array by a constant DATA.DOC
NetPValue calculate net present value SOLVE.DOC
NoClock de-activates clock display VIDEO.DOC (b)
NumOFF forces NumLock off SYSTEM.DOC
NumON forces NumLock on SYSTEM.DOC
PaintScreen quick complete color change, entire screen VIDEO.DOC
PaintWindow quick complete color change, part of screen VIDEO.DOC
Palette16 change color palette in E/VGA 16-color modes GRAPHICS.DOC
Palette256 change color palette in 256-color modes GRAPHICS.DOC
Path$ returns the path in the program's enviornment SYSTEM.DOC
Payment calculates periodic payment or capital recovery SOLVE.DOC
PCXInfo get size and number of colors of .PCX file GRAPHICS.DOC
PortInfo determines Parallel, Serial, Game ports SYSTEM.DOC
PrinterError detect off-line or out-of-paper errors SYSTEM.DOC
PrnScreenOFF disable Print Screen SYSTEM.DOC
PrnScreenON enable Print Screen SYSTEM.DOC
PullDown pull-down menu system for text modes INPUT.DOC
PutDot turn Graphics pixel on or off GRAPHICS.DOC
PutKey puts a keycode in the yeyboard buffer INPUT.DOC
PValue calculate present value of constant cash flow SOLVE.DOC
QCenter centers a string on the screen VIDEO.DOC
QPrint quick print to screen or virtual screen VIDEO.DOC
QPrintCE quick print and clear to end of line VIDEO.DOC
QPrintFArray quick print array of fixed-length strings VIDEO.DOC
QPrintL quick print, lower case VIDEO.DOC
QPrintU quick print, upper case VIDEO.DOC
QPrintVArray quick print array of variable-length strings VIDEO.DOC
QPrintW quick print with word wrap VIDEO.DOC
QRead quick read from screen or virtual screen VIDEO.DOC
QuadFitF4 use Least Squares to fit a curve to coordinates SOLVE.DOC
QuadFitF8 use Least Squares to fit a curve to coordinates SOLVE.DOC
QuadFitI2 use Least Squares to fit a curve to coordinates SOLVE.DOC
QuadFitI4 use Least Squares to fit a curve to coordinates SOLVE.DOC
Quadratic calculates the solutions of a quadratic equation SOLVE.DOC
RAMsize determines installed base RAM SYSTEM.DOC
ReadSShort read signed short integer from an array DATA.DOC
ReadUShort read unsigned short integer from an array DATA.DOC
Real2CPX form COMPLEX data from real & imaginary parts COMPLEX.DOC
ReallocEMS re-size Expanded memory block EMSXMS.DOC
ReallocVMS re-size Virtual memory block EMSXMS.DOC
ReallocXMS re-size Extended memory block EMSXMS.DOC
ReColorScreen quick selective color change, entire screen VIDEO.DOC
ReColorWindow quick selective color change, part of screen VIDEO.DOC
Rename renames a file, avoiding QB's ON ERROR DISK.DOC
ReplaceString replace part of a string with another, any length DATA.DOC
Restore256 restore saved 256-color palette GRAPHICS.DOC
Save256 saves palette registers for 256-color palette GRAPHICS.DOC
Scramble makes a string of text unreadable DATA.DOC
ScreenDump prints Hercules graphics screen GRAPHICS.DOC
ScreenRestore restores a screen saved by ScreenSave VIDEO.DOC
ScreenRows determines the dimensions of the screen VIDEO.DOC
ScreenSave copies screen to restore later VIDEO.DOC
ScreenMem allocates memory required to store a screen VIDEO.DOC
ScreenMode set text/graphics screen mode GRAPHICS.DOC
Scroll BIOS screen scroll VIDEO.DOC
ScrollOFF forces scroll lock off SYSTEM.DOC
ScrollON forces scroll lock on SYSTEM.DOC
SetBLINK disable/enable blinking attributes VIDEO.DOC
SetArray1 set initial value of short integer array DATA.DOC
SetArray1b set initial value of short integer array DATA.DOC
SetArray2 set initial value of INTEGER array DATA.DOC
SetArray2b set initial value of INTEGER array DATA.DOC
SetArray4 set initial value of LONG or SINGLE array DATA.DOC
SetArray4b set initial value of LONG or SINGLE array DATA.DOC
SetArray8 set initial value of DOUBLE or CURRENCY array DATA.DOC
SetArray8b set initial value of DOUBLE or CURRENCY array DATA.DOC
SetDRIVE set default drive DISK.DOC
SetFileAttr set file attributes DISK.DOC
SetFileDate set file date and time DISK.DOC
SetGBlock restores portion of graphics screen GRAPHICS.DOC
SetKBDToggle set keyboard toggles SYSTEM.DOC
SetMouseSpeed set mouse cursor speed INPUT.DOC
SetPOS position the cursor on the screen VIDEO.DOC
SetSpeed sets CPU speed on multi-speed computers SYSTEM.DOC
SetSUB changes default subdirectory DISK.DOC
SetView establish active graphics viewport GRAPHICS.DOC
ShiftCUR shift the bits in an unsigned currency integer DATA.DOC (a)
ShiftINT shift the bits in an unsigned integer DATA.DOC
ShiftINTArray shift the bits in an unsigned integer array DATA.DOC
ShiftLNG shift the bits in an unsigned long integer DATA.DOC
ShiftLNGArray shift the bits in an unsigned long integer array DATA.DOC
ShowGPage changes graph page visible on the screen GRAPHICS.DOC
ShowGraphPlane select visible color plane in 16-color graphs GRAPHICS.DOC
ShowMouse make mouse cursor visible INPUT.DOC
ShowGMouse make alternate graphics mouse visible INPUT.DOC
ShowTPage switch visible screen page (text mode) VIDEO.DOC
SmallText GPrint and GLineEdit option GRAPHICS.DOC
SNG2INT copies the integer portion of a! to a% DATA.DOC
SNG2LNG copies the integer portion of a! to a& DATA.DOC
SNG2STR SINGLE-to-string conversion with formatting DATA.DOC
SnowOFF disable CGA "snow" control VIDEO.DOC
SnowON enable CGA "snow" control (QLIB's default) VIDEO.DOC
SortDBLArrayHI sort double-precision array from high to low DATA.DOC
SortDBLArrayLO sort double-precision array from low to high DATA.DOC
SortI2HI sort integer array from high to low DATA.DOC
SortI2LO sort integer array from low to high DATA.DOC
SortI4HI sort long integer array from high to low DATA.DOC
SortI4LO sort long integer array from low to high DATA.DOC
SortF4HI sort single-precision array from high to low DATA.DOC
SortF4LO sort single-precision array from low to high DATA.DOC
SortVSTRArrayHI sort variable-length string array from hi to low DATA.DOC
SortVSTRArrayLO sort variable-length string array from low to hi DATA.DOC
SortVSTRArrayHI2 case-insensetive string array sort DATA.DOC
SortVSTRArrayLO2 case-insensetive string array sort DATA.DOC
SShiftCUR shift bits in a signed currency integer DATA.DOC (a)
SShiftINT shift bits in a signed integer DATA.DOC
SShiftLNG shift bits in a signed long integer DATA.DOC
SShiftINTArray shift bits in a signed integer array DATA.DOC
SShiftLNGArray shift bits in a signed long integer array DATA.DOC
StartEdit option for LineEdit and GLineEdit INPUT.DOC
StdDevDBL calculates standard deviation of a DOUBLE array SOLVE.DOC
StdDevINT calculates standard deviation of an INT array SOLVE.DOC
StdDevLNG calculates standard deviation of a LONG array SOLVE.DOC
StdDevSNG calculates standard deviation of a SINGLE array SOLVE.DOC
StdText restores normal text size on graphics screen GRAPHICS.DOC
STR2INT converts numeric string to integer DATA.DOC
STR2LNG converts numeric string to long integer DATA.DOC
strchr search a string for a specified character DATA.DOC
STRError error trap for string-to-integer conversions DATA.DOC
StripChar removes specified characters from a string DATA.DOC
SumDBLArray calculates the total of a double-precision array DATA.DOC
SumINTArray calculates the total of an integer array DATA.DOC
SumLNGArray calculates the total of a long integer array DATA.DOC
SumSNGArray calculates the total of a single-precision array DATA.DOC
SumDBLb calculates the total of a double-precision array DATA.DOC
SumINTb calculates the total of an integer array DATA.DOC
SumLNGb calculates the total of a long integer array DATA.DOC
SumSNGb calculates the total of a single-precision array DATA.DOC
SVGA132 switch to 132-column text mode VIDEO.DOC
SVGA16 set SuperVGA 16-color modes GRAPHICS.DOC
SVGA256 set SuperVGA 256-color modes GRAPHICS.DOC
TCopy copies one screen page to another (text or Herc) VIDEO.DOC
TLoad loads a disk file into video memory VIDEO.DOC
TMouseStatus get mouse character position & buttons pressed INPUT.DOC
TPage combines UseTPage and ShowTPage subroutines VIDEO.DOC
TrimRight used to trim blanks off the end of a string DATA.DOC
TSave saves a text-mode screen as a disk file VIDEO.DOC
Today returns today's date DATA.DOC
UCursorON places underscore cursor on text screen VIDEO.DOC
UnScramble restores a string scrambled by Scramble DATA.DOC
UPcase converts text to upper case DATA.DOC
Use32k Hercules memory management GRAPHICS.DOC
Use64k Hercules memory management GRAPHICS.DOC
UseDefault causes QLIB to use system graphics mode GRAPHICS.DOC
UseFont font definitions for QLIB graphics text GRAPHICS.DOC
UseGPage change active graphics page GRAPHICS.DOC
UseHerc causes QLIB to use Hercules graphics GRAPHICS.DOC
UseTPage set active page in text mode VIDEO.DOC
VertList vertical list menu system INPUT.DOC
VGA13X extended 256-color modes for standard VGA GRAPHICS.DOC
VMGet copies data from virtual memory to DOS memory EMSXMS.DOC
VMPut copies data to virtual memory from DOS memory EMSXMS.DOC
VScroll quick vertical scroll of screen VIDEO.DOC
WindowClear quick clear portion of screen VIDEO.DOC
WindowEdit edit a string in a window on the screen INPUT.DOC
WindowFill quickly fill a portion of a text-mode screen VIDEO.DOC
WindowFrame quick window outline draw VIDEO.DOC
WindowRestore restores portion of screen saved by WindowSave VIDEO.DOC
WindowSave copies a portion of screen to restore later VIDEO.DOC
WindowMem allocates memory needed to store screen VIDEO.DOC
WLastEdit WindowEdit option INPUT.DOC
WriteShort write a short integer to an array DATA.DOC
WStartEdit WindowEdit option INPUT.DOC
XMGet copies data from extended memory to DOS memory EMSXMS.DOC
XMode16 Super EGA/VGA 16-color graphics GRAPHICS.DOC
XMode16A Super EGA/VGA 16-color graphics GRAPHICS.DOC
XMPut copies data to extended memory from DOS memory EMSXMS.DOC
XMSContig determines largest contiguous XMS block EMSXMS.DOC
XMSError returns error code for QLIB XMS subroutines EMSXMS.DOC
XMSFree determines maximum XMS memory available EMSXMS.DOC
YesNo waits for "Y" or "N" key to be pressed INPUT.DOC
(a) these subroutines work with BC7/QBX and VBDOS only
(b) these subroutines work only with QuickBASIC or BC7 without /FS option
Several QLIB users have requested a cross-reference listing of QLIB
object files in order to extract individual subroutines from the QLIB.LIB
library file. I have begun to provide this information in the documentation
for each subroutine. Since many QLIB subroutines call subroutines in
other QLIB object modules, a cross reference list can become quite messy.
The subroutine documentation may include lines like this:
Subroutine: QPrint(a$, row%, col%, attr%)
Object files: qprint.obj (crt.obj, q$qprn.obj)
In this case, QPRINT's primary subroutine is in qprint.obj, and
qprint.obj calls subroutines in crt.obj and in q$qprn.obj. All three
object files must be extracted from QLIB.LIB if you want to extract
QPRINT from the library.
Use the LIB utility supplied by Microsoft with your compiler to extract
the object files:
LIB QLIB *qprint*crt*q$qprn;<enter>
This command will copy the object files from the library to your disk.