summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob L. Kreuze <zerodaysfordays@sdf.lonestar.org>2020-01-01 13:18:59 -0500
committerJakob L. Kreuze <zerodaysfordays@sdf.lonestar.org>2020-01-01 13:18:59 -0500
commit8873b26c4212a3acedc64636ec256eff73252580 (patch)
tree9c5e0b2a154aa6eb08384d75abb794f5af928b91
parent0a1fdf45794b0f00be44bd48113daea90aace65e (diff)
Implement program loading.
-rw-r--r--main.myr72
1 files changed, 58 insertions, 14 deletions
diff --git a/main.myr b/main.myr
index a2a54be..b51de02 100644
--- a/main.myr
+++ b/main.myr
@@ -1,29 +1,73 @@
use std
use sdl
+const winwidth = 960
+const winheight = 480
+
+const scrwidth = 64
+const scrheight = 32
+const scrsz = scrwidth * scrheight
+
+const memsz = 4096
+const stksz = 16
+const regsz = 16
+
+const clrscr = {b, n
+ var i
+ for i = 0; i < n; i++;
+ b#[i] = 0
+ ;;
+}
+
+const loadprg = {b, fname
+ var fd, i, buf
+ match std.open(fname, std.Oread)
+ | `std.Ok(n): fd = n
+ | `std.Err(errno):
+ std.die(std.fmt("could not open {}\n", fname))
+ ;;
+
+ buf = std.slalloc(0xfff - 0x200)
+ match std.read(fd, buf)
+ | `std.Ok(n):
+ for i = 0; i < 0xfff - 0x200; i++;
+ b#[i + 0x200] = (buf[i] : uint8)
+ ;;
+ | `std.Err(n):
+ std.die(std.fmt("could not read {}\n", fname))
+ ;;
+}
+
const main = {
var win, r, tex
- var pixels : uint8[64 * 32]
sdl.init(sdl.INIT_VIDEO)
- win = sdl.mkwin(("chip\0" : byte#), sdl.WIN_POS_UNSPEC, sdl.WIN_POS_UNSPEC, 640, 480, sdl.WIN_OPENGL)
+ win = sdl.mkwin(("chip\0" : byte#),
+ sdl.WIN_POS_UNSPEC,
+ sdl.WIN_POS_UNSPEC,
+ winwidth,
+ winheight,
+ sdl.WIN_OPENGL)
r = sdl.mkrenderer(win, -1, sdl.RENDERER_ACCEL)
tex = sdl.mktexture(r, sdl.PIXFMT_RGB332, sdl.TEXACCESS_STREAM, 64, 32)
- var i
- for i = 0; i < 64 * 32; i++;
- if std.rand(0, 2) == 1
- pixels[i] = 255
- else
- pixels[i] = 0
- ;;
- ;;
+ var gfx : uint8[scrsz]
+ var mem : uint8[memsz]
+ var reg : uint8[regsz]
+ var stk : uint16[stksz]
+ var I : uint16
+ var pc : uint16
+ var sp : uint16
+ var delay : uint8
+ var sound : uint8
+
+ clrscr(&gfx, scrsz)
- sdl.update(tex, (pixels[:] : void#), 64)
+ loadprg(&mem, "/home/jakob/Airplane.ch8")
+
+ sdl.update(tex, (gfx[:] : void#), 64)
sdl.copy(r, tex)
sdl.present(r)
-
- sdl.delay(10000)
-
+
sdl.freerenderer(r)
sdl.freewin(win)
sdl.quit()