Commodore AMIGA(1985)
- 公開日: 2020/08/08
- 更新日: 2020/08/08
ハードウェア概要
80年代後半から90年代初頭を代表する16ビットホビーパソコン。大容量メモリの扱いに適したモトローラMC68000 MPU[1]と高性能なカスタムチップ群により高いグラフィック性能を有していた。後に登場した、68020MPUを備えたモデルA2000およびその後継機は、Video Toaster[2]と合わせてDTVシステムとして広く利用された[3]。
カスタムチップ群はもともとアタリでVCSや400/800のカスタムチップを手掛けたジェイ・マイナーによって設立されたAMIGA社で開発されていた。1983年にアタリはいわゆるアタリ・ショックによって経営危機に陥った。同時期にコモドールは内紛により創始者のジャック・トラミエルがエンジニアたちとともに離れ、最終的にはアタリを買収する。多くのエンジニアがいなくなったコモドールはAMIGA社を買収して、その結果生まれたのがAMIGAの初代モデルのA1000である。
コントローラ端子の特徴
以下の説明はamigawikiに記載のAMIGA A500の回路図及びAmiga Developer DocsのAmiga Hardware Reference Manualに基づく。本機はコントローラ端子を2つもっており、ピンアウトは以下の通りである。
pin# |
Function |
---|---|
1 |
Digital in |
2 |
Digital in |
3 |
Digital in |
4 |
Digital in |
5 |
Analog in / Digital in / Digital out |
6 |
Digital in / Digital out / Light Pen |
7 |
VCC |
8 |
GND |
9 |
Analog in / Digital in / Digital out |
ハードウェア実装
上記回路図からコントローラ端子周りを抜粋したものを下図に示す。
コントローラ端子はMOS8520(CIA)[4]と、AMIGA独自のカスタムチップであるPAULA[5]及びDENISE[6]を使って実装されている。また、ライトペン入力検出用としてもう一つの独自カスタムチップであるAGNUS[7]も利用される。
コモドール64用のMOS6526の改良版で8ビットI/Oポートを2つ備えている。AMIGAではこのチップを2つ使用しており、上記回路図ではCIA-Aと称している。もう一つのCIA-B含め、ジョイスティック以外ではシリアル・パラレル・FDDコントロール用に使用している。
コントローラ端子以外では、割り込みコントローラ、オーディオ、フロッピー、シリアルポートの制御を行う。
コントローラ端子以外では、ビデオコントローラとして機能する。
他のカスタムチップの制御を行うとともに、ビデオコントローラの一部機能を担う。
ピン1〜4はセレクタICである74LS157を介してDENISEのI/Oポートに接続される。ピン6はCIA-AのPA6(コントローラ端子0)及びPA7(コントローラ端子1)に接続されている。ピン5, 9はPAULAのI/Oポートに接続されている。コントローラ端子0又は1のピン6はAGNUSのライトペン入力端子に接続されている[8]。
A1000は端子0。A500、A2000、A3000はジャンパピンで端子0か1を選択可(デフォルトでは端子1)。それ以外の機種では端子1。上図の回路図では、端子1のピン6がライトペン検出端子となるような構成としている(A500からジャンパピンを省略)。
制御方法
各ピンの制御方法は以下の通りである。
ピン1〜4のデジタル入出力については、アドレス$DFF00A(JOY0DAT/コントローラ端子0)及びアドレス$DFF00C(JOY1DAT/コントローラ端子1)を使用する。これらのアドレスの内容はコントローラ端子にマウスをつないだ時の座標値であり、ビット0~7がX軸、ビット8~15がY軸を示す。AMIGA用マウスにおいてはピン1、3がY軸方向のロータリーエンコーダと接続されており、一方ピン2、4がX軸方向のロータリーエンコーダと接続されている。各ピンの状態は、以下の通りこの座標値から逆算する必要がある。
pin# |
JOY0DAT / JOY1DAT (1=L, 0=H) |
---|---|
1 |
Bit8 XOR Bit9 |
2 |
Bit0 XOR Bit1 |
3 |
Bit9 |
4 |
Bit1 |
ピン5、9をデジタル入出力として使用する場合は、アドレス$DFF034(POTGO/書き込み専用)及びアドレス$DFF016(POTGOR/読み込み専用)を使用する。POTGO及びPOTGORの機能は以下の通り。
Bit Number |
Name |
Function |
---|---|---|
15 |
OUTRY |
Output enable for bit 14 (1=output) |
14 |
DATRY |
data for port 1, pin 9 |
13 |
OUTRX |
Output enable for bit 12 |
12 |
DATRX |
data for port 1, pin 5 |
11 |
OUTLY |
Output enable for bit 10 |
10 |
DATLY |
data for port 0, pin 9 (right mouse button ) |
09 |
OUTLX |
Output enable for bit 8 |
08 |
DATLX |
data for port 0, pin 5 (middle mouse button ) |
07-01 |
X |
chip revision identification number |
00 |
START |
Start pots (dump capacitors, start counters) |
信号出力を行う場合は、出力したいピンに対応したPOTGOの入出力設定用ビット(9, 11, 13, 15)に1を書き込んだうえで、データ用ビット(8, 10, 12, 14)に書き込みを行う。信号入力を行う場合はPOTGOの入出力設定用ビットに0を書き込んだ上でPOTGORの対応するデータ用ビットを読み込む(0の時対応するピンはL、1の時はH)。
ピン5、9をアナログ入力として使用する場合は、アナログ入力を受け付けたいピンに対応したPOTGOの入出力設定用ビット(9, 11, 13, 15)に0を書き込み、次いで垂直ブランキング期間中にPOTGOのビット0に1を書き込む。そして、次の垂直ブランキング期間中にアドレス $DFF012(POT0DAT/コントローラ端子0)又は$DFF014(POT1DAT/コントローラ端子1)を読み出す。各アドレスのビット0~7はピン5の、ビット8~15はピン9の抵抗値に対応した値となる。
ピン6のデジタル入出力は、まずアドレス$BFE201(CIAADDRA)のビット6(コントローラ端子0)又はビット7(コントローラ端子1)に書き込みを行い入力にするか出力にするかを決める(1で出力、0で入力)。そして、アドレス$BFE001(CIAAPRA)のビット6(コントローラ端子0)又はビット7(コントローラ端子1)を読み出すか書き込みを行う。なお、値が0の時はLで1の時はHである。
ライトペンの信号検出を行う場合は、まず$DFF100(BPLCON0)のビット3に1を書き込む。すると、ライトペンが指す座標に対応した座標が、アドレス$DFF004(VPOSR)及び$DFF006(VHPOSR)に保存される。垂直方向の座標はVPOSRのビット0(V8)及びVHPOSRのビット15~8(V7~V0)に、水平方向の座標はVHPOSRのビット7~0(H7~H0)に保存される。