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] =