1229 lines
53 KiB
Plaintext
1229 lines
53 KiB
Plaintext
The Adapter Interface (AI) was introduced as the programming interface for the
|
|
IBM 8514/A before the register interface was publicly available.
|
|
AI interfaces have also been implemented for the XGA, IBM Image Adapter/A and
|
|
8514/A clones like the ATI Mach8/32
|
|
Also pure software versions exists like Tseng's RIXAI.
|
|
|
|
INT 7F - AI - Check for Adapter Interface
|
|
AX = 0105h
|
|
CX = 0000h
|
|
DX = 0000h
|
|
Return: Carry clear if successful
|
|
CX:DX -> Function table. One DWORD pointer for each function (0..60)
|
|
Most functions have one parameter (Shown as X below), a
|
|
pointer to a parameter table where the first WORD holds the
|
|
number of bytes following, thus if there are 10 bytes in all
|
|
the first WORD will be 8. It is the callers responsibility to
|
|
set this.
|
|
|
|
function 00h HLINE(X) - Line at Given Point
|
|
Draws a polyline starting in the first position listed.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(4*Number_of_points)
|
|
02h WORD X-coordinate of 1st point
|
|
04h WORD Y-coordinate of 1st point
|
|
...
|
|
4*n+2 WORD X-coordinate of Nth point
|
|
4*n+4 WORD Y-coordinate of Nth point
|
|
|
|
function 01h HCLINE(X) - Line at Current Position
|
|
Draws a polyline from the current position to the last point
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(4*Number_of_points)
|
|
02h WORD X-coordinate of 1st point
|
|
04h WORD Y-coordinate of 1st point
|
|
...
|
|
4*n+2 WORD X-coordinate of Nth point
|
|
4*n+4 WORD Y-coordinate of Nth point
|
|
|
|
function 02h HRLINE(X) - Relative Line at Given Position
|
|
Draws a series of polylines, starting at the given point, with each endpoint
|
|
given as an offset from the last point.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(4 + 2*Number_of_points)
|
|
02h WORD X-coordinate of starting point
|
|
04h WORD Y-coordinate of starting point
|
|
.....
|
|
2*N+4 BYTE X-coordinate of Nth relative point
|
|
2*N+5 BYTE Y-coordinate of Nth relative point
|
|
|
|
|
|
function 03h HCRLINE(X) - Relative Line at Current Position
|
|
Draws a series of linesegments, each specified relative to the end of the
|
|
previous segment (the current position for the first segment).
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(2*Number of segments)
|
|
|
|
2*N+2 BYTE X-coordinate offset (-128 to +127)
|
|
2*N+3 BYTE Y-coordinate offset (-128 to +127)
|
|
|
|
function 04h HSCP(X) - Set Current Position
|
|
Sets the current drawing position
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(4)
|
|
02h WORD New X-coordinate
|
|
04h WORD New Y-coordinate
|
|
|
|
function 05h HBAR(X) - Begin Area
|
|
Marks the start of a series of commands that defines the boundary for a
|
|
fill area. The sequence is terminated by a HEAR() command.
|
|
The following commands are not allowed between the HBAR and HEAR:
|
|
HOPEN, HCLOSE, HSMODE, HSHS, HSCMP, HSBP, HCHST and HCCHST.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(0)
|
|
Note: HBAR/HEAR commands can not be nested.
|
|
|
|
function 06h HEAR(X) - End Area
|
|
Ends the area definition started by a HBAR command.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(0 or 1)
|
|
02h BYTE Flag (only if length is 1):
|
|
00h Fill the defined area
|
|
40h Suspend the area definition. until the next HBAR
|
|
80h Abort definition.
|
|
Note: bits 0-5 are probably ignored
|
|
|
|
function 07h HSCOL(X) - Set Color
|
|
Sets the foreground color
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(4)
|
|
02h DWORD Foreground color index. Only the number of least significant
|
|
bits (depending on the current mode) are used.
|
|
0FFFFFFFFh is reserved for multiplane character sets
|
|
|
|
function 08h HOPEN(X) - Open Adapter
|
|
Enables the adapter.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(3)
|
|
02h BYTE Initialisation flags
|
|
Bit 0-5 Don't care
|
|
6 Clear to load default palette
|
|
7 Clear to clear video memory
|
|
03h BYTE Mode. See HSMODE for (implementation specific) modelist.
|
|
04h BYTE Return status. In the original 8514/A a non-zero return value
|
|
indicated failure, later version have assigned bits to
|
|
specific events:
|
|
Bit 7 Set if a driver/hardware mismatch occours
|
|
6 Set if a control program reject occours
|
|
|
|
function 09h HSMX(X) - Set Mix
|
|
Sets the fore- and background mixes
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(2)
|
|
02h BYTE Foreground mix (SRC is Source, DST is Destination):
|
|
00h: Keep previous mix
|
|
01h: SRC or DST
|
|
02h: SRC
|
|
03h: Reserved
|
|
04h: SRC xor DST
|
|
05h: DST (I.e. do nothing)
|
|
06h: Max(DST,SRC)
|
|
07h: Min(DST,SRC)
|
|
08h: SRC+DST (overflow is clipped to maximum)
|
|
09h: DST-SRC (underflow is clipped to zero)
|
|
0Ah: SRC-DST (underflow is clipped to zero)
|
|
0Bh: (SRC+DST)/2 (Average)
|
|
0Ch-0Fh: Reserved
|
|
10h: Zero, all bits cleared
|
|
11h: SRC and DST
|
|
12h: SRC and (not DST)
|
|
13h: SRC
|
|
14h: (not SRC) and DST
|
|
15h: DST
|
|
16h: SRC xor DST
|
|
17h: SRC or DST
|
|
18h: (not SRC) and (not DST)
|
|
19h: not (SRC xor DST)
|
|
1Ah: not DST
|
|
1Bh: SRC or (not DST)
|
|
1Ch: not SRC
|
|
1Dh: (not SRC) or DST
|
|
1Eh: (not SRC) or (not DST)
|
|
1Fh: One, all bits set
|
|
03h BYTE Background mix (same as above)
|
|
|
|
function 0Ah HSBCOL(X) - Set Background Color
|
|
Sets the background color
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(4)
|
|
02h DWORD Background color index. Only the number of least significant
|
|
bits (depending on the current mode) are used.
|
|
0xFFFFFFFF is reserved for color fonts.
|
|
|
|
function 0Bh HSLT(X) - Set Line Type
|
|
Sets the current line type
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(1 or 6)
|
|
02h BYTE Line pattern type
|
|
0: User defined pattern (see byte 4-7)
|
|
1: Dotted line (1 on, 2off)
|
|
2: Short dashed line (5 on, 3 off)
|
|
3: Dash-dot line (6 on, 4off, 2on, 4off)
|
|
4: Double doted line (2 on, 4 off, 2 on, 8 off)
|
|
5: Long dashed line (9 on, 3 off)
|
|
6: Dash-double-dot line (8 on, 4 off, 2 on, 4 off, 2 on,
|
|
4 off)
|
|
7: Solid line
|
|
8: Invisible line.
|
|
Following fields only present if length =6
|
|
03h BYTE Reserved
|
|
04h DWORD Address of user defined pattern
|
|
Offset: Type:
|
|
00h WORD Number of on/off byte pairs(N)
|
|
...
|
|
2*N BYTE On count
|
|
2*N+1 BYTE Off count
|
|
Maximum pattern length is 48 pixels.
|
|
|
|
function 0Ch HSLW(X) - Set Line Width
|
|
Sets the line drawing width
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(1)
|
|
02h BYTE Line width in pixels. Original AI, ATI (Mach32) and XGA
|
|
versions only supports widths of 1 and 3.
|
|
|
|
function 0Dh HEGS(X) - Erase Graphics Screen
|
|
Clears the screen and sets the current position to the top left corner
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(0)
|
|
|
|
function 0Eh HSGQ(X) - Set Graphics Quality
|
|
Sets the graphics quality options
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(2)
|
|
02h WORD Quality flags
|
|
Bit 0-9 Reserved
|
|
10 (XGA and ImageAdapter/A) If clear areas to be
|
|
filled are closed by connection the first point
|
|
to the last with a line
|
|
Reserved in the original AI.
|
|
11-12 0: Last pixel in a line is not drawn
|
|
1: Last pixel in a line is drawn
|
|
2: Last pixel in a line is drawn dependent on the
|
|
mix mode.
|
|
13 Reserved, set to 0
|
|
14 0: High precision, 1: low precision
|
|
Ignored in the XGA and ATI (Mach32) AI versions.
|
|
15 Reserved, set to 0
|
|
|
|
function 0Fh HSCMP(X) - Set Color Comparison Register
|
|
Sets the color comparison information.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(5)
|
|
02h DWORD Comparison Color (CC)
|
|
06h BYTE Logic function:
|
|
0: TRUE
|
|
1: Destination > CC
|
|
2: Destination == CC
|
|
3: Destination < CC
|
|
4: FALSE
|
|
5: Destination >= CC
|
|
6: Destination != CC
|
|
7: Destination <= CC
|
|
If the color comparison is true the pixel is left unmodified
|
|
|
|
function 10h HINT(X) - Interrupt
|
|
Waits until the event(s) specified by set bit(s) in the Event word happens
|
|
before it returns. Used to synchronize with an event.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(4)
|
|
02h DWORD Event/Interrupt bits:
|
|
0-29 Reserved
|
|
30 Wait for hardware to be free (I.e. not busy
|
|
drawing). Only in the XGA version
|
|
31 Wait for vertical blank.
|
|
|
|
function 11h HSPATTO(X) - Set Pattern Reference Point
|
|
Sets the pattern reference point for functions that use the pattern.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(4)
|
|
02h WORD X-coordinate
|
|
04h WORD X-coordinate
|
|
|
|
function 12h HSPATT(X) - Set Symbol Shape
|
|
Defines an area pattern
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(10 or 14)
|
|
02h BYTE Cell width in pixels
|
|
03h BYTE Cell height in lines
|
|
04h BYTE Flags
|
|
Bit 0-5 Reserved
|
|
6 (XGA and ImageAdapter/A only) Set if pattern color
|
|
data is in packed pixel format, clear if it always
|
|
uses one byte per pixel
|
|
0: 1pixel/byte, 1: packed pixel format
|
|
7 0: Monochrome: Marker is drawn with current
|
|
foreground color&mix on the background color&mix,
|
|
1: Color: Marker is drawn in the color from the
|
|
color data (Byte 0Ch) on the current background
|
|
color&mix
|
|
05h BYTE Reserved
|
|
06h WORD Size of pattern in bytes
|
|
08h DWORD Ptr to pattern definition data. A packed monochrome bitmap
|
|
Following field only present if length = 14
|
|
0Ch DWORD Address of pattern color data
|
|
Note: for the original AI (I.e. 8514/A hardware) the pattern is limited to
|
|
32x32, for the XGA and ImageAdapter/A versions there is no limit
|
|
|
|
function 13h HLDPAL(X) -Load Palette
|
|
Loads the color look-up table with either the default palette or a user
|
|
specified palette.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(1 or 10)
|
|
02h BYTE Palette type
|
|
00h User defined palette as specified in the remaining
|
|
parameters
|
|
01h Adapter default palette. Ignore remaining parameters
|
|
03h BYTE Reserved
|
|
04h WORD Index of first palette entry
|
|
06h WORD Number of entries
|
|
08h DWORD Address of palette data. This consists of 4 bytes per entry,
|
|
with the first byte (0) reserved, byte 1 is Green, byte 2 is
|
|
Blue and byte 3 is Red.
|
|
Note: one source has bytes 0 and 3 swapped ??
|
|
|
|
function 14h HSHS(X) - Set Scissors
|
|
Sets the scissors rectangle, if rectangle not specified (length=0) the HOPEN
|
|
default is used. Only pixels within the rectangle can be updated.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(0 or 8 (or 13 for XGA and
|
|
ImageAdapter/A versions))
|
|
Following fields only present if length >=8
|
|
02h WORD Left limit (low X)
|
|
04h WORD Right limit (high X)
|
|
06h WORD Bottom limit (high Y)
|
|
08h WORD Top limit (low Y)
|
|
Following fields only present if length =13 (XGA and ImageAdapter/A)
|
|
0Ah DWORD Address of monochrome mask map. Only pixels with 1 in the
|
|
mask map can be updated.
|
|
0Eh BYTE Reserved, must be 80h
|
|
|
|
function 15h HBBW(X) - BitBlt Write Image Data
|
|
Defines the screen area to be written by the HBBCBN command(s) following
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(10 or 18)
|
|
02h WORD Type of BitBlt:
|
|
0: Writes a single plane. The source pattern is packed 8
|
|
bits to a byte.
|
|
1: Writes all planes, the source data is packed.
|
|
Only supported in XGA versions of the AI.
|
|
8: Writes all planes, source data has one pixel per byte
|
|
04h WORD Width of block in pixels
|
|
06h WORD Height of block in lines
|
|
08h WORD Source X coordinate - left
|
|
0Ah WORD Source Y coordinate - top
|
|
|
|
The following fields are only present if the length is set to 18:
|
|
If set the destination buffer is defined as a rectangle and the data
|
|
is transferred to a rectangle within the buffer rectangle.
|
|
|
|
0Ch WORD Offset of the destination rectangle from the left edge of
|
|
the larger data buffer rectangle.
|
|
0Eh WORD Starting line in the data buffer
|
|
10h WORD Width of the data buffer in bytes
|
|
12h WORD Height of the data buffer in lines
|
|
|
|
function 16h HCBBW(X) - BitBlt Write Image Data at Current Position
|
|
Defines the screen area to be written by the HBBCBN command(s) following
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(6 or 14)
|
|
02h WORD Type of BitBlt:
|
|
0: Writes a single plane. The source pattern is packed 8
|
|
bits to a byte.
|
|
1: Writes all planes, the source data is packed.
|
|
Only supported in XGA versions of the AI.
|
|
8: Writes all planes, source data has one pixel per byte
|
|
04h WORD Width of block in pixels
|
|
06h WORD Height of block in lines
|
|
|
|
The following fields are only present if the length is set to 14:
|
|
If set the destination buffer is defined as a rectangle and the data
|
|
is transferred to a rectangle within the buffer rectangle.
|
|
|
|
08h WORD Offset of the destination rectangle from the left edge of
|
|
the larger data buffer rectangle.
|
|
0Ah WORD Starting line in the data buffer
|
|
0Ch WORD Width of the data buffer in bytes
|
|
0Eh WORD Height of the data buffer in lines
|
|
|
|
function 17h HBBR(X) - BitBlt Read image Data
|
|
Defines the screen area to be read by the HBBCBN command(s) following
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(12 or 20)
|
|
02h WORD Type of BitBlt:
|
|
0: Reads a single plane. The plane is selected by byte 8
|
|
The resulting bits are packed 8 to a byte.
|
|
1: Reads all planes, pack pixels as much as possible
|
|
Only supported in XGA versions of the AI.
|
|
8: Reads all planes, one pixel per byte.
|
|
04h WORD Width of block in pixels
|
|
06h WORD Height of block in lines
|
|
08h BYTE Selects the source plane for single plane reads
|
|
09h BYTE Reserved
|
|
0Ah WORD Source X coordinate - left
|
|
0Ch WORD Source Y coordinate - top
|
|
|
|
The following fields are only present if the length is set to 20:
|
|
If set the destination buffer is defined as a rectangle and the data
|
|
is transferred to a rectangle within the buffer rectangle.
|
|
|
|
0Eh WORD Offset of the destination rectangle from the left edge of
|
|
the larger data buffer rectangle.
|
|
10h WORD Starting line in the data buffer
|
|
12h WORD Width of the data buffer in bytes
|
|
14h WORD Height of the data buffer in lines
|
|
|
|
function 18h HBBCHN(X) - BitBlt Chained Data
|
|
Defines the data buffer used by a preceding HBBR, HBBW or HCBBW command
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(6)
|
|
02h DWORD Address of data buffer
|
|
06h WORD Number of bytes in buffer
|
|
Note: Multiple buffers can be used to transfer a full image.
|
|
|
|
function 19h HBBC(X) - Bitblt Copy
|
|
Copies the source area to the destination area. Overlapping areas are
|
|
handled correctly.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(16)
|
|
02h WORD Type of Bitblt:
|
|
0: Across-the-plane copying (color expansion).
|
|
One plane (bit of each pixel - selected by Byte 8 of
|
|
this record) holds the monochrome map which is
|
|
expanded. Each 1 bit in the mono map causes the
|
|
corresponding pixel in the destination to be written
|
|
in the foreground color & mix, 0 bits causes writes
|
|
in the background color & mix.
|
|
8: Through-the-plane copying. The source is copied to
|
|
the destination with the foreground mix.
|
|
Note: one source claims 1 will also cause Through-the-plane
|
|
copying like 8.
|
|
04h WORD Width of area
|
|
06h WORD Height of area
|
|
08h BYTE Source plane for bit expansion. For color expansions this
|
|
selects the plane which holds the monochrome map.
|
|
09h BYTE Reserved
|
|
0Ah WORD Source X coordinate - left edge
|
|
0Ch WORD Source Y coordinate - top
|
|
0Eh WORD Source X coordinate - left edge
|
|
10h WORD Source Y coordinate - top
|
|
|
|
function 1Ah HSCOORD(X) - Set Coordinate Types
|
|
Sets the coordinate formats used.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(3)
|
|
02h BYTE Absolute coordinate format
|
|
bit 0-3 Number of fractional bytes. Default = 0
|
|
4-7 Number of bytes per coordinate. Default = 2
|
|
03h BYTE Relative coordinate format
|
|
bit 0-3 Number of fractional bytes. Default = 0
|
|
4-7 Number of bytes per coordinate. Default = 1
|
|
04h BYTE Number of dimensions: 2, 3 or 4
|
|
|
|
function 1Bh HQCOORD(X) - Query Coordinate Types
|
|
Informs whether specific coordinate formats are supported
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(4)
|
|
02h BYTE Absolute coordinate format
|
|
bit 0-3 Number of fractional bytes. Default = 0
|
|
4-7 Number of bytes per coordinate. Default = 2
|
|
03h BYTE Relative coordinate format
|
|
bit 0-3 Number of fractional bytes. Default = 0
|
|
4-7 Number of bytes per coordinate. Default = 1
|
|
04h BYTE Number of dimensions. Only 2 supported
|
|
05h BYTE Returned test results
|
|
bit 5 Set if specified dimension not supported
|
|
6 Set if specified dimension not supported
|
|
7 Set if specified dimension not supported
|
|
|
|
function 1Ch HSMODE(X) - Set Mode
|
|
Sets a new mode
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(1, 2 for XGA or ImageAdapter/A)
|
|
02h BYTE Adapter mode number
|
|
0: 1024x 768 with 12x20 char cell
|
|
1: 640x 480 with 8x14 char cell
|
|
2: 1024x 768 with 8x14 char cell
|
|
3: 1024x 768 with 7x15 char cell
|
|
Remaining in ATI versions only:
|
|
8: 800x 600 with 8x14 char cell
|
|
10: 1280x1024 with 7x15 char cell
|
|
Remaining field only present if length = 2:
|
|
03h BYTE Clear memory flag. 0: clear all memory, 80h don't clear
|
|
|
|
function 1Dh HQMODE(X) - Query Current Mode
|
|
Returns the current mode and configuration
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(18, 20 for XGA or ImageAdapter/A)
|
|
02h BYTE Mode number.
|
|
0: 1024x768, 12x20 char cell
|
|
1: 640x480, 8x14 char cell
|
|
2: 1024x768, 8x14 char cell
|
|
3: 1024x768, 7x15 char cell
|
|
03h WORD Driver code level
|
|
Bit 0-4 Release number (starts from 0)
|
|
5 0: 4plane board, 1: 8plane board
|
|
6 (8514/A) Minimum CPU level
|
|
8086 or 80286 ?
|
|
6-7 (XGA/Image Adapter) Minimum CPU level
|
|
0: 80286, 1: 8086, 2: 80386
|
|
8-11 (XGA/Image Adapter) Specification level
|
|
0: level 1.0, 1: level 1.2, 2: level 2.0
|
|
12-15 (XGA/Image Adapter) Operation system
|
|
0: MS/PC-DOS
|
|
|
|
05h BYTE Adapter Type.
|
|
3: 8514/A, 4: XGA, 5: Image Adapter/A
|
|
06h BYTE Reserved
|
|
07h BYTE Text cell width in pixels
|
|
08h BYTE Text cell height in pixels
|
|
09h BYTE Number of planes
|
|
0Ah WORD Screen width in pixels
|
|
0Ch WORD Screen height in lines
|
|
0Eh WORD Pixels/inch - horizontally
|
|
10h WORD Pixels/inch - vertically
|
|
59 for 640x480 on IBM 8514 monitor
|
|
79 for 640x480 on IBM 8512 or 8513 monitor
|
|
92 for 1024x768 on IBM 8514 monitor
|
|
12h BYTE 00h for monochrome, 0FFh for color display
|
|
13h BYTE Intensity levels, I.e the number of bits the DAC can handle
|
|
for each of the 3 basic colors.
|
|
0: non-loadable palette
|
|
6: original 8514/A and XGA
|
|
8: XGA-NI
|
|
|
|
Remaining fields only in XGA and Image Adapter/A version
|
|
14h BYTE Software area fill plane required (set to 1)
|
|
15h BYTE VGA mode support. 1 if a VGA compatible mode exists, 0 if not
|
|
|
|
function 1Eh HQMODES(X) - Query Adapter Modes
|
|
Returns a list of the supported modes, considering video memory and monitor
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(33)
|
|
02h BYTE Adapter type
|
|
03h 32BYTEs Mode list. Terminated by 0FFh.
|
|
|
|
function 1Fh HQDPS(X) - Query Drawing Process State Size
|
|
Returns the size of various structures
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(6, 14 for XGA version)
|
|
02h WORD Task buffer size in bytes
|
|
04h WORD Stack usage in bytes
|
|
06h WORD Palette save buffer in bytes
|
|
|
|
Remaining fields only in the XGA version
|
|
08h DWORD Amount of VRAM in bytes
|
|
0Ch DWORD Amount of VRAM (in bytes) required for area fill plane
|
|
|
|
function 20h HRECT(X) - Fill Rectangle
|
|
Fills a rectangle with the current area pattern
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(8, 8*Number_of_rects for the
|
|
XGA and ImageAdapter/A versions)
|
|
02h WORD X-coordinate of top-left corner (top row)
|
|
04h WORD Y-coordinate of top-left corner (left edge)
|
|
06h WORD Width of the rectangle in pixels
|
|
08h WORD Height of the rectangle in lines
|
|
Note: For the XGA and ImageAdapter/A versions the rectangle data (byte 2-9) is
|
|
repeated as many times as required by the length field.
|
|
|
|
function 21h HSBP(X) - Set Bit Plane Controls
|
|
Enables or disables specific planes. Each set bit enables the plane, each
|
|
clear bit disables it. Only the number of loworder bits from each field
|
|
relevant to the current mode are used, I.e 4 in 16color modes and 8 in
|
|
256color modes
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(12, 26 for XGA and ImageAdapter/A)
|
|
02h DWORD Plane enable for graphics. Controls all writes to video
|
|
memory for drawing and regular text operations
|
|
06h DWORD Plane enable for alphanumerics. Controls all writes to video
|
|
memory for alphanumeric operations.
|
|
0Ah DWORD Plane enable for display. Controls which planes are displayed
|
|
Remaining fields only available in XGA and ImageAdapter/A versions
|
|
0Eh BYTE Flags, must be 0
|
|
0Fh BYTE Reserved(0)
|
|
10h DWORD Green bits mask
|
|
14h DWORD Red bits mask
|
|
18h DWORD Blue bits mask
|
|
|
|
function 22h HCLOSE(X) - Close Adapter
|
|
Closes down the AI and switches to VGA
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(1)
|
|
02h BYTE Reserved, must be 0
|
|
Note: one source claims the length is 0 rather than 1.
|
|
|
|
function 23h HESC(X) - Escape, Terminate Processing
|
|
Terminates any current drawing operation
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(0)
|
|
Note: this has no effect in the XGA version
|
|
|
|
function 24h HXLATE(X) - Assign Multi-Plane Text Color Index Table
|
|
Sets the color translation table for multiplane fonts.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(32)
|
|
02h 8 DWORDs Color translation table for multiplane fonts, which can have
|
|
8 colors which are found by combining 1 bit from of 3 planes
|
|
|
|
function 25h HSCS(X) - Set Character Set
|
|
Sets the current character set
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(4)
|
|
02h DWORD Ptr to font definition.
|
|
This area should not be changed until HSCS is called again
|
|
|
|
function 26h HCHST(X) - Text Character String at Given Position
|
|
Writes a text string at the given (X,Y) position in the current font.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(4 + textlen)
|
|
02h WORD X-coordinate to plot text at
|
|
04h WORD Y-coordinate to plot text at
|
|
06h TEXT The text string. The number of characters is determined by
|
|
the length in the WORD at 00h (-4).
|
|
|
|
function 27h HCCHST(X) - Text Character String at Current Position
|
|
Writes a text string at the current position in the current font.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(0 + textlen)
|
|
02h TEXT The text string. The number of characters is determined by
|
|
the length in the WORD at 00h.
|
|
|
|
function 28h ABLOCKMFI(X) - Write Character Block
|
|
Writes a block of characters to the display
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(9)
|
|
02h BYTE Start X position (column)
|
|
03h BYTE Start Y position (row)
|
|
04h BYTE Width of block in characters
|
|
05h BYTE Height of block in characters
|
|
06h DWORD Pointer to character block
|
|
Each character occupies one DWORD:
|
|
Bit 8-9 Font number
|
|
12 Background transparent if set, opaque if clear
|
|
13 Overstrike
|
|
14 Reverse Video
|
|
15 Underscore
|
|
16-19 Foreground color
|
|
20-23 Background color
|
|
24-31 Character code
|
|
0Ah BYTE Number of characters in block
|
|
|
|
function 29h ABLOCKCGA(X) - Write Character Block (CGA)
|
|
Writes a block of characters to the display
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(10)
|
|
02h BYTE Start X position (column)
|
|
03h BYTE Start Y position (row)
|
|
04h BYTE Width of block in characters
|
|
05h BYTE Height of block in characters
|
|
06h DWORD Pointer to character block
|
|
Each character occupies one WORD:
|
|
Bit 0-3 Foreground color
|
|
4-7 Background color
|
|
8-15 Character code
|
|
0Ah BYTE Number of characters in block
|
|
0Bh BYTE Attribute of the text
|
|
Bit 0-1 Font selection
|
|
4 Set for transparent background, clear for opaque
|
|
background (use characters background color)
|
|
5 Overstrike
|
|
6 Reverse Video
|
|
7 Underline
|
|
|
|
function 2Ah AERASE(X) - Erase Rectangle
|
|
Clears a rectangle to the specified background color
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(5)
|
|
02h BYTE Starting column
|
|
03h BYTE Starting Row
|
|
04h BYTE Number of Columns
|
|
05h BYTE Number of Rows
|
|
06h BYTE Bits 0-3 Reserved, should be 0
|
|
4-7 Background color
|
|
|
|
function 2Bh ASCROLL(X) - Scroll Rectangle
|
|
Scrolls a rectangle of character cells
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(6)
|
|
02h BYTE Starting character column of source
|
|
03h BYTE Starting character row of source
|
|
04h BYTE Number of character columns of area
|
|
05h BYTE Number of character rows of area
|
|
06h BYTE Starting character column of destination
|
|
07h BYTE Starting character row of destination
|
|
Note: both source and destination must be entirely on screen
|
|
|
|
function 2Ch ACURSOR(X) - Set Cursor Position
|
|
Moves the text-cursor
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(2)
|
|
02h BYTE New X position in character Columns
|
|
03h BYTE New Y position in character Rows
|
|
|
|
function 2Dh ASCUR(X) - Set Cursor Shape
|
|
Sets the shape of the text cursor
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(3)
|
|
02h BYTE Cursor start line. 0=top
|
|
03h BYTE Cursor stop line
|
|
04h BYTE Cursor Attributes
|
|
00h Normal cursor
|
|
01h Hidden cursor
|
|
02h Left arrow cursor
|
|
03h Right arrow cursor
|
|
|
|
function 2Eh ASFONT(X) - Set Character Set
|
|
Defines the character set
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(6)
|
|
02h BYTE Font number
|
|
03h BYTE Reserved
|
|
04h DWORD Address of the character set definition block:
|
|
Offset: Type: Description:
|
|
00h BYTE Reserved
|
|
01h BYTE Type of character set
|
|
00h Bitmapped
|
|
03h Short stroke vector
|
|
02h BYTE Reserved
|
|
03h DWORD Reserved
|
|
07h BYTE Cell width in pixels
|
|
08h BYTE Cell height in pixels
|
|
09h BYTE Reserved
|
|
0Ah WORD Cell size (height*width/8 rounded up to
|
|
nearest number of bytes).
|
|
0Ch WORD Flags
|
|
Bit 13 Set for proportionally spaced font
|
|
14 Set for color bitmapped fonts,
|
|
clear for mono bitmapped fonts
|
|
Other bits must be 0.
|
|
0Eh DWORD Address of index table. One WORD for each
|
|
character code (see Initial and Final
|
|
codes in bytes 16h and 17h). Marks the
|
|
start of each character definition
|
|
(bitmap/stroked line) relative to the
|
|
start of the character definition table.
|
|
12h DWORD Address of character width table
|
|
Two bytes per character code. The first is
|
|
the indention in pixels from the left, the
|
|
second the indention in pixels from the
|
|
right, thus non-zero values makes the
|
|
character thinner.
|
|
Only used for proportionally spaced fonts
|
|
16h BYTE Initial code point. First character code
|
|
in the font tables.
|
|
17h BYTE Final code point. Last character code in the
|
|
font tables.
|
|
18h DWORD Address of character definition table. For
|
|
bitmapped fonts each character is defined
|
|
as a two-dimensional array of bits
|
|
occupying the minimum number of bytes per
|
|
character, I.e. an 11x9 font occupies 13
|
|
bytes. For Short Stroke vector fonts each
|
|
character is defined by a series of
|
|
draw/move commands each occupying one
|
|
byte, terminated by a null (00h) byte.
|
|
Each command byte is defined as:
|
|
Bit 0-3 Length in pixels projected onto the
|
|
X or Y axis
|
|
4 Clear for move, set for draw
|
|
5-7 Direction
|
|
0: 0 degrees (increasing X)
|
|
1: 45 degrees
|
|
2: 90 degrees (increasing Y)
|
|
3: 135 degrees
|
|
4: 180 degrees (decreasing X)
|
|
5: 225 degrees
|
|
6: 270 degrees (decreasing Y)
|
|
7: 315 degrees
|
|
1Ch WORD Reserved
|
|
1Eh DWORD Address of 2nd character table
|
|
For Color Bitmapped Fonts where the
|
|
foreground color is NOT FFFFFFFFh this table
|
|
and the 3rd character table are ORed with the
|
|
primary character definition table to
|
|
produce one table. The image is drawn with
|
|
the current foreground color and mix on the
|
|
current background color and mix.
|
|
22h WORD Reserved
|
|
24h DWORD Address of 3rd character table. See the
|
|
description under the 2nd char table.
|
|
|
|
function 2Fh AXLATE(X) - Assign Alpha Attribute Color Index Table
|
|
Defines character attribute to color translations.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(128)
|
|
02h 16DWORDs Foreground Character Attribute (bits 4-7) translation
|
|
table. One DWORD for each of 16 attribute combinations
|
|
42h 16DWORDs Background Character Attribute (bits 0-3) translation
|
|
table. One DWORD for each of 16 attribute combinations
|
|
|
|
function 30h HINIT(X) - Initialize State
|
|
Sets the Task State buffer to the adapter dependent initial state
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(2)
|
|
02h WORD Segment address of the Task State buffer, offset is 0.
|
|
|
|
function 31h HSYNC(X) - Synchronize Adapter
|
|
Sets the adapter state to the state store in the specified task buffer.
|
|
Used to implement task switching in a multi-tasking environment
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(2)
|
|
02h WORD Segment of the Task state buffer
|
|
|
|
function 32h HMRK(X) - Marker at Given Position
|
|
Places a marker symbol at each position given.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(4*Number_of_points)
|
|
...
|
|
4*N+2 WORD X-coordinate of Nth point
|
|
4*N+4 WORD Y-coordinate of Nth point
|
|
|
|
function 33h HCMRK(X) - Marker at Current Position
|
|
Draws a marker (defined by HSMARK) at the current position and each point in
|
|
the data block. The marker is drawn around the point.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(4*Number_of_points)
|
|
...
|
|
4*N+2 WORD X-coordinate of Nth point
|
|
4*N+4 WORD Y-coordinate of Nth point
|
|
|
|
function 34h HSMARK(X) - Set Marker Shape
|
|
Sets the shape of the marker symbol
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(10 or 14)
|
|
02h BYTE Mark width in pixels
|
|
03h BYTE Mark height in lines
|
|
04h BYTE Flags
|
|
Bit 0-5 Reserved, set to 0
|
|
6 (XGA and ImageAdapter/A only) For color data:
|
|
0: 1pixel/byte, 1: packed pixel format
|
|
7 0: Monochrome: Marker is drawn with current
|
|
foreground color&mix on the background color&mix,
|
|
1: Color: Marker is drawn in the color from the
|
|
color data (Byte 0Ch) on the current background
|
|
color&mix
|
|
05h BYTE Reserved
|
|
06h WORD Size of mark definition data
|
|
08h DWORD Address of mark definition. A packed monochrome bitmap
|
|
This field only present if length = 14
|
|
0Ch DWORD Address of mark color data. Either one pixel/byte or packed
|
|
pixel data if byte 4 bit 6 set.
|
|
|
|
function 35h HSLPC(X) - Save Line Pattern Count
|
|
Saves the line pattern count.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(0, 2 for XGA and ImageAdapter/A)
|
|
The following field only present if length=2 (XGA and ImageAdapter/A)
|
|
02h WORD Line pattern count stored in this word.
|
|
|
|
function 36h HRLPC(X) - Restore Line Pattern Count
|
|
Restores a previously saved line pattern count.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(0, 2 for XGA and ImageAdapter/A)
|
|
02h WORD Optional line pattern count to use for restore
|
|
Only present for XGA and ImageAdapter/A versions
|
|
|
|
function 37h HQCP(X) - Query Current Position
|
|
Returns the current position
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(4)
|
|
02h WORD Current X coordinate
|
|
04h WORD Current Y coordinate
|
|
|
|
function 38h HQDFPAL(X) - Query Default Palette
|
|
Returns the default palette RGB values
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(64)
|
|
02h 16DWORDs One DWORD for each of the 16 primary color indices with the
|
|
RGB value currently in use for that index.
|
|
Primary colors:
|
|
0: Black 1: Blue 2: Green, 3: Cyan
|
|
4: Red 5: Magenta 6: Brown 7: White
|
|
8: Grey 9: Lt Blue 10: Lt Green 11: Lt Cyan
|
|
12: Lt Red 13: Lt Magenta 14: Yellow 15: Bright White
|
|
|
|
function 39h HSPAL(X) - Save Palette
|
|
Saves the palette in a format ready for loading with HRPAL
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(get from HQDPS)
|
|
02h BYTEs Palette buffer, get size from HQDPS
|
|
|
|
function 3Ah HRPAL(X) - Restore Palette
|
|
Restores a previously saved palette
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(up to 768)
|
|
02h 768BYTEs Palette data, up to 256 * 3BYTEs, see HQDPS for exact size
|
|
|
|
function 3Bh HSAFP(X) -
|
|
Sets the area fill plane for areafill, raster text and marker operation.
|
|
Only needed if the default bitmap has been changed with HSBMAP.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(5)
|
|
02h DWORD Address of area fill plane. Linear offset into the video
|
|
memory, must be a multiple of 4.
|
|
06h BYTE Reserved, must be 80h
|
|
Note: this function only implemented in the XGA and Image Adapter/A versions
|
|
|
|
function 3Ch ASCELL(X)
|
|
Resizes the alphanumeric cell size. A new font should be loaded before text
|
|
is output again.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(2)
|
|
02h BYTE New cell width
|
|
03h BYTE New cell height
|
|
|
|
function 3Dh ASGO(X)
|
|
Sets the origin for text output.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(4)
|
|
02h WORD New X-position of grid origin
|
|
04h WORD New Y-position of grid origin
|
|
Note: this function only implemented in the XGA and Image Adapter/A versions
|
|
|
|
function 3Eh HDLINE(X) -
|
|
Draws a series of lines, from point 1 to 2, then from point 3 to 4 etc.
|
|
The current position is set to the last point in the list, which may either
|
|
be the endpoint of a line (even number of points) or a separate point.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(4*Number_of_points)
|
|
...
|
|
4*N+2 WORD X-coordinate of the Nth point
|
|
4*N+4 WORD Y-coordinate of the Nth point
|
|
Note: this function only implemented in the XGA and Image Adapter/A versions
|
|
|
|
function 40h HPEL(X) -
|
|
Draws horizontal strings of pixels using the current color and mix
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(6*Number_of_strings)
|
|
...
|
|
6*N+2 WORD X-coordinate (leftmost) of the Nth string
|
|
6*N+4 WORD Y-coordinate of the Nth string
|
|
6*N+6 WORD Number of pixels in the Nth string
|
|
Note: this function only implemented in the XGA and Image Adapter/A versions
|
|
|
|
function 41h HRPEL(X) -
|
|
Reads the requested number of pixels from (X,Y) leftwards and places the
|
|
read pixels in the data buffer in packed format.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(10)
|
|
02h DWORD Ptr to pixel buffer
|
|
06h WORD X-coordinate
|
|
08h WORD Y-coordinate
|
|
0Ah WORD Pixel count
|
|
Note: this function only implemented in the XGA and Image Adapter/A versions
|
|
|
|
function 42h HPSTEP(X) -
|
|
Draws a series of short stroke commands at the given position
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(8 or 12)
|
|
02h WORD X-coordinate of start point
|
|
04h WORD Y-coordinate of start point
|
|
08h DWORD Address of Short Stroke-style data.
|
|
Each byte is a 8514 style Short-Stroke vector:
|
|
Bit 0-3 Length of linesegment in pixels
|
|
4 1 for draw, 0 for move
|
|
5-7 Direction in degrees counter-clockwise from X-axis
|
|
0: 0 deg, 1: 45 deg, 2: 90 deg, 3: 135deg
|
|
4: 180deg, 5: 225deg, 6: 270deg, 7: 315deg
|
|
A null byte terminates the data block.
|
|
0Ch DWORD Address of source pixel buffer (only present if the length
|
|
field is 12). If present each pixel drawn (or skipped) gets
|
|
its colorinfo from this buffer, rather than the foreground
|
|
color & mix.
|
|
Note: this function only implemented in the XGA and Image Adapter/A versions
|
|
|
|
function 43h HCPSTEP(X)
|
|
Draws a series of shortstroke linesegments.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(4 or 8)
|
|
02h DWORD Address of Short Stroke-style data.
|
|
Each byte is a 8514 style Short-Stroke vector:
|
|
Bit 0-3 Length of linesegment in pixels
|
|
4 1 for draw, 0 for move
|
|
5-7 Direction in degrees counter-clockwise from X-axis
|
|
0: 0 deg, 1: 45 deg, 2: 90 deg, 3: 135deg
|
|
4: 180deg, 5: 225deg, 6: 270deg, 7: 315deg
|
|
A null byte terminates the data block.
|
|
06h DWORD Address of source pixel buffer (only present if the length
|
|
field is 8). If present each pixel drawn (or skipped) gets
|
|
its colorinfo from this buffer, rather than the foreground
|
|
color & mix.
|
|
Note: this function only implemented in the XGA and Image Adapter/A versions
|
|
|
|
function 44h HRSTEP(X) -
|
|
Reads pixel data along a series of short stroke vectors from the given point
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(12)
|
|
02h WORD Starting X-coordinate
|
|
04h WORD Starting Y-coordinate
|
|
06h DWORD Address of Short Stroke-style data.
|
|
Each byte is a 8514 style Short-Stroke vector:
|
|
Bit 0-3 Length of linesegment in pixels
|
|
4 1 for draw, 0 for move
|
|
5-7 Direction in degrees counter-clockwise from X-axis
|
|
0: 0 deg, 1: 45 deg, 2: 90 deg, 3: 135deg
|
|
4: 180deg, 5: 225deg, 6: 270deg, 7: 315deg
|
|
A null byte terminates the data block.
|
|
0Ah DWORD Ptr to buffer where read pixels are placed in packed format
|
|
Note: this function only implemented in the XGA and Image Adapter/A versions
|
|
|
|
function 45h HSBMAP(X) -
|
|
Sets current bitmap and attributes.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(10)
|
|
02h BYTE Flags
|
|
Bit 0-5 Reserved, must be 0
|
|
6 1 for screen bitmaps, 0 for non-screen bitmaps
|
|
7 Reserved, must be 1
|
|
03h BYTE Bitmap depth: 1, 2, 4 or 8
|
|
04h DWORD Address of bitmap, as a linear offset from the start of the
|
|
display memory of the device. Must be a multiple of 8 bytes
|
|
for screen bitmaps and of 4 bytes for non-screen bitmaps.
|
|
08h WORD Width of bitmap in pixels. Max 2048 pixels
|
|
Must be a multiple of 8 bytes for screen bitmaps and of 4
|
|
bytes for non-screen bitmaps.
|
|
0Ah WORD Height of bitmap in lines. Max 2048 lines
|
|
|
|
function 46h HQBMAP(X) -
|
|
Queries current bitmap attributes
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(10 or 18)
|
|
02h BYTE Flags
|
|
Bit 0-5 Reserved, must be 0
|
|
6 Set for Screen bitmap, clear for non-screen
|
|
7 Reserved, must be 1
|
|
03h BYTE Bitmap depth (1,2,4 or 8)
|
|
04h DWORD Address of bitmap as linear offset from the start of the
|
|
frame buffer.
|
|
08h WORD Width of bitmap in pixels
|
|
0Ah WORD Height of bitmap in lines
|
|
|
|
Remaining fields only present if the length field is 18
|
|
0Ch WORD Display window X origin
|
|
0Eh WORD Display window Y origin
|
|
10h WORD Display window width in pixels
|
|
12h WORD Display window height in lines
|
|
Note: this function only implemented in the XGA and Image Adapter/A versions
|
|
|
|
function 47h HBMC(X) -
|
|
Copies bitmap block data, either within a bitmap or between bitmaps
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(48)
|
|
02h WORD Flags
|
|
Bit 9 If set the source bitmap starts (logically) at
|
|
the bottom-left corner rather than the top-left
|
|
10-11 Location of pattern bitmap
|
|
0: pattern not present
|
|
2: Video RAM
|
|
12-13 Location of source bitmap
|
|
0: Source not present (use pattern instead).
|
|
2: Video RAM
|
|
14-15 Location of destination bitmap
|
|
2: Video RAM
|
|
04h WORD Width of block in pixels
|
|
06h WORD Height of block in lines
|
|
08h BYTE Destination bitmap depth
|
|
09h BYTE Reserved
|
|
0Ah DWORD Address of destination bitmap
|
|
0Eh WORD Pitch of destination in pixels
|
|
10h WORD Height of destination map in lines
|
|
12h WORD Destination X-coordinate
|
|
14h WORD Destination Y-coordinate
|
|
16h BYTE Source bitmap depth. 1,2 or 8
|
|
17h BYTE Reserved
|
|
18h DWORD Address of source bitmap
|
|
1Ch WORD Pitch of source bitmap
|
|
1Eh WORD Height of source bitmap
|
|
20h WORD Source X-coordinate
|
|
22h WORD Source Y-coordinate
|
|
24h BYTE Pattern bitmap depth. 1
|
|
25h BYTE Reserved
|
|
26h DWORD Address of pattern bitmap
|
|
2Ah WORD Pitch of pattern bitmap
|
|
2Ch WORD Height of pattern bitmap
|
|
2Eh WORD X-position of pattern within pattern bitmap
|
|
30h WORD Y-position of pattern within pattern bitmap
|
|
Note: this function only implemented in the XGA and Image Adapter/A versions
|
|
|
|
function 48h HSDW(X) -
|
|
Sets the display window
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(8)
|
|
02h WORD New X-origin for display window
|
|
04h WORD New Y-origin for display window
|
|
06h WORD Window width in pixels
|
|
08h WORD Window height in lines
|
|
Note: this function only implemented in the XGA and Image Adapter/A versions
|
|
|
|
function 49h HSPRITE(X) -
|
|
Positions the Hardware Sprite
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(4)
|
|
02h WORD New sprite hot-spot X-coordinate
|
|
04h WORD New sprite hot-spot Y-coordinate
|
|
Note: this function only implemented in the XGA version
|
|
|
|
function 4Ah HSSPRITE(X)
|
|
Defines and enables/disables the hardware sprite.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(1 or 24)
|
|
02h BYTE Flags
|
|
Bit 0-6 Reserved
|
|
7 0: Disabled, 1: Enabled and visible
|
|
Remaining fields only present if length=24
|
|
03h BYTE Reserved, set to 0
|
|
04h BYTE X hot-spot offset
|
|
05h BYTE Y hot-spot offset
|
|
06h DWORD Ptr to sprite definition data.
|
|
A 2bits per pixel packed bitmap, where each pixels indicates:
|
|
0: Sprite Color 0
|
|
1: Sprite Color 1
|
|
2: Transparent (Screen data)
|
|
3: Inverse screen data (XOR cursor)
|
|
0Ah WORD Sprite width in pixels. Must be a multipla of 4. Max 64.
|
|
0Ch WORD Sprite height in lines. Max 64.
|
|
0Eh WORD Color 0, red component
|
|
10h WORD Color 0, green component
|
|
12h WORD Color 0, blue component
|
|
14h WORD Color 1, red component
|
|
16h WORD Color 1, green component
|
|
18h WORD Color 1, blue component
|
|
Note: this function only implemented in the XGA version
|
|
|
|
function 4Bh HRWVEC(X) -
|
|
Either draws a polyline from the data in the pixel buffer, or copies the
|
|
pixels under the polyline into the pixel buffer. The polyline starts with the
|
|
coordinates in WORDs 8 and 0Ah and continues to each coordinate set in turn.
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(10+4*Number_of_points)
|
|
02h BYTE Flags
|
|
Bit 0-6 Reserved(0)
|
|
7 Set to write data, clear to read
|
|
03h BYTE Reserved(0)
|
|
04h DWORD Address of data buffer. For reads the data under the polyline
|
|
is stored in this buffer in packed format, for writes each
|
|
pixel in the buffer decides the mix to use for drawing the
|
|
corresponding pixel of the polyline. 0 causes the pixel to be
|
|
drawn with the background, all other values causes the pixel
|
|
to be drawn with the foreground mix.
|
|
The buffer is max 4095 bytes
|
|
08h WORD Starting X-coordinate
|
|
0Ah WORD Starting Y-coordinate
|
|
|
|
4*N+8 WORD X-coordinate of Nth point
|
|
4*N+10 WORD Y-coordinate of Nth point
|
|
|
|
Note: this function only implemented in the XGA and Image Adapter/A versions
|
|
|
|
function 4Eh HSFPAL(X) -
|
|
Saves full palette
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(Get size from HQDPS)
|
|
02h WORD Format, always 8
|
|
Palette data follows. Call HQDPS for size of palette data.
|
|
|
|
function 4Fh HRFPAL(X) -
|
|
Restores full palette. The size of the data area should be taken from HQDPS
|
|
Parameter Block:
|
|
Offset: Type: Description:
|
|
00h WORD Length of data following(size of palette data +1)
|
|
02h WORD Format (8)
|
|
04h- BYTEs Palette data. See HQDPS for size
|
|
Note: this function only implemented in the XGA and Image Adapter/A versions
|
|
|
|
function 50h HQDEVICE(X)
|
|
Returns device specific information
|
|
Note: this function only implemented in the Image Adapter/A version
|
|
|
|
|
|
Check for AI installed:
|
|
|
|
if MEML[0:$1FC]<>0 then {Int Vector 7Fh not NULL}
|
|
begin
|
|
rp.cx:=0;
|
|
rp.dx:=0;
|
|
rp.ax:=$105;
|
|
intr($7F,rp);
|
|
if ((rp.flags and 1)=0) {Carry not set}
|
|
and ((rp.cx<>0) or (rp.dx<>0) then {CX:DX is non-zero}
|
|
We have an AI. CX:DX points to the jump table
|
|
end;
|
|
|