#dos #vga #graphics #ms-dos #opl #source-file

sys dos-like

DOS类似应用程序开发框架

5个版本 (3个破坏性更新)

0.4.0 2023年10月18日
0.3.1 2022年7月26日
0.3.0 2022年3月29日
0.2.3 2022年3月17日
0.1.0 2022年3月5日

游戏开发 中排名 #302

自定义许可

2MB
5.5K SLoC

C 3.5K SLoC // 0.2% comments Rust 1.5K SLoC // 0.0% comments Shell 9 SLoC

dos-like for Rust — 最新版本 文档 持续集成状态 依赖状态

本项目提供了访问 Mattias Gustavsson的dos-like框架 的权限,以便在Rust中编写类似DOS的应用程序。

Rotozoom example written in Rust

如何使用

此包不是一个常规库。 它定义了自己的主函数。为了正确链接可执行文件,主源文件需要声明没有 main 并定义一个 extern C 函数 dosmain

#![no_main]

#[no_mangle]
pub extern "C" fn dosmain() -> i32 {
    // your code here

    0
}

提供了一个实用宏作为声明函数的替代方案

#![no_main]

dos_like_rs::dos_main! {
    // your code here
}

请参阅 示例 以了解典型应用程序结构,这些示例基于原始的 dos-like 示例。

需要可用的C编译器(使用 cc)。dos-like框架是静态链接的,就像C程序一样。

由于启动器基于C中的例程,这也意味着不会工作 panic unwinding,因此最好将您的项目配置为在 panic 上终止。在您的 Cargo.toml 中

[profile.dev]
panic = "abort"

[profile.release]
panic = "abort"

查看 dos-like README 了解其他要求。

Cargo功能

  • disable-screen-frame 编译 dos-like 以确保视图周围的CRT屏幕框架不会出现。

平台支持

这些绑定已在Linux、Windows和MacOS Monterey (x86)上进行了测试。目前无法保证WebAssembly支持(但您的帮助将非常受欢迎!)。

构建

在处理此项目时,请确保在 dos-like-sys/dos-like 中的 git 子模块已填充(通过使用 --recurse-submodules 进行克隆或通过调用 git submodule update --init)。某些示例不检查此子模块将无法正常工作。

许可和归属声明

Rust 绑定在以下任一项下获得许可:

您可选择。

除非您明确声明,否则您有意提交以包含在作品中的任何贡献,如 Apache-2.0 许可证中定义,应按上述方式双重许可,而无需任何额外的条款或条件。

dos-like 框架的许可按照原始 LICENSE 文件 中定义。

依赖项