Skip to content

Latest commit

 

History

History
170 lines (113 loc) · 4.78 KB

README.md

File metadata and controls

170 lines (113 loc) · 4.78 KB

Vitality OS

Vitality OS是在macOS下开发的、基于川和秀实所著《30天自制操作系统》的haribote OS所开发的32位图形界面操作系统。

重要!个人开发环境中开发及运行所需的支持64位的wine尚未配置完成(Mac Catalina不支持32位程序),开发暂停。以后会尽量让img映像能在mac和Linux系统中直接跑起来(比如用nasm编译/找到支持mac的nask),摆脱windows系统的制约。

注:尚在开发中,不确定哪些工具没有必要使用,工具适用于Windows系统请注意有选择性地使用。出于开发的需要也对Makefile变更了一些路径及文件名称。

这个README相当潦草,有待完善。

日志

第1天

  • 用QEMU模拟
  • 去掉了install功能,只支持模拟器模拟
  • 调用wine加载exe可执行文档和二进制文档

第2天

  • 编写适用于macOS的shell处理脚本
  • 重写Makefile,使之适用于终端+wine执行

第3天

  • 写入磁盘读取信息和映像格式信息
  • 开始与C程序链接

第4天

  • 开始绘制图形界面

第5天

  • 引入字体文件
  • 显示变量值(variables)
  • 绘制鼠标图案
  • 开始分配段(segments),初始化GDT与IDT
  • 删除前几天产生的多余文档,修复vitality_0.2中Makefile的路径引用bug

第6天

  • 分割c文件,添加头文件(*.h)
  • 简化Makefile逻辑,增加一般规则
  • 初始化PIC
  • 添加键盘操作的中断处理

第7天

  • 建立FIFO缓冲区(fifo.c),以存储多个中断处理发送的值
  • 获取按键编码
  • 获取鼠标数据

第8天

  • 获取鼠标数据(鼠标按键状态,x,y)
  • 使鼠标可以移动

第9天

  • 增加内存管理功能,支持检查内存容量与剩余内存量

第10天

  • 修复第9天遗留的bug:显示的总内存只有4MB
  • 增加叠加处理

第11天

  • 增加窗口
  • 增加高速寄存器功能

第12天

  • 设置定时器
  • 加快中断处理

第13天

  • 修正书中代码的bug:测试性能模块无法在QEMU上正常模拟
  • 改变缓冲区FIFO的内容(由unsigned char变为int)
  • 继续加快中断处理
  • 利用哨兵值简化timer.c中各函数的逻辑

第14天

  • 提高画面分辨率(也可以在asmhead.nas中修改画面显示模式)
  • 开始接受键盘输入
  • 创建带文本框的窗口
  • 窗口支持拖拽

第15天

  • 增加多任务
  • 有bug:计时器的count数不显示

第16天

  • 继续完善多任务,设定任务优先级
  • 计时器的count数不显示,可能由QEMU中CPU运行状况有关
  • 增加test文件夹以测试和对比运行情况

第17天

  • 增加命令行界面,允许输入字母、数字及部分特殊字符(通过shift+按键实现)
  • 增加切换窗口功能
  • 已修正为适配于苹果mac英文键盘的键盘设置
  • 由于机种所限,无法测试Numlock和ScrollLock是否运行正常

第18天

  • 控制光标闪烁
  • 支持回车键
  • 支持窗口滚动
  • 支持mem、clear、ls命令(这里采用的是shell命令,不是原书的windows命令)
  • 为mac增加了按下option键输入字符的映射(因目前不支持非ascii字符暂时无法使用)

第19天

  • 支持cat命令以查看文件内容
  • 支持FAT格式

第20天

  • 用API显示字符串
  • 支持读取.hrb文件,并在命令行上运行(加后缀不加后缀都可读取)

第21天

  • 保护操作系统(防御性编程),将操作系统和应用程序分为不同的段,减少系统受恶意代码和误操作影响的概率
  • 修复bug:在QEMU中一旦激活鼠标(ctrl + alt + g)键盘输入就会发生异常,只能输入0、1、2、3

第22天

  • 支持用C语言编写.hrb应用程序并运行
  • 可用.hrb应用程序绘制窗口,并自定义文字内容和背景颜色

第23天

  • 编写malloc
  • 画点
  • 画直线
  • 支持快捷键关闭应用程序
  • 支持强制结束并关闭窗口

第24天

  • 支持窗口切换、用鼠标切换输入窗口
  • 支持移动窗口
  • 支持Tab键切换多个窗口
  • 增加定时器API,可取消定时器

第25天

  • 修复mem命令和cat命令遗留的bug
  • 支持256色显示
  • 把应用程序窗口的初始位置更改到画面中央
  • 增加命令行窗口(2个)
  • 简化bootpack.c代码

TODO List

  • Capslock的设置需做更改(无法识别0xff)
  • 支持非ascii字符
  • 在不同的环境中测试代码
  • 改进Makefile的逻辑:在文件不全的情况下删除指定文档、改进脚本运行出错提示
  • bootstrap.c所引用的sprintf函数有安全隐患,写一个更安全的版本
  • 改进对13天书中bug的修复,减少CPU计数的无用消耗
  • 增加针对USB的安装指令
  • 补充说明文档,以全局角度讲解OS的实现、如何在macOS环境下配置及一些延伸问题