ページへ戻る
印刷
hikarupsp
をテンプレートにして作成 ::
OSASK計画
osaskwiki
:hikarupsp をテンプレートにして作成
開始行:
#ls2(hikarupsp/)
*まずは自己紹介
-名前:hikarupsp(hikaruは本名)
-誕生日:1996年4月p日(pは素数)
-現在新宿区在住
理科とコンピューターを好む。
&br;ちなみに(理科>コンピューター)である。
&br;しかしOSと理科のどちらをより好むかは未定義である(おい...
&br;ゆえに、制作中のOSの名前がCHNOSProjectになりました。
*CHNOSProject
「30日で出来る!OS自作入門」の内容を基にしながら、できるだ...
**現状 rev.318現在
***できること
-メモリ管理
--しかし、つい先日重大なバグを発見&修正…大丈夫なのか?
-マルチタスク
-RS232Cシリアル通信(送信のみ)
-キーコード取得
--カーソルキーなどの拡張キーコードも認識します。
-仮想86モードの利用
--これを利用して、VBEの切り替えはプロテクトモードで行って...
&br;なので、画面モード番号は決め打ちでなく、起動時に取得...
-VBEを使用した多色対応
--8, 16, 32ビットに対応。
-シートの階層化及び自動色変換、透明色対応
--シートを入れ子にすることができます。
&br;また、自動色変換は、たとえば8ビット画面モードを利用し...
&br;透明色は、任意の色番号を透明色に指定する方法と共に、3...
-QEMU とBochs とMicrosoftVirtualPC2007(そしてたまに実機)...
--しかしエミュレーターはやはりエミュレーターでしかない(後...
***できないこと(やりたいこと)
-フロッピーディスクのBIOSによらない読み書き
-タスクの優先度管理
-サウンド対応
--ビープ音でMidi再生はそう遠くない(以前のバージョンで、適...
-ページングの活用
-半透明色の対応
**以下、適当に書いた計画案らしきもの。
CHNOSProject (案)
-命名理由 C,H,N,O,S,P それぞれは、元素記号で炭素、水素、...
&br;このことから、ユーザーの目的に応えられるように自ら進...
-構想
プログラマーにも、ユーザーにも、OSをOSと感じさせずに、ま...
--具体例
---分かりやすいシステム操作、エラーメッセージ、ヘルプ
---より体感的な操作を実現 重い処理の時はそれなりの早さを...
---システムはどんな場合も必ず上位に立ち、制御を失わない
---プログラムのインストールという概念を無くし、削除はフォ...
---エラー、バグ、ウイルスに負けない
---修復不能に陥っても、最低限の機能での動作を保証(物理的...
---どのOS、どのプログラムとも確実に互換性を保つ
---ハードウエアに合わせ、負荷を掛けすぎない
実現までの道はまだまだ遠いですが、よろしくお願いします。
更新は、主にsourceforge.jpで行うので、たまに見に行っても...
*エミュレーターのエミュレーション能力不足…
エミュレーターは便利です。そして素晴らしいソフトウエアだ...
&br;しかし、やはり実機や仕様と挙動が異なる場合が多々ある...
&br;そして時にそれは、開発者達を惑わせます。
**デバッグ例外に関すること
デバッグ例外は、CPUに用意された便利で強力な機能の一つです。
&br;指定されたアドレスのコードを実行したり、またはデータ...
&br;これは、メモリがいつの間にか破壊されていた!という心...
&br;#ええ、そうですとも。まさかメモリ管理システムがメモリ...
&br;…ということで、その素晴らしい機能を使ってデバッグしよ...
***1.QEMUとBochsではデバッグ例外が起きない
いきなりこの関門にぶち当たってしまいました。
&br;どうやら検索したところ、QEMUはKQEMUという高速化モジュ...
&br;Bochsに関しては、「エミュレーション速度は遅いけれど例...
&br;もしかすると、自分の設定ミスかと思い、VirtualPC2007で...
&br;すると…出ました。デバッグ例外。
&br;これで一安心、と思いきや、次なる関門が待ち受けていま...
***2.MicrosoftVirtualPC2007ではリターンアドレス(EIP)の指...
今回は、ある特定のアドレスにアクセスした命令をすべてリス...
&br;ということで、「紙に印刷したらきっと分厚い」IA-32 イ...
&br;このマニュアルが言うには、私が今求めている、指定アド...
&br;「プロセッサは、このアクセスを行った命令を実行した後...
&br;「トラップの場合-レジスタCSとEIP にセーブされている...
&br;つまり、単純にIRETDすれば、実行を再開できるはずだった...
&br;しかし…VirtualPC2007は
&br;「例外を発生させた命令自体を指すEIP」
&br;を保存していたのです…。
&br;なるほど、だからあんなに繰り返しシリアル出力にデバッ...
***…しょうがないので、こうしました。
+.mapファイルと.lstファイルを調べて、「例外を発生させた命...
&br;->その命令はMOV DWORD [EDX+EAX*4],EDI = 89 3C 82 = ...
&br;つまり、次の命令は「例外を発生させた命令自体を指すEIP...
+ということで、デバッグ例外ハンドラー内部で、EIP+=3とする...
&br;当然、3バイト以外の命令も例外を起こす可能性があるので...
&br;これでやっと、メモリを破壊していた犯人が…え?Memory_A...
&br;ということで、結末は先にお話しした通りです。
-わかったこと
--エミュレーターは完全ではない
--バグは根本的なところに潜んでいる
--それでもやっぱりエミュレーターがなければ解決できなかっ...
&br;…そもそもバグのあるコードを書いた私がいけないんですけ...
&br;ということで、めでたし、めでたし。
*hankaku.txtにカタカナを!
hankaku.txtに、半角カタカナを追加しました。きっと作るのは...
http://keihanna.dl.sourceforge.jp/chnosproject/45774/hank...
*右クリックして、「対象をファイルに保存」を選んでくださ...
適当に実装したので、文字が読みづらいですが…。
気に入らなかったら、改造しましょう。そのためのオープンソ...
ライセンスは、KL-01とします。
*352ページのコラムについて…
ある日、かの緑の本を読み返していて、352ページのコラムに、
「左シフト+右シフト+ASDF」は入力できない!!!!とあった...
QWER UIOPASDFGHJKL BNM(空白は、入力できなかった。)
つまり、TYZXCVが入力できませんでした!
なぜ、こんな中途半端なんだ…。
(使用したコンピューターは、SONYのVAIO、VGC-LJ91Sです。)
*リンク
はりぼてwiki内のページ
http://hrb.osask.jp/wiki/?hikarupsp
sourceforge.jp内のページ
http://sourceforge.jp/projects/chnosproject/
sourceforge.jp内のプロジェクトWiki(技術文書などを書いてあ...
http://chnosproject.sourceforge.jp/wiki/
終了行:
#ls2(hikarupsp/)
*まずは自己紹介
-名前:hikarupsp(hikaruは本名)
-誕生日:1996年4月p日(pは素数)
-現在新宿区在住
理科とコンピューターを好む。
&br;ちなみに(理科>コンピューター)である。
&br;しかしOSと理科のどちらをより好むかは未定義である(おい...
&br;ゆえに、制作中のOSの名前がCHNOSProjectになりました。
*CHNOSProject
「30日で出来る!OS自作入門」の内容を基にしながら、できるだ...
**現状 rev.318現在
***できること
-メモリ管理
--しかし、つい先日重大なバグを発見&修正…大丈夫なのか?
-マルチタスク
-RS232Cシリアル通信(送信のみ)
-キーコード取得
--カーソルキーなどの拡張キーコードも認識します。
-仮想86モードの利用
--これを利用して、VBEの切り替えはプロテクトモードで行って...
&br;なので、画面モード番号は決め打ちでなく、起動時に取得...
-VBEを使用した多色対応
--8, 16, 32ビットに対応。
-シートの階層化及び自動色変換、透明色対応
--シートを入れ子にすることができます。
&br;また、自動色変換は、たとえば8ビット画面モードを利用し...
&br;透明色は、任意の色番号を透明色に指定する方法と共に、3...
-QEMU とBochs とMicrosoftVirtualPC2007(そしてたまに実機)...
--しかしエミュレーターはやはりエミュレーターでしかない(後...
***できないこと(やりたいこと)
-フロッピーディスクのBIOSによらない読み書き
-タスクの優先度管理
-サウンド対応
--ビープ音でMidi再生はそう遠くない(以前のバージョンで、適...
-ページングの活用
-半透明色の対応
**以下、適当に書いた計画案らしきもの。
CHNOSProject (案)
-命名理由 C,H,N,O,S,P それぞれは、元素記号で炭素、水素、...
&br;このことから、ユーザーの目的に応えられるように自ら進...
-構想
プログラマーにも、ユーザーにも、OSをOSと感じさせずに、ま...
--具体例
---分かりやすいシステム操作、エラーメッセージ、ヘルプ
---より体感的な操作を実現 重い処理の時はそれなりの早さを...
---システムはどんな場合も必ず上位に立ち、制御を失わない
---プログラムのインストールという概念を無くし、削除はフォ...
---エラー、バグ、ウイルスに負けない
---修復不能に陥っても、最低限の機能での動作を保証(物理的...
---どのOS、どのプログラムとも確実に互換性を保つ
---ハードウエアに合わせ、負荷を掛けすぎない
実現までの道はまだまだ遠いですが、よろしくお願いします。
更新は、主にsourceforge.jpで行うので、たまに見に行っても...
*エミュレーターのエミュレーション能力不足…
エミュレーターは便利です。そして素晴らしいソフトウエアだ...
&br;しかし、やはり実機や仕様と挙動が異なる場合が多々ある...
&br;そして時にそれは、開発者達を惑わせます。
**デバッグ例外に関すること
デバッグ例外は、CPUに用意された便利で強力な機能の一つです。
&br;指定されたアドレスのコードを実行したり、またはデータ...
&br;これは、メモリがいつの間にか破壊されていた!という心...
&br;#ええ、そうですとも。まさかメモリ管理システムがメモリ...
&br;…ということで、その素晴らしい機能を使ってデバッグしよ...
***1.QEMUとBochsではデバッグ例外が起きない
いきなりこの関門にぶち当たってしまいました。
&br;どうやら検索したところ、QEMUはKQEMUという高速化モジュ...
&br;Bochsに関しては、「エミュレーション速度は遅いけれど例...
&br;もしかすると、自分の設定ミスかと思い、VirtualPC2007で...
&br;すると…出ました。デバッグ例外。
&br;これで一安心、と思いきや、次なる関門が待ち受けていま...
***2.MicrosoftVirtualPC2007ではリターンアドレス(EIP)の指...
今回は、ある特定のアドレスにアクセスした命令をすべてリス...
&br;ということで、「紙に印刷したらきっと分厚い」IA-32 イ...
&br;このマニュアルが言うには、私が今求めている、指定アド...
&br;「プロセッサは、このアクセスを行った命令を実行した後...
&br;「トラップの場合-レジスタCSとEIP にセーブされている...
&br;つまり、単純にIRETDすれば、実行を再開できるはずだった...
&br;しかし…VirtualPC2007は
&br;「例外を発生させた命令自体を指すEIP」
&br;を保存していたのです…。
&br;なるほど、だからあんなに繰り返しシリアル出力にデバッ...
***…しょうがないので、こうしました。
+.mapファイルと.lstファイルを調べて、「例外を発生させた命...
&br;->その命令はMOV DWORD [EDX+EAX*4],EDI = 89 3C 82 = ...
&br;つまり、次の命令は「例外を発生させた命令自体を指すEIP...
+ということで、デバッグ例外ハンドラー内部で、EIP+=3とする...
&br;当然、3バイト以外の命令も例外を起こす可能性があるので...
&br;これでやっと、メモリを破壊していた犯人が…え?Memory_A...
&br;ということで、結末は先にお話しした通りです。
-わかったこと
--エミュレーターは完全ではない
--バグは根本的なところに潜んでいる
--それでもやっぱりエミュレーターがなければ解決できなかっ...
&br;…そもそもバグのあるコードを書いた私がいけないんですけ...
&br;ということで、めでたし、めでたし。
*hankaku.txtにカタカナを!
hankaku.txtに、半角カタカナを追加しました。きっと作るのは...
http://keihanna.dl.sourceforge.jp/chnosproject/45774/hank...
*右クリックして、「対象をファイルに保存」を選んでくださ...
適当に実装したので、文字が読みづらいですが…。
気に入らなかったら、改造しましょう。そのためのオープンソ...
ライセンスは、KL-01とします。
*352ページのコラムについて…
ある日、かの緑の本を読み返していて、352ページのコラムに、
「左シフト+右シフト+ASDF」は入力できない!!!!とあった...
QWER UIOPASDFGHJKL BNM(空白は、入力できなかった。)
つまり、TYZXCVが入力できませんでした!
なぜ、こんな中途半端なんだ…。
(使用したコンピューターは、SONYのVAIO、VGC-LJ91Sです。)
*リンク
はりぼてwiki内のページ
http://hrb.osask.jp/wiki/?hikarupsp
sourceforge.jp内のページ
http://sourceforge.jp/projects/chnosproject/
sourceforge.jp内のプロジェクトWiki(技術文書などを書いてあ...
http://chnosproject.sourceforge.jp/wiki/
ページ名: