Diff for /np2/i286x/i286x.cpp between versions 1.19 and 1.20

version 1.19, 2004/01/29 09:41:50 version 1.20, 2004/02/18 18:29:29
Line 2714  I286 call_far(void) {       // 9A: call  Line 2714  I286 call_far(void) {       // 9A: call 
                                 mov             si, bx                                  mov             si, bx
                                 shr             ebx, 16                                  shr             ebx, 16
                                 mov             I286_CS, bx                                  mov             I286_CS, bx
                                   test    I286_MSW, MSW_PE
                                   jne             short call_far_pe
                                 shl             ebx, 4                                  shl             ebx, 4
                                 mov             CS_BASE, ebx                                  mov             CS_BASE, ebx
                                 RESET_XPREFETCH  call_far_base:  RESET_XPREFETCH
                                 ret                                  ret
   
   call_far_pe:    mov             eax, ebx
                                   call    i286x_selector
                                   mov             CS_BASE, eax
                                   jmp             short call_far_base
                 }                  }
 }  }
   
Line 2867  I286 _movsb(void) {        // A4: movsb Line 2874  I286 _movsb(void) {        // A4: movsb
                                 add             ecx, DS_FIX                                  add             ecx, DS_FIX
                                 call    i286_memoryread                                  call    i286_memoryread
                                 mov             dl, al                                  mov             dl, al
                                 movzx   ecx, I286_ES                                  movzx   ecx, I286_DI
                                 shl             ecx, 4                                  add             ecx, ES_BASE
                                 movzx   eax, I286_DI  
                                 add             ecx, eax  
                                 STRING_DIR                                  STRING_DIR
                                 add             I286_SI, ax                                  add             I286_SI, ax
                                 add             I286_DI, ax                                  add             I286_DI, ax
Line 2887  I286 _movsw(void) {        // A5: movsw Line 2892  I286 _movsw(void) {        // A5: movsw
                                 add             ecx, DS_FIX                                  add             ecx, DS_FIX
                                 call    i286_memoryread_w                                  call    i286_memoryread_w
                                 mov             dx, ax                                  mov             dx, ax
                                 movzx   ecx, I286_ES                                  movzx   ecx, I286_DI
                                 shl             ecx, 4                                  add             ecx, ES_BASE
                                 movzx   eax, I286_DI  
                                 add             ecx, eax  
                                 STRING_DIRx2                                  STRING_DIRx2
                                 add             I286_SI, ax                                  add             I286_SI, ax
                                 add             I286_DI, ax                                  add             I286_DI, ax
Line 2907  I286 _cmpsb(void) {        // A6: cmpsb Line 2910  I286 _cmpsb(void) {        // A6: cmpsb
                                 add             ecx, DS_FIX                                  add             ecx, DS_FIX
                                 call    i286_memoryread                                  call    i286_memoryread
                                 mov             dl, al                                  mov             dl, al
                                 movzx   ecx, I286_ES                                  movzx   ecx, I286_DI
                                 shl             ecx, 4                                  add             ecx, ES_BASE
                                 movzx   eax, I286_DI  
                                 add             ecx, eax  
                                 call    i286_memoryread                                  call    i286_memoryread
                                 cmp             dl, al                                  cmp             dl, al
                                 FLAG_STORE_OF                                  FLAG_STORE_OF
Line 2930  I286 _cmpsw(void) {        // A7: cmpsw Line 2931  I286 _cmpsw(void) {        // A7: cmpsw
                                 add             ecx, DS_FIX                                  add             ecx, DS_FIX
                                 call    i286_memoryread_w                                  call    i286_memoryread_w
                                 mov             edx, eax                                  mov             edx, eax
                                 movzx   ecx, I286_ES                                  movzx   ecx, I286_DI
                                 shl             ecx, 4                                  add             ecx, ES_BASE
                                 movzx   eax, I286_DI  
                                 add             ecx, eax  
                                 call    i286_memoryread_w                                  call    i286_memoryread_w
                                 cmp             dx, ax                                  cmp             dx, ax
                                 FLAG_STORE_OF                                  FLAG_STORE_OF
Line 2972  I286 _stosb(void) {        // AA: stosb Line 2971  I286 _stosb(void) {        // AA: stosb
                 __asm {                  __asm {
                                 GET_NEXTPRE1                                  GET_NEXTPRE1
                                 I286CLOCK(3)                                  I286CLOCK(3)
                                 movzx   ecx, I286_ES                                  movzx   ecx, I286_DI
                                 shl             ecx, 4                                  add             ecx, ES_BASE
                                 movzx   eax, I286_DI  
                                 add             ecx, eax  
                                 STRING_DIR                                  STRING_DIR
                                 add             I286_DI, ax                                  add             I286_DI, ax
                                 mov             dl, I286_AL                                  mov             dl, I286_AL
Line 2988  I286 _stosw(void) {        // AB: stosw Line 2985  I286 _stosw(void) {        // AB: stosw
                 __asm {                  __asm {
                                 GET_NEXTPRE1                                  GET_NEXTPRE1
                                 I286CLOCK(3)                                  I286CLOCK(3)
                                 movzx   ecx, I286_ES                                  movzx   ecx, I286_DI
                                 shl             ecx, 4                                  add             ecx, ES_BASE
                                 movzx   eax, I286_DI  
                                 add             ecx, eax  
                                 STRING_DIRx2                                  STRING_DIRx2
                                 add             I286_DI, ax                                  add             I286_DI, ax
                                 mov             dx, I286_AX                                  mov             dx, I286_AX
Line 3034  I286 _scasb(void) {        // AE: scasb Line 3029  I286 _scasb(void) {        // AE: scasb
                 __asm {                  __asm {
                                 GET_NEXTPRE1                                  GET_NEXTPRE1
                                 I286CLOCK(7)                                  I286CLOCK(7)
                                 movzx   ecx, I286_ES                                  movzx   ecx, I286_DI
                                 shl             ecx, 4                                  add             ecx, ES_BASE
                                 movzx   eax, I286_DI  
                                 add             ecx, eax  
                                 call    i286_memoryread                                  call    i286_memoryread
                                 cmp             I286_AL, al                                  cmp             I286_AL, al
                                 FLAG_STORE_OF                                  FLAG_STORE_OF
Line 3052  I286 _scasw(void) {        // AF: scasw Line 3045  I286 _scasw(void) {        // AF: scasw
                 __asm {                  __asm {
                                 GET_NEXTPRE1                                  GET_NEXTPRE1
                                 I286CLOCK(7)                                  I286CLOCK(7)
                                 movzx   ecx, I286_ES                                  movzx   ecx, I286_DI
                                 shl             ecx, 4                                  add             ecx, ES_BASE
                                 movzx   eax, I286_DI  
                                 add             ecx, eax  
                                 call    i286_memoryread_w                                  call    i286_memoryread_w
                                 cmp             I286_AX, ax                                  cmp             I286_AX, ax
                                 FLAG_STORE_OF                                  FLAG_STORE_OF
Line 3567  I286 ret_far_data16(void) {      // CA:  Line 3558  I286 ret_far_data16(void) {      // CA: 
                                 lea             ecx, [edi + ebp]                                  lea             ecx, [edi + ebp]
                                 call    i286_memoryread_w                                  call    i286_memoryread_w
                                 mov             I286_CS, ax                                  mov             I286_CS, ax
                                 and             eax, 0000ffffh                                  movzx   eax, ax
                                   test    I286_MSW, MSW_PE
                                   jne             short ret_far16_pe
                                 shl             eax, 4                                  // make segreg                                  shl             eax, 4                                  // make segreg
                                 mov             CS_BASE, eax  ret_far16_base: mov             CS_BASE, eax
                                 add             I286_SP, 4                                  add             I286_SP, 4
                                 RESET_XPREFETCH                                  RESET_XPREFETCH
                                 ret                                  ret
   
   ret_far16_pe:   push    offset ret_far16_base
                                   jmp             i286x_selector
                 }                  }
 }  }
   
Line 3590  I286 ret_far(void) {       // CB: ret fa Line 3586  I286 ret_far(void) {       // CB: ret fa
                                 add             bx, 2                                  add             bx, 2
                                 call    i286_memoryread_w                                  call    i286_memoryread_w
                                 mov             I286_CS, ax                                  mov             I286_CS, ax
                                 and             eax, 0000ffffh                                  movzx   eax, ax
                                   test    I286_MSW, MSW_PE
                                   jne             short ret_far_pe
                                 shl             eax, 4                                  // make segreg                                  shl             eax, 4                                  // make segreg
                                 mov             CS_BASE, eax  ret_far_base:   mov             CS_BASE, eax
                                 mov             ebp, eax                                  mov             ebp, eax
                                 mov             I286_SP, bx                                  mov             I286_SP, bx
                                 RESET_XPREFETCH                                  RESET_XPREFETCH
                                 ret                                  ret
   
   ret_far_pe:             push    offset ret_far_base
                                   jmp             i286x_selector
                 }                  }
 }  }
   
Line 4095  I286 jmp_far(void) {       // EA: jmp fa Line 4096  I286 jmp_far(void) {       // EA: jmp fa
                                 mov             si, bx                                  mov             si, bx
                                 shr             ebx, 16                                  shr             ebx, 16
                                 mov             I286_CS, bx                                  mov             I286_CS, bx
                                   test    I286_MSW, MSW_PE
                                   jne             short jmp_far_pe
                                 shl             ebx, 4                                  // make segreg                                  shl             ebx, 4                                  // make segreg
                                 mov             CS_BASE, ebx                                  mov             CS_BASE, ebx
                                 RESET_XPREFETCH  jmp_far_base:   RESET_XPREFETCH
                                 ret                                  ret
   
   jmp_far_pe:             mov             eax, ebx
                                   call    i286x_selector
                                   mov             CS_BASE, eax
                                   jmp             short jmp_far_base
                 }                  }
 }  }
   

Removed from v.1.19  
changed lines
  Added in v.1.20


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