osakaOS v1.1
相较于1.0版本的改进和优化。
osakaOS是一个32位、单任务、整体式操作系统,其设计重点在于非常规/荒谬的设计选择。它使用基于文本的命令行来编辑使用Osaka文件系统的文件,并使用AyumuScript脚本语言创建小型程序。
它还包含称为"模式"的小程序,用于小游戏和娱乐。命令包括直接读写内存、磁盘扇区的能力,最重要的是,可以打印Osaka的ASCII艺术 :)
如何运行/编译
包含了一个预编译的可引导ISO镜像,可以在任何常规虚拟化软件中使用。 要从源代码编译,请执行'sudo make run'并祈祷最好的结果。二进制文件将被构建,QEMU将从虚拟磁盘引导。
你可能需要以下软件包:g++、binutils、libc6-dev-i386、qemu-system-x86_64 grub-legacy、grub2、xorriso。
如果你计划使用其他模拟器,请确保它支持piix4 ide存储、约8MB内存和PC扬声器支持基本音频。模拟是运行该操作系统的首选方式,因为在真实硬件上运行需要非常旧的机器才能使驱动程序工作,并且不关心机器上的数据,因为该操作系统不会询问你是否要覆盖预先存在的系统分区,它会直接执行。此外,该操作系统经常崩溃(大多数时候是故意的),这在裸机上会非常烦人。
官方手册和文档
官方用户手册可在我的个人网站Leechplus上找到,地址为projects/osakaOS/introduction。
如何使用PulseAudio获得音频
如果你使用Linux主机并像我一样使用pulseaudio,请将此行load-module module-native-protocol-unix auth-anonymous=1 socket=/tmp/pulse-socket
添加到/etc/pulse/default.pa
。然后重启pulseaudio,makefile中的设置应该就能工作。(原帖在此)
附加信息
这个项目将在我的YouTube页面上每月更新。
这个项目部分基于WYOOS教程系列。虽然出于各种原因,教程中的许多内容已被更改或移除。
1.1版本修复了1.0中的许多错误并添加了新功能,但仍不完美。如果你发现任何你希望我在下一版本修复的错误,请告诉我。
而且还有图形。目前它们处于非常糟糕的状态,但我确实有计划进一步开发它们。还有一些多任务和网络的实现,但目前利用不足。
为什么你要为这个角色制作一个完整的操作系统?你是不是有点痴迷? 不,我只是觉得这样会很有趣。
完整命令列表
通用
"say (字符串)" - 打印传递的任何参数。
"help" - 列出常用命令和键盘快捷键。
"clear" - 清除屏幕上的文本。
驱动程序/系统
"delay (整数)" - 使用PIT计时器将系统延迟(整数)毫秒。
"beep (整数)" - 使用PC扬声器以(整数)频率发出蜂鸣声。
"rmem (整数)" - 从(整数)内存地址读取值。
"wmem (整数) (整数)" - 将第二个(整数)值写入第一个(整数)内存地址。
"rdisk (整数) (整数)" - 从第一个(整数)扇区号读取第二个(整数)字节数。
"wdisk (整数) (字符串)" - 将(字符串)数据写入(整数)扇区。
文件系统
"files" - 列出所有已知文件和当前分配的文件数。
"size (文件)" - 打印出(文件)的大小(以字节为单位)。
"delete (文件)" - 从文件系统中删除并移除(文件)。
杂项
"osaka (整数)" - 打印Osaka ASCII艺术。
"dad" - 打印更多ASCII艺术。
"random (任何内容)" - 使用给定参数执行随机命令。
"PANIC" - 恐慌汽车警报,必须重启系统。
"explode" - 在系统崩溃时发出烦人的蜂鸣声和图形混乱。
"sata (整数) (字符串)" - 字符串应该是一个完整的命令,重复执行(整数)次,如果(整数)为0或未提供,将永远重复该命令。
"andagi" - 打印出"sata andagi"。
AYUMUSCRIPT
"int (字符串) (整数)" - 定义名为(字符串)且值为(整数)的变量。
"+ (字符串) (整数)" - 将值(整数)添加到变量(字符串)。
"- (字符串) (整数)" - 从变量(字符串)中减去值(整数)。
"* (字符串) (整数)" - 将变量(字符串)乘以值(整数)。
"/ (字符串) (整数)" - 将变量(字符串)除以值(整数)。
"% (字符串) (整数)" - 将变量(字符串)对值(整数)取模。
"& (字符串) (整数)" - 将变量(字符串)与值(整数)进行AND运算。
"| (字符串) (整数)" - 将变量(字符串)与值(整数)进行OR运算。
"^ (字符串) (整数)" - 将变量(字符串)与值(整数)进行XOR运算。
"if/loop (变量/整数) (运算符) (变量/整数)" - 确定表达式是否为真,如果是,则不变,如果不是,则不处理命令。
"fi/pool" - 允许再次处理命令。
"rng" - 生成随机数并将其保存在返回值($R)中。
"// (字符串)" - 不执行任何操作,用于AyumuScript文件中的注释。
"ex (文件)" - 将文件作为脚本执行。