53 lines
636 B
V
53 lines
636 B
V
module main
|
|
|
|
import vm
|
|
import readline
|
|
|
|
mut kernel := none
|
|
|
|
fn start_kernel(){
|
|
kernel = Kernel{}
|
|
}
|
|
|
|
fn kill(){
|
|
kernel = none
|
|
}
|
|
|
|
struct Kernel{
|
|
|
|
pub mut:
|
|
stdin := []u8{};
|
|
stdout := []u8{};
|
|
|
|
input_device := 'keyboard'
|
|
output_device := 'screen'
|
|
}
|
|
|
|
|
|
fn (mut kernel Kernel) read()
|
|
{
|
|
|
|
mut input := none
|
|
|
|
match kernel.input_device {
|
|
'keyboard' {
|
|
|
|
mut r := readline.Readline{}
|
|
input = r.read_line('')!
|
|
}
|
|
}
|
|
|
|
kernel.stdin = input.bytes()
|
|
}
|
|
|
|
fn (mut kernel Kernel) exit() { exit(0) }
|
|
|
|
fn (mut kernel Kernel) write()
|
|
{
|
|
kernel.stdout = output
|
|
|
|
match kernel.output_device {
|
|
|
|
'screen' { print(stdout.bytestr()) }
|
|
}
|
|
} |