Now I DO feel old! I remember using Windows 2.01 (my initial contact with it), where one attraction of Global… was that it enabled you to have a common API for using bank-switched memory (which on 8086 and 80186 processors was the only way you could have more than 1MB), EMS, and probably a few other extension mechanisms I’ve thankfully forgotten. Even the wonderful SDK documentation where GetProfileString and WriteProfileString had identical descriptions [except for the API name].
Which then reminds me of my first PC- bought with the IBM employee discount [they had to randomly assign delivery dates because the demand was so high- I was several months out, but it could have been a much longer wait than that], I’d loaded it up with 2 320K 5.25" floppies, 256KB of RAM, monochrome display and the IBM (really Epson) dot matrix printer- filled all the slots. For software, I added IBM DOS 1.0, UCSD p-System PASCAL, IBM MASM 1.0, IBM PASCAL 1.0, and Microsoft Adventure, which I bought because I’d played the original Adventure on the early internet shortly after I graduated from college and had just barely figured out getting past the dragon- all the IBM products of course being from Microsoft too, although I don’t believe I knew or cared at the time. Rounded out with the DOS and hardware tech references, including the indispensable listing of the entire BIOS, I was already at $5K, even with the discount. I’d cringe if I inflation adjusted that number. AS it was, if I hadn’t been single and frugal, I couldn’t have afforded it.
Wrote PASCAL programs with EDLIN, compiled them with three or four diskette swaps (2 or 3 compiler passes [can’t remember] and then the linker), and debugged them with DEBUG (odd little debugger with a bunch of quirky one and two letter commands- or is that the one I used this morning?). No source code debugging, just linker maps and combined source/assembler output from the compiler if you had to go there… Assembler was a bit easier, just two diskette swaps, and I really enjoyed working with it, particularly since with the tech refs and a little inspired hacking I could program everything in the box down to the metal.
It was heaven, because I could write any kind of program I wanted, and not worry about my efficient usage of $1000/hr mainframe time [connect time charges from an interactive terminal were mercifully smaller, but they also added up]. One infinite loop while you were off getting coffee could set your career back markedly in those days. I wrote a virtual memory manager, a couple of heap managers, a merged multi-display [character “graphics”] windowing package, a keyboard driver or two, a digital circuit simulator, a Z80 emulator, and I don’t know how much else- none of which I could sell, of course, and by today’s standards much of it was probably trash, but they worked well enough and at least I understood something about that kind of software when I was done.
It was a magical time- my own private world where I could create what I wished when I wished, do it the way I wanted, and nobody could force me to adopt something I didn’t think fit the mental model I was working to.
Of course, it didn’t last long- my favorite retirement fantasy is usually getting or building a system. I still remember a few of my ancient design and prototype manufacturing skills, although I was never terribly good with a soldering iron or wirewrap tool. Heck, maybe even go back and start with the instruction set and design the whole CPU logic and try my hands at something like an FPGA again [did that once, but of course never could afford to implement or debug it, even in SSI / MSI]. Then start creating the whole software set up from the bare metal- maybe put together some simple BIOS with basic drivers for the storage and I/O devices I’d have to have, then write an assembler in hex [yep, I actually tried to do that at an even earlier time with some Motorola development system I’d managed to get second hand- lost all the “source” eventually when I either accidentally last track of which Dolby NR setting was on the cassette recorder I was using for storage, or left the cassette too close to a bulk eraser- I remember both being problems], then a basic operating system, or some trivial apps, then something a little better. Of course I’d never be able to finish it, and I would probably never have anything generally useful to anyone else [what interoperability?], but that would be missing the point [no customer, no schedules, no deadlines, no IP issues, no commitments, just me and my keyboard, free to do as we wish for whatever time remained to me]…
On the other hand, #2 is playing Halo about 100 hours a week, for however long it takes someone with my age-affected reflexes, visual acuity and reaction times to actually survive Legendary without dying a bazillion times.
Anyway- those were indeed the days- thanks for the reminder.
Well, if I’m ever going to afford any kind of retirement, I’d better go make myself useful again…