I've kept on working (for the moment) with the original source files that Zozo kindly posted earlier, and his build scripts only need a few changes to compile a good version of IS-DOS ...
Change MAKECOM.ASM ...
defpage 0
page 0
output IS-DOS.NEW
org 00f0h
incbin ISDOS.BIN,008Ch
PEND: equ $
end
Change L.BAT ...
DEL OS.REL 2> nul
XCPM LIB80.COM OS=CODES,EXCODES,BOOT0/E 2> nul
REN OS.LIB OS.REL
XCPM L80.COM OS,/P:C9E4,START,VID,CLI,CMD,FNINIT,CLIV,/P:E100,FIX,CLIO,CLIF,REBOOT,FNVAR,FUNC,CPM,CHAR,BUFDEV,VIDEV,END,ISDOS.BIN/N/Y/E <nnnn 2> nul
SJASM4 MAKECOM.ASM
To explain ... the L80 command line is too long if you add in all of the filenames and the "/P" commands, so I used LIB80 to create an OS.REL library from the first three assembled files, so that it can be used to shorten the command line.
This is than complicated because XCPM doesn't seem to support LIB80 renaming the output file from OS.LIB to OS.REL, so I had to specifically add that to the L.BAT file.
When L80 links a file to the top of memory like this, it adds a 128-byte header onto the file to move the data into place when the .COM file is run, so I had to modify MAKECOM.ASM to strip off the extra bytes from the front of the file.
When that is all built, you basically get a file called "IS-DOS.NEW" that is almost-identical to the shipped version of IS-DOS.SYS.
There are a few differences, but the only one that actually matters is that the "Duplicate Definition" of "ORM" that L80 reports is something that MUST be fixed.
Attached is a file showing the differences between IS-DOS.SYS and ISDOS.NEW, where they come from, and why they are expected and don't matter.
Anyway, the point of this is to confirm that the original source files from 1985 really do correspond to the shipped version of IS-DOS that we all know and love.