http://book.mycom.co.jp/book/4-8399-1984-4/4-8399-1984-4.shtml

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

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

CD-ROM付き


・著者:川合秀実
・予価:3,990円(税込)
・B5変型判 722ページ
・ISBN4-8399-1984-4
・発売日:2006年02月下旬

■内容紹介
プログラミングの基礎からはじめて、30日後にはウィンドウシステムを有する32bitマルチタスクOSをフルスクラッチで作り上げるという入門書。ビギナーでも無理なく作成できるようPCの仕組み・アセンブラ・Cの解説から始まり、試行錯誤を繰り返しながらアルゴリズムを学びつつ、たのしく自由な雰囲気でOSをゼロから構築していくという、他に類を見ない手法による、趣味と実用と学習を兼ね備えたOS作成の入門書です。


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したい

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

Chapter5[五日目] 構造体と文字表示とGDT/IDT初期化
 1 起動情報の受け取り
 2 構造体を使ってみる
 3 矢印表記を使ってみる
 4 とにかく文字を出したい
 5 フォントを増やしたい
 6 文字列を書きたい
 7 変数の値の表示
 8 マウスカーソルも描いてみよう
 9 GDTとIDTを初期化しよう

Chapter6[六日目] 分割コンパイルと割り込み処理
 1 ソースファイル分割
 2 Makefile整理
 3 ヘッダファイル整備
 4 やり残した説明
 5 PIC初期化
 6 割り込みハンドラ作成

Chapter7[七日目] FIFOとマウス制御
 1 キーコードを取得しよう
 2 割り込み処理は手早く
 3 FIFOバッファを作る
 4 FIFOバッファを改良する
 5 FIFOバッファを整理する
 6 さあマウスだ
 7 マウスからのデータ受信

Chapter8[八日目] マウス制御と32ビットモード切り替え
 1 マウスの解読(1)
 2 ちょっと整理
 3 マウスの解読(2)
 4 動けマウス
 5 32ビットモードへの道

Chapter9[九日目] メモリ管理
 1 ソースの整理
 2 メモリ容量チェック(1)
 3 メモリ容量チェック(2)
 4 メモリ管理に挑戦

Chapter10[十日目] 重ね合わせ処理
 1 メモリ管理の続き
 2 重ね合わせ処理
 3 重ね合わせ処理の高速化(1)
 4 重ね合わせ処理の高速化(2)

Chapter11[十一日目] ついにウィンドウ
 1 もっとマウス
 2 画面外サポート
 3 shtctlの指定省略
 4 ウィンドウを出してみよう
 5 少し遊んでみる
 6 高速カウンタだぁ
 7 チラチラ解消(1)
 8 チラチラ解消(2)

Chapter12[十二日目] タイマ-1
 1 タイマを使おう
 2 時間をはかってみよう
 3 タイムアウト機能
 4 複数のタイマを
 5 割り込み処理は短く(1)
 6 割り込み処理は短く(2)
 7 割り込み処理は短く(3)

Chapter13[十三日目] タイマ-2
 1 文字列表示を簡単に
 2 FIFOバッファを見直す(1)
 3 性能を測定してみる
 4 FIFOバッファを見直す(2)
 5 割り込み処理は短く(4)
 6 番兵を使ってプログラムを短くしてみる

Chapter14[十四日目] 高解像度・キー入力
 1 また性能を測定してみる
 2 高解像度にしよう(1)
 3 高解像度にしよう(2)
 4 キー入力(1)
 5 キー入力(2)
 6 おまけ(1)
 7 おまけ(2)

Chapter15[十五日目] マルチタスク-1
 1 タスクスイッチに挑戦
 2 もっとタスクスイッチ
 3 簡単なマルチタスクをやってみる(1)
 4 簡単なマルチタスクをやってみる(2)
 5 スピードアップ
 6 スピード測定
 7 もっとマルチタスク

Chapter16[十六日目] マルチタスク-2
 1 タスク管理の自動化
 2 スリープしてみる
 3 ウィンドウを増やそう
 4 優先順位をつけよう(1)
 5 優先順位をつけよう(2)

Chapter17[十七日目] コンソール
 1 アイドルタスク
 2 コンソールを作ろう
 3 入力切り替えをやってみる
 4 文字入力をできるようにしてみる
 5 記号入力
 6 大文字と小文字
 7 Lockキー対応

Chapter18[十八日目] dirコマンド
 1 カーソル点滅制御(1)
 2 カーソル点滅制御(2)
 3 Enterキーに対応
 4 スクロールにも対応
 5 memコマンド
 6 clsコマンド
 7 dirコマンド

Chapter19[十九日目] アプリケーション
 1 typeコマンド
 2 typeコマンド改良
 3 FATに対応
 4 ソースの整理
 5 ついに初アプリ

Chapter20[二十日目] API
 1 プログラムの整理
 2 一文字表示API(1)
 3 一文字表示API(2)
 4 アプリケーションの終了
 5 OSのバージョンが変わっても変わらないAPI
 6 アプリケーション名を自由に
 7 レジスタに気をつけよう
 8 文字列表示API

Chapter21[二十一日目] OSを守ろう
 1 文字列表示APIを今度こそ
 2 アプリケーションをC言語で作ってみたい
 3 OSを守ろう(1)
 4 OSを守ろう(2)
 5 例外をサポートしよう
 6 OSを守ろう(3)
 7 OSを守ろう(4)

Chapter22[二十二日目] C言語でアプリケーションを作ろう
 1 OSを守ろう(5)
 2 バグ発見を手伝おう
 3 アプリの強制終了
 4 C言語で文字列表示(1)
 5 C言語で文字列表示(2)
 6 ウィンドウを出そう
 7 ウィンドウに文字や四角を描こう

Chapter23[二十三日目] グラフィックいろいろ
 1 mallocを作ろう
 2 点を描く
 3 ウィンドウのリフレッシュ
 4 線を引く
 5 ウィンドウのクローズ
 6 キー入力のAPI
 7 キー入力で遊ぶ
 8 強制終了でウィンドウを閉じる

Chapter24[二十四日目] ウィンドウ操作
 1 ウィンドウの切り替え(1)
 2 ウィンドウの切り替え(2)
 3 ウィンドウの移動
 4 ウィンドウをマウスで閉じる
 5 アプリケーションウィンドウも入力切り替え
 6 入力ウィンドウをマウスで切り替える
 7 タイマAPI
 8 タイマのキャンセル

Chapter25[二十五日目] コンソールを増やそう
 1 BEEPサウンド
 2 色を増やそう(1)
 3 色を増やそう(2)
 4 ウィンドウの初期位置
 5 コンソールを増やそう(1)
 6 コンソールを増やそう(2)
 7 コンソールを増やそう(3)
 8 コンソールを増やそう(4)
 9 もっとOSらしく(1)
 10 もっとOSらしく(2)

Chapter26[二十六日目] ウィンドウ移動の高速化
 1 ウィンドウ移動を速く(1)
 2 ウィンドウ移動を速く(2)
 3 ウィンドウ移動を速く(3)
 4 ウィンドウ移動を速く(4)
 5 最初のコンソールを1つに
 6 コンソールをもっとたくさん
 7 コンソールを閉じる(1)
 8 コンソールを閉じる(2)
 9 startコマンド
 10 ncstコマンド

Chapter27[二十七日目] LDTとライブラリ
 1 まずはバグを直そう
 2 アプリ実行中でもコンソールを閉じたい
 3 アプリケーションを守ろう(1)
 4 アプリケーションを守ろう(2)
 5 アプリケーションのサイズ改善
 6 ライブラリ
 7 make環境の整理

Chapter28[二十八日目] ファイルと日本語表示
 1 alloca(1)
 2 alloca(2)
 3 ファイルAPI
 4 コマンドラインAPI
 5 日本語表示(1)
 6 日本語表示(2)
 7 日本語表示(3)

Chapter29[二十九日目] 圧縮と簡単なアプリケーション
 1 バグ修正
 2 ファイル圧縮
 3 標準関数
 4 非矩形ウィンドウ
 5 bball
 6 インベーダゲーム

Chapter30[三十日目] 高度なアプリケーション
 1 コマンドライン計算機
 2 テキストビューア
 3 MMLプレイヤ
 4 画像ビューア
 5 IPLの改良
 6 CD-ROM起動

Chapter31[三十一日目] 開発を終えた後で
 1 この先を作るのはみなさんです
 2 OSの大きさについて
 3 OS作りがうまくなるコツ
 4 他の人に使ってもらうのなら
 5 CD-ROM内のソフトウェアについて
 6 オープンソースのすすめ
 7 あとがき
 8 お別れ(卒業式)
 9 付録