I updated the virtual 2501 card reader function to properly handle a binary deck that has a card in Program Load format at the front, such that pushing the Program Load button on my program will load core from location 0000 to 004F (eighty columns) exactly it would on a physical reader.
Each word in memory is 16 bits wide, but a card column only has twelve rows of data. The normal card reader places those rows (12, 11, 0, 1 . . . 9) left justified in a word with four zeroes on the right. That would be pretty useless for instructions coded on a boot card.
The Program Load mode loads rows 12, 11, 0, 1 and 2 into the left five bits of a word, sets the next three bits to zero, then has the value of row 3 stored in both bit 8 and bit 9 of the word. The remaining rows 4 to 9 are stored in bits 10 to 15 of the word. The bits that are set to zero are used for long mode instructions and for selecting index registers, but aren't needed for simple short instructions, thus one can use the short instructions to modify any later instruction words that need the bits.
The only action I can't cause is the execution of the code beginning at address zero, because the SAC Interface does not have that signal available. I do have the ability to separately operate the Program Start button on the machine, so that IF it was reset, the IAR would be at 0000 and pushing start through the added wiring would begin execution.
It is possible to wire up the Immediate Stop and Reset buttons too, so that I can fully automate the Program Load capability, at the cost of an additional cable to the SAC Interface Box and two more I/O pins on the fpga. The two pins will select which of the three buttons to activate (or none for the default state).