Here are some instructions (and a script output of the process) for the creation of a 2 x RL02 v7m unix system using a Centos system.
I expect the process to work with any reasonable unix system. It wont work on Windows (but the 2 images of the RL02s will be OK for use on a windows simh).
The disk images run on my "simh" AND can run on my real PDP-11 hardware.
Deliberately, I HAVE NOT, done the final stages of system configuration described in the v7m setup.txt file. If I do so the disk images will become bound to a particular processor type and/or disk and/or tape type.
Since I have not carried out these steps the boot and unix on these disks will run on a wide range of hardware - 11/23+ via 11/45 up to 11/83. Sure it is not optimal for a specific processor but if you just want to play it is flexible and easy.
In an attempt to make life easier (or for those
that dont want to go through this process) you can download the "tape.tap" file and/or the two images that I have manufactured.
tape.tap.gz - the output of the perl program used to build a simulated mag tape for use with simh.
You only need that tape.tap.gz if you want to run the process to create a/some disk image(s) - but dont want to or cant run the perl program given below.
As an alternative if you want the two rl02 images without the pain/fun of
making them you can just download each of these files and gunzip them:
RL02 - system
RL02 - other files
Unzipped each of these files are 10meg.
The md5sum for the gzipped rl02s and the tape.tap are:
a515afb8e78ccdbaf2363b837f0b889f tape.tap.gz a6a1f1513ce9e5ee7c54f44c373dfa01 unix_v7m_rl0.dsk.gz ee6067f2f60f43f3985595e0d73cb66b unix_v7m_rl1.dsk.gzThe sum for the unzipped files are:
fa857bab1cb500daceddd211a2069fa5 tape.tap 5b4398ae4197118c710ad2eaaeb67ae1 unix_v7m_rl0.dsk b23f46bf615869f284cb924838d347e2 unix_v7m_rl1.dsk
OK here is the process steps that I performed to make the tape image file and then to yse the tape image to create the 2 x RL02 images.
I have used "PDP-11 simulator V3.9-0" updated as of 03-May-2012.
wget -nd -r --no-parent http://www.tuhs.org/Archive/PDP-11/Distributions/dec/Jean_Huens_v7m/
rm -f index*You will end up with something close to below
-rw-r--r--. 1 root root 2036 Apr 14 1998 README -rw-r--r--. 1 root root 14 Aug 2 2006 robots.txt -rw-r--r--. 1 root root 39917 Dec 23 22:26 setup.txt -rw-r--r--. 1 root root 13347 Apr 17 1998 spd.txt -rw-r--r--. 1 root root 12288 Apr 8 1998 tapefile1 -rw-r--r--. 1 root root 9728 Apr 8 1998 tapefile2 -rw-r--r--. 1 root root 512 Apr 8 1998 tapefile3 -rw-r--r--. 1 root root 13824 Apr 8 1998 tapefile4 -rw-r--r--. 1 root root 13824 Apr 8 1998 tapefile5 -rw-r--r--. 1 root root 3215360 Apr 8 1998 tapefile6 -rw-r--r--. 1 root root 2385920 Apr 8 1998 tapefile7.tar -rw-r--r--. 1 root root 10342400 Apr 8 1998 tapefile8.tar
cat>mkdisttap.pl<<-XX #!/usr/local/bin/perl -w use strict; # Based on mkdisttap.pl # ftp://ftp.mrynet.com/pub/os/PUPS/PDP-11/Boot_Images/2.11_on_Simh/211bsd/mkdisttap.pl # # $Id: mkdisttap.pl,v 1.1 2006/09/16 23:33:46 kirk Exp kirk $ # # Based on the example in the HOWTO using dd. Does not work! # add_file("cat mtboot mtboot boot |", 512); # Based on the maketape.c program and the maketape.data data file. add_file("tapefile1", 512); end_file(); add_file("tapefile2", 512); end_file(); add_file("tapefile3", 512); end_file(); add_file("tapefile4", 512); end_file(); add_file("tapefile5", 512); end_file(); add_file("tapefile6", 10240); end_file(); add_file("tapefile7.tar", 10240); end_file(); add_file("tapefile8.tar", 10240); end_file(); end_file(); sub end_file { print "\x00\x00\x00\x00"; } sub add_file { my($filename, $blocksize) = @_; my($block, $bytes_read, $length); open(FILE, $filename) || die("Can't open $filename: $!"); while($bytes_read = read(FILE, $block, $blocksize)) { if($bytes_read < $blocksize) { $block .= "\x00" x ($blocksize - $bytes_read); $bytes_read = $blocksize; } $length = pack("V", $bytes_read); print $length, $block, $length; } close(FILE); } XX
perl mkdisttap.pl>tape.tap
dd of=/home/iain/DEC/v7m/unix_v7m_rl0.dsk bs=512 count=20480 if=/dev/zero dd of=/home/iain/DEC/v7m/unix_v7m_rl1.dsk bs=512 count=20480 if=/dev/zero
cat>v7m<<-XX set cpu 11/73 ; set ptr disabled ; set ptp disabled ; set lpt disabled ; set rha disabled ; set cr disabled ; set rp disabled ; set rk disabled ; set xu disabled ; set xq disabled ; set rx disabled ; set tm disabled ; set ts disabled ; set hk disabled ; set vh disabled set rl0 RL02 set rl1 RL02 att tm0 /home/iain/DEC/v7m/tape.tap att rl0 /home/iain/DEC/v7m/unix_v7m_rl0.dsk att rl1 /home/iain/DEC/v7m/unix_v7m_rl1.dsk XX
./pdp11 v7mThen followed the instructions on the "setup.txt" file in the directory downloaded with wget
./pdp11 v7m PDP-11 simulator V3.9-0 Disabling CR sim> boot tm Boot : tm(0,3) file sys size: 16480 interleave factor: 6 blocks per cylinder: 20 file system: rl(0,0) isize = 5272 m/n = 6 20 Exit called Boot : tm(0,3) file sys size: 16480 interleave factor: 6 blocks per cylinder: 20 file system: rl(1,0) isize = 5272 m/n = 6 20 Exit called Boot : tm(0,4) Tape? tm(0,5) Disk? rl(0,0) Last chance before scribbling on disk. ********** HIT RETURN HERE ************* End of tape Boot : rl(0,0)rl02tmunix unix/v7m 2.1 mem = 214784 # date 9912230831 Thu Dec 23 08:31:00 EST 1999 # cd /bin # make cmd70 *******damn it I did not mean to run this cp adb70 adb ******* you might want to run cmd40 cp dcheck70 dcheck cp dump70 dump cp dumpdir70 dumpdir cp icheck70 icheck cp ncheck70 ncheck cp restor70 restor cp tar70 tar # sync # cp /etc/rc_rl02 /etc/rc # cp /etc/cl_rl02 /etc/checklist # cd / # ls bin boot boot.bu dev etc hkhtunix hktmunix hktsunix hmhtunix hmtmunix hmtsunix hphtunix hptmunix hptsunix lib lost+found map mdec mnt rl01htunix rl01tmunix rl01tsunix rl02htunix rl02tmunix rl02tsunix rphtunix rptmunix rptsunix sas sys tmp unix usr # cp rl02tmunix unix # sync # cd /dev # make rl02 rm -f rp* >/dev/null rm -f rrp* >/dev/null rm -f rl* >/dev/null rm -f rrl* >/dev/null rm -f swap >/dev/null /etc/mknod rp0 b 8 0 /etc/mknod swap b 8 0 /etc/mknod rp3 b 8 1 /etc/mknod rrp0 c 18 0 /etc/mknod rrp3 c 18 1 chmod go-w rp0 swap rp3 rrp0 rrp3 # make tm rm -f mt* >/dev/null rm -f rmt* >/dev/null rm -f nrmt* >/dev/null /etc/mknod mt0 b 3 0 /etc/mknod rmt0 c 12 0 /etc/mknod nrmt0 c 12 128 chmod go+w mt0 rmt0 nrmt0 # dd if=/mdec/rluboot of=/dev/rp0 count=1 0+1 records in 0+1 records out # cd /sys # dd if=/dev/nrmt0 of=/dev/null bs=20b files=6 314+103 records in 314+98 records out # tar40 xbf 20 /dev/rmt0 # ls README addenda conf dev h mdec ovdev ovsys sas sys # pwd /sys # cd / # sync # ls -l /dev/rp3 brw-r--r-- 1 root 8, 1 Dec 23 08:33 /dev/rp3 # sync # ls -l /dev total 15 crw--w--w- 1 root 0, 0 Dec 23 08:38 console crw-r--r-- 1 bin 8, 1 Jan 10 1979 kmem c-w--w--w- 1 root 2, 0 Mar 17 1981 lp -rw-rw-r-- 1 bin 7630 Aug 17 1981 makefile crw-r--r-- 1 bin 8, 0 Jun 6 1981 mem brw-rw-rw- 1 root 3, 0 Dec 23 08:33 mt0 crw-rw-rw- 1 root 12,128 Dec 23 08:33 nrmt0 crw-rw-rw- 1 bin 8, 2 Dec 23 08:35 null crw-rw-rw- 1 root 12, 0 Dec 23 08:33 rmt0 brw-r--r-- 1 root 8, 0 Dec 23 08:34 rp0 brw-r--r-- 1 root 8, 1 Dec 23 08:33 rp3 crw-r--r-- 1 root 18, 0 Dec 23 08:33 rrp0 crw-r--r-- 1 root 18, 1 Dec 23 08:33 rrp3 brw-r--r-- 1 root 8, 0 Dec 23 08:33 swap crw-rw-rw- 1 bin 17, 0 Jan 10 1979 tty crw--w--w- 1 root 21, 0 Oct 5 1981 tty00 crw--w--w- 1 root 21, 1 Oct 5 1981 tty01 crw-rw-rw- 1 root 21, 2 Oct 5 1981 tty02 crw-rw-rw- 1 root 21, 3 Oct 5 1981 tty03 crw-rw-rw- 1 root 21, 4 Oct 5 1981 tty04 crw-rw-rw- 1 root 21, 5 Oct 5 1981 tty05 crw-rw-rw- 1 root 21, 6 Oct 5 1981 tty06 crw-rw-rw- 1 root 21, 7 Oct 5 1981 tty07 # /etc/mkfs /dev/rrp3 20480 6 20 isize = 6552 m/n = 6 20 # /etc/mount /dev/rp3 /usr # cd /usr # dd if=/dev/nrmt0 of=/dev/null bs=20b files=7 547+104 records in 547+98 records out # pwd /usr # tar40 xbf 20 /dev/rmt0 # sync # cd / # ls -l /usr total 15 drwxrwxrwx 2 root 96 Dec 23 08:40 adm drwxrwxrwx 2 root 96 Dec 23 08:40 bin drwxrwxrwx 3 root 128 Dec 23 08:40 dict drwxrwxrwx21 bin 736 Dec 23 08:40 doc drwxrwxrwx 5 bin 416 Dec 23 08:40 games drwxrwxrwx 3 sys 512 Dec 23 08:40 include drwxrwxrwx10 bin 528 Dec 23 08:41 lib drwxrwxrwx11 bin 176 Dec 23 08:41 man drwxrwxrwx 2 bin 80 Dec 23 08:41 pub drwxrwxrwx 9 root 144 Dec 23 08:41 spool drwxrwxrwx12 bin 208 Dec 23 08:41 src drwxrwxrwx 2 sys 48 Dec 23 08:41 sys drwxrwxrwx 2 root 48 Dec 23 08:41 tmp # /etc/umount /dev/rp3 # /etc/umount /dev/rp3 umount: Invalid argument # /etc/mount /dev/rp3 /usr # sync