mirror of
https://github.com/TomHarte/CLK.git
synced 2024-07-29 16:29:08 +00:00
67 lines
1.7 KiB
C++
67 lines
1.7 KiB
C++
|
//
|
||
|
// State.hpp
|
||
|
// Clock Signal
|
||
|
//
|
||
|
// Created by Thomas Harte on 14/05/2020.
|
||
|
// Copyright © 2020 Thomas Harte. All rights reserved.
|
||
|
//
|
||
|
|
||
|
#ifndef MC68000_State_hpp
|
||
|
#define MC68000_State_hpp
|
||
|
|
||
|
#include "../../../Reflection/Enum.hpp"
|
||
|
#include "../../../Reflection/Struct.hpp"
|
||
|
#include "../68000.hpp"
|
||
|
|
||
|
namespace CPU {
|
||
|
namespace MC68000 {
|
||
|
|
||
|
/*!
|
||
|
Provides a means for capturing or restoring complete 68000 state.
|
||
|
|
||
|
This is an optional adjunct to the 68000 class. If you want to take the rest of the 68000
|
||
|
implementation but don't want any of the overhead of my sort-of half-reflection as
|
||
|
encapsulated in Reflection/[Enum/Struct].hpp just don't use this class.
|
||
|
*/
|
||
|
struct State: public Reflection::StructImpl<State> {
|
||
|
/*!
|
||
|
Provides the current state of the well-known, published internal registers.
|
||
|
*/
|
||
|
struct Registers: public Reflection::StructImpl<Registers> {
|
||
|
uint32_t data[8], address[7];
|
||
|
|
||
|
Registers();
|
||
|
} registers;
|
||
|
|
||
|
/*!
|
||
|
Provides the current state of the processor's various input lines that aren't
|
||
|
related to an access cycle.
|
||
|
*/
|
||
|
struct Inputs: public Reflection::StructImpl<Inputs> {
|
||
|
Inputs();
|
||
|
} inputs;
|
||
|
|
||
|
/*!
|
||
|
Contains internal state used by this particular implementation of a 6502. Most of it
|
||
|
does not necessarily correlate with anything in a real 6502, and some of it very
|
||
|
obviously doesn't.
|
||
|
*/
|
||
|
struct ExecutionState: public Reflection::StructImpl<ExecutionState> {
|
||
|
ExecutionState();
|
||
|
} execution_state;
|
||
|
|
||
|
/// Default constructor; makes no guarantees as to field values beyond those given above.
|
||
|
State();
|
||
|
|
||
|
/// Instantiates a new State based on the processor @c src.
|
||
|
State(const ProcessorBase &src);
|
||
|
|
||
|
/// Applies this state to @c target.
|
||
|
void apply(ProcessorBase &target);
|
||
|
};
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#endif /* MC68000_State_hpp */
|