diff --git a/data/print-three.asm b/data/print-three.asm new file mode 100644 index 0000000..ff0a18a --- /dev/null +++ b/data/print-three.asm @@ -0,0 +1,8 @@ + LDA #$01 + STA $0200 + + LDA #$05 + STA $0201 + + LDA #$08 + STA $0202 diff --git a/firepower-demo/src/main/scala/com/htmlism/firepower/demo/PrintPrograms.scala b/firepower-demo/src/main/scala/com/htmlism/firepower/demo/PrintPrograms.scala index 1a419da..5b8a027 100644 --- a/firepower-demo/src/main/scala/com/htmlism/firepower/demo/PrintPrograms.scala +++ b/firepower-demo/src/main/scala/com/htmlism/firepower/demo/PrintPrograms.scala @@ -28,7 +28,8 @@ object PrintPrograms extends ZIOAppDefault: ) .pipe(xxs => AsmBlock.interFlatMap(xxs)(List("", ""), identity)) .pipe(Line.mkString), - "annotated-snake.asm" -> AnnotatedSnake.program + "annotated-snake.asm" -> AnnotatedSnake.program, + "print-three.asm" -> PrintThree.program ) def run: Task[Unit] = diff --git a/firepower-demo/src/main/scala/com/htmlism/firepower/demo/PrintThree.scala b/firepower-demo/src/main/scala/com/htmlism/firepower/demo/PrintThree.scala new file mode 100644 index 0000000..a62226e --- /dev/null +++ b/firepower-demo/src/main/scala/com/htmlism/firepower/demo/PrintThree.scala @@ -0,0 +1,41 @@ +package com.htmlism.firepower.demo + +import scala.util.chaining._ + +import cats.syntax.all._ + +import com.htmlism.firepower.core.AsmBlock._ +import com.htmlism.firepower.core._ + +object PrintThree: + val program: String = + List( + AnonymousCodeBlock( + List( + AsmBlock.Intent( + None, + List( + AsmBlock.Intent.Instruction("LDA #$01", None), + AsmBlock.Intent.Instruction("STA $0200", None) + ) + ), + AsmBlock.Intent( + None, + List( + AsmBlock.Intent.Instruction("LDA #$05", None), + AsmBlock.Intent.Instruction("STA $0201", None) + ) + ), + AsmBlock.Intent( + None, + List( + AsmBlock.Intent.Instruction("LDA #$08", None), + AsmBlock.Intent.Instruction("STA $0202", None) + ) + ) + ) + ) + ) + .map(AsmBlock.toLines) + .pipe(xs => AsmBlock.interFlatMap(xs)(List("", ""), identity)) + .pipe(str.Line.mkString)