※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

特集
ハードウェア編
MSX HARDWARE 仕様


 MSXシステムのハードウェアは、互換性拡張性を第1に設計されています。先に書いたように、各メーカーは得意な分野でMSXシステムを製品化することが予想され、その上で互換性を持つ必要があります。ハードウェアを固定することは、1つの制約と成り得ます。しかし、ハードウェアとソフトウェアとの上手な組合わせによって、さらに進んだシステムに拡張し、しかも互換性を保っていくことが可能になります。以下にマイクロソフトとアスキーが提案した、MSXシステムのハードウェア仕様を解説します。

主な仕様

 MSXホームパーソナルコンピュータシステムは、CPUにZ80A相当品、CRTCにTMS9918A相当品、PSGとしてAY-3-8910相当品が使用されます。

 メモリはMSX BASICの入ったROM32Kbyteと、8Kbyte以上のRAMから構成されます。インターフェイスとしては、カセットインターフェイス、カラービデオ出力、カートリッジスロット、ジョイスティックなどに使用できる汎用入出力ポートがあり、これらの電気的仕様は周辺機器の何れもMSXすべてのシステムに接続可能とするため、統一される必要があります。その他、プリンタポート、フロッピーディスクインターフェイスなどがサポートされます。キーボードは英数、ひらがななどに対応し、配列はJIS配列またはアイウエオ配列の2通りがあります。これはメーカーの判断で指定します。システム構成について、最小構成(必ず装備されなければいけない構成)とソフトウェアサポート範囲を 図1 に示しました。


図1 システム構成

 MSXでは、この他にもI/Oアドレス、割り込み、カートリッジ仕様、I/Oファンイン・ファンアウトなどの仕様が定められています。

CPU

 CPUにはZ80A相当品が使用され、基本仕様ではこれですべての処理が行われます。クロックは3.579545MHzで、M1サイクルに1WAITが挿入されます。

 割り込みはモード1が用いられ、CRTCのTMS9918A割り込みが出力(1/60秒ごと)とカートリッジバスの割り込み入力との論理ORを取って、Z80AのIRQに接続されます。これにより、インターバル・カウントやスプライト衝突の判断などの処理が行われます。モード1の飛び先である38H番地はROMとなっていますが、ここからRAM内のアドレスをコールさせており、任意の使用も可能になります。なお、NM1(←正:NMI)は使用していません。

CRTC(CRTコントローラ)

 CRTにはTMS9918A相当のLSIを用いています。これは32枚のスプライト画面、16色のカラー表示、256×192ドットのグラフィックなどが可能な画面表示LSIです。表示モードとして、9918のテキストモードを除くグラフィックⅠ/Ⅱ、マルチカラーモードがBASICでサポートされます。但し家庭用テレビへの接続を考慮して、水平方向の左右8画素、計16画素はソフト的に使用しないようにできます。( 表1 )。これは左右の文字欠けを防ぐためです。表示できる文字は 表2 の通りで、8×8画素構成256種の文字が表示されます。漢字表示はメーカー対応ですが、その標準はMSXに含まれることになります。なお、LSIの詳細については、本号“TMS9918Aマニュアル”を参照して下さい。


表1 TMS9918Aを用いた画面表示
モード 解像度 サイズ パターン数 色指定 動画 表示画面
グラフィックⅠ LSI規格 256×192 8×8 256 16色 32×24
使用推奨値 240×192 30×24
グラフィックⅡ LSI規格 256×192 8×8 768 16色 32×24
使用推奨値 240×192 30×24
マルチカラー LSI規格 64×48blk 4×4
1blk当り
- 16色 32×24
使用推奨値 60×40blk 30×24
テキスト※ LSI規格 256×192 8×6 256 16色のうち
2色
不可 40×24
使用推奨値 240×192
使用推奨値:水平方向の左から8画素、右から8画素をソフト的に使用しないこととする。
※テキストモードはBASICではサポートしない。


表2 キャラクタコード表
上位4ビット
0 1 2 3 4 5 6 7 8 9 A B C D E F


4


0 π
1
2
3
4
5
6
7
8
9
A
B
C ×
D
E
F _

PSG(プログラマブル・サウンド・ジェネレータ)

 PSGにはAY-3-8910相当のLSIが使用され、8オクターブの3重和音演奏とノイズの発生が可能です。このLSIの内部には18個のレジスタがあり、3つのトーンジェネレータの発振周波数やエンベロープパターンをソフトウェアで設定できます( 図2、3 参照)。また2つの8bitポートがあり、このポートはジョイスティック入力などに用いられます( 表10 参照)。PSGに関するこれ以上の詳しい仕様やアクセス手順などについては、General Instrument社などのマニュアルを参照して下さい。

                    \               BIT
REGISTER     \
   B7       B6       B5       B4       B3       B2       B1       B0   
R0 Channel A Tone Period 8-BIT Fine Tune A
R1 4-BIT Coarse Tune A
R2 Channel B Tone Period 8-BIT Fine Tune B
R3 4-BIT Coarse Tune B
R4 Channel C Tone Period 8-BIT Fine Tune C
R5 4-BIT Coarse Tune C
R6 Noise Period 5-BIT Period Control
R7 Enable IN /OUT Noise Tone
IOB IOA C B A C B A
R10 Channel A Amplitude M L3 L2 L1 L0
R11 Channel B Amplitude M L3 L2 L1 L0
R12 Channel C Amplitude M L3 L2 L1 L0
R13 Envelope Period 8-BIT Fine Tune E
R14 8-BIT Coarse Tune E
R15 EnvelopeShape/Cycle CONT ATT ALT HOLD
R16 I/O Port A Data Store 8-BIT PARALLEL I/O on Port A
R17 I/O Port B Data Store 8-BIT PARALLEL I/O on Port B
図2 AY-3-8910のレジスタ構成


図3 AY-3-8910のエンベロープ波形

 音出力は、PSGとは別にソフトウェアによる1bitポート音出力も用意され、i8255相当品のCポートに出力します。8255は、この他スロットセレクトやキーボードスキャン信号などに使われます。なお、PSGの出力信号レベルは-5dbm、RCA2ピンコネクタ出力が標準となります。

キーボード

 キーボードの配列にはJIS標準配列とアイウエオ配列の2種類の仕様があります。これはジャンパによるソフトウェアの切り替えで、BASIC自身は両方のキースキャン用変換テーブルを内蔵しています。キートップは72個で、JIS配列のレイアウトを 図4 に示します。CAPSLOCK、カナにはロック表示ランプがあり、SELECTキーはアプリケーションプログラムで使用されます。

図4 JIS標準によるキーレイアウト(例)
 キーボードモードには、英数字大、英小文字、カタカナ、ひらがなの4つがあり、これとグラフィックキーによる入力が可能になっています。モードの切り替えは、シフトキーとカナキー、キャピタルロックキーによります。カナキーとキャピタルロックキーは一度押すごとにモードが反転します。電源投入時(リセット復帰時)は英小文字モードとなります。

インターフェイス

カセットインターフェイス

 信号の種類とピンコネクションを 表3 に示します。コネクタはDIN45326の8ピンタイプでリモート機能をサポートします。FSK変調、調歩同期(非同期)方式をとり、転送レートのデフォルトは1200baud(1200Hz 1波…0、2400Hz 2波…1)です。また2400baud(2400Hz 1波…0、4800Hz 2波…1)も仕様に含まれますが、これは信頼性をあげるため使用するカセットレコーダの機種指定が必要となります。入力はカセット側のイヤホン端子に、出力はマイクロフォン端子に接続します。

表3 カセットインターフェイスの信号接続
端子番号 信号名 方向 ピンコネクション
1 GND
2 GND
3 GND
4 CMTOUT 出力
5 CMTIN 入力
6 REM+ 出力
7 REM- 出力
8 GND

汎用入出力ポート

 このポートはAY-3-8910相当品の汎用ポートを使用し、入力4bit、出力1bit、双方向2bitとなっています。レベルは正論理TTLレベルで、2ポートまでサポートされます。コネクタはAMP9ピンタイプで、主にジョイスティックなどに使用されることになります。その他トラックボールやマウスなどのポインティングデバイスや、アプリケーションソフトウェアのサポートによって簡単なI/O装置の接続が可能でしょう。信号名とピンコネクションを 表4 に示します。

表4 汎用入出力ポートの信号接続
端子番号 信号名 方向 ピンコネクション
1 FWD 入力
2 BACK 入力
3 LEFT 入力
4 RIGHT 入力
5 +5V
6 TRG1 出力
7 TRG2 出力
8 出力 出力
9 GND

ビデオ出力インターフェイス

 ビデオ出力にはコンポジット信号、RF変調信号、RGB出力信号が考えられます。この内コンポジット信号とRF信号の出力はDIN5ピンコネクタより行われます。信号名とピンコネクションを 表5 に示します。

表5 ビデオ出力の信号接続
端子番号 信号名 ピンコネクション
1 +5V
2 GND
3 AUDIO
4 MONITOR VIDEO
5 RF VIDEO

プリンタインターフェイス

 パラレルポートですが、最小システムでは付属しない場合もあります。レベルはTTLレベル、BUSYとSTROBE信号によるハンドシェークでデータの出力が行われます。信号名とピンコネクションを 表6 に示します。

表6 プリンタコネクタの信号接続
端子番号 信号名 ピンコネクション
1 PSTB
2 PDB0
3 PDB1
4 PDB2
5 PDB3
6 PDB4
7 PDB5
8 PDB6
9 PDB7
10 NC
11 BUSY
12 NC
13 NC
14 GND

フロッピーディスクインターフェイス

 フロッピーディスク用のインターフェイスは各社対応となりますが、プログラム仕様はMSXに含まれます。ディスクのフォーマットは、片面倍密度、両面倍密度などのメディアごとに定められます。フロッピーディスクインターフェイスは、カートリッジスロットコネクタから接続されます。


カートリッジ仕様

 カートリッジスロットコネクタは本体的に最小一つ、最大3つまでサポートされます。また拡張カートリッジスロット(本体スロットコネクタより拡張)で4スロット、合計6スロットまでサポートしています。接続信号を 表7 、その説明を 表8 に示します。電圧レベルはTTLレベルで、ファンイン・ファンアウトの接続条件は 図5 の通りとなります。なお、電源容量は+5Vが300mA/スロット、+12Vと-12Vがそれぞれ50mAとなっています。

表7 カートリッジバスの信号接続
ピン
No.
名称 I/O※1 ピン
No.
名称 I/O※1
1 CS1 O 2 CS2 O
3 CS12 O 4 SLTSL O
5 予備※2 - 6 RFSH O
7 WAIT I 8 INT ※3 I
9 M1 O 10 BUSDIR I
11 IORQ O 12 MERQ O
13 WR O 14 RD O
15 RESET O 16 予備※2 -
17 A9 O 18 A15 O
19 A11 O 20 A10 O
21 A7 O 22 A6 O
23 A12 O 24 A8 O
25 A14 O 26 A13 O
27 A1 O 28 A0 O
29 A3 O 30 A2 O
31 A5 O 32 A4 O
33 D1 I/O 34 D0 I/O
35 D3 I/O 36 D2 I/O
37 D5 I/O 38 D4 I/O
39 D7 I/O 40 D6 I/O
41 GND - 42 CLOCK O
43 GND - 44 SW1 -
45 +5V - 46 SW2 -
47 +5V - 48 +12V -
49 SUNDIN I 50 -12V -
※1 本体を基準にした入出力の区別
※2 予備は使用禁止端子
※3 オープンコレクタ出力

表8 カートリッジバスの内容
ピンNo. 名称 内容
1 CS1 ROM 4000H~7FFFH番地セレクト信号
2 CS2 ROM 4000H~BFFFH番地セレクト信号
3 CS12 ROM 4000H~BFFFH番地セレクト信号(256k ROM用)
4 SLTSL スロットセレクタ信号、各スロット毎にそのスロット固有のセレクト信号を印加する
5 予備 将来のための予備信号線(使用禁止)
6 RFSH リフレッシュサイクル信号
7 WAIT CPUへのWAIT要求信号(本体内部でのタイミングを取ること)
8 INT CPUへの割り込み要求信号
9 M1 CPUへのフェッチサイクルを表す信号
10 BUSDIR 外部データバスバッファの方向を制御する信号
カートリッジがセレクトされ、データを送出するタイミングでメモリを除く各カートリッジよりLレベルを出力する(詳細は付録参照)
11 IORQ I/Oのリクエスト信号
12 MERQ メモリリクエスト信号
13 WR ライトタイミング信号
14 RD リードタイミング信号
15 RESET システムリセット信号
16 予備 将来のための予備信号線(使用禁止)
17~32 A0~A15 アドレスバス信号
33~40 D1~D7 データバス信号
41 GND 信号グランド
42 CLOCK CPUクロック(3.579545MHz)
43 GND 信号グランド
44,46 SW1,2 抜差プロテクト用
45,47 +5V +5V電源
48 +12V +12V電源
49 SUNDIN サウンド入力信号(-5dbm)
50 -12V -12V電源

図5 カートリッジのファンイン・ファンアウト条件

 標準カートリッジの外形を 図6 に示しています。正面コネクタ左側に貫通穴があり“MSX”のロゴが入っているのが特徴となります。また逆挿入防止用の切り欠きが、コネクタ開口部横に設けられます。

図6 標準カートリッジの外形

スロットの概念

 MSXの使用で使われる“スロット”は、64KbyteのCPUメモリ空間を構成する点でメモリバンクという概念に近いものです。しかし、CPUが番号を指定してメモリブロックを選択することができる点で、カートリッジを挿入するスロットに近いという“スロット”という名称を使用しています。

 またカートリッジバス上のスロットを選択する信号は、スロットセレクト信号と呼ぶのが自然といえるでしょう。

 従来のように共通バス構造で複数個のメモリバンクを持つ場合、各デバイスに接続される選択信号に区別がないため、同時に同じアドレス空間をもつ複数個のカートリッジがバスに接続されると信号の衝突が起こります。これはシステムが動かないだけでなく、ハードウェアの劣化を招くことになります。

 しかしMSXシステムでは、スロットセレクト信号により各デバイスが別個に選択されるため、以上のような問題が起こることはありません。さらに同一のアドレス空間を占めるソフトウェアをカートリッジスロットに同時に存在できることから、システムの柔軟性・拡張性を高めることができます( 図7 参照)。

図7 MSXシステムのメモリマップ

 このような理由でスロットが分けられ、実際にBASICの入ったROMとシステムRAMはスロットの一つ(スロット0)に接続され、ほかのスロットがコネクタを通じで外部に拡張されることになります。従ってスロットは、最小構成でもシステム用とカートリッジ用の2つが存在することになり、標準構成では4スロットとなります。なお、スロットの概念はソフトウェアから見たもので実際のハードウェアがいくつのカートリッジスロットを持つか、スロットコネクタを通しているか否かは関知していません。

MSXシステムの拡張

 MSXシステムは、基本仕様の拡張に備えていくつかの拡張用機能を備えています。これらは、MSXマシンを使用するユーザーが特に意識する必要はありませんが、MSXの特徴の一つであるため以下に説明します。

 MSXシステムのメモリは、BASICの入ったROM32Kbyteと、8Kbyte以上のRAMで構成されます。このうちRAMは、FFFFH番地より8000H番地に向かって実装されている最も広い領域を、システムのRAM領域とします。このRAMは、拡張スロットを含むどのスロットに実装されていても構いません。メモリマップを 図7 に示します。

 64Kbyteのメモリ空間はメモリマップのように4つに区分され、スロットセレクトレジスタより16Kbyteのページごとに任意のスロットから選んでメモリが配置されます。このように、メモリは16Kbyteごとに選択、配置されることになります。ただし、はじめに8KbyteのRAMが高位番地(E000H~FFFFH)に位置しているシステムの場合、スロットから8KbyteのRAMを追加して16Kbyteにすることはできません。またこの8Kbyteの実装時に、メモリ空間の2(8000H~C000H)にRAMを拡張することもできません。メモリは連続して配置される必要があります。但し、その8KbyteのRAMを使用せず、外部に16Kbyte/32KbyteのRAMを拡張することは可能です。

 また、MSX BASICは8000H~FFFFHまでのRAMしか使用しないため、64KbyteRAMを用いて0000H~FFFFHまでのメモリを追加しても、0000H~7FFFHのアドレスにあるメモリは使用できません。

カートリッジスロットの拡張

 スロットの拡張は、基本構成のスロットから行われます。従って、拡張スロットを用いると、基本構成のスロットの数は1つ減ることになります。

 拡張スロットの選択は、まず拡張スロットが接続されている基本スロットが選択され、さらに拡張スロットを選択することになります。ただし、基本スロットを禁止する方法をシステムが持っている場合は、この限りではありません。

 ところで、拡張スロットに接続されるカートリッジのスロットセレクト信号を作成するため、拡張スロットのメモリアドレスFFFFHにスロットセレクトレジスタを置きます。このレジスタはRAMと区別するため、レジスタの内容を読み出すと、レジスタの内容のコンプリメントが読み出されるようにします。これにより、基本スロットの1から3のどのスロットから、あるいは2つ以上のスロットから、拡張スロットを設けることができるようになります( 図8 )。MSX BASICでは、拡張スロット1つまでをサポートします。

図8 拡張スロットセレクト信号作成回路例

 一方、バッファなしで接続できるスロットの数は4つまでです。これは先に説明したファンアウトからの制約によるものです。従って、5つ以上のスロットを用意する場合は、カートリッジバスにバッファを入れなければなりません。

 この拡張されたバスのデータバッファの入出力方向をコントロールするのがBUSIR信号です( 表7,8 参照)。但し、メモリだけを内蔵したカートリッジでは、スロットセレクト信号(SLTSL)、メモリクエスト信号(MREQ)、リード/ライト信号(RD/WR)によりデータバスの方向を決めることができ、BUSDIR信号は不要となります。

 この信号が必要となるのは、CPUに信号を送る、すなわちCPUの入力命令に対して応答しなければならないような入力デバイスや、モード2の割り込みにおいてベクトルアドレスをCPUに知らせるようなデバイスを持ったカートリッジなどです。これらはCOU(←CPU?)にデータを送るタイミングに合わせてBUSDIR信号をLレベルにし、拡張されたデータバッファの方向をCPU方向に変えてやらなければなりません。拡張カートリッジの回路例を 図9 に示します。

図9 拡張スロット回路例

I/Oの拡張

 MSXシステムのI/Oマップ、及びこれを使用するPSG、PPIのビット割り当てを 表9~11 に示します。

表9 MSXシステムのI/Oアドレス割り当て
IO ADR R/W 内容 備考
&H98

&H99




V-RAMへのデータライト
V-RAMからのデータリード
コマンド、アドレスセット
ステータスリード
9918A
相当品
&HA0
&HA1
&HA2


アドレスラッチ
データライト
データリード
AY-3-8910
相当品
&HA8

&HA9

&HAA

&HAB








ポートAデータライト
ポートAデータリード
ポートBデータライト
ボートBデータリード
ポートCデータライト
ポートCデータリード
モードセット
8255A
相当品
&H90

&H91


ストローブ出力(b0)
ステータス入力(b1)
プリントデータ
ラッチ出力
BUSYで1
ラッチ出力

表10 PSGのビット割り当て
ポート ビット I/O 接続コネクターピン番号 ジョイスティック使用時の信号
A













0

1

2

3

4

5

6
7

J3-1ピン※1
J4-1ピン※2
J3-2ピン※1
J4-2ピン※2
J3-3ピン※1
J4-3ピン※2
J3-4ピン※1
J4-4ピン※2
J3-6ピン※1
J4-6ピン※2
J3-7ピン※1
J4-7ピン※2
キー配列指定入力※4
CSAR(カセットテープのリード)
FWD1
FWD2
BACK1
BACK2
LEFT1
LEFT2
RIGHT1
RIGHT2
TRGA1
TRGA2
TRGB1
TRGB2
"H"/"L"レベル

B







0
1
2
3
4
5
6
7

J3-6ピン※3
J3-7ピン※3
J4-6ピン※3
J4-7ピン※3
J3-8ピン
J4-8ピン
ポートA入力セレクト
KLAMP(カナランプ信号"L"で点燈)
"H"レベル
"H"レベル
"H"レベル
"H"レベル




※1 ポートBのビット6が"L"レベル時有効、ジョイスティック1用
※2 ポートBのビット6が"H"レベル時有効、ジョイスティック2用
※3 出力ポートとして使用しない時は"H"レベルにすること。オープンコネクタ・バッファを介して出力する
※4 JIS配列→"H"レベル、あいうえお配列→"L"レベル

表11 PPIビット割り当て
ポート ビット I/O 信号名 内容
A









0
1

CS0L
CS0H
0000H-3FFFH番地のスロット指定信号
2
3
CS1L
CS1H
4000H-7FFFH番地のスロット指定信号
4
5
CS2L
CS2H
8000H-BFFFH番地のスロット指定信号
6
7
CS3L
CS3H
C000H-FFFFH番地のスロット指定信号
B


0

7

キーボードリターン記号
C










0
1
2
3

KB0
KB1
KB2
KB3
キーボードスキャン信号
4 CASON カセットコントロール(LでON)
5 CASW カセット書き込み信号
6 CAPS CAPSランプ信号(Lで点燈)
7 SOUND ソフトによるサウンド出力

 MSXではあらかじめ規定されていないI/O装置を追加する場合、I/Oアドレスは原則としてメモリマップドI/O方式が取られます。I/Oアドレスの00Hから7FHまでは規定されていないため、使用することが可能となるのですが、規定されていないがために他の装置と同じI/Oアドレスを割り当ててしまい、I/Oカートリッジの組合せによってポート信号の衝突が起こってしまいます。これに対して、I/Oアドレスをメモリアドレス上に取れば、例え同じアドレスが設定されてもスロットセレクト信号により他の装置と区別でき、I/Oバス競合などの心配がなくなります。




以上でMSXシステムのハードウェア解説を終わりますが、MSXシステムの優れた拡張性・互換性を理解していただけたと思います、なお、これらは、ソフトウェアとの関連などにより、最終仕様で変更される場合も考えられます。今後の月刊アスキーによる関連記事や、当社出版物を参照いただくようお願い致します。



月刊ASCII1983年8月号(通巻74号)P112~P117 特集記事より転載