Tuesday, July 23, 2024

Demo monitor completed and tested; working on various demos to run under the monitor

DEMO MONITOR FULLY TESTED AND READY TO GO

The monitor, which will be resident in core memory, enables an easy demonstration experience. By raising the Console Entry Switch corresponding to the desired demonstration and hitting the IRQ button on the keyboard, the monitor will begin executing that chosen demonstration code. 

It has the ability to host sixteen different demonstrations. Some will be able to run without a working console printer (typewriter), some without a working keyboard, and can be designed to highlight different aspects of the machine. 

The monitor provides various services that can be leveraged when writing individual demonstration programs, such as printing a string of text to the typewriter or accepting an (edited) stream of characters from the keyboard. Other routines validate whether input is a valid number, or convert a number to a stream of typewriter characters that represents the number in decimal. 

DEVELOPING DEMONSTRATIONS TO RUN UNDER THE MONITOR

As one example, a demonstration will perform twelve million multiplications, which occur at the rate of 200,000 per second. This is reflected by the alternation of the lights in the bottom register (EXT) of the machine, which is almost fully lit for one second and then almost completely dark for the next, as a kind of metronome. The demo lasts sixty seconds. 

Another demonstration prints a simple welcome message on the console printer. I have been working on writing the demonstrations and testing them. The first two I mentioned are complete and I am currently working on a third that lets the user type in up to 32 characters on the keyboard. 

This sounds like a simple application that just reads and then spits out the same data, but the reality with the 1130 was more complicated. Keys on the keyboard produce a Hollerith code for the character, stored in the leftmost 12 bits of each word. Typewriter characters are selected by a six bit code, plus 1 bit for upper/lower case side of the ball. These have no correlation at all.

The keyboard of an IBM 1130 is the mechanism from an 029 keypunch, which is why it produces twelve bit Hollerith. The key A on a keypunch causes the 12 row and the 1 row to get a punch, with nothing in the 11, 0, 2, 3, 4, 5, 6, 7, 8 and 9 rows. Thus it is 1001000000 in binary. The 1130 word for the same key is 1001000000000, just padded on the right to get to the 16 bit word size. The typewriter code for an A is 00111100 or 00111110 depending the hemisphere of the typeball. 

This means the program must translate from one character encoding to another. That was par for the course with the IBM 1130 - different encodings for the card reader/keyboard, typewriter, 1132 printer, 1403 printer and paper tape. 

The program also shows off the keyboard editing functions where you can abandon the line to start over (Erase Field) or backspace to replace a mis-keyed character, but the entire entry is not complete until the EOF key is pressed. The EOF is the predecessor of the Enter key of today. 

SOME OTHER DEMONSTRATIONS I AM ENVISIONING

Two are very similar, but they differ in whether the console printer (typewriter) is available. The user types in two numeric values (pressing number keys, sign and then EOF), which are displayed either on the typewriter or on the display panel lights in the ACC register, then the program adds them and presents the result on typewriter or in ACC. 

Another will calculate digits of Pi using a Spigot algorithm, thus no floating point which is not a hardware data type of the 1130. It will print them out digit by digit, with the speed of the digits typing reflecting the working of the algorithm. 

A music playing program exists, which plays a tune that is kind of recognizable from an AM radio held near the core storage compartment. This program is written in Fortran, but I will need to convert it to assembler in order to fit it into memory without needing the regular disk based monitor and its subroutines. 

There are also other programs - games - written in Fortran that I might convert to assembler and implement as a demonstration. 

No comments:

Post a Comment