Retro video games delivered to your door every month!
Click above to get retro games delivered to your door ever month!
X-Hacker.org- Ralf Brown's Interrupt List (Part 1,2) - int 14 - video fossil - open vfossil http://www.X-Hacker.org [<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
INT 14 - VIDEO FOSSIL - OPEN VFOSSIL
        AX = 8101h
        CX = length of buffer for application function table in bytes
        ES:DI -> application function table (see below)
Return: AX = 1954h if installed
            BH = highest VFOSSIL application function supported
Note:   the number of initialized pointers in the application function table
          will never exceed CX/4; if the buffer is large enough, BH+1 pointers
          will be initialized
SeeAlso: AX=8102h

Format of application function table:
Offset  Size    Description
 00h    DWORD   -> function to query current video mode (VioGetMode)
 04h    DWORD   -> function to set video mode (VioSetMode)
 08h    DWORD   -> function to query hardware config (VioGetConfig)
 0Ch    DWORD   -> function to write data in TTY mode (VioWrtTTY)
 10h    DWORD   -> function to get current ANSI state (VioGetANSI)
 14h    DWORD   -> function to set new ANSI state (VioSetANSI)
 18h    DWORD   -> function to get curr cursor position (VioGetCurPos)
 1Ch    DWORD   -> function to set cursor position (VioSetCurPos)
 20h    DWORD   -> function to get cursor shape (VioGetCurType)
 24h    DWORD   -> function to set cursor shape (VioSetCurType)
 28h    DWORD   -> function to scroll screen up (VioScrollUp)
 2Ch    DWORD   -> function to scroll screen down (VioScrollDn)
 30h    DWORD   -> function to read cell string from screen (VioReadCellStr)
 34h    DWORD   -> function to read char string from screen (VioReadCharStr)
 38h    DWORD   -> function to write a cell string (VioWrtCellStr)
 3Ch    DWORD   -> function to write char string, leaving attr (VioWrtCharStr)
 40h    DWORD   -> function to write char string,const attr (VioWrtCharStrAttr)
 44h    DWORD   -> function to replicate an attribute (VioWrtNAttr)
 48h    DWORD   -> function to replicate a cell (VioWrtNCell)
 4Ch    DWORD   -> function to replicate a character (VioWrtNChar)

Format of video mode data structure:
Offset  Size    Description
 00h    WORD    length of structure including this field
 02h    BYTE    mode characteristics
                bit 0: clear if MDA, set otherwise
                bit 1: graphics mode
                bit 2: color disabled (black-and-white)
 03h    BYTE    number of colors supported (1=2 colors, 4=16 colors, etc)
 04h    WORD    number of text columns
 06h    WORD    number of text rows
 08h    WORD    reserved
 0Ah    WORD    reserved
 0Ch    DWORD   reserved

Format of video configuration data:
Offset  Size    Description
 00h    WORD    structure length including this field
 02h    WORD    adapter type
                00h monochrome/printer
                01h CGA
                02h EGA
                03h VGA
                07h 8514/A
 04h    WORD    display type
                00h monochrome
                01h color
                02h enhanced color
                09h 8514
 06h    DWORD   adapter memory size

Format of cursor type record:
Offset  Size    Description
 00h    WORD    cursor start line
 02h    WORD    cursor end line
 04h    WORD    cursor width (always 01h)
 06h    WORD    cursor attribute (FFFFh = hidden)

Call VioGetMode with:
        STACK:  WORD    VIO handle (must be 00h)
                DWORD   pointer to video mode data structure (see above)
Return: AX = error code (00h, 74h, 17Eh, 1B4h)
            0000h successful
            0074h internal VIO failure
            0163h unsupported mode
            0166h invalid row value
            0167h invalid column value
            017Eh buffer too small
            01A5h invalid VIO parameter
            01B4h invalid VIO handle

Call VioSetMode with:
        STACK:  WORD    VIO handle (must be 00h)
                DWORD   pointer to video mode data structure (see above)
Return: AX = error code (00h, 74h, 163h, 17Eh, 1A5h, 1B4h) (see above)

Call VioGetConfig with:
        STACK:  WORD    VIO handle (must be 00h)
                DWORD   pointer to video configuration data buffer (see above)
Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see above)

Call VioWrtTTY with:
        STACK:  WORD    VIO handle (must be 00h)
                WORD    length of string
                DWORD   pointer to character string to be written to screen
Return: AX = error code (00h, 74h, 1B4h) (see above)
Notes:  write wraps at end of line and terminates if it reaches end of screen
        in ANSI mode, ANSI control sequences are interpreted, and this func is
          not required to be reentrant; in non-ANSI mode, the function is
          reentrant and may be called from within an MSDOS function call

Call VioGetANSI with:
        STACK:  WORD    VIO handle (must be 00h)
                DWORD   pointer to WORD which will be set to 00h if ANSI is off
                        or 01h if ANSI is on
Return: AX = error code (00h, 74h, 1B4h) (see above)

Call VioSetANSI with:
        STACK:  WORD    VIO handle (must be 00h)
                DWORD   pointer to WORD indicating new state of ANSI
                        00h off
                        01h on
Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see above)

Call VioGetCurPos with:
        STACK:  WORD    VIO handle (must be 00h)
                DWORD   pointer to WORD to hold current cursor column (0-based)
                DWORD   pointer to WORD to hold current cursor row (0-based)
Return: AX = error code (00h, 74h, 1B4h) (see above)

Call VioSetCurPos with:
        STACK:  WORD    VIO handle (must be 00h)
                WORD    cursor column
                WORD    cursor row
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
Note:   if either coordinate is invalid, the cursor is not moved

Call VioGetCurType with:
        STACK:  WORD    VIO handle (must be 00h)
                DWORD   pointer to cursor type record (see above)
Return: AX = error code (00h, 74h, 1B4h) (see above)

Call VioSetCurType with:
        STACK:  WORD    VIO handle (must be 00h)
                DWORD   pointer to cursor type record (see above)
Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see above)

Call VioScrollUp with:
        STACK:  WORD    VIO handle (must be 00h)
                DWORD   pointer to char/attr cell for filling emptied rows
                WORD    number or rows to scroll (FFFFh = clear area)
                WORD    right column of scroll area
                WORD    bottom row of scroll area
                WORD    left column of scroll area
                WORD    top row of scroll area
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)

Call VioScrollDn with:
        STACK:  WORD    VIO handle (must be 00h)
                DWORD   pointer to char/attr cell for filling emptied rows
                WORD    number or rows to scroll (FFFFh = clear area)
                WORD    right column of scroll area
                WORD    bottom row of scroll area
                WORD    left column of scroll area
                WORD    top row of scroll area
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)

Call VioReadCellStr with:
        STACK:  WORD    VIO handle (must be 00h)
                WORD    column at which to start reading
                WORD    row at which to start reading
                DWORD   pointer to WORD containing length of buffer in bytes
                        on return, WORD contains number of bytes actually read
                DWORD   pointer to buffer for cell string
Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see above)

Call VioReadCharStr with:
        STACK:  WORD    VIO handle (must be 00h)
                WORD    column at which to start reading
                WORD    row at which to start reading
                DWORD   pointer to WORD containing length of buffer in bytes
                        on return, WORD contains number of bytes actually read
                DWORD   pointer to buffer for character string
Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see above)

Call VioWrtCellStr with:
        STACK:  WORD    VIO handle (must be 00h)
                WORD    column at which to start writing
                WORD    row at which to start writing
                WORD    length of cell string in bytes
                DWORD   pointer to cell string to write
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
Note:   write wraps at end of line and terminates if it reaches end of screen

Call VioWrtCharStr with:
        STACK:  WORD    VIO handle (must be 00h)
                WORD    column at which to start writing
                WORD    row at which to start writing
                WORD    length of character string
                DWORD   pointer to character string to write
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
Note:   write wraps at end of line and terminates if it reaches end of screen

Call VioWrtCharStrAttr with:
        STACK:  WORD    VIO handle (must be 00h)
                DWORD   pointer to attribute to be applied to each character
                WORD    column at which to start writing
                WORD    row at which to start writing
                WORD    length of character string
                DWORD   pointer to character string to write
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
Note:   write wraps at end of line and terminates if it reaches end of screen

Call VioWrtNAttr with:
        STACK:  WORD    VIO handle (must be 00h)
                WORD    column at which to start writing
                WORD    row at which to start writing
                WORD    number of times to write attribute
                DWORD   pointer to display attribute to replicate
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
Note:   write wraps at end of line and terminates if it reaches end of screen

Call VioWrtNCell with:
        STACK:  WORD    VIO handle (must be 00h)
                WORD    column at which to start writing
                WORD    row at which to start writing
                WORD    number of times to write cell
                DWORD   pointer to cell to replicate
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
Note:   write wraps at end of line and terminates if it reaches end of screen

Call VioWrtNChar with:
        STACK:  WORD    VIO handle (must be 00h)
                WORD    column at which to start writing
                WORD    row at which to start writing
                WORD    number of times to write character
                DWORD   pointer to character to replicate
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
Note:   write wraps at end of line and terminates if it reaches end of screen

Online resources provided by: http://www.X-Hacker.org --- NG 2 HTML conversion by Dave Pearson