2012年01月03日

mk2設計(5)

  mk2 の回路が起動しない件、判明しました。

  Z80 のコアで使用しているT80 のバグでした...特殊な命令なんですけどねぇ。


  mk2 の音声合成ルーチンで、OUTI という命令を使っています。


  以下、Zilog社の「Z80 Family CPU User Manual」の282ページより抜粋です。

===
  OUTI
  Operation: (C) ← (HL), B ← B -1, HL ← HL + 1

===

  HL で指すメモリの内容を、ポートCに出力する命令です。
  その後に、レジスタBをデクリメント、HLレジスタをインクリメントします。


  mk2 では、0x0045 より

0x0045  LD C,0EFH
0x0047  LD HL,02C9CH
0x004A  LD B,09H
0x004C  INC C
0x004D  OUTI
0x004F  JR NZ,04CH

  で、ロジアナで観測した結果がこちら。

OUTI NG


  OUTI 命令は、「ED A3」で、2回実行している所を観測しています。

  1回目は、OUTIを実行した後に、アドレス「0x2C9C」を出力していて、そのアドレスに対して、データ「0x71」が返されています。
  で、その値を、I/Oポートのアドレス「0x08F0」に出力しています(iorqn が "L" の時)。


  2回目も同様に、OUTIを実行した後に、アドレス「0x2C9C」を出力していて、データ「0x71」が返されています。
  で、その値を、I/Oポートのアドレス「0x07F1」に出力しています(iorqn が "L" の時)。


  その後も同様なんですが、OUTI 命令で実行した結果の「HLレジスタをインクリメント」が行われていません(−−;



  こういう不具合があると、他の命令に関しても調べる必要がありそうです。



posted by えすび at 12:48| Comment(0) | FPGA化:CPU周り | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。