1文字入出力ができたのでこれを使って原始モニタのコーディングを始めました。まず実装するのはL(Load)、D(Dump)、E(Exec)の3つのコマンドだけです。
オープニングメッセージ出力、コマンドプロンプト、コマンド解析・分岐はニーモニックこそ違いますが今までのCPUの処理とほとんど同じように書けます。分岐ごとにnopを挿入するのがちょっと煩わしいです。
起動は成功、まずLoadコマンドを試してみます。
Loadコマンドはシリアル入力(対ターミナルプログラムではキー入力したキャラクタ)をSRAMの先頭番地0xFFE00000から順番にセットします。
ここでたとえば「0」のキーをしばらく押し続けるとメモリ上にはASCIIコードで「0」すなわち0x30でフィルされ、その後DumpコマンドでSRAMの先頭番地から今度はシリアル出力するとターミナル画面上には「000000000000000000000・・・・・」が出るはずです。(本来はbin2hex変換して2桁のヘキサコードで出すべきですが最初は手抜きでASCIIコードのまま返送。)
ところが画面上には「72007200720072007200・・・・・」で文字化け化け。 「1」~「9」でも同様にやってみるとこんな具合。
なんかやらかしてます。