Crates.io | dos-like |
lib.rs | dos-like |
version | 0.4.0 |
source | src |
created_at | 2022-03-05 18:05:18.580465 |
updated_at | 2023-10-18 20:42:09.945942 |
description | Framework for writing DOS-like applications |
homepage | |
repository | https://github.com/Enet4/dos-like-rs |
max_upload_size | |
id | 544149 |
size | 97,615 |
dos-like
for Rust This project provides access to Mattias Gustavsson's dos-like
framework,
so as to write DOS-like applications in Rust.
This crate is not a regular library.
It defines a main function on its own.
For the executable linking to work correctly,
the main source file needs to declare no main
and define an extern C function dosmain
instead.
#![no_main]
#[no_mangle]
pub extern "C" fn dosmain() -> i32 {
// your code here
0
}
A utility macro is available as an alternative to declaring the function:
#![no_main]
dos_like_rs::dos_main! {
// your code here
}
See the examples for a typical application structure,
which are based on the original dos-like
examples.
A C compiler needs to be available (uses cc
).
The dos-like framework is statically linked,
just like in a C program.
Since the initiator is based on routines in C, this also means that panic unwinding will not work, so it is best to configure your project to abort on panic. In your Cargo.toml:
[profile.dev]
panic = "abort"
[profile.release]
panic = "abort"
Check out the dos-like
README for additional requirements.
disable-screen-frame
compiles dos-like
so that
the CRT screen frame around the viewport does not appear.These bindings have been tested on Linux, Windows and MacOS Monterey (x86). WebAssembly support is currently not guaranteed (but your assistance on this would be greatly appreciated!).
When working on this project,
ensure that the git submodule in dos-like-sys/dos-like
was populated
(either by cloning with --recurse-submodules
or by calling git submodule update --init
).
Some of the examples do not work unless with this submodule checked out.
The Rust bindings are licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
The dos-like
framework remains licensed
as defined in the original LICENSE file.