15 lines
522 B
Scala
15 lines
522 B
Scala
package com.htmlism.mos6502.dsl
|
|
|
|
import com.htmlism.mos6502.model.*
|
|
|
|
/**
|
|
* A typed collection, like memory mapped to screen pixels. Access by index instead of by address.
|
|
*/
|
|
case class IndexedAddressCollection[A](baseAddress: Int, name: String)(using ev: Operand[A]):
|
|
def apply(n: Int): GlobalAddress =
|
|
GlobalAddress(baseAddress + n)
|
|
|
|
def write(n: Int, x: A)(using ctx: AssemblyContext): Unit =
|
|
ctx.push(LDA, x, s"write ${ev.toShow(x)} to $name ($n)")
|
|
ctx.push(STA, GlobalAddress(baseAddress + n), "")
|