I got into Microcomputer Programming the way I got into most everything else.
I got curious.
In 1974, I was a college student majoring in music and religion. Concerned what life as a traveling musician would do to my family, I left college after my first year and returned to Fresno to study Acoustics at Fresno City College.
Unfortunately, there was no Acoustics major so I was told to major in Architecture. One thing led to another as it always does, and this led to my taking Math, Physics, Engineering, and one programming course. Although I found Fortran IV extremely boring, I spent time in the computer lab first on my assignments, and then figuring out how BASIC programming worked.
Hacking Into Tutorials
I was never an evil hacker. Well, almost never. Most of the time, I hacked out of necessity to fix something that was broken for somebody, or to get into some physics, math, and computer science tutorials
One of my less evil moments was when I was perhaps 19 years old. I was taking Fortran IV, Calculus, Physics, and some courses related to building Architecture.
While typing in my Fortran courses, I noticed the editor was written in Basic. In fact, you could run games like Star Trek. On a CRT. At 300 baud. The game would print a grid with ASCII characters to give you a rough graphical view of the universe with periods for unoccupied areas and various symbols for enemies and friend space ships.
You simply typed “load myprogram” or something like that, and “run”. Or you could type “list” and list out the program, if the listing wasn’t hidden. Since the program was written in an old version of Dartmouth BASIC, the program source code could be listed and BASIC programs were interpreted rather than compiled. You didn’t really have an editor–just a BASIC interpreter, and you would simply enter the line number followed by an instruction. For instance, if you wanted to count to 15, you could do the following:
100 FOR I=1 TO 15 110 PRINT I 120 NEXT I
Well, I found a treasure trove of online tutorials for math, physics, chemistry, and computer programming among other things. But they were all locked. I could not run them as they asked for a password. And I could not list them because they were locked.
So I gave up. Right? Wrong. So, what did I do? I experimented.
What if I typed the following at the prompt?
100 GOTO 500
I don’t know how, but somehow I guessed right on the first guess and I was in! And now it was time for a feast. I went for the physics tutorials. Some tutorials were too easy but others helped me understand some concepts I was struggling with.
After awhile, I confessed to a professor what I had done, and he got a big laugh out of it but quietly told me, “Those tutorials had a password because we did not find them ideal. But go ahead and use them if you are getting some benefit from them. But don’t tell anyone else.”
Of course, that was over 40 years ago, so I don’t think he will mind my sharing that story now.
Innocent and Honest Hacking
At Fresno City College, after hacking my way into a tutorial system and using it to help me learn Math and Physics as well as BASIC programming. I studied Systems Administration and COBOL Programming on a Honeywell system where I developed a silly game using sense-switches and the chain-line printer. I also wrote a silly “Snotdrops” game in BASIC where the player would be walking down the halls of Snotdrops Junior High where delinquent kids had hocked up loogies leaving them dangling from the ceilings in the halls, and your task was to dodge the loogies.
My First Computing Job
I worked my way through school and wanted to leave my college kid jobs washing dishes and selling clothes and electronics in department stores. I wanted to work in a real computer programming job. And I was willing to take any programming job I could find.
Data Consultants, or DCI had an opening for a BASIC programmer. In their office, they had a Wang computer and a Processor Technology Terminal Computer. The boss and the salesperson were both named Bill. Bill Putnam and Bill Pardini. And while they were both great guys, they saw me as a “kid”. Probably because I was a kid.
So, they set a challenge before me. An impossible challenge. The only one who didn’t see it as impossible was apparently me. So I took the challenge seriously and accomplished it. The challenge was to create a BASIC program to do finite element analysis and design a wooden archway for churches.
My programming style was not mature at all, but they saw my determination and creativity and gave me the job. For $2/hour.
Bill Pardini had as much excitement over the project we would be working on as I did. And it was to create a program that would allow a car salesperson to work with a potential customer entering, say, a price, an interest rate, a down payment, a length of the loan, type of insurance, and so on. But the insurance cost was based on the full payment that also included the insurance. Since it could not be calculated algebraically, it required an iteration. And with my background in mathematics, I was able to optimize that calculation and make it fast, in BASIC, on an 8080 based computer.
And then I asked myself, “What if I designed the program so you could leave out any variable and calculate the missing variable? So, I did. And Bill wanted it to save the data, restore it, and fill in standard contracts for various companies using a daisy wheel Diablo printer. So, I developed the routines to print forward and backward and do the micro-adjustments for filling out contracts.
Then I did this again for vehicle leases. And in the end, we had programs for vehicle sales and vehicle leases. The programs were successful and two companies resulted from it. But unfortunately, they also fought for rights to the programs. But at least I made $2/hour from my work on it. That’s alright. Eventually, I made $4, then $8, and then I thought I was rich. Then I did a consulting job that Bill Pardini recommended me for, and I was told if I did not charge at least $20/hour, he would not refer any more people to me.
Confession: Evil Hacking
One of my evil moments was later in my single 20s when two Computer Science Majors and close friends, Cathy from Singapore, and Katrina from Hong Kong, discovered I was ticklish. They said a few words in Chinese, then attacked sending me running down the hall to get away.
Later, they tried logging into their Unix account to do their assignments.
Now, I wouldn’t do anything evil, would I?
The girls logged in to do their Computer Science assignments. And somehow a horrifying system error message appeared: “System Error: Deleting files to recover, myprogram.c, myotherprogram.c, myheaders.h, Makefile, …
There was a slight pause between each file. The girls gasped and panicked and asked, “What do I do? Are my files gone? What do I do?”
After each file in their directory was listed, a final message appeared:
“Aren’t you glad this is just a joke?”
It paused. Then the script that performed this dastardly deed disappeared so they could not see how I accomplished this dirty deed.
How did I cause an old, underpowered computer running a slow BASIC interpreter to do such complicated financial calculations so fast?
Not long after, a friend who had a Civil Engineering business, wanted help improving some BASIC programs running on his Apple II+. One was a flagpole footing depth calculation. The program he was using took several long minutes to run and only provided one digit of accuracy beyond the decimal place.
The program would make a guess and see if it was too low or too high, and it would march slowly up or down to get closer to the right answer repeating the calculations for the next guess. And it could take hundreds or thousands of repetitions if not millions. In BASIC. On an 8 bit 6502 processor. Running at 1 MHz. Not 1 GHZ. One thousand times slower. In interpreted BASIC.
I cut and pasted the Newton Method’s calculation from Wikipedia below:
I would rather see this expressed in terms of n and n-1 than x0 and x1. But the idea is you take the value of the function and divide it by its derivative at the same point.
Conceptually, f you are on the positive side with a positive slope, then you will want to move over to the left to get closer to zero. And you can draw out out graphically to see this would work for all four cases with either a positive or negative numerator and a positive or negative denominator.
The flagpole footing calculation no longer took minutes or hours. It now took about 1 1/2 seconds and produced results several digits of accuracy beyond the decimal place.
My friend, the engineer, thought this could not be right. So, he tested it several times and found the results were very accurate every time.
What’s so funny is that 40 years after the vehicle financing program went on the market, many programmers had worked on keeping that program up-to-date and functioning on new systems as technology developed. But I was told they tended to avoid touching the original code I wrote as a kid as it worked, and it seemed many didn’t really know why.
Fun with Bills, Star Wars, and Our Gang
I had two bosses named Bill at DCI, a Bill Putnam, and a Bill Pardini. I thought they were both the greatest. Bill Putnam owned the company and Bill Pardini worked with me as his programmer to design the auto leasing and finance systems. But we also had our humorous times.
The Processor Tech system had an interactive Star Trek game written in machine language. Now, the video card had no graphics to speak of–only characters memory mapped to the screen. In BASIC, you could use peek or poke to read or write to the screen. So, Bill, being a rather sharp guy, searched for the name of the creator of the Star Trek program on screen and plugged his name into memory instead. Actually, he edited it on disk, so it came up with his name as the author, and we all got a laugh out of it.
So, wanting to play around with the same idea, I decided to change it to say “by Our Gang” replacing “Bill Pardini” with “Our Gang”. But I did it wrong and ended up with “by Eor Gangdini” somehow with a typo and a failure to write spaces over “dini”. We all had a hard time getting to where we could stop laughing as we would get each other started back up again.
Whoops! Where did our whole system go?
Well, after working hard and developing these two auto financing and leasing systems, we only had the 5 1/4 inch floppy disks for backing up the system. Bill had a demo for a potential customer the next morning, but somehow he accidentally overwrote the original copy of the program. That should be OK as we had a backup copy. But he apparently backed up the deletion as well. So the program was gone completely from the face of the earth, never to be recovered.
Since I had written the complete system and remembered much of it, I took the system home and worked on it all night, and by the next morning I had entered the program from memory. Actually, my rote memory is not that great. The reason I could remember the program and enter it all by hand was that my logical memory is quite strong. If I can understand how something works, I can usually recover or reinvent it inside out, upside down, backwards and have a functional version of it back and running in a very short amount of time.
So I tested it well, brought the system back into the office half asleep, surprised Bill, and sort of saved the day. Yet really, he is the hero in spite of his mistake as he was the one who came up with the idea to do this program, what it needed to do, and he is the one who sold it to the customers and eventually owned the company.
From there, I developed accounting software for an elderly man, a nice man, but who would lean over my shoulder while blowing out cigar smoke while I was developing accounting programs for him in Business Basic on a Vector Graphics S-100 computer. I worked for him for money and later worked in return for a computer which I still have today. It had 24k of memory and CPU boards I could swap out for an 8080, 8085, or a Z80. And I thought I was getting rich working for $8/hour.
On that system, I worked on accounting programs such as GL, AP, AR, PR, Inventory and such. Later, I worked on an Employment Agency’s program again in BASIC for $20/hour and thought that was exorbitant. But my ex-boss who I worked for insisted I ask that much.
Order Entry and Payroll for International Peripheral Systems, Inc.
IPSI was a company that assembled and sold Xerox Diablo star-wheel printers. They needed modifications to their payroll system and needed an Order Entry system to be built. So I built them one.
One of the systems I worked on was an Imsai 8080 system.
A few fond memories I had were the rubber band fights we had the second that break times started. Clay would hide at his desk and start firing away, and we would fire back, and the boss' daughter, who was also our bookkeeper would give her ritual comment, “You guys are so immature!” And we were.
I felt a little guilty and spoiled as I seemed to be the only employee the boss never yelled at as he was quite vocal about getting things done on time and correctly. The rest of the team was great, but for some reason I never got yelled at.
Another funny memory I had was when we would forget to turn on the printer before turning on the Imsai system. The printer driver would get into a loop, and then you would have two choices: Stop the system and reboot, or hit the stop button, increase the program counter to get out of the printer loop, and restart. And then printing would resume without a problem.
The boss' daughter and the secretary got into a minor, but friendly disagreement about how an accounting calculation should be done. It really was simple algebra, and while I had respect for both women, I started to realize how lacking many Americans were in mathematics as I wondered how it came about that simple algebra became a controversial subject.
But then I ended up being a math major in college.
Picture of Cromemco System Three borrowed from Retro.moe” website.
Farm Accounting on Z-80 S-100 bus systems.
Later, I worked for Argos, a company that specialized in farm software such as farm accounting and irrigation scheduling. There, we worked in an in-house, fast, compiled language called “Argol”. Perhaps it was a play on “Algol”, but it was nothing like Algol. It was more like a macro assembler calling macros for math, the user interface, and report writing. Another programmer, Gary, and I worked together on the accounting software until the owner of the company started a project for irrigation scheduling.
An irrigation specialist with his PhD in Agriculture worked with me on identifying variables related to weather, humidity, evapotransporation, and such, and I found it a joy to work on the project until this gentleman began insisting on some non-normalized entry of data leading to potential ambiguities. This was not something related to double-entry where two people enter data and the system makes sure things are consistent for security. This was a sort of sloppy entering of the same data by hand in multiple places, and I felt this put the system at risk of serious errors. Since we could not agree, we parted ways and I went to work for Fresno Unified School District.
worked on developing and modifying and enhancing accounting software for a couple companies later got involved in Farm Accounting and Irrigation Scheduling.