Diff for /np2/i286a/i286a_mn.s between versions 1.1 and 1.6

version 1.1, 2003/12/16 04:58:00 version 1.6, 2003/12/17 14:04:43
Line 7 Line 7
         IMPORT          _szpcflag8          IMPORT          _szpcflag8
         IMPORT          i286a_ea          IMPORT          i286a_ea
         IMPORT          i286a_lea          IMPORT          i286a_lea
           IMPORT          i286a_a
         IMPORT          i286_memoryread          IMPORT          i286_memoryread
         IMPORT          i286_memoryread_w          IMPORT          i286_memoryread_w
         IMPORT          i286_memorywrite          IMPORT          i286_memorywrite
         IMPORT          i286_memorywrite_w          IMPORT          i286_memorywrite_w
           IMPORT          iocore_inp8
           IMPORT          iocore_inp16
           IMPORT          iocore_out8
           IMPORT          iocore_out16
           IMPORT          i286a_localint
   
           IMPORT          i286aop80
           IMPORT          i286aop81
           IMPORT          i286aop83
   
           IMPORT          i286asft8_1
           IMPORT          i286asft16_1
           IMPORT          i286asft8_cl
           IMPORT          i286asft8_d8
           IMPORT          i286asft16_cl
           IMPORT          i286asft16_d8
   
           IMPORT          i286aopf6
           IMPORT          i286aopf7
   
           IMPORT          i286aopfe
           IMPORT          i286aopff
   
         EXPORT          i286a_step          EXPORT          i286a_step
           EXPORT          optbl1
   
         AREA    .text, CODE, READONLY          AREA    .text, CODE, READONLY
   
Line 32  or_r16_ea  OP_R16_EA OR16, #2, #7 Line 56  or_r16_ea  OP_R16_EA OR16, #2, #7
 or_al_d8                OP_AL_D8        OR8, #3  or_al_d8                OP_AL_D8        OR8, #3
 or_ax_d16               OP_AX_D16       OR16, #3  or_ax_d16               OP_AX_D16       OR16, #3
 push_cs                 REGPUSH         #CPU_CS, #3  push_cs                 REGPUSH         #CPU_CS, #3
   ; ope0f
   
 adc_ea_r8               OP_EA_R8        ADC8, #2, #7  adc_ea_r8               OP_EA_R8        ADC8, #2, #7
 adc_ea_r16              OP_EA_R16       ADC16, #2, #7  adc_ea_r16              OP_EA_R16       ADC16, #2, #7
Line 58  and_r8_ea  OP_R8_EA AND8, #2, #7 Line 82  and_r8_ea  OP_R8_EA AND8, #2, #7
 and_r16_ea              OP_R16_EA       AND16, #2, #7  and_r16_ea              OP_R16_EA       AND16, #2, #7
 and_al_d8               OP_AL_D8        AND8, #3  and_al_d8               OP_AL_D8        AND8, #3
 and_ax_d16              OP_AX_D16       AND16, #3  and_ax_d16              OP_AX_D16       AND16, #3
 ; segprefix_es  ; segprefix_es          !
 ; daa  ; daa                   *
   
 sub_ea_r8               OP_EA_R8        SUB8, #2, #7  sub_ea_r8               OP_EA_R8        SUB8, #2, #7
 sub_ea_r16              OP_EA_R16       SUB16, #2, #7  sub_ea_r16              OP_EA_R16       SUB16, #2, #7
Line 67  sub_r8_ea  OP_R8_EA SUB8, #2, #7 Line 91  sub_r8_ea  OP_R8_EA SUB8, #2, #7
 sub_r16_ea              OP_R16_EA       SUB16, #2, #7  sub_r16_ea              OP_R16_EA       SUB16, #2, #7
 sub_al_d8               OP_AL_D8        SUB8, #3  sub_al_d8               OP_AL_D8        SUB8, #3
 sub_ax_d16              OP_AX_D16       SUB16, #3  sub_ax_d16              OP_AX_D16       SUB16, #3
 ; segprefix_cs  ; segprefix_cs          !
 ; das  ; das                   *
   
 xor_ea_r8               OP_EA_R8        XOR8, #2, #7  xor_ea_r8               OP_EA_R8        XOR8, #2, #7
 xor_ea_r16              OP_EA_R16       XOR16, #2, #7  xor_ea_r16              OP_EA_R16       XOR16, #2, #7
Line 76  xor_r8_ea  OP_R8_EA XOR8, #2, #7 Line 100  xor_r8_ea  OP_R8_EA XOR8, #2, #7
 xor_r16_ea              OP_R16_EA       XOR16, #2, #7  xor_r16_ea              OP_R16_EA       XOR16, #2, #7
 xor_al_d8               OP_AL_D8        XOR8, #3  xor_al_d8               OP_AL_D8        XOR8, #3
 xor_ax_d16              OP_AX_D16       XOR16, #3  xor_ax_d16              OP_AX_D16       XOR16, #3
 ; segprefix_ss  ; segprefix_ss          !
 ; aaa  ; aaa                   *
   
 cmp_ea_r8               S_EA_R8         SUB8, #2, #7  cmp_ea_r8               S_EA_R8         SUB8, #2, #7
 cmp_ea_r16              S_EA_R16        SUB16, #2, #7  cmp_ea_r16              S_EA_R16        SUB16, #2, #7
Line 85  cmp_r8_ea  S_R8_EA  SUB8, #2, #6 Line 109  cmp_r8_ea  S_R8_EA  SUB8, #2, #6
 cmp_r16_ea              S_R16_EA        SUB16, #2, #6  cmp_r16_ea              S_R16_EA        SUB16, #2, #6
 cmp_al_d8               S_AL_D8         SUB8, #3  cmp_al_d8               S_AL_D8         SUB8, #3
 cmp_ax_d16              S_AX_D16        SUB16, #3  cmp_ax_d16              S_AX_D16        SUB16, #3
 ; segprefix_ds  ; segprefix_ds          !
 ; aas  ; aas                   *
   
 inc_ax                  OP_INC16        #CPU_AX, #2  inc_ax                  OP_INC16        #CPU_AX, #2
 inc_cx                  OP_INC16        #CPU_CX, #2  inc_cx                  OP_INC16        #CPU_CX, #2
Line 122  pop_bp   REGPOP  #CPU_BP, #5 Line 146  pop_bp   REGPOP  #CPU_BP, #5
 pop_si                  REGPOP          #CPU_SI, #5  pop_si                  REGPOP          #CPU_SI, #5
 pop_di                  REGPOP          #CPU_DI, #5  pop_di                  REGPOP          #CPU_DI, #5
   
 ; pusha  ; pusha                 *
 ; popa  ; popa                  *
 ; bound  ; bound                 +
 ; arpl  ; arpl                  +
 ; push_d16  ; push_d16              *
 ; imul_reg_ea_d16  ; imul_r_ea_d16 +
 ; push_d8  ; push_d8               *
 ; imul_reg_ea_d8  ; imul_r_ea_d8  +
 ; insb  ; insb                  *
 ; insw  ; insw                  *
 ; outsb  ; outsb                 *
 ; outsw  ; outsw                 *
   
 ; jo_short  jo_short                JMPNE           #O_FLAG, #2, #7
 ; jno_short  jno_short               JMPEQ           #O_FLAG, #2, #7
 ; jc_short  jc_short                JMPNE           #C_FLAG, #2, #7
 ; jnc_short  jnc_short               JMPEQ           #C_FLAG, #2, #7
 ; jz_short  jz_short                JMPNE           #Z_FLAG, #2, #7
 ; jnz_short  jnz_short               JMPEQ           #Z_FLAG, #2, #7
 ; jna_short  jna_short               JMPNE           #(Z_FLAG + C_FLAG), #2, #7
 ; ja_short  ja_short                JMPEQ           #(Z_FLAG + C_FLAG), #2, #7
 ; js_short  js_short                JMPNE           #S_FLAG, #2, #7
 ; jns_short  jns_short               JMPEQ           #S_FLAG, #2, #7
 ; jp_short  jp_short                JMPNE           #P_FLAG, #2, #7
 ; jnp_short  jnp_short               JMPEQ           #P_FLAG, #2, #7
 ; jl_short  ; jl_short              +
 ; jnl_short  ; jnl_short             +
 ; jle_short  ; jle_short             +
 ; jnle_short  ; jnle_short    +
   
 ; calc_ea8_i8  ; calc_ea8_i8   +
 ; calc_ea16_i16  ; calc_ea16_i16 +
 ; calc_ea16_i8  ; calc_ea16_i8  +
 test_ea_r8              S_EA_R8         AND8, #2, #6  test_ea_r8              S_EA_R8         AND8, #2, #6
 test_ea_r16             S_EA_R16        AND16, #2, #6  test_ea_r16             S_EA_R16        AND16, #2, #6
 ; xchg_ea_r8    *  ; xchg_ea_r8    *
Line 163  test_ea_r16  S_EA_R16 AND16, #2, #6 Line 187  test_ea_r16  S_EA_R16 AND16, #2, #6
 ; mov_ea_r16    *  ; mov_ea_r16    *
 ; mov_r8_ea             *  ; mov_r8_ea             *
 ; mov_r16_ea    *  ; mov_r16_ea    *
 ; mov_ea_seg  ; mov_ea_seg    +
 ; lea_r16_ea  ; lea_r16_ea    +
 ; mov_seg_ea  ; mov_seg_ea            !
 ; pop_ea  ; pop_ea                *
   
 ; nop  ; nop
 xchg_ax_cx              XCHG_AX         #CPU_CX, #3  xchg_ax_cx              XCHG_AX         #CPU_CX, #3
Line 176  xchg_ax_sp  XCHG_AX  #CPU_SP, #3 Line 200  xchg_ax_sp  XCHG_AX  #CPU_SP, #3
 xchg_ax_bp              XCHG_AX         #CPU_BP, #3  xchg_ax_bp              XCHG_AX         #CPU_BP, #3
 xchg_ax_si              XCHG_AX         #CPU_SI, #3  xchg_ax_si              XCHG_AX         #CPU_SI, #3
 xchg_ax_di              XCHG_AX         #CPU_DI, #3  xchg_ax_di              XCHG_AX         #CPU_DI, #3
 ; cbw  ; cbw                   *
 ; cwd  ; cwd                   *
 ; call_far  ; call_far              *
 ; wait  ; wait                  *
 ; pushf  ; pushf                 *
 ; popf  ; popf                          !
 ; sahf  ; sahf                  *
 ; lahf  ; lahf                  *
   
 ; mov_al_m8  ; mov_al_m8             *
 ; mov_ax_m16  ; mov_ax_m16    *
 ; mov_m8_al  ; mov_m8_al             *
 ; mov_m16_ax  ; mov_m16_ax    *
 ; movsb  ; movsb                 *
 ; movsw  ; movsw                 *
 ; cmpsb  ; cmpsb                 *
 ; cmpsw  ; cmpsw                 *
 test_al_d8              S_AL_D8         AND8, #3  test_al_d8              S_AL_D8         AND8, #3
 test_ax_d16             S_AX_D16        AND16, #3  test_ax_d16             S_AX_D16        AND16, #3
 ; stosb  ; stosb                 *
 ; stosw  ; stosw                 *
 ; lodsb  ; lodsb                 *
 ; lodsw  ; lodsw                 *
 ; scasb  ; scasb                 *
 ; scasw  ; scasw                 *
   
 mov_al_imm              MOVIMM8         #CPU_AL, #2  mov_al_imm              MOVIMM8         #CPU_AL, #2
 mov_cl_imm              MOVIMM8         #CPU_CL, #2  mov_cl_imm              MOVIMM8         #CPU_CL, #2
Line 221  mov_di_imm  MOVIMM16 #CPU_DI, #2 Line 245  mov_di_imm  MOVIMM16 #CPU_DI, #2
   
 ; shift_ea8_d8  ; shift_ea8_d8
 ; shift_ea16_d8  ; shift_ea16_d8
 ; ret_near_d16  ; ret_near_d16  +
 ; ret_near  ; ret_near              +
 ; les_r16_ea  ; les_r16_ea    +
 ; lds_r16_ea  ; lds_r16_ea    +
 ; mov_ea8_d8  ; mov_ea8_d8    *
 ; mov_ea16_d16  ; mov_ea16_d16  *
 ; enter  ; enter
 ; leave  ; leave                 +
 ; ret_far_d16  ; ret_far_d16   +
 ; ret_far  ; ret_far               +
 ; int_03  ; int_03                +
 ; int_d8  ; int_d8                +
 ; into  ; into                  +
 ; iret  ; iret                          !
   
 ; shift_ea8_1  ; shift_ea8_1
 ; shift_ea16_1  ; shift_ea16_1
 ; shift_ea8_cl  ; shift_ea8_cl
 ; shift_ea16_cl  ; shift_ea16_cl
 ; aam  ; aam                   +
 ; aad  ; aad                   *
 ; setalc  ; setalc                *
 ; xlat  ; xlat                  *
 ; esc  ; esc                   *
   
 ; loopnz  ; loopnz                *
 ; loopz  ; loopz                 *
 ; loop  ; loop                  *
 ; jcxz  ; jcxz                  *
 ; in_al_d8  ; in_al_d8              *
 ; in_ax_d8  ; in_ax_d8              *
 ; out_d8_al  ; out_d8_al             *
 ; out_d8_ax  ; out_d8_ax             *
 ; call_near  ; call_near             *
 ; jmp_near  ; jmp_near              *
 ; jmp_far  ; jmp_far               *
 ; jmp_short  jmp_short               JMPS    #7
 ; in_al_dx  ; in_al_dx              *
 ; in_ax_dx  ; in_ax_dx              *
 ; out_dx_al  ; out_dx_al             *
 ; out_dx_ax  ; out_dx_ax             *
   
 ; lock  ; lock                  *
 ; repne  ; repne                         !
 ; repe  ; repe                          !
 ; hlt  ; hlt                   +
 ; cmc  ; cmc                   *
 ; ope0xf6  ; ope0xf6
 ; ope0xf7  ; ope0xf7
 ; clc  ; clc                   *
 ; stc  ; stc                   *
 ; cli  ; cli                   *
 ; sti  ; sti                           !
 ; cld  ; cld                   *
 ; std  ; std                   *
 ; ope0xfe  ; ope0xfe
 ; ope0xff  ; ope0xff
   
   
 ; ----  ; ----
   
   reserved                mov             r6, #6
                                   sub             r8, r8, #(1 << 16)
                                   b               i286a_localint
   
   daa                             CPUWORK #3
                                   ldrb    r0, [r9, #CPU_AL]
                                   bic             r8, r8, #O_FLAG
                                   eor             r2, r0, #&80
                                   tst             r8, #A_FLAG
                                   bne             daalo2
                                   and             r1, r0, #&0f
                                   cmp             r1, #10
                                   bcc             daahi
                                   orr             r8, r8, #A_FLAG
   daalo2                  add             r0, r0, #6
                                   orr             r8, r8, r0 lsr #8
                                   and             r0, r0, #&ff
   daahi                   tst             r8, #C_FLAG
                                   bne             daahi2
                                   cmp             r0, #&a0
                                   bcc             daaflg
                                   orr             r8, r8, #C_FLAG
   daahi2                  add             r0, r0, #&60
                                   and             r0, r0, #&ff
   daaflg                  strb    r0, [r9, #CPU_AL]
                                   ldrb    r1, [r10, r0]
                                   bic             r8, r8, #(&ff - A_FLAG - C_FLAG)
                                   and             r2, r0, r2
                                   orr             r8, r1, r8
                                   tst             r2, #&80
                                   addne   r8, r8, #O_FLAG
                                   mov             pc, r11
   
   das                             CPUWORK #3
                                   ldrb    r0, [r9, #CPU_AL]
                                   tst             r8, #C_FLAG
                                   bne             dashi2
                                   cmp             r0, #&9a
                                   bcc             daslo
                                   orr             r8, r8, #C_FLAG
   dashi2                  sub             r0, r0, #&60
                                   and             r0, r0, #&ff
   daslo                   tst             r8, #A_FLAG
                                   bne             daslo2
                                   and             r1, r0, #&0f
                                   cmp             r1, #10
                                   bcc             dasflg
                                   orr             r8, r8, #A_FLAG
   daslo2                  sub             r0, r0, #6
                                   orr             r8, r8, r0 lsr #31
                                   and             r0, r0, #&ff
   dasflg                  strb    r0, [r9, #CPU_AL]
                                   ldrb    r1, [r10, r0]
                                   bic             r8, r8, #(&ff - A_FLAG - C_FLAG)
                                   orr             r8, r1, r8
                                   mov             pc, r11
   
   aaa                             CPUWORK #3
                                   ldrh    r0, [r9, #CPU_AX]
                                   tst             r8, #A_FLAG
                                   bic             r8, r8, #(A_FLAG + C_FLAG)
                                   bne             aaa1
                                   and             r1, r0, #&f
                                   cmp             r1, #10
                                   bcc             aaa2
   aaa1                    orr             r8, r8, #(A_FLAG + C_FLAG)
                                   add             r0, r0, #6
                                   add             r0, r0, #&100
   aaa2                    bic             r0, r0, #&f0
                                   strh    r0, [r9, #CPU_AX]
                                   mov             pc, r11
   
   aas                             CPUWORK #3
                                   ldrh    r0, [r9, #CPU_AX]
                                   tst             r8, #A_FLAG
                                   bic             r8, r8, #(A_FLAG + C_FLAG)
                                   bne             aas1
                                   and             r1, r0, #&f
                                   cmp             r1, #10
                                   movcc   pc, r11
   aas1                    orr             r8, r8, #(A_FLAG + C_FLAG)
                                   sub             r0, r0, #6
                                   sub             r0, r0, #&100
                                   strh    r0, [r9, #CPU_AX]
                                   mov             pc, r11
   
   
   pusha                   CPUWORK #17
                                   ldrh    r4, [r9, #CPU_SP]
                                   ldr             r5, [r9, #CPU_SS_BASE]
                                   mov             r6, r4
                                   mov             r4, r4 lsl #16
                                   ldrh    r1, [r9, #CPU_AX]
                                   sub             r4, r4, #(2 << 16)
                                   add             r0, r5, r4 lsr #16
                                   bl              i286_memorywrite_w
                                   ldrh    r1, [r9, #CPU_CX]
                                   sub             r4, r4, #(2 << 16)
                                   add             r0, r5, r4 lsr #16
                                   bl              i286_memorywrite_w
                                   ldrh    r1, [r9, #CPU_DX]
                                   sub             r4, r4, #(2 << 16)
                                   add             r0, r5, r4 lsr #16
                                   bl              i286_memorywrite_w
                                   ldrh    r1, [r9, #CPU_BX]
                                   sub             r4, r4, #(2 << 16)
                                   add             r0, r5, r4 lsr #16
                                   bl              i286_memorywrite_w
                                   mov             r1, r6
                                   sub             r4, r4, #(2 << 16)
                                   add             r0, r5, r4 lsr #16
                                   bl              i286_memorywrite_w
                                   ldrh    r1, [r9, #CPU_BP]
                                   sub             r4, r4, #(2 << 16)
                                   add             r0, r5, r4 lsr #16
                                   bl              i286_memorywrite_w
                                   ldrh    r1, [r9, #CPU_SI]
                                   sub             r4, r4, #(2 << 16)
                                   add             r0, r5, r4 lsr #16
                                   bl              i286_memorywrite_w
                                   ldrh    r1, [r9, #CPU_DI]
                                   sub             r4, r4, #(2 << 16)
                                   add             r0, r5, r4 lsr #16
                                   bl              i286_memorywrite_w
                                   mov             r0, r4 lsr #16
                                   strh    r0, [r9, #CPU_SP]
                                   mov             pc, r11
   
   popa                    CPUWORK #19
                                   ldrh    r4, [r9, #CPU_SP]
                                   ldr             r5, [r9, #CPU_SS_BASE]
                                   add             r0, r5, r4
                                   mov             r4, r4 lsl #16
                                   bl              i286_memoryread_w
                                   strh    r0, [r9, #CPU_DI]
                                   add             r4, r4, #(2 << 16)
                                   add             r0, r5, r4 lsr #16
                                   bl              i286_memoryread_w
                                   strh    r0, [r9, #CPU_SI]
                                   add             r4, r4, #(2 << 16)
                                   add             r0, r5, r4 lsr #16
                                   bl              i286_memoryread_w
                                   strh    r0, [r9, #CPU_BP]
                                   add             r4, r4, #(4 << 16)
                                   add             r0, r5, r4 lsr #16
                                   bl              i286_memoryread_w
                                   strh    r0, [r9, #CPU_BX]
                                   add             r4, r4, #(2 << 16)
                                   add             r0, r5, r4 lsr #16
                                   bl              i286_memoryread_w
                                   strh    r0, [r9, #CPU_DX]
                                   add             r4, r4, #(2 << 16)
                                   add             r0, r5, r4 lsr #16
                                   bl              i286_memoryread_w
                                   strh    r0, [r9, #CPU_CX]
                                   add             r4, r4, #(2 << 16)
                                   add             r0, r5, r4 lsr #16
                                   bl              i286_memoryread_w
                                   strh    r0, [r9, #CPU_AX]
                                   add             r4, r4, #(2 << 16)
                                   mov             r0, r4 lsr #16
                                   strh    r0, [r9, #CPU_SP]
                                   mov             pc, r11
   
   bound                   GETPC8
                                   cmp             r0, #&c0
                                   bcs             bndreg
                                   CPUWORK #13
                                   R16DST  r0, r12
                                   ldrh    r5, [r12, #CPU_REG]
                                   bl              i286a_a
                                   add             r4, r0, #2
                                   add             r0, r0, r6
                                   bl              i286_memoryread_w
                                   cmp             r5, r0
                                   bcc             bndout
                                   bic             r4, r4, #(1 << 16)
                                   add             r0, r4, r6
                                   bl              i286_memoryread_w
                                   cmp             r5, r0
                                   movls   pc, r11
   bndout                  mov             r6, #5
                                   b               i286a_localint
   bndreg                  mov             r6, #6
                                   sub             r8, r8, #(2 << 16)
                                   b               i286a_localint
   
   push_d16                CPUWORK #3
                                   GETPC16
                                   ldrh    r2, [r9, #CPU_SP]
                                   ldr             r3, [r9, #CPU_SS_BASE]
                                   subs    r2, r2, #2
                                   addcc   r2, r2, #&10000
                                   mov             r1, r0
                                   strh    r2, [r9, #CPU_SP]
                                   add             r0, r2, r3
                                   mov             lr, r11
                                   b               i286_memorywrite_w
   
   imul_r_ea_d16   REG16EA r5, #21, #24
                                   mov             r4, r0, lsl #16
                                   GETPC16
                                   mov             r0, r0, lsl #16
                                   mov             r4, r4, asr #16
                                   mov             r0, r0, asr #16
                                   mul             r1, r0, r4
                                   add             r12, r1, #&8000
                                   strh    r1, [r5, #CPU_REG]
                                   movs    r12, r12 lsr #16
                                   biceq   r8, r8, #O_FLAG
                                   biceq   r8, r8, #C_FLAG
                                   orrne   r8, r8, #O_FLAG
                                   orrne   r8, r8, #C_FLAG
                                   mov             pc, r11
   
   push_d8                 CPUWORK #3
                                   GETPC8
                                   ldrh    r2, [r9, #CPU_SP]
                                   ldr             r3, [r9, #CPU_SS_BASE]
                                   subs    r2, r2, #2
                                   addcc   r2, r2, #&10000
                                   mov             r0, r0 lsl #24
                                   mov             r1, r0 asr #24
                                   strh    r2, [r9, #CPU_SP]
                                   add             r0, r2, r3
                                   mov             lr, r11
                                   b               i286_memorywrite_w
   
   imul_r_ea_d8    REG16EA r5, #21, #24
                                   mov             r4, r0, lsl #16
                                   GETPC8
                                   mov             r0, r0, lsl #24
                                   mov             r4, r4, asr #16
                                   mov             r0, r0, asr #24
                                   mul             r1, r0, r4
                                   add             r12, r1, #&8000
                                   strh    r1, [r5, #CPU_REG]
                                   movs    r12, r12 lsr #16
                                   biceq   r8, r8, #O_FLAG
                                   biceq   r8, r8, #C_FLAG
                                   orrne   r8, r8, #O_FLAG
                                   orrne   r8, r8, #C_FLAG
                                   mov             pc, r11
   
   insb                    CPUWORK #5
                                   ldrh    r0, [r9, #CPU_DX]
                                   bl              iocore_inp8
                                   ldrh    r2, [r9, #CPU_DI]
                                   ldr             r3, [r9, #CPU_ES_BASE]
                                   mov             r1, r0
                                   add             r0, r2, r3
                                   tst             r8, #D_FLAG
                                   addeq   r2, r2, #1
                                   subne   r2, r2, #1
                                   mov             lr, r11
                                   strh    r2, [r9, #CPU_DI]
                                   b               i286_memorywrite
   
   insw                    CPUWORK #5
                                   ldrh    r0, [r9, #CPU_DX]
                                   bl              iocore_inp16
                                   ldrh    r2, [r9, #CPU_DI]
                                   ldr             r3, [r9, #CPU_ES_BASE]
                                   mov             r1, r0
                                   add             r0, r2, r3
                                   tst             r8, #D_FLAG
                                   addeq   r2, r2, #2
                                   subne   r2, r2, #2
                                   mov             lr, r11
                                   strh    r2, [r9, #CPU_DI]
                                   b               i286_memorywrite_w
   
   outsb                   CPUWORK #3
                                   ldrh    r1, [r9, #CPU_SI]
                                   ldr             r2, [r9, #CPU_DS_FIX]
                                   add             r0, r1, r2
                                   tst             r8, #D_FLAG
                                   addeq   r1, r1, #1
                                   subne   r1, r1, #1
                                   strh    r1, [r9, #CPU_SI]
                                   bl              i286_memoryread
                                   mov             r1, r0
                                   ldr             r0, [r9, #CPU_DX]
                                   CPUSV
                                   bl              iocore_out8
                                   CPULD
                                   mov             pc, r11
   
   outsw                   CPUWORK #3
                                   ldrh    r1, [r9, #CPU_SI]
                                   ldr             r2, [r9, #CPU_DS_FIX]
                                   add             r0, r1, r2
                                   tst             r8, #D_FLAG
                                   addeq   r1, r1, #2
                                   subne   r1, r1, #2
                                   strh    r1, [r9, #CPU_SI]
                                   bl              i286_memoryread_w
                                   mov             r1, r0
                                   ldr             r0, [r9, #CPU_DX]
                                   CPUSV
                                   bl              iocore_out16
                                   CPULD
                                   mov             pc, r11
   
   jle_short               tst             r8, #Z_FLAG
                                   bne             jmps
   jl_short                eor             r0, r8, r8 lsr #4
                                   tst             r0, #S_FLAG
                                   bne             jmps
   nojmps                  CPUWORK #2
                                   add             r8, r8, #(1 << 16)
                                   mov             pc, r11
   
   jnle_short              tst             r8, #Z_FLAG
                                   bne             jmps
   jnl_short               eor             r0, r8, r8 lsr #4
                                   tst             r0, #S_FLAG
                                   bne             nojmps
   jmps                    JMPS    #7
   
   
 xchg_ea_r8              EAREG8  r6  xchg_ea_r8              EAREG8  r6
                                 cmp             r0, #&c0                                  cmp             r0, #&c0
                                 bcc             xchgear8_1                                  bcc             xchgear8_1
Line 367  movear16_1  CPUWORK #5 Line 712  movear16_1  CPUWORK #5
                                 b               i286_memorywrite_w                                  b               i286_memorywrite_w
   
 mov_r8_ea               REG8EA  r5, #2, #5  mov_r8_ea               REG8EA  r5, #2, #5
                                 ldrb    r0, [r5, #CPU_REG]                                  strb    r0, [r5, #CPU_REG]
                                 mov             pc, r11                                  mov             pc, r11
   
 mov_r16_ea              REG16EA r5, #2, #5  mov_r16_ea              REG16EA r5, #2, #5
                                   strh    r0, [r5, #CPU_REG]
                                   mov             pc, r11
   
   mov_ea_seg              GETPC8
                                   and             r1, r0, #(3 << 3)
                                   add             r1, r9, r1 lsr #2
                                   ldrh    r5, [r1, #CPU_REG]
                                   cmp             r0, #&c0
                                   bcc             measegm
                                   CPUWORK #2
                                   R16DST  r0, r4
                                   strh    r5, [r4, #CPU_REG]
                                   mov             pc, r11
   measegm                 CPUWORK #3
                                   bl              i286a_ea
                                   mov             r1, r5
                                   mov             lr, r11
                                   b               i286_memorywrite_w
   
   lea_r16_ea              CPUWORK #3
                                   GETPC8
                                   cmp             r0, #&c0
                                   bcs             leareg
                                   R8DST   r0, r5
                                   bl              i286a_lea
                                   strh    r0, [r5, #CPU_REG]
                                   mov             pc, r11
   leareg                  mov             r6, #6
                                   sub             r8, r8, #(2 << 16)
                                   b               i286a_localint
   
   
   pop_ea                  POP             #5
                                   mov             r4, r0
                                   GETPC8
                                   cmp             r0, #&c0
                                   bcs             popreg
                                   bl              i286a_ea
                                   mov             r1, r4
                                   mov             lr, r11
                                   b               i286_memorywrite_w
   popreg                  R16DST  r0, r1
                                   ldrh    r4, [r1, #CPU_REG]
                                   mov             pc, r11
   
   
   cbw                             CPUWORK #2
                                   ldrb    r0, [r9, #CPU_AL]
                                   mov             r1, r0 lsl #24
                                   mov             r0, r1 asr #31
                                   strb    r0, [r9, #CPU_AH]
                                   mov             pc, r11
   
   cwd                             CPUWORK #2
                                   ldrb    r0, [r9, #CPU_AH]
                                   mov             r1, r0 lsl #24
                                   mov             r0, r1 asr #31
                                   strh    r0, [r9, #CPU_DX]
                                   mov             pc, r11
   
   call_far                CPUWORK #13
                                   ldrh    r1, [r9, #CPU_CS]
                                   ldrh    r4, [r9, #CPU_SP]
                                   ldr             r5, [r9, #CPU_SS_BASE]
                                   mov             r4, r4 lsl #16
                                   sub             r4, r4, #(2 << 16)
                                   add             r0, r5, r4 lsr #16
                                   bl              i286_memorywrite_w
                                   add             r12, r8, #(4 << 16)
                                   sub             r4, r4, #(2 << 16)
                                   mov             r1, r12 lsr #16
                                   add             r0, r5, r4 lsr #16
                                   bl              i286_memorywrite_w
                                   ldr             r5, [r9, #CPU_CS_BASE]
                                   strh    r4, [r9, #CPU_SP]
                                   add             r0, r5, r8 lsr #16
                                   bl              i286_memoryread_w
                                   add             r8, r8, #(2 << 16)
                                   mov             r4, r0 lsl #16
                                   add             r0, r5, r8 lsr #16
                                   bl              i286_memoryread_w
                                   mov             r1, r0 lsl #4
                                   strh    r0, [r9, #CPU_CS]
                                   str             r1, [r9, #CPU_CS_BASE]
                                   mov             r0, r8 lsl #16
                                   orr             r8, r4, r0 lsr #16
                                   mov             pc, r11
   
   wait                    CPUWORK #2
                                   mov             pc, r11
   
   pushf                   CPUWORK #3
                                   ldrh    r1, [r9, #CPU_SP]
                                   ldr             r2, [r9, #CPU_SS_BASE]
                                   sub             r0, r1, #2
                                   mov             r3, r0 lsl #16
                                   strh    r0, [r9, #CPU_SP]
                                   add             r0, r2, r3 lsr #16
                                   mov             r1, r8
                                   mov             lr, r11
                                   b               i286_memorywrite_w
   
   sahf                    CPUWORK #2
                                   ldrb    r0, [r9, #CPU_AH]
                                   bic             r8, r8, #&ff
                                   orr             r8, r0, r8
                                   mov             pc, r11
   
   lahf                    CPUWORK #2
                                   strb    r8, [r9, #CPU_AH]
                                   mov             pc, r11
   
   
   mov_al_m8               CPUWORK #5
                                   ldr             r5, [r9, #CPU_DS_FIX]
                                   GETPC16
                                   add             r0, r5, r0
                                   bl              i286_memoryread
                                   strb    r0, [r9, #CPU_AL]
                                   mov             pc, r11
   
   mov_ax_m16              CPUWORK #5
                                   ldr             r5, [r9, #CPU_DS_FIX]
                                   GETPC16
                                   add             r0, r5, r0
                                   bl              i286_memoryread_w
                                   strh    r0, [r9, #CPU_AX]
                                   mov             pc, r11
   
   mov_m8_al               CPUWORK #5
                                   ldr             r5, [r9, #CPU_DS_FIX]
                                   GETPC16
                                   ldrb    r1, [r9, #CPU_AL]
                                   add             r0, r5, r0
                                   mov             lr, r11
                                   b               i286_memorywrite
   
   mov_m16_ax              CPUWORK #5
                                   ldr             r5, [r9, #CPU_DS_FIX]
                                   GETPC16
                                   ldrh    r1, [r9, #CPU_AX]
                                   add             r0, r5, r0
                                   mov             lr, r11
                                   b               i286_memorywrite_w
   
   movsb                   CPUWORK #5
                                   ldr             r0, [r9, #CPU_DS_FIX]
                                   ldrh    r5, [r9, #CPU_SI]
                                   add             r0, r5, r0
                                   bl              i286_memoryread
                                   ldr             r2, [r9, #CPU_ES_BASE]
                                   ldrh    r3, [r9, #CPU_DI]
                                   and             r12, r8, #D_FLAG
                                   mov             r1, r0
                                   mov             r12, r12 lsr #(10 - 1)
                                   add             r0, r2, r3
                                   rsb             r2, r12, #1
                                   mov             lr, r11
                                   add             r5, r2, r5
                                   add             r3, r2, r3
                                   strh    r5, [r9, #CPU_SI]
                                   strh    r3, [r9, #CPU_DI]
                                   b               i286_memorywrite
   
   movsw                   CPUWORK #5
                                   ldr             r0, [r9, #CPU_DS_FIX]
                                   ldrh    r5, [r9, #CPU_SI]
                                   add             r0, r5, r0
                                   bl              i286_memoryread_w
                                   ldr             r2, [r9, #CPU_ES_BASE]
                                   ldrh    r3, [r9, #CPU_DI]
                                   and             r12, r8, #D_FLAG
                                   mov             r1, r0
                                   mov             r12, r12 lsr #(10 - 2)
                                   add             r0, r2, r3
                                   rsb             r2, r12, #2
                                   mov             lr, r11
                                   add             r5, r2, r5
                                   add             r3, r2, r3
                                   strh    r5, [r9, #CPU_SI]
                                   strh    r3, [r9, #CPU_DI]
                                   b               i286_memorywrite_w
   
   cmpsb                   CPUWORK #8
                                   ldr             r0, [r9, #CPU_DS_FIX]
                                   ldrh    r5, [r9, #CPU_SI]
                                   add             r0, r5, r0
                                   bl              i286_memoryread
                                   ldr             r2, [r9, #CPU_ES_BASE]
                                   ldrh    r3, [r9, #CPU_DI]
                                   mov             r6, r0
                                   and             r12, r8, #D_FLAG
                                   mov             r12, r12 lsr #(10 - 1)
                                   add             r0, r2, r3
                                   rsb             r2, r12, #1
                                   add             r5, r2, r5
                                   add             r3, r2, r3
                                   strh    r5, [r9, #CPU_SI]
                                   strh    r3, [r9, #CPU_DI]
                                   bl              i286_memoryread
                                   SUB8    r6, r0
                                   mov             pc, r11
   
   cmpsw                   CPUWORK #8
                                   ldr             r0, [r9, #CPU_DS_FIX]
                                   ldrh    r5, [r9, #CPU_SI]
                                   add             r0, r5, r0
                                   bl              i286_memoryread_w
                                   ldr             r2, [r9, #CPU_ES_BASE]
                                   ldrh    r3, [r9, #CPU_DI]
                                   mov             r6, r0
                                   and             r12, r8, #D_FLAG
                                   mov             r12, r12 lsr #(10 - 2)
                                   add             r0, r2, r3
                                   rsb             r2, r12, #2
                                   add             r5, r2, r5
                                   add             r3, r2, r3
                                   strh    r5, [r9, #CPU_SI]
                                   strh    r3, [r9, #CPU_DI]
                                   bl              i286_memoryread_w
                                   SUB16   r6, r0
                                   mov             pc, r11
   
   stosb                   CPUWORK #3
                                   ldr             r0, [r9, #CPU_ES_BASE]
                                   ldrb    r1, [r9, #CPU_AL]
                                   ldrh    r2, [r9, #CPU_DI]
                                   add             r0, r2, r0
                                   tst             r8, #D_FLAG
                                   addeq   r2, r2, #1
                                   subne   r2, r2, #1
                                   strh    r2, [r9, #CPU_DI]
                                   mov             lr, r11
                                   b               i286_memorywrite
   
   stosw                   CPUWORK #3
                                   ldr             r0, [r9, #CPU_ES_BASE]
                                   ldrh    r1, [r9, #CPU_AX]
                                   ldrh    r2, [r9, #CPU_DI]
                                   add             r0, r2, r0
                                   tst             r8, #D_FLAG
                                   addeq   r2, r2, #2
                                   subne   r2, r2, #2
                                   strh    r2, [r9, #CPU_DI]
                                   mov             lr, r11
                                   b               i286_memorywrite_w
   
   lodsb                   CPUWORK #5
                                   ldr             r0, [r9, #CPU_DS_FIX]
                                   ldrh    r5, [r9, #CPU_SI]
                                   add             r0, r5, r0
                                   bl              i286_memoryread
                                   tst             r8, #D_FLAG
                                   addeq   r5, r5, #1
                                   subne   r5, r5, #1
                                   strb    r0, [r9, #CPU_AL]
                                   strh    r5, [r9, #CPU_SI]
                                   mov             pc, r11
   
   lodsw                   CPUWORK #5
                                   ldr             r0, [r9, #CPU_DS_FIX]
                                   ldrh    r5, [r9, #CPU_SI]
                                   add             r0, r5, r0
                                   bl              i286_memoryread_w
                                   tst             r8, #D_FLAG
                                   addeq   r5, r5, #2
                                   subne   r5, r5, #2
                                   strh    r0, [r9, #CPU_AX]
                                   strh    r5, [r9, #CPU_SI]
                                   mov             pc, r11
   
   scasb                   CPUWORK #7
                                   ldr             r0, [r9, #CPU_DS_FIX]
                                   ldrh    r5, [r9, #CPU_SI]
                                   add             r0, r5, r0
                                   bl              i286_memoryread
                                   tst             r8, #D_FLAG
                                   addeq   r5, r5, #1
                                   subne   r5, r5, #1
                                   strh    r5, [r9, #CPU_SI]
                                   ldrb    r5, [r9, #CPU_AL]
                                   SUB8    r5, r0
                                   mov             pc, r11
   
   scasw                   CPUWORK #7
                                   ldr             r0, [r9, #CPU_DS_FIX]
                                   ldrh    r5, [r9, #CPU_SI]
                                   add             r0, r5, r0
                                   bl              i286_memoryread_w
                                   tst             r8, #D_FLAG
                                   addeq   r5, r5, #2
                                   subne   r5, r5, #2
                                   strh    r5, [r9, #CPU_SI]
                                   ldrh    r5, [r9, #CPU_AX]
                                   SUB16   r5, r0
                                   mov             pc, r11
   
   
   ret_near_d16    CPUWORK #11
                                   GETPC16
                                   ldrh    r1, [r9, #CPU_SP]
                                   ldr             r2, [r9, #CPU_SS_BASE]
                                   add             r3, r0, r1
                                   add             r0, r1, r2
                                   add             r3, r3, #2
                                   strh    r3, [r9, #CPU_SP]
                                   bl              i286_memoryread_w
                                   mov             r8, r8 lsl #16
                                   mov             r8, r8 lsr #16
                                   orr             r8, r8, r0 lsl #16
                                   mov             pc, r11
   
   ret_near                CPUWORK #11
                                   ldrh    r4, [r9, #CPU_SP]
                                   ldr             r0, [r9, #CPU_SS_BASE]
                                   add             r0, r4, r0
                                   add             r4, r4, #2
                                   strh    r4, [r9, #CPU_SP]
                                   bl              i286_memoryread_w
                                   mov             r8, r8 lsl #16
                                   mov             r8, r8 lsr #16
                                   orr             r8, r8, r0 lsl #16
                                   mov             pc, r11
   
   les_r16_ea              GETPC8
                                   cmp             r0, #&c0
                                   bcs             lr16_r
                                   CPUWORK #3
                                   R16DST  r0, r5
                                   bl              i286a_a
                                   add             r4, r0, #2
                                   add             r0, r0, r6
                                   bic             r4, r4, #(1 << 16)
                                   bl              i286_memoryread_w
                                 ldrh    r0, [r5, #CPU_REG]                                  ldrh    r0, [r5, #CPU_REG]
                                   add             r0, r4, r6
                                   bl              i286_memoryread_w
                                   mov             r1, r0 lsl #4
                                   ldr             r0, [r5, #CPU_ES]
                                   ldr             r1, [r5, #CPU_ES_BASE]
                                 mov             pc, r11                                  mov             pc, r11
   lr16_r                  mov             r6, #6
                                   sub             r8, r8, #(2 << 16)
                                   b               i286a_localint
   
   lds_r16_ea              GETPC8
                                   cmp             r0, #&c0
                                   bcs             lr16_r
                                   CPUWORK #3
                                   R16DST  r0, r5
                                   bl              i286a_a
                                   add             r4, r0, #2
                                   add             r0, r0, r6
                                   bic             r4, r4, #(1 << 16)
                                   bl              i286_memoryread_w
                                   ldrh    r0, [r5, #CPU_REG]
                                   add             r0, r4, r6
                                   bl              i286_memoryread_w
                                   mov             r1, r0 lsl #4
                                   ldr             r0, [r5, #CPU_ES]
                                   ldr             r1, [r5, #CPU_DS_BASE]
                                   ldr             r1, [r5, #CPU_DS_FIX]
                                   mov             pc, r11
   
   mov_ea8_d8              GETPC8
                                   cmp             r0, #&c0
                                   bcs             med8_r
                                   CPUWORK #3
                                   bl              i286a_ea
                                   mov             r4, r0
                                   GETPC8
                                   mov             r1, r0
                                   mov             r0, r4
                                   mov             lr, r11
                                   b               i286_memorywrite
   med8_r                  CPUWORK #2
                                   R8DST   r0, r4
                                   GETPC8
                                   ldrb    r0, [r4, #CPU_REG]
                                   mov             pc, r11
   
   mov_ea16_d16    GETPC8
                                   cmp             r0, #&c0
                                   bcs             med16_r
                                   CPUWORK #3
                                   bl              i286a_ea
                                   mov             r4, r0
                                   GETPC16
                                   mov             r1, r0
                                   mov             r0, r4
                                   mov             lr, r11
                                   b               i286_memorywrite_w
   med16_r                 CPUWORK #2
                                   R16DST  r0, r4
                                   GETPC16
                                   ldrh    r0, [r4, #CPU_REG]
                                   mov             pc, r11
   
   enter                   ldrh    r4, [r9, #CPU_SP]
                                   ldrh    r5, [r9, #CPU_BP]
                                   ldr             r0, [r9, #CPU_SS_BASE]
                                   subs    r4, r4, #2
                                   addcc   r4, r4, #&10000
                                   mov             r1, r5
                                   add             r0, r4, r0
                                   bl              i286_memorywrite_w
                                   GETPC16
                                   mov             r6, r0
                                   GETPC8
                                   ands    r0, r0, #&1f
                                   bne             enterlv1
                                   CPUWORK #11
                                   sub             r0, r4, r6
                                   strh    r4, [r9, #CPU_BP]
                                   strh    r0, [r9, #CPU_SP]
                                   mov             pc, r11
   enterlv1                cmp             r0, #1
                                   bne             enterlv2
                                   CPUWORK #15
                                   strh    r4, [r9, #CPU_BP]
                                   ldr             r0, [r9, #CPU_SS_BASE]
                                   mov             r1, r4
                                   subs    r4, r4, #2
                                   addcc   r4, r4, #&10000
                                   add             r0, r4, r0
                                   sub             r2, r4, r6
                                   mov             lr, r11
                                   strh    r2, [r9, #CPU_SP]
                                   bl              i286_memorywrite_w
   enterlv2                mov             r1, r0, lsl #2
                                   add             r1, r1, #12
                                   CPUWORK r1
                                   strh    r4, [r9, #CPU_BP]
                                   stmdb   sp!, {r11}
                                   mov             r4, r4 lsl #16
                                   sub             r2, r4, r0 lsl #17
                                   sub             r2, r4, #(2 << 16)
                                   mov             r2, r2 lsr #16
                                   sub             r3, r2, r6
                                   strh    r3, [r9, #CPU_SP]
                                   mov             r6, r0
                                   ldr             r11, [r9, #CPU_SS_BASE]
                                   add             r0, r11, r2
                                   mov             r1, r5
                                   mov             r5, r5 lsl #16
                                   bl              i286_memorywrite_w
   entlv2lp                sub             r5, r5, #(2 << 16)
                                   sub             r4, r4, #(2 << 16)
                                   add             r0, r11, r5 lsr #16
                                   bl              i286_memoryread_w
                                   mov             r1, r0
                                   add             r0, r11, r4
                                   bl              i286_memorywrite_w
                                   subs    r6, r6, #1
                                   bne             entlv2lp
                                   ldmia   sp!, {pc}
   
   leave                   CPUWORK #5
                                   ldrh    r4, [r9, #CPU_BP]
                                   ldr             r0, [r9, #CPU_SS_BASE]
                                   add             r0, r4, r0
                                   bl              i286_memoryread_w
                                   add             r4, r4, #2
                                   strh    r0, [r9, #CPU_BP]
                                   strh    r4, [r9, #CPU_SP]
                                   mov             pc, r11
   
   ret_far_d16             CPUWORK #15
                                   GETPC16
                                   mov             r6, r0
                                   ldrh    r4, [r9, #CPU_SP]
                                   ldr             r5, [r9, #CPU_SS_BASE]
                                   add             r0, r4, r5
                                   add             r4, r4, #2
                                   bl              i286_memoryread_w
                                   mov             r8, r8 lsl #16
                                   mov             r8, r8 lsr #16
                                   orr             r8, r8, r0 lsl #16
                                   bic             r4, r4, #(1 << 16)
                                   add             r0, r4, r5
                                   add             r4, r4, #2
                                   bl              i286_memoryread_w
                                   add             r4, r6, r4
                                   mov             r1, r0 lsl #4
                                   strh    r4, [r9, #CPU_SP]
                                   strh    r0, [r9, #CPU_CS]
                                   str             r1, [r9, #CPU_CS_BASE]
                                   mov             pc, r11
   
   ret_far                 CPUWORK #15
                                   ldrh    r4, [r9, #CPU_SP]
                                   ldr             r5, [r9, #CPU_SS_BASE]
                                   add             r0, r4, r5
                                   add             r4, r4, #2
                                   bl              i286_memoryread_w
                                   mov             r8, r8 lsl #16
                                   mov             r8, r8 lsr #16
                                   orr             r8, r8, r0 lsl #16
                                   bic             r4, r4, #(1 << 16)
                                   add             r0, r4, r5
                                   add             r4, r4, #2
                                   bl              i286_memoryread_w
                                   mov             r1, r0 lsl #4
                                   strh    r4, [r9, #CPU_SP]
                                   strh    r0, [r9, #CPU_CS]
                                   str             r1, [r9, #CPU_CS_BASE]
                                   mov             pc, r11
   
   int_03                  CPUWORK #3
                                   mov             r6, #3
                                   b               i286a_localint
   
   int_d8                  CPUWORK #3
                                   GETPC8
                                   mov             r6, r0
                                   b               i286a_localint
   
   into                    CPUWORK #4
                                   tst             r8, #O_FLAG
                                   moveq   pc, r11
                                   mov             r6, #4
                                   b               i286a_localint
   
   
   aam                             CPUWORK #16
                                   GETPC8
                                   movs    r0, r0, lsl #7
                                   beq             aamzero
                                   ldrb    r1, [r9, #CPU_AL]
                                   mov             r2, #&80
                                   mov             r3, #0
   aamlp                   cmp             r1, r0
                                   subcs   r1, r1, r0
                                   orrcs   r3, r2, r3
                                   movs    r2, r2 lsr #1
                                   bne             aamlp
                                   bic             r8, r8, #(S_FLAG + Z_FLAG + P_FLAG)
                                   ldrb    r2, [r10, r1]
                                   and             r2, r2, #P_FLAG
                                   orr             r8, r2, r8
                                   orr             r1, r1, r3 lsl #8
                                   movs    r2, r1 lsl #16
                                   orreq   r8, r8, #Z_FLAG
                                   orrmi   r8, r8, #S_FLAG
                                   strh    r1, [r9, #CPU_AX]
                                   mov             pc, r11
   aamzero                 sub             r8, r8, #(2 << 16)
                                   mov             r6, #0
                                   b               i286a_localint
   
   aad                             CPUWORK #14
                                   GETPC8
                                   ldrh    r1, [r9, #CPU_AX]
                                   bic             r8, r8, #(S_FLAG + Z_FLAG + P_FLAG)
                                   mov             r2, r1 lsr #8
                                   mla             r3, r2, r0, r1
                                   and             r1, r3, #&ff
                                   ldrb    r2, [r10, r1]
                                   strh    r1, [r9, #CPU_AX]
                                   orr             r8, r2, r8
                                   mov             pc, r11
   
   setalc                  CPUWORK #2
                                   mov             r0, r8 lsr #31
                                   mov             r0, r0 asr #31
                                   strb    r0, [r9, #CPU_AL]
                                   mov             pc, r11
   
   xlat                    CPUWORK #5
                                   ldrb    r0, [r9, #CPU_AL]
                                   ldrh    r1, [r9, #CPU_BX]
                                   ldr             r2, [r9, #CPU_DS_FIX]
                                   add             r0, r1, r0
                                   bic             r0, r0, #(1 << 16)
                                   add             r0, r2, r0
                                   bl              i286_memoryread
                                   strb    r0, [r9, #CPU_AL]
                                   mov             pc, r11
   
   esc                             CPUWORK #2
                                   GETPC8
                                   cmp             r0, #&c0
                                   movcs   pc, r11
                                   mov             lr, r11
                                   b               i286a_ea
   
   
   loopnz                  ldrh    r0, [r9, #CPU_CX]
                                   subs    r0, r0, #1
                                   strh    r0, [r9, #CPU_CX]
                                   beq             lpnznoj
                                   tst             r8, #Z_FLAG
                                   bne             lpnznoj
                                   JMPS    #8
   lpnznoj                 CPUWORK #4
                                   add             r8, r8, #(1 << 16)
                                   mov             pc, r11
   
   loopz                   ldrh    r0, [r9, #CPU_CX]
                                   subs    r0, r0, #1
                                   strh    r0, [r9, #CPU_CX]
                                   beq             lpznoj
                                   tst             r8, #Z_FLAG
                                   beq             lpznoj
                                   JMPS    #8
   lpznoj                  CPUWORK #4
                                   add             r8, r8, #(1 << 16)
                                   mov             pc, r11
   
   loop                    ldrh    r0, [r9, #CPU_CX]
                                   subs    r0, r0, #1
                                   strh    r0, [r9, #CPU_CX]
                                   beq             lpnoj
                                   JMPS    #8
   lpnoj                   CPUWORK #4
                                   add             r8, r8, #(1 << 16)
                                   mov             pc, r11
   
   jcxz                    ldrh    r0, [r9, #CPU_CX]
                                   cmp             r0, #0
                                   beq             jcxzj
                                   CPUWORK #4
                                   add             r8, r8, #(1 << 16)
                                   mov             pc, r11
   jcxzj                   JMPS    #8
   
   in_al_d8                CPUWORK #5
                                   GETPC8
                                   bl              iocore_inp8
                                   strb    r0, [r9, #CPU_AL]
                                   mov             pc, r11
   
   in_ax_d8                CPUWORK #5
                                   GETPC8
                                   bl              iocore_inp16
                                   strh    r0, [r9, #CPU_AX]
                                   mov             pc, r11
   
   out_d8_al               CPUWORK #3
                                   GETPC8
                                   ldrb    r1, [r9, #CPU_AL]
                                   CPUSV
                                   bl              iocore_out8
                                   CPULD
                                   mov             pc, r11
   
   out_d8_ax               CPUWORK #3
                                   GETPC8
                                   ldrh    r1, [r9, #CPU_AX]
                                   CPUSV
                                   bl              iocore_out16
                                   CPULD
                                   mov             pc, r11
   
   call_near               CPUWORK #7
                                   GETPC16
                                   ldrh    r2, [r9, #CPU_SP]
                                   ldr             r3, [r9, #CPU_SS_BASE]
                                   sub             r1, r2, #2
                                   mov             r2, r1 lsl #16
                                   strh    r1, [r9, #CPU_SP]
                                   mov             r1, r8 lsr #16
                                   add             r8, r8, r0 lsl #16
                                   add             r0, r3, r2 lsr #16
                                   mov             lr, r11
                                   b               i286_memorywrite_w
   
   jmp_near                CPUWORK #7
                                   GETPC16
                                   add             r8, r8, r0 lsl #16
                                   mov             pc, r11
   
   jmp_far                 CPUWORK #11
                                   ldr             r4, [r9, #CPU_CS_BASE]
                                   add             r0, r4, r8 lsr #16
                                   bl              i286_memoryread_w
                                   add             r8, r8, #(2 << 16)
                                   mov             r1, r0, lsl #16
                                   add             r0, r4, r8 lsr #16
                                   mov             r8, r8, lsl #16
                                   orr             r8, r0, r8 lsr #16
                                   bl              i286_memoryread_w
                                   mov             r1, r0 lsl #4
                                   strh    r0, [r9, #CPU_CS]
                                   str             r1, [r9, #CPU_CS_BASE]
                                   mov             pc, r11
   
   in_al_dx                CPUWORK #5
                                   ldrh    r0, [r9, #CPU_DX]
                                   bl              iocore_inp8
                                   strb    r0, [r9, #CPU_AL]
                                   mov             pc, r11
   
   in_ax_dx                CPUWORK #5
                                   ldrh    r0, [r9, #CPU_DX]
                                   bl              iocore_inp16
                                   strh    r0, [r9, #CPU_AX]
                                   mov             pc, r11
   
   out_dx_al               CPUWORK #3
                                   ldrb    r1, [r9, #CPU_AL]
                                   ldrh    r0, [r9, #CPU_DX]
                                   CPUSV
                                   bl              iocore_out8
                                   CPULD
                                   mov             pc, r11
   
   out_dx_ax               CPUWORK #3
                                   ldrh    r1, [r9, #CPU_AX]
                                   ldrh    r0, [r9, #CPU_DX]
                                   CPUSV
                                   bl              iocore_out16
                                   CPULD
                                   mov             pc, r11
   
   
   lock                    CPUWORK #2
                                   mov             pc, r11
   
   hlt                             CREMSET #-1
                                   sub             r8, r8, #(1 << 16)
                                   mov             pc, r11
   
   cmc                             CPUWORK #2
                                   eor             r8, r8, #C_FLAG
                                   mov             pc, r11
   
   clc                             CPUWORK #2
                                   bic             r8, r8, #C_FLAG
                                   mov             pc, r11
   
   stc                             CPUWORK #2
                                   orr             r8, r8, #C_FLAG
                                   mov             pc, r11
   
   cli                             CPUWORK #3
                                   mov             r0, #0
                                   bic             r8, r8, #I_FLAG
                                   strb    r0, [r9, #CPU_TRAP]
                                   mov             pc, r11
   
   cld                             CPUWORK #2
                                   bic             r8, r8, #D_FLAG
                                   mov             pc, r11
   
   std                             CPUWORK #2
                                   orr             r8, r8, #D_FLAG
                                   mov             pc, r11
   
   
   
Line 400  i286a_step  stmdb sp!, {r4 - r11, lr} Line 1489  i286a_step  stmdb sp!, {r4 - r11, lr}
 ias_r9                  dcd             i286core - CPU_REG  ias_r9                  dcd             i286core - CPU_REG
 ias_r10                 dcd             _szpcflag8  ias_r10                 dcd             _szpcflag8
   
 optbl1                  dcd             add_ea_r8  optbl1                  dcd             add_ea_r8                       ; 00
                                 dcd             add_ea_r16                                  dcd             add_ea_r16
                                 dcd             add_r8_ea                                  dcd             add_r8_ea
                                 dcd             add_r16_ea                                  dcd             add_r16_ea
Line 417  optbl1   dcd  add_ea_r8 Line 1506  optbl1   dcd  add_ea_r8
                                 dcd             push_cs                                  dcd             push_cs
                                 dcd             0                                       ; op_0f/pop_cs                                  dcd             0                                       ; op_0f/pop_cs
   
                                 dcd             adc_ea_r8                                  dcd             adc_ea_r8                       ; 10
                                 dcd             adc_ea_r16                                  dcd             adc_ea_r16
                                 dcd             adc_r8_ea                                  dcd             adc_r8_ea
                                 dcd             adc_r16_ea                                  dcd             adc_r16_ea
Line 434  optbl1   dcd  add_ea_r8 Line 1523  optbl1   dcd  add_ea_r8
                                 dcd             push_ds                                  dcd             push_ds
                                 dcd             pop_ds                                  dcd             pop_ds
   
                                 dcd             and_ea_r8                                  dcd             and_ea_r8                       ; 20
                                 dcd             and_ea_r16                                  dcd             and_ea_r16
                                 dcd             and_r8_ea                                  dcd             and_r8_ea
                                 dcd             and_r16_ea                                  dcd             and_r16_ea
                                 dcd             and_al_d8                                  dcd             and_al_d8
                                 dcd             and_ax_d16                                  dcd             and_ax_d16
                                 dcd             0                               ; segprefix_es                                  dcd             0                                       ; segprefix_es
                                 dcd             0                               ; daa                                  dcd             0                                       ; daa
                                 dcd             sub_ea_r8                                  dcd             sub_ea_r8
                                 dcd             sub_ea_r16                                  dcd             sub_ea_r16
                                 dcd             sub_r8_ea                                  dcd             sub_r8_ea
                                 dcd             sub_r16_ea                                  dcd             sub_r16_ea
                                 dcd             sub_al_d8                                  dcd             sub_al_d8
                                 dcd             sub_ax_d16                                  dcd             sub_ax_d16
                                 dcd             0                               ; segprefix_cs                                  dcd             0                                       ; segprefix_cs
                                 dcd             0                               ; das                                  dcd             0                                       ; das
   
                                 dcd             xor_ea_r8                                  dcd             xor_ea_r8                       ; 30
                                 dcd             xor_ea_r16                                  dcd             xor_ea_r16
                                 dcd             xor_r8_ea                                  dcd             xor_r8_ea
                                 dcd             xor_r16_ea                                  dcd             xor_r16_ea
                                 dcd             xor_al_d8                                  dcd             xor_al_d8
                                 dcd             xor_ax_d16                                  dcd             xor_ax_d16
                                 dcd             0                               ; segprefix_ss                                  dcd             0                                       ; segprefix_ss
                                 dcd             0                               ; aaa                                  dcd             0                                       ; aaa
                                 dcd             cmp_ea_r8                                  dcd             cmp_ea_r8
                                 dcd             cmp_ea_r16                                  dcd             cmp_ea_r16
                                 dcd             cmp_r8_ea                                  dcd             cmp_r8_ea
                                 dcd             cmp_r16_ea                                  dcd             cmp_r16_ea
                                 dcd             cmp_al_d8                                  dcd             cmp_al_d8
                                 dcd             cmp_ax_d16                                  dcd             cmp_ax_d16
                                 dcd             0                               ; segprefix_ds                                  dcd             0                                       ; segprefix_ds
                                 dcd             0                               ; aas                                  dcd             0                                       ; aas
   
                                 dcd             inc_ax                                  dcd             inc_ax                          ; 40
                                 dcd             inc_cx                                  dcd             inc_cx
                                 dcd             inc_dx                                  dcd             inc_dx
                                 dcd             inc_bx                                  dcd             inc_bx
Line 485  optbl1   dcd  add_ea_r8 Line 1574  optbl1   dcd  add_ea_r8
                                 dcd             dec_si                                  dcd             dec_si
                                 dcd             dec_di                                  dcd             dec_di
   
                                 dcd             push_ax                                  dcd             push_ax                         ; 50
                                 dcd             push_cx                                  dcd             push_cx
                                 dcd             push_dx                                  dcd             push_dx
                                 dcd             push_bx                                  dcd             push_bx
Line 502  optbl1   dcd  add_ea_r8 Line 1591  optbl1   dcd  add_ea_r8
                                 dcd             pop_si                                  dcd             pop_si
                                 dcd             pop_di                                  dcd             pop_di
   
                                 dcd             0                               ; pusha                                  dcd             pusha                           ; 60
                                 dcd             0                               ; popa                                  dcd             popa
                                 dcd             0                               ; bound                                  dcd             0                                       ; bound
                                 dcd             0                               ; arpl                                  dcd             0                                       ; arpl(reserved)
                                 dcd             0                               ; push_d16                                  dcd             0                                       ; reserved
                                 dcd             0                               ; imul_reg_ea_d16                                  dcd             0                                       ; reserved
                                 dcd             0                               ; push_d8                                  dcd             0                                       ; reserved
                                 dcd             0                               ; imul_reg_ea_d8                                  dcd             0                                       ; reserved
                                 dcd             0                               ; insb                                  dcd             0                                       ; push_d16
                                 dcd             0                               ; insw                                  dcd             0                                       ; imul_reg_ea_d16
                                 dcd             0                               ; outsb                                  dcd             0                                       ; push_d8
                                 dcd             0                               ; outsw                                  dcd             0                                       ; imul_reg_ea_d8
                                   dcd             0                                       ; insb
                                 dcd             0                               ; jo_short                                  dcd             0                                       ; insw
                                 dcd             0                               ; jno_short                                  dcd             outsb
                                 dcd             0                               ; jc_short                                  dcd             outsw
                                 dcd             0                               ; jnc_short  
                                 dcd             0                               ; jz_short                                  dcd             jo_short                        ; 70
                                 dcd             0                               ; jnz_short                                  dcd             jno_short
                                 dcd             0                               ; jna_short                                  dcd             jc_short
                                 dcd             0                               ; ja_short                                  dcd             jnc_short
                                 dcd             0                               ; js_short                                  dcd             jz_short
                                 dcd             0                               ; jns_short                                  dcd             jnz_short
                                 dcd             0                               ; jp_short                                  dcd             jna_short
                                 dcd             0                               ; jnp_short                                  dcd             ja_short
                                 dcd             0                               ; jl_short                                  dcd             js_short
                                 dcd             0                               ; jnl_short                                  dcd             jns_short
                                 dcd             0                               ; jle_short                                  dcd             jp_short
                                 dcd             0                               ; jnle_short                                  dcd             jnp_short
                                   dcd             0                                       ; jl_short
                                 dcd             0                               ; calc_ea8_i8                                  dcd             0                                       ; jnl_short
                                 dcd             0                               ; calc_ea16_i16                                  dcd             0                                       ; jle_short
                                 dcd             0                               ; calc_ea16_i8                                  dcd             0                                       ; jnle_short
   
                                   dcd             i286aop80                       ; 80
                                   dcd             i286aop81
                                   dcd             i286aop80
                                   dcd             i286aop83
                                 dcd             test_ea_r8                                  dcd             test_ea_r8
                                 dcd             test_ea_r16                                  dcd             test_ea_r16
                                 dcd             xchg_ea_r8                                  dcd             xchg_ea_r8
Line 543  optbl1   dcd  add_ea_r8 Line 1637  optbl1   dcd  add_ea_r8
                                 dcd             mov_ea_r16                                  dcd             mov_ea_r16
                                 dcd             mov_r8_ea                                  dcd             mov_r8_ea
                                 dcd             mov_r16_ea                                  dcd             mov_r16_ea
                                 dcd             0                               ; mov_ea_seg                                  dcd             0                                       ; mov_ea_seg
                                 dcd             0                               ; lea_r16_ea                                  dcd             0                                       ; lea_r16_ea
                                 dcd             0                               ; mov_seg_ea                                  dcd             0                                       ; mov_seg_ea
                                 dcd             0                               ; pop_ea                                  dcd             0                                       ; pop_ea
   
                                 dcd             0                               ; nop                                  dcd             0                                       ; nop           ; 90
                                 dcd             xchg_ax_cx                                  dcd             xchg_ax_cx
                                 dcd             xchg_ax_dx                                  dcd             xchg_ax_dx
                                 dcd             xchg_ax_bx                                  dcd             xchg_ax_bx
Line 556  optbl1   dcd  add_ea_r8 Line 1650  optbl1   dcd  add_ea_r8
                                 dcd             xchg_ax_bp                                  dcd             xchg_ax_bp
                                 dcd             xchg_ax_si                                  dcd             xchg_ax_si
                                 dcd             xchg_ax_di                                  dcd             xchg_ax_di
                                 dcd             0                               ; cbw                                  dcd             cbw
                                 dcd             0                               ; cwd                                  dcd             cwd
                                 dcd             0                               ; call_far                                  dcd             0                                       ; call_far
                                 dcd             0                               ; wait                                  dcd             wait
                                 dcd             0                               ; pushf                                  dcd             0                                       ; pushf
                                 dcd             0                               ; popf                                  dcd             0                                       ; popf
                                 dcd             0                               ; sahf                                  dcd             sahf
                                 dcd             0                               ; lahf                                  dcd             lahf
   
                                 dcd             0                               ; mov_al_m8                                  dcd             mov_al_m8                       ; a0
                                 dcd             0                               ; mov_ax_m16                                  dcd             mov_ax_m16
                                 dcd             0                               ; mov_m8_al                                  dcd             mov_m8_al
                                 dcd             0                               ; mov_m16_ax                                  dcd             mov_m16_ax
                                 dcd             0                               ; movsb                                  dcd             movsb
                                 dcd             0                               ; movsw                                  dcd             movsw
                                 dcd             0                               ; cmpsb                                  dcd             0                                       ; cmpsb
                                 dcd             0                               ; cmpsw                                  dcd             0                                       ; cmpsw
                                 dcd             test_al_d8                                  dcd             test_al_d8
                                 dcd             test_ax_d16                                  dcd             test_ax_d16
                                 dcd             0                               ; stosb                                  dcd             stosb
                                 dcd             0                               ; stosw                                  dcd             stosw
                                 dcd             0                               ; lodsb                                  dcd             lodsb
                                 dcd             0                               ; lodsw                                  dcd             lodsw
                                 dcd             0                               ; scasb                                  dcd             0                                       ; scasb
                                 dcd             0                               ; scasw                                  dcd             0                                       ; scasw
   
                                 dcd             mov_al_imm                                  dcd             mov_al_imm                      ; b0
                                 dcd             mov_cl_imm                                  dcd             mov_cl_imm
                                 dcd             mov_dl_imm                                  dcd             mov_dl_imm
                                 dcd             mov_bl_imm                                  dcd             mov_bl_imm
Line 599  optbl1   dcd  add_ea_r8 Line 1693  optbl1   dcd  add_ea_r8
                                 dcd             mov_si_imm                                  dcd             mov_si_imm
                                 dcd             mov_di_imm                                  dcd             mov_di_imm
   
                                 dcd             0                               ; shift_ea8_d8                                  dcd             i286asft8_d8            ; c0
                                 dcd             0                               ; shift_ea16_d8                                  dcd             i286asft16_d8
                                 dcd             0                               ; ret_near_d16                                  dcd             0                                       ; ret_near_d16
                                 dcd             0                               ; ret_near                                  dcd             0                                       ; ret_near
                                 dcd             0                               ; les_r16_ea                                  dcd             0                                       ; les_r16_ea
                                 dcd             0                               ; lds_r16_ea                                  dcd             0                                       ; lds_r16_ea
                                 dcd             0                               ; mov_ea8_d8                                  dcd             0                                       ; mov_ea8_d8
                                 dcd             0                               ; mov_ea16_d16                                  dcd             0                                       ; mov_ea16_d16
                                 dcd             0                               ; enter                                  dcd             0                                       ; enter
                                 dcd             0                               ; leave                                  dcd             0                                       ; leave
                                 dcd             0                               ; ret_far_d16                                  dcd             0                                       ; ret_far_d16
                                 dcd             0                               ; ret_far                                  dcd             0                                       ; ret_far
                                 dcd             0                               ; int_03                                  dcd             int_03
                                 dcd             0                               ; int_d8                                  dcd             int_d8
                                 dcd             0                               ; into                                  dcd             into
                                 dcd             0                               ; iret                                  dcd             0                                       ; iret
   
                                 dcd             0                               ; shift_ea8_1                                  dcd             i286asft8_1                     ; d0
                                 dcd             0                               ; shift_ea16_1                                  dcd             i286asft16_1
                                 dcd             0                               ; shift_ea8_cl                                  dcd             i286asft8_cl
                                 dcd             0                               ; shift_ea16_cl                                  dcd             i286asft16_cl
                                 dcd             0                               ; aam                                  dcd             0                                       ; aam
                                 dcd             0                               ; aad                                  dcd             0                                       ; aad
                                 dcd             0                               ; setalc                                  dcd             0                                       ; setalc
                                 dcd             0                               ; xlat                                  dcd             0                                       ; xlat
                                 dcd             0                               ; esc0                                  dcd             esc
                                 dcd             0                               ; esc1                                  dcd             esc
                                 dcd             0                               ; esc2                                  dcd             esc
                                 dcd             0                               ; esc3                                  dcd             esc
                                 dcd             0                               ; esc4                                  dcd             esc
                                 dcd             0                               ; esc5                                  dcd             esc
                                 dcd             0                               ; esc6                                  dcd             esc
                                 dcd             0                               ; esc7                                  dcd             esc
   
                                 dcd             0                               ; loopnz                                  dcd             loopnz                          ; e0
                                 dcd             0                               ; loopz                                  dcd             loopz
                                 dcd             0                               ; loop                                  dcd             loop
                                 dcd             0                               ; jcxz                                  dcd             jcxz
                                 dcd             0                               ; in_al_d8                                  dcd             0                                       ; in_al_d8
                                 dcd             0                               ; in_ax_d8                                  dcd             0                                       ; in_ax_d8
                                 dcd             0                               ; out_d8_al                                  dcd             out_d8_al
                                 dcd             0                               ; out_d8_ax                                  dcd             out_d8_ax
                                 dcd             0                               ; call_near                                  dcd             0                                       ; call_near
                                 dcd             0                               ; jmp_near                                  dcd             0                                       ; jmp_near
                                 dcd             0                               ; jmp_far                                  dcd             0                                       ; jmp_far
                                 dcd             0                               ; jmp_short                                  dcd             jmp_short
                                 dcd             0                               ; in_al_dx                                  dcd             0                                       ; in_al_dx
                                 dcd             0                               ; in_ax_dx                                  dcd             0                                       ; in_ax_dx
                                 dcd             0                               ; out_dx_al                                  dcd             out_dx_al
                                 dcd             0                               ; out_dx_ax                                  dcd             out_dx_ax
   
                                 dcd             0                               ; lock                                  dcd             lock                            ; f0
                                 dcd             0                               ; lock                                  dcd             lock
                                 dcd             0                               ; repne                                  dcd             0                                       ; repne
                                 dcd             0                               ; repe                                  dcd             0                                       ; repe
                                 dcd             0                               ; hlt                                  dcd             hlt
                                 dcd             0                               ; cmc                                  dcd             cmc
                                 dcd             0                               ; ope0xf6                                  dcd             0                                       ; ope0xf6
                                 dcd             0                               ; ope0xf7                                  dcd             0                                       ; ope0xf7
                                 dcd             0                               ; clc                                  dcd             clc
                                 dcd             0                               ; stc                                  dcd             stc
                                 dcd             0                               ; cli                                  dcd             cli
                                 dcd             0                               ; sti                                  dcd             0                                       ; sti
                                 dcd             0                               ; cld                                  dcd             cld
                                 dcd             0                               ; std                                  dcd             std
                                 dcd             0                               ; ope0xfe                                  dcd             i286aopfe
                                 dcd             0                               ; ope0xff                                  dcd             0                                       ; ope0xff
   
   
         END          END
   

Removed from v.1.1  
changed lines
  Added in v.1.6


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