3b2: Prevent attempts to ex/dep IO
This commit is contained in:
parent
cfbfac03bb
commit
f6e806df5a
2 changed files with 10 additions and 8 deletions
|
@ -571,12 +571,13 @@ t_stat cpu_ex(t_value *vptr, t_addr addr, UNIT *uptr, int32 sw)
|
||||||
*vptr = value;
|
*vptr = value;
|
||||||
return succ;
|
return succ;
|
||||||
} else {
|
} else {
|
||||||
if (!(addr_is_rom(uaddr) || addr_is_mem(uaddr) || addr_is_io(uaddr))) {
|
if (addr_is_rom(uaddr) || addr_is_mem(uaddr)) {
|
||||||
|
*vptr = (uint32) pread_b(uaddr);
|
||||||
|
return SCPE_OK;
|
||||||
|
} else {
|
||||||
*vptr = 0;
|
*vptr = 0;
|
||||||
return SCPE_NXM;
|
return SCPE_NXM;
|
||||||
}
|
}
|
||||||
*vptr = (uint32) pread_b(uaddr);
|
|
||||||
return SCPE_OK;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -587,11 +588,12 @@ t_stat cpu_dep(t_value val, t_addr addr, UNIT *uptr, int32 sw)
|
||||||
if (sw & EX_V_FLAG) {
|
if (sw & EX_V_FLAG) {
|
||||||
return deposit(uaddr, (uint8) val);
|
return deposit(uaddr, (uint8) val);
|
||||||
} else {
|
} else {
|
||||||
if (!(addr_is_rom(uaddr) || addr_is_mem(uaddr) || addr_is_io(uaddr))) {
|
if (addr_is_mem(uaddr)) {
|
||||||
return SCPE_NXM;
|
|
||||||
}
|
|
||||||
pwrite_b(uaddr, (uint8) val);
|
pwrite_b(uaddr, (uint8) val);
|
||||||
return SCPE_OK;
|
return SCPE_OK;
|
||||||
|
} else {
|
||||||
|
return SCPE_NXM;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -764,7 +764,7 @@ t_stat examine(uint32 va, uint8 *val) {
|
||||||
succ = mmu_decode_va(va, 0, FALSE, &pa);
|
succ = mmu_decode_va(va, 0, FALSE, &pa);
|
||||||
|
|
||||||
if (succ == SCPE_OK) {
|
if (succ == SCPE_OK) {
|
||||||
if (addr_is_rom(pa) || addr_is_io(pa) || addr_is_mem(pa)) {
|
if (addr_is_rom(pa) || addr_is_mem(pa)) {
|
||||||
*val = pread_b(pa);
|
*val = pread_b(pa);
|
||||||
return SCPE_OK;
|
return SCPE_OK;
|
||||||
} else {
|
} else {
|
||||||
|
@ -784,7 +784,7 @@ t_stat deposit(uint32 va, uint8 val) {
|
||||||
succ = mmu_decode_va(va, 0, FALSE, &pa);
|
succ = mmu_decode_va(va, 0, FALSE, &pa);
|
||||||
|
|
||||||
if (succ == SCPE_OK) {
|
if (succ == SCPE_OK) {
|
||||||
if (addr_is_mem(pa) || addr_is_io(pa)) {
|
if (addr_is_mem(pa)) {
|
||||||
pwrite_b(pa, val);
|
pwrite_b(pa, val);
|
||||||
return SCPE_OK;
|
return SCPE_OK;
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Add table
Reference in a new issue