An IBM 1410 puzzlement...
Jay Jaeger
cube1 at charter.net
Mon May 16 16:52:32 CDT 2022
I have a puzzlement with my IBM 1410 FPGA implementation.
ALD page 42.10.10.1, ILD figure 89
The symptom is this: The CPU runs and can execute instructions. So,
stuff is generally working.
Starting the address set process, the console appropriately prints the
"B" prompt (to set the instruction address into the IAR, B means
"BRANCH") or the "#" prompt to set other addresses. Normal stops print
the "S" as expected, errors print the "E" as expected and single cycle
or I/E mode print the "C" as expected.
However, starting a display operation (to display memory), which ought
to print a "D", prints an invalid parity "F" character - Bit 2 is picked
when it should not be. I have verified that "-S Special Char B" is
active (active low)
I first saw this on real FPGA hardware, and then confirmed it / did some
troubleshooting under simulation.
Here is what I found:
Looking at the ALD, a "D" is printed when
+S ADDRESS SET ROUTINE is active
+S DISPLAY ROUTINE is active
The Console Matrix at position 30 or 35
All of those conditions are satisfied. Address Set is appropriately
active because a display operation starts off by entering an address
(even though I don't have console input implemented yet, that is not
involved at this point). And, indeed "-S SPECIAL CHAR D" is active
(active low), as expected.
Looking at the ALD, a "B" is printed when
+ +S ADDRESS SET ROUTINE is active
+ The console's address set select rotary switch is NORMAL (it is)
(It will print '#' for other positions of this switch)
The Console Matrix at position 30 or 35
And, indeed, all of these conditions are satisfied as well, and indeed
"-S SPECIAL CHAR B" is active (active low) as well.
The FE instructional materials confirm that ADDRESS SET ROUTINE should
be active when starting a display operation, consistent with the ALD and
the ILD - because both then proceed to allow the operator to input an
address.
So, this feels like a bug - an implementation error that was later
corrected. The ALD I have is pretty early - 6-15-1961, with just one
ECO, and that ECO ("B") isn't on any of the gates on that ALD (this is
not unusual), so this is probably essentially the original ALD.
The fix would be pretty easy: to include "+S DISPLAY ROUTINE" onto the
wired or / "DOT" at coordinate 1B (to inhibit "B") and also to add a
wired or / "DOT" with "+S DISPLAY ROUTINE" at the output of gate 2I.
In both cases, the signal "+S DISPLAY ROUTINE" would then inhibit the
"B" or "#" (depending upon how the relevant switch is set.)
But I'm just really surprised at the whole thing. Not really asking
anyone to do anything, necessarily, but if anyone wants to confirm I'm
not nuts (or demonstrate to me that I am nuts), feel free.
[I am also experiencing it printing a "." when the mode switch is in CE,
which isn't right either - but haven't looked at that. It should be
printing a "#", regardless of the setting of the Address Entry switch -
I won't be surprised if the same kind of thing is going on there, as
this also involves the "address set routine" and matrix position 35 -
and a "." is a "#" plus bits B and A - so the evidence is pretty strong
there]
The documents:
1415 Console CE:
http://bitsavers.org/pdf/ibm/1410/CE_Instruction_Reference_Maintenance/1415_Console/
ILD (see Figure 89, page 95 of the PDF below) [ILDs read pretty much
like modern logic diagrams]
http://bitsavers.org/pdf/ibm/1410/drawings/R23-2936-0_1410_InstructionalLogicDiagrams.pdf
The ALD 42.10.10.1 (page 60 of the PDF below) [ALDs are tricker, because
of "DOT-ted" connections, and the logic family (RTL NAND *mostly*).
http://bitsavers.org/pdf/ibm/1410/drawings/1410_SYSTEM_VOL_X.pdf
JRJ
More information about the cctech
mailing list