蒼天在眼 (そうてんまなこにあり)ーベランダで星を見る

昔、昔、天文少年でした。そして、今は、ベランダから、星を見ています。
いろいろの忘備録

PiDP-11を使う その6 コンソール・オペレーションの巻

2023-12-05 20:53:16 | コンピュータ

いよいよ、コンソール・オペレーションに入ります。

正面の存在感のあるスイッチ群は左側の0から21の番号がついていて、データをセットするとために使用します。3個づつが一纏めになって、8進数の一桁を表しています。8進7桁と1ビットを入力できます。

例えば8進数4桁の1234は上のようにセットします。各スイッチは4、2、1と重みがついているので、3個づつのスイッチの上にセットされているものの重みを合計して0から7の数を表すことができます。

次にコントロールスイッチ群の説明をします。これらは、右手で操作しやすいように右端に配置されています。

左から説明すると、

白いスイッチは、ランプテストスイッチで、押し上げると、すべてのランプが点灯します。当時のCPUはインジケータに豆電球を使っていました。これが、時々切れて点灯しないことがありました。この機能を使うと、切れている電球を見つけることができます。手を離すと元の位置に戻って、普通の動作に戻ります。

LOAD ADRS スイッチは、データスイッチにセットした値をアドレスレジスタに取り込むように作用します。手を離すと本の位置に戻ります。アドレスレジスタの内容は、ADRESSインジケータのランプで表示されます。

EXAMスイッチを押し下げると、アドレスレジスタで指定される番地の1語の内容をDATAインジケータランプで確認できます。手を離すと、元の位置に戻ります。連続してEXAMスイッチを押し下げると、アドレスレジスタが2づつ増えて、次の番地の1語の内容を示すので、連続している番地のデータを確認するのに便利になっています。

DEPスイッチを押し上げると、データスイッチにセットした値をアドレスレジスタに入っている番地に1語を書き込みます。手を離すと元の位置に戻ります。書き込んだデータはデータインジケータのランプで確認できます。次の値をデータスイッチにセットして、EXAMスイッチを押し上げると、アドレスレジスタの値が2増えて、次の番地の1語のメモリに値を書き込むことができます。プログラムを、入力するのに便利です。

CONTスイッチを押し下げると、プログラムカウンターの値の番地から、プログラムの実行を再開します。手を離すと元の位置に戻ります。

ENABLE/HALTスイッチは、押し下げると、プログラムの実行を止めることができます。手を離しても、元の位置には戻りません。HALT側に倒したまま、CONTを1回押し下げると、シングルステップ(1命令ごとに、または、1サイクルごとに、CPUが止まる)モードになるので、プログラムのデバグに使うことができます。ENABLE側にセットすると、連続して、命令を実行します。これは、通常の運転モードです。

S INST/ S BUS CYCLE スイッチは、手を離しても、元の位置には戻りません。S INST側にセットされていると、シングルステップモードで、1命令ごとに停止します。S BUS CYCLE側に倒すと、シングルステップモードでは、 1 バスサイクルごとに停止して、細かいタイミングの必要なデバグに必要な機能を提供します。

一番右のSTARTスイッチは、押し下げてから、手を離すと、内部レジスターをリセットして、アドレスレジスタの番地から、プログラムを実行します。

この説明では、具体的なオペレーションのイメージが掴めないと思うので、実際にコンソールを使う動画を作ってみました。動画でRUNスイッチと言っているのは、STARTスイッチなので、脳内変換をお願いします。

プログラミングについては、今後やっていくのでオペレーションに注目して、視聴していただけると幸いです。(ターミナルを繋ぐの巻へつづく)


PiDP-11を使う その5 表の顔ーコンソールの巻

2023-12-05 13:45:20 | コンピュータ

いよいよ、オペレータコンソールです。これを操作したいために、わざわざPiDP-11を組み立てました。

フロントパネル全体はこんな感じです。見渡すと、表示部は三段に分かれて、その下に30個のスイッチと右横に二つのノブがついています。

右横の切り替えノブはメモリとバスの切り替えスイッチで、表示ランプがついていますが、Bare Metal で使う分には CONS  PHY(コンソール・物理メモリ)と DATA PATH が点灯するようにセットすれば、問題ありません。"

 

表示ランプは 三段に分かれていて、上から、CPU のステータス表示、アドレス表示、データ表示に分かれています。

CPUのステータス表示は、左から、エラー関係(メモリのパリティ不一致、アドレスエラー)で、これらは、通常点灯しません。次のRUNランプはCPUが命令実行中に点灯します。

PDPのデータバスであるUNIBUSは、CPUだけでなく、周辺機器もマスターとして、バスを制御することができます。他の機器がバスを制御しているため、CPUがバスの空くのを待っている時に、PAUSEランプが点灯、CPUがマスターになって、バスを占有している場合は、MASTER が点灯します。次のUSERからDATAまでは、Bare Metal 運用に関係ないので、省略します。ADDRESSING は Bare Metal では 16ビット固定です。

 

一番左中段に、キーを差し込む形の電源スイッチがあります。PiDP−11では、オフとオンの2段階ですが、実機では、オフ、オン、ロックの三段になっていました。マニュアルの通りそのまま作るとこのスイッチはダミーです。Balconは、ちゃんと通電するように配線してあります。キーを入れて回すと、冷却ファンが回り始めます。うーん本当に懐かしい。

パワースイッチの隣は、メモリのパリーティを表示しています。PDP-11のメモリは、byte単位ですが、8ビットにパリティービットの1ビットを追加して、1が立っている桁の数が、奇数になるように、パリティビットをセットして記憶しています(奇数パリティ)。もしも、メモリから読み出したデータにパリティが一致しないと、1ビットの誤りであれば、これを検出して、一番上段の表示にパリティエラーを点灯するようになっています。なお、PDP-11は、1語が、2 byteなので、High byte、Low  byteのパリティビットが表示されます。

ADRESS, DATAのランプとスイッチについての説明は次回にします。

より詳しく知りたい方は、 PDP-11/70 Handbook の11章をご覧ください。(コンソールオペレーションへつづく)

https://bitsavers.org/pdf/dec/pdp11/1170/PDP-11_70_Handbook_1977-78.pdf

 


PiDP-11 を使う その4 -裏の顔 表の顔の巻-

2023-12-03 19:33:28 | コンピュータ

いよいよ各論に入ります。

PDP-11の裏の顔と言っても、怪しいものではありません。一目で見ることができない顔ということです。表の顔をオペレータ・コンソールとすると、裏の顔は、PDP−11の最上層の構造とでもいうことでしでしょうか。PDPー11の構造の特徴をよくまとめた図がありました。木村泉先生が東京工業大学のプログラミングの講義に使ったOHP(Power pointがない時代のプレゼン手段)です。とても簡潔に纏まっているので拝借させていただきます。木村先生は、1980年代に共立出版のbitという雑誌に寄稿していて、Balcon も毎月楽しみに愛読していました。残念ながら、お弟子さん達編集の追悼文集からの引用になります。木村先生のOHPに若干の改変をさせてもらいました。

PDPの記憶領域は、八個の16ビットのレジスタと1語16ビット幅の32k語のメモリ領域からできています。アドレスは、byte(8ビット)ごとについているので、64kbytesのメモリ空間があるわけですが、高位から4k語(8kbytes)は、周辺機器とのインターフェースに予約されているので、実際は28k語が使用可能なメモリとなります。また0番地から776(8進)までは、割り込みや、スタックに使われるので、実際には、ユーザは1000番地(8進)から、157776(8進)までが、ブログラムとデータを収容することになります。(OHP の緑の部分)

DECのマシンは8進法がデフォールトなので、これからは、断りなく数字が出てきた場合は8進法表記と考えてください。

各レジスタ r0からr5は、自由に使うことができますが、r6、r7は、それぞれ、現在のスタックトップを指すスタックポインタ(SP)と、次に実行する命令のアドレスを指すプログラムカウンタ(PC)として使うため、偶数のデータしか書き込むことしかできません。

各種フラグを収容するプロセッサステータスワード(PSW)には、下位4bitに各種フラグが入ります。これ以外ビットは、実行モードや、プライオリティなのデータが入りますが、これらは、Bare Metalで使うのには関係ないので、説明は割愛します。

それぞれ、レジスタのアドレスは、PDP-11/70では、アドレスが22ビットに拡張されているため、他のPDP-11シリーズと異なるので注意が必要です。(私はこれにハマりました。)

次回は、PDP-11/70の表の顔、オペレータコンソールについて、記載していきます。(表の顔-コンソールへつづく)


PiDP-11を使う その3 -Bare Metal で行こうの巻-

2023-12-01 12:47:40 | コンピュータ

ベアメタルというと、航空機業界では、塗装なしで、ジュラルミンの地肌剥き出しの運航をすることを指しますが、コンピュータの世界では、OSなしで、コンピュータを使う意味で使われます。

PCでは、Windows OSをインストールしないで使う人は、ほとんどいないでしょうが、組み込み用途のコンピュータ(たとえば、車載システムとかは、ベアメタルがほとんどではないでしようか。

Wikipediaでベアメタルを検索すると、

ベアメタル: bare metal)とは、計算機科学では、オペレーティングシステム (OS) を介さずに、ロジックハードウェア上で直接命令を実行するコンピュータを指す。ベアマシン: bare machine)とも呼ばれる。bareとは「裸」のことで、OS等の「衣」を纏っていない、という意味。

<中略>

PDP-11などの初期のコンピュータでは、プログラママシンコードで提供されるプログラムをRAMにロードしていた。プログラムの動作はLEDの点灯や、磁気テープ、印刷デバイス、またはストレージから得られる出力によって監視できた。

とあります。

PiDP-11は、普通にインストールすると、各種OSが使用できる状態で、インストールされます。たとえば、DEC謹製の RT-11 (<ーお世話になりました。)、RSX-11 M Plus, DOS-11 , RSTS,  AT&Tの初期のUNIXなどが、プレインスートール済です。Lions' commentary で有名なV6も2.11BSDも入っています。

しかし、一度OSが起動すると、コンソールパネルを操作することは、終了するときまで、ほとんどありません。コンソールパネルを使い込むには、ベアメタルで運用するのが1番いいと思います。

ベアメタルの良い点は、PDP-11のマシンのアーキテクチャーや動作を知ることができると言うのもあります。そんな、無くなってしまったマシンを学んでどうするのだという意見もありますが、実は

いわゆるノイマン型プログラム内蔵方式のプロセッサの構造と基本動作は、世界で最初の実用的なノイマン型・プログラム内蔵方式のコンピュータであったEDSACの実装の時点で、すでに構造と基本動作が実装されている。(Wepedia CPUの項目からの引用)

ということで、最新の64bitプロセッサも、処理速度と、一度に処理するデータ量が増えていますが、本質的には変わりません。一応、16 bit プロセッサの完成形とされるPDP–11を知ることは、現代のプロセッサの理解にも役にたつと思えるのですが…。

まあ、趣味には理由はいらないと思うので、次回は、ベアメタルで使うPDP-11ということで、各論を始めたいと思います。(裏の顔表の顔へとつづく)


PiDP-11を使う その2

2023-11-30 11:38:00 | コンピュータ

PiDP-11と仮想TU-56磁気テープ装置です。オンラインにしてアクセスするとクルクル回わります。データの読み書きもできます。こういうギミックがあると、なにかと楽しいです。スコッチの磁気テープがとても懐かしいです。高校生の頃、ここぞという時は奮発して、スコッチのテープで、FM放送を録音しておりました。カセットテープデッキなどはなかった時代です。

Youtubeで動画公開しました。

 

実際、これらの機器は、19インチ標準ラックにマウントされていました。こんな感じ。ドン。

我が家に19インチ(約50cm)幅で、高さ6フィート(1.8m)のラックなんか持ち込んだら、天の声の雷が落ちることになりそうですが、PiDP−11は、PDPー11の60%の大きさに縮小されています。したがって、机の上に置いて操作できるぐらいの大きさになります。実はこれ、本物よりも操作性は上じゃないかと思いました。

前振りは、このぐらいにして、  PiDP−11のシステム構成についてお話すると、PiDP−11は、ラズベリーパイという、シングルボードコンピュータの上に構成されています。ラズベリーパイは、キットに含まれていないので、電源と一緒に、調達する必要があります。 推奨は、3B+というモデルで、ラスベリーパイOS(32ビット版)をインストールして、PiDP−11基板上のコネクタに差し込めばOKです。その後、 マニアルの通り必要なシステムをインストールすれば出来上がりです。マニュアルの所在は

(https://www3.ispnet.net/pidp11/PiDP11%20Manual%20v0.2.odt)

マニアルには、コンソールパネルを持っていなくても、使える旨が書かれていますから、すでに、ラズベリーパイを持っている人は、追加投資なしで試すことができます。

まず、 pi という  sudo できるユーザを作ってから、

sudo mkdir /opt/pidp11
cd /opt/pidp11
sudo wget http://pidp.net/pidp11/pidp11.tar.gz
sudo gzip -d pidp11.tar.gz
sudo tar -xvf pidp11.tar

sudo /opt/pidp11/install/install.sh

これだけで、全てがインストールされます。

PiDP-11 の動く仕組みは、基本的には simhというシステムとサーバ、クライアントの関係で、コンソールパネルを動かすように設計されています。サーバがコンソールパネル側、クライアントは、 simh です。

 simhとは、歴史的に価値があると考えられる過去のコンピュータを現在のコンピュータ上で、シミュレートして、再現するプロジェクトです。IBM、インテル、そしてDigital Equipmet Corporation(DEC)などのCPUをシュミレートするソースコードを配布しています。また、これらのシュミレータそのものをsimhと呼んでいます。

DECは、PDPー11を製造、販売していた会社で、日本にも、支社がありました。一時は、規模では、IBMに次ぐ、世界第二位のコンピュータ製造会社でしたが、マイクロプロセッサの発展とともに、UNIXワークステーションに対して、速度と価格で優位性がなくなり、コンパック、さらに、HPに吸収合併されて、消滅してしまいました。

しかし、DEC  のPDPー11の設計思想はその後のコンピュータにも影響を与え、大学でのコンピュータサイエンスの授業でも、お手本として永らく講義されていました。

 PiDPのソフト一式には、コンパイル済みの実行ファイル、 simh のクライアントなどの必要なもの一切が含まれているので、たとえ、コンソールパネルを持っていなくても、PiDP−11をラズベリーパイで走らせることができます。(つづく)

 

 

 

 

 

 


PVバーナー

PVアクセスランキング にほんブログ村