diff options
Diffstat (limited to 'src/console.zig')
| -rw-r--r-- | src/console.zig | 36 |
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; } |
