CPU実験室

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

SRAMデータ化け

1文字入出力ができたのでこれを使って原始モニタのコーディングを始めました。まず実装するのはL(Load)、D(Dump)、E(Exec)の3つのコマンドだけです。

オープニングメッセージ出力、コマンドプロンプト、コマンド解析・分岐はニーモニックこそ違いますが今までのCPUの処理とほとんど同じように書けます。分岐ごとにnopを挿入するのがちょっと煩わしいです。

f:id:O3I:20201213175351j:plain

 

起動は成功、まずLoadコマンドを試してみます。

f:id:O3I:20201213172801j:plain

Loadコマンドはシリアル入力(対ターミナルプログラムではキー入力したキャラクタ)をSRAMの先頭番地0xFFE00000から順番にセットします。

ここでたとえば「0」のキーをしばらく押し続けるとメモリ上にはASCIIコードで「0」すなわち0x30でフィルされ、その後DumpコマンドでSRAMの先頭番地から今度はシリアル出力するとターミナル画面上には「000000000000000000000・・・・・」が出るはずです。(本来はbin2hex変換して2桁のヘキサコードで出すべきですが最初は手抜きでASCIIコードのまま返送。)

 

ところが画面上には「72007200720072007200・・・・・」で文字化け化け。  「1」~「9」でも同様にやってみるとこんな具合。

f:id:O3I:20201213172743j:plain

なんかやらかしてます。