Dec 102017
 
Information about the Genoa's 7000 series Super VGA board's BIOS.
File 7900BIOS.ZIP from The Programmer’s Corner in
Category Display Utilities
Information about the Genoa’s 7000 series Super VGA board’s BIOS.
File Name File Size Zip Size Zip Type
7900BIOS.TXT 6784 2039 deflated

Download File 7900BIOS.ZIP Here

Contents of the 7900BIOS.TXT file


GENOA VGA BIOS ENHANCEMENTS

Additional Graphics BIOS functions call (INT 10H) have been added
to the Genoa's 7000 series Super VGA boards of Model 7900 and 7900sx,
in order to support the new enhanced features - 64K colors 5/6/5 format,
256K colors 6/6/6 format and 16M colors 8/8/8 format.

(1) Set Modes,

This call will attempt to set modes of 15 bits,16 bits/pixel HiColor
mode with the same Mode Number (in BL reg.) and X,Y Dimensions as the
previouly specified in 256-colors mode. Also, a new mode number 3EH
was added for 60x480x16M/256K colors mode.

The call will fail if there is not an appropriate DAC present, not
enough memory or other hardware limitation.

Input:
for HiColor modes,
AX = 10F0H
BL = 2DH - 640 x 350 x 32K/64K Colors (Defaults to 5/5/5 format)
= 2EH - 640 x 480 x 32K/64K Colors (Defaults to 5/5/5 format)
= 2FH - 640 x 400 x 32K/64K Colors (Defaults to 5/5/5 format)
= 30H - 800 x 600 x 32K/64K Colors (Defaults to 5/5/5 format)

* For 5/6/5 64K Colors mode setting, it is required to add
another call AX=10F2H as in paragraph (3) to change from
5/5/5 format to 5/6/5 format.

and the new mode number 3EH for the 640 x 480 x 16M/256K Colors,
AX = 10F0H
BL = 3EH - 640 x 480 x 16 Million Colors (8/8/8 format) on
Model 7900 or 640 x 480 x 256K Colors (6/6/6 format)
on Model 7900sx

Output:
AL = 10H
AH = 0 if succeeded,
<> 0 if failed

(2) Get DAC Type,

Input:
AX = 10F1H

Output:
AX = 0010H
BX = 0 Normal VGA DAC 16/256 colors
= 1 HiColor 5/5/5 format 16/256/32K colors
= 2 HiColor 5/6/5 format 16/256/32K/64K colors
= 0602H Special New DAC 16/256/32K/64K/256K colors
= 0802H Special New DAC 16/256/32K/64K/16M colors

*Genoa's MultimediaVGA Model 7900 will return BX = 0802H
(8/8/8 format capability) and Model 7900sx will return
BX = 0602H (6/6/6 format capability).

(3) Get/Set DAC 5/5/5 or 5/6/5 Format,

The mode set must be in HiColor modes (5/5/5 or 5/6/5) in order to
use this call to set format. This function call is not used in
16/256/256K/16M colors modes.

Input:
AX = 10F2H
BL = 0 get current format
= 1 set 5/5/5 format
= 2 set 5/6/5 format

Output:
AL = 10H
AH = 0 if succeeded,
<> 0 if failed

BL = 0 if was not in 5/5/5 or 5/6/5 HiColor Mode
= 1 if now set in HiColor 5/5/5 format
= 2 if now set in HiColor 5/6/5 format

(4) Descriptions of Formats:

a. 5/5/5 format,

Bit <15> <14:10> <9:5> <4:0>
N/A RED GREEN BLUE

b. 5/6/5 format,

Bit <15:11> <10:5> <4:0>
RED GREEN BLUE

c. 6/6/6 and 8/8/8 format,

Every page (64KB) has 32 lines, every line uses 2KB address
space, the 33rd line pixel address is same as 1st line but
3CD reg = 11H to specify next page, total 480 lines will use
up to 15 pages of memory - 960KB.

1st line, with 3CD reg. = 00H

BLUE GREEN RED
1st pixel A000:0 A000:1 A000:2
2nd pixel A000:3 A000:4 A000:5
.
.
640 pixel A000:77D A000:77E A000:77F
*address A000:780 - A000:7FF are not displayed on screen

2nd line = 1st line address + 800H

BLUE GREEN RED
1st pixel A000:800 A000:801 A000:802
2nd pixel A000:803 A000:804 A000:805
.
.
640 pixel A000:F7D A000:F7E A000:F7F

33rd line = 1st line address with 3CD reg. = 11H

BLUE GREEN RED
1st pixel A000:0 A000:1 A000:2
2nd pixel A000:3 A000:4 A000:5
.
.
640 pixel A000:77D A000:77E A000:77F

'..........................................................................

==> DISPLAY MEMORY LAYOUT:


A0000 24 BITS (16,777,721 COLORS) PER PEL.
3 BYTES FROM 3 ADJACENT LINEAR MEMORY PER PEL.
64K Page 0 UPTO 16 PAGES (64KB EACH, 1MB TOTAL) AVAILABLE.
FIRST PEL AT ADDRESS A00000 PAGE 0.
AFFFF EACH PAGE IS MAPPED INTO A0000-AFFFF.

A0000

64K Page 1

AFFFF


.
.
.


A0000

64K Page 14

AFFFF

A0000

64K Page 15 --> PAGE 15 IS NOT DISPLAYABLE

AFFFF



==> DISPLAY PAGE LAYOUT:

PAGE_NUMBER = ROW_NUMBER / 32 ; ROW = 0..479
ROW_IN_PAGE = ROW_NUMBER MODULO 32 ; 32 ROWS PER PAGE
ROW_ADDRESS = A0000H + (ROW_IN_PAGE * 800H) ; ROW OFFSET = 800H
PEL_ADDRESS = ROW_ADDRESS + (COLUMN_NUMBER * 3) ; COLUMN = 0..639

COLUMN 0 COLUMN 1 . . . COLMN 479 N/A
OFFSET 0 1 2 3 4 5 77D77E77F780 . . . 7FF

ROW ADDR
0: A0000 B G R B G R . . . B G R
1: A0800
2: A1000 . . . .
3: A1800
. . . . . . NOT
. . DISPLAYABLE
. . . . . .
28: AE000
29: AE800 . . . .
30: AF000
31: AF800 B G R B G R . . . B G R



 December 10, 2017  Add comments

Leave a Reply