uxn

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

commit ee4308196a639f1ce5ec5c07ee4c5ec4b2c0f8e6
parent 6a6a2ec3835034d4bcc45668acccb866bc4ff486
Author: neauoire <aliceffekt@gmail.com>
Date:   Wed, 12 Jan 2022 21:22:33 -0800

Starting a debugging device

Diffstat:
Mbuild.sh | 6++++--
Mmkfile | 7++++---
Asrc/devices/debug.c | 50++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/devices/debug.h | 20++++++++++++++++++++
Msrc/uxn.h | 2+-
Msrc/uxncli.c | 1+
Msrc/uxnemu.c | 5++---
7 files changed, 82 insertions(+), 9 deletions(-)

diff --git a/build.sh b/build.sh @@ -60,6 +60,8 @@ then clang-format -i src/devices/controller.c clang-format -i src/devices/datetime.h 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/uxnemu.c clang-format -i src/uxncli.c @@ -98,8 +100,8 @@ fi echo "Building.." ${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/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/uxncli.c -o bin/uxncli +${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/debug.c src/uxncli.c -o bin/uxncli if [ -d "$HOME/bin" ] then diff --git a/mkfile b/mkfile @@ -9,6 +9,7 @@ HFILES=\ src/devices/audio.h\ src/devices/controller.h\ src/devices/datetime.h\ + src/devices/debug.h\ src/devices/file.h\ src/devices/mouse.h\ src/devices/screen.h\ @@ -33,19 +34,19 @@ bin: %.rom:Q: %.tal bin/uxnasm bin/uxnasm $stem.tal $target >/dev/null -bin/uxncli: file.$O datetime.$O system.$O uxncli.$O uxn.$O +bin/uxncli: file.$O datetime.$O debug.$O system.$O uxncli.$O uxn.$O $LD $LDFLAGS -o $target $prereq bin/uxnasm: uxnasm.$O $LD $LDFLAGS -o $target $prereq -bin/uxnemu: audio.$O controller.$O datetime.$O file.$O mouse.$O screen.$O system.$O uxn.$O uxnemu.$O +bin/uxnemu: audio.$O controller.$O datetime.$O debug.$O file.$O mouse.$O screen.$O system.$O uxn.$O uxnemu.$O $LD $LDFLAGS -o $target $prereq (uxnasm|uxncli|uxnemu|uxn)\.$O:R: src/\1.c $CC $CFLAGS -Isrc -o $target src/$stem1.c -(audio|controller|datetime|file|mouse|screen|system)\.$O:R: src/devices/\1.c +(audio|controller|datetime|debug|file|mouse|screen|system)\.$O:R: src/devices/\1.c $CC $CFLAGS -Isrc -o $target src/devices/$stem1.c nuke:V: clean diff --git a/src/devices/debug.c b/src/devices/debug.c @@ -0,0 +1,50 @@ +#include <stdio.h> + +#include "../uxn.h" +#include "debug.h" + +/* +Copyright (c) 2021 Devine Lu Linvega +Copyright (c) 2021 Andrew Alderwick + +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. +*/ + +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"); + } +} + +/* IO */ + +Uint8 +debug_dei(Device *d, Uint8 port) +{ + DebugDevice *debug = (DebugDevice *)d; + return d->dat[port]; +} + +void +debug_deo(Device *d, Uint8 port) +{ + (void)d; + (void)port; + inspect(&d->u->wst, "Working-stack"); + inspect(&d->u->rst, "Return-stack"); +} diff --git a/src/devices/debug.h b/src/devices/debug.h @@ -0,0 +1,19 @@ +/* +Copyright (c) 2021 Devine Lu Linvega +Copyright (c) 2021 Andrew Alderwick + +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. +*/ + +typedef struct DebugDevice { + Device device; + struct UxnScreen *screen; +} DebugDevice; + +Uint8 debug_dei(Device *d, Uint8 port); +void debug_deo(Device *d, Uint8 port); +\ No newline at end of file diff --git a/src/uxn.h b/src/uxn.h @@ -37,7 +37,7 @@ typedef struct { typedef struct Device { struct Uxn *u; - Uint8 dat[16], *mem; + Uint8 dat[16]; Uint8 (*dei)(struct Device *d, Uint8); void (*deo)(struct Device *d, Uint8); } Device; diff --git a/src/uxncli.c b/src/uxncli.c @@ -5,6 +5,7 @@ #include "devices/system.h" #include "devices/file.h" #include "devices/datetime.h" +#include "devices/debug.h" /* Copyright (c) 2021 Devine Lu Linvega diff --git a/src/uxnemu.c b/src/uxnemu.c @@ -15,6 +15,7 @@ #include "devices/controller.h" #include "devices/mouse.h" #include "devices/datetime.h" +#include "devices/debug.h" #pragma GCC diagnostic pop #pragma clang diagnostic pop @@ -279,11 +280,9 @@ start(Uxn *u, char *rom) /* unused */ uxn_port(u, 0xc, 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, 0xf, nil_dei, nil_deo); - + /* unused */ uxn_port(u, 0xf, debug_dei, debug_deo); if(!uxn_eval(u, PAGE_PROGRAM)) return error("Boot", "Failed to start rom."); - return 1; }