48 lines
2.5 KiB
Plaintext
48 lines
2.5 KiB
Plaintext
|
This file describes the nature of DBCS support in ntldr/setupldr.bin for x86.
|
|||
|
|
|||
|
On non-x86 machines we do nothing for now. The firmware is in control of the video
|
|||
|
and thus the firmware is supposed to support displaying characters deemed necessary
|
|||
|
by the system designer.
|
|||
|
|
|||
|
The x86 loaders operate using either standard 80x25 vga text mode or standard
|
|||
|
640x480 graphics mode. In the latter case the loader display system paints
|
|||
|
characters to simulate a console-type environment. Text mode is the default.
|
|||
|
|
|||
|
Early in initialization, the loader attempts to open a file called BOOTFONT.BIN
|
|||
|
on the root of the drive from which boot is occurring (ie, in the same place where
|
|||
|
it later expects to find ntdetect.com, boot.ini, etc). If that file is found and
|
|||
|
is deemed valid, the display subsystem switches to graphics mode and is thus able
|
|||
|
to display arbitrary glyphs. The font file gives such details as the dbcs lead byte
|
|||
|
ranges, and so support in the loader display system is not dependent on any
|
|||
|
particular codepage.
|
|||
|
|
|||
|
Thus we achieve single-binary and the ability to fully localize ntldr and
|
|||
|
setupldr.bin for any locale.
|
|||
|
|
|||
|
See boot\lib\i386\bootfont.h for the format of the bootfont.bin file.
|
|||
|
|
|||
|
Note that Setup will install bootfont.bin. If this file becomes corrupt or the
|
|||
|
user deletes it, the ntldr will fall back to sbcs support via vga text mode.
|
|||
|
For this reason, it may be desirable to include English message resources
|
|||
|
(as well as the ones for the particular localization) in ntldr so at least
|
|||
|
the boot selection screens will be readable in English and not just display
|
|||
|
as garbage.
|
|||
|
|
|||
|
Still to do some day, issues, problems, etc:
|
|||
|
|
|||
|
- If non-x86 machines' firmware starts to support DBCS we should be able to
|
|||
|
extend support to these machines orthoganally since the x86 implementation
|
|||
|
is entirely 'hidden' in the ARC emulation layer. The only thing we would need
|
|||
|
is a mechanism to 'trigger' dbcs mode, which is performed by the presence of
|
|||
|
bootfont.bin on x86 machines.
|
|||
|
|
|||
|
- The ARC console is driven by control sequences that are introduced with 0x9b.
|
|||
|
Unfortunately this is a valid lead byte char in several Far East code pages.
|
|||
|
In Japan this doesn't bite us because we don't actually use any characters that
|
|||
|
lead with 0x9b. The fix is to replace use of 0x9b with ESC[ (escape-left bracket)
|
|||
|
which is a synonym. However we don't know if all ARC firmware out there
|
|||
|
supports that as a synonym, so #ifdef _X86_ would probably be necessary
|
|||
|
(that would be ok since we are not enabling dbcs for non-x86 machines anyway).
|
|||
|
|
|||
|
- tedm, 7/11/95, Tokyo
|
|||
|
|