Diff for /np2/i286a/i286a_fe.s between versions 1.1 and 1.8

version 1.1, 2003/12/17 03:46:27 version 1.8, 2003/12/22 10:24:50
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          i286_memoryread          IMPORT          i286a_a
         IMPORT          i286_memoryread_w          IMPORT          i286a_memoryread
         IMPORT          i286_memorywrite          IMPORT          i286a_memoryread_w
         IMPORT          i286_memorywrite_w          IMPORT          i286a_memorywrite
           IMPORT          i286a_memorywrite_w
           IMPORT          i286a_localint
   
         EXPORT          i286a_0xfe          EXPORT          i286aopfe
         EXPORT          i286a_0xff          EXPORT          i286aopff
   
         AREA    .text, CODE, READONLY          AREA    .text, CODE, READONLY
   
   i286aopfe               GETPCF8
 i286a_0xfe              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  
   
   
 ; ----  ; ----
   
 i286a_0xff              GETPC8  i286aopff               GETPCF8
                                 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             callfarea16
                                   dcd             jmpea16
                                   dcd             jmpfarea16
                                 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  
   callea16                cmp             r0, #&c0
                                   bcc             call16m
                                   CPUWORK #7
                                 R16SRC  r0, r5                                  R16SRC  r0, r5
                                 ldrh    r4, [r5, #CPU_REG]                                  ldrh    r0, [r5, #CPU_REG]
                                 INC16   r4                                  mov             r1, r8 lsr #16
                                 strh    r1, [r5, #CPU_REG]                                  sub             r8, r8, r1 lsl #16
                                 mov             pc, r11                                  orr             r8, r8, r0 lsl #16
 inc16m                  CPUWORK #7                                  b               call16e
                                 bl              i286a_ea  call16m                 CPUWORK #11
                                 tst             r0, #1                                  bl              i286a_ea
                                 bne             inc16e                                  bl              i286a_memoryread_w
                                 cmp             r0, #I286_MEMWRITEMAX                                  mov             r1, r8 lsr #16
                                 bcs             inc16e                                  sub             r8, r8, r1 lsl #16
                                 ldrh    r4, [r9, r0]                                  orr             r8, r8, r0 lsl #16
                                 INC16   r4  call16e                 ldrh    r2, [r9, #CPU_SP]
                                 strh    r1, [r9, r0]                                  ldr             r3, [r9, #CPU_SS_BASE]
                                 mov             pc, r11                                  subs    r2, r2, #2
 inc16e                  mov             r5, r0                                  addcc   r2, r2, #&10000
                                 bl              i286_memoryread_w                                  strh    r2, [r9, #CPU_SP]
                                 INC16   r0                                  add             r0, r2, r3
                                 mov             r0, r5  
                                 mov             lr, r11                                  mov             lr, r11
                                 b               i286_memorywrite_w                                  b               i286a_memorywrite_w
   
 decea16                 cmp             r0, #&c0  callfarea16             cmp             r0, #&c0
                                 bcc             dec16m                                  bcs             callfar16r
                                 CPUWORK #2                                  CPUWORK #16
                                 R16SRC  r0, r5                                  bl              i286a_a
                                 ldrh    r4, [r5, #CPU_REG]                                  add             r4, r0, #2
                                 DEC16   r4                                  add             r0, r0, r6
                                 strh    r1, [r5, #CPU_REG]                                  bic             r4, r4, #(1 << 16)
                                 mov             pc, r11                                  bl              i286a_memoryread_w                      ; ip
 dec16m                  CPUWORK #7                                  mov             r5, r8 lsr #16
                                 bl              i286a_ea                                  add             r8, r8, r0 lsl #16
                                 tst             r0, #1                                  sub             r8, r8, r5 lsl #16
                                 bne             dec16e                                  add             r0, r4, r6
                                 cmp             r0, #I286_MEMWRITEMAX                                  bl              i286a_memoryread_w                      ; cs
                                 bcs             dec16e                                  mov             r2, r0 lsl #4
                                 ldrh    r4, [r9, r0]                                  ldrh    r1, [r9, #CPU_CS]
                                 DEC16   r4                                  strh    r0, [r9, #CPU_CS]
                                 strh    r1, [r9, r0]                                  ldrh    r4, [r9, #CPU_SP]
                                 mov             pc, r11                                  ldr             r6, [r9, #CPU_SS_BASE]
 dec16e                  mov             r5, r0                                  str             r2, [r9, #CPU_CS_BASE]
                                 bl              i286_memoryread_w                                  subs    r4, r4, #2
                                 DEC16   r0                                  addcc   r4, r4, #&10000
                                 mov             r0, r5                                  add             r0, r4, r6
                                   bl              i286a_memorywrite_w                     ; cs
                                   subs    r4, r4, #2
                                   addcc   r4, r4, #&10000
                                   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
                                   sub             r8, r8, #(2 << 16)
                                   b               i286a_localint
   
   jmpea16                 cmp             r0, #&c0
                                   bcc             jmp16m
                                   CPUWORK #7
                                   R16SRC  r0, r5
                                   ldrh    r0, [r5, #CPU_REG]
                                   mov             r8, r8 lsl #16
                                   mov             r8, r8 lsr #16
                                   orr             r8, r8, r0 lsl #16
                                   mov             pc, r11
   jmp16m                  CPUWORK #11
                                   bl              i286a_ea
                                   bl              i286a_memoryread_w
                                   mov             r8, r8 lsl #16
                                   mov             r8, r8 lsr #16
                                   orr             r8, r8, r0 lsl #16
                                   mov             pc, r11
   
   jmpfarea16              cmp             r0, #&c0
                                   bcs             jmpfar16r
                                   CPUWORK #11
                                   bl              i286a_a
                                   add             r4, r0, #2
                                   add             r0, r0, r6
                                   bic             r4, r4, #(1 << 16)
                                   bl              i286a_memoryread_w
                                   mov             r8, r8 lsl #16
                                   mov             r8, r8 lsr #16
                                   orr             r8, r8, r0 lsl #16
                                   add             r0, r4, r6
                                   bl              i286a_memoryread_w
                                   mov             r1, r0 lsl #4
                                   strh    r0, [r9, #CPU_CS]
                                   str             r1, [r9, #CPU_CS_BASE]
                                   mov             pc, r11
   jmpfar16r               mov             r6, #6
                                   sub             r8, r8, #(2 << 16)
                                   b               i286a_localint
   
 pushea16                cmp             r0, #&c0  pushea16                cmp             r0, #&c0
                                 bcc             push16m                                  bcc             push16m
Line 137  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 146  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]
                                 ldr             r3, [r9, #CPU_SS_BASE]                                  ldr             r3, [r9, #CPU_SS_BASE]
                                 mov             r6, r0                                  mov             r4, r0
                                 add             r0, r2, r3                                  add             r0, r2, r3
                                 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             r4, #&c0
                                 bcc             pop16m                                  bcc             pop16m
                                 R16SRC  r6, r1                                  R16SRC  r4, r1
                                 ldrh    r0, [r1, #CPU_REG]                                  strh    r0, [r1, #CPU_REG]
                                 mov             pc, r11                                  mov             pc, r11
 pop16m                  mov             r5, r0  pop16m                  mov             r6, r0
                                 mov             r0, r6                                  mov             r0, r4
                                 bl              i286a_ea                                  bl              i286a_ea
                                 mov             r1, r5                                  mov             r1, r6
                                 mov             lr, r11                                  mov             lr, r11
                                 b               i286_memoryread_w                                  b               i286a_memoryread_w
   
         END          END
   

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


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