console
This emulator came about because years ago I was a programmer for RSTS/E on a PDP 11/45 and had admired the console idle loop light pattern - but I couldn't quite remember how it looked. Given the unavailability of real systems it became time to write an emulator!
I was going to start with a PDP 11/45 emulator but the extra memory of a PDP 11/70 became far too attractive (nearly a whole 4MB!). I eventually wrote a PDP 11/70 version as well as a PDP 11/45 version, and later also a PDP-10.
I met my core objective - I can now see the RSTS/E console light pattern that I was looking for, and found that newer versions (eg v9.6) have a different light pattern. Also I have now seen some of the light patterns for other OSes. RSX and BSD 2.11 have their own different patterns, and Unix V5 and Ultrix operate with absolute minimum light movement (I'm assuming they operate mostly in WAIT mode).
Getting all of the operating systems used here presents its own set of challenges - one of which is finding the software in the first place. But one of the most interesting was RSTS/E V06C which has its own story.
Many of the systems also include source in some form or another and it is very interesting to see the different approaches they used. All had a profound influence on systems which evolved later and unix in particular would be familiar to administrators of current systems. I reflect that if I had been exposed to Ultrix earlier I might have chosen a different career path.
The boot code in this emulator is a custom PDP 11 program running with it's own set of light patterns. It is initially loaded at address 120000 and includes a LIGHTS command which operates by mapping and executing a WAIT instruction from a pattern of virtual addresses. The resulting display simply shows the content of R0 and the address of the instruction being executed. You can also use the BOOT command to start one of the guest operating systems listed below, or the ODT command to start a version of the Octal Debugging Tool.
However boot code like this was not part of early PDP 11s. These systems had no BIOS or other software to help get the bare metal started. If you were lucky perhaps the previous boot code would still be intact in non-volatile magnetic core memory, but in general booting the system required toggling in a small bootstrap loader from the front panel.
Here is an example of the switch commands for booting from an RK05 where the value at address 1002 selects the unit number (rk0, rk1, rk2, etc). Goodluck!
Address Data Code Switch commands HALT, 001000, LOAD ADDRESS 001000 012737 mov #unit,rkda 012737, DEPOSIT 001002 000000 000000, DEPOSIT or 020000 for rk1, 040000 for rk2, etc 001004 177412 177412, DEPOSIT 001006 012700 mov #rkwc, r0 012700, DEPOSIT 001010 177406 177406, DEPOSIT 001012 012710 mov #-256,(r0) 012710, DEPOSIT 001014 177400 177400, DEPOSIT 001016 012740 mov #5,-(r0) 012740, DEPOSIT 001020 000005 000005, DEPOSIT 001022 105710 tstb (r0) 105710, DEPOSIT 001024 100376 bpl .-2 100376, DEPOSIT 001026 005007 clr pc 005007, DEPOSIT 001000, LOAD ADDRESS, ENABLE, START
If you wish to toggle in a simple light chaser to the front panel then here are some switch commands which can be used:
Address Data Code Switch commands HALT, 001000, LOAD ADDRESS 001000 012700 mov #1,r0 012700, DEPOSIT 001002 000001 000001, DEPOSIT 001004 006100 rol r0 006100, DEPOSIT 001006 000005 reset 000005, DEPOSIT 001010 000775 br .-4 000775, DEPOSIT 001000, LOAD ADDRESS, ENABLE, STARTTo restart the initial boot code (if it has not been overwritten) use the switch commands:
HALT, 120000, LOAD ADDRESS, ENABLE, START
If you are interested in how the emulator works then you can browse the source files on Github. The main Javascript files are pdp11.js, fpp.js and iopage.js
Happy emulating!
Paul Nankervis
DISK | OS | Notes |
RK0 | Unix V5 | Boot using: unix then login as root |
RK1 | RT11 v4.0 | The smallest OS here |
RK2 | RSTS V06C-03 | Boot and login as 1,2 with password SYSTEM or as 11,70 using PDP |
RK3 | XXDP | Diagnostic OS and utilities |
RK4 | RT-11 3B | Distribution for RT-11 Version 3B |
TM0 | RSTS 4B-17 | Boot ROLLIN from TM0 and restore DK0 with "DK:<MT:VIXEN/REW". Reboot from DK0 with "/BO:DK" to auto-login as 1,2 (password is SYSTEM ) Relogin as 11,70 with password PDP Commands are case sensitive. |
Boot> boot rk0 @unix login: root # cat /etc/passwd root::0:1::/: daemon::1:1::/bin: bin::3:1::/bin: # who root tty8 Mar 21 12:09 # chdir /usr/sys/ken # pwd ../usr/sys/ken # ls -al total 121 drwxr-xr-x 2 bin 352 Nov 26 18:13 . drwxr-xr-x 5 bin 384 Nov 26 18:13 .. -rw-r--r-- 1 bin 3855 Nov 26 18:13 alloc.c -rw-r--r-- 1 bin 2159 Nov 26 18:13 clock.c -rw-r--r-- 1 bin 2662 Nov 26 18:13 fio.c -rw-r--r-- 1 bin 2941 Nov 26 18:13 iget.c -rw-r--r-- 1 bin 2674 Nov 26 18:13 main.c ... # ls -al /usr/games total 64 drwxr-xr-x 2 bin 144 Nov 26 18:13 . drwxr-xr-x 14 bin 224 Nov 26 18:13 .. -rwxr-xr-x 1 bin 1562 Nov 26 18:13 bj -rwxr-xr-x 1 bin 16268 Nov 26 18:13 chess -rwxr-xr-x 1 bin 2468 Nov 26 18:13 cubic -rwxr-xr-x 1 bin 624 Nov 26 18:13 moo -rwxr-xr-x 1 bin 2192 Nov 26 18:13 ttt -rw-rw-rw- 1 bin 294 Nov 26 18:13 ttt.k -rwxr-xr-x 1 bin 5386 Nov 26 18:13 wump # ls -al /bin total 339 drwxr-xr-x 2 bin 944 Nov 26 18:13 . drwxr-xr-x 9 bin 160 Jan 29 16:14 .. -rwxr-xr-x 1 bin 1514 Nov 26 18:13 ar -rwxr-xr-x 1 bin 7308 Nov 26 18:13 as -rwxr-xr-x 1 bin 6042 Nov 26 18:13 bas -rwxr-xr-x 1 bin 152 Nov 26 18:13 cat -rwxr-xr-x 1 bin 5668 Nov 26 18:13 cc .... # ls -al /usr/source/s2 total 281 drwxr-xr-x 2 bin 848 Jan 2 19:36 . drwxr-xr-x 7 bin 112 Nov 26 18:13 .. -rw-r--r-- 1 bin 4233 Nov 26 18:13 mail.c -rw-r--r-- 1 bin 588 Nov 26 18:13 mesg.s -rw-r--r-- 1 bin 1088 Nov 26 18:13 mkdir.s -rw-r--r-- 1 bin 6922 Nov 26 18:13 mkfs.c -rw-r--r-- 1 bin 563 Nov 26 18:13 mknod.c ... # chdir / # cal 10 1981 Oct 1981 S M Tu W Th F S 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 # bas print sqr(2) 1.414213562 10 print "Calculating e" 20 p = 20 30 k = 1 40 e = 0 50 for x=1 p 60 e = e + 1/k 70 k = k * x 80 next x 90 print "e=" e " (" exp(1) ")" run Calculating e e=2.718281828 (2.718281828) ^D # cat> hello.c main(argc, argv) char **argv; { printf("Hello world\n"); } ^D # cc hello.c # a.out Hello world # cat> pi.f c PI via Nilakantha series: 3 + 4/(2*3*4) - 4/(4*5*6) + 4/(6*7*8) ... double precision pi, n, d pi = 3.0 n = 4.0 d = 2.0 do 25 i=1,3000 pi = pi + n / (d * (d + 1.0) * (d + 2.0)) d = d + 2.0 n = -n 25 continue write(6,70) pi 70 format('PI is approximately ', d2.16) end ^D # fc pi.f # a.out PI is approximately 0.3141592653580503d+01 #
Boot> boot rk1 RT-11SJ V04.00C .D 56=5015 .TYPE V4USER.TXT Welcome to RT-11 Version 4. RT-11 V04 provides new hardware support and some major enhancements over Version 3B. Please use the HELP command; it describes the new options in many of the utilities. If you are using a terminal that requires fill characters, modify location 56 with a Deposit command before proceeding with system installation. LA36 DECwriter II and VT52 DECscope terminals do NOT require such modification. .D 56=0 .DIR SWAP .SYS 25 01-Feb-82 RT11BL.SYS 65 01-Feb-82 RT11SJ.SYS 67 01-Feb-82 RT11FB.SYS 80 01-Feb-82 ... DISMT2.COM 8 01-Feb-82 DUNGEO.COM 1 07-Jun-86 DSAVE .DAT 10 07-Jun-86 ADVENT.DOC 4 20-Jul-85 DUNGEO.SAV 216 07-Jun-86 DINDX .DAT 20 07-Jun-86 DTEXT .DAT 383 07-Jun-86 ADVENT.SAV 93 20-Jul-85 ADVENT.VAR 22 20-Jul-85 ADVTXT.TXT 125 20-Jul-85 ODT11 .MAC 61 31-Oct-74 ANIMAL.SAV 22 02-Oct-85 BLKJAK.SAV 20 02-Nov-85 FORTH .MAC 146 RTLEM .MAC 363 06-Sep-73 BOOT .MAC 26 24-Mar-75 118 Files, 3392 Blocks 1370 Free blocks .R DUNGEO Welcome to Dungeon. This version created 10-AUG-78. You are in an open field west of a big white house with a boarded front door. There is a small mailbox here. >OPEN MAILBOX Opening the mailbox reveals: A leaflet. >READ LEAFLET Taken. Welcome to Dungeon! Dungeon is a game of adventure, danger, and low cunning. In it you will explore some of the most amazing territory ever seen by mortal man. Hardened adventurers have run screaming from the terrors contained within. In Dungeon, the intrepid explorer delves into the forgotten secrets of a lost labyrinth deep in the bowels of the earth, searching for vast treasures long hidden from prying eyes, treasures guarded by fearsome monsters and diabolical traps! No DECsystem should be without one! Dungeon was created at the Programming Technology Division of the MIT Laboratory for Computer Science by Tim Anderson, Marc Blank, Bruce Daniels, and Dave Lebling. It was inspired by the Adventure game of Crowther and Woods, and the Dungeons and Dragons game of Gygax and Arneson. The original version was written in MDL (alias MUDDLE). The current version was translated from MDL into FORTRAN IV by a somewhat paranoid DEC engineer who prefers to remain anonymous. On-line information may be obtained with the commands HELP and INFO. >QUIT Your score would be 0 [total of 560 points], in 1 move. This gives you the rank of beginner. Do you wish to leave the game? Y .MAC RTLEM ERRORS DETECTED: 0 .LINK RTLEM .RUN RTLEM ... attempt to land the lunar module using the mouse as a light pen - goodluck!
Boot> boot rk2 RSTS V06C-03 Vixen (DK2) Option: <LF> You currently have: JOB MAX = 31, SWAP MAX = 28K. You currently have crash dump disabled. DD-MMM-YY? 31-OCT-76 12:00 PM? 9:03 INIT V06C-03 RSTS V06C-03 Vixen Command File Name? DETACHING... I11/70 Password: PDP Ready DIR Name .Ext Size Prot Date SY:[11,70] ACEY .BAS 5 < 60> 31-Oct-76 TREK .BAS 16 < 60> 31-Oct-76 TREK .DOC 9 < 60> 31-Oct-76 ANIMAL.BAS 5 < 60> 31-Oct-76 STRTRK.BAS 27 < 60> 31-Mar-81 STRTR1.BAS 9 < 60> 31-Mar-81 ADVENT.DOC 4 < 60> 20-Jul-85 ADVENT.SAV 93 <124> 20-Jul-85 ADVENT.VAR 22 < 60> 20-Jul-85 ADVTXT.TXT 125 < 60> 20-Jul-85 SYSMAC.SML 42 < 60> 13-Mar-77 HELLO .MAC 1 < 60> 13-Mar-77 PRIME .BAS 1 < 60> 24-Mar-76 PI .BAS 1 < 60> 24-Mar-76 BOOT .MAC 26 < 60> 01-Jan-76 Total of 386 blocks in 15 files in SY:[11,70] Ready RUN PI 3.14159265358979 Ready RUN ADVENT WELCOME TO ADVENTURE!! WOULD YOU LIKE INSTRUCTIONS? NO YOU ARE STANDING AT THE END OF A ROAD BEFORE A SMALL BRICK BUILDING. AROUND YOU IS A FOREST. A SMALL STREAM FLOWS OUT OF THE BUILDING AND DOWN A GULLY. E YOU ARE INSIDE A BUILDING, A WELL HOUSE FOR A LARGE SPRING. THERE ARE SOME KEYS ON THE GROUND HERE. THERE IS A SHINY BRASS LAMP NEARBY. THERE IS FOOD HERE. THERE IS A BOTTLE OF WATER HERE. GET FOOD OK QUIT DO YOU REALLY WANT TO QUIT NOW? Y OK YOU SCORED 32 OUT OF A POSSIBLE 350, USING 3 TURNS. YOU ARE OBVIOUSLY A RANK AMATEUR. BETTER LUCK NEXT TIME. TO ACHIEVE THE NEXT HIGHER RATING, YOU NEED 4 MORE POINTS. Ready RUN ACEY ACEY DUCEY CARD GAME CREATIVE COMPUTING MORRISTOWN, NEW JERSEY ACEY-DUCEY IS PLAYED IN THE FOLLOWING MANNER THE DEALER (COMPUTER) DEALS TWO CARDS FACE UP YOU HAVE AN OPTION TO BET OR NOT BET DEPENDING ON WHETHER OR NOT YOU FEEL THE CARD WILL HAVE A VALUE BETWEEN THE FIRST TWO. IF YOU DO NOT WANT TO BET, INPUT A 0 YOU NOW HAVE 100 DOLLARS. HERE ARE YOUR NEXT TWO CARDS: 4 5 WHAT IS YOUR BET? 100 9 SORRY, YOU LOSE SORRY, FRIEND, BUT YOU BLEW YOUR WAD. TRY AGAIN (YES OR NO)? NO O.K., HOPE YOU HAD FUN! Ready SYSTAT RSTS V06C-03 Vixen status at 31-Oct-76, 09:05 AM Up: 2:34 Job Who Where What Size State Run-Time RTS 1 [OPR] Det ERRCPY 5K SR 5.0 BASIC 2 [SELF] KB0 SYSTAT 8K RN Lck 2.1 BASIC Busy Devices: None Disk Structure: Disk Open Free Cluster Errors Name Comments DK2 3 324 1 0 VIXEN Pub, DLW Small Large Jobs Hung TTY's Errors 380 1 2/2 0 0 Run-Time Systems: Name Ext Size Users Comments BASIC BAC 16(16)K 2 Perm, Addr:26, KBM, CSZ RSX TSK 2(28)K 0 Non-Res, KBM RT11 SAV 4(28)K 0 Temp, Addr:66, KBM, CSZ, EMT:255 RMS11 TSK 4(28)K 0 Non-Res Message Receivers: Name Job Msgs Max Senders ERRLOG 1 0 40 Priv Ready BYE/Y Saved all disk files; 388 blocks in use, 112 free Job 2 User 11,70 logged off KB0 at 31-Oct-76 09:05 AM System RSTS V06C-03 Vixen Run time was 2.7 seconds Elapsed time was 2 minutes Good morning
Boot> boot tm0 ROLLIN V07 #DK:<MT:VIXEN/REW END-OF-FILE DURING READ, TYPE M TO MOUNT ANOTHER REEL, OR K TO KILL REQUEST: k #/BO:DK: RSTS V04B-17 VIXEN OPTION? <LF> DD-MON-YY? 24-MAR-75 HH:MM? 9:21 VIXEN - SYSTEM PACK MOUNTED ENABLE CRASH DUMP? N CHAIN "INIT" CATASTROPHIC ERROR PROGRAM LOST-SORRY I/O CHANNEL NOT OPEN Ready SYSTEM INITIALIZATION PROGRAM END OF FILE ON DEVICE - INIT ASSUMED COMPLETE Ready CAT LOGIN .BAS 7 60 31-Oct-71 31-Oct-71 06:42 AM LOGIN .BAC 15 60 31-Oct-71 31-Oct-71 06:42 AM LOGOUT.BAS 7 60 31-Oct-71 31-Oct-71 06:42 AM LOGOUT.BAC 15 60 31-Oct-71 31-Oct-71 06:42 AM PIP .BAS 18 60 31-Oct-71 31-Oct-71 06:42 AM PIP .BAC 23 40 31-Oct-71 31-Oct-71 06:42 AM SYSTAT.BAS 12 60 31-Oct-71 31-Oct-71 06:42 AM SYSTAT.BAC 19 168 31-Oct-71 31-Oct-71 06:42 AM ... Ready RUN TTYSET 'TTYSET' TERMINAL CHARACTERISTICS PROGRAM ? LC ? ^Z Ready run utilty 'UTILTY' SYSTEM UTILITY PROGRAM ? LOGINS ? HELP COMMANDS ARE: MOUNT DEV:ID DISMOUNT DEV: LOCK DEV: UNLOCK DEV: NO LOGINS LOGINS CLEAN DEV: KILL JOB# SEND KBN: STRING FORCE KBN: [^]STRING CHANGE [ACCT]PASSWORD QUOTA [ACCT] QUOTA ZERO DEV:[ACCT] HANGUP KBN: DATE DD-MMM-YY TIME HH:MM ? ^Z Ready run pip PIP - RSTS V04B-17 VIXEN #acct.sys 11,70,PDP,0,2,PDP 11/70 EMULATOR #^Z Ready run systat OUTPUT STATUS TO? kb: RSTS V04B-17 VIXEN STATUS ON 24-Mar-75 AT 09:22 AM UP: 1:07 JOB WHO WHERE WHAT SIZE STATE RUN-TIME 1 1,2 KB0 SYSTAT 6K RN 0.1 BUSY DEVICES: NONE DISK STRUCTURE: DISK OPEN FREE CLUSTER ERRORS COMMENTS DK0 0 3185 1 0 PUBLIC SMALL LARGE ERRORS HUNG TTY'S 69 0 0 0 Ready bye CONFIRM: y SAVED ALL DISK FILES; 782 BLOCKS IN USE JOB 1 USER 1,2 LOGGED OFF KB0 AT 24-Mar-75 09:22 AM SYSTEM RSTS V04B-17 VIXEN RUN TIME WAS .1 SECONDS ELAPSED TIME WAS 1 MINUTE, 20 SECONDS GOOD MORNING HELLO RSTS V04B-17 VIXEN JOB 1 KB0 24-Mar-75 09:24 AM #11,70 PASSWORD: PDP RSTS V4B-17 IS NOW AVAILABLE... NEW OR OLD-- ^C Ready CAT PRIME .BAS 1 60 31-Oct-71 31-Oct-71 06:43 AM PI .BAS 1 60 31-Oct-71 31-Oct-71 06:43 AM Ready OLD PI Ready LIST PI 09:25 AM 24-Mar-75 10 REM CALCULATE PI 20 P = 0 30 P1 = 1 40 FOR K%=0% TO 10% 50 P = P + 1.0/P1 * (4.0/(8%*K% + 1%) - 2.0/(8%*K% + 4%) - 1.0/(8%*K% +5%) - 1.0/(8%*K% + 6%)) 60 P1 = P1 * 16.0 70 NEXT K% 80 PRINT USING "#.##############",P 99 END Ready RUN PI 09:25 AM 24-Mar-75 3.14159265358979 Ready
The software used in this emulator has been sourced from many places on the Internet and unfortunately many of these seem to have disappeared. If you are looking for something I would suggest the following main sites...