# this is just a simple prompt to test that shit is working fn cmd_help() puts("commands: help, clear, bars, echo , time, run, zoom in|out\n") fn zoom_by(d) do let s = con.scale + d if s < 1 do s = 1 end if s > 6 do s = 6 end con.scale = s cmd_clear() puts("zoom " ~ s ~ "x\n") end fn cmd_zoom(words) do const dir = if words:len() > 1 words[1] else "" if dir == "in" do zoom_by(1) end else if dir == "out" do zoom_by(-1) end else do puts("usage: zoom in | zoom out\n") end end fn cmd_clear() do fill_rect(0, 0, fb_width(), fb_height(), CON_BG) con.col = 0 con.row = 0 end fn cmd_bars() do const bars = { 0xff5555, 0xffaa00, 0xffff55, 0x55ff55, 0x55ffff, 0x5599ff, 0xaa55ff, 0xffffff } const bw = fb_width() / 8 for i in 0..8 do fill_rect(i * bw, 0, bw, 40, bars[i]) end puts("painted 8 bars from revo\n") end fn bcd(b) (b shr 4) * 10 + (b band 15) fn rtc(reg) do outb(0x70, reg) inb(0x71) end fn cmd_time() puts("utc " ~ bcd(rtc(4)) ~ ":" ~ bcd(rtc(2)) ~ ":" ~ bcd(rtc(0)) ~ "\n") fn run(line) do if line:trim():len() == 0 do puts("> ") return :nil end const words = line:split(" ") const cmd = words[0] match cmd | "help" => cmd_help() | "clear" => cmd_clear() | "bars" => cmd_bars() | "time" => cmd_time() | "run" => cmd_run() | "zoom" => cmd_zoom(words) | "echo" => if line:len() > 5 puts(line:sub(5, line:len() - 5) ~ "\n") else puts("\n") | _ => puts("unknown command: " ~ cmd ~ "\n") puts("> ") end