home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 14 / CDACTUAL.iso / cdactual / demobin / share / program / Basic / QLIB57.ZIP / INTRO.DOC < prev    next >
Encoding:
Text File  |  1993-04-05  |  46.8 KB  |  793 lines

  1.  
  2.     QLIB version 5.7 advanced function library for Microsoft BASIC compilers
  3.     Copyright (C) 1988-1993 Douglas Herr ■ all rights reserved
  4.  
  5. WHAT IS QLIB?
  6.  
  7.     QLIB is a library of functions and subroutines for the following
  8.     Microsoft BASIC compilers:
  9.  
  10.     QuickBASIC 4.0
  11.     QuickBASIC 4.0b
  12.     QuickBASIC 4.5
  13.  
  14.     BASIC Professional Development System 7.0
  15.     BASIC Professional Development System 7.1
  16.  
  17.     Visual Basic for DOS (with thanks to Lee Bonnifield and Tony Kulik)
  18.  
  19.     QLIB subroutines provide the BASIC programmer with many additional
  20.     functions and commands, along with un-BASIC-like speed and power.
  21.  
  22. WHY USE QLIB?
  23.  
  24.     Compiled BASIC programming represents an enormous leap in BASIC
  25.     programming over interpreted BASICA or GWBASIC, and is a language that
  26.     many programmers already know.  However, many programmers also know that
  27.     many compiled BASIC commands are not really quick, can be extremely
  28.     cumbersome, and/or will eat tremendous amounts of memory.
  29.     QLIB subroutines are written in assembly language for maximum speed and
  30.     compact size.  QLIB subroutines can be up to 10 times faster than
  31.     comparable BASIC commands and can reduce the size of your .EXE files
  32.     dramatically.  QLIB's subroutines also provide many functions and screen
  33.     modes which are impossible with BASIC alone.
  34.  
  35.     Ideas for these routines come from a wide variety of sources.  If you want
  36.     to see additional routines, let me hear about it.  In this way, QLIB's
  37.     users can affect the direction QLIB takes.
  38.  
  39. DISCLAIMER
  40.  
  41.     Each QLIB routine has been tested extensively, but since I cannot foresee
  42.     every possible use or abuse of QLIB, I cannot be held responsible for any
  43.     damages resulting from its use.  I have used QLIB with IBM PC/XT, PC/AT,
  44.     PS/2 Model 30, 50z, Leading Edge model D, Zenith SuperSport 286, ATT 6300,
  45.     and with XT, 286, 386sx, 386-33 and 486-25 clones with PC/MS-DOS
  46.     versions 3.1 through 5.0.  Video systems tested include IBM EGA
  47.     with 64k, Paradise EGA 480, Everex Micro Enhancer EGA, IBM's MCGA
  48.     and VGA built into the PS/2s, Hercules Graphics Card Plus, Hercules
  49.     InColor, cheap Hercules clones, IBM's Monochrome Display Adapter, and
  50.     a few SuperVGAs.  I have tested the subroutines with QuickBASIC versions
  51.     4.0b and 4.5, with BC 7.0 and with BC7's QBX.
  52.  
  53.  
  54. DISTRIBUTION and REGISTRATION
  55.  
  56.     QLIB is user-supported shareware, NOT public domain software.  The QLIB
  57.     files you have received are the complete QLIB package, usable within the
  58.     QuickBASIC or QBX editor to develop programs, and linkable with your
  59.     object code to create stand-alone .EXE programs.  These files may be
  60.     distributed freely in un-altered form, but if you use QLIB in your BASIC
  61.     programs, you are expected to register.
  62.  
  63.     The advantages of registering are many:
  64.  
  65.     Registered users receive the latest version available when they register
  66.     and may upgrade at any time for the paltry fee of $10.00.
  67.  
  68.     Registered users will receive the huge model library QLIBH.LIB as well
  69.     as an updated medium model QLIB.LIB
  70.  
  71.     Registered users may request custom modifications to any of QLIB's
  72.     subroutines (but I will not guarantee I can make all modifications!).
  73.  
  74.     Programs linked with registered versions of QLIB will be slightly smaller
  75.     than those linked with the distribution version, and will not contain my
  76.     copyright notice.
  77.  
  78.     Your registration fee supports my efforts, and encourages me to continue
  79.     development of QLIB.
  80.  
  81.     No royalties are required and registration costs only $25, and you will
  82.     have confidence that you are using a version of QLIB which has not been
  83.     altered by others.
  84.  
  85.     Register by sending $25 to:
  86.  
  87.               Douglas R. Herr
  88.               P. O. Box 207
  89.               Sacramento, CA  95812
  90.               U. S. A.
  91.  
  92.               telephone (916) 721-8762
  93.               CompuServe 71247,3542
  94.  
  95.  
  96.     Please specify which size disk you prefer, and which version you are
  97.     registering (QLIB for QuickBASIC 4.x or BC6, or QXLIB for BC7/QBX or
  98.     VBDOS).  If you want both QLIB and QXLIB, please add $10.
  99.     Assembly-language source code for any of the libraries is an
  100.     additional $25.
  101.  
  102.     Any questions or problems should be sent to me at the above address.
  103.     Please include a stamped, self-addressed envelope if you are not a
  104.     registered user, or for fastest response, send a message on CompuServe.
  105.  
  106.     QLIB is a rapidly evolving library, so it is likely that by the time you
  107.     register there will be several additional routines or refinements to
  108.     existing routines available.
  109.  
  110. HOW DO I USE QLIB?
  111.  
  112.     Beginning with version 5.0, QLIB has been optimized for QuickBASIC 4.0,
  113.     4.5 and BC7.  There are two versions of the QLIB5 library: QLIB.LIB
  114.     for QuickBASIC 4.0 and QuickBASIC 4.5, and QXLIB.LIB is for BC7, QBX
  115.     and VBDOS.
  116.  
  117.     QLIB may be used with your BASIC compiler by copying QLIB.BI and
  118.     QLIB.LIB (or QXLIB.LIB) to your BASIC directory.  You will need to
  119.     make a .QLB version of QLIB to use QLIB with the QB, QBX or VBDOS
  120.     development enviornment.  You will need the BQLB4x.LIB, QBXQLB.LIB
  121.     or VBDOSQLB.LIB libraries supplied by Microsoft with your compiler.
  122.  
  123.     Make your .QLB file this way:
  124.  
  125.     QuickBASIC 4.0:   LINK /Q QLIB.LIB,,nul,BQLB40.LIB;
  126.     QuickBASIC 4.0b:  LINK /Q QLIB.LIB,,nul,BQLB41.LIB;
  127.     QuickBASIC 4.5:   LINK /Q QLIB.LIB,,nul,BQLB45.LIB;
  128.     QBX:              LINK /Q QXLIB.LIB,,nul,QBXQLB.LIB;
  129.     VBDOS:            LINK /Q QXLIB.LIB,,nul,VBDOSQLB.LIB;
  130.  
  131.     If you are using QuickBASIC 4.0 or 4.0b, LINK will give you an error
  132.     message related to QLIB's use of the 8087 emulator.  This error message
  133.     is expected.  The practical effect of this error is that QLIB
  134.     subroutines which use BASIC's 8087 emulator will not work within the
  135.     QuickBASIC editor enviornment if you do not have a math coprocessor.
  136.     The emulator will be linked properly when you create your .EXE files.
  137.  
  138.     QuickBASIC 4.0b's BQLB41.LIB library can be patched to eliminate the
  139.     error (this may also work with QB 4.0's BQLB40.LIB):
  140.  
  141.     Step 1: extract object files from BCOM41.LIB
  142.             C:\LIB BCOM41 *BFPSIG *FIXUPS *EMOEM *PIEMR;
  143.  
  144.     Step 2: add these object files to BQLB41
  145.             C:\LIB BQLB41 +BFPSIG +FIXUPS +EMOEM +PIEMR,BQLB42;
  146.  
  147.     Step 3: Make a new QLIB.QLB
  148.             C:\LINK /Q QLIB.LIB,,NUL,BQLB42;
  149.  
  150.     I have not had the 8087 emulation problem with BQLB45.LIB or with
  151.     QBXQLB.LIB.  This patch seems to work within the QuickBASIC editor
  152.     but since 90% of the PCs I've used have math coprocessors, I can't
  153.     be certain.  Your experience with your own system is your best guide.
  154.  
  155.  
  156.  
  157.     To load QLIB with the QuickBASIC editor, use the command
  158.  
  159.          QB /L QLIB.QLB
  160.  
  161.     or for QBX, use:
  162.  
  163.          QBX /L QXLIB.QLB
  164.  
  165.     for VBDOS:
  166.  
  167.          VBDOS /L QXLIB.QLB
  168.  
  169.     To use QLIB's functions, you MUST include the INCLUDE file QLIB.BI in
  170.     your source code.  QLIB.BI changes BASIC's default data type from
  171.     SINGLE to INTEGER, and also contains the declarations for QLIB's
  172.     functions.  QLIB's functions MUST be declared before they can be used,
  173.     and the INTEGER default data type is required.  You should change
  174.     the default data type to INTEGER whether you use QLIB or not, so your
  175.     programs will be smaller and faster.  Use SINGLE and DOUBLE data types
  176.     only when nessesary.  The documentation for QLIB's functions shows
  177.     you how to use the INCLUDE file.
  178.  
  179.     QLIB.BI has the function declarations for ALL of QLIB's functions.
  180.     You should use this as a template for the function declarations for
  181.     your programs.  If you compile your programs using an un-altered
  182.     QLIB.BI file,  all of the functions declared in the INCLUDE file
  183.     may be included in your .EXE program whether the program uses the
  184.     functions or not.  Edit QLIB.BI to remove functions you don't need
  185.     and you will have more space in the development enviornment and,
  186.     depending on which BASIC you use, your .EXE programs may be smaller.
  187.  
  188.     REGISTERED USERS: note that QLIBH.BI should be used in place of QLIB.BI
  189.     if you are using the huge model library QLIBH.LIB.
  190.  
  191.  
  192.     SPECIAL NOTE TO VBDOS PROGRAMMERS:
  193.  
  194.     I have not purchased VBDOS yet, so all my information regarding
  195.     compatibility of QXLIB with VBDOS is from you people in the trenches.
  196.     Feedback from Lee Bonnifield and Tony Kulik has been particularly
  197.     valuable and informative; if you are using VBDOS and you run into
  198.     problems, let me hear about it!  I can't fix the problem if I don't
  199.     know it exists!
  200.  
  201.     VBDOS programmers may also need to include QXLIB subroutine
  202.     declarations in the .BI file when compiling from the DOS command line.
  203.  
  204.     Example:
  205.     DECLARE SUB QPrint(s$, row%, column%, attribute%)
  206.  
  207.  
  208.     Compile your source code using
  209.  
  210.          BC myprog /O;
  211.  
  212.     (many QLIB subroutines require the /O option)
  213.  
  214.     Link QLIB with your object files with
  215.  
  216.          LINK /EX /NOE myprog,,NUL,QLIB.LIB;
  217.     or   LINK /EX /NOE myprog,,NUL,QXLIB.LIB;
  218.  
  219.     You may compile your source code and link to QLIB.LIB from within the
  220.     QuickBASIC editor, but QuickBASIC may include the ENTIRE QLIB.LIB file
  221.     in your .EXE file, whether you use any subroutines or not.  This is not
  222.     the way to keep your program small!  Link from the command line as I have
  223.     shown and your .EXE file will include only the subroutines you need.
  224.  
  225.     QLIB's documentation has been divided into several files in order to keep
  226.     each one down to a managable size.  The .DOC files are:
  227.  
  228.     INTRO.DOC      this file
  229.     INPUT.DOC      keyboard input subroutines
  230.     COMPLEX.DOC    COMPLEX data subroutines
  231.     DATA.DOC       data manipulation subroutines
  232.     DISK.DOC       disk and file management subroutines
  233.     EMSXMS.DOC     Expanded and Extended Memory subroutines
  234.     SYSTEM.DOC     subroutines which determine PC equipment or status
  235.     GRAPHICS.DOC   subroutines for graphics
  236.     SOLVE.DOC       solutions for common mathematical equations
  237.     VIDEO.DOC      video input and output subroutines (text modes)
  238.     UPDATE.DOC     important information if you are upgrading from an
  239.                    earlier version of QLIB
  240.  
  241.     Note: the other files which make up the QLIB5 package are:
  242.  
  243.     QLIB.LIB       QuickBASIC link library
  244.     QXLIB.LIB      BC7/VBDOS link library
  245.     QLIB.BI        INCLUDE file for QuickBASIC, BC7/QBX and VBDOS
  246.  
  247.  
  248.     In the spirit of QB 4.5's on-line documentation, each of the .DOC
  249.     files may be loaded into the QuickBASIC or QBX editor (use DOCUMENT
  250.     switch), from which you may cut and paste into your source code to
  251.     your heart's content.  Hard copy of the documentation may be easily
  252.     (and inexpensively) obtained by using your printer.
  253.  
  254.     If you are upgrading from a version of QLIB prior to 5.0, read ALL of
  255.     the new .DOC files completely.  Many subroutines have been changed to
  256.     functions, and others have been replaced by new subroutines.  While
  257.     this may cause you some inconvenience in the short run, doing this
  258.     allowed me to provide higher performance and smaller code.
  259.  
  260. BASIC DATA TYPES
  261.  
  262.     QLIB's documentation is filled with reference to data of the %, &,
  263.     !, # and $ types.  If you already know what these mean, you may skip
  264.     this section, as long as you pay attention to the data types required
  265.     by QLIB's subroutines.  If you are not familiar with BASIC's data types,
  266.     by all means read your manual.
  267.  
  268.     Even if you don't use QLIB, the data types you use in your programs
  269.     will affect the speed and size of your programs.  In general, you
  270.     should use INTEGER (%) data types where possible, and DOUBLE (#)
  271.     types only where nessesary.
  272.  
  273.     BASIC assumes that all data is SINGLE (!) unless otherwise declared.
  274.     You can change the default data type to INTEGER with the command
  275.  
  276.           DEFINT A-Z
  277.  
  278.     I put this at the beginning of all my programs to improve speed, reduce
  279.     size and to eliminate the need for those silly % signs.  This statement
  280.     is part of the INCLUDE file QLIB.BI.
  281.  
  282.     When using QLIB subroutines, pay particular attention to the data types
  283.     required by each subroutine.  If you use the wrong data types, it is
  284.     likely (though not certain) that you will end up with garbage.  If you
  285.     find that it helps, you can add subroutine declarations to the QLIB.BI
  286.     INCLUDE file so that your BC compiler or QB/QBX/VBDOS development
  287.     environment will check data types for you.  I haven't done this because
  288.     adding all of QLIB's subroutines to QLIB.BI takes too much memory and
  289.     slows the loading of QLIB.BI to a snail's pace.
  290.  
  291.     Example:
  292.     DECLARE SUB QPrint(s$, row%, column%, attribute%)
  293.  
  294.  
  295.     QLIB supports a COMPLEX data type consisting of paired SINGLE data.
  296.     Each COMPLEX value is 8 bytes.  COMPLEX data arrays should be allocated
  297.     with BASIC's DIM statement as DOUBLE data.  Once QLIB has established the
  298.     values of the COMPLEX data, BASIC in general will not interpret the data
  299.     correctly.  Exception: for complex conjugates, you can use BASIC:
  300.  
  301.     if c0# is a QLIB COMPLEX data type, this BASIC statement will result in
  302.     c1# = complex conjugate of c0#:
  303.  
  304.     c1# = -c0#
  305.  
  306.     Subroutines specific to the COMPLEX data type are described in
  307.     COMPLEX.DOC.
  308.  
  309.  
  310. SUBROUTINE REFERENCE
  311.  
  312. Documentation for QLIB's subroutines can be found in the following .DOC
  313. files:
  314.  
  315. Name           description                                      .DOC file
  316.                                                                         
  317. AddINTArray    add a constant to an integer array                DATA.DOC
  318. AddLNGArray    add a constant to a long integer array            DATA.DOC
  319. AddSNG         adds two SINGLE values, returning error flag      DATA.DOC
  320. AddDBL         adds two DOUBLE values, returning error flag      DATA.DOC
  321. AllocEMS       allocate an expanded memory block               EMSXMS.DOC
  322. AllocMem       allocates memory for QLIB from DOS memory area    DATA.DOC
  323. AllocXMS       allocate an extended memory block               EMSXMS.DOC
  324. ANSIColor      determines color attribute used by ANSI.SYS      VIDEO.DOC
  325. APrint         Print on the screen using ANSI device driver     VIDEO.DOC
  326. APrintN        like APrint, but advances cursor to next line    VIDEO.DOC
  327. APrintT        APrint plus tab on same line                     VIDEO.DOC
  328. ASCII          returns ASCII code of a string, avoiding error    DATA.DOC
  329. Beizer         draws a Beizer curve                          GRAPHICS.DOC
  330. BigPrint       print string on screen in big characters         VIDEO.DOC
  331. Bit2INT        converts a bit pattern to an integer              DATA.DOC
  332. BitBlockBytes  graphics screen manipulation                  GRAPHICS.DOC
  333. BitBlockRestore  restore graphics screen saved earlier       GRAPHICS.DOC
  334. BitBlockSave   save part of graphics screen                  GRAPHICS.DOC
  335. BitPlaneRestore  restore graphics plane saved earlier        GRAPHICS.DOC
  336. BitPlaneSave   save part of a plane of graphics screen       GRAPHICS.DOC
  337. BitPlaneBytes  calculates bytes required for BitPlaneSave    GRAPHICS.DOC
  338. BlockFrame     BIOS routine to frame a block of the screen      VIDEO.DOC
  339. Border         changes color of screen border                   VIDEO.DOC
  340. BPrint         BIOS print on screen                             VIDEO.DOC
  341. BPrintL        BIOS print, lower case                           VIDEO.DOC
  342. BPrintU        BIOS print, upper case                           VIDEO.DOC
  343. C2F            converts degrees Celcius to Farenheit            SOLVE.DOC
  344. CapsOFF        force capslock toggle off                       SYSTEM.DOC
  345. CapsON         force capslock toggle on                        SYSTEM.DOC
  346. CircleAspect   DrawCircle options                            GRAPHICS.DOC
  347. ClearBlock     BIOS clear portion of screen                     VIDEO.DOC
  348. ClearEOL       clears a row from cursor to edge of screen       VIDEO.DOC
  349. ClearKey       clears the keyboard 'type ahead' buffer          INPUT.DOC
  350. ClearView      clear portion of Graphics screen              GRAPHICS.DOC
  351. Clock          prints a time display on text-mode screens       VIDEO.DOC (b)
  352. ClrScreen      quickly clear entire screen                      VIDEO.DOC
  353. Color16        calculate color value for changing palette    GRAPHICS.DOC
  354. Color256       calculate color value for changing palette    GRAPHICS.DOC
  355. ColorAttr      calculate color attibute                         VIDEO.DOC
  356.  
  357. CombineINTArray  Add one array to another (or subtract)          DATA.DOC
  358. CombineLNGArray  Add one array to another (or subtract)          DATA.DOC
  359. CombineSNGArray  Add one array to another (or subtract)          DATA.DOC
  360. CombineDBLArray  Add one array to another (or subtract)          DATA.DOC
  361. CopyMem        copies a block of memory                          DATA.DOC
  362. CPX2Real       splits COMPLEX value to real & imaginary parts COMPLEX.DOC
  363. CPXAdd         add two COMPLEX values                         COMPLEX.DOC
  364. CPXDiv         divides COMPLEX values                         COMPLEX.DOC
  365. CPXMul         multiplies two COMPLEX values                  COMPLEX.DOC
  366. CPXNeg         returns negative of a COMPLEX value            COMPLEX.DOC
  367. CPXNegI        returns complex conjugate of a COMPLEX values  COMPLEX.DOC
  368. CPXNegR        returns negative complex conjugate             COMPLEX.DOC
  369. CubeFitF4      use Least Squares to fit a curve to coordinates  SOLVE.DOC
  370. CubeFitF8      use Least Squares to fit a curve to coordinates  SOLVE.DOC
  371. CubeFitI2      use Least Squares to fit a curve to coordinates  SOLVE.DOC
  372. CubeFitI4      use Least Squares to fit a curve to coordinates  SOLVE.DOC
  373. CursorColor    enables InColor color palette, sets cursor color VIDEO.DOC
  374. CursorOFF      makes text cursor invisible                      VIDEO.DOC
  375. CursorON       places cursor on text screen                     VIDEO.DOC
  376. Date2LNG       compresses a date to a long integer for storage   DATA.DOC
  377. DayName        returns ASCII day name given day number 1-7       DATA.DOC
  378. DayOfWeek      returns the day of week for any given date        DATA.DOC
  379. DelArray2      deletes one element from an array of 2-byte data  DATA.DOC
  380. DelArray4      deletes one element from an array of 4-byte data  DATA.DOC
  381. DelArray8      deletes one element from an array of 8-byte data  DATA.DOC
  382. DelVSTRArray   deletes one element from a string array           DATA.DOC
  383. DBL2STR        DOUBLE-to-string conversion with formatting       DATA.DOC
  384. DGeyKey        DOS keyboard input; may be redirected            INPUT.DOC
  385. DiskWP         traps "drive not ready" errors                    DISK.DOC
  386. DOSError       returns MS-DOS error code for last DOS function SYSTEM.DOC
  387. DotBAK         renames existing file as backup (.BAK) file       DISK.DOC
  388. DrawBox        draws a box on a graphics screen              GRAPHICS.DOC
  389. DrawCircle     draws a circle on graphics screen             GRAPHICS.DOC
  390. DrawLine       draws a line on graphics screen               GRAPHICS.DOC
  391. DriveSpace     determine free and total space on a disk          DISK.DOC
  392.  
  393. EGAinfo        determine EGA configuration                     SYSTEM.DOC
  394. EMSError       returns error code for previous EMS call        EMSXMS.DOC
  395. EMSFree        determines free EMS memory                      EMSXMS.DOC
  396. EMGet          copies data from EMS memory block to an array   EMSXMS.DOC
  397. EMGet1         copies one byte from EMS memory                 EMSXMS.DOC
  398. EMGet2         copies two bytes from EMS memory                EMSXMS.DOC
  399. EMGet4         copies four bytes from EMS memory               EMSXMS.DOC
  400. EMGet8         copies eight bytes from EMS memory              EMSXMS.DOC
  401. EMSTotal       determines total EMS memory installed           EMSXMS.DOC
  402. EMSversion     determines EMS software version                 EMSXMS.DOC
  403. EMPut          copies data to an EMS memory block              EMSXMS.DOC
  404. EMPut1         copies one byte to EMS memory                   EMSXMS.DOC
  405. EMPut2         copies two bytes to EMS memory                  EMSXMS.DOC
  406. EMPut4         copies four bytes to EMS memory                 EMSXMS.DOC
  407. EMPut8         copies eight bytes to EMS memory                EMSXMS.DOC
  408. EXEName        returns full drive and path name of program     SYSTEM.DOC
  409. Exist          see if a file or subdirectory exists              DISK.DOC
  410. F2C            converts degrees Farenheit to Celcius            SOLVE.DOC
  411. Factorial      calculates the factorial of an integer        SOLVE.DOC
  412. FCopy          copy a file to another disk or directory          DISK.DOC
  413. FClose         close a file opened by FCreate or FOpen           DISK.DOC
  414. FCreate        creates a new file for fast binary I/O            DISK.DOC
  415. FFlush         flushes QLIB and DOS file buffer                  DISK.DOC
  416. FGet           buffered input from a file opened by FOpen        DISK.DOC
  417. FGet1          fast 1-byte input from a file opened by FOpen     DISK.DOC
  418. FGet2          fast 2-byte input from a file opened by FOpen     DISK.DOC
  419. FGet4          fast 4-byte input from a file opened by FOpen     DISK.DOC
  420. FGet8          fast 8-byte input from a file opened by FOpen     DISK.DOC
  421. FGetSTR        fast string input from a file opened by FOpen     DISK.DOC
  422. FileCount      counts the number of files matching a template    DISK.DOC
  423.  
  424. FillArea       fills an irregular region on graphics screen  GRAPHICS.DOC
  425. FillBox        fills a box on graphics screen                GRAPHICS.DOC
  426. FillEOL        fills from cursor position to edge of screen     VIDEO.DOC
  427. FillPattern    establish fill pattern                        GRAPHICS.DOC
  428. Find1          finds 1-byte value in an array                    DATA.DOC
  429. Find2          finds 2-byte value in an array                    DATA.DOC
  430. Find4          finds 4-byte value in an array                    DATA.DOC
  431. Find8          finds 8-byte value in an array                    DATA.DOC
  432. FindFileAttr   FindFirstMatch/FindNextMatch option               DISK.DOC
  433. FindFileDate   FindFirstMatch/FindNextMatch option               DISK.DOC
  434. FindFileName   FindFirstMatch/FindNextMatch option               DISK.DOC
  435. FindFileSize   FindFirstMatch/FindNextMatch option               DISK.DOC
  436. FindFileTime   FindFirstMatch/FindNextMatch option               DISK.DOC
  437. FindFirstMatch find first matching file with wildcards           DISK.DOC
  438. FindMONO       determine if a monochrome monitor is present    SYSTEM.DOC
  439. FindNextMatch  find next file with wildcards                     DISK.DOC
  440. FLoad          quickly loads a disk file into far memory         DISK.DOC
  441. FLoadEMS       quickly loads a disk file into EMS memory       EMSXMS.DOC
  442. FLoadXMS       quickly loads a disk file into XMS memory       EMSXMS.DOC
  443. Floppies       determine number of floppy drives installed     SYSTEM.DOC
  444. FloppyType     determine type of floppy drive installed        SYSTEM.DOC
  445. FontWidth      Changes GPrint default character width        GRAPHICS.DOC
  446. FOpen          opens an existing file for fast input or output   DISK.DOC
  447. FPrimeF4       calculate the differential of a polynomial       SOLVE.DOC
  448. FPrimeI2       calculate the differential of a polynomial       SOLVE.DOC
  449. FPut           fast output to a file opened by FOpen or FCreate  DISK.DOC
  450. FPut1          fast byte output to file opened by FOpen/FCreate  DISK.DOC
  451. FPut2          2-byte output to file opened by FOpen or FCreate  DISK.DOC
  452. FPut4          4-byte output to file opened by FOpen or FCreate  DISK.DOC
  453. FPut8          8-byte output to file opened by FOpen or FCreate  DISK.DOC
  454. FPutCRLF       CR+LF output to file opened by FOpen or FCreate   DISK.DOC
  455. FPutSTR        string output to file opened by FOpen or FCreate  DISK.DOC
  456. FreeEMS        releases expanded memory block                  EMSXMS.DOC
  457. FreeMem        releases memory block allocated by QLIB           DATA.DOC
  458. FreeXMS        releases extended memory block                  EMSXMS.DOC
  459. FSeek          set the file pointer position for a file          DISK.DOC
  460. FSize          determine size of a file opened by QLIB           DISK.DOC
  461. FValue         calculate future value of contant cash flow      SOLVE.DOC
  462. GBaseSeg       direct QLIB graphics to an alternate buffer   GRAPHICS.DOC
  463. GCenter        centers a string on a graphics screen         GRAPHICS.DOC
  464. GCenterX       centers a string on a graphics screen         GRAPHICS.DOC
  465. GCopy          copies one page of Graphics memory to another GRAPHICS.DOC
  466. GCursor        puts a text cursor on graphics screen         GRAPHICS.DOC
  467. GetCMD         returns case-sensetive command line parameter   SYSTEM.DOC
  468. GetCPU         determine processor installed                   SYSTEM.DOC
  469. GetCRT         determine video system                          SYSTEM.DOC
  470. GetDOSVer      determine DOS version installed                 SYSTEM.DOC
  471. GetDot         determine pixel status on graphics screen     GRAPHICS.DOC
  472. GetDRIVE       determine default drive                           DISK.DOC
  473. GetFileAttr    determine file attributes                         DISK.DOC
  474. GetKBDToggle   determine status of key toggles and shift keys  SYSTEM.DOC
  475. GetKey         returns first key pressed                        INPUT.DOC
  476.  
  477. GetPOS         determine cursor position                        VIDEO.DOC
  478. GetSpeed       determine if CPU is operating at fast speed     SYSTEM.DOC
  479. GetSUB         determine default subdirectory                    DISK.DOC
  480. GetTime        returns system time to program                    DATA.DOC
  481. GetView        determine current graphics viewport           GRAPHICS.DOC
  482. GLineEdit      line editor for graphics screen               GRAPHICS.DOC
  483. GLoad          copies a graphics image file to video memory  GRAPHICS.DOC
  484. GLoadEMS       copies a graphics image from EMS to screen    GRAPHICS.DOC
  485. GMouse         initialize alternate graphics mouse cursor    GRAPHICS.DOC
  486. GPage          combines UseGPage and ShowGPage subroutines   GRAPHICS.DOC
  487. GPlaneSize     calculates array size for GPlane subroutines  GRAPHICS.DOC
  488. GPrint         print text on a graphics screen               GRAPHICS.DOC
  489. GPrintDOWN     text on graphics screen from top to bottom    GRAPHICS.DOC
  490. GPrintUP       text on graphics screen from bottom to top    GRAPHICS.DOC
  491. GPrintX        expanded text on graphics screen              GRAPHICS.DOC
  492. GPrint2X       expanded text on graphics screen              GRAPHICS.DOC
  493. GPrintDOWNX    expanded text on graphics screen              GRAPHICS.DOC
  494. GPrintDOWN2X   expanded text on graphics screen              GRAPHICS.DOC
  495. GPrintUPX      expanded text on graphics screen              GRAPHICS.DOC
  496. GPrintUP2X     expanded text on graphics screen              GRAPHICS.DOC
  497. GPullDown      pull-down menu system for graphics modes         INPUT.DOC (b)
  498. GSave          saves a graphics screen as a file             GRAPHICS.DOC
  499. GSaveEMS       saves a graphics screen in EMS memory         GRAPHICS.DOC
  500. GUCursor       puts underscore cursor on graphics screen     GRAPHICS.DOC
  501. GVertList      vertical list menu subroutine for graphics modes INPUT.DOC
  502. HGraph         establish Hercules graphics mode              GRAPHICS.DOC
  503. HGraph0        same as HGraph, but clears only page 0        GRAPHICS.DOC
  504. HideMouse      make mouse cursor invisible                      INPUT.DOC
  505. HideGMouse     make alternate graphics mouse invisible          INPUT.DOC
  506. HRam8043       switch to RamFont 43-row mode                    VIDEO.DOC
  507. HRam9025       switch to RamFont 90-column mode                 VIDEO.DOC
  508. HRam9043       switch to RamFont 90-column, 43-row mode         VIDEO.DOC
  509. HScroll        quick horizontal scroll of text screen           VIDEO.DOC
  510. HText          return to text mode from Hercules graphics    GRAPHICS.DOC
  511. InsArray2      inserts 2-byte data in an array                   DATA.DOC
  512. InsArray4      inserts 4-byte data in an array                   DATA.DOC
  513. InsArray8      inserts 8-byte data in an array                   DATA.DOC
  514. InsVSTRArray   insert a string in a variable-length string array DATA.DOC
  515. InsertOFF      force insert mode off                           SYSTEM.DOC
  516. InsertON       force insert mode on                            SYSTEM.DOC
  517. InsertString   insert one string in another, at any position     DATA.DOC
  518. InString       INSTR-like function                               DATA.DOC
  519. InStringCount  counts number of times a pattern is in a string   DATA.DOC
  520. InString2      INSTR-like function, case-insensitive             DATA.DOC
  521. InStringR      Reverse INSTR-like function                       DATA.DOC
  522. InString2R     Reverse INSTR-like function, case-insensitive     DATA.DOC
  523. INT2SNG        integer to floating point conversion              DATA.DOC
  524. INT2STR        integer to string conversion with formatting      DATA.DOC
  525.  
  526. IsAlpha        determines if a key code is A-Z or a-z           INPUT.DOC
  527. IsATT          determines if program is running on ATT 6300    SYSTEM.DOC
  528. IsDigit        determines if a key code is 0-9                  INPUT.DOC
  529. IsEMS          determines if EMS is installed                  EMSXMS.DOC
  530. IsLower        determines if a key code is a-z                  INPUT.DOC
  531. IsMouse        determine if mouse is available                 SYSTEM.DOC
  532. IsMSHERC       determines if MSHERC.COM is loaded              SYSTEM.DOC
  533. IsSEVGA        determines if a Super EGA/VGA is installed      SYSTEM.DOC
  534. IsUpper        determines if a key code is A-Z                  INPUT.DOC
  535. IsXMS          determines if XMS driver is installed           EMSXMS.DOC
  536. JaNein         German language version of YesNo                 INPUT.DOC
  537. KBDType        determine if an enhanced keyboard is present    SYSTEM.DOC
  538. KeyFilter      returns selected keys given input key code       INPUT.DOC
  539. KeyIfWaiting   returns key if one is waiting in keyboard buffer INPUT.DOC
  540. KeyOrButton    returns first keyboard or mouse input            INPUT.DOC
  541. KeyRate        sets keyboard typematic rate (AT and PS/2)      SYSTEM.DOC
  542. KeyWaiting     determines if a key has been pressed             INPUT.DOC
  543. KillFile       deletes file, with error trapping                 DISK.DOC
  544. KillSUB        deletes subdirectory, with error trapping         DISK.DOC
  545. KillVScreen    release VScreen memory                           VIDEO.DOC
  546. LastEdit       option for LineEdit and GLineEdit                INPUT.DOC
  547. LineEdit       text-mode line editor                            INPUT.DOC
  548. LineFitF4      use Least Squares to fit a line to coordinates   SOLVE.DOC
  549. LineFitF8      use Least Squares to fit a line to coordinates   SOLVE.DOC
  550. LineFitI2      use Least Squares to fit a line to coordinates   SOLVE.DOC
  551. LineFitI4      use Least Squares to fit a line to coordinates   SOLVE.DOC
  552. LinePattern    DrawLine and DrawBox option                   GRAPHICS.DOC
  553. LNG2Date       uncompresses a date stored by Date2LNG            DATA.DOC
  554. LNG2SNG        long integer to floating point conversion         DATA.DOC
  555. LNG2STR        long integer to string conversion                 DATA.DOC
  556. LOcase         converts text to lower case                       DATA.DOC
  557. MakeSUB        creates a new subdirectory with error trapping    DISK.DOC
  558. MakeVScreen    virtual screens for quick video subroutines      VIDEO.DOC
  559. MaskEdit       edit string with fixed field(s) and delimiters   INPUT.DOC
  560. MathChip       find math coprocessor                           SYSTEM.DOC
  561. MaxDBLArray    find maximum of double-precision array            DATA.DOC
  562. MaxDBLb        find maximum of multi-dimensioned array           DATA.DOC
  563. MaxINTArray    find maximum of integer array                     DATA.DOC
  564. MaxINTb        find maximum of multi-dimensioned array           DATA.DOC
  565. MaxLNGArray    find maximum of long integer array                DATA.DOC
  566. MaxLNGb        find maximum of multi-dimensioned array           DATA.DOC
  567. MaxSNGArray    find maximum of single-precision array            DATA.DOC
  568. MaxSNGb        find maximum of multi-dimensioned array           DATA.DOC
  569. MaxVSTRArray   find longest in variable-length string array      DATA.DOC (b)
  570. MinDBLArray    find minimum of double-precision array            DATA.DOC
  571. MinDBLb        find minimum of multi-dimensioned array           DATA.DOC
  572. MinINTArray    find minimum of integer array                     DATA.DOC
  573. MinINTb        find minimum of multi-dimensioned array           DATA.DOC
  574. MinLNGArray    find minimum of long integer array                DATA.DOC
  575. MinLNGb        find minimum of multi-dimensioned array           DATA.DOC
  576. MinSNGArray    find minimum of single-precision array            DATA.DOC
  577. MinSNGb        find minimum of multi-dimensioned array           DATA.DOC
  578. MinVSTRArray   find shortest in variable-length string array     DATA.DOC (b)
  579.  
  580. ModeColor      switch to color text mode                        VIDEO.DOC
  581. ModeMono       switch to monochrome monitor                     VIDEO.DOC
  582. Mode13225      switch to 132-column, 25-row mode                VIDEO.DOC
  583. Mode13243      switch to 132-column, 43-row mode                VIDEO.DOC
  584. Mode43         switch to EGA 43-row mode (VGA 50-row mode)      VIDEO.DOC
  585. MonthName      returns ASCII month name given month number       DATA.DOC
  586. MouseLimit     limit range of mouse motion                     SYSTEM.DOC
  587. MousePos       position mouse cursor on the screen             SYSTEM.DOC
  588. MouseStatus    returns mouse position and button status         INPUT.DOC
  589. MovePOS        moves the cursor by row and column offsets       VIDEO.DOC
  590. MulCURArray    multiply CURRENCY array by a constant             DATA.DOC (a)
  591. MulCURb        multiply CURRENCY array by a constant             DATA.DOC (a)
  592. MulDBLArray    multiply double-precision array by a constant     DATA.DOC
  593. MulDBLb        multiply double-precision array by a constant     DATA.DOC
  594. MulINTArray    multiply integer array by a constant              DATA.DOC
  595. MulINTb        multiply integer array by a constant              DATA.DOC
  596. MulLNGArray    multiply long integer array by a constant         DATA.DOC
  597. MulLNGb        multiply long integer array by a constant         DATA.DOC
  598. MulSNGArray    multiply single-precision array by a constant     DATA.DOC
  599. MulSNGb        multiply single-precision array by a constant     DATA.DOC
  600. NetPValue      calculate net present value                      SOLVE.DOC
  601. NoClock        de-activates clock display                       VIDEO.DOC (b)
  602. NumOFF         forces NumLock off                              SYSTEM.DOC
  603. NumON          forces NumLock on                               SYSTEM.DOC
  604. PaintScreen    quick complete color change, entire screen       VIDEO.DOC
  605. PaintWindow    quick complete color change, part of screen      VIDEO.DOC
  606. Palette16      change color palette in E/VGA 16-color modes  GRAPHICS.DOC
  607. Palette256     change color palette in 256-color modes       GRAPHICS.DOC
  608. Path$          returns the path in the program's enviornment   SYSTEM.DOC
  609. Payment        calculates periodic payment or capital recovery  SOLVE.DOC
  610. PrinterError   detect off-line or out-of-paper errors          SYSTEM.DOC
  611. PrnScreenOFF   disable Print Screen                            SYSTEM.DOC
  612. PrnScreenON    enable Print Screen                             SYSTEM.DOC
  613. PullDown       pull-down menu system for text modes             INPUT.DOC
  614. PutDot         turn Graphics pixel on or off                 GRAPHICS.DOC
  615. PValue         calculate present value of constant cash flow    SOLVE.DOC
  616. QCenter        centers a string on the screen                   VIDEO.DOC
  617. QPrint         quick print to screen or virtual screen          VIDEO.DOC
  618. QPrintCE       quick print and clear to end of line             VIDEO.DOC
  619. QPrintFArray   quick print array of fixed-length strings        VIDEO.DOC
  620. QPrintL        quick print, lower case                          VIDEO.DOC
  621. QPrintU        quick print, upper case                          VIDEO.DOC
  622. QPrintVArray   quick print array of variable-length strings     VIDEO.DOC
  623. QPrintW        quick print with word wrap                       VIDEO.DOC
  624. QRead          quick read from screen or virtual screen         VIDEO.DOC
  625. QuadFitF4      use Least Squares to fit a curve to coordinates  SOLVE.DOC
  626. QuadFitF8      use Least Squares to fit a curve to coordinates  SOLVE.DOC
  627. QuadFitI2      use Least Squares to fit a curve to coordinates  SOLVE.DOC
  628. QuadFitI4      use Least Squares to fit a curve to coordinates  SOLVE.DOC
  629. Quadratic      calculates the solutions of a quadratic equation SOLVE.DOC
  630.  
  631. RAMsize        determines installed base RAM                   SYSTEM.DOC
  632. ReadSShort     read signed short integer from an array           DATA.DOC
  633. ReadUShort     read unsigned short integer from an array         DATA.DOC
  634. Real2CPX       form COMPLEX data from real & imaginary parts  COMPLEX.DOC
  635. ReColorScreen  quick selective color change, entire screen      VIDEO.DOC
  636. ReColorWindow  quick selective color change, part of screen     VIDEO.DOC
  637. Rename         renames a file, avoiding QB's ON ERROR            DISK.DOC
  638. ReplaceString  replace part of a string with another, any length DATA.DOC
  639. Restore256     restore saved 256-color palette               GRAPHICS.DOC
  640. Save256        saves palette registers for 256-color palette GRAPHICS.DOC
  641. Scramble       makes a string of text unreadable                 DATA.DOC
  642. ScreenDump     prints Hercules graphics screen               GRAPHICS.DOC
  643. ScreenRestore  restores a screen saved by ScreenSave            VIDEO.DOC
  644. ScreenRows     determines the dimensions of the screen          VIDEO.DOC
  645. ScreenSave     copies screen to restore later                   VIDEO.DOC
  646. ScreenMem      allocates memory required to store a screen      VIDEO.DOC
  647. ScreenMode     set text/graphics screen mode                 GRAPHICS.DOC
  648. Scroll         BIOS screen scroll                               VIDEO.DOC
  649. ScrollOFF      forces scroll lock off                          SYSTEM.DOC
  650. ScrollON       forces scroll lock on                           SYSTEM.DOC
  651. SetBLINK       disable/enable blinking attributes               VIDEO.DOC
  652. SetArray1      set initial value of short integer array          DATA.DOC
  653. SetArray1b     set initial value of short integer array          DATA.DOC
  654. SetArray2      set initial value of INTEGER array                DATA.DOC
  655. SetArray2b     set initial value of INTEGER array                DATA.DOC
  656. SetArray4      set initial value of LONG or SINGLE array         DATA.DOC
  657. SetArray4b     set initial value of LONG or SINGLE array         DATA.DOC
  658. SetArray8      set initial value of DOUBLE or CURRENCY array     DATA.DOC
  659. SetArray8b     set initial value of DOUBLE or CURRENCY array     DATA.DOC
  660. SetDRIVE       set default drive                                 DISK.DOC
  661. SetFileAttr    set file attributes                               DISK.DOC
  662. SetFileDate    set file date and time                            DISK.DOC
  663. SetGBlock      restores portion of graphics screen           GRAPHICS.DOC
  664. SetKBDToggle   set keyboard toggles                            SYSTEM.DOC
  665. SetPOS         position the cursor on the screen                VIDEO.DOC
  666. SetSpeed       sets CPU speed on multi-speed computers         SYSTEM.DOC
  667. SetSUB         changes default subdirectory                      DISK.DOC
  668. SetView        establish active graphics viewport            GRAPHICS.DOC
  669. ShiftCUR       shift the bits in an unsigned currency integer    DATA.DOC (a)
  670. ShiftINT       shift the bits in an unsigned integer             DATA.DOC
  671. ShiftINTArray  shift the bits in an unsigned integer array       DATA.DOC
  672. ShiftLNG       shift the bits in an unsigned long integer        DATA.DOC
  673. ShiftLNGArray  shift the bits in an unsigned long integer array  DATA.DOC
  674. ShowGPage      changes graph page visible on the screen      GRAPHICS.DOC
  675. ShowGraphPlane select visible color plane in 16-color graphs GRAPHICS.DOC
  676. ShowMouse      make mouse cursor visible                        INPUT.DOC
  677. ShowGMouse     make alternate graphics mouse visible            INPUT.DOC
  678. ShowTPage      switch visible screen page (text mode)           VIDEO.DOC
  679. SmallText      GPrint and GLineEdit option                   GRAPHICS.DOC
  680.  
  681. SNG2INT        copies the integer portion of a! to a%            DATA.DOC
  682. SNG2LNG        copies the integer portion of a! to a&            DATA.DOC
  683. SNG2STR        SINGLE-to-string conversion with formatting       DATA.DOC
  684. SnowOFF        disable CGA "snow" control                       VIDEO.DOC
  685. SnowON         enable CGA "snow" control (QLIB's default)       VIDEO.DOC
  686. SortDBLArrayHI sort double-precision array from high to low      DATA.DOC
  687. SortDBLArrayLO sort double-precision array from low to high      DATA.DOC
  688. SortINTArrayHI sort integer array from high to low               DATA.DOC
  689. SortINTArrayLO sort integer array from low to high               DATA.DOC
  690. SortLNGArrayHI sort long integer array from high to low          DATA.DOC
  691. SortLNGArrayLO sort long integer array from low to high          DATA.DOC
  692. SortSNGArrayHI sort single-precision array from high to low      DATA.DOC
  693. SortSNGArrayLO sort single-precision array from low to high      DATA.DOC
  694. SortVSTRArrayHI sort variable-length string array from hi to low DATA.DOC
  695. SortVSTRArrayLO sort variable-length string array from low to hi DATA.DOC
  696. SortVSTRArrayHI2 case-insensetive string array sort              DATA.DOC
  697. SortVSTRArrayLO2 case-insensetive string array sort              DATA.DOC
  698. SShiftCUR      shift bits in a signed currency integer           DATA.DOC (a)
  699. SShiftINT      shift bits in a signed integer                    DATA.DOC
  700. SShiftLNG      shift bits in a signed long integer               DATA.DOC
  701. SShiftINTArray shift bits in a signed integer array              DATA.DOC
  702. SShiftLNGArray shift bits in a signed long integer array         DATA.DOC
  703. StartEdit      option for LineEdit and GLineEdit                INPUT.DOC
  704. StdDevDBL      calculates standard deviation of a DOUBLE array  SOLVE.DOC
  705. StdDevINT      calculates standard deviation of an INT array    SOLVE.DOC
  706. StdDevLNG      calculates standard deviation of a LONG array    SOLVE.DOC
  707. StdDevSNG      calculates standard deviation of a SINGLE array  SOLVE.DOC
  708. StdText        restores normal text size on graphics screen  GRAPHICS.DOC
  709. STR2INT        converts numeric string to integer                DATA.DOC
  710. STR2LNG        converts numeric string to long integer           DATA.DOC
  711. strchr         search a string for a specified character         DATA.DOC
  712. STRError       error trap for string-to-integer conversions      DATA.DOC
  713. StripChar      removes specified characters from a string        DATA.DOC
  714. SumDBLArray    calculates the total of a double-precision array  DATA.DOC
  715. SumINTArray    calculates the total of an integer array          DATA.DOC
  716. SumLNGArray    calculates the total of a long integer array      DATA.DOC
  717. SumSNGArray    calculates the total of a single-precision array  DATA.DOC
  718. SumDBLb        calculates the total of a double-precision array  DATA.DOC
  719. SumINTb        calculates the total of an integer array          DATA.DOC
  720. SumLNGb        calculates the total of a long integer array      DATA.DOC
  721. SumSNGb        calculates the total of a single-precision array  DATA.DOC
  722. SVGA16         set SuperVGA 16-color modes                   GRAPHICS.DOC
  723. SVGA256        set SuperVGA 256-color modes                  GRAPHICS.DOC
  724. TCopy          copies one screen page to another (text or Herc) VIDEO.DOC
  725. TLoad          loads a disk file into video memory              VIDEO.DOC
  726. TMouseStatus   get mouse character position & buttons pressed   INPUT.DOC
  727. TPage          combines UseTPage and ShowTPage subroutines      VIDEO.DOC
  728. TrimRight      used to trim blanks off the end of a string       DATA.DOC
  729. TSave          saves a text-mode screen as a disk file          VIDEO.DOC
  730. Today          returns today's date                              DATA.DOC
  731.  
  732. UCursorON      places underscore cursor on text screen          VIDEO.DOC
  733. UnScramble     restores a string scrambled by Scramble           DATA.DOC
  734. UPcase         converts text to upper case                       DATA.DOC
  735. Use32k         Hercules memory management                    GRAPHICS.DOC
  736. Use64k         Hercules memory management                    GRAPHICS.DOC
  737. UseDefault     causes QLIB to use system graphics mode       GRAPHICS.DOC
  738. UseFont        font definitions for QLIB graphics text       GRAPHICS.DOC
  739. UseGPage       change active graphics page                   GRAPHICS.DOC
  740. UseHerc        causes QLIB to use Hercules graphics          GRAPHICS.DOC
  741. UseTPage       set active page in text mode                     VIDEO.DOC
  742. VGA13X         extended 256-color modes for standard VGA     GRAPHICS.DOC
  743. VertList       vertical list menu system                        INPUT.DOC
  744. VScroll        quick vertical scroll of screen                  VIDEO.DOC
  745. WhichVGA       finds VGAKIT-compatible equipment             GRAPHICS.DOC
  746. WindowClear    quick clear portion of screen                    VIDEO.DOC
  747. WindowEdit     edit a string in a window on the screen          INPUT.DOC
  748. WindowFill     quickly fill a portion of a text-mode screen     VIDEO.DOC
  749. WindowFrame    quick window outline draw                        VIDEO.DOC
  750. WindowRestore  restores portion of screen saved by WindowSave   VIDEO.DOC
  751. WindowSave     copies a portion of screen to restore later      VIDEO.DOC
  752. WindowMem      allocates memory needed to store screen          VIDEO.DOC
  753. WLastEdit      WindowEdit option                                INPUT.DOC
  754. WriteShort     write a short integer to an array                 DATA.DOC
  755. WStartEdit     WindowEdit option                                INPUT.DOC
  756. XMGet          copies data from extended memory to DOS memory  EMSXMS.DOC
  757. XMode16        Super EGA/VGA 16-color graphics               GRAPHICS.DOC
  758. XMode16A       Super EGA/VGA 16-color graphics               GRAPHICS.DOC
  759. XMPut          copies data to extended memory from DOS memory  EMSXMS.DOC
  760. XMSContig      determines largest contiguous XMS block         EMSXMS.DOC
  761. XMSError       returns error code for QLIB XMS subroutines     EMSXMS.DOC
  762. XMSFree        determines maximum XMS memory available         EMSXMS.DOC
  763. YesNo          waits for "Y" or "N" key to be pressed           INPUT.DOC
  764.  
  765. (a) these subroutines work with BC7/QBX and VBDOS only
  766.  
  767. (b) these subroutines work only with QuickBASIC or BC7 without /FS option
  768.  
  769.  
  770.  
  771. Several QLIB users have requested a cross-reference listing of QLIB
  772. object files in order to extract individual subroutines from the QLIB.LIB
  773. library file.  I have begun to provide this information in the documentation
  774. for each subroutine.  Since many QLIB subroutines call subroutines in
  775. other QLIB object modules, a cross reference list can become quite messy.
  776.  
  777. The subroutine documentation may include lines like this:
  778.  
  779.      Subroutine: QPrint(a$, row%, col%, attr%)
  780.      Object files: qprint.obj (crt.obj, q$qprn.obj)
  781.  
  782. In this case, QPRINT's primary subroutine is in qprint.obj, and
  783. qprint.obj calls subroutines in crt.obj and in q$qprn.obj.  All three
  784. object files must be extracted from QLIB.LIB if you want to extract
  785. QPRINT from the library.
  786.  
  787. Use the LIB utility supplied by Microsoft with your compiler to extract
  788. the object files:
  789.  
  790. LIB QLIB *qprint*crt*q$qprn;<enter>
  791.  
  792. This command will copy the object files from the library to your disk.
  793.