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;