sys.memcpy now has rambank device support

This commit is contained in:
minjaesong
2023-01-21 19:59:41 +09:00
parent 99212adea3
commit 102c192ead
3 changed files with 27 additions and 12 deletions

View File

@@ -6,9 +6,7 @@ import kotlinx.coroutines.launch
import net.torvald.UnsafeHelper
import net.torvald.UnsafePtr
import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.toUlong
import net.torvald.tsvm.peripheral.AudioAdapter
import net.torvald.tsvm.peripheral.GraphicsAdapter
import net.torvald.tsvm.peripheral.IOSpace
import net.torvald.tsvm.peripheral.*
import java.nio.charset.Charset
/**
@@ -67,6 +65,14 @@ class VMJSR223Delegate(private val vm: VM) {
else if (relPtrInDev(fromRel, len, 262144, 513023)) dev.framebuffer2?.ptr?.plus(fromRel)?.minus(253950)
else null
}
else if (dev is RamBank) {
if (relPtrInDev(fromRel, len, 0, 524287))
dev.mem.ptr + 524288*dev.map0 + fromRel
else if (relPtrInDev(fromRel, len, 524288, 131071))
dev.mem.ptr + 524288*dev.map1 + fromRel - 524288
else
null
}
else null
}
}

View File

@@ -21,8 +21,8 @@ open class RamBank(val vm: VM, bankCount: Int) : PeriBase("ramb") {
internal val mem = UnsafeHelper.allocate(bankSize * banks, this)
protected var map0 = 0
protected var map1 = 1
internal var map0 = 0
internal var map1 = 1
override fun peek(addr: Long): Byte {
return when (addr) {
@@ -68,4 +68,7 @@ open class RomBank(vm: VM, romfile: File, bankCount: Int) : RamBank(vm, bankCoun
UnsafeHelper.memcpyRaw(bytes, 0, null, mem.ptr, bytes.size.toLong())
}
override val typestring = "ROMB"
override fun poke(addr: Long, byte: Byte) {
}
}