Vitality OS是在macOS下开发的、基于川和秀实所著《30天自制操作系统》的haribote OS所开发的32位图形界面操作系统。
重要!个人开发环境中开发及运行所需的支持64位的wine尚未配置完成(Mac Catalina不支持32位程序),开发暂停。以后会尽量让img映像能在mac和Linux系统中直接跑起来(比如用nasm编译/找到支持mac的nask),摆脱windows系统的制约。
注:尚在开发中,不确定哪些工具没有必要使用,工具适用于Windows系统请注意有选择性地使用。出于开发的需要也对Makefile变更了一些路径及文件名称。
这个README相当潦草,有待完善。
- 用QEMU模拟
- 去掉了install功能,只支持模拟器模拟
- 调用wine加载exe可执行文档和二进制文档
- 编写适用于macOS的shell处理脚本
- 重写Makefile,使之适用于终端+wine执行
- 写入磁盘读取信息和映像格式信息
- 开始与C程序链接
- 开始绘制图形界面
- 引入字体文件
- 显示变量值(variables)
- 绘制鼠标图案
- 开始分配段(segments),初始化GDT与IDT
- 删除前几天产生的多余文档,修复vitality_0.2中Makefile的路径引用bug
- 分割c文件,添加头文件(*.h)
- 简化Makefile逻辑,增加一般规则
- 初始化PIC
- 添加键盘操作的中断处理
- 建立FIFO缓冲区(fifo.c),以存储多个中断处理发送的值
- 获取按键编码
- 获取鼠标数据
- 获取鼠标数据(鼠标按键状态,x,y)
- 使鼠标可以移动
- 增加内存管理功能,支持检查内存容量与剩余内存量
- 修复第9天遗留的bug:显示的总内存只有4MB
- 增加叠加处理
- 增加窗口
- 增加高速寄存器功能
- 设置定时器
- 加快中断处理
- 修正书中代码的bug:测试性能模块无法在QEMU上正常模拟
- 改变缓冲区FIFO的内容(由unsigned char变为int)
- 继续加快中断处理
- 利用哨兵值简化timer.c中各函数的逻辑
- 提高画面分辨率(也可以在asmhead.nas中修改画面显示模式)
- 开始接受键盘输入
- 创建带文本框的窗口
- 窗口支持拖拽
- 增加多任务
- 有bug:计时器的count数不显示
- 继续完善多任务,设定任务优先级
- 计时器的count数不显示,可能由QEMU中CPU运行状况有关
- 增加test文件夹以测试和对比运行情况
- 增加命令行界面,允许输入字母、数字及部分特殊字符(通过shift+按键实现)
- 增加切换窗口功能
- 已修正为适配于苹果mac英文键盘的键盘设置
- 由于机种所限,无法测试Numlock和ScrollLock是否运行正常
- 控制光标闪烁
- 支持回车键
- 支持窗口滚动
- 支持mem、clear、ls命令(这里采用的是shell命令,不是原书的windows命令)
- 为mac增加了按下option键输入字符的映射(因目前不支持非ascii字符暂时无法使用)
- 支持cat命令以查看文件内容
- 支持FAT格式
- 用API显示字符串
- 支持读取.hrb文件,并在命令行上运行(加后缀不加后缀都可读取)
- 保护操作系统(防御性编程),将操作系统和应用程序分为不同的段,减少系统受恶意代码和误操作影响的概率
- 修复bug:在QEMU中一旦激活鼠标(ctrl + alt + g)键盘输入就会发生异常,只能输入0、1、2、3
- 支持用C语言编写.hrb应用程序并运行
- 可用.hrb应用程序绘制窗口,并自定义文字内容和背景颜色
- 编写malloc
- 画点
- 画直线
- 支持快捷键关闭应用程序
- 支持强制结束并关闭窗口
- 支持窗口切换、用鼠标切换输入窗口
- 支持移动窗口
- 支持Tab键切换多个窗口
- 增加定时器API,可取消定时器
- 修复mem命令和cat命令遗留的bug
- 支持256色显示
- 把应用程序窗口的初始位置更改到画面中央
- 增加命令行窗口(2个)
- 简化bootpack.c代码
- Capslock的设置需做更改(无法识别0xff)
- 支持非ascii字符
- 在不同的环境中测试代码
- 改进Makefile的逻辑:在文件不全的情况下删除指定文档、改进脚本运行出错提示
- bootstrap.c所引用的sprintf函数有安全隐患,写一个更安全的版本
- 改进对13天书中bug的修复,减少CPU计数的无用消耗
- 增加针对USB的安装指令
- 补充说明文档,以全局角度讲解OS的实现、如何在macOS环境下配置及一些延伸问题