 |
| 30日でできる! OS自作入門 |
 |
 |
Chapter0 [ゼロ日目] 開発を始める前に
1 はじめに
2 OSってなんだろう?
3 OSの作り方のいろいろ
4 無知なら無知でいいじゃないか
5 OSを作るにはどうしたらいいの?
6 OSを作るときの苦労
7 1章以降を読むにあたって(重要!)
8 今後の話の流れ
Chapter1 [一日目] PCの仕組みからアセンブラ入門まで
1 とにかくやるのだぁ
2 結局何をやったのだろうか?
3 アセンブラ初体験
4 もうちょっと書き直してみる
Chapter2 [二日目] アセンブラ学習とMakefile入門
1 まずはテキストエディタの紹介
2 さて開発再開
3 ブートセクタだけを作るように整理
4 今後のためにMakefile導入
Chapter3 [三日目] 32ビットモード突入とC言語導入
1 さあ本当のIPLを作ろう
2 エラーになったらやり直そう
3 18セクタまで読んでみる
4 10シリンダ分を読み込んでみる
5 OS本体を書き始めてみる
6 ブートセクタからOS本体を実行させてみる
7 OS本体の動作を確認してみる
8 32ビットモードへの準備
9 ついにC言語導入へ
10 とにかくHLTしたい (hairb00)
Chapter4 [四日目] C言語と画面表示の練習
1 C言語からメモリに書き込みたい (hairb01a)
2 しましま模様 (hairb01b)
3 ポインタに挑戦 (hairb01c)
4 ポインタの応用(1) (hairb01d)
5 ポインタの応用(2) (hairb01e)
6 色番号設定 (hairb01f)
7 四角形を描く (hairb01g)
8 今日の仕上げ (hairb01h)
Chapter5 [五日目] 構造体と文字表示とGDT/IDT初期化
1 起動情報の受け取り (hairb02a)
2 構造体を使ってみる (hairb02b)
3 矢印表記を使ってみる (hairb02c)
4 とにかく文字を出したい (hairb02d)
5 フォントを増やしたい (hairb02e)
6 文字列を書きたい (hairb02f)
7 変数の値の表示 (hairb02g)
8 マウスカーソルも描いてみよう (hairb02h)
9 GDTとIDTを初期化しよう (hairb02i)
Chapter6 [六日目] 分割コンパイルと割り込み処理
1 ソースファイル分割 (hairb03a)
2 Makefile整理 (hairb03b)
3 ヘッダファイル整備 (hairb03c)
4 やり残した説明
5 PIC初期化 (hairb03d)
6 割り込みハンドラ作成 (hairb03e)
Chapter7 [七日目] FIFOとマウス制御
1 キーコードを取得しよう (hairb04a)
2 割り込み処理は手早く (hairb04b)
3 FIFOバッファを作る (hairb04c)
4 FIFOバッファを改良する (hairb04d)
5 FIFOバッファを整理する (hairb04e)
6 さあマウスだ (hairb04f)
7 マウスからのデータ受信 (hairb04g)
Chapter8 [八日目] マウス制御と32ビットモード切り替え
1 マウスの解読(1) (hairb05a)
2 ちょっと整理 (hairb05b)
3 マウスの解読(2) (hairb05c)
4 動けマウス (hairb05d)
5 32ビットモードへの道
Chapter9 [九日目] メモリ管理
1 ソースの整理 (hairb06a)
2 メモリ容量チェック(1) (hairb06b)
3 メモリ容量チェック(2) (hairb06c)
4 メモリ管理に挑戦 (hairb06d)
Chapter10 [十日目] 重ね合わせ処理
1 メモリ管理の続き (hairb07a)
2 重ね合わせ処理 (hairb07b)
3 重ね合わせ処理の高速化(1) (hairb07c)
4 重ね合わせ処理の高速化(2) (hairb07d)
Chapter11 [十一日目] ついにウィンドウ
1 もっとマウス (hairb08a)
2 画面外サポート (hairb08b)
3 shtctlの指定省略 (hairb08c)
4 ウィンドウを出してみよう (hairb08d)
5 少し遊んでみる (hairb08e)
6 高速カウンタだぁ (hairb08f)
7 チラチラ解消(1) (hairb08g)
8 チラチラ解消(2) (hairb08h)
Chapter12 [十二日目] タイマ-1
1 タイマを使おう (hairb09a)
2 時間をはかってみよう (hairb09b)
3 タイムアウト機能 (hairb09c)
4 複数のタイマを (hairb09d)
5 割り込み処理は短く(1) (hairb09e)
6 割り込み処理は短く(2) (hairb09f)
7 割り込み処理は短く(3) (hairb09g)
Chapter13 [十三日目] タイマ-2
1 文字列表示を簡単に (hairb10a)
2 FIFOバッファを見直す(1) (hairb10b)
3 性能を測定してみる (hairb10c〜hairb10f)
4 FIFOバッファを見直す(2) (hairb10g)
5 割り込み処理は短く(4) (hairb10h)
6 番兵を使ってプログラムを短くしてみる (hairb10i)
Chapter14 [十四日目] 高解像度・キー入力
1 また性能を測定してみる (hairb11a〜hairb11c)
2 高解像度にしよう(1) (hairb11d)
3 高解像度にしよう(2) (hairb11e)
4 キー入力(1) (hairb11f)
5 キー入力(2) (hairb11g)
6 おまけ(1) (hairb11h)
7 おまけ(2) (hairb11i)
Chapter15 [十五日目] マルチタスク-1
1 タスクスイッチに挑戦 (hairb12a)
2 もっとタスクスイッチ (hairb12b)
3 簡単なマルチタスクをやってみる(1) (hairb12c)
4 簡単なマルチタスクをやってみる(2) (hairb12d)
5 スピードアップ (hairb12e)
6 スピード測定 (hairb12f)
7 もっとマルチタスク (hairb12g)
Chapter16 [十六日目] マルチタスク-2
1 タスク管理の自動化 (hairb13a)
2 スリープしてみる (hairb13b)
3 ウィンドウを増やそう (hairb13c)
4 優先順位をつけよう(1) (hairb13d)
5 優先順位をつけよう(2) (hairb13e)
Chapter17 [十七日目] コンソール
1 アイドルタスク (hairb14a)
2 コンソールを作ろう (hairb14b)
3 入力切り替えをやってみる (hairb14c)
4 文字入力をできるようにしてみる (hairb14d)
5 記号入力 (hairb14e)
6 大文字と小文字 (hairb14f)
7 Lockキー対応 (hairb14g)
Chapter18 [十八日目] dirコマンド
1 カーソル点滅制御(1) (hairb15a)
2 カーソル点滅制御(2) (hairb15b)
3 Enterキーに対応 (hairb15c)
4 スクロールにも対応 (hairb15d)
5 memコマンド (hairb15e)
6 clsコマンド (hairb15f)
7 dirコマンド (hairb15g)
Chapter19 [十九日目] アプリケーション
1 typeコマンド (hairb16a)
2 typeコマンド改良 (hairb16b)
3 FATに対応 (hairb16c)
4 ソースの整理 (hairb16d)
5 ついに初アプリ (hairb16e)
Chapter20 [二十日目] API
1 プログラムの整理 (hairb17a)
2 一文字表示API(1) (hairb17b)
3 一文字表示API(2) (hairb17c)
4 アプリケーションの終了 (hairb17d)
5 OSのバージョンが変わっても変わらないAPI (hairb17e)
6 アプリケーション名を自由に (hairb17f)
7 レジスタに気をつけよう (hairb17g)
8 文字列表示API (hairb17h)
Chapter21 [二十一日目] OSを守ろう
1 文字列表示APIを今度こそ (hairb18a)
2 アプリケーションをC言語で作ってみたい (hairb18b)
3 OSを守ろう(1) (hairb18c)
4 OSを守ろう(2) (hairb18d)
5 例外をサポートしよう (hairb18e)
6 OSを守ろう(3) (hairb18f)
7 OSを守ろう(4) (hairb18g)
Chapter22 [二十二日目] C言語でアプリケーションを作ろう
1 OSを守ろう(5) (hairb19a)
2 バグ発見を手伝おう (hairb19b)
3 アプリの強制終了 (hairb19c)
4 C言語で文字列表示(1) (hairb19d)
5 C言語で文字列表示(2) (hairb19e)
6 ウィンドウを出そう (hairb19f)
7 ウィンドウに文字や四角を描こう (hairb19g)
Chapter23 [二十三日目] グラフィックいろいろ
1 mallocを作ろう (hairb20a)
2 点を描く (hairb20b)
3 ウィンドウのリフレッシュ (hairb20c)
4 線を引く (hairb20d)
5 ウィンドウのクローズ (hairb20e)
6 キー入力のAPI (hairb20f)
7 キー入力で遊ぶ (hairb20g)
8 強制終了でウィンドウを閉じる (hairb20h)
Chapter24 [二十四日目] ウィンドウ操作
1 ウィンドウの切り替え(1) (hairb21a)
2 ウィンドウの切り替え(2) (hairb21b)
3 ウィンドウの移動 (hairb21c)
4 ウィンドウをマウスで閉じる (hairb21d)
5 アプリケーションウィンドウも入力切り替え (hairb21e)
6 入力ウィンドウをマウスで切り替える (hairb21f)
7 タイマAPI (hairb21g)
8 タイマのキャンセル (hairb21h)
Chapter25 [二十五日目] コンソールを増やそう
1 BEEPサウンド (hairb22a)
2 色を増やそう(1) (hairb22b)
3 色を増やそう(2) (hairb22c)
4 ウィンドウの初期位置 (hairb22d)
5 コンソールを増やそう(1) (hairb22e)
6 コンソールを増やそう(2) (hairb22f)
7 コンソールを増やそう(3) (hairb22g)
8 コンソールを増やそう(4) (hairb22h)
9 もっとOSらしく(1) (hairb22i)
10 もっとOSらしく(2) (hairb22j)
Chapter26 [二十六日目] ウィンドウ移動の高速化
1 ウィンドウ移動を速く(1) (hairb23a)
2 ウィンドウ移動を速く(2) (hairb23b)
3 ウィンドウ移動を速く(3) (hairb23c)
4 ウィンドウ移動を速く(4) (hairb23d)
5 最初のコンソールを1つに (hairb23e)
6 コンソールをもっとたくさん (hairb23f)
7 コンソールを閉じる(1) (hairb23g)
8 コンソールを閉じる(2) (hairb23h)
9 startコマンド (hairb23i)
10 ncstコマンド (hairb23j)
Chapter27 [二十七日目] LDTとライブラリ
1 まずはバグを直そう (hairb24a)
2 アプリ実行中でもコンソールを閉じたい (hairb24b)
3 アプリケーションを守ろう(1) (hairb24c)
4 アプリケーションを守ろう(2) (hairb24d)
5 アプリケーションのサイズ改善 (hairb24e)
6 ライブラリ (hairb24f)
7 make環境の整理 (hairb24g)
Chapter28 [二十八日目] ファイルと日本語表示
1 alloca(1) (hairb25a)
2 alloca(2) (hairb25b)
3 ファイルAPI (hairb25c)
4 コマンドラインAPI (hairb25d)
5 日本語表示(1) (hairb25e)
6 日本語表示(2) (hairb25f)
7 日本語表示(3) (hairb25g)
Chapter29 [二十九日目] 圧縮と簡単なアプリケーション
1 バグ修正 (hairb26a)
2 ファイル圧縮 (hairb26b)
3 標準関数
4 非矩形ウィンドウ (hairb26c)
5 bball (hairb26d)
6 インベーダゲーム (hairb26e)
Chapter30 [三十日目] 高度なアプリケーション
1 コマンドライン計算機 (hairb27a)
2 テキストビューア (hairb27b)
3 MMLプレイヤ (hairb27c)
4 画像ビューア (hairb27d)
5 IPLの改良 (hairb27e)
6 CD-ROM起動 (hairb27f)
Chapter31 [三十一日目] 開発を終えた後で
1 この先を作るのはみなさんです
2 OSの大きさについて
3 OS作りがうまくなるコツ
4 他の人に使ってもらうのなら
5 CD-ROM内のソフトウェアについて
6 オープンソースのすすめ
7 あとがき
8 お別れ(卒業式)
9 付録
コラム
1 データも「実行」できる? 機械語も「表示」できる
2 キャストを使えばpなんて使わなくてもいい?
3 やっぱりポインタが分からないよ〜
4 p[i]って配列?
5 構造体の簡単な説明
6 10進数での切り捨ては?
7 起動3秒後にcountを0にするわけ
8 こんな小さな改善に意味があるの?
9 returnしてはいけない?
10 キーボードの仕様?
11 FATの圧縮
12 これでOS自作入門だなんてケシカラン! |
 |
 |
|
|
|