Hacker News new | ask | show | jobs
by GeorgeTirebiter 3182 days ago
Folks might forget that before unix, most OSs were written in assembly, the obvious important one not written in asm was Multics (used PL/I). I worked on the Tops-10 and -20 OSs and they were pure assembly. People seem to think that it's not possible to write maintainable, reliable code in assembly, that's just not true. The DEC source was well-documented and well-tested. Sure, it had bugs fixed each release, as every code base has bugs. Still, I was never flummoxed as to what a routine did: after all, it was executing one machine instruction after another, and once you knew the operands, you knew the result. Debugging was at the machine level, instruction by instruction.

Building higher-level code was accomplished just like it's done today: from smaller modules / subroutines. PUSHJ - Push PC and Jump, or 'Call'.

These days, writing software is almost magic, meaning there is a whole 'chain of trust' that must be invoked -- all based on belief that it's all correct -- before proceeding. With assembly, magic stops at the hardware / software boundary; that is the actual machine instructions.

2 comments

Burroughs B5000 was written with zero lines of Assembly in 1961 with ESPOL, followed by NEWP, both Algol 60 variants with intrinsics.

Xerox PARC used Mesa with microcoded CPUs, after using BCPL initially.

IBM used PL/8 for their RISC OS and compiler research.

OS/400 was written in PL/M.

There are plenty of other examples, UNIX was not the only one to be written in an high level language, regardless of what C devs advocate.

Thanks that is a fantastic comment. I particuliarly appreciate the "These days, writing software is almost magic, meaning there is a whole 'chain of trust' that must be invoked".

Even as late as the 80" there were large business software like telecom switches (ITT's Metaconta or Alcatel's E10) that were written only in assembly. Those software had to be reliable.