misc. > アタリ仕様ジョイスティック研究 > 機器側の仕様 > ATARI系列(Vcc:pin7, GND:pin8) > ATARI VCS/2600(1977)

ATARI VCS/2600(1977)

ハードウェア概要

ATARI VCS(Video Computer System)は、1977年に登場した最初期のROMカートリッジ式の家庭用ビデオゲームコンソールである[1]。ATARI社の様々なゲームや、任天堂のドンキーコング、ナムコのパックマンなどが移植されヒット商品となった。性能的には後発のファミコンなどと比べると大分劣り、商業的には1980年代中盤には終息したものの人気は根強く、今なおホビイスト達によるゲーム開発が盛んに行われている[2]

オリジナルのVCSは後継機であるATARI 5200[3]の登場に伴い、ATARI 2600と名称変更された。バリエーションとしては廉価版の2600 Jr.、日本市場向けの2800、Sears社にOEM供給されたSears Video ArcadeSears Video Arcade II[4]、Coleco社によるライセンス互換製品のGemini等がある。

本機で採用されたコントローラ端子は、様々なバリエーションを生みつつアメリカや日本のパソコンやゲーム機に採用された。

コントローラ端子の特徴

本機はコントローラ端子を2つ備えている。ピンアウトは以下の通り。

pin#

Function

1

Digital in / Digital out

2

Digital in / Digital out

3

Digital in / Digital out

4

Digital in / Digital out

5

Digital in / Analog in

6

Digital in

7

VCC

8

GND

9

Digital in / Analog in

ピン1〜4はピンごとにデジタル入力とデジタル出力を切替可能である。また、ピン1〜4、6は本体内でプルアップされている。これに対してピン5,9をデジタル入力として使用する場合はコントローラ内にプルアップ回路を形成する必要がある。ピン6は通常の検出モードとエッジ検出モードのいずれかを選択可能である(後述)。

ハードウェア実装

AtariAgeに記載のATARI VCS(NTSC版)の回路図からコントローラ端子周りを抜粋したものを下図に示す。

/static/images/atari/atari2600.png

コントローラ端子はCPU(MOS6507)の周辺チップであるMOS6532(通称PIA)と、ビデオ/サウンドコントローラであるTIA(Television Interface Adapter, 型番C010444)のI/Oポートを使って実装されている。

コントローラ端子のピン1〜4はPIAのI/OポートPA0〜7に接続されている。PA0〜7は内部でプルアップされているので、当該ポートとコントローラ端子のピンは直接接続されている。一方コントローラ端子のピン6はTIAの信号入力ポートI4、I5とプルアップ回路を介して接続されている。ピン5、9はTIAの信号入力ポートI0〜I3にRC回路を介して接続されている。

制御方法

STELLA PROGRAMMER'S GUIDEによれば、各ピンの制御方法は以下の通りである。

ピン1〜4については、入出力の指定をアドレス$0281(SWACNT)で行い、データの出力/検出をアドレス$0280(SWCHA)で行う[5]。両アドレスの機能は以下の通り。両コントローラ端子のピン1〜4を全てデジタル入力とする場合は、$0281にx00を書き込んだ上で$0280を読む。左コントローラのポート1〜4を書き込み用として使う場合は、$0281にxF0を書き込んだ上で$0280に送信するデータを書き込む(ビット4〜7のみ有効)。なお、値1がHレベル(入力として使う場合は、ピンがピン8と短絡していない状態を指す)、値0がLレベルである。

port#

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

0280 (R/W)

Read / Write PA

PA7

PA6

PA5

PA4

PA3

PA2

PA1

PA0

0281 (W)

Set Direction of PA

PA7

PA6

PA5

PA4

PA3

PA2

PA1

PA0

ピン5、6、9はTIAによって制御される。ピン5、9をアナログ入力として使用する場合は以下の手順を踏む。

  1. アドレス$01[6](VBLANK)のビット7に1を書き込む。そうするとキャパシタに蓄えられた電荷が放出され、再び充電が行われる。

  2. 充電が完了する(=1.から可変抵抗の抵抗値に比例した時間が経過する)まで、アドレス$X8(左コントローラピン5)、$X9(左コントローラピン9)、$XA(右コントローラピン5)、$XB(右コントローラピン9)のビット7に1が出力され続ける[7]

  3. CPUは上記アドレスを周期的にチェックして各アドレスのビット7が0に戻るまでの時間を計測する。

アドレス$01のビット7に0を書き込むとピン5、9はデジタル入力モードとなる。読み出しはアナログ入力と同様上記アドレスのビット7を使用する。PIAとは逆にHレベルが0、Lレベルが1である。

ピン6はアドレス$XC(左コントローラ)、$XD(右コントローラ)のビット7にアサインされている。ピン6がHレベルの時は当該ビットは1、Lレベルの時は0である[8]。アドレス$01のビット6に1を書き込むとラッチが有効となり、エッジ検出モードとなる。つまり、H→Lの立ち下がりを検出すると以降は(アドレス$01のビット6に1を書き込むまで)該当アドレスのビット7の値は0を維持する。


コメント(0)


Note

本サイトのハイパーリンクの一部は、オリジナルのサイトが閉鎖してしまったため"Internet archive Wayback Machine"へのリンクとなっています。そのようなリンクにはアイコン[archive]を付与しています。

本サイトはCookieを使用しています。本サイトにおけるCookieは以下の三種類のみであり、Cookieの内容に基づいてサイトの表示を変更する以外の用途には用いておりません。