第30天 高级的应用程序

第30天 高级的应用程序

2020.5.12

1. 命令行计算器(harib27a)

  • 编写代码cal.c:

    ……
    
    • 此代码略长,且不是编写OS的重点,因此此处不再罗列代码。
    • 可以使用的运算符:
      • +:加法运算
      • -:减法运算
      • *:乘法运算
      • /:整除
      • %:取余
      • &:按位与
      • |:按位或
      • ^:异或
      • ~:按位取反
      • <<:左移
      • >>:右移
      • ():括号
    • 运算结同时显示十进制和十六进制。
    • 只能进行整数运算
    • 计算优先级和C语言的规定相同。
    • 可以直接使用16进制数字,只要在16进制数字前加上0x即可。
    • 键盘按键与实际标注不符,因此可参照下表(不同电脑不同,这里是按照本人笔记本按键标注的):
  • make full后用VMware运行:

2. 文本阅览器(harib27b)

  • 编写代码tview.c:

    ……
    
    • 此代码略长,且不是编写OS的重点,因此此处不再罗列代码。
    • 用光标键可以上下左右移动(使用上下左右方向键移动)。
    • af设置每次滚动132行(2^形式)(竖向滚动);AF设置每次滚动18列(横向滚动)。
    • 关于启动时命令行选项,以tview ipl20.nas -w100 -h30为例:
      • -w代表打开一个宽度为100个半角字符的窗口,最大可以指定126。
      • -h代表行数,最大可以指定45。
      • 如果不指定-w和-h,默认值是-w30和-h10。
    • 制表符的大小使用命令行选项-t,如果省略的话,是-t4,即4个空格大小。在程序启动后也可以使用<>来调节。
    • q或者Q可以退出应用程序。
  • make full后用VMware运行:

    • 以指令tview ipl20.nas -w100 -h30为例:

3. MML播放器(harib27c)

  • 编写代码mmlplay.c:

    ……
    
    • 此代码略长,且不是编写OS的重点,因此此处不再罗列代码。
    • 由音符数据计算频率,以及由音符长度计算定时器应该设定为几秒。
    • 音乐知识:一个音升高半音后,频率是原来的约1.059463倍。
  • 在命令行中输入mmlplay daigo.mml即可播放音乐daigo.mml。

  • mml(music macro language)是一个文本文件。

    • 这个文件中包含的内容是乐谱数据,如“doe、ray、me、far、sow、lar、tea”分别对应“CDEFGABC”(C大调中)。
    • 在音符后面加上+或者#表示升高半音,加上-表示降低半音。
    • 再后面还可以加上数字,“4”表示4分音符,“8”代表8分音符,“1”代表全音符,“2.”代表符点2音符。
    • O命令来设置八度音区,例如可以设置“O4”。L命令用来设置音长,表示音符或者休止符R在不指定音长时的默认音长。
    • T命令用来设定乐曲速度,>用来升高一个八度,<用来降低一个八度,&表示连音线。
    • Q用来指定音符演奏是短促还是连贯。比如“Q4”标出断奏,“Q8”表示一直使用连音奏法。
    • $开头的是扩展命令。$K是卡拉OK命令,后面指定的字符串会显示在卡拉OK栏中。$E表示卡拉OK歌词数据的字符编码。
  • mml文件中数据是不区分大小写的。演奏到最后会自动回到开头重新演奏。

  • 按下Q退出,如果使用Shift+F1或者“X”按钮,会一直有声音。由于音乐播放器不是重点,因此没有修改OS内核代码。

  • 乐库文件在目录mmldata下,一共有四首音乐:

    • daigo.mml:《c小调第五交响曲“命运” op.67》
    • kirakira.mml:《小星星》发过民歌
    • fujisan.mml:《富士山》日本文部省民歌
    • daiku.mml:《第九交响曲 d小调 “合唱” op.125选段 路德维希·范·贝多芬》
  • make full后用VMware运行:

    • mmlplay kirakira.mml为例:

4. 图片阅览器(harib27d)

  • 编写代码gview.c:

    ……
    
    • 此代码略长,且不是编写OS的重点,因此此处不再罗列代码。
    • 支持BMP和JEPG格式的图片
    • 关于BMP和JEPG的文件格式讲解此处不再详述。而且用于解释BMP和JEPG文件格式的程序直接使用OSASK中应用程序所应用的代码。
      • OSASK中有一个叫做PICTURE0.BIN的应用程序,这是一个用来查看BMP和JEPG格式图片的图片阅览器。从这个程序的源代码中提取bmp.nasm和jepg.c。
      • bmp.nasm和jepg.c无需修改可以直接使用。
      • 因此,只需要将文件载入并显示出来。
  • make full后用VMware运行:

    • 查看图片:
      • 图片数据在pictdata目录下,分别是night.bmp和fujisan.jpeg。

6. IPL的改良(harib27e)

  • 这部分不进行学习,因此略过。

7. 光盘启动(harib27f)

  • 这部分不进行学习,因此略过。

8. 完结撒花

  • 现在是2020.5.13 11:16。总耗时138天,实际耗时49天。
  • 讲真的,在这139天里,不止一次想要放弃,还好自己最终还是坚持了下来。原本立下的三次flag都倒下了,终于在5.13号完成了既定任务。
  • 接下来几天就是再harib27d的基础上,进行修改,添加一些必要的功能以及修改一些不合适的部分。
  • 现在千言万语都成无言。总之,感谢那个一直没有放弃的自己,以及那个兴趣且专注的自己。
  • 完结撒花!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值