Many years ago, when I was doing my Master’s research using a TRS-80 model I computer, I need to accurately measure the timing of events that occurred on the keyboard. The computer could only perform functions built into the MBasic language built into the computer.
I have to learn Machine Language programming for that machine and after writing the code sequences I needed for each function, I had to reserve some memory space where the code could reside without being disturbed by other processes. I then had to store the numerical codes for each piece of the machine language but stuffing them into the reserved space one byte at a time. Each reserved space was assigned a name and then I used the MBasic language to jump to that place and execute the machine language code stored there. Of course at the end of each such location was the code for RETURN, so control would revert to the Mbasic language that ran the rest of the process. These sets of codes were machine language subroutines that could access internal processes of the computer’s real time clock, processor and the places where the state of each key on the keyboard was contained.
I was so excited when I finally got it all to work the way I wanted. I was even more thrilled when I found a way to convert the interpreted MBasic commands to compiled assembly language so the program ran as fast as the computer’s Z-80 brain could operate.
What started off as a simple task of programming the computer to record my psychology research subjects responses turned into a self-taught course in programming the computer at the level of the hardware of which it was composed.
It may not sound like much fun to some of you, but I learned so much and felt so excited by doing it all myself that it was the peak experience of getting my degree. I had other opportunities to do other fancy stuff with computers long before the original IBM PC was catching on in the business environment.
I did not even bother with PCs for years because I had learned how to get maximum horsepower out of much more primitive machines. I waited until Windows 3.3 was running on the early Pentium processors before I made the switch from 8-bit z-80 based machines with at most 5 megabyte hard drives to those PCs that were starting to be more powerful and easier to use that what I used.