オリジナルのドキュメントが想定しているのはPDP-11/40にTU10テープドライブやRK05ディスクパックが接続されている環境のようです。まずはじめにおこなうのは、テープからコピー用ツールを起動させて、UNIXのバイナリをディスクに書き込むことです。このために以下に示すファイルを用意してSIMHを動かします。
set cpu 11/40100000番地から指定されているのが、コピー用ツールをテープからメモリに読み込むためのプログラムです。100002番地の172526というのは、TM11におけるmemory address (MTCMA)として割り当てられている772526番地のミラーとして参照できるようです。この数値を172524番地(byte record counter (MTBRC))に格納しています。8進数の172526は10進数なら62806で、512×123よりも僅かに小さな値です。読み込もうとしているツールはテープの先頭100ブロックに入っているので、123ブロックでは読み込み過ぎなのですが、少ないよりも多い分には構わないということなのでしょう。172526という数値を、アドレスとしても、読み込むバイト数としても利用しており、トリッキーと言えるかもしれません。
set tm0 locked
attach tm0 Unix-v6-Ken-Wellsch.tap
attach rk0 rk0
attach rk1 rk1
attach rk2 rk2
d cpu 100000 012700
d cpu 100002 172526
d cpu 100004 010040
d cpu 100006 012740
d cpu 100010 060003
d cpu 100012 000777
g 100000
次に060003を172522番地(command (MTC))に入れて、無限ループに入ります。マニュアル「TM11 DECmagtape system (DEC-11-HTMAA-D-D)」の4-6頁にある「4.2.2 Command Register (MTC)」の説明によると、bit14(DEN 8)とbit13(DEN 5)の組み合わせでテープ密度を指定します。この場合は11なので「800 bits/inch, 9-channel tape」ということになります。bit3からbit1はFunction Bitsで、ここでは001なので「Read」を指定しています。そしてbit0はGOを指定するビットなので、指定された処理が開始されます。
TM10に繋がれたTU10はマニュアル「TU10 DECmagtape maintenance manual (EK-TU10-MM-007)」の「Table 1-2 TU10 DECmagtape Specification」によるとテープ速度は45 ipsだそうです。512バイトで123ブロックを読み込むためには、テープ密度が800 bpiなら78.72秒かかります。実際にはモーターが回りだしたり、テープをシークしたりして、数分間くらいかかったかもしれません。しかしSIMHは物理的な機械があるわけではないので、一瞬で処理が終わります。
無限ループしているプログラムをCtrl-Eで止めて、0番地からプログラムを動かすとコピー用ツールのプロンプトが現れます。オリジナルドキュメントではテープの100ブロック目から4000ブロック分に入っているUNIXバイナリを1ブロックと3999ブロックに分けてRK05にコピーしています。その手順を忠実に守っても良いでしょうし、いきなり4000ブロック分をコピーしても良いのではないかと思います。
次にディスクにコピーしたUNIXを起動して細々とした設定をおこないます。このために以下に示すファイルを用意してSIMHを動かします。
set cpu 11/40ここでSIMHにはブート用のコマンドが用意されていますので、それを利用します。オリジナルのドキュメントには起動用のコマンドが指定されていますので、それを使っても構いません。ただし「d sr 173030」という指定の有無で起動した時の様子が変わります。
set tm0 locked
attach tm0 Unix-v6-Ken-Wellsch.tap
attach rk0 rk0
attach rk1 rk1
attach rk2 rk2
d sr 173030
boot rk0
指定があれば、いきなりコマンド入力用のプロンプトが出ます。
PDP-11 simulator V3.9-0指定しないと、ログインプロンプトが出ます。
Disabling XQ
@rkunix
mem = 1035
RESTRICTED RIGHTS
Use, duplication or disclosure is subject to
restrictions stated in Contract with Western
Electric Company, Inc.
#
PDP-11 simulator V3.9-0「d sr 173030」というのが何をしているのか説明するドキュメントは見つかりませんでした。
Disabling XQ
@rkunix
login: root
#
この後の設定は細々としている作業が続くので、誤入力を防ぐために別に用意しておいたファイルから入力を与えるようにしました。ただし、コマンドによっては入力が受け付けられないことがあり、また文字をとりこぼすことがあったので、複数ファイルに分割しました。
オリジナルのドキュメントにあるように、UNIX V6は多くの種類のデバイスを制御できるドライバがついています。Lions本で勉強する分には次のデバイスがあれば十分なので、これを前提として環境を整えます。
- RK05
- TU10
- DC11
- LP11
: # Fixing the Terminal設定作業に用いた入力ファイルの2番目の内容は次のとおりです。
stty -lcase
: # Rebuilding the kernel
chdir /usr/sys/conf
cc mkconf.c
mv a.out mkconf
: # ./mkconf
: # rk
: # tm
: # 8dc
: # lp
: # done
: # Rebuilding the kernel設定作業に用いた入力ファイルの3番目の内容は次のとおりです。
chdir /usr/sys/conf
as m40.s
mv a.out m40.o
cc -c c.c
as l.s
ld -x a.out m40.o c.o ../lib1 ../lib2
mv a.out /unix
ls -l /unix
: # building device files
/etc/mknod /dev/rk0 b 0 0
/etc/mknod /dev/rk1 b 0 1
/etc/mknod /dev/rk2 b 0 2
/etc/mknod /dev/rrk0 c 9 0
/etc/mknod /dev/rrk1 c 9 1
/etc/mknod /dev/rrk2 c 9 2
/etc/mknod /dev/mt0 b 3 0
/etc/mknod /dev/rmt0 c 12 0
/etc/mknod /dev/lp0 c 2 0
/etc/mknod /dev/tty0 c 3 1
/etc/mknod /dev/tty1 c 3 2
/etc/mknod /dev/tty2 c 3 3
/etc/mknod /dev/tty3 c 3 4
/etc/mknod /dev/tty4 c 3 5
/etc/mknod /dev/tty5 c 3 6
/etc/mknod /dev/tty6 c 3 7
chmod 640 /dev/*rk*
chmod 640 /dev/*mt*
: # Restoring the rest of the OS
dd if=/dev/mt0 of=/dev/rk1 count=4000 skip=4100
/etc/mount /dev/rk1 /usr/source
dd if=/dev/mt0 of=/dev/rk2 count=4000 skip=8100
mkdir /usr/doc
/etc/mount /dev/rk2 /usr/doc
: # configure boot以上で設定が終わったので、今後は以下に示すファイルを用意してSIMHを動かします。
echo /etc/mount /dev/rk1 /usr/source >> /etc/rc
echo /etc/mount /dev/rk2 /usr/doc >> /etc/rc
: # rebuild the df command
echo /rp0/d > /tmp/eddf.cmd
echo .-2a >> /tmp/eddf.cmd
echo \"/dev/rk0\", >> /tmp/eddf.cmd
echo \"/dev/rk1\", >> /tmp/eddf.cmd
echo . >> /tmp/eddf.cmd
echo w >> /tmp/eddf.cmd
echo q >> /tmp/eddf.cmd
chdir /usr/source/s1
cat /tmp/eddf.cmd | ed df.c
cc -s -O df.c
cp a.out /bin/df
rm a.out
: # check filesystems
icheck /dev/rrk0
dcheck /dev/rrk0
icheck /dev/rrk1
dcheck /dev/rrk1
icheck /dev/rrk2
dcheck /dev/rrk2
: # enable multiuser
echo 1,8s/\^0/1/p > /tmp/edttys.cmd
echo w >> /tmp/edttys.cmd
echo q >> /tmp/edttys.cmd
cat /tmp/edttys.cmd | ed /etc/ttys
: # reboot
sync
sync
sync
sync
set cpu 11/40上述した一連の手順のログは次のようになります。
set cpu idle
;set tto 7b
;set tm0 locked
attach rk0 rk0
attach rk1 rk1
attach rk2 rk2
attach lpt lp11.out
set dci en
set dci lines=8
;set dco 7b
attach dci 5555
boot rk0
bye
C:\Users\FURUSAWA\Documents\PDPUNIX\Wellsch>..\pdp11 TapeBoot.cfg
PDP-11 simulator V3.9-0
Disabling XQ
RK: creating new file
RK: creating new file
RK: creating new file
Simulation stopped, PC: 100012 (BR 100012)
sim> g 0
=tmrk
disk offset
0
tape offset
100
count
1
=tmrk
disk offset
1
tape offset
101
count
3999
=
Simulation stopped, PC: 137274 (TSTB @#177560)
sim>
sim>
sim>
sim> bye
Goodbye
C:\Users\FURUSAWA\Documents\PDPUNIX\Wellsch>..\pdp11 DiskInstall.cfg
PDP-11 simulator V3.9-0
Disabling XQ
@rkunix
mem = 1035
RESTRICTED RIGHTS
Use, duplication or disclosure is subject to
restrictions stated in Contract with Western
Electric Company, Inc.
# : # FIXING THE TERMINAL
# STTY -LCASE
# : # Rebuilding the kernel
# chdir /usr/sys/conf
# cc mkconf.c
mv a.out mkconf
: # ./mkconf# #
# : # rk
# : # tm
# : # 8dc
# : # lp
# : # done
# ./mkconf
rk
tm
8dc
lp
done
# : # Rebuilding the kernel
# chdir /usr/sys/conf
# as m40.s
mv # a.out m40.o
# cc -c c.c
as # l.s
l# d -x a.out m40.o c.o ../lib1 ../lib2
mv a.ou# t /unix
# ls -l /unix
-rwxrwxrwx 1 root 29764 Oct 10 12:30 /unix
# : # building device files
# /etc/mknod /dev/rk0 b 0 0
# /etc/mknod /dev/rk1 b 0 1
# /etc/mknod /dev/rk2 b 0 2
# /etc/mknod /dev/rrk0 c 9 0
# /etc/mknod /dev/rrk1 c 9 1
# /etc/mknod /dev/rrk2 c 9 2
# /etc/mknod /dev/mt0 b 3 0
# /etc/mknod /dev/rmt0 c 12 0
# /etc/mknod /dev/lp0 c 2 0
# /etc/mknod /dev/tty0 c 3 1
# /etc/mknod /dev/tty1 c 3 2
/# etc/mknod /dev/tty2 c 3 3
# /etc/mknod /dev/tty3 c 3 4
# /etc/mknod /dev/tty4 c 3 5
# /etc/mknod /dev/tty5 c 3 6
# /etc/mknod /dev/tty6 c 3 7
# chmod 640 /dev/*rk*
# chmod 640 /dev/*mt*
# : # Restoring the rest of the OS
# dd if=/dev/mt0 of=/dev/rk1 count=4000 skip=4100
/etc/mount /dev/rk1 /usr/source
dd if=/dev/mt0 of=/dev/rk2 count=4000 skip=8100
mkdir /usr/doc
/etc/mount /dev/rk2 /usr/doc
4000+0 records in
4000+0 records out
# # 4000+0 records in
4000+0 records out
# # # : # configure boot
# echo /etc/mount /dev/rk1 /usr/source >> /etc/rc
# echo /etc/mount /dev/rk2 /usr/doc >> /etc/rc
# : # rebuild the df command
# echo /rp0/d > /tmp/eddf.cmd
# echo .-2a >> /tmp/eddf.cmd
# echo \"/dev/rk0\", >> /tmp/eddf.cmd
# echo \"/dev/rk1\", >> /tmp/eddf.cmd
# echo . >> /tmp/eddf.cmd
# echo w >> /tmp/eddf.cmd
# echo q >> /tmp/eddf.cmd
# chdir /usr/source/s1
# cat /tmp/eddf.cmd | ed df.c
1282
1293
# cc -s -O df.c
cp a.ou# t /bin/df
# rm a.out
# : # check filesystems
# icheck /dev/rrk0
/dev/rrk0:
dspcl 20
files 295
large 96
direc 25
indir 96
ucsed 2920
free 993
# heck /dev/rrk0
/dev/rrk0:
# icheck /dev/rrk1
/dev/rrk1:
dspcl 0
files 595
large 98c
direc 34
indir 98
used 2973
free 940
# heck /dev/rrk1
/dev/rrk1:
# icheck /dev/rrk2
/dev/rrk2:
dbad freeblock
missing 1499
spcl 0
files 337
large 69
direc 25
indir 69
used 2222
free 192
# check /dev/rrk2
/dev/rrk2:
# : # enable multiuser
# echo 1,8s/\^0/1/p > /tmp/edttys.cmd
# echo w >> /tmp/edttys.cmd
# echo q >> /tmp/edttys.cmd
# cat /tmp/edttys.cmd | ed /etc/ttys
112
170
112
# : # reboot
# sync
# sync
# sync
# sync
#
Simulation stopped, PC: 002502 (MOV (SP)+,177776)
sim> bye
Goodbye
C:\Users\FURUSAWA\Documents\PDPUNIX\Wellsch>..\pdp11 Wellsch.cfg
PDP-11 simulator V3.9-0
Disabling XQ
LPT: creating new file
Listening on port 5555 (socket 280)
@unix
login: root
# ls -l
total 246
drwxrwxr-x 2 bin 1104 May 14 00:47 bin
drwxrwxr-x 2 bin 1824 Oct 10 12:30 dev
drwxrwxr-x 2 bin 496 Oct 10 12:31 etc
-rwxrwxrwx 1 root 29074 Oct 10 12:28 hpunix
drwxrwxr-x 2 bin 464 May 13 23:35 lib
drwxrwxr-x 2 bin 32 May 13 20:01 mnt
-rwxrwxrwx 1 root 28836 Oct 10 12:22 rkunix
-rwxrwxrwx 1 root 29020 Oct 10 12:25 rpunix
drwxrwxrwx 2 bin 272 Oct 10 12:31 tmp
-rwxrwxrwx 1 root 29764 Oct 10 12:30 unix
drwxrwxr-x 15 bin 240 Oct 10 12:30 usr
# sync
# sync
# sync
# sync
#
Simulation stopped, PC: 003244 (SOB R1,3240)
Goodbye
C:\Users\FURUSAWA\Documents\PDPUNIX\Wellsch>
0 件のコメント:
コメントを投稿