|
|
| version 1.16, 2003/12/22 07:41:15 | version 1.27, 2005/03/16 03:53:45 |
|---|---|
| Line 9 | Line 9 |
| IMPORT iflags | IMPORT iflags |
| IMPORT i286a_localint | IMPORT i286a_localint |
| IMPORT i286a_trapint | IMPORT i286a_trapint |
| EXPORT i286a_trapintr | IMPORT i286a_selector |
| IMPORT i286a_ea | IMPORT i286a_ea |
| IMPORT i286a_lea | IMPORT i286a_lea |
| IMPORT i286a_a | IMPORT i286a_a |
| Line 24 | Line 24 |
| IMPORT iocore_out8 | IMPORT iocore_out8 |
| IMPORT iocore_out16 | IMPORT iocore_out16 |
| IMPORT dmap_i286 | IMPORT dmax86 |
| IMPORT biosfunc | IMPORT biosfunc |
| IMPORT i286a_cts | IMPORT i286a_cts |
| Line 134 xor_ax_d16 OP_AX_D16 XOR16, #3 | Line 134 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, #6 |
| cmp_ea_r16 S_EA_R16 SUB16, #2, #7 | cmp_ea_r16 S_EA_R16 SUB16, #2, #6 |
| cmp_r8_ea S_R8_EA SUB8, #2, #6 | 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 |
| Line 190 pop_di REGPOP #CPU_DI, #5 | Line 190 pop_di REGPOP #CPU_DI, #5 |
| ; outsb * | ; outsb * |
| ; outsw * | ; outsw * |
| jo_short JMPNE #O_FLAG, #2, #7 | jo_short JMPNE #O_FLAG, #3, #7 |
| jno_short JMPEQ #O_FLAG, #2, #7 | jno_short JMPEQ #O_FLAG, #3, #7 |
| jc_short JMPNE #C_FLAG, #2, #7 | jc_short JMPNE #C_FLAG, #3, #7 |
| jnc_short JMPEQ #C_FLAG, #2, #7 | jnc_short JMPEQ #C_FLAG, #3, #7 |
| jz_short JMPNE #Z_FLAG, #2, #7 | jz_short JMPNE #Z_FLAG, #3, #7 |
| jnz_short JMPEQ #Z_FLAG, #2, #7 | jnz_short JMPEQ #Z_FLAG, #3, #7 |
| jna_short JMPNE #(Z_FLAG + C_FLAG), #2, #7 | jna_short JMPNE #(Z_FLAG + C_FLAG), #3, #7 |
| ja_short JMPEQ #(Z_FLAG + C_FLAG), #2, #7 | ja_short JMPEQ #(Z_FLAG + C_FLAG), #3, #7 |
| js_short JMPNE #S_FLAG, #2, #7 | js_short JMPNE #S_FLAG, #3, #7 |
| jns_short JMPEQ #S_FLAG, #2, #7 | jns_short JMPEQ #S_FLAG, #3, #7 |
| jp_short JMPNE #P_FLAG, #2, #7 | jp_short JMPNE #P_FLAG, #3, #7 |
| jnp_short JMPEQ #P_FLAG, #2, #7 | jnp_short JMPEQ #P_FLAG, #3, #7 |
| ; jl_short + | ; jl_short + |
| ; jnl_short + | ; jnl_short + |
| ; jle_short + | ; jle_short + |
| Line 650 jle_short tst r8, #Z_FLAG | Line 650 jle_short tst r8, #Z_FLAG |
| jl_short eor r0, r8, r8 lsr #4 | jl_short eor r0, r8, r8 lsr #4 |
| tst r0, #S_FLAG | tst r0, #S_FLAG |
| bne jmps | bne jmps |
| nojmps CPUWORK #2 | nojmps CPUWORK #3 |
| add r8, r8, #(1 << 16) | add r8, r8, #(1 << 16) |
| mov pc, r11 | mov pc, r11 |
| Line 665 jmps JMPS #7 | Line 665 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 |
| R8SRC r0, r5 | R8SRC r0, r2 |
| ldrb r0, [r6, #CPU_REG] | ldrb r0, [r6, #CPU_REG] |
| ldrb r1, [r5, #CPU_REG] | ldrb r1, [r2, #CPU_REG] |
| CPUWORK #3 | CPUWORK #3 |
| strb r0, [r5, #CPU_REG] | strb r0, [r2, #CPU_REG] |
| strb r1, [r6, #CPU_REG] | strb r1, [r6, #CPU_REG] |
| mov pc, r11 | mov pc, r11 |
| xchgear8_1 bl i286a_ea | xchgear8_1 bl i286a_ea |
| Line 693 xchgear8_2 mov r5, r0 | Line 693 xchgear8_2 mov r5, r0 |
| xchg_ea_r16 EAREG16 r6 | xchg_ea_r16 EAREG16 r6 |
| cmp r0, #&c0 | cmp r0, #&c0 |
| bcc xchgear16_1 | bcc xchgear16_1 |
| R16SRC r0, r5 | R16SRC r0, r2 |
| ldrh r0, [r6, #CPU_REG] | ldrh r0, [r6, #CPU_REG] |
| ldrh r1, [r5, #CPU_REG] | ldrh r1, [r2, #CPU_REG] |
| CPUWORK #3 | CPUWORK #3 |
| strh r0, [r5, #CPU_REG] | strh r0, [r2, #CPU_REG] |
| strh r1, [r6, #CPU_REG] | strh r1, [r6, #CPU_REG] |
| mov pc, r11 | mov pc, r11 |
| xchgear16_1 bl i286a_ea | xchgear16_1 bl i286a_ea |
| tst r0, #1 | ACCWORD r0, xchgear16_2 |
| bne xchgear16_2 | |
| cmp r0, #I286_MEMWRITEMAX | |
| bcs xchgear16_2 | |
| ldrh r1, [r6, #CPU_REG] | ldrh r1, [r6, #CPU_REG] |
| ldrh r4, [r9, r0] | ldrh r4, [r9, r0] |
| CPUWORK #5 | CPUWORK #5 |
| Line 724 mov_ea_r8 EAREG8 r6 | Line 721 mov_ea_r8 EAREG8 r6 |
| cmp r0, #&c0 | cmp r0, #&c0 |
| bcc movear8_1 | bcc movear8_1 |
| ldrb r1, [r6, #CPU_REG] | ldrb r1, [r6, #CPU_REG] |
| R8SRC r0, r5 | R8SRC r0, r2 |
| CPUWORK #3 | CPUWORK #3 |
| strb r1, [r5, #CPU_REG] | strb r1, [r2, #CPU_REG] |
| mov pc, r11 | mov pc, r11 |
| movear8_1 CPUWORK #5 | movear8_1 CPUWORK #5 |
| bl i286a_ea | bl i286a_ea |
| Line 738 mov_ea_r16 EAREG16 r6 | Line 735 mov_ea_r16 EAREG16 r6 |
| cmp r0, #&c0 | cmp r0, #&c0 |
| bcc movear16_1 | bcc movear16_1 |
| ldrh r1, [r6, #CPU_REG] | ldrh r1, [r6, #CPU_REG] |
| R16SRC r0, r5 | R16SRC r0, r2 |
| CPUWORK #3 | CPUWORK #3 |
| strh r1, [r5, #CPU_REG] | strh r1, [r2, #CPU_REG] |
| mov pc, r11 | mov pc, r11 |
| movear16_1 CPUWORK #5 | movear16_1 CPUWORK #5 |
| bl i286a_ea | bl i286a_ea |
| Line 784 leareg mov r6, #6 | Line 781 leareg mov r6, #6 |
| sub r8, r8, #(2 << 16) | sub r8, r8, #(2 << 16) |
| b i286a_localint | b i286a_localint |
| mov_seg_ea GETPCF8 | mov_seg_ea ldrb r6, [r9, #CPU_MSW] |
| adr r6, msegea_tbl | GETPCF8 |
| adr r2, msegea_tbl | |
| and r1, r0, #(3 << 3) | and r1, r0, #(3 << 3) |
| mov r5, r8 | tst r6, #MSW_PE |
| ldr r6, [r6, r1 lsr #1] | orrne r1, r1, #(4 << 3) |
| mov r6, r8 | |
| ldr r2, [r2, r1 lsr #1] | |
| cmp r0, #&c0 | cmp r0, #&c0 |
| bcc msegeam | bcc msegeam |
| CPUWORK #2 | |
| R16SRC r0, r4 | R16SRC r0, r4 |
| CPUWORK #2 | |
| ldrh r0, [r4, #CPU_REG] | ldrh r0, [r4, #CPU_REG] |
| mov pc, r6 | mov pc, r2 |
| msegeam CPUWORK #5 | msegeam str r2, [sp, #-4]! |
| CPUWORK #5 | |
| bl i286a_ea | bl i286a_ea |
| bl i286a_memoryread_w | ldr lr, [sp], #4 |
| mov pc, r6 | b i286a_memoryread_w |
| msegea_tbl dcd msegea_es | msegea_tbl dcd msegea_es |
| dcd msegea_cs | dcd msegea_cs |
| dcd msegea_ss | dcd msegea_ss |
| dcd msegea_ds | dcd msegea_ds |
| dcd msegea_es_p | |
| dcd msegea_cs | |
| dcd msegea_ss_p | |
| dcd msegea_ds_p | |
| msegea_es mov r1, r0 lsl #4 | msegea_es mov r1, r0 lsl #4 |
| strh r0, [r9, #CPU_ES] | strh r0, [r9, #CPU_ES] |
| str r1, [r9, #CPU_ES_BASE] | str r1, [r9, #CPU_ES_BASE] |
| Line 817 msegea_ss mov r1, r0 lsl #4 | Line 822 msegea_ss mov r1, r0 lsl #4 |
| str r1, [r9, #CPU_SS_BASE] | str r1, [r9, #CPU_SS_BASE] |
| str r1, [r9, #CPU_SS_FIX] | str r1, [r9, #CPU_SS_FIX] |
| NEXT_OPCODE | NEXT_OPCODE |
| msegea_cs sub r8, r5, #(2 << 16) | |
| msegea_es_p strh r0, [r9, #CPU_ES] | |
| bl i286a_selector | |
| str r0, [r9, #CPU_ES_BASE] | |
| mov pc, r11 | |
| msegea_ds_p strh r0, [r9, #CPU_DS] | |
| bl i286a_selector | |
| str r0, [r9, #CPU_DS_BASE] | |
| str r0, [r9, #CPU_DS_FIX] | |
| mov pc, r11 | |
| msegea_ss_p strh r0, [r9, #CPU_SS] | |
| bl i286a_selector | |
| str r0, [r9, #CPU_SS_BASE] | |
| str r0, [r9, #CPU_SS_FIX] | |
| NEXT_OPCODE | |
| msegea_cs sub r8, r6, #(2 << 16) | |
| mov r6, #6 | mov r6, #6 |
| b i286a_localint | b i286a_localint |
| pop_ea POP #5 | pop_ea POP #5 |
| mov r6, r0 | mov r6, r0 |
| GETPCF8 | GETPCF8 |
| Line 897 call_far CPUWORK #13 | Line 919 call_far CPUWORK #13 |
| add r8, r8, #(2 << 16) | add r8, r8, #(2 << 16) |
| mov r4, r0 lsl #16 | mov r4, r0 lsl #16 |
| add r0, r5, r8 lsr #16 | add r0, r5, r8 lsr #16 |
| ldrb r5, [r9, #CPU_MSW] | |
| bl i286a_memoryread_w | bl i286a_memoryread_w |
| mov r1, r0 lsl #4 | |
| strh r0, [r9, #CPU_CS] | strh r0, [r9, #CPU_CS] |
| str r1, [r9, #CPU_CS_BASE] | tst r5, #MSW_PE |
| moveq r0, r0 lsl #4 | |
| blne i286a_selector | |
| str r0, [r9, #CPU_CS_BASE] | |
| mov r0, r8 lsl #16 | mov r0, r8 lsl #16 |
| orr r8, r4, r0 lsr #16 | orr r8, r4, r0 lsr #16 |
| mov pc, r11 | mov pc, r11 |
| Line 920 pushf CPUWORK #3 | Line 945 pushf CPUWORK #3 |
| b i286a_memorywrite_w | b i286a_memorywrite_w |
| popf POP #5 | popf POP #5 |
| if 1 | |
| mov r8, r8 lsr #16 | |
| bic r1, r0, #&f000 ; i286 | |
| and r2, r0, #(I_FLAG + T_FLAG) | |
| orr r8, r1, r8 lsl #16 | |
| cmp r2, #(I_FLAG + T_FLAG) | |
| beq popf_withirq | |
| else | |
| mov r2, #3 | mov r2, #3 |
| mov r8, r8 lsr #16 | mov r8, r8 lsr #16 |
| and r2, r2, r0 lsr #8 | and r2, r2, r0 lsr #8 |
| Line 928 popf POP #5 | Line 961 popf POP #5 |
| orr r8, r1, r8 lsl #16 | orr r8, r1, r8 lsl #16 |
| strb r2, [r9, #CPU_TRAP] | strb r2, [r9, #CPU_TRAP] |
| bne popf_withirq | bne popf_withirq |
| endif | |
| ldr r0, popf_pic | ldr r0, popf_pic |
| NOINTREXIT | NOINTREXIT |
| popf_withirq I286IRQCHECKTERM | popf_withirq I286IRQCHECKTERM |
| Line 977 mov_m16_ax CPUWORK #5 | Line 1011 mov_m16_ax CPUWORK #5 |
| b i286a_memorywrite_w | b i286a_memorywrite_w |
| movsb CPUWORK #5 | movsb CPUWORK #5 |
| ldrh r5, [r9, #CPU_SI] | ldrh r6, [r9, #CPU_SI] |
| ldr r0, [r9, #CPU_DS_FIX] | ldr r0, [r9, #CPU_DS_FIX] |
| tst r8, #D_FLAG | tst r8, #D_FLAG |
| moveq r4, #1 | moveq r4, #1 |
| movne r4, #-1 | movne r4, #-1 |
| add r0, r5, r0 | add r0, r6, r0 |
| bl i286a_memoryread | bl i286a_memoryread |
| ldrh r3, [r9, #CPU_DI] | ldrh r3, [r9, #CPU_DI] |
| ldr r2, [r9, #CPU_ES_BASE] | ldr r2, [r9, #CPU_ES_BASE] |
| add r5, r5, r4 | add r6, r6, r4 |
| mov r1, r0 | mov r1, r0 |
| add r0, r3, r2 | add r0, r3, r2 |
| add r3, r3, r4 | add r3, r3, r4 |
| strh r5, [r9, #CPU_SI] | strh r6, [r9, #CPU_SI] |
| strh r3, [r9, #CPU_DI] | strh r3, [r9, #CPU_DI] |
| mov lr, r11 | mov lr, r11 |
| b i286a_memorywrite | b i286a_memorywrite |
| movsw CPUWORK #5 | movsw CPUWORK #5 |
| ldrh r5, [r9, #CPU_SI] | ldrh r6, [r9, #CPU_SI] |
| ldr r0, [r9, #CPU_DS_FIX] | ldr r0, [r9, #CPU_DS_FIX] |
| tst r8, #D_FLAG | tst r8, #D_FLAG |
| moveq r4, #2 | moveq r4, #2 |
| movne r4, #-2 | movne r4, #-2 |
| add r0, r5, r0 | add r0, r6, r0 |
| bl i286a_memoryread_w | bl i286a_memoryread_w |
| ldrh r3, [r9, #CPU_DI] | ldrh r3, [r9, #CPU_DI] |
| ldr r2, [r9, #CPU_ES_BASE] | ldr r2, [r9, #CPU_ES_BASE] |
| add r5, r5, r4 | add r6, r6, r4 |
| mov r1, r0 | mov r1, r0 |
| add r0, r3, r2 | add r0, r3, r2 |
| add r3, r3, r4 | add r3, r3, r4 |
| strh r5, [r9, #CPU_SI] | strh r6, [r9, #CPU_SI] |
| strh r3, [r9, #CPU_DI] | strh r3, [r9, #CPU_DI] |
| mov lr, r11 | mov lr, r11 |
| b i286a_memorywrite_w | b i286a_memorywrite_w |
| Line 1167 les_r16_ea GETPCF8 | Line 1201 les_r16_ea GETPCF8 |
| bl i286a_memoryread_w | bl i286a_memoryread_w |
| strh r0, [r5, #CPU_REG] | strh r0, [r5, #CPU_REG] |
| add r0, r4, r6 | add r0, r4, r6 |
| ldrb r4, [r9, #CPU_MSW] | |
| bl i286a_memoryread_w | bl i286a_memoryread_w |
| mov r1, r0 lsl #4 | |
| strh r0, [r9, #CPU_ES] | strh r0, [r9, #CPU_ES] |
| str r1, [r9, #CPU_ES_BASE] | tst r4, #MSW_PE |
| moveq r0, r0 lsl #4 | |
| blne i286a_selector | |
| str r0, [r9, #CPU_ES_BASE] | |
| mov pc, r11 | mov pc, r11 |
| lr16_r mov r6, #6 | lr16_r mov r6, #6 |
| sub r8, r8, #(2 << 16) | sub r8, r8, #(2 << 16) |
| Line 1188 lds_r16_ea GETPCF8 | Line 1225 lds_r16_ea GETPCF8 |
| bl i286a_memoryread_w | bl i286a_memoryread_w |
| strh r0, [r5, #CPU_REG] | strh r0, [r5, #CPU_REG] |
| add r0, r4, r6 | add r0, r4, r6 |
| ldrb r4, [r9, #CPU_MSW] | |
| bl i286a_memoryread_w | bl i286a_memoryread_w |
| mov r1, r0 lsl #4 | |
| strh r0, [r9, #CPU_DS] | strh r0, [r9, #CPU_DS] |
| str r1, [r9, #CPU_DS_BASE] | tst r4, #MSW_PE |
| str r1, [r9, #CPU_DS_FIX] | moveq r0, r0 lsl #4 |
| blne i286a_selector | |
| str r0, [r9, #CPU_DS_BASE] | |
| str r0, [r9, #CPU_DS_FIX] | |
| mov pc, r11 | mov pc, r11 |
| mov_ea8_d8 GETPCF8 | mov_ea8_d8 GETPCF8 |
| Line 1261 enterlv1 cmp r0, #1 | Line 1301 enterlv1 cmp r0, #1 |
| strh r2, [r9, #CPU_SP] | strh r2, [r9, #CPU_SP] |
| bl i286a_memorywrite_w | bl i286a_memorywrite_w |
| enterlv2 mov r1, r0, lsl #2 | enterlv2 mov r1, r0, lsl #2 |
| add r1, r1, #12 | add r1, r1, #(12 + 4) |
| CPUWORK r1 | CPUWORK r1 |
| strh r4, [r9, #CPU_BP] | strh r4, [r9, #CPU_BP] |
| str r11, [sp, #-4]! | str r11, [sp, #-4]! |
| Line 1314 ret_far_d16 GETPC16 | Line 1354 ret_far_d16 GETPC16 |
| add r4, r4, #2 | add r4, r4, #2 |
| bl i286a_memoryread_w | bl i286a_memoryread_w |
| add r4, r6, r4 | add r4, r6, r4 |
| mov r1, r0 lsl #4 | ldrb r1, [r9, #CPU_MSW] |
| strh r4, [r9, #CPU_SP] | strh r4, [r9, #CPU_SP] |
| strh r0, [r9, #CPU_CS] | strh r0, [r9, #CPU_CS] |
| str r1, [r9, #CPU_CS_BASE] | tst r1, #MSW_PE |
| moveq r0, r0 lsl #4 | |
| blne i286a_selector | |
| str r0, [r9, #CPU_CS_BASE] | |
| mov pc, r11 | mov pc, r11 |
| ret_far ldrh r1, [r9, #CPU_SP] | ret_far ldrh r1, [r9, #CPU_SP] |
| Line 1333 ret_far ldrh r1, [r9, #CPU_SP] | Line 1376 ret_far ldrh r1, [r9, #CPU_SP] |
| add r0, r4, r5 | add r0, r4, r5 |
| add r4, r4, #2 | add r4, r4, #2 |
| bl i286a_memoryread_w | bl i286a_memoryread_w |
| mov r1, r0 lsl #4 | ldrb r1, [r9, #CPU_MSW] |
| strh r4, [r9, #CPU_SP] | strh r4, [r9, #CPU_SP] |
| strh r0, [r9, #CPU_CS] | strh r0, [r9, #CPU_CS] |
| str r1, [r9, #CPU_CS_BASE] | tst r1, #MSW_PE |
| moveq r0, r0 lsl #4 | |
| blne i286a_selector | |
| str r0, [r9, #CPU_CS_BASE] | |
| mov pc, r11 | mov pc, r11 |
| int_03 CPUWORK #3 | int_03 CPUWORK #3 |
| Line 1354 into CPUWORK #4 | Line 1400 into CPUWORK #4 |
| mov r6, #4 | mov r6, #4 |
| b i286a_localint | b i286a_localint |
| iret bl extirq_pop | iret ldrh r1, [r9, #CPU_SP] |
| ldrh r1, [r9, #CPU_SP] | |
| ldr r5, [r9, #CPU_SS_BASE] | ldr r5, [r9, #CPU_SS_BASE] |
| CPUWORK #31 | CPUWORK #31 |
| add r4, r1, #2 | add r4, r1, #2 |
| Line 1374 iret bl extirq_pop | Line 1419 iret bl extirq_pop |
| add r4, r4, #2 | add r4, r4, #2 |
| bl i286a_memoryread_w | bl i286a_memoryread_w |
| strh r4, [r9, #CPU_SP] | strh r4, [r9, #CPU_SP] |
| if 1 | |
| bic r1, r0, #&f000 | |
| and r2, r0, #(I_FLAG + T_FLAG) | |
| orr r8, r1, r8 | |
| cmp r2, #(I_FLAG + T_FLAG) | |
| beq iret_withirq | |
| else | |
| mov r2, #3 | mov r2, #3 |
| bic r1, r0, #&f000 ; i286 | bic r1, r0, #&f000 ; i286 |
| and r2, r2, r0 lsr #8 | and r2, r2, r0 lsr #8 |
| Line 1381 iret bl extirq_pop | Line 1433 iret bl extirq_pop |
| ands r2, r2, r2 lsr #1 | ands r2, r2, r2 lsr #1 |
| strb r2, [r9, #CPU_TRAP] | strb r2, [r9, #CPU_TRAP] |
| bne iret_withirq | bne iret_withirq |
| endif | |
| ldr r0, iret_pic | ldr r0, iret_pic |
| NOINTREXIT | NOINTREXIT |
| iret_withirq I286IRQCHECKTERM | iret_withirq I286IRQCHECKTERM |
| Line 1498 jcxz ldrh r0, [r9, #CPU_CX] | Line 1551 jcxz ldrh r0, [r9, #CPU_CX] |
| mov pc, r11 | mov pc, r11 |
| jcxzj JMPS #8 | jcxzj JMPS #8 |
| in_al_d8 CPUWORK #5 | in_al_d8 GETPCF8 |
| GETPCF8 | CPUWORK #5 |
| add r3, r0, r8 lsr #16 | add r3, r5, r8 lsr #16 |
| CPUSV | CPUSV |
| str r3, [r9, #CPU_INPUT] | str r3, [r9, #CPU_INPUT] |
| bl iocore_inp8 | bl iocore_inp8 |
| Line 1564 jmp_far CPUWORK #11 | Line 1617 jmp_far CPUWORK #11 |
| mov r8, r0 lsl #16 | mov r8, r0 lsl #16 |
| add r0, r4, r5 lsr #16 | add r0, r4, r5 lsr #16 |
| bl i286a_memoryread_w | bl i286a_memoryread_w |
| ldrb r1, [r9, #CPU_MSW] | |
| add r8, r8, r6 lsr #16 | add r8, r8, r6 lsr #16 |
| mov r1, r0 lsl #4 | |
| strh r0, [r9, #CPU_CS] | strh r0, [r9, #CPU_CS] |
| str r1, [r9, #CPU_CS_BASE] | tst r1, #MSW_PE |
| moveq r0, r0 lsl #4 | |
| blne i286a_selector | |
| str r0, [r9, #CPU_CS_BASE] | |
| mov pc, r11 | mov pc, r11 |
| in_al_dx CPUWORK #5 | in_al_dx CPUWORK #5 |
| Line 1623 stc CPUWORK #2 | Line 1679 stc CPUWORK #2 |
| mov pc, r11 | mov pc, r11 |
| cli CPUWORK #2 | cli CPUWORK #2 |
| if 1 | |
| bic r8, r8, #I_FLAG | |
| else | |
| mov r0, #0 | mov r0, #0 |
| bic r8, r8, #I_FLAG | bic r8, r8, #I_FLAG |
| strb r0, [r9, #CPU_TRAP] | strb r0, [r9, #CPU_TRAP] |
| endif | |
| mov pc, r11 | mov pc, r11 |
| sti CPUWORK #2 | sti CPUWORK #2 |
| tst r8, #I_FLAG | tst r8, #I_FLAG |
| bne sti_noirq | bne sti_noirq |
| sti_set orr r8, r8, #I_FLAG | sti_set orr r8, r8, #I_FLAG |
| if 1 | |
| ldr r0, sti_pic | |
| tst r8, #T_FLAG | |
| bne sti_withirq | |
| else | |
| mov r1, #(T_FLAG >> 8) | mov r1, #(T_FLAG >> 8) |
| ands r1, r1, r8 lsr #8 | ands r1, r1, r8 lsr #8 |
| ldr r0, sti_pic | ldr r0, sti_pic |
| strneb r1, [r9, #CPU_TRAP] | strneb r1, [r9, #CPU_TRAP] |
| bne sti_withirq | bne sti_withirq |
| PICEXISTINTR sti_noirq | endif |
| PICEXISTINTR | |
| bne sti_withirq | bne sti_withirq |
| sti_noirq NEXT_OPCODE | sti_noirq NEXT_OPCODE |
| sti_pic dcd pic | sti_pic dcd pic |
| Line 1669 i286a_step stmdb sp!, {r4 - r11, lr} | Line 1735 i286a_step stmdb sp!, {r4 - r11, lr} |
| mov r11, pc | mov r11, pc |
| mov pc, r1 | mov pc, r1 |
| bl dmap_i286 | bl dmax86 |
| CPUSV | CPUSV |
| ldmia sp!, {r4 - r11, pc} | ldmia sp!, {r4 - r11, pc} |
| Line 1680 i286a stmdb sp!, {r4 - r11, lr} | Line 1746 i286a stmdb sp!, {r4 - r11, lr} |
| ldr r10, ias_r10 | ldr r10, ias_r10 |
| CPULD | CPULD |
| ldr r5, [r9, #CPU_CS_BASE] | ldr r5, [r9, #CPU_CS_BASE] |
| ldr r1, [r2, #DMAC_WORKING] | ldrb r1, [r2, #DMAC_WORKING] |
| and r0, r8, #(I_FLAG + T_FLAG) | and r0, r8, #(I_FLAG + T_FLAG) |
| cmp r0, #(I_FLAG + T_FLAG) | cmp r0, #(I_FLAG + T_FLAG) |
| beq i286awithtrap | beq i286awithtrap |
| Line 1711 i286awithdma adr r4, optbl1 | Line 1777 i286awithdma adr r4, optbl1 |
| add r8, r8, #(1 << 16) | add r8, r8, #(1 << 16) |
| mov r11, pc | mov r11, pc |
| mov pc, r1 | mov pc, r1 |
| bl dmap_i286 | bl dmax86 |
| CPUDBGL | CPUDBGL |
| cmp r7, #0 | cmp r7, #0 |
| ldrgt r5, [r9, #CPU_CS_BASE] | ldrgt r5, [r9, #CPU_CS_BASE] |
| Line 1726 i286awithtrap adr r4, optbl1 | Line 1792 i286awithtrap adr r4, optbl1 |
| add r8, r8, #(1 << 16) | add r8, r8, #(1 << 16) |
| mov r11, pc | mov r11, pc |
| mov pc, r1 | mov pc, r1 |
| bl dmap_i286 | bl dmax86 |
| and r0, r8, #(I_FLAG + T_FLAG) | and r0, r8, #(I_FLAG + T_FLAG) |
| cmp r0, #(I_FLAG + T_FLAG) | cmp r0, #(I_FLAG + T_FLAG) |
| beq i286a_trapint | bleq i286a_trapint |
| i286a_trapintr CPUSV | CPUSV |
| ldmia sp!, {r4 - r11, pc} | ldmia sp!, {r4 - r11, pc} |
| optbl1 dcd add_ea_r8 ; 00 | optbl1 dcd add_ea_r8 ; 00 |
| Line 1941 optbl1 dcd add_ea_r8 ; 00 | Line 2007 optbl1 dcd add_ea_r8 ; 00 |
| dcd i286asft16_d8 | dcd i286asft16_d8 |
| dcd ret_near_d16 | dcd ret_near_d16 |
| dcd ret_near | dcd ret_near |
| dcd les_r16_ea ; (now testing i286a_a) | dcd les_r16_ea |
| dcd lds_r16_ea ; (now testing i286a_a) | dcd lds_r16_ea |
| dcd mov_ea8_d8 | dcd mov_ea8_d8 |
| dcd mov_ea16_d16 | dcd mov_ea16_d16 |
| dcd enter | dcd enter |