There are also the locale support files.
Non-US versions of Windows 9x provide support for non-English locales not only in the GUI environment, but also in DOS mode. For the latter, they need support files containing uppercase/lowercase mappings, screen fonts and keyboard layouts for DOS code pages other than 437. These are necessary in order to keep files with names containing non-ASCII characters accessible, and so that translated messages (which as of MS-DOS 7.x/8.x, included error messages from the DOS kernel itself) display correctly. Those concerns remain valid even when booting from an emergency floppy; as such, locale support files have been included on EBD floppies of all of Windows 95, 98 and Millennium.
It is those locale files that can take up that space what would otherwise be free for the taking. In Windows 95 they did not pose much of a problem yet, but once Windows 98 added CD-ROM drivers onto the boot floppy, saving space became much more of a priority. The basic set of files on the Windows 98 EBD floppy, installed regardless of locale settings, fits in around 960 KiB, leaving 244.5 KiB free. Add to that
DISPLAY.SYS (~17 KiB),
COUNTRY.SYS (~30.5 KiB),
EGA2.CPI (~57.5 KiB),
MODE.COM (~29 KiB),
KEYBOARD.SYS (~34 KiB) and
KEYB.COM (~19.5 KiB), and you are left with barely 57 KiB of free space. Suddenly shaving ~110 KiB off a ~380 KiB archive doesn’t seem like such a bad deal.0
As for why did they not go all in and put everything in the
EBD.CAB file: here the answer is going to turn considerably more speculative. Nevertheless, there are some things that can be said with relative certainty.
Technical constraints certainly had a role. No file referenced from
CONFIG.SYS could be stored in the compressed archive: this includes CD-ROM drivers,
COUNTRY.SYS, the XMS driver
HIMEM.SYS, the display driver
DISPLAY.SYS, and of course the RAM disk driver
RAMDRIVE.SYS. And obviously, the kernel in
IO.SYS and the decompressor
EXTRACT.EXE also had to be stored directly. Because loading fonts and keyboard layouts (
KEYB.COM) has been implemented via
CONFIG.SYS as well, with the
INSTALL= declaration, those programs and their inputs (the CPI font file and the keyboard layout file) could also not be compressed. This is also made impossible by the fact that the EBD floppy creator can only assemble the disk out of pre-made files, and otherwise contains no compression capability of its own, while the choice of locale files is made dynamically, from the contents of the Registry key
But another probable reason is that it was a deliberate design choice to leave as many files uncompressed as feasible. Microsoft apparently wanted the emergency boot floppy to remain as usable as possible even when a RAM disk could not be successfully created and filled with utilities; they have certainly accounted for the possibility that RAM disk creation could fail, as evidenced by an error message found in
echo The Windows 98 startup disk could not create a temporary drive for the
echo diagnostic tools. This may be because this computer has less than the
echo minimum required extended memory.
After all, when you are reaching for an emergency boot floppy, it is already evident something has gone wrong. There is a natural tendency to want to be as resilient as possible against further failures. Maybe your memory is too small or faulty, which one should hope
HIMEM.SYS to detect. The floppy itself could also become corrupted, which also disincentivises putting too much into the compressed archive: corruption in an uncompressed file will only damage that file, while corruption in the middle of a compressed archive could damage all files within.
Lastly, with respect to removing the logo from
IO.SYS as a possible alternative space-saving measure they could have pursued: this was possible, but it is not clear it would actually pay off. Having the same version of
IO.SYS simplifies certain things in some places, namely the disk-preparation utilities
SYS.COM. These utilities need access to a version of
IO.SYS file to put on the target volume in order to make it bootable. If there were different versions of the file around, there would be the risk that the utility might pick the wrong one. Eventually, however,
IO.SYS was split into different versions in Windows Millennium, though hardly for reasons of space-saving (the logo is intact in the boot floppy version). This necessitated removing the
/S option from
FORMAT.COM and re-writing
SYS.COM completely to extract the
IO.SYS file from a CAB file instead of copying it from another drive, leaving those utilities unable to create bootable floppies. Were Windows 98 to have different versions of
IO.SYS, it might have needed to do something similar, or perhaps even more complicated.
0 All measurements made with the pan-European English version.