FFuture Driver

I/Oポート

概要

メガドライブには3つのI/Oポートがあり、 ハードウェア的には3つとも同じ機能が実装されています。

※この項はI/Oポート全般についての説明なので、 ジョイパッドやマウス等のI/Oポートに接続された各デバイスの具体的な読み取り方については、 それぞれの項を参照して下さい。

※Ext端子とはメガCDを接続する拡張バスの事では無く、 MD1の背面に存在する端子です。 この端子に接続するアクセサリとしてメガモデムがあります。 MD2にはこの端子は存在しません。 尚、I/Oポート3のみメスコネクタですが、3ポートともピンアサインは同じです。

I/Oポートに接続されるデバイス

ジョイパッド以外に接続されるコントローラ及びデバイスとして下記が存在します。

I/Oポートのピンアサイン

各I/Oポートは9ピン端子で、D0〜D6 までの7本の入出力ピンがあります。

5.+5V 9.D5
4.D3 8.GND
3.D2 7.D6
2.D1 6.D4
1.D0

またD0〜D7ピンには、下記の別名が存在します。

5.+5V 9.D5 = TR
4.D3 = RIGHT 8.GND
3.D2 = LEFT 7.D6 = TH
2.D1 = DOWN 6.D4 = TL
1.D0 = UP

D0〜D6ピンの機能

これら7本(7bit)の入出力ピンは全て汎用デジタル入出力ピンとして使用出来ます。 汎用デジタル入出力ピンとして使用する際、ピン1本毎に入力か出力かを選択可能 です。またD5はシリアルデータ受信ピンとして、D4はシリアルデータ送信ピンとして も使用出来ます。シリアル通信速度は送受信共に300bps〜4800bps、受信エラー検出 機能があります。

各I/Oポートに関するアドレス

これらのアドレスにアクセスする際はZ80をHALTして下さい。

アドレス シンボル 説明
0xA10003 DATA 各ピンの入出力データ (I/Oポート1)
0xA10005 DATA 各ピンの入出力データ (I/Oポート2)
0xA10007 DATA 各ピンの入出力データ (I/Oポート3)
0xA10009 CTRL 各ピンの入出力方向コントロール (I/Oポート1)
0xA1000B CTRL 各ピンの入出力方向コントロール (I/Oポート2)
0xA1000D CTRL 各ピンの入出力方向コントロール (I/Oポート3)
0xA1000F TxDATA シリアル送信データ (I/Oポート1)
0xA10011 RxDATA シリアル受信データ (I/Oポート1)
0xA10013 S-CTRL シリアルコントロール (I/Oポート1)
0xA10015 TxDATA シリアル送信データ (I/Oポート2)
0xA10017 RxDATA シリアル受信データ (I/Oポート2)
0xA10019 S-CTRL シリアルコントロール (I/Oポート2)
0xA1001B TxDATA シリアル送信データ (I/Oポート3)
0xA1001D RxDATA シリアル受信データ (I/Oポート3)
0xA1001F S-CTRL シリアルコントロール (I/Oポート3)

制御方法

各入出力ピンが入力か出力かを設定する為に、CTRLアドレスに下記の値を書き込みます。
I/Oポートに接続したデバイスがTHピン割り込みを行う場合は、割り込みの準備を終えてからINTを1にします。
(コナミの光線銃で利用されていた様です)

bit	7   6   5   4   3   2   1   0
	INT PC6 PC5 PC4 PC3 PC2 PC1 PC0

INT	THピン割り込み, 0 = 有効, 1 = 無効
PCx	各ピンの入出力方向, 0 = 入力, 1 = 出力

次にS-CTRLアドレスに下記の値を書き込みます。 S-CTRLはシリアル通信に関する設定なので、シリアル通信機能を使わない場合は S-CTRLに0x00を書き込むだけで良いです。
RERR, RRDY, TFUL は読み取り専用なので、S-CTRLに値を書き込む時は これらのビットは1でも0でも構いません。

bit	7    6    5    4    3    2    1    0
	BPS1 BPS0 SIN  SOUT RINT RERR RRDY TFUL

書き込みビット
BPSx	ボーレート, 0 = 4800bps, 1 = 2400bps, 2 = 1200bps, 3 = 300bps
SIN	シリアル受信モード, 0 = 無効, 1 = 有効(D5ピンがシリアルデータ受信ピンになる)
SOUT	シリアル送信モード, 0 = 無効, 1 = 有効(D4ピンがシリアルデータ送信ピンになる)
RINT	受信割り込み, 0 = 無効, 1 = 有効

読み取りビット
RERR	受信エラー, 0 = 正常, 1 = 受信失敗
RRDY	受信データの状態, 1 = 受信待機中
TFUL	送信データの状態, 0 = 送信可能, 1 = 送信中

汎用デジタル入力ピンに設定したピンの入力状態を読むにはDATAアドレスの該当ビットを読み込み、 汎用デジタル出力ピンに設定したピンの出力状態を設定するにはDATAアドレスの該当ビットを書き込みます。

bit	7   6   5   4   3   2   1   0
	-   D6 D5 D4 D3 D2 D1 D0

書き込みビット (出力に設定したピン)
Dx	各ピンの出力, 0 = Low(GND), 1 = High(+5V)

読み取りビット (入力に設定したピン)
Dx	各ピンの入力, 0 = Low(GND), 1 = High(+5V)

ハードウェア

TRピンとTHピンは330Ωの抵抗、次にEMIフィルターを通してI/Oコントローラーに繋がっています。
その他のピンはEMIフィルターを通してIOコントローラーに繋がっています。
この事から、I/Oポートに接続するハードウェアを自作する際は、 TRピンとTHピン以外を出力にしない方が良いでしょう。
もしTRピンとTHピン以外も出力にしたいのなら、 自作ハードウェアが繋がっている事を認識する為のシーケンスを用意して、 パッドやマウス等が繋がれて無い事が確認出来てから出力にして下さい。



inserted by FC2 system