Documentation ¶
Overview ¶
Package savekey implements the SaveKey external memory card. It contains 32KB of non-volatile memory. Suitable for saving high scores, game settings, etc.
The SaveKey type implements the ports.Peripheral interface and can be inserted into a VCS port like any other peripheral.
SaveKey information taken from "AtariVox Programmer's Guide" (16/11/04) by Alex Herbert
allocation list at https://atariage.com/atarivox/atarivox_mem_list.html (13/09/2020).
Index ¶
- func NewSaveKey(env *environment.Environment, port plugging.PortID, bus ports.PeripheralBus) ports.Peripheral
- type DataDirection
- type EEPROM
- type SaveKey
- func (sk *SaveKey) HandleEvent(_ ports.Event, _ ports.EventData) (bool, error)
- func (sk *SaveKey) ID() plugging.PeripheralID
- func (sk *SaveKey) IsActive() bool
- func (sk *SaveKey) Plumb(bus ports.PeripheralBus)
- func (sk *SaveKey) PortID() plugging.PortID
- func (sk *SaveKey) Reset()
- func (sk *SaveKey) Snapshot() ports.Peripheral
- func (sk *SaveKey) Step()
- func (sk *SaveKey) String() string
- func (sk *SaveKey) Unplug()
- func (sk *SaveKey) Update(data chipbus.ChangedRegister) bool
- type SaveKeyState
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewSaveKey ¶
func NewSaveKey(env *environment.Environment, port plugging.PortID, bus ports.PeripheralBus) ports.Peripheral
NewSaveKey is the preferred method of initialisation for the SaveKey type.
Types ¶
type DataDirection ¶
type DataDirection int
DataDirection indicates the direction of data flow between the VCS and the SaveKey.
const ( Reading DataDirection = iota Writing )
Valid DataDirection values.
type EEPROM ¶
type EEPROM struct { // the next address an i2c read/write operation will access Address uint16 // amend Data only through put() and Poke() Data []uint8 // the data as it is on disk. data is mutable and we need a way of // comparing what's on disk with what's in memory. DiskData []uint8 // contains filtered or unexported fields }
EEPROM represents the non-volatile memory in the SaveKey peripheral.
type SaveKey ¶
type SaveKey struct { // only two bits of the SWCHA value is of interest to the i2c protocol. // from the perspective of the second player (in which port the SaveKey is // usually inserted) pin 2 is the data signal (SDA) and pin 3 is the // clock signal (SCL) SDA i2c.Trace SCL i2c.Trace // incoming data is interpreted depending on the state of the i2c protocol. // we also need to know the direction of data flow at any given time and // whether the next bit should be acknowledged (the Ack bool) State SaveKeyState Dir DataDirection Ack bool // Data is sent by the VCS one bit at a time. see pushBits(), popBits() and // resetBits() for Bits uint8 BitsCt int // the core of the SaveKey is an EEPROM. EEPROM *EEPROM // contains filtered or unexported fields }
SaveKey represents the SaveKey peripheral. It implements the Peripheral interface.
func (*SaveKey) HandleEvent ¶
HandleEvent implements the ports.Peripheral interface.
func (*SaveKey) ID ¶
func (sk *SaveKey) ID() plugging.PeripheralID
ID implements the ports.Peripheral interface.
func (*SaveKey) Plumb ¶
func (sk *SaveKey) Plumb(bus ports.PeripheralBus)
Plumb implements the ports.Peripheral interface.
func (*SaveKey) Snapshot ¶
func (sk *SaveKey) Snapshot() ports.Peripheral
Snapshot implements the Peripheral interface.
type SaveKeyState ¶ added in v0.17.0
type SaveKeyState int
SaveKeyState records how incoming signals to the SaveKey will be interpreted.
const ( SaveKeyStopped SaveKeyState = iota SaveKeyStarting SaveKeyAddressHi SaveKeyAddressLo SaveKeyData )
List of valid SaveKeyState values.