Search Posts:

SIMH Emulator - 1956 LGP-30 Computer


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

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 site..

More detail to come.

  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

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)

  How Instructions are Processed by Bill Degnan - 02/16/2015 00:13
Let's say you have a program with the following instruction:
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.

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

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

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. ...

  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

  Clock Gen Card Image by Bill Degnan - 01/18/2018 09:14
I was surprised to learn that I have a piece of this rare machine, namely the clock gen module, pictured above. Click image for larger view.

Clock Gen Card Img 1
Clock Gen Card Img 3
Clock Gen Card Img 4.

  LGP-30 Arduino Simulator by Bill Degnan - 12/08/2019 18:41
There is still interest in these machines today. Pictured is an Arduino-driven LGP-30 hardware simulator queued up to run Blackjack. Click image for larger view.

I need to get more info about this, I took a quick picture during the VCFed "Festivus" party this weekend. I expect to see this unit again at VCF East this Spring.



Buy a Commodore Computer Poster

Popular Topics and FAQs

  • Commodore B Series Tips and Tricks
  • Aerocomp TRS 80 M 1 Expansion Unit DDC
  • Items Wanted
  • Lobo Max 80
  • Zenith Z-19-CN
  • Prototype PET 2001 photo
  • Using Toggle Switches to Analyze Memory
  • Commodore Disk Archive Project
  • PET 2001 Prototype at Gametronics 1977
  • Jim Butterfield Photo
  • IMSAI 8080 With Processor Tech. Cutter
  • Secrecy is the keystone of all tyranny
  • Cromemco System Three
  • Northstar Horizon - Boot Problem
  • Computer History and Restoration Links
  • Commodore BX-256-80 - 8088 Co-processor
  • S-100 board testing with Z-80 ICE
  • Donner 3500 - an early portable computer
  • Digital (DEC) PDP 11/05 NC Assembly
  • Univac 1219 rescue
  • Fido BBS listing node list 6-13-1986
  • PDP 8e
  • MITS 88-2 SIO (2SIO) for BASIC
  • Visual Technology Inc Model 1050
  • Amiga 2500 Restoration
  • The Evolution Of IBM Computers
  • Replacement teletype print hammer head
  • Archiving and Copying Software 101
  • Computers Built 1940 - 1950
  • CBM B-520 (a.k.a B256-80 or B500 256)
  • RCA COSMAC Microkit
  • Commodore 64K C-116 Mods
  • MITS 8800b Turnmon 9600 baud
  • Catweasel, 8in and 5 1/4
  • Raspberry Pi as Gateway to Internet
  • Digital PDP11 late 1969 early 1970
  • PDP 11/40 72 inch cabinet model
  • PDP 11/40 Industrial 11 model
  • Digitial MicroVAX 3100 30 System
  • Digital VAX 4000-200
  • Commodore 64 / 1541 DRIVEKNOCK
  • Booting the System Using RL02 drive
  • PACS: Reflections by Kathleen Mauchly
  • Tele-Graphic Computer Systems Inc.
  • Commodore B Series SID Jukebox?
  • Installing Core into PDP 11/40
  • Setting Up OpenVMS 7.1 DNS CLERK
  • Felt-Tarrant Comptometer Model J
  • NextStation Color
  • Digital Rainbow (PC100-B2)
  • 1970 Compusad Compulogical Tutor
  • Archiving Papertapes Using DSI NC 2400
  • 1976 P.C.C. Features the MAI JOLT 6502
  • 1961 Beckman DEXTIR Computer
  • UNIVAC 1 and UNIVAC File Computer 1
  • Past Issues:

    Dual Dazzlers Sudbrink 2

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