Further fix the V20/V30 ins() and outs() instructions.
This commit is contained in:
@@ -1960,18 +1960,17 @@ stos(int bits)
|
|||||||
static void
|
static void
|
||||||
ins(int bits)
|
ins(int bits)
|
||||||
{
|
{
|
||||||
cpu_state.eaaddr = DI;
|
cpu_state.eaaddr = DX;
|
||||||
cpu_io(bits, 0, cpu_state.eaaddr);
|
cpu_io(bits, 0, cpu_state.eaaddr);
|
||||||
DI = string_increment(bits);
|
stos(bits);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
outs(int bits)
|
outs(int bits)
|
||||||
{
|
{
|
||||||
cpu_state.eaaddr = SI;
|
lods(bits);
|
||||||
cpu_data = (bits == 16) ? AX : AL;
|
cpu_state.eaaddr = DX;
|
||||||
cpu_io(bits, 1, cpu_state.eaaddr);
|
cpu_io(bits, 1, cpu_state.eaaddr);
|
||||||
SI = string_increment(bits);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -2274,7 +2273,6 @@ execx86(int cycs)
|
|||||||
bits = 8 << (opcode & 1);
|
bits = 8 << (opcode & 1);
|
||||||
if (rep_start()) {
|
if (rep_start()) {
|
||||||
ins(bits);
|
ins(bits);
|
||||||
set_accum(bits, cpu_data);
|
|
||||||
wait(3, 0);
|
wait(3, 0);
|
||||||
|
|
||||||
if (in_rep != 0) {
|
if (in_rep != 0) {
|
||||||
@@ -2304,7 +2302,6 @@ execx86(int cycs)
|
|||||||
handled = 1;
|
handled = 1;
|
||||||
bits = 8 << (opcode & 1);
|
bits = 8 << (opcode & 1);
|
||||||
if (rep_start()) {
|
if (rep_start()) {
|
||||||
cpu_data = AX;
|
|
||||||
wait(1, 0);
|
wait(1, 0);
|
||||||
outs(bits);
|
outs(bits);
|
||||||
if (in_rep != 0) {
|
if (in_rep != 0) {
|
||||||
|
Reference in New Issue
Block a user