VGA/text
の編集
https://oswiki.osask.jp:443/?VGA%2Ftext
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
(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
ifno(AT)keyboard
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
名無しさん
* VGAのテキストモード [#a843d645] -BIOSを使わずにテキストモードで文字を書きたい、という人のための情報。 -OS-WikiのルールではどのOSにも関係ないことを書いてはいけないので、書くつもりはなかったのですが、必要な人がたまにいるようなので書くことにしました(by [[K]], 2004.10.21)。半年くらい待ってもこの情報を利用するOSがOS-Wikiにこなければ、このページは消します。 *** とにかく文字を表示したい [#e437daca] -まあだまされたと思って、0xb800:0x0000の1バイトに適当なキャラクターコードを、そして0xb800:0x0001の1バイトに適当な数値を書いてみてください(この適当な数値のbit0-3が文字色、bit4-7が背景色になる)。そして画面左上に注目してください。 -何を書くと何が出るのかが大体把握できたら、今度は0xb800:0x0002と0xb800:0x0003で同じことをやってみます。・・・それもできたら、今度はアドレスを少しずつ増やしてみればいいでしょう。これで、画面の好きな場所に好きな文字を出せるようになるはずです。 -上の内容はリアルモードのものです。もしプロテクトモードでも使いたかったら物理アドレス0xb8000以降をアクセスしてください。 //もしプロテクトモードでも使いたかったら0xb8000をベースとするセレクタを用意してください。 *** 発展 [#i57b176a] -画面消去は? --画面全体を空白のキャラクタコード(0x20)で埋め尽くせばいいでしょう。 -スクロールは? --行を転送するんです。 -カーソルが邪魔だ or カーソルを移動させたい --これはVGAのCRTコントローラをいじります。 --まずカーソルをどこに移動させたいかを考えて、それが0xb800:0x0000から何バイト離れているかを考えます。そしてそれを2で割ります。そしてその値をAXに入れます。 --そのあとは次の通り PUSH(AX); DX = 0x03d4; AL = 0x0e; OUT(DX, AX); POP(AX); AH = AL; AL = 0x0f; OUT(DX, AX); --何をやっているのかというと[[VGA]]のCRTコントローラの、レジスタ[0x0e]と[0x0f]を書き換えています。詳細は、[[VGA]]のページを見てください。 --この方法でカーソルを画面外に追放すれば(たとえば一番下の次の行とかにする)、カーソルがいなくなります(カーソルを追い出すだけなら、[0x0a]を使う方法もある)。 --なお、[0x0a]と[0x0b]をいじれば、カーソルの形状もいじれます。 * こめんと欄 [#y0f0ed8d] -カーソル制御の方法を希望します。よろしくお願いします。 -- ''TaTsu.'' SIZE(10){2004-10-22 (金) 12:29:04} -C MAGAZINE(2004/07)に書いてあったと思うけど・・・ 元ネタどこだ・・・? -- [[名無しさん]] SIZE(10){2004-10-22 (金) 13:59:38} -要望があったのでカーソル制御を書き足しました。 -- [[K]] SIZE(10){2004-10-22 (金) 14:40:41} -私もtextモードの資料きぼんしてますので消さないでくださーい。 -- ''MiSt'' SIZE(10){2004-10-23 (土) 20:07:54} -やってみましたが、失敗してしまいました。ブート直後ではダメなのでしょうか?? -- [[名無しさん]] SIZE(10){2006-03-13 (月) 23:35:32} -QEMUでは、成功しました。 ( [[Lights計画]]のブートセクタ中で使ってます。 ) -- [[Sero]] SIZE(10){2006-04-06 (木) 21:28:53} -けさないでください -- ''とくめい'' SIZE(10){2006-09-06 (水) 11:48:54} #comment
タイムスタンプを変更しない
* VGAのテキストモード [#a843d645] -BIOSを使わずにテキストモードで文字を書きたい、という人のための情報。 -OS-WikiのルールではどのOSにも関係ないことを書いてはいけないので、書くつもりはなかったのですが、必要な人がたまにいるようなので書くことにしました(by [[K]], 2004.10.21)。半年くらい待ってもこの情報を利用するOSがOS-Wikiにこなければ、このページは消します。 *** とにかく文字を表示したい [#e437daca] -まあだまされたと思って、0xb800:0x0000の1バイトに適当なキャラクターコードを、そして0xb800:0x0001の1バイトに適当な数値を書いてみてください(この適当な数値のbit0-3が文字色、bit4-7が背景色になる)。そして画面左上に注目してください。 -何を書くと何が出るのかが大体把握できたら、今度は0xb800:0x0002と0xb800:0x0003で同じことをやってみます。・・・それもできたら、今度はアドレスを少しずつ増やしてみればいいでしょう。これで、画面の好きな場所に好きな文字を出せるようになるはずです。 -上の内容はリアルモードのものです。もしプロテクトモードでも使いたかったら物理アドレス0xb8000以降をアクセスしてください。 //もしプロテクトモードでも使いたかったら0xb8000をベースとするセレクタを用意してください。 *** 発展 [#i57b176a] -画面消去は? --画面全体を空白のキャラクタコード(0x20)で埋め尽くせばいいでしょう。 -スクロールは? --行を転送するんです。 -カーソルが邪魔だ or カーソルを移動させたい --これはVGAのCRTコントローラをいじります。 --まずカーソルをどこに移動させたいかを考えて、それが0xb800:0x0000から何バイト離れているかを考えます。そしてそれを2で割ります。そしてその値をAXに入れます。 --そのあとは次の通り PUSH(AX); DX = 0x03d4; AL = 0x0e; OUT(DX, AX); POP(AX); AH = AL; AL = 0x0f; OUT(DX, AX); --何をやっているのかというと[[VGA]]のCRTコントローラの、レジスタ[0x0e]と[0x0f]を書き換えています。詳細は、[[VGA]]のページを見てください。 --この方法でカーソルを画面外に追放すれば(たとえば一番下の次の行とかにする)、カーソルがいなくなります(カーソルを追い出すだけなら、[0x0a]を使う方法もある)。 --なお、[0x0a]と[0x0b]をいじれば、カーソルの形状もいじれます。 * こめんと欄 [#y0f0ed8d] -カーソル制御の方法を希望します。よろしくお願いします。 -- ''TaTsu.'' SIZE(10){2004-10-22 (金) 12:29:04} -C MAGAZINE(2004/07)に書いてあったと思うけど・・・ 元ネタどこだ・・・? -- [[名無しさん]] SIZE(10){2004-10-22 (金) 13:59:38} -要望があったのでカーソル制御を書き足しました。 -- [[K]] SIZE(10){2004-10-22 (金) 14:40:41} -私もtextモードの資料きぼんしてますので消さないでくださーい。 -- ''MiSt'' SIZE(10){2004-10-23 (土) 20:07:54} -やってみましたが、失敗してしまいました。ブート直後ではダメなのでしょうか?? -- [[名無しさん]] SIZE(10){2006-03-13 (月) 23:35:32} -QEMUでは、成功しました。 ( [[Lights計画]]のブートセクタ中で使ってます。 ) -- [[Sero]] SIZE(10){2006-04-06 (木) 21:28:53} -けさないでください -- ''とくめい'' SIZE(10){2006-09-06 (水) 11:48:54} #comment
テキスト整形のルールを表示する