On Monday, October 29, 2018 at 8:59:39 AM UTC-4, Brian White wrote:
> WOO HOO!
> I got the code working (almost..). Vince, you were right - I had the IO code for the printer and keyboard wrong. Once I replaced all my complex code with the simple stuff you suggested, I got the welcome message I wanted in the Verilog simulation:
>
> CONGRATULATIONS!!
> YOU HAVE SUCCESSFULLY LOADED 'FOCAL,1969' ON A PDP-8/I COMPUTER.
This is part of a little can of worms problem some others have touched on and mentioned some of my code.
For starters, I have spruced up the code which will be part of an eventual re-release of Kermit-12 to add a few enhancements I want and some that were requested by others, etc.
Regarding the CPU ID stuff, here is the latest and greatest and it explains a few things.
http://www.ibiblio.org/pub/academic/computer-science/history/pdp-8/Generic%20Programs/WHATAMI.pdf
There are several issues here pertaining to what you are doing:
In FOCAL, 1969 the model detect code is defective. If the reality of the situation is that the machine is really an 8/I or an 8/K then the tests are just plain wrong and get "interesting" results; ironically, you get the less "popular" mistake:
In reality, if you ONLY check for this subset of the model family the way FOCAL does, you first of all have to rule out it is a PDP-12. No problem because the 8/L is never a PDP-12. So far so good.
But by that simplest check, all you can REALLY say is this is probably a PDP-8/I OR it is probably an 8/L and you really cannot claim to know.
On the real PDP-8/I in 1969, in-house DEC systems were generally well-maintained. In the real world, memory timing was more dubious, especially when DEC had many vendor problems That's why ALL of the PDP-8/L and PDP-12 are slower. In MANY of the PDP-8/I systems, the system may have been slightly slowed down.
Assuming an ASR 33 console, this bad FOCAL ID code used the done flag of the teletype output as a primitive clock and it was hand-tweaked to hopefully tell the difference between machines that are nominally 1.5 versus nominally 1.6.
Unfortunately, in many cases, this backfires and declares many of them as PDP-8/L.
In your case, I assume your machine timing managed to look more like a faster 8.I so you got that [but you were expecting it. My point is you just as well might have gotten PDP-8/L/
As time passed, this actually deteriorated: A sold upgrade for the PDP-8/E was an LA30P interface and some machines were set for 300 baud terminals such as the LA-36.
Either way, you will ALWAYS get 8/L in any of these situations, etc.
But I have a fix for the entire problem [in the Kermit-12 code or better the upgraded version linked to above].
The PDP-8/L is an odd beast. Since it can never have the EAE option, it bothers to totally inhibit the group III OPR instructions.
But this is not synonymous with lacking EAE. Here's the subtle difference:
On the 8/I 7000 is a NOP, so is 7400 and so is 7401. Bur on the 8/L, it is a "different" kind of NOP [no net change in outcome, but the timing is different] so far, so what.
But now do the same for CLA.
7200 is CLA and so is 7600. But on all models OTHER THAN the PDP-8/L 7601 is CLEAR THE AC. On the 8/L it is a NOP and that can be exploited. [See the code above for all the details].
Thus, the Kermit etc. code never screws up. And it adds in the checks for machines newer than FOCAL [which we will excuse it for.]
One thing is totally inexcusable is FOCAL-8. It removes all the model checks AND it is sabotaged ! If found to be running on a DCC-112 competitor machine, FOCAL is made to self-destruct in a nasty way that at a glance suggests a hardware problem.
A very important issue in the FOCAL world is "binary compatibility" for many user-supplied absolute binary patches. FOCAL-8 just throws that away!
Apparently, there was a never-released follow-on to FOCAL, 1969 that didn't work with all of the standard other option packages, so it was shelved.
However, that code was given to Lenny Elekman who modified it into FOCAL12 for DIAL-MS.
I had the source code and studied what was different [other than the obvious PDP-12 part].
Long story short, there is a need for a one word add in the "FOR" command code to fix an obscure bug. Thus, FOCAL-12 has that bug fixed, etc.
Later, this same code was also handed to a newbie, and I "obtained" a very early copy of what he was just starting to trash. It was actually only meaningless lines of comments different from FOCAL, 1969. [Note: I don't really mean lines of comments, I mean comments that were just lines, as in lines of - or lines of * only, etc. to delineate sections. I think he was just trying to superficially understand portions and used that as his personal added "guide" etc.
Long story short, two things that matter happened:
1) You can get the 100% accurate [including comments] source listing of FOCAL, 1969 in a directory nearby the one linked to above.
http://www.ibiblio.org/pub/academic/computer-science/history/pdp-8/FOCL69%20Files/FOCAL69.pdf
2) I implemented the fix in P?S/8 FOCAL and MAINTAIN binary compatibility.
This comes at a small price: the patched version will not run on a PDP-5 or a PDP-8/S.
[Note: As is the case with OS/8, P?S/8 is family of 8 only, so this is moot.]
That patch could be extracted out from P?S/8 FOCAL [1969 with patches].
P?S/8 FOCAL doesn't use the initial dialogue at all because the questions about preserving functions are compressed down to command-line switch options to cover all cases [including one that is not available in the released, FOCAL, 1969 which is what if you want the EXP LOG etc. package but you do not want the SIN/COS. In the paper-tape version, there was no room to implement that extra dialogue, so it was left out. Since I don't use the dialogue I just follow any variation on the two command switches, etc. It's just trivial code relocation, etc.
Thus, I would strongly recommend sticking with FOCAL 1969 and avoiding FOCAL-71, aka "FOCAL-8"..
To make matters much more confusing, the CORRECT manual for FOCAL, 1969 says "FOCAL-8" on the cover!
http://www.ibiblio.org/pub/academic/computer-science/history/pdp-8/FOCL69%20Files/DEC-08-AJAD-D.pdf
cjl