Creating the REDPACK - KS10FPGA/KS10FPGA GitHub Wiki

The Reliability Exerciser and Diagnostic Pack (RED PACK) is a very useful diagnostic tool that DEC provided to its Field Service Engineers to help maintain and repair the KS10.

The procedure for creating the RED PACK is described in the RED PACK help file which is available from: http://pdp-10.trailing-edge.com/red405a2/11/red/red20.hlp

Some work-arounds for the SIMH simulator was provided by Peter Hettkamp as a response to my query on the alt.sys.pdp10 newsgroup. Thanks Peter.

Download and unzip the RED PACK tape image and help file from pdp-10.trailing-edge.com as follows:


$ wget http://pdp-10.trailing-edge.com/tapes/red405a2.tap.bz2 red405a2.tap.bz2
$ wget http://pdp-10.trailing-edge.com/red405a2/11/red/red20.hlp red20.hlp
$ bunzip2 red405a2.tap.bz2

Use your favorite editor to create a command script for SIMH. I use the following script:


$ cat red405a2.cmd
set rpa0 rp06
att rpa0 red405a2.rp06
set tua0 format=e11
set tua0 locked
att tua0 ./red405a2.tap

In the transcript below, responses that must by provided by the users are shown in bold and are underscored.

Start SIMH as follows:

$ ./pdp10 red405a2.cmd

PDP-10 simulator V4.0-0 Beta git commit id: 8204a203
sim> boot tua0

The RED405A2 tape is a KS10 boot tape. The first file on a bootable tape is the microcode for the KS10 console processor. SIMH does not understand the microcode file. Interrupt SIMH by typing ^E. Then boot again from tua0. This time, the tape is positioned at the second file on the tape, which is MTBOOT:

^E
Simulation stopped, PC: 775451
sim> boot tua0

MTBOOT >/L

The /G143 is used to load the initial monitor. Note: the parameters are set per the instructions in “red20.hlp” file that was downloaded.

MTBOOT >/G143
[FOR ADDITIONAL INFORMATION TYPE "?" TO ANY OF THE FOLLOWING QUESTIONS.]

DO YOU WANT TO REPLACE THE FILE SYSTEM ON THE PUBLIC STRUCTURE? Y

DO YOU WANT TO DEFINE THE PUBLIC STRUCTURE? Y

HOW MANY PACKS ARE IN THIS STRUCTURE: 1

ON WHICH "CHANNEL,UNIT" IS LOGICAL PACK # 0 MOUNTED: ?
[ENTER A PAIR OF NUMBERS SEPARATED BY A COMMA THAT SPECIFY THE
CHANNEL AND UNIT UPON WHICH THE APPROPRIATE PACK IS MOUNTED.
THE FOLLOWING IS A LIST OF VALID CHANNEL,UNIT PAIRS:
0,0 ;TYPE=RP06
0,1 ;TYPE=RP06,OFFLINE
0,2 ;TYPE=RP06,OFFLINE
0,3 ;TYPE=RP06,OFFLINE
0,4 ;TYPE=RP06,OFFLINE
0,5 ;TYPE=RP06,OFFLINE
0,6 ;TYPE=RP06,OFFLINE
0,7 ;TYPE=RP06,OFFLINE
]

ON WHICH "CHANNEL,UNIT" IS LOGICAL PACK # 0 MOUNTED: 0,0

DO YOU WANT THE DEFAULT SWAPPING SPACE? N

HOW MANY PAGES FOR SWAPPING? 5000

DO YOU WANT THE DEFAULT SIZE FRONT END FILE SYSTEM? N

HOW MANY PAGES FOR THE FRONT END FILE SYSTEM? 0

DO YOU WANT THE DEFAULT SIZE BOOTSTRAP AREA? N

HOW MANY PAGES FOR THE BOOTSTRAP FILE? 100

[STRUCTURE "PS" SUCCESSFULLY DEFINED]

[PS MOUNTED]
?PS UNIT 0 HAS NO BAT BLOCKS.
DO YOU WANT TO WRITE A SET OF PROTOTYPE BAT BLOCKS? Y

%%NO SETSPD

System restarting, wait...
ENTER CURRENT DATE AND TIME: 23-NOV-2015 21:24

YOU HAVE ENTERED MONDAY, 23-NOVEMBER-2015 9:24PM,
IS THIS CORRECT (Y,N) Y
WHY RELOAD? RED 405 BUILD
ACCOUNTS-TABLE.BIN NOT FOUND - ACCOUNT VALIDATION IS DISABLED
RUNNING DDMP


NO SYSJOB
NO EXEC

At this point, press ^C to grab the computer's attention. The monitor responds with a mini-exec prompt. We use this mini-exec to load the exec from the tape. Please note that you only type G, the mini-exec fills in the "ET FILE "... The error message at this point is expected, the tape drive needs to space past the current file mark. We repeat the GET FILE command.

^C
MX>GET FILE MTA0:

INTERRUPT AT 0
MX>GET FILE MTA0:

This loaded the TOPS-20 EXEC. To start TOPS-20, enter an "S", the mini-exec completes the START command.

MX>START

TOPS-20 Command processor 4(560)

Enable capabilities.

@ENABLE

At this point, we have an empty public structure file system on the RP06, and a running TOP-20 EXEC. Up to this point, this followed the usual procedure to install TOPS-20.

Create a file named SERIAL which contains the serial number of this KS10. The script below edits the microcode to embed the serial number from this file into the microcode. At boot time on a real KS10, the console process would load the microcode into the KS10 microcode CRAM.

The serial number used by SIMH is hardwired to be 4097. We'll just set the serial number to 4097 in the procedure below.

Since the KS10 FPGA microcode is stored in ROM and is created when the FPGA is synthesized, this doesn't do anything for the KS10 FPGA either.

$COPY TTY: SERIAL
TTY: => SERIAL..1

4097
^Z

Copy the installer command script from MTA0:

$COPY MTA0: INSTALL.CMD
MTA0: => INSTALL.CMD.1 [OK]

Execute the installer command script. Everything runs automatically. You'll see a $ prompt. Don't type at the $ prompt. The script is running in the background. Please be patient. This will take about 10 minutes.

$TAKE INSTALL.CMD
MIC.EXE.1 SAVED
MTA0: => RESTORE.MIC.1 [OK]
END OF INSTALL.CMD.1
$;<UETP.LIB>RESTORE.MIC.1, 7-JUN-79 14:43:12, EDIT BY EIBEN
;USES THE ORIGINAL RED-TAPE 1 TO BUILD RED-PACK
DAYTIME
MONDAY, NOVEMBER 23, 2015 21:28:52
$TERMINAL NO PAGE
$ENA
$RU MTA0:
DLUSER>STR PS:
DLUSER>LOA MTA0:

DONE.
DLUSER>EXIT
$RU MTA0:
DUMPER>TAPE MTA0:
DUMPER>REST <*>*.*


DUMPER TAPE # 1, RED405-ORIGINAL :, FRIDAY, 7-AUG-81 2139
LOADING FILE(S) INTO PS:

END OF SAVESET
DUMPER>REST <*>*.*


DUMPER TAPE # 1, RED405-ORIGINAL :, FRIDAY, 7-AUG-81 2142
LOADING FILE(S) INTO PS:

END OF SAVESET
DUMPER>REST <*>*.*


DUMPER TAPE # 1, RED405-ORIGINAL :, FRIDAY, 7-AUG-81 2142
LOADING FILE(S) INTO PS:

END OF SAVESET
DUMPER>REST <*>*.*


DUMPER TAPE # 1, RED405-ORIGINAL :, FRIDAY, 7-AUG-81 2143
LOADING FILE(S) INTO PS:

END OF SAVESET
DUMPER>REST <*>*.*


DUMPER TAPE # 1, RED405-ORIGINAL :, FRIDAY, 7-AUG-81 2148
LOADING FILE(S) INTO PS:

END OF SAVESET
DUMPER>REST <*>*.*


DUMPER TAPE # 1, RED405-ORIGINAL :<UETP.LIB>, FRIDAY, 7-AUG-81 2149
LOADING FILE(S) INTO PS:<UETP.LIB>

END OF SAVESET
DUMPER>REST <*>*.*


DUMPER TAPE # 1, RED405-ORIGINAL :<UETP.LIB>, FRIDAY, 7-AUG-81 2153
LOADING FILE(S) INTO PS:

END OF SAVESET
DUMPER>REST <*>*.*


DUMPER TAPE # 1, RED405-ORIGINAL :<UETP.MIC>, FRIDAY, 7-AUG-81 2153
LOADING FILE(S) INTO PS:<UETP.MIC>

END OF SAVESET
DUMPER>REST <*>*.*


DUMPER TAPE # 1, RED405-ORIGINAL :, FRIDAY, 7-AUG-81 2153
LOADING FILE(S) INTO PS:

END OF SAVESET
DUMPER>REW
DUMPER>EXIT
$TV

*;Y$$
INPUT FILE: SERIAL
6 CHARS
*BJ$1XZ$$
*
;Y$$
INPUT FILE: <UETP.LIB>PS-MICRO.MIC
1315 CHARS
*SSERIAL $K$GZ$$
*
;U$$
OUTPUT FILE: <UETP.LIB>PS-MICRO.MIC
*;Y$$
INPUT FILE: <UETP.LIB>RED-MICRO.MIC
1362 CHARS
*SSERIAL $K$GZ$$
*
;X$$
OUTPUT FILE: <UETP.LIB>RED-MICRO.MIC

$RU MAKDMP

MAX SIZE OF MEMORY IN K (512): 512
$DO PS-MICRO
$;<UETP.LIB>PS-MICRO.MIC.1, 7-JUN-79 14:15:50, EDIT BY EIBEN
;WRITES 8080-FILE AREA
DAYTIME
MONDAY, NOVEMBER 23, 2015 21:29:30
$TERMINAL NO PAGE
$ENA
$CONN
$RUN SMFILE.EXE

DECSYSTEM 2020 DIAGNOSTICS FE-FILE PROGRAM
VERSION 0.3, TOPS-20, KS10, CPU#=4097
[FOR HELP TYPE "HELP"]
SMFILE>; WE WANT TO UPDATE THE BOOTSTRAP AREA ON PS:
WRI SET PS:BOOTSTRAP.BIN
SMFILE>; WE WANT TO START CLEAN
WRITE RESET
SMFILE>; WE HAVE TO READ M-CODE IN FIRST
READ KS10.ULD
SMFILE>; WHAT VERSION OF M-CODE ARE WE HANDLING?
EXA CRAM 137
SHOULD BE: 000137/35770707000001170000377760454102

C J # ALU S/D A/B RBM SPEC DISP SKIP T C SC FE FM MC DV MP C/LR M
0 3577 000117 3 771 0005 437 00 70 70 0 0 0 0 0 0 0 0 4 0 0

SMFILE>; WE HAVE TO SPECIFY A DEC-CERTIFIED SERIAL-NUMBER
SERIAL 4097
SMFILE>WRITE CRAM
SMFILE>; AND THE BOOT FOR THE MONITOR
WRITE BOOT SMBOOT.EXE
SMFILE>; AND OUR DIAGNOSTIC BOOT
WRITE DIAGBT SMMON.EXE
SMFILE>; AND BOOT-CHECK 2
WRITE BC2 SMBC2.EXE
SMFILE>; AT LAST WE HAVE TO UPDATE THE HOME-BLOCKS
WRITE DONE

[HOME BLOCKS SET]
SMFILE>; NOW WE WRITE OUT THE SAME M-CODE FOR LATER USE ON MAGTAPE
OUTPUT CRAM PS:KS10.RAM
SMFILE>; WE WANT A NEW M-CODE FOR DIAGNOSTICS
OUTPUT CRAM PS:SMTAPE.RAM
SMFILE>; WE ALSO NEED THE MONITOR-MAGTAPE BOOT
OUTPUT MTBOOT SMMTBT.EXE PS:MTBOOT.RDI
SMFILE>;LETS CHECK A LITTLE BIT , WHAT WE HAVE DONE
WRI SET PS:BOOTSTRAP.BIN
SMFILE>; WHAT DISK WERE WE USING?
INF DISK

USING PS RP06

SMFILE>; DID WE APPROACH BOUNDARIES?
INF FREE

FRONT-END FREE PAGES = 28

SMFILE>; WHERE ARE WE LOCATED?
INF FEFILE

DISK ADDRESS IN HOME BLOCK = 100000 000574
LENGTH IN HOME BLOCK = 000000 000620
8080 POINTER IN HOME BLOCK = 000100 000000

SMFILE>; DID WE GO INTO "FUTURE" STUFF?
INF IND

THE FOLLOWING FRONT-END INDIRECT FILES EXIST:

FRONT-END FREE PAGES = 28

SMFILE>; ..AND FINALLY GO BACK TO MONITOR-MODE
EXIT
$DISABLE
@DAYTIME
MONDAY, NOVEMBER 23, 2015 21:29:53
@TERMINAL PAGE
@UNL MTA0:
@CONN
@DAYTIME
MONDAY, NOVEMBER 23, 2015 21:29:57
@TERMINAL PAGE
@
[MICEMF - END OF MIC FILE: RESTORE.MIC.1 ]
@KMIC
@

At this point, the RED PACK RP06 disk has been created. Type ^E to get back to SIMH.

^E
Simulation stopped, PC: 000003 (SOJG 2,3)

Ask TOPS-20 to shut down.

sim> set cty stop
sim> c
**HALTED**

HALT instruction, PC: 010612 (JSR 0,5210)

Exit SIMH.

sim> quit
Goodbye

⚠️ **GitHub.com Fallback** ⚠️