30日でできる!OS自作入門


30日でできる! OS自作入門


マイナビ


著者:川合秀実


まえがき

Chapter 0 開発を始める前に
1 はじめに
2 OSってなんだろう?
3 OSの作り方のいろいろ
4 無知なら無知でいいじゃないか
5 OSを作るにはどうしたらいいの?
6 OSを作るときの苦労
7 1章以降を読むにあたって(重要!)
8 今後の話の流れ

Chapter 1 PCの仕組みからアセンブラ入門まで
1 とにかくやるのだぁ
2 結局何をやったのだろうか?
3 アセンブラ初体験
4 もうちょっと書き直してみる

Chapter 2 アセンブラ学習とMakefile入門
1 まずはテキストエディタの紹介
2 され開発再開
3 ブートセクタだけを作るように整理
4 今後のためにMakefile導入

Chapter 3 32ビットモード突入とC言語導入
1 さあ本当のIPLを作ろう
2 エラーになったらやり直そう
3 18セクタまで読んでみる
4 10シリンダ分を読み込んでみる
5 OS本体を書き始めてみる
6 ブートセクタからOS本体を実行させてみる
7 OS本体の動作を確認してみる
8 32ビットモードへの準備
9 ついにC言語導入
10 とにかくHLTしたい(harib00j)

Chapter 4 C言語と画面表示の練習
1 C言語からメモリに書き込みたい(harib01a)
2 しましま模様(harib01b)
3 ポインタに挑戦(harib01c)
4 ポインタの応用(1)(harib01d)
5 ポインタの応用(2)(harib01e)
6 色番号設定(harib01f)
7 四角形を描く(harib01g)
8 今日の仕上げ(harib01h)

Chapter 5 構造体と文字表示とGTD/IDT初期化
1 起動情報の受け取り(harib02a)
2 構造体を使ってみる(harib02b)
3 矢印表記を使ってみる(harib02c)
4 とにかく文字を出したい(harib02d)
5 フォントを増やしたい(harib02e)
6 文字列を描きたい(harib02f)
7 変数の値を表示(harib02g)
8 マウスカーソルを描いてみよう(harib02h)
9 GDTとIDTを初期化しよう(harib02i)

Chapter 6 分割コンパイラと割り込み処理
1 ソースファイル分割(harib03a)
2 Makefile整理(harib03b)
3 ヘッダファイル整備(harib03c)
4 やり残した説明
5 PIC初期化(harib03d)
6 割り込みハンドラ作成(harib03e)

Chapter 7 FIFOとマウス制御
1 キーコードを取得しよう(harib04a)
2 割り込み処理は手早く(harib04b)
3 FIFOバッファを作る(harib04c)
4 FIFOバッファを改良する(harib04d)
5 FIFOバッファを整理する(harib04e)
6 さあマウスだ(harib04f)
7 マウスからのデータ受信(harib04g)

Chapter 8 マウス制御と32ビットモード切り替え
1 マウスの解読(1)(harib05a)
2 ちょっと整理(harib05b)
3 マウスの解読(2)(harib05c)
4 動けマウス(harib05d)
5 32ビットモードへの道

Chapter 9 メモリ管理
1 ソースの管理(harib06a)
2 メモリ容量チェック(1)(harib06b)
3 メモリ容量チェック(2)(harib06c)
4 メモリ管理に挑戦(harib06d)

Chapter 10 重ね合わせ処理
1 メモリ管理の続き(harib07a)
2 重ね合わせ処理(harib07b)
3 重ね合わせ処理の高速化(1)(harib07c)
4 重ね合わせ処理の高速化(2)(harib07d)

Chapter 11 ついにウインドウ
1 もっとマウス(harib08a)
2 画面外サポート(harib08b)
3 shtctlの指定省略(harib08c)
4 ウィンドウを出してみよう(harib08d)
5 少し遊んでみる(harib08e)
6 高速カウンタだぁ(harib08f)
7 チラチラ解消(1)(harib08g)
8 チラチラ解消(2)(harib08h)

Chapter 12 タイマ-1
1 タイマを使おう(harib09a)
2 時間をはかってみよう(harib09b)
3 タイムアウト機能(harib09c)
4 複数のタイマを(harib09d)
5 割り込み処理は短く(1)(harib09e)
6 割り込み処理は短く(2)(harib09f)
7 割り込み処理は短く(3)(harib09g)

Chapter 13 タイマ-2
1 文字列表示を簡単に(harib10a)
2 FIFOバッファを見直す(1)(harib10b)
3 性能を測定してみる(harib10c~harib10f)
4 FIFOバッファを見直す(2)(harib10g)
5 割り込み処理は短く(4)(harib10h)
6 番兵を使ってプログラムを短くしてみる(harib10i)

Chapter 14 高解像度・キー入力
1 また性能を測定してみる(harib11a~harib10c)
2 高解像度にしよう(1)(harib11d)
3 高解像度にしよう(2)(harib11e)
4 キー入力(1)(harib11f)
5 キー入力(2)(harib11g)
6 おまけ(1)(harib11h)
7 おまけ(2)(harib11i)

Chapter 15 マルチタスク-1
1 タスクスイッチに挑戦(harib12a)
2 もっとタスクスイッチ(harib12b)
3 簡単なマルチタスクをやってみる(1)(harib12c)
4 簡単なマルチタスクをやってみる(2)(harib12d)
5 スピードアップ(harib12e)
6 スピード測定(harib12f)
7 もっとマルチタスク(harib12g)

Chapter 16 マルチタスク-2
1 タスク管理の自動化(harib13a)
2 スリープしてみる(harib13b)
3 ウィンドウを増やそう(harib13c)
4 優先順位をつけよう(1)(harib13d)
5 優先順位をつけよう(2)(harib13e)

Chapter 17 コンソール
1 アイドルタスク(harib14a)
2 コンソールを作ろう(harib14b)
3 入力切り替えをやってみる(harib14c)
4 文字入力をできるようにしてみる(harib14d)
5 記号入力(harib14e)
6 大文字と小文字(harib14f)
7 Lockキー対応(harib14g)

Chapter 18 dirコマンド
1 カーソル点滅制御(1)(harib15a)
2 カーソル点滅制御(2)(harib15b)
3 Enterキーに対応(harib15c)
4 スクロールにも対応(harib15d)
5 memコマンド(harib15e)
6 clsコマンド(harib15f)
7 dirコマンド(harib15g)

Chapter 19 アプリケーション
1 typeコマンド(harib16a)
2 typeコマンド改良(harib16b)
3 FATに対応(harib16c)
4 ソースの整理(harib16d)
5 ついに初アプリ(harib16e)

Chapter 20 API
1 プログラムの整理(harib17a)
2 一文字表示API(1)(harib17b)
3 一文字表示API(2)(harib17c)
4 アプリケーションの終了(harib17d)
5 OSのバージョンが変わっても変わらないAPI(harib17e)
6 アプリケーション名を自由に(harib17f)
7 レジスタに気をつけよう(harib17g)
8 文字列表示API(harib17h)

Chapter 21 OSを守ろう
1 文字列表示APIを今度こそ(harib18a)
2 アプリケーションをC言語で作ってみたい(harib18b)
3 OSを守ろう(1)(harib18c)
4 OSを守ろう(2)(harib18d)
5 例外をサポートしよう(harib18e)
6 OSを守ろう(3)(harib18f)
7 OSを守ろう(4)(harib18g)

Chapter 22 C言語でアプリケーションを作ろう
1 OSを守ろう(5)(harib19a)
2 バグ発見を手伝おう(harib19b)
3 アプリの強制終了(harib19c)
4 C言語で文字列表示(1)(harib19d)
5 C言語で文字列表示(2)(harib19e)
6 ウィンドウを出そう(harib19f)
7 ウィンドウに文字や四角を描こう(harib19g)

Chapter 23 グラフィックいろいろ
1 mallocを作ろう(harib20a)
2 点を描く(harib20b)
3 ウィンドウのリフレッシュ(harib20c)
4 線を引く(harib20d)
5 ウィンドウのクローズ(harib20e)
6 キー入力のAPI(harib20f)
7 キー入力で遊ぶ(harib20g)
8 強制終了でウィンドウを閉じる(harib20h)

Chapter 24 ウィンドウ操作
1 ウィンドウの切り替え(1)(harib21a)
2 ウィンドウの切り替え(2)(harib21b)
3 ウィンドウの移動(harib21c)
4 ウィンドウをマウスで閉じる(harib21d)
5 アプリケーションウィンドウも入力切り替え(harib21e)
6 入力ウィンドウをマウスで切り替える(harib21f)
7 タイマAPI(harib21g)
8 タイマのキャンセル(harib21h)

Chapter 25 コンソールを増やそう
1 BEEPサウンド(harib22a)
2 色を増やそう(1)(harib22b)
3 色を増やそう(2)(harib22c)
4 ウィンドウの初期位置(harib22d)
5 コンソールを増やそう(1)(harib22e)
6 コンソールを増やそう(2)(harib22f)
7 コンソールを増やそう(3)(harib22g)
8 コンソールを増やそう(4)(harib22h)
9 もっとOSらしく(1)(harib22i)
10 もっとOSらしく(2)(harib22j)

Chapter 26 ウィンドウ移動の高速化
1 ウィンドウ移動を速く(1)(harib23a)
2 ウィンドウ移動を速く(2)(harib23b)
3 ウィンドウ移動を速く(3)(harib23c)
4 ウィンドウ移動を速く(4)(harib23d)
5 最初のコンソールを1つに(harib23e)
6 コンソールをもっとたくさん(harib23f)
7 コンソールを閉じる(1)(harib23g)
8 コンソールを閉じる(2)(harib23h)
9 startコマンド(harib23i)
10 ncstコマンド(harib23j)

Chapter 27 LDTとライブラリ
1 まずはバグを直そう(harib24a)
2 アプリ実行中でもコンソールを閉じたい(harib24b)
3 アプリケーションを守ろう(1)(harib24c)
4 アプリケーションを守ろう(2)(harib24d)
5 アプリケーションのサイズ改善(harib24e)
6 ライブラリ(harib24f)
7 make環境の整理(harib24g)

Chapter 28 ファイルと日本語表示
1 alloca(1)(harib25a)
2 alloca(2)(harib25b)
3 ファイルAPI(harib25c)
4 コマンドラインAPI(harib25d)
5 日本語表示(1)(harib25e)
6 日本語表示(2)(harib25f)
7 日本語表示(3)(harib25g)

Chapter 29 圧縮と簡単なアプリケーション
1 バグ修正(harib26a)
2 ファイル圧縮(harib26b)
3 標準関数(harib26c)
4 非矩形ウィンドウ(harib26d)
5 bball(harib26e)
6 インベーダゲーム(harib26f)

Chapter 30 高度なアプリケーション
1 コマンドライン計算機(harib27a)
2 テキストビューア(harib27b)
3 MMLプレイヤ(harib27c)
4 画像ビューア(harib27d)
5 IPLの改良(harib27e)
6 CD-ROM起動(harib27f)

Chapter 31 開発を終えた後で
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自作入門だなんてケシカラン!

書籍目次

Posted by shi-n