2011年10月15日

8255と8049の設計(6)

 8049 の動作について、調べた結果、以下のようで動きそうです(文章に書くと分かりづらいですね)。


 1)CMT LOAD

 1−1)0x1E 受信(1200baud) または 0x1D 受信(600baud)
 1−2)0x19 受信
 1−3)ポートP1 bit4 に L を出力(入力セレクタの切り換え)
 1−4)ポートP2 bit3 のデータ(受信)を解析
 1−5)エラーがあれば、0x12 送信 + ポートP1 bit7 に L を出力して終了(割り込み発生)。
 1−6)1バイトまとまったら、0x08 送信 + ポートP1 bit7 を L を出力(割り込み発生)、その後、受信データを出力。
 1−7)1−4)〜1−6)の間に、STOP キーの状態をポーリングする。キーの調査の方法は、3−2)のキー調査と同じ。
 1−8)STOP キーが押されてたら、0x10 送信 + ポートP1 bit7 に L を出力して終了(割り込み発生)。
 1−9)0x1A 受信したら、終了。
 1−10)1−4)に戻る。


 2)CMT SAVE

 2−1)0x3E 受信(1200baud) または 0x3D 受信(600baud)
 2−2)0x39 受信
 2−3)0x38 受信したら、次の受信データを待つ(これがCMT に送信するデータ)
 2−4)2−3)のデータをテープデータにして、ポートP1 bit5 に出力する。
 2−5)2−3)〜2−5)の間に、STOP キーの状態をポーリングする。キーの調査の方法は、3−2)のキー調査と同じ。
 2−6)STOP キーが押されてたら、0x0E 送信 + ポートP1 bit7 に L を出力して終了(割り込み発生)。
 2−7)0x1A 受信したら、終了。
 2−8)2−3)に戻る。


 3)ゲーム用キー調査

 3−1)0x06 受信
 3−2)キーの調査を行う。ポートP1 bit4 に H を出力し、ポートP1 bit3-0 に"0000"〜"1001" を出力する。
 3−3)ポートP2 bit7-0 の値で、どのキーが押されたかを判断する。
 3−4)ゲーム用キーが押されているビットだけ1を立てて、出力データを作る。
 3−5)0x16 送信 + ポートP1 bit7 を L を出力(割り込み発生)、その後、3−4)のデータを出力。
 3−6)終了。


 4)キーボードポーリング

 4−1)ポーリングにより、タイマが満了したら、4−2)以下を行う。
 4−2)キーの調査を行う。キーの調査の方法は、3−2)のキー調査と同じ。
 4−3)押されたキーの状態により、出力データを作る。
 4−4)グラフィックキー、ファンクションキー、STOP の場合は、4−5)、それ以外は、4−6)に。
 4−5)0x14 送信 + ポートP1 bit7 を L を出力(割り込み発生)、その後、4−3)のデータを出力して終了。
 4−6)0x02 送信 + ポートP1 bit7 を L を出力(割り込み発生)、その後、4−3)のデータを出力して終了。


 5)RxRDYポーリング

 5−1)ポーリングにより、タイマが満了したら、5−2)以下を行う。
 5−2)RxRDY の状態の調査を行う。ポートP1 bit4 に L を出力する。ポートP2 bit3 に RxRDY が入力される。
 5−3)RxRDY が H → L になった時、以下を実行する。それ以外の場合は終了。
 5−4)0x04 送信 + ポートP1 bit7 を L を出力(割り込み発生)して終了。



 一連の処理をしている間は、8255(Z80) から入力されるコマンドは、受信しても廃棄します。
 また、同時に発生した場合は、番号が小さい物から実行します。

 ポーリングは、とりあえず 500μs にしておきます。


posted by えすび at 14:59| Comment(0) | P6解析:サブCPUと8255 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

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


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

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