You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

39 lines
2.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

一.鼠标驱动
字符输入设备,与键盘类似,核心是编写鼠标中断处理程序。
1.鼠标中断入口程序的设置编写鼠标中断处理函数用宏完成IDT编写set_trap_gate位置与键盘中断初始化设置语句放在一起con_init() 控制台设备初始化函数。
2.中断函数实现类似的创建一个汇编文件mouse.s加文件修改Makefile
二.图形工作模式
1.启动图形模式
2.设置分辨率
3.像素点阵和显存的映射
1.启动图形模式
BIOS基本输入输出系统检测显卡硬件支持什么图形模式。setup.s中功能号0x0F中。。。可以读取显卡信息返回AL寄存器存放当前显卡的显示模式。存放在0x90006中。
控制台设备的初始化函数con_init用宏定义ORIG_VIDEO_MODE得到从0x90006取出一个字节。后得到VGA标准读手册。得到
图形控制器0x3CE拼装器0x3C4CRT控制器0x3D4
图形控制器把总线地址数据存放在显存上
拼装器从四个64KB显存片取出还原对应图形控制器
CRT控制器将信息扫描输出
2.设置分辨率
320*200分辨率靠CRT水平垂直计数器
0x3D4 0x3D5完成设置控制扫描线长度
3.像素点阵和显存的映射
采取线性256色模式一个字节一个像素点。
+至此做成显示器图形模式初始化系统调用sys_init_graphics进入Mode 0x13图形模式。
4.开始绘制屏幕
起始位置设置屏幕最左上角像素从哪里取
三.消息驱动框架
1.操作系统收集各种事件 2.放入系统消息队列中 3.用户进程不断查看并作出相应的动作。一个while循环。
由消息触发,由于消息队列在操作系统中故对消息的获取是一个系统调用
内核中的构造工作就是 1.定义队列 2.post 3.get内核函数4.新消息的创建正确的转换操作switch
注意内核消息队列是一个多进程共享队列用临界区机制保护开关中断即可clisti
四.可视化应用程序的设计与实现
1.定义对象
2.定时器:定时重画
3.无限循环
4.get系统调用取出系统消息是定时就判断 失败? 对象位置,并重画,画面同步。是左键就更新位置。