I, literally, learned programming where the only thing you had was the processor’s op-code table, a hand-drawn memory/IO map of the system and the hardware address of the peripherals.
That, along with data sheets for each IC, the ability to think in hex, and a sharp pencil with a good eraser while you hand-coded your program and manually typed it into an EPROM burner.
Then a gift from the Gods - an ancient computer with, (gasp!), an assembler! and the ability to transfer Intel Hex files directly to the EPROM burner via a serial cable. (No more hand-keying hex into the burner!!)
Then I graduated to systems with built-in function calls where you’d put something on the system’s base page and jump through a special “magic interrupt” vector to make something happen, like read from a tape or diskette.
All this talk about “packages”, “libraries”, “classes” and “methods” has me wondering what time-warp I’ve just zoned into!
peripherals? I only had 16 toggle switches, and an “Address/Data” toggle and a “write 8 and increment addr” button. EPROM and EEPROM came eventually, but at first it was “don’t pull that plug”.
(There was a guru working on a paper-tape reader for the pirate tape of microsoft basic he acquired.)
Actually, my first programming was punching cards of FORTRAN statements on an IBM room filling thing, but I didn’t actually understand anything about what I was doing. 1968
I normally think about one single project/problem at a time - AKA the KISS rule.
However, there are several ideas I have for several base classes that might interact, so I thought a more global approach might be good.
Though now I’m thinking that “one project, one problem” might still be a good idea, (with the occasional back-track to see if I broke something else), as a global solution may cause more problems than it solves.
Despite that, I still need to know more about all this stuff and my reading list is getting longer than the “honey-do” list!
I really need to be two of me.
One for my wife to order around and another to get real work done!
Yes. Peripherals. All the stuff that wasn’t the 8080 CPU and the 8024 clock generator chip.
You know, silly things like a UART chip for serial I/O to a VT-100 dumb terminal, memory, the latches for the individual 7-segment display chips, the address of the keyboard’s matrix, the /enable line for the +26v programming boost voltage to write to the array of special $150+ each EEPROM chips that this program was trying to test, (and God Himself help you if you got the timing wrong and fried a grand plus of chips all at once!), and such like.
If you’re thinking things like disk drives or monitors, (or even paper-tape), you’re getting ahead of me.
I started with a pencil and a notebook as my development environment, a 2708 EPROM, a programmer, and a UV eraser cabinet. Not to mention a tolerant boss!
There was nothing else.
I had to read the data sheets, decode the register addresses, figure out how to initialize the beasties, and so on. One EPROM at a time and pray it doesn’t blow up something expensive.
Flip-switches and a pre-defined system would have been a godsend.
(I did program a GE-4020 mainframe, in octal, as a freshman and spent more time in front of ancient 50’s relic IBM-026 keypunch machines than I care to remember. I considered the (relatively) modern IBM-029 keypunch with the full Selectric keyboard and drum-card capabilities a religious experience!)