Diff for /np2/i286a/i286a_mn.s between versions 1.2 and 1.3

version 1.2, 2003/12/16 09:26:50 version 1.3, 2003/12/16 21:59:07
Line 15 Line 15
         IMPORT          iocore_inp16          IMPORT          iocore_inp16
         IMPORT          iocore_out8          IMPORT          iocore_out8
         IMPORT          iocore_out16          IMPORT          iocore_out16
           IMPORT          i286a_localint
   
         EXPORT          i286a_step          EXPORT          i286a_step
         EXPORT          optbl1          EXPORT          optbl1
Line 37  or_r16_ea  OP_R16_EA OR16, #2, #7 Line 38  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 132  pop_di   REGPOP  #CPU_DI, #5 Line 133  pop_di   REGPOP  #CPU_DI, #5
 ; bound  ; bound
 ; arpl  ; arpl
 ; push_d16              *  ; push_d16              *
 ; imul_r_ea_d16  ; imul_r_ea_d16 +
 ; push_d8               *  ; push_d8               *
 ; imul_r_ea_d8  ; imul_r_ea_d8  +
 ; insb                  *  ; insb                  *
 ; insw                  *  ; insw                  *
 ; outsb                 *  ; outsb                 *
Line 152  js_short  JMPNE  #S_FLAG, #2, #7 Line 153  js_short  JMPNE  #S_FLAG, #2, #7
 jns_short               JMPEQ           #S_FLAG, #2, #7  jns_short               JMPEQ           #S_FLAG, #2, #7
 jp_short                JMPNE           #P_FLAG, #2, #7  jp_short                JMPNE           #P_FLAG, #2, #7
 jnp_short               JMPEQ           #P_FLAG, #2, #7  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 168  test_ea_r16  S_EA_R16 AND16, #2, #6 Line 169  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                *
   
Line 226  mov_di_imm  MOVIMM16 #CPU_DI, #2 Line 227  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                   *
Line 271  jmp_short  JMPS #7 Line 272  jmp_short  JMPS #7
 ; 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                   *
Line 457  push_d16  CPUWORK #3 Line 458  push_d16  CPUWORK #3
                                 mov             lr, r11                                  mov             lr, r11
                                 b               i286_memorywrite_w                                  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  push_d8                 CPUWORK #3
                                 GETPC8                                  GETPC8
                                 ldrh    r2, [r9, #CPU_SP]                                  ldrh    r2, [r9, #CPU_SP]
Line 470  push_d8   CPUWORK #3 Line 487  push_d8   CPUWORK #3
                                 mov             lr, r11                                  mov             lr, r11
                                 b               i286_memorywrite_w                                  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                    ldrh    r0, [r9, #CPU_DX]  insb                    ldrh    r0, [r9, #CPU_DX]
                                 bl              iocore_inp8                                  bl              iocore_inp8
                                 ldrh    r2, [r9, #CPU_DI]                                  ldrh    r2, [r9, #CPU_DI]
Line 522  outsw   ldrh r1, [r9, #CPU_SI] Line 555  outsw   ldrh r1, [r9, #CPU_SI]
                                 mov             lr, r11                                  mov             lr, r11
                                 b               iocore_out16                                  b               iocore_out16
   
   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
Line 615  mov_r16_ea  REG16EA r5, #2, #5 Line 664  mov_r16_ea  REG16EA r5, #2, #5
                                 ldrh    r0, [r5, #CPU_REG]                                  ldrh    r0, [r5, #CPU_REG]
                                 mov             pc, r11                                  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  pop_ea                  POP             #5
                                 mov             r4, r0                                  mov             r4, r0
                                 GETPC8                                  GETPC8
Line 881  scasw   CPUWORK #7 Line 959  scasw   CPUWORK #7
                                 mov             pc, r11                                  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
   
   mov_ea8_d8              GETPC16
                                   and             r1, r0, #&ff
                                   mov             r4, r0, lsr #8
                                   cmp             r1, #&c0
                                   bcs             med8_r
                                   bl              i286a_ea
                                   mov             r1, r4
                                   mov             lr, r11
                                   b               i286_memorywrite
   med8_r                  R8DST   r0, r1
                                   ldrb    r4, [r1, #CPU_REG]
                                   mov             pc, r11
   
   mov_ea16_d16    GETPC8
                                   cmp             r0, #&c0
                                   bcs             med16_r
                                   bl              i286a_ea
                                   mov             r4, r0
                                   GETPC16
                                   mov             r1, r0
                                   mov             r0, r4
                                   mov             lr, r11
                                   b               i286_memorywrite_w
   med16_r                 R16DST  r0, r4
                                   GETPC16
                                   ldrh    r0, [r4, #CPU_REG]
                                   mov             pc, r11
   
   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  setalc                  CPUWORK #2
                                 mov             r0, r8 lsr #31                                  mov             r0, r8 lsr #31
                                 mov             r0, r0 asr #31                                  mov             r0, r0 asr #31
Line 1030  out_dx_ax  CPUWORK #3 Line 1267  out_dx_ax  CPUWORK #3
 lock                    CPUWORK #2  lock                    CPUWORK #2
                                 mov             pc, r11                                  mov             pc, r11
   
   hlt                             CREMSET #-1
                                   sub             r8, r8, #(1 << 16)
                                   mov             pc, r11
   
 cmc                             CPUWORK #2  cmc                             CPUWORK #2
                                 eor             r8, r8, #C_FLAG                                  eor             r8, r8, #C_FLAG
                                 mov             pc, r11                                  mov             pc, r11
Line 1042  stc    CPUWORK #2 Line 1283  stc    CPUWORK #2
                                 orr             r8, r8, #C_FLAG                                  orr             r8, r8, #C_FLAG
                                 mov             pc, r11                                  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  cld                             CPUWORK #2
                                 bic             r8, r8, #D_FLAG                                  bic             r8, r8, #D_FLAG
                                 mov             pc, r11                                  mov             pc, r11

Removed from v.1.2  
changed lines
  Added in v.1.3


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