自制操作系统
ucan23
没有什么特长,但能吃苦。
展开
-
30天自制操作系统笔记(一二)
第一天与第二天 看完第一天与第二天的内容,感觉这两天的内容不难 下面是系统的运行截图: 下面是系统的源文件:ucan23ipl.nas ; ucan23-os ; TAB-4 ORG 0x7c00 ;指明程序的装载地址 ; 以下这段是标准FAT12格式软盘专用的代码 JMP entry DB 0x90 DB "UCAN23LD" ;启动区的名称可以是任意的字符串(8字节)原创 2013-11-25 19:00:13 · 3187 阅读 · 2 评论 -
30天自制操作系统笔记(十三十四)——源码
我们重写了缓冲区,使其能进行键盘和鼠标的读取 /* filename: fifo.c * description: 包含了有关缓冲区的操作 * author: Howard * date: 2013-12-03 * version: v1.0 */ #include "bootpack.h" #define FLAGS_OVERRUN 0x原创 2013-12-04 08:48:01 · 2631 阅读 · 1 评论 -
30天自制操作系统笔记(十三十四)
下面是十三十四天的内容,其实这两次的内容没有那么多,主要是定时器优化的处理,下面让我们来看一下系统的效果图 下图为定时器没有优化时的运行结果: 经过优化后: 再进一步优化定时器处理(加哨兵)后的运行结果: 切换到搞分辨率的准备,第一次使用高分辨率,结果出现了下面的结果: 检查原因,是因为没有设置完分辨率后没有调用BIOS关于显卡的 int10 中断,修改之原创 2013-12-04 08:37:43 · 1814 阅读 · 1 评论 -
30天自制操作系统笔记(十一十二)——源码
这里我们只给出新增部分和修改部分的源码: 系统运行截图http://blog.csdn.net/ucan23/article/details/17088983点击打开链接 /* filename: timer.c * description: 定时器函数 * author: Howard * date: 2013-12-02 * version:原创 2013-12-03 08:41:12 · 1934 阅读 · 0 评论 -
30天自制操作系统笔记(十一十二)
学完十一、十二天的内容感觉就是在处理层的优化,和显示方面有点难点,至于中断和定时器还是不是很难的: 下面的图是我们上次内容没有优化图层控制的结果,鼠标移出到画面外时会出现问题,感觉跟能穿墙的贪吃蛇很像吧? 下图为解决了这个问题的系统运行截图: 下面绘画的是窗口程序,但是这个窗口不同于windows系统弹出的那种窗口,这个窗口是我们画上去的,也就是不能拖动它,它只是一个图层而已。原创 2013-12-03 08:33:56 · 2010 阅读 · 0 评论 -
30天自制操作系统笔记(九十)——源码
这里为了节省篇幅和csdn服务器的空间,我们只给出在七八之上改动的或者新建的源码文件的内容: sheet.c /* filename: sheet.c * description: 对图层的管理 * author: Howard * date: 2013-12-01 * version: v1.0 */ #include "bootpack.原创 2013-12-02 09:33:45 · 2854 阅读 · 1 评论 -
30天自制操作系统笔记(九十)
第九天和第十天的内容为解决鼠标和图层的刷新问题,以及内存分配问题,这里的内存分配我们采取的是最简单的最先匹配原则,将整个内存由申请的进程开始逐渐的截取成不同的段。这样产生的问题可能是产生很多的外部碎片,同时我们强制性必须以页为大小(4KB)进行分配,这样的话就很可能会产生内部碎片,关于内存的管理我们在之后再改进。 下面让我们看一下这两天的成果: 下两图为对内存进行分布后的执行结果,对的,其实什原创 2013-12-02 09:27:16 · 2106 阅读 · 0 评论 -
30天自制操作系统笔记(七八)
前两天已经把这部分搞完了,但是由于网络和时间的原因一直没有发,今天补上。这两天的成果主要是加上了鼠标的识别和鼠标的移动: 图一,鼠标运动的识别,主要使用了终端技术,将鼠标的中断信号通过控制器传递给处理器,有处理器负责处理。 上图中左下的一行数字是键盘+鼠标的数据效果,其中黑色背景部分为键盘码,后面的三个数字为鼠标产生的数据。 图二,鼠标的移动。 图三,为鼠标移动的时候将所画原创 2013-12-01 09:33:33 · 1653 阅读 · 0 评论 -
30天自制操作系统笔记(七八)——源码
下面是七八天的源码: ucan23.nas为系统的启动初始化文件: ; ucan23-os boot asm ; TAB=4 ; 此程序前一个版本存在的错误:将skip写成了ship ; 将[INSTRSET "i486p"]写成了[INSTREST "i486p"] ; 将waitkbdout写成了waitkdbout BOTPAK EQU 0x00280000 DSKCAC EQU 0原创 2013-12-01 09:54:25 · 3233 阅读 · 0 评论 -
30天自制操作系统笔记(五六)
经过一天的努力,第五第六天的内容也做完了,下面让我们来看一下成果吧: 下图为用字节写的字符打印出字母‘A’: 下图为使用移植的字库打印“Hello,world”: 下图为使用移植的字库,并且使用sprintf()函数打印的字符串: 下图为打印源码中的变量的值,同样也使用了sprintf()函数: 下图为绘制鼠标的操作: 下原创 2013-11-29 08:27:54 · 1682 阅读 · 0 评论 -
30天自制操作系统笔记(四)
首先我们先展示一下第四天的成果: 图一:显示纯色 图二:显示格子 图三:使用调色板显示格子 图四:画正方形 最后的图为一个小界面: 第四天的内容其实不难,但是由于前三天写的代码部分有问题,导致今天调试了一天才找到问题所在问题的更正已经在下面的源文件中指出。 代码中唯一没有指出的是Makefile文件中的溢出小错误,将文件名字写错啦具体为: n原创 2013-11-27 19:12:25 · 2781 阅读 · 1 评论 -
30天自制操作系统笔记(三)
今天学习了第三天的内容,相比较前两天的内容有点难,但是还好成果出来啦。本次主要的改进之处是修改了主函数的名字,是我们可以不拘泥作者的要求。 我们先看一下运行结果截图: 此图为正常的运行结果,到现在操作系统采用了汇编+C语言的方式。我们看一下操作系统的主函数: /*告诉C编译器,有一个函数在别的文件里*/ void io_hlt(void); void UcanMain(void) {原创 2013-11-26 19:04:21 · 2841 阅读 · 1 评论 -
Ucan23操作系统项目地址
期间耽误了近半年的时间,在昨天终于完成了Ucan23OS自制操作系统,项目托管在Github上: https://github.com/howardking/UCAN23OS原创 2014-07-14 15:30:42 · 1288 阅读 · 0 评论