| ... | ... |
@@ -376,8 +376,12 @@ system_talk(Device *d, Uint8 b0, Uint8 w) |
| 376 | 376 |
static int |
| 377 | 377 |
console_talk(Device *d, Uint8 b0, Uint8 w) |
| 378 | 378 |
{
|
| 379 |
- if(w && b0 > 0x7) |
|
| 380 |
- write(b0 - 0x7, (char *)&d->dat[b0], 1); |
|
| 379 |
+ if(w) {
|
|
| 380 |
+ if(b0 == 0x1) |
|
| 381 |
+ d->vector = peek16(d->dat, 0x0); |
|
| 382 |
+ if(b0 > 0x7) |
|
| 383 |
+ write(b0 - 0x7, (char *)&d->dat[b0], 1); |
|
| 384 |
+ } |
|
| 381 | 385 |
return 1; |
| 382 | 386 |
} |
| 383 | 387 |
|
| ... | ... |
@@ -392,6 +396,7 @@ screen_talk(Device *d, Uint8 b0, Uint8 w) |
| 392 | 396 |
} |
| 393 | 397 |
else |
| 394 | 398 |
switch(b0) {
|
| 399 |
+ case 0x1: d->vector = peek16(d->dat, 0x0); break; |
|
| 395 | 400 |
case 0x5: |
| 396 | 401 |
if(!FIXED_SIZE) return set_size(peek16(d->dat, 0x2), peek16(d->dat, 0x4), 1); |
| 397 | 402 |
break; |
| ... | ... |
@@ -491,6 +496,8 @@ datetime_talk(Device *d, Uint8 b0, Uint8 w) |
| 491 | 496 |
static int |
| 492 | 497 |
nil_talk(Device *d, Uint8 b0, Uint8 w) |
| 493 | 498 |
{
|
| 499 |
+ if(w && b0 == 0x1) |
|
| 500 |
+ d->vector = peek16(d->dat, 0x0); |
|
| 494 | 501 |
(void)d; |
| 495 | 502 |
(void)b0; |
| 496 | 503 |
(void)w; |
| ... | ... |
@@ -525,7 +532,7 @@ run(Uxn *u) |
| 525 | 532 |
case SDL_KEYDOWN: |
| 526 | 533 |
case SDL_KEYUP: |
| 527 | 534 |
doctrl(&event, event.type == SDL_KEYDOWN); |
| 528 |
- uxn_eval(u, peek16(devctrl->dat, 0)); |
|
| 535 |
+ uxn_eval(u, devctrl->vector); |
|
| 529 | 536 |
devctrl->dat[3] = 0; |
| 530 | 537 |
break; |
| 531 | 538 |
case SDL_MOUSEWHEEL: |
| ... | ... |
@@ -533,7 +540,7 @@ run(Uxn *u) |
| 533 | 540 |
case SDL_MOUSEBUTTONDOWN: |
| 534 | 541 |
case SDL_MOUSEMOTION: |
| 535 | 542 |
domouse(&event); |
| 536 |
- uxn_eval(u, peek16(devmouse->dat, 0)); |
|
| 543 |
+ uxn_eval(u, devmouse->vector); |
|
| 537 | 544 |
break; |
| 538 | 545 |
case SDL_WINDOWEVENT: |
| 539 | 546 |
if(event.window.event == SDL_WINDOWEVENT_EXPOSED) |
| ... | ... |
@@ -542,12 +549,12 @@ run(Uxn *u) |
| 542 | 549 |
default: |
| 543 | 550 |
if(event.type == stdin_event) {
|
| 544 | 551 |
devconsole->dat[0x2] = event.cbutton.button; |
| 545 |
- uxn_eval(u, peek16(devconsole->dat, 0)); |
|
| 552 |
+ uxn_eval(u, devconsole->vector); |
|
| 546 | 553 |
} else if(event.type >= audio0_event && event.type < audio0_event + POLYPHONY) |
| 547 | 554 |
uxn_eval(u, peek16((devaudio0 + (event.type - audio0_event))->dat, 0)); |
| 548 | 555 |
} |
| 549 | 556 |
} |
| 550 |
- uxn_eval(u, peek16(devscreen->dat, 0)); |
|
| 557 |
+ uxn_eval(u, devscreen->vector); |
|
| 551 | 558 |
if(reqdraw || ppu.redraw || devsystem->dat[0xe]) |
| 552 | 559 |
redraw(u); |
| 553 | 560 |
if(!BENCH) {
|