--- np2/i286a/i286a_8x.s 2003/12/17 03:46:27 1.2 +++ np2/i286a/i286a_8x.s 2003/12/21 23:27:08 1.9 @@ -1,21 +1,21 @@ INCLUDE i286a.inc + INCLUDE i286aea.inc INCLUDE i286aalu.inc - IMPORT _szpcflag8 IMPORT i286a_ea - IMPORT i286_memoryread - IMPORT i286_memoryread_w - IMPORT i286_memorywrite - IMPORT i286_memorywrite_w - - EXPORT i286a_80 - EXPORT i286a_81 - EXPORT i286a_83 + IMPORT i286a_memoryread + IMPORT i286a_memoryread_w + IMPORT i286a_memorywrite + IMPORT i286a_memorywrite_w + + EXPORT i286aop80 + EXPORT i286aop81 + EXPORT i286aop83 AREA .text, CODE, READONLY -i286a_80 GETPC8 +i286aop80 GETPCF8 and r6, r0, #(7 << 3) cmp r0, #&c0 bcc ope80m @@ -24,6 +24,7 @@ i286a_80 GETPC8 add r5, r5, #CPU_REG GETPC8 adr r1, op8x_reg8 + ldrb r4, [r5] ldr pc, [r1, r6 lsr #1] ope80m CPUWORK #7 bl i286a_ea @@ -32,11 +33,12 @@ ope80m CPUWORK #7 add r5, r9, r0 GETPC8 adr r1, op8x_reg8 + ldrb r4, [r5] ldr pc, [r1, r6 lsr #1] -ope80e mov r4, r0 +ope80e mov r5, r0 + bl i286a_memoryread + mov r4, r0 GETPC8 - mov r5, r0 - bl i286_memoryread adr r1, op8x_ext8 ldr pc, [r1, r6 lsr #1] @@ -58,73 +60,65 @@ op8x_ext8 dcd add_r8_e dcd xor_r8_e dcd cmp_r8_e -add_r8_i ldrb r6, [r5] - ADD8 r6, r0 +add_r8_i ADD8 r4, r0 strb r1, [r5] mov pc, r11 -or_r8_i ldrb r6, [r5] - OR8 r6, r0 +or_r8_i OR8 r4, r0 strb r1, [r5] mov pc, r11 -adc_r8_i ldrb r6, [r5] - ADC8 r6, r0 +adc_r8_i ADC8 r4, r0 strb r1, [r5] mov pc, r11 -sbb_r8_i ldrb r6, [r5] - SBB8 r6, r0 +sbb_r8_i SBB8 r4, r0 strb r1, [r5] mov pc, r11 -and_r8_i ldrb r6, [r5] - AND8 r6, r0 +and_r8_i AND8 r4, r0 strb r1, [r5] mov pc, r11 -sub_r8_i ldrb r6, [r5] - SUB8 r6, r0 +sub_r8_i SUB8 r4, r0 strb r1, [r5] mov pc, r11 -xor_r8_i ldrb r6, [r5] - XOR8 r6, r0 +xor_r8_i XOR8 r4, r0 strb r1, [r5] mov pc, r11 -cmp_r8_i ldrb r6, [r5] - SUB8 r6, r0 +cmp_r8_i SUB8 r4, r0 mov pc, r11 -add_r8_e ADD8 r0, r4 +add_r8_e ADD8 r4, r0 mov r0, r5 mov lr, r11 - b i286_memorywrite -or_r8_e OR8 r0, r4 + b i286a_memorywrite +or_r8_e OR8 r4, r0 mov r0, r5 mov lr, r11 - b i286_memorywrite -adc_r8_e ADC8 r0, r4 + b i286a_memorywrite +adc_r8_e ADC8 r4, r0 mov r0, r5 mov lr, r11 - b i286_memorywrite -sbb_r8_e SBB8 r0, r4 + b i286a_memorywrite +sbb_r8_e SBB8 r4, r0 mov r0, r5 mov lr, r11 - b i286_memorywrite -and_r8_e AND8 r0, r4 + b i286a_memorywrite +and_r8_e AND8 r4, r0 mov r0, r5 mov lr, r11 - b i286_memorywrite -sub_r8_e SUB8 r0, r4 + b i286a_memorywrite +sub_r8_e SUB8 r4, r0 mov r0, r5 mov lr, r11 - b i286_memorywrite -xor_r8_e XOR8 r0, r4 + b i286a_memorywrite +xor_r8_e XOR8 r4, r0 mov r0, r5 mov lr, r11 - b i286_memorywrite -cmp_r8_e SUB8 r0, r4 + b i286a_memorywrite +cmp_r8_e SUB8 r4, r0 mov pc, r11 ; ---- -i286a_81 GETPC8 +i286aop81 GETPCF8 and r6, r0, #(7 << 3) cmp r0, #&c0 bcc ope81m @@ -133,6 +127,7 @@ i286a_81 GETPC8 add r5, r5, #CPU_REG GETPC16 adr r1, op8x_reg16 + ldrh r4, [r5] ldr pc, [r1, r6 lsr #1] ope81m CPUWORK #7 bl i286a_ea @@ -143,15 +138,16 @@ ope81m CPUWORK #7 add r5, r9, r0 GETPC16 adr r1, op8x_reg16 + ldrh r4, [r5] ldr pc, [r1, r6 lsr #1] -ope81e mov r4, r0 +ope81e mov r5, r0 + bl i286a_memoryread_w + mov r4, r0 GETPC16 - mov r5, r0 - bl i286_memoryread_w adr r1, op8x_ext16 ldr pc, [r1, r6 lsr #1] -i286a_83 GETPC8 +i286aop83 GETPCF8 and r6, r0, #(7 << 3) cmp r0, #&c0 bcc ope83m @@ -162,6 +158,7 @@ i286a_83 GETPC8 tst r0, #(1 << 7) orrne r0, r0, #(&ff << 8) adr r1, op8x_reg16 + ldrh r4, [r5] ldr pc, [r1, r6 lsr #1] ope83m CPUWORK #7 bl i286a_ea @@ -174,13 +171,14 @@ ope83m CPUWORK #7 tst r0, #(1 << 7) orrne r0, r0, #(&ff << 8) adr r1, op8x_reg16 + ldrh r4, [r5] ldr pc, [r1, r6 lsr #1] -ope83e mov r4, r0 +ope83e mov r5, r0 + bl i286a_memoryread_w + mov r4, r0 GETPC8 - mov r5, r0 tst r0, #(1 << 7) - orrne r5, r5, #(&ff << 8) - bl i286_memoryread_w + orrne r0, r0, #(&ff << 8) adr r1, op8x_ext16 ldr pc, [r1, r6 lsr #1] @@ -202,67 +200,59 @@ op8x_ext16 dcd add_r16_e dcd xor_r16_e dcd cmp_r16_e -add_r16_i ldrh r6, [r5] - ADD16 r6, r0 +add_r16_i ADD16 r4, r0 strh r1, [r5] mov pc, r11 -or_r16_i ldrh r6, [r5] - OR16 r6, r0 +or_r16_i OR16 r4, r0 strh r1, [r5] mov pc, r11 -adc_r16_i ldrh r6, [r5] - ADC16 r6, r0 +adc_r16_i ADC16 r4, r0 strh r1, [r5] mov pc, r11 -sbb_r16_i ldrh r6, [r5] - SBB16 r6, r0 +sbb_r16_i SBB16 r4, r0 strh r1, [r5] mov pc, r11 -and_r16_i ldrh r6, [r5] - AND16 r6, r0 +and_r16_i AND16 r4, r0 strh r1, [r5] mov pc, r11 -sub_r16_i ldrh r6, [r5] - SUB16 r6, r0 +sub_r16_i SUB16 r4, r0 strh r1, [r5] mov pc, r11 -xor_r16_i ldrh r6, [r5] - XOR16 r6, r0 +xor_r16_i XOR16 r4, r0 strh r1, [r5] mov pc, r11 -cmp_r16_i ldrh r6, [r5] - SUB16 r6, r0 +cmp_r16_i SUB16 r4, r0 mov pc, r11 -add_r16_e ADD16 r0, r4 +add_r16_e ADD16 r4, r0 mov r0, r5 mov lr, r11 - b i286_memorywrite_w -or_r16_e OR16 r0, r4 + b i286a_memorywrite_w +or_r16_e OR16 r4, r0 mov r0, r5 mov lr, r11 - b i286_memorywrite_w -adc_r16_e ADC16 r0, r4 + b i286a_memorywrite_w +adc_r16_e ADC16 r4, r0 mov r0, r5 mov lr, r11 - b i286_memorywrite_w -sbb_r16_e SBB16 r0, r4 + b i286a_memorywrite_w +sbb_r16_e SBB16 r4, r0 mov r0, r5 mov lr, r11 - b i286_memorywrite_w -and_r16_e AND16 r0, r4 + b i286a_memorywrite_w +and_r16_e AND16 r4, r0 mov r0, r5 mov lr, r11 - b i286_memorywrite_w -sub_r16_e SUB16 r0, r4 + b i286a_memorywrite_w +sub_r16_e SUB16 r4, r0 mov r0, r5 mov lr, r11 - b i286_memorywrite_w -xor_r16_e XOR16 r0, r4 + b i286a_memorywrite_w +xor_r16_e XOR16 r4, r0 mov r0, r5 mov lr, r11 - b i286_memorywrite_w -cmp_r16_e SUB16 r0, r4 + b i286a_memorywrite_w +cmp_r16_e SUB16 r4, r0 mov pc, r11 END