diff --git a/scratchpad/src/main/scala/com/htmlism/scratchpad/Load.scala b/scratchpad/src/main/scala/com/htmlism/scratchpad/Load.scala index b3cfe39..e30c72e 100644 --- a/scratchpad/src/main/scala/com/htmlism/scratchpad/Load.scala +++ b/scratchpad/src/main/scala/com/htmlism/scratchpad/Load.scala @@ -2,14 +2,13 @@ package com.htmlism.scratchpad object Load: def constA[B: Encoded.Byte](x: B): Asm1[Reg.A] = - Const(x) + const(x) def constX[B: Encoded.Byte](x: B): Asm1[Reg.X] = - Const(x) + const(x) def constY[B: Encoded.Byte](x: B): Asm1[Reg.Y] = - Const(x) + const(x) - case class Const[R, A](x: A)(using R: Register[R], A: Encoded.Byte[A]) extends Asm1[R]: - def xs: List[String] = - List(s"${R.load} ${A.int(x)}") + private def const[R, A](x: A)(using R: Register[R], A: Encoded.Byte[A]) = + Asm1Instructions[R](List(s"${R.load} ${A.int(x)}")) diff --git a/scratchpad/src/main/scala/com/htmlism/scratchpad/Store.scala b/scratchpad/src/main/scala/com/htmlism/scratchpad/Store.scala index 7ce7217..03af3c0 100644 --- a/scratchpad/src/main/scala/com/htmlism/scratchpad/Store.scala +++ b/scratchpad/src/main/scala/com/htmlism/scratchpad/Store.scala @@ -2,14 +2,13 @@ package com.htmlism.scratchpad object Store: def fromA[A](dest: WriteLease.ByteAddress[A]): Asm2[Reg.A, A] = - Byte[Reg.A, A](dest) + from[Reg.A, A](dest) def fromX[A](dest: WriteLease.ByteAddress[A]): Asm2[Reg.X, A] = - Byte[Reg.X, A](dest) + from[Reg.X, A](dest) def fromY[A](dest: WriteLease.ByteAddress[A]): Asm2[Reg.Y, A] = - Byte[Reg.Y, A](dest) + from[Reg.Y, A](dest) - case class Byte[R, A](dest: WriteLease.ByteAddress[A])(using R: Register[R]) extends Asm2[R, A]: - def xs: List[String] = - List(R.store + " " + dest.address) + private def from[R, A](dest: WriteLease.ByteAddress[A])(using R: Register[R]) = + Asm2Instructions[R, A](List(R.store + " " + dest.address)) diff --git a/scratchpad/src/main/scala/com/htmlism/scratchpad/asm.scala b/scratchpad/src/main/scala/com/htmlism/scratchpad/asm.scala index 068c231..ac06ab8 100644 --- a/scratchpad/src/main/scala/com/htmlism/scratchpad/asm.scala +++ b/scratchpad/src/main/scala/com/htmlism/scratchpad/asm.scala @@ -1,6 +1,6 @@ package com.htmlism.scratchpad -trait Asm1[A]: +sealed trait Asm1[A]: def xs: List[String] def widenWith[B]: Asm2[A, B] = @@ -8,7 +8,7 @@ trait Asm1[A]: case class Asm1Instructions[A](xs: List[String]) extends Asm1[A] -trait Asm2[A, B]: +sealed trait Asm2[A, B]: def xs: List[String] def andThen(that: Asm2[A, B]): Asm2[A, B] =