|
|
| version 1.2, 2003/12/17 10:41:06 | version 1.4, 2003/12/18 13:21:32 |
|---|---|
| Line 1 | Line 1 |
| INCLUDE i286a.inc | INCLUDE i286a.inc |
| INCLUDE i286aalu.inc | INCLUDE i286aalu.inc |
| INCLUDE i286aop.inc | |
| IMPORT _szpcflag8 | |
| IMPORT i286a_ea | IMPORT i286a_ea |
| IMPORT i286a_a | IMPORT i286a_a |
| IMPORT i286_memoryread | IMPORT i286_memoryread |
| Line 19 | Line 19 |
| i286aopfe GETPC8 | i286aopfe GETPC8 |
| tst r0, #(1 << 3) | tst r0, #(1 << 3) |
| bne decea8 | bne decea8 |
| incea8 OP_EA8 INC8, #2, #7 | |
| cmp r0, #&c0 | decea8 OP_EA8 DEC8, #2, #7 |
| bcc inc8m | |
| CPUWORK #2 | |
| R8SRC r0, r5 | |
| ldrb r4, [r5, #CPU_REG] | |
| INC8 r4 | |
| strb r1, [r5, #CPU_REG] | |
| mov pc, r11 | |
| inc8m CPUWORK #7 | |
| bl i286a_ea | |
| cmp r0, #I286_MEMWRITEMAX | |
| bcs inc8e | |
| ldrb r4, [r9, r0] | |
| INC8 r4 | |
| strb r1, [r9, r0] | |
| mov pc, r11 | |
| inc8e mov r5, r0 | |
| bl i286_memoryread | |
| INC8 r0 | |
| mov r0, r5 | |
| mov lr, r11 | |
| b i286_memorywrite | |
| decea8 cmp r0, #&c0 | |
| bcc dec8m | |
| CPUWORK #2 | |
| R8SRC r0, r5 | |
| ldrb r4, [r5, #CPU_REG] | |
| DEC8 r4 | |
| strb r1, [r5, #CPU_REG] | |
| mov pc, r11 | |
| dec8m CPUWORK #7 | |
| bl i286a_ea | |
| cmp r0, #I286_MEMWRITEMAX | |
| bcs dec8e | |
| ldrb r4, [r9, r0] | |
| DEC8 r4 | |
| strb r1, [r9, r0] | |
| mov pc, r11 | |
| dec8e mov r5, r0 | |
| bl i286_memoryread | |
| DEC8 r0 | |
| mov r0, r5 | |
| mov lr, r11 | |
| b i286_memorywrite | |
| ; ---- | ; ---- |
| Line 73 i286aopff GETPC8 | Line 29 i286aopff GETPC8 |
| and r12, r0, #(7 << 3) | and r12, r0, #(7 << 3) |
| adr r1, opefftbl | adr r1, opefftbl |
| ldr pc, [r1, r12 lsr #1] | ldr pc, [r1, r12 lsr #1] |
| opefftbl dcd incea16 | opefftbl dcd incea16 |
| dcd decea16 | dcd decea16 |
| dcd callea16 | dcd callea16 |
| Line 83 opefftbl dcd incea16 | Line 38 opefftbl dcd incea16 |
| dcd pushea16 | dcd pushea16 |
| dcd popea16 | dcd popea16 |
| incea16 cmp r0, #&c0 | incea16 OP_EA16 INC16, #2, #7 |
| bcc inc16m | decea16 OP_EA16 DEC16, #2, #7 |
| CPUWORK #2 | |
| R16SRC r0, r5 | |
| ldrh r4, [r5, #CPU_REG] | |
| INC16 r4 | |
| strh r1, [r5, #CPU_REG] | |
| mov pc, r11 | |
| inc16m CPUWORK #7 | |
| bl i286a_ea | |
| tst r0, #1 | |
| bne inc16e | |
| cmp r0, #I286_MEMWRITEMAX | |
| bcs inc16e | |
| ldrh r4, [r9, r0] | |
| INC16 r4 | |
| strh r1, [r9, r0] | |
| mov pc, r11 | |
| inc16e mov r5, r0 | |
| bl i286_memoryread_w | |
| INC16 r0 | |
| mov r0, r5 | |
| mov lr, r11 | |
| b i286_memorywrite_w | |
| decea16 cmp r0, #&c0 | |
| bcc dec16m | |
| CPUWORK #2 | |
| R16SRC r0, r5 | |
| ldrh r4, [r5, #CPU_REG] | |
| DEC16 r4 | |
| strh r1, [r5, #CPU_REG] | |
| mov pc, r11 | |
| dec16m CPUWORK #7 | |
| bl i286a_ea | |
| tst r0, #1 | |
| bne dec16e | |
| cmp r0, #I286_MEMWRITEMAX | |
| bcs dec16e | |
| ldrh r4, [r9, r0] | |
| DEC16 r4 | |
| strh r1, [r9, r0] | |
| mov pc, r11 | |
| dec16e mov r5, r0 | |
| bl i286_memoryread_w | |
| DEC16 r0 | |
| mov r0, r5 | |
| mov lr, r11 | |
| b i286_memorywrite_w | |
| callea16 cmp r0, #&c0 | callea16 cmp r0, #&c0 |
| bcc call16m | bcc call16m |
| Line 164 callfarea16 cmp r0, #&c0 | Line 72 callfarea16 cmp r0, #&c0 |
| 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 i286_memoryread_w ; ip |
| mov r5, r8 lsr #16 | mov r5, r8 lsr #16 |
| add r8, r8, r0 lsl #16 | |
| sub r8, r8, r5 lsl #16 | sub r8, r8, r5 lsl #16 |
| orr r8, r8, r0 lsl #16 | |
| add r0, r4, r6 | add r0, r4, r6 |
| bl i286_memoryread_w | bl i286_memoryread_w ; cs |
| mov r2, r0 lsl #4 | mov r2, r0 lsl #4 |
| ldrh r1, [r9, #CPU_CS] | ldrh r1, [r9, #CPU_CS] |
| strh r0, [r9, #CPU_CS] | strh r0, [r9, #CPU_CS] |
| str r2, [r9, #CPU_CS_BASE] | |
| ldrh r4, [r9, #CPU_SP] | ldrh r4, [r9, #CPU_SP] |
| ldr r6, [r9, #CPU_SS_BASE] | ldr r6, [r9, #CPU_SS_BASE] |
| str r2, [r9, #CPU_CS_BASE] | |
| subs r4, r4, #2 | subs r4, r4, #2 |
| addcc r4, r4, #&10000 | addcc r4, r4, #&10000 |
| add r0, r4, r6 | add r0, r4, r6 |
| bl i286_memorywrite_w | bl i286_memorywrite_w ; cs |
| subs r4, r4, #2 | subs r4, r4, #2 |
| addcc r4, r4, #&10000 | addcc r4, r4, #&10000 |
| add r0, r4, r6 | |
| strh r3, [r9, #CPU_SP] | |
| mov r1, r5 | mov r1, r5 |
| strh r4, [r9, #CPU_SP] | |
| add r0, r4, r6 | |
| mov lr, r11 | mov lr, r11 |
| b i286_memorywrite_w | b i286_memorywrite_w ; ip |
| callfar16r mov r6, #6 | callfar16r mov r6, #6 |
| sub r8, r8, #(2 << 16) | sub r8, r8, #(2 << 16) |
| b i286a_localint | b i286a_localint |