Mercurial > hg > Members > kono > os9 > sbc09
diff engine.c @ 13:2aebc6b17fbf
swi/rti bug fixed
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 07 Jul 2018 12:45:31 +0900 |
parents | ce7323f9b937 |
children | 807141dc5ee8 |
line wrap: on
line diff
--- a/engine.c Sat Jul 07 00:37:24 2018 +0900 +++ b/engine.c Sat Jul 07 12:45:31 2018 +0900 @@ -250,14 +250,15 @@ PUSHBYTE(idpreg) PUSHBYTE(ibreg) PUSHBYTE(iareg) + iccreg|=0x80; PUSHBYTE(iccreg) iccreg|=0x90; ipcreg=GETWORD(0xfff8); } if(irq==2&&!(iccreg&0x40)) { /* Fast IRQ */ PUSHWORD(ipcreg) + iccreg&=0x7f; PUSHBYTE(iccreg) - iccreg&=0x7f; iccreg|=0x50; ipcreg=GETWORD(0xfff6); } @@ -665,8 +666,8 @@ if(tb&0x80)PULUWORD(ipcreg) break; case 0x39: /* RTS*/ PULLWORD(ipcreg) break; case 0x3A: /* ABX*/ ixreg+=ibreg; break; - case 0x3B: /* RTI*/ tb=iccreg&0x80; - PULLBYTE(iccreg) + case 0x3B: /* RTI*/ PULLBYTE(iccreg) + tb=iccreg&0x80; if(tb) { PULLBYTE(iareg) @@ -706,8 +707,8 @@ PUSHBYTE(idpreg) PUSHBYTE(ibreg) PUSHBYTE(iareg) + iccreg|=0x80; PUSHBYTE(iccreg) - iccreg|=0x80; if(!iflag)iccreg|=0x50; switch(iflag) { case 0:ipcreg=GETWORD(0xfffa);break;