Search Posts:

SIMH Emulator - 1956 LGP-30 Computer

SHARE

Return to Threads

  SIMH Emulator - 1956 LGP-30 Computer by Bill Degnan - 02/09/2015 20:49
The 1956 Royal Precision Electronic Computer model LGP-30
The 1956 Royal Precision Electronic Computer model LGP-30


Making heads or tails of the LGP-30 SIMH simulator written for the Royal Precision Electronic Computer model LGP-30 is a worthy challenge for any early 21st Century computer user. Built by the Royal McBee Corporation and first sold in late 1956, this machine is mentioned by sources to be the first personal computer - i.e. the first electronic computer designed for one person to use / operate. The Friden Flexowriter is the I/O device. The Flexowriter is similar to the ASR 33 Teletype in that it included both a typewriter/printer and a papertape storage/reader function.

Operational Diagram

Unlike other SIMH-emulataed systems, there was little how-to information for operating the SIMH LGP-30. There was no software guide or INI file to load, no tapes. Fortunately I have the programming manuals. After many hours of study and playing around I finally made progress. I thought I’d pass along some of my discoveries.

[NOTE: Some of the earliest comments in this thread are corrected/refined later on, these are my notes/thoughts]

First, I figured out how to install instructions into memory. Here is an example how to enter instructions into a memory location

SET CPU LGP30
SET CPU MANUAL
D -A C5614 B4953

(this is programmatic gibberish)

Then to see what’s in memory location 5614:
EX 5614

The computer responds

5614: 000B4952

(which means what is in 5614? B4953) I believe B4953 breaks down to B = instruction “store answer in Acc” in memory location 4953.” More on coding later.

When one compares the actual LGP-30 programming manuals vs. the SIMH emulator, you find that the simulator version is only partially comparable to using an actual Flexowriter to interact at the machine level. This was I presume done in part because a modern keyboard does not have the same keys, nor the same type of HEX code mapping. Also, the emulator had to work within the SIMH framework. I spent about 15 hours before I made much progress. I scoured the manuals, a German site with a DOS-based emulator (nothing like SIMH) and spent a lot of time looking for syntax error trapping code written within the SIMH program itself for clues. The LGP-30 SIMH modules were written by Robert Supnik and can be downloaded from the simh.trailing-edge.com site..

More detail to come.



Reply
  LGP-30 Bootstraping with SIMH by Bill Degnan - 02/10/2015 11:42
I am working on translating the bootstrap routine into something that will work in SIMH.

The basic (hardware) bootstrap in LGP-30 mnemonic format:

Loc. Order Address

6300 P 0000'
6301 I 0000'
6302 C 6305'
6303 P 0000'
6304 I 0000'

This bootstrap must be entered manually before one can load in a tape. In SIMH, to enter the bootstrap into memory you have to enter order instructions as 4-character binary equivalent of the flexowriter single-character ascii commands. Order instructions make up the "instruction set" repertoire. The location column above represents what track on the drum to add the order and the associated address.
p = 1000
i = 0100
c = 1101
etc.

translated bootstrap:
sim> d -a 6300 10000000
sim> d -a 6301 01000000
sim> d -a 6302 11016305
sim> d -a 6303 10000000
sim> d -a 6304 01000000

here is where I need to experiment, the code below is my first attempt:
6305 this address gets overwritten
6306 10106300
6307 10000000
6308 01000000
6309 0.G.W.C (To be converted]
6310 00016346
6311 11116326
6312 10106322
6313 00000000
6314 10100000
6322 10116313
6323 11006309
6324 11016346
6325 10106307
6326 000wwwwj (32-bit instruction)
6346 0gwc0000 (32-bit instruction)

Reply
  How Instructions are Processed by Bill Degnan - 02/16/2015 00:13
Let's say you have a program with the following instruction:
B4627
B = "BRING" - Means clear the current contents of the accumulator and move contents of 4627 into the accumulator.

Allow me to digress...note that this is a 32-bit computer, word = 32 bits. For a program instruction word the first 12 bits typically (with exceptions) are ignored/not used. The exception is when the instruction is used to pass control to another memory location. More on this later.

I have been working to determine what actually gets stored in RAM, at each step of the bootstrap and program loading steps as if it were loaded into memory by the tape read routine.

The current version of the LGP-30 SIMH does not fully mimic the Flexowriter to interact as originally designed, we have to improvise. I plan to start by manually loading the bootstrap and program input routine into memory, plus the data input subroutine and data output subroutines. I intend to do this "as if" the programs were input via tape and executed via Flexowriter. If that is not possible, I will to bootstrap some other way.

Returning to the computer instruction word "B4627". The computer cannot read B4627 in its mnemonic form into memory until it's converted.

1. First "B4627" is converted into binary-coded decimal format and entered into the accumulator. In this case,
0001 0100 0110 0010 0111
B 4 6 2 7

The accumulator is actually 64 separate 32-bit accumulators (one for each drum track), same value on each copy.

2. The input routine converts the value from the accumulator into a format that can be saved to the drum memory. Leaving out why this is so, here is what you get:
0001 00 101110 011011 00
B -- binary 46 binary 27 --

where -- represent 2-bit buffer 00's.

3. Next the word is converted into the LGP-HEX format
0001 0010 1110 0100 1100
B 2 Q 6 J

Note that the BRING instruction goes through the process unchanged. Also, 14 in LGP HEX = Q (not E), 12 in LGP Hex J (not C). B2Q63 is the end result.

The bootstrap is entered in manually, and when executed it jumps to the program input routine. The program input routine code instructs the computer how to run the data input subroutine and data output subroutines. Once in memory these subroutines can be supplemented with more subroutines that can be used by other programs.


Reply
  Progress on SIMH Emulator by Bill Degnan - 06/10/2016 10:55
...Bill,

It took me a silly amount of time but I figured out the simh LGP-30. Here is my blog post/substitute manual:
http://obsolescenceguara...mh-lgp-30-emulator.html

After figuring it out, it all makes sense. But only after figuring it out. To be honest, learning to program the LGP-30 is likely less of a curve to climb than figuring out its simh emulator!

Kind regards, and thanks for posting your discoveries!

Oscar. ...



Reply
  Blackjack Disassembly by Bill Degnan - 06/10/2016 10:59
Al Kossow from the SIMH list suggested the following 2014 post ...and here is a disassembly of blackjack that Eric Schlaepfer blogged about
http://tubetime.us/?p=200
...


Reply

Resources:


Buy a Commodore Computer Poster

Popular Topics and FAQs


Past Issues:


Visual Commuter chassis removed

This image was selected at random from the archive. Click image for more photos and files from this set.