PI ACTIVE (PI ON)
PI IN PROGRESS (PIH)
EXEC MODE
USER MODE
KEY
STOP
1
2
3
4
5
6
7
1
2
3
4
5
6
7
PI ON
KERNEL
SUPER
CONCEAL
PUBLIC
PG FAIL
MAINT
MEM
PROG
MAN
RUN
POWER
IOB PI REQUEST (BIO PI)
PI REQUEST (PIR)
PROGRAM COUNTER
1
2
3
4
5
6
7
1
2
3
4
5
6
7
PI OK 8
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
INSTRUCTION
ACCUMULATOR
I
INDEX
ADDRESS
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
MEMORY DATA
PROGRAM DATA
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
PAGING
ADDRESS SWITCHES
ADDRESS
EXEC
USER
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
CLEAR
LOAD
DATA SWITCHES
DATA
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
CLEAR
LOAD
SINGLE
INST
SINGLE
PULSER
STOP
PAR
NXM
REPEAT
FETCH
INST
DATA
WRITE
ADDRESS
STOP
BREAK
READ IN
START
CONT
STOP
RESET
XCT
EXAMINE
THIS
NEXT
DEPOSIT
THIS
NEXT

console

DECsystem-10 (PDP-10 KI10) Emulator

This emulator follows on from my earlier PDP-11 emulator and was written after considerable prompting by various people. Thanks guys.

For several years I was one of the system programmers for the KI10 at La Trobe University in Melbourne Australia. I did get to play with the console panel a couple of times but normally the system was under the control of dedicated operating staff - we weren't supposed to touch. This computer had its own dedicated computer room and provided computing for the Research, Teaching and the Administrative needs of the University. The user base was rather diverse with everyone using RUNOFF to prepare documents, researchers writing programs in FORTRAN, LISP or PROLOG or using statistical packages like SPSS, while administrative programmers produced COBOL applications for payroll, finance and student records. Students seem to dable with everything.

My main memory from using the system was the lack of recovery in any of the editors, combined with the frequency of reboots caused by system faults or power failures. It became rather common to remind yourself or others to save the current document. Even though that sounds bad I remember sometimes looking forward to making improvements in the code or document as I typed it in the next time.

Eventually the KI10 was replaced by several VAXes. These were faster, cheaper and more reliable. However they didn't initially have the software maturity of the KI10 and never really provided environments such as LISP and PROLOG the way the PDP-10 did. It was a very sad day when all of the cabinets of the PDP-10 were craned onto a truck and taken away for scrap.

Writing an emulator for a 36-bit computer in Javascript has special challenges because Javascript provides only 32-bit bit operations. In addition some operands on a KI10 may be up to 71 bits long. As a result bit testing and manipulation must be done with the help of other operators such as division and modulo, and some operands must be split into multiple parts. I hate to think what this does for performance. However if you do encounter performance issues then please consider upgrading your PC. They are significantly faster and cheaper than a real DECsystem-10 and just imagine the savings in power consumption!

Happy emulating

Paul Nankervis

Work in Progress

Please note that this emulator is incomplete. Not all floating point instructions are fully operational and what is there still requires simplification, clean up and testing. This is a one person part time hobby project so you will have to be patient.

Environment

This emulator simulates a PDP-10 KI10 running TOPS-10 v6.03A from four RP03 disks, similar to the La Trobe University machine. The operating system is built from software and automated scripts provided by Richard Cornwell at http://www.sky-visions.com/dec/. The login password for account 1,2 is 'FAILSA'. Suggestions for changes or improvements to the emulator can be made by email, but please be aware this is a resource constrained hobby project.

Example boot

Paul Nankervis - paulnank@hotmail.com

Boot> boot dpa0
Press RETURN to continue loading BOOTS...

<CR>

KI603 04-21-78
WHY RELOAD: sched
DATE: 13-dec-78
TIME: 1121

STARTUP OPTION: quick

%CONTROLLER RPA IS OFF-LINE

%CONTROLLER RPB IS OFF-LINE

%CONTROLLER DPB IS OFF-LINE

KI603 11:21:06 CTY system 514

.LOGIN 1,2
JOB 1 KI603 CTY
Password: failsa
1121    13-Dec-78       Wed

.TTY LC WIDTH 132

.dir

BACKUP  EXE   103  <057>   21-Apr-78    2(216)  DSKB:   [1,2]
OPR     BAK     3  <057>   21-Apr-78
JOBDAT  REL     1  <057>   21-Apr-78
OPR     ATO     3  <057>   21-Apr-78
SYSTEM  EXE   800  <057>   21-Apr-78    603A(20116)
  Total of 910 blocks in 5 files on DSKB: [1,2]

.r basic

READY, FOR HELP TYPE HELP.
10 print "Hello world"
90 end
run

NONAME        11:21         13-DEC-78

Hello world

TIME:  0.00 SECS.

READY
save myprog

READY
system

EXIT

.sos test.for
Input: TEST.FOR
00100         write(5,10)
00200   10    format(12H Hello World)
00300   90    end
00400   <ESC>
*e

[DSKB:TEST.FOR]

.r fortran

*test,test=test
MAIN.
*^Z

.execute test
LINK:   Loading
[LNKXCT TEST Execution]

Hello World

END OF EXECUTION
CPU TIME: 0.00  ELAPSED TIME: 0.00
EXIT

.r pip

*boot.mac=tt:
; Javascript PDP KI10 Emulator v1.0
; written by Paul Nankervis
; Please send suggestions, fixes and feedback to paulnank@hotmail.com
......
stack:

    end start
^Z
*^C

.r macro

*boot,boot=boot

NO ERRORS DETECTED

PROGRAM BREAK IS 000000
ABSOLUTE BREAK IS 037371
CPU TIME USED 00:00.600

8P CORE USED

*^Z

.load boot
LINK:   Loading

EXIT

.save boot.sav
BOOT saved

.r convrt

PDP-10 DIAGNOSTIC ASCIIZER CONVERSION PROGRAM
VERSION 030.000

TYPE /H<CR> FOR HELP
FILE: boot.sav

CONVERTING COMPLETED, BLOCKS = 3

EXIT

.type boot.a10
Z A,Cx@,Cy,LDF
T I,AP,Cx@,Ood,,C{y,,,,FH@,E,BSE
T C,A[,C??,Oo`,,LOC
T ^,Cx@,,HA,N,AD@,X@,N,,F`@,E,C{x,>@,D,Czu,d@,D,CyG,H^@,E,Cz>,d@,D,CyG,H^@,E,,j@,D,C{x,H@,D,Hnq
...
T R,C{o,CyD,,,CyP,,,H@@,IP`,H,H@@,KT`,I,C{q,\@,I,C{r,\@,I,F|e
T F,C{v,Cyq,,,CzM,,,DPF
T C,C{x,P@,\@,I,KW|
T ,Cx@,LH@

.dir

BACKUP  EXE   103  <057>   21-Apr-78    2(216)  DSKB:   [1,2]
OPR     BAK     3  <057>   21-Apr-78
JOBDAT  REL     1  <057>   21-Apr-78
OPR     ATO     3  <057>   21-Apr-78
SYSTEM  EXE   800  <057>   21-Apr-78    603A(20116)
MYPROG  BAS     1  <157>   13-Dec-78
TEST    FOR     1  <057>   13-Dec-78
TEST    LST     1  <057>   13-Dec-78
TEST    REL     1  <057>   13-Dec-78
BOOT    MAC    14  <057>   13-Dec-78
BOOT    REL     4  <057>   13-Dec-78
BOOT    LST    26  <057>   13-Dec-78
BOOT    SAV     3  <057>   13-Dec-78
BOOT    A10     5  <057>   13-Dec-78
  Total of 966 blocks in 14 files on DSKB: [1,2]

.sys

Status of KI603 at 11:25:28 on 13-Dec-78

Uptime 4:22, 98%Null time = 98%Idle + 0%Lost
1 Jobs in use out of 64.  1 logged in, 0 detached out of 64.  (LOGMAX)

Job    Who     Line#    What   Size(P)  State   Run Time

 1    [OPR]     CTY     SYSTAT  14+SPY  RN             3

Swapping space used = 0/1024 = 0%
Virt. Core used = 14/1024 = 1%
8002P Core left
Active swapping ratio = 14/8016 = 0.0
Average job size =14/1 = 14.0P+0/1 = 0.0P  Total=14/1 = 14.0P

No busy devices
1 disk DDBs

System File Structures:
Name    Free    Mount
DSKB    137857  2
Total Free 137857

HAPPY BIRTHDAY BILL HARDY

.kjob/f
Job 1, User [1,2]  Logged off CTY      1125  13-Dec-78
Runtime 3.09 Sec



.

Various KI10 Related References

Software and Sources

Photo of the DECsystem-10 (KI10) at La Trobe University circa 1981

Home