上野家のホームページ
ナーマル,マリン,ココ
[
新規
|
一覧
|
検索
|
最新
|
ヘルプ
]
PC/vesa
をテンプレートにして作成
資料室
PC/vesa をテンプレートにして作成
[
差分
|
バックアップ
|
リロード
]
[ ]
開始行:
*VESA General Timing Formula (GTF)とCoordinated Video Tim...
PCのグラフィックス規格を作成しているVESAに説明があります。~
-http://www.vesa.org/
--本家
-http://gtf.sourceforge.net/
--Linux GTFコマンドのソースが置いてある
-http://www.uruk.org/~erich/projects/cvt/
--同じくCVTコマンドのソースが置いてある
-http://www.vesa.org/Public/GTF/GTF_V1R1.xls
--GTFスプレッドシート: 表計算を使っているだけあって解像度...
-http://www.vesa.org/Public/CVT/CVTd6r1.xls
--CVTスプレッドシート: 上に同じ。
-http://www.delorie.com/djgpp/doc/rbinter/ix/10/4F.html
--参考になりそうなVESA関係のAPIリスト
**VBE関係情報
-CRTInfoBlock
CRTCInfoBlock struc
HorizontalTotal dw ? ; Horizontal total in pixels
HorizontalSyncStart dw ? ; Horizontal sync start in pixels
HorizontalSyncEnd dw ? ; Horizontal sync end in pixels
VerticalTotal dw ? ; Vertical total in lines
VerticalSyncStart dw ? ; Vertical sync start in lines
VerticalSyncEnd dw ? ; Vertical sync end in lines
Flags db ? ; Flags (Interlaced, Double Scan etc)
PixelClock dd ? ; Pixel clock in units of Hz
RefreshRate dw ? ; Refresh rate in units of 0.01 Hz
Reserved db 40 dup (?) ; remainder of ModeInfoBlock
CRTCInfoBlock ends
~
-CRTInfoBlock->Flags の値と意味について
|ビット番号|ビット位置|>|LEFT:フラグ(を立てた時)の値と意味|
|0|0001b|>|LEFT:ダブルスキャンを有効にする(グラフィックモ...
|1|0010b|>|LEFT:インタレースモードにする(グラフィックモー...
|2|0100b|>|LEFT:水平同期信号の極性|
|~|~|0|LEFT:ポジティブ(+)|
|~|~|1|LEFT:ネガティブ(-)|
|3|1000b|>|LEFT:垂直同期信号の極性|
|~|~|0|LEFT:ポジティブ(+)|
|~|~|1|LEFT:ネガティブ(-)|
~
-画面モード設定とフラグの値と意味について
|ビット番号|ビット位置|>|LEFT:ビットの値の意味|
|8~0|0000 0001 1111 1111b|>|LEFT:画面モード番号(6Ahや102h...
|10~9|0000 0110 0000 0000b|>|LEFT:予約済(0にする)|
|11|0000 1000 0000 0000b|>|LEFT:リフレッシュレート|
|~|~|0|LEFT:既定のリフレッシュレート|
|~|~|1|LEFT:CRTCInfoBlockで算出されるリフレッシュレート|
|13~12|0011 0000 0000 0000b|>|LEFT:予約済(0にする。VBE/AF...
//|?|0010 0000 0000 0000b|>|LEFT:カスタムディスプレイタイ...
//|~|~|0|LEFT:既定のディスプレイタイミング|
//|~|~|1|LEFT:CRTCInfoBlockのディスプレイタイミング|
|14|0100 0000 0000 0000b|>|LEFT:フレームバッファの設定|
|~|~|0|LEFT:ウィンドウ|
|~|~|1|LEFT:リニア/フラット|
|15|1000 0000 0000 0000b|>|LEFT:フレームバッファのクリア|
|~|~|0|LEFT:する|
|~|~|1|LEFT:しない|
~
-ディスプレイタイミング
画面外のディスプレイ信号について ...
━━━━━━━━━━━━━━━━━━━━ H.Active ...
H.Active : H.Backporch ...
├─────┤ : ├-┤ ...
┬┌─────┐──┐┬ : ┌────────┐┬ ┬V....
││//////////│ ││ : ┬│ ┌─────┐...
V.Active││/表示画面/│ ││ : V.Active││ │//////...
││//////////│ ││V.Total : ││ │/表示...
┴└─────┘ ││ : ││ │//////////│...
│ ブランク・Sync ││ : ┴│ └────...
└────────┘┴ : └────────┘┴ ┴ ...
├────────┤ : ├────────┤ ...
H.Total : ...
VBE用ディスプレイタイミングのイメージ図
━━━━━━━━━━━━━━━━━━━━━━━━
ライン フロント バック ...
描画開始 ポーチ ポーチ ...
↓ )) ├───┤ ├───┤ ...
┌────((────┐ ┌───┐ ┌────── ※信号の...
信号 │//////// )) //////│ │ 同期 │ │(次...
─┴…………((…………┴───┘ 信号 └───┴……………… です。
‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
├────-))-───────────────┤ ← HorizontalTotal ...
├────((────┤ ← Horizo...
├────-))-───────┤ ← Horizonta...
├────((────────────┤ ← HorizontalSync...
※垂直方向も同様に。
~
**GTFやCVTなどをVESA BIOS Extensionで設定する方法
いわゆるMS-DOS等リアルモードOSから,VGA BIOSを呼び出して...
VGA(VESA)BIOSの都合上,VBE3.0以上の必要があります。~
***基本
VBEファンクション02hを使用して画面モードを切り替える。
例: mov bx, 0102h ; ←画面モード番号
mov ax, 4F02h ; ←Set VBE Modeファンクション
int 10h
こんな感じにする。~
~
***既定の画面モードのリフレッシュレートを変更する
画面モードを設定する際に該当するビットを立て,リフレッシ...
これで設定するとディスプレイに送られる信号はGTF基準となる...
例: mov bx, 0902h ; ←モード番号とフラグ
push ds
pop es
mov di, offset [CRTCInf] ; ES:DI←構造体へのポインタ
mov ax, 4F02h ; ←Set VBE Modeファンクション
int 10h
; (中略)
CRTCInf CRTCInfoBlock <1904,1520,1672,934,903,909,4,1334...
構造体(CRTCInfoBlock)については上記参照。
~
//リフレッシュレートを0.01Hz単位でCRTCInfoBlock->RefreshR...
//%%他の部分の値はこの設定では無視されるので問題なし。%%→...
//RefreshRate以外を0にして呼び出してみたら見事にNo Signal...
//試しに下記のサンプルパラメータで呼び出してみたら見事に...
//~
//もしかして別のファンクションでパラメータを取得してリフ...
//(ちゃんと仕様書読まないとダメだなぁ・・・。)~
CRTCInfoBlock->RefreshRateはBIOSでは使用されず、Horizonta...
リフレッシュレートの計算方法は以下のようになっています。
PixelC...
refreshRate = ─────────────────
HorizontalTotal×...
例えば1024x768の画面モードではHTotalが1360、VTotalが802、...
65,000,000
refreshRate = ─────── = 59....
1360× 802
~
*** 既定の画面モードにない解像度設定に変更する
画面モード番号に81FFhを使用して画面モードを切り替えるんだ...
上記と同様に構造体にあらかじめ信号のパラメータをセットし...
// 例: mov bx, 81FFh
// push cs
// pop es
// mov di, offset CRTCInf
// mov ax, 4F02h
// int 10h
//
// ; (中略)
// CRTCInf CRTCInfoBlock <1904,1520,1672,934,903,909,4,13...
// ;※もしかしたら4F0Bhファンクションを使用してピクセルク...
//CRTCInfoBlock->Flagsにセットするフラグの意味と画面モー...
~
//基本は上記(リフレッシュレート指定)とほぼ同じで,CRTCパ...
//セットするべきパラメータの基準は上記GTFやCVTで計算する。~
~
**その他
なし
終了行:
*VESA General Timing Formula (GTF)とCoordinated Video Tim...
PCのグラフィックス規格を作成しているVESAに説明があります。~
-http://www.vesa.org/
--本家
-http://gtf.sourceforge.net/
--Linux GTFコマンドのソースが置いてある
-http://www.uruk.org/~erich/projects/cvt/
--同じくCVTコマンドのソースが置いてある
-http://www.vesa.org/Public/GTF/GTF_V1R1.xls
--GTFスプレッドシート: 表計算を使っているだけあって解像度...
-http://www.vesa.org/Public/CVT/CVTd6r1.xls
--CVTスプレッドシート: 上に同じ。
-http://www.delorie.com/djgpp/doc/rbinter/ix/10/4F.html
--参考になりそうなVESA関係のAPIリスト
**VBE関係情報
-CRTInfoBlock
CRTCInfoBlock struc
HorizontalTotal dw ? ; Horizontal total in pixels
HorizontalSyncStart dw ? ; Horizontal sync start in pixels
HorizontalSyncEnd dw ? ; Horizontal sync end in pixels
VerticalTotal dw ? ; Vertical total in lines
VerticalSyncStart dw ? ; Vertical sync start in lines
VerticalSyncEnd dw ? ; Vertical sync end in lines
Flags db ? ; Flags (Interlaced, Double Scan etc)
PixelClock dd ? ; Pixel clock in units of Hz
RefreshRate dw ? ; Refresh rate in units of 0.01 Hz
Reserved db 40 dup (?) ; remainder of ModeInfoBlock
CRTCInfoBlock ends
~
-CRTInfoBlock->Flags の値と意味について
|ビット番号|ビット位置|>|LEFT:フラグ(を立てた時)の値と意味|
|0|0001b|>|LEFT:ダブルスキャンを有効にする(グラフィックモ...
|1|0010b|>|LEFT:インタレースモードにする(グラフィックモー...
|2|0100b|>|LEFT:水平同期信号の極性|
|~|~|0|LEFT:ポジティブ(+)|
|~|~|1|LEFT:ネガティブ(-)|
|3|1000b|>|LEFT:垂直同期信号の極性|
|~|~|0|LEFT:ポジティブ(+)|
|~|~|1|LEFT:ネガティブ(-)|
~
-画面モード設定とフラグの値と意味について
|ビット番号|ビット位置|>|LEFT:ビットの値の意味|
|8~0|0000 0001 1111 1111b|>|LEFT:画面モード番号(6Ahや102h...
|10~9|0000 0110 0000 0000b|>|LEFT:予約済(0にする)|
|11|0000 1000 0000 0000b|>|LEFT:リフレッシュレート|
|~|~|0|LEFT:既定のリフレッシュレート|
|~|~|1|LEFT:CRTCInfoBlockで算出されるリフレッシュレート|
|13~12|0011 0000 0000 0000b|>|LEFT:予約済(0にする。VBE/AF...
//|?|0010 0000 0000 0000b|>|LEFT:カスタムディスプレイタイ...
//|~|~|0|LEFT:既定のディスプレイタイミング|
//|~|~|1|LEFT:CRTCInfoBlockのディスプレイタイミング|
|14|0100 0000 0000 0000b|>|LEFT:フレームバッファの設定|
|~|~|0|LEFT:ウィンドウ|
|~|~|1|LEFT:リニア/フラット|
|15|1000 0000 0000 0000b|>|LEFT:フレームバッファのクリア|
|~|~|0|LEFT:する|
|~|~|1|LEFT:しない|
~
-ディスプレイタイミング
画面外のディスプレイ信号について ...
━━━━━━━━━━━━━━━━━━━━ H.Active ...
H.Active : H.Backporch ...
├─────┤ : ├-┤ ...
┬┌─────┐──┐┬ : ┌────────┐┬ ┬V....
││//////////│ ││ : ┬│ ┌─────┐...
V.Active││/表示画面/│ ││ : V.Active││ │//////...
││//////////│ ││V.Total : ││ │/表示...
┴└─────┘ ││ : ││ │//////////│...
│ ブランク・Sync ││ : ┴│ └────...
└────────┘┴ : └────────┘┴ ┴ ...
├────────┤ : ├────────┤ ...
H.Total : ...
VBE用ディスプレイタイミングのイメージ図
━━━━━━━━━━━━━━━━━━━━━━━━
ライン フロント バック ...
描画開始 ポーチ ポーチ ...
↓ )) ├───┤ ├───┤ ...
┌────((────┐ ┌───┐ ┌────── ※信号の...
信号 │//////// )) //////│ │ 同期 │ │(次...
─┴…………((…………┴───┘ 信号 └───┴……………… です。
‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
├────-))-───────────────┤ ← HorizontalTotal ...
├────((────┤ ← Horizo...
├────-))-───────┤ ← Horizonta...
├────((────────────┤ ← HorizontalSync...
※垂直方向も同様に。
~
**GTFやCVTなどをVESA BIOS Extensionで設定する方法
いわゆるMS-DOS等リアルモードOSから,VGA BIOSを呼び出して...
VGA(VESA)BIOSの都合上,VBE3.0以上の必要があります。~
***基本
VBEファンクション02hを使用して画面モードを切り替える。
例: mov bx, 0102h ; ←画面モード番号
mov ax, 4F02h ; ←Set VBE Modeファンクション
int 10h
こんな感じにする。~
~
***既定の画面モードのリフレッシュレートを変更する
画面モードを設定する際に該当するビットを立て,リフレッシ...
これで設定するとディスプレイに送られる信号はGTF基準となる...
例: mov bx, 0902h ; ←モード番号とフラグ
push ds
pop es
mov di, offset [CRTCInf] ; ES:DI←構造体へのポインタ
mov ax, 4F02h ; ←Set VBE Modeファンクション
int 10h
; (中略)
CRTCInf CRTCInfoBlock <1904,1520,1672,934,903,909,4,1334...
構造体(CRTCInfoBlock)については上記参照。
~
//リフレッシュレートを0.01Hz単位でCRTCInfoBlock->RefreshR...
//%%他の部分の値はこの設定では無視されるので問題なし。%%→...
//RefreshRate以外を0にして呼び出してみたら見事にNo Signal...
//試しに下記のサンプルパラメータで呼び出してみたら見事に...
//~
//もしかして別のファンクションでパラメータを取得してリフ...
//(ちゃんと仕様書読まないとダメだなぁ・・・。)~
CRTCInfoBlock->RefreshRateはBIOSでは使用されず、Horizonta...
リフレッシュレートの計算方法は以下のようになっています。
PixelC...
refreshRate = ─────────────────
HorizontalTotal×...
例えば1024x768の画面モードではHTotalが1360、VTotalが802、...
65,000,000
refreshRate = ─────── = 59....
1360× 802
~
*** 既定の画面モードにない解像度設定に変更する
画面モード番号に81FFhを使用して画面モードを切り替えるんだ...
上記と同様に構造体にあらかじめ信号のパラメータをセットし...
// 例: mov bx, 81FFh
// push cs
// pop es
// mov di, offset CRTCInf
// mov ax, 4F02h
// int 10h
//
// ; (中略)
// CRTCInf CRTCInfoBlock <1904,1520,1672,934,903,909,4,13...
// ;※もしかしたら4F0Bhファンクションを使用してピクセルク...
//CRTCInfoBlock->Flagsにセットするフラグの意味と画面モー...
~
//基本は上記(リフレッシュレート指定)とほぼ同じで,CRTCパ...
//セットするべきパラメータの基準は上記GTFやCVTで計算する。~
~
**その他
なし
ページ名:
Counter: 0, today: 0, yesterday: 0
Copyright©2008 Yuji Ueno All Rights Reserved.
ログイン
ユーザ名:
パスワード:
IDとパスワードを記憶
パスワード紛失
メインメニュー
ホーム
でぶlog
資料室
最新ページ一覧
全ページ一覧
ヘルプ
フォーラム
お問い合わせ