• Please review our updated Terms and Rules here

PDP 11/45, Part 4

Hi All;

Dave, Thank You.. Sharp Eyes, as well..
"" There is something not quite right after the STAR is printed. You seem to have TPB and TPB. The original listing had a TPB and a TPS. ""
I am going to look into it..
But, it is getting closer..

"" There may also be something not quite right with the bit of code you commented out as well - ""
That is for the TU58 Monitor, or something like that, A monitor that I don't have..
So, I have to just skip over it..

THANK YOU Marty
 
Hi All;

Dave, Thank You.. Sharp Eyes, as well..
"" There is something not quite right after the STAR is printed. You seem to have TPB and TPB. The original listing had a TPB and a TPS. ""
I am going to look into it..
But, it is getting closer..

"" There may also be something not quite right with the bit of code you commented out as well - ""
That is for the TU58 Monitor, or something like that, A monitor that I don't have..
So, I have to just skip over it..

THANK YOU Marty

You should be testing TPS (console tty status register) instead of TPB (console tty data register) in that instruction.

The other commented out code is inserted for DEC's old ACT (automated computer test) environment they used in manufacturing, and then later also served to allow the diagnostic to run one pass and then return to the resident XXDP monitor, allowing for chaining diagnositcs from the command line under XXDP. This is indicated (by convention) in images with the .BIC (binary chainable) extension vs plain .BIN (binary) images, which can just be loaded and run, but not chained.
 
Hi All;

Don, Thank You for You comments..
"" The other commented out code is inserted for DEC's old ACT (automated computer test) environment they used in manufacturing, ""
I Could use One of those Right now !!!
I don't Suppose that anyone from there or that time would have saved a set of Schematics for same (Automated Computer Test)..
I did find another Typo, besides what Dave Found, Not only did I not have TPS, but my Jump was the wrong way I had .+4 and it should have been .-4..

The END part of the Program was copied from another program, Which I need to check as well..

Also, awhile ago I had a Power out for about 5 to 10 Seconds, and it wiped out the PDP 11/45, and that gave me the Excuse to Re-build and Reload everything..
So, right now it is running the Rebuilt (after finding the above problems) code..
I have like Before One Star and I am Waiting for a Second (That way I know it's functioning correctly) Star..
I have SIX Stars !!!
For some reason, or so it seems, it takes alot longer to go through the Second and following Passes.. It takes about forty five minutes per pass..

I am Re-Running Reg Test, reg-11-45b.bic,
I have SIX Stars.. It takes about 12 minutes per pass..

I do not look forward to typing in the States Test..
But, for some reason it seems to be the only way for the Tests that this machine has Failed to be able to Pass..
I am not sure what this means or is about..

On a different Note, I put back in the Memory Management Boards, in which I had Socketed the 74S05 in the SSR M8108 Board..
That way I could get away from having Tape on the Fingers..
But, it didn't matter whether the 74S05 was in place or pulled, I Couldn't get the Console ODT to come on, like before only with the tape in place..

THANK YOU Marty
 
Last edited:
Hi All;

I will be away for some to all of the Day, So, I won't be doing much work on the 11/45..

I have made some changes to the code Per Don from a Private Message..

And it is Running on the Machine at present.. No problems..

THANK YOU Marty
 
Good Morning Marty,

Ah - so it should have been a negative jump. That was what I was a bit confused about - because a branch of +4 put it off the end of the program...

All sorted now then? A 'Milky Way' of stars...

I will be away until Friday now - but I will have a think about your Memory Management issues and see what I can come up with in the form of tests.

I assume you have tried the obvious by writing to and reading from the memory mapping registers themselves with the front panel to see if they are working correctly?

Dave
 
Hi All;

Dave, Thanks for Your Helpful comments..

"" I assume you have tried the obvious by writing to and reading from the memory mapping registers themselves with the front panel to see if they are working correctly? ""

Actually, No..
Since it causes bits 8 and 9 to Always be on, my Thinking was to (if I can) follow the signal, with a pulser back from the 74S05 that has been Pulled.. And see If I can find the culprit or the (7489 or is it 74189) Scratch Ram, once I have it pointing to something like that..
Then most likely I will NEED Your Help at figuring out if that particular part is good or if it is Bad or if it is further back in the chain of things..
I will keep You posted on the progress of things..
The starting point or You may say the ending point to the other Boards is, on Page 9 of the Sys Status Register Schematic signals, Bus Intd 08 and 09, E41 (74S05) pin 6 for bit 08 and pin 8 for bit 09.. Fingers BU2 and BU1..

THANK YOU Marty
 
Last edited:
Hi All;

I'm home, I am going to try and start typing the States program..

I have the pre-tests typed in, and I am going to copy it to the real machine and see if it will run..

Last night I couldn't get the Stars to print, and so I reduced it to the Bare minimum and then it worked, Stars as fast as it would type them out..
So, today, I am taking that same listing and copying it and renaming it, and where I had it commented out, I an uncommenting a line or two at a time, until the Stars disappear again, and then I will know where the problem code is located..
So, I have States, which failed, and now I have States1 which printed Stars, and States2 and States3 which should be like (plain) States..
OK, States3 now passes, I have a screen full of stars..I think the difference was which set of .directives the origional States was processed under..

Statest0-Statest3 have been typed in, and saved, next I will built them and then copy them over and test them on the real machine..
All Statest0-Statest3 pass SIX Stars, and all take awhile longer to go between Stars than the previous test..

Only about 115 more Tests to go !!

I have Statest4-Statest11 typed in, and saved, next I will built them and then copy them over and test them on the real machine..

On Test Statest4 I get the following Error, from the Assembler --
statest4.mac:190: ***ERROR Instruction requires simple literal operand
190 001352 104400 TRAP
Yet it is putting out the correct code, according to the listing..

And it seems to be ok for the obj to bin conversion..

What does it Want ??

One thing I did learn, was that If or maybe when I made a typing mistake it would show up in all of the following copies..
Thereby all of them had to be corrected..

THANK YOU Marty
 
Last edited:
Hi All;

Here is what I have typed out for Statest5 Test, I cannot copy the origional PDF Listing, So You would need to get from BitSavers if You don't have it for comparison..

The Program fails at addresss '001560, which is a comparison and I have checked the code and downloaded a Memory dump and it show that what it expects is there.. Address '000474 shows '001532, which is exactly what, (If I am reading the code correctly) should be there.. So, I am not sure 'Why' it is failing..

T5: SCOPE
MOV #KPTR,KSP ;SET KERNEL STACK POINTER
MOV #T5A,@#IOTVEC ;SET IOT TRAP VECTOR
CLR IOTVEC-2 ;KERNEL MODE AFTER IOT
MOV #UM+PSM+PRTY7,@#PSW ;USER MODE
MOV #UPTR,USP ;SET USER STACK POINTER
SCC ;PRESET CONDITION CODES
IOT ;TRAP USER MODE TO KERNEL MODE
T5AA: CLR @#PSW ;KERNEL MODE
HLT ;ERROR! FAILED TO TRAP
T5A: MOV @#PSW,R0 ;SAVE STATUS
CLR @#PSW ;KERNEL MODE
CMP #KM+PUM,R0 ;CHECK STATUS AFTER IOT
BEQ .+4
HLT ;ERROR! INCORRECT STATUS AFTER IOT
CMP #T5AA,KPTR-4 ;CHECK KERNEL STACK POINTER
BEQ .+4
HLT
CMP #UM+PSM+PRTY7+17,KPTR-2 ;CHECK STATUS ON IOT
BEQ .+4
HLT ;ERROR! INCORRECT STATUS SAVED ON STACK
CMP #KPTR-4,KSP ;AFTER IOT <-------------------------1560
BEQ .+4
HLT ;CHECK RETURN PC SAVED ON STACK
MOV #UM,@#PSW ;USER MODE
MOV USP,R0
CLR @#PSW ;KERNEL MODE
CMP #UPTR,R0 ;CHECK THAT USER STACK POINTER
BEQ .+4 ;WAS NOT AFFECTED BY IOT TRAP
HLT ;ERROR! USP WAS CHANGED TO IOT
MOV #IOTVEC+2,@#IOTVEC

I just had a thought, maybe it is failing the Previous Instruction


THANK YOU Marty
 
Last edited:
On Test Statest4 I get the following Error, from the Assembler --
statest4.mac:190: ***ERROR Instruction requires simple literal operand
190 001352 104400 TRAP
Yet it is putting out the correct code, according to the listing..

And it seems to be ok for the obj to bin conversion..

What does it Want ??

THANK YOU Marty

The EMT and TRAP instructions have a byte value 0..377(8) in the low byte of the opcode, so macro11 is being a bit anal and requiring you to type:
Code:
[B]TRAP  0[/B]
instead of just:
Code:
 [B]TRAP    [/B]
with no argument.

Don
 
Hi All;

Thank You, Don, for Your Help and Answer..

OK, I will change the code..

I also, I did a look at the released code and in the area that I am having trouble and it is the same as what I have Octal wise, anyway..
But, it is interesting that in the official released code that the lower part of the code has the .+2, halt, .+2, halt sequence, and the earlier listing does not have that in it..

I Just Ran the Official States code and it Stops at Exactly the same Place, So I would guess somewhere in that Area, I have a Problem..

THANK YOU Marty
 
Last edited:
Code:
    cmp   #um+[COLOR="#FF0000"]psm[/COLOR]+prty7+17,kptr-2  ;check status on iot
    beq   .+4
    hlt                            ;error! Incorrect status saved on stack
    cmp   #kptr-4,ksp              ;after iot <-------------------------1560

Looking at the compare that fails, the 'psm' terms seems wrong to me (previous supervisor mode?) but should it be 'pum' (... user ...) instead?
Just guessing, cause I don't know the definitions of PUM, PSM, PKM, etc.

Would be interesting to know what is in location 'kptr-2' and what 'um+psm+prty7+17' evaluates to ...

Don
 
Hi All;

Don, Thank You for Your Evaluation..

Actually, from looking at failure.. It would seem that You would be correct..
BUT, having Looked at Both the PDF file and the 'Official code'..
They have '030000, and PUM would be'010000 and I think it would Pass.. (I think)
I will try it, and let You know..

""Looking at the compare that fails, the 'psm' terms seems wrong to me (previous supervisor mode?) but should it be 'pum' (... user ...) instead?
Just guessing, cause I don't know the definitions of PUM, PSM, PKM, etc. ""

UM=140000 ;USER MODE
IM=100000 ;ILLEGAL MODE
SM=040000 ;SUPERVISOR MODE
KM=0 ;KERNEL MODE
PUM=030000 ;PREVIOUS USER MODE
PSM=010000 ;PREVIOUS SUPERVISOR MODE
PKM=0 ;PREVIOUS KERNEL MODE

My answer on this is above..

"" Would be interesting to know what is in location 'kptr-2' and what 'um+psm+prty7+17' evaluates to ... ""

Actually, I have Looked at Both Places and the Octal Code is Exactly what is supposed to be there..
'kptr-2' is '150357 and 'um+psm+prty7+17' is the same..

Changing Address '001552 from 030000 to '010000 , Now makes it so it will PASS !! Ten STARS..

Changing the 'Official code to the same thing, makes it go past there..
It now hangs at '001742, I will look that up next.. That is in Test 6A, which I have typed in..
But, test 5 has a typo mistake that I need to correct and change the '030000 to '010000 before going to test 6 and its problems..

As, Don would say onward and upward, or in this case onward and downward thru the code..

THANK YOU Marty
 
Last edited:
Hi All;

I had a scare today, I turned it on and it didn't work right.. Even after a long time of warming it up, which it sometimes needs..
It was the GRA Board, or so it seems..
So now back to getting States Test 6 to Pass, upon examination of the Ram from PDPGUI Dump it look like it may be the same kind of problem..
So, I will look at the code and see if I can figure out what is needed to make it pass..

No it doesn't make sense to me as to where it gets the information from and so why the compare fails.. It fails at '001742..
Where is R0 being written into for the compare to work ?? Or is it further back in the code than this ??

252 001646 010701 T6: SCOPE
253 001650 012737 001720 000030 MOV #T6A,@#EMTVEC ;SET EMT TRAP VECTOR
254 001656 012737 040000 000032 MOV #SM,@#EMTVEC+2 ;SUPER MODE AFTER EMT
255 001664 012737 044000 177776 MOV #SM+REG,@#PSW ;SUPER MODE
256 001672 012706 000600 MOV #SPTR,SSP ;SET SUPER STACK POINTER
257 001676 012737 144000 177776 MOV #UM+REG,@#PSW ;USER MODE
258 001704 012706 000700 MOV #UPTR,USP ;SET USER STACK POINTER
259 001710 104000 EMT ;TRAP USER TO SUPERVISOR
260 001712 005037 177776 T6AA: CLR @#PSW ;
261 001716 000000 HLT
262 001720 013700 177776 T6A: MOV @#PSW,R0 ;SAVE STATUS AFTER EMT TRAP
263 001724 010602 MOV SSP,R2 ;SAVE SUPER STACK POINTER
264 001726 005037 177776 CLR @#PSW ;KERNEL MODE
265 001732 022700 070000 CMP #SM+PUM,R0 ;CHECK STATUS AFTER EMT TRAP
266 001736 001401 BEQ .+4
267 001740 000000 HLT ;ERROR! INCORRECT STATUS AFTER EMT TRAP
268 001742 022767 001712 000574' CMP #T6AA,SPTR-4 ;CHECK RETURN PC ON SUPER STACK
269 001750 001401 BEQ .+4
270 001752 000000 HLT ;ERROR ! INCORRECT RETURN PC ON SUPER STACK AFTER EMT
271 001754 022767 144000 000576' CMP #UM+REG,SPTR-2 ;CHECK STATUS SAVED ON SUPER STACK
272 001762 001401 BEQ .+4
273 001764 000000 HLT ;ERROR! INCORRECT STATUS SAVED ON STACK HALT
274 001766 022702 000600 CMP #SPTR,R2 ;CHECK SUPER STACK POINTER AFTER EMT
275 001772 001401 BEQ .+4
276 001774 000000 HLT ;ERROR! INCORRECT SSP AFTER EMT TRAP
277 001776 012737 140000 177776 MOV #UM,@#PSW ;USER MODE
278 002004 010600 MOV USP,R0 ;SAVE USER STACK POINTER
279 002006 005037 177776 CLR @#PSW ;KERNEL MODE
280 002012 022700 000700 CMP #UPTR,R0 ;CHECK THAT USP WAS NOT CHANGED ON TRAP
281 002016 001401 BEQ .+4
282 002020 000000 HLT ;ERROR! INCORRECT USP AFTER EMT TRAP
283

Right after running the Program, I checked R0 and it had a '050000 in it.. So, if I change the code at '1732 to CMP #SM+PSM,R0, it should pass..

It Now Stops at '001776, I found another typo, CMP #SPTR,R2 ;CHECK SUPER STACK POINTER AFTER EMT,
should be #SPTR-4,R2..

By changing the code I got it to Pass..
But, this GRA Board, now doesn't work, either Temperature problem.. So, I can go back to the other one, since it has sat on the shelf, and see if it is any better.. Otherwise I have two Bad GRA Boards..

OK, I went to the previous GRA board and it is running just fine, now..
I changed the code with PDPGUI at the two locations, I changed address '001734 from 070000 to '050000, and I changed address 001770 from '000600 to '000574 and it now Runs with Eight Stars, before the machine Quit Again..

Well, I have started to wire up My MACT (Manually Actuated Component Tester), since I do Not have one of Don's ACT's.. Except for Power and Ground, it will have an Led (thru a Driver) and a Switch to each Line in a DEC Hex Board, for Testing Purposes..
I got my first Led wired up, which is a power Led, but I check it and Everything is in the right direction, so I can continue with the Signal Led's and switches..

I just Realized, DUH, I have Only half of the Switches and Led's that I need.. Good thing I realized this sort of Early, before I had the whole board wired up..

001.jpg


I just got a reprint of John Lions Book "Lions' Commentary on Unix 6th Edition".
I figured this would be a good addition for my 11/45, Now I just need to get the 11/45 running good enough to put what is in this Book in the Machine..

THANK YOU Marty
 
Last edited:
Hi All;

Pbirkel, Thank You for the Link..

I had found Yesterday a different link to essentially the same information..
I am much interested in the version six and the previous versions which were written before "C" in Assembly..
I am not a "C" person, much of it I don't understand, and Assembly is much better for me to follow..
So, I can put much of John's notes and Listings in Assembly in my 11/45 and directly see how a section of code works..
So, Thank You very much for the Link..

Now, to get the 11/45 working Good enough to do the above..

THANK YOU Marty
 
Correct me if I am wrong - but isn't the large majority of the code referenced by John's book written in 'C' and not assembly? Most of Unix V6 is 'C' from what I remember (and have looked up at http://minnie.tuhs.org/cgi-bin/utree.pl?file=V6 (under usr/source)). Incidentally, there is an 11/45 configuration file under /usr/sys/conf/m45.s.

The drawback is - you need a UNIX O/S and a 'C' compiler / assembler to compile and assemble the source to make a version for your hardware. I feel a use for SIMH here...

For 'C' compiler read 'high level assembler' and you won't go far wrong...

My business trip went well this week - so I am a good mood! I shall give the company a ring tomorrow morning that was supposed to be getting me some mains cable for my power supplies and (hopefully) I can pick it up and start back on my H742 refurbishment...

Now you remember what you started last time you posted a reference to a PDP-8 book don't you!

Dave
 
Hi All;

Dave, Thank You for Your Input..

"" Correct me if I am wrong - but isn't the large majority of the code referenced by John's book written in 'C' and not assembly? Most of Unix V6 is 'C' from what I remember (and have looked up at http://minnie.tuhs.org/cgi-bin/utree.pl?file=V6 (under usr/source)). Incidentally, there is an 11/45 configuration file under /usr/sys/conf/m45.s. ""
Yes, it is.. And I knew this.. Which I why I Referenced taking a Look at the Before "C" Versions..
But, Thank You for the Information for the M45.S which is what is Missing, I think from John's Book..

"" The drawback is - you need a UNIX O/S and a 'C' compiler / assembler to compile and assemble the source to make a version for your hardware. I feel a use for SIMH here... ""
Yes, I agree..
"" For 'C' compiler read 'high level assembler' and you won't go far wrong... ""
Hopefully SIMH will have something that I can use..
Please Keep me Advised as to what All I need to do and "HOW" to do it, as we Progress through this latest Adventure..

" My business trip went well this week - so I am a good mood! I shall give the company a ring tomorrow morning that was supposed to be getting me some mains cable for my power supplies and (hopefully) I can pick it up and start back on my H742 refurbishment... ""
I KEEP Hoping You will Soon Tell us that You got Your Cable and can go on to the Next Step..

"" Now you remember what you started last time you posted a reference to a PDP-8 book don't you! ""
Remember, we haven't Finished that one Yet, Either.. It still needs a Second Serial Port to be Wired in and Made to work..
Not to say Anything about the Micro-Coded Version.. You can Blame Bill, for this side Excursion, with the 11/45..

Also, here is a Picture of the Latest version of the MACT that I am Building to (Hopefully) Fix all of the Dead Boards that I have and need fixing..

003.jpg 004.jpg

This is the First of six Sections.. This is only representative of what will be there and not what will be in the final version


THANK YOU Marty
 
Last edited:
Marty,

I have a copy of UNIX V6 running as an 11/45 under SIMH. I downloaded the 'standard' kit from the SIMH website.

I will post a longer description tomorrow evening so you can 'have a go' when I have a bit more time (sleep time in the UK now). It boots and I can use a few commands.

Dave
 
Hi All;

Great Going, Dave..
For now, I will have to run UNIX V6 running as an 11/45 under SIMH. That will have to do until, my real 11/45 is up to it..
Thank You for the Encouragement..

THANK YOU Marty
 
Running stuff on SIMH first would be the best idea anyhow - as I am sure you will find "typo" errors with what you are doing in SIMH faster than on your 11/45. When it 'passes' on SIMH - then try it on your 11/45.

As you know - I am currently 'collecting' documentation and software for the 11/45. I will run it on SIMH first until I get my 11/45 up and running (a long while hence I fear) so I can make sure it works, I know how to use it and I get to know my way around the documentation. It will also give me the opportunity to 'tweak' the software to suite my hardware set-up (for example, I think UNIX V6 may only run with RK05 drives - or with drives I won't have - so a driver enhancement may be necessary). I can better do this under SIMH as I can simulate the RK05 drives until such time as I get (say) an RX01/02 floppy emulator driver working - then I can transfer that to my 11/45 hardware.

Here is what I found regarding UNIX V6 for the 11/45:

Documentation at http://wwwlehre.dhbw-stuttgart.de/~helbig/os/v6/ (specifically http://wwwlehre.dhbw-stuttgart.de/~helbig/os/v6/doc/index.html).

A run.conf configuration file for SIMH can be found at http://www.in-ulm.de/~mascheck/various/ancient/v6.html.

Various websites I found for getting UNIX V6 up and running on a PDP-11 (I haven't used any of them - it just worked - but they may contain useful information in the future):

http://gunkies.org/wiki/Installing_Unix_v6_(PDP-11)_on_SIMH

http://a.papnet.eu/UNIX/v6/installation

I used the disk distribution from the SIMH website (http://simh.trailing-edge.com/software.html) specifically "PDP-11 UNIX V6 with sources (under license provided by Caldera Corporation)."

I just created the "run.conf" file and copied the four (4) disk files "unixn_v6_rk.dsk" (where 'n' is 0, 1, 2 and 3) to a directory and ran the SIMH emulator as "pdp11 run.conf". At the @ prompt type "unix" and login as good old "root" (no password). Don't forget that to change a directory is "chdir" and not "cd" (I keep forgetting). Enjoy...

I managed to pick up some mains cable today of the correct type (hooray)...

Dave
 
Back
Top