知識ベース

MOSテクノロジー8563

8563ビデオディスプレイコントローラーVDC )は、MOS Technologyが製造した集積回路でした。 Commodore 128コンピューターで使用され、80列(640 x 200ピクセル)RGBビデオディスプレイを生成し、Commodore 64互換グラフィックスをサポートするVIC-IIと共に実行されました。 C128のDCRモデル(およびいくつかのDモデル)は、最新の技術的に高度な8568 VDCコントローラーを使用しました。

歴史と特徴

元々は、Zilog Z8000をベースに計画された(ただし未リリースの)UNIXベースのビジネスコンピューターを対象としていたCommodoreは、VDCをいくつかのプロトタイプマシンに設計しました。これらのうち、Commodore 128のみがこれまでに生産を見ました。人気のあるVIC-IIなどの初期のMOSビデオチップとは異なり、VDCには専用のビデオメモリがあり、元のC128に16キロバイト(16,384バイト、64キロバイト、65,536バイトにアップグレード可能)またはC128DCRに「フラット」C128がありました。このRAMは、マイクロプロセッサから直接アクセスできませんでした。

8563は、他のほとんどのMOSテクノロジーラインよりも製造が難しく、初期歩留まりは非常に低かった。初期のユニットには、重大な信頼性の問題もあり、過熱により自己破壊する傾向がありました。また、VDCには、レジスタに対する間接的なロードおよびストア操作が誤動作するタイミングの問題がありました。

公式には、VDCはテキストのみのチップでしたが、初期のC128開発者に与えられたMOS Technologyの技術文献を注意深く読んだところ、高解像度のビットマップモードが可能であったことが示されました。詳細。 Commodore 128の組み込みプログラミング言語であるBASIC 7.0は、レガシーVIC-IIチップを介して40カラムモードでのみ高解像度グラフィックスをサポートしていました。

C128のリリース後まもなく、VDCのビットマップモードは、Data Beckerの書籍「Commodore 128-DasgroßeGRAFIK-Buch」(1985年後半に米国でAbacus Softwareにより発行)、およびアセンブリ言語プログラムでかなり詳細に説明されました。ドイツの作家KlausLöffelmannとDieterVüllersによって提供されました。ここでは、任意のピクセルを設定またはクリアしたり、BASICを使用して必要な計算を実行したり、80列画面でビットマップの幾何学的形状を生成したりすることができました。コモドール128のリリースから1年足らずの1986年2月、 RUN誌は、VDCのビットマップモードについて説明し、BASIC 7.0を拡張したタイプインプログラム(8502アセンブリ言語で記述)を含む記事「 Ultra Hi-Res Graphics 」を発行しました8563を使用して640×200の高解像度グラフィックスをサポートする機能。著者のLou WallaceとDavid Darusは、後にUltra Hi-Resユーティリティを商用パッケージBASIC 8に開発しました。 C128で最も人気のあるサードパーティユーティリティの1つであり、これは、より高度なVDC高解像度機能を幅広いプログラマーに提供しました。

Commodoreはついに、 Commodore 128 Programmer's Reference Guideで VDCに関する完全な公式ドキュメントを提供しました。 VDCビットマップモードは、GEOSオペレーティングシステムのC128バージョンで広く使用されていました。

VDCにはスプライト機能がなく、ゲームアプリケーションでの使用が制限されていました。ただし、専用のビデオRAM内で小さなブロックメモリコピーを自律的に実行するブリッティング機能が含まれていました。 VDCがそのようなコピーを実行している間、コピーが完了するまで他のVDCアクセスが試行されない限り、システムCPUはコードの実行を継続できます。これらの機能は、C128のスクリーンエディタROMによって使用され、スクリーンセクションをすばやくスクロールまたはクリアします。

技術仕様

  • IBMのCGAビデオ規格と互換性のあるRGBI出力(RGBと強度)。
  • 表示用の16または64キロバイトのアドレス空間、文字形状、および表示属性メモリ(専用、システムメモリとは別)。
  • インターレースモードで最大720×700ピクセルのビデオ解像度(最大64 KBのビデオRAM)。プログラマのニーズに応じて、640×200ノンインターレース、640×400インターレースなど、他の画像サイズも可能です。
  • 80×25文字のテキスト解像度(C128カーネルのデフォルト); 80×50や40×25などの他のサイズも可能です。
  • 2つの強度で8色。

:これは、米国60 Hz C128のみに適用されます。 50 Hz C128マシンは、50 Hzの垂直リフレッシュで信号を出力します。 CGA規格に準拠していませんが、ほとんどのCGAモニターは問題なく50 Hz信号を表示できました。ただし、一部のモニターは信号の解決に失敗したか、解決に成功しましたが、遅かれ早かれ偏向回路が失敗します。

プログラミング

VDCの内部レジスタと専用のビデオメモリのアドレス指定は、間接的な方法で行う必要があります。最初に、プログラムはVDCに、その37個の内部レジスタのどれにアクセスするかを通知する必要があります。次に、プログラムはVDCがアクセスの準備ができるまで待機する必要があります。その後、選択された内部レジスタの読み取りまたは書き込みが実行されます。次のコードは、典型的なレジスタ読み取りです。

ldx #regnum; stx $ d600にアクセスするためのVDCレジスター;制御レジスターへの書き込みループビット$ d600;ステータスレジスタbplループのビット7のチェック; VDCの準備ができていないlda $ d601; VDCレジスターからの読み取り...

次のコードは、一般的なレジスタ書き込み操作です。

ldx #regnum; stx $ d600に書き込むVDCレジスター;制御レジスターに書き込むループビット$ d600;ステータスレジスタbplループのビット7をチェックする; VDC not ready sta $ d601; VDCレジスターに書き込む...

VDCを制御するこのやや面倒な方法により、ビットマップモードでの可能な最大フレームレートは一般に、ディスプレイのビット集約的な操作が必要なアーケードスタイルのアクションビデオゲームには遅すぎます。

標準テキストモードでは、VDCはVIC-IIとほぼ同じように動作しますが、1kではなく2kの画面メモリが使用されます。電源投入時のデフォルト構成では、画面メモリは0〜7FFドル、カラーメモリは800〜9FFドルに配置され、2k境界にある限りVDCメモリのどこにでも移動できます。属性は、VIC-IIの高解像度モードのように処理され、グローバルな背景色と各色の前景色がカラーRAMごとに個別に設定されます。カラーデータに加えて、後者には各文字の属性データも含まれています。ビット4は、有効にすると文字を点滅させ、ビット5は下線付き文字を生成し、ビット6は文字のビットマップパターンを反転させます。ビット7は、代替文字セットを有効にします。 VDCは最大512文字を使用できます。特定の文字の代替文字フラグが有効になっている場合、文字パターンは文字256〜511から描画されます。したがって、文字65が表示されている場合、代替文字フラグを有効にすると、代わりに文字321が表示されます。代替文字フラグは通常、大文字/小文字モードが設定されている場合に使用されます。このフラグは、すべてのVDC画面位置で有効になり、デフォルトの大文字/グラフィック文字セットの代わりに、大文字/小文字文字セットとその反転ビデオバージョンが表示されます。

VDCはキャラクターROMを使用せず、代わりにVIC-IIのキャラクターROMパターンは、VDCがハードウェアでキャラクターを反転できる場合でも、リバースビデオキャラクターのパターンを含むC128のパワーオン初期化の一部としてVDC RAMに単にコピーされます。 VDCの文字の高さは調整可能であるため、文字パターンは8バイトではなく16バイトで保存されます。画面は25行なので、実際には文字の高さは8行に制限されています。つまり、文字データ用のスペースの半分が未使用のままで無駄になっています。電源投入時のデフォルト設定では、文字データは$ 2000- $ 3FFFに配置されます。 $ 2000- $ 23FFには大文字/グラフィックス文字のパターンが含まれ、$ 2C00- $ 33FFには大文字/小文字が含まれ、$ 2400- $ 2BFFおよび$ 3400- $ 3FFFには各セットの反転ビデオパターンが含まれます。ユーザーは任意のカスタム文字を自由に定義し、VDCメモリにマップできます。

登録リスト

この情報は、 Commodore 128プログラマーズリファレンスガイドから改編されました。

登録 16進数ビット7 ビット6 ビット5 ビット4 ビット3 ビット2 ビット1 ビット0 説明
0
$ 00
HT7
HT6
HT5
HT4
HT3
HT2
HT1
HT0
水平合計
1
01ドル
HD7
HD6
HD5
HD4
HD3
HD2
HD1
HD0
水平表示
2
02ドル
HP7
HP6
HP5
HP4
HP3
HP2
HP1
HP0
水平同期位置
3
03ドル
VW3
VW2
VW1
VW0
HW3
HW2
HW1
HW0
垂直/水平同期幅
4
04ドル
VT7
VT6
VT5
VT4
VT3
VT2
VT1
VT0
垂直合計
5
05ドル
-
-
-
VA4
VA3
VA2
VA1
VA0
垂直調整
6
06ドル
VD7
VD6
VD5
VD4
VD3
VD2
VD1
VD0
縦表示
7
07ドル
VP7
VP6
VP5
VP4
VP3
VP2
VP1
VP0
垂直同期位置
8
08ドル
-
-
-
-
-
-
IM1
IM0
インターレースモード
9
09ドル
-
-
-
-
CTV4
CTV3
CTV2
CTV1
キャラクター合計垂直
10
0A
-
CM1
CM0
CS4
CS3
CS2
CS1
CS0
カーソルモード、スキャン開始
11
$ 0B
-
-
-
CE4
CE3
CE2
CE1
CE0
カーソル終了スキャンライン
12
0米ドル
DS15
DS14
DS13
DS12
DS11
DS10
DS9
DS8
表示開始アドレス上位バイト
13
0D
DS7
DS6
DS5
DS4
DS3
DS2
DS1
DS0
表示開始アドレスの下位バイト
14
$ 0E
CP15
CP14
CP13
CP12
CP11
CP10
CP9
CP8
カーソル位置の上位バイト
15
$ 0F
CP7
CP6
CP5
CP4
CP3
CP2
CP1
CP0
カーソル位置の下位バイト
16
10ドル
LPV7
LPV6
LPV5
LPV4
LPV3
LPV2
LPV1
LPV0
ライトペンの垂直位置
17
11ドル
LPH7
LPH6
LPH5
LPH4
LPH3
LPH2
LPH1
LPH0
ライトペンの水平位置
18
12ドル
UA15
UA14
UA13
UA12
UA11
UA10
UA9
UA8
更新アドレス上位バイト
19
13ドル
UA7
UA6
UA5
UA4
UA3
UA2
UA1
UA0
更新アドレス下位バイト
20
14ドル
AA15
AA14
AA13
AA12
AA11
AA10
AA9
AA8
属性開始アドレス上位バイト
21
15ドル
AA7
AA6
AA5
AA4
AA3
AA2
AA1
AA0
属性開始アドレスの下位バイト
22
16ドル
CTH3
CTH2
CTH1
CTH0
CDH3
CDH2
CDH1
CDH0
文字合計水平、文字表示水平
23
17ドル
-
-
-
CDV4
CDV3
CDV2
CDV1
CDV0
キャラクターディスプレイ垂直
24
18ドル
コピー
RVS
CBRATE
VSS4
VSS3
VSS2
VSS1
VSS0
垂直スムーズスクロール
25
19ドル
テキスト
ATR
セミ
DBL
HSS3
HSS2
HSS1
HSS0
水平スムーズスクロール
26
100万ドル
FG3
FG2
FG1
FG0
BG3
BG2
BG1
BG0
前景色/背景色
27
10億ドル
AI7
AI6
AI5
AI4
AI3
AI2
AI1
AI0
行ごとのアドレス増分
28
$ 1C
CB15
CB14
CB13
-
-
-
-
キャラクターベースアドレス
29
1D
-
-
-
UL4
UL3
UL2
UL1
UL0
スキャンラインに下線を引く
30
1Eドル
WC7
WC6
WC5
WC4
WC3
WC2
WC1
WC0
単語数
31
1F
DA7
DA6
DA5
DA4
DA3
DA2
DA1
DA0
データレジスタ
32
20ドル
BA15
BA14
BA13
BA12
BA11
BA10
BA9
BA8
ブロック開始アドレス上位バイト
33
21ドル
BA7
BA6
BA5
BA4
BA3
BA2
BA1
BA0
ブロック開始アドレスの下位バイト
34
22ドル
DEB7
DEB6
DEB5
DEB4
DEB3
DEB2
DEB1
DEB0
表示有効化開始
35
23ドル
DEE7
DEE6
DEE5
DEE4
DEE3
DEE2
DEE1
DEE0
表示有効終了
36
24ドル
-
-
-
-
DRR3
DRR2
DRR1
DRR0
DRAMリフレッシュレート