~rabbits/uxn

0dcc3b4c2e12bf2a61e682e9168e8bdb469caae0 — Devine Lu Linvega a month ago e20b572
Simplified system_cmd
4 files changed, 6 insertions(+), 21 deletions(-)

M src/devices/system.c
M src/devices/system.h
M src/uxncli.c
M src/uxnemu.c
M src/devices/system.c => src/devices/system.c +2 -10
@@ 41,15 41,8 @@ system_inspect(Uxn *u)

/* RAM */

Uint8 *
system_init(Mmu *m, Uint16 pages)
{
	m->pages = (Uint8 *)calloc(0x10000 * pages, sizeof(Uint8));
	return m->pages;
}

void
mmu_eval(Uint8 *ram, Uint16 addr)
system_cmd(Uint8 *ram, Uint16 addr)
{
	Uint16 a = addr, i = 0;
	Uint8 o = ram[a++];


@@ 85,7 78,7 @@ system_deo(Uxn *u, Uint8 *d, Uint8 port)
	switch(port) {
	case 0x3:
		PEKDEV(a, 0x2);
		mmu_eval(u->ram, a);
		system_cmd(u->ram, a);
		break;
	case 0xe:
		if(u->wst->ptr || u->rst->ptr) system_inspect(u);


@@ 113,4 106,3 @@ uxn_halt(Uxn *u, Uint8 instr, Uint8 err, Uint16 addr)
	}
	return 0;
}


M src/devices/system.h => src/devices/system.h +1 -6
@@ 11,11 11,6 @@ WITH REGARD TO THIS SOFTWARE.

#define RAM_PAGES 0x10

typedef struct {
	Uint8 *pages;
} Mmu;

Uint8 *system_init(Mmu *m, Uint16 pages);
int system_load(Uxn *u, char *filename);
void system_inspect(Uxn *u);
void system_deo(Uxn *u, Uint8 *d, Uint8 port);
void system_inspect(Uxn *u);

M src/uxncli.c => src/uxncli.c +1 -2
@@ 78,10 78,9 @@ main(int argc, char **argv)
{
	Uxn u;
	int i;
	Mmu mmu;
	if(argc < 2)
		return emu_error("Usage", "uxncli game.rom args");
	if(!uxn_boot(&u, system_init(&mmu, RAM_PAGES), emu_dei, emu_deo))
	if(!uxn_boot(&u, (Uint8 *)calloc(0x10000 * RAM_PAGES, sizeof(Uint8)), emu_dei, emu_deo))
		return emu_error("Boot", "Failed");
	if(!system_load(&u, argv[1]))
		return emu_error("Load", "Failed");

M src/uxnemu.c => src/uxnemu.c +2 -3
@@ 53,7 53,6 @@ static Uint32 stdin_event, audio0_event;
static Uint64 exec_deadline, deadline_interval, ms_interval;

char *rom_path;
Mmu mmu;

static int
error(char *msg, const char *err)


@@ 263,8 262,8 @@ init(void)
static int
start(Uxn *u, char *rom)
{
	free(mmu.pages);
	if(!uxn_boot(u, system_init(&mmu, RAM_PAGES), emu_dei, emu_deo))
	free(u->ram);
	if(!uxn_boot(u, (Uint8 *)calloc(0x10000 * RAM_PAGES, sizeof(Uint8)), emu_dei, emu_deo))
		return error("Boot", "Failed to start uxn.");
	if(!system_load(u, rom))
		return error("Boot", "Failed to load rom.");