Archives
- November 2025
- October 2025
- September 2025
- August 2025
- July 2025
- June 2025
- May 2025
- April 2025
- March 2025
- February 2025
- January 2025
- December 2024
- November 2024
- October 2024
- September 2024
- August 2024
- July 2024
- June 2024
- May 2024
- April 2024
- March 2024
- February 2024
- January 2024
- October 2023
- September 2023
- August 2023
- July 2023
- June 2023
- May 2023
- April 2023
- March 2023
- January 2023
- December 2022
- November 2022
- October 2022
- September 2022
- July 2022
- June 2022
- May 2022
- April 2022
- March 2022
- February 2022
- January 2022
- December 2021
- November 2021
- October 2021
- September 2021
- August 2021
- July 2021
- June 2021
- May 2021
- April 2021
- March 2021
- February 2021
- January 2021
- December 2020
- November 2020
- October 2020
- September 2020
- August 2020
- July 2020
- June 2020
- May 2020
- April 2020
- March 2020
- February 2020
- January 2020
- December 2019
- November 2019
- October 2019
- September 2019
- August 2019
- July 2019
- June 2019
- May 2019
- April 2019
- March 2019
- February 2019
- January 2019
- December 2018
- November 2018
- October 2018
- August 2018
- July 2018
- June 2018
- May 2018
- April 2018
- March 2018
- February 2018
- January 2018
- December 2017
- November 2017
- October 2017
- August 2017
- July 2017
- June 2017
- May 2017
- April 2017
- March 2017
- February 2017
- January 2017
- December 2016
- November 2016
- October 2016
- September 2016
- August 2016
- July 2016
- June 2016
- May 2016
- April 2016
- March 2016
- February 2016
- January 2016
- December 2015
- November 2015
- October 2015
- September 2015
- August 2015
- July 2015
- June 2015
- May 2015
- April 2015
- March 2015
- February 2015
- January 2015
- December 2014
- November 2014
- October 2014
- September 2014
- August 2014
- July 2014
- June 2014
- May 2014
- April 2014
- March 2014
- February 2014
- January 2014
- December 2013
- November 2013
- October 2013
- September 2013
- August 2013
- July 2013
- June 2013
- May 2013
- April 2013
- March 2013
- February 2013
- January 2013
- December 2012
- November 2012
- October 2012
- September 2012
- August 2012
- July 2012
- June 2012
- May 2012
- April 2012
- March 2012
- February 2012
- January 2012
- December 2011
- November 2011
- October 2011
- September 2011
- August 2011
- July 2011
- June 2011
- May 2011
- April 2011
- March 2011
- January 2011
- November 2010
- October 2010
- August 2010
- July 2010
Not MSX, Either
Further examining the mystery of boot sectors supposedly starting with byte value 69h, I considered the possibility that the check could have been added for MSX machines. The MSX platform ticks a lot of boxes: It wasn’t 8086 (but rather Z80), used 3.5″ floppies, used FAT format, appeared around 1985, and Microsoft was involved in it.
But looking closer, MSX is quite unlikely for one simple reason: Microsoft was clearly concerned about data exchange with PCs, and solved the problem differently. MSX floppy boot sectors actually start with the usual 8086 instructions, and if they’re booted on an MSX machine, the boot sector starts execution at offset 1Eh.
Not only that, but the MSX BIOS in fact requires that the floppy boot sector must start with byte EBh or E9h to be considered bootable at all.
The above is clearly documented in the MSX Technical Data Book (published by Sony in 1984). Extant MSX floppy images confirm the documentation—MSX floppies use 8086 opcodes in the first three bytes.
But wait, there’s more…
More Mystery
A reader pointed out that although the FAT driver in Windows NT does not check for byte 69h, it does check for byte 49h. The check was added sometime around 1995 and did not exist in the original NT releases.
Unfortunately the 49h check in Windows NT is just as undocumented as the 69h check in DOS. Windows NT was adding support for additional RISC platforms in that time frame (DEC Alpha AXP, IBM/Motorola PowerPC) and the added check could have been related to that. Or not.
It is notable that 69h and 49h are ASCII codes for ‘i’ and ‘I’, respectively. When considering three-byte strings, ‘IBM’ certainly comes to mind; however that is pure speculation and no boot sector with such a signature is known to exist.
I also set out to examine the relevant OS/2 driver (OS2DASD.DMD) source code in the hope that it might reveal something. But no, IBM only checks for the usual EBh and E9h bytes. Which does not answer anything, but implies that boot sectors with 49h or 69h in the first byte must have been fairly exotic.
One day, those boot sectors will hopefully turn up and then we’ll understand why the mysterious checks were added.
15 Responses to Not MSX, Either
FM Towns boot sectors start with “IPL”.
I have no explanation for why it would’ve taken Microsoft until 1995 to notice, if that really is the reason for the check.
@Ocotocontrabass:
Leaving bugs unfixed is a time-honoured M$ practice.
Especially if they break compat w/ inconvenient competitors.
Didn’t FM Towns use a different physical floppy format? 1K sectors or something? At any rate this would have been relevant in Japan, and I’m not sure how well the initial NT releases supported the Japanese market. I know they had Japanese support reasonably early on but not sure when exactly.
That ‘IPL’ would certainly match…
IPL is also used as the magic number by the PC-98 BIOS on bootable HDDs, too- except you wouldn’t find that in the FAT boot sector, but rather in the reserved cylinder that holds the PC-98 partition table and boot menu code.
I think the FM Towns cloned the PC-98 1.23M disk format (360 RPM, 77 tracks, 8 1024 byte sectors/track) as well.
BTW, NT 3.1 allegedly exists for PC-98, but I haven’t found it. Have 3.51 and 4.0 here, though.
I’ve been following this mystery with quite interest. I did something,
– got many msdos floppy collections out there, initially I got simply plain .IMG/IMA files, but later take the work of converting many formats to try to find new boots.
– I tried the best not to add files not related to x86-msdos, but there are many dumps of operative systems, AFAIK all for x86, games, commercial software, etc.
– final floppy number was around 70.000, deduped them and got around 39.000 unique floppy dumps.
– extracted the first 512 bytes of each dump, total deduped approx 21.200
I know what are you thinking π , is there any floppy out there that starts with a 69h?.
No, I found ZERO. I really was thinking I was going to found something, there is many rare floppies in these collections, many protected games have weird boots, protected software, operative systems as Netware, many Unix variants for x86, cpms, etc… all those were in the collections.
So for me, this mystery is even more interesting.
If anyone needs a dump of those boots, the file is quite small and I think can be shared with any problems. Just ask. Collections uncompressed was around 80gb I think.
For clarification, these are some stats of 20 most used first bytes by freq:
dec;hex;count
235 ; EB ; 20317
46 ; 2E ; 262
233 ; E9 ; 245
9 ; 09 ; 190
250 ; FA ; 142
80 ; 50 ; 85
85 ; 55 ; 73
0 ; 00 ; 65
64 ; 40 ; 63
184 ; B8 ; 48
2 ; 02 ; 41
51 ; 33 ; 37
232 ; E8 ; 27
118 ; 76 ; 25
65 ; 41 ; 23
140 ; 8C ; 23
47 ; 2F ; 18
67 ; 43 ; 17
234 ; EA ; 16
253 ; FD ; 16
I forgot to say, unique boot dumps could be greatly reduced a lot, clearing the label zone and maybe OEM zone, but I prefered to keep them intact. But could be done easily if anyone is interested in analyzing weird boot sectors, startup code, etc.
Also, it’s easy to find original floppy dump just by filename, as these collections are indexed and hashed, if you find something interesting and want to analyze the floppy dump, not just the boot sector.
So 0x2e is the second most common byte that boot sectors start with, even before 0xe9? Are there any bytes that commonly come after that? By itself, it’s just a CS segment prefix. This is a separate question from the one that’s being investigated here, but I think it was an interesting detail nonetheless.
I too am curious about the boot sectors starting with 2Eh. I assume those boot sectors do not have a BPB (it should be ignored if they did).
Thanks for doing the stats. It’s too bad neither the 69h nor 49h byte showed up… but not exactly surprising, either.
Here is the collection of boot files, 21.949 unique files.
Filenames sometimes provide useful info of where this boot sector was.
The origin of all these files are floppy collections found in some projects, as TOSEC, TOSAC, MESS PC files, Grubby’s Adventure sources, TGOD, etc, etc…
https://www.mirrored.to/files/0JT1TMXO/
Please if sharing this here is wrong, just delete this.
Your collection must not include any FM Towns disks if you didn’t find any boot sectors that start with 49h.
The boot sectors on FM Towns floppy disks do contain x86 code, but it starts after the “IPL” signature. If the disk has a BPB, the jump instruction to go around it will be in the OEM name field.
A number of the images have what appears to be boot sector viruses. The original boot sector is probably more interesting than another copy of an already well known virus.
I forgot, did they usually save away the original boot sector to another sector, or did they just reimplement a common MS-DOS boot sector as part of their code? (Which would most likely limit them to very specific DOS variants, given that not all of them used files names IO.SYS and MSDOS.SYS.)
I don’t actually remember, even though I have a clear memory of analyzing a boot sector virus 25+ years ago (it was a lot more work without IDA). I believe the original boot sector was stashed away somewhere else on the floppy, but am not entirely sure.
I will say though that even if the boot virus effectively destroyed the boot sector, it could still spread — if the boot virus just said “this floppy isn’t bootable, remove and press a key to retry boot”, it could stay installed in memory and boot off of a hard disk or a different floppy.
The Stoned virus was famous for stashing a copy of the original boot sector in the last sector of the directory of a 360K floppy. Hard coded, of course, so it wrote to that sector even on other types of floppies where the sector might have been used for something else. I think most of the boot sector viruses did something similar, especially those that tried to conceal themselves by redirecting INT 13h away from the virus boot sector. Unfortunately, some of the virus strains indicated are not ones I have encountered before and I have no idea how those handled the boot sectors.
This does show a source of incorrect boot sectors that I hadn’t considered before: buggy repair code in anti-virus software.
Ah, good point with non-booting disks being infectious.
Richard, I bet there’s a not too bad chance of finding the original boot sectors by just looking for the boot sector signature (55 AA) at the right offset in every sector. I don’t imagine false positives being overwhelming, and I don’t see why viruses would want to obfuscate the copy (other than maybe eschewing very ambitious heuristics for unknown viruses).
I just looked up Parity Boot B, the one virus that managed to resurface on my disks for a surprisingly long time. It didn’t help for full detection that its damage routine (apart from the potential damage done during reproduction) seemed to be pretty unreliable (and rather benign): It was supposed to randomly lock up the machine displaying “PARITY CHECK” in 40×25 mode (pretty anachronistic I think), but I think I only remember that happening once. So it managed to stay around.
That virus did save the original boot sector away, overwriting the last sector for root directory entries. It’s well possible that I never had an infected disk that had that many files in its root dir, or that I never noticed missing entries.
This site uses Akismet to reduce spam. Learn how your comment data is processed.