#vga #no_std

no-std vga

Support for vga specific functions, data structures, and registers

9 releases

0.2.5 Nov 2, 2020
0.2.4 May 21, 2020
0.2.3 Apr 6, 2020
0.2.1 Mar 26, 2020
0.1.2 Mar 19, 2020

#54 in No standard library

Download history 10/week @ 2020-08-03 34/week @ 2020-08-10 23/week @ 2020-08-17 18/week @ 2020-08-24 14/week @ 2020-08-31 43/week @ 2020-09-07 13/week @ 2020-09-14 11/week @ 2020-09-21 14/week @ 2020-09-28 22/week @ 2020-10-05 10/week @ 2020-10-12 18/week @ 2020-10-19 13/week @ 2020-10-26 41/week @ 2020-11-02 22/week @ 2020-11-09 13/week @ 2020-11-16

81 downloads per month
Used in 2 crates

MIT/Apache

145KB
2.5K SLoC

Build Status Docs.rs Badge

vga

This crate provides vga specific functions, data structures, and access to various registers.

Memory addresses 0xA0000 -> 0xBFFFF must be readable and writeable this crate to work properly.

Note: This crate is currently experimental and subject to change since it's in active development.

Text Mode

use vga::colors::{Color16, TextModeColor};
use vga::writers::{ScreenCharacter, TextWriter, Text80x25};

let text_mode = Text80x25::new();
let color = TextModeColor::new(Color16::Yellow, Color16::Black);
let screen_character = ScreenCharacter::new(b'T', color);

text_mode.set_mode();
text_mode.clear_screen();
text_mode.write_character(0, 0, screen_character);

Graphics Mode

use vga::colors::Color16;
use vga::writers::{Graphics640x480x16, GraphicsWriter};

let mode = Graphics640x480x16::new();
mode.set_mode();
mode.clear_screen(Color16::Black);
mode.draw_line((80, 60), (80, 420), Color16::White);
mode.draw_line((80, 60), (540, 60), Color16::White);
mode.draw_line((80, 420), (540, 420), Color16::White);
mode.draw_line((540, 420), (540, 60), Color16::White);
mode.draw_line((80, 90), (540, 90), Color16::White);
for (offset, character) in "Hello World!".chars().enumerate() {
    mode.draw_character(270 + offset * 8, 72, character, Color16::White)
}

Dependencies

~1MB
~14K SLoC