stella/src/debugger/RiotDebug.hxx

111 lines
3.0 KiB
C++

//============================================================================
//
// SSSS tt lll lll
// SS SS tt ll ll
// SS tttttt eeee ll ll aaaa
// SSSS tt ee ee ll ll aa
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2017 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//============================================================================
#ifndef RIOT_DEBUG_HXX
#define RIOT_DEBUG_HXX
class M6532;
class Debugger;
class RiotDebug;
#include "DebuggerSystem.hxx"
class RiotState : public DebuggerState
{
public:
uInt8 SWCHA_R, SWCHA_W, SWACNT, SWCHB_R, SWCHB_W, SWBCNT;
BoolArray swchaReadBits;
BoolArray swchaWriteBits;
BoolArray swacntBits;
BoolArray swchbReadBits;
BoolArray swchbWriteBits;
BoolArray swbcntBits;
uInt8 TIM1T, TIM8T, TIM64T, T1024T, INTIM, TIMINT;
Int32 TIMCLKS, INTIMCLKS;
// These are actually from the TIA, but are I/O related
uInt8 INPT0, INPT1, INPT2, INPT3, INPT4, INPT5;
};
class RiotDebug : public DebuggerSystem
{
public:
RiotDebug(Debugger& dbg, Console& console);
const DebuggerState& getState() override;
const DebuggerState& getOldState() override { return myOldState; }
void saveOldState() override;
string toString() override;
/* Port A and B registers */
uInt8 swcha(int newVal = -1);
uInt8 swacnt(int newVal = -1);
uInt8 swchb(int newVal = -1);
uInt8 swbcnt(int newVal = -1);
/* TIA INPTx and VBLANK registers
Techically not part of the RIOT, but more appropriately placed here */
uInt8 inpt(int x);
bool vblank(int bit);
/* Timer registers & associated clock */
uInt8 tim1T(int newVal = -1);
uInt8 tim8T(int newVal = -1);
uInt8 tim64T(int newVal = -1);
uInt8 tim1024T(int newVal = -1);
uInt8 intim() const;
uInt8 timint() const;
Int32 timClocks() const;
Int32 intimClocks() const;
/* Controller ports */
Controller& controller(Controller::Jack jack) const;
/* Console switches */
bool diffP0(int newVal = -1);
bool diffP1(int newVal = -1);
bool tvType(int newVal = -1);
bool select(int newVal = -1);
bool reset(int newVal = -1);
/* Port A description */
string dirP0String();
string dirP1String();
/* Port B description */
string diffP0String();
string diffP1String();
string tvTypeString();
string switchesString();
private:
RiotState myState;
RiotState myOldState;
private:
// Following constructors and assignment operators not supported
RiotDebug() = delete;
RiotDebug(const RiotDebug&) = delete;
RiotDebug(RiotDebug&&) = delete;
RiotDebug& operator=(const RiotDebug&) = delete;
RiotDebug& operator=(RiotDebug&&) = delete;
};
#endif