Several months ago I had a go at producing a high resolution 256-color driver for Windows 3.1. The effort was successful but is not yet complete. Along the way I re-learned many things I had forgotten, and learned several new ones. This blog entry is based on notes I made during development.
There’s tons of lessons to re-learn when focusing on older platforms, whether as a mere user exploring or reminiscing, or as a developer trying to deal with all the constraints and limitations these old systems bring to the table. I’m glad it’s being documented, because the older these platforms get, the less we’ll remember about them.
I’m in my 60s and I was there in Seattle learning how to program mainframes in 1980 and saw my first PC (an Atari 400 with 4k of RAM) in 1981. In 1983 I saw DOS for the first time when a senior vice president bought an IBM XT with a spreadsheet program on it and he wanted me to help him learn the software. I really didn’t have time (my job kept me extremely busy) but I couldn’t say no.
I also saw Windows 1.x. oh God it was HORRIBLE! as was Windows 2.x. Windows 3.x was tolerable but for Windows (not compared to other OSs), Win 3.1 for Workgroups was a leap ahead. It was FAR less stable than OS/2 and Linux but our upper management had stock in Microsoft so guess what we used.
Our small “data processing” department which had four people, maintained 13 branches around western Washington State (Puget Sound region) plus our main branch in downtown Seattle with only FOUR of us. Actually by the time that Window 3.1 for workgroups came along there were only three of us.
– We had a software tester/trainer that tested and documented any bugs.
– Then there was my boss who did all the business side of the department plus was the head programmer.
– Then there was me. My MAIN job was programming (on PCs it was in C) but I also maintained all the hardware at all the locations including servers so that kept me busy. I had a heavy portable Compaq computer (the “keyboard snapped onto the side covering the small screen and then you grabbed a handle and carried it LIKE a laptop but it was a desktop/laptop computer before there were laptop computers). I lugged that around and when I was waiting for anything I had that up and running and would do programming on that. I had zero time to waste.
Then we found that a print driver had a bug in it and I called HP to let them know and they said it would take a couple of weeks before they could get a fix for it. We could have lost millions while waiting for them so I had to learn how to program in HPCL (HP’s printer control language) and write DOS and Windows 3.1 for workgroup print drivers (which also worked in DOS/Windows 3.1 for Workgroup sessions in OS/2 2.0) which took me about 30 hours to write and test and put into parallel. From there I added more features to the print driver which allowed us to do more “custom” printing.
Anyway, everything I learned back then I’ve probably forgotten forever. It was a crazy time back then. I HATED DOS & Windows (still do) but because of all of DOS/Windows problems it has kept me paid with my jobs over the last … well, a couple years of school to learn programming on mainframes and then ending up in my first computer job in 1982 so that it 40 years of IT.
PS: I wrote my first ever program on a computer that looked like a cash register. Everything was done on paper tape meaning that you typed in your program on the computer and you could “print out” your program onto paper. Printing your program meant that it punched holes in the paper and to load your program (if it wasn’t in memory) you had to run your paper through the reader in the computer to read your program and load it into memory. What happened if the paper ripped? You were probably screwed so I would always have three print outs of my program.
What program was that you asked (no you didn’t but I’ll answer anyway). I made a tic tac toe game (this is about 1972/73? – It was a science class in junior high/middle school). I kept improving on the program until the best anyone could hope for was a tie. At that point I stopped improving it.
Other students and teachers played my tic-tac-toe game for what I understand was an out four years until the teacher got a newer computer and it didn’t use paper tape to load programs anymore. It used cassette tapes to save and load programs. Cassette tapes like what we used to play music from instead of records and before CDs cassette tapes and 8-track players were THE way of playing music in your vehicle or out and about. The Sony Walkman played cassette tapes.
Well computers, before there were affordable floppy disk drives everything was stored either on cassette tapes (I’m talking PCs here, not mainframes). To save a program you put in a cassette tape and hit record and then you would click on Save on the program on the computer.
To load what you saved you had to go to the starting point of where you saved the program onto the cassette tape and click on “Load” (or something like that) on the PC and then push “Play” on the cassette player and it would hopefully load your program into memory.
Then thankfully floppies became affordable “enough” that people could have them in their PCs and thankfully you didn’t have to deal with cassette tapes any longer AFTER you loaded the programs into a PC with a floppy drive and then saved it on floppy. Boy was that a hassle. (Loading from cassette and then saving onto floppy).
I wrote a program that helped that a lot. The program loaded the program and automatically saved it onto floppy. You just started the program by typing the name of the program at a DOS (command) prompt plus what you wanted to call the file when you saved it on the floppy. Something like:
C:-> tap2flop myfile.txt
It would prompt you to put in a cassette tape and get it to where to start it. Then you hit enter on my program and then pressed “Play” on the tape recorder and my program read in the program into memory and then saved it as a file onto a floppy. That saved a bunch of time. And it would beep, beep, beep so I knew when it was done.
I think I converted maybe 60 programs and over 100 data files this way. I was SOOOO glad when I was done converting them. But over time I would convert like programs over at least 15 different OSs and over 15 languages including scripting languages just to learn different OSs and programming/scripting languages.
Some people read books, I played around with different programming languages, OSs and word processing programs. I like to write stories too! Though I’ve never tried to be published.
Great history read – you brought up memories…. Thanks for sharing.
I am not sure I agree that there are lots of reasons to learn old platforms like this. In my view, there is one really good reason and that is if you find it fun.
In terms of education, it is worth knowing about old tech at a high level and in understanding the way that some challenges were solved. It is also possible that older platforms expose technical details and hardware architecture that is more hidden which can be educational for younger developers that have grown up under the abstractions. Most of the value of these things can be found more easily by searching for them specifically though or by learning about them conceptually but not deeply enough to create a working implementation on an old platform.
Thinking of 16 bit DOS and Windows dev, those platforms just made really poor use of developer time in retrospect. The Win16 API has just a gobsmacking amount of boiler plate. Take a look at Hello World for Windows in C for an example. How much educational value is there in working around and fully debugging the 16 bit segmentation nonsense in a real program vs just an overview of how that worked?
Don’t get me wrong, learning about some of the genius ways that programmers of old got stuff done on such meagre resources can be mind expanding. There is maybe more to learn looking at old hardware and how they worked around problems. Understanding how the 1984 Mac was able to offer 512 x 384 pixels for example changes the way you think about both hardware and software. I am not sure I can really say that about righting a Win16 program.