guide07
の編集
http://hrb.osask.jp/wiki/?guide07
[
リロード
|
差分
|
単語検索
|
一覧
] [
編集
|
バックアップ
|
添付
]
-- 雛形とするページ --
A
Akkie
Athlon64X2
Clover
DAsoran
Falcon
FormatRule
FrontPage
Genesis
Help
I
InterWikiName
InterWikiSandBox
InterWikiテクニカル
Jormungand
K
Kebo
Kor_Lee_Hee_Rak
Leaf
Linux
Linux/wako_memo
MOIZ99
MW
MenuBar
OSC
PG_MANA
ReadersOS
RecentDeleted
SKYDASH
SandBox
Sero
Sigle
Source
Triangle_Ld.
Zxcvbnm
advance
advance/CPU
advance/FDC
advance/FPU
advance/NotHariMain
advance/QEMUVGA
advance/RTC
advance/blike
advance/cpu_reset
advance/driver
advance/driver/01
advance/driver/02
advance/families
advance/filesystem
advance/fwrite
advance/hddboot
advance/he86
advance/hints
advance/ipl
advance/kernel
advance/keycode
advance/osselect
advance/smaller1
advance/startup
advnace/smaller2
anzy
aotatsu
banbi-
bluedwarf
bo
bugs
challengers
cybozulabsyouth11
deskmanta
esb02b
faq
faq/advance
faq/asm
faq/c00-03
faq/c04-07
faq/c08-15
faq/c16-23
faq/c24-31
faq/make
faq/others
faq/qemu
guide
guide03
guide05
guide07
hikarupsp
imp_log/0000
imp_log/0001
imp_log/0002
imp_log/0003
impressions
index
k
killer_elf
kota
lea
lea/10_memory
lea/4_color
lea/idea
lea/terms
links
logs
logs/osa_hrb/comments0000
logs/osa_hrb/rumors0000
masa
members
message
mistakes
moge32
moppoi5168
notice
osdevjp
populars
prog_index
projects
q_and_a
q_and_a_2
qa_log/0000
qa_log/0001
qa_log/0002
qa_log/0003
qa_log/0004
qa_log/0005
qa_log/0006
qa_log/0007
qa_log/0008
qa_log/0009
quark
rankings
rule
sakamoto
sasaki
spc09
spcc_30min_os
tatsu
tools
tools/bim2hrb
tools/bin2obj
tools/cc1
tools/edimg
tools/gas2nask
tools/makefont
tools/nask
tools/obj2bim
tools/sjisconv
uchan
uho
updates
violations
wako
white
win64-bit
x
ytakano
ヘルプ
リックス
質問します
整形ルール
本は買ったぞ!持ってるぞ!
練習用ページ
* [[guide]]の子ページ -(by [[K]], 2009.08.07) *** (1) 備考 -本文どおりにするだけで問題なくCD-ROM内のものと同じにできるものについては、書いてません。以下にあるのはそれだけではすまない要注意リストです。 -[補足]とあるものは、CD-ROM内を確認するほどではないものの、参考になるかもしれないメモです。 -このあたりから[補足]説明程度で何とかなるようになってきています。 *** 07日目 (harib04?) -''harib04a/'' --bootpack.h ---[補足] /* naskfunc.nas */ のところにプロトタイプ宣言 int io_in8(int port); を書き足している(int.cで使うようになったので。それまでは書き忘れていたけど使わなかったので問題なかった)。 --int.c ---[補足] 本文中の記述で変更点は明らかにされているが、 sprintf() 利用の関係で #include <stdio.h> が必要になるのに、そのことだけが書いてない。適当に書き足しておいてほしい。 ---[補足] ちなみに sprintf() のために #include <stdio.h> が必要になるという説明はp.107にある。 --Makefile ---[補足] 本文中で全く説明が無いが、「%.gas : %.c Makefile」と書いていた部分を「%.gas : %.c bootpack.h Makefile」に直している。 %.gas を生成するに当たっては %.c と Makefile だけではなく bootpack.h も利用しているのだから、この変更はしたほうがいい。というか、今までやり忘れていたことのほうが問題。理想的には harib03c でやっておくべきだったと思う。 -''harib04b/'' --bootpack.h ---[補足] struct KEYBUF { ... }; は、本文中では int.c に書いているように見えるが、int.c ではなくてこっちに書く。 ---[補足] /* naskfunc.nas */ のところにプロトタイプ宣言 void io_stihlt(void); を書き足している(それまでは書き忘れていたけど使わなかったので問題なかった)。 --bootpack.c ---[補足] 本文中に明示されている変更の他に、 extern struct KEYBUF keybuf; を書き加える。どこに書けばいいのかというと、 keybuf 変数を使う前ならどこでも大丈夫。 --int.c ---[補足] struct KEYBUF { ... }; の部分は本文どおりの int.c へではなく bootpack.h に書く。 -''harib04c/'' --bootpack.h ---[補足] struct KEYBUF { ... }; は、本文中では int.c に書いているように見えるが、やはりint.c ではなくてこっちに書く。 --bootpack.c ---[補足] 本文中に明示されている変更の他に、 HariMain() に次の修正をする。自明なので本文では省略してしまった。「int mx, my, i;」→「int mx, my, i, j;」 --int.c ---[補足] struct KEYBUF { ... }; の部分は本文どおりの int.c へではなく、やはり bootpack.h に書く。 -''harib04d/'' --bootpack.c ---[補足] 本文中に明示されている変更の他に、 HariMain() に次の修正をする。自明なので本文では省略してしまった。この修正を忘れても未使用の変数があるという警告が出るだけで害はない。「int mx, my, i, j;」→「int mx, my, i;」 -''harib04e/'' --bootpack.h ---[補足] 本文中の struct FIFO8 { ... }; とfifo.c内の関数(計4つ)のプロタイプ宣言を追加。 struct KEYBUF { ... }; の記述は削除。 --bootpack.c ---[補足] 追加内容は基本的に本文どおりなのだが、 fifo8_init(&keyfifo, 32, keybuf); の挿入位置が分かりにくい。処理内容からして、キーボードからの割り込みを受け付ける前に行う。さらに本文中では extern struct FIFO8 keyfifo; の追加についての説明が省略されているので、これを忘れずに追加。 --fifo.c (新規作成) ---[補足] #include "bootpack.h" を忘れずに入れる。関数は本文中の4つをそのまま全部書けばいい。 --int.c ---[補足] struct KEYBUF keybuf; は使わなくなったので削除(というか、本文中に記述されている struct FIFO8 keyfifo; と入れ替え)。 --Makefile ---[補足] もはや言うまでもないかもしれないが、 OBJS_BOOTPACK = に fifo.obj を追加。 -''harib04f/'' --bootpack.c ---[補足] この回で更新されたのはこのファイルだけである。主要な変更箇所は本文中に全て出ているが、 HariMain() 内で、どのタイミングでキーボードやマウスの初期化・有効化をすべきかを迷うかもしれない。 init_keyboard(); はIDTとPICへの設定が全て終わった段階で呼び出すのがいいと思う。また enable_mouse(); は基本的には init_keyboard(); の後であればいつでもいいのだが、CD-ROM内ではfor文に入る直前にやっている。言うまでもないが、for文の中に入れるのはよくない。enableは何度も繰り返してするべき性質の処理ではないからである。 -''harib04g/'' --bootpack.c ---[補足] 「extern struct FIFO8 keyfifo;」→「extern struct FIFO8 keyfifo, mousefifo;」の記述が本文中では省略されている。 ---[補足] HariMain()内の「char s[40], mcursor[256], keybuf[32];」→「char s[40], mcursor[256], keybuf[32], mousebuf[128];」の記述が本文中では省略されている。 ---[補足] 本文中に書かれているHariMain()内の「fifo8_init(&mousefifo, 128, mousebuf);」は「fifo8_init(&keyfifo, 32, keybuf);」の直後に追加。 * こめんと欄 #comment
タイムスタンプを変更しない
* [[guide]]の子ページ -(by [[K]], 2009.08.07) *** (1) 備考 -本文どおりにするだけで問題なくCD-ROM内のものと同じにできるものについては、書いてません。以下にあるのはそれだけではすまない要注意リストです。 -[補足]とあるものは、CD-ROM内を確認するほどではないものの、参考になるかもしれないメモです。 -このあたりから[補足]説明程度で何とかなるようになってきています。 *** 07日目 (harib04?) -''harib04a/'' --bootpack.h ---[補足] /* naskfunc.nas */ のところにプロトタイプ宣言 int io_in8(int port); を書き足している(int.cで使うようになったので。それまでは書き忘れていたけど使わなかったので問題なかった)。 --int.c ---[補足] 本文中の記述で変更点は明らかにされているが、 sprintf() 利用の関係で #include <stdio.h> が必要になるのに、そのことだけが書いてない。適当に書き足しておいてほしい。 ---[補足] ちなみに sprintf() のために #include <stdio.h> が必要になるという説明はp.107にある。 --Makefile ---[補足] 本文中で全く説明が無いが、「%.gas : %.c Makefile」と書いていた部分を「%.gas : %.c bootpack.h Makefile」に直している。 %.gas を生成するに当たっては %.c と Makefile だけではなく bootpack.h も利用しているのだから、この変更はしたほうがいい。というか、今までやり忘れていたことのほうが問題。理想的には harib03c でやっておくべきだったと思う。 -''harib04b/'' --bootpack.h ---[補足] struct KEYBUF { ... }; は、本文中では int.c に書いているように見えるが、int.c ではなくてこっちに書く。 ---[補足] /* naskfunc.nas */ のところにプロトタイプ宣言 void io_stihlt(void); を書き足している(それまでは書き忘れていたけど使わなかったので問題なかった)。 --bootpack.c ---[補足] 本文中に明示されている変更の他に、 extern struct KEYBUF keybuf; を書き加える。どこに書けばいいのかというと、 keybuf 変数を使う前ならどこでも大丈夫。 --int.c ---[補足] struct KEYBUF { ... }; の部分は本文どおりの int.c へではなく bootpack.h に書く。 -''harib04c/'' --bootpack.h ---[補足] struct KEYBUF { ... }; は、本文中では int.c に書いているように見えるが、やはりint.c ではなくてこっちに書く。 --bootpack.c ---[補足] 本文中に明示されている変更の他に、 HariMain() に次の修正をする。自明なので本文では省略してしまった。「int mx, my, i;」→「int mx, my, i, j;」 --int.c ---[補足] struct KEYBUF { ... }; の部分は本文どおりの int.c へではなく、やはり bootpack.h に書く。 -''harib04d/'' --bootpack.c ---[補足] 本文中に明示されている変更の他に、 HariMain() に次の修正をする。自明なので本文では省略してしまった。この修正を忘れても未使用の変数があるという警告が出るだけで害はない。「int mx, my, i, j;」→「int mx, my, i;」 -''harib04e/'' --bootpack.h ---[補足] 本文中の struct FIFO8 { ... }; とfifo.c内の関数(計4つ)のプロタイプ宣言を追加。 struct KEYBUF { ... }; の記述は削除。 --bootpack.c ---[補足] 追加内容は基本的に本文どおりなのだが、 fifo8_init(&keyfifo, 32, keybuf); の挿入位置が分かりにくい。処理内容からして、キーボードからの割り込みを受け付ける前に行う。さらに本文中では extern struct FIFO8 keyfifo; の追加についての説明が省略されているので、これを忘れずに追加。 --fifo.c (新規作成) ---[補足] #include "bootpack.h" を忘れずに入れる。関数は本文中の4つをそのまま全部書けばいい。 --int.c ---[補足] struct KEYBUF keybuf; は使わなくなったので削除(というか、本文中に記述されている struct FIFO8 keyfifo; と入れ替え)。 --Makefile ---[補足] もはや言うまでもないかもしれないが、 OBJS_BOOTPACK = に fifo.obj を追加。 -''harib04f/'' --bootpack.c ---[補足] この回で更新されたのはこのファイルだけである。主要な変更箇所は本文中に全て出ているが、 HariMain() 内で、どのタイミングでキーボードやマウスの初期化・有効化をすべきかを迷うかもしれない。 init_keyboard(); はIDTとPICへの設定が全て終わった段階で呼び出すのがいいと思う。また enable_mouse(); は基本的には init_keyboard(); の後であればいつでもいいのだが、CD-ROM内ではfor文に入る直前にやっている。言うまでもないが、for文の中に入れるのはよくない。enableは何度も繰り返してするべき性質の処理ではないからである。 -''harib04g/'' --bootpack.c ---[補足] 「extern struct FIFO8 keyfifo;」→「extern struct FIFO8 keyfifo, mousefifo;」の記述が本文中では省略されている。 ---[補足] HariMain()内の「char s[40], mcursor[256], keybuf[32];」→「char s[40], mcursor[256], keybuf[32], mousebuf[128];」の記述が本文中では省略されている。 ---[補足] 本文中に書かれているHariMain()内の「fifo8_init(&mousefifo, 128, mousebuf);」は「fifo8_init(&keyfifo, 32, keybuf);」の直後に追加。 * こめんと欄 #comment
テキスト整形のルールを表示する