第六步:继续完善域结构并实现键盘模块与视频模块的交互
来源:互联网 发布:淘宝卖视频教程处罚 编辑:程序博客网 时间:2024/05/18 00:22
随着编写的不断深入,整个工程变得越来越大了。以前的一些文件,这里那里偶尔需要进行一下小的改动。单个文件的代码量也越来愈大。现今再一个一个文件的代码贴出来,就太占篇幅了。所以接下来的帖子里,我将直接给出下载链接,免得想要实际运行一下程序的朋友们需要粘贴来粘贴去。
我将所有的代码以及对应的img文件一起打包在了下面的压缩文件里。
因为是使用yc09编译器在xp下编译的,所以若想要修改代码的话,需要安装yc09编译器。修改代码后,无需手动编译整个工程,只需要运行压缩包里的run.exe文件(要先将整个压缩包解压)即可自动编译整个工程并且将img加载到虚拟机中,启动操作系统。当然也可以直接使用虚拟机加载img,运行看看这个操作系统(需要安装bochs虚拟机,然后双击debug.bxrc文件)
下载链接:http://download.csdn.net/source/2458976
下面对此一步对操作系统的改动和新添加内容作简要介绍。
对域结构的扩展:
先看看域结构最核心的两个数据结构:on事件(被动动作)和动作(主动动作)。
对于on事件结构,没有任何改改变,但是下面将会看到,在实现键盘功能键时,将struct on_s *next; 字段利用上了
对于动作结构,新添加了两个on事件指针,分别用于在执行动作前后执行。
下面是根据新添加的中断,修改后的run()函数,主要是分别在执行动作函数先后执行(加载)了on事件,以及在执行on事件后,将on事件后链接的on事件加载到队列中,在下一个动作周期会被调用执行。
此外,就是四个与之配套使用的函数。
对键盘模块的扩展:
最明显的,就是增加了一堆的on事件,这些on事件对应的注册到键盘扫描码上,像shift、ctrl等,用于配合字符部分的输入,其他的功能键,则是提供给视频作为控制事件的注册点。此外,就是对键盘的扫描码转字符的模块做了细微调整,以便于更好的处理小键盘部分的按键。详细的情况,就仔细看看keyboard.h和keyboard.c两个文件吧。
将对显存的操作操作的on事件映射到对应的键盘功能键按钮是通过下面这个函数实现的:
具体的实现代码都很简单,参考console.h和console.c两个文件的代码即可明白。
最后要说明的是,我将显存分为连续的八个页,使用F1~F8可以直接跳转到对应的页,也可以使用PageUp、PageDown、Home、End等按钮,此外,我特地添加了显示当前页位置小滑块,运行img即可看到效果。
- 第六步:继续完善域结构并实现键盘模块与视频模块的交互
- 第五步:进一步完善域结构并根据域结构重新编写键盘驱动
- 模块管理常规功能自定义系统的设计与实现(15--进一步完善"省份"模块)
- Shuffle 与 Storage 模块间的交互
- 模块继续
- 模块继续
- 【2048强势来袭】第六期:添加游戏是否还能够继续的模块
- JAVA高级视频 网络编程 06 完善的TCP服务器程序模块
- nodejs之http、fs、querystring模块实现网页与服务器的交互
- Data步与Base模块程序
- 完善评优管理模块
- Hibernate的模块结构
- heritrix的模块结构
- 模块的基本结构
- 单片机系统与标准PC键盘的接口模块设计
- c语言write与python的struct模块交互
- IP视频监控系统中云台控制模块的设计与实现 (转)
- 模块管理常规功能自定义系统的设计与实现(53--演示程序和视频讲解 )
- 浅谈敏捷开发思想中的简单最好原则
- 敏捷开发中的成效评估模型
- 敏捷开发中对进度的把握
- VC中char,TCHAR,WCHAR总结
- 学习debian的点点滴滴
- 第六步:继续完善域结构并实现键盘模块与视频模块的交互
- 敏捷项目中的资源管理
- MyEclipse6.0集成SVN及配置
- 如何当好敏捷项目的经理
- 项目团队成员的五种需求及其满足方式
- linux 内核模块
- 关于敏捷开发的精彩六问
- 实践敏捷方法的六个关键点
- 设计模式1