Bitmap Stack

A System Bit Map FILO stack is maintained and utilized by the BIOS font services. Each entry on this stack is ten bytes wide and the stack has a maximum depth of n (to be determined). A call to the BIOS Load Bitmap service will push an entry onto this stack that records information on format, size, and location of the bit map table that was loaded into the dedicated Bitmap Buffer. The information in this stack is a resource for the BIOS and as a service for those applications that would choose to use the Hornet BitBlt hardware directly in Graphics Video modes. Any of the currently loaded bit maps may be made the "active" one. Applications may load symbol tables until the fixed stack size is exceeded, or the dedicated Bitmap buffer becomes full. When the stack or Bitmap Buffer becomes full, the application may "pop" the bitmap on the top of the stack to free additional space. This is the only provision (except the more drastic stack reset) to free space in the Bitmap buffer. Each entry in the table contains the following information:

ID   Length (n)   Width   Height   Format   Status   Offset 
============================================================
2    2            1       1        1        1        2 
------------------------------------------------------------
The ID field identifies the bitmap data. For example, ID=4 specifies the standard 8x8 character font.

The bit map length (n) register specifies the number of bit map symbols in the table. For font tables, this will always be 256. For symbol tables, n will specify how many symbols are provided in the table.

The bit map width and height are each byte fields specifying the cell dimensions. If the bitmap is a font being used by the Display Controller (Text mode), the width must be one of 8,10, or 16, and the height must be (1-32). If the bit map is a font or symbol table being used by the Hornet BitBlt hardware while in Graphics mode, the width must be even (2-16), and the height must be (1-32).

The Status field identifies the currently active bitmap. This is for use in graphics mode when using the {Int 10h, Fcn D7h} routine. When the Bitmap stack is non-empty, exactly one entry will have a status byte with bit 7 set, the active one.

The Table Offset is the word value giving the address offset from the start of the 16KB buffer to where the bitmap data actually begins.

The Format register identifies the bitmap format as it appears in the dedicated bit map buffer. Each format is identified by a specific bit in the Format byte, providing for up to 8 different formats. The BIOS Video service Int 10h, Fcn D7h Write BitBlt String will work with any of the following four formats. Of course, any of these formats (and potentially others) may be used by applications expecting to invoke the BitBlt hardware directly (not use the BIOS service).