Here is a DRAFT step-by-step cookbook for setting up a Multics DPS8M simulator on a Raspberry Pi computer for the first time.
Derived from Eric Swenson's http://swenson.org/multics_wiki/, Charles Anthony's http://ringzero.wikidot.com/ and the README file included in the QS. Additional info from Vince Scarafino has been incorporated.
Obtain a Simulator for Your Environment
- You will need about 1GB of free disk space. The simulator works on Raspberry Pi and has been tested with Raspbian Linux.
- Make a directory called multics on your hard disk
Build from the Git repository. Vince writes:
The package to create the dps8 simulator works as downloaded without needing any other actions. The make command handles it. Some routines had to be created to handle 64 bit math. They were incorporated. Any required packages can be obtained with the apt-get command.
In a terminal session I typed:
git clone https://git.code.sf.net/p/dps8m/code dps8m-code
and then, after changing to the dps8m-code directory:
- Copy the resulting executables into a subdirectory of multics called rpi.
Smoke Test of Simulator
In a shell window,
change working directory to multics/rpi.
You should see some output:
[thvv@RPI1 qs]$ ./dps8 DPS8/M emulator (git 7ca073ce) Production build DPS8M system session id is 8325 Please register your system at https://ringzero.wikidot.com/wiki:register or create the file 'serial.txt' containing the line 'sn: 0'. FNP telnet server port set to 6180 DPS8M simulator V4.0-0 Beta git commit id: c420925a sim> quit GoodbyeType the simulator quit command to exit from dps8.
- If you don't get output like this, it could be that your dps8 is not compatible with your OS.
Install the QuickStart
This step downloads a complete Multics disk contents that includes the system commands, compilers, administration and programming tools, the entire source of Multics, help files, etc.
Download the QuickStart from
https://s3.amazonaws.com/eswenson-multics/public/releases/MR12.6f/QuickStart_MR12.6f.zip and unzip it
- Put the result in a subdirectory of multics called qs
- This step gives you a preloaded Multics disk image containing standard commands in >sss and >lang, the complete system source in >ldd, etc.
First Boot of Multics
Let's make sure nothing is broken.
In a shell window,
change working directory to multics/qs.
Execute ../rpi/dps8 MR12.6f_boot.ini.
You should see simulator and Multics output
[thvv@RPI1 qs]$ ../rpi/dps8 MR12.6f_boot.ini DPS8/M emulator (git 7ca073ce) Production build DPS8M system session id is 8325 Please register your system at https://ringzero.wikidot.com/wiki:register or create the file 'serial.txt' containing the line 'sn: 0'. FNP telnet server port set to 6180 DPS8M simulator V4.0-0 Beta git commit id: c420925a TAPE: unit is read only CONSOLE: ALERT bootload_0: Booting system MR12.6f generated 01/09/17 1119.1 pst Mon. 1552.1 announce_chwm: 428. pages used of 512. in wired environment. 1552.1 announce_chwm: 706. words used of 1024. in int_unpaged_page_tables. find_rpv_subsystem: Enter RPV data: M-> [auto-input] rpv a11 ipc 3381 0a 1552.2 load_mst: 946. out of 1048. pages used in disk mst area. bce (early) 1552.2: M-> [auto-input] bce Multics Y2K. System was last shudown/ESD at: Saturday, April 1, 2017 20:37:12 pst Current system time is: Thursday, July 13, 2017 7:52:13 pst. Is this correct? M-> [auto-input] yes The current time is more than the supplied boot_delta hours beyond the unmounted time recorded in the RPV label. Is this correct? M-> [auto-input] yes The current time I'm using is more than 12 hours after the last shutdown time recorded in the RPV label. Are you sure this is correct? M-> [auto-input] yes bce (boot) 0752.2: M-> [auto-input] boot star Multics MR12.6f - 07/13/17 0752.4 pst Thu 0752.4 Loading FNP d, >user_dir_dir>SysAdmin>a>mcs.7.6c>site_mcs 7.6c Received BOOTLOAD command... listening to 6180 0752.4 FNP d loaded successfully scavenge_vol: No volumes found Ready 0752 as as_init_: Multics MR12.6f; Answering Service 17.0 0752 as LOGIN IO.SysDaemon dmn cord (create) 0752 as LOGIN Backup.SysDaemon dmn bk (create) 0752 as LOGIN IO.SysDaemon dmn prta (create) 0752 as LOGIN Utility.SysDaemon dmn ut (create) 0752 as LOGIN Volume_Dumper.Daemon dmn vinc (create) fnpuv_open_slave 3.31 listening on port 6131 0752 as as_mcs_mpx_: Load signalled for FNP d. M-> CONSOLE: RELEASED 0752 cord Enter command: coordinator, driver, or logout: --> cord 0752 bk 0752 prta Enter command: coordinator, driver, or logout: --> prta 0752 ut copy_dump: Attempt to re-copy an invalid dump. 0752 bk r 07:52 0.342 38 0752 bk --> bk 0752 vinc 0752 vinc r 07:52 0.355 25 0752 vinc --> vinc 0752 as sc_admin_command_: Utility.SysDaemon.z: delete_old_pdds 0752 ut send_admin_command: Execution started ... 0752 ut completed. 0752 ut monitor_quota: The requested action was not performed. 0752 ut The quota of >dumps is 0, a record limit needs to be specified. 0752 ut 0752 ut Records Left % VTOCEs Left % PB/PD LV Name 0752 ut 0752 ut 166172 100003 60 42218 34130 81 pb root 0752 ut 0752 ut r 07:52 1.984 499 0752 ut --> ut 0752.6 RCP: Attached tapa_00 for Utility.SysDaemon.z 0752.6 RCP: Detached tapa_00 from Utility.SysDaemon.z 0752.6 RCP: Attached rdra for Utility.SysDaemon.z 0752.6 RCP: Detached rdra from Utility.SysDaemon.z 0752.6 RCP: Attached puna for Utility.SysDaemon.z 0752.6 RCP: Detached puna from Utility.SysDaemon.z 0752.6 RCP: Attached prta for Utility.SysDaemon.z 0752.6 RCP: Detached prta from Utility.SysDaemon.z
- In a new shell window, do telnet localhost 6180
- hit enter to select the first HSLA port. You should see a login banner.
- enter login Repair.SysAdmin -cpw
- password is "repair" -- give a new one, twice. you should be logged in.
- try some commands, e.g. who
- give the logout command when done.
[thvv@RPI1 ~]$ telnet localhost 6180 Trying ::1... telnet: connect to address ::1: Connection refused Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. HSLA Port (d.h000,d.h001,d.h002,d.h003,d.h004,d.h005,d.h006,d.h007,d.h008,d.h009,d.h010, d.h011,d.h012,d.h013,d.h014,d.h015,d.h016,d.h017,d.h018,d.h019,d.h020, d.h021,d.h022,d.h023,d.h024,d.h025,d.h026,d.h027,d.h028,d.h029)? Attached to line d.h000 Multics MR12.6f: Installation and location (Channel d.h000) Load = 5.0 out of 90.0 units: users = 5, 07/12/17 0959.3 pst Wed login Repair -cpw Password: New Password: New Password Again: Password changed. You are protected from preemption. Repair.SysAdmin logged in 07/12/17 0959.8 pst Wed from ASCII terminal "none". New messages in message_of_the_day: Welcome to the Multics System. print_motd: Created >user_dir_dir>SysAdmin>Repair>Repair.value. r 09:59 0.327 33 who -a -lg Multics MR12.6f; Installation and location Load = 6.0 out of 90.0 units; users = 6, 1 interactive, 5 daemons. Absentee users = 0 background; Max background absentee users = 3 System up since 07/12/17 0957.4 pst Wed Last shutdown was at 04/01/17 2036.9 pst Sat Login at TTY Load User ID 07/12/17 09:57 cord 1.0 IO.SysDaemon 09:57 bk 1.0 Backup.SysDaemon 09:57 prta 1.0 IO.SysDaemon 09:57 ut 1.0 Utility.SysDaemon 09:57 vinc 1.0 Volume_Dumper.Daemon 09:59 none 1.0 Repair.SysAdmin r 10:00 0.052 0 whatever other commands you like logout Repair.SysAdmin logged out 07/12/17 1001.0 pst Wed CPU usage 1 sec, memory usage 0.2 units, cost $0.06. hangup Multics has disconnected you Connection closed by foreign host.
- If this all works, congratulations, your machine can simulate Multics.
Shut Down Gracefully
- In the window where you started dps8, hit ESC to enter admin commands
- Type logout * * * to log out the daemons and hit ESC to see the output
- Hit ESC again and type shut to shut down, hit ESC to see the output
- Type die to tell BCE to die, and answer yes
Type quit to exit from dps8
ESC M-> logout * * * Ready M-> ESC CONSOLE: RELEASED 0806 as LOGOUT IO.SysDaemon.z dmn cord 0: 0 $0.02 (looc) 0806 as LOGOUT Backup.SysDaemon.z dmn bk 0: 0 $0.03 (looc) 0806 as LOGOUT IO.SysDaemon.z dmn prta 0: 0 $0.02 (looc) 0806 as LOGOUT Utility.SysDaemon.z dmn ut 0: 2 $1.82 (looc) 0806 as LOGOUT Volume_Dumper.Daemon.z dmn vinc 0: 0 $0.03 (looc) ESC M-> shut ESC 0806 as act_ctl_: shutdown, 6 0.03 0.03 0.00 0.79 0:0:9 $3.76 0806.9 shutdown complete DBG(8975795132887)> ERR ERR: Need status register data format DBG(8975795132935)> ERR ERR: doPayloadChan expected IDCW 10 (12) ESC bce (boot) 0806.9: M-> die Do you really wish bce to die? M-> yes BCE DIS causes CPU halt simCycles = 8975944343092 cpuCycles = 191589398 Timer runout faults = 6672 Derail faults = 1 Lockup faults = 65 Connect faults = 1749 Illegal procedure faults = 5 Directed fault 0 faults = 630 Directed fault 1 faults = 6653 Access violation faults = 282 Fault tag 2 faults = 2562 Halt, IC: 000012 (000000000000) sim> quit Goodbye
Tailor Your Multics Site
Edit the file qs/site_setup.sh.
This is a script that executes comands from the file to
- start your simulator and boot Multics from your disk image
- enter Multics console "admin" mode
- execute system administration commands to
- Set your system name
- Set your personal name -- must not have spaces
- Set time zone
- exit admin mode, shut down Multics, and exit the simulator
- Execute sh site_setup.sh > configure.ini to write a new configure.ini
- Execute in a command shell: dps8 configure.ini -- this will boot Multics and run a bunch of commands to configure users, etc. -- should see some output [screenshot] then it will shut down
Use Your Multics Site
- Execute in a command shell: dps8 MR12.6f_boot.ini
- As previously, in a new window, do telnet localhost 6180 and log in, this time to the user name you specified in site_setup.sh
- Multiple users can log in to your simulated Multics.
- If you open ports on your machine to the outside world, people can log into your system from anywhere.
- Follow the instructions under "Shut Down Gracefully" when you are finished using the simulator.
Note: You may see, when booting with the MR12.6f_boot.ini, a seemingly spurious yes answer to a prompt, as shown below:
bce (boot) 1802.0: M-> [auto-input] yes bce: Unrecognizable request. Type lr for a list of requests.
You should ignore this, and not try to fix it. Sometimes Multics will ask one more question here, to which the correct answer is yes.