diff --git a/src/main/scala/com/htmlism/mos6502/dsl/ReadWriteLocation.scala b/src/main/scala/com/htmlism/mos6502/dsl/ReadWriteLocation.scala
index 3bb5bfa..ff15d98 100644
--- a/src/main/scala/com/htmlism/mos6502/dsl/ReadWriteLocation.scala
+++ b/src/main/scala/com/htmlism/mos6502/dsl/ReadWriteLocation.scala
@@ -15,11 +15,23 @@ case class ReadWriteLocation[A: Operand](name: String, address: ZeroAddress) {
def write(x: A)(implicit ctx: AssemblyContext): Unit = {
ctx.push(LDA, x)
- ctx.push(STA, address) // should be named address
+ ctx.push(STA, this)
}
}
object ReadWriteLocation {
+ implicit def operandForReadWriteLocation[A]: Operand[ReadWriteLocation[A]] =
+ new Operand[ReadWriteLocation[A]] {
+ def toAddressLiteral(x: ReadWriteLocation[A]): String =
+ x.name
+
+ def toShow(x: ReadWriteLocation[A]): String =
+ x.name
+
+ def operandType: OperandType =
+ MemoryLocation
+ }
+
implicit def namedResourceForReadWriteLocation[A]: NamedResource[ReadWriteLocation[A]] =
new NamedResource[ReadWriteLocation[A]] {
def toDefinitions(x: ReadWriteLocation[A]): List[Definition[ZeroAddress]] =
diff --git a/src/test/scala/com/htmlism/mos6502/dsl/snake/Easy6502Spec.scala b/src/test/scala/com/htmlism/mos6502/dsl/snake/Easy6502Spec.scala
index c1b0d8c..62cd560 100644
--- a/src/test/scala/com/htmlism/mos6502/dsl/snake/Easy6502Spec.scala
+++ b/src/test/scala/com/htmlism/mos6502/dsl/snake/Easy6502Spec.scala
@@ -78,8 +78,7 @@ class Easy6502Spec extends AnyFlatSpec with should.Matchers {
val initSnake =
sub("initSnake") { implicit a =>
snakeDirection.write(Right)
-
- snakeLength.read
+ snakeLength.write(4) // 2 * 2
}
val generateApplePosition =