Got to end of test, but fails to successfully end test :-/
This commit is contained in:
@@ -1134,9 +1134,11 @@ class CPU(val mbus: MemBus, var tracer: ITracer = NullTracer()) {
|
|||||||
}
|
}
|
||||||
is NonExistentMemoryError -> {
|
is NonExistentMemoryError -> {
|
||||||
cpu_err = cpu_err or CPU_ERR_NXM
|
cpu_err = cpu_err or CPU_ERR_NXM
|
||||||
|
logger.warn("NXM at {}", error.addr.toOctal())
|
||||||
setTrap(TrapReason.NXM)
|
setTrap(TrapReason.NXM)
|
||||||
}
|
}
|
||||||
is BusTimeoutError -> {
|
is BusTimeoutError -> {
|
||||||
|
logger.warn("TMO at {}", error.addr.toOctal())
|
||||||
cpu_err = cpu_err or CPU_ERR_UNIBUS_TIMEOUT
|
cpu_err = cpu_err or CPU_ERR_UNIBUS_TIMEOUT
|
||||||
setTrap(TrapReason.NXM)
|
setTrap(TrapReason.NXM)
|
||||||
}
|
}
|
||||||
@@ -1177,7 +1179,7 @@ class CPU(val mbus: MemBus, var tracer: ITracer = NullTracer()) {
|
|||||||
|
|
||||||
fun callVector(vector: UShort) {
|
fun callVector(vector: UShort) {
|
||||||
val old_psw = psw
|
val old_psw = psw
|
||||||
val newPSW = core.getw((vector + 2u).toUShort()) and 0xCFFFu or (cur_mode shl 12).toUShort()
|
val newPSW = core.getSpace(0).getw((vector + 2u).toUShort()) and 0xCFFFu or (cur_mode shl 12).toUShort()
|
||||||
setPSW(newPSW, true)
|
setPSW(newPSW, true)
|
||||||
stack_push(old_psw)
|
stack_push(old_psw)
|
||||||
stack_push(pc)
|
stack_push(pc)
|
||||||
@@ -1225,10 +1227,10 @@ class CPU(val mbus: MemBus, var tracer: ITracer = NullTracer()) {
|
|||||||
|
|
||||||
fun checkSP(addr: UShort): UShort {
|
fun checkSP(addr: UShort): UShort {
|
||||||
if (cur_mode != 0) return addr
|
if (cur_mode != 0) return addr
|
||||||
if (sp < stack_limit + 224u || sp.toInt() and 0xFFFE == 0xFFFE) {
|
if (addr < stack_limit + 224u || addr.toInt() and 0xFFFE == 0xFFFE) {
|
||||||
trapRed()
|
trapRed()
|
||||||
throw EndCycle()
|
throw EndCycle()
|
||||||
} else if (sp < stack_limit + 256u) {
|
} else if (addr < stack_limit + 256u) {
|
||||||
// logger.warn("Stack YLW")
|
// logger.warn("Stack YLW")
|
||||||
// stack limit yellow
|
// stack limit yellow
|
||||||
cpu_err = cpu_err or CPU_ERR_STK_YLW
|
cpu_err = cpu_err or CPU_ERR_STK_YLW
|
||||||
|
Reference in New Issue
Block a user