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 =