VirtualC64 v5.0 beta
Commodore 64 Emulator
Loading...
Searching...
No Matches
MsgQueueTypes.h
Go to the documentation of this file.
1// -----------------------------------------------------------------------------
2// This file is part of VirtualC64
3//
4// Copyright (C) Dirk W. Hoffmann. www.dirkwhoffmann.de
5// This FILE is dual-licensed. You are free to choose between:
6//
7// - The GNU General Public License v3 (or any later version)
8// - The Mozilla Public License v2
9//
10// SPDX-License-Identifier: GPL-3.0-or-later OR MPL-2.0
11// -----------------------------------------------------------------------------
13
14#pragma once
15
16#include "Reflection.h"
17
18namespace vc64 {
19
20//
21// Enumerations
22//
23
112typedef MSG_TYPE MsgType;
113
114struct MsgTypeEnum : util::Reflection<MsgType, MsgType> {
115
116 static constexpr long minVal = 0;
117 static constexpr long maxVal = MSG_ALARM;
118 static bool isValid(auto value) { return value >= minVal && value <= maxVal; }
119
120 static const char *prefix() { return "MSG"; }
121 static const char *key(long value)
122 {
123 switch (value) {
124
125 case MSG_NONE: return "NONE";
126
127 case MSG_CONFIG: return "CONFIG";
128 case MSG_POWER: return "POWER";
129 case MSG_RUN: return "RUN";
130 case MSG_PAUSE: return "PAUSE";
131 case MSG_RESET: return "RESET";
132 case MSG_SHUTDOWN: return "SHUTDOWN";
133 case MSG_ABORT: return "ABORT";
134 case MSG_WARP: return "WARP";
135 case MSG_TRACK: return "TRACK";
136 case MSG_MUTE: return "MUTE";
137
138 case MSG_CONSOLE_CLOSE: return "CONSOLE_CLOSE";
139 case MSG_CONSOLE_UPDATE: return "CONSOLE_UPDATE";
140 case MSG_CONSOLE_DEBUGGER: return "CONSOLE_DEBUGGER";
141 case MSG_SCRIPT_DONE: return "SCRIPT_DONE";
142 case MSG_SCRIPT_ABORT: return "SCRIPT_ABORT";
143
144 case MSG_BREAKPOINT_UPDATED: return "BREAKPOINT_UPDATED";
145 case MSG_BREAKPOINT_REACHED: return "BREAKPOINT_REACHED";
146 case MSG_WATCHPOINT_UPDATED: return "WATCHPOINT_UPDATED";
147 case MSG_WATCHPOINT_REACHED: return "WATCHPOINT_REACHED";
148 case MSG_CPU_JUMPED: return "CPU_JUMPED";
149 case MSG_CPU_JAMMED: return "CPU_JAMMED";
150
151 case MSG_PAL: return "PAL";
152 case MSG_NTSC: return "NTSC";
153
154 case MSG_SER_BUSY: return "SER_BUSY";
155 case MSG_SER_IDLE: return "SER_IDLE";
156
157 case MSG_DRIVE_CONNECT: return "DRIVE_CONNECT";
158 case MSG_DRIVE_POWER: return "DRIVE_POWER";
159 case MSG_DRIVE_POWER_SAVE: return "DRIVE_POWER_SAVE";
160 case MSG_DRIVE_READ: return "DRIVE_READ";
161 case MSG_DRIVE_WRITE: return "DRIVE_WRITE";
162 case MSG_DRIVE_LED: return "DRIVE_LED";
163 case MSG_DRIVE_MOTOR: return "DRIVE_MOTOR";
164 case MSG_DRIVE_STEP: return "DRIVE_STEP";
165 case MSG_DISK_INSERT: return "DISK_INSERT";
166 case MSG_DISK_EJECT: return "DISK_EJECT";
167 case MSG_DISK_PROTECTED: return "DISK_PROTECTED";
168 case MSG_DISK_MODIFIED: return "DISK_MODIFIED";
169 case MSG_FILE_FLASHED: return "FILE_FLASHED";
170
171 case MSG_VC1530_CONNECT: return "VC1530_CONNECT";
172 case MSG_VC1530_TAPE: return "VC1530_TAPE";
173 case MSG_VC1530_PLAY: return "VC1530_PLAY";
174 case MSG_VC1530_MOTOR: return "VC1530_MOTOR";
175 case MSG_VC1530_COUNTER: return "VC1530_COUNTER";
176
177 case MSG_CRT_ATTACHED: return "CRT_ATTACHED";
178
179 case MSG_KB_AUTO_PRESS: return "KB_AUTO_PRESS";
180 case MSG_KB_AUTO_RELEASE: return "KB_AUTO_RELEASE";
181
182 case MSG_SHAKING: return "SHAKING";
183
184 case MSG_SNAPSHOT_TAKEN: return "SNAPSHOT_TAKEN";
185 case MSG_SNAPSHOT_RESTORED: return "SNAPSHOT_RESTORED";
186
187 case MSG_RECORDING_STARTED: return "RECORDING_STARTED";
188 case MSG_RECORDING_STOPPED: return "RECORDING_STOPPED";
189 case MSG_RECORDING_ABORTED: return "RECORDING_ABORTED";
190
191 case MSG_DMA_DEBUG: return "DMA_DEBUG";
192
193 case MSG_ALARM: return "ALARM";
194 }
195 return "???";
196 }
197};
198
199//
200// Structures
201//
202
203typedef struct { u16 pc; } CpuMsg;
204typedef struct { i16 nr; i16 value; i16 volume; i16 pan; } DriveMsg;
205typedef struct { isize line; i16 delay; } ScriptMsg;
206
207typedef struct
208{
209 // Header
210 MsgType type;
211
212 // Payload
213 union {
214 i64 value;
215 CpuMsg cpu;
216 DriveMsg drive;
217 ScriptMsg script;
218 class MediaFile *snapshot;
219 };
220}
221Message;
222
223
224//
225// Signatures
226//
227
228typedef void Callback(const void *, Message);
229
230}
VirtualC64 project namespace.
Definition CmdQueue.cpp:16
MSG_TYPE
Emulator message.
Definition MsgQueueTypes.h:26
@ MSG_DRIVE_LED
The green drive LED has switched on or off.
Definition MsgQueueTypes.h:71
@ MSG_WATCHPOINT_REACHED
A watchpoint has been reached.
Definition MsgQueueTypes.h:53
@ MSG_DISK_MODIFIED
The disk needs saving.
Definition MsgQueueTypes.h:77
@ MSG_DRIVE_POWER_SAVE
Fast paths have been enabled or disabled.
Definition MsgQueueTypes.h:68
@ MSG_PAUSE
The emulator has entered STATE_PAUSED.
Definition MsgQueueTypes.h:33
@ MSG_SNAPSHOT_TAKEN
A snapshot has been taken (see OPT_SNAPSHOTS)
Definition MsgQueueTypes.h:98
@ MSG_WARP
The emulator has entered or exited warp mode.
Definition MsgQueueTypes.h:38
@ MSG_CONSOLE_CLOSE
RetroShell has been closed.
Definition MsgQueueTypes.h:43
@ MSG_RECORDING_STOPPED
The screen recorder has stopped.
Definition MsgQueueTypes.h:103
@ MSG_CONSOLE_UPDATE
RetroShell has generated new output.
Definition MsgQueueTypes.h:44
@ MSG_RECORDING_STARTED
The screen recorder has started.
Definition MsgQueueTypes.h:102
@ MSG_NONE
Unclassified.
Definition MsgQueueTypes.h:27
@ MSG_VC1530_MOTOR
The drive motor has started or stopped.
Definition MsgQueueTypes.h:84
@ MSG_DRIVE_READ
The floopy drive has switched to read mode.
Definition MsgQueueTypes.h:69
@ MSG_SER_IDLE
The IEC bus has returned to idle state.
Definition MsgQueueTypes.h:63
@ MSG_VC1530_COUNTER
The tape counter has stepped.
Definition MsgQueueTypes.h:85
@ MSG_CRT_ATTACHED
A cartridge has been plugged into the expansion port.
Definition MsgQueueTypes.h:88
@ MSG_DRIVE_POWER
The emulator has been powered on.
Definition MsgQueueTypes.h:67
@ MSG_SNAPSHOT_RESTORED
A snapshot has been restored.
Definition MsgQueueTypes.h:99
@ MSG_KB_AUTO_PRESS
The auto-typing daemon has pressed a key.
Definition MsgQueueTypes.h:91
@ MSG_SHUTDOWN
The emulator has been shut down.
Definition MsgQueueTypes.h:36
@ MSG_VC1530_CONNECT
A datasette has been connected or disconnected.
Definition MsgQueueTypes.h:81
@ MSG_DMA_DEBUG
The DMA debugger has been started or stopped.
Definition MsgQueueTypes.h:107
@ MSG_RESET
The emulator has been reset.
Definition MsgQueueTypes.h:35
@ MSG_BREAKPOINT_UPDATED
The breakpoint list has beed modified.
Definition MsgQueueTypes.h:50
@ MSG_CONSOLE_DEBUGGER
The RetroShell debugger has been opend or closed.
Definition MsgQueueTypes.h:45
@ MSG_CPU_JUMPED
The program counter has been modified manually.
Definition MsgQueueTypes.h:54
@ MSG_STEP
The emulator has stepped a single instruction.
Definition MsgQueueTypes.h:34
@ MSG_SHAKING
A shaking mouse has been detected.
Definition MsgQueueTypes.h:95
@ MSG_CPU_JAMMED
The CPU has halted due to an illegal instruction.
Definition MsgQueueTypes.h:55
@ MSG_VC1530_PLAY
The play key has been pressed.
Definition MsgQueueTypes.h:83
@ MSG_DRIVE_STEP
The drive head has stepped.
Definition MsgQueueTypes.h:73
@ MSG_FILE_FLASHED
A file has been flashed into memory.
Definition MsgQueueTypes.h:78
@ MSG_DISK_EJECT
A disk has been ejected.
Definition MsgQueueTypes.h:75
@ MSG_NTSC
The emulator runs in NTSC mode now.
Definition MsgQueueTypes.h:59
@ MSG_SCRIPT_DONE
A RetroShell script has been successfully executed.
Definition MsgQueueTypes.h:46
@ MSG_BREAKPOINT_REACHED
A breakpoint has been reached.
Definition MsgQueueTypes.h:51
@ MSG_CONFIG
The configuration has changed.
Definition MsgQueueTypes.h:30
@ MSG_DISK_INSERT
A disk has been inserted.
Definition MsgQueueTypes.h:74
@ MSG_SER_BUSY
The IEC bus is transferring data.
Definition MsgQueueTypes.h:62
@ MSG_ABORT
The emulator requests the GUI to quit the app.
Definition MsgQueueTypes.h:37
@ MSG_PAL
The emulator runs in PAL mode now.
Definition MsgQueueTypes.h:58
@ MSG_RECORDING_ABORTED
Screen recording has been aborted.
Definition MsgQueueTypes.h:104
@ MSG_VC1530_TAPE
A tape has been inserted or ejected.
Definition MsgQueueTypes.h:82
@ MSG_MUTE
The emulator has been muted or unmuted.
Definition MsgQueueTypes.h:40
@ MSG_SCRIPT_ABORT
The execution of a RetroShell ccript has been aborted.
Definition MsgQueueTypes.h:47
@ MSG_WATCHPOINT_UPDATED
The watchpoint list has beed modified.
Definition MsgQueueTypes.h:52
@ MSG_DRIVE_WRITE
The floppy drive has switched to write mode.
Definition MsgQueueTypes.h:70
@ MSG_RUN
The emulator has entered STATE_RUNNING.
Definition MsgQueueTypes.h:32
@ MSG_POWER
The emulator has been powered on or off.
Definition MsgQueueTypes.h:31
@ MSG_DISK_PROTECTED
The write protection status has changed.
Definition MsgQueueTypes.h:76
@ MSG_KB_AUTO_RELEASE
The auto-typing daemon has released a key.
Definition MsgQueueTypes.h:92
@ MSG_DRIVE_CONNECT
A floppy drive has been connected or disconnected.
Definition MsgQueueTypes.h:66
@ MSG_DRIVE_MOTOR
The disk has started or stopped spinning.
Definition MsgQueueTypes.h:72
@ MSG_ALARM
A user-set alarm event has fired.
Definition MsgQueueTypes.h:110
@ MSG_TRACK
The emulator has entered or exited track mode.
Definition MsgQueueTypes.h:39