aboutsummaryrefslogtreecommitdiff
path: root/src/console.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/console.zig')
-rw-r--r--src/console.zig36
1 files changed, 18 insertions, 18 deletions
diff --git a/src/console.zig b/src/console.zig
index 6fc5043..0b331ca 100644
--- a/src/console.zig
+++ b/src/console.zig
@@ -1,10 +1,10 @@
const fmt = @import("std").fmt;
const Writer = @import("std").io.Writer;
-
+
const VGA_WIDTH = 80;
const VGA_HEIGHT = 25;
const VGA_SIZE = VGA_WIDTH * VGA_HEIGHT;
-
+
pub const ConsoleColors = enum(u8) {
Black = 0,
Blue = 1,
@@ -23,39 +23,39 @@ pub const ConsoleColors = enum(u8) {
LightBrown = 14,
White = 15,
};
-
+
var row: usize = 0;
var column: usize = 0;
var color = vgaEntryColor(ConsoleColors.LightGray, ConsoleColors.Black);
var buffer = @as([*]volatile u16, @ptrFromInt(0xB8000));
-
+
fn vgaEntryColor(fg: ConsoleColors, bg: ConsoleColors) u8 {
- return @enumToInt(fg) | (@enumToInt(bg) << 4);
+ return @intFromEnum(fg) | (@intFromEnum(bg) << 4);
}
-
+
fn vgaEntry(uc: u8, new_color: u8) u16 {
- var c: u16 = new_color;
-
+ const c: u16 = new_color;
+
return uc | (c << 8);
}
-
+
pub fn initialize() void {
clear();
}
-
+
pub fn setColor(new_color: u8) void {
color = new_color;
}
-
+
pub fn clear() void {
- @memset(u16, buffer[0..VGA_SIZE], vgaEntry(' ', color));
+ @memset(buffer[0..VGA_SIZE], vgaEntry(' ', color));
}
-
+
pub fn putCharAt(c: u8, new_color: u8, x: usize, y: usize) void {
const index = y * VGA_WIDTH + x;
buffer[index] = vgaEntry(c, new_color);
}
-
+
pub fn putChar(c: u8) void {
putCharAt(c, color, column, row);
column += 1;
@@ -66,19 +66,19 @@ pub fn putChar(c: u8) void {
row = 0;
}
}
-
+
pub fn puts(data: []const u8) void {
for (data) |c|
putChar(c);
}
-
+
pub const writer = Writer(void, error{}, callback){ .context = {} };
-
+
fn callback(_: void, string: []const u8) error{}!usize {
puts(string);
return string.len;
}
-
+
pub fn printf(comptime format: []const u8, args: anytype) void {
fmt.format(writer, format, args) catch unreachable;
}