forked from AbleOS/ableos
push
This commit is contained in:
parent
0db997b435
commit
afddfea8fb
6
Cargo.lock
generated
6
Cargo.lock
generated
|
@ -213,12 +213,12 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "hbbytecode"
|
||||
version = "0.1.0"
|
||||
source = "git+https://git.ablecorp.us/AbleOS/holey-bytes.git#8138d6664fb6983b10192f5a982a8bf5ec327287"
|
||||
source = "git+https://git.ablecorp.us/AbleOS/holey-bytes.git#a1e692eac73fbf44f1fbf816832aaae0ea8f04d7"
|
||||
|
||||
[[package]]
|
||||
name = "hblang"
|
||||
version = "0.1.0"
|
||||
source = "git+https://git.ablecorp.us/AbleOS/holey-bytes.git#8138d6664fb6983b10192f5a982a8bf5ec327287"
|
||||
source = "git+https://git.ablecorp.us/AbleOS/holey-bytes.git#a1e692eac73fbf44f1fbf816832aaae0ea8f04d7"
|
||||
dependencies = [
|
||||
"hashbrown",
|
||||
"hbbytecode",
|
||||
|
@ -229,7 +229,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "hbvm"
|
||||
version = "0.1.0"
|
||||
source = "git+https://git.ablecorp.us/AbleOS/holey-bytes.git#8138d6664fb6983b10192f5a982a8bf5ec327287"
|
||||
source = "git+https://git.ablecorp.us/AbleOS/holey-bytes.git#a1e692eac73fbf44f1fbf816832aaae0ea8f04d7"
|
||||
dependencies = [
|
||||
"hbbytecode",
|
||||
]
|
||||
|
|
|
@ -141,7 +141,7 @@ Surface := struct {
|
|||
}
|
||||
|
||||
put_line := fn(self: Self, p0: Vec2(uint), p1: Vec2(uint), color: Color): void {
|
||||
if math.abs(uint, p1.y - p0.y) < math.abs(uint, p1.x - p0.x) {
|
||||
if math.abs(int, @bitcast(p1.y - p0.y)) < math.abs(int, @bitcast(p1.x - p0.x)) {
|
||||
if p0.x > p1.x {
|
||||
@inline(put_line_low, self, p1, p0, color)
|
||||
} else {
|
||||
|
|
|
@ -23,6 +23,7 @@ $write_length := fn(length: uint, msg: ^u8, buffer_id: uint): void {
|
|||
BufferMsg := packed struct {operation: u8, msg: ^u8, msg_len: uint}
|
||||
|
||||
create := fn(msg: ^u8): uint {
|
||||
// for some reason not inlining here breaks things
|
||||
return @eca(3, 0, BufferMsg.(0, msg, @inline(string.length, msg)), @sizeof(BufferMsg))
|
||||
}
|
||||
|
||||
|
@ -35,5 +36,6 @@ $delete_buffer := fn(buffer_id: uint): void {
|
|||
}
|
||||
|
||||
search := fn(msg: ^u8): uint {
|
||||
// for some reason not inlining here breaks things
|
||||
return @eca(3, 0, BufferMsg.(3, msg, @inline(string.length, msg)), @sizeof(BufferMsg))
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
.{string} := @use("../../stn/src/lib.hb")
|
||||
|
||||
get := fn($Expr: type, query: ^u8): Expr {
|
||||
return @eca(3, 5, query, @inline(string.length, query))
|
||||
return @eca(3, 5, query, string.length(query))
|
||||
}
|
|
@ -12,6 +12,7 @@ dt := @use("dt.hb")
|
|||
process := @use("process.hb")
|
||||
sleep := @use("sleep.hb")
|
||||
|
||||
// todo: replace with comptime message (for zero cost)
|
||||
panic := fn(message: ?^u8): never {
|
||||
log.error("Error: Panic Called, Message:\0")
|
||||
if message == null {
|
||||
|
@ -21,3 +22,27 @@ panic := fn(message: ?^u8): never {
|
|||
}
|
||||
die
|
||||
}
|
||||
|
||||
$unsigned_int := fn($T: type): bool {
|
||||
return T == uint | T == u8 | T == u16 | T == u32
|
||||
}
|
||||
|
||||
$signed_int := fn($T: type): bool {
|
||||
return T == int | T == i8 | T == i16 | T == i32
|
||||
}
|
||||
|
||||
$integer := fn($T: type): bool {
|
||||
return unsigned_int(T) | signed_int(T)
|
||||
}
|
||||
|
||||
$float := fn($T: type): bool {
|
||||
return T == f32 | T == f64
|
||||
}
|
||||
|
||||
$primitive := fn($T: type): bool {
|
||||
return integer(T) | float(T) | T == bool
|
||||
}
|
||||
|
||||
$float_bytes := fn($T: type): type {
|
||||
if T == f64 return uint else if T == f32 return u32
|
||||
}
|
File diff suppressed because one or more lines are too long
|
@ -1,7 +1,7 @@
|
|||
subscribe_to_interrupt := fn(interrupt_number: u8): bool {
|
||||
$subscribe_to_interrupt := fn(interrupt_number: u8): bool {
|
||||
return false
|
||||
}
|
||||
// Pauses execution until the interrupt occures
|
||||
sleep_until_interrupt := fn(interrupt_number: u8): void {
|
||||
$sleep_until_interrupt := fn(interrupt_number: u8): void {
|
||||
@eca(6, interrupt_number)
|
||||
}
|
|
@ -22,6 +22,11 @@ palette := [render.Color].(render.LIGHT_RED, render.LIGHT_YELLOW, render.LIGHT_G
|
|||
$LEN_PALETTE := @sizeof(@TypeOf(palette)) / @sizeof(render.Color)
|
||||
|
||||
example := fn(): void {
|
||||
z := math.log(f32, 10.0, 100.0)
|
||||
z2 := math.sign(f32, 10.0)
|
||||
z = math.min(f32, 10.0, 100.0)
|
||||
z = math.max(f32, 10.0, 100.0)
|
||||
|
||||
screen := @as(render.Surface, idk)
|
||||
window := @as(?sunset.Window, null)
|
||||
if USE_SUNSET {
|
||||
|
@ -66,15 +71,15 @@ example := fn(): void {
|
|||
if iteration < MAX_ITERATION {
|
||||
log_zn := math.ln(f64, x * x + y * y) / 2
|
||||
nu := math.ln(f64, log_zn / math.LN_2) / math.LN_2
|
||||
smoothed := @itf(@bitcast(iteration + 1)) - nu
|
||||
smoothed := @as(f64, @itf(@bitcast(iteration + 1))) - nu
|
||||
smoothed_int := @fti(smoothed)
|
||||
normalised := smoothed - @itf(smoothed_int)
|
||||
colour0 := palette[@bitcast(smoothed_int) % LEN_PALETTE]
|
||||
colour1 := palette[@bitcast(smoothed_int + 1) % LEN_PALETTE]
|
||||
colour := render.Color.{
|
||||
r: @intcast(@fti(math.lerp(f64, @itf(@intcast(colour0.r)), @itf(@intcast(colour1.r)), normalised))),
|
||||
g: @intcast(@fti(math.lerp(f64, @itf(@intcast(colour0.g)), @itf(@intcast(colour1.g)), normalised))),
|
||||
b: @intcast(@fti(math.lerp(f64, @itf(@intcast(colour0.b)), @itf(@intcast(colour1.b)), normalised))),
|
||||
r: @intcast(@fti(math.lerp(f64, @itf(colour0.r), @itf(colour1.r), normalised))),
|
||||
g: @intcast(@fti(math.lerp(f64, @itf(colour0.g), @itf(colour1.g), normalised))),
|
||||
b: @intcast(@fti(math.lerp(f64, @itf(colour0.b), @itf(colour1.b), normalised))),
|
||||
a: 0,
|
||||
}
|
||||
screen.put_pixel(.(px, py), colour)
|
||||
|
@ -82,8 +87,8 @@ example := fn(): void {
|
|||
px += 1
|
||||
}
|
||||
py += 1
|
||||
}
|
||||
if USE_SUNSET loop {
|
||||
if USE_SUNSET {
|
||||
_ = sunset.client.send_frame(window)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue