#register #graphics #access #hardware #data #structures

无std vga

支持vga特定函数、数据结构和寄存器

13次发布

0.2.9 2023年6月12日
0.2.8 2023年3月1日
0.2.7 2021年6月3日
0.2.6 2021年2月15日
0.2.1 2020年3月26日

#51无标准库

Download history 82/week @ 2024-03-11 92/week @ 2024-03-18 35/week @ 2024-03-25 82/week @ 2024-04-01 26/week @ 2024-04-08 32/week @ 2024-04-15 34/week @ 2024-04-22 39/week @ 2024-04-29 23/week @ 2024-05-06 30/week @ 2024-05-13 47/week @ 2024-05-20 32/week @ 2024-05-27 32/week @ 2024-06-03 33/week @ 2024-06-10 22/week @ 2024-06-17 34/week @ 2024-06-24

123 每月下载量
用于 4 包

MIT/Apache

155KB
2.5K SLoC

Build Status Docs.rs Badge

vga

该包提供了vga特定的函数、数据结构和访问各种寄存器的功能。

内存地址 0xA0000 -> 0xBFFFF 必须可读可写,以便该包正常运行。

注意:该包目前处于实验阶段,可能会因积极开发而发生变化。

文本模式

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);

图形模式

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)
}

依赖项

~1.5MB
~20K SLoC