**** BUG VERSION 2.0 **** 1. MODULES REQUIRED: - BUG.MAC - MACROS.MAC - BUG.CMD - BUG.TKB 2. TO BUILD BUG: MCR>@BUG 3. BUG REQUIRES A VT52, VT100, OR SIMILAR TERMINAL FOR THE FULL SCREEN ADDRESSING. 4. PLEASE ADDRESS ALL BUGS AND/OR FIXES/ENHANCEMENTS TO: DANIEL T. SEDLACEK INFORMATICS GENERAL CORP. 1508 KENNEDY DRIVE, SUITE 8 BELLEVUE, NE 68005 5. USAGE: MCR>BUG BUG>TSKNAM 6. NOTES: - SYMBOL TABLES ARE SUPPORTED. HINT -- USE .GLOBL FOR SYMBOLS YOU WANT TO SEE, OR EDIT IN THE APPROPRIATE "::" TO MAKE THE SYMBOLS SHOW UP IN THE SYMBOL TABLE. - IF A SYMBOL TABLE IS USED, BUG WILL ASK FOR ADDITIONAL SYMBOL TABLES. CARRIAGE RETURN OR ENTER THE NAME OF ANOTHER SYMBOL TABLE. - DISASSEMBLY MODE IS ENTERED FIRST. AN ESCAPE CHARACTER WILL TOGGLE BETWEEN DISASSEMBLY MODE AND DUMP MODE. - BASICALLY, ALL COMMANDS CAN BE ENTERED ON EITHER SCREEN. THE COMMANDS ARE PRESENTED ON A HELP SCREEN (THAT IS ENTERED FROM THE DISASSEMBLY SCREEN ON ANY INVALID COMMAND). EXAMPLES ARE GIVEN INSTEAD OF A LENGTHY TEXTUAL DESCRIPTION (ANYONE WANT TO VOLUNTEER TO MAKE UP A USER'S MANUAL?). THE "RX" REGISTER IS THE OFFSET REGISTER, AND CAN BE SET LIKE ANY OTHER "REAL" REGISTERS. COMMANDS ARE ENTERED AS: XX=YYYYYY,ZZ..ZZ (EXAMPLE: R0=12345) WHERE XX IS THE COMMAND YYYYYY IS AN OCTAL VALUE OR ADDRESS ZZ..ZZ IS A VALUE FIELD (NOT ALWAYS USED) - READ THE HELP SCREEN IN DETAIL; ITS TERSE, BUT FAIRLY COMPLETE. - **** VERSION 1.3 USERS, PLEASE NOTE... **** YOU NO LONGER NEED THE "C" PRECEEDING A COMMAND IN DISASSEMBLY MODE; JUST ENTER THE COMMAND. BUG NOW GETS RID OF ITS "BUGTSK". NEW PROCEEDURE FOLLOWS FOR RUNNING A TASK FROM DIFFERENT TERMINAL. - IF YOU WANT TO DEBUG FROM A TERMINAL OTHER THAN THE TERMINAL THE TASK IS RUNNING FROM, DO THE FOLLOWING: O BEGIN THE DEBUG SESSION AS NORMAL O PIP BUGTSK.TSK/NV=BUGTSK.TSK (DO THIS FROM ANOTHER TERMINAL TO SAVE BUG'S WORKFILE. NORMALLY IT IS DESTROYED.) O "QUIT" THE DEBUG SESSION O INS BUGTSK/TASK=XXXXXX (XXXXXX IS THE NAME ENTERED DURING THE DEBUG SESSION.) O RUN XXXXXX (THE RUN MAY OPTIONALLY BE INITIATED BY ANOTHER TASK, VIA A "SEND DATA", ETC.) O BUG WILL THEN BE AUTOMATICALLY "FIRED UP" ON THE TERMINAL THAT YOU PERFORMED THE INITIAL DEBUG SESSION PROCESSING. O THE DEBUG SESSION CAN NOW CONTINUE, WITH THE TASK RUNNING FROM ONE TERMINAL, AND BUG RUNNING ON ANOTHER TERMINAL. O YOU WILL GET AN "INS" ERROR REPORTED IN THIS MODE, AND BUG WILL BE UNABLE TO TELL WHEN THE TASK HAS EXITED. BUT OTHERWISE EVERYTHING WILL WORK AS NORMAL. O DELETE "BUGTSK.TSK" AFTER THE DEBUG SESSION. 7. BUG IS BUILT AS A MULTIUSER TASK. USERS HAVE TO BE PRIVILEGED ONLY BECAUSE IT INSTALLS THE TASK BEING "BUG"ED. BUG ITSELF IS A NON-PRIVILEGED TASK. 8. SOME INSIGHT -- WHAT ACTUALLY DOES BUG DO? IT MAKES A COPY OF THE SPECIFIED TASK FILE, AND "IMPLANTS" SOME INTERFACE CODE IN THE TASK'S STACK (SAFELY AWAY FROM LOWER AND UPPER LIMITS). FOR THIS REASON THE TASK HAS TO HAVE AT LEAST THE DEFAULT STACK SIZE. THE STARTING ADDRESS OF THE TASK IS SUITABLY CHANGED AS IF IT WERE BUILT WITH A DEBUGGER. THEN THE TASK BEING "BUG'ED "TALKS" TO ...BUG DURING THE DEBUGGING SESSION. REGISTER INFO, ETC. IS PASSED BETWEEN THE TWO TASKS DURING THE DEBUGGING SESSION. NOTE -- NO SPECIAL PREPARATION IS NECESSARY FOR THE TASK BEING DEBUGGED (YOU CAN "BUG" EDT IF YOU WANT). THE ORIGINAL TASK FILE IS LEFT UNTOUCHED. SEVERAL USERS CAN USE BUG AT THE SAME TIME, AND THE INTER-TASK COMMUNICATIONS IS SENT TO THE ...BUG WITH THE APPROPRIATE "TI" (BUG IS BUILT MULTIUSER).