From 9b4aac9a6265c4d1da43d53579147a6095e927d1 Mon Sep 17 00:00:00 2001 From: Mark Canlas Date: Tue, 6 Dec 2022 15:38:39 -0500 Subject: [PATCH] defines block --- data/print-three-upper-math.asm | 34 +++++++++---------- data/print-three-upper.asm | 34 +++++++++---------- .../com/htmlism/firepower/core/AsmBlock.scala | 8 +++++ .../htmlism/firepower/demo/PrintThree.scala | 20 ++--------- 4 files changed, 44 insertions(+), 52 deletions(-) diff --git a/data/print-three-upper-math.asm b/data/print-three-upper-math.asm index 80de235..fd6d1bd 100644 --- a/data/print-three-upper-math.asm +++ b/data/print-three-upper-math.asm @@ -1,22 +1,22 @@ -; define COLOR_Black 0 -; define COLOR_White 1 -; define COLOR_Red 2 -; define COLOR_Cyan 3 -; define COLOR_Purple 4 -; define COLOR_Green 5 -; define COLOR_Blue 6 -; define COLOR_Yellow 7 -; define COLOR_Orange 8 -; define COLOR_Brown 9 -; define COLOR_LightRed 10 -; define COLOR_DarkGrey 11 -; define COLOR_Grey 12 -; define COLOR_LightGreen 13 -; define COLOR_LightBlue 14 -; define COLOR_LightGrey 15 +define COLOR_Black 0 +define COLOR_White 1 +define COLOR_Red 2 +define COLOR_Cyan 3 +define COLOR_Purple 4 +define COLOR_Green 5 +define COLOR_Blue 6 +define COLOR_Yellow 7 +define COLOR_Orange 8 +define COLOR_Brown 9 +define COLOR_LightRed 10 +define COLOR_DarkGrey 11 +define COLOR_Grey 12 +define COLOR_LightGreen 13 +define COLOR_LightBlue 14 +define COLOR_LightGrey 15 -; define SCREEN TODO +define SCREEN TODO ; Screen(0) = White diff --git a/data/print-three-upper.asm b/data/print-three-upper.asm index 80de235..fd6d1bd 100644 --- a/data/print-three-upper.asm +++ b/data/print-three-upper.asm @@ -1,22 +1,22 @@ -; define COLOR_Black 0 -; define COLOR_White 1 -; define COLOR_Red 2 -; define COLOR_Cyan 3 -; define COLOR_Purple 4 -; define COLOR_Green 5 -; define COLOR_Blue 6 -; define COLOR_Yellow 7 -; define COLOR_Orange 8 -; define COLOR_Brown 9 -; define COLOR_LightRed 10 -; define COLOR_DarkGrey 11 -; define COLOR_Grey 12 -; define COLOR_LightGreen 13 -; define COLOR_LightBlue 14 -; define COLOR_LightGrey 15 +define COLOR_Black 0 +define COLOR_White 1 +define COLOR_Red 2 +define COLOR_Cyan 3 +define COLOR_Purple 4 +define COLOR_Green 5 +define COLOR_Blue 6 +define COLOR_Yellow 7 +define COLOR_Orange 8 +define COLOR_Brown 9 +define COLOR_LightRed 10 +define COLOR_DarkGrey 11 +define COLOR_Grey 12 +define COLOR_LightGreen 13 +define COLOR_LightBlue 14 +define COLOR_LightGrey 15 -; define SCREEN TODO +define SCREEN TODO ; 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 d76cb18..3e3ac73 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,6 +9,8 @@ object AsmBlock: def fromMultiline(s: String): CommentBlock = CommentBlock(s.split("\\n").toList) + case class DefinesBlock(xs: List[(String, String)]) extends AsmBlock + case class NamedCodeBlock(name: String, comment: Option[String], intents: List[AsmBlock.Intent]) extends AsmBlock case class AnonymousCodeBlock(intents: List[AsmBlock.Intent]) extends AsmBlock @@ -32,6 +34,12 @@ object AsmBlock: case CommentBlock(ys) => ys.map(toComment) + case DefinesBlock(kvs) => + kvs + .map { case (k, v) => + s"define $k $v" + } + case NamedCodeBlock(label, oComment, intents) => val headerParagraph = List(label + ":") ++ oComment.map(toComment).map(withIndent).toList 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 e7cef15..97c0725 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 @@ -39,30 +39,14 @@ object PrintThree: case AssemblerOptions.DefinitionsMode.UseLiterals => Nil - case AssemblerOptions.DefinitionsMode.UseDefinitions => + case AssemblerOptions.DefinitionsMode.UseDefinitions | AssemblerOptions.DefinitionsMode.UseDefinitionsWithMath => program .flatMap(_.defines) .distinct .map { xs => xs .toList - .map { case (k, v) => - s"define $k $v" - } - .pipe(AsmBlock.CommentBlock(_)) - } - - case AssemblerOptions.DefinitionsMode.UseDefinitionsWithMath => - program - .flatMap(_.defines.toList) - .distinct - .map { xs => - xs - .toList - .map { case (k, v) => - s"define $k $v" - } - .pipe(AsmBlock.CommentBlock(_)) + .pipe(AsmBlock.DefinesBlock(_)) } private def codes(opts: AssemblerOptions) =