30天自制操作系统------命令行


    实现一个命令行任务,首先需要一个命令行窗口,然后需要一个命令行任务,在命令行任务中实现命令行的相关功能。

 

一、创建一个命令行窗口

创建命令行窗口就是在屏幕上画个窗口出来,实际就是操作显存,这一部分利用前面已经实现的makewindow8函数即可实现。

 

二、创建一个命令行任务

有了命令行窗口,我们再来实现命令行的功能。

(1)光标闪烁功能

      在刚开始做命令行时,命令行的功能就是光标闪烁即可,也就是说命令行任务中需要一个定时器来控制光标色块的颜色,使之产生闪烁的效果。在HariMain函数中已经实现过光标的闪烁功能,该功能还需要使用一个FIFO队列,通过在队列中存放不同的数值,可以使得光标的颜色进行变换,实现方法与HariMain中光标闪烁的实现方法相同。

     

(2)切换输入窗口

     目前用户使用键盘输入数据时,所有的数据都被task_a给接收了,新建的命令行窗口完全就是个摆设,为了使得命令行窗口可以接收数据,在HariMain中设置整型变量key_to

key_to=0时,task_a接收键盘数据;key_to=1时,命令行任务接收键盘数据。键盘数据都保存在各任务的FIFO中。而key_to值的切换则是由主程序HariMain负责监听Tab键来进行切换的,同时在切换窗口的同时,窗口标题栏的颜色发生改变。

 

(3)实现字符输入

     只要各个任务可以接收到字符编码,那么该任务就可以实现字符输入的功能,各个任务接收到的字符编码都保存在其FIFO中,在《30天自制操作系统》中,作者将FIFOTASK绑定,结构体FIFO中还有个TASK的指针成员,作者的代码运行起来没有问题,但是我根据作者的步骤编写出来的操作系统就运行不起来,在VMWare上就会出现导致虚拟CPU关闭的错误。

所以我直接将命令行任务的FIFObookpack.c定义为全局变量来避免此问题。

 

(4)符号的输入

     键盘上的有些按键与SHIFT键结合就可以产生其他字符,为了使得编写的操作系统可以显示这些字符,我们需要监测SHIFT键的状态,SHIFT键的按下与抬起都有相应的编码,只需要监测是否有这些编码产生即可。

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值