So-net無料ブログ作成
検索選択

PDP-11のブートスストラップのお勉強

PDP-11のブートスストラップのお勉強
参照は
の通り。さて、simhからは

   sim> att rk0 unix0_v6_rk.dsk
   sim> boot rk0

でbootプログラムが、ディスクデバイス0番の#0セクターから、ブートプログラムを0番地に読み込んで実行する。
このbootプログラムは下記の通りなのだが、

static const uint16 boot_rom[] = {
    0042113,                        /* "KD" */
    0012706, BOOT_START,   /* MOV #boot_start, SP */
    0012700, 0000000,         /* MOV #unit, R0        ; unit number */
    0010003,                        /* MOV R0, R3 */
    0000303,                        /* SWAB R3 */
    0006303,                        /* ASL R3 */
    0006303,                        /* ASL R3 */
    0006303,                        /* ASL R3 */
    0006303,                        /* ASL R3 */
    0006303,                        /* ASL R3 */
    0012701, 0177412,         /* MOV #RKDA, R1        ; csr */
    0010311,                        /* MOV R3, (R1)         ; load da */
    0005041,                        /* CLR -(R1)            ; clear ba */
    0012741, 0177000,         /* MOV #-256.*2, -(R1)  ; load wc */
    0012741, 0000005,         /* MOV #READ+GO, -(R1)  ; read & go */
    0005002,                        /* CLR R2 */
    0005003,                        /* CLR R3 */
    0012704, BOOT_START+020,        /* MOV #START+20, R4 */
    0005005,                        /* CLR R5 */
    0105711,                        /* TSTB (R1) */
    0100376,                        /* BPL .-2 */
    0105011,                        /* CLRB (R1) */
    0005007                         /* CLR PC */
    };

よくわからんのは、
    0012741, 0177000,         /* MOV #-256.*2, -(R1)  ; load wc */

で、転送サイズを512wordつまり1024bytesに設定してい点だ。
-256*2と値がマイナスなのは、RK11ディスクコントローラの仕様らしい。
(転送カウントは2の補数を設定する仕様。)

実際にbootプログラムのスタートアドレスは02000(8進)で、
これは1024なので、ぎりぎり直前までディスクからデータを読み込んでいるのは間違いないらしい。

よくわからないのは、PDP-11で使うRK05とかのディスクドライブは、
1セクター256wordだったということで、simhはこれを2セクター読み込んでいるということになる。

ちなみに、下記の情報だと、PDP-11のディスク用のbootプログラムは
01000番地からはじまり、256word読み込むようになっている。


simhの実装がなぞだが。
まあ、いいや。機会があったら調べよう。



nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。