...
https://github.com/fjalvingh/tu58fs - branch 1144. A pull request has been added to Jorg’s repo; I need to see if he is willing to accept it.
Preparing for running the emulation
You need two serial ports to do this. First check which serial port connects to the console and which one connects to the tu58 serial port. To connect the tu58 port you might need to create a cable; an example of how that can be done can be found here.
You can do that using minicom and see which of the ports shows the actual console.
In my case the mapping was:
/dev/ttyUSB0 → tu58 serial port
/dev/ttyUSB1 → Console serial port
A second thing to check is the actual bitrate set for the tu58 serial interface on the pdp-11. It should be set to 38400bps but this speed can be changed, and you need the actual speed. One way to test this is as follows (explained by Geert Rolf):
Assume a given speed, and connect to the serial port using Minicom with that speed.
Now enter the following on the PDP-11’s console (using another serial connection or a terminal):
Code Block |
---|
D 17776506 101 |
This puts the code for the letter ‘A' in the transmit register for the tu58 UART. The result should be that an 'A’ is shown on the minicom window. If not, or if the display is scrambled try the process again with a different bitrate until successful.
Once a candidate bitrate is found you can do one more test.
In the tu58 minicom window press the letter uppercase B.
Then enter the following on the PDP-11’s console:
Code Block |
---|
E 17776502 |
This reads the value in the tu58 UART’s receive register, and this should be 102 (the octal for B).
Running and booting from TU58 disk images
You will need tu58 disk image files; these can be found on several places on the Internet. For my case here I needed the XXDP image files. One set can be found here:
https://ak6dn.github.io/PDP-11/TU58/ (AK6DN, Donald North)
To start work the first step is to start the emulator:
Code Block |
---|
sudo ./tu58fs -V -v -p /dev/ttyUSB0 -b 9600 --xxdp \
-d 0 r /home/jal/hobby/MiniMainframes/pdp/geert/tu58xxdp/TU58-15.DSK \
-sd 1 c /home/jal/t/tu58-2 |
This starts the emulator using ttyUSB0 at 9600bps, and uses the TU58-15.DSK disk image as the tape source. The last path in the command assigns a work directory to expand the disk image into; it should probably change whenever you swap disks.
Next step is to use tu58fs to enter the boot loader and start it:
Code Block |
---|
sudo ./tu58fs -p /dev/ttyUSB1 -b 9600 -f 8n1 --boot 1144 |
This should produce the following output:
...
Checking/setting the TU58 interface’s speed
The speed for the TU58 interface is set on the MFM board (M7096) on switch E7:
...
On my machine they were set as follows:
...
which according to the following table:
...
means it was set to 9600bps. Setting it to 38400 did not work, and switching it back to 9600bps now also failed.. Measuring the switch showed that several of the switches failed to make contact, so I decided to replace the switch. Desoldering the thing showed something special:
...
clearly some rework has been done on the board at some time.
I did not have a 7 switch DIP switch so I had to use an 8 switch one and cut of the legs of the 8th switch:
...
I could now switch to 38400bps for the TU58 which helps a lot with load speed of these diagnostics
Preparing for running the emulation
You need two serial ports to do this. First check which serial port connects to the console and which one connects to the tu58 serial port. To connect the tu58 port you might need to create a cable; an example of how that can be done can be found here.
You can do that using minicom and see which of the ports shows the actual console.
In my case the mapping was:
/dev/ttyUSB0 → tu58 serial port
/dev/ttyUSB1 → Console serial port
A second thing to check is the actual bitrate set for the tu58 serial interface on the pdp-11. It should be set to 38400bps but this speed can be changed, and you need the actual speed. One way to test this is as follows (explained by Geert Rolf):
Assume a given speed, and connect to the serial port using Minicom with that speed.
Now enter the following on the PDP-11’s console (using another serial connection or a terminal):
Code Block |
---|
D 17776506 101 |
This puts the code for the letter ‘A' in the transmit register for the tu58 UART. The result should be that an 'A’ is shown on the minicom window. If not, or if the display is scrambled try the process again with a different bitrate until successful.
Once a candidate bitrate is found you can do one more test.
In the tu58 minicom window press the letter uppercase B.
Then enter the following on the PDP-11’s console:
Code Block |
---|
E 17776502 |
This reads the value in the tu58 UART’s receive register, and this should be 102 (the octal for B).
Running and booting from TU58 disk images
You will need tu58 disk image files; these can be found on several places on the Internet. For my case here I needed the XXDP image files. One set can be found here:
https://ak6dn.github.io/PDP-11/TU58/ (AK6DN, Donald North)
To start work the first step is to start the emulator:
Code Block |
---|
sudo ./tu58fs -V -v -p /dev/ttyUSB0 -b 9600 --xxdp \
-d 0 r /home/jal/hobby/MiniMainframes/pdp/geert/tu58xxdp/TU58-15.DSK \
-sd 1 c /home/jal/t/tu58-2 |
This starts the emulator using ttyUSB0 at 9600bps, and uses the TU58-15.DSK disk image as the tape source. The last path in the command assigns a work directory to expand the disk image into; it should probably change whenever you swap disks.
Next step is to use tu58fs to enter the boot loader and start it:
Code Block |
---|
sudo ./tu58fs -p /dev/ttyUSB1 -b 9600 -f 8n1 --boot 1144 |
This should produce the following output:
Code Block |
---|
sudo ./tu58fs -p /dev/ttyUSB1 -b 9600 -f 8n1 --boot 1144
[19:20:26 info] Using serial port /dev/ttyUSB1 at 9600 baud with 8N1 format.
[19:20:26 info] No simulated drives were specified, emulator not started.
?01 SYN?
>>>D 7000 261
>>>D 7002 12700
>>>D 7004 0
>>>D 7006 12701
>>>D 7010 176500
>>>D 7012 12706
>>>D 7014 2000
>>>D 7016 5004
>>>D 7020 5261
>>>D 7022 4
>>>D 7024 5003
>>>D 7026 4767
>>>D 7030 50
>>>D 7032 5061
>>>D 7034 4
>>>D 7036 5761
>>>D 7040 2
>>>D 7042 12703
>>>D 7044 4004
>>>D 7046 4767
>>>D 7050 34
>>>D 7052 10003
>>>D 7054 4767
>>>D 7056 30
>>>D 7060 5003
>>>D 7062 105711
>>>D 7064 100376
>>>D 7066 116123
>>>D 7070 2
>>>D 7072 22703
>>>D 7074 1000
>>>D 7076 101371
>>>D 7100 5007
>>>D 7102 4717
>>>D 7104 4717
>>>D 7106 4717
>>>D 7110 105761
>>>D 7112 4
>>>D 7114 100375
>>>D 7116 110361
>>>D 7120 6
>>>D 7122 303
>>>D 7124 207
>>>
?01 SYN?
>>>S 7000 |
...
so I’m going to assume it’s the same issue (power monitor bit set).
Second round of tests (after switching the PSU)
KKAAB0 (CPU + EIS)
Code Block |
---|
END OF CKKAAB0 11/44 CPU/EIS
END OF CKKAAB0 11/44 CPU/EIS
END OF CKKAAB0 11/44 CPU/EIS
END OF CKKAAB0 11/44 CPU/EIS
END OF CKKAAB0 11/44 CPU/EIS
END OF CKKAAB0 11/44 CPU/EIS |
KKABD1 (Traps)
Code Block |
---|
CKKABD0 11/44 TRAPS
NO FLOATING POINT OPTION PRESENT
NO CIS OPTION PRESENT
END OF CKKABD0 11/44 TRAPS
END OF CKKABD0 11/44 TRAPS |
KKTAB1 (mmu)
Code Block |
---|
CKKTAB 11/44 MEM MGMT PRT A
END PASS # 1 TOTAL ERRORS SINCE LAST REPORT 0
END PASS # 2 TOTAL ERRORS SINCE LAST REPORT 0
END PASS # 3 TOTAL ERRORS SINCE LAST REPORT 0
END PASS # 4 TOTAL ERRORS SINCE LAST REPORT 0
END PASS # 5 TOTAL ERRORS SINCE LAST REPORT 0
END PASS # 6 TOTAL ERRORS SINCE LAST REPORT 0
END PASS # 7 TOTAL ERRORS SINCE LAST REPORT 0 |
KKTBD0 (mmu)
Code Block |
---|
CKKTBD0 11/44 MEM MGMT PRT B
EOP MESSAGES WILL PRINT EVERY 64 PASSES OR ABOUT 11 SECONDS
END PASS # 64
END PASS # 128
END PASS # 192 |
KKUAE0 (ubi, map)
Code Block |
---|
CKKUAE 11/24/44 UBI MAP
DIAGNOSTIC HAS DETERMINED THAT CPU IS AN 11/44
END PASS # 1
END PASS # 2
END PASS # 3
END PASS # 4
END PASS # 5
END PASS # 6 |
KKKA (Cache)
Code Block |
---|
CKKKAC0 11-44 KK11B CACHE
RMI REGISTER (G5179) NOT USED-SKIP HI ORDER BIT ADDRESS TEST
UNIBUS EXERCISER NOT USED- DMA TESTS NOT PERFORMED
END OF PASS # 1
END OF PASS # 2
END OF PASS # 3 |
ZMSP (Memory)
Code Block |
---|
CZMSPC MS11-L/M/P MEMORY DIAGNOSTIC
11/44 CACHE AVAILABLE
CSR MAP
CSR 0 1 2 3 4 5 6 7 8 9 A B C D E F
MEMTYPE P
512K OF MS11-P
512K WORDS OF MEMORY TOTAL
MEMORY CONFIGURATION MAP
16K WORD BANKS
1 2 3 4 5 6 7
012345670123456701234567012345670123456701234567012345670123
ERRORS
INTRLV --------------------------------
MEMTYPE PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
CSR 00000000000000000000000000000000
PROTECT PP
END PASS #QV 1 |
ZM9BE0 (Ubi, bootproms)
Code Block |
---|
CZM9BE0 M9312/1144 UBI BOOT
DIAG. ROM (E20) (FOR 11-44 UBI: E58)C0
BOOTSTRAP ROM ENTRY POINTS AND DEVICE CODES
LOC. NO DIAG. RUN DIAG. DEVICE CODE
ROM 1(E48) 173004 173006 MS
ROM 2(E49) 173204 173206 DL
PSEUDO POWER-FAIL VECTOR ADR./NEW PC 173024 173052
ROM SEQUENCE IS INCORRECT AS PER INSTALLATION PROCEDURE.
SEQUENCE SHOULD BE:
ROM 1(E48) DL
ROM 2(E49) MS
END PASS
END PASS
END PASS
END PASS
END PASS
END PASS |
DL = RL01 / RL02 disk
MS = TS04/TU80/TSU05 tape
ZDLDI0 (mfm, slu)
Code Block |
---|
CZDLDI0 DL11-W 11/44 MFM SLU
02 DEVICES UNDER TEST
TRAP CATCHER
TEST# ERR PC RCSR OLDPC TRAP ADR
000024 014540 176500 007472 000424
CONSOLE
17777707 014544 |
Second run fails too:
Code Block |
---|
CZDLDI0 DL11-W 11/44 MFM SLU
02 DEVICES UNDER TEST
TRAP CATCHER
TEST# ERR PC RCSR OLDPC TRAP ADR
000024 014540 176500 007474 000424
CONSOLE
17777707 014544 |
KFPCD0 (fpu11)
Code Block |
---|
CKFPCD0 FP11F FLTG PNT PRT C
EOP MESSAGE WILL PRINT EVERY 1000 PASSES (15 SECONDS)
HIT ANY KEY TO ENABLE/DISABLE EOP MESSAGES
STEXP AUTO INCREMENTED/DECREMENTED R0 INCORRECTLY
M7095 ECO # 10 MIGHT NOT BE INSTALLED
TEST PC OF CALL STEXP OP CODE EXPCTD RECVED PC OF ERROR
74 040232 175020 040362 040364 040200
STEXP AUTO INCREMENTED/DECREMENTED R0 INCORRECTLY
M7095 ECO # 10 MIGHT NOT BE INSTALLED
TEST PC OF CALL STEXP OP CODE EXPCTD RECVED PC OF ERROR
74 040232 175040 040360 040356 040200
STEXP A,(R) FAILED.
TEST. PC OF CALL. PC OF ERROR. GOT FPS. EXPECTED FPS.
74 040300 040200 040010 040010
AC OPERAND: 123456 076543 177777 177777
GOT RESULT: 123456
EXPECTED RESULT: 177700
STEXP AUTO INCREMENTED/DECREMENTED R0 INCORRECTLY
M7095 ECO # 10 MIGHT NOT BE INSTALLED
TEST PC OF CALL STEXP OP CODE EXPCTD RECVED PC OF ERROR
74 040232 175020 040362 040364 040200
STEXP AUTO INCREMENTED/DECREMENTED R0 INCORRECTLY
M7095 ECO # 10 MIGHT NOT BE INSTALLED
TEST PC OF CALL STEXP OP CODE EXPCTD RECVED PC OF ERROR
74 040232 175040 040360 040356 040200
STEXP A,(R) FAILED.
TEST. PC OF CALL. PC OF ERROR. GOT FPS. EXPECTED FPS.
74 040300 040200 040004 040004
AC OPERAND: 123456 076543 177777 177777
GOT RESULT: 123456
EXPECTED RESULT: 000000
STEXP AUTO INCREMENTED/DECREMENTED R0 INCORRECTLY
M7095 ECO # 10 MIGHT NOT BE INSTALLED
TEST PC OF CALL STEXP OP CODE EXPCTD RECVED PC OF ERROR
74 040232 175020 040362 040364 040200
STEXP AUTO INCREMENTED/DECREMENTED R0 INCORRECTLY
M7095 ECO # 10 MIGHT NOT BE INSTALLED
TEST PC OF CALL STEXP OP CODE EXPCTD RECVED PC OF ERROR
74 040232 175040 040360 040356 040200
STEXP A,(R) FAILED.
TEST. PC OF CALL. PC OF ERROR. GOT FPS. EXPECTED FPS.
74 040300 040200 040000 040000
AC OPERAND: 123456 076543 177777 177777
GOT RESULT: 123456
EXPECTED RESULT: 000001
STEXP AUTO INCREMENTED/DECREMENTED R0 INCORRECTLY
M7095 ECO # 10 MIGHT NOT BE INSTALLED
TEST PC OF CALL STEXP OP CODE EXPCTD RECVED PC OF ERROR
74 040232 175020 040362 040364 040200
STEXP AUTO INCREMENTED/DECREMENTED R0 INCORRECTLY
M7095 ECO # 10 MIGHT NOT BE INSTALLED
TEST PC OF CALL STEXP OP CODE EXPCTD RECVED PC OF ERROR
74 040232 175040 040360 040356 040200
STEXP A,(R) FAILED.
TEST. PC OF CALL. PC OF ERROR. GOT FPS. EXPECTED FPS.
74 040300 040200 040000 040000
AC OPERAND: 123456 076543 177777 177777
GOT RESULT: 123456
EXPECTED RESULT: 000175
STEXP AUTO INCREMENTED/DECREMENTED R0 INCORRECTLY
M7095 ECO # 10 MIGHT NOT BE INSTALLED
TEST PC OF CALL STEXP OP CODE EXPCTD RECVED PC OF ERROR
74 040232 175020 040362 040364 040200
STEXP AUTO INCREMENTED/DECREMENTED R0 INCORRECTLY
M7095 ECO # 10 MIGHT NOT BE INSTALLED
TEST PC OF CALL STEXP OP CODE EXPCTD RECVED PC OF ERROR
74 040232 175040 040360 040356 040200
STEXP A,(R) FAILED.
TEST. PC OF CALL. PC OF ERROR. GOT FPS. EXPECTED FPS.
74 040300 040200 040010 040010
AC OPERAND: 123456 076543 177777 177777
GOT RESULT: 123456
EXPECTED RESULT: 177601
STEXP AUTO INCREMENTED/DECREMENTED R0 INCORRECTLY
M7095 ECO # 10 MIGHT NOT BE INSTALLED
TEST PC OF CALL STEXP OP CODE EXPCTD RECVED PC OF ERROR
74 040232 175020 040362 040370 040200
STEXP AUTO INCREMENTED/DECREMENTED R0 INCORRECTLY
M7095 ECO # 10 MIGHT NOT BE INSTALLED
TEST PC OF CALL STEXP OP CODE EXPCTD RECVED PC OF ERROR
74 040232 175040 040360 040352 040200
STEXP A,(R) FAILED.
TEST. PC OF CALL. PC OF ERROR. GOT FPS. EXPECTED FPS.
74 040300 040200 047710 047710
AC OPERAND: 123456 076543 177777 177777
GOT RESULT: 123456
EXPECTED RESULT: 177756
END PASS # 1 TOTAL ERRORS THIS PASS 22
STEXP AUTO INCREMENTED/DECREMENTED R0 INCORRECTLY
M7095 ECO # 10 MIGHT NOT BE INSTALLED
TEST PC OF CALL STEXP OP CODE EXPCTD RECVED PC OF ERROR
74 040232 175020 040362 040364 040200
STEXP AUTO INCREMENTED/DECREMENTED R0 INCORRECTLY
M7095 ECO # 10 MIGHT NOT BE INSTALLED
TEST PC OF CALL STEXP OP CODE EXPCTD RECVED PC OF ERROR
74 040232 175040 040360 040356 040200
STEXP A,(R) FAILED.
TEST. PC OF CALL. PC OF ERROR. GOT FPS. EXPECTED FPS.
74 040300 040200 040010 040010
AC OPERAND: 123456 076543 177777 177777
GOT RESULT: 123456
EXPECTED RESULT: 177700
STEXP AUTO INCREMENTED/DECREMENTED R0 INCORRECTLY
M7095 ECO # 10 MIGHT NOT BE INSTALLED
TEST PC OF CALL STEXP OP CODE EXPCTD RECVED PC OF ERROR
74 040232 175020 040362 040364 040200
STEXP AUTO INCREMENTED/DECREMENTED R0 INCORRECTLY
M7095 ECO # 10 MIGHT NOT BE INSTALLED
TEST PC OF CALL STEXP OP CODE EXPCTD RECVED PC OF ERROR
74 040232 175040 040360 040356 040200
STEXP A,(R) FAILED.
TEST. PC OF CALL. PC OF ERROR. GOT FPS. EXPECTED FPS.
74 040300 040200 040004 040004
AC OPERAND: 123456 076543 177777 177777
GOT RESULT: 123456
EXPECTED RESULT: 000000
STEXP AUTO INCREMENTED/DECREMENTED R0 INCORRECTLY
M7095 ECO # 10 MIGHT NOT BE INSTALLED
TEST PC OF CALL STEXP OP CODE EXPCTD RECVED PC OF ERROR
74 040232 175020 040362 040364 040200
STEXP AUTO INCREMENTED/DECREMENTED R0 INCORRECTLY
M7095 ECO # 10 MIGHT NOT BE INSTALLED
TEST PC OF CALL STEXP OP CODE EXPCTD RECVED PC OF ERROR
74 040232 175040 040360 040356 040200
STEXP A,(R) FAILED.
TEST. PC OF CALL. PC OF ERROR. GOT FPS. EXPECTED FPS.
74 040300 040200 040000 040000
AC OPERAND: 123456 076543 177777 177777
GOT RESULT: 123456
EXPECTED RESULT: 000001
STEXP AUTO INCREMENTED/DECREMENTED R0 INCORRECTLY
M7095 ECO # 10 MIGHT NOT BE INSTALLED
TEST PC OF CALL STEXP OP CODE EXPCTD RECVED PC OF ERROR
74 040232 175020 040362 040364 040200
STEXP AUTO INCREMENTED/DECREMENTED R0 INCORRECTLY
M7095 ECO # 10 MIGHT NOT BE INSTALLED
TEST PC OF CALL STEXP OP CODE EXPCTD RECVED PC OF ERROR
74 040232 175040 040360 040356 040200
STEXP A,(R) FAILED.
TEST. PC OF CALL. PC OF ERROR. GOT FPS. EXPECTED FPS.
74 040300 040200 040000 040000
AC OPERAND: 123456 076543 177777 177777
GOT RESULT: 123456
EXPECTED RESULT: 000175
STEXP AUTO INCREMENTED/DECREMENTED R0 INCORRECTLY
M7095 ECO # 10 MIGHT NOT BE INSTALLED
TEST PC OF CALL STEXP OP CODE EXPCTD RECVED PC OF ERROR
74 040232 175020 040362 040364 040200
STEXP AUTO INCREMENTED/DECREMENTED R0 INCORRECTLY
M7095 ECO # 10 MIGHT NOT BE INSTALLED
TEST PC OF CALL STEXP OP CODE EXPCTD RECVED PC OF ERROR
74 040232 175040 040360 040356 040200
STEXP A,(R) FAILED.
TEST. PC OF CALL. PC OF ERROR. GOT FPS. EXPECTED FPS.
74 040300 040200 040010 040010
AC OPERAND: 123456 076543 177777 177777
GOT RESULT: 123456
EXPECTED RESULT: 177601
STEXP AUTO INCREMENTED/DECREMENTED R0 INCORRECTLY
M7095 ECO # 10 MIGHT NOT BE INSTALLED
TEST PC OF CALL STEXP OP CODE EXPCTD RECVED PC OF ERROR
74 040232 175020 040362 040370 040200
STEXP AUTO INCREMENTED/DECREMENTED R0 INCORRECTLY
M7095 ECO # 10 MIGHT NOT BE INSTALLED
TEST PC OF CALL STEXP OP CODE EXPCTD RECVED PC OF ERROR
74 040232 175040 040360 040352 040200
STEXP A,(R) FAILED.
TEST. PC OF CALL. PC OF ERROR. GOT FPS. EXPECTED FPS.
74 040300 040200 047710 047710
AC OPERAND: 123456 076543 177777 177777
GOT RESULT: 123456
EXPECTED RESULT: 177756
END PASS # 2 TOTAL ERRORS THIS PASS 22
|
Not a happy FPU… KFPA and KFPB do pass though.