このところプライベートでいろいろあって、なかなか作業に集中出来ない。
少しずつでも進めておかないと、作ってるプログラムの構造を忘れるw
そんな事情もあり、最近のペースダウンは激しい。
今回は途中経過として書き記しておこうと思う。
PC-1350デバッガ
機能として「デバッガ」と呼んで良いんだろうか…と思いつつも、プロジェクト名をDebuggerにしてるのでそう呼んでしまいたいw
なんと全てテキストベースな画面となっているw
ウィンドウプログラムが出来ないとかではないが、テキストでいーじゃん…という気持ちから自分の開発しやすさを選んでしまった。
ANSI準拠のC言語+cursesライブラリで作られているので、おそらくWindowsやLinuxでも動くはずだ。CPUのエンディアンに依存している部分がほんの一部あるので、CPUによってはそこだけ変更が必要だけど。
途中、何度も「無理せずC#で書けば良かった」と後悔したシチュエーションがあったが、無理矢理Cのまま。次回書くチャンスがあればC#にする(^^;
画面上部がPC-1350のLCD表示そのもの、右下が(外部)メモリダンプ、その下が内部RAM。
真ん中にレジスタ関連が表示されていて、左下がコンソールとなっている。
対話式のコマンド入力デバッガだ。
↑コンソールで「D8000」とすれば、外部メモリダンプの表示が切り替わる。
↑逆アセンブル、トレース実行なども可能だ。
逆アセンブラはコメントをつけてしまった。どーしてもSC61860のニーモニックが覚えられず、それっぽいコメントを書くことで理解するようになってしまった。こうなるともう書かない限りはニーモニック覚えられないね…。
ちょいと面白い機能としては、実機へのキー入力を入れてみた。
コンソールで["](ダブルクオート)の後ろに文字列を書くことで、それがそのままPC-1350のキー入力として入れられるようにした。
RUN MODEで[RUN]すれば実行する事も可能だ。
実行終了後のテキストバッファを見ることも出来る。
もちろん、先日まで頑張って入れてた疑似RS-232Cも使えるため、ホストマシンでBASICのテキストを書き、それをこのデバッガにロードした後に実行、なんて芸当も出来る。
必要な機能がまだまだ入っていないが、この先は使いながら充実させていくのが良さそう。
ブレークポイントやライトブレークなどは必須になるだろうな…。
諦めたことなど
構想段階にはあったけれども諦めた機能もいくつかある。
その代表格が「前の状態に戻す」という機能。V20エミュレータには入っているのだが、実は実装上の問題がありメモリをバカ食いする事が分かった。分かってはいたけれども想像以上だった(^^;;
SC61860の場合、メインメモリに加えて内部メモリの保存も必要となる。それにレジスタ1セットなどを考えると、1回命令を実行するたびに64バイトくらいの保存が必要だ。
SC61860の実行速度は768KHzらしい。そして1命令の実行ステートは平均して4くらいだろうか。そう考えると、1秒間に768000/4=192000命令、1命令に64バイトのデータ保存となると、実に1秒間で12,288,000バイト(11.72MB)の容量が必要となる。10秒保存したら117MBだ。ちょっとやり過ぎ感がある(T-T)
限られたシチュエーションで使うためだけに入れるのはアリかも知れないが、それよりはステートセーブ(この状態を保存)をいくつか用意するだけでも似た効果はあるだろう…と思った。
この先は…
とりあえず入れておきたいのは、「指定した関数の処理時間を計る」機能だ。
やっぱりプログラマとしては実行時間は気にしていきたい。いちいち数えるのは面倒なので、デバッガでちょちょっと数えられる機能を入れておきたい。
あとはアセンブラと含めた開発環境の構築だろうか。
アセンブラで出力したシンボル情報を読めたりしたら立派なデバッグ環境となる!
そこまでやってようやくプログラムを組もうかな…って気になれると思う!
ちなみにこれだけ作ってもPC-1350の事、あんまり理解できてないw
ブラックボックスだらけだ!
ちょっとペース落ちるけれども、もう少し作っていくからね!
ではまた次回!(^-^)ノ