まずは、動画を上げてみる。これはシリアル接続での実際の使い方の参考例動画で 全部で10分ほどです。音も字幕による解説も何も入れてません。googleの都合で、画質を落とされるので、端末の文字などをくっきり見たい方は 4shared で 上げているので、22メガ程のサイズですがダウンロードしてローカルで再生してみてください。 おおまかな流れとしては、SDの中身をDIRコマンドで一覧したり。LOADコマンドでGAME09インタプリタをロードして、GAME09にはリセットベクタなどの情報は含まれないのでVSETでスタートアドレス(0x9000)を設定して。一度 起動させます。そのまま CTRL+D で コマンドプロンプトに一度戻ります。 そこで GAME用のソースファイル MAZE.GB をLOADコマンドで読み込み。テキストデータの従来のGAMEプログラムソースはGAMEインタプリタの扱うメモリ空間に直接与えても受け付けてくれませんのでそれ用に変換した言わばGame source Binaryということで拡張子にGBを付けて区別してます。同様にBASICのソースもメモリ上では中間コードに変換して保持されるので従来のBAS形式では受け付けてくれません。GAMEの.gbファイルは簡単なpythonプログラムで変換できるのですが、BASICの中間コードの変換はかなり面倒なので、端末上のコピペ転送で一度読ませて、BASIC自体に変換させて保存する方法で間に合わせてます。 さて maze.gbファイルの読み込みが済んだら。そのままGOコマンドで戻るとソースエリアをクリアされて消えるので、VSETで0x9003(GAME09のホットスタート番地)を設定してGOコマンドで戻ります。0と打ってリスト表示を確認して、#=1で実行。適当に数回ループさせて CTRL+D で コマンドプロンプトに戻ります。CTRL+CだとGAMEインタプリタに戻ります。次にLOADでsieve.gb lifegame.gb othello.gb と読み込んでは実行の流れを繰り返してます。CTRL+D は キー入力部で判読してるので 数値入力待ちのときに打てば強制的にプログラムを終了してコマンドプロンプトに戻ってこれます。GAMEインタプリタでの動作の後は同じものをコンパイルしたオブジ...
これまでも、何度かPIC32を使ってMZ-80を再現するのとか挑んできたんですがPCGや320x200のグラフィック機能とか再現したりも、ただ8253周りの動作が怪しく 実機だと音が出るところで音が出ないとか在ったりで 現状保留中。しかも画面出力がコンポジット出力なのでその辺の改善も含めてVGAで出せないかと思案中に こんなモノを発見。 VGA出力のあるPIC32のduinomiteってのも持ってはいるんだが、これも いずれはMZ-80モドキにする前提で保留中。 で、これで何がやりたいかと言うと SBC6809の上位互換マイコンでも作ろうかと fabglなどを入れなくとも、arduino-ESP32としてだけでも、シリアル端末接続で SDカードの利用も可能で 先々fabglも組み合わせれば VGAでグラ表示もできるし、単音だが音も出せる。PS2キーボードやマウスも使える。ESP32のタイマーで6809にタイマー割り込みをかけて疑似時計モドキの機能も載せれる。ヘッドセット用に開けてあるピンはGPIOなので 使い方によってはLEDチカチカもできるかも? で、いざ6809エミュレータを誰か作ってるだろうと探してみたら 一人しかいないw 試しに入れてみたんだが、作者謹製のモニタ機能が6809コア部分にまで食い込んでいてシンプルなSBC6809の再現に激しく邪魔になる。そりゃバグ取りとかには重宝するかもしれないけど、棲み分けできるならしておきたいなと思うわけでして。そこでPC用の6809エミュレーターで端末動作前提のソースファイル構成がなるべく単純なものを探して行き着いたのが virtual-multicomp Z80,6502,6809の複合エミュだがそれぞれ独立しているので 3つのエミュレータが一つに入ったお徳用パックみたいなものだ。しかも 6809用のフォルダ以下の部分だけで独立してビルドできるし必要なファイルも整理すると6809本体部、ヘッダ、端末処理部の3つで済む。 最初に6809部の動きとUARTの入出力を組み込んで BASICROMを 組み込んで 動作することが確認が取れたので、そこからアレコレ試行錯誤というドロ沼での悪あがきが始まる。 ...