|
|
| version 1.9, 2003/12/18 23:07:49 | version 1.10, 2003/12/19 00:25:49 |
|---|---|
| Line 3 | Line 3 |
| INCLUDE i286aea.inc | INCLUDE i286aea.inc |
| INCLUDE i286aalu.inc | INCLUDE i286aalu.inc |
| INCLUDE i286aop.inc | INCLUDE i286aop.inc |
| INCLUDE i286apic.inc | INCLUDE i286aio.inc |
| IMPORT i286core | IMPORT i286core |
| IMPORT _szpcflag8 | IMPORT _szpcflag8 |
| IMPORT i286a_localint | IMPORT i286a_localint |
| IMPORT i286a_trapint | |
| EXPORT i286a_trapintr | |
| IMPORT i286a_ea | IMPORT i286a_ea |
| IMPORT i286a_lea | IMPORT i286a_lea |
| IMPORT i286a_a | IMPORT i286a_a |
| IMPORT i286_memoryread | IMPORT i286a_memoryread |
| IMPORT i286_memoryread_w | IMPORT i286a_memoryread_w |
| IMPORT i286_memorywrite | IMPORT i286a_memorywrite |
| IMPORT i286_memorywrite_w | IMPORT i286a_memorywrite_w |
| IMPORT iocore_inp8 | IMPORT iocore_inp8 |
| IMPORT iocore_inp16 | IMPORT iocore_inp16 |
| IMPORT iocore_out8 | IMPORT iocore_out8 |
| IMPORT iocore_out16 | IMPORT iocore_out16 |
| IMPORT dmap_i286 | |
| IMPORT biosfunc | IMPORT biosfunc |
| IMPORT dmac | IMPORT dmac |
| Line 433 pusha ldrh r4, [r9, #CPU_SP] | Line 436 pusha ldrh r4, [r9, #CPU_SP] |
| sub r4, r4, #(2 << 16) | sub r4, r4, #(2 << 16) |
| ldrh r1, [r9, #CPU_AX] | ldrh r1, [r9, #CPU_AX] |
| add r0, r5, r4 lsr #16 | add r0, r5, r4 lsr #16 |
| bl i286_memorywrite_w | bl i286a_memorywrite_w |
| sub r4, r4, #(2 << 16) | sub r4, r4, #(2 << 16) |
| ldrh r1, [r9, #CPU_CX] | ldrh r1, [r9, #CPU_CX] |
| add r0, r5, r4 lsr #16 | add r0, r5, r4 lsr #16 |
| bl i286_memorywrite_w | bl i286a_memorywrite_w |
| sub r4, r4, #(2 << 16) | sub r4, r4, #(2 << 16) |
| ldrh r1, [r9, #CPU_DX] | ldrh r1, [r9, #CPU_DX] |
| add r0, r5, r4 lsr #16 | add r0, r5, r4 lsr #16 |
| bl i286_memorywrite_w | bl i286a_memorywrite_w |
| sub r4, r4, #(2 << 16) | sub r4, r4, #(2 << 16) |
| ldrh r1, [r9, #CPU_BX] | ldrh r1, [r9, #CPU_BX] |
| add r0, r5, r4 lsr #16 | add r0, r5, r4 lsr #16 |
| bl i286_memorywrite_w | bl i286a_memorywrite_w |
| mov r1, r6 | mov r1, r6 |
| sub r4, r4, #(2 << 16) | sub r4, r4, #(2 << 16) |
| add r0, r5, r4 lsr #16 | add r0, r5, r4 lsr #16 |
| bl i286_memorywrite_w | bl i286a_memorywrite_w |
| sub r4, r4, #(2 << 16) | sub r4, r4, #(2 << 16) |
| ldrh r1, [r9, #CPU_BP] | ldrh r1, [r9, #CPU_BP] |
| add r0, r5, r4 lsr #16 | add r0, r5, r4 lsr #16 |
| bl i286_memorywrite_w | bl i286a_memorywrite_w |
| sub r4, r4, #(2 << 16) | sub r4, r4, #(2 << 16) |
| ldrh r1, [r9, #CPU_SI] | ldrh r1, [r9, #CPU_SI] |
| add r0, r5, r4 lsr #16 | add r0, r5, r4 lsr #16 |
| bl i286_memorywrite_w | bl i286a_memorywrite_w |
| sub r4, r4, #(2 << 16) | sub r4, r4, #(2 << 16) |
| ldrh r1, [r9, #CPU_DI] | ldrh r1, [r9, #CPU_DI] |
| add r0, r5, r4 lsr #16 | add r0, r5, r4 lsr #16 |
| bl i286_memorywrite_w | bl i286a_memorywrite_w |
| mov r0, r4 lsr #16 | mov r0, r4 lsr #16 |
| strh r0, [r9, #CPU_SP] | strh r0, [r9, #CPU_SP] |
| mov pc, r11 | mov pc, r11 |
| Line 471 popa ldrh r4, [r9, #CPU_SP] | Line 474 popa ldrh r4, [r9, #CPU_SP] |
| CPUWORK #19 | CPUWORK #19 |
| add r0, r5, r4 | add r0, r5, r4 |
| mov r4, r4 lsl #16 | mov r4, r4 lsl #16 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| add r4, r4, #(2 << 16) | add r4, r4, #(2 << 16) |
| strh r0, [r9, #CPU_DI] | strh r0, [r9, #CPU_DI] |
| add r0, r5, r4 lsr #16 | add r0, r5, r4 lsr #16 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| add r4, r4, #(2 << 16) | add r4, r4, #(2 << 16) |
| strh r0, [r9, #CPU_SI] | strh r0, [r9, #CPU_SI] |
| add r0, r5, r4 lsr #16 | add r0, r5, r4 lsr #16 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| add r4, r4, #(4 << 16) | add r4, r4, #(4 << 16) |
| strh r0, [r9, #CPU_BP] | strh r0, [r9, #CPU_BP] |
| add r0, r5, r4 lsr #16 | add r0, r5, r4 lsr #16 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| add r4, r4, #(2 << 16) | add r4, r4, #(2 << 16) |
| strh r0, [r9, #CPU_BX] | strh r0, [r9, #CPU_BX] |
| add r0, r5, r4 lsr #16 | add r0, r5, r4 lsr #16 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| add r4, r4, #(2 << 16) | add r4, r4, #(2 << 16) |
| strh r0, [r9, #CPU_DX] | strh r0, [r9, #CPU_DX] |
| add r0, r5, r4 lsr #16 | add r0, r5, r4 lsr #16 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| add r4, r4, #(2 << 16) | add r4, r4, #(2 << 16) |
| strh r0, [r9, #CPU_CX] | strh r0, [r9, #CPU_CX] |
| add r0, r5, r4 lsr #16 | add r0, r5, r4 lsr #16 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| add r4, r4, #(2 << 16) | add r4, r4, #(2 << 16) |
| strh r0, [r9, #CPU_AX] | strh r0, [r9, #CPU_AX] |
| mov r0, r4 lsr #16 | mov r0, r4 lsr #16 |
| Line 511 bound GETPC8 | Line 514 bound GETPC8 |
| bl i286a_a | bl i286a_a |
| add r4, r0, #2 | add r4, r0, #2 |
| add r0, r0, r6 | add r0, r0, r6 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| cmp r5, r0 | cmp r5, r0 |
| bcc bndout | bcc bndout |
| bic r4, r4, #(1 << 16) | bic r4, r4, #(1 << 16) |
| add r0, r4, r6 | add r0, r4, r6 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| cmp r5, r0 | cmp r5, r0 |
| movls pc, r11 | movls pc, r11 |
| bndout mov r6, #5 | bndout mov r6, #5 |
| Line 535 push_d16 CPUWORK #3 | Line 538 push_d16 CPUWORK #3 |
| strh r2, [r9, #CPU_SP] | strh r2, [r9, #CPU_SP] |
| add r0, r2, r3 | add r0, r2, r3 |
| mov lr, r11 | mov lr, r11 |
| b i286_memorywrite_w | b i286a_memorywrite_w |
| imul_r_ea_d16 REG16EA r5, #21, #24 | imul_r_ea_d16 REG16EA r5, #21, #24 |
| mov r4, r0, lsl #16 | mov r4, r0, lsl #16 |
| Line 564 push_d8 CPUWORK #3 | Line 567 push_d8 CPUWORK #3 |
| strh r2, [r9, #CPU_SP] | strh r2, [r9, #CPU_SP] |
| add r0, r2, r3 | add r0, r2, r3 |
| mov lr, r11 | mov lr, r11 |
| b i286_memorywrite_w | b i286a_memorywrite_w |
| imul_r_ea_d8 REG16EA r5, #21, #24 | imul_r_ea_d8 REG16EA r5, #21, #24 |
| mov r4, r0, lsl #16 | mov r4, r0, lsl #16 |
| Line 596 insb CPUWORK #5 | Line 599 insb CPUWORK #5 |
| subne r2, r2, #1 | subne r2, r2, #1 |
| mov lr, r11 | mov lr, r11 |
| strh r2, [r9, #CPU_DI] | strh r2, [r9, #CPU_DI] |
| b i286_memorywrite | b i286a_memorywrite |
| insw CPUWORK #5 | insw CPUWORK #5 |
| ldrh r0, [r9, #CPU_DX] | ldrh r0, [r9, #CPU_DX] |
| Line 612 insw CPUWORK #5 | Line 615 insw CPUWORK #5 |
| subne r2, r2, #2 | subne r2, r2, #2 |
| mov lr, r11 | mov lr, r11 |
| strh r2, [r9, #CPU_DI] | strh r2, [r9, #CPU_DI] |
| b i286_memorywrite_w | b i286a_memorywrite_w |
| outsb CPUWORK #3 | outsb CPUWORK #3 |
| ldrh r1, [r9, #CPU_SI] | ldrh r1, [r9, #CPU_SI] |
| Line 622 outsb CPUWORK #3 | Line 625 outsb CPUWORK #3 |
| addeq r1, r1, #1 | addeq r1, r1, #1 |
| subne r1, r1, #1 | subne r1, r1, #1 |
| strh r1, [r9, #CPU_SI] | strh r1, [r9, #CPU_SI] |
| bl i286_memoryread | bl i286a_memoryread |
| mov r1, r0 | mov r1, r0 |
| ldr r0, [r9, #CPU_DX] | ldr r0, [r9, #CPU_DX] |
| CPUSV | CPUSV |
| Line 638 outsw CPUWORK #3 | Line 641 outsw CPUWORK #3 |
| addeq r1, r1, #2 | addeq r1, r1, #2 |
| subne r1, r1, #2 | subne r1, r1, #2 |
| strh r1, [r9, #CPU_SI] | strh r1, [r9, #CPU_SI] |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| mov r1, r0 | mov r1, r0 |
| ldr r0, [r9, #CPU_DX] | ldr r0, [r9, #CPU_DX] |
| CPUSV | CPUSV |
| Line 683 xchgear8_1 CPUWORK #5 | Line 686 xchgear8_1 CPUWORK #5 |
| strb r4, [r6, #CPU_REG] | strb r4, [r6, #CPU_REG] |
| mov pc, r11 | mov pc, r11 |
| xchgear8_2 mov r5, r0 | xchgear8_2 mov r5, r0 |
| bl i286_memoryread | bl i286a_memoryread |
| ldrb r1, [r6, #CPU_REG] | ldrb r1, [r6, #CPU_REG] |
| strb r0, [r6, #CPU_REG] | strb r0, [r6, #CPU_REG] |
| mov r0, r5 | mov r0, r5 |
| mov lr, r11 | mov lr, r11 |
| b i286_memorywrite | b i286a_memorywrite |
| xchg_ea_r16 EAREG16 r6 | xchg_ea_r16 EAREG16 r6 |
| cmp r0, #&c0 | cmp r0, #&c0 |
| Line 712 xchgear16_1 CPUWORK #5 | Line 715 xchgear16_1 CPUWORK #5 |
| strh r4, [r6, #CPU_REG] | strh r4, [r6, #CPU_REG] |
| mov pc, r11 | mov pc, r11 |
| xchgear16_2 mov r5, r0 | xchgear16_2 mov r5, r0 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| ldrh r1, [r6, #CPU_REG] | ldrh r1, [r6, #CPU_REG] |
| strh r0, [r6, #CPU_REG] | strh r0, [r6, #CPU_REG] |
| mov r0, r5 | mov r0, r5 |
| mov lr, r11 | mov lr, r11 |
| b i286_memorywrite_w | b i286a_memorywrite_w |
| mov_ea_r8 EAREG8 r6 | mov_ea_r8 EAREG8 r6 |
| cmp r0, #&c0 | cmp r0, #&c0 |
| Line 731 movear8_1 CPUWORK #5 | Line 734 movear8_1 CPUWORK #5 |
| bl i286a_ea | bl i286a_ea |
| ldrb r1, [r6, #CPU_REG] | ldrb r1, [r6, #CPU_REG] |
| mov lr, r11 | mov lr, r11 |
| b i286_memorywrite | b i286a_memorywrite |
| mov_ea_r16 EAREG16 r6 | mov_ea_r16 EAREG16 r6 |
| cmp r0, #&c0 | cmp r0, #&c0 |
| Line 745 movear16_1 CPUWORK #5 | Line 748 movear16_1 CPUWORK #5 |
| bl i286a_ea | bl i286a_ea |
| ldrh r1, [r6, #CPU_REG] | ldrh r1, [r6, #CPU_REG] |
| mov lr, r11 | mov lr, r11 |
| b i286_memorywrite_w | b i286a_memorywrite_w |
| mov_r8_ea REG8EA r5, #2, #5 | mov_r8_ea REG8EA r5, #2, #5 |
| strb r0, [r5, #CPU_REG] | strb r0, [r5, #CPU_REG] |
| Line 769 measegm CPUWORK #3 | Line 772 measegm CPUWORK #3 |
| bl i286a_ea | bl i286a_ea |
| mov r1, r5 | mov r1, r5 |
| mov lr, r11 | mov lr, r11 |
| b i286_memorywrite_w | b i286a_memorywrite_w |
| lea_r16_ea CPUWORK #3 | lea_r16_ea CPUWORK #3 |
| GETPC8 | GETPC8 |
| Line 796 mov_seg_ea GETPC8 | Line 799 mov_seg_ea GETPC8 |
| mov pc, r6 | mov pc, r6 |
| msegeam CPUWORK #5 | msegeam CPUWORK #5 |
| bl i286a_ea | bl i286a_ea |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| mov pc, r6 | mov pc, r6 |
| msegea_tbl dcd msegea_es | msegea_tbl dcd msegea_es |
| dcd msegea_cs | dcd msegea_cs |
| Line 828 pop_ea POP #5 | Line 831 pop_ea POP #5 |
| bl i286a_ea | bl i286a_ea |
| mov r1, r5 | mov r1, r5 |
| mov lr, r11 | mov lr, r11 |
| b i286_memorywrite_w | b i286a_memorywrite_w |
| popreg R16SRC r0, r1 | popreg R16SRC r0, r1 |
| strh r4, [r1, #CPU_REG] | strh r4, [r1, #CPU_REG] |
| mov pc, r11 | mov pc, r11 |
| Line 882 call_far CPUWORK #13 | Line 885 call_far CPUWORK #13 |
| mov r4, r4 lsl #16 | mov r4, r4 lsl #16 |
| sub r4, r4, #(2 << 16) | sub r4, r4, #(2 << 16) |
| add r0, r5, r4 lsr #16 | add r0, r5, r4 lsr #16 |
| bl i286_memorywrite_w ; cs | bl i286a_memorywrite_w ; cs |
| sub r4, r4, #(2 << 16) | sub r4, r4, #(2 << 16) |
| add r12, r8, #(4 << 16) | add r12, r8, #(4 << 16) |
| mov r4, r4, lsr #16 | mov r4, r4, lsr #16 |
| mov r1, r12 lsr #16 | mov r1, r12 lsr #16 |
| add r0, r4, r5 | add r0, r4, r5 |
| bl i286_memorywrite_w ; ip | bl i286a_memorywrite_w ; ip |
| ldr r5, [r9, #CPU_CS_BASE] | ldr r5, [r9, #CPU_CS_BASE] |
| strh r4, [r9, #CPU_SP] | strh r4, [r9, #CPU_SP] |
| add r0, r5, r8 lsr #16 | add r0, r5, r8 lsr #16 |
| bl i286_memoryread_w ; newip | bl i286a_memoryread_w ; newip |
| 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 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| mov r1, r0 lsl #4 | mov r1, r0 lsl #4 |
| strh r0, [r9, #CPU_CS] | strh r0, [r9, #CPU_CS] |
| str r1, [r9, #CPU_CS_BASE] | str r1, [r9, #CPU_CS_BASE] |
| Line 916 pushf CPUWORK #3 | Line 919 pushf CPUWORK #3 |
| strh r3, [r9, #CPU_SP] | strh r3, [r9, #CPU_SP] |
| add r0, r3, r2 | add r0, r3, r2 |
| mov lr, r11 | mov lr, r11 |
| b i286_memorywrite_w | b i286a_memorywrite_w |
| popf POP #5 | popf POP #5 |
| mov r2, #3 | mov r2, #3 |
| Line 950 mov_al_m8 CPUWORK #5 | Line 953 mov_al_m8 CPUWORK #5 |
| ldr r5, [r9, #CPU_DS_FIX] | ldr r5, [r9, #CPU_DS_FIX] |
| GETPC16 | GETPC16 |
| add r0, r5, r0 | add r0, r5, r0 |
| bl i286_memoryread | bl i286a_memoryread |
| strb r0, [r9, #CPU_AL] | strb r0, [r9, #CPU_AL] |
| mov pc, r11 | mov pc, r11 |
| Line 958 mov_ax_m16 CPUWORK #5 | Line 961 mov_ax_m16 CPUWORK #5 |
| ldr r5, [r9, #CPU_DS_FIX] | ldr r5, [r9, #CPU_DS_FIX] |
| GETPC16 | GETPC16 |
| add r0, r5, r0 | add r0, r5, r0 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| strh r0, [r9, #CPU_AX] | strh r0, [r9, #CPU_AX] |
| mov pc, r11 | mov pc, r11 |
| Line 968 mov_m8_al CPUWORK #5 | Line 971 mov_m8_al CPUWORK #5 |
| ldrb r1, [r9, #CPU_AL] | ldrb r1, [r9, #CPU_AL] |
| add r0, r5, r0 | add r0, r5, r0 |
| mov lr, r11 | mov lr, r11 |
| b i286_memorywrite | b i286a_memorywrite |
| mov_m16_ax CPUWORK #5 | mov_m16_ax CPUWORK #5 |
| ldr r5, [r9, #CPU_DS_FIX] | ldr r5, [r9, #CPU_DS_FIX] |
| Line 976 mov_m16_ax CPUWORK #5 | Line 979 mov_m16_ax CPUWORK #5 |
| ldrh r1, [r9, #CPU_AX] | ldrh r1, [r9, #CPU_AX] |
| add r0, r5, r0 | add r0, r5, r0 |
| mov lr, r11 | mov lr, r11 |
| b i286_memorywrite_w | b i286a_memorywrite_w |
| movsb CPUWORK #5 | movsb CPUWORK #5 |
| ldrh r5, [r9, #CPU_SI] | ldrh r5, [r9, #CPU_SI] |
| Line 985 movsb CPUWORK #5 | Line 988 movsb CPUWORK #5 |
| moveq r4, #1 | moveq r4, #1 |
| movne r4, #-1 | movne r4, #-1 |
| add r0, r5, r0 | add r0, r5, r0 |
| bl i286_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 r5, r5, r4 |
| Line 995 movsb CPUWORK #5 | Line 998 movsb CPUWORK #5 |
| strh r5, [r9, #CPU_SI] | strh r5, [r9, #CPU_SI] |
| strh r3, [r9, #CPU_DI] | strh r3, [r9, #CPU_DI] |
| mov lr, r11 | mov lr, r11 |
| b i286_memorywrite | b i286a_memorywrite |
| movsw CPUWORK #5 | movsw CPUWORK #5 |
| ldrh r5, [r9, #CPU_SI] | ldrh r5, [r9, #CPU_SI] |
| Line 1004 movsw CPUWORK #5 | Line 1007 movsw CPUWORK #5 |
| moveq r4, #2 | moveq r4, #2 |
| movne r4, #-2 | movne r4, #-2 |
| add r0, r5, r0 | add r0, r5, r0 |
| bl i286_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 r5, r5, r4 |
| Line 1014 movsw CPUWORK #5 | Line 1017 movsw CPUWORK #5 |
| strh r5, [r9, #CPU_SI] | strh r5, [r9, #CPU_SI] |
| strh r3, [r9, #CPU_DI] | strh r3, [r9, #CPU_DI] |
| mov lr, r11 | mov lr, r11 |
| b i286_memorywrite_w | b i286a_memorywrite_w |
| cmpsb CPUWORK #8 | cmpsb CPUWORK #8 |
| ldrh r5, [r9, #CPU_SI] | ldrh r5, [r9, #CPU_SI] |
| Line 1022 cmpsb CPUWORK #8 | Line 1025 cmpsb CPUWORK #8 |
| ; | ; |
| ; | ; |
| add r0, r5, r0 | add r0, r5, r0 |
| bl i286_memoryread | bl i286a_memoryread |
| ldr r2, [r9, #CPU_ES_BASE] | ldr r2, [r9, #CPU_ES_BASE] |
| ldrh r3, [r9, #CPU_DI] | ldrh r3, [r9, #CPU_DI] |
| mov r6, r0 | mov r6, r0 |
| Line 1034 cmpsb CPUWORK #8 | Line 1037 cmpsb CPUWORK #8 |
| add r3, r2, r3 | add r3, r2, r3 |
| strh r5, [r9, #CPU_SI] | strh r5, [r9, #CPU_SI] |
| strh r3, [r9, #CPU_DI] | strh r3, [r9, #CPU_DI] |
| bl i286_memoryread | bl i286a_memoryread |
| SUB8 r6, r0 | SUB8 r6, r0 |
| mov pc, r11 | mov pc, r11 |
| Line 1044 cmpsw CPUWORK #8 | Line 1047 cmpsw CPUWORK #8 |
| ; | ; |
| ; | ; |
| add r0, r5, r0 | add r0, r5, r0 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| ldr r2, [r9, #CPU_ES_BASE] | ldr r2, [r9, #CPU_ES_BASE] |
| ldrh r3, [r9, #CPU_DI] | ldrh r3, [r9, #CPU_DI] |
| mov r6, r0 | mov r6, r0 |
| Line 1056 cmpsw CPUWORK #8 | Line 1059 cmpsw CPUWORK #8 |
| add r3, r2, r3 | add r3, r2, r3 |
| strh r5, [r9, #CPU_SI] | strh r5, [r9, #CPU_SI] |
| strh r3, [r9, #CPU_DI] | strh r3, [r9, #CPU_DI] |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| SUB16 r6, r0 | SUB16 r6, r0 |
| mov pc, r11 | mov pc, r11 |
| Line 1070 stosb CPUWORK #3 | Line 1073 stosb CPUWORK #3 |
| add r0, r2, r0 | add r0, r2, r0 |
| strh r3, [r9, #CPU_DI] | strh r3, [r9, #CPU_DI] |
| mov lr, r11 | mov lr, r11 |
| b i286_memorywrite | b i286a_memorywrite |
| stosw CPUWORK #3 | stosw CPUWORK #3 |
| ldrh r1, [r9, #CPU_AX] | ldrh r1, [r9, #CPU_AX] |
| Line 1082 stosw CPUWORK #3 | Line 1085 stosw CPUWORK #3 |
| add r0, r2, r0 | add r0, r2, r0 |
| strh r3, [r9, #CPU_DI] | strh r3, [r9, #CPU_DI] |
| mov lr, r11 | mov lr, r11 |
| b i286_memorywrite_w | b i286a_memorywrite_w |
| lodsb CPUWORK #5 | lodsb CPUWORK #5 |
| ldrh r5, [r9, #CPU_SI] | ldrh r5, [r9, #CPU_SI] |
| Line 1091 lodsb CPUWORK #5 | Line 1094 lodsb CPUWORK #5 |
| addeq r6, r5, #1 | addeq r6, r5, #1 |
| subne r6, r5, #1 | subne r6, r5, #1 |
| add r0, r5, r0 | add r0, r5, r0 |
| bl i286_memoryread | bl i286a_memoryread |
| strb r0, [r9, #CPU_AL] | strb r0, [r9, #CPU_AL] |
| strh r6, [r9, #CPU_SI] | strh r6, [r9, #CPU_SI] |
| mov pc, r11 | mov pc, r11 |
| Line 1103 lodsw CPUWORK #5 | Line 1106 lodsw CPUWORK #5 |
| addeq r6, r5, #2 | addeq r6, r5, #2 |
| subne r6, r5, #2 | subne r6, r5, #2 |
| add r0, r5, r0 | add r0, r5, r0 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| strh r0, [r9, #CPU_AX] | strh r0, [r9, #CPU_AX] |
| strh r6, [r9, #CPU_SI] | strh r6, [r9, #CPU_SI] |
| mov pc, r11 | mov pc, r11 |
| Line 1115 scasb CPUWORK #7 | Line 1118 scasb CPUWORK #7 |
| addeq r6, r5, #1 | addeq r6, r5, #1 |
| subne r6, r5, #1 | subne r6, r5, #1 |
| add r0, r5, r0 | add r0, r5, r0 |
| bl i286_memoryread | bl i286a_memoryread |
| ldrb r5, [r9, #CPU_AL] | ldrb r5, [r9, #CPU_AL] |
| strh r6, [r9, #CPU_DI] | strh r6, [r9, #CPU_DI] |
| SUB8 r5, r0 | SUB8 r5, r0 |
| Line 1128 scasw CPUWORK #7 | Line 1131 scasw CPUWORK #7 |
| addeq r6, r5, #2 | addeq r6, r5, #2 |
| subne r6, r5, #2 | subne r6, r5, #2 |
| add r0, r5, r0 | add r0, r5, r0 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| ldrh r5, [r9, #CPU_AX] | ldrh r5, [r9, #CPU_AX] |
| strh r6, [r9, #CPU_DI] | strh r6, [r9, #CPU_DI] |
| SUB16 r5, r0 | SUB16 r5, r0 |
| Line 1143 ret_near_d16 GETPC16 | Line 1146 ret_near_d16 GETPC16 |
| add r0, r1, r2 | add r0, r1, r2 |
| add r3, r3, #2 | add r3, r3, #2 |
| strh r3, [r9, #CPU_SP] | strh r3, [r9, #CPU_SP] |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| mov r8, r8 lsl #16 | mov r8, r8 lsl #16 |
| mov r8, r8 lsr #16 | mov r8, r8 lsr #16 |
| orr r8, r8, r0 lsl #16 | orr r8, r8, r0 lsl #16 |
| Line 1157 ret_near CPUWORK #11 | Line 1160 ret_near CPUWORK #11 |
| add r0, r1, r0 | add r0, r1, r0 |
| strh r2, [r9, #CPU_SP] | strh r2, [r9, #CPU_SP] |
| mov r8, r8 lsr #16 | mov r8, r8 lsr #16 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| orr r8, r8, r0 lsl #16 | orr r8, r8, r0 lsl #16 |
| mov pc, r11 | mov pc, r11 |
| Line 1170 les_r16_ea GETPC8 | Line 1173 les_r16_ea GETPC8 |
| add r4, r0, #2 | add r4, r0, #2 |
| add r0, r0, r6 | add r0, r0, r6 |
| bic r4, r4, #(1 << 16) | bic r4, r4, #(1 << 16) |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| strh r0, [r5, #CPU_REG] | strh r0, [r5, #CPU_REG] |
| add r0, r4, r6 | add r0, r4, r6 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| mov r1, r0 lsl #4 | 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 1191 lds_r16_ea GETPC8 | Line 1194 lds_r16_ea GETPC8 |
| add r4, r0, #2 | add r4, r0, #2 |
| add r0, r0, r6 | add r0, r0, r6 |
| bic r4, r4, #(1 << 16) | bic r4, r4, #(1 << 16) |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| strh r0, [r5, #CPU_REG] | strh r0, [r5, #CPU_REG] |
| add r0, r4, r6 | add r0, r4, r6 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| mov r1, r0 lsl #4 | mov r1, r0 lsl #4 |
| strh r0, [r9, #CPU_DS] | strh r0, [r9, #CPU_DS] |
| str r1, [r9, #CPU_DS_BASE] | str r1, [r9, #CPU_DS_BASE] |
| Line 1211 mov_ea8_d8 GETPC8 | Line 1214 mov_ea8_d8 GETPC8 |
| mov r1, r0 | mov r1, r0 |
| mov r0, r4 | mov r0, r4 |
| mov lr, r11 | mov lr, r11 |
| b i286_memorywrite | b i286a_memorywrite |
| med8_r CPUWORK #2 | med8_r CPUWORK #2 |
| R8DST r0, r4 | R8DST r0, r4 |
| GETPC8 | GETPC8 |
| Line 1228 mov_ea16_d16 GETPC8 | Line 1231 mov_ea16_d16 GETPC8 |
| mov r1, r0 | mov r1, r0 |
| mov r0, r4 | mov r0, r4 |
| mov lr, r11 | mov lr, r11 |
| b i286_memorywrite_w | b i286a_memorywrite_w |
| med16_r CPUWORK #2 | med16_r CPUWORK #2 |
| R16DST r0, r4 | R16DST r0, r4 |
| GETPC16 | GETPC16 |
| Line 1242 enter ldrh r4, [r9, #CPU_SP] | Line 1245 enter ldrh r4, [r9, #CPU_SP] |
| addcc r4, r4, #&10000 | addcc r4, r4, #&10000 |
| mov r1, r5 | mov r1, r5 |
| add r0, r4, r0 | add r0, r4, r0 |
| bl i286_memorywrite_w | bl i286a_memorywrite_w |
| GETPC16 | GETPC16 |
| mov r6, r0 | mov r6, r0 |
| GETPC8 | GETPC8 |
| Line 1265 enterlv1 cmp r0, #1 | Line 1268 enterlv1 cmp r0, #1 |
| sub r2, r4, r6 | sub r2, r4, r6 |
| mov lr, r11 | mov lr, r11 |
| strh r2, [r9, #CPU_SP] | strh r2, [r9, #CPU_SP] |
| bl i286_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 |
| CPUWORK r1 | CPUWORK r1 |
| Line 1282 enterlv2 mov r1, r0, lsl #2 | Line 1285 enterlv2 mov r1, r0, lsl #2 |
| mov r1, r5 | mov r1, r5 |
| mov r5, r5 lsl #16 | mov r5, r5 lsl #16 |
| add r0, r11, r2 | add r0, r11, r2 |
| bl i286_memorywrite_w | bl i286a_memorywrite_w |
| entlv2lp sub r5, r5, #(2 << 16) | entlv2lp sub r5, r5, #(2 << 16) |
| sub r4, r4, #(2 << 16) | sub r4, r4, #(2 << 16) |
| add r0, r11, r5 lsr #16 | add r0, r11, r5 lsr #16 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| mov r1, r0 | mov r1, r0 |
| add r0, r11, r4 | add r0, r11, r4 |
| bl i286_memorywrite_w | bl i286a_memorywrite_w |
| subs r6, r6, #1 | subs r6, r6, #1 |
| bne entlv2lp | bne entlv2lp |
| ldr pc, [sp], #4 | ldr pc, [sp], #4 |
| Line 1299 leave ldrh r1, [r9, #CPU_BP] | Line 1302 leave ldrh r1, [r9, #CPU_BP] |
| CPUWORK #5 | CPUWORK #5 |
| add r4, r1, #2 | add r4, r1, #2 |
| add r0, r1, r0 | add r0, r1, r0 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| strh r4, [r9, #CPU_SP] | strh r4, [r9, #CPU_SP] |
| strh r0, [r9, #CPU_BP] | strh r0, [r9, #CPU_BP] |
| mov pc, r11 | mov pc, r11 |
| Line 1313 ret_far_d16 CPUWORK #15 | Line 1316 ret_far_d16 CPUWORK #15 |
| ; | ; |
| add r0, r4, r5 | add r0, r4, r5 |
| add r4, r4, #2 | add r4, r4, #2 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| mov r8, r8 lsl #16 | mov r8, r8 lsl #16 |
| mov r8, r8 lsr #16 | mov r8, r8 lsr #16 |
| orr r8, r8, r0 lsl #16 | orr r8, r8, r0 lsl #16 |
| bic r4, r4, #(1 << 16) | bic r4, r4, #(1 << 16) |
| add r0, r4, r5 | add r0, r4, r5 |
| add r4, r4, #2 | add r4, r4, #2 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| add r4, r6, r4 | add r4, r6, r4 |
| mov r1, r0 lsl #4 | mov r1, r0 lsl #4 |
| strh r4, [r9, #CPU_SP] | strh r4, [r9, #CPU_SP] |
| Line 1334 ret_far CPUWORK #15 | Line 1337 ret_far CPUWORK #15 |
| ; | ; |
| add r0, r4, r5 | add r0, r4, r5 |
| add r4, r4, #2 | add r4, r4, #2 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| mov r8, r8 lsl #16 | mov r8, r8 lsl #16 |
| mov r8, r8 lsr #16 | mov r8, r8 lsr #16 |
| orr r8, r8, r0 lsl #16 | orr r8, r8, r0 lsl #16 |
| bic r4, r4, #(1 << 16) | bic r4, r4, #(1 << 16) |
| add r0, r4, r5 | add r0, r4, r5 |
| add r4, r4, #2 | add r4, r4, #2 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| mov r1, r0 lsl #4 | mov r1, r0 lsl #4 |
| strh r4, [r9, #CPU_SP] | strh r4, [r9, #CPU_SP] |
| strh r0, [r9, #CPU_CS] | strh r0, [r9, #CPU_CS] |
| Line 1370 iret bl extirq_pop | Line 1373 iret bl extirq_pop |
| ; | ; |
| add r4, r1, #2 | add r4, r1, #2 |
| add r0, r1, r5 | add r0, r1, r5 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| bic r4, r4, #(1 << 16) | bic r4, r4, #(1 << 16) |
| mov r8, r0 lsl #16 | mov r8, r0 lsl #16 |
| add r0, r4, r5 | add r0, r4, r5 |
| add r4, r4, #2 | add r4, r4, #2 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| mov r1, r0 lsl #4 | mov r1, r0 lsl #4 |
| strh r0, [r9, #CPU_CS] | strh r0, [r9, #CPU_CS] |
| str r1, [r9, #CPU_CS_BASE] | str r1, [r9, #CPU_CS_BASE] |
| bic r4, r4, #(1 << 16) | bic r4, r4, #(1 << 16) |
| add r0, r4, r5 | add r0, r4, r5 |
| add r4, r4, #2 | add r4, r4, #2 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| strh r4, [r9, #CPU_SP] | strh r4, [r9, #CPU_SP] |
| mov r2, #3 | mov r2, #3 |
| bic r1, r0, #&f000 ; i286 | bic r1, r0, #&f000 ; i286 |
| Line 1455 xlat ldrb r0, [r9, #CPU_AL] | Line 1458 xlat ldrb r0, [r9, #CPU_AL] |
| add r0, r1, r0 | add r0, r1, r0 |
| bic r0, r0, #(1 << 16) | bic r0, r0, #(1 << 16) |
| add r0, r2, r0 | add r0, r2, r0 |
| bl i286_memoryread | bl i286a_memoryread |
| strb r0, [r9, #CPU_AL] | strb r0, [r9, #CPU_AL] |
| mov pc, r11 | mov pc, r11 |
| Line 1562 call_near CPUWORK #7 | Line 1565 call_near CPUWORK #7 |
| add r8, r8, r0 lsl #16 | add r8, r8, r0 lsl #16 |
| add r0, r3, r2 lsr #16 | add r0, r3, r2 lsr #16 |
| mov lr, r11 | mov lr, r11 |
| b i286_memorywrite_w | b i286a_memorywrite_w |
| jmp_near ldr r4, [r9, #CPU_CS_BASE] | jmp_near ldr r4, [r9, #CPU_CS_BASE] |
| add r5, r8, #(2 << 16) | add r5, r8, #(2 << 16) |
| CPUWORK #7 | CPUWORK #7 |
| add r0, r4, r8 lsr #16 | add r0, r4, r8 lsr #16 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| add r8, r5, r0 lsl #16 | add r8, r5, r0 lsl #16 |
| mov pc, r11 | mov pc, r11 |
| Line 1577 jmp_far CPUWORK #11 | Line 1580 jmp_far CPUWORK #11 |
| add r5, r8, #(2 << 16) | add r5, r8, #(2 << 16) |
| mov r6, r8 lsl #16 | mov r6, r8 lsl #16 |
| add r0, r4, r8 lsr #16 | add r0, r4, r8 lsr #16 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| mov r8, r0 lsl #16 | mov r8, r0 lsl #16 |
| add r0, r4, r5 lsr #16 | add r0, r4, r5 lsr #16 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| add r8, r8, r6 lsr #16 | add r8, r8, r6 lsr #16 |
| mov r1, r0 lsl #4 | mov r1, r0 lsl #4 |
| strh r0, [r9, #CPU_CS] | strh r0, [r9, #CPU_CS] |
| Line 1681 i286a_step stmdb sp!, {r4 - r11, lr} | Line 1684 i286a_step stmdb sp!, {r4 - r11, lr} |
| adr r4, optbl1 | adr r4, optbl1 |
| add r0, r5, r8 lsr #16 | add r0, r5, r8 lsr #16 |
| bl i286_memoryread | bl i286a_memoryread |
| ldr r1, [r4, r0 lsl #2] | ldr r1, [r4, r0 lsl #2] |
| add r8, r8, #(1 << 16) | add r8, r8, #(1 << 16) |
| mov r11, pc | mov r11, pc |
| Line 1693 i286a_step stmdb sp!, {r4 - r11, lr} | Line 1696 i286a_step stmdb sp!, {r4 - r11, lr} |
| i286a stmdb sp!, {r4 - r11, lr} | i286a stmdb sp!, {r4 - r11, lr} |
| ldr r9, ias_r9 | ldr r9, ias_r9 |
| ldr r1, ias_r1 | ldr r2, ias_r1 |
| ldr r10, ias_r10 | ldr r10, ias_r10 |
| ldr r5, [r9, #CPU_CS_BASE] | |
| ldr r8, [r9, #CPU_FLAG] | ldr r8, [r9, #CPU_FLAG] |
| ldr r5, [r9, #CPU_CS_BASE] | |
| ldr r1, [r2, #DMAC_WORKING] | |
| and r0, r8, #(I_FLAG + T_FLAG) | |
| cmp r0, #(I_FLAG + T_FLAG) | |
| beq i286awithtrap | |
| cmp r1, #0 | |
| bne i286awithdma | |
| adr r4, optbl1 | adr r4, optbl1 |
| i286a_lp add r0, r5, r8 lsr #16 | i286a_lp add r0, r5, r8 lsr #16 |
| bl i286_memoryread | bl i286a_memoryread |
| ldr r1, [r4, r0 lsl #2] | ldr r1, [r4, r0 lsl #2] |
| add r8, r8, #(1 << 16) | add r8, r8, #(1 << 16) |
| mov r11, pc | mov r11, pc |
| Line 1716 ias_r9 dcd i286core - CPU_REG | Line 1725 ias_r9 dcd i286core - CPU_REG |
| ias_r1 dcd dmac | ias_r1 dcd dmac |
| ias_r10 dcd _szpcflag8 | ias_r10 dcd _szpcflag8 |
| i286awithdma adr r4, optbl1 | |
| i286awdma_lp add r0, r5, r8 lsr #16 | |
| bl i286a_memoryread | |
| ldr r1, [r4, r0 lsl #2] | |
| add r8, r8, #(1 << 16) | |
| mov r11, pc | |
| mov pc, r1 | |
| bl dmap_i286 | |
| ldr r7, [r9, #CPU_REMAINCLOCK] | |
| ldr r5, [r9, #CPU_CS_BASE] | |
| adr r4, optbl1 | |
| cmp r7, #0 | |
| bgt i286awdma_lp | |
| str r8, [r9, #CPU_FLAG] | |
| ldmia sp!, {r4 - r11, pc} | |
| i286awithtrap adr r4, optbl1 | |
| i286awtrp_lp add r0, r5, r8 lsr #16 | |
| bl i286a_memoryread | |
| ldr r1, [r4, r0 lsl #2] | |
| add r8, r8, #(1 << 16) | |
| mov r11, pc | |
| mov pc, r1 | |
| bl dmap_i286 | |
| and r0, r8, #(I_FLAG + T_FLAG) | |
| cmp r0, #(I_FLAG + T_FLAG) | |
| beq i286a_trapint | |
| i286a_trapintr str r8, [r9, #CPU_FLAG] | |
| ldmia sp!, {r4 - r11, pc} | |
| optbl1 dcd add_ea_r8 ; 00 | optbl1 dcd add_ea_r8 ; 00 |
| dcd add_ea_r16 | dcd add_ea_r16 |
| Line 2004 $label ldr r1, [r9, $b] | Line 2042 $label ldr r1, [r9, $b] |
| add r6, r6, #1 | add r6, r6, #1 |
| cmp r6, #MAX_PREFIX | cmp r6, #MAX_PREFIX |
| bcs prefix_fault | bcs prefix_fault |
| bl i286_memoryread | bl i286a_memoryread |
| ldr r1, [r4, r0 lsl #2] | ldr r1, [r4, r0 lsl #2] |
| add r8, r8, #(1 << 16) | add r8, r8, #(1 << 16) |
| strb r6, [r9, #CPU_PREFIX] | strb r6, [r9, #CPU_PREFIX] |
| Line 2041 repne ldrb r6, [r9, #CPU_PREFIX] | Line 2079 repne ldrb r6, [r9, #CPU_PREFIX] |
| add r6, r6, #1 | add r6, r6, #1 |
| cmp r6, #MAX_PREFIX | cmp r6, #MAX_PREFIX |
| bcs prefix_fault | bcs prefix_fault |
| bl i286_memoryread | bl i286a_memoryread |
| ldr r1, [r4, r0 lsl #2] | ldr r1, [r4, r0 lsl #2] |
| add r8, r8, #(1 << 16) | add r8, r8, #(1 << 16) |
| strb r6, [r9, #CPU_PREFIX] | strb r6, [r9, #CPU_PREFIX] |
| Line 2331 repe ldrb r6, [r9, #CPU_PREFIX] | Line 2369 repe ldrb r6, [r9, #CPU_PREFIX] |
| add r6, r6, #1 | add r6, r6, #1 |
| cmp r6, #MAX_PREFIX | cmp r6, #MAX_PREFIX |
| bcs prefix_fault | bcs prefix_fault |
| bl i286_memoryread | bl i286a_memoryread |
| ldr r1, [r4, r0 lsl #2] | ldr r1, [r4, r0 lsl #2] |
| add r8, r8, #(1 << 16) | add r8, r8, #(1 << 16) |
| strb r6, [r9, #CPU_PREFIX] | strb r6, [r9, #CPU_PREFIX] |