LGP-21
and LGP-30 software compatibility issues
The LGP-21 is
a transistorized version of the LGP-30, first made in the early
1950's. The LGP-21 is somewhat -- but not completely -- software
compatible with the LGP-30. The LGP-21 is somewhat of a superset of
the LGP-30, with a few exceptions. A note by Bob Supnik on Ed
Thelen's website prodded me to make this LGP 21 and 30 order comparison
chart outlining the differences in order code.
Generally speaking, LGP-30 programs are potentially
"close" to LGP-21 programs, and may work if the LGP-30 programs are
modified; there are substantial differences in the I/O area.
However, LGP-21 programs will almost certainly not work on the
LGP-30. In addition there are these issues:
- Optimum coding for the LGP-30 will be decidedly
non-optimum on the LGP-21. Since the LGP-21 is 3X slower than the
LGP-30, this will not help things any.
- The P command in the LGP-30 does not
"block"; the I/O hardware has no knowledge of output device
timing. It is up to the programmer to delay printing sufficiently
to produce the correct character-output timing. The LGP-21
however blocks until device-ready [Sep 2004 note: not sure if it
blocks before/after print start]. Programmatic delays
just-sufficient for the LGP-30 will likely be excessive on the
LGP-21 (though it should work).
- The P command in the LGP-30 is incompatible
with the LGP-21 -- the LGP-30's P command operand contains the
character to print ('immediate operand'). The LGP-21 has no
equivalent order; it has device address in the track portion of
the order, and generally outputs the character stored in the
track portion of ACC. The LGP-30 requires order-modification to
output variables. It would be very difficult to modify LGP-30
binaries to be LGP-21 compatible. "P 000000" (start input) is the
same in both machines.
- All forms of the Z command on the LGP-30 are
"STOP", with an argument of 0 listed in the LGP-30 manual.
Assuming that LGP-30 programmers actually put "0" in the
track/sector fields, the LGP-21 will STOP properly.
- The I (input) order on the LGP-30 has no
variants, and is the equivelant to the LGP-21's I command when
track/sector is not 6200, 6-bits from the device are input to the
accumulator. If the track/sector argument for the LGP-30 I
command is 0, as suggested in the manual, then LGP-21 programs
will input from device 0 [Sep 2004 I think this is the Friden,
but I'm not sure].
Here's a chart of
LGP-21 vs. LGP-30 order code.
All works here unless otherwise specified are copyright
2026 by Tom Jennings. Permission is granted for personal use with no
remuneration. Corporations or any organization or their agents, employees,
consultants or other relationships human or otherwise, expressly prohibited
without written permission.