aboutsummaryrefslogtreecommitdiff
path: root/kernel/output/writer.sats
diff options
context:
space:
mode:
authorXander <xander@icth.xyz>2023-07-04 13:26:09 +0200
committerXander <xander@icth.xyz>2023-07-04 13:26:09 +0200
commit415f75c275c991949ef7c9d2c62d07e8eba761b5 (patch)
treef52ea1c30e179b717ca10c6d170b723e3c5132c6 /kernel/output/writer.sats
parent5adc7cf997d481a6afb3ed95573d6eff44cbdd5b (diff)
downloadats-os-415f75c275c991949ef7c9d2c62d07e8eba761b5.tar.xz
ats-os-415f75c275c991949ef7c9d2c62d07e8eba761b5.zip
Overloading print + cleanup
Diffstat (limited to 'kernel/output/writer.sats')
-rw-r--r--kernel/output/writer.sats33
1 files changed, 33 insertions, 0 deletions
diff --git a/kernel/output/writer.sats b/kernel/output/writer.sats
new file mode 100644
index 0000000..fd33424
--- /dev/null
+++ b/kernel/output/writer.sats
@@ -0,0 +1,33 @@
+#define BUFFER_HEIGHT 23
+#define BUFFER_WIDTH 80
+#define N BUFFER_HEIGHT * BUFFER_WIDTH
+
+datatype color =
+ | Black
+ | Blue
+ | Green
+ | Cyan
+ | Red
+ | Magenta
+ | Brown
+ | LightGray
+ | DarkGray
+ | LightBlue
+ | LightGreen
+ | LightCyan
+ | LightRed
+ | Pink
+ | Yellow
+ | White
+
+
+typedef screenChar = @{ ascii_character = char, color_code = uint8}
+
+vtypedef buffer = [l : agz] (@[screenChar][N] @ l | ptr l)
+typedef writer = @{position = [a:int | a >= 0 && a < N] int (a), color_code = uint8}
+
+castfn i2u8 {n: nat} (i: int n): uint8 n
+
+fun put_string (str : string) : void
+fun clear_screen() : void
+