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;