富士通 FM-7(1985)
- 公開日: 2020/08/18
ハードウェア概要
1982年秋に富士通より発表・発売開始されたパソコン。高性能・高機能ながら価格を抑えたことでヒット商品となった。CPUとしてモトローラの6809MPUを使用し、また、グラフィック用として6809をもう一つ持っていたことが大きな特徴である。機種の特徴についてはOh!FM-7に詳細にまとめられている。
コントローラ端子の特徴
1985年より販売されたFM音源カード(MB22459)には、PC-6001とほぼ同規格のコントローラ端子を2つもっている[1]。ピンアウトは以下の通りである。それまでもアスキーや電波新聞社から、パラレルポート経由でアタリ仕様ジョイスティックを接続するための変換アダプタが用意されていた。
pin# |
Function |
---|---|
1 |
Digital in |
2 |
Digital in |
3 |
Digital in |
4 |
Digital in |
5 |
VCC |
6 |
Digital in / Digital out |
7 |
Digital in / Digital out |
8 |
Digital out |
9 |
GND |
ピン8をコモンピンとする多くのジョイスティックを使用する場合は、ピン8の出力をLに設定する必要がある。
ハードウェア実装
本機のジョイスティック端子は、FM音源コントローラであるYM2203のI/Oポートを利用して実装されている。YM2203のI/Oポートの制御方法は「PSG音源の利用」を、回路や各ピンとI/Oポートとの対応についてはPC-6001, MSX, PC-9801, FM-7共通を参照のこと。
Oh!FM 1989年5月号の「FM-7シリーズ徹底活用術」によれば、FM音源コントローラを制御するためのI/Oポートアドレスは、$FD15、$FD16である[2]。$FD16がデータ入出力の為のアドレスであり、$FD15はコントロールレジスタである[3]。また、ysflight.comの「富士通FM-7用"Emergency" - 勝手にジョイスティック対応化パッチ」に記載のソースコードによれば、コントローラ端子の操作は以下の手順となる。
6809はメモリマップトI/O
$FD16が何を示すのかを指定するレジスタ
初期化
$FD16に$0F(ポートBの読み書き用のレジスタ番号)を書き込み
$FD15に$03($FD16の内容をレジスタ番号としてYM2203に送信するコマンド)を書き込み
$FD15に$00(クリアコマンド)を書き込み
$FD16に$7F(ポートBのB0〜B6を全てHに)を書き込み
$FD15に$02($FD16の内容をデータとしてYM2203に送信するコマンド)を書き込み
$FD15に$00(クリアコマンド)を書き込み
$FD16に$07(ポートA、Bの読み書き設定のレジスタ番号)を書き込み
$FD15に$03($FD16の内容をレジスタ番号としてYM2203に送信するコマンド)を書き込み
$FD15に$00(クリアコマンド)を書き込み
$FD16に$BF(ポートAを入力、ボートBを出力に指定)を書き込み
$FD15に$02($FD16の内容をデータとしてYM2203に送信するコマンド)を書き込み
$FD15に$00(クリアコマンド)を書き込み
信号出力
$FD16に$0F(ポートBの読み書き用のレジスタ番号)を書き込み
$FD15に$03($FD16の内容をレジスタ番号としてYM2203に送信するコマンド)を書き込み
$FD15に$00(クリアコマンド)を書き込み
$FD16に、ポートBに出力するデータを書き込み
$FD15に$02($FD16の内容をデータとしてYM2203に送信するコマンド)を書き込み
$FD15に$00(クリアコマンド)を書き込み
信号入力
$FD16に$0E(ポートAの読み書き用のレジスタ番号)を書き込み
$FD15に$03($FD16の内容をレジスタ番号としてYM2203に送信するコマンド)を書き込み
$FD15に$00(クリアコマンド)を書き込み
$FD15に$09(ポートAの内容を$FD16に送るコマンド[4])を書き込み
$FD16を読み込み
$FD15に$00(クリアコマンド)を書き込み
データリードとして$01というコマンドもあるが、ジョイスティックポートリードコマンドとして$09が用意されている