dos-like 0.4.0

Framework for writing DOS-like applications
Documentation
#![no_main]

use dos_like::{
    curs_off, goto_xy, key_state, put_str, read_keys, shutting_down, wait_vbl, KeyCode,
};

#[no_mangle]
pub extern "C" fn dosmain() -> i32 {
    goto_xy(2, 2);
    put_str("KEYBOARD DEMO");
    goto_xy(0, 16);
    put_str("ESC - quit");
    curs_off();
    while !shutting_down() {
        wait_vbl();
        let keys = read_keys();

        if !keys.is_empty() {
            goto_xy(5, 5);
            dos_like::text_color(3);
            put_str("!");
            dos_like::text_color(7);

            for (i, key) in keys.iter().enumerate() {
                goto_xy(2, 8 + i as u16);
                put_str("                  ");
                goto_xy(2, 8 + i as u16);
                if key.is_pressed() {
                    put_str(format!("{:?} pressed             ", key.key_code()));
                } else {
                    put_str(format!("{:?} released            ", key.key_code()));
                }
            }
            for i in keys.len()..8 {
                goto_xy(2, 8 + i as u16);
                put_str("                              ");
            }
        } else {
            goto_xy(5, 5);
            put_str(" ");
        }

        if key_state(KeyCode::KEY_ESCAPE) {
            break;
        }
    }
    0
}