86-DOS 0.11 from Scratch

At the end of last year, a copy of 86-DOS 0.11 for the Cromemco 4FDC controller surfaced. It is the earliest released version of 86-DOS, the earliest operating system for the x86 architecture. Having done some legacy work dealing with real mode x86 before, I thought I could maybe challenge myself and build a copy of 86-DOS 0.11 from scratch.

Source Code Reconstruction

Clearly, to build 86-DOS from scratch, we need the source code. While the original source code would be preferable, good luck finding a copy. Earlier this year, I began a project to reconstruct the source code of 86-DOS 0.11 through disassembly, and I’ll briefly discuss it here. The goal of the source reconstruction project is to create source files that reassemble back to the original binaries and look indistinguishable from the original source code.

Before I begin, I want to list all the components of 86-DOS 0.11, in case you’re not familiar with them.

  • Boot Record (BOOT)
  • I/O System (DOSIO)
  • 86-DOS Kernel (86DOS)
  • Command Interpreter (COMMAND)
  • 8086 Assembler (ASM)
  • Chess (CHESS)
  • Line Editor (EDLIN)
  • Intel HEX To Binary Conversion Utility (HEX2BIN)
  • CP/M Disk Reader (RDCPM)
  • System Transfer Utility (SYS)
  • Z80 to 8086 Source Code Translator (TRANS)
Continue reading “86-DOS 0.11 from Scratch”