![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
30天自制操作系统
zhangkai9895
因为刚好遇见你
展开
-
《30天自制操作系统》学习笔记_day08
1.鼠标数据的解读每次发生中断,鼠标会向cpu发送数据,第一次发送的数据是0xfa,也就是激活鼠标的返回信息。每次从鼠标那里传来的信息是以3个字节为一组,因此,当数据累计到3个字节的时候,我们就把这些信息显示在屏幕上,并且记得将最初读到的0xfa舍弃。打开harib05a 在HariMain中进行一些修改:接收的数据存放在mouse_dbuf中,mouse_phase用于记录接收数据的进度...原创 2020-04-09 19:08:32 · 225 阅读 · 0 评论 -
《30天自制操作系统》学习笔记_day07
1. 获取按键编码改进一下int.c中的inthandler21函数这里io_out8(PIC0_OCW2,0x61)函数的目的是通知PIC在中断发生以后继续监视IRQ1中断是否发生,这样我们就可以在按下第一次按键后还能按下第二次。如果不通知PIC继续监视,那么不管下次键盘输入什么信息,系统都无法感知了。在这段函数前面有这样一句定义:#define PORT_KEYDAT 0x0060 ...原创 2020-04-08 20:13:43 · 262 阅读 · 0 评论 -
《30天自制操作系统》学习笔记_day06
1.重新组织文件结构,精简代码分割源文件作者首先将源文件bootpack.c分割为几个部分:graphic.c 关于描画的处理dsctbl.c 关于GDT,IDT的处理bootpack.c 其他处理三个源文件编译分别生成目标文件以后连接生成bootpack.bim文件,剩下的过程和以前一样。对应的Makefile内容也发生了变化。运行后和之前一样。整理Makefile文件...原创 2020-04-07 21:25:22 · 296 阅读 · 0 评论 -
《30天自制操作系统》学习笔记_day05
博主:zhangkai未经允许不得转载!!!1.试用结构体改写个人理解的是作者希望更好的组织图像信息的获取。在harib02b中我们可以看到:作者定义了一个类型为BOOTINFO的结构体变量,也就是储存启动画面信息的结构体。struct BOOTINFO { char cyls, leds, vmode, reserve; short scrnx, scrny; char *v...原创 2020-04-03 11:36:44 · 318 阅读 · 2 评论 -
《30天自制操作系统》学习笔记_day04
1.C语言实现内存写入第三天中实现了启动haribote.sys程序以后,设置画面为全黑,第四天首先希望通过向VRAM内存中写入的方式控制画面显示的内容。因为haribote中有有一部分我们已经开始用C语言写,我们希望用C语言可以实现像汇编一样像内存写入(这里先不考虑指针)在harib01a中的nasfunc.nas中增加了这是一个C语言函数的汇编原型,write_mem8(0x1234,...原创 2020-04-01 19:54:18 · 296 阅读 · 0 评论 -
《30天自制操作系统》学习笔记_day03
前言:第三天的难度还是蛮大的,看了一上午理解了大概,还是好好记录,捋顺一下。1.实现Ipl的程序装载首先实现用ipl指示将程序(软盘内容,操作系统)装载到内存特定位置在03_day的harrib00a中的ipl.nas添加内容的部分可以看到用到了 BIOS INT 0x13中断,0x13号中断主要用来磁盘的读写,AH=0x02说明用来读盘。具体软盘的结构可以查询学习。AH=处理对象的...原创 2020-03-31 19:20:31 · 375 阅读 · 0 评论 -
《30天自制操作系统》学习笔记_day02
1.制作启动区为了以后开发,先制作512字节的启动区,剩下的用磁盘映像管理工具制作(作者提供)启动区只需要最初的512字节,将02_day->hellloos3文件夹中的helloos.nas后半部分截去,并重新命名为ipl.nas在这里博主对一些值进行了更新,并命名KAY-OS; hello-os; TAB=4 ORG 0x7c00 ; 指明程序装载地址; 标准F...原创 2020-03-30 19:43:26 · 279 阅读 · 0 评论 -
《30天自制操作系统》学习笔记_day01
《30天自制操作系统》学习笔记_day011.二进制编辑器查看操作系统源代码并编写博主未采用书中推荐二进制编辑器,而是使用Notepad++和HexEditor插件。参考:新版Notepad++加十六进制查看的插件HexEditor000000:HELLOIPL启动区的名称可以是任意的字符串(8字节)启动区: 软盘的第一个扇区为启动区,计算机读取软盘512个字节为一个扇区单位。软盘大小...原创 2020-03-30 10:05:07 · 248 阅读 · 0 评论