From 8b839841c185c46dee78175b22d20f954811a519 Mon Sep 17 00:00:00 2001 From: Mark Canlas Date: Sun, 16 Aug 2020 01:56:17 -0400 Subject: [PATCH] write labels --- .../scala/com/htmlism/mos6502/dsl/Color.scala | 17 ++++++++++++++--- .../scala/com/htmlism/mos6502/dsl/Operand.scala | 15 --------------- .../com/htmlism/mos6502/dsl/Easy6502Spec.scala | 6 +++--- 3 files changed, 17 insertions(+), 21 deletions(-) diff --git a/src/main/scala/com/htmlism/mos6502/dsl/Color.scala b/src/main/scala/com/htmlism/mos6502/dsl/Color.scala index e621ad9..d2a51eb 100644 --- a/src/main/scala/com/htmlism/mos6502/dsl/Color.scala +++ b/src/main/scala/com/htmlism/mos6502/dsl/Color.scala @@ -5,9 +5,20 @@ import cats.data.NonEmptyList sealed trait Color object Color { - implicit val ev: Operand[Color] = - Operand.operandInt - .contra(toByte, _.toString) + implicit val colorOperand: Operand[Color] = + new Operand[Color] { + def toAddressLiteral(x: Color): String = + "#" + x.toString.toLowerCase() + + def toShow(x: Color): String = + x.toString + + def operandType: OperandType = + ValueLiteral + + def toDefinitionLiteral(x: Color): String = + toByte(x).toString + } implicit val colorEnum: EnumAsm[Color] = new EnumAsm[Color] { diff --git a/src/main/scala/com/htmlism/mos6502/dsl/Operand.scala b/src/main/scala/com/htmlism/mos6502/dsl/Operand.scala index b073959..2b9f053 100644 --- a/src/main/scala/com/htmlism/mos6502/dsl/Operand.scala +++ b/src/main/scala/com/htmlism/mos6502/dsl/Operand.scala @@ -10,21 +10,6 @@ trait Operand[A] { def operandType: OperandType def toDefinitionLiteral(x: A): String - - def contra[B](f: B => A, show: B => String): Operand[B] = - new Operand[B] { - val operandType: OperandType = - self.operandType - - def toShow(x: B): String = - show(x) - - def toDefinitionLiteral(x: B): String = - toAddressLiteral(x) - - def toAddressLiteral(x: B): String = - self.toAddressLiteral(f(x)) - } } object Operand { diff --git a/src/test/scala/com/htmlism/mos6502/dsl/Easy6502Spec.scala b/src/test/scala/com/htmlism/mos6502/dsl/Easy6502Spec.scala index c18ae8f..ae6f8b4 100644 --- a/src/test/scala/com/htmlism/mos6502/dsl/Easy6502Spec.scala +++ b/src/test/scala/com/htmlism/mos6502/dsl/Easy6502Spec.scala @@ -18,11 +18,11 @@ class Easy6502Spec extends AnyFlatSpec with should.Matchers { } doc.triplets shouldEqual List( - ("LDA", "#$01".some, "write White to screen (0)".some), + ("LDA", "#white".some, "write White to screen (0)".some), ("STA", "$0200".some, "".some), - ("LDA", "#$05".some, "write Green to screen (1)".some), + ("LDA", "#green".some, "write Green to screen (1)".some), ("STA", "$0201".some, "".some), - ("LDA", "#$08".some, "write Orange to screen (2)".some), + ("LDA", "#orange".some, "write Orange to screen (2)".some), ("STA", "$0202".some, "".some) )