package de.platon42.mc68kemu open class CustomChips(var debug: Boolean = false) : MemoryRegion(0xdff000, 0x200) { var vhpos = 0 override fun readByte(address: Int): Int { val v = 0 println("${v.toHex(4)} = R[${address.toHex(2)}]") return v } override fun readWord(address: Int): Int { val v = when (address) { 0xdff004 -> (vhpos shr 16) 0xdff006 -> (vhpos and 0xffff).also { vhpos = (vhpos + 0x400) % (311 shl 8) } else -> 0 } if (debug) println("${v.toHex(4)} = R[${address.toHex(8)}]") return v } override fun readLong(address: Int): Int { val v = when (address) { 0xdff004 -> vhpos.also { vhpos = (vhpos + 0x400) % (311 shl 8) } else -> (readWord(address) shl 16) or (readWord(address + 2) and 0xffff) } if (debug) println("${v.toHex(8)} = R[${address.toHex(8)}]") return v } override fun writeByte(address: Int, value: Int) { println("W[${address.toHex(8)}] = ${value.toHex(2)}") } override fun writeWord(address: Int, value: Int) { if (debug) println("W[${address.toHex(8)}] = ${value.toHex(4)}") } override fun writeLong(address: Int, value: Int) { if (debug) println("W[${address.toHex(8)}] = ${value.toHex(8)}") } }