| version 1.20, 2004/02/18 18:29:29 | version 1.21, 2004/02/18 20:11:36 | 
| Line 448  I286 pop_es(void) {        // 07: pop es | Line 448  I286 pop_es(void) {        // 07: pop es | 
 | I286CLOCK(5) | I286CLOCK(5) | 
 | REGPOP(I286_ES) | REGPOP(I286_ES) | 
 | movzx   eax, ax | movzx   eax, ax | 
| test    I286_MSW, MSW_PE | test    byte ptr (I286_MSW), MSW_PE | 
 | jne             short pop_es_pe | jne             short pop_es_pe | 
 | shl             eax, 4                                  // make segreg | shl             eax, 4                                  // make segreg | 
 | pop_es_base:    mov             ES_BASE, eax | pop_es_base:    mov             ES_BASE, eax | 
| Line 661  I286 pop_ss(void) {        // 17: pop ss | Line 661  I286 pop_ss(void) {        // 17: pop ss | 
 | I286CLOCK(5) | I286CLOCK(5) | 
 | REGPOP(I286_SS) | REGPOP(I286_SS) | 
 | movzx   eax, ax | movzx   eax, ax | 
| test    I286_MSW, MSW_PE | test    byte ptr (I286_MSW), MSW_PE | 
 | jne             short pop_ss_pe | jne             short pop_ss_pe | 
 | shl             eax, 4                                  // make segreg | shl             eax, 4                                  // make segreg | 
 | pop_ss_base:    mov             SS_BASE, eax | pop_ss_base:    mov             SS_BASE, eax | 
| Line 790  I286 pop_ds(void) {        // 1F: pop ds | Line 790  I286 pop_ds(void) {        // 1F: pop ds | 
 | I286CLOCK(5) | I286CLOCK(5) | 
 | REGPOP(I286_DS) | REGPOP(I286_DS) | 
 | movzx   eax, ax | movzx   eax, ax | 
| test    I286_MSW, MSW_PE | test    byte ptr (I286_MSW), MSW_PE | 
 | jne             short pop_ds_pe | jne             short pop_ds_pe | 
 | shl             eax, 4                                  // make segreg | shl             eax, 4                                  // make segreg | 
 | pop_ds_base:    mov             DS_BASE, eax | pop_ds_base:    mov             DS_BASE, eax | 
| Line 2498  I286 mov_seg_ea(void) {       // 8E: mov | Line 2498  I286 mov_seg_ea(void) {       // 8E: mov | 
 | segset: | segset: | 
 | mov             word ptr I286_SEGREG[ebp], ax | mov             word ptr I286_SEGREG[ebp], ax | 
 | movzx   eax, ax | movzx   eax, ax | 
| test    I286_MSW, MSW_PE | test    byte ptr (I286_MSW), MSW_PE | 
 | jne             short mov_seg_pe | jne             short mov_seg_pe | 
 | shl             eax, 4                                  // make segreg | shl             eax, 4                                  // make segreg | 
 | mov_seg_base:   mov             SEG_BASE[ebp*2], eax | mov_seg_base:   mov             SEG_BASE[ebp*2], eax | 
| 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 | test    byte ptr (I286_MSW), MSW_PE | 
 | jne             short call_far_pe | jne             short call_far_pe | 
 | shl             ebx, 4 | shl             ebx, 4 | 
 | mov             CS_BASE, ebx | mov             CS_BASE, ebx | 
| Line 3370  I286 les_r16_ea(void) {       // C4: les | Line 3370  I286 les_r16_ea(void) {       // C4: les | 
 | lea             ecx, [edi + ebp] | lea             ecx, [edi + ebp] | 
 | call    i286_memoryread_w | call    i286_memoryread_w | 
 | mov             I286_ES, ax | mov             I286_ES, ax | 
| and             eax, 0000ffffh | movzx   eax, ax | 
|  | test    byte ptr (I286_MSW), MSW_PE | 
|  | jne             short les_pe | 
 | shl             eax, 4                                  // make segreg | shl             eax, 4                                  // make segreg | 
| mov             ES_BASE, eax | les_base:               mov             ES_BASE, eax | 
 | ret | ret | 
| align   4 |  | 
| src_register: | les_pe:                 push    offset les_base | 
| INT_NUM(6) | jmp             i286x_selector | 
|  |  | 
|  | src_register:   INT_NUM(6) | 
 | } | } | 
 | } | } | 
 |  |  | 
| Line 3399  I286 lds_r16_ea(void) {       // C5: lds | Line 3403  I286 lds_r16_ea(void) {       // C5: lds | 
 | lea             ecx, [edi + ebp] | lea             ecx, [edi + ebp] | 
 | call    i286_memoryread_w | call    i286_memoryread_w | 
 | mov             I286_DS, ax | mov             I286_DS, ax | 
| and             eax, 0000ffffh | movzx   eax, ax | 
|  | test    byte ptr (I286_MSW), MSW_PE | 
|  | jne             short lds_pe | 
 | shl             eax, 4                                  // make segreg | shl             eax, 4                                  // make segreg | 
| mov             DS_BASE, eax | lds_base:               mov             DS_BASE, eax | 
 | mov             DS_FIX, eax | mov             DS_FIX, eax | 
 | ret | ret | 
| align   16 |  | 
| src_register: | lds_pe:                 push    offset lds_base | 
| INT_NUM(6) | jmp             i286x_selector | 
|  |  | 
|  | src_register:   INT_NUM(6) | 
|  |  | 
 | } | } | 
 | } | } | 
 |  |  | 
| Line 3559  I286 ret_far_data16(void) {      // CA: | Line 3568  I286 ret_far_data16(void) {      // CA: | 
 | call    i286_memoryread_w | call    i286_memoryread_w | 
 | mov             I286_CS, ax | mov             I286_CS, ax | 
 | movzx   eax, ax | movzx   eax, ax | 
| test    I286_MSW, MSW_PE | test    byte ptr (I286_MSW), MSW_PE | 
 | jne             short ret_far16_pe | jne             short ret_far16_pe | 
 | shl             eax, 4                                  // make segreg | shl             eax, 4                                  // make segreg | 
 | ret_far16_base: mov             CS_BASE, eax | ret_far16_base: mov             CS_BASE, eax | 
| Line 3587  I286 ret_far(void) {       // CB: ret fa | Line 3596  I286 ret_far(void) {       // CB: ret fa | 
 | call    i286_memoryread_w | call    i286_memoryread_w | 
 | mov             I286_CS, ax | mov             I286_CS, ax | 
 | movzx   eax, ax | movzx   eax, ax | 
| test    I286_MSW, MSW_PE | test    byte ptr (I286_MSW), MSW_PE | 
 | jne             short ret_far_pe | jne             short ret_far_pe | 
 | shl             eax, 4                                  // make segreg | shl             eax, 4                                  // make segreg | 
 | ret_far_base:   mov             CS_BASE, eax | ret_far_base:   mov             CS_BASE, eax | 
| Line 4096  I286 jmp_far(void) {       // EA: jmp fa | Line 4105  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 | test    byte ptr (I286_MSW), MSW_PE | 
 | jne             short jmp_far_pe | jne             short jmp_far_pe | 
 | shl             ebx, 4                                  // make segreg | shl             ebx, 4                                  // make segreg | 
 | mov             CS_BASE, ebx | mov             CS_BASE, ebx |