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