/* TODO: 2.6.0.0 released with next version of AppleWin (1.12.9.2) .11 Added: Trace File Now displays filename tracing is saved to. .10 Fixed: Trace File wasn't displaying assembly mnemonics .9 Added: Internal change: Seperated Disassembling and Drawing a little more. See: GetDisassemblyLine() and FormatDisassemblyLine() .8 Fixed: 100% CPU utilization polling for mouse events in debugger .7 Added: Colorized PROFILE LIST output .6 Fixed: Debugger mouse click not checking if in Debug mode .5 Fixed: HELP WA wasn't displaying help for Watch Add .4 Added: Colorized most of built in debugger help. .3 Added: In disassembly, regs X & Y in mnemonic line are now color coded .2 Changed internal representation of color console .1 Console now jumps to end, when return pressed 2.5.7.0 Debugger using new Apple Font with color console support .41 Fixed: Breakpoints now properly handle ranges (both relative and absolute) See HELP BPR .40 Changed: Cleaned up Bookmarks, Watches, ZeroPage to be more consistent. Example: ZPA // list ZPA CV // add address ZPA 0 CV // update with new address ZPA 0 CV CH // add/update a sequence .39 Changed: Cleaned up many commands and HELP categories. .38 Added: BMSAVE Bookmarks are now saved. .37 Changed: Breakpoints now recognize op '!=' or '!' for not equal. .36 Removed: Command Config menu (OPTION) since it is not needed .35 Changed: Command CONFIG renamed to OPTION to prevent same name collision with category .34 Fixed: The comment to end-of-line (//) is now a proper token .33 Fixed: Parsing of operators <= >= .32 Fixed: HELP SYM displaying help category, not help command. .31 Added: Mini-help for Watches .30 Fixed: Command aliases are no longer displayed multiple times i.e. HELP BEN // would show BENCHMARK BENCHMARK (BENCH) .29 Fixed: Removed hard-coded magic number spacing for Regs on info panel .28 Fixed: Commands and params can now be in lowercase .27 Fixed: Help now does partial matches. i.e. HELP OP .26 Fixed: FONT checking wrong arg count - bug introduced when op * was added. .25 Fixed: Console not handling string with length same as console width .24 Added: HELP RANGE .23 Added: HELP OPERATORS .22 Fixed: Memory searching now accepts ranges. see HELP S, HELP SH .21 Fixed: Updated BLOAD BSAVE Help .20 Fixed: BLOAD, BSAVE now accept ranges. .19 Fixed: Backspace toggles quote state for single quotes now too. .18 Changed: Results of searching now start at 1, not zero. i.e. S F000,1000 'Apple' MA1 @1 .17 Added: HELP S .16 Changed: Search Text (S) now uses consistent quoting "...ASCII..." '...High-Bit Apple Text...' Commands: Search Ascii (SA), and Search Apple Text (ST) are now deprecated. .15 Fixed: Search Text wasn't allowing multiple apple text chars. .14 Single Quoting now allows lower case input .13 Fixed: Escape to clear console input, didn't reset quoted flag .12 Changed: BLOAD failure now prints path/file it tried. .11 Fixed: Memory Searching not handling comma seperating address,length .10 Fixed: console not wrapping long lines .9 Fixed: console resize not set to full width .8 Fixed: PRINTF help .7 Extended: command Bookmark List (BML) Also displays maximum bookmarks if no current bookmarks are set. .6 Extended: command Breakpoint List (BL) Also displays maximum breakpoints if no current breakpoints are set. .5 Extended: command Watch Add (W), and Watch List (WL) Also displays maximum watchpoints if no current watchpoints are set. .4 Fixed: memory dump no longer overwrites icons when dumping SY6522 or AY8910 MA1 SY MA1 AY .3 Fixed: Target display bug _6502_GetTargets() Indirect (Zeropage) Indexed, Y not clamping pointer. F7 DISASM POINTER 1 R PC FAC7 FE:55 R Y FF .2 Added: new command: DISASM POINTER [0 | 1] Toggles the display of the instruction's target pointer values on / off in the info panel. The default is now off, since the main disasm window shows target values for indirect addressing modes. .1 Added: Increased breakpoints to 15, Watches to 6, Zeropage pointers to 6. Fixed: Display only active breakpoints. .0 Rearranged/Reorganized info panel to allow full width console - Regs are now listed at the top of the window - Breakpoint title has been removed - Watch title has been removed - Target now shares space with the stack display - Memory Dump 2 is now only 2 lines 2.5.6.x .4 Added: Help Categories: BOOKMARKS, HELP, OUTPUT .3 Re-organized output commands into seperate category. ECHO, CALC, PRINT, PRINTF .2 Added: Bookmark commands BM BMA # address // Bookmark add BMC * | # [, #] // Bookmark clear .2 Added: new console output commands: PRINT, PRINTF .1 Fixed: '*' operator being treated as operator if only argument 2.5.5.0 Added multiplication operator: '*' .15 Fixed: Help Category comma syntax parsing .14 Fixed: BP comma syntax parsing .13 Fixed: BSAVE comma syntax parsing. Comma after filename is mandatory now. BSAVE ["Filename"], addr, len .12 Fixed: BLOAD comma syntax parsing. Comma after filename is mandatory now. BLOAD ["Filename"], addr[, len] .11 Fixed: Go syntax parsing G StopAddress [SkipAddress,Length] .10 Changed: internal parsing of comma operator. It is now left in the command arguments. .9 Fixed: modifier keys (Shift,Ctrl,Alt) not being updated when mouse scrolling. .8 Changed scrolling page up & down to not scroll as far. .7 Fixed: scroll up bug, introduced with new scroll up code R PC FBB4 up arrow .6 Fixed: scrolling page up & down, to keep better sync U F700 pagedown pageup .5 Fixed: scrolling page up & down bug, loosing sync of disassembly lines U F500 pagedown pageup F500...F526 -> F523 (should be F526, +20 lines) .4 Fixed: scroll down bug, loosing sync of "top" disassembly U F70F down arrow .3 Fixed: scroll up bug, loosing sync on disassembly by skipping a mnemonic line: i.e. U FA44 (FA56) up arrow .2 Added: Ctrl-# to jump to address .1 Added: Alt-# to set bookmark at address .0 Added: mouse wheel scrolling in debugger 2.5.4.x .16 Swapped -> and Alt -> -> Follow Target at Cursor Alt -> Jump Cursor to PC .15 Added: Alt -> to follow target at cursor .14 Fixed: BLOAD/BSAVE to update console. .13 Changed: BLOAD/BSAVE to use more traditional order of arguments: The comma after the filename must be left out for the time being. BSAVE "Filename" address,length BLOAD "Filename" address .12 Fixed: BPA to set breakpoints if no args .11 Fixed: Cleaned up HELP BP .10 Fixed: Cleaned up HELP BREAKPOINTS .9 Fixed: Cleaned up HELP DISASM .8 Added: DISASM to print current states .7 Added: DISASM TARGET [#] .6 Added: BLOAD addr[,len] "Filename" .5 Added: BSAVE addr,len "Filename" .4 Added: HELP DISASM .3 Added: DISASM [BRANCH | COLON | OPCODE | SPACES] # .2 Fixed: HELP CONFIG not working .1 Linards put undocumented mnemonics in lowercase 2.5.3.x 2.5.2.x 3.0 Added: Ctrl-V (paste) now works. 2.0 Added: BRKOP ## support 2.5.1.0 Added: BRK ON|OFF support .23 Fixed: Moved columns of disasm for instructions, and target values over one char left, to leave whitespace past the target 'char' on the end .22 Added: Disasm window now shows target values for indirect, and indexed addressing modes. i.e. 0:34 12 00 00 AA 99 D0:16 03 1234:56 78 9A R X D0 R Y 2 300:A9 55 // LDA #$55 302:4C 89 67 // JMP $6789 305:AD 01 00 // LDA $0001 = 12 308:A5 00 // LDA $00 = #34 30A:DE 00 00 // DEC $0000,X $D0=FF 30D:BE 02 00 // LDX $0002,Y 310:B4 35 // LDY $30,X 312:B6 00 // LDX $00,Y $02=0 314:D0 02 316:A1 00 // LDA ($00,X) 318: 7C 00 00 // JMP ($0000,X) 31B:B1 00 // LDA ($00),Y 31D:B2 00 // LDA ($00) 31F:6C 02 00 // JMP ($0002) = ($0000) -> 1234 .21 Fixed: Disasm display of "Zeropage, X" and "Zeropage, Y" targets weren't wrapping on the zero-page. .20 Added: Single quoted chars in search are treated as opposite high-bit. i.e. S D000,FFFF "NEX" 'T' searches for NEXT, with the 'T' having the high-bit set. NEW: S search text or hex NEW: SA search ASCII text (single quote refers to Apple Text) NEW: ST search Apple text (single quote refers to ASCII text) .19 Added: Search Results can now be (de) referenced via @ .18 Added: new operator '@' .17 Fixed bug in _GetStartEnd(). i.e. D000,FFFF -> D000,CFFF (nothing searched!) 2.5.0.16 released with AppleWin 1.12.9.1 .16 Added: addr:byte [byte] .15 .14 Fixed: Parses not to cook the args, until right before eating them .13 Fixed: script to not append filename extension .12 Fixed: command // to be comment .11 Console sometimes wouldn't draw due to g_bDebuggerViewingAppleOutput being still incorrectly set to true .10 Added: double forward slash on command line now ignores rest of command (same as C++ comment) .9 Added: Legacy Apple "Monitor" Commands in ExecuteCommand() ####G (JMP $Address) ####L (Unassemble) .8 Fixed: console input length not updated from script line length in CmdConfigRun() .7 Fixed: script read hang in GetLinePointers() .6 Fixed: Assembler storing one too many bytes in AssemblerPokeAddress() .5 Fixed: Assembler not parsing target address in AssemblerGetArgs() A 40C7 BRA $40D7 .4 Fixed: Assembler hang in AssemblerProcessDelayedSymols() A 40C7 BRA $40D7 .3 Fixed: BPM to break ON the trigger, not after Cleaned up Breakpoint code .2 Fixed: BP address[,Length] to re-direct to BPX .1 Added: Search Hex SH Address,Len Byte [Byte ..] Wildcard support i.e. SH FA00,FF 20 ? ? 20 .0 Added: DISK # PROTECT [0 | 1] .0 Added: DISK # EJECT 2.5 split Debugger files .21 Changed: Branch indicator now a little bigger +3 in DebugInitialize() (easier to read), indented ^,V to make the < stand out U 300 E 300 D0 80 D0 FE D0 00 .20 Added: BW is now a seperate color scheme .19 Added: ECHO CmdConfigEcho(), g_pConsoleFirstArg, and ArgsGet() .18 Changed: BPX now defaults to setting breakpoint at cursor. .17 Changed: BP now defaults to setting breakpoint at PC. Patch 22 .16 fixed BPM. i.e. BPM C400,100. Boot: ulti4bo.dsk, breaks at: 81BC: STA ($88),Y $0088=$C480 ... C483: A0 Patch 21 .15 Fixed: CmdRegisterSet() equal sign is now optional. i.e. R A [=] Y .14 Optimized: ArgsCook() .13 Fixed: HELP "..." on ambigious command displays potential commands .12 Added: Token %, calculator mod .11 Added: Token /, calculator div .10 Added: Token ^, calculator bit-xor .9 Added: Token |, calculator bit-or .8 Added: Token &, calculator bit-and .7 Added: Mini-Assembler .6 Added: MOTD (Message of the Day) : Moved from DebugBegin() .5 Added: HELP SOURCE .4 Fixed: SYMMAIN SYMUSER SYMSRC to now only search their respective symbol tables .3 Added: _CmdSymbolList_Address2Symbol() _CmdSymbolList_Symbol2Address() now take bit-flags of which tables to search .2 Added: EB alias for E .1 Added: EW address value16 CmdMemoryEnterWord() to set memory with 16-Bit Values 2.4.2.0 .14 Added: SYM ! name to remove (user) symbol. _CmdSymbolsUpdate() .13 Added: JSR address|symbol CmdJSR() .12 Fixed: SYM address|symbol now reports if address or symbol not found. CmdSymbolsList() .11 Fixed PageUp*, PagDn* not being recognized valid commands. Patch 20 .10 Added: SYM2 symbolname = value .9 Added: Undocumented command: FONT * .8 Improved: FONT MODE # is now more accurate. i.e. U 301 FONT MODE 0 Classic line spacing (19 lines: 301 .. 313) FONT MODE 1 Improved line spacing (20 lines: 301 .. 314) FONT MODE 2 Optimal line spacing (22 lines: 301 .. 316) .7 Fixed: ArgsCook() wasn't parsing #value properly. i.e. CALC #A+0A .6 Cleanup: DrawWatches() Patch 19 .5 Fixed: ProfileSave() doesn't strip '%' percent signs anymore. Changed: fprintf() to fputs() Fixed: PROFILE RESET doesn't do dummy run of formatting profile data. .4 Fixed: Exporting Profile data is now Excel/OpenOffice friendly. Zero counts not listed on console. (They are when saved to file.) Patch 18 .3 Fixed: Help_Arg_1() now copies command name into arg.name .2 Fixed: Temporarily removed extra windows that aren't done yet from showing up: WINDOW_IO WINDOW_SYMBOLS WINDOW_ZEROPAGE WINDOW_SOURCE .1 Added: PROFILE LIST -- can now view the profile data from witin the debugger! 2.4.1 Added: PROFILE SAVE -- now we can optimize (D0 BNE), and (10 BPL) sucking up the major of the emulator's time. WOOT! Added: _6502GetOpmodeOpbyte() and _6502GetOpcodeOpmode() .37 Fixed: Misc. commands not updating the console when processed Patch 17 .36 Data window now shows text dump based on memory view set (ASCII or APPLE) MA1 D0D0; DATA; MT1 D0D0; DATA; D D0D0; DATA; .35 Renamed: ML1 ML2 to MT1 MT2 (Mem Text) .34 Removed: MH1 MH2 (redundant MEM_VIEW_APPLE_TEXT) .33 Fixed: Tweaking of Lo,Hi,Norm Ascii colors for Disasm Immediate & Memory Dumps ML1 D0D0; MH2 D0D0; U FA75 .32 Changed: Lo now maps High Ascii to printable chars. i.e. ML1 D0D0 .31 Ctrl-Tab, and Ctrl-Shift-Tab now cycle next/prev windows. .30 Added: Up,Down,PageUp,PageDown,Shift-PageUp,Shift-PageDown,Ctrl-PageUp,Ctrl-PageDown now scroll Data window .29 Added: DATA window now shows memory dump Patch 16 .28 Fixed: MONO wasn't setting monochrome scheme .27 Changed: Registers now drawn in light blue for both DrawSubWindow_Info() [DrawRegisters()] and DrawBreakpoints() Reg names in DrawSubWindow_Info no longer hard-coded: using g_areakpointSource[] .26 Changed: DrawTargets() now shows Temp Address, and Final Address as orange (FG_INFO_ADDRESS) .25 Changed: Flag Clear "FC" to "CL" (like 6502 mnemonic) Changed: Flag Set "FS" to "SE" (like 6502 mnemonic) Added: Mirrored 6502 Mnemonics to clear/set flags as commands Moved: Legacy Flag Clear/Set commands "R?" "S?" to aliases .24 Fixed OPCODE 2F: AM_INVALID1 -> AM_INVALID3 .23 Fixed OPCODE 0F: AM_INVALID1 -> AM_INVALID3 .22 Fixed: Shift-PageUp Shift-PageDown Ctrl-PageUp Ctrl-PageDown -> _CursorMoveUpAligned() & _CursorMoveDownAligned() Bug: U F001, Ctrl-PageDown Was using current disasm cursor address instead of top disasm cursor .21 Fixed: _CursorMoveUpAligned() & _CursorMoveDownAligned() not wrapping around past FF00 to 0, and wrapping around past 0 to FF00 .20 Fixed: DisasmCalcTopFromCurAddress() causing bogus g_bDisasmCurBad when disasm invalid opcodes. .19 g_aAddressingFormat[] -> g_aOpmodes[] .18 Reverted .17 Changed StackPointer Input/Output. 'SP' is now back to 'S' (to be consistent with 6502 mnemonics) Patch 15 .17 Changed StackPointer Input/Output from 'S' to 'SP' .16 Fixed Go StopAddress [SkipAddress,Length] Trace() not working afterwards .15 Added Info Regs color - Foreground and Background (orange) Patch 14 .14 Added: Stack register now shows stack depth .13 Bugfix: CmdBreakpointAddPC() operators now don't add extra breakpoints. i.e. BPX P < FA00 .12 Bugfix: DrawMemory() should draw memory byte for IO address: ML1 C000 Patch 13 NightlyBuild .11 Disasm now looks up symbols +1,-1. i.e. U FA85, u FAAE .10 Fixed '~' full console height .9 Fixed: FindCommand() to update command found if not exact match .8 Moved: Flag names from g_aFlagNames[] to "inlined" g_aBreakpointSource[] .7 Extended: Calc to show binary values, and char is single-quoted Nightly Build .6 Bugfix: DrawTargets() should draw target byte for IO address: R PC FB33 .5 Extended: FONT "FontName" [Height] .4 Extended: Go StopAddress [SkipAddress,Len] .3 Added BPR F break on flag Added ! new breakpoint operator: NOT_EQUAL Patch 12 .2 Fixed: FindCommand() and FindParam() now returns 0 if name length is 0. .1 Fixed: CmdHelpSpecific() wasn't printing help for 1 argument set by other commands 2.4.0.0 added: uber breakpoints: BPR [A|X|Y|PC|SP] [<,<=,=,>,>=] address .2 fixed: parsing console input to detect immediate values on operators '+', '-' You can now do register arithmetic: CALC A+X+Y .1 added: mini-calculator 'CALC' 2.3.2 Rewrote parsing of console input You can now do stuff like: BPA INITAN+3 FONT "Lucida Console" Patch 11 .19 fixed disasm: new color for disasm target address (orange) U FF14 shouldn't colorize ',X' U FF16 shouldn't colorize ',Y' U FF21 shouldn't colorze 'symbol,Y' Addr should be purple or orange to verify is fixed .18 fixed disasm: all indirects to do symbol lookup, and colorized '('...')' as operators .17 added disasm: syntax coloring to immediate mode prefix '#$' .16 fixed disasm window to work with proportional fonts .15 fixed buffer-overun crash in TextConvertTabsToSpaces() Patch 10 .14 fixed help CATEGORY & SPECIFIC not working properly .13 fixed bug of CODE not removing CODE window split .12 fixed split window bug of re-sizing console too large .11 removed hard-coded height of 16 for line height in various Draw*() .10 added alpha feature: SOURCE2 now shows source assembly listing in bottom half of window DrawSourceLine() .9 added P [#] to step number of times specified .8 added Up-Arrow, Down-Arrow to scroll console by one line in full screen console window .7 Added source level debugger to buffer complete assembly source listing file .6 Added help for MA#, ML#, MH# .5 added 3rd symbol table: SRC .4 Added: seperated console input color, console output color .3 SYM now prints which symbol table the symbol was found in. .2 Added "DFB" to add assembler variable to user symbol table .1 Fixed FindAddressFromSymbol() and FindSymbolFromAddress() to search user symbol table first 2.3.1 Renamed all globals to conform to coding standard .10 added TAB to move the cursor back to the PC, if there is no console input .9 fixed bug of setting reg, always moving the cursor back the PC .8 added detection if font is proportional. Still doesn't draw properly, but slowly getting there. .7 added colorized chars for regs, and memory ascii dump .6 fixed console buffering BUG: ~,~,VERSION * .5 added ~ to toggle full console on/off .4 Fixed BUG: 'G' DebugContinueStepping() disasm window cursor getting out of sync: R PC FA62; U FB40; G FB53 .3 Fixed spelling of CmdWindowLast() .2 Added undocumented "VERSION *" to show the number of bytes in the disasm "window" .1 Fixed BUG: CmdTrace() disasm window cursor getting out of sync: Start, F7, PageUp, Space 2.3.0.0 Syntax coloring for the disassembler! Plus a fancy branch indicator to 'PR#6'! Rock on! 38 Fixed FindParam() bug of skipping every other parameter 37 Fixed _PARAM_*_BEGIN _PARAM_*_END _PARAM_*_NUM 36 Added Regs A,X,Y to show character 35 Added syntax coloring for DrawBreakpoints() 34 Fixed DrawMemory() viewing memory ASCII to map control-chars to a printable glyph 33 Fixed 0 addr not working in CmdMemoryCompare() 32 Added BG_INFO_INVERSE, FG_INFO_INVERSE for flag hilighting 31 Changed FG_INFO_OPCODE color to yellow 30 Fixed MDC 0, bug in CmdUnassemble()with garbage address, due to var not init, and symbol lookup failed 29 Fixed typos in help summary, A, and D 28 Fixed Scrolling with and without g_bDisasmCurBad 27 Found bug -- can't scroll up past $5FFF with Tom's Bug Sample .. CmdCursorLineUp() not checking for gbDisamBad; 26 Code cleanup: still have some '#define's to convert over to 'const' 25 Fixed disasm singularity not showing up in DrawDisassemblyLine() 24 Fixed an disasm singularity in DisasmCalcTopFromCurAddress() i.e. F7, G FB53, then Space (to trace) once. 23 Fixed bug Watches not being cleared: _ClearViaArgs() 22 Code Cleanup: Moved most ExtTextOut() to DebugDrawText() 21 Changed End to jump $8000, due to redundant funcationality of Home, and wrap-around. 20 Added: DisasmCalc*From*() 19 New colors Enum & Array 18 implemented RTS. fixed RET to use common stack return address logic. 17 fixed console PageUp PageDn not refreshing console .2 WINDOW_CONSOLE & Implemented commands: MemoryDumpAscii*(): MA1 MA2 ML1 ML2 MH1 MH2 16 removed BOOL Cmd*(), replaced with UPDATE_* 15 New Console Scrolling 14 extended FindParam() to specify [begin,end] 13 added split window infastructure, added Window_e 12 fixed PARAM aliases 11 fixed FindParam() to allow aliases 10 fixed SYM1 CLEAR, SYM2 CLEAR not actuall clearing 9 fixed BufferOuput() in DebugBegin() clobbering first buffered output line .1 since source level debugging is a minor feature 8 added command "VERSION *" to show internal debug info 7 fixed mem enter not refreshing screen 6 added source level debuggig back-end 5 fixed "SYM 0" bug */