mirror of
https://github.com/mcanlas/6502-opcodes.git
synced 2025-04-16 22:37:18 +00:00
fmt
This commit is contained in:
parent
8d908d9818
commit
d9fedd52dd
@ -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
|
||||
|
@ -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
|
||||
)
|
||||
}
|
||||
|
@ -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
|
||||
)
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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 =
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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]) =
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
@ -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 =>
|
||||
|
Loading…
x
Reference in New Issue
Block a user