Compatibility requires that the 8x8 font be resident in the CPU address space in the standard byte-wide contiguous format during operation in CGA video graphics modes. The hardware does not require this font, but it is provided to support standard BIOS Write string calls to put text into the graphics display. The lower half (chrs: 0 - 127) of this byte-wide font table will be located at the standard PC address F000:FA6E in hard mapped ROM. The upper half (in the current code page) is mapped into the last 1KB of bank 9 of the CPU RAM address space (9FC0:0). The Int 1F pointer (0:7Ch) points at this 1KB-block as a default.
It is possible, but not advisable, to directly overwrite the default data in this area. First, it will be necessary to "unlock" the area first, as the hardware provides a write protect feature for this area of memory. In addition, certain BIOS services (including Set Video Mode) will write into this 1-KB block. Finally, changing the data in this area will not have any effect on the display in Text modes, nor in Graphics applications that use the BitBlt hardware. The BIOS does, however, provide an Int 06h hook that enables applications to replace the data that would normally be written there with their own.
An application written for HP 95LX Graphics mode expecting to find the lower half (chars 0-127) of the 6x8 font loaded at F000:FA6E will instead find the lower half of the standard 8x8 font. As there is no anticipated usage of the 8x8 font in this mode, load the upper half (chars 128-255) of the 6x8 font into the same area of Bank 9 RAM normally occupied by the 8x8 font. The Int 1Fh pointer is not affected by the services that perform the data transfers. The lower half of the 6x8 font (1K Bytes) will reside in hard mapped ROM. The BIOS code (Int 10h and Int 5Fh) written for HP 95LX has been modified for other HP palmtops to use the new locations for the 6x8 font when in this video mode. This provides BIOS-level compatibility.
If an HP 95LX application used the low half (chrs 0-127) of the provided 6x8 font directly or the upper half (chrs 128-255) without depending on the Int 1Fh pointer, a real mess will occur in the HP palmtop display!
The byte-wide 8x8 font format is incompatible with the BitBlt hardware. The standard BIOS Write String functions use the byte-wide format and don't have the speed advantage offered by the HP palmtop BitBlt hardware.
In addition to being PC compatible, the BIOS attempts to be HP 95LX compatible. This requires two fonts that might not otherwise be required: 6x8 and 16x12. The first of these is required by the HP palmtop BIOS to emulate HP 95LX Compatible Graphics Mode (Video Mode 20h). Software written for HP 95LX graphics mode can assume certain BIOS-level Write String calls will place the appropriate 6x8 pixel data into the MDA buffer. The HP palmtop hardware will then produce the 12x8 character cells in the centered 480x128 window of the HP 100LX's 640x200 resolution display. The second font (16x12) is required for HP 95LX Compatible Text mode (Video Mode 7) operation. In this mode, the HP palmtop provides a 40x16 Text Zoom mode into an 80x25 page using data present in the MDA Frame buffer (B000:0).
Note: Before running HP 95LX applications, set the Code Page to 850.