savekey

package
v0.30.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 17, 2024 License: GPL-3.0 Imports: 11 Imported by: 0

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

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewSaveKey

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
}

EEPROM represents the non-volatile memory in the SaveKey peripheral.

func (*EEPROM) Poke

func (ee *EEPROM) Poke(address uint16, data uint8)

Poke a value into EEPROM.

func (*EEPROM) Read

func (ee *EEPROM) Read()

Read EEPROM data from disk.

func (*EEPROM) Write

func (ee *EEPROM) Write()

Write EEPROM data to disk.

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

func (sk *SaveKey) HandleEvent(_ ports.Event, _ ports.EventData) (bool, error)

HandleEvent implements the ports.Peripheral interface.

func (*SaveKey) ID

func (sk *SaveKey) ID() plugging.PeripheralID

ID implements the ports.Peripheral interface.

func (*SaveKey) IsActive

func (sk *SaveKey) IsActive() bool

IsActive implements the ports.Peripheral interface.

func (*SaveKey) Plumb

func (sk *SaveKey) Plumb(bus ports.PeripheralBus)

Plumb implements the ports.Peripheral interface.

func (*SaveKey) PortID

func (sk *SaveKey) PortID() plugging.PortID

PortID implements the ports.Peripheral interface.

func (*SaveKey) Reset

func (sk *SaveKey) Reset()

Reset implements the ports.Peripheral interface.

func (*SaveKey) Snapshot

func (sk *SaveKey) Snapshot() ports.Peripheral

Snapshot implements the Peripheral interface.

func (*SaveKey) Step

func (sk *SaveKey) Step()

Step implements the ports.Peripheral interface.

func (*SaveKey) String

func (sk *SaveKey) String() string

func (*SaveKey) Unplug added in v0.17.0

func (sk *SaveKey) Unplug()

Unplug implements the Peripheral interface.

func (*SaveKey) Update

func (sk *SaveKey) Update(data chipbus.ChangedRegister) bool

Update implements the ports.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.

Directories

Path Synopsis
Package i2c facilitates the reading of i2c data for the SaveKey (and AtariVox) peripherals.
Package i2c facilitates the reading of i2c data for the SaveKey (and AtariVox) peripherals.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL