← 返回信息流
AI 资讯Hacker News·3 小时前

M/PC发布串联式操作系统

原标题:M/PC – A Concatenative OS

速览

M/PC是一款基于串联式范式的操作系统,其设计理念与传统的堆栈或图灵机模型不同。它通过函数组合与数据流驱动方式实现系统调用,有望提升模块化与并行处理能力。该系统的发布可能为操作系统领域带来新的探索方向。

AI 深度解读

背景

M/PC 是一个专为 Varvara 平台设计的串联式操作系统,其设计灵感来源于 Openfirmware。Varvara 是一个基于虚拟机的复古计算环境,通常运行在 Uxn 模拟器上。传统操作系统通常依赖图形化的文件浏览器来管理文件和启动程序,而 M/PC 旨在提供一个没有文件浏览器的替代方案,用户通过命令行的后缀表示法直接操作文件系统。这种设计延续了 Forth 语言和串联式编程的传统,强调简洁、可组合和低资源占用。

核心内容

M/PC 的核心操作基于后缀表示法(postfix notation),即操作数出现在操作符之前。例如,要获取文件夹 folder/ 中文件 file_name 的字节数,可以这样写:

folder/ file_name cat len dec

这里,cat 将文件夹路径和文件名拼接为一个路径,len 获取该文件的长度(十六进制),dec 将十六进制转换为十进制。

文件本身可以存储可重用的命令序列。通过波浪线前缀 ~ 可以包含另一个文件的内容。例如,在文件 show-slide 中可能存放了一系列命令,然后在主界面中通过 ~show-slide 执行它:

slide_ swp cat 3cx22.icn cat 1 icn
1 ~show-slide

系统的界面非常简洁:屏幕顶部只有一个提示符,用户在此输入命令。屏幕其余部分用于显示栈内容和输出。

控制方式
M/PC 可以基本脱离键盘操作,通过方向键和按钮来导航文件夹和启动 ROM 文件:

  • 左/右:在栈中导航(选择不同符号)
  • 上/下:滚动栈内容
  • A 键:评估选中的符号(执行或查看)
  • B 键:进入目录 / 返回上级

Kiosk 模式
M/PC 可以作为 BIOS ROM 启动。当用户按下 F4 键时,系统会返回到 BIOS 界面而不是触发重启。启动命令示例:

uxnemu m_pc.rom orca.rom run

这里 m_pc.rom 是 M/PC 系统,orca.rom 是后续运行的 ROM 文件,run 参数指示直接运行。

壁纸
启动时,M/PC 会尝试绘制一个名为 wallpaperWWxHH.icn 的 ICN 文件。其中 WW 是屏幕宽度除以 8 的十六进制数值,HH 是屏幕高度除以 8 的十六进制数值。例如,屏幕分辨率为 320×240,则宽度除以 8 得 40(十进制),即 0x28;高度除以 8 得 30(十进制),即 0x1E,因此文件名应为 wallpaper28x1E.icn

原语列表
M/PC 提供一组内置原语(primitives),涵盖文件管理、栈操作、算术、转换和输出等:

| 原语 | 栈效果 | 说明 | |------|--------|------| | dir | ( -- [f] ) | 将当前位置的文件名列表放入栈 | | mov | ( path -- [f] ) | 移动当前目录到 current/path,然后执行 dir | | now | ( -- date time ) | 将当前日期和时间放入栈(如 Tue, 23 Jun 202611:48:45) | | run | ( f.rom -- ok ) | 运行指定的 ROM 文件,按 F4 返回 | | icn | ( f.icn blend -- ok ) | 用指定混合模式绘制 ICN 文件 | | txt | ( f.txt line -- ok ) | 从指定行开始读取文本文件 | | len | ( f -- hex ) | 返回文件的十六进制长度 | | put | ( body f -- ok ) | 创建文件,内容为 body | | get | ( f -- body ) | 将文件内容放入栈 | | cpy | ( fsrc fdst -- ok ) | 复制 fsrc 的内容到 fdst | | era | ( f -- ok ) | 删除文件 | | ren | ( fsrc fdst -- ok ) | 将文件 fsrc 重命名为 fdst | | pop | ( a -- ) | 弹出栈顶符号 | | dup | ( a -- a a ) | 复制栈顶符号 | | ovr | ( a b -- a b a ) | 将第二个符号复制到栈顶 | | swp | ( a b -- b a ) | 交换栈顶两个符号 | | rot | ( a b c -- b c a ) | 将第三个符号旋转到栈顶 | | add | ( a b -- a+b ) | 求和(数字符号) | | sub | ( a b -- a-b ) | 求差 | | dec | ( hex -- dec ) | 将十六进制数转换为十进制 | | hex | ( dec -- hex ) | 将十进制数转换为十六进制 | | cat | ( a b -- ab ) | 拼接两个符号(字符串) | | cmp | ( a b -- bool ) | 比较两个符号的名称,返回布尔值 | | and | ( a b -- bool ) | 逻辑与:两者为真则真 | | ora | ( a b -- bool ) | 逻辑或:任一为真则真 | | rsz | ( width height -- ) | 调整屏幕尺寸,若支持则返回真 | | out | ( a -- ) | 向控制台/写入接口输出符号 | | bye | ( -- ) | 退出系统 |

关键要点

  • 后缀表示法:所有操作均采用后缀(逆波兰)语法,操作数在前,操作符在后,这与 Forth 和 PostScript 等语言一致。
  • 无文件浏览器:系统不提供传统的图形化文件管理器,所有文件操作(导航、查看、运行、创建、删除)均通过命令完成。
  • 文件即脚本:文件可以存储命令序列,使用 ~ 前缀即可包含并执行它们,实现了简单的脚本化扩展。
  • 无键盘操作:通过方向键(左/右导航栈,上/下滚动)和 A/B 键(评估/目录返回)可完全脱离键盘使用。
  • Kiosk 模式:可作为 BIOS ROM 启动,F4 键返回 BIOS 而非重启,适合嵌入式和展示场景。
  • 自动壁纸:启动时根据屏幕分辨率自动加载特定格式命名的 ICN 文件作为壁纸,无需额外命令。
  • 完整原语集:提供 27 个内置原语,覆盖目录管理、文件读写、栈操作、算术、转换、布尔逻辑、屏幕控制以及退出等常用功能。

意义与影响

M/PC 体现了一种极简而强大的操作系统设计哲学。在资源极度有限的 Varvara 平台上,它通过串联式编程模型实现了文件管理和程序启动,无需复杂的内存管理或多任务调度。这种设计对于现代操作系统研究有几点启发:

  1. 交互模式的简化:只用一个提示符和栈模型,降低了系统的认知负荷,同时保留了足够的表达能力。后缀表示法使得用户可以通过组合简单的原语构建复杂的操作流程。
  2. 可移植性与可嵌入性:作为 BIOS ROM 运行的能力意味着它可以轻松集成到其他 Uxn 应用的启动流程中,充当轻量级的文件管理和执行环境。
  3. 复古与教育价值:M/PC 适合在复古计算社区中使用,也适合用于教学——它直观地展示了文件系统、栈机以及无浏览器交互的原理。
  4. 脚本化的扩展能力:通过
查看原文 →wiki.xxiivv.com