Mercurial > hg > Members > kono > os9 > sbc09
comparison 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 |
comparison
equal
deleted
inserted
replaced
12:111e5defb8ab | 13:2aebc6b17fbf |
---|---|
248 PUSHWORD(iyreg) | 248 PUSHWORD(iyreg) |
249 PUSHWORD(ixreg) | 249 PUSHWORD(ixreg) |
250 PUSHBYTE(idpreg) | 250 PUSHBYTE(idpreg) |
251 PUSHBYTE(ibreg) | 251 PUSHBYTE(ibreg) |
252 PUSHBYTE(iareg) | 252 PUSHBYTE(iareg) |
253 iccreg|=0x80; | |
253 PUSHBYTE(iccreg) | 254 PUSHBYTE(iccreg) |
254 iccreg|=0x90; | 255 iccreg|=0x90; |
255 ipcreg=GETWORD(0xfff8); | 256 ipcreg=GETWORD(0xfff8); |
256 } | 257 } |
257 if(irq==2&&!(iccreg&0x40)) { /* Fast IRQ */ | 258 if(irq==2&&!(iccreg&0x40)) { /* Fast IRQ */ |
258 PUSHWORD(ipcreg) | 259 PUSHWORD(ipcreg) |
260 iccreg&=0x7f; | |
259 PUSHBYTE(iccreg) | 261 PUSHBYTE(iccreg) |
260 iccreg&=0x7f; | |
261 iccreg|=0x50; | 262 iccreg|=0x50; |
262 ipcreg=GETWORD(0xfff6); | 263 ipcreg=GETWORD(0xfff6); |
263 } | 264 } |
264 if(!tracing)attention=0; | 265 if(!tracing)attention=0; |
265 irq=0; | 266 irq=0; |
663 if(tb&0x20)PULUWORD(iyreg) | 664 if(tb&0x20)PULUWORD(iyreg) |
664 if(tb&0x40)PULUWORD(isreg) | 665 if(tb&0x40)PULUWORD(isreg) |
665 if(tb&0x80)PULUWORD(ipcreg) break; | 666 if(tb&0x80)PULUWORD(ipcreg) break; |
666 case 0x39: /* RTS*/ PULLWORD(ipcreg) break; | 667 case 0x39: /* RTS*/ PULLWORD(ipcreg) break; |
667 case 0x3A: /* ABX*/ ixreg+=ibreg; break; | 668 case 0x3A: /* ABX*/ ixreg+=ibreg; break; |
668 case 0x3B: /* RTI*/ tb=iccreg&0x80; | 669 case 0x3B: /* RTI*/ PULLBYTE(iccreg) |
669 PULLBYTE(iccreg) | 670 tb=iccreg&0x80; |
670 if(tb) | 671 if(tb) |
671 { | 672 { |
672 PULLBYTE(iareg) | 673 PULLBYTE(iareg) |
673 PULLBYTE(ibreg) | 674 PULLBYTE(ibreg) |
674 PULLBYTE(idpreg) | 675 PULLBYTE(idpreg) |
704 PUSHWORD(iyreg) | 705 PUSHWORD(iyreg) |
705 PUSHWORD(ixreg) | 706 PUSHWORD(ixreg) |
706 PUSHBYTE(idpreg) | 707 PUSHBYTE(idpreg) |
707 PUSHBYTE(ibreg) | 708 PUSHBYTE(ibreg) |
708 PUSHBYTE(iareg) | 709 PUSHBYTE(iareg) |
710 iccreg|=0x80; | |
709 PUSHBYTE(iccreg) | 711 PUSHBYTE(iccreg) |
710 iccreg|=0x80; | |
711 if(!iflag)iccreg|=0x50; | 712 if(!iflag)iccreg|=0x50; |
712 switch(iflag) { | 713 switch(iflag) { |
713 case 0:ipcreg=GETWORD(0xfffa);break; | 714 case 0:ipcreg=GETWORD(0xfffa);break; |
714 case 1:ipcreg=GETWORD(0xfff4);break; | 715 case 1:ipcreg=GETWORD(0xfff4);break; |
715 case 2:ipcreg=GETWORD(0xfff2);break; | 716 case 2:ipcreg=GETWORD(0xfff2);break; |