bochs
の編集
http://oswiki.osask.jp/?bochs
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
(AT)BIOS
(AT)iomap
(AT)keyboard
(AT)memorymap
(DMAC)8237A
(FDC)765A
(PCI)class
(PCI)vendor
(PCI)vendor/1000
(PCMCIA)CIS
(PIC)8259A
(PIT)8254
(TOWNS)iomap
(TOWNS)memorymap
(serial)PC16550
.mjt
APM
ASKA
ATA
BackerOS
BayOS
BracketName
CardAdapter
CardBus
CompactFlash
DOMOO
DiskExplorer
ECC
FirstStep
FormattingRules
FrontPage
GO
GO/nask
GRUB
Help
IMGTOL
IPL
InterWiki
InterWikiName
InterWikiSandBox
K
KHBIOS
KHDOS
KONOX
KOZOS
Kernel
Kohのページ
M59
MenuBar
MiSt
Mona
Mono
Muleon
NOS
OSASK
PCI
PCIC
PCMCIA
PCカードATA
PHP
ProjectArcadia
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
RTL8139
RecentDeleted
SF16
SF32
SandBox
Sero
SitePolicy
TI
TOWNS
TOWNSのメモリカードスロット
VESA
VGA
VGA/text
Virtual8086_mode
WikiEngines
WikiName
WikiWikiWeb
Wisteria
X DOS
YukiWiki
Zakky
administration
algorithms
backup/Lights計画
bo
bochs
deskmanta
dsk
e-bios
ecural
formats
hardwares
henoheno
impressions
introduction
licenses
links
m0v3
maintenance
members
memcard
memcard/speed
microkernel
microkernel/log0
nkenkou
others
paging
pcctol
pcecho
pekon
populars
projects
qemu
segmentation
seiya
softwares
tyama501
名無しさん
* bochsのページ *** bochs 2.1.1でサポートされる画面モード -[[qemu]]もbochsのグラフィックルーチンが入っているので、まったく同じように扱える。 -VGA |mode|type|size|color|pages|buff-addr| |0x00|text|40x25|4bit|8|0xb8000| |0x01|text|40x25|4bit|8|0xb8000| |0x02|text|80x25|4bit|8|0xb8000| |0x03|text|80x25|4bit|8|0xb8000| |0x04|graph|320x200|2bit|1|0xb8000| |0x05|graph|320x200|2bit|1|0xb8000| |0x06|graph|640x200|1bit|1|0xb8000| |0x07|text|80x25|1bit|1|0xb0000| |0x0d|graph|320x200|4bit|8|0xa0000| |0x0e|graph|640x200|4bit|4|0xa0000| |0x0f|graph|640x350|1bit|2|0xa0000| |0x10|graph|640x350|4bit|1|0xa0000| |0x11|graph|640x480|1bit|1|0xa0000| |0x12|graph|640x480|4bit|1|0xa0000| |0x13|graph|320x200|8bit|1|0xa0000| |0x6a|graph|800x600|4bit|1|0xa0000| --テキストモードのとき、フォントデータは0xa0000~0xa1fffに納められている。1キャラクタあたり32バイトで、8x16のときは前半16バイトのみが使われる。 ---この件に対する註があるのでこめんと欄で確認のこと。 -VESA (ver.2.0) |mode|size|color|window|linear| |0x0100| 640x400| 8bit|○|○| |0x0101| 640x480| 8bit|×|○| |0x0102| 800x600| 4bit|○|×| |0x0103| 800x600| 8bit|○|○| |0x0105|1024x768| 8bit|○|○| |0x0110| 640x480|15bit|○|○| |0x0111| 640x480|16bit|○|○| |0x0112| 640x480|24bit|○|○| |0x0113| 800x600|15bit|○|○| |0x0114| 800x600|16bit|○|○| |0x0115| 800x600|24bit|○|○| |0x0116|1024x768|15bit|○|○| |0x0117|1024x768|16bit|○|○| |0x0118|1024x768|24bit|○|○| |0x0142| 640x480|32bit|○|○| |0x0143| 800x600|32bit|○|○| |0x0144|1024x768|32bit|○|○| |0x0146| 320x200| 8bit|×|○| --windowの項目は、0x0101と0x0102が逆なんじゃないかと思わないでもない。 --15bitカラーモードのとき、このリザーブされている15bit目は常に0にすること。 --32bitカラーモードのとき、上位8bitは任意の値であってよい(無視される)。 --VGABIOSのASKA版では、0x0112、0x0115、0x0118が32bitカラーで、0x0142、0x0143、0x0144が24bitカラーになる。 *** VESAファンクションを使わずに拡張グラフィックを使う方法 -メモリ --物理アドレス0xe000_0000からの4MBがリニアアクセス用のVRAM -I/Oポート --0x01ce:ここに16bitライトアクセスしてレジスタ番号を書き込む --0x01cf:ここに16bitライトアクセスしてレジスタデータを書き込む ---レジスタ0x0000と0x0004と0x0005に関してはリードもできるようだ -bochs拡張グラフィックの存在確認方法 --レジスタ0x0000に0xb0c2をライトする ---OUT_W(0x01ce, 0x0000); ---OUT_W(0x01cf, 0xb0c2); --レジスタ0x0000をリードしてみる ---OUT_W(0x01ce, 0x0000); /* これを省略しないこと */ ---IN_W(0x01cf); --0xb0c2が読み出せたら存在していると判断 -画面モード切替方法 --以下の順序でレジスタをセットすると切り替えられる --レジスタ0x0004に0x0000を設定 --レジスタ0x0001に解像度のxを設定(320, 640, 800, 1024のどれか) --レジスタ0x0002に解像度のyを設定(200, 400, 480, 600, 768のどれか) --もちろんこれらの組み合わせは上記のVESAモードに存在する正当なものである必要がある。 --レジスタ0x0003にカラーのbit数を設定(8, 15, 16, 24, 32) --レジスタ0x0005に0x0000を設定 --レジスタ0x0004に0x0001を設定 ---このときbit6を1にしてもよく、そうするとlinear指定したことになる ---このときbit7を1にしてもよく、そうするとVRAMが初期化されない --これだけで切り替わる(VGAレジスタをいじって640x480に切り替えるのと比べると、格段に手間が少ない)。 -リアルモードからのウィンドウアクセスのためのI/O --レジスタ0x0005にセットすればよい。64KB単位。これで0xa0000-0xaffffにマップされる。 * こめんと欄 -bochs に限った話ではありませんが、テキストモードのフォントデータは map 2 です。アクセスするにはVGAのレジスタをいじる必要があります。0xa0000 にアクセスしただけでは書けません。 -- [[名無しさん]] SIZE(10){2004-10-30 (土) 09:24:50} -bochsのテキストモードはエミュレートが完全ではないようで、フォントを書いてもレジスタの設定によってはうまく動かないみたいです。 -- [[名無しさん]] SIZE(10){2004-10-30 (土) 09:27:18} -情報ありがとうございます。 -- [[K]] SIZE(10){2004-10-30 (土) 11:43:02} #comment
タイムスタンプを変更しない
* bochsのページ *** bochs 2.1.1でサポートされる画面モード -[[qemu]]もbochsのグラフィックルーチンが入っているので、まったく同じように扱える。 -VGA |mode|type|size|color|pages|buff-addr| |0x00|text|40x25|4bit|8|0xb8000| |0x01|text|40x25|4bit|8|0xb8000| |0x02|text|80x25|4bit|8|0xb8000| |0x03|text|80x25|4bit|8|0xb8000| |0x04|graph|320x200|2bit|1|0xb8000| |0x05|graph|320x200|2bit|1|0xb8000| |0x06|graph|640x200|1bit|1|0xb8000| |0x07|text|80x25|1bit|1|0xb0000| |0x0d|graph|320x200|4bit|8|0xa0000| |0x0e|graph|640x200|4bit|4|0xa0000| |0x0f|graph|640x350|1bit|2|0xa0000| |0x10|graph|640x350|4bit|1|0xa0000| |0x11|graph|640x480|1bit|1|0xa0000| |0x12|graph|640x480|4bit|1|0xa0000| |0x13|graph|320x200|8bit|1|0xa0000| |0x6a|graph|800x600|4bit|1|0xa0000| --テキストモードのとき、フォントデータは0xa0000~0xa1fffに納められている。1キャラクタあたり32バイトで、8x16のときは前半16バイトのみが使われる。 ---この件に対する註があるのでこめんと欄で確認のこと。 -VESA (ver.2.0) |mode|size|color|window|linear| |0x0100| 640x400| 8bit|○|○| |0x0101| 640x480| 8bit|×|○| |0x0102| 800x600| 4bit|○|×| |0x0103| 800x600| 8bit|○|○| |0x0105|1024x768| 8bit|○|○| |0x0110| 640x480|15bit|○|○| |0x0111| 640x480|16bit|○|○| |0x0112| 640x480|24bit|○|○| |0x0113| 800x600|15bit|○|○| |0x0114| 800x600|16bit|○|○| |0x0115| 800x600|24bit|○|○| |0x0116|1024x768|15bit|○|○| |0x0117|1024x768|16bit|○|○| |0x0118|1024x768|24bit|○|○| |0x0142| 640x480|32bit|○|○| |0x0143| 800x600|32bit|○|○| |0x0144|1024x768|32bit|○|○| |0x0146| 320x200| 8bit|×|○| --windowの項目は、0x0101と0x0102が逆なんじゃないかと思わないでもない。 --15bitカラーモードのとき、このリザーブされている15bit目は常に0にすること。 --32bitカラーモードのとき、上位8bitは任意の値であってよい(無視される)。 --VGABIOSのASKA版では、0x0112、0x0115、0x0118が32bitカラーで、0x0142、0x0143、0x0144が24bitカラーになる。 *** VESAファンクションを使わずに拡張グラフィックを使う方法 -メモリ --物理アドレス0xe000_0000からの4MBがリニアアクセス用のVRAM -I/Oポート --0x01ce:ここに16bitライトアクセスしてレジスタ番号を書き込む --0x01cf:ここに16bitライトアクセスしてレジスタデータを書き込む ---レジスタ0x0000と0x0004と0x0005に関してはリードもできるようだ -bochs拡張グラフィックの存在確認方法 --レジスタ0x0000に0xb0c2をライトする ---OUT_W(0x01ce, 0x0000); ---OUT_W(0x01cf, 0xb0c2); --レジスタ0x0000をリードしてみる ---OUT_W(0x01ce, 0x0000); /* これを省略しないこと */ ---IN_W(0x01cf); --0xb0c2が読み出せたら存在していると判断 -画面モード切替方法 --以下の順序でレジスタをセットすると切り替えられる --レジスタ0x0004に0x0000を設定 --レジスタ0x0001に解像度のxを設定(320, 640, 800, 1024のどれか) --レジスタ0x0002に解像度のyを設定(200, 400, 480, 600, 768のどれか) --もちろんこれらの組み合わせは上記のVESAモードに存在する正当なものである必要がある。 --レジスタ0x0003にカラーのbit数を設定(8, 15, 16, 24, 32) --レジスタ0x0005に0x0000を設定 --レジスタ0x0004に0x0001を設定 ---このときbit6を1にしてもよく、そうするとlinear指定したことになる ---このときbit7を1にしてもよく、そうするとVRAMが初期化されない --これだけで切り替わる(VGAレジスタをいじって640x480に切り替えるのと比べると、格段に手間が少ない)。 -リアルモードからのウィンドウアクセスのためのI/O --レジスタ0x0005にセットすればよい。64KB単位。これで0xa0000-0xaffffにマップされる。 * こめんと欄 -bochs に限った話ではありませんが、テキストモードのフォントデータは map 2 です。アクセスするにはVGAのレジスタをいじる必要があります。0xa0000 にアクセスしただけでは書けません。 -- [[名無しさん]] SIZE(10){2004-10-30 (土) 09:24:50} -bochsのテキストモードはエミュレートが完全ではないようで、フォントを書いてもレジスタの設定によってはうまく動かないみたいです。 -- [[名無しさん]] SIZE(10){2004-10-30 (土) 09:27:18} -情報ありがとうございます。 -- [[K]] SIZE(10){2004-10-30 (土) 11:43:02} #comment
テキスト整形のルールを表示する