SHARE |
|
SIMH Emulator - 1956 LGP-30 Computer | by Bill Degnan - 02/09/2015 20:49 |
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 |
|
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. Reply |
|
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. Reply |