diff --git a/I7000/i7080_cpu.c b/I7000/i7080_cpu.c index 744c88a..8e4a8a4 100644 --- a/I7000/i7080_cpu.c +++ b/I7000/i7080_cpu.c @@ -1609,11 +1609,12 @@ stop_cpu: case OP_RWW: /* RWW 705 only */ MAC2 = MAC; - if (CPU_MODEL == CPU_7080 && + if (iowait == 0 && CPU_MODEL == CPU_7080 && (cpu_unit.flags & IOIRQ) != 0 && (flags & EIGHTMODE) == 0 && ((selreg >> 8) & 0xff) != 5) { flags |= ANYFLAG|INSTFLAG; + selreg2 = 0; } else { selreg2 = selreg | 0x8000; } @@ -2567,8 +2568,6 @@ uint16 get_acstart(uint8 reg) { /* Store CPU state in CASU 15 */ void store_cpu(uint32 addr, int full) { uint8 t; - int j; - uint32 ta; store_addr(IC, &addr); /* Save status characters */ @@ -2625,8 +2624,6 @@ void store_cpu(uint32 addr, int full) { void load_cpu(uint32 addr, int full) { uint8 t; uint8 f; - int j; - uint32 ta; flags = 0; IC = load_addr(&addr); @@ -3378,6 +3375,18 @@ cpu_reset(DEVICE * dptr) selreg2 = 0; IC = 4; sim_brk_types = sim_brk_dflt = SWMASK('E'); + /* Leave 80 mode */ + if (CPU_MODEL == CPU_7080) { + cpu_type = (cpu_unit.flags & EMULATE3)? CPU_7053:CPU_705; + EMEMSIZE = MEMSIZE; + if (cpu_unit.flags & EMULATE2 && EMEMSIZE > 40000) + EMEMSIZE = 40000; + if (cpu_type == CPU_705 && (cpu_unit.flags & EMULATE2) == 0 && + EMEMSIZE > 20000) + EMEMSIZE = 20000; + if (EMEMSIZE > 80000) + EMEMSIZE = 80000; + } return SCPE_OK; } diff --git a/I7000/tests/i7080_test.ini b/I7000/tests/i7080_test.ini index 4e0f318..7fbb561 100644 --- a/I7000/tests/i7080_test.ini +++ b/I7000/tests/i7080_test.ini @@ -3,10 +3,10 @@ cd i7080 rm test.log set cpu 80k 7080 emu7053 hist=10000 set console -n -q log=test.log -at mta1 t1.tp -at mta2 t2.tp -at mtb1 t3.tp -at mtb2 t4.tp +at mta1 -n t1.tp +at mta2 -n t2.tp +at mtb1 -n t3.tp +at mtb2 -n t4.tp load 8cu10b.dck echo "8cu10b" br 18219 @@ -32,4 +32,6 @@ load 8cu30b.dck echo "8cu30b" br 2164 go 4 +detach -q all +del t*.tp quit