CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

メモリ使用状況

ボードのハードはあと外付けSRAMの実装が残っていますがここで改めてメモリ配置をまとめておきました。

ROM256KBRAM128kB、トランスピュータ内蔵RAM領域4kBで計388kB4GBのリニアな全メモリ空間の実に0.009%しか使っていません

スカスカですが未使用部分をざっくり割愛するとこのような感じです

 

 

メモリ上のスタックとして使われるワークスペースを指し示すWorkspaceポインタ(Wptr)は電源ON、リセット直後の値が判らず、怖くてCALL/RETを使うのを避けていましたが、先日の実験で0x80000070と判明したので初期化ルーチンの中にアジャストワークスペースポインタ命令:ajw 0x24を挿入しました。

これによりワークスペース=スタックの底が0x80000100(=0x80000070+0x24*4)となりワークスペース0x24ダブルワード確保されます。スタックは低位アドレスに向かって生長し、1回のサブルーチンコールでスタックを4段((呼び元アドレスIptrレジスタA,B,C)を消費するようなので単純計算で9重までのサブルーチンのネストができることになります。

 

ところでメモリマップを書くときアドレスの高位低位と図の上下関係はどちらが正しいのでしょうか。例を見ると混在しているようで自分の書き方もその場でまちまちでした。

ただスタックを「積む」という表現ではやはり重力方向のアナロジーで低位が上で書いちゃったりします