プログラミング

[UniMon] I/O命令追加

2019-06-29 23:44 — asano
カテゴリー

8080とZ80のUniversal MonitorにI/OアクセスのコマンドとCPU判別を追加しました。

  • I(nput)
    入力ポートから入力して表示します。
    1. I <port>
    2. IW <port> (Z280のみ)
    3. IS <port> (Z280のみ)

    1の形式では<port>番の入力ポートから8ビット幅で入力して表示します。2の形式では16ビット幅で入力して表示します。3の形式ではZ280のCPU制御/ステータス・レジスタを読んで表示します。
    Z80系では<port>は16ビットアドレスが使用可能です。

[UniMon] 固定エントリポイント

2019-06-20 23:19 — asano
カテゴリー

モニタとして必要最小限の機能はできたかなと思っていましたが、大事なものが抜けていました。

ユーザプログラムからモニタの内部ルーティンを呼び出す方法です。

大昔のトレーニングキットや初期のパソコンでは直接ROM内のルーティンを呼び出していました。基本的に完成したモニタなのでアドレスは変わりません。バージョンアップ時もよく使われるルーティンのアドレスは動かないように配慮されています。

でもこのUniversal Monitorはまだ発展途上です。

それでアドレス固定のエントリポイントを用意して、本来のルーティンへジャンプするようにしてみました。

Universal Monitor ソースコード

2019-06-09 22:20 — asano
カテゴリー

予告したUniversal Monitorのソースコードを公開します。

unimon-20190609.tgz がソースコードです。ビルド確認はNetBSD上で行いましたが、LinuxでもWindowsでもMacroassembler ASが動けばビルドは難しくないはずです。

ビルド方法はSBC6800用を例にとると次のようになります。

Universal Monitor SBCシリーズ用バイナリ

2019-06-04 21:42 — asano
カテゴリー

昨日のコマンド一覧に引き続きソースコードをと思ったのですが、まだ整理が途中なので vintagechips さんのSBCシリーズ用のバイナリを先行で公開することにします。

  1. unimon_SBC6303_20190603.hex
    SBC6303用
    プログラムは$E000から配置されています。ワークとスタックは$00C0~$00FFに配置されています。