2010-06-11 15:38:22 +00:00
# pragma once
2021-03-17 20:32:19 +00:00
// use the new Debugger Font (Apple Font)
# define USE_APPLE_FONT 1
// Test Colors & Glyphs
# define DEBUG_APPLE_FONT 0
2010-06-11 15:38:22 +00:00
// Addressing _____________________________________________________________________________________
enum
{
// MAX_ADDRESSING_MODE_LEN = 12
MAX_OPMODE_FORMAT = 12 ,
MAX_OPMODE_NAME = 32
, NO_6502_TARGET = - 1
, _6502_NUM_FLAGS = 8
} ;
enum RangeType_t
{
RANGE_MISSING_ARG_2 = 0 , // error
RANGE_HAS_LEN , // valid case 1
RANGE_HAS_END , // valid case 2
} ;
struct AddressingMode_t
{
char m_sFormat [ MAX_OPMODE_FORMAT ] ;
int m_nBytes ;
char m_sName [ MAX_OPMODE_NAME ] ;
} ;
/*
+ - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - +
| Opmode e | assembler format |
+ = = = = = = = = = = = = = = = = = = = = = + = = = = = = = = = = = = = = = = = = = = = = = = = = +
| Immediate | # aa |
| Absolute | aaaa |
| Zero Page | aa | Note :
| Implied | |
| Indirect Absolute | ( aaaa ) | aa = 2 hex digits
| Absolute Indexed , X | aaaa , X | as $ FF
| Absolute Indexed , Y | aaaa , Y |
| Zero Page Indexed , X | aa , X | aaaa = 4 hex
| Zero Page Indexed , Y | aa , Y | digits as
| Indexed Indirect | ( aa , X ) | $ FFFF
| Indirect Indexed | ( aa ) , Y |
| Relative | aaaa | Can also be
| Accumulator | A | assembler labels
+ - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - +
( Table 2 - 3. _6502 Software Design_ , Scanlon , 1980 )
Opcode : opc aaa od
opc . . . od = Mnemonic / Opcode
. . . aaa . . = Addressing g_nAppMode
od = 00
000 # Immediate
001 Zero page
011 Absolute
101 Zero page , X
111 Absolute , X
od = 01
000 ( Zero page , X )
001 Zero page
010 # Immediate
011 Absolute
100 ( Zero page ) , Y
101 Zero page , X
110 Absolute , Y
111 Absolute , X
od = 10
000 # Immediate
001 Zero page
010 Accumulator
011 Absolute
101 Zero page , X
111 Absolute , X
*/
/*
Legend :
A = Absolute ( fortunately Accumulator is implicit , leaving us to use ' A ' )
I = Indexed ( would of been X , but need reg X )
M = iMmediate
N = iNdirect
R = Relative
X = Offset X Register
Y = Offset Y Register
Z = Zeropage
*/
enum AddressingMode_e // ADDRESSING_MODES_e
{
AM_IMPLIED // Note: SetDebugBreakOnInvalid() assumes this order of first 4 entries
, AM_1 // Invalid 1 Byte
, AM_2 // Invalid 2 Bytes
, AM_3 // Invalid 3 Bytes
, AM_M // 4 #Immediate
, AM_A // 5 $Absolute
, AM_Z // 6 Zeropage
, AM_AX // 7 Absolute, X
, AM_AY // 8 Absolute, Y
, AM_ZX // 9 Zeropage, X
, AM_ZY // 10 Zeropage, Y
, AM_R // 11 Relative
, AM_IZX // 12 Indexed (Zeropage Indirect, X)
, AM_IAX // 13 Indexed (Absolute Indirect, X)
, AM_NZY // 14 Indirect (Zeropage) Indexed, Y
, AM_NZ // 15 Indirect (Zeropage)
, AM_NA // 16 Indirect (Absolute) i.e. JMP
2014-08-28 18:13:02 +00:00
, AM_DATA // Not an opcode! Markup as data
2010-06-11 15:38:22 +00:00
, NUM_ADDRESSING_MODES
, NUM_OPMODES = NUM_ADDRESSING_MODES
, AM_I = NUM_ADDRESSING_MODES , // for assemler
} ;
// Assembler ______________________________________________________________________________________
enum Prompt_e
{
PROMPT_COMMAND ,
PROMPT_ASSEMBLER ,
NUM_PROMPTS
} ;
enum
{
// raised from 13 to 31 for Contiki
MAX_SYMBOLS_LEN = 31
} ;
// Bookmarks ______________________________________________________________________________________
enum
{
MAX_BOOKMARKS = 10
} ;
// Breakpoints ____________________________________________________________________________________
enum
{
MAX_BREAKPOINTS = 16
} ;
/*
Breakpoints are now in a tri - state .
This allows one to set a bunch of breakpoints , and re - enable the ones you want
without having to remember which addresses you previously added . : - )
The difference between Set and Enabled breakpoints :
Set Enabled Break ?
x x yes , listed as full brightness
x - no , listed as dimmed
- ? no , not listed
*/
// NOTE: Order must match _PARAM_REGS_*
2019-10-22 20:31:53 +00:00
// NOTE: Order must match BreakpointSource_t
2010-06-11 15:38:22 +00:00
// NOTE: Order must match g_aBreakpointSource
enum BreakpointSource_t
{
BP_SRC_REG_A ,
BP_SRC_REG_X ,
BP_SRC_REG_Y ,
BP_SRC_REG_PC , // Program Counter
BP_SRC_REG_S , // Stack Counter
BP_SRC_REG_P , // Processor Status
BP_SRC_FLAG_C , // Carry
BP_SRC_FLAG_Z , // Zero
BP_SRC_FLAG_I , // Interrupt
BP_SRC_FLAG_D , // Decimal
BP_SRC_FLAG_B , // Break
BP_SRC_FLAG_R , // Reserved
BP_SRC_FLAG_V , // Overflow
BP_SRC_FLAG_N , // Sign
BP_SRC_OPCODE ,
2019-10-22 20:31:53 +00:00
BP_SRC_MEM_RW ,
BP_SRC_MEM_READ_ONLY ,
BP_SRC_MEM_WRITE_ONLY ,
2010-06-11 15:38:22 +00:00
NUM_BREAKPOINT_SOURCES
} ;
// Note: Order must match Breakpoint_Operator_t
// Note: Order must much _PARAM_BREAKPOINT_*
// Note: Order must match g_aBreakpointSymbols
enum BreakpointOperator_t
{
BP_OP_LESS_EQUAL , // <= REG
BP_OP_LESS_THAN , // < REG
BP_OP_EQUAL , // = REG
BP_OP_NOT_EQUAL , // != REG
// BP_OP_NOT_EQUAL_1 , // ! REG
BP_OP_GREATER_THAN , // > REG
BP_OP_GREATER_EQUAL , // >= REG
BP_OP_READ , // @ MEM @ ? *
BP_OP_WRITE , // * MEM @ ? *
BP_OP_READ_WRITE , // ? MEM @ ? *
NUM_BREAKPOINT_OPERATORS
} ;
struct Breakpoint_t
{
WORD nAddress ; // for registers, functions as nValue
2019-10-22 20:31:53 +00:00
UINT nLength ;
2010-06-11 15:38:22 +00:00
BreakpointSource_t eSource ;
BreakpointOperator_t eOperator ;
bool bSet ; // used to be called enabled pre 2.0
bool bEnabled ;
bool bTemp ; // If true then remove BP when hit or stepping cancelled (eg. G xxxx)
} ;
typedef Breakpoint_t Bookmark_t ;
typedef Breakpoint_t Watches_t ;
typedef Breakpoint_t ZeroPagePointers_t ;
// Colors ___________________________________________________________________
2010-12-16 06:43:05 +00:00
# include "Debugger_Color.h"
2010-06-11 15:38:22 +00:00
// Config _________________________________________________________________________________________
enum ConfigSave_t
{
CONFIG_SAVE_FILE_CREATE ,
CONFIG_SAVE_FILE_APPEND
} ;
// Commands _______________________________________________________________________________________
enum Update_e
{
UPDATE_NOTHING ,
UPDATE_BACKGROUND = ( 1 < < 0 ) ,
UPDATE_BREAKPOINTS = ( 1 < < 1 ) ,
UPDATE_CONSOLE_DISPLAY = ( 1 < < 2 ) ,
UPDATE_CONSOLE_INPUT = ( 1 < < 3 ) ,
UPDATE_DISASM = ( 1 < < 4 ) ,
UPDATE_FLAGS = ( 1 < < 5 ) ,
UPDATE_MEM_DUMP = ( 1 < < 6 ) ,
UPDATE_REGS = ( 1 < < 7 ) ,
UPDATE_STACK = ( 1 < < 8 ) ,
UPDATE_SYMBOLS = ( 1 < < 9 ) ,
UPDATE_TARGETS = ( 1 < < 10 ) ,
UPDATE_WATCH = ( 1 < < 11 ) ,
UPDATE_ZERO_PAGE = ( 1 < < 12 ) ,
2011-02-20 23:29:00 +00:00
UPDATE_SOFTSWITCHES = ( 1 < < 13 ) ,
2019-09-22 14:11:14 +00:00
UPDATE_VIDEOSCANNER = ( 1 < < 14 ) ,
2010-06-11 15:38:22 +00:00
UPDATE_ALL = - 1
} ;
typedef int Update_t ;
enum
{
MAX_COMMAND_LEN = 12 ,
MAX_ARGS = 32 , // was 40
ARG_SYNTAX_ERROR = - 1 ,
2017-08-25 15:56:23 +00:00
MAX_ARG_LEN = 127 , // extended to allow font names, GH#481, any value is good > CONSOLE_WIDTH=80
2010-06-11 15:38:22 +00:00
} ;
// NOTE: All Commands return flags of what needs to be redrawn
typedef Update_t ( * CmdFuncPtr_t ) ( int ) ;
struct Command_t
{
char m_sName [ MAX_COMMAND_LEN ] ;
CmdFuncPtr_t pFunction ;
int iCommand ; // offset (enum) for direct command name lookup
2021-02-10 21:05:00 +00:00
const char * pHelpSummary ; // 1 line help summary
2010-06-11 15:38:22 +00:00
// Hash_t m_nHash; // TODO
} ;
// Commands sorted by Category
// NOTE: Commands_e and g_aCommands[] order _MUST_ match !!! Aliases are listed at the end
enum Commands_e
{
// Assembler
CMD_ASSEMBLE
// CPU
, CMD_CURSOR_JUMP_PC // Shift
, CMD_CURSOR_SET_PC // Ctrl
2017-02-25 22:32:46 +00:00
, CMD_GO_NORMAL_SPEED
, CMD_GO_FULL_SPEED
2010-06-11 15:38:22 +00:00
, CMD_IN
, CMD_INPUT_KEY
, CMD_JSR
, CMD_NOP
, CMD_OUT
2021-10-15 20:58:17 +00:00
, CMD_LBR
2010-06-11 15:38:22 +00:00
// CPU - Meta Info
, CMD_PROFILE
, CMD_REGISTER_SET
// CPU - Stack
// , CMD_STACK_LIST
, CMD_STACK_POP
, CMD_STACK_POP_PSEUDO
, CMD_STACK_PUSH
// , CMD_STACK_RETURN
, CMD_STEP_OVER
, CMD_STEP_OUT
// CPU - Meta Info
, CMD_TRACE
, CMD_TRACE_FILE
, CMD_TRACE_LINE
, CMD_UNASSEMBLE
// Bookmarks
, CMD_BOOKMARK
, CMD_BOOKMARK_ADD
, CMD_BOOKMARK_CLEAR
, CMD_BOOKMARK_LIST
// , CMD_BOOKMARK_LOAD
, CMD_BOOKMARK_GOTO
, CMD_BOOKMARK_SAVE
// Breakpoints
2011-02-21 23:54:09 +00:00
, CMD_BREAK_INVALID
, CMD_BREAK_OPCODE
2021-10-16 15:57:00 +00:00
, CMD_BREAK_ON_INTERRUPT
2010-06-11 15:38:22 +00:00
, CMD_BREAKPOINT
, CMD_BREAKPOINT_ADD_SMART // smart breakpoint
, CMD_BREAKPOINT_ADD_REG // break on: PC == Address (fetch/execute)
, CMD_BREAKPOINT_ADD_PC // alias BPX = BA
// , CMD_BREAKPOINT_SET = CMD_BREAKPOINT_ADD_ADDR // alias
// , CMD_BREAKPOINT_EXEC = CMD_BREAKPOINT_ADD_ADDR // alias
, CMD_BREAKPOINT_ADD_IO // break on: [$C000-$C7FF] Load/Store
, CMD_BREAKPOINT_ADD_MEM // break on: [$0000-$FFFF], excluding IO
2019-10-22 20:31:53 +00:00
, CMD_BREAKPOINT_ADD_MEMR // break on read on: [$0000-$FFFF], excluding IO
, CMD_BREAKPOINT_ADD_MEMW // break on write on: [$0000-$FFFF], excluding IO
2010-06-11 15:38:22 +00:00
, CMD_BREAKPOINT_CLEAR
// , CMD_BREAKPOINT_REMOVE = CMD_BREAKPOINT_CLEAR // alias
, CMD_BREAKPOINT_DISABLE
, CMD_BREAKPOINT_EDIT
, CMD_BREAKPOINT_ENABLE
, CMD_BREAKPOINT_LIST
// , CMD_BREAKPOINT_LOAD
, CMD_BREAKPOINT_SAVE
// Benchmark / Timing
// , CMD_BENCHMARK_START
// , CMD_BENCHMARK_STOP
// , CMD_PROFILE_START
// , CMD_PROFILE_STOP
// Config (debugger settings)
, CMD_BENCHMARK
, CMD_CONFIG_BW // BW # rr gg bb
, CMD_CONFIG_COLOR // COLOR # rr gg bb
, CMD_CONFIG_DISASM
// , CMD_CONFIG_DISASM_BRANCH
// , CMD_CONFIG_DISASM_COLON
// , CMD_CONFIG_DISASM_OPCODE
// , CMD_CONFIG_DISASM_SPACES
, CMD_CONFIG_FONT
// , CMD_CONFIG_FONT2 // PARAM_FONT_DISASM PARAM_FONT_INFO PARAM_FONT_SOURCE
, CMD_CONFIG_HCOLOR // TODO Video :: SETFRAMECOLOR(#,R,G,B)
, CMD_CONFIG_LOAD
, CMD_CONFIG_MONOCHROME // MONO # rr gg bb
, CMD_CONFIG_SAVE
2011-02-15 17:21:27 +00:00
, CMD_CONFIG_GET_DEBUG_DIR
, CMD_CONFIG_SET_DEBUG_DIR
2010-06-11 15:38:22 +00:00
// Cursor
, CMD_CURSOR_JUMP_RET_ADDR
, CMD_CURSOR_LINE_UP // Smart Line Up
, CMD_CURSOR_LINE_UP_1 // Shift
, CMD_CURSOR_LINE_DOWN // Smart Line Down
, CMD_CURSOR_LINE_DOWN_1 // Shift
// , CMD_CURSOR_PAGE_UP
// , CMD_CURSOR_PAGE_DOWN
, CMD_CURSOR_PAGE_UP
, CMD_CURSOR_PAGE_UP_256 // up to nearest page boundary
, CMD_CURSOR_PAGE_UP_4K // Up to nearest 4K boundary
, CMD_CURSOR_PAGE_DOWN
, CMD_CURSOR_PAGE_DOWN_256 // Down to nearest page boundary
, CMD_CURSOR_PAGE_DOWN_4K // Down to nearest 4K boundary
2020-01-11 17:38:00 +00:00
// Cycles info
, CMD_CYCLES_INFO
2020-05-23 17:40:12 +00:00
, CMD_CYCLES_RESET
2010-06-11 15:38:22 +00:00
// Disassembler Data
, CMD_DISASM_DATA
, CMD_DISASM_CODE
, CMD_DISASM_LIST
, CMD_DEFINE_DATA_BYTE1 // DB $00,$04,$08,$0C,$10,$14,$18,$1C
, CMD_DEFINE_DATA_BYTE2
, CMD_DEFINE_DATA_BYTE4
, CMD_DEFINE_DATA_BYTE8
, CMD_DEFINE_DATA_WORD1 // DW $300
, CMD_DEFINE_DATA_WORD2
, CMD_DEFINE_DATA_WORD4
, CMD_DEFINE_DATA_STR
2022-01-06 18:10:09 +00:00
, CMD_DEFINE_DATA_FLOAT // FAC Packed
2010-12-16 06:43:05 +00:00
// , CMD_DEFINE_DATA_FACP // FAC Packed
// , CMD_DEFINE_DATA_FACU // FAC Unpacked
2010-06-11 15:38:22 +00:00
// , CMD_DATA_DEFINE_ADDR_BYTE_L // DB< address symbol
// , CMD_DATA_DEFINE_ADDR_BYTE_H // DB> address symbol
, CMD_DEFINE_ADDR_WORD // .DA address symbol
// Disk
, CMD_DISK
// Flags - CPU
, CMD_FLAG_CLEAR // Flag order must match g_aFlagNames CZIDBRVN
, CMD_FLAG_CLR_C // 8
, CMD_FLAG_CLR_Z // 7
, CMD_FLAG_CLR_I // 6
, CMD_FLAG_CLR_D // 5
, CMD_FLAG_CLR_B // 4
, CMD_FLAG_CLR_R // 3
, CMD_FLAG_CLR_V // 2
, CMD_FLAG_CLR_N // 1
, CMD_FLAG_SET // Flag order must match g_aFlagNames CZIDBRVN
, CMD_FLAG_SET_C // 8
, CMD_FLAG_SET_Z // 7
, CMD_FLAG_SET_I // 6
, CMD_FLAG_SET_D // 5
, CMD_FLAG_SET_B // 4
, CMD_FLAG_SET_R // 3
, CMD_FLAG_SET_V // 2
, CMD_FLAG_SET_N // 1
// Help
, CMD_HELP_LIST
, CMD_HELP_SPECIFIC
, CMD_VERSION
, CMD_MOTD // Message of the Day
// Memory
, CMD_MEMORY_COMPARE
, CMD_MEM_MINI_DUMP_HEX_1 // Mini Memory Dump 1
, CMD_MEM_MINI_DUMP_HEX_2 // Mini Memory Dump 2
, CMD_MEM_MINI_DUMP_ASCII_1 // ASCII
, CMD_MEM_MINI_DUMP_ASCII_2
, CMD_MEM_MINI_DUMP_APPLE_1 // Low-Bit inverse, High-Bit normal
, CMD_MEM_MINI_DUMP_APPLE_2
// , CMD_MEM_MINI_DUMP_TXT_LO_1 // ASCII (Controls Chars)
// , CMD_MEM_MINI_DUMP_TXT_LO_2
// , CMD_MEM_MINI_DUMP_TXT_HI_1 // ASCII (High Bit)
// , CMD_MEM_MINI_DUMP_TXT_HI_2
// , CMD_MEMORY_DUMP = CMD_MEM_MINI_DUMP_HEX_1
, CMD_MEMORY_EDIT
, CMD_MEMORY_ENTER_BYTE
, CMD_MEMORY_ENTER_WORD
, CMD_MEMORY_LOAD
, CMD_MEMORY_MOVE
, CMD_MEMORY_SAVE
, CMD_MEMORY_SEARCH
, CMD_MEMORY_FIND_RESULTS
// , CMD_MEMORY_SEARCH_ASCII // Ascii Text
// , CMD_MEMORY_SEARCH_APPLE // Flashing Chars, Hi-Bit Set
, CMD_MEMORY_SEARCH_HEX
, CMD_MEMORY_FILL
2015-01-08 20:15:19 +00:00
, CMD_NTSC
2014-08-24 06:08:22 +00:00
, CMD_TEXT_SAVE
2010-06-11 15:38:22 +00:00
// Output
, CMD_OUTPUT_CALC
, CMD_OUTPUT_ECHO
, CMD_OUTPUT_PRINT
, CMD_OUTPUT_PRINTF
, CMD_OUTPUT_RUN
// Source Level Debugging
, CMD_SOURCE
, CMD_SYNC
// Symbols
, CMD_SYMBOLS_LOOKUP
// , CMD_SYMBOLS
, CMD_SYMBOLS_ROM
, CMD_SYMBOLS_APPLESOFT
, CMD_SYMBOLS_ASSEMBLY
, CMD_SYMBOLS_USER_1
, CMD_SYMBOLS_USER_2
, CMD_SYMBOLS_SRC_1
, CMD_SYMBOLS_SRC_2
2011-01-30 17:39:19 +00:00
, CMD_SYMBOLS_DOS33
, CMD_SYMBOLS_PRODOS
2010-06-11 15:38:22 +00:00
// , CMD_SYMBOLS_FIND
// , CMD_SYMBOLS_CLEAR
, CMD_SYMBOLS_INFO
, CMD_SYMBOLS_LIST
// , CMD_SYMBOLS_LOAD_1
// , CMD_SYMBOLS_LOAD_2
// , CMD_SYMBOLS_SAVE
2019-09-21 15:37:45 +00:00
// Video-scanner info
, CMD_VIDEO_SCANNER_INFO
2010-06-11 15:38:22 +00:00
// View
, CMD_VIEW_TEXT4X
, CMD_VIEW_TEXT41
, CMD_VIEW_TEXT42
, CMD_VIEW_TEXT8X
, CMD_VIEW_TEXT81
, CMD_VIEW_TEXT82
, CMD_VIEW_GRX
, CMD_VIEW_GR1
, CMD_VIEW_GR2
, CMD_VIEW_DGRX
, CMD_VIEW_DGR1
, CMD_VIEW_DGR2
, CMD_VIEW_HGRX
2022-01-05 05:40:23 +00:00
, CMD_VIEW_HGR0
2010-06-11 15:38:22 +00:00
, CMD_VIEW_HGR1
, CMD_VIEW_HGR2
2022-01-05 05:40:23 +00:00
, CMD_VIEW_HGR3
, CMD_VIEW_HGR4
, CMD_VIEW_HGR5
2010-06-11 15:38:22 +00:00
, CMD_VIEW_DHGRX
, CMD_VIEW_DHGR1
, CMD_VIEW_DHGR2
2021-11-30 21:41:02 +00:00
, CMD_VIEW_SHR
2010-06-11 15:38:22 +00:00
// Watch
2010-12-16 06:43:05 +00:00
, CMD_WATCH // TODO: Deprecated ?
2010-06-11 15:38:22 +00:00
, CMD_WATCH_ADD
, CMD_WATCH_CLEAR
, CMD_WATCH_DISABLE
, CMD_WATCH_ENABLE
, CMD_WATCH_LIST
// , CMD_WATCH_LOAD
, CMD_WATCH_SAVE
// Window
// , CMD_WINDOW_COLOR_CUSTOM
, CMD_WINDOW
, CMD_WINDOW_CODE
, CMD_WINDOW_CODE_1
, CMD_WINDOW_CODE_2
, CMD_WINDOW_CONSOLE
, CMD_WINDOW_DATA
, CMD_WINDOW_DATA_1
, CMD_WINDOW_DATA_2
// SOURCE is reserved for source level debugging
, CMD_WINDOW_SOURCE_1
, CMD_WINDOW_SOURCE_2
// , CMD_WINDOW_STACK_1
// , CMD_WINDOW_STACK_2
// SYMBOLS is reserved for symbols lookup/commands
// , CMD_WINDOW_SYMBOLS_1
// , CMD_WINDOW_SYMBOLS_2
// , CMD_WINDOW_ZEROPAGE_1
// , CMD_WINDOW_ZEROPAGE_2
, CMD_WINDOW_OUTPUT
// , CMD_WINDOW_SOURCE
// ZeroPage
, CMD_ZEROPAGE_POINTER
, CMD_ZEROPAGE_POINTER_0
, CMD_ZEROPAGE_POINTER_1
, CMD_ZEROPAGE_POINTER_2
, CMD_ZEROPAGE_POINTER_3
, CMD_ZEROPAGE_POINTER_4
, CMD_ZEROPAGE_POINTER_5
, CMD_ZEROPAGE_POINTER_6
, CMD_ZEROPAGE_POINTER_7
, CMD_ZEROPAGE_POINTER_ADD
, CMD_ZEROPAGE_POINTER_CLEAR
, CMD_ZEROPAGE_POINTER_DISABLE
, CMD_ZEROPAGE_POINTER_ENABLE
, CMD_ZEROPAGE_POINTER_LIST
// , CMD_ZEROPAGE_POINTER_LOAD
, CMD_ZEROPAGE_POINTER_SAVE
, NUM_COMMANDS
2010-12-16 06:43:05 +00:00
, _CMD_MEM_MINI_DUMP_HEX_1_1 // Memory Dump
, _CMD_MEM_MINI_DUMP_HEX_1_3 // alias M1
, _CMD_MEM_MINI_DUMP_HEX_2_1 // alias M2
2010-06-11 15:38:22 +00:00
} ;
// Assembler
2015-01-08 20:15:19 +00:00
Update_t CmdAssemble ( int nArgs ) ;
2010-06-11 15:38:22 +00:00
// Disassembler Data
Update_t CmdDisasmDataDefCode ( int nArgs ) ;
Update_t CmdDisasmDataList ( int nArgs ) ;
Update_t CmdDisasmDataDefByte1 ( int nArgs ) ;
Update_t CmdDisasmDataDefByte2 ( int nArgs ) ;
Update_t CmdDisasmDataDefByte4 ( int nArgs ) ;
Update_t CmdDisasmDataDefByte8 ( int nArgs ) ;
2022-01-06 18:10:09 +00:00
Update_t CmdDisasmDataDefFloat ( int nArgs ) ;
2010-06-11 15:38:22 +00:00
Update_t CmdDisasmDataDefWord1 ( int nArgs ) ;
Update_t CmdDisasmDataDefWord2 ( int nArgs ) ;
Update_t CmdDisasmDataDefWord4 ( int nArgs ) ;
Update_t CmdDisasmDataDefString ( int nArgs ) ;
Update_t CmdDisasmDataDefAddress8H ( int nArgs ) ;
Update_t CmdDisasmDataDefAddress8L ( int nArgs ) ;
Update_t CmdDisasmDataDefAddress16 ( int nArgs ) ;
// CPU
2015-01-08 20:15:19 +00:00
Update_t CmdCursorJumpPC ( int nArgs ) ;
Update_t CmdCursorSetPC ( int nArgs ) ;
Update_t CmdBreakInvalid ( int nArgs ) ; // Breakpoint IFF Full-speed!
Update_t CmdBreakOpcode ( int nArgs ) ; // Breakpoint IFF Full-speed!
2021-10-16 15:57:00 +00:00
Update_t CmdBreakOnInterrupt ( int nArgs ) ;
2017-02-25 22:32:46 +00:00
Update_t CmdGoNormalSpeed ( int nArgs ) ;
Update_t CmdGoFullSpeed ( int nArgs ) ;
2015-01-08 20:15:19 +00:00
Update_t CmdIn ( int nArgs ) ;
Update_t CmdKey ( int nArgs ) ;
Update_t CmdJSR ( int nArgs ) ;
Update_t CmdNOP ( int nArgs ) ;
Update_t CmdOut ( int nArgs ) ;
2021-10-15 20:58:17 +00:00
Update_t CmdLBR ( int nArgs ) ;
2015-01-08 20:15:19 +00:00
Update_t CmdStepOver ( int nArgs ) ;
Update_t CmdStepOut ( int nArgs ) ;
Update_t CmdTrace ( int nArgs ) ; // alias for CmdStepIn
Update_t CmdTraceFile ( int nArgs ) ;
Update_t CmdTraceLine ( int nArgs ) ;
Update_t CmdUnassemble ( int nArgs ) ; // code dump, aka, Unassemble
2010-06-11 15:38:22 +00:00
// Bookmarks
2015-01-08 20:15:19 +00:00
Update_t CmdBookmark ( int nArgs ) ;
Update_t CmdBookmarkAdd ( int nArgs ) ;
Update_t CmdBookmarkClear ( int nArgs ) ;
Update_t CmdBookmarkList ( int nArgs ) ;
Update_t CmdBookmarkGoto ( int nArgs ) ;
// Update_t CmdBookmarkLoad (int nArgs);
Update_t CmdBookmarkSave ( int nArgs ) ;
2010-06-11 15:38:22 +00:00
// Breakpoints
2015-01-08 20:15:19 +00:00
Update_t CmdBreakpoint ( int nArgs ) ;
Update_t CmdBreakpointAddSmart ( int nArgs ) ;
Update_t CmdBreakpointAddReg ( int nArgs ) ;
Update_t CmdBreakpointAddPC ( int nArgs ) ;
Update_t CmdBreakpointAddIO ( int nArgs ) ;
2019-10-22 20:31:53 +00:00
Update_t CmdBreakpointAddMem ( int nArgs , BreakpointSource_t bpSrc = BP_SRC_MEM_RW ) ;
Update_t CmdBreakpointAddMemA ( int nArgs ) ;
Update_t CmdBreakpointAddMemR ( int nArgs ) ;
Update_t CmdBreakpointAddMemW ( int nArgs ) ;
2015-01-08 20:15:19 +00:00
Update_t CmdBreakpointClear ( int nArgs ) ;
Update_t CmdBreakpointDisable ( int nArgs ) ;
Update_t CmdBreakpointEdit ( int nArgs ) ;
Update_t CmdBreakpointEnable ( int nArgs ) ;
Update_t CmdBreakpointList ( int nArgs ) ;
// Update_t CmdBreakpointLoad (int nArgs);
Update_t CmdBreakpointSave ( int nArgs ) ;
2010-06-11 15:38:22 +00:00
// Benchmark
2015-01-08 20:15:19 +00:00
Update_t CmdBenchmark ( int nArgs ) ;
Update_t CmdBenchmarkStart ( int nArgs ) ; //Update_t CmdSetupBenchmark (int nArgs);
Update_t CmdBenchmarkStop ( int nArgs ) ; //Update_t CmdExtBenchmark (int nArgs);
Update_t CmdProfile ( int nArgs ) ;
Update_t CmdProfileStart ( int nArgs ) ;
Update_t CmdProfileStop ( int nArgs ) ;
2010-06-11 15:38:22 +00:00
// Config
2015-01-08 20:15:19 +00:00
// Update_t CmdConfigMenu (int nArgs);
// Update_t CmdConfigBase (int nArgs);
// Update_t CmdConfigBaseHex (int nArgs);
// Update_t CmdConfigBaseDec (int nArgs);
Update_t CmdConfigColorMono ( int nArgs ) ;
Update_t CmdConfigDisasm ( int nArgs ) ;
Update_t CmdConfigFont ( int nArgs ) ;
Update_t CmdConfigHColor ( int nArgs ) ;
Update_t CmdConfigLoad ( int nArgs ) ;
Update_t CmdConfigSave ( int nArgs ) ;
Update_t CmdConfigSetFont ( int nArgs ) ;
Update_t CmdConfigGetFont ( int nArgs ) ;
Update_t CmdConfigGetDebugDir ( int nArgs ) ;
Update_t CmdConfigSetDebugDir ( int nArgs ) ;
2010-06-11 15:38:22 +00:00
// Cursor
2015-01-08 20:15:19 +00:00
Update_t CmdCursorFollowTarget ( int nArgs ) ;
Update_t CmdCursorLineDown ( int nArgs ) ;
Update_t CmdCursorLineUp ( int nArgs ) ;
Update_t CmdCursorJumpRetAddr ( int nArgs ) ;
Update_t CmdCursorRunUntil ( int nArgs ) ;
Update_t CmdCursorPageDown ( int nArgs ) ;
Update_t CmdCursorPageDown256 ( int nArgs ) ;
Update_t CmdCursorPageDown4K ( int nArgs ) ;
Update_t CmdCursorPageUp ( int nArgs ) ;
Update_t CmdCursorPageUp256 ( int nArgs ) ;
Update_t CmdCursorPageUp4K ( int nArgs ) ;
2020-01-11 17:38:00 +00:00
// Cycles info
2020-05-23 17:40:12 +00:00
Update_t CmdCyclesInfo ( int nArgs ) ;
Update_t CmdCyclesReset ( int nArgs ) ;
2020-01-11 17:38:00 +00:00
2010-06-11 15:38:22 +00:00
// Disk
2015-01-08 20:15:19 +00:00
Update_t CmdDisk ( int nArgs ) ;
2010-06-11 15:38:22 +00:00
// Help
2015-01-08 20:15:19 +00:00
Update_t CmdHelpList ( int nArgs ) ;
Update_t CmdHelpSpecific ( int Argss ) ;
Update_t CmdVersion ( int nArgs ) ;
Update_t CmdMOTD ( int nArgs ) ;
2010-06-11 15:38:22 +00:00
// Flags
2015-01-08 20:15:19 +00:00
Update_t CmdFlag ( int nArgs ) ;
Update_t CmdFlagClear ( int nArgs ) ;
Update_t CmdFlagSet ( int nArgs ) ;
2010-06-11 15:38:22 +00:00
// Memory (Data)
Update_t CmdMemoryCompare ( int nArgs ) ;
Update_t CmdMemoryMiniDumpHex ( int nArgs ) ;
Update_t CmdMemoryMiniDumpAscii ( int nArgs ) ;
Update_t CmdMemoryMiniDumpApple ( int nArgs ) ;
// Update_t CmdMemoryMiniDumpLow (int nArgs);
// Update_t CmdMemoryMiniDumpHigh (int nArgs);
Update_t CmdMemoryEdit ( int nArgs ) ;
Update_t CmdMemoryEnterByte ( int nArgs ) ;
Update_t CmdMemoryEnterWord ( int nArgs ) ;
Update_t CmdMemoryFill ( int nArgs ) ;
2015-01-08 20:15:19 +00:00
Update_t CmdNTSC ( int nArgs ) ;
2014-08-24 06:08:22 +00:00
Update_t CmdTextSave ( int nArgs ) ;
2010-06-11 15:38:22 +00:00
Update_t CmdMemoryLoad ( int nArgs ) ;
Update_t CmdMemoryMove ( int nArgs ) ;
Update_t CmdMemorySave ( int nArgs ) ;
Update_t CmdMemorySearch ( int nArgs ) ;
2015-01-08 20:15:19 +00:00
Update_t _SearchMemoryDisplay ( int nArgs = 0 ) ; // TODO: CLEANUP
2010-06-11 15:38:22 +00:00
// Update_t CmdMemorySearchLowBit (int nArgs);
// Update_t CmdMemorySearchHiBit (int nArgs);
Update_t CmdMemorySearchAscii ( int nArgs ) ;
Update_t CmdMemorySearchApple ( int nArgs ) ;
Update_t CmdMemorySearchHex ( int nArgs ) ;
// Output/Scripts
Update_t CmdOutputCalc ( int nArgs ) ;
Update_t CmdOutputEcho ( int nArgs ) ;
Update_t CmdOutputPrint ( int nArgs ) ;
Update_t CmdOutputPrintf ( int nArgs ) ;
Update_t CmdOutputRun ( int nArgs ) ;
// Registers
2015-01-08 20:15:19 +00:00
Update_t CmdRegisterSet ( int nArgs ) ;
2010-06-11 15:38:22 +00:00
// Source Level Debugging
2015-01-08 20:15:19 +00:00
Update_t CmdSource ( int nArgs ) ;
Update_t CmdSync ( int nArgs ) ;
2010-06-11 15:38:22 +00:00
// Stack
2015-01-08 20:15:19 +00:00
Update_t CmdStackPush ( int nArgs ) ;
Update_t CmdStackPop ( int nArgs ) ;
Update_t CmdStackPopPseudo ( int nArgs ) ;
Update_t CmdStackReturn ( int nArgs ) ;
2010-06-11 15:38:22 +00:00
// Symbols
2015-01-08 20:15:19 +00:00
Update_t CmdSymbols ( int nArgs ) ;
Update_t CmdSymbolsClear ( int nArgs ) ;
Update_t CmdSymbolsList ( int nArgs ) ;
Update_t CmdSymbolsLoad ( int nArgs ) ;
Update_t CmdSymbolsInfo ( int nArgs ) ;
Update_t CmdSymbolsSave ( int nArgs ) ;
Update_t CmdSymbolsCommand ( int nArgs ) ;
// Update_t CmdSymbolsMain (int nArgs);
// Update_t CmdSymbolsBasic (int nArgs);
// Update_t CmdSymbolsUser (int nArgs);
// Update_t CmdSymbolsAssembly (int nArgs);
// Update_t CmdSymbolsSource (int nArgs);
2019-09-21 15:37:45 +00:00
// Video-scanner info
Update_t CmdVideoScannerInfo ( int nArgs ) ;
2015-01-08 20:15:19 +00:00
// View
Update_t CmdViewOutput_Text4X ( int nArgs ) ;
Update_t CmdViewOutput_Text41 ( int nArgs ) ;
Update_t CmdViewOutput_Text42 ( int nArgs ) ;
Update_t CmdViewOutput_Text8X ( int nArgs ) ;
Update_t CmdViewOutput_Text81 ( int nArgs ) ;
Update_t CmdViewOutput_Text82 ( int nArgs ) ;
Update_t CmdViewOutput_GRX ( int nArgs ) ;
Update_t CmdViewOutput_GR1 ( int nArgs ) ;
Update_t CmdViewOutput_GR2 ( int nArgs ) ;
Update_t CmdViewOutput_DGRX ( int nArgs ) ;
Update_t CmdViewOutput_DGR1 ( int nArgs ) ;
Update_t CmdViewOutput_DGR2 ( int nArgs ) ;
Update_t CmdViewOutput_HGRX ( int nArgs ) ;
2022-01-05 05:40:23 +00:00
Update_t CmdViewOutput_HGR0 ( int nArgs ) ;
2015-01-08 20:15:19 +00:00
Update_t CmdViewOutput_HGR1 ( int nArgs ) ;
Update_t CmdViewOutput_HGR2 ( int nArgs ) ;
2022-01-05 05:40:23 +00:00
Update_t CmdViewOutput_HGR3 ( int nArgs ) ;
Update_t CmdViewOutput_HGR4 ( int nArgs ) ;
Update_t CmdViewOutput_HGR5 ( int nArgs ) ;
2015-01-08 20:15:19 +00:00
Update_t CmdViewOutput_DHGRX ( int nArgs ) ;
Update_t CmdViewOutput_DHGR1 ( int nArgs ) ;
Update_t CmdViewOutput_DHGR2 ( int nArgs ) ;
2021-11-30 21:41:02 +00:00
Update_t CmdViewOutput_SHR ( int nArgs ) ;
2010-06-11 15:38:22 +00:00
// Watch
2015-01-08 20:15:19 +00:00
Update_t CmdWatch ( int nArgs ) ;
Update_t CmdWatchAdd ( int nArgs ) ;
Update_t CmdWatchClear ( int nArgs ) ;
Update_t CmdWatchDisable ( int nArgs ) ;
Update_t CmdWatchEnable ( int nArgs ) ;
Update_t CmdWatchList ( int nArgs ) ;
// Update_t CmdWatchLoad (int nArgs);
Update_t CmdWatchSave ( int nArgs ) ;
2010-06-11 15:38:22 +00:00
// Window
2015-01-08 20:15:19 +00:00
Update_t CmdWindow ( int nArgs ) ;
Update_t CmdWindowCycleNext ( int nArgs ) ;
Update_t CmdWindowCyclePrev ( int nArgs ) ;
Update_t CmdWindowLast ( int nArgs ) ;
Update_t CmdWindowShowCode ( int nArgs ) ;
Update_t CmdWindowShowCode1 ( int nArgs ) ;
Update_t CmdWindowShowCode2 ( int nArgs ) ;
Update_t CmdWindowShowData ( int nArgs ) ;
Update_t CmdWindowShowData1 ( int nArgs ) ;
Update_t CmdWindowShowData2 ( int nArgs ) ;
Update_t CmdWindowShowSymbols1 ( int nArgs ) ;
Update_t CmdWindowShowSymbols2 ( int nArgs ) ;
Update_t CmdWindowShowSource ( int nArgs ) ;
Update_t CmdWindowShowSource1 ( int nArgs ) ;
Update_t CmdWindowShowSource2 ( int nArgs ) ;
Update_t CmdWindowViewCode ( int nArgs ) ;
Update_t CmdWindowViewConsole ( int nArgs ) ;
Update_t CmdWindowViewData ( int nArgs ) ;
Update_t CmdWindowViewOutput ( int nArgs ) ;
Update_t CmdWindowViewSource ( int nArgs ) ;
Update_t CmdWindowViewSymbols ( int nArgs ) ;
Update_t CmdWindowWidthToggle ( int nArgs ) ;
2010-06-11 15:38:22 +00:00
// ZeroPage
2015-01-08 20:15:19 +00:00
// Update_t CmdZeroPageShow (int nArgs);
// Update_t CmdZeroPageHide (int nArgs);
// Update_t CmdZeroPageToggle (int nArgs);
Update_t CmdZeroPage ( int nArgs ) ;
Update_t CmdZeroPageAdd ( int nArgs ) ;
Update_t CmdZeroPageClear ( int nArgs ) ;
Update_t CmdZeroPageDisable ( int nArgs ) ;
Update_t CmdZeroPageEnable ( int nArgs ) ;
Update_t CmdZeroPageList ( int nArgs ) ;
// Update_t CmdZeroPageLoad (int nArgs);
Update_t CmdZeroPageSave ( int nArgs ) ;
Update_t CmdZeroPagePointer ( int nArgs ) ;
2010-06-11 15:38:22 +00:00
// Cursor _________________________________________________________________________________________
enum Cursor_Align_e
{
CURSOR_ALIGN_TOP ,
CURSOR_ALIGN_CENTER
} ;
enum CursorHiLightState_e
{
CURSOR_NORMAL , // White
CURSOR_CPU_PC , // Yellow
CURSOR_BREAKPOINT , // Red
} ;
// Disassembly ____________________________________________________________________________________
2010-12-19 16:44:46 +00:00
// Data Disassembler
enum Nopcode_e
{
_NOP_REMOVED
2022-01-05 16:55:17 +00:00
, NOP_BYTE_1 // 1 bytes/line
, NOP_BYTE_2 // 2 bytes/line
, NOP_BYTE_4 // 4 bytes/line
, NOP_BYTE_8 // 8 bytes/line
, NOP_WORD_1 // 1 words/line = 2 bytes (no symbol lookup)
, NOP_WORD_2 // 2 words/line = 4 bytes
, NOP_WORD_4 // 4 words/line = 8 bytes
, NOP_ADDRESS // 1 word/line = 2 bytes (with symbol lookup)
, NOP_HEX // hex string =16 bytes
, NOP_CHAR // char string // TODO: FIXME: needed??
, NOP_STRING_ASCII // Low Ascii
, NOP_STRING_APPLE // High Ascii
2010-12-19 16:44:46 +00:00
, NOP_STRING_APPLESOFT // Mixed Low/High
2022-01-05 16:55:17 +00:00
, NOP_FAC // Applesoft Floating-Point Format (5 bytes), i.e. $F069 = 0x81490FDAA2 = pi/2
2010-12-19 16:44:46 +00:00
, NOP_SPRITE
, NUM_NOPCODE_TYPES
} ;
// Disassembler Data
// type symbol[start:end]
struct DisasmData_t
{
char sSymbol [ MAX_SYMBOLS_LEN + 1 ] ;
Nopcode_e eElementType ; // eElementType -> iNoptype
2022-01-06 18:10:09 +00:00
int iDirective ; // iDirective -> iNopcode ASC DA DB DF DW etc.
2010-12-19 16:44:46 +00:00
WORD nStartAddress ; // link to block [start,end)
WORD nEndAddress ;
WORD nArraySize ; // Total bytes
// WORD nBytePerRow ; // 1, 8
// with symbol lookup
char bSymbolLookup ;
WORD nTargetAddress ;
WORD nSpriteW ;
WORD nSpriteH ;
} ;
// Disassembler ...
2010-06-11 15:38:22 +00:00
enum DisasmBranch_e
{
DISASM_BRANCH_OFF = 0
, DISASM_BRANCH_PLAIN
, DISASM_BRANCH_FANCY
, NUM_DISASM_BRANCH_TYPES
} ;
enum DisasmFormat_e
{
DISASM_FORMAT_CHAR = ( 1 < < 0 ) ,
DISASM_FORMAT_SYMBOL = ( 1 < < 1 ) ,
DISASM_FORMAT_OFFSET = ( 1 < < 2 ) ,
DISASM_FORMAT_BRANCH = ( 1 < < 3 ) ,
DISASM_FORMAT_TARGET_POINTER = ( 1 < < 4 ) ,
DISASM_FORMAT_TARGET_VALUE = ( 1 < < 5 ) ,
} ;
enum DisasmImmediate_e
{
DISASM_IMMED_OFF = 0
, DISASM_IMMED_TARGET
, DISASM_IMMED_MODE
, DISASM_IMMED_BOTH
, NUM_DISASM_IMMED_TYPES
} ;
enum DisasmTargets_e
{
DISASM_TARGET_OFF = 0
, DISASM_TARGET_VAL // Note: Also treated as bit flag !!
, DISASM_TARGET_ADDR // Note: Also treated as bit flag !!
, DISASM_TARGET_BOTH // Note: Also treated as bit flag !!
, NUM_DISASM_TARGET_TYPES
} ;
2022-01-05 23:42:34 +00:00
enum DisasmDisplay_e
2010-06-11 15:38:22 +00:00
{
2022-01-05 23:42:34 +00:00
DISASM_DISPLAY_MAX_ADDRESS_LEN = 40 ,
DISASM_DISPLAY_MAX_OPCODES = 3 , // only display 3 opcode bytes -- See FormatOpcodeBytes() // TODO: FIX when showing data hex
DISASM_DISPLAY_CHARS_FOR_ADDRESS = 8 , // 4 digits + end-of-string + padding
DISASM_DISPLAY_MAX_IMMEDIATE_LEN = 20 , // Data Disassembly
DISASM_DISPLAY_MAX_TARGET_LEN = DISASM_DISPLAY_MAX_IMMEDIATE_LEN , // Debugger Display: pTarget = line.sTarget
2010-06-11 15:38:22 +00:00
} ;
struct DisasmLine_t
{
short iOpcode ;
short iOpmode ;
2010-12-19 16:44:46 +00:00
int nOpbyte ;
2010-06-11 15:38:22 +00:00
2022-01-05 23:42:34 +00:00
char sAddress [ DISASM_DISPLAY_CHARS_FOR_ADDRESS ] ;
char sOpCodes [ ( DISASM_DISPLAY_MAX_OPCODES * 3 ) + 1 ] ;
2010-06-11 15:38:22 +00:00
// Added for Data Disassembler
char sLabel [ MAX_SYMBOLS_LEN + 1 ] ; // label is a symbol
2010-12-19 16:44:46 +00:00
Nopcode_e iNoptype ; // basic element type
int iNopcode ; // assembler directive / pseudo opcode
int nSlack ;
char sMnemonic [ MAX_SYMBOLS_LEN + 1 ] ; // either the real Mnemonic or the Assembler Directive
2014-08-28 23:52:41 +00:00
const DisasmData_t * pDisasmData ; // If != NULL then bytes are marked up as data not code
2010-12-19 16:44:46 +00:00
//
int nTarget ; // address -> string
2022-01-05 23:42:34 +00:00
char sTarget [ DISASM_DISPLAY_MAX_ADDRESS_LEN ] ;
2010-06-11 15:38:22 +00:00
2022-01-05 23:42:34 +00:00
char sTargetOffset [ DISASM_DISPLAY_CHARS_FOR_ADDRESS ] ; // +/- 255, realistically +/-1
2010-06-11 15:38:22 +00:00
int nTargetOffset ;
2022-01-05 23:42:34 +00:00
char sTargetPointer [ DISASM_DISPLAY_CHARS_FOR_ADDRESS ] ;
char sTargetValue [ DISASM_DISPLAY_CHARS_FOR_ADDRESS ] ;
2010-06-11 15:38:22 +00:00
2022-01-04 17:28:33 +00:00
int iTargetTable ; // Which symbol table this appears in if any. See: SYMBOLS_USER_2, DrawDisassemblyLine(), GetDisassemblyLine(), FindSymbolFromAddress()
2022-01-04 06:18:12 +00:00
char sImmediateSignedDec [ 6 ] ; // "-128" .. "+127"
2010-06-11 15:38:22 +00:00
char sImmediate [ 4 ] ; // 'c'
char nImmediate ;
char sBranch [ 4 ] ; // ^
bool bTargetImmediate ;
bool bTargetIndirect ;
bool bTargetIndexed ;
bool bTargetRelative ;
bool bTargetX ;
bool bTargetY ;
bool bTargetValue ;
void Clear ( )
{
2010-12-19 16:44:46 +00:00
memset ( this , 0 , sizeof ( * this ) ) ;
2010-06-11 15:38:22 +00:00
}
void ClearFlags ( )
{
bTargetImmediate = false ; // display "#"
bTargetIndexed = false ; // display ()
bTargetIndirect = false ; // display ()
bTargetRelative = false ; // display ()
bTargetX = false ; // display ",X"
bTargetY = false ; // display ",Y"
bTargetValue = false ; // display $####
}
} ;
// Font ___________________________________________________________________________________________
enum FontType_e
{
// FONT_DEFAULT
FONT_INFO
, FONT_CONSOLE
, FONT_DISASM_DEFAULT
, FONT_DISASM_BRANCH
// , FONT_SOURCE
, NUM_FONTS
} ;
enum
{
MAX_FONT_NAME = MAX_ARG_LEN // was 64
} ;
enum FontSpacing_e
{
FONT_SPACING_CLASSIC , // least lines (most spacing)
FONT_SPACING_CLEAN , // more lines (minimal spacing)
FONT_SPACING_COMPRESSED , // max lines (least spacing)
NUM_FONT_SPACING
} ;
struct FontConfig_t
{
char _sFontName [ MAX_FONT_NAME ] ;
HFONT _hFont ;
// int _iFontType;
int _nFontWidthAvg ;
int _nFontWidthMax ;
int _nFontHeight ;
int _nLineHeight ; // may or may not include spacer
} ;
// Instructions / Opcodes _________________________________________________________________________
//#define SUPPORT_Z80_EMU
# ifdef SUPPORT_Z80_EMU
# define OUTPUT_Z80_REGS
# define REG_AF 0xF0
# define REG_BC 0xF2
# define REG_DE 0xF4
# define REG_HL 0xF6
# define REG_IX 0xF8
# endif
enum MemoryAccess_e
{
MEM_R = ( 1 < < 0 ) , // Read
MEM_W = ( 1 < < 1 ) , // Write
MEM_RI = ( 1 < < 2 ) , // Read Implicit (Implied)
MEM_WI = ( 1 < < 3 ) , // Write Implicit (Implied)
MEM_S = ( 1 < < 4 ) , // Stack (Read/Write)
MEM_IM = ( 1 < < 5 ) , // Immediate - Technically reads target byte
NUM_MEM_ACCESS ,
// Alias
MEM_READ = ( 1 < < 0 ) ,
MEM_WRITE = ( 1 < < 1 ) ,
} ;
enum
{
// First 256 are 6502
// TODO: Second 256 are Directives/Pseudo Mnemonics
NUM_OPCODES = 256 ,
MAX_MNEMONIC_LEN = 3 ,
} ;
struct Opcodes_t
{
char sMnemonic [ MAX_MNEMONIC_LEN + 1 ] ;
// int16 for structure 8-byte alignment
short nAddressMode ; // TODO/FIX: nOpmode
short nMemoryAccess ;
} ;
struct Instruction2_t
{
char sMnemonic [ MAX_MNEMONIC_LEN + 1 ] ;
int nAddressMode ;
int iMemoryAccess ;
} ;
enum Opcode_e
{
2021-10-16 10:58:09 +00:00
OPCODE_BPL = 0x10 ,
OPCODE_BMI = 0x30 ,
OPCODE_BVC = 0x50 ,
OPCODE_BVS = 0x70 ,
OPCODE_BCC = 0x90 ,
OPCODE_BCS = 0xB0 ,
OPCODE_BNE = 0xD0 ,
OPCODE_BEQ = 0xF0 ,
OPCODE_BRA = 0x80 , // 65C02
2010-06-11 15:38:22 +00:00
2017-08-04 19:52:17 +00:00
OPCODE_BRK = 0x00 ,
2010-06-11 15:38:22 +00:00
OPCODE_JSR = 0x20 ,
2017-08-04 19:52:17 +00:00
OPCODE_RTI = 0x40 ,
2010-06-11 15:38:22 +00:00
OPCODE_JMP_A = 0x4C , // Absolute
2017-08-04 19:52:17 +00:00
OPCODE_RTS = 0x60 ,
2010-06-11 15:38:22 +00:00
OPCODE_JMP_NA = 0x6C , // Indirect Absolute
2021-10-16 10:58:09 +00:00
OPCODE_JMP_IAX = 0x7C , // Indexed (Absolute Indirect, X); 65C02
2019-12-09 16:27:13 +00:00
OPCODE_LDA_A = 0xAD , // Absolute
2014-12-11 18:00:51 +00:00
OPCODE_NOP = 0xEA , // No operation
2010-06-11 15:38:22 +00:00
} ;
// Note: "int" causes overflow when profiling for any amount of time.
// typedef unsigned int Profile_t;
// i.e.
// double nPercent = static_cast<double>(100 * tProfileOpcode.uProfile) / nOpcodeTotal; // overflow
typedef double Profile_t ;
struct ProfileOpcode_t
{
int m_iOpcode ;
Profile_t m_nCount ; // Histogram
// functor
bool operator ( ) ( const ProfileOpcode_t & rLHS , const ProfileOpcode_t & rRHS ) const
{
bool bGreater = ( rLHS . m_nCount > rRHS . m_nCount ) ;
return bGreater ;
}
} ;
struct ProfileOpmode_t
{
int m_iOpmode ;
Profile_t m_nCount ; // Histogram
// functor
bool operator ( ) ( const ProfileOpmode_t & rLHS , const ProfileOpmode_t & rRHS ) const
{
bool bGreater = ( rLHS . m_nCount > rRHS . m_nCount ) ;
return bGreater ;
}
} ;
enum ProfileFormat_e
{
PROFILE_FORMAT_SPACE ,
PROFILE_FORMAT_TAB ,
PROFILE_FORMAT_COMMA ,
} ;
// Memory _________________________________________________________________________________________
extern const int _6502_BRANCH_POS ; //= +127
extern const int _6502_BRANCH_NEG ; //= -128
extern const unsigned int _6502_ZEROPAGE_END ; //= 0x00FF;
2017-08-04 19:52:17 +00:00
extern const unsigned int _6502_STACK_BEGIN ; //= 0x0100;
2010-06-11 15:38:22 +00:00
extern const unsigned int _6502_STACK_END ; //= 0x01FF;
extern const unsigned int _6502_IO_BEGIN ; //= 0xC000;
extern const unsigned int _6502_IO_END ; //= 0xC0FF;
2017-08-04 19:52:17 +00:00
extern const unsigned int _6502_BRK_VECTOR ; //= 0xFFFE;
2010-06-11 15:38:22 +00:00
extern const unsigned int _6502_MEM_BEGIN ; //= 0x0000;
extern const unsigned int _6502_MEM_END ; //= 0xFFFF;
2019-10-22 20:31:53 +00:00
extern const unsigned int _6502_MEM_LEN ; //= 0x10000;
2010-06-11 15:38:22 +00:00
enum DEVICE_e
{
DEV_MEMORY ,
DEV_DISK2 ,
DEV_SY6522 ,
DEV_AY8910 ,
NUM_DEVICES
} ;
enum MemoryView_e
{
MEM_VIEW_HEX ,
// 0x00 .. 0x1F Ctrl (Inverse)
// 0x20 .. 0x7F Flash / MouseText (Cyan)
// 0x80 .. 0x9F Hi-Bit Ctrl (Yellow)
// 0xA0 .. 0xFF Hi-Bit Normal (White)
MEM_VIEW_ASCII ,
MEM_VIEW_APPLE , // Low-Bit ASCII (Colorized Background)
// MEM_VIEW_TXT_LO, // Ctrl Chars mapped to visible range, and inverse
// MEM_VIEW_TXT_HI, // High Bit Ascii
NUM_MEM_VIEWS
} ;
struct MemoryDump_t
{
bool bActive ;
WORD nAddress ; // nAddressMemDump; // was USHORT
DEVICE_e eDevice ;
MemoryView_e eView ;
} ;
enum MemoryDump_e
{
MEM_DUMP_1 ,
MEM_DUMP_2 ,
NUM_MEM_DUMPS
} ;
enum MemoryMiniDump_e
{
NUM_MEM_MINI_DUMPS = 2
} ;
enum MemorySearch_e
{
MEM_SEARCH_BYTE_EXACT , // xx
MEM_SEARCH_NIB_LOW_EXACT , // ?x
MEM_SEARCH_NIB_HIGH_EXACT , // x?
MEM_SEARCH_BYTE_1_WILD , // ?
MEM_SEARCH_BYTE_N_WILD , // ??
MEM_SEARCH_TYPE_MASK = ( 1 < < 16 ) - 1 ,
MEM_SEARCH_FOUND = ( 1 < < 16 )
} ;
struct MemorySearch_t
{
BYTE m_nValue ; // search value
MemorySearch_e m_iType ; //
bool m_bFound ; //
} ;
2014-08-14 19:29:01 +00:00
typedef std : : vector < MemorySearch_t > MemorySearchValues_t ;
typedef std : : vector < int > MemorySearchResults_t ;
2010-06-11 15:38:22 +00:00
// Parameters _____________________________________________________________________________________
/* i.e.
SYM LOAD = $ C600 ( 1 ) type : string , nVal1 = symlookup ; ( 2 ) type : operator , token : EQUAL ; ( 3 ) type : address , token : DOLLAR
BP LOAD type :
BP $ LOAD type : ( 1 ) = symbol , val = 1 adress
*/
enum ArgToken_e // Arg Token Type
{
// Single Char Tokens must come first
TOKEN_ALPHANUMERIC //
, TOKEN_AMPERSAND // &
, TOKEN_AT // @ results dereference. i.e. S 0,FFFF C030; L @1
, TOKEN_BRACE_L // {
, TOKEN_BRACE_R // }
, TOKEN_BRACKET_L // [
, TOKEN_BRACKET_R // ]
, TOKEN_BSLASH // \xx Hex Literal
, TOKEN_CARET // ^
// , TOKEN_CHAR
, TOKEN_COLON // : Range
, TOKEN_COMMA // , Length
// , TOKEN_DIGIT
, TOKEN_DOLLAR // $ Address (symbol lookup forced)
, TOKEN_EQUAL // = Assign Argment.n2 = Argument2
, TOKEN_EXCLAMATION // !
, TOKEN_FSLASH // /
, TOKEN_GREATER_THAN // >
, TOKEN_HASH // # Value no symbol lookup
, TOKEN_LESS_THAN // <
, TOKEN_MINUS // - Delta Argument1 -= Argument2
, TOKEN_PAREN_L // (
, TOKEN_PAREN_R // )
, TOKEN_PERCENT // %
, TOKEN_PIPE // |
, TOKEN_PLUS // + Delta Argument1 += Argument2
, TOKEN_QUOTE_SINGLE // '
, TOKEN_QUOTE_DOUBLE // "
, TOKEN_SEMI // ; Command Seperator
, TOKEN_SPACE // Token Delimiter
, TOKEN_STAR // *
// , TOKEN_TAB // '\t'
, TOKEN_TILDE // ~
// Multi char tokens come last
, TOKEN_COMMENT_EOL // //
, _TOKEN_FLAG_MULTI = TOKEN_COMMENT_EOL
, TOKEN_GREATER_EQUAL // >=
, TOKEN_LESS_EQUAL // <=
, TOKEN_NOT_EQUAL // !=
// , TOKEN_COMMENT_1 // /*
// , TOKEN_COMMENT_2 // */
, NUM_TOKENS // signal none, or bad
, NO_TOKEN = NUM_TOKENS
} ;
enum ArgType_e
{
TYPE_ADDRESS = ( 1 < < 0 ) // $#### or $symbolname
, TYPE_OPERATOR = ( 1 < < 1 )
, TYPE_QUOTED_1 = ( 1 < < 2 )
, TYPE_QUOTED_2 = ( 1 < < 3 ) // "..."
, TYPE_STRING = ( 1 < < 4 ) // LOAD
, TYPE_RANGE = ( 1 < < 5 )
, TYPE_LENGTH = ( 1 < < 6 )
, TYPE_VALUE = ( 1 < < 7 )
, TYPE_NO_REG = ( 1 < < 8 ) // Don't do register value -> Argument.nValue
, TYPE_NO_SYM = ( 1 < < 9 ) // Don't do symbol lookup -> Argument.nValue
} ;
struct TokenTable_t
{
ArgToken_e eToken ;
ArgType_e eType ;
char sToken [ 4 ] ;
} ;
struct Arg_t
{
2021-07-28 13:09:22 +00:00
Arg_t ( ) // ctor added to fix Coverity (static analysis) defect
{
sArg [ 0 ] = 0 ;
nArgLen = 0 ;
nValue = 0 ;
eToken = TOKEN_ALPHANUMERIC ; // default
bType = 0 ;
eDevice = DEV_MEMORY ; // default
bSymbol = 0 ;
}
2017-08-25 15:56:23 +00:00
char sArg [ MAX_ARG_LEN + 1 ] ; // Array chars comes first, for alignment, GH#481 echo 55 char limit
2010-06-11 15:38:22 +00:00
int nArgLen ; // Needed for TextSearch "ABC\x00"
WORD nValue ; // 2
// Enums and Bools should come last for alignment
ArgToken_e eToken ; // 1/2/4
int bType ; // 1/2/4 // Flags of ArgType_e
DEVICE_e eDevice ; // 1/2/4
bool bSymbol ; // 1
} ;
// NOTE: Order MUST match g_aParameters[] !!!
enum Parameters_e
{
// Note: Order must match Breakpoint_Operator_t
// Note: Order must match _PARAM_BREAKPOINT_*
// Note: Order must match g_aBreakpointSymbols
_PARAM_BREAKPOINT_BEGIN
, PARAM_BP_LESS_EQUAL = _PARAM_BREAKPOINT_BEGIN // <=
, PARAM_BP_LESS_THAN // <
, PARAM_BP_EQUAL // =
, PARAM_BP_NOT_EQUAL // !=
, PARAM_BP_NOT_EQUAL_1 // !
, PARAM_BP_GREATER_THAN // >
, PARAM_BP_GREATER_EQUAL // >=
, PARAM_BP_READ // R
, _PARAM_BP_READ // ? alias READ
, PARAM_BP_WRITE // W
, _PARAM_BP_WRITE // @ alias write
, PARAM_BP_READ_WRITE // * alias READ WRITE
, _PARAM_BREAKPOINT_END
, PARAM_BREAKPOINT_NUM = _PARAM_BREAKPOINT_END - _PARAM_BREAKPOINT_BEGIN
// , PARAM_SIZE // TODO: used by FONT SIZE
2019-10-22 20:31:53 +00:00
// Note: Order must match BreakpointSource_t
2010-06-11 15:38:22 +00:00
, _PARAM_REGS_BEGIN = _PARAM_BREAKPOINT_END // Daisy Chain
// Regs
, PARAM_REG_A = _PARAM_REGS_BEGIN
, PARAM_REG_X
, PARAM_REG_Y
, PARAM_REG_PC // Program Counter
, PARAM_REG_SP // Stack Pointer
// Flags
, PARAM_FLAGS // Processor Status
, PARAM_FLAG_C // Carry
, PARAM_FLAG_Z // Zero
, PARAM_FLAG_I // Interrupt
, PARAM_FLAG_D // Decimal
, PARAM_FLAG_B // Break
, PARAM_FLAG_R // Reserved
, PARAM_FLAG_V // Overflow
, PARAM_FLAG_N // Sign
, _PARAM_REGS_END
, PARAM_REGS_NUM = _PARAM_REGS_END - _PARAM_REGS_BEGIN
// Disasm
, _PARAM_CONFIG_BEGIN = _PARAM_REGS_END // Daisy Chain
, PARAM_CONFIG_BRANCH = _PARAM_CONFIG_BEGIN // g_iConfigDisasmBranchType [0|1|2]
2017-08-25 14:22:08 +00:00
, PARAM_CONFIG_CLICK // g_bConfigDisasmClick [0..7] // GH#462
2010-06-11 15:38:22 +00:00
, PARAM_CONFIG_COLON // g_bConfigDisasmAddressColon [0|1]
, PARAM_CONFIG_OPCODE // g_bConfigDisasmOpcodesView [0|1]
, PARAM_CONFIG_POINTER // g_bConfigInfoTargetPointer [0|1]
, PARAM_CONFIG_SPACES // g_bConfigDisasmOpcodeSpaces [0|1]
, PARAM_CONFIG_TARGET // g_iConfigDisasmTargets [0|1|2]
, _PARAM_CONFIG_END
, PARAM_CONFIG_NUM = _PARAM_CONFIG_END - _PARAM_CONFIG_BEGIN
// Disk
, _PARAM_DISK_BEGIN = _PARAM_CONFIG_END // Daisy Chain
, PARAM_DISK_EJECT = _PARAM_DISK_BEGIN // DISK 1 EJECT
2013-11-02 21:24:45 +00:00
, PARAM_DISK_INFO // DISK 1 INFO
2010-06-11 15:38:22 +00:00
, PARAM_DISK_PROTECT // DISK 1 PROTECT
, PARAM_DISK_READ // DISK 1 READ Track Sector NumSectors MemAddress
, _PARAM_DISK_END
, PARAM_DISK_NUM = _PARAM_DISK_END - _PARAM_DISK_BEGIN
, _PARAM_FONT_BEGIN = _PARAM_DISK_END // Daisy Chain
, PARAM_FONT_MODE = _PARAM_FONT_BEGIN
, _PARAM_FONT_END
, PARAM_FONT_NUM = _PARAM_FONT_END - _PARAM_FONT_BEGIN
, _PARAM_GENERAL_BEGIN = _PARAM_FONT_END // Daisy Chain
, PARAM_FIND = _PARAM_GENERAL_BEGIN
, PARAM_BRANCH
, PARAM_CATEGORY
, PARAM_CLEAR
, PARAM_LOAD
, PARAM_LIST
, PARAM_OFF
, PARAM_ON
, PARAM_RESET
, PARAM_SAVE
, PARAM_START
, PARAM_STOP
2021-12-11 13:41:34 +00:00
, PARAM_ALL
2010-06-11 15:38:22 +00:00
, _PARAM_GENERAL_END
, PARAM_GENERAL_NUM = _PARAM_GENERAL_END - _PARAM_GENERAL_BEGIN
, _PARAM_HELPCATEGORIES_BEGIN = _PARAM_GENERAL_END // Daisy Chain
, PARAM_WILDSTAR = _PARAM_HELPCATEGORIES_BEGIN
, PARAM_CAT_BOOKMARKS
, PARAM_CAT_BREAKPOINTS
, PARAM_CAT_CONFIG
, PARAM_CAT_CPU
// , PARAM_CAT_EXPRESSION
, PARAM_CAT_FLAGS
, PARAM_CAT_HELP
, PARAM_CAT_KEYBOARD
, PARAM_CAT_MEMORY
, PARAM_CAT_OUTPUT
, PARAM_CAT_OPERATORS
, PARAM_CAT_RANGE
// , PARAM_CAT_REGISTERS
, PARAM_CAT_SYMBOLS
, PARAM_CAT_VIEW
, PARAM_CAT_WATCHES
, PARAM_CAT_WINDOW
, PARAM_CAT_ZEROPAGE
, _PARAM_HELPCATEGORIES_END
, PARAM_HELPCATEGORIES_NUM = _PARAM_HELPCATEGORIES_END - _PARAM_HELPCATEGORIES_BEGIN
, _PARAM_MEM_SEARCH_BEGIN = _PARAM_HELPCATEGORIES_END // Daisy Chain
, PARAM_MEM_SEARCH_WILD = _PARAM_MEM_SEARCH_BEGIN
// , PARAM_MEM_SEARCH_BYTE
, _PARAM_MEM_SEARCH_END
, PARAM_MEM_SEARCH_NUM = _PARAM_MEM_SEARCH_END - _PARAM_MEM_SEARCH_BEGIN
, _PARAM_SOURCE_BEGIN = _PARAM_MEM_SEARCH_END // Daisy Chain
, PARAM_SRC_MEMORY = _PARAM_SOURCE_BEGIN
, _PARAM_SRC_MEMORY // alias MEM = MEMORY
, PARAM_SRC_SYMBOLS
, _PARAM_SRC_SYMBOLS // alias SYM = SYMBOLS
, PARAM_SRC_MERLIN
, PARAM_SRC_ORCA
, _PARAM_SOURCE_END
, PARAM_SOURCE_NUM = _PARAM_SOURCE_END - _PARAM_SOURCE_BEGIN
, _PARAM_WINDOW_BEGIN = _PARAM_SOURCE_END // Daisy Chain
// These are the "full screen" "windows" / Panels / Tab sheets
, PARAM_CODE = _PARAM_WINDOW_BEGIN // disasm
// , PARAM_CODE_1 // disasm top // removed, since can't set top window for code/data
, PARAM_CODE_2 // disasm bot
, PARAM_CONSOLE
, PARAM_DATA // data all
// , PARAM_DATA_1 // data top // removed, since can't set top window for code/data
, PARAM_DATA_2 // data bot
, PARAM_DISASM
, PARAM_INFO // Togle INFO on/off
, PARAM_SOURCE
, _PARAM_SRC // alias SRC = SOURCE
// , PARAM_SOURCE_1 // source top // removed, since can't set top window for code/data
, PARAM_SOURCE_2 // source bot
, PARAM_SYMBOLS
, _PARAM_SYM // alias SYM = SYMBOLS
// , PARAM_SYMBOL_1 // symbols top // removed, since can't set top window for code/data
, PARAM_SYMBOL_2 // symbols bot
, _PARAM_WINDOW_END
, PARAM_WINDOW_NUM = _PARAM_WINDOW_END - _PARAM_WINDOW_BEGIN
, NUM_PARAMS = _PARAM_WINDOW_END // Daisy Chain
// Aliases (actuall names)
// ,PARAM_DISASM = PARAM_CODE_1
// , PARAM_BREAKPOINT_READ = PARAM_READ
// , PARAM_BREAKPOINT_WRITE = PARAM_WRITE
} ;
// Source Level Debugging _________________________________________________________________________
enum
{
NO_SOURCE_LINE = - 1
} ;
2014-08-14 19:29:01 +00:00
typedef std : : map < WORD , int > SourceAssembly_t ; // Address -> Line # & FileName
2010-06-11 15:38:22 +00:00
// Symbols ________________________________________________________________________________________
// ****************************************
2011-01-30 17:39:19 +00:00
// Note: This is the index (enumeration) to select which table
2010-06-11 15:38:22 +00:00
// See: g_aSymbols[]
// ****************************************
enum SymbolTable_Index_e // Symbols_e -> SymbolTable_Index_e
{
SYMBOLS_MAIN ,
SYMBOLS_APPLESOFT ,
SYMBOLS_ASSEMBLY ,
SYMBOLS_USER_1 ,
SYMBOLS_USER_2 ,
SYMBOLS_SRC_1 ,
SYMBOLS_SRC_2 ,
2011-01-30 17:39:19 +00:00
SYMBOLS_DOS33 ,
SYMBOLS_PRODOS ,
2010-06-11 15:38:22 +00:00
NUM_SYMBOL_TABLES
} ;
// ****************************************
2011-01-30 17:39:19 +00:00
// Note: This is the bit-flags to select which table.
// See: CmdSymbolsListTable(), g_bDisplaySymbolTables
2010-06-11 15:38:22 +00:00
// ****************************************
enum SymbolTable_Masks_e // SymbolTable_e ->
{
SYMBOL_TABLE_MAIN = ( 1 < < 0 ) ,
SYMBOL_TABLE_APPLESOFT = ( 1 < < 1 ) ,
SYMBOL_TABLE_ASSEMBLY = ( 1 < < 2 ) ,
SYMBOL_TABLE_USER_1 = ( 1 < < 3 ) ,
SYMBOL_TABLE_USER_2 = ( 1 < < 4 ) ,
SYMBOL_TABLE_SRC_1 = ( 1 < < 5 ) ,
SYMBOL_TABLE_SRC_2 = ( 1 < < 6 ) ,
2011-01-30 17:39:19 +00:00
SYMBOL_TABLE_DOS33 = ( 1 < < 7 ) ,
SYMBOL_TABLE_PRODOS = ( 1 < < 8 ) ,
2010-06-11 15:38:22 +00:00
} ;
2014-08-14 19:29:01 +00:00
typedef std : : map < WORD , std : : string > SymbolTable_t ;
2010-06-11 15:38:22 +00:00
// Watches ________________________________________________________________________________________
enum
{
2019-09-21 15:37:45 +00:00
MAX_WATCHES = 6
2010-06-11 15:38:22 +00:00
} ;
// Window _________________________________________________________________________________________
enum Window_e
{
2010-12-18 15:13:28 +00:00
WINDOW_NULL , // no window data!
2010-06-11 15:38:22 +00:00
WINDOW_CONSOLE ,
2010-12-18 15:13:28 +00:00
WINDOW_CODE ,
WINDOW_DATA , // memory view
WINDOW_INFO , // WINDOW_REGS, WINDOW_STACK, WINDOW_BREAKPOINTS, WINDOW_WATCHES, WINDOW,
2010-06-11 15:38:22 +00:00
NUM_WINDOWS ,
// Not implemented yet
2010-12-18 15:13:28 +00:00
WINDOW_REGS ,
WINDOW_STACK ,
2010-06-11 15:38:22 +00:00
WINDOW_SYMBOLS ,
2010-12-18 15:13:28 +00:00
WINDOW_TARGETS ,
WINDOW_IO , // soft switches $addr name state
2010-06-11 15:38:22 +00:00
WINDOW_ZEROPAGE ,
WINDOW_SOURCE ,
2010-12-18 15:13:28 +00:00
WINDOW_OUTPUT ,
} ;
enum WindowSplit_e
{
WIN_SPLIT_HORZ = ( 1 < < 0 ) ,
WIN_SPLIT_VERT = ( 1 < < 1 ) ,
WIN_SPLIT_PARENT_TOP = ( 1 < < 2 ) ,
2010-06-11 15:38:22 +00:00
} ;
struct WindowSplit_t
{
2010-12-18 15:13:28 +00:00
int bSplit ;
2010-06-11 15:38:22 +00:00
Window_e eTop ;
Window_e eBot ;
} ;
2010-12-18 15:13:28 +00:00
// Debuger_PanelInit();
// WindowsRemoveAll()
// int iNext = 0;
// iNext = Panel_Add( iNext, WINDOW_CONSOLE );
// iNext = Panel_AutoSplit( iNext, WINDOW_CODE );
// iNext = Panel_AutoSplit( iNext, WINDOW_REGS );
// g_bWindowDisplayShowChild = false;
// g_bWindowDisplayShowRoot = WINDOW_CODE;
2010-06-11 15:38:22 +00:00
// Zero Page ______________________________________________________________________________________
enum
{
MAX_ZEROPAGE_POINTERS = 8
} ;