ASM32 version 3.4 Programmer's Toolkit tools for 32-bit assembly-language programming Copyright (C) 1993 - 1995 Douglas Herr - All rights reserved What is ASM32? ASM32 is a library of assembly-language subroutines which provides many tools to access and use the 32-bit address space (up to 4 Gigabytes!) of 386 or better personal computers. ASM32 is not a DOS extender, but can use either the CauseWay DOS extender or can work with a DPMI host. DISTRIBUTION AND REGISTRATION ASM32 is user-supported software, NOT public domain software. Possession of the ASM32 files entitles you to evaluate this product. If, after evaluation, you choose to use ASM32, you are expected to register with the library's author. By registering, you will be entitled to use the latest version of ASM32, you will be entitled to low-cost upgrades, you will have confidence that the version of ASM32 you are using has not been altered by others, and you will be supporting my programming efforts. Two levels of registration are available: For $25, you will recieve the most recent ASM32 as well as the EGA32 libraries, which are more compact, for EGA and VGA systems only; for $50 you will receive full source code to ASM32 subroutines along with the assembled libraries. If you first register at the $25 level, you may register for ASM32 source code at any time for $25. Upgrades for either level of registration are $10. Register by sending the registration fee to: Douglas Herr P. O. Box 207 Sacramento, CA 95812 U.S.A. Telephone (916) 721-8762 CompuServe 71247,3542 Internet 71247.3542@compuserve.com Please specify either 5 1/4 or 3 1/2 inch disks. Bug reports (if any) should be sent to the same address. If you wish to contact me by telephone, please call after 8:00 PM Pacific time so I can get my kids in bed. Registration is a LICENSE fee, not a purchase of ASM32. Registered users may use ASM32 or modified subroutines based on ASM32 source code in their own programs. Registered programmers may distribute programs using ASM32 subroutines without royalty payments. ASM32 object files, ASM32 source code (unmodified or modified) and the ASM32 library and documentation remain the property of Douglas Herr. ASM32 source code, modified or unmodified, may not be re-distributed. DPMI DOS extender DPMI is a standard DOS extender interface which permits normal access to the PC's DOS and BIOS functions while allowing access to the 4-gigabyte address space of the 386 (or better) computers. Windows 3.1 is an example of a DPMI host. To use Windows' DPMI capabilities, double-click on the MS-DOS prompt from the Main window. You'll get a standard DOS prompt, and your programs will be able to run in 32-bit protected mode. CauseWay DOS extender The CauseWay DOS extender is a commercial product which is required in order to use ASM32CW.LIB. CauseWay must be purchased separately from ASM32. Licence of ASM32 does not imply permission to use CauseWay. The CauseWay DOS extender is a DPMI- and VCPI-compliant extender intended for Assembly-language programming. CauseWay permits 16-bit segments, 32-bit segments and mixed 16- and 32-bit segment programs, and includes a CauseWay-extended debugger for all .EXE files linked with the CauseWay extender. Best of all, CauseWay is affordable! I have included in this ASM32 shareware package some pre-release documentation for CauseWay; CW-ASM.DOC should not be considered complete CauseWay documentation, but does illustrate CauseWay's capabilities. CauseWay was initially released 1/1/1994. For more information about the CauseWay extender and debugger, contact: Devore Software and Consulting P. O. Box 4283 Naperville, IL 60567-4283 Voice: (708) 717-6369 Fax: (708) 717-6373 CompuServe: 71540,62 Internet: 71540.62@compuserve.com The advantages of CauseWay over DPMI are many: 1) CauseWay works on any 386 or better system, whether a DPMI host is installed or not 2) The CauseWay package includes the CWD debugger, which I have found to be extremely helpful 3) CauseWay will load your initialized code and data to high memory, making much larger programs possible 4) Michael Devore and John Wildsmith are always available on CompuServe to answer questions about CauseWay. I have no commercial ties with John or Michael; In my personal opinion, CauseWay is not only an excellent product, it's also a great value. The ASM32 shareware package includes these files: STARTCW.ASM Startup code for CauseWay programs STARTDP.ASM Startup code for DPMI programs ASM32CW.LIB the ASM32 library, CauseWay NEAR model version ASM32DP.LIB the ASM32 library, DPMI version ASM32.DOC this introductory file DATA.DOC string and integer data manipulation DISK.DOC disk & file subroutines DPMI.DOC information about the DPMI version of ASM32 FLOAT.DOC floating-point subroutines GRAPHICS.DOC ASM32 graphics INPUT.DOC keyboard input subroutines MODE.DOC ASM32 screen mode subroutines MULTIWIN.DOC text-mode multi-window subroutines SOLVE.DOC ASM32 mathematical solutions SYSTEM.DOC subroutines which determine PC status or equipment TEXT.DOC text-mode video subroutines CWNEAR.INC MODEL.INC memory model definition file for CauseWay programs DPMI.INC MODEL.INC memory model definition file for DPMI programs DATASEG.INC data segment definition INCLUDE file for your source code CODESEG.INC code segment definition INCLUDE file for your source code E32.ZIP archive of source and executable of 32-bit text editor produced with ASM32 and CauseWay extender These files may be copied and distributed freely provided that all the above files are distributed together in unmodified or archived form provided that distribution charges on a floppy disk are less than $10. The ASM32 shareware package may also be distributed with other shareware or freeware programs on CD-ROM media. LIMITED LIABILITY & OTHER LEGAL STUFF Since I am unable to supervise all uses of ASM32, I cannot be held responsible for any damages, either direct or incidental, resulting from the use or abuse of ASM32. I have used ASM32 subroutines on a wide variety of equipment and have found the library to be highly compatible with common 386 and 486 PC equipment, but you must use this library at your own risk. Try it before you buy it. COMPATIBILITY ASM32 subroutines are intended for IBM-compatible personal computers with 386SX or better processor and PC-DOS or MS-DOS operating systems. I cannot provide support for use of ASM32 on other equipment or with other operating systems. ABBREVIATIONS for video boards Most new 32-bit computers are sold with a VGA monitor, but older PCs are frequently upgraded to 32-bit power while retaining older video equipment. Even a new computer may also be equipped with a monochrome monitor along with the VGA. For these reasons ASM32 includes support for many video standards: MDA IBM-standard Monochrome Display Adapter CGA IBM-standard Color Graphics Adapter (ugh!) MCGA IBM-standard Multi-color Graphics Array EGA IBM-standard Enhanced Graphics Adapter SEGA EGA equipment with additional capabilities VGA IBM-standard Video Graphics Array SVGA VGA equipment with additional capabilities ATT ATT 6300 and compatible Olivetti HGC Hercules Graphics Card and compatibles HGC+ Hercules Graphics Card Plus InC Hercules InColor Card OTHER ABBREVIATIONS CF = Carry Flag DF = Direction flag SF = Sign Flag ZF = Zero Flag ASSUMPTIONS Unless otherwise stated, ASM32 subroutines assume that: 1) All strings are terminated with a NUL character. 2) Subroutines with names including '$' may trash registers, and are intended primarily for ASM32's internal use. Documentation for many '$' subroutines is in SOURCE.DOC, provided to registered ASM32 programmers. 3) All ASM32 subroutines require a near call. ASM32CW assumes CauseWay's NEAR model, and that all selectors point to the NEAR segment. ASM32DP subroutines are assembled with the .MODEL SMALL directive. 4) ASM32 data types are: chr 1 byte str character string, normally terminated with ASCII 0 (NUL) I2 2-byte signed integer U2 2-byte unsigned integer I4 4-byte signed integer U4 4-byte unsigned integer F4 4-byte floating point value, IEEE format F8 8-byte floating point value, IEEE format HOW DO I USE ALL THIS NEAT STUFF? ASM32 source code has been tested with MASM versions 5.0 and 5.1, and with TASM versions 2.01, 3.0, 3.1 and 4.0. To keep your source code usable with either the DPMI or CauseWay versions of ASM32, include the line INCLUDE MODEL.INC in your source code, and use INCLUDE DATASEG.INC and INCLUDE CODESEG.INC to declare your code and data segments. Copy or rename either DPMI.INC or CWNEAR.INC to MODEL.INC and assemble normally: MASM yoursrc; Link with your object files this way: (CauseWay) C:\>WL32 [options] startcw+yourobj,yourexe,yourmap,ASM32CW (DPMI) C:\>TLINK /3 [options] startdp+yourobj,yourexe,yourmap,ASM32PM -or- C:\>LINK [options] startdp+yourobj,yourexe,yourmap,ASM32PM Note that some older versions of MS-LINK do not handle 32-bit backward jumps correctly. WL32 and TLINK do not have this problem. MS-LINK version 5.13 works well; I assume that newer versions also will work. Any program that calls an ASM32 subroutine must declare the subroutine as an external procedure: extrn gedit:near ; tell assembler to assume that GEDIT is an external ; procedure to be linked later If you want to support only EGA or better video hardware, link with ASM32's EGA32 library, provided on registration: C:\>WL32 [options] yourobj,yourexe,yourmap,EGA32CW+ASM32CW Early versions of WL32 will give you numerous error messages because of duplicate subroutine names in EGA32CW and ASM32CW, but as long as you specify EGA32CW before ASM32CW, the EGA version of the subroutine will be linked and your program will work properly. DOCUMENTATION There's alot of stuff in ASM32, so I've tried to keep the documentation succinct. Here's a general guide to ASM32's documentation: SUBROUTINE: a brief description Source: the source code file (and other subroutines used) Call with: this tells you what data the subroutine expects additional information may be found here Returns: tells you what registers and/or flags contain useful info Additional lines may include more specific information about the register values returned. Uses: registers and flags which may be changed Supports: particular equipment or operating modes; this will not apply to all subroutines. Example: an example of how parameters are passed to the subroutine and a typical use of the subroutine. Documentation for ASM32 subroutines is in the following files: Subroutine description .DOC file $EDIT editor module used by TEdit and GEdit INPUT.DOC $SSORT generic Shell sort engine DATA.DOC ABSF4 get absolute value of 4-byte real number FLOAT.DOC ABSF8 get absolute value of 8-byte real number FLOAT.DOC ADDF4 add two 4-byte real numbers w/o x87 FLOAT.DOC ADDF8 add two 8-byte real numbers w/o x87 FLOAT.DOC ANSICOLOR returns color attribute used by ANSI device driver TEXT.DOC BB16MASK create reverse image mask for 16-color bitblock GRAPHICS.DOC BB16REV reverse a 16-color bitblock right-to-left GRAPHICS.DOC BB256OVL overlay one 256-color bitblock on another GRAPHICS.DOC BB256REV reverse a 256-color bitblock right-to-left GRAPHICS.DOC BEZIER draw a bezier curve on the screen GRAPHICS.DOC BITBLOCKBYTES calculate bytes required to save a bit block GRAPHICS.DOC BITPLANEBYTES calculate bytes to save a plane of bit block GRAPHICS.DOC BLINK turn blink attributes off or on TEXT.DOC BUFFERDIM change logical graphics buffer dimensions GRAPHICS.DOC C2F convert degrees Celcius to degrees Fahrenheit SOLVE.DOC CHRDEL delete a character from an ASCIIZ string DATA.DOC CHRNDEL delete a character from an n-length string DATA.DOC CIRCLEASPECT modifies aspect ratio of circle GRAPHICS.DOC CLEARKEY clears the keyboard's 'type-ahead' buffer INPUT.DOC CMPF4 compare two float4 numbers FLOAT.DOC CMPF8 compare two float8 numbers FLOAT.DOC COLOR16 calculate color value for 16-color palette SYSTEM.DOC COLOR32k calculate color attribute for SVGA 32k-color modes GRAPHICS.DOC COLORATTR calculates a color attribute byte DATA.DOC CRTINFO returns video buffer, screen size, etc. TEXT.DOC CSET centers a string in a fixed field DATA.DOC CUBEFITF4 fit a cubic equation to a float4 point series SOLVE.DOC CUBEFITF8 fit a cubic equation to a float8 point series SOLVE.DOC CUBEFITI2 fit a cubic equation to an integer2 point series SOLVE.DOC CUBEFITI4 fit a cubic equation to an integer4 point series SOLVE.DOC CURSORCOLOR enable InColor palette, set cursor color TEXT.DOC CURSOROFF make hardware cursor invisible at present location TEXT.DOC CURSORON move cursor to (row, col) and update cursor shape TEXT.DOC DAYNAME returns ASCII string for day number DATA.DOC DEFGMODE ASM32 uses system graphics mode (default) GRAPHICS.DOC DEG2RAD convert degrees of arc to radians SOLVE.DOC DISKFREE determines free disk space DISK.DOC DISKWP determines if a floppy disk is writable DISK.DOC DOTBAK changes a file to a .BAK file DISK.DOC DRAWCIRCLE draw a circle GRAPHICS.DOC DRAWBOX draw a rectangle on a graphics screen GRAPHICS.DOC DRAWLINE draw a line on a graphics screen GRAPHICS.DOC DRAWMODE public byte modifying ASM32 graphics drawing mode GRAPHICS.DOC EXENAME determine full path and name of executing program SYSTEM.DOC EXESIZE determine size of executable portion of .EXE file SYSTEM.DOC F2C convert degrees Fahrenheit to degrees Celcius SOLVE.DOC F4TOI2 converts float4 value to an integer FLOAT.DOC F4TOI4 converts float4 value to a long integer FLOAT.DOC FACTORIAL calculate the factorial of an integer SOLVE.DOC FCLOSE close a file managed by ASM32 buffered I/O system DISK.DOC FCOPY copies one file to another DISK.DOC FCOUNT counts the number of files matching filespec mask DISK.DOC FCREATE create new file and initialize I/O buffer DISK.DOC FEXIST determines if a file exists DISK.DOC FFLUSH flush file output buffer for specifed handle DISK.DOC FGET read specified number of bytes from a file buffer DISK.DOC FGETCHR read a character from a file buffer DISK.DOC FGETSTR read an ASCII string from a file buffer DISK.DOC FILELIST creates a list of filenames matching filespec mask DISK.DOC FILL4, FILL4B fill a buffer with 4-byte data DATA.DOC FILL8, FILL8B fill a buffer with 8-byte data DATA.DOC FILLAREA fills an irregular area on a graphics screen GRAPHICS.DOC FILLBOX draw a filled rectangle on a graphics screen GRAPHICS.DOC FILLCIRCLE draw a filled circle GRAPHICS.DOC FILLPATTERN define an optional pattern for FillArea & FillBox GRAPHICS.DOC FINDMONO determine if monochrome monitor is installed SYSTEM.DOC FLOPPIES determines the number of floppy drives installed SYSTEM.DOC FLOPPYTYPE determines the type of floppy drive installed SYSTEM.DOC FOPEN open a file and initialize buffered I/O DISK.DOC FORCEGMODE force ASM32 to use a graph mode GRAPHICS.DOC FPRIMEI2 calculates the derivative of a polynomial function SOLVE.DOC FPRIMEI4 calculates the derivative of a polynomial function SOLVE.DOC FPRIMEF4 calculates the derivative of a polynomial function SOLVE.DOC FPRIMEF8 calculates the derivative of a polynomial function SOLVE.DOC FPUT write specified data to output file buffer DISK.DOC FPUTCHR writes a character to output file buffer DISK.DOC FPUTCRLF writes a CR+LF pair to output file buffer DISK.DOC FPUTSTR writes a string to output file buffer DISK.DOC FSEEK move file pointer for file opened by FOPEN DISK.DOC FSIZE determines the size of an open file DISK.DOC FVALUE calculate future value of an even cash flow SOLVE.DOC GBASEADDRESS change ASM32 graphics default base address GRAPHICS.DOC GCENTER centers a string on a graphics screen GRAPHICS.DOC GCLEAR clears the active portion of a graphics screen GRAPHICS.DOC GCOLOR establish color used by ASM32 graphics GRAPHICS.DOC GCOPY copies one page of graphics memory to another GRAPHICS.DOC GCURSOR simulate text-mode cursor on graphics screen GRAPHICS.DOC GEDIT string editor for graphics modes INPUT.DOC GETBITBLOCK saves a portion of a graphics screen in memory GRAPHICS.DOC GETBITPLANE saves one plane of a bit block in memory GRAPHICS.DOC GETCMD isolates multiple command line parameters DATA.DOC GETCPU determines the computer's CPU chip SYSTEM.DOC GETCRT determine active monitor SYSTEM.DOC GETDOT determine pixel value on graphics screen GRAPHICS.DOC GETGSCREEN save graphics screen image in memory GRAPHICS.DOC GETKEY returns next key pressed INPUT.DOC GETMARKED returns filename marked by MarkFile INPUT.DOC GETSCREEN save screen image in memory to restore later TEXT.DOC GETVIEW returns a pointer to graphics view area data GRAPHICS.DOC GLOAD loads a graphics screen saved by GSave GRAPHICS.DOC GPAGE changes active and displayed graphics page GRAPHICS.DOC GPICKSTR select a string from a list (graphics mode) INPUT.DOC GPRINT prints ASCIIZ string on a graphics screen GRAPHICS.DOC GPRINTDOWN prints ASCIIZ string vertically on graph screen GRAPHICS.DOC GPRINTDOWNX print string vertically on graph screen, 2x width GRAPHICS.DOC GPRINTDOWN2X print string vertically on graph screen, 2x size GRAPHICS.DOC GPRINTUP prints ASCIIZ string vertically on graph screen GRAPHICS.DOC GPRINTUPX print string vertically on graph screen, 2x width GRAPHICS.DOC GPRINTUP2X print string vertically on graph screen, 2x sixe GRAPHICS.DOC GPRINTX print string on a graphics screen, double width GRAPHICS.DOC GPRINT2X print string on a graphics screen, double size GRAPHICS.DOC GPUTCHR print character on graphics screen GRAPHICS.DOC GSAVE saves a graphics screen as a disk file GRAPHICS.DOC GUCURSOR simulate underscore cursor on graphics screen GRAPHICS.DOC HGRAPH establish Hercules graphics mode using two pages MODE.DOC HGRAPH0 establish Hercules graphics mode using one page MODE.DOC HIDEMOUSE make mouse cursor disappear INPUT.DOC HRAM8029 establish 80-column, 29-row RamFont mode MODE.DOC HRAM8043 establish 80-column, 43-row RamFont mode MODE.DOC HRAM9025 establish 90-column, 25-row RamFont mode MODE.DOC HRAM9029 establish 90-column, 29-row RamFont mode MODE.DOC HRAM9043 establish 90-column, 43-row RamFont mode MODE.DOC HSCROLL scrolls a portion of the screen left or right TEXT.DOC HTEXT establish Hercules text mode MODE.DOC I2TOSTR convert a 2-byte integer to an ASCIIZ string DATA.DOC I4TOF4 convert a 4-byte integer to 4-byte real number FLOAT.DOC I4TOSTR convert a 4-byte integer to an ASCIIZ string DATA.DOC INSERT control INSERT key status SYSTEM.DOC ISALPHA determines if a keycode returned by GetKey is A - z INPUT.DOC ISANSI determines if ANSI is loaded and active SYSTEM.DOC ISATT determines if ATT 6300 display card is installed SYSTEM.DOC ISDIGIT determines if a keycode returned by GetKey is 0 - 9 INPUT.DOC ISEVGA determines if an EGA or VGA is installed SYSTEM.DOC ISHERC determine if a Hercules card is installed SYSTEM.DOC ISLOWER determines if a keycode returned by GetKey is a - z INPUT.DOC ISMOUSE determines if a mouse is installed SYSTEM.DOC ISSEVGA determines if a Super EGA or Super VGA is installed SYSTEM.DOC ISUPPER determines if a keycode returned by GetKey is A - Z INPUT.DOC JANEIN German language version of YesNo INPUT.DOC KBDTYPE determines type of keyboard and functions supported SYSTEM.DOC KEYIFWAITING returns first key if one waiting in keyboard buffer INPUT.DOC KEYORBUTTON returns either keypress or mouse button press INPUT.DOC KEYWAITING determines if a key is waiting in keyboard buffer INPUT.DOC LINEFITF4 fit a line equation to point series SOLVE.DOC LINEFITF8 fit a line equation to point series SOLVE.DOC LINEFITI2 fit a line equation to point series SOLVE.DOC LINEFITI4 fit a line equation to point series SOLVE.DOC LINEPATTERN defines an optional pattern to use with DrawLine GRAPHICS.DOC LOADPCX reads & decodes .PCX-format file GRAPHICS.DOC LSET left-justifies a string in a field DATA.DOC LTRIM removes leading blanks from an ASCIIZ string DATA.DOC MARKCOUNT count filenames marked in MarkFile list INPUT.DOC MARKFILE Display filename list and select one or more files INPUT.DOC MASKEDIT edit one or more fields within a non-editable mask INPUT.DOC MATHCHIP determine if 80x87 math coprocessor is installed SYSTEM.DOC MAXF4, MAXF4B determine maximum value in a real number array FLOAT.DOC MAXF8, MAXF8B determine maximum value in a real number array FLOAT.DOC MAXI2, MAXI2B determine maximum value in integer array DATA.DOC MAXI4, MAXI4B determine maximum value in long integer array DATA.DOC MAXU2, MAXU2B determine maximum value in unsigned integer array DATA.DOC MAXU4, MAXU4B determine maximum value in unsigned long integer array DATA.DOC MEMCOPY safe copy checks for source, destination overlap DATA.DOC MENUOPTION define options for PullDown menu system INPUT.DOC MINF4, MINF4B determine minimum value in a real number array FLOAT.DOC MINF8, MINF8B determine minimum value in a real number array FLOAT.DOC MINI2, MINI2B determine minimum value in integer array DATA.DOC MINI4, MINI4B determine minimum value in long integer array DATA.DOC MINU2, MINU2B determine minimum value in unsigned integer array DATA.DOC MINU4, MINU4B determine minimum value in unsigned long integer array DATA.DOC MLOAD quickly loads a disk file into far memory DISK.DOC MODE43 switch EGA to 80x43 text mode or VGA to 80x50 text MODE.DOC MONTHNAME returns ASCII string for month given month number DATA.DOC MOUSELIMIT limit mouse's range on screen INPUT.DOC MOUSEPOS position mouse on the screen INPUT.DOC MOUSESTATUS determine mouse location & buttons pressed INPUT.DOC MOUSESAVE save mouse state SYSTEM.DOC MOUSERESTORE restore previously saved mouse state SYSTEM.DOC MSAVE save memory block as disk file DISK.DOC MULF4 multplies two 4-byte floating-point numbers w/o x87 FLOAT.DOC MWBORDER draw border around window opened by MWOPEN MULTIWIN.DOC MWCENTER center a string in a window opened by MWOPEN MULTIWIN.DOC MWCLEAR clear a window opened by MWOPEN MULTIWIN.DOC MWCLOSE close window opened with MWOPEN and release buffer MULTIWIN.DOC MWCLOSEALL close all open windows and release window buffers MULTIWIN.DOC MWDEFAULT change MWOPEN default window status MULTIWIN.DOC MWDISPLAY display all unhidden windows in multiwindow system MULTIWIN.DOC MWFILL fill a window opened by MWOPEN MULTIWIN.DOC MWHIDE hide window in multiwindow display system MULTIWIN.DOC MWHIDEALL hide all windows in multiwindow display system MULTIWIN.DOC MWINIT initialize multi-window base screen MULTIWIN.DOC MWNOBORDER set "no border" bit in window status byte MULTIWIN.DOC MWNOSHADOW disable "shadow" effect for selected window MULTIWIN.DOC MWOPEN open a window in multi-window system MULTIWIN.DOC MWPRINT print string in window opened by MWOPEN MULTIWIN.DOC MWPRINTCE print string in window and clear to edge of window MULTIWIN.DOC MWSELECT determine window visible at screen coordinates MULTIWIN.DOC MWSHADOW enable "shadow" effect for selected window MULTIWIN.DOC MWTITLE center a string at the top of a window MULTIWIN.DOC MWTOP move selected window to top of overlapping windows MULTIWIN.DOC MWUNHIDE unhide window in multiwindow display system MULTIWIN.DOC MWUNHIDEALL unhide all windows in multiwindow display system MULTIWIN.DOC NORMF4, NORMF4B normalize a float4 data series SOLVE.DOC NORMF8, NORMF8B normalize a float8 data series SOLVE.DOC NPVALUE calculate net present value of an uneven cash flow SOLVE.DOC OUINON French language version of YesNo INPUT.DOC PALETTE16 update 16-color palette registers SYSTEM.DOC PAINT change all color attributes on a text-mode screen TEXT.DOC PATH returns a PATH from the program's enviornment block SYSTEM.DOC PAYMENT calculate payment required given n, i, pv, fv SOLVE.DOC PCXINFO reads vital information about .PCX-format file GRAPHICS.DOC PICKFILE select filename from list INPUT.DOC PICKSTR select one from a list of strings INPUT.DOC PSOLVEF4 solve a polynomial equation for y, given x SOLVE.DOC PSOLVEF8 solve a polynomial equation for y, given x SOLVE.DOC PSOLVEI2 solve a polynomial equation for y, given x SOLVE.DOC PSOLVEI4 solve a polynomial equation for y, given x SOLVE.DOC PULLDOWN pull-down menu system; text mode INPUT.DOC PUTBITBLOCK restores bit block saved by GetBitBlock GRAPHICS.DOC PUTBITPLANE restores bit plane saved by GetBitPlane GRAPHICS.DOC PUTDOT set a pixel on a graphics screen GRAPHICS.DOC PUTKEY put a keycode in the keyboard's type-ahead buffer INPUT.DOC PUTGSCREEN restores graphics screen image saved by GetGScreen GRAPHICS.DOC PUTSCREEN restores screen image saved by GetScreen TEXT.DOC PVALUE calculate present value of an even cash flow SOLVE.DOC QFNAME given a partial filename, returns full path+filename DISK.DOC QUADFITF4 fit a quadratic equation to a data series SOLVE.DOC QUADFITF8 fit a quadratic equation to a data series SOLVE.DOC QUADFITI2 fit a quadratic equation to a data series SOLVE.DOC QUADFITI4 fit a quadratic equation to a data series SOLVE.DOC RAD2DEG convert radians to degrees of arc SOLVE.DOC RANDOM generates a near-random number DATA.DOC RECOLOR change selected color attributes on a text-mode screen TEXT.DOC RESETVIEW restores defalt view area on active graphics page GRAPHICS.DOC RSET right-justifies a string in a field DATA.DOC RTRIM removes trailing blanks from an ASCIIZ string DATA.DOC SAMP2POP stddev option SOLVE.DOC SCALEF4 scale a float4 number by an integer power of 2 FLOAT.DOC SCALEF8 scale a float8 number by an integer power of 2 FLOAT.DOC SCREENBYTES calculates bytes required to save screen image TEXT.DOC SCREENORIGIN control position of video buffer on screen GRAPHICS.DOC SHOWGPAGE change graphics page displayed on screen GRAPHICS.DOC SHOWGPLANE show one or more planes of 16-color EGA/VGA screen GRAPHICS.DOC SHOWMOUSE make mouse cursor visible INPUT.DOC SHOWTPAGE change video page shown on screen TEXT.DOC SINO Spanish language version of YesNo INPUT.DOC SMALLTEXT change GPrint default to 8x8 characters GRAPHICS.DOC SNOWOFF disables CGA snow control TEXT.DOC SNOWON enables CGA snow control (ASM32 default) TEXT.DOC SORTF4HI sorts the values in a float4 array, highest first FLOAT.DOC SORTF4LO sorts the values in a float4 array, lowest first FLOAT.DOC SORTF8HI sorts a float8 array, highest first FLOAT.DOC SORTF8LO sorts a float8 array, lowest first FLOAT.DOC SORTI2HI sorts the values in an array of 2-byte integers DATA.DOC SORTI4HI sorts the values in an array of 4-byte integers DATA.DOC SORTI2LO sorts the values in an array of 2-byte integers DATA.DOC SORTI4LO sorts the values in an array of 4-byte integers DATA.DOC SORTU2HI sorts an array of unsigned 2-byte integers DATA.DOC SORTU2LO sorts an array of unsigned 2-byte integers DATA.DOC SORTU4HI sorts an array of unsigned 4-byte integers DATA.DOC SORTU4LO sorts an array of unsigned 4-byte integers DATA.DOC STDDEVF4 calculate standard deviation of float4 series SOLVE.DOC STDDEVF8 calculate standard deviation of float8 series SOLVE.DOC STDDEVI2 calculate standard deviation of integer2 series SOLVE.DOC STDDEVI4 calculate standard deviation of integer4 series SOLVE.DOC STDTEXT restore GPrint default characters GRAPHICS.DOC STR2VBUF copies a string to the video buffer TEXT.DOC STRCPY copy an ASCIIZ string to existing buffer DATA.DOC STRNCPY copy ECX bytes of an ASCII string to existing buffer DATA.DOC STRTOI4 converts an ASCII string to equivalent long integer DATA.DOC STRNTOI4 converts n bytes of string to equivalent long integer DATA.DOC STRCAT catenates (adds) two strings DATA.DOC STRCHR searches for a specified character in a string DATA.DOC STRCMP compare strings, case-sensetive DATA.DOC STRDUP duplicates an ASCIIZ string DATA.DOC STRINS combines string0 and string1 at specified position DATA.DOC STRICMP compare strings, case-insensetive DATA.DOC STRIPCHR removes selected character from a string DATA.DOC STRISTR finds a substring in a string, case insensetive DATA.DOC STRLEN determines the length of an ASCIIZ string DATA.DOC STRLWR change upper-case characters in a string to lower DATA.DOC STRNCHR searches n bytes of a string for for a character DATA.DOC STRNDUP duplicates n characters of a string DATA.DOC STRNLWR changes n bytes in string to lower case DATA.DOC STRNRCHR finds the last character matching AL in n bytes DATA.DOC STRNREV reverses n bytes of an ASCIIZ string DATA.DOC STRNSET sets n characters in a string to specified character DATA.DOC STRNUPR changes n bytes in string to upper case DATA.DOC STRREV reverses all characters in an ASCIIZ string DATA.DOC STRRCHR finds the last byte in an ASCIIZ string matching AL DATA.DOC STRRSTR finds the last substring in a string, case sensetive DATA.DOC STRSET sets all characters in a string to specified character DATA.DOC STRSPACE creates a new string of space characters DATA.DOC STRSTR finds a substring in a string, case sensetive DATA.DOC STRUPR changes lower-case characters in string to upper case DATA.DOC SVGA132 set 132-column text modes on SEGA and SVGA systems MODE.DOC SVGA16 set 800x600 or 1024x768 16-color mode MODE.DOC SVGA256 set 256-color mode up to 1024x768 pixels MODE.DOC SVGA32k set 32k-color mode up to 1280x1024 pixels MODE.DOC SWAPB swaps data areas DATA.DOC TCENTER prints a string on the screen, centered horizontally TEXT.DOC TCOPY copies one page of text-mode video memory to another TEXT.DOC TCLEAR clears text-mode screen with specified color attribute TEXT.DOC TEDIT string editor for text modes INPUT.DOC TFILL fill text-mode screen with specified character & color TEXT.DOC TGETCHR read character and color attribute from text screen TEXT.DOC TLOAD loads a screen image disk file saved by TSave TEXT.DOC TMOUSELIMIT limit mouse's range of motion on text screen INPUT.DOC TOCOLOR switch system to color monitor or color text mode MODE.DOC TOLOWER converts keycode from GetKey to lower case INPUT.DOC TOMONO switch system to monochrome monitor or mono text mode MODE.DOC TOUPPER converts keycode from GetKey to upper case INPUT.DOC TPAGE changes active page and shows active page TEXT.DOC TPRINT print ASCIIZ string directly to video buffer TEXT.DOC TPRINTCE print ASCIIZ string & clear to end of line TEXT.DOC TPRINTL print directly to video buffer, lower case TEXT.DOC TPRINTU print directly to video buffer, upper case TEXT.DOC TPUTCHR write one character to video buffer TEXT.DOC TSAVE saves a screen image as a disk file TEXT.DOC UCURSORON move cursor to (row, col), change to underscore TEXT.DOC USE32K, USE64K Hercules memory configuration control SYSTEM.DOC USEGPAGE changes active graphics page GRAPHICS.DOC USEGSCREEN direct ASM32 graphics to off-screen buffer GRAPHICS.DOC USEDEFAULTSCREEN restore ASM32 graphics to using video hardware GRAPHICS.DOC USETPAGE establish ASM32's active page TEXT.DOC VGA13X use undocumented 256-color VGA modes MODE.DOC VIEWLIMIT determine current mode's maximum dimensions GRAPHICS.DOC VSCROLL scroll a portion of the screen up or down TEXT.DOC WCLEAR clears a rectangular portion of a text-mode screen TEXT.DOC WFILL fills a window of a text-mode screen w/specified char TEXT.DOC WFRAME draws a box on a text-mode screen TEXT.DOC WPAINT replaces all color attributes in screen window TEXT.DOC WPRINT print directly to a window with word wrap TEXT.DOC WRECOLOR changes selected color attributes in screen window TEXT.DOC WRESTORE restore window saved by WSAVE TEXT.DOC WSAVE save screen window in memory TEXT.DOC WSIZE calculates the memory required to save screen window TEXT.DOC XMODE16 use super EGA /super VGA 16-color graphics modes MODE.DOC XMODECLEAR reset ASM32 graphics mode flags MODE.DOC XTOTHEY calculate X to the Y power SOLVE.DOC YESNO wait for 'Y' or 'N' key to be pressed INPUT.DOC