• Please review our updated Terms and Rules here

PDP 11/45, Part 4

Code:
info: <INIT> seen
info: <INIT><INIT> seen, sending <CONT>
info: flag=0x02 last=0xFF
info: getpacket()
02 0A
02 00 00 00 00 00 00 02 0E 00
12 0C
info: opcode=0x02 length=0x0A
info: read unit=0 sw=0x00 mod=0x00 blk=0x000E cnt=0x0200
info: putpacket()
01 80
B7 11 1E 03 37 0A F8 04 C0 11 C0 65 0C 00 12 88 00 88 07 01 3D 01 C0 0B 04 03 C0 61 C0 E5 1C 0C
24 88 C6 1D FC 02 87 00 54 1A D2 1A DA 1A F0 18 24 19 B4 19 0C 1B C8 19 DE 19 30 1A 42 1A A6 1A
8C 1A 22 18 BA 1A CA 1A 68 1A 00 00 53 4D 00 53 4D 49 00 43 4D 49 00 4C 00 53 00 52 00 45 00 43
00 47 4F 54 4F 00 57 41 49 54 00 51 55 49 45 54 00 50 52 49 4E 54 00 45 4E 44 00 51 55 49 54 00
49 16
info: putpacket()
01 80
49 46 4C 4D 44 00 49 46 45 52 52 00 49 46 00 00 01 88 A0 00 C8 8B 28 03 17 A2 3B 00 25 03 57 A0
3A 00 22 03 C4 15 7E FF C4 61 C2 15 9C FF C2 61 03 10 73 A0 FF FF 02 03 D2 A4 FB 03 F2 8B FF FF
07 02 F3 8B FF FF 0C 03 D7 AC FF FF 20 00 08 03 D2 8B FE 02 D4 0B EC 02 C0 15 EA 0C 02 88 04 01
04 13 C4 6D EA 03 CC 09 8F 01 3F 45 52 0D 0A 00 B7 8A 10 04 01 88 15 01 26 10 01 A4 FE 02 F0 95
08 FC
info: putpacket()
01 80
2E 00 FF FF D0 95 42 00 D0 95 49 00 D0 95 43 00 08 8A 80 15 F7 65 04 00 D0 03 01 0A 0C 88 37 8A
E2 03 87 00 F7 09 02 00 15 01 F7 15 01 00 CC 03 F7 15 01 00 9C 03 57 20 2F 00 04 02 1E 88 09 01
37 10 8E 03 09 88 05 01 C0 35 01 00 02 02 37 10 AA 03 87 00 F7 25 01 00 A2 03 00 03 F7 1D 9C 03
9C 03 07 01 F7 25 01 00 94 03 03 02 F7 15 80 00 8C 03 19 88 01 9C 02 00 C1 E5 30 00 5F 90 20 00
7D 72
info: putpacket()
01 80
1F 9C 03 00 21 00 DF 1D 6E 03 18 00 DF 1D 6A 03 1A 00 E6 11 CE 65 4E 01 9F 15 22 00 B7 11 84 01
FF 09 5A 03 C6 1D 7C 01 F7 09 52 01 F7 09 36 02 00 0A 87 00 01 88 87 00 26 10 F7 09 6C FF B7 15
28 03 F7 09 2E FF C6 01 01 88 08 01 20 88 E6 1D 50 01 F7 09 2A FE B7 15 48 01 88 87 00 C2 15 00
50 1C C2 6D EA 02 84 10 01 88 21 01 14 94 01 A2 FD 02 0C 8A F7 8A 19 03 00 88 01 01 04 01 37 0A
7E 0F
info: putpacket()
02 0A
40 00 00 00 00 00 00 02 00 00
42 0C
info: read time=640ms

This is exactly what I would expect to see for each individual 512B block read that is being done. The TU58 transfers data in 128B data packets, so each read of 512B consists of four 128B data packet transfers.

There is an initial command packet from the PDP-11 to the emulator (opcode=0x02) which is a read command. After the read data is passed there is an end packet (opcode=0x40) that indicates a successful read.

In debug mode tu58em will time each command, and 640ms is not out of the ordinary for a slow (9600b) serial link rate.

Don
 
Hi All;

Don, Thank You for Your Responses, And I just Noticed Something, When Looking at the file from Your Link..

My Machine Quits at load '0014 and Yours goes all the way up to something like '0069..
Where as Mine Just Sits there after '0014..

Any Ideas ??

THANK YOU Marty
 
Hi All;

Don, Thank You for Your Responses, And I just Noticed Something, When Looking at the file from Your Link..

My Machine Quits at load '0014 and Yours goes all the way up to something like '0069..
Where as Mine Just Sits there after '0014..

Any Ideas ??

THANK YOU Marty

That will happen if the code that is being loaded 'crashes'. Is your machine still running at that time, or has it halted?

There are numerous possibilities. The .dsk image you are loading may be corrupt (I don't recognize that file name, so it is not from me). The serial interface may be flaky, causing corrupt data download. Your CPU may be flaky, causing incorrect code execution.

So there are a number of possibilities all of which need to be considered, tested individually, and eliminated. Sorry no silver bullet in this one.

After the block zero bootblock is read and downloaded your toggle in boot begins executing it at location zero. It then reads in the monitor image -- the next 31. sequential reads of blocks 0x9 thru 0x27. Control is then transferred to this XXDP monitor memory image to finish booting XXDP.

Don
 
Last edited:
Hi All;

Thank You, Don for Your Response..

"" That will happen if the code that is being loaded 'crashes'. Is your machine still running at that time, or has it halted? ""

Yes, it is running and It always stops at the same place..

"" The .dsk image you are loading may be corrupt (I don't recognize that file name, so it is not from me). ""
Yes, it was Yours, Just Renamed, so it would be next to the other Like named files..

"" After the block zero bootblock is read and downloaded your toggle in boot begins executing it at location zero. ""
I had to stop the machine, and start it at Location 'Zero' ..
"" It then reads in the monitor image -- the next 31. sequential reads of blocks 0x9 thru 0x27. Control is then transferred to this XXDP monitor memory image to finish booting XXDP. ""

Yes, but the Information is very Helpful..

"" The serial interface may be flaky, causing corrupt data download. Your CPU may be flaky, causing incorrect code execution. ""
Yes, I will Look into these Possibilities..

THANK YOU Marty
 
Hi All;

I have been keeping myself out of trouble, I have started to Make a Signal List for the PDP 11/45, like I did for the PDP 11/40..

The Reason for doing this, is two fold, One it needs to be Done, and two, I have a problem in that Lately I have to let the Boards Warm up, Before it will work..
And, so, I had Yesterday Switched out one at a time the Boards that I had more than one of in my collection..
I have Boards 8100 thru 8103, 8104 thru 8106, I don't have any Spares and for the 8107 and 8108 I could pull them and switch to the 8116 SJB Board..
So, I have three 8100 Boards, but only one possible working Board, one Board has bit 12 Address not working, and possibly Data bit 07 not working either..
The other one Doesn't work at all..
So, from the SJB Board I have followed the In's and Out's and from the Front Panel Signals as well..
But, one of the SJB board signals I have not found where it goes to. Even though now I have thought of something, which I will check out..
Anyway, to fix and follow the various signals for the Bad, Data Path Board, I needed to make this Signal List, especially for bits 07 and bit 12.. And since I am doing those bits, I figured I may as well do the whole thing..
I will do the SBJ Board and the PDR page and the UBC page for completeness for now..
Eventually, I will do everything..
This way I will (hopefully) have at least two Data Path Boards.. And at the same time Narrowing down, the list of things to check that Don Suggested..

I have copied the Data Path pages, the SBJ pages, the PDR pages which are all done and started on the UBC pages..

THANK YOU Marty
 
Last edited:
Hi All;


I have copied the Data Path pages, the SBJ pages, the PDR pages which are all done and started on the UBC pages..

I have finished pages for the UBC, and checked the pages for the PDR and the UBC on the signals that I didn't have any names for..

So, now, I can follow the Signal Path for bit 12 from the Switch Register bit 12 to the Led bit 12..

And then check each of the Serial cards for trouble, either warming up and / or for booting problem..

I have a very crude Schematic for the Data Paths Board for Bit 12, But it will show me where the problem is on the Data Paths Board, as I follow the Signal coming in from the Switch to the Output Led.. With Scope..

It looks like E54, pin 7 is Not Responding as it should, I will put in a Machine Socket and Test it with another Part..
Replaced it, but that didn't fix it, I will look into it tomorrow..

I am going to copy what I see on the Scope to paper and Compare the Good Board to the Bad Board..
Also, I am going to use my Pulser to make sure that on the two 74S153's Not only is the Output Correct, But, that the Decoding is the Same.. Since, having just thought of this that If the Decoding was/is wrong, then the wrong Input would show up on the Output, and then on E54, pin 7 would not look correct, which is what I Saw Yesterday, and Replacing the Part made No Difference..

After doing some more Tracing, I found that there IS a small output ,, to the PCA, and then it's output to the PCB (74S174's), and the OUTPUT from E70, pin 7, is Always High, it's input pin 6 changes to the Switch Setting..
Which this time points to E 70, I also have checked pin 9, it's clock which is Fine..
E 70 now Works, since replacing it, but the Bit is still stuck as a low on the Output.. I guess, I can use my pulser and find out who or what or where the problem may be..
It seems to work, now Once it warms up, So it did Not fix the Original problem, but the Board is working, so I now have a spare..

THANK YOU Marty
 
Last edited:
Hi All;

I have run with the main M7800 Serial Board, over 3000 (Octal) passes of Don's ZZ program, And I have converted the other Serial Board, an M7856, as the main Serial Board..
I have taken out the M7800 and put in the M7856 board and I am running it Now, If it passes over 3000 Octal runs, Then I know that my problem is in one of the last of the three Processor Boards, M8104, M8105 or M8106, (PDR, TMC or UBC)..
Of which I have No Spares..
I also come to think of it, have Not checked out the M8109 Timing Board.. This I have a Spare, but need to check out If it is any Good or not..
The other Timing Board is No Good !!
While typing this it has run over 1000 passes (Octal).. It made it past 3000 octal passes..

THANK YOU Marty
 
Last edited:
Hi All;

I have Tried to Run PDP11GUI and I DON'T know how to Set it up for a PDP 11/45, or for a Real 11/45..
I Don't see anything in the PDP11.ini file where it say Set CPU type to xx/xx..
I have also looked in the Cpu.module file, and nothing there either, that I can see..

I maybe got it to Work, as It did Display my ODT type of display, and I am able to Type in Characters..
And it Looks like I will need to get another USB to Serial Converter, to make this work with the TU58 as well..
I found that after Rebooting it did/would see my machine..

THANK YOU Marty
 
Last edited:
It depend on what Boot terminator you insert. M9301 or M9312. Choose one of those even though you don't have exactly the matching CPU model.
 
Hi All;

MattisLind, I saw that and did that, Maybe that was how is suddenly started to work..

I am on my way down to Radio Shack to get a Second USB to serial Converter, for TU58 emulation..

THANK YOU Marty
 
Hi All;

How do I use PDPGUI to load from a tu58 ??

Also, is my second USB to serial port (TU58) connected to this same machine or to a different one ??

And If to a different one do I have PDPGUi connected to it as well ?? Or something else like TeraTerm ??
This is all very confusing..

THANK YOU Marty
 
Hi All;

How do I use PDPGUI to load from a tu58 ??

Also, is my second USB to serial port (TU58) connected to this same machine or to a different one ??

And If to a different one do I have PDPGUi connected to it as well ?? Or something else like TeraTerm ??
This is all very confusing..

THANK YOU Marty

As to serial connections for TU58EM, they can both go to the same PC; that is what I typically do. Launch TeraTerm and connect to the serial console on the PDP-11 DL11, and you connect to the M9312 console emulator. Launch TU58EM (in a cygwin command window, for example) and connect it to the second DL11 in your PDP11 that is at the (17)776500 controller address. Then I type 'DD0' in the console emulator to cause the M9312 tu run the 'DD' boot prom.

Assuming you don't have the DD boot prom in the M9312, but you do have some kind of soft console that PDP11GUI can connect to (either an M9301 or M9312) you could setup PDP11GUI to download the TU58 toggle in bootstrap and run it (emulating more or less what the M9312 'DD' boot prom does). This should then boot the TU58 image via TU58EM.

As I said I do the first scenario all the time on my PDP-11/34+M9312+DDprom, and on my PDP11-44+DDprom. In the 11/34 I have a second DL11-W configured at 776500. On the 11/44 I use the integrated second serial port (at 776500) that is there to support the integrated TU58 drives.

I have not tried the second scenario myself but conceptually see no reason why it should not work, assuming you have a compatible serial console emulator on your PDP-11.

Don
 
Hi All;

Thank You, Don for Your 'Help' and Explanation..

I will copy this down on Paper and try it in the Morning..

I will switch it to an M9301 and try it as You have Suggested..

"" you could setup PDP11GUI to download the TU58 toggle in bootstrap and run it (emulating more or less what the M9312 'DD' boot prom does). ""

I am not sure where to get or find this in the PDP11GUI, which is part of my Question.. I assume it's there somewhere..

ReReading this I think I Understand, it's late and I think I will better Understand what You have written in the Morning..

THANK YOU Marty
 
Last edited:
you could setup PDP11GUI to download the TU58 toggle in bootstrap and run it (emulating more or less what the M9312 'DD' boot prom does).
I am not sure where to get or find this in the PDP11GUI, which is part of my Question.. I assume it's there somewhere..

I don't know that PDP11GUI supports booting from a TU58 directly. I was referring to having PDP11GUI download a .bin file that contains the toggle-in TU58 bootstrap code. You would have to generate a .mac file and assemble it to a .bin using PDP11GUI (I think it has macro11 capability in it) or else use command line macro11 and dumpobj to build the .bin directly.

You should be able to copy this file: http://ak6dn.dyndns.org/PDP-11/M9312/23-765B9/23-765B9.mac which is the M9312 'DD' TU58 device bootstrap. You will need to edit the line after the .ASECT to change the base address from 173000 (which is in the I/O page) to something like 100000 instead, and then start it at the 'dd0n' entry point (eg, 100004 or base+4).

Don
 
Last edited:
Hi All;

Thank You, Don for the Added Help and Explanation.. I needed that..

"" You should be able to copy this file: http://ak6dn.dyndns.org/PDP-11/M9312...9/23-765B9.mac which is the M9312 'DD' TU58 device bootstrap. You will need to edit the line after the .ASECT to change the base address from 173000 (which is in the I/O page) to something like 100000 instead, and then start it at the 'dd0n' entry point (eg, 100004 or base+4). ""

I had tried to assemble it before, and It didn't work, because, I had forgotten to relocate it below the I/O page section..

I also noted before that You had typed 'DD0' , I had forgotten or not noticed to type in the '0' in Both my 'DD' and 'TT' commands.. So, Thank You, that (I'm sure) helps..

Also, the other day after I had entered in (Typed) the code for the Basic Address Test Memory program (Counting Down), that the Listing that You showed had all the comments and Everything..
So, Did You get it from Somewhere Else, and just copy it in, saving all of that typing ??
What was the process that You used to get and possibly copy the Various PDP 11/45 Programs ??
And that would save Me alot of typing..
I am really Interested in the Logic checking programs, since I still am NOT convinced that all of my machine is 'A-OK'..
Did You use Simh to make a create the necessary .bin files ??
Thank You !!

THANK YOU Marty
 
Last edited:
Hi All;

I am getting the following Error, and I don't Know why, as what I am using IS a USB to Serial Converter, and not Parallel or something else..
I have a Keyspan 19HS on one USB Port and a Gigaware 2603487 (Radio Shack) on the other USB Port..

Marty@Marty-PC /simh-master/bin
$ ./tu58em -p 5 -s 9600 -v -r 11xxdp.dsk
info: unit 0 r file '11xxdp.dsk'
info: serial port 5 at 9600 baud
FATAL: stdin not a serial device

Marty@Marty-PC /simh-master/bin

I had an Idea, and I am updating any Cgywin USb files, and I will see if that Helps..
No, it made No difference..

I even tried..

Marty@Marty-PC /simh-master/bin
$ ./tu58em -p /dev/ttyS4 -s 9600 -v -r 11xxdp.dsk
info: unit 0 r file '11xxdp.dsk'
info: serial port /dev/ttyS4 at 9600 baud
FATAL: stdin not a serial device

Any Ideas as to why this is happening ??
And what I could do to make this right or correct..

I am running cygwin64, But when I try and run cygwin 32, the program (tu58em) acts like I am just giving it a CR and not with any -options.. I have deleted cygwin32, and Reloaded it and that did not fix it..
I have Reloaded cygwin64 and there was no change there either..
I am on a ASUS 5290 desktop machine, with I think an I5 or I7 core.. So it should be plenty of computing power there..

THANK YOU Marty
 
Last edited:
Also, the other day after I had entered in (Typed) the code for the Basic Address Test Memory program (Counting Down), that the Listing that You showed had all the comments and Everything..
So, Did You get it from Somewhere Else, and just copy it in, saving all of that typing ??
What was the process that You used to get and possibly copy the Various PDP 11/45 Programs ??
And that would save Me alot of typing..
I am really Interested in the Logic checking programs, since I still am NOT convinced that all of my machine is 'A-OK'..
Did You use Simh to make a create the necessary .bin files ??

I recall that the M9312 boot proms will default to unit 0 if you type just the two letter acronym (like 'DD') rather than three (like 'DD0'). Of course to boot other than unit zero you need to include the numeric unit number.

For the M9312 the source was the DEC diagnostic printout which included the assembled ROM listings plus comments; so rather than try and do any fancy OCR on the PDF files I just read and transcribed the comments. For the code, I actually wrote a dissassembler (in perl) that read the binary ROM image files and produced usable .mac source files (which I then updated manually with comments). So it was partially automated.

I then use the CYGWIN version of the macro11/dumpobj flow to reproduce .bin program files. For reproducing the PROM image files from source I have a perl program which reads .obj files (like dumpobj) but produces PROM images files (instead of .bin) because it is embedded with the knowledge of how to encode the M9312 bootstrap and console PROM files.

SIMH was not directly involved per se in this effort as you can't directly plug M9312 PROM images into it (at least as it currently stands; one could certainly make a version/upgrade to SIMH that allows this feature).

Don
 
Hi All;

I am getting the following Error, and I don't Know why, as what I am using IS a USB to Serial Converter, and not Parallel or something else..
I have a Keyspan 19HS on one USB Port and a Gigaware 2603487 (Radio Shack) on the other USB Port..

Marty@Marty-PC /simh-master/bin
$ ./tu58em -p 5 -s 9600 -v -r 11xxdp.dsk
info: unit 0 r file '11xxdp.dsk'
info: serial port 5 at 9600 baud
FATAL: stdin not a serial device

Marty@Marty-PC /simh-master/bin

I had an Idea, and I am updating any Cgywin USb files, and I will see if that Helps..
No, it made No difference..

I even tried..

Marty@Marty-PC /simh-master/bin
$ ./tu58em -p /dev/ttyS4 -s 9600 -v -r 11xxdp.dsk
info: unit 0 r file '11xxdp.dsk'
info: serial port /dev/ttyS4 at 9600 baud
FATAL: stdin not a serial device

Any Ideas as to why this is happening ??
And what I could do to make this right or correct..

I am running cygwin64, But when I try and run cygwin 32, the program (tu58em) acts like I am just giving it a CR and not with any -options.. I have deleted cygwin32, and Reloaded it and that did not fix it..
I have Reloaded cygwin64 and there was no change there either..
I am on a ASUS 5290 desktop machine, with I think an I5 or I7 core.. So it should be plenty of computing power there..

THANK YOU Marty

My first question on your USB serial converters is do they work with a standard Windows terminal program like TeraTerm or HyperTerm? Can you select that COM port as a serial connection and use it successfully (ie, via a loopback plug, or cross connect with another serial port)? If it doesn't work in TeraTerm then it likely won't work in CYGWIN.

CYGWIN will detect windows serial ports automatically and build entries in it's /dev directory, so if it is a valid serial port to windows (ie, like COM4) then an entry like /dev/ttyS3 should exist in the CYGWIN /dev directory. NOTE the change in numbering; windows will number the COM ports starting with 1; ie, COM1, COM2, etc. CYGWIN numbers serial ports starting with 0 (like unix), so they would be /dev/ttyS0, /dev/ttyS1, etc. So Windows COM3 would be mapped as seriial /dev/ttyS2 in CYGWIN. However, from TU58EMs perspective you should just use the '-p N' nomenclature where N corresponds to the Windows COM port number.

I use 32b CYGWIN on both my old 32b WinXP system (a P4 pentium) and on my 64b Win7 desktop system. Same compiled TU58EM binary .exe image file runs in both environments from the CYGWIN command line. I do NOT use 64b CYGWIN on my 64b Win7 desktop (I could) but as of now I have no benefit to do so, and a lot of drawbacks.
 
Last edited:
Hi All;

Thank You, Don for Your responses..

"" My first question on your USB serial converters is do they work with a standard Windows terminal program like TeraTerm or HyperTerm? Can you select that COM port as a serial connection and use it successfully (ie, via a loopback plug, or cross connect with another serial port)? If it doesn't work in TeraTerm then it likely won't work in CYGWIN. ""

I know at least one of them did, But tomorrow, I will check them Both out for Sure, and get back to You..
I will also check the /Dev Directory..

"" NOTE the change in numbering; windows will number the COM ports starting with 1; ie, COM1, COM2, etc. CYGWIN numbers serial ports starting with 0 (like unix), so they would be /dev/ttyS0, /dev/ttyS1, etc. So Windows COM3 would be mapped as serial /dev/ttyS2 in CYGWIN. However, from TU58EMs perspective you should just use the '-p N' nomenclature where N corresponds to the Windows COM port number. ""

Yes, this I knew from my Searching for an answer to my problem, as to why it didn't work..

"" I use 32b CYGWIN on both my old 32b WinXP system (a P4 pentium) and on my 64b Win7 desktop system. Same compiled TU58EM binary .exe image file runs in both environments from the CYGWIN command line. I do NOT use 64b CYGWIN on my 64b Win7 desktop (I could) but as of now I have no benefit to do so, and a lot of drawbacks. ""

Which is what I would have thought, that the file would work in either environment..
So, tomorrow I will let You know the Outcome, early in the Morning..

THANK YOU for Your Help.. Marty
 
Marty@Marty-PC /simh-master/bin
$ ./tu58em -p 5 -s 9600 -v -r 11xxdp.dsk
info: unit 0 r file '11xxdp.dsk'
info: serial port 5 at 9600 baud
FATAL: stdin not a serial device

I went back to the tu58em source files and this error is thrown if the tcgetattr(fileno(stdin), ...) call fails. So this error is NOT related to the USB/serial device you are using for the serial TU58 emulation link, but rather the characteristics of the command line window you are using to run the TU58 command. I don't see this error when using a standard CYGWIN window on my systems (in fact I never have). This fatal error is thrown if the tcgetattr() call fails on stdin, just in case. I have never seen this happen before.

So what command line environment are you using to launch TU58EM? Is it a CYGWIN terminal window, or an MSDOS CMD window, or something else?

Don

Code:
//
// set console line parameters
//
void coninit (void)
{
    struct termios cons;

[B]    // get current console parameters
    if (tcgetattr(fileno(stdin), &consSave))
	fatal("stdin not a serial device");[/B]

    // copy modes
    cons = consSave;

    // set new modes
    cons.c_lflag &= ~( ICANON | ECHO );

    // now set param
    tcflush(fileno(stdin), TCIFLUSH);
    tcsetattr(fileno(stdin), TCSANOW, &cons);

    // set non-blocking reads
    if (fcntl(fileno(stdin), F_SETFL, FNDELAY) == -1)
	error("stdin failed to set non-blocking read");

    return;
}
 
Back
Top