Diff for /np2/i286a/i286a_fe.s between versions 1.2 and 1.6

version 1.2, 2003/12/17 10:41:06 version 1.6, 2003/12/19 00:25:49
Line 1 Line 1
   
         INCLUDE         i286a.inc          INCLUDE         i286a.inc
           INCLUDE         i286aea.inc
         INCLUDE         i286aalu.inc          INCLUDE         i286aalu.inc
           INCLUDE         i286aop.inc
   
         IMPORT          _szpcflag8  
         IMPORT          i286a_ea          IMPORT          i286a_ea
         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          i286a_localint          IMPORT          i286a_localint
   
         EXPORT          i286aopfe          EXPORT          i286aopfe
Line 19 Line 20
 i286aopfe               GETPC8  i286aopfe               GETPC8
                                 tst             r0, #(1 << 3)                                  tst             r0, #(1 << 3)
                                 bne             decea8                                  bne             decea8
   incea8                  OP_EA8  INC8, #2, #7
                                 cmp             r0, #&c0  decea8                  OP_EA8  DEC8, #2, #7
                                 bcc             inc8m  
                                 CPUWORK #2  
                                 R8SRC   r0, r5  
                                 ldrb    r4, [r5, #CPU_REG]  
                                 INC8    r4  
                                 strb    r1, [r5, #CPU_REG]  
                                 mov             pc, r11  
 inc8m                   CPUWORK #7  
                                 bl              i286a_ea  
                                 cmp             r0, #I286_MEMWRITEMAX  
                                 bcs             inc8e  
                                 ldrb    r4, [r9, r0]  
                                 INC8    r4  
                                 strb    r1, [r9, r0]  
                                 mov             pc, r11  
 inc8e                   mov             r5, r0  
                                 bl              i286_memoryread  
                                 INC8    r0  
                                 mov             r0, r5  
                                 mov             lr, r11  
                                 b               i286_memorywrite  
   
 decea8                  cmp             r0, #&c0  
                                 bcc             dec8m  
                                 CPUWORK #2  
                                 R8SRC   r0, r5  
                                 ldrb    r4, [r5, #CPU_REG]  
                                 DEC8    r4  
                                 strb    r1, [r5, #CPU_REG]  
                                 mov             pc, r11  
 dec8m                   CPUWORK #7  
                                 bl              i286a_ea  
                                 cmp             r0, #I286_MEMWRITEMAX  
                                 bcs             dec8e  
                                 ldrb    r4, [r9, r0]  
                                 DEC8    r4  
                                 strb    r1, [r9, r0]  
                                 mov             pc, r11  
 dec8e                   mov             r5, r0  
                                 bl              i286_memoryread  
                                 DEC8    r0  
                                 mov             r0, r5  
                                 mov             lr, r11  
                                 b               i286_memorywrite  
   
   
 ; ----  ; ----
Line 73  i286aopff  GETPC8 Line 30  i286aopff  GETPC8
                                 and             r12, r0, #(7 << 3)                                  and             r12, r0, #(7 << 3)
                                 adr             r1, opefftbl                                  adr             r1, opefftbl
                                 ldr             pc, [r1, r12 lsr #1]                                  ldr             pc, [r1, r12 lsr #1]
   
 opefftbl                dcd             incea16  opefftbl                dcd             incea16
                                 dcd             decea16                                  dcd             decea16
                                 dcd             callea16                                  dcd             callea16
Line 83  opefftbl  dcd  incea16 Line 39  opefftbl  dcd  incea16
                                 dcd             pushea16                                  dcd             pushea16
                                 dcd             popea16                                  dcd             popea16
   
 incea16                 cmp             r0, #&c0  incea16                 OP_EA16 INC16, #2, #7
                                 bcc             inc16m  decea16                 OP_EA16 DEC16, #2, #7
                                 CPUWORK #2  
                                 R16SRC  r0, r5  
                                 ldrh    r4, [r5, #CPU_REG]  
                                 INC16   r4  
                                 strh    r1, [r5, #CPU_REG]  
                                 mov             pc, r11  
 inc16m                  CPUWORK #7  
                                 bl              i286a_ea  
                                 tst             r0, #1  
                                 bne             inc16e  
                                 cmp             r0, #I286_MEMWRITEMAX  
                                 bcs             inc16e  
                                 ldrh    r4, [r9, r0]  
                                 INC16   r4  
                                 strh    r1, [r9, r0]  
                                 mov             pc, r11  
 inc16e                  mov             r5, r0  
                                 bl              i286_memoryread_w  
                                 INC16   r0  
                                 mov             r0, r5  
                                 mov             lr, r11  
                                 b               i286_memorywrite_w  
   
 decea16                 cmp             r0, #&c0  
                                 bcc             dec16m  
                                 CPUWORK #2  
                                 R16SRC  r0, r5  
                                 ldrh    r4, [r5, #CPU_REG]  
                                 DEC16   r4  
                                 strh    r1, [r5, #CPU_REG]  
                                 mov             pc, r11  
 dec16m                  CPUWORK #7  
                                 bl              i286a_ea  
                                 tst             r0, #1  
                                 bne             dec16e  
                                 cmp             r0, #I286_MEMWRITEMAX  
                                 bcs             dec16e  
                                 ldrh    r4, [r9, r0]  
                                 DEC16   r4  
                                 strh    r1, [r9, r0]  
                                 mov             pc, r11  
 dec16e                  mov             r5, r0  
                                 bl              i286_memoryread_w  
                                 DEC16   r0  
                                 mov             r0, r5  
                                 mov             lr, r11  
                                 b               i286_memorywrite_w  
   
 callea16                cmp             r0, #&c0  callea16                cmp             r0, #&c0
                                 bcc             call16m                                  bcc             call16m
Line 144  callea16  cmp  r0, #&c0 Line 53  callea16  cmp  r0, #&c0
                                 b               call16e                                  b               call16e
 call16m                 CPUWORK #11  call16m                 CPUWORK #11
                                 bl              i286a_ea                                  bl              i286a_ea
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 mov             r1, r8 lsr #16                                  mov             r1, r8 lsr #16
                                 sub             r8, r8, r1 lsl #16                                  sub             r8, r8, r1 lsl #16
                                 orr             r8, r8, r0 lsl #16                                  orr             r8, r8, r0 lsl #16
Line 155  call16e   ldrh r2, [r9, #CPU_SP] Line 64  call16e   ldrh r2, [r9, #CPU_SP]
                                 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
   
 callfarea16             cmp             r0, #&c0  callfarea16             cmp             r0, #&c0
                                 bcs             callfar16r                                  bcs             callfar16r
Line 164  callfarea16  cmp  r0, #&c0 Line 73  callfarea16  cmp  r0, #&c0
                                 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                      ; ip
                                 mov             r5, r8 lsr #16                                  mov             r5, r8 lsr #16
                                   add             r8, r8, r0 lsl #16
                                 sub             r8, r8, r5 lsl #16                                  sub             r8, r8, r5 lsl #16
                                 orr             r8, r8, r0 lsl #16  
                                 add             r0, r4, r6                                  add             r0, r4, r6
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w                      ; cs
                                 mov             r2, r0 lsl #4                                  mov             r2, r0 lsl #4
                                 ldrh    r1, [r9, #CPU_CS]                                  ldrh    r1, [r9, #CPU_CS]
                                 strh    r0, [r9, #CPU_CS]                                  strh    r0, [r9, #CPU_CS]
                                 str             r2, [r9, #CPU_CS_BASE]  
                                 ldrh    r4, [r9, #CPU_SP]                                  ldrh    r4, [r9, #CPU_SP]
                                 ldr             r6, [r9, #CPU_SS_BASE]                                  ldr             r6, [r9, #CPU_SS_BASE]
                                   str             r2, [r9, #CPU_CS_BASE]
                                 subs    r4, r4, #2                                  subs    r4, r4, #2
                                 addcc   r4, r4, #&10000                                  addcc   r4, r4, #&10000
                                 add             r0, r4, r6                                  add             r0, r4, r6
                                 bl              i286_memorywrite_w                                  bl              i286a_memorywrite_w                     ; cs
                                 subs    r4, r4, #2                                  subs    r4, r4, #2
                                 addcc   r4, r4, #&10000                                  addcc   r4, r4, #&10000
                                 add             r0, r4, r6  
                                 strh    r3, [r9, #CPU_SP]  
                                 mov             r1, r5                                  mov             r1, r5
                                   strh    r4, [r9, #CPU_SP]
                                   add             r0, r4, r6
                                 mov             lr, r11                                  mov             lr, r11
                                 b               i286_memorywrite_w                                  b               i286a_memorywrite_w                     ; ip
 callfar16r              mov             r6, #6  callfar16r              mov             r6, #6
                                 sub             r8, r8, #(2 << 16)                                  sub             r8, r8, #(2 << 16)
                                 b               i286a_localint                                  b               i286a_localint
Line 202  jmpea16   cmp  r0, #&c0 Line 111  jmpea16   cmp  r0, #&c0
                                 mov             pc, r11                                  mov             pc, r11
 jmp16m                  CPUWORK #11  jmp16m                  CPUWORK #11
                                 bl              i286a_ea                                  bl              i286a_ea
                                 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 215  jmpfarea16  cmp  r0, #&c0 Line 124  jmpfarea16  cmp  r0, #&c0
                                 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
                                 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
                                 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_CS]                                  strh    r0, [r9, #CPU_CS]
                                 str             r1, [r9, #CPU_CS_BASE]                                  str             r1, [r9, #CPU_CS_BASE]
Line 237  pushea16  cmp  r0, #&c0 Line 146  pushea16  cmp  r0, #&c0
                                 b               push16e                                  b               push16e
 push16m                 CPUWORK #5  push16m                 CPUWORK #5
                                 bl              i286a_ea                                  bl              i286a_ea
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 mov             r1, r0                                  mov             r1, r0
 push16e                 ldrh    r2, [r9, #CPU_SP]  push16e                 ldrh    r2, [r9, #CPU_SP]
                                 ldr             r3, [r9, #CPU_SS_BASE]                                  ldr             r3, [r9, #CPU_SS_BASE]
Line 246  push16e   ldrh r2, [r9, #CPU_SP] Line 155  push16e   ldrh r2, [r9, #CPU_SP]
                                 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
   
 popea16                 CPUWORK #5  popea16                 CPUWORK #5
                                 ldrh    r2, [r9, #CPU_SP]                                  ldrh    r2, [r9, #CPU_SP]
Line 256  popea16   CPUWORK #5 Line 165  popea16   CPUWORK #5
                                 add             r2, r2, #2                                  add             r2, r2, #2
                                 bic             r2, r2, #&10000                                  bic             r2, r2, #&10000
                                 strh    r2, [r9, #CPU_SP]                                  strh    r2, [r9, #CPU_SP]
                                 bl              i286_memoryread_w                                  bl              i286a_memoryread_w
                                 cmp             r6, #&c0                                  cmp             r6, #&c0
                                 bcc             pop16m                                  bcc             pop16m
                                 R16SRC  r6, r1                                  R16SRC  r6, r1
                                 ldrh    r0, [r1, #CPU_REG]                                  strh    r0, [r1, #CPU_REG]
                                 mov             pc, r11                                  mov             pc, r11
 pop16m                  mov             r5, r0  pop16m                  mov             r5, r0
                                 mov             r0, r6                                  mov             r0, r6
                                 bl              i286a_ea                                  bl              i286a_ea
                                 mov             r1, r5                                  mov             r1, r5
                                 mov             lr, r11                                  mov             lr, r11
                                 b               i286_memoryread_w                                  b               i286a_memoryread_w
   
         END          END
   

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


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