x01.os.16: 添加功能

时间:2023-03-09 15:28:00
x01.os.16: 添加功能

准备工作
  1.确保是 win xp,如是 win 8,运行 nasm 需按提示同意安装组件。
  2.确保 src 和 z_tools 在同一目录下,nasm 已包含在 z_tools 文件夹中。
  3.bmp.nasm 需用 nasm.exe 编译,格式为 -f win32,参看 app/makefile。
  4.app/haribote.rule 文件作了少许修改。
使用方法
  1.进入 src 文件夹,双击 cmd.bat,在命令行窗口分别输入如下命令即可:

        cd apilib
make
cd ../app
make
cd ../
make

2.操作系统启动后,shift + F2 可打开新终端,输入 exit 可关闭终端。

3.终端中分别输入 winhi 回车,type boot.s 回车可获取初步体验。效果图如下:

x01.os.16: 添加功能

4.终端中输入 tview boot.s 可浏览文件,gview 1.bmp 可查看图片,按 q 或 Q 关闭。效果图如下:

x01.os.16: 添加功能

5.终端中输入 ball 是个小游戏,空格键发射子弹,4、6 两个数字键左右移动,打 X 关闭。效果图如下:

x01.os.16: 添加功能

一点改进

1.添加 apilib/api028.s 文件,内容如下:

[format "WCOFF"]
[instrset "i486p"]
[bits ]
[file "api028.nas"] global _api_setlang [section .text]
_api_setlang: ; void api_setlang(int mode);
mov edx,
mov eax, [esp + ]
int 0x40
ret

2.apilib/makefile 当然要作相应修改,改动的地方只有一处,就是在 ApiObjs 中添加 api028.obj。

3.修改app/api.h,也只添加一处,即 api_setlang 的声明: void api_setlang(int mode);

4.修改app/calc.c 中的 HariMain(),开头添加如下代码:

int oldmode = api_getlang();
api_setlang();

在倒数第二行添加如下代码:

api_setlang(oldmode);

5. 还有就是 console.c 中的 hrb_api() 函数,需添加 else if (edx == 28) {...}, 可参看源代码。

按使用方法 1 重新编译.。OK! calc 现在可以不受日文字符的干扰了。

以上也是添加自己功能的一般步骤

x01.wos.5 下载链接:os 源代码

又:代码也可到我的置顶随笔x01.Lab.Download中获取,上面的是 **** 中的链接。由于博客园有时不能显示图片,所以在 **** 中也弄了一份。