--- np2/i286a/i286aop.inc 2003/12/21 23:27:08 1.8 +++ np2/i286a/i286aop.inc 2005/03/19 21:02:05 1.13 @@ -5,8 +5,8 @@ $label EAREG8 r12 ldrb r6, [r12, #CPU_REG] cmp r0, #&c0 bcc $label.1 - CPUWORK $regclk R8SRC r0, r5 + CPUWORK $regclk ldrb r4, [r5, #CPU_REG] $alu r4, r6 strb r1, [r5, #CPU_REG] @@ -41,10 +41,7 @@ $label EAREG16 r12 mov pc, r11 $label.1 CPUWORK $memclk bl i286a_ea - tst r0, #1 - bne $label.2 - cmp r0, #I286_MEMWRITEMAX - bcs $label.2 + ACCWORD r0, $label.2 ldrh r4, [r9, r0] $alu r4, r6 strh r1, [r9, r0] @@ -60,8 +57,8 @@ $label.2 mov r5, r0 MACRO $label OP_R8_EA $alu, $regclk, $memclk $label REG8EA r6, $regclk, $memclk - ldrb r2, [r6, #CPU_REG] - $alu r2, r0 + ldrb r4, [r6, #CPU_REG] + $alu r4, r0 strb r1, [r6, #CPU_REG] mov pc, r11 MEND @@ -69,8 +66,8 @@ $label REG8EA r6, $regclk, $memclk MACRO $label OP_R16_EA $alu, $regclk, $memclk $label REG16EA r6, $regclk, $memclk - ldrh r2, [r6, #CPU_REG] - $alu r2, r0 + ldrh r4, [r6, #CPU_REG] + $alu r4, r0 strh r1, [r6, #CPU_REG] mov pc, r11 MEND @@ -79,8 +76,8 @@ $label REG16EA r6, $regclk, $memclk $label OP_AL_D8 $alu, $clk $label CPUWORK $clk GETPCF8 - ldrb r2, [r9, #CPU_AL] - $alu r2, r0 + ldrb r4, [r9, #CPU_AL] + $alu r4, r0 strb r1, [r9, #CPU_AL] mov pc, r11 MEND @@ -89,8 +86,8 @@ $label CPUWORK $clk $label OP_AX_D16 $alu, $clk $label CPUWORK $clk GETPC16 - ldrh r2, [r9, #CPU_AX] - $alu r2, r0 + ldrh r4, [r9, #CPU_AX] + $alu r4, r0 strh r1, [r9, #CPU_AX] mov pc, r11 MEND @@ -132,10 +129,7 @@ $label EAREG16 r12 mov pc, r11 $label.1 CPUWORK $memclk bl i286a_ea - tst r0, #1 - bne $label.2 - cmp r0, #I286_MEMWRITEMAX - bcs $label.2 + ACCWORD r0, $label.2 ldrh r4, [r9, r0] $alu r4, r6 mov pc, r11 @@ -146,17 +140,17 @@ $label.2 bl i286a_memoryread_w MACRO $label S_R8_EA $alu, $regclk, $memclk -$label REG8EA r5, $regclk, $memclk - ldrb r2, [r5, #CPU_REG] - $alu r2, r0 +$label REG8EA r6, $regclk, $memclk + ldrb r4, [r6, #CPU_REG] + $alu r4, r0 mov pc, r11 MEND MACRO $label S_R16_EA $alu, $regclk, $memclk $label REG16EA r6, $regclk, $memclk - ldrh r2, [r6, #CPU_REG] - $alu r2, r0 + ldrh r4, [r6, #CPU_REG] + $alu r4, r0 mov pc, r11 MEND @@ -164,8 +158,8 @@ $label REG16EA r6, $regclk, $memclk $label S_AL_D8 $alu, $clk $label CPUWORK $clk GETPC8 - ldrb r2, [r9, #CPU_AL] - $alu r2, r0 + ldrb r4, [r9, #CPU_AL] + $alu r4, r0 mov pc, r11 MEND @@ -173,8 +167,8 @@ $label CPUWORK $clk $label S_AX_D16 $alu, $clk $label CPUWORK $clk GETPC16 - ldrh r2, [r9, #CPU_AX] - $alu r2, r0 + ldrh r4, [r9, #CPU_AX] + $alu r4, r0 mov pc, r11 MEND @@ -217,10 +211,7 @@ $label cmp r0, #&c0 mov pc, r11 $label.1 CPUWORK $memclk bl i286a_ea - tst r0, #1 - bne $label.2 - cmp r0, #I286_MEMWRITEMAX - bcs $label.2 + ACCWORD r0, $label.2 ldrh r4, [r9, r0] $alu r4 strh r1, [r9, r0] @@ -254,9 +245,9 @@ $label CPUWORK $clk MACRO $label XCHG_AX $r, $clk -$label CPUWORK $clk - ldrh r0, [r9, #CPU_AX] +$label ldrh r0, [r9, #CPU_AX] ldrh r1, [r9, $r] + CPUWORK $clk strh r0, [r9, $r] strh r1, [r9, #CPU_AX] mov pc, r11 @@ -265,16 +256,16 @@ $label CPUWORK $clk MACRO $label MOVIMM8 $r, $clk -$label CPUWORK $clk - GETPC8 +$label GETPCF8 + CPUWORK $clk strb r0, [r9, $r] mov pc, r11 MEND MACRO $label MOVIMM16 $r, $clk -$label CPUWORK $clk - GETPC16 +$label GETPCF16 + CPUWORK $clk strh r0, [r9, $r] mov pc, r11 MEND @@ -282,9 +273,9 @@ $label CPUWORK $clk MACRO $label SP_PUSH $clk -$label CPUWORK $clk - ldrh r1, [r9, #CPU_SP] +$label ldrh r1, [r9, #CPU_SP] ldr r2, [r9, #CPU_SS_BASE] + CPUWORK $clk sub r0, r1, #2 mov r3, r0 lsl #16 strh r0, [r9, #CPU_SP] @@ -306,21 +297,26 @@ $label CPUWORK $clk MACRO $label SEGPOP $s, $b, $clk -$label POP $clk - mov r1, r0 lsl #4 +$label ldrh r6, [r9, #CPU_MSW] + POP $clk strh r0, [r9, $s] - str r1, [r9, $b] + tst r6, #MSW_PE + moveq r0, r0 lsl #4 + blne i286a_selector + str r0, [r9, $b] mov pc, r11 MEND MACRO $label SEGPOPFIX $s, $b, $f, $clk -$label POP $clk - mov r1, r0 lsl #4 +$label ldrh r6, [r9, #CPU_MSW] + POP $clk strh r0, [r9, $s] - str r1, [r9, $b] - str r1, [r9, $f] - mov pc, r11 + tst r6, #MSW_PE + moveq r0, r0 lsl #4 + blne i286a_selector + str r0, [r9, $b] + str r0, [r9, $f] MEND