diff --git a/src/commonMain/kotlin/mtmc/emulator/MTMCDisplay.kt b/src/commonMain/kotlin/mtmc/emulator/MTMCDisplay.kt index 6be2bd8..713bb48 100644 --- a/src/commonMain/kotlin/mtmc/emulator/MTMCDisplay.kt +++ b/src/commonMain/kotlin/mtmc/emulator/MTMCDisplay.kt @@ -18,13 +18,8 @@ class MTMCDisplay(private val computer: MonTanaMiniComputer) { LIGHT(87, 124, 68), LIGHTEST(127, 134, 15); - val intVal: Int - val javaColor: Color - - init { - this.intVal = 0xFF shl 24 or (r shl 16) or (g shl 8) or b - javaColor = Color(r, g, b) - } + val intVal: Int = 0xFF shl 24 or (r shl 16) or (g shl 8) or b + val javaColor: Color = Color(r, g, b) fun distance(r: Int, g: Int, b: Int): Int { val dr = this.r - r @@ -56,15 +51,20 @@ class MTMCDisplay(private val computer: MonTanaMiniComputer) { } private fun loadSplashScreen() { - /* try { - val bytes: ByteArray = Base64.getDecoder().decode(SPLASH_SCREEN) - val bais = ByteArrayInputStream(bytes) - var img: BufferedImage? = null - img = ImageIO.read(bais) - loadScaledImage(img) - } catch (e: IOException) { - e.printStackTrace() - }*/ + currentColor = DisplayColor.DARK + var currentColorCount = 0 + var currentColor = 0 + var colorIndex = 0 + for (col in 0.. + observers.forEach { o: MTMCObserver? -> o!!.memoryUpdated(address, value) } } @@ -816,7 +815,7 @@ class MonTanaMiniComputer { registerFile[register] = currentValue } registerFile[register] = value.toShort() - observers!!.forEach { o: MTMCObserver? -> + observers.forEach { o: MTMCObserver? -> o!!.registerUpdated(register, value) } } diff --git a/src/commonMain/kotlin/mtmc/emulator/SplashData.kt b/src/commonMain/kotlin/mtmc/emulator/SplashData.kt new file mode 100644 index 0000000..8448de6 --- /dev/null +++ b/src/commonMain/kotlin/mtmc/emulator/SplashData.kt @@ -0,0 +1,1727 @@ +package mtmc.emulator + +val SPLASH_SCREEN_COLORS: Array = arrayOf( + 2869, 0, + 4, 2, + 136, 0, + 1, 1, + 7, 2, + 132, 0, + 1, 1, + 11, 2, + 76, 0, + 3, 2, + 50, 0, + 15, 2, + 74, 0, + 1, 1, + 4, 2, + 46, 0, + 19, 2, + 73, 0, + 5, 2, + 43, 0, + 1, 1, + 18, 2, + 1, 1, + 74, 0, + 4, 2, + 1, 1, + 2, 2, + 39, 0, + 1, 1, + 18, 2, + 1, 1, + 77, 0, + 4, 2, + 1, 0, + 1, 1, + 2, 2, + 36, 0, + 19, 2, + 9, 0, + 1, 1, + 1, 2, + 69, 0, + 3, 2, + 3, 0, + 3, 2, + 34, 0, + 17, 2, + 9, 0, + 1, 1, + 5, 2, + 67, 0, + 4, 2, + 4, 0, + 2, 2, + 1, 1, + 33, 0, + 14, 2, + 1, 1, + 8, 0, + 1, 1, + 9, 2, + 66, 0, + 3, 2, + 1, 1, + 5, 0, + 2, 2, + 33, 0, + 11, 2, + 1, 1, + 9, 0, + 13, 2, + 65, 0, + 3, 2, + 7, 0, + 2, 2, + 32, 0, + 1, 1, + 7, 2, + 1, 1, + 9, 0, + 1, 1, + 16, 2, + 64, 0, + 3, 2, + 8, 0, + 2, 2, + 32, 0, + 6, 2, + 8, 0, + 1, 1, + 18, 2, + 1, 1, + 64, 0, + 3, 2, + 9, 0, + 2, 2, + 32, 0, + 5, 2, + 5, 0, + 1, 1, + 19, 2, + 66, 0, + 4, 2, + 9, 0, + 1, 1, + 2, 2, + 32, 0, + 6, 2, + 1, 1, + 19, 2, + 69, 0, + 3, 2, + 1, 1, + 10, 0, + 1, 1, + 2, 2, + 33, 0, + 21, 2, + 1, 1, + 8, 0, + 1, 1, + 3, 2, + 59, 0, + 3, 2, + 1, 1, + 11, 0, + 3, 2, + 33, 0, + 17, 2, + 1, 1, + 9, 0, + 7, 2, + 58, 0, + 3, 2, + 1, 1, + 12, 0, + 2, 2, + 35, 0, + 1, 1, + 12, 2, + 9, 0, + 1, 1, + 10, 2, + 57, 0, + 3, 2, + 1, 1, + 8, 0, + 1, 2, + 4, 0, + 2, 2, + 35, 0, + 1, 1, + 8, 2, + 1, 1, + 8, 0, + 1, 1, + 14, 2, + 56, 0, + 3, 2, + 1, 1, + 8, 0, + 2, 2, + 4, 0, + 2, 2, + 34, 0, + 1, 1, + 5, 2, + 1, 1, + 8, 0, + 1, 1, + 18, 2, + 56, 0, + 2, 2, + 1, 1, + 7, 0, + 1, 1, + 2, 3, + 1, 2, + 4, 0, + 2, 2, + 34, 0, + 4, 2, + 8, 0, + 19, 2, + 58, 0, + 3, 2, + 7, 0, + 1, 2, + 3, 3, + 1, 2, + 4, 0, + 2, 2, + 2, 0, + 2, 2, + 29, 0, + 1, 1, + 4, 2, + 4, 0, + 1, 1, + 18, 2, + 1, 1, + 60, 0, + 3, 2, + 7, 0, + 1, 2, + 4, 3, + 1, 2, + 3, 0, + 1, 1, + 6, 2, + 29, 0, + 24, 2, + 1, 1, + 63, 0, + 3, 2, + 7, 0, + 1, 2, + 5, 3, + 1, 1, + 3, 0, + 1, 1, + 5, 2, + 30, 0, + 20, 2, + 1, 1, + 66, 0, + 3, 2, + 7, 0, + 1, 2, + 6, 3, + 1, 1, + 3, 0, + 3, 2, + 1, 1, + 2, 2, + 30, 0, + 17, 2, + 69, 0, + 3, 2, + 7, 0, + 1, 2, + 7, 3, + 1, 1, + 3, 0, + 1, 1, + 1, 2, + 2, 0, + 2, 2, + 31, 0, + 12, 2, + 73, 0, + 2, 2, + 1, 1, + 6, 0, + 1, 2, + 8, 3, + 7, 0, + 1, 1, + 2, 2, + 32, 0, + 7, 2, + 1, 1, + 22, 0, + 1, 1, + 2, 2, + 50, 0, + 3, 2, + 6, 0, + 1, 2, + 9, 3, + 7, 0, + 1, 1, + 2, 2, + 59, 0, + 6, 2, + 49, 0, + 3, 2, + 6, 0, + 1, 2, + 10, 3, + 7, 0, + 3, 2, + 55, 0, + 1, 1, + 9, 2, + 49, 0, + 2, 2, + 6, 0, + 1, 2, + 10, 3, + 1, 1, + 7, 0, + 2, 2, + 35, 0, + 1, 1, + 16, 0, + 1, 1, + 13, 2, + 48, 0, + 3, 2, + 5, 0, + 1, 2, + 10, 3, + 1, 1, + 8, 0, + 2, 2, + 32, 0, + 4, 2, + 1, 1, + 11, 0, + 1, 1, + 17, 2, + 47, 0, + 3, 2, + 6, 0, + 10, 3, + 10, 0, + 2, 2, + 31, 0, + 1, 1, + 4, 2, + 1, 1, + 8, 0, + 19, 2, + 49, 0, + 2, 2, + 6, 0, + 10, 3, + 11, 0, + 2, 2, + 31, 0, + 1, 1, + 4, 2, + 1, 1, + 4, 0, + 1, 1, + 18, 2, + 1, 1, + 51, 0, + 3, 2, + 5, 0, + 1, 2, + 9, 3, + 1, 1, + 11, 0, + 2, 2, + 31, 0, + 1, 1, + 4, 2, + 2, 1, + 18, 2, + 1, 1, + 54, 0, + 3, 2, + 5, 0, + 1, 2, + 9, 3, + 12, 0, + 1, 1, + 2, 2, + 31, 0, + 1, 1, + 21, 2, + 58, 0, + 2, 2, + 1, 1, + 4, 0, + 1, 1, + 9, 3, + 1, 2, + 4, 0, + 1, 1, + 1, 2, + 6, 0, + 1, 1, + 2, 2, + 31, 0, + 1, 1, + 17, 2, + 61, 0, + 3, 2, + 5, 0, + 9, 3, + 1, 2, + 3, 0, + 1, 1, + 3, 3, + 6, 0, + 1, 1, + 2, 2, + 31, 0, + 1, 1, + 13, 2, + 1, 1, + 64, 0, + 2, 2, + 5, 0, + 1, 2, + 8, 3, + 1, 2, + 3, 0, + 1, 2, + 4, 3, + 6, 0, + 1, 1, + 2, 2, + 31, 0, + 1, 1, + 9, 2, + 1, 1, + 22, 0, + 2, 2, + 43, 0, + 3, 2, + 4, 0, + 1, 1, + 9, 3, + 3, 0, + 6, 3, + 6, 0, + 3, 2, + 31, 0, + 1, 1, + 6, 2, + 22, 0, + 1, 1, + 5, 2, + 43, 0, + 2, 2, + 5, 0, + 1, 2, + 8, 3, + 1, 1, + 1, 0, + 1, 2, + 7, 3, + 6, 0, + 2, 2, + 1, 1, + 31, 0, + 1, 1, + 4, 2, + 1, 1, + 19, 0, + 1, 1, + 9, 2, + 42, 0, + 3, 2, + 4, 0, + 1, 2, + 8, 3, + 1, 2, + 1, 0, + 1, 2, + 8, 3, + 1, 1, + 5, 0, + 2, 2, + 32, 0, + 1, 1, + 4, 2, + 1, 1, + 15, 0, + 1, 1, + 13, 2, + 42, 0, + 2, 2, + 5, 0, + 9, 3, + 1, 0, + 1, 2, + 9, 3, + 1, 1, + 5, 0, + 2, 2, + 32, 0, + 1, 1, + 4, 2, + 1, 1, + 12, 0, + 17, 2, + 41, 0, + 3, 2, + 4, 0, + 1, 2, + 8, 3, + 2, 2, + 10, 3, + 1, 1, + 5, 0, + 2, 2, + 32, 0, + 1, 1, + 4, 2, + 1, 1, + 8, 0, + 1, 1, + 18, 2, + 1, 1, + 42, 0, + 2, 2, + 1, 1, + 3, 0, + 1, 1, + 8, 3, + 2, 2, + 11, 3, + 1, 2, + 5, 0, + 2, 2, + 32, 0, + 1, 1, + 4, 2, + 5, 0, + 1, 1, + 18, 2, + 1, 1, + 45, 0, + 1, 1, + 2, 2, + 4, 0, + 1, 2, + 8, 3, + 1, 2, + 12, 3, + 1, 2, + 5, 0, + 2, 2, + 33, 0, + 1, 1, + 4, 0, + 1, 1, + 19, 2, + 49, 0, + 2, 2, + 1, 1, + 3, 0, + 1, 1, + 22, 3, + 1, 2, + 5, 0, + 2, 2, + 36, 0, + 18, 2, + 9, 0, + 1, 1, + 3, 2, + 40, 0, + 2, 2, + 4, 0, + 1, 2, + 22, 3, + 1, 2, + 5, 0, + 2, 2, + 34, 0, + 16, 2, + 1, 1, + 8, 0, + 1, 1, + 7, 2, + 39, 0, + 3, 2, + 3, 0, + 1, 1, + 24, 3, + 5, 0, + 3, 2, + 32, 0, + 13, 2, + 1, 1, + 9, 0, + 11, 2, + 39, 0, + 2, 2, + 4, 0, + 1, 2, + 24, 3, + 5, 0, + 7, 2, + 28, 0, + 9, 2, + 1, 1, + 9, 0, + 1, 1, + 14, 2, + 39, 0, + 2, 2, + 3, 0, + 1, 1, + 25, 3, + 5, 0, + 1, 1, + 9, 2, + 24, 0, + 7, 2, + 9, 0, + 1, 1, + 18, 2, + 38, 0, + 2, 2, + 1, 1, + 3, 0, + 1, 2, + 22, 3, + 2, 2, + 1, 1, + 10, 0, + 1, 1, + 6, 2, + 22, 0, + 5, 2, + 7, 0, + 1, 1, + 19, 2, + 41, 0, + 2, 2, + 4, 0, + 21, 3, + 1, 2, + 1, 1, + 17, 0, + 5, 2, + 20, 0, + 5, 2, + 1, 1, + 3, 0, + 19, 2, + 45, 0, + 2, 2, + 3, 0, + 1, 2, + 19, 3, + 1, 2, + 22, 0, + 1, 1, + 4, 2, + 18, 0, + 1, 1, + 23, 2, + 1, 1, + 8, 0, + 1, 1, + 1, 2, + 37, 0, + 3, 2, + 3, 0, + 1, 2, + 17, 3, + 1, 2, + 26, 0, + 4, 2, + 18, 0, + 19, 2, + 1, 1, + 9, 0, + 5, 2, + 37, 0, + 2, 2, + 3, 0, + 1, 1, + 16, 3, + 1, 2, + 1, 1, + 29, 0, + 3, 2, + 18, 0, + 15, 2, + 9, 0, + 9, 2, + 37, 0, + 2, 2, + 3, 0, + 1, 2, + 15, 3, + 1, 2, + 32, 0, + 4, 2, + 17, 0, + 10, 2, + 9, 0, + 1, 1, + 12, 2, + 36, 0, + 3, 2, + 3, 0, + 15, 3, + 1, 2, + 34, 0, + 1, 1, + 3, 2, + 15, 0, + 7, 2, + 1, 1, + 8, 0, + 1, 1, + 16, 2, + 36, 0, + 2, 2, + 1, 1, + 2, 0, + 1, 1, + 14, 3, + 1, 1, + 5, 0, + 1, 1, + 7, 0, + 1, 1, + 2, 2, + 6, 3, + 1, 2, + 14, 0, + 3, 2, + 13, 0, + 5, 2, + 9, 0, + 19, 2, + 37, 0, + 2, 2, + 3, 0, + 1, 2, + 13, 3, + 1, 2, + 4, 0, + 2, 2, + 5, 0, + 1, 1, + 1, 2, + 10, 3, + 1, 1, + 15, 0, + 3, 2, + 12, 0, + 4, 2, + 6, 0, + 1, 1, + 18, 2, + 1, 1, + 40, 0, + 2, 2, + 3, 0, + 1, 1, + 1, 2, + 11, 3, + 1, 2, + 3, 0, + 1, 2, + 2, 3, + 4, 0, + 1, 2, + 12, 3, + 1, 1, + 10, 0, + 2, 1, + 2, 2, + 2, 1, + 1, 0, + 3, 2, + 10, 0, + 6, 2, + 1, 0, + 1, 1, + 18, 2, + 1, 1, + 43, 0, + 3, 2, + 6, 0, + 1, 1, + 1, 2, + 7, 3, + 1, 2, + 3, 0, + 1, 2, + 2, 3, + 3, 0, + 1, 2, + 13, 3, + 1, 1, + 7, 0, + 1, 1, + 14, 2, + 9, 0, + 22, 2, + 1, 1, + 46, 0, + 3, 2, + 9, 0, + 1, 2, + 6, 3, + 3, 0, + 3, 3, + 1, 2, + 1, 0, + 1, 1, + 1, 2, + 13, 3, + 1, 2, + 7, 0, + 16, 2, + 9, 0, + 19, 2, + 49, 0, + 2, 2, + 1, 1, + 11, 0, + 1, 2, + 4, 3, + 1, 1, + 1, 0, + 1, 1, + 3, 3, + 1, 2, + 1, 0, + 1, 2, + 15, 3, + 1, 1, + 5, 0, + 1, 1, + 4, 2, + 13, 0, + 1, 2, + 8, 0, + 1, 1, + 14, 2, + 13, 0, + 1, 1, + 3, 2, + 35, 0, + 3, 2, + 7, 0, + 1, 1, + 3, 2, + 2, 1, + 1, 2, + 2, 3, + 1, 2, + 1, 0, + 1, 1, + 4, 3, + 1, 0, + 1, 2, + 15, 3, + 1, 2, + 5, 0, + 1, 1, + 3, 2, + 25, 0, + 10, 2, + 1, 1, + 12, 0, + 1, 1, + 9, 2, + 32, 0, + 2, 2, + 1, 1, + 6, 0, + 1, 2, + 10, 3, + 1, 0, + 1, 1, + 4, 3, + 2, 2, + 16, 3, + 1, 1, + 4, 0, + 1, 1, + 2, 2, + 28, 0, + 1, 1, + 4, 2, + 1, 1, + 12, 0, + 1, 1, + 13, 2, + 1, 1, + 30, 0, + 3, 2, + 5, 0, + 1, 1, + 11, 3, + 1, 2, + 1, 0, + 1, 2, + 21, 3, + 1, 2, + 5, 0, + 2, 2, + 1, 1, + 43, 0, + 18, 2, + 29, 0, + 3, 2, + 5, 0, + 1, 2, + 11, 3, + 1, 2, + 1, 0, + 1, 2, + 21, 3, + 2, 2, + 5, 0, + 2, 2, + 40, 0, + 1, 1, + 21, 2, + 1, 1, + 28, 0, + 2, 2, + 5, 0, + 1, 2, + 12, 3, + 1, 2, + 1, 1, + 21, 3, + 3, 2, + 4, 0, + 3, 2, + 36, 0, + 1, 1, + 19, 2, + 1, 1, + 5, 2, + 1, 1, + 27, 0, + 2, 2, + 1, 1, + 4, 0, + 1, 2, + 5, 3, + 2, 2, + 6, 3, + 1, 1, + 22, 3, + 3, 2, + 4, 0, + 2, 2, + 33, 0, + 1, 1, + 19, 2, + 6, 0, + 5, 2, + 26, 0, + 3, 2, + 4, 0, + 1, 2, + 4, 3, + 1, 1, + 4, 0, + 1, 2, + 3, 3, + 2, 2, + 21, 3, + 4, 2, + 4, 0, + 2, 2, + 31, 0, + 1, 1, + 17, 2, + 1, 1, + 9, 0, + 5, 2, + 26, 0, + 2, 2, + 4, 0, + 1, 2, + 3, 3, + 1, 2, + 7, 0, + 3, 3, + 1, 2, + 21, 3, + 5, 2, + 4, 0, + 2, 2, + 30, 0, + 15, 2, + 1, 1, + 12, 0, + 6, 2, + 25, 0, + 2, 2, + 1, 1, + 3, 0, + 1, 1, + 3, 3, + 1, 2, + 8, 0, + 1, 2, + 2, 3, + 1, 2, + 21, 3, + 5, 2, + 1, 1, + 3, 0, + 2, 2, + 29, 0, + 12, 2, + 1, 1, + 15, 0, + 6, 2, + 1, 1, + 25, 0, + 2, 2, + 4, 0, + 3, 3, + 1, 2, + 3, 0, + 1, 1, + 2, 2, + 3, 0, + 1, 2, + 23, 3, + 7, 2, + 1, 1, + 2, 0, + 3, 2, + 28, 0, + 9, 2, + 16, 0, + 9, 2, + 25, 0, + 2, 2, + 1, 1, + 3, 0, + 1, 2, + 3, 3, + 5, 0, + 1, 2, + 2, 3, + 1, 2, + 1, 0, + 1, 2, + 22, 3, + 9, 2, + 3, 0, + 2, 2, + 27, 0, + 1, 1, + 5, 2, + 1, 1, + 19, 0, + 8, 2, + 1, 1, + 25, 0, + 2, 2, + 3, 0, + 1, 2, + 3, 3, + 1, 2, + 1, 0, + 1, 1, + 1, 2, + 6, 3, + 1, 1, + 1, 2, + 22, 3, + 9, 2, + 3, 0, + 3, 2, + 26, 0, + 5, 2, + 1, 1, + 20, 0, + 7, 2, + 1, 1, + 25, 0, + 2, 2, + 1, 1, + 3, 0, + 3, 3, + 1, 2, + 1, 0, + 1, 2, + 32, 3, + 9, 2, + 1, 1, + 3, 0, + 3, 2, + 25, 0, + 5, 2, + 21, 0, + 6, 2, + 1, 1, + 25, 0, + 3, 2, + 3, 0, + 1, 2, + 3, 3, + 1, 2, + 31, 3, + 1, 2, + 1, 3, + 11, 2, + 3, 0, + 1, 1, + 2, 2, + 25, 0, + 5, 2, + 1, 1, + 20, 0, + 3, 2, + 1, 1, + 28, 0, + 2, 2, + 1, 1, + 3, 0, + 1, 2, + 35, 3, + 1, 2, + 1, 3, + 12, 2, + 3, 0, + 3, 2, + 24, 0, + 10, 2, + 47, 0, + 3, 2, + 3, 0, + 1, 2, + 35, 3, + 16, 2, + 3, 0, + 1, 1, + 3, 2, + 22, 0, + 1, 1, + 9, 2, + 46, 0, + 3, 2, + 4, 0, + 1, 2, + 35, 3, + 17, 2, + 3, 0, + 4, 2, + 22, 0, + 9, 2, + 45, 0, + 3, 2, + 1, 1, + 4, 0, + 35, 3, + 19, 2, + 3, 0, + 1, 1, + 3, 2, + 21, 0, + 9, 2, + 44, 0, + 4, 2, + 4, 0, + 1, 1, + 35, 3, + 20, 2, + 1, 1, + 3, 0, + 2, 2, + 22, 0, + 8, 2, + 39, 0, + 8, 2, + 5, 0, + 1, 2, + 35, 3, + 21, 2, + 3, 0, + 1, 1, + 2, 2, + 23, 0, + 3, 1, + 42, 0, + 7, 2, + 6, 0, + 1, 2, + 4, 3, + 1, 2, + 1, 1, + 5, 0, + 1, 1, + 23, 3, + 22, 2, + 3, 0, + 3, 2, + 68, 0, + 3, 2, + 1, 1, + 8, 0, + 1, 1, + 2, 2, + 1, 1, + 10, 0, + 1, 2, + 20, 3, + 24, 2, + 2, 0, + 1, 1, + 2, 2, + 69, 0, + 3, 2, + 19, 0, + 1, 1, + 3, 2, + 20, 3, + 24, 2, + 3, 0, + 2, 2, + 69, 0, + 1, 1, + 3, 2, + 12, 0, + 1, 1, + 3, 2, + 3, 0, + 23, 3, + 6, 2, + 2, 0, + 2, 1, + 6, 0, + 1, 1, + 7, 2, + 3, 0, + 2, 2, + 71, 0, + 3, 2, + 1, 1, + 8, 0, + 6, 2, + 3, 0, + 23, 3, + 5, 2, + 13, 0, + 6, 2, + 3, 0, + 2, 2, + 72, 0, + 17, 2, + 3, 0, + 1, 2, + 22, 3, + 5, 2, + 5, 0, + 1, 1, + 4, 2, + 3, 0, + 1, 1, + 5, 2, + 3, 0, + 2, 2, + 74, 0, + 10, 2, + 3, 0, + 3, 2, + 3, 0, + 6, 3, + 2, 2, + 13, 3, + 5, 2, + 3, 0, + 9, 2, + 3, 0, + 5, 2, + 3, 0, + 2, 2, + 50, 0, + 1, 1, + 2, 2, + 35, 0, + 2, 2, + 3, 0, + 1, 2, + 6, 3, + 1, 2, + 13, 3, + 5, 2, + 3, 0, + 10, 2, + 2, 0, + 4, 2, + 1, 1, + 2, 0, + 1, 1, + 2, 2, + 46, 0, + 1, 1, + 6, 2, + 35, 0, + 2, 2, + 3, 0, + 1, 2, + 6, 3, + 1, 1, + 13, 3, + 5, 2, + 2, 0, + 11, 2, + 2, 0, + 4, 2, + 3, 0, + 2, 2, + 44, 0, + 10, 2, + 35, 0, + 3, 2, + 3, 0, + 6, 3, + 1, 1, + 1, 2, + 13, 3, + 3, 2, + 1, 1, + 2, 0, + 11, 2, + 2, 0, + 2, 2, + 4, 0, + 1, 1, + 2, 2, + 40, 0, + 1, 1, + 13, 2, + 36, 0, + 2, 2, + 3, 0, + 1, 2, + 5, 3, + 1, 1, + 1, 2, + 13, 3, + 3, 2, + 1, 1, + 2, 0, + 11, 2, + 1, 0, + 2, 2, + 1, 1, + 4, 0, + 2, 2, + 23, 0, + 1, 1, + 1, 2, + 1, 1, + 11, 0, + 1, 1, + 17, 2, + 36, 0, + 2, 2, + 1, 1, + 3, 0, + 5, 3, + 1, 2, + 1, 0, + 13, 3, + 3, 2, + 3, 0, + 11, 2, + 1, 0, + 1, 2, + 1, 1, + 4, 0, + 3, 2, + 21, 0, + 4, 2, + 1, 1, + 8, 0, + 19, 2, + 39, 0, + 2, 2, + 3, 0, + 1, 2, + 4, 3, + 1, 2, + 1, 0, + 1, 2, + 1, 3, + 1, 2, + 10, 3, + 3, 2, + 1, 1, + 2, 0, + 10, 2, + 5, 0, + 5, 2, + 21, 0, + 1, 1, + 4, 2, + 1, 1, + 4, 0, + 1, 1, + 18, 2, + 1, 1, + 42, 0, + 2, 2, + 1, 1, + 3, 0, + 5, 3, + 2, 1, + 1, 3, + 1, 1, + 10, 3, + 3, 2, + 1, 1, + 2, 0, + 10, 2, + 3, 0, + 1, 1, + 4, 2, + 1, 1, + 22, 0, + 1, 1, + 4, 2, + 2, 1, + 18, 2, + 1, 1, + 47, 0, + 2, 2, + 3, 0, + 1, 2, + 4, 3, + 1, 2, + 1, 0, + 1, 2, + 1, 0, + 1, 2, + 9, 3, + 4, 2, + 2, 0, + 1, 1, + 15, 2, + 25, 0, + 1, 1, + 20, 2, + 1, 1, + 51, 0, + 3, 2, + 3, 0, + 1, 2, + 4, 3, + 4, 0, + 1, 1, + 7, 3, + 5, 2, + 3, 0, + 13, 2, + 27, 0, + 1, 1, + 17, 2, + 56, 0, + 2, 2, + 1, 1, + 3, 0, + 4, 3, + 1, 2, + 4, 0, + 1, 2, + 6, 3, + 5, 2, + 8, 0, + 1, 1, + 2, 2, + 32, 0, + 1, 1, + 13, 2, + 1, 1, + 13, 0, + 1, 1, + 3, 2, + 1, 1, + 41, 0, + 3, 2, + 3, 0, + 1, 2, + 4, 3, + 1, 1, + 3, 0, + 1, 1, + 5, 3, + 7, 2, + 7, 0, + 3, 2, + 32, 0, + 1, 1, + 9, 2, + 1, 1, + 13, 0, + 1, 1, + 9, 2, + 41, 0, + 2, 2, + 1, 1, + 3, 0, + 1, 2, + 3, 3, + 1, 2, + 3, 0, + 1, 2, + 5, 3, + 11, 2, + 1, 1, + 2, 0, + 2, 2, + 33, 0, + 1, 1, + 5, 2, + 1, 1, + 14, 0, + 14, 2, + 41, 0, + 2, 2, + 1, 1, + 3, 0, + 1, 2, + 3, 3, + 2, 2, + 2, 0, + 1, 2, + 3, 3, + 12, 2, + 2, 0, + 3, 2, + 33, 0, + 1, 1, + 2, 2, + 14, 0, + 18, 2, + 41, 0, + 1, 1, + 2, 2, + 4, 0, + 1, 2, + 5, 3, + 1, 1, + 1, 0, + 3, 3, + 11, 2, + 3, 0, + 2, 2, + 47, 0, + 1, 1, + 21, 2, + 1, 1, + 41, 0, + 3, 2, + 4, 0, + 1, 1, + 2, 2, + 3, 3, + 2, 2, + 2, 3, + 9, 2, + 1, 1, + 3, 0, + 3, 2, + 43, 0, + 1, 1, + 19, 2, + 1, 1, + 5, 2, + 1, 1, + 42, 0, + 3, 2, + 6, 0, + 1, 2, + 6, 3, + 9, 2, + 3, 0, + 3, 2, + 40, 0, + 1, 1, + 19, 2, + 1, 1, + 5, 0, + 5, 2, + 43, 0, + 3, 2, + 1, 1, + 5, 0, + 1, 2, + 5, 3, + 9, 2, + 2, 0, + 3, 2, + 39, 0, + 1, 1, + 17, 2, + 1, 1, + 9, 0, + 5, 2, + 44, 0, + 4, 2, + 1, 1, + 4, 0, + 1, 2, + 4, 3, + 8, 2, + 1, 1, + 2, 0, + 2, 2, + 39, 0, + 17, 2, + 11, 0, + 6, 2, + 46, 0, + 4, 2, + 1, 1, + 3, 0, + 1, 2, + 3, 3, + 8, 2, + 3, 0, + 2, 2, + 38, 0, + 17, 2, + 11, 0, + 6, 2, + 1, 1, + 47, 0, + 4, 2, + 4, 0, + 4, 3, + 7, 2, + 3, 0, + 2, 2, + 38, 0, + 9, 2, + 4, 0, + 4, 2, + 7, 0, + 1, 1, + 9, 2, + 50, 0, + 3, 2, + 4, 0, + 1, 2, + 2, 3, + 6, 2, + 3, 0, + 1, 1, + 2, 2, + 37, 0, + 1, 1, + 5, 2, + 1, 1, + 6, 0, + 6, 2, + 2, 0, + 1, 1, + 12, 2, + 1, 1, + 51, 0, + 3, 2, + 4, 0, + 1, 2, + 1, 3, + 1, 2, + 1, 0, + 3, 2, + 4, 0, + 2, 2, + 38, 0, + 5, 2, + 1, 1, + 7, 0, + 21, 2, + 53, 0, + 3, 2, + 4, 0, + 2, 2, + 7, 0, + 3, 2, + 38, 0, + 5, 2, + 8, 0, + 19, 2, + 1, 1, + 55, 0, + 3, 2, + 11, 0, + 3, 2, + 39, 0, + 5, 2, + 1, 1, + 7, 0, + 1, 1, + 15, 2, + 1, 1, + 59, 0, + 3, 2, + 8, 0, + 1, 1, + 3, 2, + 40, 0, + 10, 2, + 4, 0, + 12, 2, + 64, 0, + 3, 2, + 1, 1, + 5, 0, + 4, 2, + 41, 0, + 1, 1, + 9, 2, + 5, 0, + 7, 2, + 1, 1, + 68, 0, + 4, 2, + 3, 0, + 4, 2, + 43, 0, + 9, 2, + 82, 0, + 1, 1, + 7, 2, + 45, 0, + 9, 2, + 84, 0, + 5, 2, + 47, 0, + 8, 2, + 138, 0, + 3, 1, + 3059, 0, +) \ No newline at end of file diff --git a/src/jsMain/kotlin/mtmc/Main.kt b/src/jsMain/kotlin/mtmc/Main.kt index d3e0436..1722535 100644 --- a/src/jsMain/kotlin/mtmc/Main.kt +++ b/src/jsMain/kotlin/mtmc/Main.kt @@ -11,12 +11,14 @@ val mainView = MTMCView(computer) val display = DisplayView(computer) fun main() { - computer.speed = 2000000 // default to 1hz + computer.speed = 1000000 computer.load(lifeCode, lifeData) + //computer.load(snakeCode, snakeData) Komponent.create(document.body!!, mainView) computer.start() mainView.requestUpdate() + display.requestUpdate() } diff --git a/src/jsMain/kotlin/mtmc/util/PlatformSpecific.js.kt b/src/jsMain/kotlin/mtmc/util/PlatformSpecific.js.kt index 1d9563d..617b597 100644 --- a/src/jsMain/kotlin/mtmc/util/PlatformSpecific.js.kt +++ b/src/jsMain/kotlin/mtmc/util/PlatformSpecific.js.kt @@ -13,7 +13,7 @@ actual fun requestAnimationFrame(action: (Double) -> Unit) { action(it) display.requestUpdate() - if (currentTimeMillis() - lastMemoryUpdate > 100) { + if (currentTimeMillis() - lastMemoryUpdate > 125) { mainView.registerView.requestUpdate() mainView.memoryView.requestUpdate() lastMemoryUpdate = currentTimeMillis() diff --git a/src/jsMain/kotlin/mtmc/view/ControlView.kt b/src/jsMain/kotlin/mtmc/view/ControlView.kt index 9f42391..f13215b 100644 --- a/src/jsMain/kotlin/mtmc/view/ControlView.kt +++ b/src/jsMain/kotlin/mtmc/view/ControlView.kt @@ -1,18 +1,69 @@ package mtmc.view import kotlinx.html.div +import kotlinx.html.i +import kotlinx.html.span import mtmc.emulator.MonTanaMiniComputer import nl.astraeus.komp.HtmlBuilder import nl.astraeus.komp.Komponent +import kotlin.text.Typography.nbsp class ControlView( val computer: MonTanaMiniComputer ) : Komponent() { override fun HtmlBuilder.render() { - div { - +"Controls view" + /* +
+ MonTana Mini-Computer +
+
+ + + + + +
+ */ + div("control-panel") { + div("control-header") { + span { + +"m" + } + span { + +"s" + } + span { + +"u" + } + nbsp + i { + +"MTMC-16" + } + } + div("control-secondary") { + + } + div("control-buttons") { + + } } } diff --git a/src/jsMain/resources/mtmc.css b/src/jsMain/resources/mtmc.css index b0cf64b..6c2ad17 100644 --- a/src/jsMain/resources/mtmc.css +++ b/src/jsMain/resources/mtmc.css @@ -1,3 +1,12 @@ +root { + --pdp-blue: #243571; + --pdp-light-blue: #3286ce; + --pdp-beige: #fdfddc; + --pdp-white: #f1f1f6; + --pdp-off-white: #F0EBCD; + --filetree-gray: #666; +} + html, body { padding: 0; margin: 0; @@ -52,6 +61,18 @@ body { text-align: right; } +/* control */ + +.control-header { + background-color: var(--pdp-blue); + color: var(--pdp-white); + font-family: monospace; + font-size: 32px; + padding: 4px 24px; + margin-left: 0; + margin-right: 0; +} + /* registers */ table.register-table {