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.