VGA
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* Video Graphic Array [#laf1b76f]
-(by [[K]])
-640x480という解像度を指すこともある
-ビデオカード全般をVGAと書くときは、Video Graphic Adapter...
-ここではそのどちらについても興味はなく、AT互換機上でBIOS...
--一番お手軽な方法はBIOSを使って320x200x256色に切り替えて...
--この解像度に飽きたら、次はVESAのリニアアクセスに進むこ...
--しかし、VESAのリニアアクセスは32bitモードを使いこなす必...
-記述は実機で確認できていない情報も含んでいるので、間違っ...
* VGAのレジスタ [#i471b3a8]
** CRTコントローラ [#p9efe332]
-0x03d4に16bitアクセスで書き込む
--bit0-7がレジスタ番号
--bit8-15がデータ
-0x03d4と0x03d5をバイトアクセスする方法もある
--その場合はまず0x03d4にレジスタ番号をライトし、0x03d5に...
-モノクロディスプレイの場合、I/Oポートが0x03b4、0x03b5に...
--どっちなのか分からないときは、I/Oポート0x03ccをリードし...
-[0x00] Horizontal Total (水平総キャラクタ数)
--bit0-7:水平走査期間内のキャラクタ数
-[0x01] Horizontal Display Enable End (水平表示キャラク...
--bit0-7:水平走査期間内の表示キャラクタ数 - 1
-[0x02] Start Horizontal Blanking (水平非表示開始キャラ...
--bit0-7:水平非表示を開始するキャラクタ位置
-[0x03] End Horizontal Blanking (水平非表示終了キャラク...
--bit0-4:水平非表示を終了するキャラクタ位置
--bit5-6:水平表示スキュー
--bit7:リザーブ
-[0x04] Start Horizontal Retrace (水平帰線開始キャラクタ...
--bit0-7:水平帰線を開始するキャラクタ位置
//-(以下はまだ書き途中)
-[0x05] End Horizontal Retrace (水平帰線終了キャラクタ位...
--bit0-4:水平非表示を終了するキャラクタ位置
--bit5-6:水平帰線スキュー
--bit7:水平非表示終了位置のビット5
-[0x06] Vertical Total (垂直表示ライン数)
--bit0-7:(垂直走査線数-2)の下位8ビット
-[0x07] Overflow (各種上位ビット)
--bit0:Vertical Totalのビット8
--bit1:Vertical Display Enable Endのビット8
--bit2:Vertical Retrace Startのビット8
--bit3:Start Vertical Blankingのビット8
--bit4:Line Compareのビット8
--bit5:Vertical Totalのビット9
--bit6:Vertical Display Enable Endのビット9
--bit7:Vertical Retrace Startのビット9
-[0x08] Preset Row Scan (プリセット行走査)
--bit0-4:垂直スクロールのライン数(テキストモード時)
--bit5-6:水平スクロールのビット数(バイト単位)
--bit7:リザーブ
-[0x09] Maximum Scan Line (最大走査数)
--bit0-4:1キャラクタのライン数-1
--bit5:Start Vertical Blankingのビット9
--bit6:Line Compareのビット9
--bit7:200ラインモードの二重表示指定
-[0x0a] Cursor Start (カーソル開始ライン位置)
--bit0-4:カーソル表示ライン-1
--bit5:カーソル非表示フラグ
--bit6-7:リザーブ
-[0x0b] Cursor End (カーソル終了ライン)
--bit0-4:カーソル終了ライン-1
--bit5-6:カーソルスキュー
--bit7:リザーブ
-[0x0c] Start Address High (VRAM表示開始アドレス上位)
--bit0-7:表示開始アドレス上位8ビット
-[0x0d] Start Address Low (VRAM表示開始アドレス下位)
--bit0-7:表示開始アドレス下位8ビット
-[0x0e] Cursor Location High (カーソル位置上位)
--bit0-7:カーソル位置の上位8ビット
-[0x0f] Cursor Location Low (カーソル位置下位)
--bit0-7:カーソル位置の下位8ビット
-[0x10] Vertical Retrace Start (垂直帰線開始ライン位置)
--bit0-7:垂直帰線を開始する位置
-[0x11] Vertical Retrace End (垂直帰線終了ライン位置)
--bit0-3:垂直帰線を終了するライン位置
--bit4:垂直帰線割り込み時に通告(0のとき)
--bit5:垂直帰線割り込みの許可(0のとき)
--bit6:水平周波数の選択
--bit7:[0x00]~[0x07]レジスタのライトプロテクト(1で書き...
-[0x12] Vertical Display Enable End (表示ライン数)
--bit0-7:垂直表示を終了するライン位置の下位8ビット
-[0x13] Offset (VRAM上の1ライン幅)
--bit0-7:1ライン当たりの幅(グラフィックの場合はワード単...
-[0x14] Under Line Location (下線表示ライン位置)
--bit0-4:下線表示ライン(テキストモード時)
--bit5:クロック4分周(1のとき)
--bit6:16ビット/32ビットアドレス切り替え(1で32ビット)
--bit7:リザーブ
-[0x15] Start Vertical Blanking (垂直非表示開始ライン位...
--bit0-7:垂直非表示を開始するライン位置の下位8ビット
-[0x16] End Vertical Blanking (垂直非表示終了ライン位置)
--bit0-7:垂直非表示を終了するライン位置の下位8ビット
-[0x17] Mode Control (モード設定)
--bit0:1にするとインターレース表示
--bit1:1にすると垂直ラインアドレス有効
--bit2:1にすると垂直幅2倍
--bit3:1にするとクロック2分周
--bit4:リザーブ
--bit5:アドレス折り返し指定
--bit6:8ビット/16ビットアドレス切り替え(1で16ビット)
--bit7:1にすると垂直水平帰線許可
-[0x18] Line Compare (画面分割ライン位置)
--bit0-7:画面を分割するライン位置の下位8ビット
-0x19以降のレジスタはリザーブ
** アトリビュートコントローラ [#f9322c8b]
-0x03c0に8bitアクセスで書き込む(アドレスポート時)
--bit0-4がレジスタ番号
--bit5-7は000
--書き込み完了と同時に、データポートに変わる
-0x03c0に8bitアクセスで書き込む(データポート時)
--bit0-7がレジスタデータ
-0x03c0に8bitアクセスで、0x20を書き込む(通常モード復帰直...
--これでアトリビュートコントローラは完全に通常モードになる
-0x03c1に8bitアクセスで読み込む(データポート時)
--bit0-7がレジスタデータ
--一部の資料では、リードも0x03c0のほうで読むと説明してい...
-具体的なアクセス方法
--以下の操作中は割り込みなどを受け付けないようにすること...
--0x03daを空読み(0x03baの場合もある -- どちらになるかはI...
---空読みした値は他の用途に利用してもいいが、とりあえずア...
--以下を好きなだけやる。
---0x03c0にレジスタ番号を書き込む(0x00~0x14)。そして0x...
---0x03c0にレジスタ番号を書き込む(0x00~0x14)。そして0x...
---(註)レジスタ番号を書き込んで、データを書くとか読むと...
---(註)レジスタ番号を書いたら、必ずデータを書くか読むか...
--アトリビュートコントローラへのアクセスが済んだら、また...
--そして0x03c0に0x20を書き込む。
--これでビデオチップは通常状態に戻る。
-[0x00]-[0x0f] Color Palette 0~15 (ビデオDAコンバータに...
--bit0-5:ビデオDAコンバータに渡すカラーコード(0~63)
--bit6-7:リザーブ(書き込み時には0推奨)
-[0x10] Mode Control (表示モード)
--bit0:グラフィックモード選択(0:テキスト、1:グラフィ...
--bit1:モノクロモード選択(0:カラー、1:モノクロ)
--bit2:グラフィックキャラクタ選択
--bit3:ブリンク選択(0:高輝度、1:ブリンク)
--bit4:リザーブ(書き込み時には0推奨)
--bit5:レジスタ[0x13]有効(0:無効、1:有効)
--bit6:パックドピクセル選択(0:カラープレーン、1:パッ...
--bit7:レジスタ[0x14]有効(0:[0x00]-[0x0f]が有効で[0x14...
-[0x11] Sreen Border Color (ボーダーカラー)
--bit0-7:ボーダーカラー
-[0x12] Color Plane Enable (プレーン表示許可)
--bit0:プレーン0表示許可(1で表示)
--bit1:プレーン1表示許可(1で表示)
--bit2:プレーン2表示許可(1で表示)
--bit3:プレーン3表示許可(1で表示)
--bit4-5:Input Status 1へ出力するプレーン番号
--bit6-7:リザーブ(書き込み時には0推奨)
-[0x13] Horizontal Panning (水平スクロール)
--bit0-3:水平スクロールピクセル数
--bit4-7:リザーブ(書き込み時には0推奨)
-[0x14] Color Select (カラーコード上位)
--bit0-3:ビデオDAコンバータに渡すカラーコードの上位番号
--bit4-7:リザーブ(書き込み時には0推奨)
-0x15以降のレジスタはリザーブ
** VGAコントローラ [#o21f0595]
-0x03c2:ステータスレジスタ(8bit、R)
--bit0-3:リザーブ
--bit4:スイッチ指定(1ならカラーディスプレイ)
--bit5-6:リザーブ
--bit7:垂直割り込み発生中
-0x03c2:コンロトールレジスタ(8bit、W)
--bit0:I/Oアドレス指定
---0:0x03b4、0x03b5、0x03ba
---1:0x03d4、0x03d5、0x03da
--bit1:ビデオバッファアクセス許可(1で許可)
--bit2-3:クロック指定(00:640ドット、他は不明)
--bit4:リザーブ
--bit5:CGAページ切り替え(0:低位64KBのページ)
--bit6:水平帰線の極性
--bit7:垂直帰線の極性
-0x03c3:VGA動作許可レジスタ(8bit、W)
--bit0:VGA動作許可(1:動作許可)
--bit1-7:リザーブ
-0x03cc:読み出し用コントロールレジスタ(8bit、R)
--bit0-5:コンロトールレジスタと同じ(上記参照)
--bit6-7:垂直ライン指定(11なら480ライン)
-0x03da:カラーステータスレジスタ(8bit、R)
--これは0x03ccのbit0が1の時のみ有効
--bit0:表示期間中(0のとき)
--bit1-2:リザーブ
--bit3:垂直帰線中(1のとき)
--bit4-7:リザーブ
--このレジスタをアトリビュートコントローラの通常動作時に...
--このレジスタをアトリビュートコントローラのデータポート...
-0x03ba:モノクロステータスレジスタ(8bit、R)
--これは0x03ccのbit0が0の時のみ有効
--bit0:表示期間中(0のとき)
--bit1-2:リザーブ
--bit3:垂直帰線中(1のとき)
--bit4-7:リザーブ
--このレジスタをアトリビュートコントローラの通常動作時に...
--このレジスタをアトリビュートコントローラのデータポート...
** シーケンサー [#c930cd6c]
-0x03c4に16bitアクセスで書き込む
--bit0-7がレジスタ番号
--bit8-15がデータ
-0x03c4と0x03c5をバイトアクセスする方法もある
--その場合はまず0x03c4にレジスタ番号をライトし、0x03c5に...
--0x03c5にアクセスすると、自動的に0x03c4がインクリメント...
--16bitアクセスの場合は、アクセス後に0x03c4に次のアドレス...
-[0x00] Reset (リセット)
--bit0:非同期リセット (0でリセット)
--bit1:同期リセット (0でリセット)
--bit2-7:リザーブ
-[0x01] Clock Mode (クロックとモード設定)
--bit0:文字幅指定 (0:8ドット、1:9ドット)
--bit1:リザーブ
--bit2:16ビットアドレス指定 (1で有効)
--bit3:クロック2分周指定 (1で有効)
--bit4:32ビットアドレス指定 (1で有効)
--bit5:非表示設定 (1で有効)
-[0x02] Map Mask (プレーンごとの書き込み許可)
--bit0:Plane0 Write Enable (1で書き込み許可)
--bit1:Plane1 Write Enable (1で書き込み許可)
--bit2:Plane2 Write Enable (1で書き込み許可)
--bit3:Plane3 Write Enable (1で書き込み許可)
--bit4-7:リザーブ (書き込み時には0推奨)
-[0x03] Character Generator Select (キャラクタジェネレー...
--bit0-1:Character Set Bのbit1-2
--bit2-3:Character Set Aのbit1-2
--bit4:Character Set Bのbit0
--bit5:Character Set Aのbit0
--bit6-7:リザーブ
-[0x04] Memory Mode (VRAMモード)
--bit0:リザーブ
--bit1:Memory Size (0:VRAM64KB、1:VRAM128KB)
--bit2:1、2プレーン連続指定(0で有効)
--bit3:4プレーン連続指定(0で有効)
--bit4-7:リザーブ
-0x05以降のレジスタはリザーブ
** ビデオDAコンバータ [#o2d4bfd3]
-0x03c6:ピクセルマスクレジスタ(8bit、R/W)
--bit0-7:DAコンバータが受け取ったカラーコードは、このレ...
-0x03c7:ステータスレジスタ (8bit、R)
--bit0-1:これが00だったら書き込み中
--bit2-7:リザーブ
-0x03c7:アドレスレジスタ (8bit、W)
--ここに書き込みアクセスすると、パレット読み込みモードに...
--bit0-7:パレット番号
-0x03c8:アドレスレジスタ (8bit、W)
--ここに書き込みアクセスすると、パレット書き込みモードに...
--bit0-7:パレット番号
-0x03c9:データレジスタ (8bit、R/W)
--bit0-7:RGB成分の一つ(0~63)
---書き込むときは上位2ビットを0に、読み込むときは上位2bit...
-パレットのアクセスの手順
--まず一連のアクセス中に割り込みなどが入らないようにする...
--0x03c8に設定したいパレット番号を書き込み、続いて、R、G...
--現在のパレット状態を読み出すときは、まず0x03c7にパレッ...
--最初にCLIした場合は、最後にSTIする。
** VGAグラフィックコントローラ [#b864e92a]
-0x03ceに16bitアクセスで書き込む
--bit0-7がレジスタ番号
--bit8-15がデータ
-0x03ceと0x03cfをバイトアクセスする方法もある
--その場合はまず0x03ceにレジスタ番号をライトし、0x03cfに...
-[0x00] Set/Reset (ラッチとの演算に関するレジスタ)
--このレジスタは、書き込みモード0、3でのみ利用される
--bit0-3:カラーコード
--bit4-7:リザーブ (書き込み時には0推奨)
-[0x01] Enable Set/Reset (ラッチとの演算に関するレジスタ)
--このレジスタは、書き込みモード0でのみ利用される
--bit0:Plane0 Enable (1でenable)
--bit1:Plane1 Enable (1でenable)
--bit2:Plane2 Enable (1でenable)
--bit3:Plane3 Enable (1でenable)
--bit4-7:リザーブ (書き込み時には0推奨)
-[0x02] Color Compare (比較用カラーコード)
--このレジスタは、読み込みモード1でのみ利用される
--bit0-3:カラーコード
--bit4-7:リザーブ (書き込み時には0推奨)
-[0x03] Data Rotate/Function Select (描画時の演算とCPUデ...
--書き込みモード0、2、3でのみ利用される
--bit0-2:右ローテートカウント(0-7) CPUデータはここで指...
--bit3-4:描画時の演算モード(00:PSET、01:AND、10:OR、...
--bit5-7:リザーブ (書き込み時には0推奨)
-[0x04] Read Plane Select (読み出しプレーン選択)
--このレジスタは、読み込みモード0でのみ利用される
--bit0-1:読み出しプレーン番号(0~3)
--bit2-7:リザーブ (書き込み時には0推奨)
-[0x05] Mode (アクセスモード指定)
--bit0-1:書き込みモード番号(0~3)
--bit2:リザーブ (書き込み時には0推奨)
--bit3:読み込みモード番号(0~1)
--bit4-7:リザーブ (書き込み時には0推奨)
-[0x06] Miscellaneous (雑用レジスタ)
--描画には直接関係しない。画面モード設定関係。詳細不明。
--bit0:Graphic Mode
--bit1:CGA Compatible
--bit2-3:VRAM Address (00:0xa0000~0xbffff、01:0xa000...
--bit4-7:リザーブ
-[0x07] Color Don't Care (カラー比較無効プレーン指定)
--このレジスタは、読み込みモード1でのみ利用される
--bit0:Plane0 (1だとこのプレーンは一致したと見なされる)
--bit1:Plane1 (1だとこのプレーンは一致したと見なされる)
--bit2:Plane2 (1だとこのプレーンは一致したと見なされる)
--bit3:Plane3 (1だとこのプレーンは一致したと見なされる)
--bit4-7:リザーブ (書き込み時には0推奨)
-[0x08] Bit Mask (描画マスク)
--bit0-7:描画マスクデータ(0のビットは描画されない)
-0x09以降のレジスタはリザーブ
--QEMUのcirrusモードでは、[0x09]がVBEのウィンドウアクセス...
** 描画に関係するレジスタのリスト [#c136a0ae]
-こんなにレジスタがいっぱいあると混乱すると思うので、画面...
-シーケンサーより:
--Map Maskレジスタ
-VGAグラフィックコントローラより:
--Set/Resetレジスタ
--Enable Set/Resetレジスタ
--Data Rotate/Function Selectレジスタ
--Modeレジスタ
--Bit Maskレジスタ
* VRAMアドレスとラッチ [#y45192bb]
-VGAモードの場合、VRAMのアドレスは0xa0000からの64KBになる...
-1ドットが1ビットに対応しており、640x480/8=37.5KBにアクセ...
-この説明だとFMRみたいにバンク切り替え式のプレーンアクセ...
-普通のプレーンアクセスだと、ANDやORやXORをした場合、アク...
--これは推測だが、おそらくVRAMの構造が、CPUからの書き込み...
-ラッチのデータとANDやORやXORの演算処理をするのはビデオチ...
-ラッチにデータをセットするには、VRAMをリードすればよい。...
* 4つの書き込みモード [#mb17a49f]
-モード0
--ややこしい割には用途不明。
--Enable Set/Resetレジスタでenableになっているプレーンに...
--Enable Set/Resetレジスタでdisableになっているプレーンに...
--このモードが、他のモードよりも便利に使えるような局面が...
-モード1
--CPUデータに関わらず、ラッチの内容がそのままVRAMに書き込...
--もっとも高速な描画モード。
--VRAMをフィルしたい場合などに多用する。最初の8ドットを他...
--OSASKではマウスカーソルの消去にも使っている(描画前にVR...
-モード2
--CPUが書き込んだデータをカラーコードとして解釈(上位4bit...
--Data Rotate/Function Selectレジスタの機能で、ラッチの内...
--アクセスしたアドレスの8ドットがそれぞれ同じカラーで同じ...
--Bit Maskレジスタは有効で、マスクされたドットは変更され...
--結局どういう状況で役立つのかよくわからないモード。
-モード3
--CPUが書き込んだデータを8ドットのマスクパターンとして解...
--Data Rotate/Function Selectレジスタの機能で、ラッチの内...
--演算に利用するカラーはSet Resetレジスタで指定。
--Bit Maskレジスタは有効で、マスクされたドットは変更され...
--[[K]]が一番有用だと思っているモード。OSASKでは、フォン...
---ラッチに背景色を読み込んでおいて、フォントカラーをSet ...
---ちなみにOSASKではほとんどの描画において、書き込みモー...
---ついでなので書いておくと、OSASKではVRAMの空き領域(画...
---もし、他に良さそうな方法があったら(モード3に限らず)...
* 2つの読み込みモード [#k712a59e]
-モード0
--VRAMに読み込みアクセスすると、その8ドットがラッチに取り...
--単純明快なので、多分読み出しモードのうちでは最も高速。
-モード1
--VRAMに読み込みアクセスすると、その8ドットがラッチに取り...
--比較の際にはColor Don't Careレジスタも利用される。
--多少複雑なのでリードにwaitがおおめに入る可能性がある。...
* パレットの設定 [#c8720cfd]
-VGAのパレット設定は2段式になっている。
--まずビデオチップはVRAMからカラーコード(0~15)をリード...
--それをアトリビュートコントローラ内のテーブルで、0~63の...
--その0~63の値は、ピクセルマスクレジスタ(ビデオDAコンバ...
--マスクされた値からビデオDAコンバータのテーブルでRGBに変...
---それぞれのRGB階調数は6bit。つまりVGAは26万色中16色とい...
--2段式になっているのは、EGAとの互換のため。
---これはとてもうっとうしいので、アトリビュートコントロー...
-アトリビュートコントローラへのアクセスと、ビデオDAコンバ...
--中途半端なところで時間がかかるとハードウェア側のフェー...
--アトリビュートコントローラがパニックを起こすとビデオチ...
* スクロールなど [#w2c8e028]
-VRAM構成を実画面サイズよりも大きくする方法
--VGAではVRAMに余裕があれば、VRAM上の画面サイズを640x480...
--これはCRTコントローラのオフセットレジスタを使う([0x13]...
--たとえば640ドットなら0x28、800ドットなら0x32になる。
-スクロール
--とりあえず、CRTコントローラのレジスタ[0x0c]と[0x0d]を使...
--もしx方向に1ドット単位のスクロールがしたい場合は、8で割...
* BIOSを使わないでVGAモードにするには [#t4338c66]
-前提:切り替える前の画面モードは、VGAもしくはそれ以前の...
-またこの方法で画面を切り替えた後は、BIOSやVESAファンクシ...
--しかしここでは冒頭のように、BIOSを使いたくないとか、さ...
-またBIOSやVESAで画面モードを切り替えても、たとえばパレッ...
-具体的な設定例
--以下適宜に割込み禁止などをして、タイミングが狂わないよ...
--シーケンサーの[0x00]に0x01を書く(DX = 0x03c4; AX = 0x0...
--VGAコントローラの設定
---コントロールレジスタに0xe3を書く(DX = 0x03c2; AL = 0x...
---VGA動作許可レジスタに0x01を書く(DX = 0x03c3; AL = 0x0...
--シーケンサーの設定
---レジスタ[0x01]~[0x04]に、{ 0x01, 0x0f, 0x00, 0x06 }を...
---そのあとでレジスタ[0x00]に0x03を書く
--CRTコントローラの設定
---レジスタ[0x11]に0x20を書く
---レジスタ[0x00]~[0x07]に、{ 0x5f, 0x4f, 0x50, 0x82, 0x...
---レジスタ[0x08]~[0x0f]に、{ 0x00, 0x40, 0x00, 0x00, 0x...
---レジスタ[0x10]~[0x18]に、{ 0xea, 0x8c, 0xdf, 0x28, 0x...
--VGAグラフィックコントローラの設定
---ここの設定は自分が最初に使うモード等にあわせて設定して...
---レジスタ[0x00]~[0x08]に、{ 0x00, 0x0f, 0x00, 0x00, 0x...
--アトリビュートコントローラの設定
---0x03daのダミーリードなどを忘れずに
---レジスタ[0x00]~[0x07]に、{ 0x00, 0x01, 0x02, 0x03, 0x...
---レジスタ[0x08]~[0x0f]に、{ 0x08, 0x09, 0x0a, 0x0b, 0x...
---レジスタ[0x10]~[0x14]に、{ 0x01, 0x00, 0x0f, 0x00, 0x...
---0x03daのダミーリードと0x20の書き込みを忘れずに
--ビデオDAコンバータのピクセルマスクに0xffを書く(DX = 0x...
--あとはビデオDAコンバータのパレット0x00~0x0fを、お好み...
* こめんと欄 [#t11442ec]
-プレーンアクセスはできないんですか? OSASKのソースを見る...
-実は普通のプレーンアクセスはできないのです。ラッチという...
-いやちがうな、ラッチは気にしないでいいのか。プレーンアク...
-とりあえず、描画と読み出し関係だけは全部書きました。BIOS...
-書き込みモード2を使って短形描画しています。でもこう見て...
-とりあえず、これでパレット設定もBIOSを使わずにできます。...
-BIOSを使わない設定についても一応書けました。 -- [[K]] SI...
-とりあえず、VGAに関して集めた資料は全部まとめたつもりで...
-すごい!今まで英語とか読んで苦労してたのが嘘みたいにラク...
-テキストモードにする手順キボンと煽って見るテスト -- SIZE(...
-テキストモード使いますか?・・・いやー、OSASKでは使わな...
-何かあったときテキストモードはデバッグ等に非常に有用なモ...
-いやその、テキストモードの有用性は否定しないのですが、こ...
-Monaはすでにグラフィックモードで半角カナ表示してるので、...
-もっと言えば致命的エラー発生時にはレジスタダンプが再優先...
-[ビデオDAコンバータ]->[パレットのアクセスの手順]で、パレ...
-ほんとだ・・・。直しました。ご指摘ありがとうございます。...
-シーケンサーの[0x01]Clock Mode bit0の説明が逆のような。1...
-指摘されたら急に自信がなくなってきました。確認しますので...
-VESA非対応のPCで800x600表示できました。うれしー。 所で...
-↑(VESA VBE1.2非対応) -- ''pen'' SIZE(10){2006-04-13 (木)...
-OADGのサイトからDOS/Vのテクニカルリファレンスがダウンロ...
-(spamコメントと思われるものをK-kiwiに移動させました。)...
-ほかの文書でCRTCのindex 0x00が"Horizontal Total Charater...
-どちらも同じ意味のように見えますが名称のことでしょうか>...
-Thanks so very much for taking your time to create this ...
-index 0x01は"キャラクタ数-1"となってるのにindex 0x00は"-...
-HJHLH;L;J;;J;PPGPPGPP -- ''CLSYHIKO'' SIZE(10){2007-06-1...
-書き込みモード0でEnable Set/Reset=0のときと,書き込みモ...
-なぜ rgb[0] /4 ? -- [[hhy]] SIZE(10){2011-05-15 (日...
-↑set_paletteのところですよね。上位2bitを0にするためでは…...
#comment
終了行:
* Video Graphic Array [#laf1b76f]
-(by [[K]])
-640x480という解像度を指すこともある
-ビデオカード全般をVGAと書くときは、Video Graphic Adapter...
-ここではそのどちらについても興味はなく、AT互換機上でBIOS...
--一番お手軽な方法はBIOSを使って320x200x256色に切り替えて...
--この解像度に飽きたら、次はVESAのリニアアクセスに進むこ...
--しかし、VESAのリニアアクセスは32bitモードを使いこなす必...
-記述は実機で確認できていない情報も含んでいるので、間違っ...
* VGAのレジスタ [#i471b3a8]
** CRTコントローラ [#p9efe332]
-0x03d4に16bitアクセスで書き込む
--bit0-7がレジスタ番号
--bit8-15がデータ
-0x03d4と0x03d5をバイトアクセスする方法もある
--その場合はまず0x03d4にレジスタ番号をライトし、0x03d5に...
-モノクロディスプレイの場合、I/Oポートが0x03b4、0x03b5に...
--どっちなのか分からないときは、I/Oポート0x03ccをリードし...
-[0x00] Horizontal Total (水平総キャラクタ数)
--bit0-7:水平走査期間内のキャラクタ数
-[0x01] Horizontal Display Enable End (水平表示キャラク...
--bit0-7:水平走査期間内の表示キャラクタ数 - 1
-[0x02] Start Horizontal Blanking (水平非表示開始キャラ...
--bit0-7:水平非表示を開始するキャラクタ位置
-[0x03] End Horizontal Blanking (水平非表示終了キャラク...
--bit0-4:水平非表示を終了するキャラクタ位置
--bit5-6:水平表示スキュー
--bit7:リザーブ
-[0x04] Start Horizontal Retrace (水平帰線開始キャラクタ...
--bit0-7:水平帰線を開始するキャラクタ位置
//-(以下はまだ書き途中)
-[0x05] End Horizontal Retrace (水平帰線終了キャラクタ位...
--bit0-4:水平非表示を終了するキャラクタ位置
--bit5-6:水平帰線スキュー
--bit7:水平非表示終了位置のビット5
-[0x06] Vertical Total (垂直表示ライン数)
--bit0-7:(垂直走査線数-2)の下位8ビット
-[0x07] Overflow (各種上位ビット)
--bit0:Vertical Totalのビット8
--bit1:Vertical Display Enable Endのビット8
--bit2:Vertical Retrace Startのビット8
--bit3:Start Vertical Blankingのビット8
--bit4:Line Compareのビット8
--bit5:Vertical Totalのビット9
--bit6:Vertical Display Enable Endのビット9
--bit7:Vertical Retrace Startのビット9
-[0x08] Preset Row Scan (プリセット行走査)
--bit0-4:垂直スクロールのライン数(テキストモード時)
--bit5-6:水平スクロールのビット数(バイト単位)
--bit7:リザーブ
-[0x09] Maximum Scan Line (最大走査数)
--bit0-4:1キャラクタのライン数-1
--bit5:Start Vertical Blankingのビット9
--bit6:Line Compareのビット9
--bit7:200ラインモードの二重表示指定
-[0x0a] Cursor Start (カーソル開始ライン位置)
--bit0-4:カーソル表示ライン-1
--bit5:カーソル非表示フラグ
--bit6-7:リザーブ
-[0x0b] Cursor End (カーソル終了ライン)
--bit0-4:カーソル終了ライン-1
--bit5-6:カーソルスキュー
--bit7:リザーブ
-[0x0c] Start Address High (VRAM表示開始アドレス上位)
--bit0-7:表示開始アドレス上位8ビット
-[0x0d] Start Address Low (VRAM表示開始アドレス下位)
--bit0-7:表示開始アドレス下位8ビット
-[0x0e] Cursor Location High (カーソル位置上位)
--bit0-7:カーソル位置の上位8ビット
-[0x0f] Cursor Location Low (カーソル位置下位)
--bit0-7:カーソル位置の下位8ビット
-[0x10] Vertical Retrace Start (垂直帰線開始ライン位置)
--bit0-7:垂直帰線を開始する位置
-[0x11] Vertical Retrace End (垂直帰線終了ライン位置)
--bit0-3:垂直帰線を終了するライン位置
--bit4:垂直帰線割り込み時に通告(0のとき)
--bit5:垂直帰線割り込みの許可(0のとき)
--bit6:水平周波数の選択
--bit7:[0x00]~[0x07]レジスタのライトプロテクト(1で書き...
-[0x12] Vertical Display Enable End (表示ライン数)
--bit0-7:垂直表示を終了するライン位置の下位8ビット
-[0x13] Offset (VRAM上の1ライン幅)
--bit0-7:1ライン当たりの幅(グラフィックの場合はワード単...
-[0x14] Under Line Location (下線表示ライン位置)
--bit0-4:下線表示ライン(テキストモード時)
--bit5:クロック4分周(1のとき)
--bit6:16ビット/32ビットアドレス切り替え(1で32ビット)
--bit7:リザーブ
-[0x15] Start Vertical Blanking (垂直非表示開始ライン位...
--bit0-7:垂直非表示を開始するライン位置の下位8ビット
-[0x16] End Vertical Blanking (垂直非表示終了ライン位置)
--bit0-7:垂直非表示を終了するライン位置の下位8ビット
-[0x17] Mode Control (モード設定)
--bit0:1にするとインターレース表示
--bit1:1にすると垂直ラインアドレス有効
--bit2:1にすると垂直幅2倍
--bit3:1にするとクロック2分周
--bit4:リザーブ
--bit5:アドレス折り返し指定
--bit6:8ビット/16ビットアドレス切り替え(1で16ビット)
--bit7:1にすると垂直水平帰線許可
-[0x18] Line Compare (画面分割ライン位置)
--bit0-7:画面を分割するライン位置の下位8ビット
-0x19以降のレジスタはリザーブ
** アトリビュートコントローラ [#f9322c8b]
-0x03c0に8bitアクセスで書き込む(アドレスポート時)
--bit0-4がレジスタ番号
--bit5-7は000
--書き込み完了と同時に、データポートに変わる
-0x03c0に8bitアクセスで書き込む(データポート時)
--bit0-7がレジスタデータ
-0x03c0に8bitアクセスで、0x20を書き込む(通常モード復帰直...
--これでアトリビュートコントローラは完全に通常モードになる
-0x03c1に8bitアクセスで読み込む(データポート時)
--bit0-7がレジスタデータ
--一部の資料では、リードも0x03c0のほうで読むと説明してい...
-具体的なアクセス方法
--以下の操作中は割り込みなどを受け付けないようにすること...
--0x03daを空読み(0x03baの場合もある -- どちらになるかはI...
---空読みした値は他の用途に利用してもいいが、とりあえずア...
--以下を好きなだけやる。
---0x03c0にレジスタ番号を書き込む(0x00~0x14)。そして0x...
---0x03c0にレジスタ番号を書き込む(0x00~0x14)。そして0x...
---(註)レジスタ番号を書き込んで、データを書くとか読むと...
---(註)レジスタ番号を書いたら、必ずデータを書くか読むか...
--アトリビュートコントローラへのアクセスが済んだら、また...
--そして0x03c0に0x20を書き込む。
--これでビデオチップは通常状態に戻る。
-[0x00]-[0x0f] Color Palette 0~15 (ビデオDAコンバータに...
--bit0-5:ビデオDAコンバータに渡すカラーコード(0~63)
--bit6-7:リザーブ(書き込み時には0推奨)
-[0x10] Mode Control (表示モード)
--bit0:グラフィックモード選択(0:テキスト、1:グラフィ...
--bit1:モノクロモード選択(0:カラー、1:モノクロ)
--bit2:グラフィックキャラクタ選択
--bit3:ブリンク選択(0:高輝度、1:ブリンク)
--bit4:リザーブ(書き込み時には0推奨)
--bit5:レジスタ[0x13]有効(0:無効、1:有効)
--bit6:パックドピクセル選択(0:カラープレーン、1:パッ...
--bit7:レジスタ[0x14]有効(0:[0x00]-[0x0f]が有効で[0x14...
-[0x11] Sreen Border Color (ボーダーカラー)
--bit0-7:ボーダーカラー
-[0x12] Color Plane Enable (プレーン表示許可)
--bit0:プレーン0表示許可(1で表示)
--bit1:プレーン1表示許可(1で表示)
--bit2:プレーン2表示許可(1で表示)
--bit3:プレーン3表示許可(1で表示)
--bit4-5:Input Status 1へ出力するプレーン番号
--bit6-7:リザーブ(書き込み時には0推奨)
-[0x13] Horizontal Panning (水平スクロール)
--bit0-3:水平スクロールピクセル数
--bit4-7:リザーブ(書き込み時には0推奨)
-[0x14] Color Select (カラーコード上位)
--bit0-3:ビデオDAコンバータに渡すカラーコードの上位番号
--bit4-7:リザーブ(書き込み時には0推奨)
-0x15以降のレジスタはリザーブ
** VGAコントローラ [#o21f0595]
-0x03c2:ステータスレジスタ(8bit、R)
--bit0-3:リザーブ
--bit4:スイッチ指定(1ならカラーディスプレイ)
--bit5-6:リザーブ
--bit7:垂直割り込み発生中
-0x03c2:コンロトールレジスタ(8bit、W)
--bit0:I/Oアドレス指定
---0:0x03b4、0x03b5、0x03ba
---1:0x03d4、0x03d5、0x03da
--bit1:ビデオバッファアクセス許可(1で許可)
--bit2-3:クロック指定(00:640ドット、他は不明)
--bit4:リザーブ
--bit5:CGAページ切り替え(0:低位64KBのページ)
--bit6:水平帰線の極性
--bit7:垂直帰線の極性
-0x03c3:VGA動作許可レジスタ(8bit、W)
--bit0:VGA動作許可(1:動作許可)
--bit1-7:リザーブ
-0x03cc:読み出し用コントロールレジスタ(8bit、R)
--bit0-5:コンロトールレジスタと同じ(上記参照)
--bit6-7:垂直ライン指定(11なら480ライン)
-0x03da:カラーステータスレジスタ(8bit、R)
--これは0x03ccのbit0が1の時のみ有効
--bit0:表示期間中(0のとき)
--bit1-2:リザーブ
--bit3:垂直帰線中(1のとき)
--bit4-7:リザーブ
--このレジスタをアトリビュートコントローラの通常動作時に...
--このレジスタをアトリビュートコントローラのデータポート...
-0x03ba:モノクロステータスレジスタ(8bit、R)
--これは0x03ccのbit0が0の時のみ有効
--bit0:表示期間中(0のとき)
--bit1-2:リザーブ
--bit3:垂直帰線中(1のとき)
--bit4-7:リザーブ
--このレジスタをアトリビュートコントローラの通常動作時に...
--このレジスタをアトリビュートコントローラのデータポート...
** シーケンサー [#c930cd6c]
-0x03c4に16bitアクセスで書き込む
--bit0-7がレジスタ番号
--bit8-15がデータ
-0x03c4と0x03c5をバイトアクセスする方法もある
--その場合はまず0x03c4にレジスタ番号をライトし、0x03c5に...
--0x03c5にアクセスすると、自動的に0x03c4がインクリメント...
--16bitアクセスの場合は、アクセス後に0x03c4に次のアドレス...
-[0x00] Reset (リセット)
--bit0:非同期リセット (0でリセット)
--bit1:同期リセット (0でリセット)
--bit2-7:リザーブ
-[0x01] Clock Mode (クロックとモード設定)
--bit0:文字幅指定 (0:8ドット、1:9ドット)
--bit1:リザーブ
--bit2:16ビットアドレス指定 (1で有効)
--bit3:クロック2分周指定 (1で有効)
--bit4:32ビットアドレス指定 (1で有効)
--bit5:非表示設定 (1で有効)
-[0x02] Map Mask (プレーンごとの書き込み許可)
--bit0:Plane0 Write Enable (1で書き込み許可)
--bit1:Plane1 Write Enable (1で書き込み許可)
--bit2:Plane2 Write Enable (1で書き込み許可)
--bit3:Plane3 Write Enable (1で書き込み許可)
--bit4-7:リザーブ (書き込み時には0推奨)
-[0x03] Character Generator Select (キャラクタジェネレー...
--bit0-1:Character Set Bのbit1-2
--bit2-3:Character Set Aのbit1-2
--bit4:Character Set Bのbit0
--bit5:Character Set Aのbit0
--bit6-7:リザーブ
-[0x04] Memory Mode (VRAMモード)
--bit0:リザーブ
--bit1:Memory Size (0:VRAM64KB、1:VRAM128KB)
--bit2:1、2プレーン連続指定(0で有効)
--bit3:4プレーン連続指定(0で有効)
--bit4-7:リザーブ
-0x05以降のレジスタはリザーブ
** ビデオDAコンバータ [#o2d4bfd3]
-0x03c6:ピクセルマスクレジスタ(8bit、R/W)
--bit0-7:DAコンバータが受け取ったカラーコードは、このレ...
-0x03c7:ステータスレジスタ (8bit、R)
--bit0-1:これが00だったら書き込み中
--bit2-7:リザーブ
-0x03c7:アドレスレジスタ (8bit、W)
--ここに書き込みアクセスすると、パレット読み込みモードに...
--bit0-7:パレット番号
-0x03c8:アドレスレジスタ (8bit、W)
--ここに書き込みアクセスすると、パレット書き込みモードに...
--bit0-7:パレット番号
-0x03c9:データレジスタ (8bit、R/W)
--bit0-7:RGB成分の一つ(0~63)
---書き込むときは上位2ビットを0に、読み込むときは上位2bit...
-パレットのアクセスの手順
--まず一連のアクセス中に割り込みなどが入らないようにする...
--0x03c8に設定したいパレット番号を書き込み、続いて、R、G...
--現在のパレット状態を読み出すときは、まず0x03c7にパレッ...
--最初にCLIした場合は、最後にSTIする。
** VGAグラフィックコントローラ [#b864e92a]
-0x03ceに16bitアクセスで書き込む
--bit0-7がレジスタ番号
--bit8-15がデータ
-0x03ceと0x03cfをバイトアクセスする方法もある
--その場合はまず0x03ceにレジスタ番号をライトし、0x03cfに...
-[0x00] Set/Reset (ラッチとの演算に関するレジスタ)
--このレジスタは、書き込みモード0、3でのみ利用される
--bit0-3:カラーコード
--bit4-7:リザーブ (書き込み時には0推奨)
-[0x01] Enable Set/Reset (ラッチとの演算に関するレジスタ)
--このレジスタは、書き込みモード0でのみ利用される
--bit0:Plane0 Enable (1でenable)
--bit1:Plane1 Enable (1でenable)
--bit2:Plane2 Enable (1でenable)
--bit3:Plane3 Enable (1でenable)
--bit4-7:リザーブ (書き込み時には0推奨)
-[0x02] Color Compare (比較用カラーコード)
--このレジスタは、読み込みモード1でのみ利用される
--bit0-3:カラーコード
--bit4-7:リザーブ (書き込み時には0推奨)
-[0x03] Data Rotate/Function Select (描画時の演算とCPUデ...
--書き込みモード0、2、3でのみ利用される
--bit0-2:右ローテートカウント(0-7) CPUデータはここで指...
--bit3-4:描画時の演算モード(00:PSET、01:AND、10:OR、...
--bit5-7:リザーブ (書き込み時には0推奨)
-[0x04] Read Plane Select (読み出しプレーン選択)
--このレジスタは、読み込みモード0でのみ利用される
--bit0-1:読み出しプレーン番号(0~3)
--bit2-7:リザーブ (書き込み時には0推奨)
-[0x05] Mode (アクセスモード指定)
--bit0-1:書き込みモード番号(0~3)
--bit2:リザーブ (書き込み時には0推奨)
--bit3:読み込みモード番号(0~1)
--bit4-7:リザーブ (書き込み時には0推奨)
-[0x06] Miscellaneous (雑用レジスタ)
--描画には直接関係しない。画面モード設定関係。詳細不明。
--bit0:Graphic Mode
--bit1:CGA Compatible
--bit2-3:VRAM Address (00:0xa0000~0xbffff、01:0xa000...
--bit4-7:リザーブ
-[0x07] Color Don't Care (カラー比較無効プレーン指定)
--このレジスタは、読み込みモード1でのみ利用される
--bit0:Plane0 (1だとこのプレーンは一致したと見なされる)
--bit1:Plane1 (1だとこのプレーンは一致したと見なされる)
--bit2:Plane2 (1だとこのプレーンは一致したと見なされる)
--bit3:Plane3 (1だとこのプレーンは一致したと見なされる)
--bit4-7:リザーブ (書き込み時には0推奨)
-[0x08] Bit Mask (描画マスク)
--bit0-7:描画マスクデータ(0のビットは描画されない)
-0x09以降のレジスタはリザーブ
--QEMUのcirrusモードでは、[0x09]がVBEのウィンドウアクセス...
** 描画に関係するレジスタのリスト [#c136a0ae]
-こんなにレジスタがいっぱいあると混乱すると思うので、画面...
-シーケンサーより:
--Map Maskレジスタ
-VGAグラフィックコントローラより:
--Set/Resetレジスタ
--Enable Set/Resetレジスタ
--Data Rotate/Function Selectレジスタ
--Modeレジスタ
--Bit Maskレジスタ
* VRAMアドレスとラッチ [#y45192bb]
-VGAモードの場合、VRAMのアドレスは0xa0000からの64KBになる...
-1ドットが1ビットに対応しており、640x480/8=37.5KBにアクセ...
-この説明だとFMRみたいにバンク切り替え式のプレーンアクセ...
-普通のプレーンアクセスだと、ANDやORやXORをした場合、アク...
--これは推測だが、おそらくVRAMの構造が、CPUからの書き込み...
-ラッチのデータとANDやORやXORの演算処理をするのはビデオチ...
-ラッチにデータをセットするには、VRAMをリードすればよい。...
* 4つの書き込みモード [#mb17a49f]
-モード0
--ややこしい割には用途不明。
--Enable Set/Resetレジスタでenableになっているプレーンに...
--Enable Set/Resetレジスタでdisableになっているプレーンに...
--このモードが、他のモードよりも便利に使えるような局面が...
-モード1
--CPUデータに関わらず、ラッチの内容がそのままVRAMに書き込...
--もっとも高速な描画モード。
--VRAMをフィルしたい場合などに多用する。最初の8ドットを他...
--OSASKではマウスカーソルの消去にも使っている(描画前にVR...
-モード2
--CPUが書き込んだデータをカラーコードとして解釈(上位4bit...
--Data Rotate/Function Selectレジスタの機能で、ラッチの内...
--アクセスしたアドレスの8ドットがそれぞれ同じカラーで同じ...
--Bit Maskレジスタは有効で、マスクされたドットは変更され...
--結局どういう状況で役立つのかよくわからないモード。
-モード3
--CPUが書き込んだデータを8ドットのマスクパターンとして解...
--Data Rotate/Function Selectレジスタの機能で、ラッチの内...
--演算に利用するカラーはSet Resetレジスタで指定。
--Bit Maskレジスタは有効で、マスクされたドットは変更され...
--[[K]]が一番有用だと思っているモード。OSASKでは、フォン...
---ラッチに背景色を読み込んでおいて、フォントカラーをSet ...
---ちなみにOSASKではほとんどの描画において、書き込みモー...
---ついでなので書いておくと、OSASKではVRAMの空き領域(画...
---もし、他に良さそうな方法があったら(モード3に限らず)...
* 2つの読み込みモード [#k712a59e]
-モード0
--VRAMに読み込みアクセスすると、その8ドットがラッチに取り...
--単純明快なので、多分読み出しモードのうちでは最も高速。
-モード1
--VRAMに読み込みアクセスすると、その8ドットがラッチに取り...
--比較の際にはColor Don't Careレジスタも利用される。
--多少複雑なのでリードにwaitがおおめに入る可能性がある。...
* パレットの設定 [#c8720cfd]
-VGAのパレット設定は2段式になっている。
--まずビデオチップはVRAMからカラーコード(0~15)をリード...
--それをアトリビュートコントローラ内のテーブルで、0~63の...
--その0~63の値は、ピクセルマスクレジスタ(ビデオDAコンバ...
--マスクされた値からビデオDAコンバータのテーブルでRGBに変...
---それぞれのRGB階調数は6bit。つまりVGAは26万色中16色とい...
--2段式になっているのは、EGAとの互換のため。
---これはとてもうっとうしいので、アトリビュートコントロー...
-アトリビュートコントローラへのアクセスと、ビデオDAコンバ...
--中途半端なところで時間がかかるとハードウェア側のフェー...
--アトリビュートコントローラがパニックを起こすとビデオチ...
* スクロールなど [#w2c8e028]
-VRAM構成を実画面サイズよりも大きくする方法
--VGAではVRAMに余裕があれば、VRAM上の画面サイズを640x480...
--これはCRTコントローラのオフセットレジスタを使う([0x13]...
--たとえば640ドットなら0x28、800ドットなら0x32になる。
-スクロール
--とりあえず、CRTコントローラのレジスタ[0x0c]と[0x0d]を使...
--もしx方向に1ドット単位のスクロールがしたい場合は、8で割...
* BIOSを使わないでVGAモードにするには [#t4338c66]
-前提:切り替える前の画面モードは、VGAもしくはそれ以前の...
-またこの方法で画面を切り替えた後は、BIOSやVESAファンクシ...
--しかしここでは冒頭のように、BIOSを使いたくないとか、さ...
-またBIOSやVESAで画面モードを切り替えても、たとえばパレッ...
-具体的な設定例
--以下適宜に割込み禁止などをして、タイミングが狂わないよ...
--シーケンサーの[0x00]に0x01を書く(DX = 0x03c4; AX = 0x0...
--VGAコントローラの設定
---コントロールレジスタに0xe3を書く(DX = 0x03c2; AL = 0x...
---VGA動作許可レジスタに0x01を書く(DX = 0x03c3; AL = 0x0...
--シーケンサーの設定
---レジスタ[0x01]~[0x04]に、{ 0x01, 0x0f, 0x00, 0x06 }を...
---そのあとでレジスタ[0x00]に0x03を書く
--CRTコントローラの設定
---レジスタ[0x11]に0x20を書く
---レジスタ[0x00]~[0x07]に、{ 0x5f, 0x4f, 0x50, 0x82, 0x...
---レジスタ[0x08]~[0x0f]に、{ 0x00, 0x40, 0x00, 0x00, 0x...
---レジスタ[0x10]~[0x18]に、{ 0xea, 0x8c, 0xdf, 0x28, 0x...
--VGAグラフィックコントローラの設定
---ここの設定は自分が最初に使うモード等にあわせて設定して...
---レジスタ[0x00]~[0x08]に、{ 0x00, 0x0f, 0x00, 0x00, 0x...
--アトリビュートコントローラの設定
---0x03daのダミーリードなどを忘れずに
---レジスタ[0x00]~[0x07]に、{ 0x00, 0x01, 0x02, 0x03, 0x...
---レジスタ[0x08]~[0x0f]に、{ 0x08, 0x09, 0x0a, 0x0b, 0x...
---レジスタ[0x10]~[0x14]に、{ 0x01, 0x00, 0x0f, 0x00, 0x...
---0x03daのダミーリードと0x20の書き込みを忘れずに
--ビデオDAコンバータのピクセルマスクに0xffを書く(DX = 0x...
--あとはビデオDAコンバータのパレット0x00~0x0fを、お好み...
* こめんと欄 [#t11442ec]
-プレーンアクセスはできないんですか? OSASKのソースを見る...
-実は普通のプレーンアクセスはできないのです。ラッチという...
-いやちがうな、ラッチは気にしないでいいのか。プレーンアク...
-とりあえず、描画と読み出し関係だけは全部書きました。BIOS...
-書き込みモード2を使って短形描画しています。でもこう見て...
-とりあえず、これでパレット設定もBIOSを使わずにできます。...
-BIOSを使わない設定についても一応書けました。 -- [[K]] SI...
-とりあえず、VGAに関して集めた資料は全部まとめたつもりで...
-すごい!今まで英語とか読んで苦労してたのが嘘みたいにラク...
-テキストモードにする手順キボンと煽って見るテスト -- SIZE(...
-テキストモード使いますか?・・・いやー、OSASKでは使わな...
-何かあったときテキストモードはデバッグ等に非常に有用なモ...
-いやその、テキストモードの有用性は否定しないのですが、こ...
-Monaはすでにグラフィックモードで半角カナ表示してるので、...
-もっと言えば致命的エラー発生時にはレジスタダンプが再優先...
-[ビデオDAコンバータ]->[パレットのアクセスの手順]で、パレ...
-ほんとだ・・・。直しました。ご指摘ありがとうございます。...
-シーケンサーの[0x01]Clock Mode bit0の説明が逆のような。1...
-指摘されたら急に自信がなくなってきました。確認しますので...
-VESA非対応のPCで800x600表示できました。うれしー。 所で...
-↑(VESA VBE1.2非対応) -- ''pen'' SIZE(10){2006-04-13 (木)...
-OADGのサイトからDOS/Vのテクニカルリファレンスがダウンロ...
-(spamコメントと思われるものをK-kiwiに移動させました。)...
-ほかの文書でCRTCのindex 0x00が"Horizontal Total Charater...
-どちらも同じ意味のように見えますが名称のことでしょうか>...
-Thanks so very much for taking your time to create this ...
-index 0x01は"キャラクタ数-1"となってるのにindex 0x00は"-...
-HJHLH;L;J;;J;PPGPPGPP -- ''CLSYHIKO'' SIZE(10){2007-06-1...
-書き込みモード0でEnable Set/Reset=0のときと,書き込みモ...
-なぜ rgb[0] /4 ? -- [[hhy]] SIZE(10){2011-05-15 (日...
-↑set_paletteのところですよね。上位2bitを0にするためでは…...
#comment
ページ名: