gigatron/rom/Contrib/at67/editor.h
2025-01-28 19:17:01 +03:00

174 lines
4.5 KiB
C++

#ifndef EDITOR_H
#define EDITOR_H
#include <stdint.h>
#include <string>
#include <vector>
#ifndef STAND_ALONE
#include <SDL.h>
#endif
#define INPUT_RIGHT 0x01
#define INPUT_LEFT 0x02
#define INPUT_DOWN 0x04
#define INPUT_UP 0x08
#define INPUT_START 0x10
#define INPUT_SELECT 0x20
#define INPUT_B 0x40
#define INPUT_A 0x80
#define HW_PS2_LEFT 1
#define HW_PS2_RIGHT 2
#define HW_PS2_UP 3
#define HW_PS2_DOWN 4
#define HW_PS2_START 7
#define HW_PS2_SELECT 8
#define HW_PS2_INPUT_A 9
#define HW_PS2_INPUT_B 27
#define HW_PS2_CTLR_C 3
#define HW_PS2_CR 13
#define HW_PS2_DEL 127
#define HW_PS2_ENABLE 5
#define HW_PS2_DISABLE 6
#define HEX_BASE_ADDRESS 0x0200
#define LOAD_BASE_ADDRESS 0x0200
#define VARS_BASE_ADDRESS 0x0030
#define VIDEO_Y_ADDRESS 0x0009
#define FRAME_COUNT_ADDRESS 0x000E
#define INPUT_CONFIG_INI "input_config.ini"
namespace Editor
{
enum MemoryMode {RAM=0, ROM0, ROM1, NumMemoryModes};
enum EditorMode {Hex=0, Rom, Load, Dasm, Term, Image, Audio, NumEditorModes};
enum KeyboardMode {Giga=0, PS2, HwGiga, HwPS2, NumKeyboardModes};
enum FileType {File=0, Dir, Fifo, Link, NumFileTypes};
enum OnVarType {OnNone=0, OnCpuA, OnCpuB, OnHex, OnVars, OnWatch, NumOnVarTypes};
#ifndef STAND_ALONE
struct KeyCodeMod
{
int _scanCode;
SDL_Keymod _keyMod;
};
#endif
struct MouseState
{
int _x, _y;
uint32_t _state;
};
struct RomEntry
{
uint8_t _type;
std::string _name;
};
int getCursorX(void);
int getCursorY(void);
bool getHexEdit(void);
bool getSingleStepEnabled(void);
bool getPageUpButton(void);
bool getPageDnButton(void);
bool getDelAllButton(void);
MemoryMode getMemoryMode(void);
EditorMode getEditorMode(void);
EditorMode getEditorModePrev(void);
KeyboardMode getKeyboardMode(void);
OnVarType getOnVarType(void);
uint8_t getMemoryDigit(void);
uint8_t getAddressDigit(void);
uint16_t getNtvBaseAddress(void);
uint16_t getHexBaseAddress(void);
uint16_t getVpcBaseAddress(void);
uint16_t getLoadBaseAddress(void);
uint16_t getVarsBaseAddress(void);
uint16_t getSingleStepAddress(void);
uint16_t getCpuUsageAddressA(void);
uint16_t getCpuUsageAddressB(void);
int getNtvBreakPointsSize(void);
uint16_t getNtvBreakPointAddress(int index);
void addNtvBreakPoint(uint16_t address);
void clearNtvBreakPoints(void);
int getVpcBreakPointsSize(void);
uint16_t getVpcBreakPointAddress(int index);
void addVpcBreakPoint(uint16_t address);
void clearVpcBreakPoints(void);
int getFileEntriesIndex(void);
int getFileEntriesSize(void);
FileType getFileEntryType(int index);
FileType getCurrentFileEntryType(void);
std::string* getFileEntryName(int index);
std::string* getCurrentFileEntryName(void);
int getRomEntriesIndex(void);
int getRomEntriesSize(void);
uint8_t getRomEntryType(int index);
uint8_t getCurrentRomEntryType(int& index);
std::string* getRomEntryName(int index);
std::string* getCurrentRomEntryName(int& index);
int getCurrentRomEntryIndex(void);
void addRomEntry(uint8_t type, std::string& name);
void resetEditor(void);
void setEditorToPrevMode(void);
void setEditorMode(EditorMode editorMode);
void setCursorX(int x);
void setCursorY(int y);
void setHexEdit(bool hexEdit);
void setSingleStepAddress(uint16_t address);
void setLoadBaseAddress(uint16_t address);
void setCpuUsageAddressA(uint16_t address);
void setCpuUsageAddressB(uint16_t address);
void getMouseState(MouseState& mouseState);
void setMouseState(MouseState& mouseState);
void getMouseUiCursor(int& x, int& y, int& cy);
int getEmulatorScanCode(const std::string& keyWord);
#ifndef STAND_ALONE
SDL_Keymod getEmulatorKeyMod(const std::string& keyWord);
#endif
std::string getBrowserPath(bool removeSlash=false);
void setBrowserPath(const std::string& path);
void initialise(void);
void browseDirectory(void);
void browseDirectory(const std::vector<std::string>& suffixes);
void changeBrowseDirectory(void);
#ifndef STAND_ALONE
void handleBrowsePageUp(uint16_t numRows);
void handleBrowsePageDown(uint16_t numRows);
void handleGuiEvents(SDL_Event& event);
#endif
bool handleDebugger(void);
void handleInput(void);
void startDebugger(void);
void resetDebugger(void);
void runToBreakpoint(void);
void singleStepWatch(void);
void singleStepPc(void);
}
#endif