第0天 着手开发之前 1
1前言 1
2何谓操作系统 3
3开发操作系统的各种方法 4
4无知则无畏 4
5如何开发操作系统 6
6操作系统开发中的困难 7
7学习本书时的注意事项(重要!) 9
8各章内容摘要 11
第1天 从计算机结构到汇编程序入门 13
1先动手操作 13
2究竟做了些什么 19
3初次体验汇编程序 22
4加工润色 24
第2天 汇编语言学习与Makefiile入门 28
1介绍文本编辑器 28
2继续开发 29
3先制作启动区 40
4 Makefile入门 41
第3天 进入32位模式并导入C语言 45
1制作真正的IPL 45
2试错 50
3读到18扇区 51
4读入10个柱面 52
5着手开发操作系统 54
6从启动区执行操作系统 55
7确认操作系统的执行情况 56
8 32位模式前期准备 57
9开始导入C语言 59
10实现HLT(harib00j) 62
第4天C语言与画面显示的练习 64
1用C语言实现内存写入(harib01a) 64
2条纹图案(harib01b) 67
3挑战指针(harib01c) 69
4指针的应用(1)harib01d) 74
5指针的应用(2 harib01e) 74
6色号设定(harib01f 75
7绘制矩形(harib01g) 84
8今天的成果(harib01h 86
第5天 结构体、文字显示与GDT/IDT 初始化 88
1接收启动信息(harib02a 88
2试用结构体(harib02b) 89
3试用箭头记号(harib02c) 91
4显示字符(harib02d) 91
5增加字体(harib02e) 94
6显示字符串(harib02f 96
7显示变量值(harib02g) 97
8显示鼠标指针(harib02h) 99
9 GDT与IDT的初始化(harib02i) 101
第6天 分割编译与中断处理 108
1分割源文件(harib03a) 108
2整理Makefile(harib03b) 109
3整理头文件(harib03c) 110
4意犹未尽 112
5初始化PIC(harib03 d) 115
6中断处理程序的制作(harib03e) 119
第7天FIFO与鼠标控制 125
1获取按键编码(hiarib04a) 125
2加快中断处理(hiarib04b) 127
3制作FIFO缓冲区(hiarib04c 130
4改善FIFO缓冲区(hiarib04d 133
5整理FIFO缓冲区(hiarib04e 135
6总算讲到鼠标了(harib04f 138
7从鼠标接受数据(harib04g) 141
第8天 鼠标控制与32位模式切换 144
1 鼠标解读(1)(harib05a) 144
2稍事整理(harib05b) 146
3鼠标解读(2)(harib05c) 148
4移动鼠标指针(harib05d) 151
5通往32位模式之路 153
第9天 内存管理 162
1整理源文件(harib06a) 162
2内存容量检查(1)(harib06b) 163
3内存容量检查(2)(harib06c) 168
4挑战内存管理(harib06d) 172
第10天 叠加处理 181
1内存管理(续)(harib07a) 181
2叠加处理(harib07b) 184
3提高叠加处理速度(1)(harib07c) 194
4提高叠加处理速度(2)(harib07d) 197
第11天 制作窗口 201
1鼠标显示问题(harib08a) 201
2实现画面外的支持(harib08b) 202
3 shtctl的指定省略(harib08c) 203
4显示窗口(harib08d ) 206
5小实验(harib08e) 208
6高速计数器(harib08f) 209
7消除闪烁(1)harib08g) 211
8消除闪烁(2 harib08h) 214
第12天 定时器(1) 220
1使用定时器(harib09a) 220
2计量时间(harib09b) 224
3超时功能(harib09c) 225
4设定多个定时器(harib09d) 228
5加快中断处理(1)(harib09e) 232
6加快中断处理(2) harib09f 234
7加快中断处理(3)harib09g 236
第13天 定时器(2) 240
1简化字符串显示(harib 10a) 240
2重新调整FIFO缓冲区(1) (harib 10b) 241
3测试性能(harib 10c~harib10f 243
4重新调整FIFO缓冲区(2) (harib 10g) 246
5加快中断处理(4 (harib10h) 253
6使用“哨兵”简化程序(harib 10i) 257
第14天 高分辨率及键盘输入 262
1继续测试性能(harib 11a~harib 11c) 262
2提高分辨率(1)(harib 11d) 266
3提高分辨率(2)(harib 11e) 269
4键盘输入(1)(harib 11f) 272
5键盘输入(2)(harib 11g) 275
6追记内容(1)harib11h 277
7追记内容(2)harib11i 279
第15天 多任务(1) 282
1挑战任务切换(harib12a 282
2任务切换进阶(harib12b 289
3做个简单的多任务(1)harib 12c) 291
4做个简单的多任务(2 harib12d 293
5提高运行速度(harib12e) 294
6测试运行速度(harib12f 297
7多任务进阶(harib 12g) 299
第16天 多任务(2) 304
1任务管理自动化(harib13a) 304
2让任务休眠(harib 13b) 308
3增加窗口数量(harib13c) 313
4设定任务优先级(1)(harib 13d) 317
5设定任务优先级(2)(harib13e) 320
第17天 命令行窗口 329
1闲置任务(harib14a) 329
2创建命令行窗口(harib14b 331
3切换输入窗口(harib14c 334
4实现字符输入(harib 14d) 337
5符号的输入(harib14e) 341
6大写字母与小写字母(harib14f) 343
7对各种锁定键的支持(harib 14g) 346
第18天dir命令 350
1控制光标闪烁(1)(harib15a) 350
2控制光标闪烁(2 (harib15b) 352
3对回车键的支持(harib15c) 355
4对窗口滚动的支持(harib15d) 357
5 mem命令(harib 15e) 359
6 cls命令(harib15f) 363
7 dir命令(harib15g) 366
第19天 应用程序 371
1 type命令(harib 16a) 371
2 type命令改良(harib16b) 378
3对FAT的支持(harib 16c) 382
4代码整理(harib 16d) 387
5第一个应用程序(harib 16e) 387
第20天API 392
1程序整理(harib17a 392
2显示单个字符的API(1) (harib 17b) 399
3显示单个字符的API(2) (harib 17c) 402
4结束应用程序(harib 17d) 403
5不随操作系统版本而改变的API (harib 17e) 405
6为应用程序自由命名(harib17f) 408
7当心寄存器(harib 17g) 410
8用API显示字符串(harib 17h) 412
第21天 保护操作系统 418
1攻克难题——字符串显示API (harib 18a) 418
2用C语言编写应用程序(harib 18b) 420
3保护操作系统(1)(harib18c) 424
4保护操作系统(2 harib18d) 426
5对异常的支持(harib18e) 431
6保护操作系统(3)(harib18f) 434
7保护操作系统(4)(harib18g 435
第22天用C语言编写应用程序 443
1保护操作系统(5)(harib 19a) 443
2帮助发现bug(harib 19b) 448
3强制结束应用程序(harib 19c) 452
4用C语言显示字符串(1) (harib 19d) 455
5用C语言显示字符串(2) (harib 19e) 457
6显示窗口(harib19f) 462
7在窗口中描绘字符和方块(harib19g) 465
第23天 图形处理相关 468
1编写malloc(harib20a) 468
2画点(harib20b) 472
3刷新窗口(harib20c 475
4画直线(harib20d) 478
5关闭窗口(harib20e 483
6键盘输入API(harib20f) 484
7用键盘输入来消遣一下(harib20g) 488
8强制结束并关闭窗口(harib20h 489
第24天 窗口操作 493
1窗口切换(1harib21a) 493
2窗口切换(2 harib21b) 495
3移动窗口(harib21c) 496
4用鼠标关闭窗口(harib21d) 498
5将输入切换到应用程序窗口 (harib21e) 500
6用鼠标切换输入窗口(harib21f) 506
7定时器API(harib21g) 507
8取消定时器(harib21h) 511
第25天 增加命令行窗口 515
1蜂鸣器发声(harib22a) 515
2增加更多的颜色(1)harib22b ) 518
3增加更多的颜色(2 harib22c 520
4窗口初始位置(harib22d) 523
5增加命令行窗口(1harib22c 524
6增加命令行窗口(2 harib22f 528
7增加命令行窗口(3 harib22g 531
8增加命令行窗口(4 harib22h 532
9变得更像真正的操作系统(1) (harib22i) 534
10变得更像真正的操作系统(2) (harib22j) 538
第26天 为窗口移动提速 541
1提高窗口移动速度(1harib23a) 541
2提高窗口移动速度(2 harib23b) 543
3提高窗口移动速度(3 harib23c) 547
4提高窗口移动速度(4 harib23d 549
5启动时只打开一个命令行窗口 (harib23e) 551
6增加更多的命令行窗口(harib23f) 554
7关闭命令行窗口(1harib23g) 555
8关闭命令行窗口(2 harib23h) 561
9 start命令harib23 i) 563
10 ncst命令(harib23j) 564
第27天LDT与库 571
1先来修复bug(harib24a) 571
2应用程序运行时关闭命令行窗口 (harib24b) 573
3保护应用程序(1)(harib24c) 577
4保护应用程序(2)(harib24d) 580
5优化应用程序的大小(harib24e 583
6库(harib24f 587
7整理make环境(harib24g) 590
第28天 文件操作与文字显示 598
1 alloca(1)(harib25a) 598
2 alloca(2)(harib25b) 601
3文件操作API(harib25c) 605
4命令行API(harib25d) 612
5日文文字显示(1harib25e) 615
6日文文字显示(2 harib25f) 624
7日文文字显示(3 (harib25g) 629
第29天 压缩与简单的应用程序 635
1修复bug(harib26a 635
2文件压缩(harib26b) 636
3标准函数 644
4非矩形窗口(harib26c 647
5 bball(harib26d) 648
6外星人游戏(harib26e) 651
第30天 高级的应用程序 659
1命令行计算器(harib27a) 659
2文本阅览器(harib27b) 664
3 MML播放器(harib27c) 671
4图片阅览器(harib27d) 679
5 IPL的改良(harib27e 683
6光盘启动(harib27f 688
第31天 写在开发完成之后 690
1继续开发要靠大家的努力 690
2关于操作系统的大小 692
3操作系统开发的诀窍 693
4分享给他人使用 694
5关于光盘中的软件 695
6关于开源的建议 696
7后记 698
8毕业典礼 703
9附录 704