現在地

[UniMon] I/O命令追加


カテゴリー:

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ビットアドレスが使用可能です。

  • O(utput)
    出力ポートに出力します。
    1. O <port>, <data>
    2. OW <port>, <data> (Z280のみ)
    3. OS <port>, <data> (Z280のみ)

    1の形式では<port>番の出力ポートに<data>を8ビット幅で出力します。2の形式では16ビット幅で出力します。3の形式ではZ280のCPU制御/ステータス・レジスタに書き込みます。
    Z80系では<port>は16ビットアドレスが使用可能です。

unimon_8080では、8080にはポートアドレスをレジスタで指定できる命令が存在しません。そこでINあるいはOUT命令とポートアドレスをRAMに書き込んで呼び出しています。

unimon_z80ではIN A,(C), OUT (C),E命令を使用しています。Z280専用のIW, IS, OW, OSは後述のCPU判別でZ280と判定された場合のみ使用可能になります。IN HL,(C), OUT (C),HL, LDCTL HL,(C), LDCTL (C),HLの各命令が使用されます。

これらのコマンドはUniversal Monitor自体の動作と整合させるための仕組みはありません。そのままIN, OUT命令が実行されます。使い方によってはモニタの動作に支障をきたしますので注意して使用してください。

これはSコマンドによるメモリへの書き込みなどでも同様です。

CPU判別機能はオープニングメッセージの表示直後に実行され表示します。

モニタ 表示 対象CPU 条件 備考
unimon_8080 Z80 Z80, HD64180, Z280 ... A=7FHでINR Aを実行してFのビット2が立ったら これ以上の判別はしていません。必要ならunimon_z80の使用をお勧めします。
未確認
uPD8080A μPD8080A Fのビット3が立っていたら
i8085 8085 HL=0FFFFHでINX HLを実行してFのビット5が立ったら 未確認
i8080 8080, μPD8080AF
unimon_z80 HD64180 HD64180 B=00H, C=0FFHで0EDH,4CHを実行してBCが0だったら 0EDH,4CHはHD64180ではMLT BC、Z280ではNEG HL、Z80では未定義命令
未確認
Z280 Z280 A=40Hで0CBH,37Hを実行しPフラグ(Fのビット2)が立ったら 0CBH,37HはZ280ではTEST A、Z80ではSLL A(未定義)
Z80 Z80

このように未定義命令や未定義動作を使っているため互換プロセッサなどでは正常に動作しない可能性もあります。その場合はconig.incの中でUSE_IDENT = 0とすることで判別を止めてください。

参考文献・関連図書: 
川村雅則(1988)「Z280の特徴と機能」,『プロセッサ』1988年2月号, pp.2-28, 技術評論社.
カワムラマサノリ(1987)「8080/Z80/64180テスト・ルーチン」,『I/O』1987年7月号, p.269, 工学社.
8080A/8080A-1/8080A-2 8-bit N-Channel Microprocessor データシート, Intel.
uPD8080Aデータシート, NEC.
Catalog 1977, NEC Micro Computers.
uPD8085A/AHデータシート, NEC.
Z8400/Z84C00データシート, Zilog
HD64180R/Zデータシート, Hitachi.
Z280 MPU Technical Manual, Zilog.
添付ファイル: 

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。