Diff for /np2/i286x/i286x.cpp between versions 1.4 and 1.5

version 1.4, 2003/12/01 10:45:46 version 1.5, 2003/12/01 18:25:03
Line 573  I286 pop_ss(void) {        // 17: pop ss Line 573  I286 pop_ss(void) {        // 17: pop ss
                                 mov             SS_BASE, eax                                  mov             SS_BASE, eax
                                 mov             SS_FIX, eax                                  mov             SS_FIX, eax
                                 cmp             i286core.s.prefix, 0            // 00/06/24                                  cmp             i286core.s.prefix, 0            // 00/06/24
                                 je              noprefix                                  jne             prefix_exist
                                 call    removeprefix  
                                 pop             eax  
                 noprefix:                  noprefix:
                                 movzx   ebp, bh                                  movzx   ebp, bh
                                 GET_NEXTPRE1                                  GET_NEXTPRE1
                                 jmp             i286op[ebp*4]                                  jmp             i286op[ebp*4]
   
   prefix_exist:   pop             eax                                             // eax<-offset removeprefix
                                   call    eax
                                   jmp             noprefix
                 }                  }
 }  }
   
Line 2661  I286 _popf(void) {        // 9D: popf Line 2663  I286 _popf(void) {        // 9D: popf
                                 and             ah, 3                                  and             ah, 3
                                 cmp             ah, 3                                  cmp             ah, 3
                                 sete    I286_TRAP                                  sete    I286_TRAP
                                 I286IRQCHECKTERM  
                                   test    ah, 2                                   // fast_intr
                                   je              nextop
                                   cmp             pic.ext_irq, 0
                                   jne             nextop
                                   mov             al, pic.pi[0].imr
                                   mov             ah, pic.pi[1].imr
                                   not             ax
                                   test    al, pic.pi[0].irr
                                   jne             irqcheck
                                   test    al, pic.pi[1].irr
                                   jne             irqcheck
   nextop:                 ret
   
   irqcheck:               I286IRQCHECKTERM
                 }                  }
 }  }
   
Line 3575  I286 _iret(void) {        // CF: iret Line 3591  I286 _iret(void) {        // CF: iret
                                 cmp             ah, 3                                  cmp             ah, 3
                                 sete    I286_TRAP                                  sete    I286_TRAP
                                 RESET_XPREFETCH                                  RESET_XPREFETCH
                                 I286IRQCHECKTERM  
                                   test    I286_FLAG, I_FLAG               // fast_intr
                                   je              nextop
                                   cmp             pic.ext_irq, 0
                                   jne             nextop
                                   mov             al, pic.pi[0].imr
                                   mov             ah, pic.pi[1].imr
                                   not             ax
                                   test    al, pic.pi[0].irr
                                   jne             irqcheck
                                   test    al, pic.pi[1].irr
                                   jne             irqcheck
   nextop:                 ret
   
   irqcheck:               I286IRQCHECKTERM
                 }                  }
 }  }
   
Line 4158  I286 _sti(void) {        // FB: sti Line 4188  I286 _sti(void) {        // FB: sti
                 __asm {                  __asm {
                                 GET_NEXTPRE1                                  GET_NEXTPRE1
                                 I286CLOCK(2)                                  I286CLOCK(2)
                                 or              I286_FLAG, I_FLAG                                  cmp             i286core.s.prefix, 0    // ver0.26 00/10/08
                                   jne             prefix_exist                    // 前方分岐ジャンプなので。
                   noprefix:
                                   movzx   ebp, bl
                                   bts             I286_FLAG, 9
                                   jne             jmp_nextop
                                 test    I286_FLAG, T_FLAG                                  test    I286_FLAG, T_FLAG
                                 setne   I286_TRAP                                  setne   I286_TRAP
   
                                 cmp             i286core.s.prefix, 0    // ver0.26 00/10/08                                  cmp             pic.ext_irq, 0                  // fast_intr
                                 jne             prefix_exist                    // 前方分岐ジャンプなので。                                  jne             jmp_nextop
 noprefix:               movzx   eax, bl                                  mov             al, pic.pi[0].imr
                                 call    i286op[eax*4]                                  mov             ah, pic.pi[1].imr
                                   not             ax
                                   test    al, pic.pi[0].irr
                                   jne             nextopandexit
                                   test    al, pic.pi[1].irr
                                   jne             nextopandexit
   jmp_nextop:             jmp             i286op[ebp*4]
   
   nextopandexit:  call    i286op[ebp*4]
                                 I286IRQCHECKTERM                                  I286IRQCHECKTERM
   
 prefix_exist:   pop             eax                                             // eax<-offset removeprefix  prefix_exist:   pop             eax                                             // eax<-offset removeprefix

Removed from v.1.4  
changed lines
  Added in v.1.5


RetroPC.NET-CVS <cvs@retropc.net>