GENWiki

Premier IT Outsourcing and Support Services within the UK

User Tools

Site Tools


archive:programming:ega-prog.pro
  Keywords: IBM ENHANCED GRAPHICS ADAPTER EGA BIOS INTERFACE ROUTINES
  This file contains "underground" undocumented BIOS interface routines as
  submitted by Joel Seiferas for the IBM Enhanced Graphics Adapter.
  Hopefully, IBM will come up with "official" documentation shortly, but
  this may help until that time.

The following is a concantenation of the messages from Joel Seiferas, 70516,1704 concerning the IBM Enhanced Graphics Adapter and its BIOS interfaces. Hopefully, this will help until IBM releases "official" information….

#: 80780 Sub-topic 1 - User Updates/Fixes Sb: EGA doc.

  26-Dec-84  19:01:04

Fm: Joel Seiferas 70516,1704 To: EGA owners

   The IBM Enhanced Graphics Adapter is comes without usage

instructions, so the following message should be useful to purchasers.

Date: Fri, 21 Dec 84 22:50:00 EST From: BrucCowan%UMich-MTS.Mailnet@MIT-MULTICS.ARPA Subject: IBM Enhanced Graphics Adaptor Information

Here are some very brief instructions for the BIOS interface for the enhanced graphics adaptor. No guarantees about accuracy. Hope they are of some use. I haven't figured out most of them. Parenthesized comments indicate some things I have found out. I'd like any more information anyone comes up with.

EGA extensions to ROM BIOS INT 10H.

(AH)=0 Set mode

(AL) 0-7 as before (7 is now user selectable)
     D  graphics 320x200 on color (5153) monitor
     E  graphics 640x200
     F  graphics 640x350 on monochrome monitor
    10  graphics 640x350 on 5154 monitor
   All above have graphics memory at A000:0. If you use one of the
   old modes, the memory appears at the standard address for the
   old adaptors (B000:0 or B800:0).

(AH)=10 Set palette registers

(AL)=0 Set individual palette register
  BL = palette register to set, BH = value to set
(AL)=1 Set overscan register
  BH = value to set
(AL)=2 Set all palette registers and overscan
  ES:DX points to a 17 byte table
  bytes 0-15 are the palette values, respectively
  byte 16 is the overscan value
(AL)=3 Toggle intensify/blinking bit
  BL - 0 enable intensify
  BL - 1 enable blinking

(AH)=11 Character generator routine

      Note: This call will initiate a mode set.
(AL)=00 User alpha load
      ES:BP - pointer to user table
      CX    - count to store
      DX    - character offset into table
      BL    - block to load
      BH    - number of bytes per character
(AL)=01 ROM monochrome set
      BL    - block to load
(AL)=02 ROM 8x8 double dot
      BL    - block to load
(AL)=03 Set block specifier
      BL    - char gen block specifier
              D3-D2 attr bit 3 one, char gen 0-3
              D1-D0 attr bit 3 zero, char gen 0-3
      Note: When using AL=03, a function call AX=1000H, BX=0712H is
            recommended to set the color planes resulting in 512
            characters and 8 consistent colors.
Note: The following interface (AL=1x) is similar in function to
      (AL=0x) except that:
              - page 0 must be active
              - points (bytes/char) will be recalculated
              - rows will be calculated from the following:
                      int (200 or 350) / points - 1
              - CRLEN will be calculated from:
                      (rows+1)*CRCOLS*2
              - the CRTC will be reprogrammed as follows:
                      R09H = points - 1    max scan line
                              R09H only done in mode 7
                      R0AH = points - 2    cursor start
                      R0BH = 0             cursor end
                      R12H =               vert disp end
                             (rows+1)*points-1
                      R14H = points        underline loc
      The above register calculations must be close to the original
      table values or undetermined results will occur.
      Note: The following interface is designed to be called only
            immediately after a mode set. Failure to adhere to this
            practice may cause undetermined results.
(AL)=10 User alpha load
      ES:BP - pointer to user table
      CX    - count to store
      DX    - character offset into table
      BL    - block to load
      BH    - number of bytes per character
(AL)=11 ROM monochrome set
      BL    - block to load
(AL)=12 ROM 8x8 double dot
      BL    - block to load  (this gives 43 lines in char mode)
      Note: The following interface is designed to be called only
            immediately after a mode set. Failure to adhere to this
            practice may cause undetermined results.
(AL)=20 User graphics chars  INT 01FH (8x8)
      ES:BP - pointer to user table
(AL)=21 User graphics chars
      ES:BP - pointer to user table
      CX    - points (bytes/char)
      BL    - row specifier
              BL = 0 user
                     DL - rows
              BL = 1 14 (0EH)
              BL = 2 25
              BL = 3 43
(AL)=22 ROM 8x14 set
      BL    - row specifier
(AL)=23 ROM 8x8 double dot
      BL    - row specifier (this seems wrong, use BL=# rows)
(AL)=30 Information
              CX - points
              DL - rows
      BH - 0 return current INT 1FH ptr
              ES:BP - ptr to table
      BH - 1 return current INT 44H ptr
              ES:BP - ptr to table
      BH - 2 return ROM 8x14 ptr
              ES:BP - ptr to table
      BH - 3 return ROM double dot
              ES:BP - ptr to table
      BH - 4 return ROM double dot (top)
              ES:BP - ptr to table
      BH - 5 return ROM alpha alternate 9x14
              ES:BP - ptr to table

(AH)=12 Alternate select

(BL)=10 Return EGA information
      BH = 0 - color mode in effect
         = 1 - monochrome mode in effect
      BL = memory value
              0 0 - 064K        0 1 - 128K
              1 0 - 192K        1 1 - 256K
      CH = feature bits
      CL = switch setting
(BL)=20 Select alternate print screen routine

(AH)=13 Write string

This is the same as documented in the PC/AT Technical Reference
BIOS listing (but is new for non ATs).

AH)=13 Write string

This is the same as documented 
/data/webs/external/dokuwiki/data/pages/archive/programming/ega-prog.pro.txt · Last modified: 1999/08/01 17:19 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki