Documentation
¶
Overview ¶
Package cartridge fully implements loading of mapping of cartridge memory. Cartridge memory is memory that is peripheral to the VCS and can grow quite complex.
There are many different types of mapping scheme supported by the package.
Some cartridge types contain additional RAM but the main difference is how they map additional ROM into the relatively small address space available for cartridges in the VCS. This is called bank-switching. All of these differences are handled transparently by the package.
Currently supported cartridge types are listed below. The strings in quotation marks are the identifiers that should be used to specify a particular mapping in the Mapping field of cartridgeloader.Loader. An empty string or "AUTO" tells the cartridge system to make a best guess.
Atari 2k "2k" Atari 4k "4k" Atari 8k "F8" Atari 16k "F6" Atari 32k "F4" CBS case "FA" M-Network "E7" Parker Bros "E0" Tigervision "3F" DPC (Pitfall2) "DPC" DPC+ "DPC+" 3E+ "3E+" Supercharger "AR"
Index ¶
- type Cartridge
- func (cart *Cartridge) Attach(cartload cartridgeloader.Loader) error
- func (cart *Cartridge) Eject()
- func (cart Cartridge) GetBank(addr uint16) banks.Details
- func (cart Cartridge) GetRAMbus() bus.CartRAMbus
- func (cart Cartridge) GetRegistersBus() bus.CartRegistersBus
- func (cart Cartridge) GetStaticBus() bus.CartStaticBus
- func (cart Cartridge) ID() string
- func (cart *Cartridge) Initialise()
- func (cart *Cartridge) IsEjected() bool
- func (cart Cartridge) IterateBanks(prev *banks.Content) (*banks.Content, error)
- func (cart Cartridge) Listen(addr uint16, data uint8)
- func (cart Cartridge) MappingSummary() string
- func (cart Cartridge) NumBanks() int
- func (cart *Cartridge) Patch(offset int, data uint8) error
- func (cart *Cartridge) Peek(addr uint16) (uint8, error)
- func (cart *Cartridge) Poke(addr uint16, data uint8) error
- func (cart *Cartridge) Read(addr uint16) (uint8, error)
- func (cart Cartridge) Step()
- func (cart Cartridge) String() string
- func (cart *Cartridge) Write(addr uint16, data uint8) error
- type DPCdataFetcher
- type DPCregisters
- type DPCstatic
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Cartridge ¶
type Cartridge struct { bus.DebugBus bus.CPUBus Filename string Hash string // when cartridge is in passive mode, cartridge hotspots do not work. We // send the passive value to the Read() and Write() functions of the mapper // and we also use it to prevent the Listen() function from triggering. // Useful for disassembly when we don't want the cartridge to react. Passive bool // contains filtered or unexported fields }
Cartridge defines the information and operations for a VCS cartridge
func NewCartridge ¶
func NewCartridge() *Cartridge
NewCartridge is the preferred method of initialisation for the cartridge type
func (*Cartridge) Attach ¶
func (cart *Cartridge) Attach(cartload cartridgeloader.Loader) error
Attach the cartridge loader to the VCS and make available the data to the CPU bus
How cartridges are mapped into the VCS's 4k space can differs dramatically. Much of the implementation details have been cribbed from Kevin Horton's "Cart Information" document [sizes.txt]. Other sources of information noted as appropriate.
func (*Cartridge) Eject ¶
func (cart *Cartridge) Eject()
Eject removes memory from cartridge space and unlike the real hardware, attaches a bank of empty memory - for convenience of the debugger
func (Cartridge) GetBank ¶
GetBank returns the current bank information for the specified address. See documentation for memorymap.Bank for more information.
func (Cartridge) GetRAMbus ¶ added in v0.2.1
func (cart Cartridge) GetRAMbus() bus.CartRAMbus
GetRAMbus returns an array of bus.CartRAM or nil if catridge contains no RAM
func (Cartridge) GetRegistersBus ¶ added in v0.3.1
func (cart Cartridge) GetRegistersBus() bus.CartRegistersBus
GetRegistersBus returns interface to the debugging bus to the cartridge.
func (Cartridge) GetStaticBus ¶ added in v0.3.1
func (cart Cartridge) GetStaticBus() bus.CartStaticBus
GetStaticBus returns interface to the debugging bus to the cartridge.
func (Cartridge) IterateBanks ¶ added in v0.3.1
IterateBanks returns the sequence of banks in a cartridge. To return the next bank in the sequence, call the function with the instance of banks.Content returned from the previous call. The end of the sequence is indicated by the nil value. Start a new iteration with the nil argument.
func (Cartridge) Listen ¶
Listen for data at the specified address.
The VCS cartridge port is wired up to all 13 address lines of the 6507. Under normal operation, the chip-select line is used by the cartridge to know when to put data on the data bus. If it's not "on" then the cartridge does nothing.
However, the option is there to "listen" on the address bus. Notably the tigervision (3F) mapping listens for address 0x003f, which is in the TIA address space. When this address is triggered, the tigervision cartridge will use whatever is on the data bus to switch banks.
func (Cartridge) MappingSummary ¶ added in v0.3.1
MappingSummary returns a current string summary of the mapper
func (*Cartridge) Patch ¶
Patch writes to cartridge memory. Offset is measured from the start of cartridge memory. It differs from Poke in that respect
func (*Cartridge) Read ¶
Read is an implementation of memory.CPUBus. Address should not be normalised.
type DPCdataFetcher ¶ added in v0.2.1
type DPCdataFetcher struct { Low byte Hi byte Top byte Bottom byte // is the Low byte in the window between top and bottom Flag bool // music mode only used by data fetchers 4-7 MusicMode bool OSCclock bool }
DPCdataFetcher represents a single DPC data fetcher
type DPCregisters ¶ added in v0.2.1
type DPCregisters struct { Fetcher [8]DPCdataFetcher // the current random number value RNG uint8 }
DPCregisters implements the bus.CartRegisters interface
func (DPCregisters) String ¶ added in v0.2.1
func (r DPCregisters) String() string
Source Files
¶
Directories
¶
Path | Synopsis |
---|---|
Package banks contains types that are used by the cartridge package to communicate information about catridge banks to the debugger.
|
Package banks contains types that are used by the cartridge package to communicate information about catridge banks to the debugger. |
Package harmony implements the Harmony cartridge.
|
Package harmony implements the Harmony cartridge. |
Package supercharger implements the tape based cartridge format.
|
Package supercharger implements the tape based cartridge format. |