→faq書き込むに当たっては、このwikiサイトのルールもよく確認してください。みたいに、できるだけ質問個所をはっきりさせてください(ページが特定できないような質問であればそのときはページを書かなくてもいいです)。その上で何がわからなくて、何がわかるのかも書いてください。回答はK以外でもOKです。いうかKは忙しくて回答が遅れたりするので、誰か読者の中で分かった人がいれば、その人が代わりに答えてくれたほうが助かります。「プログラムのこの部分はこうしたほうがいい気がする」、「なぜこうしないのですか?」みたいな質問はできるだけしないようにしましょう。なるか観察してみるべきです(そういう余地をあえて残し、説明を簡単にした個所がいくつかあったはずです)。そのほうが格段に力がつきますよ。うまくいったらあなたの考えは正しいのです。うまく動かない!助けて!系の質問をする前に、一度自分の入力したファイルをどこか別のところに保存しておいて、全部をCD-ROMの中のファイルに入れ替えてみてください。それで動くようなら、それはどこかで入力ミスがあったということです。ファイルを比較したり、一部だけ自分の入力したファイルと入れ替えてみたりして、自力でミスを探しましょう。そのためにCD-ROMにプログラムが入っているのですから。CD-ROMのものをそのまま使ってもうまくいかない場合だけ質問するようにしてください(あなたの入力ミスについては著者も他の皆さんも答えようがありません)。・・・でも、自分で入力してみようというその心がけはとてもいいです。ミスが発見できたら、ぜひそこを手直しして、今後もできる限り自分で入力してがんばってください。いう人を支援するためのページもあります。(入力ミスの発見には役立ちませんが)本の内容の質問ではない場合は、impressionsを使ってください。過去ログqa_log/0000(2006.03.04-2006.03.31)qa_log/0001(2006.04.01-2006.04.24)qa_log/0002(2006.04.24-2006.04.29)qa_log/0003(2006.04.25-2006.05.09)qa_log/0004(2006.05.24-2006.06.28)qa_log/0005(2006.07.01-2006.09.05)qa_log/0006(2006.09.07-2006.10.05)qa_log/0007(2006.10.22-2006.11.27)qa_log/0008(2006.12.31-2007.04.16)qa_log/0009(2007.04.21-2009.03.14)関連ページ特別版:q_and_a_2CD-ROMのOSが動かないってか画面が真っ黒になってとまってしまいます。IPLは機能しているようですがねぇ。スクリーンのリフレッシュレートはよこ56.6kHz/縦70.0Hzです。これだけでは情報不足かな...。16:45:4930日目の状態でのCD起動に失敗することは上記の書き込みでわかったのですが、では動かなくなるのは何日目からなのかが知りたいです。18:19:39何日目からかはわかりませんが(CDのharib27の最後をそのままFDへやった)、おそらくIRQ-07をやめたころからだと思います。15:43:5710日目P.205のharib07bについて質問させて下さい。s)について、第一引数がbinfo->vramでなくbuf_backになっているのはなぜですか?vramはメモリの0xa0000番地からだと思っていたのですが、buf_backだと0x4000の値になっていますが、それでもちゃんと描画出来ているのがなぜか分かりません。ご教授よろしくお願い致します。04:11:43buf_backはsht_backの描画用変数です。言ってもわかりづらいですよね。何行か前でsheet_setbuf関数を使ってsht_backとbuf_backを関連付けたのですが、buf_backは番地変数で、buf_backを指定すると0x4000番地、つまりsht_back->bufの番地と同じで、そこに書き込まれ、sheet_refreshの時にvramへ反映されるのです。13:43:55簡単に言うと、buf_backはsht_back->bufと完全に同じ意味で、sheet_refreshではそれをbinfo->vram(0x000a0000番地)に反映させている(描画している)ということです。13:46:04なるほど、sheet_refreshの中でvramに反映しているのが分かりました!Triangle_Ld.様どうもありがとうございました。22:43:56初です。画面モードについての質問なんですが、http://community.osdev.info/?VESAの0x118を使いたいなと思って一度asmhead.nasの画面モードのとこだけを変更したらうまくいかず悩んでいます(QEMUで)。なにか、別のところに変更が必要なのでしょうか?ご返答お願いします。09:02:23上に追加です。おもな改造としては、グラフィック(マウスカーソル、ウィンドウの色の変更)と、フルカラー化、ファイルシステムの変更、アプリの削減ぐらいです。09:10:50Catsさんへ。それは本の内容を超える質問(自分の改造による問題)ですので、上記に明記されている通りimpressionsで質問してください。19:24:51初心者です。01:59:21Windowsをお使いでしたらメモ帳を開いてその中にファイルのアイコンをドラッグしてみてください。09:32:41ありがとうございます。困ったことがあったらまたお願いします。20:15:31nasならNASKで、cならcc1で、askならcpp0でアセンブル出来ます。c,askの場合はこれに加えて少し作業が必要(askは本の範囲を超えています)。18:57:25追記&訂正:c,askはアセンブルじゃなくてコンパイルです。実行ファイルになるまでのツールの数はNASKが圧倒的に少ないです(nasはNASK,obj2bim,bim2hrbだけ。cはこのほかにgas2naskがはいる。askは範囲を超えているので省略)。17:00:33できたOSをPCの内臓HDにインストールするにはどうすればよいのでしょうか。14:33:18すいません。過去のログにHD起動のことが書いてありましたのでそちらを参考にします。14:39:16たびたびすいません。過去のログはUSBメモリについての内容で、内臓のHDに、インストールする場合ではありませんでした。どなたか、HDに、インストールがうまくいった方がおられましたら、ご教授願います。17:41:58アクエリアスさんへ。HDDへのインストールは、本の内容を超えた質問なので、上記の説明をよく読んでimpressionsでお願いいたします。22:12:15「Linuxでのやり方はサポートページにまとめておきます。18:39:40ええと・・・すみません、「わこうメモ」(Linux/wako_memo)には書いていないようです。どなたかLinuxに詳しい方がおられましたら、ぜひ教えてください。19:05:04かのさん、どうもありがとうございます。08:12:28ありがとうございます。00:52:20ご質問はありがたいですが、それは本の内容を理解していれば僕でなくても答えられる質問のように思います。答えられる方は是非お返事してあげてください。いたずらに僕を指名しないでください(詳しくは、トップページの「2006年10月からの方針」を見てください)。02:41:53hanamizuさんの質問に分かる範囲で答えてみます。厳密に言えば、うまく行く時もあるかもしれないし、取りこぼす時もあるかもしれない、といったところでしょうか。キーボード回路からの2バイト目の送信が、十分遅ければ、うまく行くかもしれません。03:55:282バイト目の送信による割り込みが発生する前に、bootback.cのループ内にある割り込み禁止に辿り着けば、うまく行くと思います。ところが、ほとんど連続的に2バイト目の割り込みが発生した場合は、バッファの内容が取り出されていない(つまり、keybuf.flag==1)ので、2バイト目が捨てられる事になります。04:07:42キーボード回路が、どのくらいの速さで2バイト目を送信してくるかは分かりませんが、結果を踏まえて考えると、ほぼ連続的であると言えそうです。04:30:32連続的であると考えて、FIFOバッファを導入したところ、うまく動いたようなので、めでたしめでたし、となるわけですね。04:36:09kさん、らすかるさん回答ありがとうございます。q&aのログの0006に同じ内容のログがありましたので、参考にさせていただきました。それらを見て「1バイト目の割り込み受け付けは、HariMainの一部(p.141)の4行目にあるio_stihlt();からio_cli();へ戻る間で起こる。即座に2バイト目の割り込みがHariMainの中でio_cli();に戻る前に起こり、フラグが0に戻っていないので2バイト目が取りこぼされる。11:20:38hanamizuさんの考えで、ほぼ正解だと思います。細かい補足を致しますと、io_stihlt関数の中身は、割り込みを禁止してHLTするといった、複数の命令から構成されています。関数呼び出しの前後でも、いくつかの命令を実行しています。何が言いたいかというと、Cの関数単位で動作を説明すれば、hanamizuさんの説明のようになるかと思いますが、厳密に言うと、各関数も複数の命令から構成されており、io_stihlt関数の中でも、io_cli関数の中でも、割り込みが発生する可能性はあるという事です。19:17:46ですから「io_stihlt();からio_cli();へ戻る間で起こる」の点については、むしろ、この間で割り込みが発生する可能性は低く(勿論、JMP命令の前後で発生する場合もあると思いますが)、恐らくはHLT中に発生する可能性が一番高いように思います。io_stihlt関数の中という事になります。19:18:22割り込みは、CLI命令の直後から禁止され、STI命令の直後から有効になります。CLI命令やSTI命令は、結局のところ、フラグレジスタの割り込みフラグを設定しているだけですので、同等の処理を行えば、同等の効果が得られます。INT命令の処理の中には、CLI同等の処理が含まれ、IRET命令の処理の中には、STI同等の処理が含まれます。19:18:54割り込み禁止と言っても、割り込みコントローラが停止しているわけではありませんので、次の割り込み要因があれば、割り込み可能になるのを、虎視眈々と待ち構えているわけです。0x61))を発行した時点で、割り込みコントローラの方は、次の割り込みに備える事が可能になり、恐らく、入力データ取得(io_in8(PORT_KEYDAT))の際に、2バイト目の入力がある事を、キーボードコントローラが割り込みコントローラへ通知するでしょう。19:20:15そういうわけで、既に割り込みコントローラの方は、てぐすねひいて待ち構えている状態ですので、IRET命令により割り込み可能になった直後に、即座に2バイト目の割り込みが発生する事になります。19:21:01ですから「io_cli();に戻る前」については、たて続けに割り込みが発生している場合もあるので、必ずしもHariMainに戻ってくるとは限らず、よって、HariMain側の処理が一歩も前に進めない事も有り得ます。19:21:26このように、割り込み処理は、場合によっては通常処理を中断し続けてしまう事もあるので、「なるべく早く」が大事になりますし、また、どこで中断されても良いような考慮が必要になるというわけです。19:21:49らすかるさん、とてもよい説明をどうもありがとうございます。20:37:59少しでもお役に立てたのなら幸いです。20:51:541日目のasm.batが"有効なWin32アプリケーションではありません"と出てアセンブラ体験ができないです。17:52:37口うるさいようですが、まず、一度、ご自身で、どのような聞き方をされたら答え易いと思うか、考えてみて下さい。ご自身で、ご自身の質問に答えるつもりで考えて頂ければ、もう少し、工夫の余地があるように思います。23:52:12OSASKコミュニティが意地悪をしようとしているわけではなく、基本的には、出来る限り、皆さんの質問にお答えしようと考えていると思います。23:52:32今回の質問に関して、なるべく答えようと思い、まず、僕が調べた事は、一日目のどこにasm.batがあるかです。一日目の章は、手元の版ですと、P.14〜P28の14ページあります。当たりをつけて探してみましたが、ソースと共に掲載されているバッチファイルは、run.batとinstall.batのみでした。23:52:47一瞬、asm.batと書いてあるけど、間違いなんじゃないかな?とも思いましたが、もう一度、本文を良く読んでみると、P.25の5行目から説明がありました。あぁ、これの事か、と思いましたが、この時点で、気持ちが折れかけました。23:53:00この部分の説明によれば、「!consで開いたプロンプトで「asm」と入れるだけで、helloos.imgが生成されます。