-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathMCP.h
More file actions
65 lines (54 loc) · 1.32 KB
/
Copy pathMCP.h
File metadata and controls
65 lines (54 loc) · 1.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#ifndef mcp_h
#define mcp_h
#include "CPU.h"
// derived from the default KENBAK-1 cpu to over-ride NOOP
class ExtendedCPU:public CPU
{
public:
virtual void Init();
virtual bool OnNOOPExtension(byte Op);
};
// "master control program"
// handles the interaction between the front panel and the CPU
class MCP
{
public:
enum tMode
{
eInput,
eAddress,
eMemory,
eRun,
eNone
};
void Init();
void Splash();
void Loop();
void SetControlLEDs(byte LEDs);
static bool NOOPExtensionCallback(void* This, byte Op);
private:
void SetMode(byte Mode);
void HandleButtonHalted(word State, word Pressed);
void HandleButtonRunning(word State, word Pressed);
void OnInputButton(int Btn, byte Chord);
void OnInputClear(byte Chord);
void OnAddressDisplay(byte Chord);
void OnAddressSet(byte Chord);
void OnMemoryRead(byte Chord);
void OnMemoryStore(byte Chord);
void OnRunStart(byte Chord);
void OnRunStop(byte Chord);
void Blink(byte LED);
bool SystemCall(byte& A, byte& B);
bool OnNOOPExtension(byte Op);
void SerializeMemory(bool Input, byte Chord);
void AutoRun(byte Auto);
bool m_bRunning;
byte m_Data;
byte m_Control;
byte m_Mode;
byte m_Address;
friend class ExtendedCPU;
};
extern MCP mcp;
#endif