mirror of
https://github.com/curioustorvald/tsvm.git
synced 2026-03-08 12:11:51 +09:00
implementation of mmio 1024..2047
This commit is contained in:
@@ -41,6 +41,7 @@ class CharacterLCDdisplay(vm: VM) : GraphicsAdapter(vm, AdapterConfig(
|
||||
val batPerc = "89"
|
||||
val batVolt = "5.1"
|
||||
val batText = " $batPerc% ${batVolt}V"
|
||||
val msg = (1024L until 1048L).map { vm.getIO().mmio_read(it)!!.toInt().and(255) }
|
||||
vm.poke(-69,2)
|
||||
val time_t = currentTimeInMills()
|
||||
val min = (time_t / 60000) % 60
|
||||
@@ -58,6 +59,10 @@ class CharacterLCDdisplay(vm: VM) : GraphicsAdapter(vm, AdapterConfig(
|
||||
val ccode = clock[x].toInt()
|
||||
batch.draw(lcdFont.get(ccode % 16, ccode / 16), xoff+74 + x * lcdFont.tileW, y)
|
||||
}
|
||||
for (x in msg.indices) {
|
||||
val ccode = msg[x]
|
||||
batch.draw(lcdFont.get(ccode % 16, ccode / 16), xoff+74 + (x + 6) * lcdFont.tileW, y)
|
||||
}
|
||||
for (x in batText.indices) {
|
||||
val ccode = batText[x].toInt()
|
||||
batch.draw(lcdFont.get(ccode % 16, ccode / 16), xoff+74 + (config.textCols - batText.length + x) * lcdFont.tileW, y)
|
||||
|
||||
@@ -37,6 +37,8 @@ class IOSpace(val vm: VM) : PeriBase, InputProcessor {
|
||||
)
|
||||
/*private*/ val blockTransferPorts = Array(4) { BlockTransferPort(vm, it) }
|
||||
|
||||
private val peripheralFast = UnsafeHelper.allocate(1024)
|
||||
|
||||
private val keyEventBuffers = ByteArray(8)
|
||||
|
||||
init {
|
||||
@@ -45,6 +47,8 @@ class IOSpace(val vm: VM) : PeriBase, InputProcessor {
|
||||
//blockTransferPorts[0].attachDevice(TestDiskDrive(vm, 0, File("assets/disk0")))
|
||||
|
||||
// for testers: use EmulInstance
|
||||
|
||||
peripheralFast.fillWith(0)
|
||||
}
|
||||
|
||||
private fun composeBlockTransferStatus(portno: Int): Int {
|
||||
@@ -99,6 +103,8 @@ class IOSpace(val vm: VM) : PeriBase, InputProcessor {
|
||||
|
||||
88L -> vm.romMapping.toByte()
|
||||
|
||||
in 1024..2047 -> peripheralFast[addr - 1024]
|
||||
|
||||
4076L -> blockTransferPorts[0].statusCode.toByte()
|
||||
4077L -> blockTransferPorts[1].statusCode.toByte()
|
||||
4078L -> blockTransferPorts[2].statusCode.toByte()
|
||||
@@ -157,6 +163,8 @@ class IOSpace(val vm: VM) : PeriBase, InputProcessor {
|
||||
|
||||
88L -> vm.romMapping = bi
|
||||
|
||||
in 1024..2047 -> peripheralFast[addr - 1024] = byte
|
||||
|
||||
4076L -> blockTransferPorts[0].statusCode = bi
|
||||
4077L -> blockTransferPorts[1].statusCode = bi
|
||||
4078L -> blockTransferPorts[2].statusCode = bi
|
||||
@@ -203,6 +211,7 @@ class IOSpace(val vm: VM) : PeriBase, InputProcessor {
|
||||
override fun dispose() {
|
||||
blockTransferRx.forEach { it.destroy() }
|
||||
blockTransferTx.forEach { it.destroy() }
|
||||
peripheralFast.destroy()
|
||||
}
|
||||
|
||||
private var mouseX: Short = 0
|
||||
|
||||
Reference in New Issue
Block a user