Wednesday, February 21, 2018

My Entry Into Video Game Programming

RCA Studio II Home TV Programmer

Public domain photo of the Studio II console by Evan-Amos:

https://en.wikipedia.org/wiki/RCA#/media/File:RCA-Studio-II-FL.jpg

Electronic Games

"ARE YOU"

was the heading for an employment section advertisement in The Philadelphia Inquirer, Philadelphia, Pennsylvania, Sunday Main Edition, June 27, 1976, top of page 99.

I thought it was a unique and unusual ad seeking an electronic game programmer without naming the company behind the ad.

The ad asks four question that if you answer affirmatively, will invite you to send your resume.

"Turned on by really small microprocessor systems and their possibilities?"

Absolutely, In 1976, I built a home computer from a kit, the IMSAI 8080, that utilized the Intel 8080 microprocessor. I wanted to learn about programming microcomputers. 

In early 1975 the first home computer kit available was the MITS Altair 8800 computer. An digital electrical engineer colleague at SPERRY-UNIVAC, where I worked, had built an Altair. He experienced problems with its poor build instructions, but was eventually able to resolve them. I think his digital design experience at work helped him complete the build. 

Because of his experience, I decided against the Altair, and instead I bought the IMSAI 8080. In retrospect sometimes I regret this decision, only because the Altair was the first with its place in history. But at the time I thought the IMSAI had a much more attractive front panel, a better power supply and was cheaper. I built the IMSAI without any problems and it powered up and ran the first time.

"Hooked on electronic games and have ideas of your own?"

Yes, I enjoyed playing a star trek like battle game on a UNIVAC computer during lunch time break, and found the idea of building and writing a game more compelling than playing.

"Above being pampered by BASIC, ALGOL, or FORTRAN?"

Sure I can write low level code. I was on the team that wrote a FORTRAN compiler in computer hardware machine assembler language for UNIVAC operating systems. I did not like BASIC, even though I used it.  And although ALGOL was not used in systems programming at UNIVAC, I did like its elegance. But I was very comfortable with and enjoyed coding in machine languages because I was interested in hardware level programming.

I had used ALGOL in a programming course at the University of Pennsylvania, Moore School of Electrical Engineering several years earlier. At that time ALGOL was being used as an operating systems programming language by Burroughs, a mainframe computer competitor of SPERRY-UNIVAC. In 1986 the two companies merged to form UNISYS.

There was an ongoing trend in software development, and at UNIVAC to improve the quality and speed of writing code by using higher level programming languages, rather than machine level assembler languages of the computer hardware instruction set. I endorsed this trend. Finally in the mid 80's there was a suitable programming language "C" that replaced assembler for many coding tasks for operating systems.

Studio II game programming used an interpreter language, an acknowledgement that there was a need to write code in higher level languages.


"Ready to swim in the mixed sea of hard-and software?"

Yes, I envisioned integrated circuit microprocessor systems being built into many devices. I wanted to learn more about computer hardware design principles too, even though I favored software development.

RCA Studio II Game System

I sent my resume to the Inquirer black box. To my delight I was called in for an interview at the RCA David Sarnoff Research Center in Princeton, NJ. I spoke with Philip Baltzer and Joseph Weisbecker (who both collaborated on writing the ad) . RCA was developing a new video game system and needed a software programmer to write video games for the new RCA Studio II Home TV Programmer. 

The game console was to be built by the RCA, Distributor and Special Products Division, headquartered in Deptford NJ, and manufactured in North Carolina. Next I interviewed at the RCA DSP Division that would become my official employer. I would be paid by the DSP Division, but work 99 percent of my time in the Princeton labs with Phil Baltzer's group. 

I started work after Labor Day, on September 7, 1976. In retrospect things moved slowly at RCA since I was interviewed in early July and was not hired until about the third week in August.

I gave two weeks notice to UNIVAC and during this time the first personal computer show was held in Atlantic City, NJ, the weekend before Labor Day, August 28, 1976. During the show my wife and I dined with Phil Baltzer's lab group. This is the show where Steve Jobs demonstrated the Apple I, and I remember visiting the Apple booth. 
Phil Baltzer and Joe Weisbecker told me one reason I was hired was because I stood out among the interviewed programmers for having built my own personal computer kit and my enthusiasm for computers for personal use.

After starting work, I learned that programming games for the Studio II required writing in a pseudo code language designed for game construction, instead of the 1802 microprocessor instruction set. This was not a problem for me except that Joe Weisbecker used paper and pencil to code games in hexadecimal numbers of the game interpreter instruction set. I quickly realized this would not only be a tedious error-prone way to write game code, but would be hard to refactor and reorganize the code to compress a game to fit into small memory cartridge ROMs. Plus it would be harder to add or change game features. I needed a tool to help me increase my productivity.

Fortunately the Sarnoff Labs had available a modem dial-up time sharing service on an IBM 370 mainframe computer located at a RCA data center in Cherry Hill, NJ. I found I could utilize the 370's machine code macro assembler to write mnemonics for the interpreter instructions as macros, and generate a hexadecimal character program file for a game. With the mainframe online I could edit and save my programs and make changes as needed using a line oriented editor with the paper terminal modem hookup. 

When I printed the game hexadecimal codes on a 30 cps paper terminal the output could be simultaneously transferred to a Studio II development board via a UART interface card (serial data send to/from the terminal). With some help with parts and UART chip information from colleagues Tom Chen and Bille Joe Call, I built a UART interface card and wrote code to get it to convert the ASCII hex digits into binary and load into RAM on the development board. This saved a lot of development time and provided quick turn-around for bugs and added game features.

Now I was ready to write my first Studio II game in earnest....

No comments:

Post a Comment