DISP
Ovladač displeje
Litos8 podporuje standardní videomódy BIOS, číslo 0 až 19. Umožňuje zobrazení znaků v kódu IBM nebo KEYBCS2 (bratří Kamenických; v závislosti na nastavení jazyku pomocí Scroll Lock), scrolování, kopie oblasti displeje, rámečky. Podporované grafické karty jsou MDA (nebo Hercules), CGA, EGA a VGA.
U funkcí pro zobrazení textu se barva zadává ve formátu barevných atributů, obvyklých v textových režimech - spodní 4 bity označují barvu textu, horní 4 bity barvu pozadí. U funkcí bez zadání barvy se používá implicitní barva, nastavitelná funkcí DispSetDefCol.
Většina videorežimů umožňuje určovat počátek zobrazené videopaměti pomocí funkce DispSetShift. Tak je možné přepínat obraz mezi více obrazovými stránkami a realizovat rychlé scrolování obrazu.
DispGetCard - get video card type
OUTPUT:
AL = video card
type (VCARD_MDA..)
DispSetMode - set videomode
INPUT:
AL = required videomode
OUTPUT:
AL = new current videomode
DispGetMode - get current videomode
OUTPUT:
AL = videomode (VMODE_40x25G..)
DispGetModeDesc - get current videomode descriptor
OUTPUT:
SI = pointer to VMODE descriptor
DispGetFontSize - get current font height
OUTPUT:
AL = number of lines per character
NOTES: Can be used when setting cursor size. All graphics modes use 8-line characters.
DispClear - clear display
SetCursor - set cursor position
INPUT:
DL = column
DH = row
NOTES: Cursor is visible only in text modes. To disable cursor, move it out of display area. It temporaly disables interrupts.
GetCursor - get cursor position
INPUT:
AL = column
AH = row
SetCursorSize - set cursor size
INPUT:
AL = bottom line of cursor, from top (0..31, AL >= AH)
AH = top line of cursor, from top (0..31, AH <= AL)
NOTES: Cursor is visible only in text modes. To disable cursor, move it out of display area. It temporaly disables interrupts.
GetCursorSize - get cursor size
OUTPUT:
AL = bottom line of cursor,from top (0..31, AL >= AH)
AH = top line of cursor, from top (0..31, AH <= AL)
NOTES: Cursor is visible only in text modes. To disable cursor, move it out of display area.
DispGetDefCol - get default color
OUTPUT:
AL = default color
DispSetDefCol - set default color
INPUT:
AL = default color
DispFill - fill text area
INPUT:
AL = character
AH = color attributes
CL = width
CH = height
DL = column
DH = row
DispChar - display character
INPUT:
AL = character
AH = color attributes
DL = column
DH = row
DispText - display text
INPUT:
AH = color attributes
SI = pointer to text
CX = text length
DL = column
DH = row
DispMove - move text area
INPUT:
BL = source column
BH = source row
CL = width
CH = height
DL = destination column
DH = destination row
DispScroll - scroll screen by one row
DispSetShift - set shift of view window
INPUT:
AX = row (text) or Y coordinate (graphics)
DispGetShift - get shift of view window
OUTPUT:
AX = row (text) or Y coordinate (graphics)
GetCharFont - get character font (8x8 character)
INPUT:
AL = character
OUTPUT:
SI = address of 8x8 character font
SetBorder - set screen border color
INPUT:
AL = border color 0..31 (bit 4: high intensity)
NOTES: With CGA graphics card it works only in text modes.
DispCharTable - display character table (characters 0..255)
INPUT:
AH = color attributes
DH = column
DL = row
NOTES: Table has size 35 x 18.
SetCGAPal - set CGA palettes
INPUT:
AL = color, bit 0..3: black color (color with
index 0), bit 4: intensive foreground colors, bit 5: palettes 0 =
green + brown, 1 = cyan + magenta
SetEGAPal - set one EGA palette register
INPUT:
AL = palette register 0..15
AH = color value
- bit 0: blue 2/3
- bit 1: green 2/3
- bit 2: red 2/3
- bit 4: secondary blue 1/3
- bit 5: secondary green 1/3
- bit 6: secondary blue 1/3
NOTES: Default values of palette registers:
0: 00h black
1: 01h blue
2: 02h green
3: 03h cyan
4: 04h red
5: 05h magenta
6: 14h brown
7: 07h white
8: 38h dark gray
9: 39h light blue
10: 3Ah light green
11: 3Bh light cyan
12: 3Ch light red
13: 3Dh light magenta
14: 3Eh yellow
15: 3Fh light white
SetEGAPalTab - set EGA palette registers using table
INPUT:
AX = 17-byte table of palette registers (last byte is border):
- bit 0: blue 2/3
- bit 1: green 2/3
- bit 2: red 2/3
- bit 4: secondary blue 1/3
- bit 5: secondary green 1/3
- bit 6: secondary blue 1/3
VGASetPal - set one VGA palette register
INPUT:
AL = palette register index (0..255)
AH = palette value Red (0..255)
BL = palette value Blue (0..255)
BH = palette value Green (0..255)
NOTES: Only 6 most significant bits of palettes are used (bits 2..7).
VGASetPalRGB - set VGA palettes from RGB table
INPUT:
AL = start palette register index (0..255)
CX = number of palette registers (1..256)
SI = palette table (triples: Blue, Green, Red, values 0..255)
NOTES: Only 6 most significant bits of palettes are used (bits 2..7).
VGASetPalRGBA - set VGA palettes from RGBA table
INPUT:
AL = start palette register index (0..255)
CX = number of palette registers (1..256)
SI = palette table (Blue, Green, Red, Alpha, values 0..255)
NOTES: Only 6 most significant bits of palettes are used (bits 2..7). Alpha component of table is unused and skipped.
VGASetPalDef - set default VGA palettes
NOTES: Color 0..15: standard EGA palettes. Color 16..31: gray scale 0,11h,22h,...0ffh. Color 32..39: bright colors RGB (black, blue, green,...white). Color 40..255: uniform palette (blue, green, red in 6 levels).
VGAGetPalDef - get default VGA RGB palettes
INPUT:
DI = destination 768-byte buffer (256 entries B-G-R, 0..255)
NOTES: Color 0..15: standard EGA palettes. Color 16..31: gray scale 0,11h,22h,...0ffh. Color 32..39: bright colors RGB (black, blue, green,...white). Color 40..255: uniform palette (blue, green, red in 6 levels).
ImportRGBPal - import RGB palettes
INPUT:
SI = imported RGB palettes (768 bytes: 256 entries B-G-R,0..255)
BX = reference RGB palette to import to (768 bytes: 256*B-G-R)
DI = destination 256-byte buffer, obtaining remapping indices
SetTXTBlink - set TEXT blinking mode (EGA, VGA)
INPUT:
AL = if color bit 7 is set: 1=blinking, 0=intensive background
VCARD_MDA: (=0) MDA (or Hercules MCG)
VCARD_CGA: (=1) CGA
VCARD_EGA: (=2) EGA
VCARD_VGA: (=3) VGA
VMODE_FLAGS: (byte) videomode flags (see
below)
VMODE_MODEL: (byte) color model (see below)
VMODE_COLBITS: (byte) number of color bits
VMODE_DEFMODE: (byte) default text videomode
VMODE_COLSROWS: (word)
VMODE_COLS: (byte) number of text columns
VMODE_ROWS: (byte) number of text rows
VMODE_SCANLINE: (word) bytes per row (text or graphics)
VMODE_WIDTH: (word) graphics width
VMODE_HEIGHT: (word) graphics height
VMODE_SEGM: (word) videomemory segment
VMODE_MAXSHIFT: (word) view window maximal shift
VMODE_PORT: (word) control port (3D4h or 3B4h)
VMODE_CLEAR: (word) function - clear display
VMODE_FILL: (word) function - fill text area (INPUT: AL =
character, AH = color attributes, CL = width, CH = height, DL =
column, DH = row)
VMODE_CHAR: (word) function - display character (INPUT: AL =
character, AH = color attributes, DL = column, DH = row)
VMODE_MOVE: (word) function - move text area (INPUT: BL = source
column, BH = source row, CL = width, CH = height, DL =
destination column, DH = destination row)
VMODE_SHIFT: (word) function - shift view window (INPUT: AX = row
or Y-coord.)
videomode flags:
VMODE_FLAGS_MDA: (=B0) MDA card supported
VMODE_FLAGS_CGA: (=B1) CGA card supported
VMODE_FLAGS_EGA: (=B2) EGA card supported
VMODE_FLAGS_VGA: (=B3) VGA card supported
color model:
VMODE_MODEL_NO (=0) unknown color model
VMODE_MODEL_TXT (=1) text (2 bytes per character)
VMODE_MODEL_CG1 (=2) CGA 1-bit (2 colors) graphics
VMODE_MODEL_CG2 (=3) CGA 2-bit (4 colors) graphics
VMODE_MODEL_EG1 (=4) EGA 1-bit (2 colors) graphics
VMODE_MODEL_EG4 (=5) EGA 4-bit (16 colors) graphics
VMODE_MODEL_VGA (=6) VGA 8-bit (256 colors) graphics
VMODE_40x25G: (=0) text 40 x 25 gray
VMODE_40x25: (=1) text 40 x 25 color
VMODE_80x25G: (=2) text 80 x 25 gray
VMODE_80x25: (=3) text 80 x 25 color
VMODE_320x200x4: (=4) graphics 320 x 200, 4 colors
VMODE_320x200x4G: (=5) graphics 320 x 200, 4 gray
VMODE_640x200x2: (=6) graphics 640 x 200, 2
VMODE_80x25BW: (=7) text 80 x 25, black&white
VMODE_320x200x16: (=13) graphics 320 x 200, 16 colors
VMODE_640x200x16: (=14) graphics 640 x 200, 16 colors
VMODE_640x350xBW: (=15) graphics 640 x 350, black&white
VMODE_640x350x16: (=16) graphics 640 x 350, 16 colors
VMODE_640x480x2: (=17) graphics 640 x 480, 2 colors
VMODE_640x480x16: (=18) graphics 640 x 480, 16 colors
VMODE_320x200x256: (=19) graphics 320 x 200, 256 colors
VMODE_NUM: (=20) number of supported
videomodes
VMODE_INVALID: (=12) invalid videomode
COL_BLACK: (=0) black
COL_BLUE: (=1) blue
COL_GREEN: (=2) green
COL_CYAN: (=3) cyan
COL_RED: (=4) red
COL_MAGENTA: (=5) magenta
COL_YELLOW: (=6) yellow (brown)
COL_WHITE: (=7) white
COL_LBLACK: (=8) light black (gray)
COL_LBLUE: (=9) light blue
COL_LGREEN: (=10) light green
COL_LCYAN: (=11) light cyan
COL_LRED: (=12) light red
COL_LMAGENTA: (=13) light magenta
COL_LYELLOW: (=14) light yellow
COL_LWHITE: (=15) light white
COL_BROWN: (=COL_YELLOW) brown (dark
yellow)
COL_GRAY: (=COL_LBLACK) gray (light black)
monochrome attributes:
COL_INVIS: (=0) invisible
COL_UNDER: (=1) underline
COL_NORMAL: (=7) normal
COL_INTENS: (=0Fh) intensity
COL_INVERSE: (=70h) inverse
COL_DARK: (=8) dark
color attributes:
COL_FGINT: (=B3) foreground intensity bit
COL_BLINK: (=B7) blinking bit