forked from AbleOS/ableos
various changes and wat things
This commit is contained in:
parent
6d31f4db29
commit
123a7d880f
36
ableos/Cargo.lock
generated
36
ableos/Cargo.lock
generated
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,8 +99,15 @@ extern "x86-interrupt" fn keyboard_interrupt_handler(_stack_frame: InterruptStac
|
|||
}
|
||||
}
|
||||
|
||||
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,
|
||||
value: key,
|
||||
|
|
|
@ -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 {
|
||||
|
|
7
ableos/src/experiments/compositor/compositor.rs
Normal file
7
ableos/src/experiments/compositor/compositor.rs
Normal file
|
@ -0,0 +1,7 @@
|
|||
pub struct Compositor {}
|
||||
|
||||
impl Compositor {
|
||||
pub fn new() -> Self {
|
||||
Self {}
|
||||
}
|
||||
}
|
3
ableos/src/experiments/compositor/mod.rs
Normal file
3
ableos/src/experiments/compositor/mod.rs
Normal file
|
@ -0,0 +1,3 @@
|
|||
//!
|
||||
pub mod window;
|
||||
pub mod compositor;
|
|
@ -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;
|
1
ableos/src/experiments/compositor/wm.rs
Normal file
1
ableos/src/experiments/compositor/wm.rs
Normal file
|
@ -0,0 +1 @@
|
|||
|
|
@ -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");
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -42,3 +42,6 @@ pub mod wasm;
|
|||
|
||||
pub extern crate alloc;
|
||||
pub extern crate externc_libm as libm;
|
||||
|
||||
///////////////////////////////
|
||||
pub mod vga_e;
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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
41
ableos/src/vga_e.rs
Normal 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
|
||||
}
|
|
@ -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");
|
||||
|
|
0
ableos/src/wasm/text/example.wat
Normal file
0
ableos/src/wasm/text/example.wat
Normal file
Loading…
Reference in a new issue