[vcf-midatlantic] Sep 28 2019 workshop followup
jeffrey.scott.jonas at gmail.com
Thu Oct 17 05:48:18 EDT 2019
I had a wonderful time at the Sep 28 2019 workshop.
I could not attend Sunday
in order to start the Jewish New Year properly with family and friends.
I already followed up Eric Rangell's chording keyboard prototype
with "much ado about chording keyboards".
I was beyond impressed with Nevell Greenough's LPG-30 emulator.
The front panel looks absolutely authentic,
albeit with an LCD instead of the 3-trace oscilloscope.
I frobbed an LGP-21 back in high school
and I remember a lot about it.
We geeked out about the strange opcodes
that ENCOURAGED self modifying code,
mostly out of necessity due to the lack of registers or stack.
For example, there are 2 instructions
for modifying the address field on an instuction.
One saved the program counter plus 1 in the address field of an instruction.
That's how it did subroutines: store the return address in the
at the END of the subroutine, then jump to the subroutine start.
Another saved the accumulator to the address field of an instruction.
That was probably for address calculations in lieu of index registers.
It's essentially a "move under mask"
since the address field was NOT the entire word.
http://ed-thelen.org/comp-hist/lgp-30.html <<< main page
http://ed-thelen.org/comp-hist/lgp-30-man.html <<< programming manual
But those intentionally PREVENTED any address overflow into the opcode.
So how did Mel use an overflow to cause a branch?
We think it's possible he incremented the address of a branch instruction
by loading the entire instruction into the accumulator,
adding to that and storing the accumulator back into (drum) storage.
That's the only way to overflow the address over the 2 unused bits
between the opcode and address to increment the jump
into the instruction, which is a different jump/branch.
And that's why Mel is *still* a "real programmer" :-)
-- jeff jonas
More information about the vcf-midatlantic