ICT 1301 - The Simulation

ICT 1301 - Quick Start Tutorial

This is a quick start tutorial for the Virtual ICT 1301 computer emulation. Flossie, serial number 6, the first of its kind off the production line, and in storage at The National Museum of Computing, is currently the oldest original 2nd Generation Electronic Stored Program Computer in the UK.

Moving around the simulation

The website can be viewed from a smaller mobile device, but to be able to use it properly, this really needs a larger screen, keyboard, and mouse, so we’re assuming that you’re viewing this from a PC or Mac.

There are two modes which can be switched between by using the mouse button. The current mode is shown in the bottom left of the screen: a Use mode which is indicated by a pointing finger icon and a View mode which is indicated with an eye icon.

If in View mode, just click the mouse button to switch to Use mode. If you’re in Use mode, click with your cursor anywhere where there isn’t a control (the background is a good choice!) to switch back to View mode.

View Mode

In this mode, move the mouse to look around your environment and to look at specific controls you want to access. You can move around the area by using the W,A,S and D keys to move forward, left, back, and right respectively. Try walking around to look at the computer.

Use Mode

In this mode, a cursor will be available on screen and allow you to click on some of the switches, dials, and buttons to control the computer.

Other Controls

Shift : The shift key can be used in either mode. This lowers or raises your point of view, the difference between crouching/sitting and standing for example. If you sit near the chair, your position will be adjusted into a good position to access the console.

P : Open and close the printer cover (this can also be done by clicking on the clear cover in Use mode).
C : Move direct to a view on front of the console
L : Throw one Line Feed on the printer
1,2,3 : Set the Control Register dial
B : Change the Arithmetic Register dial
N : Open up the Store Viewer (this allows you to view the data stored in both the Immediate Access Store (the core store memory) and on the Drum Stores for debugging purposes.

ICT 1301 system layout

Loading your first program

Move yourself to the Punched Card Reader. The hopper on the right is input hopper for your punched cards and the one on the left is the output hopper after they are read. To load a pack of punched cards, click the Programs icon in the top right of the screen.

Make sure the drawer that is selected is Programs (NORMAL) then select TIMINGTEST. You should get a message that 7 cards have been loaded into the input hopper. Now move yourself to the Main Console and press Shift to sit on the chair. In View mode, move your view to get as much of the console in as possible then switch to Use mode.

ICT 1301 system console

ICT 1301 register close up

At the top of the console are the three Arithmetic Registers A, B & C. Each of these can store and work with a 12-digit number. Each digit is stored as a BCD, a Binary Coded Decimal. You can see the numbers from 1 to 6 shown in the picture to the left.

The A register is mostly used to get data to and from the Immediate Access Store (I.A.S, our core memory) and from the Storage Drums. The B register is our work horse we can use while we are working with data and the C register is mostly used when reading data from the punched card reader but can also be used for our own purposes. To view each of the register values, we can use the dial on the top left marked A B C. To change the setting, click (and hold) on the dial then drag left or right to change it.

To alter the value in one of the registers manually, you can use the dials below. Set each the same way as above by clicking and dragging on them. Each dial can be set between 0 and 15. Once you have a number ready to store, press the white Set button just above the ABC dial to store it.

The section marked Control Registers 1, 2, 3 are our three program counter registers. This lists the next commands to be run as a 6-digit value. The dial marked 1 2 3 and the values can be set exactly as described above to look at and change the values.

To load our program, we first need to load the Initial Orders. This is a pre-defined program permanently stored on a special section of the first storage drum. This is our bootstrap program that tells the computer how to load a more complex program into memory to run. Pressing the Initial Orders loads the three Control Registers with a fixed set of commands to load the Initial Orders from the reserved storage on the drum and then run them from address 200 in the I.A.S.

Set the Control Register 1, 2, 3 Dial to 3. The third Control Register will show 1 in each of the six displays if the card pack loads correctly and is ready to run.

Press the green Start button just under the Initial Orders to begin loading our program. If all goes well, you should see the value 111111 in Control Register 3 and a report from the simulator that all is loaded ready. If you check the Punched Card Reader, you should see that the cards we loaded are now in the output hopper on the left.

This is a very small program which lights each of the Programmed Indicators in turn (the lights in the centre of the console) and then extinguishes them before adding 1 to the B register. To view the B register, make sure you set the Arithmetic Register A, B, C dial to B, then press the green Start button once more to begin our program.

You should be able to see the Programmed Indicators flashing and the B register counting! This program is set to pause if you set the Manual Indicator 29. Click on the Manual Indicator marked 29 and drag it down, you should see that the program is still running (the command registers are still changing), but it is paused in a loop. Click and drag Manual Indicator 29 back up to continue. It’s running a little fast to see the detail, but on the ICT 1301, it’s possible to run slowly command by command to see what it’s doing and to debug your program.

Use the dial marked “Auto Manual” and click/drag it left to Manual. This will stop the program running at the current command (the Computer Stopped light will indicate it’s stopped). Now, pressing the Start button will step the program on one command at a time. If you change the Auto Manual dial to Repeat Manual and press Start, the computer will step on commands at a rate of 3 per second. This speed was adjustable using the Clock Selector dial to the right on Flossie but is fixed to 3P/Sec on the simulator currently. Set the Auto Manual switch back to Manual to stop the program.

Using the line printer

Another program is available to test the line printer which reads in a few text-image files and prints them. The printer was 120 characters across and capable of 600 lines per minute.

To load the ASCIIART program, firstly make sure the current program is stopped by moving the “Auto Manual” dial to manual. Now click the Programs icon in the top right and choose the ASCIIART card pack.

Press the Initial Orders button, turn the Auto Manual dial to Auto then press the Start button to begin loading the cards into the I.A.S ready to run. Again, you can watch on Command Register 3 for a successful completion when all registers show the value 1 and the computer stopped light shows.

Now we have the program loaded, we need to select which art data cards to load. Again, select the Programs icon and then choose the drawer marked Data. At the time of writing this tutorial, there are currently three art files to load: DALI, MCCANDLES and MINION. Select one to set the cards into the input hopper.

To start the program reading cards, press the Start button again. You should see the register lights start to flash as the program works and the cards will start to be read from the input hopper of the Punched Card Reader.

Stand up (shift) and move over to the line printer on the far right of the console. You can open the printer cover to see inside by clicking on the glass cover in Use mode or by pressing the P key on your keyboard. If you have loaded the program and cards correctly, then you should be able to see the printer creating your art for you. One line on the printer is generated by two punched cards. If you look closely at the output, you might be able to see that it is overprinting one line on top of another. It was in this way that early programmers managed to create a grey scale of image output using just alphanumeric characters!

Entering a manual data parameter

We can use the console registers to enter data for use in a program. An example of this can be found by loading the card pack called HAILSTONES.

Hailstones (or the Collatz conjecture) asks whether two simple calculations, repeated on a starting positive number will always end up as one. This has yet to be proved, but people have tested up to very large numbers by brute force and it’s continued to be correct so far!

The calculation is that if a number is even, divide it by 2 whereas, if the next number is odd, multiply it by 3 and add 1. If you think of a number and use these two rules continuously, then the number may rise up and drop for a bit (like a hailstone in a cloud) but will eventually drop down to 1!

Load the HAILSTONES program as described above (Manual mode, Load the cards, Initial Orders, Auto then Start) and check that the program has loaded correctly.

The initial number we want to start with is expected to be in Register B when we start the program. Set the Register A, B, C dial to B then enter a six-digit number by turning the dials below digits 7 to 12 then pressing the Set button to load them into Register B.

Once you have done this, make sure that the Auto Manual switch is on Auto, then press the Start button. Check the printer for the output, if all is working, then you should get the current value listed on the left and a count of the number of steps on the right until you get down to a value of 1.

Running the card punch

The final program for this tutorial is to create a punched card. The program PUNCHDUPL takes in a single punched card when run and duplicates that data onto a new card on the card punch (the machine at right angles to the rest of the machine on the far left of the computer).

Load the PUNCHDUPL program as above until you get a completed load on Command Register 3. Now, again select the Programs icon and choose the Data drawer. There are two data cards PUNCHDATA1 and PUNCHDATA2, each of which contains a message, select and load one into the card reader.

When you’re ready, switch to Auto mode and press Start. I won’t take long to read and reprint the single card and it will appear in the hopper on the side of the punch writer. It may be tricky to see the single card in the hopper, but an icon that a card is available will be shown at the bottom of the screen. Clicking this card will collect any cards in the output hopper and display them for you. If you like, there is an option to export that card to a PDF file which you can download and keep, and which includes instructions for recreating it on the virtual card punch included with this simulation.

More Information

More tutorials and information will follow on this website.

If you would like to find out more about the ICT 1301 and Flossie, you can find lots of data and stories of how it was rescued and her current state of reconstruction at http://ict1301.co.uk or at https://tnmoc.org