Below is a video of how programs (in this case, "Hangman") is loaded from paper tape on the MIL Mod-8 Computer.
Today I got Hangman to work on the Mod-8. The source code came from Scelbi's First book of Computer Games for the 8008/8080. Fortunately, I had a scan of the book so I was able to literally cut-and-paste it from the book to a text file, thus avoiding tons of typing.
However, though I was able to cut-and-paste, things were not a simple as they might have appeared. This version of Hangman was written to be stored in (split octal) memory locations 002000 to 007357. However, the Mod-8 uses memory locations 000000 to 007377 for "Monitor 8" and the "MIL Cassette Routine" (if used). This means that RAM memory begins at location 010000. In addition "Monitor 8" uses RAM locations 013350 to 13377 as a scratch pad, so we need to stay out of this area. A similar problem exists with the Mod-80, though the actual locations vary.
It Work's on My Machine... Well, Not Quite
To accommodate the existing Mod-8 memory map, I decided to relocate the code from 002000-003377 to 011000-012357, and from 004000-007357 to 014000-017357. To do this, required changing all the CAL, JMP, JTZ, JFZ and LHI references. However this did not turn out to be enough. There was also a spot where there was a LMI to store the high byte of the table pointer to memory, which would be used later. This was initially missed by myself and the program would crash and overwrite portions of memory.
It took me several days to figure out what was wrong as I had never programmed in assembly before (other than a few lines of 6502 code back in the 1980s). This problem forced me to learn some 8008 assembly. Overall it was a good project to cut my teeth on as it gave me a good reason to understand the opcodes and allowed me to experiment with them a bit.
Paper Tape Version
During the initial programming phase, I simply loaded the code on the Mod-8 via Hyper-term using the "Send Text File" feature. However, once debugging was completed, I sent the final octal text file to the teletype via my PC, to produce a paper tape copy of the program to get the real old school feel.
For this, I got a bit clever and encoded the actual LDO (LoaD Octal) command (with memory locations) on the paper tape in addition to the code itself, so I need not type anything.
The trick to get this to work is to use <HERE IS> key on the TTY where ever you are expecting a response from the computer. This gives the computer enough time to respond to any commands before more data is sent. This process is analogous to putting commas after a phone number in your address book to insert pauses before dialing an extension.
With the tape punch on, I would type the following (with the TTY in "Local"):
LDO<HERE IS>011000<HERE IS>012377<HERE IS>
Then I would switch the TTY to "Line", and send the octal file to the TTY via Hyper-term.
When the octal file is finished, I would switch the TTY back to "Local" to send the second half of the code (which was located at 014000) by typing:
<HERE IS>LDO<HERE IS>014000<HERE IS>017357<HERE IS>
Again, I would switch the TTY back to "Line", and send the remaining portion of the code to the paper tape.
The result is that one length of paper tape will auto load both sections of the code by just hitting "Start" on the tape reader. The entire program takes about 10 minutes to load. And I thought my Commodore 1541 disk drive was slow!
I am not sure if this trick was employed in the old days or not, but it is likely a few clever folks must have tried it out.
After playing with the Mod 8 (8008) boards I decided to see if my Mod80-1 (8080) board would work, and it did. To convert the Mod8 to a Mod80, all one did was remove the CPU and buffer boards and replace them with a 8080 board and a custom jumper (Mod80-3) board, and of course, the appropriate ROMs with Monitor 80 on them.
Made my own version of the Optional 343691EW modification kit for the ASR 33 so I could provide a shelf for my Mod 8. It works perfectly. The unfinished wood looks like it was an original part too!
Yesterday I used a current loop to RS232 converter to connect the Mod8 to a PC running Hyper Terminal. The Mod8, like many early computers such as the Altair 8088, was designed to connect to a Teletype machine. In this case a Teletype Corp Model ASR33. This is done using a 20 mA current loop. To connect to anything more modern, you need to be able to convert the 20 mA current loop to something like a RS-232 serial signal.
To do this, I purchased a B&B Electronics Model 232CL4R converter. To hook it up to the Mod8 is relatively easy. The TTY Out signals go to the R+ and R- terminals, and the TTY In signal goes to the T+ and T- terminals on the converter. No external power supply is needed (despite what is shown in the diagram below). I discovered this by accident when I ran the system without plugging in the current loop RS232 cct power supply..
Couldn't resist. Saw this 8080 trainer at Kemners in PA a few weeks ago. Ended up buying after all. It's a Nida 250. Kinda a cool looking beast. Came with a few 2708 EPROMs as well.
Doesn't seem to power up, but I am sure that can be rectified (excuse the pun) relatively easily.
If anyone has manuals for this, please let me know. There doesn't seem to be anything on the net for it.
Tested out my Mod 8-9 Board with the 8008 configuration and it works too. Can now dissemble some mystery code from the 1702A on board.
Turns out my reproduction boards (i.e., The Mod8-1, Mod8-2, Mod8-3, Mod8-4, and Mod8-5) all work perfectly as they were designed to do. Had some trouble with the CPU (Mod8-1) board, but it turned out to be that my MF8008 CPU chip was bad :-(. Fortunately I had Gabriel's MF8008 chip to test out in my board.
Overall, I am quite happy that the boards didn't have any errors in them.
Note that the Mod8-6 and Mod8-7 boards appear to be good too. That is, the system doesn't crash when I install them. However, I do need to design a method of testing the input and output ports, so thorough testing will not occur till later.
It's Alive! Got the MIL Mod 8 working. This video shows it dumping some code using original boards from Gabriel Nemeth. Thanks Gabe. For awhile there, I was really scratching my head trying to get this to work. Then I recalled something I read in Robert Swartz's "Mod8 Data Package". The RAL line must be jumped to ground for operation. Sure enough that fixed it. Later on, I noticed a similar thing in the Mod8 Manual under the section describing the Mod8-3 board. See images below for extracts.
Now that I have the original boards working, I can test out my reproduction boards one at a time.
Charles Baetsen holds a Bachelor and a Master's degree in Engineering Physics from McMaster University in Hamilton, Canada.