Diff for /np2/i286a/i286a_mn.s between versions 1.9 and 1.12

version 1.9, 2003/12/18 23:07:49 version 1.12, 2003/12/19 09:38:25
Line 3 Line 3
         INCLUDE         i286aea.inc          INCLUDE         i286aea.inc
         INCLUDE         i286aalu.inc          INCLUDE         i286aalu.inc
         INCLUDE         i286aop.inc          INCLUDE         i286aop.inc
         INCLUDE         i286apic.inc          INCLUDE         i286aio.inc
   
         IMPORT          i286core          IMPORT          i286core
         IMPORT          _szpcflag8          IMPORT          iflags
         IMPORT          i286a_localint          IMPORT          i286a_localint
           IMPORT          i286a_trapint
           EXPORT          i286a_trapintr
         IMPORT          i286a_ea          IMPORT          i286a_ea
         IMPORT          i286a_lea          IMPORT          i286a_lea
         IMPORT          i286a_a          IMPORT          i286a_a
   
         IMPORT          i286_memoryread          IMPORT          i286a_memoryread
         IMPORT          i286_memoryread_w          IMPORT          i286a_memoryread_w
         IMPORT          i286_memorywrite          IMPORT          i286a_memorywrite
         IMPORT          i286_memorywrite_w          IMPORT          i286a_memorywrite_w
   
         IMPORT          iocore_inp8          IMPORT          iocore_inp8
         IMPORT          iocore_inp16          IMPORT          iocore_inp16
         IMPORT          iocore_out8          IMPORT          iocore_out8
         IMPORT          iocore_out16          IMPORT          iocore_out16
   
           IMPORT          dmap_i286
         IMPORT          biosfunc          IMPORT          biosfunc
   
         IMPORT          dmac          IMPORT          dmac
Line 433  pusha   ldrh r4, [r9, #CPU_SP] Line 436  pusha   ldrh r4, [r9, #CPU_SP]
                                 sub             r4, r4, #(2 << 16)                                  sub             r4, r4, #(2 << 16)
                                 ldrh    r1, [r9, #CPU_AX]                                  ldrh    r1, [r9, #CPU_AX]
                                 add             r0, r5, r4 lsr #16                                  add             r0, r5, r4 lsr #16
                                 bl              i286_memorywrite_w                                  bl              i286a_memorywrite_w
                                 sub             r4, r4, #(2 << 16)                                  sub             r4, r4, #(2 << 16)
                                 ldrh    r1, [r9, #CPU_CX]                                  ldrh    r1, [r9, #CPU_CX]
                                 add             r0, r5, r4 lsr #16                                  add             r0, r5, r4 lsr #16
                                 bl              i286_memorywrite_w                                  bl              i286a_memorywrite_w
                                 sub             r4, r4, #(2 << 16)                                  sub             r4, r4, #(2 << 16)
                                 ldrh    r1, [r9, #CPU_DX]                                  ldrh    r1, [r9, #CPU_DX]
                                 add             r0, r5, r4 lsr #16                                  add             r0, r5, r4 lsr #16
                                 bl              i286_memorywrite_w                                  bl              i286a_memorywrite_w
                                 sub             r4, r4, #(2 << 16)                                  sub             r4, r4, #(2 << 16)
                                 ldrh    r1, [r9, #CPU_BX]                                  ldrh    r1, [r9, #CPU_BX]
                                 add             r0, r5, r4 lsr #16                                  add             r0, r5, r4 lsr #16
                                 bl              i286_memorywrite_w                                  bl              i286a_memorywrite_w
                                 mov             r1, r6                                  mov             r1, r6
                                 sub             r4, r4, #(2 << 16)                                  sub             r4, r4, #(2 << 16)
                                 add             r0, r5, r4 lsr #16                                  add             r0, r5, r4 lsr #16
                                 bl              i286_memorywrite_w                                  bl              i286a_memorywrite_w
                                 sub             r4, r4, #(2 << 16)                                  sub             r4, r4, #(2 << 16)
                                 ldrh    r1, [r9, #CPU_BP]                                  ldrh    r1, [r9, #CPU_BP]
                                 add             r0, r5, r4 lsr #16                                  add             r0, r5, r4 lsr #16
                                 bl              i286_memorywrite_w                                  bl              i286a_memorywrite_w
                                 sub             r4, r4, #(2 << 16)                                  sub             r4, r4, #(2 << 16)
                                 ldrh    r1, [r9, #CPU_SI]                                  ldrh    r1, [r9, #CPU_SI]
                                 add             r0, r5, r4 lsr #16                                  add             r0, r5, r4 lsr #16
                                 bl              i286_memorywrite_w                                  bl              i286a_memorywrite_w
                                 sub             r4, r4, #(2 << 16)                                  sub             r4, r4, #(2 << 16)
                                 ldrh    r1, [r9, #CPU_DI]                                  ldrh    r1, [r9, #CPU_DI]
                                 add             r0, r5, r4 lsr #16                                  add             r0, r5, r4 lsr #16
                                 bl              i286_memorywrite_w                                  bl              i286a_memorywrite_w
                                 mov             r0, r4 lsr #16                                  mov             r0, r4 lsr #16
                                 strh    r0, [r9, #CPU_SP]                                  strh    r0, [r9, #CPU_SP]
                                 mov             pc, r11                                  mov             pc, r11
Line 471  popa   ldrh r4, [r9, #CPU_SP] Line 474  popa   ldrh r4, [r9, #CPU_SP]
                                 CPUWORK #19                                  CPUWORK #19
                                 add             r0, r5, r4                                  add             r0, r5, r4
                                 mov             r4, r4 lsl #16                                  mov             r4, r4 lsl #16
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 add             r4, r4, #(2 << 16)                                  add             r4, r4, #(2 << 16)
                                 strh    r0, [r9, #CPU_DI]                                  strh    r0, [r9, #CPU_DI]
                                 add             r0, r5, r4 lsr #16                                  add             r0, r5, r4 lsr #16
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 add             r4, r4, #(2 << 16)                                  add             r4, r4, #(2 << 16)
                                 strh    r0, [r9, #CPU_SI]                                  strh    r0, [r9, #CPU_SI]
                                 add             r0, r5, r4 lsr #16                                  add             r0, r5, r4 lsr #16
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 add             r4, r4, #(4 << 16)                                  add             r4, r4, #(4 << 16)
                                 strh    r0, [r9, #CPU_BP]                                  strh    r0, [r9, #CPU_BP]
                                 add             r0, r5, r4 lsr #16                                  add             r0, r5, r4 lsr #16
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 add             r4, r4, #(2 << 16)                                  add             r4, r4, #(2 << 16)
                                 strh    r0, [r9, #CPU_BX]                                  strh    r0, [r9, #CPU_BX]
                                 add             r0, r5, r4 lsr #16                                  add             r0, r5, r4 lsr #16
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 add             r4, r4, #(2 << 16)                                  add             r4, r4, #(2 << 16)
                                 strh    r0, [r9, #CPU_DX]                                  strh    r0, [r9, #CPU_DX]
                                 add             r0, r5, r4 lsr #16                                  add             r0, r5, r4 lsr #16
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 add             r4, r4, #(2 << 16)                                  add             r4, r4, #(2 << 16)
                                 strh    r0, [r9, #CPU_CX]                                  strh    r0, [r9, #CPU_CX]
                                 add             r0, r5, r4 lsr #16                                  add             r0, r5, r4 lsr #16
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 add             r4, r4, #(2 << 16)                                  add             r4, r4, #(2 << 16)
                                 strh    r0, [r9, #CPU_AX]                                  strh    r0, [r9, #CPU_AX]
                                 mov             r0, r4 lsr #16                                  mov             r0, r4 lsr #16
Line 511  bound   GETPC8 Line 514  bound   GETPC8
                                 bl              i286a_a                                  bl              i286a_a
                                 add             r4, r0, #2                                  add             r4, r0, #2
                                 add             r0, r0, r6                                  add             r0, r0, r6
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 cmp             r5, r0                                  cmp             r5, r0
                                 bcc             bndout                                  bcc             bndout
                                 bic             r4, r4, #(1 << 16)                                  bic             r4, r4, #(1 << 16)
                                 add             r0, r4, r6                                  add             r0, r4, r6
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 cmp             r5, r0                                  cmp             r5, r0
                                 movls   pc, r11                                  movls   pc, r11
 bndout                  mov             r6, #5  bndout                  mov             r6, #5
Line 535  push_d16  CPUWORK #3 Line 538  push_d16  CPUWORK #3
                                 strh    r2, [r9, #CPU_SP]                                  strh    r2, [r9, #CPU_SP]
                                 add             r0, r2, r3                                  add             r0, r2, r3
                                 mov             lr, r11                                  mov             lr, r11
                                 b               i286_memorywrite_w                                  b               i286a_memorywrite_w
   
 imul_r_ea_d16   REG16EA r5, #21, #24  imul_r_ea_d16   REG16EA r5, #21, #24
                                 mov             r4, r0, lsl #16                                  mov             r4, r0, lsl #16
Line 564  push_d8   CPUWORK #3 Line 567  push_d8   CPUWORK #3
                                 strh    r2, [r9, #CPU_SP]                                  strh    r2, [r9, #CPU_SP]
                                 add             r0, r2, r3                                  add             r0, r2, r3
                                 mov             lr, r11                                  mov             lr, r11
                                 b               i286_memorywrite_w                                  b               i286a_memorywrite_w
   
 imul_r_ea_d8    REG16EA r5, #21, #24  imul_r_ea_d8    REG16EA r5, #21, #24
                                 mov             r4, r0, lsl #16                                  mov             r4, r0, lsl #16
Line 596  insb   CPUWORK #5 Line 599  insb   CPUWORK #5
                                 subne   r2, r2, #1                                  subne   r2, r2, #1
                                 mov             lr, r11                                  mov             lr, r11
                                 strh    r2, [r9, #CPU_DI]                                  strh    r2, [r9, #CPU_DI]
                                 b               i286_memorywrite                                  b               i286a_memorywrite
   
 insw                    CPUWORK #5  insw                    CPUWORK #5
                                 ldrh    r0, [r9, #CPU_DX]                                  ldrh    r0, [r9, #CPU_DX]
Line 612  insw   CPUWORK #5 Line 615  insw   CPUWORK #5
                                 subne   r2, r2, #2                                  subne   r2, r2, #2
                                 mov             lr, r11                                  mov             lr, r11
                                 strh    r2, [r9, #CPU_DI]                                  strh    r2, [r9, #CPU_DI]
                                 b               i286_memorywrite_w                                  b               i286a_memorywrite_w
   
 outsb                   CPUWORK #3  outsb                   CPUWORK #3
                                 ldrh    r1, [r9, #CPU_SI]                                  ldrh    r1, [r9, #CPU_SI]
Line 622  outsb   CPUWORK #3 Line 625  outsb   CPUWORK #3
                                 addeq   r1, r1, #1                                  addeq   r1, r1, #1
                                 subne   r1, r1, #1                                  subne   r1, r1, #1
                                 strh    r1, [r9, #CPU_SI]                                  strh    r1, [r9, #CPU_SI]
                                 bl              i286_memoryread                                  bl              i286a_memoryread
                                 mov             r1, r0                                  mov             r1, r0
                                 ldr             r0, [r9, #CPU_DX]                                  ldr             r0, [r9, #CPU_DX]
                                 CPUSV                                  CPUSV
Line 638  outsw   CPUWORK #3 Line 641  outsw   CPUWORK #3
                                 addeq   r1, r1, #2                                  addeq   r1, r1, #2
                                 subne   r1, r1, #2                                  subne   r1, r1, #2
                                 strh    r1, [r9, #CPU_SI]                                  strh    r1, [r9, #CPU_SI]
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 mov             r1, r0                                  mov             r1, r0
                                 ldr             r0, [r9, #CPU_DX]                                  ldr             r0, [r9, #CPU_DX]
                                 CPUSV                                  CPUSV
Line 683  xchgear8_1  CPUWORK #5 Line 686  xchgear8_1  CPUWORK #5
                                 strb    r4, [r6, #CPU_REG]                                  strb    r4, [r6, #CPU_REG]
                                 mov             pc, r11                                  mov             pc, r11
 xchgear8_2              mov             r5, r0  xchgear8_2              mov             r5, r0
                                 bl              i286_memoryread                                  bl              i286a_memoryread
                                 ldrb    r1, [r6, #CPU_REG]                                  ldrb    r1, [r6, #CPU_REG]
                                 strb    r0, [r6, #CPU_REG]                                  strb    r0, [r6, #CPU_REG]
                                 mov             r0, r5                                  mov             r0, r5
                                 mov             lr, r11                                  mov             lr, r11
                                 b               i286_memorywrite                                  b               i286a_memorywrite
   
 xchg_ea_r16             EAREG16 r6  xchg_ea_r16             EAREG16 r6
                                 cmp             r0, #&c0                                  cmp             r0, #&c0
Line 712  xchgear16_1  CPUWORK #5 Line 715  xchgear16_1  CPUWORK #5
                                 strh    r4, [r6, #CPU_REG]                                  strh    r4, [r6, #CPU_REG]
                                 mov             pc, r11                                  mov             pc, r11
 xchgear16_2             mov             r5, r0  xchgear16_2             mov             r5, r0
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 ldrh    r1, [r6, #CPU_REG]                                  ldrh    r1, [r6, #CPU_REG]
                                 strh    r0, [r6, #CPU_REG]                                  strh    r0, [r6, #CPU_REG]
                                 mov             r0, r5                                  mov             r0, r5
                                 mov             lr, r11                                  mov             lr, r11
                                 b               i286_memorywrite_w                                  b               i286a_memorywrite_w
   
 mov_ea_r8               EAREG8  r6  mov_ea_r8               EAREG8  r6
                                 cmp             r0, #&c0                                  cmp             r0, #&c0
Line 731  movear8_1  CPUWORK #5 Line 734  movear8_1  CPUWORK #5
                                 bl              i286a_ea                                  bl              i286a_ea
                                 ldrb    r1, [r6, #CPU_REG]                                  ldrb    r1, [r6, #CPU_REG]
                                 mov             lr, r11                                  mov             lr, r11
                                 b               i286_memorywrite                                  b               i286a_memorywrite
   
 mov_ea_r16              EAREG16 r6  mov_ea_r16              EAREG16 r6
                                 cmp             r0, #&c0                                  cmp             r0, #&c0
Line 745  movear16_1  CPUWORK #5 Line 748  movear16_1  CPUWORK #5
                                 bl              i286a_ea                                  bl              i286a_ea
                                 ldrh    r1, [r6, #CPU_REG]                                  ldrh    r1, [r6, #CPU_REG]
                                 mov             lr, r11                                  mov             lr, r11
                                 b               i286_memorywrite_w                                  b               i286a_memorywrite_w
   
 mov_r8_ea               REG8EA  r5, #2, #5  mov_r8_ea               REG8EA  r5, #2, #5
                                 strb    r0, [r5, #CPU_REG]                                  strb    r0, [r5, #CPU_REG]
Line 769  measegm   CPUWORK #3 Line 772  measegm   CPUWORK #3
                                 bl              i286a_ea                                  bl              i286a_ea
                                 mov             r1, r5                                  mov             r1, r5
                                 mov             lr, r11                                  mov             lr, r11
                                 b               i286_memorywrite_w                                  b               i286a_memorywrite_w
   
 lea_r16_ea              CPUWORK #3  lea_r16_ea              CPUWORK #3
                                 GETPC8                                  GETPC8
Line 796  mov_seg_ea  GETPC8 Line 799  mov_seg_ea  GETPC8
                                 mov             pc, r6                                  mov             pc, r6
 msegeam                 CPUWORK #5  msegeam                 CPUWORK #5
                                 bl              i286a_ea                                  bl              i286a_ea
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 mov             pc, r6                                  mov             pc, r6
 msegea_tbl              dcd             msegea_es  msegea_tbl              dcd             msegea_es
                                 dcd             msegea_cs                                  dcd             msegea_cs
Line 828  pop_ea   POP  #5 Line 831  pop_ea   POP  #5
                                 bl              i286a_ea                                  bl              i286a_ea
                                 mov             r1, r5                                  mov             r1, r5
                                 mov             lr, r11                                  mov             lr, r11
                                 b               i286_memorywrite_w                                  b               i286a_memorywrite_w
 popreg                  R16SRC  r0, r1  popreg                  R16SRC  r0, r1
                                 strh    r4, [r1, #CPU_REG]                                  strh    r4, [r1, #CPU_REG]
                                 mov             pc, r11                                  mov             pc, r11
Line 882  call_far  CPUWORK #13 Line 885  call_far  CPUWORK #13
                                 mov             r4, r4 lsl #16                                  mov             r4, r4 lsl #16
                                 sub             r4, r4, #(2 << 16)                                  sub             r4, r4, #(2 << 16)
                                 add             r0, r5, r4 lsr #16                                  add             r0, r5, r4 lsr #16
                                 bl              i286_memorywrite_w                      ; cs                                  bl              i286a_memorywrite_w                     ; cs
                                 sub             r4, r4, #(2 << 16)                                  sub             r4, r4, #(2 << 16)
                                 add             r12, r8, #(4 << 16)                                  add             r12, r8, #(4 << 16)
                                 mov             r4, r4, lsr #16                                  mov             r4, r4, lsr #16
                                 mov             r1, r12 lsr #16                                  mov             r1, r12 lsr #16
                                 add             r0, r4, r5                                  add             r0, r4, r5
                                 bl              i286_memorywrite_w                      ; ip                                  bl              i286a_memorywrite_w                     ; ip
                                 ldr             r5, [r9, #CPU_CS_BASE]                                  ldr             r5, [r9, #CPU_CS_BASE]
                                 strh    r4, [r9, #CPU_SP]                                  strh    r4, [r9, #CPU_SP]
                                 add             r0, r5, r8 lsr #16                                  add             r0, r5, r8 lsr #16
                                 bl              i286_memoryread_w                       ; newip                                  bl              i286a_memoryread_w                      ; newip
                                 add             r8, r8, #(2 << 16)                                  add             r8, r8, #(2 << 16)
                                 mov             r4, r0 lsl #16                                  mov             r4, r0 lsl #16
                                 add             r0, r5, r8 lsr #16                                  add             r0, r5, r8 lsr #16
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 mov             r1, r0 lsl #4                                  mov             r1, r0 lsl #4
                                 strh    r0, [r9, #CPU_CS]                                  strh    r0, [r9, #CPU_CS]
                                 str             r1, [r9, #CPU_CS_BASE]                                  str             r1, [r9, #CPU_CS_BASE]
Line 916  pushf   CPUWORK #3 Line 919  pushf   CPUWORK #3
                                 strh    r3, [r9, #CPU_SP]                                  strh    r3, [r9, #CPU_SP]
                                 add             r0, r3, r2                                  add             r0, r3, r2
                                 mov             lr, r11                                  mov             lr, r11
                                 b               i286_memorywrite_w                                  b               i286a_memorywrite_w
   
 popf                    POP             #5  popf                    POP             #5
                                 mov             r2, #3                                  mov             r2, #3
Line 928  popf   POP  #5 Line 931  popf   POP  #5
                                 strb    r2, [r9, #CPU_TRAP]                                  strb    r2, [r9, #CPU_TRAP]
                                 bne             popf_withirq                                  bne             popf_withirq
                                 ldr             r0, popf_pic                                  ldr             r0, popf_pic
                                 tst             r8, #I_FLAG                                  NOINTREXIT
                                 moveq   pc, r11  
                                 PICEXISTINTR  
                                 moveq   pc, r11  
 popf_withirq    I286IRQCHECKTERM  popf_withirq    I286IRQCHECKTERM
 popf_pic                dcd             pic  popf_pic                dcd             pic
   
Line 950  mov_al_m8  CPUWORK #5 Line 950  mov_al_m8  CPUWORK #5
                                 ldr             r5, [r9, #CPU_DS_FIX]                                  ldr             r5, [r9, #CPU_DS_FIX]
                                 GETPC16                                  GETPC16
                                 add             r0, r5, r0                                  add             r0, r5, r0
                                 bl              i286_memoryread                                  bl              i286a_memoryread
                                 strb    r0, [r9, #CPU_AL]                                  strb    r0, [r9, #CPU_AL]
                                 mov             pc, r11                                  mov             pc, r11
   
Line 958  mov_ax_m16  CPUWORK #5 Line 958  mov_ax_m16  CPUWORK #5
                                 ldr             r5, [r9, #CPU_DS_FIX]                                  ldr             r5, [r9, #CPU_DS_FIX]
                                 GETPC16                                  GETPC16
                                 add             r0, r5, r0                                  add             r0, r5, r0
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 strh    r0, [r9, #CPU_AX]                                  strh    r0, [r9, #CPU_AX]
                                 mov             pc, r11                                  mov             pc, r11
   
Line 968  mov_m8_al  CPUWORK #5 Line 968  mov_m8_al  CPUWORK #5
                                 ldrb    r1, [r9, #CPU_AL]                                  ldrb    r1, [r9, #CPU_AL]
                                 add             r0, r5, r0                                  add             r0, r5, r0
                                 mov             lr, r11                                  mov             lr, r11
                                 b               i286_memorywrite                                  b               i286a_memorywrite
   
 mov_m16_ax              CPUWORK #5  mov_m16_ax              CPUWORK #5
                                 ldr             r5, [r9, #CPU_DS_FIX]                                  ldr             r5, [r9, #CPU_DS_FIX]
Line 976  mov_m16_ax  CPUWORK #5 Line 976  mov_m16_ax  CPUWORK #5
                                 ldrh    r1, [r9, #CPU_AX]                                  ldrh    r1, [r9, #CPU_AX]
                                 add             r0, r5, r0                                  add             r0, r5, r0
                                 mov             lr, r11                                  mov             lr, r11
                                 b               i286_memorywrite_w                                  b               i286a_memorywrite_w
   
 movsb                   CPUWORK #5  movsb                   CPUWORK #5
                                 ldrh    r5, [r9, #CPU_SI]                                  ldrh    r5, [r9, #CPU_SI]
Line 985  movsb   CPUWORK #5 Line 985  movsb   CPUWORK #5
                                 moveq   r4, #1                                  moveq   r4, #1
                                 movne   r4, #-1                                  movne   r4, #-1
                                 add             r0, r5, r0                                  add             r0, r5, r0
                                 bl              i286_memoryread                                  bl              i286a_memoryread
                                 ldrh    r3, [r9, #CPU_DI]                                  ldrh    r3, [r9, #CPU_DI]
                                 ldr             r2, [r9, #CPU_ES_BASE]                                  ldr             r2, [r9, #CPU_ES_BASE]
                                 add             r5, r5, r4                                  add             r5, r5, r4
Line 995  movsb   CPUWORK #5 Line 995  movsb   CPUWORK #5
                                 strh    r5, [r9, #CPU_SI]                                  strh    r5, [r9, #CPU_SI]
                                 strh    r3, [r9, #CPU_DI]                                  strh    r3, [r9, #CPU_DI]
                                 mov             lr, r11                                  mov             lr, r11
                                 b               i286_memorywrite                                  b               i286a_memorywrite
   
 movsw                   CPUWORK #5  movsw                   CPUWORK #5
                                 ldrh    r5, [r9, #CPU_SI]                                  ldrh    r5, [r9, #CPU_SI]
Line 1004  movsw   CPUWORK #5 Line 1004  movsw   CPUWORK #5
                                 moveq   r4, #2                                  moveq   r4, #2
                                 movne   r4, #-2                                  movne   r4, #-2
                                 add             r0, r5, r0                                  add             r0, r5, r0
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 ldrh    r3, [r9, #CPU_DI]                                  ldrh    r3, [r9, #CPU_DI]
                                 ldr             r2, [r9, #CPU_ES_BASE]                                  ldr             r2, [r9, #CPU_ES_BASE]
                                 add             r5, r5, r4                                  add             r5, r5, r4
Line 1014  movsw   CPUWORK #5 Line 1014  movsw   CPUWORK #5
                                 strh    r5, [r9, #CPU_SI]                                  strh    r5, [r9, #CPU_SI]
                                 strh    r3, [r9, #CPU_DI]                                  strh    r3, [r9, #CPU_DI]
                                 mov             lr, r11                                  mov             lr, r11
                                 b               i286_memorywrite_w                                  b               i286a_memorywrite_w
   
 cmpsb                   CPUWORK #8  cmpsb                   CPUWORK #8
                                 ldrh    r5, [r9, #CPU_SI]                                  ldrh    r5, [r9, #CPU_SI]
Line 1022  cmpsb   CPUWORK #8 Line 1022  cmpsb   CPUWORK #8
                                 ;                                  ;
                                 ;                                  ;
                                 add             r0, r5, r0                                  add             r0, r5, r0
                                 bl              i286_memoryread                                  bl              i286a_memoryread
                                 ldr             r2, [r9, #CPU_ES_BASE]                                  ldr             r2, [r9, #CPU_ES_BASE]
                                 ldrh    r3, [r9, #CPU_DI]                                  ldrh    r3, [r9, #CPU_DI]
                                 mov             r6, r0                                  mov             r6, r0
Line 1034  cmpsb   CPUWORK #8 Line 1034  cmpsb   CPUWORK #8
                                 add             r3, r2, r3                                  add             r3, r2, r3
                                 strh    r5, [r9, #CPU_SI]                                  strh    r5, [r9, #CPU_SI]
                                 strh    r3, [r9, #CPU_DI]                                  strh    r3, [r9, #CPU_DI]
                                 bl              i286_memoryread                                  bl              i286a_memoryread
                                 SUB8    r6, r0                                  SUB8    r6, r0
                                 mov             pc, r11                                  mov             pc, r11
   
Line 1044  cmpsw   CPUWORK #8 Line 1044  cmpsw   CPUWORK #8
                                 ;                                  ;
                                 ;                                  ;
                                 add             r0, r5, r0                                  add             r0, r5, r0
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 ldr             r2, [r9, #CPU_ES_BASE]                                  ldr             r2, [r9, #CPU_ES_BASE]
                                 ldrh    r3, [r9, #CPU_DI]                                  ldrh    r3, [r9, #CPU_DI]
                                 mov             r6, r0                                  mov             r6, r0
Line 1056  cmpsw   CPUWORK #8 Line 1056  cmpsw   CPUWORK #8
                                 add             r3, r2, r3                                  add             r3, r2, r3
                                 strh    r5, [r9, #CPU_SI]                                  strh    r5, [r9, #CPU_SI]
                                 strh    r3, [r9, #CPU_DI]                                  strh    r3, [r9, #CPU_DI]
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 SUB16   r6, r0                                  SUB16   r6, r0
                                 mov             pc, r11                                  mov             pc, r11
   
Line 1070  stosb   CPUWORK #3 Line 1070  stosb   CPUWORK #3
                                 add             r0, r2, r0                                  add             r0, r2, r0
                                 strh    r3, [r9, #CPU_DI]                                  strh    r3, [r9, #CPU_DI]
                                 mov             lr, r11                                  mov             lr, r11
                                 b               i286_memorywrite                                  b               i286a_memorywrite
   
 stosw                   CPUWORK #3  stosw                   CPUWORK #3
                                 ldrh    r1, [r9, #CPU_AX]                                  ldrh    r1, [r9, #CPU_AX]
Line 1082  stosw   CPUWORK #3 Line 1082  stosw   CPUWORK #3
                                 add             r0, r2, r0                                  add             r0, r2, r0
                                 strh    r3, [r9, #CPU_DI]                                  strh    r3, [r9, #CPU_DI]
                                 mov             lr, r11                                  mov             lr, r11
                                 b               i286_memorywrite_w                                  b               i286a_memorywrite_w
   
 lodsb                   CPUWORK #5  lodsb                   CPUWORK #5
                                 ldrh    r5, [r9, #CPU_SI]                                  ldrh    r5, [r9, #CPU_SI]
Line 1091  lodsb   CPUWORK #5 Line 1091  lodsb   CPUWORK #5
                                 addeq   r6, r5, #1                                  addeq   r6, r5, #1
                                 subne   r6, r5, #1                                  subne   r6, r5, #1
                                 add             r0, r5, r0                                  add             r0, r5, r0
                                 bl              i286_memoryread                                  bl              i286a_memoryread
                                 strb    r0, [r9, #CPU_AL]                                  strb    r0, [r9, #CPU_AL]
                                 strh    r6, [r9, #CPU_SI]                                  strh    r6, [r9, #CPU_SI]
                                 mov             pc, r11                                  mov             pc, r11
Line 1103  lodsw   CPUWORK #5 Line 1103  lodsw   CPUWORK #5
                                 addeq   r6, r5, #2                                  addeq   r6, r5, #2
                                 subne   r6, r5, #2                                  subne   r6, r5, #2
                                 add             r0, r5, r0                                  add             r0, r5, r0
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 strh    r0, [r9, #CPU_AX]                                  strh    r0, [r9, #CPU_AX]
                                 strh    r6, [r9, #CPU_SI]                                  strh    r6, [r9, #CPU_SI]
                                 mov             pc, r11                                  mov             pc, r11
Line 1115  scasb   CPUWORK #7 Line 1115  scasb   CPUWORK #7
                                 addeq   r6, r5, #1                                  addeq   r6, r5, #1
                                 subne   r6, r5, #1                                  subne   r6, r5, #1
                                 add             r0, r5, r0                                  add             r0, r5, r0
                                 bl              i286_memoryread                                  bl              i286a_memoryread
                                 ldrb    r5, [r9, #CPU_AL]                                  ldrb    r5, [r9, #CPU_AL]
                                 strh    r6, [r9, #CPU_DI]                                  strh    r6, [r9, #CPU_DI]
                                 SUB8    r5, r0                                  SUB8    r5, r0
Line 1128  scasw   CPUWORK #7 Line 1128  scasw   CPUWORK #7
                                 addeq   r6, r5, #2                                  addeq   r6, r5, #2
                                 subne   r6, r5, #2                                  subne   r6, r5, #2
                                 add             r0, r5, r0                                  add             r0, r5, r0
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 ldrh    r5, [r9, #CPU_AX]                                  ldrh    r5, [r9, #CPU_AX]
                                 strh    r6, [r9, #CPU_DI]                                  strh    r6, [r9, #CPU_DI]
                                 SUB16   r5, r0                                  SUB16   r5, r0
Line 1143  ret_near_d16 GETPC16 Line 1143  ret_near_d16 GETPC16
                                 add             r0, r1, r2                                  add             r0, r1, r2
                                 add             r3, r3, #2                                  add             r3, r3, #2
                                 strh    r3, [r9, #CPU_SP]                                  strh    r3, [r9, #CPU_SP]
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 mov             r8, r8 lsl #16                                  mov             r8, r8 lsl #16
                                 mov             r8, r8 lsr #16                                  mov             r8, r8 lsr #16
                                 orr             r8, r8, r0 lsl #16                                  orr             r8, r8, r0 lsl #16
Line 1157  ret_near  CPUWORK #11 Line 1157  ret_near  CPUWORK #11
                                 add             r0, r1, r0                                  add             r0, r1, r0
                                 strh    r2, [r9, #CPU_SP]                                  strh    r2, [r9, #CPU_SP]
                                 mov             r8, r8 lsr #16                                  mov             r8, r8 lsr #16
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 orr             r8, r8, r0 lsl #16                                  orr             r8, r8, r0 lsl #16
                                 mov             pc, r11                                  mov             pc, r11
   
Line 1170  les_r16_ea  GETPC8 Line 1170  les_r16_ea  GETPC8
                                 add             r4, r0, #2                                  add             r4, r0, #2
                                 add             r0, r0, r6                                  add             r0, r0, r6
                                 bic             r4, r4, #(1 << 16)                                  bic             r4, r4, #(1 << 16)
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 strh    r0, [r5, #CPU_REG]                                  strh    r0, [r5, #CPU_REG]
                                 add             r0, r4, r6                                  add             r0, r4, r6
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 mov             r1, r0 lsl #4                                  mov             r1, r0 lsl #4
                                 strh    r0, [r9, #CPU_ES]                                  strh    r0, [r9, #CPU_ES]
                                 str             r1, [r9, #CPU_ES_BASE]                                  str             r1, [r9, #CPU_ES_BASE]
Line 1191  lds_r16_ea  GETPC8 Line 1191  lds_r16_ea  GETPC8
                                 add             r4, r0, #2                                  add             r4, r0, #2
                                 add             r0, r0, r6                                  add             r0, r0, r6
                                 bic             r4, r4, #(1 << 16)                                  bic             r4, r4, #(1 << 16)
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 strh    r0, [r5, #CPU_REG]                                  strh    r0, [r5, #CPU_REG]
                                 add             r0, r4, r6                                  add             r0, r4, r6
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 mov             r1, r0 lsl #4                                  mov             r1, r0 lsl #4
                                 strh    r0, [r9, #CPU_DS]                                  strh    r0, [r9, #CPU_DS]
                                 str             r1, [r9, #CPU_DS_BASE]                                  str             r1, [r9, #CPU_DS_BASE]
Line 1211  mov_ea8_d8  GETPC8 Line 1211  mov_ea8_d8  GETPC8
                                 mov             r1, r0                                  mov             r1, r0
                                 mov             r0, r4                                  mov             r0, r4
                                 mov             lr, r11                                  mov             lr, r11
                                 b               i286_memorywrite                                  b               i286a_memorywrite
 med8_r                  CPUWORK #2  med8_r                  CPUWORK #2
                                 R8DST   r0, r4                                  R8DST   r0, r4
                                 GETPC8                                  GETPC8
Line 1228  mov_ea16_d16 GETPC8 Line 1228  mov_ea16_d16 GETPC8
                                 mov             r1, r0                                  mov             r1, r0
                                 mov             r0, r4                                  mov             r0, r4
                                 mov             lr, r11                                  mov             lr, r11
                                 b               i286_memorywrite_w                                  b               i286a_memorywrite_w
 med16_r                 CPUWORK #2  med16_r                 CPUWORK #2
                                 R16DST  r0, r4                                  R16DST  r0, r4
                                 GETPC16                                  GETPC16
Line 1242  enter   ldrh r4, [r9, #CPU_SP] Line 1242  enter   ldrh r4, [r9, #CPU_SP]
                                 addcc   r4, r4, #&10000                                  addcc   r4, r4, #&10000
                                 mov             r1, r5                                  mov             r1, r5
                                 add             r0, r4, r0                                  add             r0, r4, r0
                                 bl              i286_memorywrite_w                                  bl              i286a_memorywrite_w
                                 GETPC16                                  GETPC16
                                 mov             r6, r0                                  mov             r6, r0
                                 GETPC8                                  GETPC8
Line 1265  enterlv1  cmp  r0, #1 Line 1265  enterlv1  cmp  r0, #1
                                 sub             r2, r4, r6                                  sub             r2, r4, r6
                                 mov             lr, r11                                  mov             lr, r11
                                 strh    r2, [r9, #CPU_SP]                                  strh    r2, [r9, #CPU_SP]
                                 bl              i286_memorywrite_w                                  bl              i286a_memorywrite_w
 enterlv2                mov             r1, r0, lsl #2  enterlv2                mov             r1, r0, lsl #2
                                 add             r1, r1, #12                                  add             r1, r1, #12
                                 CPUWORK r1                                  CPUWORK r1
Line 1282  enterlv2  mov  r1, r0, lsl #2 Line 1282  enterlv2  mov  r1, r0, lsl #2
                                 mov             r1, r5                                  mov             r1, r5
                                 mov             r5, r5 lsl #16                                  mov             r5, r5 lsl #16
                                 add             r0, r11, r2                                  add             r0, r11, r2
                                 bl              i286_memorywrite_w                                  bl              i286a_memorywrite_w
 entlv2lp                sub             r5, r5, #(2 << 16)  entlv2lp                sub             r5, r5, #(2 << 16)
                                 sub             r4, r4, #(2 << 16)                                  sub             r4, r4, #(2 << 16)
                                 add             r0, r11, r5 lsr #16                                  add             r0, r11, r5 lsr #16
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 mov             r1, r0                                  mov             r1, r0
                                 add             r0, r11, r4                                  add             r0, r11, r4
                                 bl              i286_memorywrite_w                                  bl              i286a_memorywrite_w
                                 subs    r6, r6, #1                                  subs    r6, r6, #1
                                 bne             entlv2lp                                  bne             entlv2lp
                                 ldr             pc, [sp], #4                                  ldr             pc, [sp], #4
Line 1299  leave   ldrh r1, [r9, #CPU_BP] Line 1299  leave   ldrh r1, [r9, #CPU_BP]
                                 CPUWORK #5                                  CPUWORK #5
                                 add             r4, r1, #2                                  add             r4, r1, #2
                                 add             r0, r1, r0                                  add             r0, r1, r0
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 strh    r4, [r9, #CPU_SP]                                  strh    r4, [r9, #CPU_SP]
                                 strh    r0, [r9, #CPU_BP]                                  strh    r0, [r9, #CPU_BP]
                                 mov             pc, r11                                  mov             pc, r11
Line 1313  ret_far_d16  CPUWORK #15 Line 1313  ret_far_d16  CPUWORK #15
                                 ;                                  ;
                                 add             r0, r4, r5                                  add             r0, r4, r5
                                 add             r4, r4, #2                                  add             r4, r4, #2
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 mov             r8, r8 lsl #16                                  mov             r8, r8 lsl #16
                                 mov             r8, r8 lsr #16                                  mov             r8, r8 lsr #16
                                 orr             r8, r8, r0 lsl #16                                  orr             r8, r8, r0 lsl #16
                                 bic             r4, r4, #(1 << 16)                                  bic             r4, r4, #(1 << 16)
                                 add             r0, r4, r5                                  add             r0, r4, r5
                                 add             r4, r4, #2                                  add             r4, r4, #2
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 add             r4, r6, r4                                  add             r4, r6, r4
                                 mov             r1, r0 lsl #4                                  mov             r1, r0 lsl #4
                                 strh    r4, [r9, #CPU_SP]                                  strh    r4, [r9, #CPU_SP]
Line 1334  ret_far   CPUWORK #15 Line 1334  ret_far   CPUWORK #15
                                 ;                                  ;
                                 add             r0, r4, r5                                  add             r0, r4, r5
                                 add             r4, r4, #2                                  add             r4, r4, #2
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 mov             r8, r8 lsl #16                                  mov             r8, r8 lsl #16
                                 mov             r8, r8 lsr #16                                  mov             r8, r8 lsr #16
                                 orr             r8, r8, r0 lsl #16                                  orr             r8, r8, r0 lsl #16
                                 bic             r4, r4, #(1 << 16)                                  bic             r4, r4, #(1 << 16)
                                 add             r0, r4, r5                                  add             r0, r4, r5
                                 add             r4, r4, #2                                  add             r4, r4, #2
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 mov             r1, r0 lsl #4                                  mov             r1, r0 lsl #4
                                 strh    r4, [r9, #CPU_SP]                                  strh    r4, [r9, #CPU_SP]
                                 strh    r0, [r9, #CPU_CS]                                  strh    r0, [r9, #CPU_CS]
Line 1370  iret   bl  extirq_pop Line 1370  iret   bl  extirq_pop
                                 ;                                  ;
                                 add             r4, r1, #2                                  add             r4, r1, #2
                                 add             r0, r1, r5                                  add             r0, r1, r5
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 bic             r4, r4, #(1 << 16)                                  bic             r4, r4, #(1 << 16)
                                 mov             r8, r0 lsl #16                                  mov             r8, r0 lsl #16
                                 add             r0, r4, r5                                  add             r0, r4, r5
                                 add             r4, r4, #2                                  add             r4, r4, #2
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 mov             r1, r0 lsl #4                                  mov             r1, r0 lsl #4
                                 strh    r0, [r9, #CPU_CS]                                  strh    r0, [r9, #CPU_CS]
                                 str             r1, [r9, #CPU_CS_BASE]                                  str             r1, [r9, #CPU_CS_BASE]
                                 bic             r4, r4, #(1 << 16)                                  bic             r4, r4, #(1 << 16)
                                 add             r0, r4, r5                                  add             r0, r4, r5
                                 add             r4, r4, #2                                  add             r4, r4, #2
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 strh    r4, [r9, #CPU_SP]                                  strh    r4, [r9, #CPU_SP]
                                 mov             r2, #3                                  mov             r2, #3
                                 bic             r1, r0, #&f000                                  ; i286                                  bic             r1, r0, #&f000                                  ; i286
Line 1392  iret   bl  extirq_pop Line 1392  iret   bl  extirq_pop
                                 strb    r2, [r9, #CPU_TRAP]                                  strb    r2, [r9, #CPU_TRAP]
                                 bne             iret_withirq                                  bne             iret_withirq
                                 ldr             r0, iret_pic                                  ldr             r0, iret_pic
                                 tst             r8, #I_FLAG                                  NOINTREXIT
                                 moveq   pc, r11  
                                 PICEXISTINTR  
                                 moveq   pc, r11  
 iret_withirq    I286IRQCHECKTERM  iret_withirq    I286IRQCHECKTERM
 iret_pic                dcd             pic  iret_pic                dcd             pic
   
   
 aam                             CPUWORK #16  aam                             CPUWORK #16
                                 GETPC8                                  GETPC8
                                 movs    r0, r0, lsl #7                                  movs    r0, r0 lsl #7
                                 beq             aamzero                                  beq             aamzero
                                 ldrb    r1, [r9, #CPU_AL]                                  ldrb    r1, [r9, #CPU_AL]
                                 mov             r2, #&80                                  mov             r2, #&80
Line 1410  aam    CPUWORK #16 Line 1407  aam    CPUWORK #16
 aamlp                   cmp             r1, r0  aamlp                   cmp             r1, r0
                                 subcs   r1, r1, r0                                  subcs   r1, r1, r0
                                 orrcs   r3, r2, r3                                  orrcs   r3, r2, r3
                                   mov             r0, r0 lsr #1
                                 movs    r2, r2 lsr #1                                  movs    r2, r2 lsr #1
                                 bne             aamlp                                  bne             aamlp
                                 ldrb    r2, [r10, r1]                                  ldrb    r2, [r10, r1]
Line 1455  xlat   ldrb r0, [r9, #CPU_AL] Line 1453  xlat   ldrb r0, [r9, #CPU_AL]
                                 add             r0, r1, r0                                  add             r0, r1, r0
                                 bic             r0, r0, #(1 << 16)                                  bic             r0, r0, #(1 << 16)
                                 add             r0, r2, r0                                  add             r0, r2, r0
                                 bl              i286_memoryread                                  bl              i286a_memoryread
                                 strb    r0, [r9, #CPU_AL]                                  strb    r0, [r9, #CPU_AL]
                                 mov             pc, r11                                  mov             pc, r11
   
Line 1562  call_near  CPUWORK #7 Line 1560  call_near  CPUWORK #7
                                 add             r8, r8, r0 lsl #16                                  add             r8, r8, r0 lsl #16
                                 add             r0, r3, r2 lsr #16                                  add             r0, r3, r2 lsr #16
                                 mov             lr, r11                                  mov             lr, r11
                                 b               i286_memorywrite_w                                  b               i286a_memorywrite_w
   
 jmp_near                ldr             r4, [r9, #CPU_CS_BASE]  jmp_near                ldr             r4, [r9, #CPU_CS_BASE]
                                 add             r5, r8, #(2 << 16)                                  add             r5, r8, #(2 << 16)
                                 CPUWORK #7                                  CPUWORK #7
                                 add             r0, r4, r8 lsr #16                                  add             r0, r4, r8 lsr #16
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 add             r8, r5, r0 lsl #16                                  add             r8, r5, r0 lsl #16
                                 mov             pc, r11                                  mov             pc, r11
   
Line 1577  jmp_far   CPUWORK #11 Line 1575  jmp_far   CPUWORK #11
                                 add             r5, r8, #(2 << 16)                                  add             r5, r8, #(2 << 16)
                                 mov             r6, r8 lsl #16                                  mov             r6, r8 lsl #16
                                 add             r0, r4, r8 lsr #16                                  add             r0, r4, r8 lsr #16
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 mov             r8, r0 lsl #16                                  mov             r8, r0 lsl #16
                                 add             r0, r4, r5 lsr #16                                  add             r0, r4, r5 lsr #16
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 add             r8, r8, r6 lsr #16                                  add             r8, r8, r6 lsr #16
                                 mov             r1, r0 lsl #4                                  mov             r1, r0 lsl #4
                                 strh    r0, [r9, #CPU_CS]                                  strh    r0, [r9, #CPU_CS]
Line 1654  sti_set   orr  r8, r8, #I_FLAG Line 1652  sti_set   orr  r8, r8, #I_FLAG
                                 ldr             r0, sti_pic                                  ldr             r0, sti_pic
                                 strneb  r1, [r9, #CPU_TRAP]                                  strneb  r1, [r9, #CPU_TRAP]
                                 bne             sti_withirq                                  bne             sti_withirq
                                 PICEXISTINTR                                  PICEXISTINTR    sti_noirq
                                 bne             sti_withirq                                  bne             sti_withirq
 sti_noirq               NEXT_OPCODE  sti_noirq               NEXT_OPCODE
 sti_pic                 dcd             pic  sti_pic                 dcd             pic
Line 1681  i286a_step  stmdb sp!, {r4 - r11, lr} Line 1679  i286a_step  stmdb sp!, {r4 - r11, lr}
   
                                 adr             r4, optbl1                                  adr             r4, optbl1
                                 add             r0, r5, r8 lsr #16                                  add             r0, r5, r8 lsr #16
                                 bl              i286_memoryread                                  bl              i286a_memoryread
                                 ldr             r1, [r4, r0 lsl #2]                                  ldr             r1, [r4, r0 lsl #2]
                                 add             r8, r8, #(1 << 16)                                  add             r8, r8, #(1 << 16)
                                 mov             r11, pc                                  mov             r11, pc
                                 mov             pc, r1                                  mov             pc, r1
   
                                   bl              dmap_i286
                                 str             r8, [r9, #CPU_FLAG]                                  str             r8, [r9, #CPU_FLAG]
                                 ldmia   sp!, {r4 - r11, pc}                                  ldmia   sp!, {r4 - r11, pc}
   
   
 i286a                   stmdb   sp!, {r4 - r11, lr}  i286a                   stmdb   sp!, {r4 - r11, lr}
                                 ldr             r9, ias_r9                                  ldr             r9, ias_r9
                                 ldr             r1, ias_r1                                  ldr             r2, ias_r1
                                 ldr             r10, ias_r10                                  ldr             r10, ias_r10
                                 ldr             r5, [r9, #CPU_CS_BASE]  
                                 ldr             r8, [r9, #CPU_FLAG]                                  ldr             r8, [r9, #CPU_FLAG]
                                   ldr             r5, [r9, #CPU_CS_BASE]
                                   ldr             r1, [r2, #DMAC_WORKING]
                                   and             r0, r8, #(I_FLAG + T_FLAG)
                                   cmp             r0, #(I_FLAG + T_FLAG)
                                   beq             i286awithtrap
                                   cmp             r1, #0
                                   bne             i286awithdma
                                 adr             r4, optbl1                                  adr             r4, optbl1
 i286a_lp                add             r0, r5, r8 lsr #16  i286a_lp                add             r0, r5, r8 lsr #16
                                 bl              i286_memoryread                                  bl              i286a_memoryread
                                 ldr             r1, [r4, r0 lsl #2]                                  ldr             r1, [r4, r0 lsl #2]
                                 add             r8, r8, #(1 << 16)                                  add             r8, r8, #(1 << 16)
                                 mov             r11, pc                                  mov             r11, pc
Line 1712  i286a_lp  add  r0, r5, r8 lsr #16 Line 1717  i286a_lp  add  r0, r5, r8 lsr #16
                                 str             r8, [r9, #CPU_FLAG]                                  str             r8, [r9, #CPU_FLAG]
                                 ldmia   sp!, {r4 - r11, pc}                                  ldmia   sp!, {r4 - r11, pc}
   
 ias_r9                  dcd             i286core - CPU_REG  ias_r9                  dcd             i286core + CPU_SIZE
 ias_r1                  dcd             dmac  ias_r1                  dcd             dmac
 ias_r10                 dcd             _szpcflag8  ias_r10                 dcd             iflags
   
   i286awithdma    adr             r4, optbl1
   i286awdma_lp    add             r0, r5, r8 lsr #16
                                   bl              i286a_memoryread
                                   ldr             r1, [r4, r0 lsl #2]
                                   add             r8, r8, #(1 << 16)
                                   mov             r11, pc
                                   mov             pc, r1
                                   bl              dmap_i286
                                   ldr             r7, [r9, #CPU_REMAINCLOCK]
                                   ldr             r5, [r9, #CPU_CS_BASE]
                                   adr             r4, optbl1
                                   cmp             r7, #0
                                   bgt             i286awdma_lp
                                   str             r8, [r9, #CPU_FLAG]
                                   ldmia   sp!, {r4 - r11, pc}
   
   i286awithtrap   adr             r4, optbl1
   i286awtrp_lp    add             r0, r5, r8 lsr #16
                                   bl              i286a_memoryread
                                   ldr             r1, [r4, r0 lsl #2]
                                   add             r8, r8, #(1 << 16)
                                   mov             r11, pc
                                   mov             pc, r1
                                   bl              dmap_i286
                                   and             r0, r8, #(I_FLAG + T_FLAG)
                                   cmp             r0, #(I_FLAG + T_FLAG)
                                   beq             i286a_trapint
   i286a_trapintr  str             r8, [r9, #CPU_FLAG]
                                   ldmia   sp!, {r4 - r11, pc}
   
 optbl1                  dcd             add_ea_r8                       ; 00  optbl1                  dcd             add_ea_r8                       ; 00
                                 dcd             add_ea_r16                                  dcd             add_ea_r16
Line 2004  $label  ldr  r1, [r9, $b] Line 2038  $label  ldr  r1, [r9, $b]
                         add             r6, r6, #1                          add             r6, r6, #1
                         cmp             r6, #MAX_PREFIX                          cmp             r6, #MAX_PREFIX
                         bcs             prefix_fault                          bcs             prefix_fault
                         bl              i286_memoryread                          bl              i286a_memoryread
                         ldr             r1, [r4, r0 lsl #2]                          ldr             r1, [r4, r0 lsl #2]
                         add             r8, r8, #(1 << 16)                          add             r8, r8, #(1 << 16)
                         strb    r6, [r9, #CPU_PREFIX]                          strb    r6, [r9, #CPU_PREFIX]
Line 2041  repne   ldrb r6, [r9, #CPU_PREFIX] Line 2075  repne   ldrb r6, [r9, #CPU_PREFIX]
                                 add             r6, r6, #1                                  add             r6, r6, #1
                                 cmp             r6, #MAX_PREFIX                                  cmp             r6, #MAX_PREFIX
                                 bcs             prefix_fault                                  bcs             prefix_fault
                                 bl              i286_memoryread                                  bl              i286a_memoryread
                                 ldr             r1, [r4, r0 lsl #2]                                  ldr             r1, [r4, r0 lsl #2]
                                 add             r8, r8, #(1 << 16)                                  add             r8, r8, #(1 << 16)
                                 strb    r6, [r9, #CPU_PREFIX]                                  strb    r6, [r9, #CPU_PREFIX]
Line 2331  repe   ldrb r6, [r9, #CPU_PREFIX] Line 2365  repe   ldrb r6, [r9, #CPU_PREFIX]
                                 add             r6, r6, #1                                  add             r6, r6, #1
                                 cmp             r6, #MAX_PREFIX                                  cmp             r6, #MAX_PREFIX
                                 bcs             prefix_fault                                  bcs             prefix_fault
                                 bl              i286_memoryread                                  bl              i286a_memoryread
                                 ldr             r1, [r4, r0 lsl #2]                                  ldr             r1, [r4, r0 lsl #2]
                                 add             r8, r8, #(1 << 16)                                  add             r8, r8, #(1 << 16)
                                 strb    r6, [r9, #CPU_PREFIX]                                  strb    r6, [r9, #CPU_PREFIX]

Removed from v.1.9  
changed lines
  Added in v.1.12


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