From 501bc4b527095ac425114e314c1d6d555877e76d Mon Sep 17 00:00:00 2001 From: Mark Canlas Date: Tue, 6 Dec 2022 16:39:00 -0500 Subject: [PATCH] define table is a function of an instance --- data/print-three-upper-math.asm | 2 +- data/print-three-upper.asm | 2 +- .../com/htmlism/firepower/core/AsmBlock.scala | 2 +- .../com/htmlism/firepower/demo/Definable.scala | 2 +- .../com/htmlism/firepower/demo/Easy6502.scala | 8 ++++---- .../com/htmlism/firepower/demo/PrintThree.scala | 16 ++++++++-------- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/data/print-three-upper-math.asm b/data/print-three-upper-math.asm index 6d5ac1a..c4bb9b4 100644 --- a/data/print-three-upper-math.asm +++ b/data/print-three-upper-math.asm @@ -16,7 +16,7 @@ define COLOR_LightBlue 14 define COLOR_LightGrey 15 -define SCREEN TODO +define SCREEN 200 ; Screen(0) = White diff --git a/data/print-three-upper.asm b/data/print-three-upper.asm index 6d5ac1a..c4bb9b4 100644 --- a/data/print-three-upper.asm +++ b/data/print-three-upper.asm @@ -16,7 +16,7 @@ define COLOR_LightBlue 14 define COLOR_LightGrey 15 -define SCREEN TODO +define SCREEN 200 ; Screen(0) = White diff --git a/firepower-core/src/main/scala/com/htmlism/firepower/core/AsmBlock.scala b/firepower-core/src/main/scala/com/htmlism/firepower/core/AsmBlock.scala index 92ae934..7119d9e 100644 --- a/firepower-core/src/main/scala/com/htmlism/firepower/core/AsmBlock.scala +++ b/firepower-core/src/main/scala/com/htmlism/firepower/core/AsmBlock.scala @@ -9,7 +9,7 @@ object AsmBlock: def fromMultiline(s: String): CommentBlock = CommentBlock(s.split("\\n").toList) - case class DefinesBlock(xs: List[(String, String)]) extends AsmBlock + case class DefinesBlock(xs: List[(String, Int)]) extends AsmBlock case class NamedCodeBlock(name: String, comment: Option[String], intents: List[AsmBlock.Intent]) extends AsmBlock diff --git a/firepower-demo/src/main/scala/com/htmlism/firepower/demo/Definable.scala b/firepower-demo/src/main/scala/com/htmlism/firepower/demo/Definable.scala index 6140f12..93b9376 100644 --- a/firepower-demo/src/main/scala/com/htmlism/firepower/demo/Definable.scala +++ b/firepower-demo/src/main/scala/com/htmlism/firepower/demo/Definable.scala @@ -3,7 +3,7 @@ package com.htmlism.firepower.demo import scala.collection.immutable._ trait Definable[A]: - def table: ListMap[String, String] + def table(x: A): ListMap[String, Int] extension (x: A) def toComment: String diff --git a/firepower-demo/src/main/scala/com/htmlism/firepower/demo/Easy6502.scala b/firepower-demo/src/main/scala/com/htmlism/firepower/demo/Easy6502.scala index 0ab7024..5763832 100644 --- a/firepower-demo/src/main/scala/com/htmlism/firepower/demo/Easy6502.scala +++ b/firepower-demo/src/main/scala/com/htmlism/firepower/demo/Easy6502.scala @@ -10,12 +10,12 @@ object Easy6502: object Color: given Definable[Color] with - def table: ListMap[String, String] = + def table(x: Color): ListMap[String, Int] = Color .values .iterator .map { c => - "COLOR_" + c.toString -> c.ordinal.toString + "COLOR_" + c.toString -> c.ordinal } .pipe(ListMap.from) @@ -40,8 +40,8 @@ object Easy6502: object Pixel: given Definable[Pixel] with - def table: ListMap[String, String] = - ListMap("SCREEN" -> "TODO") // define table needs to be a function of an instance + def table(x: Pixel): ListMap[String, Int] = + ListMap("SCREEN" -> x.baseAddr) // define table needs to be a function of an instance extension (x: Pixel) def toComment: String = diff --git a/firepower-demo/src/main/scala/com/htmlism/firepower/demo/PrintThree.scala b/firepower-demo/src/main/scala/com/htmlism/firepower/demo/PrintThree.scala index 97c0725..babb779 100644 --- a/firepower-demo/src/main/scala/com/htmlism/firepower/demo/PrintThree.scala +++ b/firepower-demo/src/main/scala/com/htmlism/firepower/demo/PrintThree.scala @@ -9,14 +9,14 @@ import com.htmlism.firepower.core.AsmBlock._ import com.htmlism.firepower.core._ object PrintThree: - trait DefinesHelper(xs: Definable[_]*): - def defines: Seq[ListMap[String, String]] = - xs - .iterator - .map(_.table) - .toList - - case class Move[A: Definable, B: Definable](src: A, dest: B) extends DefinesHelper(Definable[A], Definable[B]) + case class Move[A: Definable, B: Definable](src: A, dest: B): + def defines: List[ListMap[String, Int]] = + List( + Definable[A] + .table(src), + Definable[B] + .table(dest) + ) def build(screen: Easy6502.Screen): List[Move[Easy6502.Color, Easy6502.Screen.Pixel]] = List(