HC-40でメモリダンプ!

HC-40の技術資料

HC-40を使い始めてから、技術資料の少なさに困ってました。

実際に、そのマシンを所有してるしていないに関わらず、技術資料は出来るだけ手元に置くようにしている私ですが、HCシリーズはウィークポイントとなっており、手元に数冊のOh!HCがある程度でした。

 

Oh!HC Vol.14にVRAMに関する情報が載っていたので、それでスクロールのテストとか作る事が出来ました。キー入力についてはCP/Mシステムコールを使う事で解決。

それ以外はなーんにも分かっていない状態でした。

 

そういえばHC-40って海外で発売されていたんじゃ無かったっけ?…と思い調べたところ、ビンゴ!海外ではPX-4という名前で発売されていた!

その名前を元に検索してみたところ、英語ではありますがドキュメントがあった!

もしかしたらグレーかもしれないので、ここでリンクは貼りません(^^;

 

ちなみに…国会図書館のサイトでHC-40について調べてみたところ「HC-40/80 100%活用法」という書籍があるらしく、いつかこれを見に行きたいとは思います!

 

 メモリを覗いてみたら…

さっそく メモリの内容を表示するプログラムを作ってみた!

上下左右その他もろもろの操作で64KBのエリア全てが見えるようにしました。

こういう単純なモノを作ってる時が結構楽しい!

フォントは横幅を稼ぎたかったので4ドット幅にした。

240ドットの幅に60桁が表示出来る。

横8ドットを1バイトとしたVRAM構成のHC-40では、ちょっとだけ頑張らないと表示が出来ない。なんて書きつつ、技術的には大したことないので説明は割愛します(^^)

 

果たして…この見えてる領域が、ROMなのかRAMなのか?

Z80に慣れた人ならば、バイナリを見るとなーんとなくプログラムなのかデータなのか分かると思う。私のそのクチなのでじっとバイナリを見てみると…プログラムっぽい。

じゃあROMなのかと思いきや、チェックプログラムを作ってみるとRAMだった。

ん?じゃあROMはどこに…?

 

どこかにバンク切り替えのI/Oポートがあるはずだと思ってドキュメントを探してみたら05h(BANKR)がそうっぽい。

でも直接I/Oポート触るよりも、きっと別のバンクからメモリの内容を読んでくるファンクションがあるはず…と思って調べてみたらありました。

その名もLOADX(^^)

Cレジスタにバンク番号、HLレジスタにアドレスを入れてコールすると、そのバンクにあるメモリを読んできてくれる。これこれ!これをやりたかったの!

 

ようやく全メモリを見る事が出来るダンプが完成した!

以下の写真は、同じアドレスだけどバンクを切り替えて違う内容が見えてるのが分かると思う

。リアルタイムに切り替えられます(^^)

f:id:PocketGriffon:20200516132422j:plain

f:id:PocketGriffon:20200516132443j:plain

リアルタイムにメモリの内容が変化してるのが見えるので、割り込み処理で値が変わってるところもばっちり見えます。これも解析の手がかりになるね!

 

ROMとRAMをホストマシンへ

バンクを切り替えてデータを読めるようになったことだし、解析用と称してROMとRAMの内容をホストマシンへ吸い出した。

これはもう簡単にBASICでプログラム書いた。

ほんの数行。

…と思ったけどバンク切り替えの部分だけはどうしてもマシン語で書かざるをえなかったので、そこだけはご愛敬。

アップロード(HC-40→ホストマシン)は速度MAXでも良いので、38400bpsで転送してみたけど、BASICの遅さゆえに、64KB転送するのに10分以上掛かったよ(T-T)

 

この先は…

さて、なんとなくHC-40で(今すぐ)出来る事は終わったかなーと思う。

あとは解析しつつあれこれ…って感じだけど、絵心がない私にはどーしてもゲームを作ろうって選択肢が入ってこない(^^;

何かの移植をしてみたいけれども(T-T)

  

ちなみにZ80 or 8080で動く3Dパッケージはちょっと書いてみたい。

これがあれば、あとは直線描画を実装すれば、立方体を回すくらいのことは出来ておおっ!てなるのになー(^-^;;

いつかやりたいです!