This commit is contained in:
Mark Canlas 2022-12-01 20:44:59 -05:00
parent 8d908d9818
commit d9fedd52dd
13 changed files with 88 additions and 93 deletions

View File

@ -2,16 +2,11 @@ version = "3.6.1"
runner.dialect = "scala3"
align.tokens = [
{code = "%", owner = "Term.ApplyInfix"},
{code = "%%", owner = "Term.ApplyInfix"}
]
maxColumn = 120
align.openParenCallSite = false
align.preset = more
align.preset = most
docstrings = ScalaDoc
docstrings.blankFirstLine = yes

View File

@ -17,9 +17,9 @@ object GitHubActionsSettings extends AutoPlugin {
GitHubActionsPlugin
override val buildSettings: Seq[Setting[_]] = Seq(
githubWorkflowBuild := Seq(WorkflowStep.Sbt(List("scalafmtCheck", "test"))),
githubWorkflowEnv := Map("GH_PACKAGES_TOKEN" -> "${{ secrets.GH_PACKAGES_TOKEN }}"),
githubWorkflowBuild := Seq(WorkflowStep.Sbt(List("scalafmtCheck", "test"))),
githubWorkflowEnv := Map("GH_PACKAGES_TOKEN" -> "${{ secrets.GH_PACKAGES_TOKEN }}"),
githubWorkflowPublishTargetBranches := Nil,
githubWorkflowIncludeClean := false
githubWorkflowIncludeClean := false
)
}

View File

@ -12,7 +12,7 @@ object LintingPlugin extends AutoPlugin {
override val buildSettings =
Seq(
scalafixDependencies += "com.github.liancheng" %% "organize-imports" % "0.5.0",
semanticdbEnabled := true,
semanticdbVersion := scalafixSemanticdb.revision
semanticdbEnabled := true,
semanticdbVersion := scalafixSemanticdb.revision
)
}

View File

@ -42,7 +42,7 @@ case class AndThen2[A, B](left: Asm2[A, B], right: Asm2[A, B], oComment: Option[
copy(oComment = Some(s))
case class Asm2Instructions[A, B](xs: List[String], oComment: Option[String] = None) extends Asm2[A, B]:
def comment(s: String): Asm2[A, B] =
def comment(s: String): Asm2[A, B] =
copy(oComment = Some(s))
// TODO not tested
// B type needs to be a class type, with evidence, not a case class

View File

@ -212,7 +212,7 @@ object MatchOpcodes:
def wideColumns: Seq[Int] =
for {
cc <- 0 to 3
y <- 0 to 1
y <- 0 to 1
xx <- 0 to 3
} yield (xx << 3) + (y << 2) + cc
@ -234,7 +234,7 @@ object MatchOpcodes:
case 1 => c01(aaa, bbb)
case 2 => c10(aaa, bbb)
case 3 => None
case _ => throw new IllegalStateException("an int should always have bits to find")
case _ => throw new IllegalStateException("an int should always have bits to find")
def c01(aaa: Int, bbb: Int): Option[(Instruction, AddressingMode)] =
val instruction =

View File

@ -21,9 +21,9 @@ trait BitExtractor[A]:
def unapply(n: Int): Option[(A, B)] =
for {
b <- that.unapply(n)
b <- that.unapply(n)
shifted = n >> that.length
a <- self.unapply(shifted)
a <- self.unapply(shifted)
} yield (a, b)
object AtomExtractor:
@ -41,6 +41,6 @@ abstract class PrimitiveBitExtractor(val length: Int) extends BitExtractor[Int]:
def unapply(n: Int): Option[Int] =
Some(n & mask)
object OneBit extends PrimitiveBitExtractor(1)
object TwoBits extends PrimitiveBitExtractor(2)
object OneBit extends PrimitiveBitExtractor(1)
object TwoBits extends PrimitiveBitExtractor(2)
object ThreeBits extends PrimitiveBitExtractor(3)

View File

@ -47,19 +47,19 @@ object Color:
def comment(x: Color): String =
x.toString
case object Black extends Color
case object White extends Color
case object Red extends Color
case object Cyan extends Color
case object Purple extends Color
case object Green extends Color
case object Blue extends Color
case object Yellow extends Color
case object Orange extends Color
case object Brown extends Color
case object LightRed extends Color
case object DarkGrey extends Color
case object Grey extends Color
case object Black extends Color
case object White extends Color
case object Red extends Color
case object Cyan extends Color
case object Purple extends Color
case object Green extends Color
case object Blue extends Color
case object Yellow extends Color
case object Orange extends Color
case object Brown extends Color
case object LightRed extends Color
case object DarkGrey extends Color
case object Grey extends Color
case object LightGreen extends Color
case object LightBlue extends Color
case object LightGrey extends Color
case object LightBlue extends Color
case object LightGrey extends Color

View File

@ -21,7 +21,7 @@ case class UnaryInstruction(instruction: Instruction, comment: Option[String]) e
comment match
case Some(c) =>
Statement.indent + f"$left%-16s ; " + c
case None =>
case None =>
Statement.indent + left
def toTriplet: (String, Option[String], Option[String]) =
@ -40,7 +40,7 @@ case class InstructionWithOperand[A](instruction: Instruction, operand: A, comme
comment match
case Some(c) =>
Statement.indent + f"$left%-5s $operandStr%-11s; " + c
case None =>
case None =>
Statement.indent + f"$left%-5s $operandStr"
def toTriplet: (String, Option[String], Option[String]) =

View File

@ -2,17 +2,17 @@ package com.htmlism.mos6502.model
sealed trait AddressingMode
case object Immediate extends AddressingMode
case object ZeroPage extends AddressingMode
case object ZeroPageX extends AddressingMode
case object ZeroPageY extends AddressingMode
case object Absolute extends AddressingMode
case object AbsoluteX extends AddressingMode
case object AbsoluteY extends AddressingMode
case object Indirect extends AddressingMode // used by jump
case object IndirectX extends AddressingMode
case object IndirectY extends AddressingMode
case object Relative extends AddressingMode // used by branches
case object Immediate extends AddressingMode
case object ZeroPage extends AddressingMode
case object ZeroPageX extends AddressingMode
case object ZeroPageY extends AddressingMode
case object Absolute extends AddressingMode
case object AbsoluteX extends AddressingMode
case object AbsoluteY extends AddressingMode
case object Indirect extends AddressingMode // used by jump
case object IndirectX extends AddressingMode
case object IndirectY extends AddressingMode
case object Relative extends AddressingMode // used by branches
case object Accumulator extends AddressingMode
case object Implied extends AddressingMode
case object NoMode extends AddressingMode
case object Implied extends AddressingMode
case object NoMode extends AddressingMode

View File

@ -24,9 +24,9 @@ case object CPY extends Arithmetic
sealed trait Load extends Instruction:
def theme: String = "load"; def color: String = "BurlyWood"
case object LDA extends Load
case object LDX extends Load
case object LDY extends Load
case object LDA extends Load
case object LDX extends Load
case object LDY extends Load
sealed trait Store extends Instruction:
def theme: String = "store"; def color: String = "Bisque"
@ -59,52 +59,52 @@ case object DEY extends Decrement
sealed trait Jump extends Instruction:
def theme: String = "jump"; def color: String = "Salmon"
case object JMP extends Jump
case object JSR extends Jump
case object RTS extends Jump
case object JMP extends Jump
case object JSR extends Jump
case object RTS extends Jump
sealed trait Branch extends Instruction:
def theme: String = "branch"; def color: String = "DodgerBlue"
case object BCC extends Branch
case object BCS extends Branch
case object BEQ extends Branch
case object BMI extends Branch
case object BNE extends Branch
case object BPL extends Branch
case object BVC extends Branch
case object BVS extends Branch
case object BCC extends Branch
case object BCS extends Branch
case object BEQ extends Branch
case object BMI extends Branch
case object BNE extends Branch
case object BPL extends Branch
case object BVC extends Branch
case object BVS extends Branch
sealed trait System extends Instruction:
def theme: String = "system"; def color: String = "Peru"
case object BRK extends System
case object NOP extends System
case object RTI extends System
case object BRK extends System
case object NOP extends System
case object RTI extends System
sealed trait Stack extends Instruction:
def theme: String = "stack"; def color: String = "Wheat"
case object TSX extends Stack
case object TXS extends Stack
case object PHA extends Stack
case object PHP extends Stack
case object PLA extends Stack
case object PLP extends Stack
case object TSX extends Stack
case object TXS extends Stack
case object PHA extends Stack
case object PHP extends Stack
case object PLA extends Stack
case object PLP extends Stack
sealed trait Transfer extends Instruction:
def theme: String = "transfer"; def color: String = "Teal"
case object TAX extends Transfer
case object TAY extends Transfer
case object TXA extends Transfer
case object TYA extends Transfer
case object TAX extends Transfer
case object TAY extends Transfer
case object TXA extends Transfer
case object TYA extends Transfer
sealed trait Clear extends Instruction:
def theme: String = "clear"; def color: String = "LightSteelBlue"
case object CLC extends Clear
case object CLD extends Clear
case object CLI extends Clear
case object CLV extends Clear
case object CLC extends Clear
case object CLD extends Clear
case object CLI extends Clear
case object CLV extends Clear
sealed trait SetFlag extends Instruction:
def theme: String = "set"; def color: String = "Thistle"
case object SEC extends SetFlag
case object SED extends SetFlag
case object SEI extends SetFlag
case object SEC extends SetFlag
case object SED extends SetFlag
case object SEI extends SetFlag

View File

@ -90,8 +90,8 @@ class DslSpec extends AnyFlatSpec with should.Matchers:
sealed trait Triforce
case object Courage extends Triforce
case object Wisdom extends Triforce
case object Power extends Triforce
case object Wisdom extends Triforce
case object Power extends Triforce
object Triforce:
implicit val enumTriforce: EnumAsm[Triforce] =
@ -110,9 +110,9 @@ object Triforce:
sealed trait TestDirection
case object Up extends TestDirection
case object Down extends TestDirection
case object Left extends TestDirection
case object Up extends TestDirection
case object Down extends TestDirection
case object Left extends TestDirection
case object Right extends TestDirection
object TestDirection:

View File

@ -17,7 +17,7 @@ object Direction:
sealed trait Direction
case object Up extends Direction
case object Down extends Direction
case object Left extends Direction
case object Up extends Direction
case object Down extends Direction
case object Left extends Direction
case object Right extends Direction

View File

@ -68,12 +68,12 @@ class Easy6502Spec extends AnyFlatSpec with should.Matchers:
}
"snake" should "compile" in {
val sysRandom = VolatileDevice[Int]("sysRandom", 0xfe.z)
val sysRandom = VolatileDevice[Int]("sysRandom", 0xfe.z)
val sysLastKey = VolatileDevice[AsciiValue]("sysLastKey", 0xff.z)
val appleLocation = ReadWriteLocation[Int]("appleLocation", 0x00.z)
val appleLocation = ReadWriteLocation[Int]("appleLocation", 0x00.z)
val snakeDirection = ReadWriteLocation[Direction]("snakeDirection", 0x02.z)
val snakeLength = ReadWriteLocation[Int]("snakeLength", 0x03.z)
val snakeLength = ReadWriteLocation[Int]("snakeLength", 0x03.z)
val initSnake =
sub("initSnake") { implicit a =>