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