The BINAC is the first ever commercially produced computer, first running in 1949. For Retrochallenge 2014, I hope to emulate it, and recreate the first ever game running on it, Nim (and maybe some other things).

Sunday, 6 July 2014

How to train your Binac

Dragons are easier, let's put it like that.

From Chapline's manual, theonly page I have.

This is a picture of the Binac Keypad - it is programmed in Octal. To program it you convert your program into Octal, and type it directly into memory.

It uses the Control Counter to do this - this is what BINAC calls the program counter. Typing in octal digits here copies it into a temporary register, and when you are complete it copies it into memory and goes to the next instruction.

To help it prints out the octal codes on the printer as you type it (the printer is very limited, it only prints Octal digits out).

This is where you do most of the work, hence the hand rest at the bottom. If you make a mistake you can press the TAB/CLEAR button and start again. (This picture is I think physically correct from what I can see from photographs).

The other commands control the operation of the computer. The main control is a rotary switch which has five positions, COMPUTE, FILL, VERIFY, EMPTY and CLEAR. There is single step switch, for executing one instruction at a time, and a breakpoint switch so you can interrupt a running program (there is a breakpoint instruction in the instruction set). You can also manually force it to stop using the "Manual" button. Then there is a button called 'Start', which starts the program, and a program called 'Manual Clear' which I think clears the program counter.

As far as I can figure out, COMPUTE is the running the program mode, FILL allows you to enter data, VERIFY allows you to check it, I guess, but I have no idea how, INITIAL CLEAR may reset the computer completely - another guess.

Some things are difficult to work out. EMPTY is actually the printing code - if you switch it into this mode it dumps the memory between the program counter and the end of memory (777 octal) out to the printer - this is the only output available, a memory dump in octal.

This explains the odd code at the end of the square root program, where most of the code is between 024 and 047. It puts the data at the start of the program, which is easiest to change. Then once the run is complete it jumps to 754 and executes 25000 (Skip) and 01000 (Stop), so when it actually stops the program counter/control counter is at 755, which is the first word of the result - so you run the program and switch to empty, and the contents of 755 - 777 are pushed out to the printer.

As far as I can tell, there isn't any way of changing the control counter manually, so to put code in at 754 you either type code in until you reach 754 (unlikely) or more likely you put a U754 instruction (an unconditional jump) in 000 and run that as a single step instruction , after that PC/CC will be 754 so you can switch to FILL mode and enter the code.

Some of this is described, some of it is workable out from the circuit/logic diagrams and some is sheer guesswork. I would guess Verify somehow locks the system out so you can 'single step' through memory without actually executing anything so you can see what is in it. Initial Clear, could be a hard reset, but seems a bit pointless. Perhaps it resets the timing - because it's a serial machine information goes round in streams which saves on valves (this has far fewer than ENIAC) but does make timing more difficult.