引用元:https://www.ioccc.org/2018/mills/prog.c
審査員・作者による説明:https://www.ioccc.org/2018/mills/hint.html
動作
PDP-7/11のシミュレータ。
BSD 2.9を動かす例。1983年頃のOS。
$ gcc -DI='"rk05.bsd.fs"' -DA=4096 -DS=0173030 -DW=MAP_PRIVATE -DT= -DX=5 -DY=128 -DV=270 -DP='"89!>@@89T=@@89\"89DQ@K89$89Q1@H0@@@P@1@@"' -o prog prog.c
$ ./prog
>boot
ここでリターンを押す。
$ ./prog
>boot
40Boot
:
ここでrk(0,0)rkunix
と入力する。
$ ./prog
>boot
40Boot
: rk(0,0)rkunix
Berkeley UNIX (Rev. 2.9.1) Sun Nov 20 14:55:50 PST 1983
mem = 135872
CONFIGURE SYSTEM:
xp ? csr 176700 vector 254 skipped: No CSR
rk 0 csr 177400 vector 220 attached
hk ? csr 177440 vector 210 skipped: No CSR
rl ? csr 174400 vector 160 skipped: No CSR
rp ? csr 176700 vector 254 skipped: No CSR
ht 0 csr 172440 vector 224 skipped: No CSR
tm 0 csr 172520 vector 224 skipped: No CSR
ts 0 csr 172520 vector 224 skipped: No CSR
dh ? csr 160020 vector 370 skipped: No CSR
dm ? csr 170500 vector 360 skipped: No autoconfig routines
dz ? csr 160110 vector 320 skipped: No CSR
dz ? csr 160110 vector 320 skipped: No CSR
dn 0 csr 175200 vector 300 skipped: No autoconfig routines
vp ? csr 177500 vector 174 skipped: No autoconfig routines
lp ? csr 177514 vector 200 skipped: No CSR
Erase=^?, kill=^U, intr=^C
#
BSD 2.9が立ち上がった。
# ls
.cshrc .profile boot hkunix mnt tmp
.login 2.9stamp dev lib mullender.c unix
.msgsrc bin etc lost+found rkunix usr
[[1984/mullender]]をコンパイル・実行する。
# cc mullender.c
# ./a.out
:-)
Ctrl+Eでエミュレーションを抜けることができる。
解説
PDP-7はUNIXが最初に動いたコンピュータで、その後継のPDP-11は多くのUNIXで使われていた1970年代のコンピュータ。
PDP-7はまだ現代のコンピュータの常識が常識じゃなかった時代のもので、たとえば1ワードは18ビット。
このプログラムは、BSD 2.9の他に、UNIX v6(1975年頃リリース)や、PDP-7用のUNIX v0(1969年頃)も動くとのこと。
ただしライセンスの都合上、BSD 2.9がデフォルトになっている。
ブート時に出る40Boot
は、ブートローダが環境をPDP-11/40と判定したという意味らしい。
rk(0,0)rkunix
は、RK05ディスクの最初のパーティションにある”rkunix”ファイルをロードせよ、という意味。
v6とv0の動かし方についてはhint.textを参照。
v0の時代はまだファイルパスも、”.”や”..”も発明されていなかった、とか面白いことが書いてある。
ただしv0は再配布可能なライセンスではないので注意。
なおv0のイメージはGitHub: DoctorWkt/pdp7-unixによるとのこと。
これはThe Unix Heritage Societyで公開されているv0のソースコードのスキャンデータをベースとして、足りないものを補って復元したものらしい。
prog.cはPDP-7のエミュレータで、PDP-11/40のエミュレーションはPDP-7の上でエミュレートしているとのこと。
コード形状はパンチテープの破片。
パンチカードではないので、右下の斜めの切れ端は単に破れているだけか。
8孔テープで、中央ちょっと右に歯車用の小さい穴が縦に並んでいる。
穴の配置にちゃんと意味があるのかはちょっと調べてもわからなかった(ASCIIでもEBCDICでもなさそう)。