******************************************************************************** * * * PEACEBUG, Releasenotes * * ---------------------- * * * * written by: Emanuel M”cklin * * Zschokkestrasse 7 * * CH-8037 Zrich * * FREDDY@ezrz1.vmsmail.ethz.ch * * * * written with: Turboassembler 1.xx * * * ******************************************************************************** 10.10.92, 1.00 -------------- - PEACEBUG V1.00 is released 26.10.92, 1.01 -------------- - The reset handling has changed totally. If the debugger is active, a reset is always catched. If it's not active, it depends on the flags whether it catches the reset or not (use PBUGCONF to set the flags). - The command Reset is replaced by two new commands: Cold and Warm, which cause a cold- or warmboot. - A bug in the disassembler was fixed. Opcodes without operands always produced an eight byte String (filled with spaces). If you searched for these opcodes with "ascfind", you always had to add *, otherwise the opcode was not found. - Some people did not like the Debugger to show an alertbox when it was started from the desktop. From now on, it always prints its message to the console. - An unknown command caused the debugger to print "Befehl nicht gefunden". From now on, only a new prompt will be printed. - Help shows you now the significant chars of a command in big letters, the rest of it in small letters. Significant means, the minimum of chars you have to type (e.g. WRitesector --> WR are significant). - XBRA is a good idea, but even with XBRA you can't hang out a routine from the resvector, because of resvalid, which is perhaps not magic (especially for the first program hanging in this vector). My solution is quite easy: the reset routine checks if there's still another program hanging in the vector or if it's the last one. In the first case it writes $31415926 to resvalid (the magic), otherwise it clears resvalid. This guarantees that TOS jumps to all routines hanging in this vector till the last one stops this procedure (by clearing resvalid). - If you had Uwe Seimet's HDDRIVER installed and is was hanging in the resvec- tor, PEACEBUG crashed if it tried to terminate after a reset. This was my fault! - Thanks to Diskus, which executes a move sr,-(sp) in usermode, I found a bug in my "privileg violation" exception handler. This is fixed now. I hope, further versions of Diskus will not do the move in usermode any more. - As there is a bug in a well known hardware accelerator, I had to remove all tas opcodes in all programs released together with PEACEBUG. - Nasty bug fixed. It prevented the Debugger from recognizing the CPU automati- cally when no _CPU Cookie was found. 07.01.93, 1.02 -------------- - Bugs in the editor, which appeared only on high resolutions, are fixed - When leaving the debugger, a cache entry was not always created, e.g. with DoPC. This is fixed now. - The command XBRA gives you a warning if the VBR (68010-68040/60) is not zero. Nevertheless it gives you the xbra list without adding VBRA. - PEACEBUG sometimes "creates" exception of its own. Now it also adds the VBR when doing this. - The keyboardhandler is now prepared for Remote Debugging. This can be tested with the programs in \PEACEBUG\REMOTE\. 14.01.93, 1.03 -------------- - Fetching internal bus- and addressexceptions has changed totally. Even if you unchain the two exceptionroutines of PEACEBUG, it fetches them. - The routine "Vektor" was called when entering PEACEBUG up to now. From now on, it's also called if u press Return/Enter or F1-F10. This allows still a better working with two debuggers at the same time. If a program patches vectors in an interrupt, PEACEBUG works also better because of that. - Because of this change the value -3 (see readme) of the upper byte which was used by the routine "Vektor", does not exist any more. - The command Xbra now automatically takes the next correct adress, that means it recognizes if it has to increment the adress by 1, 2, 3 or 4. X 5,9 gives you the XBRA list of 5 and 8 (5, 6 and 8 before). - Big parts of WINDOW have been rewritten. It switches now also to the window if the window is not topped but the workspace is not covered by another window. It works now fine under Multitos. The Full Button of the window works now cor- rectly, resizing the window is possible now. 21.01.93, 1.04 -------------- - PBUGCONF is totally rewritten, any dialog appears now in a window and is non modal - Bug in PEACEBUG removed, which occured when you tried to trace a trap with F1 01.03.93, 1.05 -------------- - A bug, which prevented the debugger from loading the symbol table if it was started from the desktop, is removed. - Loading a symbol tables has become faster. - PEACEBUG tells you now, if it was able to load a symbol table when it's star- ted. - PEACEBUG supported up to now two different formats for the symbol table (PEA- CEBUG.SYM). From now on, only a third format (ASCII) is supported, please look up the readme for PEACEBUG. - PBUGCONF evaluates now also WM_TOP and WM_UNTOPPED. Before it could happen, that the cursor wasn't visible even if the window was the top one. - PEACEBUG sometimes called MALLOC/MXALLOC with negative values. This is defini- tely not allowed and fixed. - Find [begin][,end] now searches only till end-1 as it was documented. The same for Compare. - The memory protection modes are shown now correctly when loading a file. Addi- tionally it also shows when the program has shared memory. - The messages of PEACEBUG are in English now. - PBUGCONF supports now the FSEL cookie --> fsel_exinput is called instead of fsel_input. - In the reset routine the debugger checks now whether it is damaged or not. In the first case it selfterminates. - When PEACEBUG was called by CALLBPUG, no cacheentry was set. Because of that, the register values could get lost and it was not possible to leave the debug- ger. 07.04.93, 1.10 -------------- Why this increase from 1.05 to 1.10? - That's why: 1. PEACEBUG was written as a background debugger. As it supports symbols and is able to load executables, I decided to let it run as "normal" program if it's started from desktop. That means, you can start and terminate it like other programs. If it is started from the auto folder, it's still a TSR, but if it is started from the desktop, it pops up immediately and can be terminated with QUIT. If you want to install it as a TSR from the desktop, you have to press Cont- rol after you started it. Differences between the two versions: - Program version: no cookie and double page are installed, it can be termi- nated, two additional commands: Resident and Lexecute. - Resident version: installs a cookie and a double page, can't be terminated, The commands Resident and Lexecute are not available. The command Resident allows you to terminate and keep the debugger resident. 2. The disassembler recognizes now all FPU opcodes (MC6888x/MC68040). The assembler still does not recognize them apart from fnop, frestore and fsave. 3. Finally I decided to document the so-called cheatmode, which has been imple- mented for a long time already. This mode is differerent to the "normal" mode in the following points: - There is the command MOve Address: it moves the code of the debugger to an- other address... very dangerous. - Internally the debugger runs with interrupt level 7. The consequence is, that no interrupt can occur, even no keyboard interrupt. Nevertheless the keyboard works naturally, but without keydelay and keyrepeat. Also not all chars can be reached, because the debugger cannot find out the asciicode of the pressed key (normally it gets the asciicode from the OS). - A reset is always catched, even if it's configured not to catch it. - The routine VEKTOR installs always any routine if the flag isn't set to zero (untrap routine). The routines are also untrapped and reinstalled, if they are not in the first position. How to toggle between "normal" and cheat mode? By pressing Control+Alternate+Shiftleft+Shiftright+Escape! And some smaller changes: - There are opcodes which are actually allowed but not very useful: e.g. branches to odd addresses (jmp/jsr/bsr/bcc/dbcc/fbcc/fdbcc). PEACEBUG tells you this by writting ??? to the end of the string. - And there are opcodes which are not allowed (Motorola says so), but work nevertheless: e.g. FABS.X FPm,FPn with effective address field unequal zero (also any other monadic operations of that form). PEACEBUG tells you this by writting ? to the end of the string. - PBUGCONF calls FORM_BUTTON now only if the window found by WIND_FIND is the top one (sorry no dialogs in inactive windows.). Some small "bugs" fixed. - Showmemory [Term[,List]]: Term can have any length from now on (40 chars was the maximum in previous versions). - Ascii, Disassemble, Dump and List have a new parameter: Command [Von][[,Bis]|[[,]#Zeilen]|[,][Bytes]|[.]] ^^^^ . means, that it lists from the startaddress endlessly. - ? Term{,Term} prints now the value of Term also as a string. ? $50425547 outputs: $50425547 .1346524487 %01010000010000100101010101000111 o12020452507 "PBUG" - Sometimes the formula interpreter didn't handle strings correctly. - If the output of a command didn't go to the screen, it was always shortened to 80 chars. From now on, the string is going to any device unshortened (apart from the screen device). - If a string is going to the screen and is too long, then the debugger marks this line with an  at the end. - Tnosubs (F12) did work only with jsr but not with bsr. This was a bug of the disassembler. - Xbra has a new parameter: Xbra FirstVector[,LastVector[,ID]] ^^^^^^ If Xbra is called with an ID, it prints only the XBRA lists, that contain this ID. The routine with this ID is marked with . This allows you easily to test whether a program installs into some vectors or not. - Every function of PEACEBUG can now be interrupted by pressing escape any time you want. - PEACEBUG uses now SETEXC to install into vectors when it's started. The rou- tine VEKTOR still changes XBRA links if necessary. - New function in PEACEBUG: control Q. It corresponds to the command Quit. - New functions in PBUGCONF: control Q. It corresponds to the close buttons of a window. UNDO selects the "Abbruch" Button. - It's now possible to call PEACEBUG only by pressing shift keys. 24.05.93, 1.11 -------------- - "Ascii/Disassemble/List/Dump (" caused an address error. - PEACEBUG checks now the command line when it's started and tries to lexecute the file. - XBRA without any parameter gives you now a complete list of all XBRA-ID's and where they where found. The correct syntax of this command is now: Xbra [FirstVector[,LastVector[,ID]]] ^ ^ Besides, the routine has become faster. - Find/Hunt and Compare mark now every address with * if it's inside PEACEBUG'S code or inside other address spaces allocated by the debugger. - If an internal bus-/addresserror occured and the isp was zero, the debugger crashed. This is fixed now. Zero stores will not be corrected automatically, as I don't want to forbid anyone to do such things, especially as the debugger can recover by a reset. - PEACEBUG is now able to switch the screen also on F030. Neverthless there are some restriction on these machines: the command Switch does not work and it's probably? not reset proof. - PEACEBUG supports now the resident symbol driver of Robert Federle. It doesn't matter in which order they are started. The debugger uses it's own symbols to- gether with the ones of the driver. As the driver does not search the symbols exactly like PEACEBUG does, the output can be different (PEACEBUG shows less symbols). Also there are problems with the parser: e.g. you type "l .flock+1", which would work with the debugger's search routine, but not with the driver's one, because this one searches for .flock+1, a symbol that doesn't exist. Another problem is the command Symbol, which can print all symbols within cer- tain borders, which is impossible with the symbol driver (there is no such function). But it does naturally print the debugger's symbols. 26.05.93, 1.12 -------------- - The debugger could crash when it installed its routines with SETEXC, because it did not set the interrupt mask to 7 --> an interrupt could occur before the routines were properly linked. This happended e.g. if sysmon was active, as sysmon does delay OS calls. - The debugger sometimes called MFREE with Blockadress 0. As this seems to be a problem for the resident symbol driver (it did not find the symbols any more), I will not do this any more. - With F17 you could tell the debugger to use or not to use symbols. Now you can also tell it to use its own symbol table but not the one of the resident sym- bol driver. As a consequence the variable SYMBOL_FLAG can have a third value. Symbol-, SYMBOL_FLAG=0: no symbols are used Symbol+, SYMBOL_FLAG=-1: all symbols are used Symbol*, SYMBOL_FLAG=1: only the debugger's symbols are used. - If PEACEBUG catched a reset, that occured not within the debugger, it happened that it lost the program's screen registers. This is fixed. - There is the new command Programs, which gives you a list of all started prog- rams and some additional stuff. It is only available if the resident symbol driver is installed. - The key help has now the same effect as the command Help without parameters. To toggle between the two screens (as help did before), you have to use Shift. - If the debugger catches an ETV_CRITIC (not inside the debugger), it probably shows the PC correctly now. Probably? Probably, because it's not documented where the PC is on the stack. - WINDOW shows now the height and width of the work area in its title bar. Also a bug is removed which occured if the screenbase address of the debugger had changed. And it considers now, which fonts is used by the debugger, to calcu- late the minimum size of the window. - PBUGCONF: quite a lot changes has been made and many bugs have been removed. Most of the dialogs have now the button "Setzen", which works like "OK", but does not close the dialog. It's now possible to change SYMBOL_FLAG (dialog "Diverses"). It handles now the semaphore SCREEN_LOCK correctly. Errors while loading a font cause it now to dismiss the font. It wasn't possible any more NOT to double click a button, this is fixed. 07.10.93, 1.13 -------------- - PEACEBUG turns now the caches and burstmode on, if a reset occurs within the the debugger and if a MC68030 is inside. - I had to add an $ to each number in PEACEBUG.SYM, because the debugger can have another default base for numbers than 16. Up to now you could choose this base from 2 to 16. From now on it's 2 to 36 (because 0-9,A-Z are 36 chars). - Cheatmode could be toggled also when the debugger was not active. - The slowmotion function is much better now. The delay is now quite constant for most of the activities. Just try it... - Opcodes with Condition Code lo (=cs) could not be translated. - PBUGCONF is now able to configure 10 debuggers at the same time. Up to now you could switch between config- and patchmode in the main menue. Now you switch from patchmode to PEACEBUG 0 till PEACEBUG 9 and back to patchmode. The order of the debuggers found, is the same order, they are installed in the cookie jar. - PBUGCONF calls now any debugger routine in supervisor mode. - PBUGCONF didn't handle objects f_text correctly if they contained 0. - PBUGCONF tested the coordinates of a window if they fit into the desktop, but it forgot to adapt the coordinates of the dialog then. - Slave is now a TSR. 25.01.94, 1.19 -------------- - Now there are English versions of WINDOW and PBUGCONF, including English manuals. V1.22 will also include an English manual for PEACEBUG. - If the Resident Symbol Driver is installed, PEACEBUG adds the name of the program to the listing if the line address is inside the program (BASEPAGE included): $01057536>! [GEMRAM] RTS ; 4E75 As you can see the name is printed without extension. If there is a label, then the label is printed instead of the name. This is only suppressed if SYMBOL_FLAG is zero (see readme PEACEBUG, chapter "Interface, Parameter"). - The symbol handling has changed totally. PEACEBUG searches now in all symbol tables (PEACEBUG.SYM, program symbol tabel, RSD). Opcodes: it searches now symbols only for all branches (bra, jmp, dbcc, fbcc...) and absolute short and absolute long addressing modes. One of the effects is that you don't need SYMBOL.SMB (RSD) any more. - Within the debugger fetching a reset can now be turned off. You can choose between fetching always, once a second and never. Once a second means, that if you reset twice within a second then the computer is reseted otherwise not. PBUGCONF is already adapted to this feature, you can configure this in the dialog "Flags", vector "Reset". - Info did print some wrong stuff (program length, text length debugger). - Up to now the assembler did not translate lines inside the debugger if there was a * before the opcode. Now it accepts this. - Since V1.10 PEACEBUG could be called by pressing only shift keys. This was also supported by PBUGCONF up to the moment I deleted 4 lines source code, because I did not see any sense in them... - The whole output of the command Help is in English now. - When PEACEBUG is called, it resets now the keyboard acia. - The possibility to move the cursor freely on the screen is removed now. F18 is now the key to toggle between insert- and overwritemode. F19 and F20 have the same function --> Go PC. The flag "cursor_bound" of the cookie interface has no effect any more. - As F20 is free now (but has nevertheless the same function as before), I implemented a clock. Depending on the computer it runs on, it shows the time taken directly from the keyboard processor or from the real time clock (Mega ST and TT). - The PC at the beginning of a line is now highlighted. - On some TOS versions Alternate+Num did not work to enter the asciicode of a char. - I implemented a new command: Observe [[Address][,Bytes]|-|+]. It gives you the possibillity to observe memory. If the content of the observed memory has changed PEACEBUG will pop up and tell you this. It uses the 200HZ timer to check the memory. - PEACEBUG does not check the _CPU and _FPU Cookie any more but uses always its own test routine. - The routine to test the FPU did only recognize a SFP004 FPU, this is fixed. - FNOP wasn't translated correctly by the disassembler as well as by the assembler. - PTEST is again translated correctly by the disassembler and the assembler. - If PEACEBUG catches a reset and if the program segment is damaged then it does not selfterminate any more, but just declares that it is damaged. - If you trace with F11-Tnosubs, then the debugger will not set a breakpoint after a jsr/bsr any more to skip the subroutine. Also if you trace with F2-Do PC and the opcode is a jsr/bsr it won't set a breakpoint any more. - Double clicking with the left mouse button on an address lists from this address. - Up to now the division, the multiplication and the modulo functions were unsigned. E.g. .10/-2 did not even give the correct result but zero. From now on this is -5. The modulo function works exactly like the one of the CPU: "The sign of the remainder is the same as the sign of the dividend." [Motorola: M68000 FAMILY PROGRAMMER'S REFERENCE MANUAL]. - The command ? shortens now the printed numbers, e.g. instead of $0000FFFF it prints $FFFF. If the number is negative then it prints additionally the negative value, e.g. ? -1: $FFFFFFFF .4294967295 %11111111111111111111111111111111 o37777777777 "...." -$1 -.1 - If a file is loaded then it is listed from the first address but the PC is not set to this address. - PBUGCONF: the main menu has now shortcuts. - PBUGCONF: control u closes now the top window. - PBUGCONF: control q closes now all windows and quits the program. Before it closed only the top window. - WINDOW: cannot be moved out of the screen any more with Winx 2.1. 25.05.94, 1.21 -------------- - PEACEBUG is now supported by SYSMON: - They share the screen in TT-High, that means, they need 153600 Bytes less memory. - The debug modes I (IN) and O (OUT) are supported by the two programs (see the manual of SYSMON). - PEACEBUG can be called by shift-left help directly from SYSMON. Note: You need SYSMON Version 1.0.9, 24.04.1994 and it has to be started after PEACEBUG. There seem to be still some problems, if PEACEBUG, TEMPLMON and SYSMON are installed all together and you try to call PEACEBUG by shift-left help. In this case, TEMPLMON seems do some strange things. I hope in newer versions this will be fixed. - The command Xbra has again a new syntax: Xbra [FirstVector][,Lastvector][,ID] For further information please consult the PEACEBUG manual. - PEACEBUG is now adapted to the Falcon video hardware apart from the 4 colour falcon mode. Thanks a lot to SPIFF. - The default configuration considering the vectors has changes. Some vectors are not installed any more (this can be changed naturally). - F4-GoTraps: This function has now been implemented totally different. The consequence is, that it works now also under any multitasking OS. - CALL_DEBUGGER is now called CALL_DEBUGGER_1, because there is a new routine CALL_DEBUGGER_2. The first one does set all 2 or 3 stackpointers to own memory areas, the second one does not touch any of the registers. More details are to be found in the PEACEBUG manual, chapter "Interface". - There is a new parameter _PLANES (screen interface). It's already supported by PBUGCONF. For further information consult the PEACEBUG manual, chapter "Interface". - PBUGCONF: Control w and Control u have changed their functionality (according to the Atari guidelines). The closer of the window does not discard the changes any more but accepts them. - When loading or lexecuting a file, not the whole screen is overwritten any more but only 16 lines. - There is now a special PEACEBUG version for coders. This version runs now by default in the so-called cheat mode. This mode has been documented since V1.10. Further details can be found in this file some lines above. You can naturally turn of cheat mode as the versions are actually identical apart from the default for he cheat flag.