|
|
| version 1.7, 2003/12/22 07:41:15 | version 1.9, 2004/01/07 06:53:47 |
|---|---|
| Line 10 | Line 10 |
| INCLUDE i286a.inc | INCLUDE i286a.inc |
| IMPORT i286a_memoryread | IMPORT i286a_memoryread |
| IMPORT i286a_memoryread_w | IMPORT i286a_memoryread_w |
| ;; IMPORT ea_assert | |
| EXPORT i286a_selector | |
| EXPORT i286a_ea | EXPORT i286a_ea |
| EXPORT i286a_lea | EXPORT i286a_lea |
| EXPORT i286a_a | EXPORT i286a_a |
| AREA .text, CODE, READONLY | AREA .text, CODE, READONLY |
| i286a_selector stmdb sp!, {r4 - r5, lr} | |
| tst r0, #4 | |
| moveq r1, #(CPU_GDTR + 2) | |
| movne r1, #(CPU_LDTRC + 2) | |
| add r2, r1, #2 | |
| ldrh r1, [r1, r9] | |
| ldrb r2, [r2, r9] | |
| bic r4, r0, #7 | |
| add r4, r4, r1 | |
| add r4, r4, r2 lsl #16 | |
| add r0, r4, #2 | |
| bl i286a_memoryread_w | |
| mov r5, r0 | |
| add r0, r4, #4 | |
| bl i286a_memoryread | |
| add r0, r5, r0 lsl #16 | |
| ldmia sp!, {r4 - r5, pc} | |
| ; ---- calc_ea_dst | ; ---- calc_ea_dst |
| MACRO | MACRO |
| Line 29 $label ldrh r1, [r9, $r] | Line 51 $label ldrh r1, [r9, $r] |
| MACRO | MACRO |
| $label EAR1D8 $r, $b | $label EAR1D8 $r, $b |
| $label ldr r0, [r9, #CPU_CS_BASE] | $label ;; ldr r0, [r9, #CPU_CS_BASE] |
| add r0, r5, r8 lsr #16 | |
| mov r4, lr | mov r4, lr |
| add r0, r0, r8 lsr #16 | |
| bl i286a_memoryread | bl i286a_memoryread |
| ldrh r1, [r9, $r] | ldrh r1, [r9, $r] |
| ldr r2, [r9, $b] | ldr r2, [r9, $b] |
| Line 45 $label ldr r0, [r9, #CPU_CS_BASE] | Line 67 $label ldr r0, [r9, #CPU_CS_BASE] |
| MACRO | MACRO |
| $label EAR1D16 $r, $b | $label EAR1D16 $r, $b |
| $label ldr r0, [r9, #CPU_CS_BASE] | $label ;; ldr r0, [r9, #CPU_CS_BASE] |
| add r0, r5, r8 lsr #16 | |
| mov r4, lr | mov r4, lr |
| add r0, r0, r8 lsr #16 | |
| bl i286a_memoryread_w | bl i286a_memoryread_w |
| ldrh r1, [r9, $r] | ldrh r1, [r9, $r] |
| ldr r2, [r9, $b] | ldr r2, [r9, $b] |
| Line 71 $label ldrh r1, [r9, $r1] | Line 93 $label ldrh r1, [r9, $r1] |
| MACRO | MACRO |
| $label EAR2D8 $r1, $r2, $b | $label EAR2D8 $r1, $r2, $b |
| $label ldr r0, [r9, #CPU_CS_BASE] | $label ;; ldr r0, [r9, #CPU_CS_BASE] |
| add r0, r5, r8 lsr #16 | |
| mov r4, lr | mov r4, lr |
| add r0, r0, r8 lsr #16 | |
| bl i286a_memoryread | bl i286a_memoryread |
| ldrh r1, [r9, $r1] | ldrh r1, [r9, $r1] |
| ldrh r2, [r9, $r2] | ldrh r2, [r9, $r2] |
| Line 89 $label ldr r0, [r9, #CPU_CS_BASE] | Line 111 $label ldr r0, [r9, #CPU_CS_BASE] |
| MACRO | MACRO |
| $label EAR2D16 $r1, $r2, $b | $label EAR2D16 $r1, $r2, $b |
| $label ldr r0, [r9, #CPU_CS_BASE] | $label ;; ldr r0, [r9, #CPU_CS_BASE] |
| add r0, r5, r8 lsr #16 | |
| mov r4, lr | mov r4, lr |
| add r0, r0, r8 lsr #16 | |
| bl i286a_memoryread_w | bl i286a_memoryread_w |
| ldrh r1, [r9, $r1] | ldrh r1, [r9, $r1] |
| ldrh r2, [r9, $r2] | ldrh r2, [r9, $r2] |
| Line 104 $label ldr r0, [r9, #CPU_CS_BASE] | Line 126 $label ldr r0, [r9, #CPU_CS_BASE] |
| mov pc, r4 | mov pc, r4 |
| MEND | MEND |
| i286a_ea and r1, r0, #(&18 << 3) | i286a_ea |
| if 0 | |
| ldr r1, [r9, #CPU_CS_BASE] | |
| cmp r1, r5 | |
| beq ea_r | |
| str r0, [sp, #-4]! | |
| mov r4, lr | |
| add r0, r1, r8 lsr #16 | |
| bl ea_assert | |
| ldr r0, [sp], #4 | |
| mov lr, r4 | |
| ea_r | |
| endif | |
| and r1, r0, #(&18 << 3) | |
| and r2, r0, #7 | and r2, r0, #7 |
| add r3, pc, r1 lsr #1 | add r3, pc, r1 lsr #1 |
| add pc, r3, r2 lsl #2 | add pc, r3, r2 lsl #2 |
| Line 160 ea_bx_d16 EAR1D16 #CPU_BX, #CPU_DS_FIX | Line 195 ea_bx_d16 EAR1D16 #CPU_BX, #CPU_DS_FIX |
| ea_bp_d8 EAR1D8 #CPU_BP, #CPU_SS_FIX | ea_bp_d8 EAR1D8 #CPU_BP, #CPU_SS_FIX |
| ea_bp_d16 EAR1D16 #CPU_BP, #CPU_SS_FIX | ea_bp_d16 EAR1D16 #CPU_BP, #CPU_SS_FIX |
| ea_d16 mov r4, lr | ea_d16 ;; ldr r0, [r9, #CPU_CS_BASE] |
| ldr r0, [r9, #CPU_CS_BASE] | add r0, r5, r8 lsr #16 |
| add r0, r0, r8 lsr #16 | mov r4, lr |
| bl i286a_memoryread_w | bl i286a_memoryread_w |
| ldr r1, [r9, #CPU_DS_FIX] | ldr r1, [r9, #CPU_DS_FIX] |
| add r8, r8, #(2 << 16) | add r8, r8, #(2 << 16) |
| Line 180 $label ldrh r0, [r9, $r] | Line 215 $label ldrh r0, [r9, $r] |
| MACRO | MACRO |
| $label LER1D8 $r | $label LER1D8 $r |
| $label ldr r0, [r9, #CPU_CS_BASE] | $label add r0, r5, r8 lsr #16 |
| mov r4, lr | mov r4, lr |
| add r0, r0, r8 lsr #16 | |
| bl i286a_memoryread | bl i286a_memoryread |
| ldrh r1, [r9, $r] | ldrh r1, [r9, $r] |
| add r8, r8, #(1 << 16) | add r8, r8, #(1 << 16) |
| Line 195 $label ldr r0, [r9, #CPU_CS_BASE] | Line 229 $label ldr r0, [r9, #CPU_CS_BASE] |
| MACRO | MACRO |
| $label LER1D16 $r | $label LER1D16 $r |
| $label ldr r0, [r9, #CPU_CS_BASE] | $label add r0, r5, r8 lsr #16 |
| mov r4, lr | mov r4, lr |
| add r0, r0, r8 lsr #16 | |
| bl i286a_memoryread_w | bl i286a_memoryread_w |
| ldrh r1, [r9, $r] | ldrh r1, [r9, $r] |
| add r8, r8, #(2 << 16) | add r8, r8, #(2 << 16) |
| Line 217 $label ldrh r1, [r9, $r1] | Line 250 $label ldrh r1, [r9, $r1] |
| MACRO | MACRO |
| $label LER2D8 $r1, $r2 | $label LER2D8 $r1, $r2 |
| $label ldr r0, [r9, #CPU_CS_BASE] | $label add r0, r5, r8 lsr #16 |
| mov r4, lr | mov r4, lr |
| add r0, r0, r8 lsr #16 | |
| bl i286a_memoryread | bl i286a_memoryread |
| ldrh r1, [r9, $r1] | ldrh r1, [r9, $r1] |
| ldrh r2, [r9, $r2] | ldrh r2, [r9, $r2] |
| Line 234 $label ldr r0, [r9, #CPU_CS_BASE] | Line 266 $label ldr r0, [r9, #CPU_CS_BASE] |
| MACRO | MACRO |
| $label LER2D16 $r1, $r2 | $label LER2D16 $r1, $r2 |
| $label ldr r0, [r9, #CPU_CS_BASE] | $label add r0, r5, r8 lsr #16 |
| mov r4, lr | mov r4, lr |
| add r0, r0, r8 lsr #16 | |
| bl i286a_memoryread_w | bl i286a_memoryread_w |
| ldrh r1, [r9, $r1] | ldrh r1, [r9, $r1] |
| ldrh r2, [r9, $r2] | ldrh r2, [r9, $r2] |
| Line 303 lea_bx_d16 LER1D16 #CPU_BX | Line 334 lea_bx_d16 LER1D16 #CPU_BX |
| lea_bp_d8 LER1D8 #CPU_BP | lea_bp_d8 LER1D8 #CPU_BP |
| lea_bp_d16 LER1D16 #CPU_BP | lea_bp_d16 LER1D16 #CPU_BP |
| lea_d16 ldr r0, [r9, #CPU_CS_BASE] | lea_d16 add r0, r5, r8 lsr #16 |
| add r0, r0, r8 lsr #16 | |
| add r8, r8, #(2 << 16) | add r8, r8, #(2 << 16) |
| b i286a_memoryread_w | b i286a_memoryread_w |