advance/startup
の編集
http://hrb.osask.jp/wiki/?advance/startup
[
リロード
|
差分
|
単語検索
|
一覧
] [
編集
|
バックアップ
|
添付
]
-- 雛形とするページ --
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
ヘルプ
リックス
質問します
整形ルール
本は買ったぞ!持ってるぞ!
練習用ページ
* スタートアップ機能を作ろう! -(by [[K]], 2006.09.24) -発展課題のページ(全部読む前にここを読むのは混乱するのでおすすめじゃないです) ---- -[[advance/osselect]]で「はりぼてOS」にブートセレクタ機能をつけられるようになったら、今度は起動直後に自動でメニューが出たらいいなと思うようになるのは避けられないところです(笑)。 --1.HiyOSを起動する --2.rapuOSを起動する --0.ブートローダOSをそのまま使用する -こんなメニューを出力し、選択されたOSをapi_osselectするアプリを作るのはそう難しいことではないと思いますが、このメニューアプリがOSのブートローダOSの起動時に自動起動してほしいわけです。 -こんなのは超簡単で実は春にはこっそりと作って完成していたので、ここで発表しようと思います。 *** 改造ポイント -bootpack.cの /* nihongo.fntの読み込み */ の最後の2行 *((int *) 0x0fe8) = (int) nihongo; memman_free_4k(memman, (int) fat, 4 * 2880); -を以下の記述に差し替え。 *((int *) 0x0fe8) = (int) nihongo; /* startup */ finfo = file_search("haribote.hsf", (struct FILEINFO *) (ADR_DISKIMG + 0x002600), 224); if (finfo != 0) { char *ss; i = finfo->size; ss = file_loadfile2(finfo->clustno, &i, fat); for (x = 0; x < i; x++) { if (ss[x] != 0x0d) { fifo32_put(&key_win->task->fifo, ss[x] + 256); } } memman_free_4k(memman, (int) ss, i); } memman_free_4k(memman, (int) fat, 4 * 2880); -"haribote.hsf"のところは、hiyosなら"hiyos.hsf"などのようにしておくと、各OSごとに別々のスタートアップファイルを用意できて便利でしょう。なお、.hsfは「はりぼて・スクリプト・ファイル」の略のつもりです。まあバッチファイルみたいなものなので、.batでもいいかもしれませんね(Windowsとの互換性はないですが)。いっそなつかしの、"AUTOEXEC.BAT"にしますか?(笑)。 -原理を特に説明する必要はないかもしれませんが、一応書いておきます。ファイルの内容を文字コード 0x0d を除いてすべてコンソールのキー入力用FIFOバッファに送りつけます。これで入力されたかのようにふるまうというわけです。 -この機能を使えば、「ncst menu」と書かれたharibote.hsfを用意しておくだけで、起動直後に自動でmenuアプリが起動するというわけです。 *** コンソールでもスクリプト -ここまでできると、起動時スクリプト実行だけではなく、コンソールでもスクリプトファイル(=バッチファイル)を使えるようにしたい!と思っちゃうので、それもついでにやります。 -と思ったのですが、実は超手抜き(?)をしてFIFOバッファにキー入力データを送り込むAPIを作り、それでバッチファイルもどきをやりました。API番号は31番になっています。 ---- -console.cのhrb_api()の一部 } else if (edx == 31) { /* sendkey */ for (p = (unsigned char *) ebx + ds_base; *p != 0; p++) { if (*p != 0x0d) { io_cli(); fifo32_put(&task->fifo, *p + 256); io_sti(); } } } ---- -api031.nasの一部 _api_sendkey: ; int api_sendkey(char *); PUSH EBX MOV EDX,31 MOV EBX,[ESP+8] INT 0x40 POP EBX RET ---- -サンプルアプリ例(help.c) #include "apilib.h" void HariMain(void) { api_sendkey("ncst tview -w70 -h20 hlp.txt\n"); api_end(); } ---- -結局何がやりたかったのかというと、helpと打ち込むだけで、適切な大きさでhlp.txtが開かれるようにしたかっただけなのです。できればhelp.hsfに「ncst tview -w70 -h20 hlp.txt」と書き込んでおきさえすれば同じことができるようにコンソールを拡張すればよかったのですが・・・。 --こんなことくらいでAPIを増やしているとそのうちAPI乱発になってよくないOSになってしまうー。 * こめんと欄 #comment
タイムスタンプを変更しない
* スタートアップ機能を作ろう! -(by [[K]], 2006.09.24) -発展課題のページ(全部読む前にここを読むのは混乱するのでおすすめじゃないです) ---- -[[advance/osselect]]で「はりぼてOS」にブートセレクタ機能をつけられるようになったら、今度は起動直後に自動でメニューが出たらいいなと思うようになるのは避けられないところです(笑)。 --1.HiyOSを起動する --2.rapuOSを起動する --0.ブートローダOSをそのまま使用する -こんなメニューを出力し、選択されたOSをapi_osselectするアプリを作るのはそう難しいことではないと思いますが、このメニューアプリがOSのブートローダOSの起動時に自動起動してほしいわけです。 -こんなのは超簡単で実は春にはこっそりと作って完成していたので、ここで発表しようと思います。 *** 改造ポイント -bootpack.cの /* nihongo.fntの読み込み */ の最後の2行 *((int *) 0x0fe8) = (int) nihongo; memman_free_4k(memman, (int) fat, 4 * 2880); -を以下の記述に差し替え。 *((int *) 0x0fe8) = (int) nihongo; /* startup */ finfo = file_search("haribote.hsf", (struct FILEINFO *) (ADR_DISKIMG + 0x002600), 224); if (finfo != 0) { char *ss; i = finfo->size; ss = file_loadfile2(finfo->clustno, &i, fat); for (x = 0; x < i; x++) { if (ss[x] != 0x0d) { fifo32_put(&key_win->task->fifo, ss[x] + 256); } } memman_free_4k(memman, (int) ss, i); } memman_free_4k(memman, (int) fat, 4 * 2880); -"haribote.hsf"のところは、hiyosなら"hiyos.hsf"などのようにしておくと、各OSごとに別々のスタートアップファイルを用意できて便利でしょう。なお、.hsfは「はりぼて・スクリプト・ファイル」の略のつもりです。まあバッチファイルみたいなものなので、.batでもいいかもしれませんね(Windowsとの互換性はないですが)。いっそなつかしの、"AUTOEXEC.BAT"にしますか?(笑)。 -原理を特に説明する必要はないかもしれませんが、一応書いておきます。ファイルの内容を文字コード 0x0d を除いてすべてコンソールのキー入力用FIFOバッファに送りつけます。これで入力されたかのようにふるまうというわけです。 -この機能を使えば、「ncst menu」と書かれたharibote.hsfを用意しておくだけで、起動直後に自動でmenuアプリが起動するというわけです。 *** コンソールでもスクリプト -ここまでできると、起動時スクリプト実行だけではなく、コンソールでもスクリプトファイル(=バッチファイル)を使えるようにしたい!と思っちゃうので、それもついでにやります。 -と思ったのですが、実は超手抜き(?)をしてFIFOバッファにキー入力データを送り込むAPIを作り、それでバッチファイルもどきをやりました。API番号は31番になっています。 ---- -console.cのhrb_api()の一部 } else if (edx == 31) { /* sendkey */ for (p = (unsigned char *) ebx + ds_base; *p != 0; p++) { if (*p != 0x0d) { io_cli(); fifo32_put(&task->fifo, *p + 256); io_sti(); } } } ---- -api031.nasの一部 _api_sendkey: ; int api_sendkey(char *); PUSH EBX MOV EDX,31 MOV EBX,[ESP+8] INT 0x40 POP EBX RET ---- -サンプルアプリ例(help.c) #include "apilib.h" void HariMain(void) { api_sendkey("ncst tview -w70 -h20 hlp.txt\n"); api_end(); } ---- -結局何がやりたかったのかというと、helpと打ち込むだけで、適切な大きさでhlp.txtが開かれるようにしたかっただけなのです。できればhelp.hsfに「ncst tview -w70 -h20 hlp.txt」と書き込んでおきさえすれば同じことができるようにコンソールを拡張すればよかったのですが・・・。 --こんなことくらいでAPIを増やしているとそのうちAPI乱発になってよくないOSになってしまうー。 * こめんと欄 #comment
テキスト整形のルールを表示する