home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-03-29 | 116.6 KB | 4,259 lines |
- Service : BC_ASC2INT
-
- Module : Base Conversion Services
-
- Compat : Any
-
- Purpose : Converts an ASCIIZ string to an unsigned integer
-
- Parms:
- BL <-- base from which to convert (2-36)
- DS:SI <-- pointer to string
- -------
- AX = unsigned integer (0-65,535)
-
- Description:
-
- The BC_ASC2INT service converts an ASCIIZ string to an unsigned integer
- value. The conversion stops at the first character which cannot be construed
- as being part of the number.
-
- Any reasonable base may be specified, giving this service considerable
- flexibility. More commonly-used bases include:
-
- 2 binary
- 8 octal
- 10 decimal
- 16 hex
-
-
-
-
- Service : BC_ASC2LONG
-
- Module : Base Conversion Services
-
- Compat : Any
-
- Purpose : Converts an ASCIIZ string to an unsigned long integer
-
- Parms:
- BL <-- base from which to convert (2-36)
- DS:SI <-- pointer to string
- -------
- DX,AX = unsigned long integer (0-4,294,967,295)
-
- Description:
-
- The BC_ASC2LONG service converts an ASCIIZ string to an unsigned long integer
- value. The conversion stops at the first character which cannot be construed
- as being part of the number.
-
- Any reasonable base may be specified, giving this service considerable
- flexibility. More commonly-used bases include:
-
- 2 binary
- 8 octal
- 10 decimal
- 16 hex
-
- Service : BC_ASC2SINT
-
- Module : Base Conversion Services
-
- Compat : Any
-
- Purpose : Converts an ASCIIZ string to a signed integer
-
- Parms:
- BL <-- base from which to convert (2-36)
- DS:SI <-- pointer to string
- -------
- AX = unsigned integer (-32768 to 32767)
-
- Description:
-
- The BC_ASC2SINT service converts an ASCIIZ string to a signed integer value.
- The conversion stops at the first character which cannot be construed as
- being part of the number.
-
- Any reasonable base may be specified, giving this service considerable
- flexibility. More commonly-used bases include:
-
- 2 binary
- 8 octal
- 10 decimal
- 16 hex
-
- Note that negative numbers are frequently represented as unsigned numbers
- when a base other than 10 (decimal) is used. If you wish to follow that
- convention, simply use BC_ASC2INT instead of this routine.
-
- Service : BC_ASC2SLONG
-
- Module : Base Conversion Services
-
- Compat : Any
-
- Purpose : Converts an ASCIIZ string to a signed long integer
-
- Parms:
- BL <-- base from which to convert (2-36)
- DS:SI <-- pointer to string
- -------
- DX,AX = signed long integer (-2,147,483,648 to 2,147,483,647)
-
- Description:
-
- The BC_ASC2SLONG service converts an ASCIIZ string to a signed long integer
- value. The conversion stops at the first character which cannot be construed
- as being part of the number.
-
- Any reasonable base may be specified, giving this service considerable
- flexibility. More commonly-used bases include:
-
- 2 binary
- 8 octal
- 10 decimal
- 16 hex
-
- Note that negative numbers are frequently represented as unsigned numbers
- when a base other than 10 (decimal) is used. If you wish to follow that
- convention, simply use BC_ASC2LONG instead of this routine.
-
- Service : BC_INT2ASC
-
- Module : Base Conversion Services
-
- Compat : Any
-
- Purpose : Converts an unsigned integer to an ASCIIZ string
-
- Parms:
- AX <-- unsigned integer (0-65,535)
- BL <-- desired base (2-36)
- ES:DI <-- pointer to string buffer (recommend 17 bytes)
-
- Description:
-
- The BC_INT2ASC service converts an integer value to an ASCIIZ number of a
- specified base. The integer is presumed to be unsigned, giving a range of
- 0-65,535.
-
- More commonly-used bases include:
-
- 2 binary
- 8 octal
- 10 decimal
- 16 hex
-
-
-
-
- Service : BC_LONG2ASC
-
- Module : Base Conversion Services
-
- Compat : Any
-
- Purpose : Converts an unsigned long integer to an ASCIIZ string
-
- Parms:
- DX,AX <-- unsigned long integer (0-4,294,967,295)
- BL <-- desired base (2-36)
- ES:DI <-- pointer to string buffer (recommend 33 bytes)
-
- Description:
-
- The BC_LONG2ASC service converts an unsigned long integer value to an ASCIIZ
- number of a specified base.
-
- More commonly-used bases include:
-
- 2 binary
- 8 octal
- 10 decimal
- 16 hex
-
- Service : BC_SINT2ASC
-
- Module : Base Conversion Services
-
- Compat : Any
-
- Purpose : Converts a signed integer to an ASCIIZ string
-
- Parms:
- AX <-- signed integer (-32768 to 32767)
- BL <-- desired base (2-36)
- ES:DI <-- pointer to string buffer (recommend 18 bytes)
-
- Description:
-
- The BC_SINT2ASC service converts an integer value to an ASCIIZ number of a
- specified base. The integer is presumed to be signed, giving a range of
- -32,768 to 32,767.
-
- More commonly-used bases include:
-
- 2 binary
- 8 octal
- 10 decimal
- 16 hex
-
- Note that negative numbers are frequently represented as unsigned numbers
- when a base other than 10 (decimal) is used. If you wish to follow that
- convention, simply use BC_INT2ASC instead of this routine.
-
- Service : BC_SLONG2ASC
-
- Module : Base Conversion Services
-
- Compat : Any
-
- Purpose : Converts a signed long integer to an ASCIIZ string
-
- Parms:
- DX,AX <-- signed long integer (-2,147,483,648 to 2,147,483,647)
- BL <-- desired base (2-36)
- ES:DI <-- pointer to string buffer (recommend 34 bytes)
-
- Description:
-
- The BC_SLONG2ASC service converts a signed long integer value to an ASCIIZ
- number of a specified base.
-
- More commonly-used bases include:
-
- 2 binary
- 8 octal
- 10 decimal
- 16 hex
-
- Note that negative numbers are frequently represented as unsigned numbers
- when a base other than 10 (decimal) is used. If you wish to follow that
- convention, simply use BC_LONG2ASC instead of this routine.
-
- Service : BV_CHROUT
-
- Module : BIOS Video Services
-
- Compat : BIOS
-
- Purpose : Displays a character on the screen
-
- Parms:
- AL <-- character to display
-
- Description:
-
- The BV_CHROUT routine displays a character on the screen.
-
- The following control codes are interpreted:
- 7 Bell beep
- 8 Backspace non-destructive backspace
- 9 Tab space over to the next tab stop
- 10 Linefeed move cursor down one line, scrolling as needed
- 12 Formfeed clear screen and home cursor
- 13 Carriage Return home cursor on current line
-
- Redirection, if any, is ignored. Most windowing multitaskers will be able to
- keep the output from this service in a window.
-
-
-
-
- Service : BV_CLEOLN
-
- Module : BIOS Video Services
-
- Compat : BIOS
-
- Purpose : Clears to the end of the line
-
- Parms:
- none
-
- Description:
-
- The BV_CLEOLN service clears from the current cursor position to the end of
- the current screen line, inclusive.
-
- Redirection, if any, is ignored. Most windowing multitaskers will be able to
- keep the output from this service in a window.
-
- Service : BV_CLS
-
- Module : BIOS Video Services
-
- Compat : BIOS
-
- Purpose : Clears the screen
-
- Parms:
- none
-
- Description:
-
- The BV_CLS service clears the screen and homes the cursor to the upper left
- corner.
-
- Redirection, if any, is ignored. Most windowing multitaskers will be able to
- keep the output from this service in a window.
-
-
-
-
- Service : BV_COLOR
-
- Module : BIOS Video Services
-
- Compat : BIOS
-
- Purpose : Sets the default text color
-
- Parms:
- AL <-- default color
-
- Description:
-
- The BV_COLOR service sets the default text color. A color/attribute table is
- given in the ASMWIZ.DOC file. In general, however, the background is in the
- high nybble and ranges 0-7 in text modes, 0 in graphics modes; the foreground
- is in the low nybble and ranges 0-7 in text modes, 0-x in graphics modes.
-
- Redirection, if any, is ignored. Most windowing multitaskers will be able to
- keep the output from this service in a window.
-
- Service : BV_CRLF
-
- Module : BIOS Video Services
-
- Compat : BIOS
-
- Purpose : Displays a <CR><LF> (carriage return and linefeed)
-
- Parms:
- none
-
- Description:
-
- The BV_CRLF routine displays a carriage return and linefeed on the screen.
-
- Redirection, if any, is ignored. Most windowing multitaskers will be able to
- keep the output from this service in a window.
-
-
-
-
- Service : BV_DELLINE
-
- Module : BIOS Video Services
-
- Compat : BIOS
-
- Purpose : Deletes the current screen row
-
- Parms:
- none
-
- Description:
-
- The BV_DELLINE service deletes the row on which the cursor is placed. Any
- rows beneath it are moved up and the bottom line of the screen is cleared to
- a row of spaces in the current screen colors.
-
- Redirection, if any, is ignored. Most windowing multitaskers will be able to
- keep the output from this service in a window.
-
- Service : BV_FIXCOLOR
-
- Module : BIOS Video Services
-
- Compat : Any
-
- Purpose : Tells the BV services whether to convert colors to monochrome
-
- Parms:
- AL <-- whether to convert to mono (0 no, 1 yes)
-
- Description:
-
- The BV_FIXCOLOR service tells the BIOS Video services whether to convert
- colors to their monochrome equivalents. If not, the colors will remain as
- you originally specified. If so, the colors will be converted to appropriate
- values for use on a monochrome display.
-
- The color-to-mono translation attempts to mimic the original display as
- closely as possible. It analyzes the foreground and background colors by
- their intensity. The results are translated to white on black, bright white
- on black, or black on white. The "blink" attribute is preserved. If the
- original foreground was identical to the background (invisible characters),
- the result will be black on black.
-
- See also the MI_GETSCREEN service, which allows you to automatically detect
- what kind of display is in use.
-
- Service : BV_GETCOLOR
-
- Module : BIOS Video Services
-
- Compat : BIOS
-
- Purpose : Gets the default text color
-
- Parms:
- -------
- AL = default color
-
- Description:
-
- The BV_GETCOLOR service gets the default text color. A color/attribute table
- is given in the ASMWIZ.DOC file. In general, however, the background is in
- the high nybble and ranges 0-7 in text modes, 0 in graphics modes; the
- foreground is in the low nybble and ranges 0-7 in text modes, 0-x in graphics
- modes.
-
- Redirection, if any, is ignored. Most windowing multitaskers will be able to
- keep the output from this service in a window.
-
- Service : BV_MODE
-
- Module : BIOS Video Services
-
- Compat : BIOS
-
- Purpose : Gets the default screen mode
-
- Parms:
- -------
- AL = mode
-
- Description:
-
- The BV_GETMODE service gets the current screen mode. A table of screen modes
- is given in the ASMWIZ.DOC file.
-
-
-
-
- Service : BV_HIDECURSOR
-
- Module : BIOS Video Services
-
- Compat : BIOS
-
- Purpose : Hides the cursor
-
- Parms:
- none
-
- Description:
-
- The BV_HIDECURSOR service hides the cursor, making it invisible. This does
- not affect normal cursor operation.
-
- Redirection, if any, is ignored. Most windowing multitaskers will be able to
- keep the output from this service in a window.
-
- Service : BV_INSLINE
-
- Module : BIOS Video Services
-
- Compat : BIOS
-
- Purpose : Inserts a line at the current screen row
-
- Parms:
- none
-
- Description:
-
- The BV_INSLINE service inserts a row at the current cursor location. Any
- rows beneath it are moved down and the new line screen is cleared to a row of
- spaces in the current screen colors.
-
- Redirection, if any, is ignored. Most windowing multitaskers will be able to
- keep the output from this service in a window.
-
-
-
-
- Service : BV_LOCATE
-
- Module : BIOS Video Services
-
- Compat : BIOS
-
- Purpose : Sets the cursor position
-
- Parms:
- DH <-- row (1-25)
- DL <-- column (1-40/80)
-
- Description:
-
- The BV_LOCATE service sets the cursor position.
-
- Redirection, if any, is ignored. Most windowing multitaskers will be able to
- keep the output from this service in a window.
-
- Service : BV_MODE
-
- Module : BIOS Video Services
-
- Compat : BIOS
-
- Purpose : Sets the screen mode
-
- Parms:
- AL <-- screen mode (0-7, 13-19, depending on video adapter)
-
- Description:
-
- The BV_MODE routine sets the screen mode. This may be any of the following:
-
- Mode Resolu. Type Colr Use Adapter(s)
-
- 0 40x25 b&w 16 text CGA, EGA, VGA
- 1 40x25 color 16 text CGA, EGA, VGA
- 2 80x25 b&w 16 text CGA, EGA, VGA
- def- 3 80x25 color 16 text CGA, EGA, VGA
- 4 320x200 color 4 graphics CGA, EGA, VGA
- 5 320x200 b&w 4 graphics CGA, EGA, VGA
- 6 640x200 color 2 graphics CGA, EGA, VGA
- mda- 7 80x25 b&w - text MDA, EGA, VGA
- 13 320x200 color 16 graphics EGA, VGA
- 14 640x200 color 16 graphics EGA, VGA
- 15 640x350 mono - graphics EGA, VGA
- 16 640x350 color 16 graphics EGA, VGA
- 17 640x480 color 2 graphics VGA
- 18 640x480 color 16 graphics VGA
- 19 320x200 color 256 graphics VGA
-
- Redirection, if any, is ignored. Most windowing multitaskers will be able to
- keep the output from this service in a window.
-
- Service : BV_POPUP
-
- Module : BIOS Video Services
-
- Compat : BIOS
-
- Purpose : Displays a pop-up window on the screen
-
- Parms:
- DS:DX <-- pointer to parameter list
-
- Description:
-
- The BV_POPUP service displays a pop-up window on the screen. A variety of
- frames is available for the window. Titles are optional and will be left-
- justified in the top bar of the window if supplied.
-
- Frame types are as follows:
-
- 0 none (blank)
- 1 single lines
- 2 double lines
- 3 single horizontal lines, double vertical lines
- 4 double horizontal lines, single vertical lines
-
- The parameter list should look like this:
-
- Y1 db ? ; top row of window
- X1 db ? ; left column of window
- Y2 db ? ; bottom row of window
- X2 db ? ; right column of window
- FRAMETYPE db ? ; frame type
- FRAMECOLOR db ? ; frame color
- TITLE dw ? ; offset (from DS:) of ASCIIZ title
- ; use 0FFFFh instead if no title is desired
-
- Redirection, if any, is ignored. Most windowing multitaskers will be able to
- keep the output from this service in a window.
-
- Service : BV_SHOWCURSOR
-
- Module : BIOS Video Services
-
- Compat : BIOS
-
- Purpose : Shows the cursor
-
- Parms:
- none
-
- Description:
-
- The BV_SHOWCURSOR service shows the cursor, making it visible. NOTE: This
- service may change the cursor shape if used before BV_HIDECURSOR.
-
- Redirection, if any, is ignored. Most windowing multitaskers will be able to
- keep the output from this service in a window.
-
-
-
-
- Service : BV_STROUT
-
- Module : BIOS Video Services
-
- Compat : BIOS
-
- Purpose : Displays a string on the screen
-
- Parms:
- DS:DX <-- ptr to string to display
-
- Description:
-
- The BV_STROUT routine displays a string on the screen. The string must be in
- ASCIIZ format (NUL terminated).
-
- The following control codes are interpreted:
- 7 Bell beep
- 8 Backspace non-destructive backspace
- 9 Tab space over to the next tab stop
- 10 Linefeed move cursor down one line, scrolling as needed
- 12 Formfeed clear screen and home cursor
- 13 Carriage Return home cursor on current line
-
- Redirection, if any, is ignored. Most windowing multitaskers will be able to
- keep the output from this service in a window.
-
- Service : BV_WHERE
-
- Module : BIOS Video Services
-
- Compat : BIOS
-
- Purpose : Gets the cursor position
-
- Parms:
- -------
- DH = row (1-25)
- DL = column (1-40/80)
-
- Description:
-
- The BV_WHERE service gets the cursor position.
-
- Redirection, if any, is ignored. Most windowing multitaskers will be able to
- keep the output from this service in a window.
-
- Service : CG_CHROUT
-
- Module : CGA Graphics Services
-
- Compat : Clone
-
- Purpose : Displays a character on the screen
-
- Parms:
- AL <-- character to display
-
- Description:
-
- The CG_CHROUT routine displays a character on the screen. The screen must be
- in one of the CGA graphics modes (video modes 4-6).
-
- The following control codes are interpreted:
- 7 Bell beep
- 8 Backspace non-destructive backspace
- 9 Tab space over to the next tab stop
- 10 Linefeed move cursor down one line, scrolling as needed
- 12 Formfeed clear screen and home cursor
- 13 Carriage Return home cursor on current line
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
-
-
-
- Service : CG_CLEOLN
-
- Module : CGA Graphics Services
-
- Compat : Clone
-
- Purpose : Clears to the end of the line
-
- Parms:
- none
-
- Description:
-
- The CG_CLEOLN service clears from the current cursor position to the end of
- the current screen line, inclusive. The screen must be in one of the CGA
- graphics modes (video modes 4-6).
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
- Service : CG_CLS
-
- Module : CGA Graphics Services
-
- Compat : Clone
-
- Purpose : Clears the screen
-
- Parms:
- none
-
- Description:
-
- The CG_CLS service clears the screen and homes the cursor to the upper left
- corner. The screen must be in one of the CGA graphics modes (video modes
- 4-6).
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
-
-
-
- Service : CG_COLOR
-
- Module : CGA Graphics Services
-
- Compat : Clone
-
- Purpose : Sets the default text color
-
- Parms:
- AL <-- default color
-
- Description:
-
- The CG_COLOR service sets the default text color. A color/attribute table is
- given in the ASMWIZ.DOC file. In general, however, the background is in the
- high nybble and ranges 0-3; the foreground is in the low nybble and also
- ranges 0-3. The actual colors displayed depend on the palette setting.
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
- Service : CG_CRLF
-
- Module : CGA Graphics Services
-
- Compat : Clone
-
- Purpose : Displays a <CR><LF> (carriage return and linefeed)
-
- Parms:
- none
-
- Description:
-
- The CG_CRLF routine displays a carriage return and linefeed on the screen.
- The screen must be in one of the CGA graphics modes (video modes 4-6).
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
-
-
-
- Service : CG_GETCOLOR
-
- Module : CGA Graphics Services
-
- Compat : Clone
-
- Purpose : Gets the default text color
-
- Parms:
- -------
- AL = default color
-
- Description:
-
- The CG_GETCOLOR service gets the default text color. A color/attribute table
- is given in the ASMWIZ.DOC file. In general, however, the background is in
- the high nybble and ranges 0-3; the foreground is in the low nybble and also
- ranges 0-3. The actual colors displayed depend on the palette setting.
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
- Service : CG_INIT
-
- Module : CGA Graphics Services
-
- Compat : Clone
-
- Purpose : Initializes the CGA Graphics Services
-
- Parms:
- none
-
- Description:
-
- The CG_INIT routine initializes the CGA Graphics Services. It should be used
- once in your program, before any other CGA Graphics Services are called.
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
-
-
-
- Service : CG_LOCATE
-
- Module : CGA Graphics Services
-
- Compat : Clone
-
- Purpose : Sets the cursor position
-
- Parms:
- DH <-- row (1-25)
- DL <-- column (1-40/80)
-
- Description:
-
- The CG_LOCATE service sets the cursor position. The screen must be in one of
- the CGA graphics modes (video modes 4-6).
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
- Service : CG_MODE
-
- Module : CGA Graphics Services
-
- Compat : Clone
-
- Purpose : Sets the screen mode
-
- Parms:
- AL <-- screen mode (4-6)
-
- Description:
-
- The CG_MODE routine sets the screen mode. This may be any of the following:
-
- Mode Resolu. Type Colr Use Adapter(s)
-
- 4 320x200 color 4 graphics CGA, EGA, VGA
- 5 320x200 b&w 4 graphics CGA, EGA, VGA
- 6 640x200 color 2 graphics CGA, EGA, VGA
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
-
-
-
- Service : CG_STROUT
-
- Module : CGA Graphics Services
-
- Compat : Clone
-
- Purpose : Displays a string on the screen
-
- Parms:
- DS:DX <-- ptr to the string to display
-
- Description:
-
- The CG_STROUT routine displays a string on the screen. The string must be in
- ASCIIZ (NUL terminated) format. The screen must be in one of the CGA
- graphics modes (video modes 4-6).
-
- The following control codes are interpreted:
- 7 Bell beep
- 8 Backspace non-destructive backspace
- 9 Tab space over to the next tab stop
- 10 Linefeed move cursor down one line, scrolling as needed
- 12 Formfeed clear screen and home cursor
- 13 Carriage Return home cursor on current line
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
- Service : CG_WHERE
-
- Module : CGA Graphics Services
-
- Compat : Clone
-
- Purpose : Gets the cursor position
-
- Parms:
- -------
- DH = row (1-25)
- DL = column (1-40/80)
-
- Description:
-
- The CG_WHERE service gets the cursor position. The screen must be in one of
- the CGA graphics modes (video modes 4-6).
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
- Service : DF_CLOSE
-
- Module : File Services
-
- Compat : DOS
-
- Purpose : Closes a file
-
- Parms:
- BX <-- (virtual) file handle
-
- Description:
-
- The DF_CLOSE service closes a file. This causes the disk information
- associated with the file to be updated and the file handle to be freed. You
- should use DF_CLOSE or DF_DONE to close all files before your program
- terminates.
-
- If an error occurs, the carry flag is set and AX contains the error code.
- The AX register may be modified regardless of whether an error occurs.
- Possible errors include specification of an invalid handle and (if critical
- error handling is turned on) inability to update the disk.
-
-
-
-
- Service : DF_DONE
-
- Module : File Services
-
- Compat : DOS
-
- Purpose : Closes all open files
-
- Parms:
- none
-
- Description:
-
- The DF_DONE service closes all open file. This causes the disk information
- associated with the files to be updated and the file handles to be freed.
- You should use DF_CLOSE or DF_DONE to close all files before your program
- terminates.
-
- If an error occurs at any point, the carry flag is set and AX contains the
- error code. The AX register may be modified regardless of whether an error
- occurs. The only error possible is inability to update the disk (only
- returned if critical error handling is turned on).
-
- Service : DF_FLUSH
-
- Module : File Services
-
- Compat : DOS
-
- Purpose : Flushes a file to disk
-
- Parms:
- BX <-- (virtual) file handle
-
- Description:
-
- The DF_FLUSH service flushes a file. This causes the disk information
- associated with the file to be updated as if the file had been closed, only
- faster. This is typically used to make sure a file is properly updated to
- its current status, so it won't disappear entirely if the power goes off or a
- similar disaster strikes.
-
- For DOS versions prior to 3.3, there must be at least one free file handle
- for this service to work, because a temporary handle is needed. For later
- DOS versions, there is no such requirement.
-
- If an error occurs, the carry flag is set and AX contains the error code.
- The AX register may be modified regardless of whether an error occurs.
- Possible errors include specification of an invalid handle and (if critical
- error handling is turned on) inability to update the disk.
-
-
-
-
- Service : DF_GETTIME
-
- Module : File Services
-
- Compat : DOS
-
- Purpose : Gets a file's time/date stamp
-
- Parms:
- BX <-- (virtual) file handle
- -------
- AX = time (DOS internal format)
- DX = date (DOS internal format)
-
- Description:
-
- The DF_GETTIME service gets a file's time/date stamp.
-
- If an error occurs, the carry flag is set and AX contains the error code.
-
- Service : DF_HANDLE
-
- Module : File Services
-
- Compat : DOS
-
- Purpose : Gets the DOS handle of a file
-
- Parms:
- BX <-- (virtual) file handle
- -------
- BX = (DOS) file handle
-
- Description:
-
- The DF_HANDLE service gets the DOS file handle, given the virtual file handle
- used by the ASMWIZ services. If the file has an input buffer, the buffer is
- flushed so that any operations you do using the DOS file handle will not
- cause the ASMWIZ services to report incorrect information.
-
- Note that the correlation between the virtual file handle and DOS file handle
- is not guaranteed to remain constant. Any time you use an ASMWIZ file
- handling service, the DOS file handle for any given virtual file handle may
- change. This is required to allow for the future implementation of the
- ability to keep an indefinite number of files open at the same time under any
- DOS version.
-
- If an error occurs, the carry flag is set and AX contains the error code.
- The only possible error is the specification of an invalid virtual file
- handle.
-
-
-
-
- Service : DF_INIT
-
- Module : File Services
-
- Compat : DOS
-
- Purpose : Initializes the File Services
-
- Parms:
- DX <-- 0 (zero)
-
- Description:
-
- The DF_INIT service initializes the File Services. The DX register currently
- must be zero. It will later be used to pass the PSP segment if you want
- extended file handles, which will allow an indefinite number of files to be
- open at one time.
-
- Service : DF_LOCATE
-
- Module : File Services
-
- Compat : DOS
-
- Purpose : Sets the location of a file's read/write pointer
-
- Parms:
- BX <-- (virtual) file handle
- CL <-- location method (0-2)
- DX,AX <-- location offset
-
- Description:
-
- The DF_LOCATE service sets the location of a file's read/write pointer. This
- tells the File Services where the next read or write should begin. You may
- specify any of three location methods:
-
- 0 offset from the start of the file absolute offset
- 1 offset from the current location relative offset
- 2 offset from the end of the file relative offset
-
- The "offset from the end of the file" method specifies an offset at, or past,
- the current end of the file. It is commonly used with an offset of zero to
- set up a file for an append operation. It can also be used in conjunction
- with DF_WHERE in order to get the size of the file.
-
- If an error occurs, the carry flag is set and AX contains the error code.
- Possible errors include specification of an invalid handle and (if critical
- error handling is turned on) inability to access the file.
-
- Service : DF_OPEN
-
- Module : File Services
-
- Compat : DOS
-
- Purpose : Opens a file for access
-
- Parms:
- AX <-- access method: how to open the file
- DS:DX <-- pointer to ASCIIZ filename
- CX <-- input buffer length (use 0 for no buffer)
- ES:SI <-- pointer to input buffer, if any
- -------
- BX = (virtual) file handle
-
- Description:
-
- The DF_OPEN service opens a file for access. File sharing (for networks and
- multitasking) is supported automatically if the DOS version is capable of
- handling it ("deny write" is used). You must specify the access method in
- AX, as follows:
-
- bit 0 allow Reading from the file
- bit 1 allow Writing to the file
- bit 2 Create a new file or truncate an existing one to zero bytes
- bit 3 use Text mode (as opposed to the normal Binary mode)
-
- Unused bits should be set to zero, to allow compatibility with future
- versions of ASMWIZ. For instance, to open and read from an existing text
- file, you might use AX = 1001b (1001 binary is 9 in decimal or hex).
-
- Text mode is handy for use with ASCII text files. It affects reading from
- and writing to the file. If text mode is set, reads from the file will stop
- when a carriage return/linefeed sequence is encountered (or if a specified
- maximum number of characters have been read) and a NUL character will be
- added to convert the buffer to a string. Disk writing in this mode expects
- strings (rather than using a byte count) and will automatically add a
- carriage return/linefeed sequence. Control-Z is not used as an end of file
- indicator, since such usage is archaic and inappropriate in MS-DOS.
-
- Note that if you are reading from a file using text mode, you must specify an
- input buffer. An error code will be returned if you do otherwise.
-
- Note that the file handle returned is an index into an internal file table
- and is not a normal DOS file handle. If you need to find out the actual file
- handle used, you can get it from the DF_HANDLE service.
-
- If an error occurs, the carry flag is set and AX contains the error code. The
- AX register may be modified regardless of whether an error occurs. The error
- code will be -2 if you attempt to read from a file that was opened in text
- mode without a buffer. For a list of other possible errors, see the end of
- the ASMWIZ.DOC file.
-
- Service : DF_READ
-
- Module : File Services
-
- Compat : DOS
-
- Purpose : Reads from a file
-
- Parms:
- BX <-- (virtual) file handle
- CX <-- bytes to read (if text mode, is maximum bytes to read)
- DS:DX <-- pointer to read buffer
- -------
- AX = bytes actually read (if NC and not text mode)
-
- Description:
-
- The DF_READ service reads from a file.
-
- For files that were opened in text mode, the read operation will stop on
- encountering a carriage return / linefeed sequence or after having read the
- specified maximum number of bytes. The CR/LF is not stored in the result.
- The result will be always be converted to ASCIIZ (null-terminated string
- format), so your actual buffer must be at least one byte larger than the
- specified maximum number of bytes. If nulls are encountered in the input
- stream, they will be converted to spaces. The Control-Z code is not used as
- an end of file indicator and will be read in like any other character.
-
- If an error occurs, the carry flag is set and AX contains the error code.
- The AX register may be modified regardless of whether an error occurs. For a
- list of possible errors, see the end of the ASMWIZ.DOC file.
-
- Service : DF_TIME
-
- Module : File Services
-
- Compat : DOS
-
- Purpose : Sets a file's time/date stamp
-
- Parms:
- BX <-- (virtual) file handle
- AX <-- time (DOS internal format)
- DX <-- date (DOS internal format)
-
- Description:
-
- The DF_TIME service sets a file's time/date stamp.
-
- If an error occurs, the carry flag is set and AX contains the error code.
-
-
-
-
- Service : DF_WHERE
-
- Module : File Services
-
- Compat : DOS
-
- Purpose : Gets the location of a file's read/write pointer
-
- Parms:
- BX <-- (virtual) file handle
- -------
- DX,AX = location offset
-
- Description:
-
- The DF_WHERE service gets the location of a file's read/write pointer, which
- tells you where the next read or write will begin.
-
- If an error occurs, the carry flag is set and AX contains the error code.
- Possible errors include specification of an invalid handle and (if critical
- error handling is turned on) inability to access the file.
-
- Service : DF_WRITE
-
- Module : File Services
-
- Compat : DOS
-
- Purpose : Writes to a file
-
- Parms:
- BX <-- (virtual) file handle
- CX <-- bytes to write (if not text mode)
- DS:DX <-- pointer to write buffer
-
- Description:
-
- The DF_WRITE service writes to a file.
-
- For files that were opened in text mode, the write operation expects an
- ASCIIZ string. It writes the string to the file without the null terminator,
- then writes a carriage return / linefeed sequence.
-
- If an error occurs, the carry flag is set and AX contains the error code.
- For a list of possible errors, see the end of the ASMWIZ.DOC file. If there
- was no error code returned by DOS but the entire buffer wasn't written, an
- error code of -1 (negative one) is returned.
-
- Service : DV_CHROUT
-
- Module : DOS Video Services
-
- Compat : DOS
-
- Purpose : Displays a character on the screen
-
- Parms:
- AL <-- character to display
-
- Description:
-
- The DV_CHROUT routine displays a character on the screen.
-
- The following control codes are interpreted:
- 7 Bell beep
- 8 Backspace non-destructive backspace
- 9 Tab space over to the next tab stop
- 10 Linefeed move cursor down one line, scrolling as needed
- 13 Carriage Return home cursor on current line
-
- Redirection, if any, is in effect. Text from this service may be redirected
- to any file or device. Pipes can also be used. Almost all windowing
- multitaskers will be able to keep the output from this service in a window.
-
-
-
-
- Service : DV_CLEOLN
-
- Module : DOS Video Services
-
- Compat : DOS (with ANSI)
-
- Purpose : Clears to the end of the line
-
- Parms:
- none
-
- Description:
-
- The DV_CLEOLN service clears from the current cursor position to the end of
- the current screen line, inclusive. It requires ANSI.
-
- Redirection, if any, is in effect. Text from this service may be redirected
- to any file or device. Pipes can also be used. Almost all windowing
- multitaskers will be able to keep the output from this service in a window.
-
- Service : DV_CLS
-
- Module : DOS Video Services
-
- Compat : DOS (with ANSI)
-
- Purpose : Clears the screen
-
- Parms:
- none
-
- Description:
-
- The DV_CLS service clears the screen and homes the cursor to the upper left
- corner. It requires ANSI.
-
- Redirection, if any, is in effect. Text from this service may be redirected
- to any file or device. Pipes can also be used. Almost all windowing
- multitaskers will be able to keep the output from this service in a window.
-
-
-
-
- Service : DV_COLOR
-
- Module : DOS Video Services
-
- Compat : DOS (with ANSI)
-
- Purpose : Sets the default text color
-
- Parms:
- AL <-- default color
-
- Description:
-
- The DV_COLOR service sets the default text color. A color/attribute table is
- given in the ASMWIZ.DOC file. In general, however, the background is in the
- high nybble and ranges 0-7 in text modes, 0 in graphics modes; the foreground
- is in the low nybble and ranges 0-7 in text modes, 0-x in graphics modes.
-
- Redirection, if any, is in effect. Text from this service may be redirected
- to any file or device. Pipes can also be used. Almost all windowing
- multitaskers will be able to keep the output from this service in a window.
-
- Service : DV_CRLF
-
- Module : DOS Video Services
-
- Compat : DOS
-
- Purpose : Displays a <CR><LF> (carriage return and linefeed)
-
- Parms:
- none
-
- Description:
-
- The DV_CRLF routine displays a carriage return and linefeed on the screen.
-
- Redirection, if any, is in effect. Text from this service may be redirected
- to any file or device. Pipes can also be used. Almost all windowing
- multitaskers will be able to keep the output from this service in a window.
-
-
-
-
- Service : DV_DELLINE
-
- Module : DOS Video Services
-
- Compat : DOS (with extended ANSI)
-
- Purpose : Deletes the current screen row
-
- Parms:
- none
-
- Description:
-
- The DV_DELLINE service deletes the row on which the cursor is placed. Any
- rows beneath it are moved up and the bottom line of the screen is cleared to
- a row of spaces in the current screen colors.
-
- This service is only available under extended versions of the ANSI driver,
- such as NANSI.SYS and ZANSI.SYS. It requires the use of an ANSI code which
- is not implemented in the standard IBM subset of the ANSI protocol.
-
- Redirection, if any, is in effect. Text from this service may be redirected
- to any file or device. Pipes can also be used. Almost all windowing
- multitaskers will be able to keep the output from this service in a window.
-
- Service : DV_FIXCOLOR
-
- Module : DOS Video Services
-
- Compat : Any
-
- Purpose : Tells the DV services whether to convert colors to monochrome
-
- Parms:
- AL <-- whether to convert to mono (0 no, 1 yes)
-
- Description:
-
- The DV_FIXCOLOR service tells the DOS Video services whether to
- convert colors to their monochrome equivalents. If not, the colors will
- remain as you originally specified. If so, the colors will be converted to
- appropriate values for use on a monochrome display.
-
- The color-to-mono translation attempts to mimic the original display as
- closely as possible. It analyzes the foreground and background colors by
- their intensity. The results are translated to white on black, bright white
- on black, or black on white. The "blink" attribute is preserved. If the
- original foreground was identical to the background (invisible characters),
- the result will be black on black.
-
- See also the MI_GETSCREEN service, which allows you to automatically detect
- what kind of display is in use.
-
- Service : DV_INSLINE
-
- Module : DOS Video Services
-
- Compat : DOS (with extended ANSI)
-
- Purpose : Inserts a line at the current screen row
-
- Parms:
- none
-
- Description:
-
- The DV_INSLINE service inserts a row at the current cursor location. Any
- rows beneath it are moved down and the new line screen is cleared to a row of
- spaces in the current screen colors.
-
- This service is only available under extended versions of the ANSI driver,
- such as NANSI.SYS and ZANSI.SYS. It requires the use of an ANSI code which
- is not implemented in the standard IBM subset of the ANSI protocol.
-
- Redirection, if any, is in effect. Text from this service may be redirected
- to any file or device. Pipes can also be used. Almost all windowing
- multitaskers will be able to keep the output from this service in a window.
-
-
-
-
- Service : DV_LOCATE
-
- Module : DOS Video Services
-
- Compat : DOS (with ANSI)
-
- Purpose : Sets the cursor position
-
- Parms:
- DH <-- row (1-25)
- DL <-- column (1-40/80)
-
- Description:
-
- The DV_LOCATE service sets the cursor position. It requires ANSI.
-
- Redirection, if any, is in effect. Text from this service may be redirected
- to any file or device. Pipes can also be used. Almost all windowing
- multitaskers will be able to keep the output from this service in a window.
-
- Service : DV_MODE
-
- Module : DOS Video Services
-
- Compat : DOS (with ANSI)
-
- Purpose : Sets the screen mode
-
- Parms:
- AL <-- screen mode (0-6)
-
- Description:
-
- The DV_MODE routine sets the screen mode. This may be any of the following:
-
- Mode Resolu. Type Colr Use Adapter(s)
-
- 0 40x25 b&w 16 text CGA, EGA, VGA
- 1 40x25 color 16 text CGA, EGA, VGA
- 2 80x25 b&w 16 text CGA, EGA, VGA
- def- 3 80x25 color 16 text CGA, EGA, VGA
- 4 320x200 color 4 graphics CGA, EGA, VGA
- 5 320x200 b&w 4 graphics CGA, EGA, VGA
- 6 640x200 color 2 graphics CGA, EGA, VGA
-
- Additional modes may be available, depending on the ANSI driver used. See
- description of the BV_MODE service for information on these additional modes.
-
- Redirection, if any, is in effect. Text from this service may be redirected
- to any file or device. Pipes can also be used. Almost all windowing
- multitaskers will be able to keep the output from this service in a window.
-
- Service : DV_STROUT
-
- Module : DOS Video Services
-
- Compat : DOS
-
- Purpose : Displays a string on the screen
-
- Parms:
- DS:DX <-- ptr to the string to display
-
- Description:
-
- The DV_STROUT routine displays a string on the screen. The string must be in
- ASCIIZ (NUL terminated) format.
-
- The following control codes are interpreted:
- 7 Bell beep
- 8 Backspace non-destructive backspace
- 9 Tab space over to the next tab stop
- 10 Linefeed move cursor down one line, scrolling as needed
- 13 Carriage Return home cursor on current line
-
- Redirection, if any, is in effect. Text from this service may be redirected
- to any file or device. Pipes can also be used. Almost all windowing
- multitaskers will be able to keep the output from this service in a window.
-
- Service : EH_ADDBREAK
-
- Module : Exception Handling Services
-
- Compat : DOS
-
- Purpose : Adds a procedure to be called on ^C or ^Break
-
- Parms:
- DX <-- offset of procedure (from CS: near code is assumed)
- -------
- Flags = CY if there's no room for another procedure
- NC if the procedure was added
-
- Description:
-
- The EH_ADDBREAK service adds a procedure to the list of procedures to be
- called if Control-C or Control-Break is pressed. Up to eight procedures can
- be chained this way. They will be called only if ^C / ^Break has been
- allowed by your program.
-
- This service allows for orderly shutdown if the user chooses to abort the
- program. Files are closed automatically, but interrupt vectors are not
- ordinarily restored on program exit, which can lead to catastrophe if you
- have replaced one of the interrupt handlers. A number of the ASMWIZ services
- do such things and need to execute a shutdown procedure before the program
- terminates: MD_DONE for the 100th-second delay services, for instance. If
- you allow the user to break out of the program with ^C or ^Break, you should
- make sure that any procedures which must be called before program termination
- are added to the break chain by EH_ADDBREAK.
-
- Your shutdown routine must be a NEAR procedure. It may alter any register,
- except SS and SP (the stack must remain intact). Any BIOS or DOS interrupt
- may be called. Your routine is expected to exit with a NEAR return.
-
- If you use EH_ADDBREAK, don't forget to initialize the break handler by
- calling EH_INITBREAK at the start of your program!
-
- Service : EH_CRITDONE
-
- Module : Exception Handling Services
-
- Compat : DOS
-
- Purpose : Terminates the critical error handler
-
- Parms:
- none
-
- Description:
-
- The EH_CRITDONE service terminates the critical error handler installed by
- EH_INITCRIT. You can do this if you wish to use your own critical error
- handler or the default handler, for example. It is not necessary to call
- EH_CRITDONE before terminating your program.
-
- See also the EH_INITCRIT and EH_CRITERR services.
-
- Service : EH_CRITERR
-
- Module : Exception Handling Services
-
- Compat : DOS
-
- Purpose : Checks for critical errors
-
- Parms:
- -------
- Flags = CY if there was a critical error; AH contains the error code.
- NC if there was no error
-
- Description:
-
- The EH_CRITERR service tells you whether a critical error occurred. It
- should be used just after any DOS functions which may cause a critical error.
- This includes virtually all disk operations, DOS-based communications and
- printing. If a critical error occurred, the carry flag will be set, AH will
- contain the critical error code, and AL will contain any normal error code
- that was returned. If no critical error occurred, the flags and registers
- will be untouched, so normal errors (if any) will pass through.
-
- This service clears the critical error code when it is called, so if you call
- it a second time, no error will be returned unless another critical error
- occurred in the meantime.
-
- A list of critical error codes and DOS error codes is included at the end of
- the ASMWIZ.DOC file.
-
- See also the EH_INITCRIT and EH_CRITDONE services.
-
- Example:
- MOV AH,3Ch ; create file
- INT 21h ;
- CALL EH_CRITERR ; see if there was a critical error
- JNC All_Ok ; no errors at all
- CMP AH,0 ; was it a normal error?
- JZ NormalErr ; yep, go take care of it
- ; it was a critical error... AH contains the critical error code.
-
- Service : EH_INITBREAK
-
- Module : Exception Handling Services
-
- Compat : DOS
-
- Purpose : Initializes the ^C / ^Break handler
-
- Parms:
- none
-
- Description:
-
- The EH_INITBREAK service initializes the break handling services. This
- allows you to either ignore Control-C and Control-Break, or to specify one or
- more procedures to call before your program is terminated.
-
- See also the EH_ADDBREAK, EH_SETBREAK, and EH_SUBBREAK services.
-
- Service : EH_INITCRIT
-
- Module : Exception Handling Services
-
- Compat : DOS
-
- Purpose : Initializes the critical error handler
-
- Parms:
- none
-
- Description:
-
- The EH_INITCRIT service initializes and installs a critical error handler.
- This allows your programs to recover from problems that would normally cause
- DOS to display the infamous "A>bort, R>etry, I>gnore" prompt.
-
- When a critical error occurs, the error handler installed by EH_INITCRIT
- makes a note of what kind of error it was, then tells DOS to ignore the
- error. Your program is expected to check for critical errors using the
- EH_CRITERR service.
-
- Note that DOS will not allow certain errors to be ignored. In that case, DOS
- will act as if a Control-Break had been entered. The break handling services
- can catch such conditions. See EH_INITBREAK for more information.
-
- See also the EH_CRITERR and EH_CRITDONE services.
-
- Service : EH_SETBREAK
-
- Module : Exception Handling Services
-
- Compat : DOS
-
- Purpose : Allows you to turn ^Break / ^C on or off
-
- Parms:
- AL <-- 0 to turn breaks off, 1 to turn them on
-
- Description:
-
- The EH_SETBREAK service allows you to turn ^Break / ^C on or off. If you
- turn breaks off, there will be no effect on your program if these keys are
- pressed. If you turn them on, pressing these keys will cause your program to
- be terminated after it calls any procedures specified by EH_ADDBREAK.
-
- Whether breaks are on or off, there is one minor effect that a break key will
- have which can't be prevented: "^C" with a carriage return and linefeed will
- be displayed. That seems to be controlled by the BIOS, rather than DOS, and
- I haven't yet found a way around it. I'll be working on it, though.
-
- If you use EH_SETBREAK, don't forget to initialize the break handler by
- calling EH_INITBREAK at the start of your program!
-
- Service : EH_SUBBREAK
-
- Module : Exception Handling Services
-
- Compat : DOS
-
- Purpose : Removes a procedure from the list to be called on ^C or ^Break
-
- Parms:
- DX <-- offset of procedure (from CS: near code is assumed)
- -------
- Flags = CY if the procedure was not in the list
- NC if the procedure was removed
-
- Description:
-
- The EH_SUBBREAK service removes a procedure to the list of procedures to be
- called if Control-C or Control-Break is pressed. This reverses the effect of
- the EH_ADDBREAK service.
-
- Service : FI_COMPLETE
-
- Module : Filename Manipulation Services
-
- Compat : DOS
-
- Purpose : Completes a filespec
-
- Parms:
- DS:SI <-- ptr to filespec
- DS:BX <-- ptr to default extension (1-3 bytes)
- ES:DI <-- ptr to result buffer (80 bytes minimum)
- -------
- flags: CY = the filespec is not valid
-
- Description:
-
- The FI_COMPLETE service completes a file specification. If no drive was
- specified, the current drive will be inserted. The directory specification
- will be converted to an absolute path, with "." and ".." references also
- resolved. If there is no filename, "*.*" will be used. If there is a
- filename without an extension, the specified default extension will be added.
-
- Note that this service translates filespecs almost, but not quite, the same
- as DOS would. The final part of a filespec is assumed to be a filename
- unless it ends in "\". This means that something like "C:\BIN" will be
- translated to "C:\BIN." (if the default extension is null). If you want to
- specify a directory named BIN, you would use the form "C:\BIN\", which would
- be translated to "C:\BIN\*.*". This may seem like a bit of an inconvenience,
- but it removes a dangerous ambiguity from file specification.
-
- This service does not check to see if the drive or directory specified is
- valid. It does check to make sure that the specification is valid and will
- trim over-long file or directory names appropriately. Unlike DOS, directory
- specifications are not allowed to contain extensions, but few people use that
- capability in any event. I'll see about adding it to a future version,
- however.
-
- Service : FI_MATCH (formerly MI_MATCHFILE)
-
- Module : Filename Manipulation Services
-
- Compat : Any
-
- Purpose : Determines whether a filename matches a given pattern
-
- Parms:
- DS:SI <-- ptr to pattern (which may contain wildcards)
- ES:DI <-- ptr to filename (which may not contain drive or path specs)
- -------
- flags: ZF = the filename matches the pattern
- NZ = the filename does not match the pattern
-
- Description:
-
- The FI_MATCH service compares a filename with a specified pattern. The
- pattern may contain the "*" or "?" wildcards. This pattern-matching service
- works just the way DOS does. It can be used for finding a desired set of
- matches within a list of known files, for excluding an unwanted set of files
- from a directory list, and so forth.
-
- The DOS "DEL" command is used as a basis for this matcher. Thus, using "*"
- as a pattern is equivalent to using "*.", not "*.*" as "DIR" would interpret
- the pattern. The matcher uses the more conservative algorithm in an attempt
- to avoid excessive broadness in its matches. If you prefer otherwise, simply
- have your program replace the "*" pattern with "*.*" before calling this
- service.
-
- Service : FI_PATTERN
-
- Module : Filename Manipulation Services
-
- Compat : Any
-
- Purpose : Pushes a filename through a pattern specification
-
- Parms:
- DS:SI <-- pointer to filename
- DS:BX <-- pointer to pattern
- ES:DI <-- pointer to new filename (buffer must be 13 bytes minimum)
- -------
- Flags = CY for some errors
-
- Description:
-
- The FI_PATTERN service pushes a filename through a specified pattern. This
- would be used for creating a replacement for the COPY command, for example.
- If you entered a filename of "EXAMPLE.ASM" and a pattern of "*.BAK", for
- instance, the result would be "EXAMPLE.BAK".
-
- This service expects filenames without drive or directory specifications.
- Wildcards are allowed in the pattern, but not in the filename. The carry
- flag will be set on return if the filename or pattern were malformed
- (basically, just if they were over 8 chars + "." + 3 chars).
-
- Service : FI_SPLIT
-
- Module : Filename Manipulation Services
-
- Compat : Any
-
- Purpose : Splits a path specification into drive, directory, and filename
-
- Parms:
- DS:SI <-- pointer to path specification
- ES:DI <-- pointer to result buffer (minimum 80 bytes)
-
- Description:
-
- The FI_SPLIT service takes a path specification apart into its components.
- Although a full path spec is not required, it is probably a good idea to make
- sure that the spec is reasonable beforehand, as wildly erroneous path specs
- may cause the results to overflow your result buffer.
-
- The results are stored as a series of ASCIIZ strings. The drive will be at
- offset 0, the directory at offset 2, and the filename at offset 67. As you
- might guess, then, the drive is up to one character (plus nul), the directory
- is up to 64 chars (plus nul), and the filename is up to 12 chars (plus nul).
-
- Service : G4_BOX
-
- Module : Graphics Services
-
- Compat : Clone
-
- Purpose : Draws a box
-
- Parms:
- CX <-- left X coordinate (0-319)
- DX <-- top Y coordinate (0-199)
- SI <-- right X coordinate (0-319)
- DI <-- bottom Y coordinate (0-199)
- AH <-- whether to fill box (0 no, 1 yes)
- AL <-- color (0-3)
-
- Description:
-
- The G4_BOX service displays a box on the screen. The screen must be in
- Mode 4 or 5 (CGA 320x200).
-
-
-
-
-
- Service : G4_GETPEL
-
- Module : Graphics Services
-
- Compat : Clone
-
- Purpose : Gets the current color of a point
-
- Parms:
- CX <-- X coordinate (0-319)
- DX <-- Y coordinate (0-199)
- -------
- AL = color (0-3)
-
- Description:
-
- The G4_GETPEL service gets the current color of a specified point. The
- screen must be in Mode 4 or 5 (CGA 320x200). Why "pel"? Graphics points are
- also known as pixels or pels.
-
- Service : G4_LINE
-
- Module : Graphics Services
-
- Compat : Clone
-
- Purpose : Draws a line
-
- Parms:
- CX <-- starting X coordinate (0-319)
- DX <-- starting Y coordinate (0-199)
- SI <-- ending X coordinate (0-319)
- DI <-- ending Y coordinate (0-199)
- AL <-- color (0-3)
-
- Description:
-
- The G4_LINE service displays a line on the screen. The screen must be in
- Mode 4 or 5 (CGA 320x200).
-
- Drawing diagonal lines is a bit slow and will be optimized in a future
- release. Vertical and horizontal line drawing is extremely fast, however.
- For the CGA, horizontal line drawing is the fastest.
-
-
-
-
- Service : G4_PLOT
-
- Module : Graphics Services
-
- Compat : Clone
-
- Purpose : Sets the color of a point
-
- Parms:
- CX <-- X coordinate (0-319)
- DX <-- Y coordinate (0-199)
- AL <-- color (0-3)
-
- Description:
-
- The G4_PLOT service sets the current color of a specified point. The screen
- must be in Mode 4 or 5 (CGA 320x200). Why "pel"? Graphics points are also
- known as pixels or pels.
-
- Service : G6_BOX
-
- Module : Graphics Services
-
- Compat : Clone
-
- Purpose : Draws a box
-
- Parms:
- CX <-- left X coordinate (0-639)
- DX <-- top Y coordinate (0-199)
- SI <-- right X coordinate (0-639)
- DI <-- bottom Y coordinate (0-199)
- AH <-- whether to fill box (0 no, 1 yes)
- AL <-- color (0-1)
-
- Description:
-
- The G6_BOX service displays a box on the screen. The screen must be in
- Mode 6 (CGA 640x200).
-
-
-
-
-
- Service : G6_GETPEL
-
- Module : Graphics Services
-
- Compat : Clone
-
- Purpose : Gets the current color of a point
-
- Parms:
- CX <-- X coordinate (0-639)
- DX <-- Y coordinate (0-199)
- -------
- AL = color (0-1)
-
- Description:
-
- The G6_GETPEL service gets the current color of a specified point. The
- screen must be in Mode 6 (CGA 640x200). Why "pel"? Graphics points are also
- known as pixels or pels.
-
- Service : G6_LINE
-
- Module : Graphics Services
-
- Compat : Clone
-
- Purpose : Draws a line
-
- Parms:
- CX <-- starting X coordinate (0-639)
- DX <-- starting Y coordinate (0-199)
- SI <-- ending X coordinate (0-639)
- DI <-- ending Y coordinate (0-199)
- AL <-- color (0-1)
-
- Description:
-
- The G6_LINE service displays a line on the screen. The screen must be in
- Mode 6 (CGA 640x200).
-
- Drawing diagonal lines is a bit slow and will be optimized in a future
- release. Vertical and horizontal line drawing is extremely fast, however.
- For the CGA, horizontal line drawing is the fastest.
-
-
-
-
- Service : G6_PLOT
-
- Module : Graphics Services
-
- Compat : Clone
-
- Purpose : Sets the color of a point
-
- Parms:
- CX <-- X coordinate (0-639)
- DX <-- Y coordinate (0-199)
- AL <-- color (0-1)
-
- Description:
-
- The G6_PLOT service sets the current color of a specified point. The screen
- must be in Mode 6 (CGA 640x200). Why "pel"? Graphics points are also known
- as pixels or pels.
-
- Service : GD_BOX
-
- Module : Graphics Services
-
- Compat : Clone
-
- Purpose : Draws a box
-
- Parms:
- CX <-- left X coordinate (0-319)
- DX <-- top Y coordinate (0-199)
- SI <-- right X coordinate (0-319)
- DI <-- bottom Y coordinate (0-199)
- AH <-- whether to fill box (0 no, 1 yes)
- AL <-- color (0-15)
-
- Description:
-
- The GD_BOX service displays a box on the screen. The screen must be in
- Mode 0Dh (EGA 320x200).
-
- Service : GD_LINE
-
- Module : Graphics Services
-
- Compat : Clone
-
- Purpose : Draws a line
-
- Parms:
- CX <-- starting X coordinate (0-319)
- DX <-- starting Y coordinate (0-199)
- SI <-- ending X coordinate (0-319)
- DI <-- ending Y coordinate (0-199)
- AL <-- color (0-15)
-
- Description:
-
- The GD_LINE service displays a line on the screen. The screen must be in
- Mode 0Dh (EGA 320x200).
-
- Drawing diagonal lines is a bit slow and will be optimized in a future
- release. Vertical and horizontal line drawing is extremely fast, however.
- For the EGA, vertical line drawing is the fastest.
-
-
-
-
- Service : GD_PLOT
-
- Module : Graphics Services
-
- Compat : Clone
-
- Purpose : Sets the color of a point
-
- Parms:
- CX <-- X coordinate (0-319)
- DX <-- Y coordinate (0-199)
- AL <-- color (0-15)
-
- Description:
-
- The GD_PLOT service sets the current color of a specified point. The screen
- must be in Mode 0Dh (EGA 320x200). Why "pel"? Graphics points are also known
- as pixels or pels.
-
- Service : GE_BOX
-
- Module : Graphics Services
-
- Compat : Clone
-
- Purpose : Draws a box
-
- Parms:
- CX <-- left X coordinate (0-639)
- DX <-- top Y coordinate (0-199/349)
- SI <-- right X coordinate (0-639)
- DI <-- bottom Y coordinate (0-199/349)
- AH <-- whether to fill box (0 no, 1 yes)
- AL <-- color (0-15)
-
- Description:
-
- The GE_BOX service displays a box on the screen. The screen must be in
- Mode 0Eh (EGA 640x200) or Mode 10h (EGA 640x350).
-
- Service : GE_LINE
-
- Module : Graphics Services
-
- Compat : Clone
-
- Purpose : Draws a line
-
- Parms:
- CX <-- starting X coordinate (0-639)
- DX <-- starting Y coordinate (0-199/349)
- SI <-- ending X coordinate (0-639)
- DI <-- ending Y coordinate (0-199/349)
- AL <-- color (0-15)
-
- Description:
-
- The GE_LINE service displays a line on the screen. The screen must be in
- Mode 0Eh (EGA 640x200) or Mode 10h (EGA 640x350).
-
- Drawing diagonal lines is a bit slow and will be optimized in a future
- release. Vertical and horizontal line drawing is extremely fast, however.
- For the EGA, vertical line drawing is the fastest.
-
-
-
-
- Service : GE_PLOT
-
- Module : Graphics Services
-
- Compat : Clone
-
- Purpose : Sets the color of a point
-
- Parms:
- CX <-- X coordinate (0-639)
- DX <-- Y coordinate (0-199/349)
- AL <-- color (0-15)
-
- Description:
-
- The GE_PLOT service sets the current color of a specified point. The screen
- must be in Mode 0Eh (EGA 640x200) or Mode 10h (EGA 640x350). Why "pel"?
- Graphics points are also known as pixels or pels.
-
- Service : GH_BOX
-
- Module : Graphics Services
-
- Compat : Clone
-
- Purpose : Draws a box
-
- Parms:
- CX <-- left X coordinate (0-719)
- DX <-- top Y coordinate (0-347)
- SI <-- right X coordinate (0-719)
- DI <-- bottom Y coordinate (0-347)
- AH <-- whether to fill box (0 no, 1 yes)
- AL <-- color (0-1)
-
- Description:
-
- The GH_BOX service displays a box on the screen. The screen must be in
- Hercules graphics mode. It is not actually important that the upper left
- corner and lower right corner of the box be specified in that order.
-
-
-
-
-
- Service : GH_GETPEL
-
- Module : Graphics Services
-
- Compat : Clone
-
- Purpose : Gets the current color of a point
-
- Parms:
- CX <-- X coordinate (0-719)
- DX <-- Y coordinate (0-347)
- -------
- AL = color (0-1)
-
- Description:
-
- The GH_GETPEL service gets the current color of a specified point. The
- screen must be in Hercules graphics mode. Why "pel"? Graphics points are
- also known as pixels or pels.
-
- Service : GH_LINE
-
- Module : Graphics Services
-
- Compat : Clone
-
- Purpose : Draws a line
-
- Parms:
- CX <-- starting X coordinate (0-719)
- DX <-- starting Y coordinate (0-347)
- SI <-- ending X coordinate (0-719)
- DI <-- ending Y coordinate (0-347)
- AL <-- color (0-1)
-
- Description:
-
- The GH_LINE service displays a line on the screen. The screen must be in
- Hercules graphics mode.
-
- Drawing diagonal lines is a bit slow and will be optimized in a future
- release. Vertical and horizontal line drawing is extremely fast, however.
-
-
-
-
- Service : GH_PLOT
-
- Module : Graphics Services
-
- Compat : Clone
-
- Purpose : Sets the color of a point
-
- Parms:
- CX <-- X coordinate (0-719)
- DX <-- Y coordinate (0-347)
- AL <-- color (0-1)
-
- Description:
-
- The GH_PLOT service sets the current color of a specified point. The screen
- must be in Hercules graphics mode. Why "pel"? Graphics points are also known
- as pixels or pels.
-
- Service : HG_CHROUT
-
- Module : Hercules Graphics Services
-
- Compat : Clone
-
- Purpose : Displays a character on the screen
-
- Parms:
- AL <-- character to display
-
- Description:
-
- The HG_CHROUT routine displays a character on the screen. The screen must be
- in Hercules graphics mode.
-
- The following control codes are interpreted:
- 7 Bell beep
- 8 Backspace non-destructive backspace
- 9 Tab space over to the next tab stop
- 10 Linefeed move cursor down one line, scrolling as needed
- 12 Formfeed clear screen and home cursor
- 13 Carriage Return home cursor on current line
-
- Redirection, if any, is ignored. Windowing multitaskers will not be able to
- keep the output from this service in a window.
-
-
-
-
- Service : HG_CLEOLN
-
- Module : Hercules Graphics Services
-
- Compat : Clone
-
- Purpose : Clears to the end of the line
-
- Parms:
- none
-
- Description:
-
- The HG_CLEOLN service clears from the current cursor position to the end of
- the current screen line, inclusive. The screen must be in Hercules graphics
- mode.
-
- Redirection, if any, is ignored. Windowing multitaskers will not be able to
- keep the output from this service in a window.
-
- Service : HG_CLS
-
- Module : Hercules Graphics Services
-
- Compat : Clone
-
- Purpose : Clears the screen
-
- Parms:
- none
-
- Description:
-
- The HG_CLS service clears the screen and homes the cursor to the upper left
- corner. The screen must be in Hercules graphics mode.
-
- Redirection, if any, is ignored. Windowing multitaskers will not be able to
- keep the output from this service in a window.
-
-
-
-
- Service : HG_COLOR
-
- Module : Hercules Graphics Services
-
- Compat : Clone
-
- Purpose : Sets the default text color
-
- Parms:
- AL <-- default color
-
- Description:
-
- The HG_COLOR service sets the default text color. The background is in the
- high nybble and the foreground in the low nybble. Colors may be 0 (black) or
- 1 (white), giving the following possibilities:
-
- Fore Back Color in AL
- ----- ----- -----------
- black black 00h
- black white 10h (reverse video)
- white black 01h (normal video)
- white white 11h
-
-
- Redirection, if any, is ignored. Windowing multitaskers will not be able to
- keep the output from this service in a window.
-
- Service : HG_CRLF
-
- Module : Hercules Graphics Services
-
- Compat : Clone
-
- Purpose : Displays a <CR><LF> (carriage return and linefeed)
-
- Parms:
- none
-
- Description:
-
- The HG_CRLF routine displays a carriage return and linefeed on the screen.
- The screen must be in Hercules graphics mode.
-
- Redirection, if any, is ignored. Windowing multitaskers will not be able to
- keep the output from this service in a window.
-
-
-
-
- Service : HG_GETCOLOR
-
- Module : Hercules Graphics Services
-
- Compat : Clone
-
- Purpose : Gets the default text color
-
- Parms:
- -------
- AL = default color
-
- Description:
-
- The HG_GETCOLOR service gets the default text color. The background is in
- the high nybble and the foreground in the low nybble. Colors may be 0
- (black) or 1 (white), giving the following possibilities:
-
- Fore Back Color in AL
- ----- ----- -----------
- black black 00h
- black white 10h (reverse video)
- white black 01h (normal video)
- white white 11h
-
-
- Redirection, if any, is ignored. Windowing multitaskers will not be able to
- keep the output from this service in a window.
-
- Service : HG_LOCATE
-
- Module : Hercules Graphics Services
-
- Compat : Clone
-
- Purpose : Sets the cursor position
-
- Parms:
- DH <-- row (1-43)
- DL <-- column (1-90)
-
- Description:
-
- The HG_LOCATE service sets the cursor position. The screen must be in
- Hercules graphics mode.
-
- Redirection, if any, is ignored. Windowing multitaskers will not be able to
- keep the output from this service in a window.
-
- Service : HG_MODE
-
- Module : Hercules Graphics Services
-
- Compat : Clone
-
- Purpose : Sets the screen mode
-
- Parms:
- AL <-- screen mode (0-1)
-
- Description:
-
- The HG_MODE service sets the screen mode. Since the Hercules graphics mode
- is not assigned a BIOS mode number, I've set up an arbitrary system. The
- mode may be either:
-
- Mode Resolu. Use Notes
-
- 0 80x25 text same as BIOS mode 7: normal MDA
- 1 90x43 graphics this is a 720x348 graphics mode
-
- The HG services are designed for use in Hercules graphics mode. When in text
- mode, the Hercules operates like an ordinary MDA, so you should use the MV,
- BV, or DV services instead.
-
- Redirection, if any, is ignored. Windowing multitaskers will not be able to
- keep the output from this service in a window.
-
-
-
-
- Service : HG_STROUT
-
- Module : Hercules Graphics Services
-
- Compat : Clone
-
- Purpose : Displays a string on the screen
-
- Parms:
- DS:DX <-- ptr to the string to display
-
- Description:
-
- The HG_STROUT routine displays a string on the screen. The string must be in
- ASCIIZ (NUL terminated) format. The screen must be in Hercules graphics
- mode.
-
- The following control codes are interpreted:
- 7 Bell beep
- 8 Backspace non-destructive backspace
- 9 Tab space over to the next tab stop
- 10 Linefeed move cursor down one line, scrolling as needed
- 12 Formfeed clear screen and home cursor
- 13 Carriage Return home cursor on current line
-
- Redirection, if any, is ignored. Windowing multitaskers will not be able to
- keep the output from this service in a window.
-
- Service : HG_WHERE
-
- Module : Hercules Graphics Services
-
- Compat : Clone
-
- Purpose : Gets the cursor position
-
- Parms:
- -------
- DH = row (1-43)
- DL = column (1-90)
-
- Description:
-
- The HG_WHERE service gets the cursor position. The screen must be in
- Hercules graphics mode.
-
- Redirection, if any, is ignored. Windowing multitaskers will not be able to
- keep the output from this service in a window.
-
- Service : MA_ADD32
-
- Module : Math (32-bit) Services
-
- Compat : Any
-
- Purpose : Adds two unsigned long integers
-
- Parms:
- DS:SI <-- first operand
- DS:SI+4 <-- second operand
- -------
- DS:SI+8 = result
-
- Description:
-
- The MA_ADD32 routine adds two unsigned long integers, giving a result of the
- same type. Since such numbers are rather bulky, they are passed through a
- buffer rather than through registers. The numbers in the buffer are stored
- in normal Intel format, least significant word to most significant word. The
- buffer should look something like this:
-
- FIRST32 dd ?
- SECOND32 dd ?
- RESULT32 dd ?
-
- Service : MA_DIV32
-
- Module : Math (32-bit) Services
-
- Compat : Any
-
- Purpose : Divides an unsigned "near very long" integer by a long integer
-
- Parms:
- DS:SI <-- dividend (64 bits: high bit must be zero)
- DS:SI+8 <-- divisor (unsigned long integer)
- -------
- DS:SI+12 = quotient (unsigned long integer)
- DS:SI+16 = remainder (unsigned long integer)
-
- Description:
-
- The MA_DIV32 routine divides an unsigned 63-bit integer by an unsigned long
- integer, giving a quotient and remainder.
-
- Since the numbers are rather bulky, they are passed through a buffer rather
- than through registers. The numbers in the buffer are stored in normal Intel
- format, least significant word to most significant word. The buffer should
- look something like this:
-
- FIRST64 dq ?
- SECOND32 dd ?
- RESULT32 dd ?
- REMAIN32 dd ?
-
- Note that since this service uses unsigned numbers, it is possible to use it
- to divide a 32-bit quantity by another 32-bit quantity, giving a 32-bit
- result. In that case, just convert the 32-bit dividend to 64 bits by making
- the upper 32 bits zero. The BC_LONG2ASC service uses this approach in the
- course of its work.
-
- Service : MA_MUL32
-
- Module : Math (32-bit) Services
-
- Compat : Any
-
- Purpose : Multiplies two unsigned long integers
-
- Parms:
- DS:SI <-- first operand
- DS:SI+4 <-- second operand
- -------
- DS:SI+8 = result (64 bits)
-
- Description:
-
- The MA_MUL32 routine multiplies two unsigned long integers, giving a result
- of a type that might be called an unsigned very long integer (64 bits).
- Since such numbers are rather bulky, they are passed through a buffer rather
- than through registers. The numbers in the buffer are stored in normal Intel
- format, least significant word to most significant word. The buffer should
- look something like this:
-
- FIRST32 dd ?
- SECOND32 dd ?
- RESULT64 dq ?
-
- Note that since this service uses unsigned numbers, it is possible to use it
- to multiply a 32-bit quantity by a 16-bit quantity, giving (maybe) a 32-bit
- result. In that case, just convert the 16-bit quantity to 32 bits by making
- the upper 16 bits zero; if the next-to-highest word of the result is nonzero,
- there was an overflow, and the result did not fit into 32 bits.
-
- Service : MA_SUB32
-
- Module : Math (32-bit) Services
-
- Compat : Any
-
- Purpose : Subtracts one unsigned long integer from another
-
- Parms:
- DS:SI <-- first operand
- DS:SI+4 <-- second operand
- -------
- DS:SI+8 = result
-
- Description:
-
- The MA_SUB32 routine subtracts one unsigned long integer from another, giving
- a result of the same type. Since such numbers are rather bulky, they are
- passed through a buffer rather than through registers. The numbers in the
- buffer are stored in normal Intel format, least significant word to most
- significant word. The buffer should look something like this:
-
- FIRST32 dd ?
- SECOND32 dd ?
- RESULT32 dd ?
-
- Service : MD_DELAY
-
- Module : Delay Services
-
- Compat : Clone
-
- Purpose : Delays for a number of 100ths of seconds
-
- Parms:
- CX <-- delay (0-32767)
-
- Description:
-
- The MD_DELAY service waits for a specified number of clock ticks. This is
- based on the timer system initialized by the MD_INIT service. Timer #0 is
- used by MD_DELAY, so you should avoid Timer #0 if you use MD_DELAY.
-
- If you use the 100th-second time services, it is vital that you initialize
- them with MD_INIT (at the start of your program) and terminate them with
- MD_DONE (at the end of your program).
-
- Since the system clock is maintained via the interrupt system, interrupts
- will be enabled for the duration of this service, to avoid an infinite delay.
-
- This service has been designed to accommodate multitaskers. If another task
- is in operation, the delay may be a trifle longer than expected, however.
-
-
-
-
- Service : MD_DONE
-
- Module : Delay Services
-
- Compat : Clone
-
- Purpose : Terminates the 100th-second timer handler
-
- Parms:
- none
-
- Description:
-
- The MD_DONE service terminates the 100th-second timer handler. The original
- timer interrupt is restored and the system clock is reset to 18.2 cycles per
- second, which is presumed to have been the original speed.
-
- If you use the 100th-second time services, it is vital that you initialize
- them with MD_INIT (at the start of your program) and terminate them with
- MD_DONE (at the end of your program).
-
- Service : MD_GETTIMER
-
- Module : Delay Services
-
- Compat : Clone
-
- Purpose : Gets one of the 100th-second countdown timers
-
- Parms:
- AL <-- timer number (0-3)
- -------
- CX = time count (0-65,534)
-
- Description:
-
- The MD_GETTIMER service gets the time remaining from one of the 100th-second
- countdown timers. The time returned will be in 200ths of seconds. It is
- expected that you will normally just compare the result with zero to see if
- the countdown time has elapsed. See the MD_SETTIMER service for details.
-
- If you use the 100th-second time services, it is vital that you initialize
- them with MD_INIT (at the start of your program) and terminate them with
- MD_DONE (at the end of your program).
-
-
-
-
- Service : MD_INIT
-
- Module : Delay Services
-
- Compat : Clone
-
- Purpose : Initializes the 100th-second timer handler
-
- Parms:
- none
-
- Description:
-
- The MD_INIT service initializes the 100th-second timer handler. The system
- clock is reset to 200.27 cycles per second. The old timer interrupt is
- executed every 11th time through, so as to maintain the usual 18.2 cycles per
- second for the rest of the system.
-
- If you use the 100th-second time services, it is vital that you initialize
- them with MD_INIT (at the start of your program) and terminate them with
- MD_DONE (at the end of your program).
-
- The MD_INIT service provides up to four countdown timers which may be
- accessed by the MD_SETTIMER and MD_GETTIMER services. These countdown timers
- decrement their respective counts at a rate of 100 per second. The count is
- not allowed to go below zero.
-
- Service : MD_SETTIMER
-
- Module : Delay Services
-
- Compat : Clone
-
- Purpose : Sets one of the 100th-second countdown timers
-
- Parms:
- AL <-- timer number (0-3)
- CX <-- time count (0-32,767)
-
- Description:
-
- The MD_SETTIMER service sets one of the 100th-second countdown timers going.
- The time will be decremented once every 100th of a second until it reaches
- zero. This is useful for occasions where you need to do something within a
- specified amount of time. For instance, in a communications program you
- might want a "receive character" routine to keep looking for a character for
- up to a second before returning a "time out" error.
-
- Up to four countdown timers are available. Timer 0 is used by MD_DELAY, so
- don't access it if you wish to use the MD_DELAY service. Timer 1 is reserved
- for the upcoming MU_MUSIC music service, so don't use it if you would like to
- add music to a future program. Timers 2-3 are always available for your own
- use.
-
- The time count is restricted to a maximum of 32,767 because it is doubled
- internally. The timer runs at 200 cycles/second to improve accuracy and make
- it easy to maintain the old rate of 18.2 cycles/second for the system.
-
- If you use the 100th-second time services, it is vital that you initialize
- them with MD_INIT (at the start of your program) and terminate them with
- MD_DONE (at the end of your program).
-
-
-
-
- Service : MD_TICK
-
- Module : Delay Services
-
- Compat : Clone
-
- Purpose : Delays for a number of clock ticks (18ths of seconds)
-
- Parms:
- CX <-- delay (0-65535)
-
- Description:
-
- The MD_TICK service waits for a specified number of clock ticks. This is
- based on the system clock. There are about 18.2 ticks per second, so the
- delay for one tick is approximately 1/18th second.
-
- Since the system clock is maintained via the interrupt system, interrupts
- will be enabled for the duration of this service, to avoid an infinite delay.
-
- This service has been designed to accommodate multitaskers. If another task
- is in operation, the delay may be a trifle longer than expected, however.
-
- Service : ME_BINFO
-
- Module : Memory Services
-
- Compat : Clone
-
- Purpose : Gets information about a BSAVE-format memory image
-
- Parms:
- DS:DX <-- pointer to ASCIIZ filename
- -------
- ES:SI = memory image segment:offset
- CX = memory image size (bytes)
- Flags = CY if unable to get information; AX = error code
-
- Description:
-
- The ME_BINFO service gets information about a memory image stored in a
- BSAVE-format file. The information is retrieved from the file header.
-
- The BSAVE format is used by BASIC in storing memory images to disk. It is
- typically used for saving screen images.
-
- If there is an error in reading from the specified file, the carry flag will
- be set and an error code will be returned. The error code corresponds with
- normal DOS error codes, except for the code of -1, which means that the file
- was not in BSAVE format.
-
- The following information may prove helpful in decoding picture files:
-
- Segment Picture type
-
- B000h Monochrome (Hercules graphics)
- B800h CGA
- A000h EGA (black and white, unless there are multiple files)
-
- Service : ME_BLOAD
-
- Module : Memory Services
-
- Compat : Clone
-
- Purpose : Restores a memory image from a BSAVE-format file
-
- Parms:
- DS:DX <-- pointer to ASCIIZ filename
- -------
- Flags = CY if unable to load memory image; AX = error code
-
- Description:
-
- The ME_BLOAD service restores a memory image from a file in BSAVE format.
- The image is restored to the location from which it was originally saved.
-
- The BSAVE format is used by BASIC in storing memory images to disk. It is
- typically used for saving screen images.
-
- If there is an error in reading from the specified file, the carry flag will
- be set and an error code will be returned. The error code corresponds with
- normal DOS error codes, except for the code of -1, which means that the file
- was not in BSAVE format.
-
- The following information may prove helpful in decoding picture files:
-
- Segment Picture type
-
- B000h Monochrome (Hercules graphics)
- B800h CGA
- A000h EGA (black and white, unless there are multiple files)
-
- Service : ME_BSAVE
-
- Module : Memory Services
-
- Compat : Clone
-
- Purpose : Saves a memory image to a BSAVE-format file
-
- Parms:
- DS:DX <-- pointer to ASCIIZ filename
- ES:SI <-- pointer to start of area to be saved
- CX <-- size of memory area (bytes)
- -------
- Flags = CY if unable to save memory image; AX = error code
-
- Description:
-
- The ME_BSAVE service saves a memory image to a file in BSAVE format.
-
- The BSAVE format is used by BASIC in storing memory images to disk. It is
- typically used for saving screen images.
-
- If there is an error in writing to the specified file, the carry flag will
- be set and an error code will be returned. The error code corresponds with
- normal DOS error codes.
-
- The following information may prove helpful in saving picture files (note
- that the offset is normally zero):
-
- Segment Picture type Length
-
- B000h Hercules graphics 16,384
- B800h CGA graphics 16,384
- A000h EGA (black and white) 28,000
-
- It is possible to save EGA pictures in color, using four files rather than
- one. This is a bit awkward, though, so we'll save it for a future version of
- ASMWIZ (using the PCX file format, instead).
-
- Service : ME_HIGHOFS
-
- Module : Memory Services
-
- Compat : Any
-
- Purpose : Converts an address to have the lowest segment and highest offset
-
- Parms:
- DX:AX <-- segment:offset
- -------
- DX:AX = converted segment:offset
-
- Description:
-
- The ME_HIGHOFS service converts an address so that it has the highest
- possible offset and lowest possible segment. This allows you to work
- backwards from this address by up to 65,519 bytes without wrapping around
- within the segment, which is a convenience for reverse REP operations, for
- example. The resulting offset will be in the range FFF0h - FFFFh, unless the
- address is extremely low in memory, in which case the range may be lower.
-
-
-
-
- Service : ME_LOWOFS
-
- Module : Memory Services
-
- Compat : Any
-
- Purpose : Converts an address to have the highest segment and lowest offset
-
- Parms:
- DX:AX <-- segment:offset
- -------
- DX:AX = converted segment:offset
-
- Description:
-
- The ME_LOWOFS service converts an address so that it has the lowest possible
- offset and highest possible segment. This allows you to work forwards from
- this address by up to 65,519 bytes without wrapping around within the
- segment, which is a convenience for forward REP operations, for example. The
- resulting offset will be in the range 0000h - 000Fh.
-
- Service : ME_MOVE
-
- Module : Memory Services
-
- Compat : Any
-
- Purpose : Moves a block of data from one place to another
-
- Parms:
- DS:SI <-- source segment:offset
- ES:DI <-- destination segment:offset
- CX <-- bytes to move (0 - 65,519)
-
- Description:
-
- The ME_MOVE service moves data from one place to another. It automatically
- handles overlaps, so the data will always be copied correctly.
-
- The reason ME_MOVE can only handle up to 65,519 characters rather than a full
- 65,535 is because it uses the ME_LOWOFS and ME_HIGHOFS services rather than
- recalculating and re-normalizing the addresses every time. The loss of a few
- bytes' range is, in most cases, an acceptable price for the vastly increased
- speed. If you need greater range, calling ME_MOVE more than once may be a
- bit of a nuisance, but it will still be considerably faster than the
- recalculation approach.
-
- Service : MI_BOOT
-
- Module : Miscellaneous Services
-
- Compat : Clone
-
- Purpose : Reboots the computer (warm boot)
-
- Parms:
- none
-
- Description:
-
- The MI_BOOT service restarts the computer by performing a warm boot.
-
- I'd provide a "cold boot" service as well, but I've found that doing a cold
- boot is liable to lock up many clones, including some Compaq models. The
- warm boot, however, has worked on every clone to which I've had access.
-
- This service may be accessed by JMP instead of CALL if you prefer. It really
- doesn't matter, since the stack is reset and control is returned to the
- system during the boot process. The JMP is trivially more efficient, though.
-
- Service : MI_GETSCREEN
-
- Module : Miscellaneous Services
-
- Compat : Clone
-
- Purpose : Gets information about the active video display
-
- Parms:
- -------
- AH = adapter type (1-6: MDA, Herc, CGA, EGA, MCGA, VGA)
- AL = color flag (0 color, 1 mono)
-
- Description:
-
- The MI_GETSCREEN service gets vital information about the active display. It
- tells you whether the display is capable of handling color and what kind of
- display adapter is in use.
-
- Note that the color flag will not necessarily be accurate for CGAs. It is
- possible to connect a monochrome monitor to the CGA, but there is no way for
- the computer to detect whether this has been done, so it is assumed that CGAs
- are always color. You should add a "/B" command-line option to your program
- so that the user can specify that a monochrome CGA display is in use ("/B" is
- what Microsoft uses to specify "black and white").
-
- If the adapter is determined to be MDA or Hercules, the interrupt system will
- be turned on and the service will delay for up to 1/9th second as it attempts
- to decide which kind of adapter is in use. The original interrupt status
- will be restored when the service exits.
-
- The ASMWIZ text services allow for automatic conversion of colors to their
- monochrome equivalents, making it easy to handle any display. See the
- BV_FIXCOLOR, DV_FIXCOLOR, or MV_FIXCOLOR service for more information.
-
- Service : MI_PARSE
-
- Module : Miscellaneous Services
-
- Compat : DOS
-
- Purpose : Parses a command line into file specifications and options
-
- Parms:
- DS:SI <-- ptr to command line (for COM files, is CS:0080h)
- ES:DI <-- ptr to filename buffer (recommend 128 bytes)
- ES:BX <-- ptr to option buffer (recommend 128 bytes)
- AL <-- switch character (normally "/" for DOS)
- -------
- AH = number of options
- AL = number of filenames
-
- Description:
-
- The MI_PARSE routine takes the information passed to your program on the
- command line and parses it into filenames and options.
-
- The command line is everything that comes after your program name when the
- user types in the name of your program. It is generally used for passing
- filenames and options to your program. DOS itself is rather crude about such
- matters and simply passes the original input to your program, after removing
- the name of the program itself and any piping or redirection which may have
- been done.
-
- This routine assumes that anything which isn't an option is a filename. Of
- course, this need not be true, but it's a convenient fiction for separating
- the options from the rest of the information.
-
- Options may be delimited by the character of your choice. DOS normally uses
- "/" and assumes "\" is used for specifying paths. Many people prefer the
- *nix convention of "-" for switches and "/" for specifying paths, however, so
- this routine allows for that possibility. DOS will recognize "/" as being
- the same as "\" in any DOS interrupt that accepts paths, so this works out
- fairly well, since *nix folks are accustomed to using "/" as a path
- delimiter. It's somewhat appalling that Microsoft/IBM deliberately chose to
- avoid the *nix conventions, but it is certainly handy that DOS will (more or
- less) accept such usage internally, if not at the command level. Note that
- use of "-" as a switch character means that you will not be able to access
- any files which contain "-" characters in the filename. This is rarely a
- problem, but it can happen.
-
- The two parameter tables, filenames and options, will consist of strings in
- their original order in the command line. Each string will be terminated by
- a null character, in keeping with C usage. The number of strings in each
- parameter table is returned by MI_PARSE in one or another half of the AX
- register, as specified in the "Parms" list, above.
-
- You will normally specify the offset of the command-line within the PSP for
- this service. For COM-format files, this is CS:0080h. For EXE-format files,
- use the initial CS value with the same 0080h offset. With later DOS
- versions, it is possible to ask DOS to give you the segment of the PSP, but
- since many people only have earlier DOS versions, that is not necessarily a
- good idea. Stick with the original CS, if you know it, and you'll be fine.
-
- Service : MI_RANDOM
-
- Module : Miscellaneous Services
-
- Compat : Any
-
- Purpose : Generates a pseudo-random number
-
- Parms:
- DX <-- range of the desired pseudo-random number (1-4000)
- -------
- AX = pseudo-random number (0 to DX - 1)
-
- Description:
-
- The MI_RANDOM service generates pseudo-random numbers within a desired range.
-
- A linear congruential method is used to generate the numbers. The algorithm
- was derived from the book "How to Solve it by Computer", by R. G. Dromey
- (Prentiss-Hall).
-
- See also the MI_RANDOMIZE service, which is used to initialize the random
- number generator.
-
-
-
-
- Service : MI_RANDOMIZE
-
- Module : Miscellaneous Services
-
- Compat : Any / Clone
-
- Purpose : Initializes the pseudo-random number generator
-
- Parms:
- AX <-- random number seed or 0FFFFh
-
- Description:
-
- The MI_RANDOMIZE routine initializes the MI_RANDOM random number generator
- service. You may specify your own random number seed (in which case this
- routine is compatible with any PC) or use 0FFFFh for the routine to pick its
- own seed (in which case this routine is only compatible with clones).
-
- If you specify 0FFFFh, the random number seed is read directly from the timer
- chip's countdown tick, giving a quite adequately random initial seed value.
-
- Specifying your own seed may be done to maximize compatibility with the most
- machines. In that case, you will probably want to get a seed value from the
- DOS time service, using the seconds value. Use of the "hundredths of
- seconds" value is not advised, as it is always zero on some machines.
-
- You might also want to specify your own seed during debugging, to assure you
- of a reproducible set of pseudo-random numbers. The same stream of numbers
- will always be generated from the same seed value.
-
- Service : MI_SCANENV
-
- Module : Miscellaneous Services
-
- Compat : DOS
-
- Purpose : Scans the DOS environment (or similar table) for a specified string
-
- Parms:
- DS:SI <-- ptr to DOS environment
- ES:DI <-- ptr to string for which to seek
- -------
- DS:SI = ptr to parm value (if NC; CY is set if not found)
-
- Description:
-
- The MI_SCANENV routine scans the DOS environment for a specified string and
- returns the value of the parameter which matches that string. If there is no
- matching parameter, the carry flag is set.
-
- You may also use this routine for scanning your own tables if you format them
- like the DOS environment: each entry of the table is an ASCIIZ string which
- contains a parameter name and parameter value, seperated by an "equals" sign.
- The end of the table is marked by an additional NUL character. Matching is
- case-sensitive ("comspec" will not match "COMSPEC").
-
- The segment of the environment is stored at offset 002Ch within the PSP. For
- COM files, the segment is at CS:[002Ch] (see notes under MI_PARSE). Since
- parameters in the environment are stored in uppercase, you should make sure
- that the string for which you seek is also capitalized.
-
- The resulting match, if any, will be pointed to by DS:SI on exit. It is the
- value of the parameter, not the parameter name, which is returned.
-
-
- Example:
- MOV DS,DS:[002Ch] ; assumes CS = DS = ES (COM file)
- XOR SI,SI
- MOV DI,OFFSET TOFIND
- CALL MI_SCANENV
- JC NOTFOUND
- MOV DX,SI
- CALL DV_STROUT
- CALL DV_CRLF
- (etc)
- NOTFOUND:
- (etc)
- TOFIND DB "PATH",0
-
- This example will search the environment for the "PATH" parameter. If a PATH
- exists, it will be displayed, looking perhaps like "D:\;C:\bin" (without the
- quotes).
-
- Service : MO_HIDECURSOR
-
- Module : Mouse Services
-
- Compat : BIOS (Microsoft-type mouse driver)
-
- Purpose : Hides the mouse cursor
-
- Parms:
- none
-
- Description:
-
- The MO_HIDECURSOR service hides the mouse cursor. After using this service,
- the mouse cursor will not be visible, although it will still be there.
-
- This is a somewhat peculiar service. If you use it more than once, it will
- take more than one application of MO_SHOWCURSOR before the cursor actually
- reappears. The mouse driver keeps a "level of invisibility" counter rather
- than simply turning the cursor on and off.
-
-
-
-
- Service : MO_INIT
-
- Module : Mouse Services
-
- Compat : BIOS (Microsoft-type mouse driver)
-
- Purpose : Initialize mouse, if any, and get info about it
-
- Parms:
- -------
- AL = number of buttons (0-3)
-
- Description:
-
- The MO_INIT service initializes the mouse driver and returns the number of
- buttons on the mouse. If no mouse is available, the number of buttons will
- be zero. Otherwise, you can expect 2-3 buttons.
-
- The Microsoft mouse is somewhat unusual in that it has only two buttons.
- Most compatible mice have three. The ASMWIZ mouse services will work with
- either, but will ignore the middle button of three-button mice.
-
- Service : MO_LOCATE
-
- Module : Mouse Services
-
- Compat : BIOS (Microsoft-type mouse driver)
-
- Purpose : Sets the mouse cursor location
-
- Parms:
- DH <-- row (1-25)
- DL <-- column (1-80)
-
- Description:
-
- The MO_LOCATE service sets the mouse cursor position. It works whether or
- not the mouse cursor is visible.
-
- Normally, the mouse driver uses coordinates based on a 640x200 virtual
- screen. In order to make it easier to handle the mouse for text, this
- service automatically converts from an 80x25 format.
-
-
-
-
- Service : MO_RANGE
-
- Module : Mouse Services
-
- Compat : BIOS (Microsoft-type mouse driver)
-
- Purpose : Sets the mouse cursor range
-
- Parms:
- CH <-- top row (1-25)
- CL <-- left column (1-80)
- DH <-- bottom row (1-25)
- DL <-- right column (1-80)
-
- Description:
-
- The MO_RANGE service sets the mouse cursor range. The mouse cursor will be
- constrained to the specified area of the screen.
-
- Normally, the mouse driver uses coordinates based on a 640x200 virtual
- screen. In order to make it easier to handle the mouse for text, this
- service automatically converts from an 80x25 format.
-
- Service : MO_SHOWCURSOR
-
- Module : Mouse Services
-
- Compat : BIOS (Microsoft-type mouse driver)
-
- Purpose : Shows the mouse cursor
-
- Parms:
- none
-
- Description:
-
- The MO_SHOWCURSOR service shows the mouse cursor. After using this service,
- the mouse cursor will (probably) be visible.
-
- See the description of the MO_HIDECURSOR service for details on that
- "probably" caution!
-
-
-
-
- Service : MO_WHERE
-
- Module : Mouse Services
-
- Compat : BIOS (Microsoft-type mouse driver)
-
- Purpose : Gets the mouse cursor location
-
- Parms:
- -------
- AH = right mouse button (0 if not pressed, 1 if pressed)
- AL = left mouse button (0 if not pressed, 1 if pressed)
- DH = row (1-25)
- DL = column (1-80)
-
- Description:
-
- The MO_WHERE service gets the mouse cursor position and current button
- status. It works whether or not the mouse cursor is visible.
-
- Normally, the mouse driver uses coordinates based on a 640x200 virtual
- screen. In order to make it easier to handle the mouse for text, this
- service automatically converts to an 80x25 format.
-
- Service : MU_SOUND
-
- Module : Sound and Music Services
-
- Compat : Clone
-
- Purpose : Produces a sound of the desired frequency and duration
-
- Parms:
- AX <-- frequency of the sound, in cycles per second (Hertz)
- DX <-- duration of the sound (in 1/18th seconds)
-
- Description:
-
- The MU_SOUND routine produces a sound of the specified frequency (about
- 50-4000 is useful) and duration (in 18ths of seconds).
-
- If you are interested in producing music using this service, the following
- table may prove of some use. You can move down an octave by halving the
- frequency for a given note (which can be efficiently accomplished using the
- SHR or SHift Right assembly-language operation). About seven octaves are
- available on the usual PC compatible.
-
- Note Frequency (highest octave)
- ===== =========
- A 3520
- A#,B- 3714
- B 3952
- C 4186
- C#,D- 4434
- D 4698
- D#,E- 4978
- E 5274
- F 5588
- F#,G- 5920
- G 6272
- G#,A- 6644
-
- Service : MV_CHROUT
-
- Module : Machine-level Video Services
-
- Compat : Clone
-
- Purpose : Displays a character on the screen
-
- Parms:
- AL <-- character to display
-
- Description:
-
- The MV_CHROUT routine displays a character on the screen. The screen must be
- in one of the text modes (video modes 0-3, 7).
-
- The following control codes are interpreted:
- 7 Bell beep
- 8 Backspace non-destructive backspace
- 9 Tab space over to the next tab stop
- 10 Linefeed move cursor down one line, scrolling as needed
- 12 Formfeed clear screen and home cursor
- 13 Carriage Return home cursor on current line
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
-
-
-
- Service : MV_CLEOLN
-
- Module : Machine-level Video Services
-
- Compat : Clone
-
- Purpose : Clears to the end of the line
-
- Parms:
- none
-
- Description:
-
- The MV_CLEOLN service clears from the current cursor position to the end of
- the current screen line, inclusive. The screen must be in one of the text
- modes (video modes 0-3, 7).
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
- Service : MV_CLS
-
- Module : Machine-level Video Services
-
- Compat : Clone
-
- Purpose : Clears the screen
-
- Parms:
- none
-
- Description:
-
- The MV_CLS service clears the screen and homes the cursor to the upper left
- corner. The screen must be in one of the text modes (video modes 0-3, 7).
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
-
-
-
- Service : MV_COLOR
-
- Module : Machine-level Video Services
-
- Compat : Clone
-
- Purpose : Sets the default text color
-
- Parms:
- AL <-- default color
-
- Description:
-
- The MV_COLOR service sets the default text color. A color/attribute table is
- given in the ASMWIZ.DOC file. In general, however, the background is in the
- high nybble and ranges 0-7; the foreground is in the low nybble and also
- ranges 0-7. For bright, add 8 to the foreground; for blinking, add 8 to the
- background.
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
- Service : MV_CRLF
-
- Module : Machine-level Video Services
-
- Compat : Clone
-
- Purpose : Displays a <CR><LF> (carriage return and linefeed)
-
- Parms:
- none
-
- Description:
-
- The MV_CRLF routine displays a carriage return and linefeed on the screen.
- The screen must be in one of the text modes (video modes 0-3, 7).
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
-
-
-
- Service : MV_DELCHR
-
- Module : Machine-level Video Services
-
- Compat : Clone
-
- Purpose : Deletes the character at the cursor
-
- Parms:
- none
-
- Description:
-
- The MV_DELCHR service deletes the character on which the cursor is placed.
- Any characters to the right of it are moved left and the rightmost column of
- the screen is cleared to a space in the current screen colors.
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
- Service : MV_DELLINE
-
- Module : Machine-level Video Services
-
- Compat : Clone
-
- Purpose : Deletes the current screen row
-
- Parms:
- none
-
- Description:
-
- The MV_DELLINE service deletes the row on which the cursor is placed. Any
- rows beneath it are moved up and the bottom line of the screen is cleared to
- a row of spaces in the current screen colors.
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
- Service : MV_FIXCOLOR
-
- Module : Machine-level Video Services
-
- Compat : Any
-
- Purpose : Tells the MV services whether to convert colors to monochrome
-
- Parms:
- AL <-- whether to convert to mono (0 no, 1 yes)
-
- Description:
-
- The MV_FIXCOLOR service tells the Machine-level Video services whether to
- convert colors to their monochrome equivalents. If not, the colors will
- remain as you originally specified. If so, the colors will be converted to
- appropriate values for use on a monochrome display.
-
- The color-to-mono translation attempts to mimic the original display as
- closely as possible. It analyzes the foreground and background colors by
- their intensity. The results are translated to white on black, bright white
- on black, or black on white. The "blink" attribute is preserved. If the
- original foreground was identical to the background (invisible characters),
- the result will be black on black.
-
- See also the MI_GETSCREEN service, which allows you to automatically detect
- what kind of display is in use.
-
- Service : MV_FRAME
-
- Module : Machine-level Video Services
-
- Compat : Clone
-
- Purpose : Displays a window frame
-
- Parms:
- CH,CL <-- upper left corner (row 1-25/43, column 1-40/80)
- DH,DL <-- lower right corner (row 1-25/43, column 1-40/80)
- DS:SI <-- frame pointer (SI = -1 to -9 for built-in frame types)
-
- Description:
-
- The MV_FRAME service displays a window frame. You may design your own frame
- or use one of a variety of built-in frames.
-
- If you choose to build your own frame, you must point DS:SI to an eight-byte
- list of characters with which to build the frame. The list should be in this
- order: top left corner, top middle, top right corner, left middle, right
- middle, lower left corner, lower middle, and lower right corner.
-
- You may also choose to use a built-in frame by setting SI in the range -1 to
- -9, as follows:
-
- -1 single line frame
- -2 double line frame
- -3 single horizontal lines, double vertical lines
- -4 double horizontal lines, single vertical lines
- -5 blank block frame (CHR$(32))
- -6 low intensity block frame (CHR$(176))
- -7 medium intensity block frame (CHR$(177))
- -8 high intensity block frame (CHR$(178))
- -9 solid block frame (CHR$(219))
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
- Service : MV_GETCOLOR
-
- Module : Machine-level Video Services
-
- Compat : Clone
-
- Purpose : Gets the default text color
-
- Parms:
- -------
- AL = default color
-
- Description:
-
- The MV_GETCOLOR service gets the default text color. A color/attribute table
- is given in the ASMWIZ.DOC file. In general, however, the background is in
- the high nybble and ranges 0-7; the foreground is in the low nybble and also
- ranges 0-7.
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
-
-
-
- Service : MV_MODE
-
- Module : Machine-level Video Services
-
- Compat : Clone
-
- Purpose : Gets the default screen mode
-
- Parms:
- -------
- AL = mode
-
- Description:
-
- The MV_GETMODE service gets the current screen mode. A table of screen modes
- is given in the ASMWIZ.DOC file.
-
- Service : MV_HIDECURSOR
-
- Module : Machine-level Video Services
-
- Compat : Clone
-
- Purpose : Hides the cursor
-
- Parms:
- none
-
- Description:
-
- The MV_HIDECURSOR service hides the cursor, making it invisible. This does
- not affect normal cursor operation.
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
-
-
-
- Service : MV_INIT
-
- Module : Machine-level Video Services
-
- Compat : Clone
-
- Purpose : Initializes the Machine-level Video Services
-
- Parms:
- none
-
- Description:
-
- The MV_INIT routine initializes the Machine-level Graphics Services. It
- should be used once in your program, before any other Machine-level Graphics
- Services are called.
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
- Service : MV_INSCHR
-
- Module : Machine-level Video Services
-
- Compat : Clone
-
- Purpose : Inserts a space at the cursor position
-
- Parms:
- none
-
- Description:
-
- The MV_INSCHR service inserts a space at the current cursor location. Any
- characters to the right of it are moved right and a space is inserted in the
- current screen colors.
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
-
-
-
- Service : MV_INSLINE
-
- Module : Machine-level Video Services
-
- Compat : Clone
-
- Purpose : Inserts a line at the current screen row
-
- Parms:
- none
-
- Description:
-
- The MV_INSLINE service inserts a row at the current cursor location. Any
- rows beneath it are moved down and the new line screen is cleared to a row of
- spaces in the current screen colors.
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
- Service : MV_LOCATE
-
- Module : Machine-level Video Services
-
- Compat : Clone
-
- Purpose : Sets the cursor position
-
- Parms:
- DH <-- row (1-25)
- DL <-- column (1-40/80)
-
- Description:
-
- The MV_LOCATE service sets the cursor position. The screen must be in one of
- the text modes (video modes 0-3, 7).
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
-
-
-
- Service : MV_MODE
-
- Module : Machine-level Video Services
-
- Compat : Clone
-
- Purpose : Sets the screen mode
-
- Parms:
- AL <-- screen mode (0-3, 7)
-
- Description:
-
- The MV_MODE routine sets the screen mode. This may be any of the following:
-
- Mode Resolu. Type Colr Use Adapter(s)
-
- 0 40x25 b&w 16 text CGA, EGA, VGA
- 1 40x25 color 16 text CGA, EGA, VGA
- 2 80x25 b&w 16 text CGA, EGA, VGA
- 3 80x25 color 16 text CGA, EGA, VGA
- 7 80x25 b&w - text MDA, EGA, VGA
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
- Service : MV_POPUP
-
- Module : Machine-level Video Services
-
- Compat : Clone
-
- Purpose : Displays a pop-up window on the screen
-
- Parms:
- DS:DX <-- pointer to parameter list
-
- Description:
-
- The MV_POPUP service displays a pop-up window on the screen. A variety of
- frames is available for the window. Titles are optional and will be left-
- justified in the top bar of the window if supplied.
-
- Frame types are as follows:
-
- 0 none (blank)
- 1 single lines
- 2 double lines
- 3 single horizontal lines, double vertical lines
- 4 double horizontal lines, single vertical lines
-
- The parameter list should look like this:
-
- Y1 db ? ; top row of window
- X1 db ? ; left column of window
- Y2 db ? ; bottom row of window
- X2 db ? ; right column of window
- FRAMETYPE db ? ; frame type
- FRAMECOLOR db ? ; frame color
- TITLE dw ? ; offset (from DS:) of ASCIIZ title
- ; use 0FFFFh instead if no title is desired
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
- Service : MV_SAVESIZE
-
- Module : Machine-level Video Services
-
- Compat : Any
-
- Purpose : Gets the number of bytes needed to save a screen area
-
- Parms:
- -------
- AX = bytes
-
- Description:
-
- The MV_SAVESIZE service tells you how many bytes will be needed to save an
- area of the screen with MV_SCRSAVE. This is intended as a convenience for
- programs that allocate the required space on the fly. The actual calculation
- looks like this:
-
- Bytes = (RowsToSave * ScreenColumns + ColumnsToSave + 1) * 2
-
- You will need 4,002 bytes to save an entire 80x25 screen.
-
- Service : MV_SCRREST
-
- Module : Machine-level Video Services
-
- Compat : Clone
-
- Purpose : Restores a saved area of the screen
-
- Parms:
- DS:SI <-- pointer to a buffer containing a saved screen area
- DH <-- top row (where to restore to)
- DL <-- left column (where to restore to)
-
- Description:
-
- The MV_SCRREST service restores a saved area of the screen to the display.
- The image may be stored to any location, regardless of where it was saved
- from, as long as the results don't go off the edge of the screen.
-
- Only the upper left corner of the location to which to restore is specified.
- This service calculates the lower left corner from size parameters which are
- stored in the saved screen image.
-
- Text mode (modes 0-3, 7) is required. Only display page zero is supported.
-
- Service : MV_SCRSAVE
-
- Module : Machine-level Video Services
-
- Compat : Clone
-
- Purpose : Saves an area of the screen to a buffer
-
- Parms:
- ES:DI <-- pointer to a buffer to which to save the screen area
- CH <-- top row
- CL <-- left column
- DH <-- bottom row
- DL <-- right column
- -------
- AX = bytes used to store the image
-
- Description:
-
- The MV_SCRSAVE service saves an area of the screen to a buffer. The number
- of bytes used to store the image is returned. You can find out the number of
- bytes that will be needed in advance, if desired, via the MV_SAVESIZE service.
-
- The saved image will be a direct copy of the specified area of the screen.
- The first two bytes of the image will contain the number of rows and columns
- in the image, respectively.
-
- Text mode (modes 0-3, 7) is required. Only display page zero is supported.
-
- Service : MV_SHOWCURSOR
-
- Module : Machine-level Video Services
-
- Compat : Clone
-
- Purpose : Shows the cursor
-
- Parms:
- none
-
- Description:
-
- The MV_SHOWCURSOR service shows the cursor, making it visible. NOTE: This
- service may change the cursor shape if used before MV_HIDECURSOR.
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
-
-
-
- Service : MV_STROUT
-
- Module : Machine-level Video Services
-
- Compat : Clone
-
- Purpose : Displays a string on the screen
-
- Parms:
- DS:DX <-- ptr to the string to display
-
- Description:
-
- The MV_STROUT routine displays a string on the screen. The string must be in
- ASCIIZ (NUL terminated) format. The screen must be in one of the text modes
- (video modes 0-3, 7).
-
- The following control codes are interpreted:
- 7 Bell beep
- 8 Backspace non-destructive backspace
- 9 Tab space over to the next tab stop
- 10 Linefeed move cursor down one line, scrolling as needed
- 12 Formfeed clear screen and home cursor
- 13 Carriage Return home cursor on current line
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
- Service : MV_WHERE
-
- Module : Machine-level Video Services
-
- Compat : Clone
-
- Purpose : Gets the cursor position
-
- Parms:
- -------
- DH = row (1-25)
- DL = column (1-40/80)
-
- Description:
-
- The MV_WHERE service gets the cursor position. The screen must be in one of
- the text modes (video modes 0-3, 7).
-
- Redirection, if any, is ignored. Few windowing multitaskers will be able to
- keep the output from this service in a window.
-
- Service : S0_COMPARE
-
- Module : String Services
-
- Compat : Any
-
- Purpose : Compares two strings
-
- Parms:
- DS:SI <-- ptr to first string
- ES:DI <-- ptr to second string
- -------
- Flags = ZF if equal, NZ if not equal
- Flags = CY if first < second, NC if first >= second
-
- Description:
-
- The S0_COMPARE service compares two strings. The carry flag and zero flag
- are set as you might expect for a comparison operation.
-
- Strings must be in ASCIIZ form (NUL terminated).
-
-
-
-
- Service : S0_DUPE
-
- Module : String Services
-
- Compat : Any
-
- Purpose : Creates a string by duplicating a specified character
-
- Parms:
- AL <-- character to duplicate
- CX <-- number of times to repeat the character
- ES:DI <-- ptr to result string
-
- Description:
-
- The S0_DUPE service creates a string by repeating a single character. The
- resulting string will be in ASCIIZ form (NUL terminated), so be sure to use a
- buffer large enough to hold both the string and its terminator.
-
- Service : S0_LEFT
-
- Module : String Services
-
- Compat : Any
-
- Purpose : Copies a section from the left of a string
-
- Parms:
- CX <-- number of characters to copy
- DS:SI <-- ptr to source string
- ES:DI <-- ptr to result string
-
- Description:
-
- The S0_LEFT service copies a specified number of characters from the left of
- one string into another. If you prefer, you can use the same address for
- both strings, allowing you to place the result back into the source buffer.
-
- Strings must be in ASCIIZ form (NUL terminated).
-
-
-
-
- Service : S0_LENGTH
-
- Module : String Services
-
- Compat : Any
-
- Purpose : Returns the length of a string
-
- Parms:
- DS:SI <-- ptr to source string
- -------
- CX = string length
-
- Description:
-
- The S0_LENGTH service returns the length of a string, not counting the NUL
- terminator.
-
- Strings must be in ASCIIZ form (NUL terminated).
-
- Service : S0_LOCASE
-
- Module : String Services
-
- Compat : Any
-
- Purpose : Converts a string to lowercase
-
- Parms:
- DS:SI <-- ptr to source string
- ES:DI <-- ptr to result string
-
- Description:
-
- The S0_LOCASE service converts all of the alphabetic characters in a string
- to lowercase. As well as American alphabet characters, the international
- alphabet characters supplied in the upper 128 IBM ASCII set are also
- translated.
-
- If you prefer, you can use the same address for both strings, allowing you to
- place the result back into the source buffer.
-
- Strings must be in ASCIIZ form (NUL terminated).
-
-
-
-
- Service : S0_MID
-
- Module : String Services
-
- Compat : Any
-
- Purpose : Copies a section of one string to another
-
- Parms:
- CX <-- number of characters to copy
- DX <-- where to start copying from (1-x)
- DS:SI <-- ptr to source string
- ES:DI <-- ptr to result string
-
- Description:
-
- The S0_MID service copies a specified number of characters one string to
- another, starting from a given location. If you prefer, you can use the same
- address for both strings, allowing you to place the result back into the
- source buffer.
-
- Strings must be in ASCIIZ form (NUL terminated).
-
- Service : S0_RIGHT
-
- Module : String Services
-
- Compat : Any
-
- Purpose : Copies a section from the right of a string
-
- Parms:
- CX <-- number of characters to copy
- DS:SI <-- ptr to source string
- ES:DI <-- ptr to result string
-
- Description:
-
- The S0_RIGHT service copies a specified number of characters from the right
- of one string into another. If you prefer, you can use the same address for
- both strings, allowing you to place the result back into the source buffer.
-
- Strings must be in ASCIIZ form (NUL terminated).
-
-
-
-
- Service : S0_TRIM
-
- Module : String Services
-
- Compat : Any
-
- Purpose : Trims the white space from either side of a string
-
- Parms:
- AL <-- trim code: set bit 0 for left, bit 1 for right
- DS:SI <-- ptr to source string
- ES:DI <-- ptr to result string
-
- Description:
-
- The S0_TRIM service removes the "white space" from either side (or both
- sides) of a string. Blanks and control characters are considered white
- space. This is a handy routine for normalizing user input and trimming the
- padding from fixed-length records, for instance.
-
- If you prefer, you can use the same address for both strings, allowing you to
- place the result back into the source buffer.
-
- Strings must be in ASCIIZ form (NUL terminated).
-
- Service : S0_UPCASE
-
- Module : String Services
-
- Compat : Any
-
- Purpose : Converts a string to uppercase
-
- Parms:
- DS:SI <-- ptr to source string
- ES:DI <-- ptr to result string
-
- Description:
-
- The S0_UPCASE service converts all of the alphabetic characters in a string
- to uppercase. As well as American alphabet characters, the international
- alphabet characters supplied in the upper 128 IBM ASCII set are also
- translated.
-
- If you prefer, you can use the same address for both strings, allowing you to
- place the result back into the source buffer.
-
- Strings must be in ASCIIZ form (NUL terminated).
-
- Service : TC_CHKSUM
-
- Module : Telecommunications Services
-
- Compat : Any
-
- Purpose : Calculates a checksum for Xmodem or Ymodem
-
- Parms:
- DS:SI <-- ptr to data block
- CX <-- length of data block (bytes)
- -------
- AX = checksum
-
- Description:
-
- The TC_CHKSUM routine calculates the checksum of a block of data. The
- algorithm used is compatible with the Xmodem and Ymodem file transfer
- protocols (use the lower byte of the checksum, AL, in that case).
-
-
-
-
- Service : TC_CRC
-
- Module : Telecommunications Services
-
- Compat : Any
-
- Purpose : Calculates a CRC for Xmodem or Ymodem
-
- Parms:
- DS:SI <-- ptr to data block
- CX <-- length of data block (bytes)
- -------
- AX = CRC
-
- Description:
-
- The TC_CRC routine calculates the CRC (Cyclical Redundancy Check) value of a
- block of data. The algorithm used is compatible with the Xmodem and Ymodem
- file transfer protocols.
-
- If you use TC_CRC for an outgoing Xmodem/Ymodem block, you need to add two
- nulls to the end of the block and increment CX accordingly. When you get the
- CRC, exchange AL and AH, then put AX where the nulls were, which will
- complete the outgoing packet. The reason for the swap is that Xmodem/Ymodem
- expect the CRC with the high byte followed by the low byte (non-Intel format).
-
- If you use TC_CRC for an incoming Xmodem/Ymodem block, leave the received CRC
- at the end of the data block and increment CX accordingly. If the calculated
- CRC comes out to zero, the received packet is fine.
-
- Service : TD_GETDATE
-
- Module : Time and Date Services
-
- Compat : DOS
-
- Purpose : Returns the date as a formatted string
-
- Parms:
- AL <-- 0 for 2-digit year, 1 for 4-digit year
- DS:DX <-- ptr to result buffer (minimum 11 bytes)
-
- Description:
-
- The TD_GETDATE service returns the current date as a formatted string. The
- formatting includes international date handling, in that the string is
- formatted in the appropriate manner for the country in which the computer is
- being operated. If a DOS version before 3.0 is used, the date delimiters are
- not guaranteed to be correct, but the month, day and year will be in the
- proper order regardless.
-
- The result is returned as an ASCIIZ (NUL terminated) string.
-
-
-
-
- Service : TD_GETTIME
-
- Module : Time and Date Services
-
- Compat : DOS
-
- Purpose : Returns the time as a formatted string
-
- Parms:
- DS:DX <-- ptr to result buffer (minimum 8 bytes)
-
- Description:
-
- The TD_GETTIME service returns the current time as a formatted string. The
- formatting includes international time handling, in that the string is
- formatted in the appropriate manner for the country in which the computer is
- being operated. If a DOS version before 3.0 is used, the time delimiters and
- 12/24-hour formatting are not guaranteed to be correct.
-
- If the hour is a single-digit number, it will be preceeded by a space. This
- is handy for keeping times in columns, but if you don't want the space there,
- chop it off by calling the S0_TRIM service.
-
- The result is returned as an ASCIIZ (NUL terminated) string.
-