home *** CD-ROM | disk | FTP | other *** search
-
-
-
-
-
-
-
-
-
-
-
-
-
- VFOSSIL - An OS/2-Subset Video FOSSIL Appendage
-
- Version 1.00, May 23, 1988
-
- Rick Moore, Solar Wind Computing
- FidoNet Address: 1:115/333
-
-
-
-
-
- FidoNet Standards Committee index: FSC-0021
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright (C) 1988, Rick Moore, Homewood, IL, 60430. All rights reserved.
-
- This document may be distributed freely as long as it is distributed in its
- original, unmodified form.
-
- VFOSSIL - An OS/2-Subset Video FOSSIL Appendage FSC-0021
- Page 2
-
-
- VFOSSIL design criteria:
-
- The VFOSSIL appendage proposed here is designed to be an compatible subset of
- the OS/2 VIO subsystem. All services are proper subsets of the equivalent OS/2
- VIO API's, and if you stick to the services defined in this document, you
- will be able to compile and run your programs with very minor changes in an
- OS/2 environment.
-
- VFOSSIL (and OS/2 VIO at this time) only supports text modes. It is possible
- to use the "set mode" service to set a graphics mode, but that is the only
- support for pixel-oriented graphics functions provided by VFOSSIL. The minimum
- environment supported by VFOSSIL is a 80 by 24 monochrome text screen, and any
- program using VFOSSIL calls should be capable of operating within this level of
- support. By querying the VFOSSIL, the full capabilities of a specific
- implementation may be determined and used, but all programs using VFOSSIL
- should be capable of operating with the 80 by 24 monochrome text environment.
-
-
- The organization of the video screen:
-
- The virtual screen is organized in rows of columns of character/attribute
- pairs, hereafter referred to as cells. The characters actually displayed
- are located on the even addresses, the attribute for each character is
- located at character+1.
-
- Regardless of the manner in which the video screen is actually organized, the
- programmer will view it as a a contiguous area of memory, referred to as the
- "logical video buffer" (LVB). The LVB is (NumRow * NumCol) cells in length.
-
- VFOSSIL - An OS/2 Subset Video FOSSIL Appendage FSC-0021
- Page 3
-
- VFOSSIL installation:
-
- The VFOSSIL appendage is installed via the standard FOSSIL external
- application function. The FOSSIL interrupt (14h) is issued with the
- following parameters:
-
- AH = 7Eh Install appendage
- AL = 81h VFOSSIL application code
- DX = offset of VFOSSIL entry point
- ES = segment of VFOSSIL entry point
-
- Upon return from the FOSSIL interrupt, the following registers are
- modified:
-
- AX = 1954h FOSSIL signature
- BL = 81h VFOSSIL application code
- BH = 01h - Installation was successful
- 00h - Installation was unsuccessful
-
- VFOSSIL removal:
-
- The VFOSSIL appendage is removed via the standard FOSSIL external
- application function. The FOSSIL interrupt (14h) is issued with the
- following parameters:
-
- AH = 7Fh Remove appendage
- AL = 81h VFOSSIL application code
- DX = offset of VFOSSIL entry point
- ES = segment of VFOSSIL entry point
-
- Upon return from the FOSSIL interrupt, the following registers are
- modified:
-
- AX = 1954h FOSSIL signature
- BL = 81h VFOSSIL identification code
- BH = 01h - Removal was successful
- 00h - Removal was unsuccessful
-
- VFOSSIL - An OS/2 Subset Video FOSSIL Appendage FSC-0021
- Page 4
-
-
- VFOSSIL functions called via the standard FOSSIL interrupt (14h):
-
- The following three functions are called via the standard FOSSIL interrupt,
- int 14h. All other VFOSSIL functions are called via the OS/2 compatible
- direct call interface.
-
- Subfunction 00h - Return VFOSSIL information
-
- Entry: AH = 81h VFOSSIL application code
- AL = 00h VFOSSIL subfunction
- ES:DI = Far pointer to VFOSSIL information structure
-
- Exit: AX = 1954h FOSSIL signature
-
- This function is used before calling the open function (sub-function 01h)
- to determine the characteristics of the VFOSSIL. Such things returned in
- the structure are current version level and number of functions supported.
-
- The format of the information structure filled in by this call is as
- follows:
-
- DW Size of this structure, in bytes, including this field
- DW VFOSSIL major version
- DW VFOSSIL revision level
- DW Highest VFOSSIL application function supported
-
- Subfunction 01h - Open VFOSSIL
-
- Entry: AH = 81h VFOSSIL application code
- AL = 01h VFOSSIL subfunction
- CX = Length of application function table (in bytes)
- ES:DI = Far pointer to application function table
-
- Exit: BH = Highest VFOSSIL application function supported
- AX = 1954h FOSSIL signature
-
- This VFOSSIL subfunction will initialize the table pointed to by
- ES:DI with far pointers to the VFOSSIL application services. The
- number of far pointers initialized is equal to the value returned
- in register BH + 1. Under no circumstances will the number of
- far pointers initialized exceed the value passed in register CX / 4.
- All other processing necessary to ready the VFOSSIL for use by the
- application program should be performed at this time.
-
- Subfunction 02h - Close VFOSSIL
-
- Entry: AH = 81h VFOSSIL application code
- AL = 02h VFOSSIL subfunction
-
- Exit: AX = 1954h FOSSIL signature
-
- This VFOSSIL function terminates all VFOSSIL operations, and leaves
- the VFOSSIL in a state that allows for it to be removed from memory,
- or to be reinitialized via VFOSSIL function 01h.
-
- VFOSSIL - An OS/2 Subset Video FOSSIL Appendage FSC-0021
- Application Services Page 5
-
-
- VFOSSIL application services:
-
- All calls to VFOSSIL services are made in a manner identical to the OS/2 API
- protocol. All services are entered via a far call, with parameters passed
- via the stack. All services return an error code in register AX. The
- parameters are pushed onto the stack Pascal-style, from left to right. The
- parameters are passed on the stack in one of the three following ways:
-
- WORD A one-word value pushed directly onto the stack
-
- DWRD A double-word value pushed directly onto the stack
- (low word first, followed by the high word)
-
- PTR A far pointer to a memory area. Far pointers are passed
- as double-word values, segment followed by offset.
-
- Single-word and double-word input parameters are always passed as WORD and
- DWRD. If the service returns information in the parameter field itself,
- then it is pushed as a PTR, even if the object is a WORD or a DWRD. Variable
- length parameters, such as data structures or ASCIIZ strings, are always
- passed as PTR objects.
-
- All cursor coordinates are expressed as zero (0) based numbers.
-
- Each VFOSSIL service requires a "handle" parameter as the last parameter
- passed to the service. At this time, zero (0) is the only valid handle.
-
- The actual addresses used to call the application services are contained in
- the address table filled in by the VFOSSIL initialization call described
- above. All addresses are in far (segment/offset) format. Here is the format
- of the application service address table:
-
- Table +00h VioGetMode Query current video mode
- +04h VioSetMode Set video mode
- +08h VioGetConfig Query video hardware configuration
- +0Ch VioWrtTTY Write data in TTY mode
- +10h VioGetANSI Query current ANSI state
- +14h VioSetANSI Set ANSI state
- +18h VioGetCurPos Query current cursor position
- +1Ch VioSetCurPos Set cursor position
- +20h VioGetCurType Query current cursor parameters
- +24h VioSetCurType Set cursor parameters
- +28h VioScrollUp Scroll screen up
- +2Ch VioScrollDn Scroll screen down
- +30h VioReadCellStr Read cell string from display
- +34h VioReadCharStr Read char string from display
- +38h VioWrtCellStr Write cell string
- +3Ch VioWrtCharStr Write char string (existing attributes)
- +40h VioWrtCharStrAtt Write char string (constant attributes)
- +44h VioWrtNAttr Replicate attribute
- +48h VioWrtNCell Replicate cell
- +4Ch VioWrtNChar Replicate char
-
- VFOSSIL - An OS/2 Subset Video FOSSIL Appendage FSC-0021
- Application Services Page 6
-
-
- VioGetMode - Query current video mode
-
-
- Parameters:
-
- PTR Pointer to a video mode data structure
- WORD VIO handle (must be 0)
-
-
- Video mode data structure:
-
- DW Structure length (including this field)
- DB Mode characteristics
- -------0 Monochrome/printer adapter
- -------1 Other adapter
- ------0- Text mode
- ------1- Graphics mode
- -----0-- Enable color
- -----1-- Disable color (black and white)
- DB Number of colors supported by the display
- 1 = 2 colors
- 2 = 4 colors
- 4 = 16 colors
- DW Number of text columns
- DW Number of text rows
- DW Reserved
- DW Reserved
- DD Reserved
-
-
- A partial video mode buffer may be specified. VFOSSIL returns only the data
- that will fit into the buffer. The minimum buffer length is 3, and the
- maximum buffer length is 12. Partial fields are not returned.
-
-
- Error codes returned:
-
- 0 - Successful completion
- 116 - Internal VIO failure
- 382 - Buffer too small
- 436 - Invalid VIO handle
-
- VFOSSIL - An OS/2 Subset Video FOSSIL Appendage FSC-0021
- Application Services Page 7
-
-
- VioSetMode - Set video mode
-
-
- Parameters:
-
- PTR Pointer to a video mode data structure (see VioGetMode)
- WORD VIO handle (must be 0)
-
-
- A partial video mode buffer may be specified. The minimum buffer length is 3,
- and the maximum buffer length is 12. Partial fields are not supported. The
- remaining fields are set to default values.
-
-
- Error codes returned:
-
- 0 - Successful completion
- 116 - Internal VIO failure
- 355 - Unsupported mode
- 382 - Buffer too small
- 421 - Invalid VIO parameter
- 436 - Invalid VIO handle
-
- VFOSSIL - An OS/2 Subset Video FOSSIL Appendage FSC-0021
- Application Services Page 8
-
-
- VioGetConfig - Query video hardware configuration
-
-
- Parameters:
-
- PTR Pointer to a video configuration data area
- WORD VIO handle (must be 0)
-
-
- Video configuration data area:
-
- DW Structure length (includes this field)
- DW Adapter type
- 0 = Monochrome/printer
- 1 = CGA
- 2 = EGA
- 3 = VGA
- 7 = 8514A
- DW Display type
- 0 = Monochrome
- 1 = Color
- 2 = Enhanced color
- 9 = 8514
- DD Adapter memory size
-
-
- Error codes returned:
-
- 0 - Successful completion
- 116 - Internal VIO failure
- 382 - Buffer too small
- 436 - Invalid VIO handle
-
- VFOSSIL - An OS/2 Subset Video FOSSIL Appendage FSC-0021
- Application Services Page 9
-
-
- VioWriteTTY - Write data in TTY mode
-
-
- Parameters:
-
- WORD Pointer to a character string that VFOSSIL will write
- to the screen
- WORD String length
- WORD VIO handle (must be 0)
-
-
- This service writes a string to the video screen in TTY mode. The characters
- CR, LF, BS, TAB, and BELL are interpreted as control values rather than
- being display as values. If ANSI mode has been enabled (see VioGetANSI,
- VioSetANSI), then ANSI control sequences are also interpreted as control
- strings. In ANSI mode, this service is not required to be reentrant, and
- should not be called when a MS/DOS function is in progress. When in non-ANSI
- mode, this service is required to be reentrant, and may be called from
- within a MS/DOS function. If the write goes beyond the end of a line, it
- continues at the start of the next line. The write terminates at the end of
- the screen. The cursor is left positioned at the next character position to
- be written.
-
-
- Error codes returned:
-
- 0 - Successful completion
- 116 - Internal VIO failure
- 436 - Invalid VIO handle
-
- VFOSSIL - An OS/2 Subset Video FOSSIL Appendage FSC-0021
- Application Services Page 10
-
-
- VioGetANSI - Query current ANSI state
-
-
- Parameters:
-
- PTR Pointer to a one-word field in which VFOSSIL will return the
- current ANSI state:
- 0 = Off
- 1 = On
- WORD VIO handle (must be 0)
-
-
- Error codes returned:
-
- 0 - Successful completion
- 116 - Internal VIO failure
- 436 - Invalid VIO handle
-
- VFOSSIL - An OS/2 Subset Video FOSSIL Appendage FSC-0021
- Application Services Page 11
-
-
- VioSetANSI - Set ANSI state
-
-
- Parameters:
-
- PTR Pointer to a one-word field indicating how ANSI processing
- is to be set:
- 0 = Off
- 1 = On
- WORD VIO handle (must be 0)
-
-
- Error codes returned:
-
- 0 - Successful completion
- 116 - Internal VIO failure
- 421 - Invalid VIO parameter
- 436 - Invalid VIO handle
-
- VFOSSIL - An OS/2 Subset Video FOSSIL Appendage FSC-0021
- Application Services Page 12
-
-
- VioGetCurPos - Query current cursor position
-
-
- Parameters:
-
- PTR Pointer to a one word field in which VFOSSIL will return
- the current cursor row
- PTR Pointer to a one word field in which VFOSSIL will return
- the current cursor column
- WORD VIO handle (must be 0)
-
-
- This service returns the current cursor position. Cursor coordinates are
- zero based.
-
-
- Error codes returned:
-
- 0 - Successful completion
- 116 - Internal VIO failure
- 436 - Invalid VIO handle
-
- VFOSSIL - An OS/2 Subset Video FOSSIL Appendage FSC-0021
- Application Services Page 13
-
-
- VioSetCurPos - Set cursor position
-
-
- Parameters:
-
- WORD Desired cursor row
- WORD Desired cursor column
- WORD VIO handle (must be 0)
-
-
- This service sets the cursor position to the zero based coordinates specified
- by the parameters. If either of the parameters is invalid, the cursor
- position is left unchanged.
-
-
- Error codes returned:
-
- 0 - Successful completion
- 116 - Internal VIO failure
- 358 - Invalid row value
- 359 - Invalid column value
- 436 - Invalid VIO handle
-
- VFOSSIL - An OS/2 Subset Video FOSSIL Appendage FSC-0021
- Application Services Page 14
-
-
- VioGetCurType - Query current cursor parameters
-
-
- Parameters:
-
- PTR Pointer to a cursor type data area
- WORD VIO handle (must be 0)
-
-
- Cursor type data area:
-
- DW Cursor start line
- DW Cursor end line
- DW Cursor width (always 1)
- DW Cursor attribute (-1 = hidden)
-
-
- Error codes returned:
-
- 0 - Successful completion
- 116 - Internal VIO failure
- 436 - Invalid VIO handle
-
- VFOSSIL - An OS/2 Subset Video FOSSIL Appendage FSC-0021
- Application Services Page 15
-
-
- VioSetCurType - Set cursor parameters
-
-
- Parameters:
-
- PTR Pointer to a cursor type data area (see VioGetCurType)
- WORD VIO handle (must be 0)
-
-
- Error codes returned:
-
- 0 - Successful completion
- 116 - Internal VIO failure
- 421 - Invalid VIO parameter
- 436 - Invalid VIO handle
-
- VFOSSIL - An OS/2 Subset Video FOSSIL Appendage FSC-0021
- Application Services Page 16
-
-
- VioScrollUp - Scroll screen up
-
-
- Parameters:
-
- WORD Top row of the scroll area
- WORD Left column of the scroll area
- WORD Bottom row of the scroll area
- WORD Right column of the scroll area
- WORD Number of rows to scroll. A value of -1 causes the scroll
- area to be cleared.
- PTR Pointer to a char/attr cell that is used to fill the scroll
- area.
- WORD VIO handle (always 0)
-
-
- Error codes returned:
-
- 0 - Successful completion
- 116 - Internal VIO failure
- 358 - Invalid row value
- 359 - Invalid column value
- 436 - Invalid VIO handle
-
- VFOSSIL - An OS/2 Subset Video FOSSIL Appendage FSC-0021
- Application Services Page 17
-
-
- VioScrollDn - Scroll screen down
-
-
- Parameters:
-
- WORD Top row of the scroll area
- WORD Left column of the scroll area
- WORD Bottom row of the scroll area
- WORD Right column of the scroll area
- WORD Number of rows to scroll. A value of -1 causes the scroll
- area to be cleared.
- PTR A pointer to a char/attr cell that is used to fill the scroll
- area.
- WORD VIO handle (always 0)
-
-
- Error codes returned:
-
- 0 - Successful completion
- 116 - Internal VIO failure
- 358 - Invalid row value
- 359 - Invalid column value
- 436 - Invalid VIO handle
-
- VFOSSIL - An OS/2 Subset Video FOSSIL Appendage FSC-0021
- Application Services Page 18
-
-
- VioReadCellStr - Read cell string from display
-
-
- Parameters:
-
- PTR Pointer to a buffer into which the cell string is to be
- placed
- PTR Pointer to a one-word field which, upon entry, specifies
- the length of the cell buffer (in bytes), and, on return,
- contains the number of bytes actually read. Each cell
- occupies two bytes, so the number of cells read is equal to
- half of the buffer length specified.
- WORD Row where the read is to start
- WORD Column where the read is to start
- WORD VIO handle (always 0)
-
-
- If the read request extends beyond the end of the line, it continues at the
- first column of the next line. If an attempt is made to read past the end of
- the screen, the read operation terminates and the length field is set to the
- actual number of bytes read.
-
-
- Error codes returned:
-
- 0 - Successful completion
- 116 - Internal VIO failure
- 358 - Invalid row value
- 359 - Invalid column value
- 436 - Invalid VIO handle
-
- VFOSSIL - An OS/2 Subset Video FOSSIL Appendage FSC-0021
- Application Services Page 19
-
-
- VioReadCharStr - Read character string from display
-
-
- Parameters:
-
- PTR Pointer to a buffer into which the character string is to be
- placed
- PTR Pointer to a one-word field which, upon entry, specifies
- how many characters are to be read, and, on return,
- contains the number of characters actually read.
- WORD Row where the read is to start
- WORD Column where the read is to start
- WORD VIO handle (always 0)
-
-
- If the read request extends beyond the end of the line, it continues at the
- first column of the next line. If an attempt is made to read past the end of
- the screen, the read operation terminates and the length field is set to the
- actual number of characters read.
-
-
- Error codes returned:
-
- 0 - Successful completion
- 116 - Internal VIO failure
- 358 - Invalid row value
- 359 - Invalid column value
- 436 - Invalid VIO handle
-
- VFOSSIL - An OS/2 Subset Video FOSSIL Appendage FSC-0021
- Application Services Page 20
-
-
- VioWrtCellStr - Write a cell string
-
-
- Parameters:
-
- PTR Pointer to the cell string to be written
- WORD Cell string length. Since each cell occupies two bytes,
- this number is twice the number of cells to be written.
- WORD Row at which write is to begin
- WORD Column at which write is to begin
- WORD Vio handle (must be 0)
-
-
- If the write request extends beyond the end of the line, it continues at the
- first column of the next line. If an attempt is made to write past the end of
- the screen, the write operation terminates.
-
-
- Error codes returned:
-
- 0 - Successful completion
- 116 - Internal VIO failure
- 358 - Invalid row value
- 359 - Invalid column value
- 436 - Invalid VIO handle
-
- VFOSSIL - An OS/2 Subset Video FOSSIL Appendage FSC-0021
- Application Services Page 21
-
-
- VioWrtCharStr - Write a character string, using existing attributes
-
-
- Parameters:
-
- PTR Pointer to the character string to be written
- WORD Character string length
- WORD Row at which write is to begin
- WORD Column at which write is to begin
- WORD Vio handle (must be 0)
-
-
- The attributes of the display cells whose characters are replaced are not
- modified. If the write request extends beyond the end of the line, it
- continues at the first column of the next line. If an attempt is made to
- write past the end of the screen, the write operation terminates.
-
-
- Error codes returned:
-
- 0 - Successful completion
- 116 - Internal VIO failure
- 358 - Invalid row value
- 359 - Invalid column value
- 436 - Invalid VIO handle
-
- VFOSSIL - An OS/2 Subset Video FOSSIL Appendage FSC-0021
- Application Services Page 22
-
-
- VioWrtCharStrAtt - Write a character string, using constant attribute
-
-
- Parameters:
-
- PTR Pointer to the character string to be written
- WORD Character string length
- WORD Row at which write is to begin
- WORD Column at which write is to begin
- PTR Pointer to the display attribute to be used with each
- character written
- WORD Vio handle (must be 0)
-
-
- If the write request extends beyond the end of the line, it continues at the
- first column of the next line. If an attempt is made to write past the end of
- the screen, the write operation terminates.
-
-
- Error codes returned:
-
- 0 - Successful completion
- 116 - Internal VIO failure
- 358 - Invalid row value
- 359 - Invalid column value
- 436 - Invalid VIO handle
-
- VFOSSIL - An OS/2 Subset Video FOSSIL Appendage FSC-0021
- Application Services Page 23
-
-
- VioWrtNAttr - Replicate an attribute byte, leaving characters unchanged
-
-
- Parameters:
-
- PTR Pointer to the display attribute to be replicated
- WORD Replication count
- WORD Row at which write is to begin
- WORD Column at which write is to begin
- WORD Vio handle (must be 0)
-
-
- The characters contained in the display cells whose attributes are replaced
- are not modified. If the write request extends beyond the end of the line,
- it continues at the first column of the next line. If an attempt is made to
- write past the end of the screen, the write operation terminates.
-
-
- Error codes returned:
-
- 0 - Successful completion
- 116 - Internal VIO failure
- 358 - Invalid row value
- 359 - Invalid column value
- 436 - Invalid VIO handle
-
- VFOSSIL - An OS/2 Subset Video FOSSIL Appendage FSC-0021
- Application Services Page 24
-
-
- VioWrtNCell - Replicate a cell
-
-
- Parameters:
-
- PTR Pointer to the cell to be replicated
- WORD Replication count
- WORD Row at which write is to begin
- WORD Column at which write is to begin
- WORD Vio handle (must be 0)
-
-
- If the write request extends beyond the end of the line, it continues at the
- first column of the next line. If an attempt is made to write past the end of
- the screen, the write operation terminates.
-
-
- Error codes returned:
-
- 0 - Successful completion
- 116 - Internal VIO failure
- 358 - Invalid row value
- 359 - Invalid column value
- 436 - Invalid VIO handle
-
- VFOSSIL - An OS/2 Subset Video FOSSIL Appendage FSC-0021
- Application Services Page 25
-
-
- VioWrtNChar - Replicate an character, leaving attributes unchanged
-
-
- Parameters:
-
- PTR Pointer to the character to be replicated
- WORD Replication count
- WORD Row at which write is to begin
- WORD Column at which write is to begin
- WORD Vio handle (must be 0)
-
-
- The attributes contained in the display cells whose characters are replaced
- are not modified. If the write request extends beyond the end of the line,
- it continues at the first column of the next line. If an attempt is made to
- write past the end of the screen, the write operation terminates.
-
-
- Error codes returned:
-
- 0 - Successful completion
- 116 - Internal VIO failure
- 358 - Invalid row value
- 359 - Invalid column value
- 436 - Invalid VIO handle
-