cleanup, fix devices

This commit is contained in:
Nico 2021-11-17 09:37:48 +00:00
parent ee3fa037d2
commit ee638b70e5
2 changed files with 23 additions and 42 deletions

View File

@ -1,17 +0,0 @@
( dev/console )
|10 @Console $8 &write
( init )
|0100 ( -> )
;hello-word
&while
( send ) LDAk .Console/write DEO
INC2 LDAk ,&while JCN
POP2
BRK
@hello-word "Hello 20 "Uxn!

View File

@ -90,11 +90,6 @@ system_deo(Device *d, Uint8 port)
switch(port) { switch(port) {
case 0x2: d->u->wst.ptr = d->dat[0x2]; break; case 0x2: d->u->wst.ptr = d->dat[0x2]; break;
case 0x3: d->u->rst.ptr = d->dat[0x3]; break; case 0x3: d->u->rst.ptr = d->dat[0x3]; break;
case 0xe:
inspect(&d->u->wst, "Working-stack");
inspect(&d->u->rst, "Return-stack");
break;
case 0xf: return;
} }
if(port > 0x7 && port < 0xe) if(port > 0x7 && port < 0xe)
set_palette(&d->dat[0x8]); set_palette(&d->dat[0x8]);
@ -102,10 +97,9 @@ system_deo(Device *d, Uint8 port)
static Uint8 system_dei(Device *d, Uint8 port) { static Uint8 system_dei(Device *d, Uint8 port) {
switch(port) { switch(port) {
case 0x2: d->dat[0x2] = d->u->wst.ptr; break; case 0x2: return d->u->wst.ptr; break;
case 0x3: d->dat[0x3] = d->u->rst.ptr; break; case 0x3: return d->u->rst.ptr; break;
} }
return 1;
} }
/* taken from uxncli */ /* taken from uxncli */
@ -123,10 +117,11 @@ static Uint8
screen_dei(Device *d, Uint8 port) screen_dei(Device *d, Uint8 port)
{ {
switch(port) { switch(port) {
case 0x2: d->dat[0x2] = ppu.width >> 8; break; case 0x2: return ppu.width >> 8; break;
case 0x3: d->dat[0x3] = ppu.width; break; case 0x3: return ppu.width; break;
case 0x4: d->dat[0x4] = ppu.height >> 8; break; case 0x4: return ppu.height >> 8; break;
case 0x5: d->dat[0x5] = ppu.height; break; case 0x5: return ppu.height; break;
default: return d->dat[port];
} }
return 1; return 1;
} }
@ -198,17 +193,20 @@ datetime_dei(Device *d, Uint8 port)
{ {
struct tm* t = rb->get_time(); struct tm* t = rb->get_time();
t->tm_year += 1900; t->tm_year += 1900;
poke16(d->dat, 0x0, t->tm_year); switch(port) {
d->dat[0x2] = t->tm_mon; case 0x0: return t->tm_year >> 8;
d->dat[0x3] = t->tm_mday; case 0x1: return t->tm_year;
d->dat[0x4] = t->tm_hour; case 0x2: return t->tm_mon;
d->dat[0x5] = t->tm_min; case 0x3: return t->tm_mday;
d->dat[0x6] = t->tm_sec; case 0x4: return t->tm_hour;
d->dat[0x7] = t->tm_wday; case 0x5: return t->tm_min;
poke16(d->dat, 0x08, t->tm_yday); case 0x6: return t->tm_sec;
d->dat[0xa] = t->tm_isdst; case 0x7: return t->tm_wday;
(void)port; case 0x8: return t->tm_yday >> 8;
return 1; case 0x9: return t->tm_yday;
case 0xa: return t->tm_isdst;
default: return d->dat[port];
}
} }
// TODO mono and greyscale that don't suck // TODO mono and greyscale that don't suck
@ -262,8 +260,8 @@ static void run() {
// TODO allow scrolls (that don't have a button release) to be mapped as buttons // TODO allow scrolls (that don't have a button release) to be mapped as buttons
if(b == VARVARA_MENU) if(b == VARVARA_MENU)
return; return;
if(b == VARVARA_A) if(b == VARVARA_A)
devctrl->dat[2] += 0x01; devctrl->dat[2] += 0x01;
if(b == (VARVARA_A | BUTTON_REL)) if(b == (VARVARA_A | BUTTON_REL))
devctrl->dat[2] -= 0x01; devctrl->dat[2] -= 0x01;
if(b == VARVARA_B) if(b == VARVARA_B)