various changes and wat things

master
Able 2022-01-07 10:31:47 -06:00
parent 4b5ea18e0c
commit 1b51ff7e8b
16 changed files with 146 additions and 22 deletions

36
ableos/Cargo.lock generated
View File

@ -16,6 +16,7 @@ dependencies = [
"qoi_rs",
"spin",
"uart_16550",
"vga",
"volatile 0.2.7",
"wasmi",
"x86_64",
@ -45,6 +46,21 @@ version = "0.9.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6b0718f186cd449b21f044683933284ed90fb83f3e13949ff0e03b0b6f02e38e"
[[package]]
name = "conquer-once"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7c6d3a9775a69f6d1fe2cc888999b67ed30257d3da4d2af91984e722f2ec918a"
dependencies = [
"conquer-util",
]
[[package]]
name = "conquer-util"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e763eef8846b13b380f37dfecda401770b0ca4e56e95170237bd7c25c7db3582"
[[package]]
name = "cpuio"
version = "0.3.0"
@ -64,6 +80,12 @@ dependencies = [
"libm",
]
[[package]]
name = "font8x8"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "875488b8711a968268c7cf5d139578713097ca4635a76044e8fe8eedf831d07e"
[[package]]
name = "lazy_static"
version = "1.4.0"
@ -191,6 +213,20 @@ dependencies = [
"x86_64",
]
[[package]]
name = "vga"
version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67cbcb7bfff998d176ffb8f2c3dfd6cb0fe62740e36dee6c64fc3928c01001bf"
dependencies = [
"bitflags",
"conquer-once",
"font8x8",
"num-traits",
"spinning_top",
"x86_64",
]
[[package]]
name = "volatile"
version = "0.2.7"

View File

@ -30,6 +30,8 @@ linked_list_allocator = "0.9.0"
lliw = "0.2.0"
qoi_rs = "*"
spin = "0.5.2"
vga = "*"
[dependencies.wasmi]
default-features = false

View File

@ -1,7 +1,9 @@
use crate::{
arch::{drivers::vga::WRITER, gdt},
kmain::KEY_BUFFER,
print, println,
};
use alloc::string::ToString;
use lazy_static::lazy_static;
use pic8259::ChainedPics;
use spin;
@ -97,7 +99,14 @@ extern "x86-interrupt" fn keyboard_interrupt_handler(_stack_frame: InterruptStac
}
}
crate::kmain::key_entropy(character.try_into().unwrap());
let crazy = true;
if crazy {
let mut xyz = crate::kmain::KEY_BUFFER.lock();
println!("{:?}", &xyz);
xyz.push(character.try_into().unwrap());
crate::kmain::key_entropy(character.try_into().unwrap());
}
}
DecodedKey {
kind: DecodedKeyKind::RawKey,

View File

@ -2,7 +2,6 @@ use crate::{
arch::drivers::vga::{set_vga_color, Color},
kprint,
};
pub fn colorify(eval: &str) {
let y = eval.split("$");
for z in y {

View File

@ -0,0 +1,7 @@
pub struct Compositor {}
impl Compositor {
pub fn new() -> Self {
Self {}
}
}

View File

@ -0,0 +1,3 @@
//!
pub mod window;
pub mod compositor;

View File

@ -1,15 +1,31 @@
//! used to give a base line example of windows and window handling
use crate::driver_traits::graphics::Point;
use alloc::string::String;
use alloc::vec::Vec;
pub struct MenuOption {
symbol: char,
}
pub type MenuBar = Vec<MenuOption>;
pub struct Window {
// title: String,
title: String,
position: Point,
fullscreen: bool,
}
// all of these should return a result
impl Window {
pub fn fullscreen(&mut self) -> Result<(), u8> {
pub fn new(title: String, position: Point, fullscreen: bool) -> Self {
Self {
title,
position,
fullscreen,
}
}
pub fn fullscreen(&mut self) {
self.fullscreen = true;
Ok(())
}
pub fn revert_fullscreen(&mut self) {
self.fullscreen = false;

View File

@ -0,0 +1 @@

View File

@ -2,14 +2,12 @@
pub mod absi;
pub mod clip;
pub mod compositor;
pub mod futex;
pub mod info;
pub mod kinfo;
pub mod mail;
pub mod server;
pub mod systeminfo;
pub mod virtual_memory;
// pub mod wm;
// added for experimental use
pub mod kinfo;
pub mod mail;
pub mod futex;
pub mod info;
pub const BANNER: &str = include_str!("banner.txt");

View File

@ -1,6 +1,8 @@
#![allow(clippy::empty_loop)]
use crate::{experiments::info::master, relib::clparse};
use alloc::string::{String, ToString};
use crate::{experiments::info::master, log::LOG_STATE, relib::clparse, vga_e};
use {
crate::{
@ -19,11 +21,11 @@ use {
pub extern "C" fn stack_overflow() -> u8 {
stack_overflow();
// meme number
69 // NOTE: Any specific reason for this number asside from memes?
69 // NOTE: Any specific reason for this number aside from memes?
}
lazy_static! {
pub static ref KEY_BUFFER: [DecodedKey; 256] = [DecodedKey::RawKey(123); 256];
pub static ref KEY_BUFFER: spin::Mutex<String> = spin::Mutex::new("".to_string());
pub static ref KEY_BUFFER_POINTER: u8 = 0;
pub static ref THREAD_LIST: spin::Mutex<ThreadList> = spin::Mutex::new(vec![]);
pub static ref TICK: spin::Mutex<u64> = spin::Mutex::new(0);
@ -32,6 +34,7 @@ lazy_static! {
#[no_mangle]
pub fn kernel_main() -> ! {
init::init();
// LOG_STATE.lock().log_to_screen = false;
let mut a_thread = Thread::new();
@ -39,13 +42,11 @@ pub fn kernel_main() -> ! {
a_thread.new_task(test_fn);
a_thread.new_task(test_fn);
THREAD_LIST.lock().push(a_thread);
GraphicsBuffer::draw();
GraphicsBuffer::hide_cursor();
crate::wasm::evaluate();
info!("{} v{}", RELEASE_TYPE, KERNEL_VERSION);
info!(
"Brand String: {:?}",
master().unwrap().brand_string().unwrap()
@ -57,6 +58,9 @@ pub fn kernel_main() -> ! {
{
clparse::test();
}
// vga_e::test_it_fucko();
// stack_overflow();
// crate::arch::shutdown();
sloop()

View File

@ -42,3 +42,6 @@ pub mod wasm;
pub extern crate alloc;
pub extern crate externc_libm as libm;
///////////////////////////////
pub mod vga_e;

View File

@ -42,7 +42,11 @@ impl Log for ANSISerialLogger {
);
}
if LOG_STATE.lock().log_to_screen {
println!("[$BLUE$Debug$RESET$][$GREEN$FakeTempTime$RESET$] {}", val);
// NOTE: LIGHTBLUE because gamma color theory probably
println!(
"[$LIGHTBLUE$Debug$RESET$][$GREEN$FakeTempTime$RESET$] {}",
val
);
}
}
fn error(val: &str) {

View File

@ -5,7 +5,7 @@ use {
#[panic_handler]
fn panic(info: &PanicInfo) -> ! {
println!("{}", info);
// println!("{}", info);
error!("{}", info);
sloop()
}

41
ableos/src/vga_e.rs Normal file
View File

@ -0,0 +1,41 @@
use alloc::string::String;
use vga::colors::Color16;
use vga::writers::{Graphics640x480x16, GraphicsWriter};
pub fn test_it_fucko() {
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);
{
let offset = 110;
mode.draw_character(offset - 15 - 4, 60 + 15 - 4, 'x', Color16::Red);
mode.draw_line(
(offset.try_into().unwrap(), 60),
(offset.try_into().unwrap(), 90),
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 "ableOS".chars().enumerate() {
mode.draw_character(270 + offset * 8, 72, character, Color16::White)
}
}
pub trait GraphicsAPI {
fn addShader() {}
}
pub struct Buffer {
label: String,
resolution: (u64, u64),
// pointer
}

View File

@ -51,7 +51,7 @@ impl Externals for HostFunctions {
}
let arg: u64 = args.nth(0);
let buf = unsafe { String::from_utf8_unchecked(arg.to_le_bytes().to_vec()) };
println!["helllooooooo{}", buf];
println!["{}", buf];
Ok(None)
}
SysCall::CONSOLE_GET_TITLE => Ok(None),
@ -90,7 +90,8 @@ impl ModuleImportResolver for HostFunctions {
}
pub fn evaluate() {
let wasm_binary = include_bytes!("bin/console_out_test.wasm");
// let wasm_binary = include_bytes!("bin/console_out_test.wasm");
let wasm_binary = include_bytes!("bin/rust.wasm");
// Load wasm binary and prepare it for instantiation.
let module = wasmi::Module::from_buffer(&wasm_binary).expect("failed to load wasm");

View File