diff --git a/src/main/scala/com/htmlism/mos6502/dsl/Color.scala b/src/main/scala/com/htmlism/mos6502/dsl/Color.scala new file mode 100644 index 0000000..82a1867 --- /dev/null +++ b/src/main/scala/com/htmlism/mos6502/dsl/Color.scala @@ -0,0 +1,45 @@ +package com.htmlism.mos6502.dsl + +sealed trait Color + +object Color { + implicit val ev: EnumAsByte[Color] = + new EnumAsByte[Color] { + def toByte(x: Color): Int = + x match { + case Black => 0x0 + case White => 0x1 + case Red => 0x2 + case Cyan => 0x3 + case Purple => 0x4 + case Green => 0x5 + case Blue => 0x6 + case Yellow => 0x7 + case Orange => 0x8 + case Brown => 0x9 + case LightRed => 0xA + case DarkGrey => 0xB + case Grey => 0xC + case LightGreen => 0xD + case LightBlue => 0xE + case LightGrey => 0xF + } + } + + case object Black extends Color + case object White extends Color + case object Red extends Color + case object Cyan extends Color + case object Purple extends Color + case object Green extends Color + case object Blue extends Color + case object Yellow extends Color + case object Orange extends Color + case object Brown extends Color + case object LightRed extends Color + case object DarkGrey extends Color + case object Grey extends Color + case object LightGreen extends Color + case object LightBlue extends Color + case object LightGrey extends Color +} diff --git a/src/main/scala/com/htmlism/mos6502/dsl/EnumAsByte.scala b/src/main/scala/com/htmlism/mos6502/dsl/EnumAsByte.scala new file mode 100644 index 0000000..e92a931 --- /dev/null +++ b/src/main/scala/com/htmlism/mos6502/dsl/EnumAsByte.scala @@ -0,0 +1,5 @@ +package com.htmlism.mos6502.dsl + +trait EnumAsByte[A] { + def toByte(x: A): Int +}