uxn

Varvara Ordinator, written in ANSI C(SDL2)
git clone https://git.eamoncaddigan.net/uxn.git
Log | Files | Refs | README | LICENSE

commit 1beb714ce104b67efb3f8eb0723787f230c2c77f
parent 82732f161ed9a79496c96a3318d7cd5d7e9f2dde
Author: neauoire <aliceffekt@gmail.com>
Date:   Mon, 15 Feb 2021 14:42:53 -0800

Fixed broken example

Diffstat:
Dcli.c | 96-------------------------------------------------------------------------------
Memulator.c | 2+-
Mexamples/controller.usm | 9++++-----
Mexamples/hello.usm | 4++--
Mexamples/sprite.usm | 24++++++++----------------
Muxn.c | 1+
6 files changed, 16 insertions(+), 120 deletions(-)

diff --git a/cli.c b/cli.c @@ -1,96 +0,0 @@ -#include <stdio.h> - -/* -Copyright (c) 2021 Devine Lu Linvega - -Permission to use, copy, modify, and distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE. -*/ - -#include "uxn.h" - -int -error(char *msg, const char *err) -{ - printf("Error %s: %s\n", msg, err); - return 0; -} - -Uint8 -consoler(Device *d, Uint8 b) -{ - (void)d; - (void)b; - return 0; -} - -Uint8 -consolew(Device *d, Uint8 b) -{ - (void)d; - if(b) - printf("%c", b); - return 0; -} - -void -echos(St8 *s, Uint8 len, char *name) -{ - int i; - printf("\n%s\n", name); - for(i = 0; i < len; ++i) { - if(i % 16 == 0) - printf("\n"); - printf("%02x%c", s->dat[i], s->ptr == i ? '<' : ' '); - } - printf("\n\n"); -} - -void -echom(Memory *m, Uint16 len, char *name) -{ - int i; - printf("\n%s\n", name); - for(i = 0; i < len; ++i) { - if(i % 16 == 0) - printf("\n"); - printf("%02x ", m->dat[i]); - } - printf("\n\n"); -} - -void -echof(Uxn *c) -{ - printf("\nEnded @ %d steps | hf: %x sf: %x sf: %x cf: %x\n", - c->counter, - getflag(&c->status, FLAG_HALT) != 0, - getflag(&c->status, FLAG_SHORT) != 0, - getflag(&c->status, FLAG_SIGN) != 0, - getflag(&c->status, FLAG_COND) != 0); -} - -int -main(int argc, char **argv) -{ - Uxn u; - if(argc < 2) - return error("Input", "Missing"); - if(!bootuxn(&u)) - return error("Boot", "Failed"); - if(!loaduxn(&u, argv[1])) - return error("Load", "Failed"); - portuxn(&u, "console", consoler, consolew); - evaluxn(&u, u.vreset); - evaluxn(&u, u.vframe); - - echos(&u.wst, 0x40, "stack"); - echom(&u.ram, 0x40, "ram"); - - echof(&u); - return 0; -} diff --git a/emulator.c b/emulator.c @@ -271,7 +271,7 @@ spritew(Device *d, Memory *m, Uint8 b) if(!d->mem[6]) drawchr(pixels, x, y, chr); else - drawicn(pixels, x, y, chr, d->mem[6], 0); + drawicn(pixels, x, y, chr, d->mem[6] & 0xf, (d->mem[6] >> 4) & 0xf); if(d->mem[7]) REQDRAW = 1; d->ptr = 0; diff --git a/examples/controller.usm b/examples/controller.usm @@ -10,14 +10,13 @@ #03 =dev/r ( set dev/read to controller ) #02 =dev/w ( set dev/write to sprite ) #0080 =x #0040 =y ( origin ) - #01 ,cursor_icn ~x ~y ,putsprite JSR ( draw sprite ) + #0101 ,cursor_icn ~x ~y ,putsprite JSR ( draw sprite ) BRK |0200 @SPRITESHEET -@cursor_icn .80c0 .e0f0 .f8e0 .1000 .0000 .0000 .0000 .0000 -@star_icn .1054 .28c6 .2854 .1000 .0000 .0000 .0000 .0000 +@cursor_icn [ 80c0 e0f0 f8e0 1000 ] BRK @@ -49,7 +48,7 @@ BRK @end ( redraw ) - #01 ,cursor_icn ~x ~y ,putsprite JSR + #0101 ,cursor_icn ~x ~y ,putsprite JSR BRK @@ -57,7 +56,7 @@ BRK IOW2 ( y short ) IOW2 ( x short ) IOW2 ( sprite address ) - IOW ( redraw byte ) + IOW2 ( redraw byte ) RTS |d000 @ERROR BRK diff --git a/examples/hello.usm b/examples/hello.usm @@ -12,9 +12,9 @@ ( print to screen ) #0008 =x #0030 =y #01 =color ,string ,displaygui JSR - #0010 =x #0038 =y #02 =color + #0010 =x #0038 =y #12 =color ,string ,displaygui JSR - #0018 =x #0040 =y #03 =color + #0018 =x #0040 =y #23 =color ,string ,displaygui JSR diff --git a/examples/sprite.usm b/examples/sprite.usm @@ -7,32 +7,24 @@ #01 =dev/w ( set dev/write to screen ) #02 =dev/w ( set dev/write to sprite ) - #00 ,star_icn #0041 #0041 ,putsprite JSR - #00 ,star_icn #0031 #0021 ,putsprite JSR - #00 ,cursor_icn #0021 #0016 ,putsprite JSR - #00 ,star_icn #0055 #0042 ,putsprite JSR - #01 ,cursor_icn #0067 #0031 ,putsprite JSR + #0110 ,cursor_icn #0020 #0038 ,drawsprite JSR + #0010 ,rounds_chr #0028 #0038 ,drawsprite JSR + #3210 ,cursor_icn #0020 #0040 ,drawsprite JSR + #0010 ,rounds_chr #0028 #0040 ,drawsprite JSR BRK -@putsprite +@drawsprite IOW2 ( y short ) IOW2 ( x short ) IOW2 ( sprite address ) - IOW ( redraw byte ) - RTS - -@putpixel - IOW2 ( y short ) - IOW2 ( x short ) - IOW ( color byte ) - IOW ( redraw byte ) + IOW2 ( redraw byte ) RTS |0200 @SPRITESHEET -@cursor_icn [ 80c0 e0f0 f8e0 1000 0000 0000 0000 0000 ] -@star_icn [ 1054 28c6 2854 1000 0000 0000 0000 0000 ] +@cursor_icn [ 80c0 e0f0 f8e0 1000 ] +@rounds_chr [ 3844 92aa 9244 3800 0038 7c7c 7c38 0000 ] BRK diff --git a/uxn.c b/uxn.c @@ -120,6 +120,7 @@ int haltuxn(Uxn *u, char *name, int id) { printf("Halted: %s#%04x, at 0x%04x\n", name, id, u->counter); + op_nop(u); return 0; }