fixed stackvm pop signed byte into register

This commit is contained in:
Irmen de Jong 2019-04-08 00:08:23 +02:00
parent ede2b83ce4
commit fd19298a05

View File

@ -1097,8 +1097,11 @@ class StackVm(private var traceOutputFile: String?) {
checkDt(value, DataType.UBYTE, DataType.BYTE)
val variable = getVar(ins.callLabel!!)
checkDt(variable, DataType.UBYTE, DataType.BYTE)
if(value.type!=variable.type)
throw VmExecutionException("datatype mismatch")
if(value.type!=variable.type) {
if(ins.callLabel !in Register.values().map { it.name }) {
throw VmExecutionException("datatype mismatch")
}
}
variables[ins.callLabel] = value
setFlags(value)
}
@ -2250,6 +2253,13 @@ class StackVm(private var traceOutputFile: String?) {
val num = variables.getValue("A").integerValue()
canvas?.printText(num.toString(), 1, true)
}
Syscall.SYSASM_c64scr_print_b -> {
val num = variables.getValue("A").integerValue()
if(num<=127)
canvas?.printText(num.toString(), 1, true)
else
canvas?.printText("-${256-num}", 1, true)
}
Syscall.SYSASM_c64scr_print_uw -> {
val lo = variables.getValue("A").integerValue()
val hi = variables.getValue("Y").integerValue()