| ... | ... |
@@ -320,7 +320,7 @@ See etc/mkuxn-fast.moon for instructions. |
| 320 | 320 |
#pragma mark - Core |
| 321 | 321 |
|
| 322 | 322 |
int |
| 323 |
-evaluxn(Uxn *u, Uint16 vec) |
|
| 323 |
+uxn_eval(Uxn *u, Uint16 vec) |
|
| 324 | 324 |
{
|
| 325 | 325 |
Uint8 instr; |
| 326 | 326 |
if(u->dev[0].dat[0xf]) |
| ... | ... |
@@ -361,9 +361,9 @@ evaluxn(Uxn *u, Uint16 vec) |
| 361 | 361 |
#ifndef NO_STACK_CHECKS |
| 362 | 362 |
error: |
| 363 | 363 |
if(u->wst.error) |
| 364 |
- return haltuxn(u, u->wst.error, "Working-stack", instr); |
|
| 364 |
+ return uxn_halt(u, u->wst.error, "Working-stack", instr); |
|
| 365 | 365 |
else |
| 366 |
- return haltuxn(u, u->rst.error, "Return-stack", instr); |
|
| 366 |
+ return uxn_halt(u, u->rst.error, "Return-stack", instr); |
|
| 367 | 367 |
#endif |
| 368 | 368 |
} |
| 369 | 369 |
|
| ... | ... |
@@ -228,7 +228,7 @@ See etc/mkuxn-fast.moon for instructions. |
| 228 | 228 |
#pragma mark - Core |
| 229 | 229 |
|
| 230 | 230 |
int |
| 231 |
-evaluxn(Uxn *u, Uint16 vec) |
|
| 231 |
+uxn_eval(Uxn *u, Uint16 vec) |
|
| 232 | 232 |
{
|
| 233 | 233 |
Uint8 instr; |
| 234 | 234 |
if(u->dev[0].dat[0xf]) |
| ... | ... |
@@ -257,9 +257,9 @@ evaluxn(Uxn *u, Uint16 vec) |
| 257 | 257 |
#ifndef NO_STACK_CHECKS |
| 258 | 258 |
error: |
| 259 | 259 |
if(u->wst.error) |
| 260 |
- return haltuxn(u, u->wst.error, "Working-stack", instr); |
|
| 260 |
+ return uxn_halt(u, u->wst.error, "Working-stack", instr); |
|
| 261 | 261 |
else |
| 262 |
- return haltuxn(u, u->rst.error, "Return-stack", instr); |
|
| 262 |
+ return uxn_halt(u, u->rst.error, "Return-stack", instr); |
|
| 263 | 263 |
#endif |
| 264 | 264 |
} |
| 265 | 265 |
|
| ... | ... |
@@ -39,7 +39,7 @@ Uint16 devpeek16(Device *d, Uint16 a) { return (devpeek8(d, a) << 8) + devpeek8(
|
| 39 | 39 |
#pragma mark - Core |
| 40 | 40 |
|
| 41 | 41 |
int |
| 42 |
-evaluxn(Uxn *u, Uint16 vec) |
|
| 42 |
+uxn_eval(Uxn *u, Uint16 vec) |
|
| 43 | 43 |
{
|
| 44 | 44 |
Uint8 instr; |
| 45 | 45 |
if(u->dev[0].dat[0xf]) |
| ... | ... |
@@ -4021,14 +4021,14 @@ evaluxn(Uxn *u, Uint16 vec) |
| 4021 | 4021 |
#ifndef NO_STACK_CHECKS |
| 4022 | 4022 |
error: |
| 4023 | 4023 |
if(u->wst.error) |
| 4024 |
- return haltuxn(u, u->wst.error, "Working-stack", instr); |
|
| 4024 |
+ return uxn_halt(u, u->wst.error, "Working-stack", instr); |
|
| 4025 | 4025 |
else |
| 4026 |
- return haltuxn(u, u->rst.error, "Return-stack", instr); |
|
| 4026 |
+ return uxn_halt(u, u->rst.error, "Return-stack", instr); |
|
| 4027 | 4027 |
#endif |
| 4028 | 4028 |
} |
| 4029 | 4029 |
|
| 4030 | 4030 |
int |
| 4031 |
-bootuxn(Uxn *u) |
|
| 4031 |
+uxn_boot(Uxn *u) |
|
| 4032 | 4032 |
{
|
| 4033 | 4033 |
unsigned int i; |
| 4034 | 4034 |
char *cptr = (char *)u; |
| ... | ... |
@@ -4038,7 +4038,7 @@ bootuxn(Uxn *u) |
| 4038 | 4038 |
} |
| 4039 | 4039 |
|
| 4040 | 4040 |
Device * |
| 4041 |
-portuxn(Uxn *u, Uint8 id, char *name, void (*talkfn)(Device *d, Uint8 b0, Uint8 w)) |
|
| 4041 |
+uxn_port(Uxn *u, Uint8 id, char *name, void (*talkfn)(Device *d, Uint8 b0, Uint8 w)) |
|
| 4042 | 4042 |
{
|
| 4043 | 4043 |
Device *d = &u->dev[id]; |
| 4044 | 4044 |
d->addr = id * 0x10; |
| ... | ... |
@@ -116,8 +116,8 @@ void (*ops[])(Uxn *u) = {
|
| 116 | 116 |
|
| 117 | 117 |
#pragma mark - Core |
| 118 | 118 |
|
| 119 |
-void |
|
| 120 |
-opcuxn(Uxn *u, Uint8 instr) |
|
| 119 |
+int |
|
| 120 |
+uxn_step(Uxn *u, Uint8 instr) |
|
| 121 | 121 |
{
|
| 122 | 122 |
Uint8 op = instr & 0x3f, freturn = instr & 0x40, fkeep = instr & 0x80; |
| 123 | 123 |
u->src = freturn ? &u->rst : &u->wst; |
| ... | ... |
@@ -129,21 +129,15 @@ opcuxn(Uxn *u, Uint8 instr) |
| 129 | 129 |
pop8 = pop8_nokeep; |
| 130 | 130 |
} |
| 131 | 131 |
(*ops[op])(u); |
| 132 |
-} |
|
| 133 |
- |
|
| 134 |
-int |
|
| 135 |
-stepuxn(Uxn *u, Uint8 instr) |
|
| 136 |
-{
|
|
| 137 |
- opcuxn(u, instr); |
|
| 138 | 132 |
if(u->wst.error) |
| 139 |
- return haltuxn(u, u->wst.error, "Working-stack", instr); |
|
| 133 |
+ return uxn_halt(u, u->wst.error, "Working-stack", instr); |
|
| 140 | 134 |
if(u->rst.error) |
| 141 |
- return haltuxn(u, u->rst.error, "Return-stack", instr); |
|
| 135 |
+ return uxn_halt(u, u->rst.error, "Return-stack", instr); |
|
| 142 | 136 |
return 1; |
| 143 | 137 |
} |
| 144 | 138 |
|
| 145 | 139 |
int |
| 146 |
-evaluxn(Uxn *u, Uint16 vec) |
|
| 140 |
+uxn_eval(Uxn *u, Uint16 vec) |
|
| 147 | 141 |
{
|
| 148 | 142 |
if(u->dev[0].dat[0xf]) |
| 149 | 143 |
return 0; |
| ... | ... |
@@ -152,13 +146,13 @@ evaluxn(Uxn *u, Uint16 vec) |
| 152 | 146 |
u->rst.error = 0; |
| 153 | 147 |
if(u->wst.ptr > 0xf8) u->wst.ptr = 0xf8; |
| 154 | 148 |
while(u->ram.ptr) |
| 155 |
- if(!stepuxn(u, u->ram.dat[u->ram.ptr++])) |
|
| 149 |
+ if(!uxn_step(u, u->ram.dat[u->ram.ptr++])) |
|
| 156 | 150 |
return 0; |
| 157 | 151 |
return 1; |
| 158 | 152 |
} |
| 159 | 153 |
|
| 160 | 154 |
int |
| 161 |
-bootuxn(Uxn *u) |
|
| 155 |
+uxn_boot(Uxn *u) |
|
| 162 | 156 |
{
|
| 163 | 157 |
unsigned int i; |
| 164 | 158 |
char *cptr = (char *)u; |
| ... | ... |
@@ -168,7 +162,7 @@ bootuxn(Uxn *u) |
| 168 | 162 |
} |
| 169 | 163 |
|
| 170 | 164 |
Device * |
| 171 |
-portuxn(Uxn *u, Uint8 id, char *name, void (*talkfn)(Device *d, Uint8 b0, Uint8 w)) |
|
| 165 |
+uxn_port(Uxn *u, Uint8 id, char *name, void (*talkfn)(Device *d, Uint8 b0, Uint8 w)) |
|
| 172 | 166 |
{
|
| 173 | 167 |
Device *d = &u->dev[id]; |
| 174 | 168 |
d->addr = id * 0x10; |
| ... | ... |
@@ -43,7 +43,7 @@ struct Uxn; |
| 43 | 43 |
void mempoke16(Uint8 *m, Uint16 a, Uint16 b); |
| 44 | 44 |
Uint16 mempeek16(Uint8 *m, Uint16 a); |
| 45 | 45 |
|
| 46 |
-int bootuxn(Uxn *c); |
|
| 47 |
-int evaluxn(Uxn *u, Uint16 vec); |
|
| 48 |
-int haltuxn(Uxn *u, Uint8 error, char *name, int id); |
|
| 49 |
-Device *portuxn(Uxn *u, Uint8 id, char *name, void (*talkfn)(Device *, Uint8, Uint8)); |
|
| 46 |
+int uxn_boot(Uxn *c); |
|
| 47 |
+int uxn_eval(Uxn *u, Uint16 vec); |
|
| 48 |
+int uxn_halt(Uxn *u, Uint8 error, char *name, int id); |
|
| 49 |
+Device *uxn_port(Uxn *u, Uint8 id, char *name, void (*talkfn)(Device *, Uint8, Uint8)); |
| ... | ... |
@@ -114,7 +114,7 @@ nil_talk(Device *d, Uint8 b0, Uint8 w) |
| 114 | 114 |
static const char *errors[] = {"underflow", "overflow", "division by zero"};
|
| 115 | 115 |
|
| 116 | 116 |
int |
| 117 |
-haltuxn(Uxn *u, Uint8 error, char *name, int id) |
|
| 117 |
+uxn_halt(Uxn *u, Uint8 error, char *name, int id) |
|
| 118 | 118 |
{
|
| 119 | 119 |
fprintf(stderr, "Halted: %s %s#%04x, at 0x%04x\n", name, errors[error - 1], id, u->ram.ptr); |
| 120 | 120 |
u->ram.ptr = 0; |
| ... | ... |
@@ -124,11 +124,11 @@ haltuxn(Uxn *u, Uint8 error, char *name, int id) |
| 124 | 124 |
static void |
| 125 | 125 |
run(Uxn *u) |
| 126 | 126 |
{
|
| 127 |
- if(!evaluxn(u, PAGE_PROGRAM)) |
|
| 127 |
+ if(!uxn_eval(u, PAGE_PROGRAM)) |
|
| 128 | 128 |
error("Reset", "Failed");
|
| 129 | 129 |
else if(mempeek16(devconsole->dat, 0)) |
| 130 | 130 |
while(read(0, &devconsole->dat[0x2], 1) > 0) |
| 131 |
- evaluxn(u, mempeek16(devconsole->dat, 0)); |
|
| 131 |
+ uxn_eval(u, mempeek16(devconsole->dat, 0)); |
|
| 132 | 132 |
} |
| 133 | 133 |
|
| 134 | 134 |
static int |
| ... | ... |
@@ -149,27 +149,27 @@ main(int argc, char **argv) |
| 149 | 149 |
|
| 150 | 150 |
if(argc < 2) |
| 151 | 151 |
return error("Input", "Missing");
|
| 152 |
- if(!bootuxn(&u)) |
|
| 152 |
+ if(!uxn_boot(&u)) |
|
| 153 | 153 |
return error("Boot", "Failed");
|
| 154 | 154 |
if(!loaduxn(&u, argv[1])) |
| 155 | 155 |
return error("Load", "Failed");
|
| 156 | 156 |
|
| 157 |
- devsystem = portuxn(&u, 0x0, "system", system_talk); |
|
| 158 |
- devconsole = portuxn(&u, 0x1, "console", console_talk); |
|
| 159 |
- portuxn(&u, 0x2, "empty", nil_talk); |
|
| 160 |
- portuxn(&u, 0x3, "empty", nil_talk); |
|
| 161 |
- portuxn(&u, 0x4, "empty", nil_talk); |
|
| 162 |
- portuxn(&u, 0x5, "empty", nil_talk); |
|
| 163 |
- portuxn(&u, 0x6, "empty", nil_talk); |
|
| 164 |
- portuxn(&u, 0x7, "empty", nil_talk); |
|
| 165 |
- portuxn(&u, 0x8, "empty", nil_talk); |
|
| 166 |
- portuxn(&u, 0x9, "empty", nil_talk); |
|
| 167 |
- portuxn(&u, 0xa, "file", file_talk); |
|
| 168 |
- portuxn(&u, 0xb, "datetime", datetime_talk); |
|
| 169 |
- portuxn(&u, 0xc, "empty", nil_talk); |
|
| 170 |
- portuxn(&u, 0xd, "empty", nil_talk); |
|
| 171 |
- portuxn(&u, 0xe, "empty", nil_talk); |
|
| 172 |
- portuxn(&u, 0xf, "empty", nil_talk); |
|
| 157 |
+ devsystem = uxn_port(&u, 0x0, "system", system_talk); |
|
| 158 |
+ devconsole = uxn_port(&u, 0x1, "console", console_talk); |
|
| 159 |
+ uxn_port(&u, 0x2, "empty", nil_talk); |
|
| 160 |
+ uxn_port(&u, 0x3, "empty", nil_talk); |
|
| 161 |
+ uxn_port(&u, 0x4, "empty", nil_talk); |
|
| 162 |
+ uxn_port(&u, 0x5, "empty", nil_talk); |
|
| 163 |
+ uxn_port(&u, 0x6, "empty", nil_talk); |
|
| 164 |
+ uxn_port(&u, 0x7, "empty", nil_talk); |
|
| 165 |
+ uxn_port(&u, 0x8, "empty", nil_talk); |
|
| 166 |
+ uxn_port(&u, 0x9, "empty", nil_talk); |
|
| 167 |
+ uxn_port(&u, 0xa, "file", file_talk); |
|
| 168 |
+ uxn_port(&u, 0xb, "datetime", datetime_talk); |
|
| 169 |
+ uxn_port(&u, 0xc, "empty", nil_talk); |
|
| 170 |
+ uxn_port(&u, 0xd, "empty", nil_talk); |
|
| 171 |
+ uxn_port(&u, 0xe, "empty", nil_talk); |
|
| 172 |
+ uxn_port(&u, 0xf, "empty", nil_talk); |
|
| 173 | 173 |
|
| 174 | 174 |
run(&u); |
| 175 | 175 |
|
| ... | ... |
@@ -414,7 +414,7 @@ stdin_handler(void *p) |
| 414 | 414 |
static const char *errors[] = {"underflow", "overflow", "division by zero"};
|
| 415 | 415 |
|
| 416 | 416 |
int |
| 417 |
-haltuxn(Uxn *u, Uint8 error, char *name, int id) |
|
| 417 |
+uxn_halt(Uxn *u, Uint8 error, char *name, int id) |
|
| 418 | 418 |
{
|
| 419 | 419 |
fprintf(stderr, "Halted: %s %s#%04x, at 0x%04x\n", name, errors[error - 1], id, u->ram.ptr); |
| 420 | 420 |
u->ram.ptr = 0; |
| ... | ... |
@@ -424,7 +424,7 @@ haltuxn(Uxn *u, Uint8 error, char *name, int id) |
| 424 | 424 |
static void |
| 425 | 425 |
run(Uxn *u) |
| 426 | 426 |
{
|
| 427 |
- evaluxn(u, 0x0100); |
|
| 427 |
+ uxn_eval(u, 0x0100); |
|
| 428 | 428 |
redraw(u); |
| 429 | 429 |
while(1) {
|
| 430 | 430 |
SDL_Event event; |
| ... | ... |
@@ -440,19 +440,19 @@ run(Uxn *u) |
| 440 | 440 |
case SDL_KEYDOWN: |
| 441 | 441 |
case SDL_KEYUP: |
| 442 | 442 |
doctrl(u, &event, event.type == SDL_KEYDOWN); |
| 443 |
- evaluxn(u, mempeek16(devctrl->dat, 0)); |
|
| 443 |
+ uxn_eval(u, mempeek16(devctrl->dat, 0)); |
|
| 444 | 444 |
devctrl->dat[3] = 0; |
| 445 | 445 |
break; |
| 446 | 446 |
case SDL_MOUSEWHEEL: |
| 447 | 447 |
devmouse->dat[7] = event.wheel.y; |
| 448 |
- evaluxn(u, mempeek16(devmouse->dat, 0)); |
|
| 448 |
+ uxn_eval(u, mempeek16(devmouse->dat, 0)); |
|
| 449 | 449 |
devmouse->dat[7] = 0; |
| 450 | 450 |
break; |
| 451 | 451 |
case SDL_MOUSEBUTTONUP: |
| 452 | 452 |
case SDL_MOUSEBUTTONDOWN: |
| 453 | 453 |
case SDL_MOUSEMOTION: |
| 454 | 454 |
domouse(&event); |
| 455 |
- evaluxn(u, mempeek16(devmouse->dat, 0)); |
|
| 455 |
+ uxn_eval(u, mempeek16(devmouse->dat, 0)); |
|
| 456 | 456 |
break; |
| 457 | 457 |
case SDL_WINDOWEVENT: |
| 458 | 458 |
if(event.window.event == SDL_WINDOWEVENT_EXPOSED) |
| ... | ... |
@@ -461,11 +461,11 @@ run(Uxn *u) |
| 461 | 461 |
default: |
| 462 | 462 |
if(event.type == stdin_event) {
|
| 463 | 463 |
devconsole->dat[0x2] = event.cbutton.button; |
| 464 |
- evaluxn(u, mempeek16(devconsole->dat, 0)); |
|
| 464 |
+ uxn_eval(u, mempeek16(devconsole->dat, 0)); |
|
| 465 | 465 |
} |
| 466 | 466 |
} |
| 467 | 467 |
} |
| 468 |
- evaluxn(u, mempeek16(devscreen->dat, 0)); |
|
| 468 |
+ uxn_eval(u, mempeek16(devscreen->dat, 0)); |
|
| 469 | 469 |
if(reqdraw || devsystem->dat[0xe]) |
| 470 | 470 |
redraw(u); |
| 471 | 471 |
if(!bench) {
|
| ... | ... |
@@ -496,29 +496,29 @@ main(int argc, char **argv) |
| 496 | 496 |
|
| 497 | 497 |
if(argc < 2) |
| 498 | 498 |
return error("usage", "uxnemu file.rom");
|
| 499 |
- if(!bootuxn(&u)) |
|
| 499 |
+ if(!uxn_boot(&u)) |
|
| 500 | 500 |
return error("Boot", "Failed to start uxn.");
|
| 501 | 501 |
if(!loaduxn(&u, argv[1])) |
| 502 | 502 |
return error("Load", "Failed to open rom.");
|
| 503 | 503 |
if(!init()) |
| 504 | 504 |
return error("Init", "Failed to initialize emulator.");
|
| 505 | 505 |
|
| 506 |
- devsystem = portuxn(&u, 0x0, "system", system_talk); |
|
| 507 |
- devconsole = portuxn(&u, 0x1, "console", console_talk); |
|
| 508 |
- devscreen = portuxn(&u, 0x2, "screen", screen_talk); |
|
| 509 |
- devaudio0 = portuxn(&u, 0x3, "audio0", audio_talk); |
|
| 510 |
- portuxn(&u, 0x4, "audio1", audio_talk); |
|
| 511 |
- portuxn(&u, 0x5, "audio2", audio_talk); |
|
| 512 |
- portuxn(&u, 0x6, "audio3", audio_talk); |
|
| 513 |
- portuxn(&u, 0x7, "---", nil_talk); |
|
| 514 |
- devctrl = portuxn(&u, 0x8, "controller", nil_talk); |
|
| 515 |
- devmouse = portuxn(&u, 0x9, "mouse", nil_talk); |
|
| 516 |
- portuxn(&u, 0xa, "file", file_talk); |
|
| 517 |
- portuxn(&u, 0xb, "datetime", datetime_talk); |
|
| 518 |
- portuxn(&u, 0xc, "---", nil_talk); |
|
| 519 |
- portuxn(&u, 0xd, "---", nil_talk); |
|
| 520 |
- portuxn(&u, 0xe, "---", nil_talk); |
|
| 521 |
- portuxn(&u, 0xf, "---", nil_talk); |
|
| 506 |
+ devsystem = uxn_port(&u, 0x0, "system", system_talk); |
|
| 507 |
+ devconsole = uxn_port(&u, 0x1, "console", console_talk); |
|
| 508 |
+ devscreen = uxn_port(&u, 0x2, "screen", screen_talk); |
|
| 509 |
+ devaudio0 = uxn_port(&u, 0x3, "audio0", audio_talk); |
|
| 510 |
+ uxn_port(&u, 0x4, "audio1", audio_talk); |
|
| 511 |
+ uxn_port(&u, 0x5, "audio2", audio_talk); |
|
| 512 |
+ uxn_port(&u, 0x6, "audio3", audio_talk); |
|
| 513 |
+ uxn_port(&u, 0x7, "---", nil_talk); |
|
| 514 |
+ devctrl = uxn_port(&u, 0x8, "controller", nil_talk); |
|
| 515 |
+ devmouse = uxn_port(&u, 0x9, "mouse", nil_talk); |
|
| 516 |
+ uxn_port(&u, 0xa, "file", file_talk); |
|
| 517 |
+ uxn_port(&u, 0xb, "datetime", datetime_talk); |
|
| 518 |
+ uxn_port(&u, 0xc, "---", nil_talk); |
|
| 519 |
+ uxn_port(&u, 0xd, "---", nil_talk); |
|
| 520 |
+ uxn_port(&u, 0xe, "---", nil_talk); |
|
| 521 |
+ uxn_port(&u, 0xf, "---", nil_talk); |
|
| 522 | 522 |
|
| 523 | 523 |
/* Write screen size to dev/screen */ |
| 524 | 524 |
mempoke16(devscreen->dat, 2, ppu.width); |