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
i2c information taken from https://learn.sparkfun.com/tutorials/i2c/all (13/09/2020)
allocation list at https://atariage.com/atarivox/atarivox_mem_list.html (13/09/2020)
Index ¶
Constants ¶
const ( TraceHi = 1.0 TraceLo = -1.0 )
Variables ¶
This section is empty.
Functions ¶
func NewSaveKey ¶
func NewSaveKey(id ports.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 // whether data is in memory is synced with copy on disk Dirty bool // contains filtered or unexported fields }
EEPROM represents the non-volatile memory in the SaveKey peripheral.
type MessageState ¶
type MessageState int
MessageState records how incoming signals to the SaveKey will be interpreted.
const ( Stopped MessageState = iota Starting AddressHi AddressLo Data )
List of valid MessageState values.
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 trace SCL 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 MessageState 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) Plumb ¶
func (sk *SaveKey) Plumb(bus ports.PeripheralBus)
Plumb implements the ports.Peripheral interface.