Last update 03-03-16 /drb
Thanks to Nigel Williams for updates resulting from installing Rev. 23 and using a newer version of the emulator.
This file should currently be roughly correct for a PRIMOS Rev. 22 or Rev. 23 installation. I intend to update it to have notes on other releases, and on installing chargeable (layered) products over time.
To help you get some revision of PRIMOS running on the hobbyist release of Jim Wilcoxson's Prime 50-series emulator software.
1. You need a copy of the emulator. You currently obtain this by sending an email to Jim requesting a copy. There's no support for this version. (Jim may no longer be building hobbyist versions of his emulator.)
2. You need a set of images of some version of PRIMOS install tapes. The emulator understands the .tap file format used by SimH. If you _have_ actual tapes and can't read them yourself, or if you need help converting non-SimH images to the right format, visit the places listed in Resources below to ask about having them imaged.
3. You need a PowerPC Macintosh, or a PPC emulator (PearPC?) running Darwin or OS X. You're probably looking for something in the G3/G4/G5 era. Check university salvage yards, ask your friends. Perfectly adequate machines for this project should be inexpensively or freely available. Note that OS X uses enough disk space that you may want a drive larger than 8 GB. I can't help with PearPC; I haven't used it.
5. You'll want to be able to figure out octal numbers. Primes love base eight. (Wikipedia Octal)
Questions can be asked in the comp.sys.prime newsgroup or on IRC in #classiccmp on Libera. Various power users, former employees of Prime distributors, and ex-Primates, as well as the author of the emulator, read the newsgroup. In IRC, try asking pjustice or sark.
Many Prime manuals are available here at SYSOVL.INFO. Some additional manuals not yet scanned are in the possession of various members of the community, so if you need something you can't find, ask.
The hobbyist release comes with certain limitations. One of these is a restriction on the number and size of emulated disk drives: a single drive not larger than 160 MB. Another is that the system console is the only connected terminal.
Based on the disk size limit and PRIMOS requirements, we will set up the virtual disk drive as a 160MB SMD device, and partition it with 8 of the 10 heads used for the file system, and 2 heads used for paging. This is pretty close to the largest file system we can arrange given the constraints. If you really want to run a program that uses huge arrays, you will have to build a different layout, but this should let you do most things. It is possible to build a system on the 158MB SMD disk type and have slightly more file system space, but in practice, this leaves not quite enough paging space.
I suggest you set up a directory structure something like this:
p50emu -+ | +- tapes | +- standalones | +- <versionorname>
Place the emulator binary (em) in the p50emu directory. Place the tape image files in the tapes subdirectory.
Obtain CPBOOT.PMA from http://yagi.h-net.msu.edu/primos_install/. Place it in the standalones subdirectory. For those of you who worked with Primes, note that this is actually a binary module, despite the unusual file naming -- it came from a microcode floppy this way.
Obtain cfg.tap from http://yagi.h-net.msu.edu/primos_install/. This contains starter configuration files for PRIMOS, to reduce the amount of editing you have to do.
Make a subfolder (represented by <versionorname> above) named so that you can keep track of what emulated system is installed in it. (You can make multiple emulated systems.) For example, you could use PRIMOS version numbers, or name the directory based on how you intend to use the system it contains (games, softwaredev, etc). In this directory, create an empty file called dev26u0.160m. (NOTE: later versions of the emulator look instead for the name disk26u0.160m.) The emulator uses filenames to find its configured devices; this file becomes the disk set to be unit 0 and attached to the controller at address '26. Also create a symlink to the first image file from your PRIMOS tape set (i.e. ../tapes/something.tap) called dev14u0. This will be tape drive unit 0 attached to the controller at address '14. (NOTE: later versions of the emulator look instead for the name mt0.)
You'll want two terminal windows or consoles available. You will run the emulator in one, and use the other to "change tapes" by replacing the target of the "dev14u0" symlink.
First we need to make the filesystem on the virtual disk. To do this, we will boot the MAKE program off the tape. (We'll actually use a shim of sorts; newer PRIMOS tapes don't boot well on at least some versions of the emulator. The shim is CPBOOT.PMA, and a real hardware machine would use it as well. We'll tell it to chain to the boot on the tape image.) In one of your terminal windows, start the emulator by typing this command:
../em -boot ../standalones/CPBOOT.PMA -ss 10005
You'll see version/copyright banners from CPBOOT, then the tape boot record. Then you'll be asked:
BOOT RUN FILE TREENAME=
Enter:
make.save
If you make a typing mistake, type a question mark (the kill character) and start typing make.save over again. The system will tell you it's loading MAKE, then you'll get the version/copyright banner from MAKE, and it will ask you to:
Enter command line options:
Enter the following carefully, all on one line. Some versions of the emulator seem to double echo here. Again, if you make a mistake, enter a ? and start typing from the beginning:
-disk -part -dt -new -ac -badlev -baud -nin -dbs -nfl -sec
MAKE will then ask you a series of questions. The questions and their answers are:
Physical device? 2060 Partition name? cmddev Disk type? (press <return> for a list) 160mb Which sectoring scheme would you like? Enter "F" for Forward Sectoring, "R" for Reverse Sectoring: r Level of badspot checking? (default = 4) 0 Baud rate? 9600 OK to enable -FORMAT? [Y,N,Q] n
MAKE will create the filesystem and the emulator will exit. You should see the phrase "disk created" or "Partition cmddev created" somewhere in the output.
Next, we need to create the paging space. Boot MAKE again:
../em -boot ../standalones/CPBOOT.PMA -ss 10005 make.save
This time use the MAKE options (all on one line):
-disk -split -part -dt -new -ac -badlev -nin -nfl -sec
and MAKE will ask and you will answer:
Physical device? 40460 Partition name? pagdev Disk type? (press <return> for a list) 160mb Which sectoring scheme would you like? Enter "F" for Forward Sectoring, "R" for Reverse Sectoring: r Level of badspot checking? (default = 4) 0 Please specify how you want to -SPLIT this partition. Maximum number of paging/CDD records available is 14770. Number of paging/CDD records? max
You should again see "disk created" or "Partition pagdev created" and the emulator will again halt.
Now we'll boot PRIMOS from tape to begin restoring the software distribution. Start the emulator again:
../em -boot ../standalones/CPBOOT.PMA -ss 10005
and at:
BOOT RUN FILE TREENAME=
enter:
prirun>primos.save
Remember, the kill character is a question mark. Now PRIMOS will ask you a few questions to get itself configured:
Enter COMmand DEVice: Enter PAGing DEVice: Enter Number Terminal USeRs:
to which the answers are 2060, 40460 and 1, respectively. After you answer those questions, you should see the version/copyright banner and some other startup messages. (You'll also see some emulator messages about device initialization.) Eventually, you'll get to a command prompt ("OK, "). Terminal i/o in PRIMOS is not synchronous, so it may appear, then be followed by a few other lines.
Now type the following commands to set your working directory, claim the tape drive device, and run the tape restore program from the tape:
a mfd 0 as mt0 mtresume mt0 magrst.save
(NOTE: Somewhere about Rev. 23 Prime switched from shipping magrst.save to magrst.run. If the above fails for you when installing from a Rev. 23 or later tape set, retry just the mtresume command, using the name magrst.run.)
Now MAGRST, the tape restore program, will banner, and ask you three questions:
Tape Unit (9 Trk): Enter logical tape number: Ready to Restore:
to which the answers are 0, 1 and yes, respectively. When you've answered these questions, MAGRST will restore the files from the boot tape onto the disk. Now, start MAGRST again, from disk this time:
r magrst
and answer the three questions with 0, 2 and yes. This will restore most of the base operating system files. In the middle of this run, MAGRST will reach the end of the first tape reel. When it prompts you to enter the next reel, go to your second window and:
Start MAGRST a third time:
magrst
and answer the questions with 0, 2 and yes.
For the final restore, we'll read a set of basic configuration files from the cfg.tap file to get you started. In your second window, remove the dev14u0 (mt0) symlink again, and make a new one pointing to cfg.tap. In the first window:
a cmdnc0 magrst 0 1 yes
(NOTE: don't miss the 'a cmdnc0' part or you'll restore the files in the wrong place.)
You've now read in all of the basic operating system parts.
Type the following commands to set up search rules:
a system r entry$.install.cpl ssr search_rules*>entry$.sr r attach$.install.cpl r binary$.install.cpl r command$.install.cpl r include$.install.cpl
Now shut down the operating system:
shut all yes
and boot again, from disk this time:
../em -boot 14114
Create the user authorization database. The dialog looks something like this:
OK, edit_profile SAD does not exist. Create it? y *** Creating User Validation File. Projected number of users: 32 System administrator name: system Create project "DEFAULT"? y Set system-wide attributes for user "SYSTEM": Password: <password for system> Groups: <enter> Set limits for project "DEFAULT": Groups: <enter> Maximum number of command levels: 10 Maximum number of live program invocations per command level: 10 Maximum number of private, dynamic segments: 64 Maximum number of private, static segments: 64 Set profile attributes for project "DEFAULT": Groups: <enter> Initial attach point: <cmddev>cmdnc0 Attribute limits for the project: Number of command levels: 10 Number of live program invocations per command level: 10 Number of private, dynamic segments: 64 Number of private, static segments: 64 Set attributes for user "SYSTEM" in project "DEFAULT": Groups: <enter> Initial attach point: <cmddev>cmdnc0 Create/change user attributes? no Check entry? no > sd -on > quit
NOTE: These answers changed a little bit from rev to rev. This is approximately correct for rev 21 and rev23.
Set up some compiler libraries:
a translators r translators.install.cpl
Now shut down the operating system again:
shut all yes
and boot from disk again:
../em -boot 14114
and you should have a working operating system.
You might want to read some of the Prime documentation to learn how to actually use your new toy. Some suggested manuals to start:
FDR3108/DOC3108 Primos Commands Guide FDR3104 User's Guide to Editor and Runoff DOC9304 Operator's Guide To System Commands DOC10131 System Administrator's Guide Vol1/2/3
The formal software installation guide for Rev. 22 is at:
http://yagi.h-net.msu.edu/prime_manuals/r22sinstgde.pdf
Some tape sets include additional layered software. Installation of this software generally involves restoring the logical saves from the tapes using magrst, attaching to restored directories, and running install scripts. On a 160 MB disk, you will have to be careful which and how many additional packages you install, and you may have to read them from tape one at a time and clean up the distribution directory before moving on to another package.
For additional suggestions, visit the places listed in Resources, explain what you'd like to do, and someone can probably help you get started.