Print stack with DEO on 0x0f

This commit is contained in:
neauoire 2022-01-13 08:25:59 -08:00
parent ee4308196a
commit 031f63a13c
6 changed files with 31 additions and 11 deletions

View File

@ -60,8 +60,6 @@ then
clang-format -i src/devices/controller.c clang-format -i src/devices/controller.c
clang-format -i src/devices/datetime.h clang-format -i src/devices/datetime.h
clang-format -i src/devices/datetime.c clang-format -i src/devices/datetime.c
clang-format -i src/devices/debug.h
clang-format -i src/devices/debug.c
clang-format -i src/uxnasm.c clang-format -i src/uxnasm.c
clang-format -i src/uxnemu.c clang-format -i src/uxnemu.c
clang-format -i src/uxncli.c clang-format -i src/uxncli.c
@ -100,8 +98,8 @@ fi
echo "Building.." echo "Building.."
${CC} ${CFLAGS} src/uxnasm.c -o bin/uxnasm ${CC} ${CFLAGS} src/uxnasm.c -o bin/uxnasm
${CC} ${CFLAGS} ${CORE} src/devices/system.c src/devices/file.c src/devices/datetime.c src/devices/debug.c src/devices/mouse.c src/devices/controller.c src/devices/screen.c src/devices/audio.c src/uxnemu.c ${UXNEMU_LDFLAGS} -o bin/uxnemu ${CC} ${CFLAGS} ${CORE} src/devices/system.c src/devices/file.c src/devices/datetime.c src/devices/mouse.c src/devices/controller.c src/devices/screen.c src/devices/audio.c src/uxnemu.c ${UXNEMU_LDFLAGS} -o bin/uxnemu
${CC} ${CFLAGS} ${CORE} src/devices/system.c src/devices/file.c src/devices/datetime.c src/devices/debug.c src/uxncli.c -o bin/uxncli ${CC} ${CFLAGS} ${CORE} src/devices/system.c src/devices/file.c src/devices/datetime.c src/uxncli.c -o bin/uxncli
if [ -d "$HOME/bin" ] if [ -d "$HOME/bin" ]
then then

7
mkfile
View File

@ -9,7 +9,6 @@ HFILES=\
src/devices/audio.h\ src/devices/audio.h\
src/devices/controller.h\ src/devices/controller.h\
src/devices/datetime.h\ src/devices/datetime.h\
src/devices/debug.h\
src/devices/file.h\ src/devices/file.h\
src/devices/mouse.h\ src/devices/mouse.h\
src/devices/screen.h\ src/devices/screen.h\
@ -34,19 +33,19 @@ bin:
%.rom:Q: %.tal bin/uxnasm %.rom:Q: %.tal bin/uxnasm
bin/uxnasm $stem.tal $target >/dev/null bin/uxnasm $stem.tal $target >/dev/null
bin/uxncli: file.$O datetime.$O debug.$O system.$O uxncli.$O uxn.$O bin/uxncli: file.$O datetime.$O system.$O uxncli.$O uxn.$O
$LD $LDFLAGS -o $target $prereq $LD $LDFLAGS -o $target $prereq
bin/uxnasm: uxnasm.$O bin/uxnasm: uxnasm.$O
$LD $LDFLAGS -o $target $prereq $LD $LDFLAGS -o $target $prereq
bin/uxnemu: audio.$O controller.$O datetime.$O debug.$O file.$O mouse.$O screen.$O system.$O uxn.$O uxnemu.$O bin/uxnemu: audio.$O controller.$O datetime.$O file.$O mouse.$O screen.$O system.$O uxn.$O uxnemu.$O
$LD $LDFLAGS -o $target $prereq $LD $LDFLAGS -o $target $prereq
(uxnasm|uxncli|uxnemu|uxn)\.$O:R: src/\1.c (uxnasm|uxncli|uxnemu|uxn)\.$O:R: src/\1.c
$CC $CFLAGS -Isrc -o $target src/$stem1.c $CC $CFLAGS -Isrc -o $target src/$stem1.c
(audio|controller|datetime|debug|file|mouse|screen|system)\.$O:R: src/devices/\1.c (audio|controller|datetime|file|mouse|screen|system)\.$O:R: src/devices/\1.c
$CC $CFLAGS -Isrc -o $target src/devices/$stem1.c $CC $CFLAGS -Isrc -o $target src/devices/$stem1.c
nuke:V: clean nuke:V: clean

View File

@ -22,6 +22,22 @@ static const char *errors[] = {
"Working-stack division by zero", "Working-stack division by zero",
"Return-stack division by zero"}; "Return-stack division by zero"};
static void
inspect(Stack *s, char *name)
{
Uint8 x, y;
fprintf(stderr, "\n%s\n", name);
for(y = 0; y < 0x04; y++) {
for(x = 0; x < 0x08; x++) {
Uint8 p = y * 0x08 + x;
fprintf(stderr,
p == s->ptr ? "[%02x]" : " %02x ",
s->dat[p]);
}
fprintf(stderr, "\n");
}
}
int int
uxn_halt(Uxn *u, Uint8 error, Uint16 addr) uxn_halt(Uxn *u, Uint8 error, Uint16 addr)
{ {
@ -59,6 +75,10 @@ system_deo(Device *d, Uint8 port)
switch(port) { switch(port) {
case 0x2: d->u->wst.ptr = d->dat[port]; break; case 0x2: d->u->wst.ptr = d->dat[port]; break;
case 0x3: d->u->rst.ptr = d->dat[port]; break; case 0x3: d->u->rst.ptr = d->dat[port]; break;
case 0xe:
inspect(&d->u->wst, "Working-stack");
inspect(&d->u->rst, "Return-stack");
break;
default: system_deo_special(d, port); default: system_deo_special(d, port);
} }
} }

View File

@ -9,6 +9,11 @@ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE. WITH REGARD TO THIS SOFTWARE.
*/ */
typedef struct SystemDevice {
Device device;
struct UxnScreen *screen;
} SystemDevice;
Uint8 system_dei(Device *d, Uint8 port); Uint8 system_dei(Device *d, Uint8 port);
void system_deo(Device *d, Uint8 port); void system_deo(Device *d, Uint8 port);
void system_deo_special(Device *d, Uint8 port); void system_deo_special(Device *d, Uint8 port);

View File

@ -5,7 +5,6 @@
#include "devices/system.h" #include "devices/system.h"
#include "devices/file.h" #include "devices/file.h"
#include "devices/datetime.h" #include "devices/datetime.h"
#include "devices/debug.h"
/* /*
Copyright (c) 2021 Devine Lu Linvega Copyright (c) 2021 Devine Lu Linvega

View File

@ -15,7 +15,6 @@
#include "devices/controller.h" #include "devices/controller.h"
#include "devices/mouse.h" #include "devices/mouse.h"
#include "devices/datetime.h" #include "devices/datetime.h"
#include "devices/debug.h"
#pragma GCC diagnostic pop #pragma GCC diagnostic pop
#pragma clang diagnostic pop #pragma clang diagnostic pop
@ -280,7 +279,7 @@ start(Uxn *u, char *rom)
/* unused */ uxn_port(u, 0xc, nil_dei, nil_deo); /* unused */ uxn_port(u, 0xc, nil_dei, nil_deo);
/* unused */ uxn_port(u, 0xd, nil_dei, nil_deo); /* unused */ uxn_port(u, 0xd, nil_dei, nil_deo);
/* unused */ uxn_port(u, 0xe, nil_dei, nil_deo); /* unused */ uxn_port(u, 0xe, nil_dei, nil_deo);
/* unused */ uxn_port(u, 0xf, debug_dei, debug_deo); /* unused */ uxn_port(u, 0xf, nil_dei, nil_deo);
if(!uxn_eval(u, PAGE_PROGRAM)) if(!uxn_eval(u, PAGE_PROGRAM))
return error("Boot", "Failed to start rom."); return error("Boot", "Failed to start rom.");
return 1; return 1;