|
|
| version 1.1, 2003/12/18 23:07:49 | version 1.4, 2003/12/26 00:11:51 |
|---|---|
| Line 2 | Line 2 |
| INCLUDE i286a.inc | INCLUDE i286a.inc |
| INCLUDE i286aalu.inc | INCLUDE i286aalu.inc |
| IMPORT _szpcflag8 | IMPORT iflags |
| 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 |
| Line 52 repinsblp ldrh r0, [r9, #CPU_DX] | Line 52 repinsblp ldrh r0, [r9, #CPU_DX] |
| mov r1, r0 | mov r1, r0 |
| CPUWORK #4 | CPUWORK #4 |
| add r0, r2, r5 lsr #16 | add r0, r2, r5 lsr #16 |
| bl i286_memorywrite | bl i286a_memorywrite |
| add r5, r5, r6 | add r5, r5, r6 |
| subs r4, r4, #1 | subs r4, r4, #1 |
| bne repinsblp | bne repinsblp |
| Line 78 repinswlp ldrh r0, [r9, #CPU_DX] | Line 78 repinswlp ldrh r0, [r9, #CPU_DX] |
| mov r1, r0 | mov r1, r0 |
| CPUWORK #4 | CPUWORK #4 |
| add r0, r2, r5 lsr #16 | add r0, r2, r5 lsr #16 |
| bl i286_memorywrite_w | bl i286a_memorywrite_w |
| add r5, r5, r6 | add r5, r5, r6 |
| subs r4, r4, #1 | subs r4, r4, #1 |
| bne repinswlp | bne repinswlp |
| Line 101 i286a_rep_outsb ldrh r4, [r9, #CPU_CX] | Line 101 i286a_rep_outsb ldrh r4, [r9, #CPU_CX] |
| rsbne r6, r6, #0 | rsbne r6, r6, #0 |
| repoutsblp CPUWORK #4 | repoutsblp CPUWORK #4 |
| add r0, r2, r5 lsr #16 | add r0, r2, r5 lsr #16 |
| bl i286_memoryread | bl i286a_memoryread |
| mov r1, r0 | mov r1, r0 |
| ldrh r0, [r9, #CPU_DX] | ldrh r0, [r9, #CPU_DX] |
| add r5, r5, r6 | add r5, r5, r6 |
| Line 130 i286a_rep_outsw ldrh r4, [r9, #CPU_CX] | Line 130 i286a_rep_outsw ldrh r4, [r9, #CPU_CX] |
| rsbne r6, r6, #0 | rsbne r6, r6, #0 |
| repoutswlp CPUWORK #4 | repoutswlp CPUWORK #4 |
| add r0, r2, r5 lsr #16 | add r0, r2, r5 lsr #16 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| mov r1, r0 | mov r1, r0 |
| ldrh r0, [r9, #CPU_DX] | ldrh r0, [r9, #CPU_DX] |
| add r5, r5, r6 | add r5, r5, r6 |
| Line 159 i286a_rep_movsb ldrh r4, [r9, #CPU_CX] | Line 159 i286a_rep_movsb ldrh r4, [r9, #CPU_CX] |
| tst r8, #D_FLAG | tst r8, #D_FLAG |
| rsbne r6, r6, #0 | rsbne r6, r6, #0 |
| repmovsblp add r0, r2, r11 lsr #16 | repmovsblp add r0, r2, r11 lsr #16 |
| bl i286_memoryread | bl i286a_memoryread |
| ldr r2, [r9, #CPU_ES_BASE] | ldr r2, [r9, #CPU_ES_BASE] |
| mov r1, r0 | mov r1, r0 |
| add r11, r11, r6 | add r11, r11, r6 |
| add r0, r2, r5 lsr #16 | add r0, r2, r5 lsr #16 |
| bl i286_memorywrite | bl i286a_memorywrite |
| add r5, r5, r6 | add r5, r5, r6 |
| CPUWKS #4 | CPUWKS #4 |
| blt repmovsbbreak | blt repmovsbbreak |
| Line 200 i286a_rep_movsw ldrh r4, [r9, #CPU_CX] | Line 200 i286a_rep_movsw ldrh r4, [r9, #CPU_CX] |
| tst r8, #D_FLAG | tst r8, #D_FLAG |
| rsbne r6, r6, #0 | rsbne r6, r6, #0 |
| repmovswlp add r0, r2, r11 lsr #16 | repmovswlp add r0, r2, r11 lsr #16 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| ldr r2, [r9, #CPU_ES_BASE] | ldr r2, [r9, #CPU_ES_BASE] |
| mov r1, r0 | mov r1, r0 |
| add r11, r11, r6 | add r11, r11, r6 |
| add r0, r2, r5 lsr #16 | add r0, r2, r5 lsr #16 |
| bl i286_memorywrite_w | bl i286a_memorywrite_w |
| add r5, r5, r6 | add r5, r5, r6 |
| CPUWKS #4 | CPUWKS #4 |
| blt repmovswbreak | blt repmovswbreak |
| Line 243 i286a_rep_lodsb ldrh r4, [r9, #CPU_CX] | Line 243 i286a_rep_lodsb ldrh r4, [r9, #CPU_CX] |
| rsbne r6, r6, #0 | rsbne r6, r6, #0 |
| replodsblp add r0, r11, r5 lsr #16 | replodsblp add r0, r11, r5 lsr #16 |
| add r5, r5, r6 | add r5, r5, r6 |
| bl i286_memoryread | bl i286a_memoryread |
| CPUWORK #4 | CPUWORK #4 |
| subs r4, r4, #1 | subs r4, r4, #1 |
| bne replodsblp | bne replodsblp |
| Line 266 i286a_rep_lodsw ldrh r4, [r9, #CPU_CX] | Line 266 i286a_rep_lodsw ldrh r4, [r9, #CPU_CX] |
| rsbne r6, r6, #0 | rsbne r6, r6, #0 |
| replodswlp add r0, r11, r5 lsr #16 | replodswlp add r0, r11, r5 lsr #16 |
| add r5, r5, r6 | add r5, r5, r6 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| CPUWORK #4 | CPUWORK #4 |
| subs r4, r4, #1 | subs r4, r4, #1 |
| bne replodswlp | bne replodswlp |
| Line 290 i286a_rep_stosb ldrh r4, [r9, #CPU_CX] | Line 290 i286a_rep_stosb ldrh r4, [r9, #CPU_CX] |
| repstosblp ldrb r1, [r9, #CPU_AL] | repstosblp ldrb r1, [r9, #CPU_AL] |
| add r0, r11, r5 lsr #16 | add r0, r11, r5 lsr #16 |
| add r5, r5, r6 | add r5, r5, r6 |
| bl i286_memorywrite | bl i286a_memorywrite |
| CPUWKS #3 | CPUWKS #3 |
| ble repstosbbreak | ble repstosbbreak |
| subs r4, r4, #1 | subs r4, r4, #1 |
| Line 319 i286a_rep_stosw ldrh r4, [r9, #CPU_CX] | Line 319 i286a_rep_stosw ldrh r4, [r9, #CPU_CX] |
| repstoswlp ldrh r1, [r9, #CPU_AX] | repstoswlp ldrh r1, [r9, #CPU_AX] |
| add r0, r11, r5 lsr #16 | add r0, r11, r5 lsr #16 |
| add r5, r5, r6 | add r5, r5, r6 |
| bl i286_memorywrite_w | bl i286a_memorywrite_w |
| CPUWKS #3 | CPUWKS #3 |
| blt repstoswbreak | blt repstoswbreak |
| subs r4, r4, #1 | subs r4, r4, #1 |
| Line 349 i286a_repe_cmpsb | Line 349 i286a_repe_cmpsb |
| tst r8, #D_FLAG | tst r8, #D_FLAG |
| rsbne r6, r6, #0 | rsbne r6, r6, #0 |
| repecmpsblp add r0, r2, r11 lsr #16 | repecmpsblp add r0, r2, r11 lsr #16 |
| bl i286_memoryread | bl i286a_memoryread |
| ldr r2, [r9, #CPU_ES_BASE] | ldr r2, [r9, #CPU_ES_BASE] |
| mov r10, r0 lsl #24 | mov r10, r0 lsl #24 |
| add r11, r11, r6 | add r11, r11, r6 |
| add r0, r2, r5 lsr #16 | add r0, r2, r5 lsr #16 |
| bl i286_memoryread | bl i286a_memoryread |
| add r5, r5, r6 | add r5, r5, r6 |
| CPUWORK #9 | CPUWORK #9 |
| ldr r2, [r9, #CPU_DS_FIX] | ldr r2, [r9, #CPU_DS_FIX] |
| Line 364 repecmpsblp add r0, r2, r11 lsr #16 | Line 364 repecmpsblp add r0, r2, r11 lsr #16 |
| beq repecmpsblp | beq repecmpsblp |
| repecmpsbbreak bic r8, r8, #&ff | repecmpsbbreak bic r8, r8, #&ff |
| subs r1, r10, r0 lsl #24 | subs r1, r10, r0 lsl #24 |
| eor r12, r1, r10 | |
| ldr r10, repecmpsb_flag | ldr r10, repecmpsb_flag |
| orrvs r8, r8, #O_FLAG | orrvs r8, r8, #O_FLAG |
| bicvc r8, r8, #O_FLAG | bicvc r8, r8, #O_FLAG |
| addcc r8, r8, #C_FLAG | addcc r8, r8, #C_FLAG |
| eor r12, r1, r10 | |
| ldrb r2, [r10, r1 lsr #24] | ldrb r2, [r10, r1 lsr #24] |
| eor r12, r1, r0 lsl #24 | eor r12, r1, r0 lsl #24 |
| and r12, r12, #(A_FLAG << 24) | and r12, r12, #(A_FLAG << 24) |
| Line 380 repecmpsbbreak bic r8, r8, #&ff | Line 380 repecmpsbbreak bic r8, r8, #&ff |
| strh r4, [r9, #CPU_CX] | strh r4, [r9, #CPU_CX] |
| str r0, [r9, #CPU_SI] | str r0, [r9, #CPU_SI] |
| ldr pc, [sp], #4 | ldr pc, [sp], #4 |
| repecmpsb_flag dcd _szpcflag8 | repecmpsb_flag dcd iflags |
| i286a_repe_cmpsw | i286a_repe_cmpsw |
| ldrh r4, [r9, #CPU_CX] | ldrh r4, [r9, #CPU_CX] |
| Line 395 i286a_repe_cmpsw | Line 395 i286a_repe_cmpsw |
| tst r8, #D_FLAG | tst r8, #D_FLAG |
| rsbne r6, r6, #0 | rsbne r6, r6, #0 |
| repecmpswlp add r0, r2, r11 lsr #16 | repecmpswlp add r0, r2, r11 lsr #16 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| ldr r2, [r9, #CPU_ES_BASE] | ldr r2, [r9, #CPU_ES_BASE] |
| mov r10, r0 lsl #16 | mov r10, r0 lsl #16 |
| add r11, r11, r6 | add r11, r11, r6 |
| add r0, r2, r5 lsr #16 | add r0, r2, r5 lsr #16 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| add r5, r5, r6 | add r5, r5, r6 |
| CPUWORK #9 | CPUWORK #9 |
| ldr r2, [r9, #CPU_DS_FIX] | ldr r2, [r9, #CPU_DS_FIX] |
| Line 410 repecmpswlp add r0, r2, r11 lsr #16 | Line 410 repecmpswlp add r0, r2, r11 lsr #16 |
| beq repecmpswlp | beq repecmpswlp |
| repecmpswbreak bic r8, r8, #&ff | repecmpswbreak bic r8, r8, #&ff |
| subs r1, r10, r0 lsl #16 | subs r1, r10, r0 lsl #16 |
| eor r12, r1, r10 | |
| and r3, r1, #(&ff << 16) | |
| ldr r10, repecmpsw_flag | ldr r10, repecmpsw_flag |
| orrvs r8, r8, #O_FLAG | orrvs r8, r8, #O_FLAG |
| bicvc r8, r8, #O_FLAG | bicvc r8, r8, #O_FLAG |
| addcc r8, r8, #C_FLAG | addcc r8, r8, #C_FLAG |
| addmi r8, r8, #S_FLAG | addmi r8, r8, #S_FLAG |
| addeq r8, r8, #Z_FLAG | addeq r8, r8, #Z_FLAG |
| and r3, r1, #(&ff << 16) | |
| eor r12, r1, r10 | |
| ldrb r2, [r10, r3 lsr #16] | ldrb r2, [r10, r3 lsr #16] |
| eor r12, r1, r0 lsl #16 | eor r12, r1, r0 lsl #16 |
| and r12, r12, #(A_FLAG << 16) | and r12, r12, #(A_FLAG << 16) |
| Line 430 repecmpswbreak bic r8, r8, #&ff | Line 430 repecmpswbreak bic r8, r8, #&ff |
| strh r4, [r9, #CPU_CX] | strh r4, [r9, #CPU_CX] |
| str r0, [r9, #CPU_SI] | str r0, [r9, #CPU_SI] |
| ldr pc, [sp], #4 | ldr pc, [sp], #4 |
| repecmpsw_flag dcd _szpcflag8 | repecmpsw_flag dcd iflags |
| i286a_repne_cmpsb | i286a_repne_cmpsb |
| Line 446 i286a_repne_cmpsb | Line 446 i286a_repne_cmpsb |
| tst r8, #D_FLAG | tst r8, #D_FLAG |
| rsbne r6, r6, #0 | rsbne r6, r6, #0 |
| repnecmpsblp add r0, r2, r11 lsr #16 | repnecmpsblp add r0, r2, r11 lsr #16 |
| bl i286_memoryread | bl i286a_memoryread |
| ldr r2, [r9, #CPU_ES_BASE] | ldr r2, [r9, #CPU_ES_BASE] |
| mov r10, r0 lsl #24 | mov r10, r0 lsl #24 |
| add r11, r11, r6 | add r11, r11, r6 |
| add r0, r2, r5 lsr #16 | add r0, r2, r5 lsr #16 |
| bl i286_memoryread | bl i286a_memoryread |
| add r5, r5, r6 | add r5, r5, r6 |
| CPUWORK #9 | CPUWORK #9 |
| ldr r2, [r9, #CPU_DS_FIX] | ldr r2, [r9, #CPU_DS_FIX] |
| Line 461 repnecmpsblp add r0, r2, r11 lsr #16 | Line 461 repnecmpsblp add r0, r2, r11 lsr #16 |
| bne repnecmpsblp | bne repnecmpsblp |
| repnecmpsbbreak bic r8, r8, #&ff | repnecmpsbbreak bic r8, r8, #&ff |
| subs r1, r10, r0 lsl #24 | subs r1, r10, r0 lsl #24 |
| eor r12, r1, r10 | |
| ldr r10, repnecmpsb_flag | ldr r10, repnecmpsb_flag |
| orrvs r8, r8, #O_FLAG | orrvs r8, r8, #O_FLAG |
| bicvc r8, r8, #O_FLAG | bicvc r8, r8, #O_FLAG |
| addcc r8, r8, #C_FLAG | addcc r8, r8, #C_FLAG |
| eor r12, r1, r10 | |
| ldrb r2, [r10, r1 lsr #24] | ldrb r2, [r10, r1 lsr #24] |
| eor r12, r1, r0 lsl #24 | eor r12, r1, r0 lsl #24 |
| and r12, r12, #(A_FLAG << 24) | and r12, r12, #(A_FLAG << 24) |
| Line 477 repnecmpsbbreak bic r8, r8, #&ff | Line 477 repnecmpsbbreak bic r8, r8, #&ff |
| strh r4, [r9, #CPU_CX] | strh r4, [r9, #CPU_CX] |
| str r0, [r9, #CPU_SI] | str r0, [r9, #CPU_SI] |
| ldr pc, [sp], #4 | ldr pc, [sp], #4 |
| repnecmpsb_flag dcd _szpcflag8 | repnecmpsb_flag dcd iflags |
| i286a_repne_cmpsw | i286a_repne_cmpsw |
| ldrh r4, [r9, #CPU_CX] | ldrh r4, [r9, #CPU_CX] |
| Line 492 i286a_repne_cmpsw | Line 492 i286a_repne_cmpsw |
| tst r8, #D_FLAG | tst r8, #D_FLAG |
| rsbne r6, r6, #0 | rsbne r6, r6, #0 |
| repnecmpswlp add r0, r2, r11 lsr #16 | repnecmpswlp add r0, r2, r11 lsr #16 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| ldr r2, [r9, #CPU_ES_BASE] | ldr r2, [r9, #CPU_ES_BASE] |
| mov r10, r0 lsl #16 | mov r10, r0 lsl #16 |
| add r11, r11, r6 | add r11, r11, r6 |
| add r0, r2, r5 lsr #16 | add r0, r2, r5 lsr #16 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| add r5, r5, r6 | add r5, r5, r6 |
| CPUWORK #9 | CPUWORK #9 |
| ldr r2, [r9, #CPU_DS_FIX] | ldr r2, [r9, #CPU_DS_FIX] |
| Line 507 repnecmpswlp add r0, r2, r11 lsr #16 | Line 507 repnecmpswlp add r0, r2, r11 lsr #16 |
| bne repnecmpswlp | bne repnecmpswlp |
| repnecmpswbreak bic r8, r8, #&ff | repnecmpswbreak bic r8, r8, #&ff |
| subs r1, r10, r0 lsl #16 | subs r1, r10, r0 lsl #16 |
| eor r12, r1, r10 | |
| and r3, r1, #(&ff << 16) | |
| ldr r10, repnecmpsw_flag | ldr r10, repnecmpsw_flag |
| orrvs r8, r8, #O_FLAG | orrvs r8, r8, #O_FLAG |
| bicvc r8, r8, #O_FLAG | bicvc r8, r8, #O_FLAG |
| addcc r8, r8, #C_FLAG | addcc r8, r8, #C_FLAG |
| addmi r8, r8, #S_FLAG | addmi r8, r8, #S_FLAG |
| addeq r8, r8, #Z_FLAG | addeq r8, r8, #Z_FLAG |
| and r3, r1, #(&ff << 16) | |
| eor r12, r1, r10 | |
| ldrb r2, [r10, r3 lsr #16] | ldrb r2, [r10, r3 lsr #16] |
| eor r12, r1, r0 lsl #16 | eor r12, r1, r0 lsl #16 |
| and r12, r12, #(A_FLAG << 16) | and r12, r12, #(A_FLAG << 16) |
| Line 527 repnecmpswbreak bic r8, r8, #&ff | Line 527 repnecmpswbreak bic r8, r8, #&ff |
| strh r4, [r9, #CPU_CX] | strh r4, [r9, #CPU_CX] |
| str r0, [r9, #CPU_SI] | str r0, [r9, #CPU_SI] |
| ldr pc, [sp], #4 | ldr pc, [sp], #4 |
| repnecmpsw_flag dcd _szpcflag8 | repnecmpsw_flag dcd iflags |
| i286a_repe_scasb | i286a_repe_scasb |
| Line 543 i286a_repe_scasb | Line 543 i286a_repe_scasb |
| rsbne r6, r6, #0 | rsbne r6, r6, #0 |
| repescasblp add r0, r11, r5 lsr #16 | repescasblp add r0, r11, r5 lsr #16 |
| add r5, r5, r6 | add r5, r5, r6 |
| bl i286_memoryread | bl i286a_memoryread |
| ldrb r3, [r9, #CPU_AL] | ldrb r2, [r9, #CPU_AL] |
| CPUWORK #8 | CPUWORK #8 |
| subs r4, r4, #1 | subs r4, r4, #1 |
| beq repescasbbreak | beq repescasbbreak |
| cmp r3, r0 | cmp r2, r0 |
| beq repescasblp | beq repescasblp |
| repescasbbreak SUB8 r3, r0 | repescasbbreak SUB8 r2, r0 |
| strh r4, [r9, #CPU_CX] | strh r4, [r9, #CPU_CX] |
| str r5, [r9, #CPU_SI] | str r5, [r9, #CPU_SI] |
| ldr pc, [sp], #4 | ldr pc, [sp], #4 |
| Line 568 i286a_repe_scasw | Line 568 i286a_repe_scasw |
| rsbne r6, r6, #0 | rsbne r6, r6, #0 |
| repescaswlp add r0, r11, r5 lsr #16 | repescaswlp add r0, r11, r5 lsr #16 |
| add r5, r5, r6 | add r5, r5, r6 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| ldrh r3, [r9, #CPU_AX] | ldrh r2, [r9, #CPU_AX] |
| CPUWORK #8 | CPUWORK #8 |
| subs r4, r4, #1 | subs r4, r4, #1 |
| beq repescaswbreak | beq repescaswbreak |
| cmp r3, r0 | cmp r2, r0 |
| beq repescaswlp | beq repescaswlp |
| repescaswbreak SUB16 r3, r0 | repescaswbreak SUB16 r2, r0 |
| strh r4, [r9, #CPU_CX] | strh r4, [r9, #CPU_CX] |
| str r5, [r9, #CPU_SI] | str r5, [r9, #CPU_SI] |
| ldr pc, [sp], #4 | ldr pc, [sp], #4 |
| Line 594 i286a_repne_scasb | Line 594 i286a_repne_scasb |
| rsbne r6, r6, #0 | rsbne r6, r6, #0 |
| repnescasblp add r0, r11, r5 lsr #16 | repnescasblp add r0, r11, r5 lsr #16 |
| add r5, r5, r6 | add r5, r5, r6 |
| bl i286_memoryread | bl i286a_memoryread |
| ldrb r3, [r9, #CPU_AL] | ldrb r2, [r9, #CPU_AL] |
| CPUWORK #8 | CPUWORK #8 |
| subs r4, r4, #1 | subs r4, r4, #1 |
| beq repnescasbbreak | beq repnescasbbreak |
| cmp r3, r0 | cmp r2, r0 |
| bne repnescasblp | bne repnescasblp |
| repnescasbbreak SUB8 r3, r0 | repnescasbbreak SUB8 r2, r0 |
| strh r4, [r9, #CPU_CX] | strh r4, [r9, #CPU_CX] |
| str r5, [r9, #CPU_SI] | str r5, [r9, #CPU_SI] |
| ldr pc, [sp], #4 | ldr pc, [sp], #4 |
| Line 619 i286a_repne_scasw | Line 619 i286a_repne_scasw |
| rsbne r6, r6, #0 | rsbne r6, r6, #0 |
| repnescaswlp add r0, r11, r5 lsr #16 | repnescaswlp add r0, r11, r5 lsr #16 |
| add r5, r5, r6 | add r5, r5, r6 |
| bl i286_memoryread_w | bl i286a_memoryread_w |
| ldrh r3, [r9, #CPU_AX] | ldrh r2, [r9, #CPU_AX] |
| CPUWORK #8 | CPUWORK #8 |
| subs r4, r4, #1 | subs r4, r4, #1 |
| beq repnescaswbreak | beq repnescaswbreak |
| cmp r3, r0 | cmp r2, r0 |
| beq repnescaswlp | bne repnescaswlp |
| repnescaswbreak SUB16 r3, r0 | repnescaswbreak SUB16 r2, r0 |
| strh r4, [r9, #CPU_CX] | strh r4, [r9, #CPU_CX] |
| str r5, [r9, #CPU_SI] | str r5, [r9, #CPU_SI] |
| ldr pc, [sp], #4 | ldr pc, [sp], #4 |