|
|
| version 1.1, 2003/12/16 04:58:00 | version 1.6, 2003/12/17 14:04:43 |
|---|---|
| Line 7 | Line 7 |
| IMPORT _szpcflag8 | IMPORT _szpcflag8 |
| IMPORT i286a_ea | IMPORT i286a_ea |
| IMPORT i286a_lea | IMPORT i286a_lea |
| IMPORT i286a_a | |
| IMPORT i286_memoryread | IMPORT i286_memoryread |
| IMPORT i286_memoryread_w | IMPORT i286_memoryread_w |
| IMPORT i286_memorywrite | IMPORT i286_memorywrite |
| IMPORT i286_memorywrite_w | IMPORT i286_memorywrite_w |
| IMPORT iocore_inp8 | |
| IMPORT iocore_inp16 | |
| IMPORT iocore_out8 | |
| IMPORT iocore_out16 | |
| IMPORT i286a_localint | |
| IMPORT i286aop80 | |
| IMPORT i286aop81 | |
| IMPORT i286aop83 | |
| IMPORT i286asft8_1 | |
| IMPORT i286asft16_1 | |
| IMPORT i286asft8_cl | |
| IMPORT i286asft8_d8 | |
| IMPORT i286asft16_cl | |
| IMPORT i286asft16_d8 | |
| IMPORT i286aopf6 | |
| IMPORT i286aopf7 | |
| IMPORT i286aopfe | |
| IMPORT i286aopff | |
| EXPORT i286a_step | EXPORT i286a_step |
| EXPORT optbl1 | |
| AREA .text, CODE, READONLY | AREA .text, CODE, READONLY |
| Line 32 or_r16_ea OP_R16_EA OR16, #2, #7 | Line 56 or_r16_ea OP_R16_EA OR16, #2, #7 |
| or_al_d8 OP_AL_D8 OR8, #3 | or_al_d8 OP_AL_D8 OR8, #3 |
| or_ax_d16 OP_AX_D16 OR16, #3 | or_ax_d16 OP_AX_D16 OR16, #3 |
| push_cs REGPUSH #CPU_CS, #3 | push_cs REGPUSH #CPU_CS, #3 |
| ; ope0f | |
| adc_ea_r8 OP_EA_R8 ADC8, #2, #7 | adc_ea_r8 OP_EA_R8 ADC8, #2, #7 |
| adc_ea_r16 OP_EA_R16 ADC16, #2, #7 | adc_ea_r16 OP_EA_R16 ADC16, #2, #7 |
| Line 58 and_r8_ea OP_R8_EA AND8, #2, #7 | Line 82 and_r8_ea OP_R8_EA AND8, #2, #7 |
| and_r16_ea OP_R16_EA AND16, #2, #7 | and_r16_ea OP_R16_EA AND16, #2, #7 |
| and_al_d8 OP_AL_D8 AND8, #3 | and_al_d8 OP_AL_D8 AND8, #3 |
| and_ax_d16 OP_AX_D16 AND16, #3 | and_ax_d16 OP_AX_D16 AND16, #3 |
| ; segprefix_es | ; segprefix_es ! |
| ; daa | ; daa * |
| sub_ea_r8 OP_EA_R8 SUB8, #2, #7 | sub_ea_r8 OP_EA_R8 SUB8, #2, #7 |
| sub_ea_r16 OP_EA_R16 SUB16, #2, #7 | sub_ea_r16 OP_EA_R16 SUB16, #2, #7 |
| Line 67 sub_r8_ea OP_R8_EA SUB8, #2, #7 | Line 91 sub_r8_ea OP_R8_EA SUB8, #2, #7 |
| sub_r16_ea OP_R16_EA SUB16, #2, #7 | sub_r16_ea OP_R16_EA SUB16, #2, #7 |
| sub_al_d8 OP_AL_D8 SUB8, #3 | sub_al_d8 OP_AL_D8 SUB8, #3 |
| sub_ax_d16 OP_AX_D16 SUB16, #3 | sub_ax_d16 OP_AX_D16 SUB16, #3 |
| ; segprefix_cs | ; segprefix_cs ! |
| ; das | ; das * |
| xor_ea_r8 OP_EA_R8 XOR8, #2, #7 | xor_ea_r8 OP_EA_R8 XOR8, #2, #7 |
| xor_ea_r16 OP_EA_R16 XOR16, #2, #7 | xor_ea_r16 OP_EA_R16 XOR16, #2, #7 |
| Line 76 xor_r8_ea OP_R8_EA XOR8, #2, #7 | Line 100 xor_r8_ea OP_R8_EA XOR8, #2, #7 |
| xor_r16_ea OP_R16_EA XOR16, #2, #7 | xor_r16_ea OP_R16_EA XOR16, #2, #7 |
| xor_al_d8 OP_AL_D8 XOR8, #3 | xor_al_d8 OP_AL_D8 XOR8, #3 |
| xor_ax_d16 OP_AX_D16 XOR16, #3 | xor_ax_d16 OP_AX_D16 XOR16, #3 |
| ; segprefix_ss | ; segprefix_ss ! |
| ; aaa | ; aaa * |
| cmp_ea_r8 S_EA_R8 SUB8, #2, #7 | cmp_ea_r8 S_EA_R8 SUB8, #2, #7 |
| cmp_ea_r16 S_EA_R16 SUB16, #2, #7 | cmp_ea_r16 S_EA_R16 SUB16, #2, #7 |
| Line 85 cmp_r8_ea S_R8_EA SUB8, #2, #6 | Line 109 cmp_r8_ea S_R8_EA SUB8, #2, #6 |
| cmp_r16_ea S_R16_EA SUB16, #2, #6 | cmp_r16_ea S_R16_EA SUB16, #2, #6 |
| cmp_al_d8 S_AL_D8 SUB8, #3 | cmp_al_d8 S_AL_D8 SUB8, #3 |
| cmp_ax_d16 S_AX_D16 SUB16, #3 | cmp_ax_d16 S_AX_D16 SUB16, #3 |
| ; segprefix_ds | ; segprefix_ds ! |
| ; aas | ; aas * |
| inc_ax OP_INC16 #CPU_AX, #2 | inc_ax OP_INC16 #CPU_AX, #2 |
| inc_cx OP_INC16 #CPU_CX, #2 | inc_cx OP_INC16 #CPU_CX, #2 |
| Line 122 pop_bp REGPOP #CPU_BP, #5 | Line 146 pop_bp REGPOP #CPU_BP, #5 |
| pop_si REGPOP #CPU_SI, #5 | pop_si REGPOP #CPU_SI, #5 |
| pop_di REGPOP #CPU_DI, #5 | pop_di REGPOP #CPU_DI, #5 |
| ; pusha | ; pusha * |
| ; popa | ; popa * |
| ; bound | ; bound + |
| ; arpl | ; arpl + |
| ; push_d16 | ; push_d16 * |
| ; imul_reg_ea_d16 | ; imul_r_ea_d16 + |
| ; push_d8 | ; push_d8 * |
| ; imul_reg_ea_d8 | ; imul_r_ea_d8 + |
| ; insb | ; insb * |
| ; insw | ; insw * |
| ; outsb | ; outsb * |
| ; outsw | ; outsw * |
| ; jo_short | jo_short JMPNE #O_FLAG, #2, #7 |
| ; jno_short | jno_short JMPEQ #O_FLAG, #2, #7 |
| ; jc_short | jc_short JMPNE #C_FLAG, #2, #7 |
| ; jnc_short | jnc_short JMPEQ #C_FLAG, #2, #7 |
| ; jz_short | jz_short JMPNE #Z_FLAG, #2, #7 |
| ; jnz_short | jnz_short JMPEQ #Z_FLAG, #2, #7 |
| ; jna_short | jna_short JMPNE #(Z_FLAG + C_FLAG), #2, #7 |
| ; ja_short | ja_short JMPEQ #(Z_FLAG + C_FLAG), #2, #7 |
| ; js_short | js_short JMPNE #S_FLAG, #2, #7 |
| ; jns_short | jns_short JMPEQ #S_FLAG, #2, #7 |
| ; jp_short | jp_short JMPNE #P_FLAG, #2, #7 |
| ; jnp_short | jnp_short JMPEQ #P_FLAG, #2, #7 |
| ; jl_short | ; jl_short + |
| ; jnl_short | ; jnl_short + |
| ; jle_short | ; jle_short + |
| ; jnle_short | ; jnle_short + |
| ; calc_ea8_i8 | ; calc_ea8_i8 + |
| ; calc_ea16_i16 | ; calc_ea16_i16 + |
| ; calc_ea16_i8 | ; calc_ea16_i8 + |
| test_ea_r8 S_EA_R8 AND8, #2, #6 | test_ea_r8 S_EA_R8 AND8, #2, #6 |
| test_ea_r16 S_EA_R16 AND16, #2, #6 | test_ea_r16 S_EA_R16 AND16, #2, #6 |
| ; xchg_ea_r8 * | ; xchg_ea_r8 * |
| Line 163 test_ea_r16 S_EA_R16 AND16, #2, #6 | Line 187 test_ea_r16 S_EA_R16 AND16, #2, #6 |
| ; mov_ea_r16 * | ; mov_ea_r16 * |
| ; mov_r8_ea * | ; mov_r8_ea * |
| ; mov_r16_ea * | ; mov_r16_ea * |
| ; mov_ea_seg | ; mov_ea_seg + |
| ; lea_r16_ea | ; lea_r16_ea + |
| ; mov_seg_ea | ; mov_seg_ea ! |
| ; pop_ea | ; pop_ea * |
| ; nop | ; nop |
| xchg_ax_cx XCHG_AX #CPU_CX, #3 | xchg_ax_cx XCHG_AX #CPU_CX, #3 |
| Line 176 xchg_ax_sp XCHG_AX #CPU_SP, #3 | Line 200 xchg_ax_sp XCHG_AX #CPU_SP, #3 |
| xchg_ax_bp XCHG_AX #CPU_BP, #3 | xchg_ax_bp XCHG_AX #CPU_BP, #3 |
| xchg_ax_si XCHG_AX #CPU_SI, #3 | xchg_ax_si XCHG_AX #CPU_SI, #3 |
| xchg_ax_di XCHG_AX #CPU_DI, #3 | xchg_ax_di XCHG_AX #CPU_DI, #3 |
| ; cbw | ; cbw * |
| ; cwd | ; cwd * |
| ; call_far | ; call_far * |
| ; wait | ; wait * |
| ; pushf | ; pushf * |
| ; popf | ; popf ! |
| ; sahf | ; sahf * |
| ; lahf | ; lahf * |
| ; mov_al_m8 | ; mov_al_m8 * |
| ; mov_ax_m16 | ; mov_ax_m16 * |
| ; mov_m8_al | ; mov_m8_al * |
| ; mov_m16_ax | ; mov_m16_ax * |
| ; movsb | ; movsb * |
| ; movsw | ; movsw * |
| ; cmpsb | ; cmpsb * |
| ; cmpsw | ; cmpsw * |
| test_al_d8 S_AL_D8 AND8, #3 | test_al_d8 S_AL_D8 AND8, #3 |
| test_ax_d16 S_AX_D16 AND16, #3 | test_ax_d16 S_AX_D16 AND16, #3 |
| ; stosb | ; stosb * |
| ; stosw | ; stosw * |
| ; lodsb | ; lodsb * |
| ; lodsw | ; lodsw * |
| ; scasb | ; scasb * |
| ; scasw | ; scasw * |
| mov_al_imm MOVIMM8 #CPU_AL, #2 | mov_al_imm MOVIMM8 #CPU_AL, #2 |
| mov_cl_imm MOVIMM8 #CPU_CL, #2 | mov_cl_imm MOVIMM8 #CPU_CL, #2 |
| Line 221 mov_di_imm MOVIMM16 #CPU_DI, #2 | Line 245 mov_di_imm MOVIMM16 #CPU_DI, #2 |
| ; shift_ea8_d8 | ; shift_ea8_d8 |
| ; shift_ea16_d8 | ; shift_ea16_d8 |
| ; ret_near_d16 | ; ret_near_d16 + |
| ; ret_near | ; ret_near + |
| ; les_r16_ea | ; les_r16_ea + |
| ; lds_r16_ea | ; lds_r16_ea + |
| ; mov_ea8_d8 | ; mov_ea8_d8 * |
| ; mov_ea16_d16 | ; mov_ea16_d16 * |
| ; enter | ; enter |
| ; leave | ; leave + |
| ; ret_far_d16 | ; ret_far_d16 + |
| ; ret_far | ; ret_far + |
| ; int_03 | ; int_03 + |
| ; int_d8 | ; int_d8 + |
| ; into | ; into + |
| ; iret | ; iret ! |
| ; shift_ea8_1 | ; shift_ea8_1 |
| ; shift_ea16_1 | ; shift_ea16_1 |
| ; shift_ea8_cl | ; shift_ea8_cl |
| ; shift_ea16_cl | ; shift_ea16_cl |
| ; aam | ; aam + |
| ; aad | ; aad * |
| ; setalc | ; setalc * |
| ; xlat | ; xlat * |
| ; esc | ; esc * |
| ; loopnz | ; loopnz * |
| ; loopz | ; loopz * |
| ; loop | ; loop * |
| ; jcxz | ; jcxz * |
| ; in_al_d8 | ; in_al_d8 * |
| ; in_ax_d8 | ; in_ax_d8 * |
| ; out_d8_al | ; out_d8_al * |
| ; out_d8_ax | ; out_d8_ax * |
| ; call_near | ; call_near * |
| ; jmp_near | ; jmp_near * |
| ; jmp_far | ; jmp_far * |
| ; jmp_short | jmp_short JMPS #7 |
| ; in_al_dx | ; in_al_dx * |
| ; in_ax_dx | ; in_ax_dx * |
| ; out_dx_al | ; out_dx_al * |
| ; out_dx_ax | ; out_dx_ax * |
| ; lock | ; lock * |
| ; repne | ; repne ! |
| ; repe | ; repe ! |
| ; hlt | ; hlt + |
| ; cmc | ; cmc * |
| ; ope0xf6 | ; ope0xf6 |
| ; ope0xf7 | ; ope0xf7 |
| ; clc | ; clc * |
| ; stc | ; stc * |
| ; cli | ; cli * |
| ; sti | ; sti ! |
| ; cld | ; cld * |
| ; std | ; std * |
| ; ope0xfe | ; ope0xfe |
| ; ope0xff | ; ope0xff |
| ; ---- | ; ---- |
| reserved mov r6, #6 | |
| sub r8, r8, #(1 << 16) | |
| b i286a_localint | |
| daa CPUWORK #3 | |
| ldrb r0, [r9, #CPU_AL] | |
| bic r8, r8, #O_FLAG | |
| eor r2, r0, #&80 | |
| tst r8, #A_FLAG | |
| bne daalo2 | |
| and r1, r0, #&0f | |
| cmp r1, #10 | |
| bcc daahi | |
| orr r8, r8, #A_FLAG | |
| daalo2 add r0, r0, #6 | |
| orr r8, r8, r0 lsr #8 | |
| and r0, r0, #&ff | |
| daahi tst r8, #C_FLAG | |
| bne daahi2 | |
| cmp r0, #&a0 | |
| bcc daaflg | |
| orr r8, r8, #C_FLAG | |
| daahi2 add r0, r0, #&60 | |
| and r0, r0, #&ff | |
| daaflg strb r0, [r9, #CPU_AL] | |
| ldrb r1, [r10, r0] | |
| bic r8, r8, #(&ff - A_FLAG - C_FLAG) | |
| and r2, r0, r2 | |
| orr r8, r1, r8 | |
| tst r2, #&80 | |
| addne r8, r8, #O_FLAG | |
| mov pc, r11 | |
| das CPUWORK #3 | |
| ldrb r0, [r9, #CPU_AL] | |
| tst r8, #C_FLAG | |
| bne dashi2 | |
| cmp r0, #&9a | |
| bcc daslo | |
| orr r8, r8, #C_FLAG | |
| dashi2 sub r0, r0, #&60 | |
| and r0, r0, #&ff | |
| daslo tst r8, #A_FLAG | |
| bne daslo2 | |
| and r1, r0, #&0f | |
| cmp r1, #10 | |
| bcc dasflg | |
| orr r8, r8, #A_FLAG | |
| daslo2 sub r0, r0, #6 | |
| orr r8, r8, r0 lsr #31 | |
| and r0, r0, #&ff | |
| dasflg strb r0, [r9, #CPU_AL] | |
| ldrb r1, [r10, r0] | |
| bic r8, r8, #(&ff - A_FLAG - C_FLAG) | |
| orr r8, r1, r8 | |
| mov pc, r11 | |
| aaa CPUWORK #3 | |
| ldrh r0, [r9, #CPU_AX] | |
| tst r8, #A_FLAG | |
| bic r8, r8, #(A_FLAG + C_FLAG) | |
| bne aaa1 | |
| and r1, r0, #&f | |
| cmp r1, #10 | |
| bcc aaa2 | |
| aaa1 orr r8, r8, #(A_FLAG + C_FLAG) | |
| add r0, r0, #6 | |
| add r0, r0, #&100 | |
| aaa2 bic r0, r0, #&f0 | |
| strh r0, [r9, #CPU_AX] | |
| mov pc, r11 | |
| aas CPUWORK #3 | |
| ldrh r0, [r9, #CPU_AX] | |
| tst r8, #A_FLAG | |
| bic r8, r8, #(A_FLAG + C_FLAG) | |
| bne aas1 | |
| and r1, r0, #&f | |
| cmp r1, #10 | |
| movcc pc, r11 | |
| aas1 orr r8, r8, #(A_FLAG + C_FLAG) | |
| sub r0, r0, #6 | |
| sub r0, r0, #&100 | |
| strh r0, [r9, #CPU_AX] | |
| mov pc, r11 | |
| pusha CPUWORK #17 | |
| ldrh r4, [r9, #CPU_SP] | |
| ldr r5, [r9, #CPU_SS_BASE] | |
| mov r6, r4 | |
| mov r4, r4 lsl #16 | |
| ldrh r1, [r9, #CPU_AX] | |
| sub r4, r4, #(2 << 16) | |
| add r0, r5, r4 lsr #16 | |
| bl i286_memorywrite_w | |
| ldrh r1, [r9, #CPU_CX] | |
| sub r4, r4, #(2 << 16) | |
| add r0, r5, r4 lsr #16 | |
| bl i286_memorywrite_w | |
| ldrh r1, [r9, #CPU_DX] | |
| sub r4, r4, #(2 << 16) | |
| add r0, r5, r4 lsr #16 | |
| bl i286_memorywrite_w | |
| ldrh r1, [r9, #CPU_BX] | |
| sub r4, r4, #(2 << 16) | |
| add r0, r5, r4 lsr #16 | |
| bl i286_memorywrite_w | |
| mov r1, r6 | |
| sub r4, r4, #(2 << 16) | |
| add r0, r5, r4 lsr #16 | |
| bl i286_memorywrite_w | |
| ldrh r1, [r9, #CPU_BP] | |
| sub r4, r4, #(2 << 16) | |
| add r0, r5, r4 lsr #16 | |
| bl i286_memorywrite_w | |
| ldrh r1, [r9, #CPU_SI] | |
| sub r4, r4, #(2 << 16) | |
| add r0, r5, r4 lsr #16 | |
| bl i286_memorywrite_w | |
| ldrh r1, [r9, #CPU_DI] | |
| sub r4, r4, #(2 << 16) | |
| add r0, r5, r4 lsr #16 | |
| bl i286_memorywrite_w | |
| mov r0, r4 lsr #16 | |
| strh r0, [r9, #CPU_SP] | |
| mov pc, r11 | |
| popa CPUWORK #19 | |
| ldrh r4, [r9, #CPU_SP] | |
| ldr r5, [r9, #CPU_SS_BASE] | |
| add r0, r5, r4 | |
| mov r4, r4 lsl #16 | |
| bl i286_memoryread_w | |
| strh r0, [r9, #CPU_DI] | |
| add r4, r4, #(2 << 16) | |
| add r0, r5, r4 lsr #16 | |
| bl i286_memoryread_w | |
| strh r0, [r9, #CPU_SI] | |
| add r4, r4, #(2 << 16) | |
| add r0, r5, r4 lsr #16 | |
| bl i286_memoryread_w | |
| strh r0, [r9, #CPU_BP] | |
| add r4, r4, #(4 << 16) | |
| add r0, r5, r4 lsr #16 | |
| bl i286_memoryread_w | |
| strh r0, [r9, #CPU_BX] | |
| add r4, r4, #(2 << 16) | |
| add r0, r5, r4 lsr #16 | |
| bl i286_memoryread_w | |
| strh r0, [r9, #CPU_DX] | |
| add r4, r4, #(2 << 16) | |
| add r0, r5, r4 lsr #16 | |
| bl i286_memoryread_w | |
| strh r0, [r9, #CPU_CX] | |
| add r4, r4, #(2 << 16) | |
| add r0, r5, r4 lsr #16 | |
| bl i286_memoryread_w | |
| strh r0, [r9, #CPU_AX] | |
| add r4, r4, #(2 << 16) | |
| mov r0, r4 lsr #16 | |
| strh r0, [r9, #CPU_SP] | |
| mov pc, r11 | |
| bound GETPC8 | |
| cmp r0, #&c0 | |
| bcs bndreg | |
| CPUWORK #13 | |
| R16DST r0, r12 | |
| ldrh r5, [r12, #CPU_REG] | |
| bl i286a_a | |
| add r4, r0, #2 | |
| add r0, r0, r6 | |
| bl i286_memoryread_w | |
| cmp r5, r0 | |
| bcc bndout | |
| bic r4, r4, #(1 << 16) | |
| add r0, r4, r6 | |
| bl i286_memoryread_w | |
| cmp r5, r0 | |
| movls pc, r11 | |
| bndout mov r6, #5 | |
| b i286a_localint | |
| bndreg mov r6, #6 | |
| sub r8, r8, #(2 << 16) | |
| b i286a_localint | |
| push_d16 CPUWORK #3 | |
| GETPC16 | |
| ldrh r2, [r9, #CPU_SP] | |
| ldr r3, [r9, #CPU_SS_BASE] | |
| subs r2, r2, #2 | |
| addcc r2, r2, #&10000 | |
| mov r1, r0 | |
| strh r2, [r9, #CPU_SP] | |
| add r0, r2, r3 | |
| mov lr, r11 | |
| b i286_memorywrite_w | |
| imul_r_ea_d16 REG16EA r5, #21, #24 | |
| mov r4, r0, lsl #16 | |
| GETPC16 | |
| mov r0, r0, lsl #16 | |
| mov r4, r4, asr #16 | |
| mov r0, r0, asr #16 | |
| mul r1, r0, r4 | |
| add r12, r1, #&8000 | |
| strh r1, [r5, #CPU_REG] | |
| movs r12, r12 lsr #16 | |
| biceq r8, r8, #O_FLAG | |
| biceq r8, r8, #C_FLAG | |
| orrne r8, r8, #O_FLAG | |
| orrne r8, r8, #C_FLAG | |
| mov pc, r11 | |
| push_d8 CPUWORK #3 | |
| GETPC8 | |
| ldrh r2, [r9, #CPU_SP] | |
| ldr r3, [r9, #CPU_SS_BASE] | |
| subs r2, r2, #2 | |
| addcc r2, r2, #&10000 | |
| mov r0, r0 lsl #24 | |
| mov r1, r0 asr #24 | |
| strh r2, [r9, #CPU_SP] | |
| add r0, r2, r3 | |
| mov lr, r11 | |
| b i286_memorywrite_w | |
| imul_r_ea_d8 REG16EA r5, #21, #24 | |
| mov r4, r0, lsl #16 | |
| GETPC8 | |
| mov r0, r0, lsl #24 | |
| mov r4, r4, asr #16 | |
| mov r0, r0, asr #24 | |
| mul r1, r0, r4 | |
| add r12, r1, #&8000 | |
| strh r1, [r5, #CPU_REG] | |
| movs r12, r12 lsr #16 | |
| biceq r8, r8, #O_FLAG | |
| biceq r8, r8, #C_FLAG | |
| orrne r8, r8, #O_FLAG | |
| orrne r8, r8, #C_FLAG | |
| mov pc, r11 | |
| insb CPUWORK #5 | |
| ldrh r0, [r9, #CPU_DX] | |
| bl iocore_inp8 | |
| ldrh r2, [r9, #CPU_DI] | |
| ldr r3, [r9, #CPU_ES_BASE] | |
| mov r1, r0 | |
| add r0, r2, r3 | |
| tst r8, #D_FLAG | |
| addeq r2, r2, #1 | |
| subne r2, r2, #1 | |
| mov lr, r11 | |
| strh r2, [r9, #CPU_DI] | |
| b i286_memorywrite | |
| insw CPUWORK #5 | |
| ldrh r0, [r9, #CPU_DX] | |
| bl iocore_inp16 | |
| ldrh r2, [r9, #CPU_DI] | |
| ldr r3, [r9, #CPU_ES_BASE] | |
| mov r1, r0 | |
| add r0, r2, r3 | |
| tst r8, #D_FLAG | |
| addeq r2, r2, #2 | |
| subne r2, r2, #2 | |
| mov lr, r11 | |
| strh r2, [r9, #CPU_DI] | |
| b i286_memorywrite_w | |
| outsb CPUWORK #3 | |
| ldrh r1, [r9, #CPU_SI] | |
| ldr r2, [r9, #CPU_DS_FIX] | |
| add r0, r1, r2 | |
| tst r8, #D_FLAG | |
| addeq r1, r1, #1 | |
| subne r1, r1, #1 | |
| strh r1, [r9, #CPU_SI] | |
| bl i286_memoryread | |
| mov r1, r0 | |
| ldr r0, [r9, #CPU_DX] | |
| CPUSV | |
| bl iocore_out8 | |
| CPULD | |
| mov pc, r11 | |
| outsw CPUWORK #3 | |
| ldrh r1, [r9, #CPU_SI] | |
| ldr r2, [r9, #CPU_DS_FIX] | |
| add r0, r1, r2 | |
| tst r8, #D_FLAG | |
| addeq r1, r1, #2 | |
| subne r1, r1, #2 | |
| strh r1, [r9, #CPU_SI] | |
| bl i286_memoryread_w | |
| mov r1, r0 | |
| ldr r0, [r9, #CPU_DX] | |
| CPUSV | |
| bl iocore_out16 | |
| CPULD | |
| mov pc, r11 | |
| jle_short tst r8, #Z_FLAG | |
| bne jmps | |
| jl_short eor r0, r8, r8 lsr #4 | |
| tst r0, #S_FLAG | |
| bne jmps | |
| nojmps CPUWORK #2 | |
| add r8, r8, #(1 << 16) | |
| mov pc, r11 | |
| jnle_short tst r8, #Z_FLAG | |
| bne jmps | |
| jnl_short eor r0, r8, r8 lsr #4 | |
| tst r0, #S_FLAG | |
| bne nojmps | |
| jmps JMPS #7 | |
| xchg_ea_r8 EAREG8 r6 | xchg_ea_r8 EAREG8 r6 |
| cmp r0, #&c0 | cmp r0, #&c0 |
| bcc xchgear8_1 | bcc xchgear8_1 |
| Line 367 movear16_1 CPUWORK #5 | Line 712 movear16_1 CPUWORK #5 |
| b i286_memorywrite_w | b i286_memorywrite_w |
| mov_r8_ea REG8EA r5, #2, #5 | mov_r8_ea REG8EA r5, #2, #5 |
| ldrb r0, [r5, #CPU_REG] | strb r0, [r5, #CPU_REG] |
| mov pc, r11 | mov pc, r11 |
| mov_r16_ea REG16EA r5, #2, #5 | mov_r16_ea REG16EA r5, #2, #5 |
| strh r0, [r5, #CPU_REG] | |
| mov pc, r11 | |
| mov_ea_seg GETPC8 | |
| and r1, r0, #(3 << 3) | |
| add r1, r9, r1 lsr #2 | |
| ldrh r5, [r1, #CPU_REG] | |
| cmp r0, #&c0 | |
| bcc measegm | |
| CPUWORK #2 | |
| R16DST r0, r4 | |
| strh r5, [r4, #CPU_REG] | |
| mov pc, r11 | |
| measegm CPUWORK #3 | |
| bl i286a_ea | |
| mov r1, r5 | |
| mov lr, r11 | |
| b i286_memorywrite_w | |
| lea_r16_ea CPUWORK #3 | |
| GETPC8 | |
| cmp r0, #&c0 | |
| bcs leareg | |
| R8DST r0, r5 | |
| bl i286a_lea | |
| strh r0, [r5, #CPU_REG] | |
| mov pc, r11 | |
| leareg mov r6, #6 | |
| sub r8, r8, #(2 << 16) | |
| b i286a_localint | |
| pop_ea POP #5 | |
| mov r4, r0 | |
| GETPC8 | |
| cmp r0, #&c0 | |
| bcs popreg | |
| bl i286a_ea | |
| mov r1, r4 | |
| mov lr, r11 | |
| b i286_memorywrite_w | |
| popreg R16DST r0, r1 | |
| ldrh r4, [r1, #CPU_REG] | |
| mov pc, r11 | |
| cbw CPUWORK #2 | |
| ldrb r0, [r9, #CPU_AL] | |
| mov r1, r0 lsl #24 | |
| mov r0, r1 asr #31 | |
| strb r0, [r9, #CPU_AH] | |
| mov pc, r11 | |
| cwd CPUWORK #2 | |
| ldrb r0, [r9, #CPU_AH] | |
| mov r1, r0 lsl #24 | |
| mov r0, r1 asr #31 | |
| strh r0, [r9, #CPU_DX] | |
| mov pc, r11 | |
| call_far CPUWORK #13 | |
| ldrh r1, [r9, #CPU_CS] | |
| ldrh r4, [r9, #CPU_SP] | |
| ldr r5, [r9, #CPU_SS_BASE] | |
| mov r4, r4 lsl #16 | |
| sub r4, r4, #(2 << 16) | |
| add r0, r5, r4 lsr #16 | |
| bl i286_memorywrite_w | |
| add r12, r8, #(4 << 16) | |
| sub r4, r4, #(2 << 16) | |
| mov r1, r12 lsr #16 | |
| add r0, r5, r4 lsr #16 | |
| bl i286_memorywrite_w | |
| ldr r5, [r9, #CPU_CS_BASE] | |
| strh r4, [r9, #CPU_SP] | |
| add r0, r5, r8 lsr #16 | |
| bl i286_memoryread_w | |
| add r8, r8, #(2 << 16) | |
| mov r4, r0 lsl #16 | |
| add r0, r5, r8 lsr #16 | |
| bl i286_memoryread_w | |
| mov r1, r0 lsl #4 | |
| strh r0, [r9, #CPU_CS] | |
| str r1, [r9, #CPU_CS_BASE] | |
| mov r0, r8 lsl #16 | |
| orr r8, r4, r0 lsr #16 | |
| mov pc, r11 | |
| wait CPUWORK #2 | |
| mov pc, r11 | |
| pushf CPUWORK #3 | |
| ldrh r1, [r9, #CPU_SP] | |
| ldr r2, [r9, #CPU_SS_BASE] | |
| sub r0, r1, #2 | |
| mov r3, r0 lsl #16 | |
| strh r0, [r9, #CPU_SP] | |
| add r0, r2, r3 lsr #16 | |
| mov r1, r8 | |
| mov lr, r11 | |
| b i286_memorywrite_w | |
| sahf CPUWORK #2 | |
| ldrb r0, [r9, #CPU_AH] | |
| bic r8, r8, #&ff | |
| orr r8, r0, r8 | |
| mov pc, r11 | |
| lahf CPUWORK #2 | |
| strb r8, [r9, #CPU_AH] | |
| mov pc, r11 | |
| mov_al_m8 CPUWORK #5 | |
| ldr r5, [r9, #CPU_DS_FIX] | |
| GETPC16 | |
| add r0, r5, r0 | |
| bl i286_memoryread | |
| strb r0, [r9, #CPU_AL] | |
| mov pc, r11 | |
| mov_ax_m16 CPUWORK #5 | |
| ldr r5, [r9, #CPU_DS_FIX] | |
| GETPC16 | |
| add r0, r5, r0 | |
| bl i286_memoryread_w | |
| strh r0, [r9, #CPU_AX] | |
| mov pc, r11 | |
| mov_m8_al CPUWORK #5 | |
| ldr r5, [r9, #CPU_DS_FIX] | |
| GETPC16 | |
| ldrb r1, [r9, #CPU_AL] | |
| add r0, r5, r0 | |
| mov lr, r11 | |
| b i286_memorywrite | |
| mov_m16_ax CPUWORK #5 | |
| ldr r5, [r9, #CPU_DS_FIX] | |
| GETPC16 | |
| ldrh r1, [r9, #CPU_AX] | |
| add r0, r5, r0 | |
| mov lr, r11 | |
| b i286_memorywrite_w | |
| movsb CPUWORK #5 | |
| ldr r0, [r9, #CPU_DS_FIX] | |
| ldrh r5, [r9, #CPU_SI] | |
| add r0, r5, r0 | |
| bl i286_memoryread | |
| ldr r2, [r9, #CPU_ES_BASE] | |
| ldrh r3, [r9, #CPU_DI] | |
| and r12, r8, #D_FLAG | |
| mov r1, r0 | |
| mov r12, r12 lsr #(10 - 1) | |
| add r0, r2, r3 | |
| rsb r2, r12, #1 | |
| mov lr, r11 | |
| add r5, r2, r5 | |
| add r3, r2, r3 | |
| strh r5, [r9, #CPU_SI] | |
| strh r3, [r9, #CPU_DI] | |
| b i286_memorywrite | |
| movsw CPUWORK #5 | |
| ldr r0, [r9, #CPU_DS_FIX] | |
| ldrh r5, [r9, #CPU_SI] | |
| add r0, r5, r0 | |
| bl i286_memoryread_w | |
| ldr r2, [r9, #CPU_ES_BASE] | |
| ldrh r3, [r9, #CPU_DI] | |
| and r12, r8, #D_FLAG | |
| mov r1, r0 | |
| mov r12, r12 lsr #(10 - 2) | |
| add r0, r2, r3 | |
| rsb r2, r12, #2 | |
| mov lr, r11 | |
| add r5, r2, r5 | |
| add r3, r2, r3 | |
| strh r5, [r9, #CPU_SI] | |
| strh r3, [r9, #CPU_DI] | |
| b i286_memorywrite_w | |
| cmpsb CPUWORK #8 | |
| ldr r0, [r9, #CPU_DS_FIX] | |
| ldrh r5, [r9, #CPU_SI] | |
| add r0, r5, r0 | |
| bl i286_memoryread | |
| ldr r2, [r9, #CPU_ES_BASE] | |
| ldrh r3, [r9, #CPU_DI] | |
| mov r6, r0 | |
| and r12, r8, #D_FLAG | |
| mov r12, r12 lsr #(10 - 1) | |
| add r0, r2, r3 | |
| rsb r2, r12, #1 | |
| add r5, r2, r5 | |
| add r3, r2, r3 | |
| strh r5, [r9, #CPU_SI] | |
| strh r3, [r9, #CPU_DI] | |
| bl i286_memoryread | |
| SUB8 r6, r0 | |
| mov pc, r11 | |
| cmpsw CPUWORK #8 | |
| ldr r0, [r9, #CPU_DS_FIX] | |
| ldrh r5, [r9, #CPU_SI] | |
| add r0, r5, r0 | |
| bl i286_memoryread_w | |
| ldr r2, [r9, #CPU_ES_BASE] | |
| ldrh r3, [r9, #CPU_DI] | |
| mov r6, r0 | |
| and r12, r8, #D_FLAG | |
| mov r12, r12 lsr #(10 - 2) | |
| add r0, r2, r3 | |
| rsb r2, r12, #2 | |
| add r5, r2, r5 | |
| add r3, r2, r3 | |
| strh r5, [r9, #CPU_SI] | |
| strh r3, [r9, #CPU_DI] | |
| bl i286_memoryread_w | |
| SUB16 r6, r0 | |
| mov pc, r11 | |
| stosb CPUWORK #3 | |
| ldr r0, [r9, #CPU_ES_BASE] | |
| ldrb r1, [r9, #CPU_AL] | |
| ldrh r2, [r9, #CPU_DI] | |
| add r0, r2, r0 | |
| tst r8, #D_FLAG | |
| addeq r2, r2, #1 | |
| subne r2, r2, #1 | |
| strh r2, [r9, #CPU_DI] | |
| mov lr, r11 | |
| b i286_memorywrite | |
| stosw CPUWORK #3 | |
| ldr r0, [r9, #CPU_ES_BASE] | |
| ldrh r1, [r9, #CPU_AX] | |
| ldrh r2, [r9, #CPU_DI] | |
| add r0, r2, r0 | |
| tst r8, #D_FLAG | |
| addeq r2, r2, #2 | |
| subne r2, r2, #2 | |
| strh r2, [r9, #CPU_DI] | |
| mov lr, r11 | |
| b i286_memorywrite_w | |
| lodsb CPUWORK #5 | |
| ldr r0, [r9, #CPU_DS_FIX] | |
| ldrh r5, [r9, #CPU_SI] | |
| add r0, r5, r0 | |
| bl i286_memoryread | |
| tst r8, #D_FLAG | |
| addeq r5, r5, #1 | |
| subne r5, r5, #1 | |
| strb r0, [r9, #CPU_AL] | |
| strh r5, [r9, #CPU_SI] | |
| mov pc, r11 | |
| lodsw CPUWORK #5 | |
| ldr r0, [r9, #CPU_DS_FIX] | |
| ldrh r5, [r9, #CPU_SI] | |
| add r0, r5, r0 | |
| bl i286_memoryread_w | |
| tst r8, #D_FLAG | |
| addeq r5, r5, #2 | |
| subne r5, r5, #2 | |
| strh r0, [r9, #CPU_AX] | |
| strh r5, [r9, #CPU_SI] | |
| mov pc, r11 | |
| scasb CPUWORK #7 | |
| ldr r0, [r9, #CPU_DS_FIX] | |
| ldrh r5, [r9, #CPU_SI] | |
| add r0, r5, r0 | |
| bl i286_memoryread | |
| tst r8, #D_FLAG | |
| addeq r5, r5, #1 | |
| subne r5, r5, #1 | |
| strh r5, [r9, #CPU_SI] | |
| ldrb r5, [r9, #CPU_AL] | |
| SUB8 r5, r0 | |
| mov pc, r11 | |
| scasw CPUWORK #7 | |
| ldr r0, [r9, #CPU_DS_FIX] | |
| ldrh r5, [r9, #CPU_SI] | |
| add r0, r5, r0 | |
| bl i286_memoryread_w | |
| tst r8, #D_FLAG | |
| addeq r5, r5, #2 | |
| subne r5, r5, #2 | |
| strh r5, [r9, #CPU_SI] | |
| ldrh r5, [r9, #CPU_AX] | |
| SUB16 r5, r0 | |
| mov pc, r11 | |
| ret_near_d16 CPUWORK #11 | |
| GETPC16 | |
| ldrh r1, [r9, #CPU_SP] | |
| ldr r2, [r9, #CPU_SS_BASE] | |
| add r3, r0, r1 | |
| add r0, r1, r2 | |
| add r3, r3, #2 | |
| strh r3, [r9, #CPU_SP] | |
| bl i286_memoryread_w | |
| mov r8, r8 lsl #16 | |
| mov r8, r8 lsr #16 | |
| orr r8, r8, r0 lsl #16 | |
| mov pc, r11 | |
| ret_near CPUWORK #11 | |
| ldrh r4, [r9, #CPU_SP] | |
| ldr r0, [r9, #CPU_SS_BASE] | |
| add r0, r4, r0 | |
| add r4, r4, #2 | |
| strh r4, [r9, #CPU_SP] | |
| bl i286_memoryread_w | |
| mov r8, r8 lsl #16 | |
| mov r8, r8 lsr #16 | |
| orr r8, r8, r0 lsl #16 | |
| mov pc, r11 | |
| les_r16_ea GETPC8 | |
| cmp r0, #&c0 | |
| bcs lr16_r | |
| CPUWORK #3 | |
| R16DST r0, r5 | |
| bl i286a_a | |
| add r4, r0, #2 | |
| add r0, r0, r6 | |
| bic r4, r4, #(1 << 16) | |
| bl i286_memoryread_w | |
| ldrh r0, [r5, #CPU_REG] | ldrh r0, [r5, #CPU_REG] |
| add r0, r4, r6 | |
| bl i286_memoryread_w | |
| mov r1, r0 lsl #4 | |
| ldr r0, [r5, #CPU_ES] | |
| ldr r1, [r5, #CPU_ES_BASE] | |
| mov pc, r11 | mov pc, r11 |
| lr16_r mov r6, #6 | |
| sub r8, r8, #(2 << 16) | |
| b i286a_localint | |
| lds_r16_ea GETPC8 | |
| cmp r0, #&c0 | |
| bcs lr16_r | |
| CPUWORK #3 | |
| R16DST r0, r5 | |
| bl i286a_a | |
| add r4, r0, #2 | |
| add r0, r0, r6 | |
| bic r4, r4, #(1 << 16) | |
| bl i286_memoryread_w | |
| ldrh r0, [r5, #CPU_REG] | |
| add r0, r4, r6 | |
| bl i286_memoryread_w | |
| mov r1, r0 lsl #4 | |
| ldr r0, [r5, #CPU_ES] | |
| ldr r1, [r5, #CPU_DS_BASE] | |
| ldr r1, [r5, #CPU_DS_FIX] | |
| mov pc, r11 | |
| mov_ea8_d8 GETPC8 | |
| cmp r0, #&c0 | |
| bcs med8_r | |
| CPUWORK #3 | |
| bl i286a_ea | |
| mov r4, r0 | |
| GETPC8 | |
| mov r1, r0 | |
| mov r0, r4 | |
| mov lr, r11 | |
| b i286_memorywrite | |
| med8_r CPUWORK #2 | |
| R8DST r0, r4 | |
| GETPC8 | |
| ldrb r0, [r4, #CPU_REG] | |
| mov pc, r11 | |
| mov_ea16_d16 GETPC8 | |
| cmp r0, #&c0 | |
| bcs med16_r | |
| CPUWORK #3 | |
| bl i286a_ea | |
| mov r4, r0 | |
| GETPC16 | |
| mov r1, r0 | |
| mov r0, r4 | |
| mov lr, r11 | |
| b i286_memorywrite_w | |
| med16_r CPUWORK #2 | |
| R16DST r0, r4 | |
| GETPC16 | |
| ldrh r0, [r4, #CPU_REG] | |
| mov pc, r11 | |
| enter ldrh r4, [r9, #CPU_SP] | |
| ldrh r5, [r9, #CPU_BP] | |
| ldr r0, [r9, #CPU_SS_BASE] | |
| subs r4, r4, #2 | |
| addcc r4, r4, #&10000 | |
| mov r1, r5 | |
| add r0, r4, r0 | |
| bl i286_memorywrite_w | |
| GETPC16 | |
| mov r6, r0 | |
| GETPC8 | |
| ands r0, r0, #&1f | |
| bne enterlv1 | |
| CPUWORK #11 | |
| sub r0, r4, r6 | |
| strh r4, [r9, #CPU_BP] | |
| strh r0, [r9, #CPU_SP] | |
| mov pc, r11 | |
| enterlv1 cmp r0, #1 | |
| bne enterlv2 | |
| CPUWORK #15 | |
| strh r4, [r9, #CPU_BP] | |
| ldr r0, [r9, #CPU_SS_BASE] | |
| mov r1, r4 | |
| subs r4, r4, #2 | |
| addcc r4, r4, #&10000 | |
| add r0, r4, r0 | |
| sub r2, r4, r6 | |
| mov lr, r11 | |
| strh r2, [r9, #CPU_SP] | |
| bl i286_memorywrite_w | |
| enterlv2 mov r1, r0, lsl #2 | |
| add r1, r1, #12 | |
| CPUWORK r1 | |
| strh r4, [r9, #CPU_BP] | |
| stmdb sp!, {r11} | |
| mov r4, r4 lsl #16 | |
| sub r2, r4, r0 lsl #17 | |
| sub r2, r4, #(2 << 16) | |
| mov r2, r2 lsr #16 | |
| sub r3, r2, r6 | |
| strh r3, [r9, #CPU_SP] | |
| mov r6, r0 | |
| ldr r11, [r9, #CPU_SS_BASE] | |
| add r0, r11, r2 | |
| mov r1, r5 | |
| mov r5, r5 lsl #16 | |
| bl i286_memorywrite_w | |
| entlv2lp sub r5, r5, #(2 << 16) | |
| sub r4, r4, #(2 << 16) | |
| add r0, r11, r5 lsr #16 | |
| bl i286_memoryread_w | |
| mov r1, r0 | |
| add r0, r11, r4 | |
| bl i286_memorywrite_w | |
| subs r6, r6, #1 | |
| bne entlv2lp | |
| ldmia sp!, {pc} | |
| leave CPUWORK #5 | |
| ldrh r4, [r9, #CPU_BP] | |
| ldr r0, [r9, #CPU_SS_BASE] | |
| add r0, r4, r0 | |
| bl i286_memoryread_w | |
| add r4, r4, #2 | |
| strh r0, [r9, #CPU_BP] | |
| strh r4, [r9, #CPU_SP] | |
| mov pc, r11 | |
| ret_far_d16 CPUWORK #15 | |
| GETPC16 | |
| mov r6, r0 | |
| ldrh r4, [r9, #CPU_SP] | |
| ldr r5, [r9, #CPU_SS_BASE] | |
| add r0, r4, r5 | |
| add r4, r4, #2 | |
| bl i286_memoryread_w | |
| mov r8, r8 lsl #16 | |
| mov r8, r8 lsr #16 | |
| orr r8, r8, r0 lsl #16 | |
| bic r4, r4, #(1 << 16) | |
| add r0, r4, r5 | |
| add r4, r4, #2 | |
| bl i286_memoryread_w | |
| add r4, r6, r4 | |
| mov r1, r0 lsl #4 | |
| strh r4, [r9, #CPU_SP] | |
| strh r0, [r9, #CPU_CS] | |
| str r1, [r9, #CPU_CS_BASE] | |
| mov pc, r11 | |
| ret_far CPUWORK #15 | |
| ldrh r4, [r9, #CPU_SP] | |
| ldr r5, [r9, #CPU_SS_BASE] | |
| add r0, r4, r5 | |
| add r4, r4, #2 | |
| bl i286_memoryread_w | |
| mov r8, r8 lsl #16 | |
| mov r8, r8 lsr #16 | |
| orr r8, r8, r0 lsl #16 | |
| bic r4, r4, #(1 << 16) | |
| add r0, r4, r5 | |
| add r4, r4, #2 | |
| bl i286_memoryread_w | |
| mov r1, r0 lsl #4 | |
| strh r4, [r9, #CPU_SP] | |
| strh r0, [r9, #CPU_CS] | |
| str r1, [r9, #CPU_CS_BASE] | |
| mov pc, r11 | |
| int_03 CPUWORK #3 | |
| mov r6, #3 | |
| b i286a_localint | |
| int_d8 CPUWORK #3 | |
| GETPC8 | |
| mov r6, r0 | |
| b i286a_localint | |
| into CPUWORK #4 | |
| tst r8, #O_FLAG | |
| moveq pc, r11 | |
| mov r6, #4 | |
| b i286a_localint | |
| aam CPUWORK #16 | |
| GETPC8 | |
| movs r0, r0, lsl #7 | |
| beq aamzero | |
| ldrb r1, [r9, #CPU_AL] | |
| mov r2, #&80 | |
| mov r3, #0 | |
| aamlp cmp r1, r0 | |
| subcs r1, r1, r0 | |
| orrcs r3, r2, r3 | |
| movs r2, r2 lsr #1 | |
| bne aamlp | |
| bic r8, r8, #(S_FLAG + Z_FLAG + P_FLAG) | |
| ldrb r2, [r10, r1] | |
| and r2, r2, #P_FLAG | |
| orr r8, r2, r8 | |
| orr r1, r1, r3 lsl #8 | |
| movs r2, r1 lsl #16 | |
| orreq r8, r8, #Z_FLAG | |
| orrmi r8, r8, #S_FLAG | |
| strh r1, [r9, #CPU_AX] | |
| mov pc, r11 | |
| aamzero sub r8, r8, #(2 << 16) | |
| mov r6, #0 | |
| b i286a_localint | |
| aad CPUWORK #14 | |
| GETPC8 | |
| ldrh r1, [r9, #CPU_AX] | |
| bic r8, r8, #(S_FLAG + Z_FLAG + P_FLAG) | |
| mov r2, r1 lsr #8 | |
| mla r3, r2, r0, r1 | |
| and r1, r3, #&ff | |
| ldrb r2, [r10, r1] | |
| strh r1, [r9, #CPU_AX] | |
| orr r8, r2, r8 | |
| mov pc, r11 | |
| setalc CPUWORK #2 | |
| mov r0, r8 lsr #31 | |
| mov r0, r0 asr #31 | |
| strb r0, [r9, #CPU_AL] | |
| mov pc, r11 | |
| xlat CPUWORK #5 | |
| ldrb r0, [r9, #CPU_AL] | |
| ldrh r1, [r9, #CPU_BX] | |
| ldr r2, [r9, #CPU_DS_FIX] | |
| add r0, r1, r0 | |
| bic r0, r0, #(1 << 16) | |
| add r0, r2, r0 | |
| bl i286_memoryread | |
| strb r0, [r9, #CPU_AL] | |
| mov pc, r11 | |
| esc CPUWORK #2 | |
| GETPC8 | |
| cmp r0, #&c0 | |
| movcs pc, r11 | |
| mov lr, r11 | |
| b i286a_ea | |
| loopnz ldrh r0, [r9, #CPU_CX] | |
| subs r0, r0, #1 | |
| strh r0, [r9, #CPU_CX] | |
| beq lpnznoj | |
| tst r8, #Z_FLAG | |
| bne lpnznoj | |
| JMPS #8 | |
| lpnznoj CPUWORK #4 | |
| add r8, r8, #(1 << 16) | |
| mov pc, r11 | |
| loopz ldrh r0, [r9, #CPU_CX] | |
| subs r0, r0, #1 | |
| strh r0, [r9, #CPU_CX] | |
| beq lpznoj | |
| tst r8, #Z_FLAG | |
| beq lpznoj | |
| JMPS #8 | |
| lpznoj CPUWORK #4 | |
| add r8, r8, #(1 << 16) | |
| mov pc, r11 | |
| loop ldrh r0, [r9, #CPU_CX] | |
| subs r0, r0, #1 | |
| strh r0, [r9, #CPU_CX] | |
| beq lpnoj | |
| JMPS #8 | |
| lpnoj CPUWORK #4 | |
| add r8, r8, #(1 << 16) | |
| mov pc, r11 | |
| jcxz ldrh r0, [r9, #CPU_CX] | |
| cmp r0, #0 | |
| beq jcxzj | |
| CPUWORK #4 | |
| add r8, r8, #(1 << 16) | |
| mov pc, r11 | |
| jcxzj JMPS #8 | |
| in_al_d8 CPUWORK #5 | |
| GETPC8 | |
| bl iocore_inp8 | |
| strb r0, [r9, #CPU_AL] | |
| mov pc, r11 | |
| in_ax_d8 CPUWORK #5 | |
| GETPC8 | |
| bl iocore_inp16 | |
| strh r0, [r9, #CPU_AX] | |
| mov pc, r11 | |
| out_d8_al CPUWORK #3 | |
| GETPC8 | |
| ldrb r1, [r9, #CPU_AL] | |
| CPUSV | |
| bl iocore_out8 | |
| CPULD | |
| mov pc, r11 | |
| out_d8_ax CPUWORK #3 | |
| GETPC8 | |
| ldrh r1, [r9, #CPU_AX] | |
| CPUSV | |
| bl iocore_out16 | |
| CPULD | |
| mov pc, r11 | |
| call_near CPUWORK #7 | |
| GETPC16 | |
| ldrh r2, [r9, #CPU_SP] | |
| ldr r3, [r9, #CPU_SS_BASE] | |
| sub r1, r2, #2 | |
| mov r2, r1 lsl #16 | |
| strh r1, [r9, #CPU_SP] | |
| mov r1, r8 lsr #16 | |
| add r8, r8, r0 lsl #16 | |
| add r0, r3, r2 lsr #16 | |
| mov lr, r11 | |
| b i286_memorywrite_w | |
| jmp_near CPUWORK #7 | |
| GETPC16 | |
| add r8, r8, r0 lsl #16 | |
| mov pc, r11 | |
| jmp_far CPUWORK #11 | |
| ldr r4, [r9, #CPU_CS_BASE] | |
| add r0, r4, r8 lsr #16 | |
| bl i286_memoryread_w | |
| add r8, r8, #(2 << 16) | |
| mov r1, r0, lsl #16 | |
| add r0, r4, r8 lsr #16 | |
| mov r8, r8, lsl #16 | |
| orr r8, r0, r8 lsr #16 | |
| bl i286_memoryread_w | |
| mov r1, r0 lsl #4 | |
| strh r0, [r9, #CPU_CS] | |
| str r1, [r9, #CPU_CS_BASE] | |
| mov pc, r11 | |
| in_al_dx CPUWORK #5 | |
| ldrh r0, [r9, #CPU_DX] | |
| bl iocore_inp8 | |
| strb r0, [r9, #CPU_AL] | |
| mov pc, r11 | |
| in_ax_dx CPUWORK #5 | |
| ldrh r0, [r9, #CPU_DX] | |
| bl iocore_inp16 | |
| strh r0, [r9, #CPU_AX] | |
| mov pc, r11 | |
| out_dx_al CPUWORK #3 | |
| ldrb r1, [r9, #CPU_AL] | |
| ldrh r0, [r9, #CPU_DX] | |
| CPUSV | |
| bl iocore_out8 | |
| CPULD | |
| mov pc, r11 | |
| out_dx_ax CPUWORK #3 | |
| ldrh r1, [r9, #CPU_AX] | |
| ldrh r0, [r9, #CPU_DX] | |
| CPUSV | |
| bl iocore_out16 | |
| CPULD | |
| mov pc, r11 | |
| lock CPUWORK #2 | |
| mov pc, r11 | |
| hlt CREMSET #-1 | |
| sub r8, r8, #(1 << 16) | |
| mov pc, r11 | |
| cmc CPUWORK #2 | |
| eor r8, r8, #C_FLAG | |
| mov pc, r11 | |
| clc CPUWORK #2 | |
| bic r8, r8, #C_FLAG | |
| mov pc, r11 | |
| stc CPUWORK #2 | |
| orr r8, r8, #C_FLAG | |
| mov pc, r11 | |
| cli CPUWORK #3 | |
| mov r0, #0 | |
| bic r8, r8, #I_FLAG | |
| strb r0, [r9, #CPU_TRAP] | |
| mov pc, r11 | |
| cld CPUWORK #2 | |
| bic r8, r8, #D_FLAG | |
| mov pc, r11 | |
| std CPUWORK #2 | |
| orr r8, r8, #D_FLAG | |
| mov pc, r11 | |
| Line 400 i286a_step stmdb sp!, {r4 - r11, lr} | Line 1489 i286a_step stmdb sp!, {r4 - r11, lr} |
| ias_r9 dcd i286core - CPU_REG | ias_r9 dcd i286core - CPU_REG |
| ias_r10 dcd _szpcflag8 | ias_r10 dcd _szpcflag8 |
| optbl1 dcd add_ea_r8 | optbl1 dcd add_ea_r8 ; 00 |
| dcd add_ea_r16 | dcd add_ea_r16 |
| dcd add_r8_ea | dcd add_r8_ea |
| dcd add_r16_ea | dcd add_r16_ea |
| Line 417 optbl1 dcd add_ea_r8 | Line 1506 optbl1 dcd add_ea_r8 |
| dcd push_cs | dcd push_cs |
| dcd 0 ; op_0f/pop_cs | dcd 0 ; op_0f/pop_cs |
| dcd adc_ea_r8 | dcd adc_ea_r8 ; 10 |
| dcd adc_ea_r16 | dcd adc_ea_r16 |
| dcd adc_r8_ea | dcd adc_r8_ea |
| dcd adc_r16_ea | dcd adc_r16_ea |
| Line 434 optbl1 dcd add_ea_r8 | Line 1523 optbl1 dcd add_ea_r8 |
| dcd push_ds | dcd push_ds |
| dcd pop_ds | dcd pop_ds |
| dcd and_ea_r8 | dcd and_ea_r8 ; 20 |
| dcd and_ea_r16 | dcd and_ea_r16 |
| dcd and_r8_ea | dcd and_r8_ea |
| dcd and_r16_ea | dcd and_r16_ea |
| dcd and_al_d8 | dcd and_al_d8 |
| dcd and_ax_d16 | dcd and_ax_d16 |
| dcd 0 ; segprefix_es | dcd 0 ; segprefix_es |
| dcd 0 ; daa | dcd 0 ; daa |
| dcd sub_ea_r8 | dcd sub_ea_r8 |
| dcd sub_ea_r16 | dcd sub_ea_r16 |
| dcd sub_r8_ea | dcd sub_r8_ea |
| dcd sub_r16_ea | dcd sub_r16_ea |
| dcd sub_al_d8 | dcd sub_al_d8 |
| dcd sub_ax_d16 | dcd sub_ax_d16 |
| dcd 0 ; segprefix_cs | dcd 0 ; segprefix_cs |
| dcd 0 ; das | dcd 0 ; das |
| dcd xor_ea_r8 | dcd xor_ea_r8 ; 30 |
| dcd xor_ea_r16 | dcd xor_ea_r16 |
| dcd xor_r8_ea | dcd xor_r8_ea |
| dcd xor_r16_ea | dcd xor_r16_ea |
| dcd xor_al_d8 | dcd xor_al_d8 |
| dcd xor_ax_d16 | dcd xor_ax_d16 |
| dcd 0 ; segprefix_ss | dcd 0 ; segprefix_ss |
| dcd 0 ; aaa | dcd 0 ; aaa |
| dcd cmp_ea_r8 | dcd cmp_ea_r8 |
| dcd cmp_ea_r16 | dcd cmp_ea_r16 |
| dcd cmp_r8_ea | dcd cmp_r8_ea |
| dcd cmp_r16_ea | dcd cmp_r16_ea |
| dcd cmp_al_d8 | dcd cmp_al_d8 |
| dcd cmp_ax_d16 | dcd cmp_ax_d16 |
| dcd 0 ; segprefix_ds | dcd 0 ; segprefix_ds |
| dcd 0 ; aas | dcd 0 ; aas |
| dcd inc_ax | dcd inc_ax ; 40 |
| dcd inc_cx | dcd inc_cx |
| dcd inc_dx | dcd inc_dx |
| dcd inc_bx | dcd inc_bx |
| Line 485 optbl1 dcd add_ea_r8 | Line 1574 optbl1 dcd add_ea_r8 |
| dcd dec_si | dcd dec_si |
| dcd dec_di | dcd dec_di |
| dcd push_ax | dcd push_ax ; 50 |
| dcd push_cx | dcd push_cx |
| dcd push_dx | dcd push_dx |
| dcd push_bx | dcd push_bx |
| Line 502 optbl1 dcd add_ea_r8 | Line 1591 optbl1 dcd add_ea_r8 |
| dcd pop_si | dcd pop_si |
| dcd pop_di | dcd pop_di |
| dcd 0 ; pusha | dcd pusha ; 60 |
| dcd 0 ; popa | dcd popa |
| dcd 0 ; bound | dcd 0 ; bound |
| dcd 0 ; arpl | dcd 0 ; arpl(reserved) |
| dcd 0 ; push_d16 | dcd 0 ; reserved |
| dcd 0 ; imul_reg_ea_d16 | dcd 0 ; reserved |
| dcd 0 ; push_d8 | dcd 0 ; reserved |
| dcd 0 ; imul_reg_ea_d8 | dcd 0 ; reserved |
| dcd 0 ; insb | dcd 0 ; push_d16 |
| dcd 0 ; insw | dcd 0 ; imul_reg_ea_d16 |
| dcd 0 ; outsb | dcd 0 ; push_d8 |
| dcd 0 ; outsw | dcd 0 ; imul_reg_ea_d8 |
| dcd 0 ; insb | |
| dcd 0 ; jo_short | dcd 0 ; insw |
| dcd 0 ; jno_short | dcd outsb |
| dcd 0 ; jc_short | dcd outsw |
| dcd 0 ; jnc_short | |
| dcd 0 ; jz_short | dcd jo_short ; 70 |
| dcd 0 ; jnz_short | dcd jno_short |
| dcd 0 ; jna_short | dcd jc_short |
| dcd 0 ; ja_short | dcd jnc_short |
| dcd 0 ; js_short | dcd jz_short |
| dcd 0 ; jns_short | dcd jnz_short |
| dcd 0 ; jp_short | dcd jna_short |
| dcd 0 ; jnp_short | dcd ja_short |
| dcd 0 ; jl_short | dcd js_short |
| dcd 0 ; jnl_short | dcd jns_short |
| dcd 0 ; jle_short | dcd jp_short |
| dcd 0 ; jnle_short | dcd jnp_short |
| dcd 0 ; jl_short | |
| dcd 0 ; calc_ea8_i8 | dcd 0 ; jnl_short |
| dcd 0 ; calc_ea16_i16 | dcd 0 ; jle_short |
| dcd 0 ; calc_ea16_i8 | dcd 0 ; jnle_short |
| dcd i286aop80 ; 80 | |
| dcd i286aop81 | |
| dcd i286aop80 | |
| dcd i286aop83 | |
| dcd test_ea_r8 | dcd test_ea_r8 |
| dcd test_ea_r16 | dcd test_ea_r16 |
| dcd xchg_ea_r8 | dcd xchg_ea_r8 |
| Line 543 optbl1 dcd add_ea_r8 | Line 1637 optbl1 dcd add_ea_r8 |
| dcd mov_ea_r16 | dcd mov_ea_r16 |
| dcd mov_r8_ea | dcd mov_r8_ea |
| dcd mov_r16_ea | dcd mov_r16_ea |
| dcd 0 ; mov_ea_seg | dcd 0 ; mov_ea_seg |
| dcd 0 ; lea_r16_ea | dcd 0 ; lea_r16_ea |
| dcd 0 ; mov_seg_ea | dcd 0 ; mov_seg_ea |
| dcd 0 ; pop_ea | dcd 0 ; pop_ea |
| dcd 0 ; nop | dcd 0 ; nop ; 90 |
| dcd xchg_ax_cx | dcd xchg_ax_cx |
| dcd xchg_ax_dx | dcd xchg_ax_dx |
| dcd xchg_ax_bx | dcd xchg_ax_bx |
| Line 556 optbl1 dcd add_ea_r8 | Line 1650 optbl1 dcd add_ea_r8 |
| dcd xchg_ax_bp | dcd xchg_ax_bp |
| dcd xchg_ax_si | dcd xchg_ax_si |
| dcd xchg_ax_di | dcd xchg_ax_di |
| dcd 0 ; cbw | dcd cbw |
| dcd 0 ; cwd | dcd cwd |
| dcd 0 ; call_far | dcd 0 ; call_far |
| dcd 0 ; wait | dcd wait |
| dcd 0 ; pushf | dcd 0 ; pushf |
| dcd 0 ; popf | dcd 0 ; popf |
| dcd 0 ; sahf | dcd sahf |
| dcd 0 ; lahf | dcd lahf |
| dcd 0 ; mov_al_m8 | dcd mov_al_m8 ; a0 |
| dcd 0 ; mov_ax_m16 | dcd mov_ax_m16 |
| dcd 0 ; mov_m8_al | dcd mov_m8_al |
| dcd 0 ; mov_m16_ax | dcd mov_m16_ax |
| dcd 0 ; movsb | dcd movsb |
| dcd 0 ; movsw | dcd movsw |
| dcd 0 ; cmpsb | dcd 0 ; cmpsb |
| dcd 0 ; cmpsw | dcd 0 ; cmpsw |
| dcd test_al_d8 | dcd test_al_d8 |
| dcd test_ax_d16 | dcd test_ax_d16 |
| dcd 0 ; stosb | dcd stosb |
| dcd 0 ; stosw | dcd stosw |
| dcd 0 ; lodsb | dcd lodsb |
| dcd 0 ; lodsw | dcd lodsw |
| dcd 0 ; scasb | dcd 0 ; scasb |
| dcd 0 ; scasw | dcd 0 ; scasw |
| dcd mov_al_imm | dcd mov_al_imm ; b0 |
| dcd mov_cl_imm | dcd mov_cl_imm |
| dcd mov_dl_imm | dcd mov_dl_imm |
| dcd mov_bl_imm | dcd mov_bl_imm |
| Line 599 optbl1 dcd add_ea_r8 | Line 1693 optbl1 dcd add_ea_r8 |
| dcd mov_si_imm | dcd mov_si_imm |
| dcd mov_di_imm | dcd mov_di_imm |
| dcd 0 ; shift_ea8_d8 | dcd i286asft8_d8 ; c0 |
| dcd 0 ; shift_ea16_d8 | dcd i286asft16_d8 |
| dcd 0 ; ret_near_d16 | dcd 0 ; ret_near_d16 |
| dcd 0 ; ret_near | dcd 0 ; ret_near |
| dcd 0 ; les_r16_ea | dcd 0 ; les_r16_ea |
| dcd 0 ; lds_r16_ea | dcd 0 ; lds_r16_ea |
| dcd 0 ; mov_ea8_d8 | dcd 0 ; mov_ea8_d8 |
| dcd 0 ; mov_ea16_d16 | dcd 0 ; mov_ea16_d16 |
| dcd 0 ; enter | dcd 0 ; enter |
| dcd 0 ; leave | dcd 0 ; leave |
| dcd 0 ; ret_far_d16 | dcd 0 ; ret_far_d16 |
| dcd 0 ; ret_far | dcd 0 ; ret_far |
| dcd 0 ; int_03 | dcd int_03 |
| dcd 0 ; int_d8 | dcd int_d8 |
| dcd 0 ; into | dcd into |
| dcd 0 ; iret | dcd 0 ; iret |
| dcd 0 ; shift_ea8_1 | dcd i286asft8_1 ; d0 |
| dcd 0 ; shift_ea16_1 | dcd i286asft16_1 |
| dcd 0 ; shift_ea8_cl | dcd i286asft8_cl |
| dcd 0 ; shift_ea16_cl | dcd i286asft16_cl |
| dcd 0 ; aam | dcd 0 ; aam |
| dcd 0 ; aad | dcd 0 ; aad |
| dcd 0 ; setalc | dcd 0 ; setalc |
| dcd 0 ; xlat | dcd 0 ; xlat |
| dcd 0 ; esc0 | dcd esc |
| dcd 0 ; esc1 | dcd esc |
| dcd 0 ; esc2 | dcd esc |
| dcd 0 ; esc3 | dcd esc |
| dcd 0 ; esc4 | dcd esc |
| dcd 0 ; esc5 | dcd esc |
| dcd 0 ; esc6 | dcd esc |
| dcd 0 ; esc7 | dcd esc |
| dcd 0 ; loopnz | dcd loopnz ; e0 |
| dcd 0 ; loopz | dcd loopz |
| dcd 0 ; loop | dcd loop |
| dcd 0 ; jcxz | dcd jcxz |
| dcd 0 ; in_al_d8 | dcd 0 ; in_al_d8 |
| dcd 0 ; in_ax_d8 | dcd 0 ; in_ax_d8 |
| dcd 0 ; out_d8_al | dcd out_d8_al |
| dcd 0 ; out_d8_ax | dcd out_d8_ax |
| dcd 0 ; call_near | dcd 0 ; call_near |
| dcd 0 ; jmp_near | dcd 0 ; jmp_near |
| dcd 0 ; jmp_far | dcd 0 ; jmp_far |
| dcd 0 ; jmp_short | dcd jmp_short |
| dcd 0 ; in_al_dx | dcd 0 ; in_al_dx |
| dcd 0 ; in_ax_dx | dcd 0 ; in_ax_dx |
| dcd 0 ; out_dx_al | dcd out_dx_al |
| dcd 0 ; out_dx_ax | dcd out_dx_ax |
| dcd 0 ; lock | dcd lock ; f0 |
| dcd 0 ; lock | dcd lock |
| dcd 0 ; repne | dcd 0 ; repne |
| dcd 0 ; repe | dcd 0 ; repe |
| dcd 0 ; hlt | dcd hlt |
| dcd 0 ; cmc | dcd cmc |
| dcd 0 ; ope0xf6 | dcd 0 ; ope0xf6 |
| dcd 0 ; ope0xf7 | dcd 0 ; ope0xf7 |
| dcd 0 ; clc | dcd clc |
| dcd 0 ; stc | dcd stc |
| dcd 0 ; cli | dcd cli |
| dcd 0 ; sti | dcd 0 ; sti |
| dcd 0 ; cld | dcd cld |
| dcd 0 ; std | dcd std |
| dcd 0 ; ope0xfe | dcd i286aopfe |
| dcd 0 ; ope0xff | dcd 0 ; ope0xff |
| END | END |