mirror of
https://github.com/ringtailsoftware/uvm32.git
synced 2026-06-06 06:53:39 +00:00
Update makefile
This commit is contained in:
parent
096efb3b2c
commit
ce63353156
142 changed files with 61742 additions and 1 deletions
49
apps/zigdoom/src/console.zig
Normal file
49
apps/zigdoom/src/console.zig
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
const std = @import("std");
|
||||
extern fn console_write(data: [*]const u8, len: usize) void;
|
||||
var wbuf:[4096]u8 = undefined;
|
||||
var cw = ConsoleWriter.init(&wbuf);
|
||||
const uvm = @import("uvm.zig");
|
||||
|
||||
pub const WriteError = error{ Unsupported, NotConnected };
|
||||
|
||||
pub const ConsoleWriter = struct {
|
||||
interface: std.Io.Writer,
|
||||
err: ?WriteError = null,
|
||||
|
||||
fn drain(w: *std.Io.Writer, data: []const []const u8, splat: usize) std.Io.Writer.Error!usize {
|
||||
var ret: usize = 0;
|
||||
|
||||
const b = w.buffered();
|
||||
uvm.print(b);
|
||||
_ = w.consume(b.len);
|
||||
|
||||
for (data) |d| {
|
||||
uvm.print(d);
|
||||
ret += d.len;
|
||||
}
|
||||
|
||||
const pattern = data[data.len - 1];
|
||||
for (0..splat) |_| {
|
||||
uvm.print(pattern);
|
||||
ret += pattern.len;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
pub fn init(buf: []u8) ConsoleWriter {
|
||||
return ConsoleWriter{
|
||||
.interface = .{
|
||||
.buffer = buf,
|
||||
.vtable = &.{
|
||||
.drain = drain,
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
pub fn getWriter() *std.Io.Writer {
|
||||
return &cw.interface;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue