In addition, the image contains an already installed DECnet, TCP/IP and RPM, making it easy to keep the system up to date for the different components, and easy to install any other layered products that the user wish to have available.
On initial booting of the image, a configuration dialog is performed, which sets the system up in a suitable way for the users specific network. This configuration address both machine name, DECnet, TCP/IP, possible Multinet connections and some basic system information like time zones.
If you have any questions about the information on this page, the system image discussed here, or about RSX in general, please contact me: Johnny Billquist, firstname.lastname@example.org.
There are two images available:
---8<--- set cpu 11/70 set cpu 4096 set cpu idle set rq0 rauser=1024 set tq0 write att -f tq0 e11 pidp.tap att rq0 pidp.dsk set clk 50 set dz lines=8 att dz 42,speed=*32 set xu ena set xu type=delua set xu mac=aa:00:04:00:ea:04 att xu en0 set xu throttle ---8<---Using this configuration, you can then boot either tq0 or rq0, depending on if you want to boot from the disk or the tape. Note that here it is assumed you want rq0 to be a 1G disk. Just change the number after "rauser=" to whatever size you want the disk to be, in megabytes. (Note: RSX do not support disks larger than 8G. If you have a larger disk, RSX will only use the first 8G of it.)
---8<--- sim> boot tq RSX-11M/RSX-11M-PLUS STANDALONE COPY SYSTEM V4.8 RSX-11M/RSX-11M-PLUS Standalone Configuration and Disk Sizing Program Valid switches are: /CSR=nnnnnn to change the default device CSR /VEC=nnn to change the default device vector /FOR=n to change the default magtape formatter number /DEV to list all default device CSR and vectors Enter first device: MU0: Enter second device: DU0: Hit RETURN and enter date and time as 'TIM HH:MM MM/DD/YY' >tim 22:45 4/13/23 >tim 22:45:02 13-APR-2023 >run bad > BAD>DU0: BAD -- DU0: Total bad blocks= 0. BAD>^Z >run bru > BRU>/rew/bac:pidp/ini mu0: du0: BRU - Starting Tape 1 on MU0: BRU - End of Tape 1 on MU0: BRU - Completed BRU>^Z > Simulation stopped, PC: 001344 (CLRB (R1)+) sim> ---8<---
The questions should be pretty simple to understand and answer. The TCP/IP configuration already on the system is that it will use DHCP, only start up ntp, telnet server and ftp server, and nothing more. If this is enough, then you do not even need to reconfigure the TCP/IP part, but if you do choose to change the configuration, all questions will have as the default answer the current configuration, so it's easy to simply change the bits you want to change, and leave the rest as it is.
After the first boot, this configuration dialog will not be repeated, however, it is possible to run the configuration manually at any point in time.
Any change to the configuration done after the system have completed the booting will only take effect after the next boot.
The boot process will ask a few questions. All questions have a default answer, and a timeout, so that if left unattended, the system will boot up to normal operation with networking.
Note specifically that if no date/time is given, the system will start up with an incorrect time. However, during the start of the TCP/IP system, correct time will be set using NTP.
If there is a need for some special testing/troubleshooting, you can boot and not run through the network startup.
One suggestion is to create a user with DCL as the command line interface. This CLI is much easier to use and understand than MCR, which is the CLI used for the two pre-created accounts.
When using DCL, if you are not familiar with RSX, it might be a good idea to give the command "SET TERMINAL/SERIAL" and "SET TERMINAL/CONTROL=C".
This will make your session work much more like you are probably used to. If this is not set by default on your terminal, you might want to consider putting these commands into your LOGIN.CMD file.
In case you just want to use DCL on your current session, no matter which account you logged into, and what CLI that account have by default, you can always switch your CLI at any time.
When daylight savings time changes, this needs to be told to the system. This can be done rather easily at any time:
RPM have an initial configuration of using TCP/IP and communicating with Mim.Stupi.NET for the RPM repository. If you want to change this, you need to configure RPM: "@[RPM]RPM CONFIG"
To see what packages exist, try: "@[RPM]RPM LIST"
For more information, checkout the RPM documentation.
However, in case you just want to change information later, the configured links can be found in the file LB:[IPNET]IPNET.CFG.
For more information on HECnet, see the HECnet page.
Once you are on HECnet, the first thing you want to do is getting your nodename database populated. There are tools available for this. The following section describes the steps you need to take to get a fully populated nodename database, and how to updated it later.
---8<--- $ RUN LB:[5,54]NNCFSL To select a menu item, enter the letter to the left of the item's description at the prompt. Your choices are: A) Collect node names and addresses and build a node name database from them B) Reorganize an existing node name database C) Exit Enter your choice here [Default:C] > A To select a menu item, enter the letter to the left of the item's description at the prompt. Your choices are: A) Input node names and addresses from the terminal B) Collect node names and addresses from old CETAB.MAC files C) Collect node names and addresses from another node D) Build the node name data base and exit to the main menu E) Exit to the main menu without building the node name data base Enter your choice here [Default:D] > C Enter the name of the node from which you want to collect node definitions. To return to the previous menu, enter CTRL-Z or press RETURN without entering a node name. (NOTICE: Depending on network activity, line speed, and the number of definitions being collected from the remote node, this operation could take up to several hours to complete.) Enter your choice here [Default:] > MIM Enter the name of the node from which you want to collect node definitions. To return to the previous menu, enter CTRL-Z or press RETURN without entering a node name. (NOTICE: Depending on network activity, line speed, and the number of definitions being collected from the remote node, this operation could take up to several hours to complete.) Enter your choice here [Default:] > To select a menu item, enter the letter to the left of the item's description at the prompt. Your choices are: A) Input node names and addresses from the terminal B) Collect node names and addresses from old CETAB.MAC files C) Collect node names and addresses from another node D) Build the node name data base and exit to the main menu E) Exit to the main menu without building the node name data base Enter your choice here [Default:D] > 1042. node definitions have been loaded into DU0:[005,054]NNS.DAT;253 To select a menu item, enter the letter to the left of the item's description at the prompt. Your choices are: A) Collect node names and addresses and build a node name database from them B) Reorganize an existing node name database C) Exit Enter your choice here [Default:C] > $ SCP STOP SCP-I-1: The node name server was successfully stopped. $ SCP START SCP-I-1: The node name server was successfully started. $ ---8<--- In addition to this initial bootstrap of the node name database, you can create a batch file to do all of these steps automatically. You can just copy the next section and put it in a file named "NNC.BAT", and then you can SUBMIT NNC to update your node name database at any time.---8< NNC.BAT --- $job $run lb:[5,54]nncfsl a c mim $scp stop $scp start $eoj ---8<---
---8<--- >mou mu:/for >bru /noini/ufd/new/bac:pidp mu: du: BRU - Starting Tape 1 on MU0: BRU - End of Tape 1 on MU0: BRU - Completed >set /def=[1,54] >pip rsx11m.sys/nv/co/bl:2050.=rsx11m.tsk >ins $vmr >vmr @sysvmr Loading Executive data space Data space loading completed VMR -- *DIAG*-Installed tasks or commons may no longer fit in partition SET /TOP=SYSPAR:-* VMR -- *DIAG*-Loadable driver larger than 4K LOA TT: VMR -- *DIAG*-Installed tasks or commons may no longer fit in partition SET /TOP=DRVPAR:-* SECPOL 117734 00200400 01000000 SEC POOL SYSPAR 117670 01200400 00205400 MAIN 117624 01200400 00115300 RO COM !DIR11M! 117434 01315700 00005200 TASK [...LDR] 117230 01323100 00033300 TASK [MCR...] 117024 01356400 00010500 TASK [TKTN ] 116620 01367100 00003200 TASK [SHF...] 116414 01372300 00013500 TASK [RCT...] DRVPAR 116334 01406000 00147300 MAIN 116270 01406000 00006700 RO COM !TTEXT ! 116204 01414700 00020700 RO COM !TTCOM ! 116120 01435600 00035000 DRIVER (TT:) 115320 01472600 00003500 DRIVER (DL:) 115254 01476300 00005100 RO COM !PUCOM ! 114454 01503400 00014000 DRIVER (DU:) 114120 01517400 00011500 DRIVER (MU:) 113730 01531100 00000100 DRIVER (NL:) 113664 01531200 00017400 DRIVER (VF:) 113620 01550600 00000300 DRIVER (CO:) 113554 01551100 00002500 DRIVER (VT:) 113510 01553600 00001500 DRIVER (RD:) GEN 113444 01555300 15222500 MAIN ...LDR 12.01 117500 SYSPAR 248. 00005200 LB0:-00522631 FIXED TKTN 07.01 117070 SYSPAR 248. 00010500 LB0:-00554221 FIXED F11MSG 15.00 111240 GEN 200. 00006300 LB0:-00542504 MTAACP 17.00 110644 GEN 200. 00016200 LB0:-00547167 SHE... 06.01 110374 GEN 200. 00014500 LB0:-00552637 MCR... 08.00 117274 SYSPAR 160. 00033300 LB0:-00546144 FIXED F11ACP 07.00D 113230 GEN 149. 00041000 LB0:-00541223 ERRLOG 05.03 112670 GEN 148. 00056300 LB0:-00541070 PMT... 02.02 112230 GEN 148. 00007500 LB0:-00550100 COT... 02.04 111364 GEN 145. 00014300 LB0:-00535324 HRC... 05.00 110770 GEN 140. 00042500 LB0:-00543270 PMD... 07.05 110520 GEN 140. 00017600 LB0:-00550050 SYSLOG 04.04 111760 GEN 130. 00024500 LB0:-00553077 SHF... 07.01 116664 SYSPAR 105. 00003200 LB0:-00552656 FIXED RCT... 06.02 116460 SYSPAR 100. 00013500 LB0:-00550544 FIXED UML... 02.01 111634 GEN 100. 00023500 LB0:-00554262 FXR... 03.02 111114 GEN 100. 00003300 LB0:-00542476 BAP0 04.11 113014 GEN 80. 00050300 LB0:-00533001 QMG... 06.04 112104 GEN 75. 00037300 LB0:-00550503 LP0 07.04 112450 GEN 70. 00020300 LB0:-00545462 ACNT 06.10 111510 GEN 50. 00057300 LB0:-00532367 SHUTUP 04.04 110250 GEN 50. 00016500 LB0:-00552663 ...RMD 05.00 002042+ GEN 225. 00042000 LB0:-00550566 ...DCL 06.01 002016+ GEN 160. 00062500 LB0:-00535631 ...DMO 04.02 002020+ GEN 160. 00017400 LB0:-00536605 ...MCR 08.36 002034+ GEN 160. 00040300 LB0:-00546201 ...MOU 26.06 002036+ GEN 160. 00045600 LB0:-00547076 ...CA. 01.00 002072+ GEN 150. 00026200 LB0:-00553126 ...INS 17.00 002032+ GEN 100. 00053300 LB0:-00544155 ...SAV 11.00 002066+ GEN 100. 00070500 LB0:-00523100 ...UFD 07.03 002074+ GEN 100. 00023700 LB0:-00554234 ...VCP V04.10 002076+ GEN 90. 00020300 LB0:-00554431 ...ACS 04.00 002050+ GEN 70. 00006200 LB0:-00532622 ...ACC 05.00 002010+ GEN 65. 00032100 LB0:-00532130 ...SHA 06.01 002070+ GEN 65. 00032200 LB0:-00552464 ...AT. 10.0 002024+ GEN 64. 00056500 LB0:-00543541 ...INI 24.00 002026+ GEN 60. 00037300 LB0:-00544061 ...HOM 24.00 002030+ GEN 60. 00037300 LB0:-00544061 ...BRO 09.10 002012+ GEN 50. 00041600 LB0:-00533130 ...BYE 06.05 002014+ GEN 50. 00022000 LB0:-00533435 ...HEL 06.10 002022+ GEN 50. 00031600 LB0:-00542634 ...PIP 22.00 002040+ GEN 50. 00027500 LB0:-00547574 ...UNL 05.04 002044+ GEN 50. 00021500 LB0:-00554357 ...ACD 03.00 002046+ GEN 50. 00042600 LB0:-00532221 ...BOO 03.10 002052+ GEN 50. 00047300 LB0:-00532727 ...CON 05.00 002054+ GEN 50. 00135600 LB0:-00535122 ...ELI 04.04 002056+ GEN 50. 00032600 LB0:-00541033 ...LOA 05.03 002060+ GEN 50. 00040100 LB0:-00545265 ...MAG 03.00 002062+ GEN 50. 00037300 LB0:-00546102 ...PSW 03.03 002064+ GEN 50. 00017600 LB0:-00550166 YLA OFL CPA CSR=177560 VEC=60 PRI=5 YZA OFL CPA CSR=160100 VEC=300 PRI=5 DLA OFL CPA CSR=174400 VEC=160 PRI=5 DUA OFL CPA CSR=172150 VEC=154 PRI=5 MUA OFL CPA CSR=174500 VEC=260 PRI=5 VF0: OFL DRIVER VF1: OFL DRIVER CO0: OFL DRIVER TT0: YLA0: OFL DRIVER TT1: YZA0: OFL DRIVER TT2: YZA1: OFL DRIVER TT3: YZA2: OFL DRIVER TT4: YZA3: OFL DRIVER TT5: YZA4: OFL DRIVER TT6: YZA5: OFL DRIVER TT7: YZA6: OFL DRIVER TT10: YZA7: OFL DRIVER VT0: OFL DRIVER RD0: ONL DRIVER DL0: DLA0: OFL DRIVER DL1: DLA1: OFL DRIVER DL2: DLA2: OFL DRIVER DL3: DLA3: OFL DRIVER DU0: DUA0: OFL DRIVER DU1: DUA1: OFL DRIVER DU2: DUA2: OFL DRIVER DU3: DUA3: OFL DRIVER MU0: MUA0: OFL DRIVER NL0: OFL DRIVER POOL=1200:13280.:13280.:2004 >boo rsx11m XDT: 87 XDT>g RSX-11M-PLUS V4.6 BL87 > sav RSX-11M-PLUS V4.6 BL87 1920.KW System:"PIDP " >RED DU:=SY: >RED DU:=LB: >RED DU:=SP: >MOU DU0:"RSX11MPBL87" >@DU:[1,2]STARTUP >* Please enter time and date (HH:MM DD-MMM-YYYY) [S T:1M]: ^Z >@What happens in this example is that first the contents of the tape is restored to your existing system, with all files restored with new versions, so that they are picked in preference of any existing files with the same names that already exists on the system.
>sav /wb DMO -- System disk being dismounted DMO -- SYSTEM dismounted from DU0: *** Final dismount initiated *** 00:00:12 *** DU0: -- Dismount complete > RSX-11M-PLUS V4.6 BL87 1920.KW System:"PIDP " >RED DU:=SY: >RED DU:=LB: >RED DU:=SP: >MOU DU0:"RSX11MPBL87" >@DU:[1,2]STARTUP >* Please enter time and date (HH:MM DD-MMM-YYYY) [S T:1M]: ---8<---
Next, a new system image is created from the compiled kernel. This image needs to be large enough to contain the memory dump of the running system, and be contiguous.
After that, VMR is used to prepare the image for use, which means setting up and installing partitions, device drivers, tasks and other parameters. Once this has been done, the system image is in a good enough state to be booted.
At the first boot of a new system image, you get to the kernel debugger. All that is required here is that the execution is allowed to start, so just the simple 'G' command is required. After that, the system is up and running.
At this point, you have a runnig system. However, you do not want to get into the kernel debugger every time you boot the image. So you save the current memory state back to the system image at this point, so that any new boot will get back to this exact point. It is also good to do the plain SAV command here, without any addtional switches, as that confirms that the system is working correctly even after a reboot. If anything would fail here, you will still be booting the old system if a boot scratch to the disk is done.
Once it has been confirmed that your new system image boots fine, you save it again, but this time adding the switch "/WB", which means writing the boot block. That means that future boots from this disk will now boot to this system image.
You can have several bootable images on a disk. Each one can be booted by just giving the filename of the system image as an argument to the BOOT command in RSX. However, there can only be one hardware bootable system image, which is pointed out by the boot block.
At this point, you have your new system image, and all updated tasks, networking and so on installed.
On a final note - if you already had programs installed using RPM in the past, then it is recommended that you delete [RPM]INSTALLED.LST; as this is a file that was installed during this upgrade, and it does not reflect what packages you already have installed. If this is not done, no big harm is done, but RPM will not think that those packages are installed anymore, and will not apply any updates to them until you install them again, even though they are already installed.
This is a more complex task, but rest assured that all the sources and libraries for the patched versions of all components of RSX have been included in the distribution.
For generating your own system, it is recommended that you read the appropriate RSX manuals on the topic.
This text should be expanded on, but the general outlines for generating your own system is:
First of all, there is a lot of manuals available for RSX. See the manuals page to start. There you will find documentation both on RSX itself, and a lot of layered products, and networking.
There are a few things people often want to do/know, so here is a short list of answers/pointers for those:
Yes. Check out the CLEACD RPM package.
You have several.
You have lots. Checkout @LB:[RPM]RPM LIST to get an idea.
In case you are interested in something like databases and a bit programming in a high level sense, you could try playing with Datatrieve. The manuals contain a lot of examples and a database to start playing with.
BASIC, LISP, APL and FORTH are programming languages that can be used interactively to just play around with in a simple way. They are very different languages, though. If you are not familiar with some of them, reading manuals or online tutorials might be needed.
Check out the TECKEN package in RPM, which is designed for this specific question.
Sure. Why not try DUNGEON, the precursor of ZORK.
Or why not try the actual Infocom games themselves?
There is more... Just check out the RPM list.
Oscar made this wonderful PiDP-11, and he also made space available for doing additional hardware hacks. However, in the end, the PiDP-11 is based on simh, so this is a layered problem.
First you need to add the actual hardware, and get access to it from the Raspberry PI, or whatever platform you are using.
Next you need to make this device available in simh, which means writing some code to expose the device as some registers that the PDP-11 side can access, which would allow a program on the PDP-11 side to eventually communicate with the device.
Then you need a device driver on the RSX side in order for any programs you are running in RSX to get access to the device.
This one might be a little tricky. If the hardware appears emulating some standard DEC interface, then you might just need to build the device driver (see the appropriate RSX manual). If the device is something else, you will need to write your own device driver in RSX for it. There is a manual for this as well, but this is not a trivial task. Feel free to ask around, if you get here.
Once you have a device driver, you can then write programs that interact with it from most any language. But you might want to consider writing a library for easy use from high level languages, so you don't have to write QIO$ calls in your code all the time. (QIO$ is the basic system call to interact with any device).