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.