home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / assemblr / library / asmlib / asmlib.doc < prev    next >
Text File  |  1994-05-27  |  43KB  |  686 lines

  1.                    ASMLIB 3.8 Programmer's Toolkit
  2.             tools for 16-bit assembly-language programming
  3.      Copyright (C) 1991 - 1994 Douglas Herr - All rights reserved
  4.  
  5.  
  6. What is ASMLIB?
  7.  
  8. ASMLIB is a library of assembly-language subroutines, linkable with
  9. your .OBJ code.  ASMLIB provides many tools to the assembly-language
  10. programmer which eliminate much of the tedious and repetetive coding
  11. that assembly-language programming is infamous for.
  12.  
  13. DISTRIBUTION AND REGISTRATION
  14.  
  15. ASMLIB is user-supported software, NOT public domain software.
  16. Possession of the ASMLIB files entitles you to evaluate this product.
  17. If, after evaluation, you choose to use ASMLIB subroutines in your
  18. programs, you are expected to register with the library's author.
  19. By registering, you will be entitled to use the latest version of ASMLIB,
  20. you will be entitled to low-cost upgrades, you will have confidence that
  21. the version of ASMLIB you are using has not been altered by others, and
  22. you will be supporting my programming efforts.
  23.  
  24. Two levels of registration are available: For $25, you will recieve  the
  25. most recent ASMLIB (tiny, small, medium and huge models, for all PCs and
  26. for 286 or better PCs); for $50 you will receive full source code to the
  27. ASMLIB subroutines along with the assembled libraries.  If you first
  28. register at the $25 level, you may register for ASMLIB source code at any
  29. time for $25.  Upgrades for either level of registration are $10.
  30.  
  31. Register by sending the registration fee to:
  32.  
  33.    Douglas Herr
  34.    P. O. Box 207
  35.    Sacramento, CA  95812
  36.    U.S.A.
  37.  
  38.    Telephone (916) 721-8762
  39.    CompuServe 71247,3542
  40.  
  41. Please specify either 5 1/4 or 3 1/2 inch disks.  Bug reports (if any)
  42. should be sent to the same address.  If you wish to contact me by
  43. telephone, please call after 8:00 PM Pacific time so I can get my kids
  44. in bed.
  45.  
  46. Registration is a LICENSE fee, not a purchase of ASMLIB.  Registered users
  47. may use ASMLIB or modified subroutines based on ASMLIB source code in their
  48. own programs.  Registered users may distribute programs using ASMLIB
  49. subroutines without royalty payments.
  50.  
  51. ASMLIB object files, ASMLIB source code (unmodified or modified) and the
  52. ASMLIB library and documentation remain the property of Douglas Herr.
  53. ASMLIB source code, modified or unmodified, may not be re-distributed.
  54.  
  55. The ASMLIB3 shareware package includes these files:
  56.  
  57. ASMLIB.LIB      the ASMLIB medium model library
  58. ASMLIB.DOC      this introductory file
  59. DATA.DOC        documentation for string and integer data manipulation
  60. DISK.DOC        documentation for disk & file subroutines
  61. EMSXMS.DOC      documentation for EMS and XMS subroutines
  62. FLOAT.DOC       documentation for floating-point subroutines
  63. GRAPHICS.DOC    documentation for ASMLIB graphics
  64. INPUT.DOC       documentation for keyboard input subroutines
  65. MODE.DOC        ASMLIB screen mode subroutines
  66. MULTIWIN.DOC    documentation for text-mode multi-window subroutines
  67. SOLVE.DOC       documentation for ASMLIB mathematical solutions
  68. SYSTEM.DOC      documentation for subroutines which determine PC status
  69. TEXT.DOC        documentation for text-mode video subroutines
  70. STARTUP.ASM     sample startup code
  71. ASM.INC         medium model INCLUDE file for STARTUP.ASM
  72. E16.COM         handy text editor developed with ASMTINY.LIB
  73. E16.DOC         E16.COM documentation
  74.  
  75. These files may be copied and distributed freely provided that all the
  76. above files are distributed together in unmodified or archived form
  77. and provided that distribution charges are less than $10.
  78.  
  79.  
  80. LIMITED LIABILITY
  81.  
  82. Since I am unable to supervise all uses of ASMLIB, I cannot be held
  83. responsible for any damages, either direct or incidental, resulting
  84. from the use or abuse of ASMLIB.  I have used ASMLIB subroutines on
  85. a wide variety of equipment and have found the library to be highly
  86. compatible with common PC equipment, but you must use this library at
  87. your own risk.  Try it before you buy it.
  88.  
  89.  
  90. COMPATIBILITY
  91.  
  92. ASMLIB subroutines are intended for IBM PC, XT, AT, PS/2, and compatible
  93. equipment in real mode with PC-DOS or MS-DOS operating systems.  I cannot
  94. provide support for use of ASMLIB on other equipment or with other operating
  95. systems.
  96.  
  97.  
  98. ABBREVIATIONS for video boards
  99.  
  100. MDA   IBM-standard Monochrome Display Adapter
  101. CGA   IBM-standard Color Graphics Adapter (ugh!)
  102. MCGA  IBM-standard Multi-color Graphics Array
  103. EGA   IBM-standard Enhanced Graphics Adapter
  104. VGA   IBM-standard Video Graphics Array
  105. SVGA  VGA equipment with additional capabilities
  106. ATT   ATT 6300 and compatible Olivetti
  107. HGC   Hercules Graphics Card and compatibles
  108. HGC+  Hercules Graphics Card Plus
  109. InC   Hercules InColor Card
  110.  
  111. OTHER ABBREVIATIONS
  112.  
  113. CF = Carry Flag
  114. DF = Direction flag
  115. SF = Sign Flag
  116. ZF = Zero Flag
  117.  
  118.  
  119. ASSUMPTIONS
  120.  
  121. Unless otherwise stated, ASMLIB subroutines assume that:
  122.  
  123. 1) All strings are terminated with a NUL character.
  124.  
  125. 2) Subroutines with names including '$' trash registers, and are
  126.    intended primarily for ASMLIB's internal use.  All '$' subroutines
  127.    require a near call.  Documentation for '$' subroutines is in
  128.    SOURCE.DOC, provided to registered ASMLIB programmers.
  129.  
  130. 3) ASMLIB and 286LIB subroutines without '$' in the name require a far
  131.    call, and are compatible with object files assembled with the
  132.  
  133.    .model medium
  134.  
  135.    directive.  Subroutines in ASMSMALL.LIB and 286SMALL.LIB, provided upon
  136.    registration, require a near call, and are compatible with object code
  137.    assembled with the
  138.  
  139.    .model small
  140.  
  141.    directive.  Subroutines in ASMTINY.LIB and 286TINY.LIB, provided to
  142.    registered programmers, also require near calls and are intended for
  143.    development of .COM format programs.  ASMTINY is compatible with object
  144.    code assembled with the TASM
  145.  
  146.    .model tiny
  147.  
  148.    directive.  MASM users may use the TINY.INC include file to achieve the
  149.    same results.  Subroutines in ASMHUGE.LIB and 286HUGE.LIB, also provided
  150.    upon registration, includes support for data blocks > 64k.  Support
  151.    for huge data is indicated in the description of each subroutine.
  152.  
  153.    Aside from the MODEL.INC include file and parameters as required for
  154.    HUGE model programming, ASMLIB source code does not need any alteration
  155.    when changing memory models.  All ASMLIB source code is compatible with
  156.    MASM 5.0, MASM 5.1 and TASM 2.01.
  157.  
  158. 4) ASMLIB data types are:
  159.  
  160.    chr   1 byte
  161.    str   character string, normally terminated with ASCII 0 (NUL)
  162.    I2    2-byte signed integer
  163.    U2    2-byte unsigned integer
  164.    I4    4-byte signed integer
  165.    U4    4-byte unsigned integer
  166.    F4    4-byte floating point value, IEEE format
  167.    F8    8-byte floating point value, IEEE format
  168.  
  169. 5) ASMLIB GRAPHICS subroutines assume DS:@DATA
  170.  
  171. HOW DO I USE ALL THIS NEAT STUFF?
  172.  
  173. Any program that calls an ASMLIB subroutine must declare the subroutine as
  174. an external procedure, like this:
  175.  
  176. extrn  gedit:proc        ; tell assembler to assume that GEDIT is an external
  177.                          ; procedure to be linked later
  178.  
  179.  
  180. I also find it handy to make LINK search through ASMLIB for object code,
  181. rather than specifying ASMLIB on the command line.  Do this with the
  182. command
  183.  
  184. includelib asmlib.lib    ; automatic search through ASMLIB for externals
  185.  
  186. in your calling program.  See STARTUP.ASM.  (This may not work with some
  187. versions of TLINK.  You will need to specify ASMLIB on the command line
  188. or in TLINK's response file.)
  189.  
  190.  
  191. CALLING ASMLIB FROM C PROGRAMS
  192.  
  193. It's easy to call ASMLIB subroutines from C if you follow these simple
  194. rules (Turbo C examples):
  195.  
  196. 1)  Tell your C program that the ASMLIB subroutine is a PASCAL function
  197.     This makes the C compiler convert the subroutine name to upper case
  198.     and supresses the _leading _underscore in the subroutine name.
  199.  
  200.     Example:
  201.     extern  void pascal tprint();
  202.  
  203.  
  204. 2)  In case of naming conflicts (such as strlen), declare the ASMLIB
  205.     subroutine in upper case and use upper case in the C code.
  206.  
  207.     Example:
  208.     extern  void pascal STRLEN();
  209.     .
  210.     .
  211.     .
  212.     _BX = msg;              /* pointer to ASCIIZ string */
  213.     STRLEN();               /* ASMLIB subroutine  */
  214.     string_length = _CX;
  215.  
  216.  
  217. 3)  Load the 80x86 registers before calling the ASMLIB subroutine.
  218.  
  219.     Example:
  220.     _DX = 0;               /* upper left corner of screen */
  221.     _AH = 15;              /* bright white */
  222.     _SI = msg;             /* pointer to ASCIIZ string */
  223.     tprint();
  224.  
  225.  
  226. 4)  ASMLIB subroutines using the 8087 will use Turbo C's
  227.     emulation library if re-assembled with the /E option.
  228.  
  229.  
  230. 5)  values in registers returned by ASMLIB subroutines should be used
  231.     or saved immediately; C code executed after calling an ASMLIB
  232.     subroutine may change any of the registers
  233.  
  234.  
  235. 6)  When compiling from within the Turbo C editor, include ASMLIB.LIB
  236.     in your .PRJ file (ASMSMALL.LIB for small model, ASMHUGE.LIB for
  237.     huge model).
  238.  
  239.  
  240. DOCUMENTATION
  241.  
  242. There's alot of stuff in ASMLIB, so I've tried to keep the documentation
  243. succinct.  Here's a general guide to ASMLIB's documentation:
  244.  
  245.  
  246.  
  247. SUBROUTINE:  a brief description
  248. Source:      the source code file (and other subroutines used)
  249.  
  250. Call with:   this tells you what data the subroutine expects
  251.              additional information may be found here
  252. Returns:     tells you what registers and/or flags contain useful info
  253.              Additional lines may include more specific information about
  254.              the register values returned.
  255. Uses:        registers and flags which may be changed
  256. Supports:    particular equipment or operating modes; this will not apply to
  257.              all subroutines.
  258. Example:     an example of how parameters are passed to the subroutine
  259.              and a typical use of the subroutine.
  260.  
  261.  
  262.  
  263. Documentation for ASMLIB subroutines is in the following files:
  264.  
  265. Subroutine      description                                           .DOC file
  266.  
  267. A$EDIT          editor module used by TEdit and GEdit                 INPUT.DOC
  268. ABSF4           get absolute value of 4-byte real number              FLOAT.DOC
  269. ABSF8           get absolute value of 8-byte real number              FLOAT.DOC
  270. ADDF4           adds two float4 values without 80x87                  FLOAT.DOC
  271. ADDF8           adds two float8 values without 80x87                  FLOAT.DOC
  272. ALLOCDOS        allocate memory from DOS memory                      SYSTEM.DOC
  273. ALLOCEMS        allocate memory from Expanded Memory                 EMSXMS.DOC
  274. ALLOCVMS        allocate Virtual Memory space                        EMSXMS.DOC
  275. ALLOCXMS        allocate memory from XMS Extended Memory             EMSXMS.DOC
  276. ANSICOLOR       returns color attribute used by ANSI device driver     TEXT.DOC
  277. BEZIER          draw a bezier curve on the screen                  GRAPHICS.DOC
  278. BITBLOCKBYTES   calculate bytes required to save a bit block       GRAPHICS.DOC
  279. BITPLANEBYTES   calculate bytes to save a plane of bit block       GRAPHICS.DOC
  280. BLINKOFF        turn blink attributes off                              TEXT.DOC
  281. BLINKON         turn blink attributes on                               TEXT.DOC
  282. BREAKTRAP       initialize Ctrl+Break trap                           SYSTEM.DOC
  283. BREAKRELEASE    de-activate Ctrl+Break trap                          SYSTEM.DOC
  284. BREAKFLAG       public byte flagging a Ctrl+Break keypress           SYSTEM.DOC
  285. BUFFERDIM       change logical graphics buffer dimensions          GRAPHICS.DOC
  286. C2F             convert degrees Celcius to degrees Fahrenheit         SOLVE.DOC
  287. CHRDEL          delete a character from an ASCIIZ string               DATA.DOC
  288. CHRNDEL         delete a character from an n-length string             DATA.DOC
  289. CIRCLEASPECT    modifies aspect ratio of circle                    GRAPHICS.DOC
  290. CLEARKEY        clears the keyboard's 'type-ahead' buffer             INPUT.DOC
  291. CMPF4           compare two float4 values                             FLOAT.DOC
  292. CMPF8           compare two float8 values                             FLOAT.DOC
  293. COLOR16         calculate color value for 16-color palette           SYSTEM.DOC
  294. COLORATTR       calculates a color attribute byte                      DATA.DOC
  295. CRTINFO         returns video buffer, screen size, etc.                TEXT.DOC
  296. CSET            centers a string in a fixed field                      DATA.DOC
  297. CUBEFITF4       fit a cubic equation to a float4 point series         SOLVE.DOC
  298. CUBEFITF8       fit a cubic equation to a float8 point series         SOLVE.DOC
  299. CUBEFITI2       fit a cubic equation to an integer2 point series      SOLVE.DOC
  300. CUBEFITI4       fit a cubic equation to an integer4 point series      SOLVE.DOC
  301. CURSORCOLOR     enable InColor palette, set cursor color               TEXT.DOC
  302. CURSOROFF       make hardware cursor invisible at present location     TEXT.DOC
  303. CURSORON        move cursor to (row, col) and update cursor shape      TEXT.DOC
  304. DAYNAME         returns ASCII string for day number                    DATA.DOC
  305. DEFGMODE        ASMLIB uses system graphics mode (default)         GRAPHICS.DOC
  306. DEG2RAD         convert degrees of arc to radians                     SOLVE.DOC
  307. DISKFREE        determines free disk space                             DISK.DOC
  308. DISKWP          determines if a floppy disk is writable                DISK.DOC
  309. DIVI2           divide one I2 number by another, returns f4 quotient  FLOAT.DOC
  310. DOSFREE         determine available DOS memory                       SYSTEM.DOC
  311. DOTBAK          changes a file to a .BAK file                          DISK.DOC
  312. DRAWCIRCLE      draw a circle                                      GRAPHICS.DOC
  313. DRAWBOX         draw a rectangle on a graphics screen              GRAPHICS.DOC
  314. DRAWLINE        draw a line on a graphics screen                   GRAPHICS.DOC
  315. DRAWMODE        public byte modifying ASMLIB graphics drawing mode GRAPHICS.DOC
  316.  
  317. EMGET           copy data from Expanded Memory to system RAM         EMSXMS.DOC
  318. EMMOVE          move data within an EMS memory block                 EMSXMS.DOC
  319. EMPUT           copy data from system RAM to Expanded Memory         EMSXMS.DOC
  320. EMSFREE         determine available EMS memory                       EMSXMS.DOC
  321. EMSTOTAL        determine total EMS memory installed                 EMSXMS.DOC
  322. EMISTR          search EMS memory for string, case-insensitive       EMSXMS.DOC
  323. EMSTR           search EMS memory for string, case-sensitive         EMSXMS.DOC
  324. ENDPROG         determine size of program                            SYSTEM.DOC
  325. EXENAME         determine full path and name of executing program    SYSTEM.DOC
  326. EXESIZE         get size of .EXE program loaded by DOS               SYSTEM.DOC
  327. F2C             convert degrees Fahrenheit to degrees Celcius         SOLVE.DOC
  328. F4TOF8          converts float4 value to float8 format                FLOAT.DOC
  329. F4TOI2          converts float4 value to an integer                   FLOAT.DOC
  330. F4TOI4          converts float4 value to a long integer               FLOAT.DOC
  331. F8TOF4          converts float8 value to float4 format                FLOAT.DOC
  332. FACTORIAL       calculate the factorial of an integer                 SOLVE.DOC
  333. FARALLOC        allocates memory from a far heap                     SYSTEM.DOC
  334. FARFREE         releases memory allocated by FARALLOC                SYSTEM.DOC
  335. FARINIT         initializes a far heap                               SYSTEM.DOC
  336. FARREALLOC      re-sizes a memory block in a far heap                SYSTEM.DOC
  337. FCLOSE          close a file managed by ASMLIB buffered I/O system     DISK.DOC
  338. FCOPY           copies one file to another                             DISK.DOC
  339. FCOUNT          counts the number of files matching filespec mask      DISK.DOC
  340. FCREATE         create new file and initialize I/O buffer              DISK.DOC
  341. FEXIST          determines if a file exists                            DISK.DOC
  342. FFLUSH          flushes the DOS file output buffer for specifed handle DISK.DOC
  343. FGET            read specified number of bytes from a file buffer      DISK.DOC
  344. FGETCHR         read a character from a file buffer                    DISK.DOC
  345. FGETSTR         read an ASCII string from a file buffer                DISK.DOC
  346. FILELIST        creates a list of filenames matching filespec mask     DISK.DOC
  347. FILL4, FILL4B   fill a buffer with 4-byte data                         DATA.DOC
  348. FILL8, FILL8B   fill a buffer with 8-byte data                         DATA.DOC
  349. FILLAREA        fills an irregular area on a graphics screen       GRAPHICS.DOC
  350. FILLBOX         draw a filled rectangle on a graphics screen       GRAPHICS.DOC
  351. FILLPATTERN     define an optional pattern for FillArea & FillBox  GRAPHICS.DOC
  352. FINDDATE        returns date of file found with FindFirst/FindNext     DISK.DOC 
  353. FINDFIRST       find first file matching filespec mask                 DISK.DOC
  354. FINDMONO        determine if monochrome monitor is installed         SYSTEM.DOC
  355. FINDNEXT        find next file matching filespec mask                  DISK.DOC
  356. FINDTIME        returns time of file found with FindFirst/FindNext     DISK.DOC
  357. FLOAD           quickly loads a disk file into far memory              DISK.DOC
  358. FLOADEMS        reads disk file & copies to EMS memory               EMSXMS.DOC
  359. FLOADVMS        reads disk file & copies to VMS memory               EMSXMS.DOC
  360. FLOADXMS        reads disk file & copies to XMS memory               EMSXMS.DOC
  361. FLOPPIES        determines the number of floppy drives installed     SYSTEM.DOC
  362. FLOPPYTYPE      determines the type of floppy drive installed        SYSTEM.DOC
  363. FOPEN           open a file and initilaize buffered I/O                DISK.DOC
  364. FORCEGMODE      force ASMLIB to use a graph mode                   GRAPHICS.DOC
  365. FPRIMEI2        calculates the derivative of a polynomial function    SOLVE.DOC
  366. FPRIMEF4        calculates the derivative of a polynomial function    SOLVE.DOC
  367. FPUT            write specified data to output file buffer             DISK.DOC
  368. FPUTCHR         writes a character to output file buffer               DISK.DOC
  369. FPUTCRLF        writes a CR+LF pair to output file buffer              DISK.DOC
  370. FPUTSTR         writes a string to output file buffer                  DISK.DOC
  371.  
  372. FREEEMS         release Expanded Memory handle                       EMSXMS.DOC
  373. FREEVMS         release VMS handle                                   EMSXMS.DOC
  374. FREEXMS         release XMS Extended Memory handle                   EMSXMS.DOC
  375. FSAVEEMS        copy an EMS memory block to disk file                EMSXMS.DOC
  376. FSAVEVMS        copy VMS memory block to disk file                   EMSXMS.DOC
  377. FSAVEXMS        copy an XMS memory block to disk file                EMSXMS.DOC
  378. FSEEK           move file pointer for file opened by FOPEN             DISK.DOC
  379. FSIZE           determines the size of an open file                    DISK.DOC
  380. FSTRISTR        searches for a string in a disk file (case-insensetive)DATA.DOC
  381. FSTRSTR         searches for a string in a disk file (case-sensetive)  DATA.DOC
  382. FVALUE          calculate future value of an even cash flow           SOLVE.DOC
  383. GBASESEG        change ASMLIB graphics default base segment        GRAPHICS.DOC
  384. GCENTER         centers a string on a graphics screen              GRAPHICS.DOC
  385. GCLEAR          clears the active portion of a graphics screen     GRAPHICS.DOC
  386. GCOLOR          establish color used by ASMLIB graphics            GRAPHICS.DOC
  387. GCOPY           copies one page of graphics memory to another      GRAPHICS.DOC
  388. GCURSOR         simulate text-mode cursor on graphics screen       GRAPHICS.DOC
  389. GEDIT           string editor for graphics modes                      INPUT.DOC
  390. GETBITBLOCK     saves a portion of a graphics screen in memory     GRAPHICS.DOC
  391. GETBITPLANE     saves one plane of a bit block in memory           GRAPHICS.DOC
  392. GETCMD          isolates multiple command line parameters              DATA.DOC
  393. GETCPU          determines the computer's CPU chip                   SYSTEM.DOC
  394. GETCRT          determine active monitor                             SYSTEM.DOC
  395. GETDOT          determine pixel value on graphics screen           GRAPHICS.DOC
  396. GETKEY          returns next key pressed                              INPUT.DOC
  397. GETSCREEN       save screen image in memory to restore later           TEXT.DOC
  398. GETVIEW         returns a pointer to graphics view area data       GRAPHICS.DOC
  399. GLOAD           loads a graphics screen saved by GSave             GRAPHICS.DOC
  400. GLOADEMS        loads a graphics screen from EMS memory            GRAPHICS.DOC
  401. GLOADXMS        loads a graphics screen from XMS memory            GRAPHICS.DOC
  402. GOODDRIVE       determines if a drive is valid                         DISK.DOC
  403. GPAGE           changes active and displayed graphics page         GRAPHICS.DOC
  404. GPICKF          select a filename from a list (graphics mode)         INPUT.DOC
  405. GPICKSTR        select a string from a list (graphics mode)           INPUT.DOC
  406. GPRINT          prints ASCIIZ string on a graphics screen          GRAPHICS.DOC
  407. GPRINTDOWN      prints ASCIIZ string vertically on graph screen    GRAPHICS.DOC
  408. GPRINTDOWNX     print string vertically on graph screen, 2x width  GRAPHICS.DOC
  409. GPRINTDOWN2X    print string vertically on graph screen, 2x size   GRAPHICS.DOC
  410. GPRINTUP        prints ASCIIZ string vertically on graph screen    GRAPHICS.DOC
  411. GPRINTUPX       print string vertically on graph screen, 2x width  GRAPHICS.DOC
  412. GPRINTUP2X      print string vertically on graph screen, 2x sixe   GRAPHICS.DOC
  413. GPRINTX         print string on a graphics screen, double width    GRAPHICS.DOC
  414. GPRINT2X        print string on a graphics screen, double size     GRAPHICS.DOC
  415. GPUTCHR         print character on graphics screen                 GRAPHICS.DOC
  416. GSAVE           saves a graphics screen as a disk file             GRAPHICS.DOC
  417. GSAVEEMS        saves a graphics screen in EMS memory              GRAPHICS.DOC
  418. GSAVEXMS        saves a graphics screen in XMS memory              GRAPHICS.DOC
  419. GUCURSOR        simulate underscore cursor on graphics screen      GRAPHICS.DOC
  420. HALLOC          allocates memory from near heap                      SYSTEM.DOC
  421. HFREE           releases memory allocated by HALLOC                  SYSTEM.DOC
  422. HGRAPH          establish Hercules graphics mode using two pages       MODE.DOC
  423. HGRAPH0         establish Hercules graphics mode using one page        MODE.DOC
  424. HIDEMOUSE       make mouse cursor disappear                           INPUT.DOC
  425. HINIT           initializes near heap                                SYSTEM.DOC
  426. HMAX            determines maximum block size available in near heap SYSTEM.DOC
  427.  
  428. HRAM8029        establish 80-column, 29-row RamFont mode               MODE.DOC
  429. HRAM8043        establish 80-column, 43-row RamFont mode               MODE.DOC
  430. HRAM9025        establish 90-column, 25-row RamFont mode               MODE.DOC
  431. HRAM9029        establish 90-column, 29-row RamFont mode               MODE.DOC
  432. HRAM9043        establish 90-column, 43-row RamFont mode               MODE.DOC
  433. HREALLOC        re-sizes a memory block in the near heap             SYSTEM.DOC
  434. HSCROLL         scrolls a portion of the screen left or right          TEXT.DOC
  435. HTEXT           establish Hercules text mode                           MODE.DOC
  436. I2TOF4          convert a 2-byte integer to float4 format             FLOAT.DOC
  437. I2TOSTR         convert a 2-byte integer to an ASCIIZ string           DATA.DOC
  438. I4TOF4          convert a 4-byte integer to float4 format             FLOAT.DOC
  439. I4TOSTR         convert a 4-byte integer to an ASCIIZ string           DATA.DOC
  440. ISALPHA         determines if a keycode returned by GetKey is A - z   INPUT.DOC
  441. ISANSI          determines if ANSI is loaded and active              SYSTEM.DOC
  442. ISATT           determines if ATT 6300 display card is installed     SYSTEM.DOC
  443. ISDIGIT         determines if a keycode returned by GetKey is 0 - 9   INPUT.DOC
  444. ISEMS           determines if an EMS driver is loaded                EMSXMS.DOC
  445. ISEVGA          determines if an EGA or VGA is installed             SYSTEM.DOC
  446. ISHERC          determine if a Hercules card is installed            SYSTEM.DOC
  447. ISLOWER         determines if a keycode returned by GetKey is a - z   INPUT.DOC
  448. ISMOUSE         determines if a mouse is installed                   SYSTEM.DOC
  449. ISSEVGA         determines if a Super EGA or Super VGA is installed  SYSTEM.DOC
  450. ISUPPER         determines if a keycode returned by GetKey is A - Z   INPUT.DOC
  451. ISVM86          detects Virtual 86 mode of 32-bit processor          SYSTEM.DOC
  452. ISXMS           determines if an XMS driver is loaded                EMSXMS.DOC
  453. INVF4           calculate the inverse of a float4 value               FLOAT.DOC
  454. JANEIN          German language version of YesNo                      INPUT.DOC
  455. KEYIFWAITING    returns first key if one waiting in keyboard buffer   INPUT.DOC
  456. KEYORBUTTON     returns either keypress or mouse button press         INPUT.DOC
  457. KEYWAITING      determines if a key is waiting in keyboard buffer     INPUT.DOC
  458. LINEFITF4       fit a line equation to point series                   SOLVE.DOC
  459. LINEFITF8       fit a line equation to point series                   SOLVE.DOC
  460. LINEFITI2       fit a line equation to point series                   SOLVE.DOC
  461. LINEFITI4       fit a line equation to point series                   SOLVE.DOC
  462. LINEPATTERN     defines an optional pattern to use with DrawLine   GRAPHICS.DOC
  463. LOADPCX         reads & decodes .PCX-format file                   GRAPHICS.DOC
  464. LOWDS2HI        convert segment:offset address to lowest offset        DATA.DOC
  465. LOWES2HI        convert segment:offset address to lowest offset        DATA.DOC
  466. LSET            left-justifies a string in a field                     DATA.DOC
  467. LTRIM           removes leading blanks from an ASCIIZ string           DATA.DOC
  468. MATHCHIP        determine if 80x87 math coprocessor is installed     SYSTEM.DOC
  469. MAXF4, MAXF4B   determine maximum value in a real number array        FLOAT.DOC
  470. MAXF8, MAXF8B   determine maximum value in a real number array        FLOAT.DOC
  471. MAXI2, MAXI2B   determine maximum value in integer array               DATA.DOC
  472. MAXI4, MAXI4B   determine maximum value in long integer array          DATA.DOC
  473. MAXU2, MAXU2B   DETERMINE maximum value in unsigned integer array      DATA.DOC
  474. MAXU4, MAXU4B   determine maximum value in unsigned long integer array DATA.DOC
  475. MENUOPTION      define options for PullDown menu system               INPUT.DOC
  476.  
  477. MINF4, MINF4B   determine minimum value in a real number array        FLOAT.DOC
  478. MINF8, MINF8B   determine minimum value in a real number array        FLOAT.DOC
  479. MINI2, MINI2B   determine minimum value in integer array               DATA.DOC
  480. MINI4, MINI4B   determine minimum value in long integer array          DATA.DOC
  481. MINU2, MINU2B   determine minimum value in unsigned integer array      DATA.DOC
  482. MINU4, MINU4B   determine minimum value in unsigned long integer array DATA.DOC
  483. MODECOLOR       switch system to color monitor or color text mode      MODE.DOC
  484. MODEMONO        switch system to monochrome monitor or mono text mode  MODE.DOC
  485. MODE43          switch EGA to 80x43 text mode or VGA to 80x50 text     MODE.DOC
  486. MONTHNAME       returns ASCII string for month given month number      DATA.DOC
  487. MOUSEINIT       determines if a mouse is installed                   SYSTEM.DOC
  488. MOUSELIMIT      limit mouse's range on screen                         INPUT.DOC
  489. MOUSEPOS        position mouse on the screen                          INPUT.DOC
  490. MOUSESTATUS     determine mouse location & buttons pressed            INPUT.DOC
  491. MOUSETYPE       determine mouse type                                 SYSTEM.DOC
  492. MRESTORE        restore previously saved mouse state                 SYSTEM.DOC
  493. MSAVE           save mouse state                                     SYSTEM.DOC
  494. MULF4           multiplies two float4 values without 80x87            FLOAT.DOC
  495. MULF4TEN        multiplies a float4 value by 10.0 without 80x87       FLOAT.DOC
  496. MULF8           multiplies two float8 values without 80x87            FLOAT.DOC
  497. MULF8TEN        multiplies a float8 value by 10.0 without 80x87       FLOAT.DOC
  498. MWBORDER        draw border around window opened by MWOPEN         MULTIWIN.DOC
  499. MWCENTER        center a string in a window opened by MWOPEN       MULTIWIN.DOC
  500. MWCLEAR         clear a window opened by MWOPEN                    MULTIWIN.DOC
  501. MWCLOSE         close window opened with MWOPEN and release buffer MULTIWIN.DOC
  502. MWCLOSEALL      close all open windows and release window buffers  MULTIWIN.DOC
  503. MWDEFAULT       change MWOPEN default window status                MULTIWIN.DOC
  504. MWDISPLAY       display all unhidden windows in multiwindow system MULTIWIN.DOC
  505. MWHIDE          hide window in multiwindow display system          MULTIWIN.DOC
  506. MWHIDEALL       hide all windows in multiwindow display system     MULTIWIN.DOC
  507. MWINIT          initialize multi-window base screen                MULTIWIN.DOC
  508. MWNOBORDER      set "no border" bit in window status byte          MULTIWIN.DOC
  509. MWNOSHADOW      disable "shadow" effect for selected window        MULTIWIN.DOC
  510. MWOPEN          open a window in multi-window system               MULTIWIN.DOC
  511. MWPRINT         print string in window opened by MWOPEN            MULTIWIN.DOC
  512. MWPRINTCE       print string in window and clear to edge of window MULTIWIN.DOC
  513. MWSELECT        determine window visible at screen coordinates     MULTIWIN.DOC
  514. MWSHADOW        enable "shadow" effect for selected window         MULTIWIN.DOC
  515. MWTITLE         center a string at the top of a window             MULTIWIN.DOC
  516. MWTOP           move selected window to top of overlapping windows MULTIWIN.DOC
  517. MWUNHIDE        unhide window in multiwindow display system        MULTIWIN.DOC
  518. MWUNHIDEALL     unhide all windows in multiwindow display system   MULTIWIN.DOC
  519. NFORMAT         formats a numeric string                               DATA.DOC
  520. NORMF4, NORMF4B normalize a float4 data series                        SOLVE.DOC
  521. NORMF8, NORMF8B normalize a float8 data series                        SOLVE.DOC
  522. NPVALUE         calculate net present value of an uneven cash flow    SOLVE.DOC
  523. OUINON          French language version of YesNo                      INPUT.DOC
  524. PALETTE16       update 16-color palette registers                    SYSTEM.DOC
  525. PAINT           change all color attributes on a text-mode screen      TEXT.DOC
  526. PATH            returns a PATH from the program's enviornment block  SYSTEM.DOC
  527.  
  528. PAYMENT         calculate payment required given n, i, pv, fv         SOLVE.DOC
  529. PCXINFO         reads vital information about .PCX-format file     GRAPHICS.DOC
  530. PICKF           select filename from list                             INPUT.DOC
  531. PICKSTR         select one from a list of strings                     INPUT.DOC
  532. PSOLVEF4        solve a polynomial equation for y, given x            SOLVE.DOC
  533. PSOLVEF8        solve a polynomial equation for y, given x            SOLVE.DOC
  534. PSOLVEI2        solve a polynomial equation for y, given x            SOLVE.DOC
  535. PSOLVEI4        solve a polynomial equation for y, given x            SOLVE.DOC
  536. PULLDOWN        pull-down menu system; text mode                      INPUT.DOC
  537. PUTBITBLOCK     restores bit block saved by GetBitBlock            GRAPHICS.DOC
  538. PUTBITPLANE     restores bit plane saved by GetBitPlane            GRAPHICS.DOC
  539. PUTDOT          set a pixel on a graphics screen                   GRAPHICS.DOC
  540. PUTSCREEN       restores screen image saved by GetScreen               TEXT.DOC
  541. PVALUE          calculate present value of an even cash flow          SOLVE.DOC
  542. QFNAME          given a partial filename, returns full path+filename   DISK.DOC
  543. QUADFITF4       fit a quadratic equation to a data series             SOLVE.DOC
  544. QUADFITF8       fit a quadratic equation to a data series             SOLVE.DOC
  545. QUADFITI2       fit a quadratic equation to a data series             SOLVE.DOC
  546. QUADFITI4       fit a quadratic equation to a data series             SOLVE.DOC
  547. RAD2DEG         convert radians to degrees of arc                     SOLVE.DOC
  548. RANDOM          generates a near-random number                         DATA.DOC
  549. REALLOCEMS      re-size existing EMS memory block                    EMSXMS.DOC
  550. REALLOCXMS      re-size existing XMS memory block                    EMSXMS.DOC
  551. RECOLOR         change selected color attributes on a text-mode screen TEXT.DOC
  552. RESETVIEW       restores defalt view area on active graphics page  GRAPHICS.DOC
  553. RSET            right-justifies a string in a field                    DATA.DOC
  554. RTRIM           removes trailing blanks from an ASCIIZ string          DATA.DOC
  555. SAMP2POP        stddev option                                         SOLVE.DOC
  556. SCALEF4         scales a float4 value by an integer power of 2        FLOAT.DOC
  557. SCALEF8         scales a float8 value by an integer power of 2        FLOAT.DOC
  558. SCREENMEM       calculates bytes required to save screen image         TEXT.DOC
  559. SCREENORIGIN    control position of video buffer on screen         GRAPHICS.DOC
  560. SHOWGPAGE       change graphics page displayed on screen           GRAPHICS.DOC
  561. SHOWGPLANE      show one or more planes of 16-color EGA/VGA screen GRAPHICS.DOC
  562. SHOWMOUSE       make mouse cursor visible                             INPUT.DOC
  563. SHOWTPAGE       change video page shown on screen                      TEXT.DOC
  564. SINO            Spanish language version of YesNo                     INPUT.DOC
  565. SMALLTEXT       change GPrint default to 8x8 characters            GRAPHICS.DOC
  566. SNOWOFF         disables CGA snow control                              TEXT.DOC
  567. SNOWON          enables CGA snow control (ASMLIB default)              TEXT.DOC
  568. SORTF4HI        sorts the values in a float4 array, highest first     FLOAT.DOC
  569. SORTF4LO        sorts the values in a float4 array, lowest first      FLOAT.DOC
  570. SORTF8HI        sorts the values in a float8 array, highest first     FLOAT.DOC
  571. SORTF8LO        sorts the values in a float8 array, lowest first      FLOAT.DOC
  572. SORTI2HI        sorts the values in an array of 2-byte integers        DATA.DOC
  573. SORTI2LO        sorts the values in an array of 2-byte integers        DATA.DOC
  574. SORTI4HI        sorts the values in an array of 4-byte integers        DATA.DOC
  575. SORTI4LO        sorts the values in an array of 4-byte integers        DATA.DOC
  576. STDDEVF4        calculate standard deviation of float4 series         SOLVE.DOC
  577. STDDEVF8        calculate standard deviation of float8 series         SOLVE.DOC
  578. STDDEVI2        calculate standard deviation of integer2 series       SOLVE.DOC
  579. STDDEVI4        calculate standard deviation of integer4 series       SOLVE.DOC
  580. STDTEXT         restore GPrint default characters                  GRAPHICS.DOC
  581. STR2VBUF        copies a string to the video buffer                    TEXT.DOC
  582. STRCPY          copy an ASCIIZ string to existing buffer               DATA.DOC
  583. STRNCPY         copy CX bytes of an ASCII string to existing buffer    DATA.DOC
  584.  
  585. STRTOI2         converts an ASCIIZ string to an equivalent integer     DATA.DOC
  586. STRNTOI2        converts n bytes of a string to an equivalent integer  DATA.DOC
  587. STRTOI4         converts an ASCII string to equivalent long integer    DATA.DOC
  588. STRNTOI4        converts n bytes of string to equivalent long integer  DATA.DOC
  589. STRCPY          copies an ASCIIZ string to an existing buffer          DATA.DOC
  590. STRNCPY         copies CX bytes of a string to an existing buffer      DATA.DOC
  591. STRCAT          catenates (adds) two strings                           DATA.DOC
  592. STRCHR          searches for a specified character in a string         DATA.DOC
  593. STRDUP          duplicates an ASCIIZ string                            DATA.DOC
  594. STRINS          combines string0 and string1 at specified position     DATA.DOC
  595. STRIPCHR        removes selected character from a string               DATA.DOC
  596. STRISTR         finds a substring in a string, case insensetive        DATA.DOC
  597. STRLEN          determines the length of an ASCIIZ string              DATA.DOC
  598. STRLWR          change upper-case characters in a string to lower      DATA.DOC
  599. STRNCHR         searches n bytes of a string for for a character       DATA.DOC
  600. STRNDUP         duplicates n characters of a string                    DATA.DOC
  601. STRNLWR         changes n bytes in string to lower case                DATA.DOC
  602. STRNRCHR        finds the last character matching AL in n bytes        DATA.DOC
  603. STRNREV         reverses n bytes of an ASCIIZ string                   DATA.DOC
  604. STRNSET         sets n characters in a string to specified character   DATA.DOC
  605. STRNUPR         changes n bytes in string to upper case                DATA.DOC
  606. STRREV          reverses all characters in an ASCIIZ string            DATA.DOC
  607. STRRCHR         finds the last byte in an ASCIIZ string matching AL    DATA.DOC
  608. STRRSTR         finds the last substring in a string, case sensetive   DATA.DOC
  609. STRSET          sets all characters in a string to specified character DATA.DOC
  610. STRSPACE        creates a new string of space characters               DATA.DOC
  611. STRSTR          finds a substring in a string, case sensetive          DATA.DOC
  612. STRUPR          changes lower-case characters in string to upper case  DATA.DOC
  613. SUBF4           subtract a float4 value from another                  FLOAT.DOC
  614. SUBF8           subtract a float8 value from another                  FLOAT.DOC
  615. SVGA16          set 800x600 or 1024x768 16-color mode                  MODE.DOC
  616. SVGA132         set 132-column text mode with SVGA equipment           MODE.DOC
  617. SVGA256         set 256-color mode up to 1024x768 pixels               MODE.DOC
  618. SWAPB           swaps data areas                                       DATA.DOC
  619. SYSTEM          executes a second copy of COMMAND.COM                SYSTEM.DOC
  620. TCENTER         prints a string on the screen, centered horizontally   TEXT.DOC
  621. TCOPY           copies one page of text-mode video memory to another   TEXT.DOC
  622. TCLEAR          clears text-mode screen with specified color attribute TEXT.DOC
  623. TEDIT           string editor for text modes                          INPUT.DOC
  624. TFILL           fill text-mode screen with specified character & color TEXT.DOC
  625. TGETCHR         read character and color attribute from text screen    TEXT.DOC
  626. TLOAD           loads a screen image disk file saved by TSave          TEXT.DOC
  627. TMOUSELIMIT     limit mouse's range of motion on text screen          INPUT.DOC
  628. TMOUSEPOS       set mouse position on text-mode screen                INPUT.DOC
  629. TMOUSESTATUS    determine mouse position & buttons on text screen     INPUT.DOC
  630. TOLOWER         converts keycode from GetKey to lower case            INPUT.DOC
  631. TOUPPER         converts keycode from GetKey to upper case            INPUT.DOC
  632. TPAGE           changes active page and shows active page              TEXT.DOC
  633. TPRINT          print ASCIIZ string directly to video buffer           TEXT.DOC
  634. TPRINTCE        print ASCIIZ string & clear to end of line             TEXT.DOC
  635. TPRINTL         print directly to video buffer, lower case             TEXT.DOC
  636. TPRINTU         print directly to video buffer, upper case             TEXT.DOC
  637. TSAVE           saves a screen image as a disk file                    TEXT.DOC
  638.  
  639. UCURSORON       move cursor to (row, col), change to underscore        TEXT.DOC
  640. USE32K, USE64K  Hercules memory configuration control                SYSTEM.DOC
  641. USEGPAGE        changes active graphics page                       GRAPHICS.DOC
  642. USETPAGE        establish ASMLIB's active page                         TEXT.DOC
  643. VGA13X          use undocumented 256-color VGA modes                   MODE.DOC
  644. VIEWLIMIT       determine current mode's maximum dimensions        GRAPHICS.DOC
  645. VMGET           copy data from VMS Memory to system RAM              EMSXMS.DOC
  646. VMISTR          search VMS memory for string, case-insensitive       EMSXMS.DOC
  647. VMMOVE          move data within a VMS memory block                  EMSXMS.DOC
  648. VMPUT           copy data from system RAM to VMS memory              EMSXMS.DOC
  649. VMSTR           search VMS memory for string, case-sensitive         EMSXMS.DOC
  650. VSCROLL         scroll a portion of the screen up or down              TEXT.DOC
  651. WCLEAR          clears a rectangular portion of a text-mode screen     TEXT.DOC
  652. WFILL           fills a window of a text-mode screen w/specified char  TEXT.DOC
  653. WFRAME          draws a box on a text-mode screen                      TEXT.DOC
  654. WORDTOHEX       converts word data to ASCIIZ string, hex format        DATA.DOC
  655. WPAINT          replaces all color attributes in screen window         TEXT.DOC
  656. WPRINT          print directly to a window with word wrap              TEXT.DOC
  657. WRECOLOR        changes selected color attributes in screen window     TEXT.DOC
  658. WRESTORE        restore window saved by WSAVE                          TEXT.DOC
  659. WSAVE           save screen window in memory                           TEXT.DOC
  660. WSIZE           calculates the memory required to save screen window   TEXT.DOC
  661. XMGET           copy data from XMS Extended Memory to system RAM     EMSXMS.DOC
  662. XMMOVE          move data within an XMS memory block                 EMSXMS.DOC
  663. XMPUT           copy data from system RAM to XMS Extended Memory     EMSXMS.DOC
  664. XMODE16         use super EGA /super VGA 16-color graphics modes       MODE.DOC
  665. XMODE           reset ASMLIB graphics mode flags                       MODE.DOC
  666. XMSCONTIG       determine largest contiguous XMS memory block        EMSXMS.DOC
  667. XMSFREE         determine available XMS memory                       EMSXMS.DOC
  668. XMISTR          search XMS memory for string, case-insensitive       EMSXMS.DOC
  669. XMSTR           search XMS memory for string, case-sensitive         EMSXMS.DOC
  670. XTOTHEY         calculate X to the Y power                            SOLVE.DOC
  671. YESNO           wait for 'Y' or 'N' key to be pressed                 INPUT.DOC
  672.  
  673.  
  674.  
  675. Other software I have available:
  676.  
  677. ASM32   Like ASMLIB, but for 32-bit assembly-language programming
  678.         with Michael Devore's CauseWay DOS extender
  679.  
  680. QLIB    Subroutine library for Microsoft's QuickBASIC, VBDOS and
  681.         BASIC 7.x PDS, includes most ASMLIB subroutines with a
  682.         BASIC interface
  683.  
  684. Contact me if you are interested in either of my other two subroutine
  685. libraries.
  686.