diff options
| author | James Barnett <noreply@jamesbarnett.xyz> | 2018-06-14 21:28:31 +0100 |
|---|---|---|
| committer | James Barnett <noreply@jamesbarnett.xyz> | 2018-06-14 21:28:31 +0100 |
| commit | 22f3463e3128947df69cb6444c82bd73350d5cc5 (patch) | |
| tree | fff1be79d064c2605189c18b3b3543ec624aa429 /src/main/kotlin/cpu | |
| parent | cf0f98348c5f4df57d3adb44418cc2911e7b37b7 (diff) | |
| download | KGB-22f3463e3128947df69cb6444c82bd73350d5cc5.tar.xz KGB-22f3463e3128947df69cb6444c82bd73350d5cc5.zip | |
Move bit manipulation helpers out into their own object
Diffstat (limited to 'src/main/kotlin/cpu')
| -rw-r--r-- | src/main/kotlin/cpu/Registers.kt | 77 |
1 files changed, 28 insertions, 49 deletions
diff --git a/src/main/kotlin/cpu/Registers.kt b/src/main/kotlin/cpu/Registers.kt index 6cf417e..7aa144f 100644 --- a/src/main/kotlin/cpu/Registers.kt +++ b/src/main/kotlin/cpu/Registers.kt @@ -1,124 +1,103 @@ package cpu +import BitManipulation as bm + class Registers { // General purpose registers var B: Int = 0 set(value) { - validateUnsigned8Bit(value) + bm.validateUnsigned8Bit(value) field = value } var C: Int = 0 set(value) { - validateUnsigned8Bit(value) + bm.validateUnsigned8Bit(value) field = value } var D: Int = 0 set(value) { - validateUnsigned8Bit(value) + bm.validateUnsigned8Bit(value) field = value } var E: Int = 0 set(value) { - validateUnsigned8Bit(value) + bm.validateUnsigned8Bit(value) field = value } var H: Int = 0 set(value) { - validateUnsigned8Bit(value) + bm.validateUnsigned8Bit(value) field = value } var L: Int = 0 set(value) { - validateUnsigned8Bit(value) + bm.validateUnsigned8Bit(value) field = value } // Special registers var A: Int = 0 set(value) { - validateUnsigned8Bit(value) + bm.validateUnsigned8Bit(value) field = value } var F: Int = 0 set(value) { - validateUnsigned8Bit(value) + bm.validateUnsigned8Bit(value) field = value } var SP: Int = 0 set(value) { - validateUnsigned16Bit(value) + bm.validateUnsigned16Bit(value) field = value } var PC: Int = 0 set(value) { - validateUnsigned16Bit(value) + bm.validateUnsigned16Bit(value) field = value } // 16-Bit accessors var AF: Int get() { - return bytesToWord(A, F) + return bm.bytesToWord(A, F) } set(value) { - validateUnsigned16Bit(value) - A = getMsb(value) - F = getLsb(value) + bm.validateUnsigned16Bit(value) + A = bm.getMsb(value) + F = bm.getLsb(value) } var BC: Int get() { - return bytesToWord(B, C) + return bm.bytesToWord(B, C) } set(value) { - validateUnsigned16Bit(value) - B = getMsb(value) - C = getLsb(value) + bm.validateUnsigned16Bit(value) + B = bm.getMsb(value) + C = bm.getLsb(value) } var DE: Int get() { - return bytesToWord(D, E) + return bm.bytesToWord(D, E) } set(value) { - validateUnsigned16Bit(value) - D = getMsb(value) - E = getLsb(value) + bm.validateUnsigned16Bit(value) + D = bm.getMsb(value) + E = bm.getLsb(value) } var HL: Int get() { - return bytesToWord(H, L) + return bm.bytesToWord(H, L) } set(value) { - validateUnsigned16Bit(value) - H = getMsb(value) - L = getLsb(value) + bm.validateUnsigned16Bit(value) + H = bm.getMsb(value) + L = bm.getLsb(value) } - private fun bytesToWord(msb: Int, lsb: Int): Int { - return msb.shl(8) + lsb - } - - private fun getMsb(value: Int): Int { - return value.shr(8) - } - - private fun getLsb(value: Int): Int { - return value.and(0xFF) - } - - private fun validateUnsigned8Bit(value: Int) { - if(value < 0 || value > 255) { - throw IllegalArgumentException("Value $value is not an unsigned 8-Bit value") - } - } - - private fun validateUnsigned16Bit(value: Int) { - if(value < 0 || value > 65535) { - throw IllegalArgumentException("Value $value is not an unsigned 16-Bit value") - } - } }
\ No newline at end of file |