Best of show

最優秀賞

受賞者:Christopher Mills

引用元: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でもなさそう)。