6502Android/app/src/main/kotlin/android/emu6502/Memory.kt

53 lines
1.1 KiB
Kotlin
Raw Normal View History

2015-06-09 17:21:49 +00:00
package android.emu6502
2015-06-30 06:15:43 +00:00
import java.util.concurrent.CountDownLatch
2015-06-14 02:28:37 +00:00
class Memory(private val display: Display) {
private val mem = IntArray(65536)
2015-06-09 17:21:49 +00:00
fun get(addr: Int): Int {
2015-06-09 17:21:49 +00:00
return mem[addr]
}
fun getWord(addr: Int): Int {
return get(addr) + get(addr + 1).shl(8)
}
fun set(addr: Int, value: Int) {
mem[addr] = value
}
fun storeByte(addr: Int, value: Int) {
set(addr, value.and(0xff))
2015-06-22 07:25:33 +00:00
if (addr >= 0x200 && addr <= 0x5ff) {
display.updatePixel(addr, mem[addr].and(0x0f))
}
2015-06-09 17:21:49 +00:00
}
// Store keycode in ZP $ff
fun storeKeypress(keyCode: Int) {
storeByte(0xff, keyCode)
}
2015-06-14 02:28:37 +00:00
fun format(start: Int, length: Int): String {
var i = 0
var n: Int
val dump = StringBuilder()
while (i < length) {
if (i.and(15) == 0) {
if (i > 0) {
dump.append("\n")
}
n = start + i
dump.append(n.shr(8).and(0xff).toHexString())
dump.append(n.and(0xff).toHexString())
dump.append(": ")
}
dump.append(get(start + i).toHexString())
dump.append(" ")
i++
}
return dump.toString().trim()
}
2015-06-09 17:21:49 +00:00
}