Diff for /np2/i286a/i286a.inc between versions 1.4 and 1.8

version 1.4, 2003/12/17 10:41:06 version 1.8, 2003/12/18 23:07:49
Line 13  D_FLAG    equ  &0400 Line 13  D_FLAG    equ  &0400
 O_FLAG                          equ             &0800  O_FLAG                          equ             &0800
   
 CPU_REG                         equ             0 - 112  CPU_REG                         equ             0 - 112
   CPU_SEG                         equ             16 - 112
 CPU_REMAINCLOCK         equ             28 - 112  CPU_REMAINCLOCK         equ             28 - 112
 ; cpu_baseclock         equ             32 - 112  CPU_BASECLOCK           equ             32 - 112
 ; cpu_clock                     equ             36 - 112  ; cpu_clock                     equ             36 - 112
 ; cpu_adrsmask          equ             40 - 112  ; cpu_adrsmask          equ             40 - 112
 CPU_ES_BASE                     equ             44 - 112  CPU_ES_BASE                     equ             44 - 112
Line 23  CPU_SS_BASE   equ  52 - 112 Line 24  CPU_SS_BASE   equ  52 - 112
 CPU_DS_BASE                     equ             56 - 112  CPU_DS_BASE                     equ             56 - 112
 CPU_SS_FIX                      equ             60 - 112  CPU_SS_FIX                      equ             60 - 112
 CPU_DS_FIX                      equ             64 - 112  CPU_DS_FIX                      equ             64 - 112
 ; cpu_prefix            equ             68 - 112  CPU_PREFIX                      equ             68 - 112
 CPU_TRAP                        equ             70 - 112  CPU_TRAP                        equ             70 - 112
 ; cpu_type                      equ             71 - 112  ; cpu_type                      equ             71 - 112
 ; cpu_pf_semaphore      equ             72 - 112  ; cpu_pf_semaphore      equ             72 - 112
 ; cpu_repbak            equ             76 - 112  ; cpu_repbak            equ             76 - 112
 ; cpu_inport            equ             80 - 112  CPU_INPUT                       equ             80 - 112
 ; cpu_ovflag            equ             84 - 112  ; cpu_ovflag            equ             84 - 112
 CPU_GDTR                        equ             88 - 112  CPU_GDTR                        equ             88 - 112
 CPU_IDTR                        equ             94 - 112  CPU_IDTR                        equ             94 - 112
 ; cpu_MSW                       equ             100 - 112  CPU_MSW                         equ             100 - 112
 ; cpu_resetreq          equ             102 - 112  ; cpu_resetreq          equ             102 - 112
 ; cpu_itfbank           equ             103 - 112  ; cpu_itfbank           equ             103 - 112
 ; cpu_extmem            equ             104 - 112  ; cpu_extmem            equ             104 - 112
Line 63  CPU_DS    equ  22 - 112 Line 64  CPU_DS    equ  22 - 112
 CPU_FLAG                        equ             24 - 112  CPU_FLAG                        equ             24 - 112
 CPU_IP                          equ             26 - 112  CPU_IP                          equ             26 - 112
   
   MAX_PREFIX                      equ             8
   
         MACRO  
 $label  CPUWORK $clock  
 $label          ldr             r7, [r9, #CPU_REMAINCLOCK]  
                         sub             r7, r7, $clock  
                         str             r7, [r9, #CPU_REMAINCLOCK]  
         MEND  
   
         MACRO  
 $label  CREMSET $clock  
 $label          mov             r7, $clock  
                         str             r7, [r9, #CPU_REMAINCLOCK]  
         MEND  
   
         MACRO          MACRO
 $label  CPUSV  $label  CPUSVC
 $label  $label
         MEND          MEND
   
         MACRO          MACRO
 $label  CPULD  $label  CPULDC
 $label  $label
         MEND          MEND
   
   
         MACRO          MACRO
 $label  GETPC8  $label  CPUSVF
 $label          ldr             r0, [r9, #CPU_CS_BASE]  $label          str             r8, [r9, #CPU_FLAG]
                         add             r0, r0, r8 lsr #16  
                         bl              i286_memoryread  
                         add             r8, r8, #(1 << 16)  
         MEND          MEND
   
         MACRO          MACRO
 $label  GETPC16  $label  CPULDF
 $label          ldr             r0, [r9, #CPU_CS_BASE]  $label          ldr             r8, [r9, #CPU_FLAG]
                         add             r0, r0, r8 lsr #16  
                         bl              i286_memoryread_w  
                         add             r8, r8, #(2 << 16)  
         MEND          MEND
   
   
         MACRO          MACRO
 $label  R8SRC   $op, $out  $label  CPUSV
 $label          and             $out, $op, #3  $label  CPUSVF
                         add             $out, r9, $out lsl #1                  CPUSVC
                         tst             $op, #(1 << 2)  
                         addne   $out, $out, #1  
         MEND          MEND
   
         MACRO          MACRO
 $label  R8DST   $op, $out  $label  CPULD
 $label          and             $out, $op, #(6 << 2)  $label  CPULDF
                         add             $out, r9, $out lsr #2                  CPULDC
                         tst             $op, #(1 << 5)  
                         addne   $out, $out, #1  
         MEND          MEND
   
   
         MACRO          MACRO
 $label  EAREG8  $src  $label  CPUWORK $clock
 $label          ldr             r0, [r9, #CPU_CS_BASE]  $label          ldr             r7, [r9, #CPU_REMAINCLOCK]
                         add             r0, r0, r8 lsr #16                          sub             r7, r7, $clock
                         bl              i286_memoryread                          str             r7, [r9, #CPU_REMAINCLOCK]
                         add             r8, r8, #(1 << 16)  
                         and             $src, r0, #(6 << 2)  
                         add             $src, r9, $src lsr #2  
                         tst             r0, #(1 << 5)  
                         addne   $src, $src, #1  
         MEND          MEND
   
         MACRO          MACRO
 $label  REG8EA  $dst, $regclk, $memclk  $label  CPUWKS  $clock
 $label          ldr             r0, [r9, #CPU_CS_BASE]  $label          ldr             r7, [r9, #CPU_REMAINCLOCK]
                         add             r0, r0, r8 lsr #16                          subs    r7, r7, $clock
                         bl              i286_memoryread                          str             r7, [r9, #CPU_REMAINCLOCK]
                         add             r8, r8, #(1 << 16)  
                         R8DST   r0, $dst  
                         cmp             r0, #&c0  
                         bcc             $label.1  
                         CPUWORK $regclk  
                         R8SRC   r0, r12  
                         ldrb    r0, [r12, #CPU_REG]  
                         b               $label.2  
 $label.1        CPUWORK $memclk  
                         bl              i286a_ea  
                         bl              i286_memoryread  
 $label.2  
         MEND          MEND
   
   
         MACRO          MACRO
 $label  R16SRC  $op, $out  $label  CREMSET $clock
 $label          and             $out, $op, #7  $label          mov             r7, $clock
                         add             $out, r9, $out lsl #1                          str             r7, [r9, #CPU_REMAINCLOCK]
         MEND          MEND
   
         MACRO          MACRO
 $label  R16DST  $op, $out  $label  NEXT_OPCODE
 $label          and             $out, $op, #(7 << 3)  $label          ldr             r7, [r9, #CPU_REMAINCLOCK]
                         add             $out, r9, $out lsr #2                          cmp             r7, #1
                           movge   pc, r11
                           ldr             r0, [r9, #CPU_BASECLOCK]
                           rsb             r1, r7, #1
                           mov             r7, #1
                           add             r0, r0, r1
                           str             r0, [r9, #CPU_BASECLOCK]
                           str             r7, [r9, #CPU_REMAINCLOCK]
                           mov             pc, r11
         MEND          MEND
   
         MACRO          MACRO
 $label  EAREG16 $src  $label  REMAIN_ADJUST   $clk
 $label          ldr             r0, [r9, #CPU_CS_BASE]  $label          ldr             r7, [r9, #CPU_REMAINCLOCK]
                         add             r0, r0, r8 lsr #16                          cmp             r7, $clk
                         bl              i286_memoryread                          moveq   pc, r11
                         add             r8, r8, #(1 << 16)                          ldr             r0, [r9, #CPU_BASECLOCK]
                         and             $src, r0, #(7 << 3)                          rsb             r1, r7, $clk
                         add             $src, r9, $src lsr #2                          mov             r7, $clk
                           add             r0, r0, r1
                           str             r0, [r9, #CPU_BASECLOCK]
                           str             r7, [r9, #CPU_REMAINCLOCK]
                           mov             pc, r11
         MEND          MEND
   
         MACRO          MACRO
 $label  REG16EA $dst, $regclk, $memclk  $label  I286IRQCHECKTERM
 $label          ldr             r0, [r9, #CPU_CS_BASE]  $label          ldr             r7, [r9, #CPU_REMAINCLOCK]
                         add             r0, r0, r8 lsr #16                          cmp             r7, #0
                         bl              i286_memoryread                          movgt   pc, r11
                         add             r8, r8, #(1 << 16)                          ldr             r0, [r9, #CPU_BASECLOCK]
                         R16DST  r0, $dst                          mov             r1, r7
                         cmp             r0, #&c0                          mov             r7, #0
                         bcc             $label.1                          sub             r0, r0, r1
                         CPUWORK $regclk                          str             r7, [r9, #CPU_REMAINCLOCK]
                         R16SRC  r0, r12                          str             r0, [r9, #CPU_BASECLOCK]
                         ldrh    r0, [r12, #CPU_REG]                          mov             pc, r11
                         b               $label.2  
 $label.1        CPUWORK $memclk  
                         bl              i286a_ea  
                         bl              i286_memoryread_w  
 $label.2  
         MEND          MEND
   
   
         END          END
   

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


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