home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / basic / library / qb_pds / qlib54 / intro.doc < prev    next >
Encoding:
Text File  |  1992-04-25  |  42.8 KB  |  718 lines

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