Skip to content

o8vm/rust_dos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rust DOS (Creating a DOS executable with Rust)

It is possible to create a DOS executable or 1st stage bootloader with Rust.
This is a quick demo of creating COM executable for DOS.

Building

You need a binutils and llvm-tools-preview.

cargo install cargo-binutils
rustup component add llvm-tools-preview

Then you can build the project by running:

cargo build --release

To create a COM executable for DOS, run:

cargo objcopy --release -- -O binary --binary-architecture=i386:x86 rust_dos.com

Running

You can copy rust_dos.com to your DOS image.

examples on Linux

$ sudo partx -av freedos.img
partition: none, disk: freedos.img, lower: 0, upper: 0
Trying to use '/dev/loop1' for the loop device
/dev/loop1: partition table type 'dos' detected
range recount: max partno=1, lower=0, upper=0
/dev/loop1: partition #1 added
$ sudo mount /dev/loop1p1 /mnt
$ sudo cp rust_dos.com /mnt/
$ sudo umount /mnt
$ sudo partx -dv /dev/loop1

Then, you can test it using QEMU:

qemu-system-i386 freedos.img -boot c

You can use the println! macro. Below is an example of HelloWorld:

sample

Others

dpkey module steals key input processing from DOS and converts scan code to ascii code.
about scan code: see PS/2 Keyboard - OSDev Wiki.

sample2

About

Rust DOS : Creating a DOS executable with Rust

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages