PC DOS 1.1 from Scratch
os2museum.com
os2museum.com
Twitch and shudder
"Pinball Construction Kit" was a commercial game that used their own floppy format.
Software (IME, mostly games, but then my experience with software at the time was game-heavy) that worked that way was quite common.
> my experience with software at the time was game-heavy
Well put. min too :)
"Cracked" copy:
https://archive.org/details/msdos_Zaxxon_1984 (it's kinda hard)
The software I write today is far more complex than what was available in the early 80's.
The sophistication of some individual projects today rivals major industry efforts back in the early 80s.
I think it boils down to mostly these things:
a) back then the number of software developers was perhaps 100x-500x smaller than today - so there was simply a much smaller pool of smart people. (But also: Today we have a much, much larger pool of kinda meh people.)
b) there was no widespread internet access, so developers learned new concepts very slowly, often re-inventing them on their own. also, smart people often gut stuck in places where they had no chance of excelling.
c) better tools now: much better screens, windowing systems, mice, better editors (edit: not necessarily IDEs), source code version control tools, SSDs instead of floppies, VMs, trivial networking, pdf readers, archive.org/etc, web browsers/services/sites, etc etc.
A part of the problem was they wrote in assembler. Today, I would not write it in assembler. I'd write it in C (or DasBetterC!) and get it all complete and debugged. Then, I'd hand translate it to asm. I expect this would go 10x faster.
I'd also develop it on a Unix computer, using an emulator to debug it, much like how Gates/Alan developed Basic. (That was a really smart move by those two.)
I don't use IDEs myself, but git is an absolute game changer.
But I agree that it all looks trivial. I'm developing an OS for a custom 8bit system and it's pretty slow going even though it's trivial. Of course, if I was cloning an existing OS it would go a lot faster but obsessing over the fine details is part of the fun.
You're quite right about obsessing over the details. But the idea is to work out the details on a more powerful machine in a high level language. Only convert the final configuration in the target assembler.
For example, back in the 1970s (many years before DOS) I developed a handheld LED game for Mattel, it was Hockey. Handheld LED games were cutting edge at the time. The prototype was developed to run on a 6502 8 bit microprocessor. The dev tools for the 6502 were developed in a high level language and ran on a PDP-11, the resulting binaries were downloaded to an EPROM programmer, blown into an EPROM, then put on the 6502 for testing.
Once everything worked to Mattel's satisfaction, the code and the prototype was given to Mattel. Mattel took this, and gave it to their engineers to implement on a 4 bit microprocessor, to behave exactly the same way.
So this was 3 levels of development: PDP-11 => 6502 => 4 bit microprocessor.
Trying to prototype on a 4 bit machine would have been a horribly costly experience.
Remember that the DOS assembler at the time was terrible. Having a competent cross assembler on a mature machine like the -11 was the way to go.
(I also used a 6502 debugger that actually ran on the -11, again making life a lot easier to develop the code for the 6502 where only very primitive bug-ridden software was available.)
My dev process hence became much faster. The real mode DOS port was always the last step. Later on, I switched to 386 DOS extenders, then OS/2, then WinNT for development, as always relegating the real mode DOS port to dead last.
The 8-bit computer I'm working on 6502-based. One of the first things I did after "Hello World" on the hardware was write an emulator/debugger for the whole system in C#. I also get to use a pretty nice macro assembler compared to what you would have had back in the day.
You may have encouraged me to go back to a project I've put on hold: I started writing a high-level language that compiles to 6502 assembly. I could use C but it's not very 8-bit friendly and I want to go higher level than that but still keep the 8-bit-ness in mind. I've created a lot of macros but that only gets you so far.
Good luck on your 6502 endeavor!
Source: https://en.wikipedia.org/wiki/Microsoft_BASIC + https://www.inwap.com/pdp10/xkleten.txt
The sophistication is a good thing but for god's sake give me my latency back.
I share the same sentiment.
Decades-old junk accidentally pulled from uninitialized RAM, saved to disk and now immortalized? That's curiously poetic, if true.