<aside> 💡 TangNanoDCJ11MEMを使ってunix-v6を動かす試みです。

</aside>

ブートの流れ

  1. Bootstrap loaderの役割
    1. RK0ディスクの最初のブロック(512byte)に書かれているカーネルローダーをメモリ000000番地にロードする。
    2. 000000番地からカーネルローダーを実行する。
  2. カーネルローダーの役割
    1. カーネルローダーは「@」を表示し、カーネルファイル名の入力待ちの状態になる。
    2. unixカーネルファイル名を入力する(例:unix)
    3. RK0ディスクにあるunixファイルシステムからunixカーネルファイルを読み込んで、メモリ000000番地にロードする。
    4. 000000番地からunixカーネルを実行する。
  3. UNIXカーネルが起動される

イメージデータの準備

unix-v6イメージの作成

以下の手順でUnix v6 tapeイメージからsimh用に作成したunix-v6ディスクイメージを作成した。

Installing UNIX v6 (PDP-11) on SIMH - Computer History Wiki

TangNanoDCJ11MEMのファームウェアはそのままで実験してみる。

イメージデータはrk0を使用する。rf0は使用しないのでunix-v1のままとした。

SDカード作成

手順はunix-v1と同じ。rk0.dskはunix-v6のsimhで作成したイメージに差し替えた。

ocha@ocha-ubuntu:~/デスクトップ/unix-v6-test$ rm sd.dsk
ocha@ocha-ubuntu:~/デスクトップ/unix-v6-test$ dd if=rf0.dsk of=sd.dsk
996+0 レコード入力
996+0 レコード出力
509952 bytes (510 kB, 498 KiB) copied, 0.0151642 s, 33.6 MB/s
ocha@ocha-ubuntu:~/デスクトップ/unix-v6-test$ dd if=rk0.dsk of=sd.dsk bs=512 seek=1024
4058+0 レコード入力
4058+0 レコード出力
2077696 bytes (2.1 MB, 2.0 MiB) copied, 0.0268831 s, 77.3 MB/s
ocha@ocha-ubuntu:~/デスクトップ/unix-v6-test$ sudo dd if=sd.dsk of=/dev/sdb
[sudo] ocha のパスワード:
5082+0 レコード入力
5082+0 レコード出力
2601984 bytes (2.6 MB, 2.5 MiB) copied, 0.374316 s, 7.0 MB/s
ocha@ocha-ubuntu:~/デスクトップ/unix-v6-test$

RK11からローダーをメモリに読み込んでみる

RK0の先頭にbootloaderが入っていることを確認

ocha@HM90:~/unix-v6-simh$ od rk0.dsk | more
0000000 000407 000676 000000 000000 000000 000000 000000 000001
0000020 012706 137000 010601 005000 020701 103012 021027 000407
0000040 001002 012700 000020 012021 020127 140000 103774 000116
0000060 005020 020006 103775 012705 137620 012700 000100 004715
0000100 012702 136046 010201 004767 000346 020027 000012 001412
0000120 020027 000057 001402 110021 000766 020201 001764 062702

PDP-11の磁気ディスク装置RK11の勉強メモ - Qiita

直接レジスタをいじって読みこんでみる。