BugByter Documentation BUGBYTER IS A RELOCATABLE 6502 DEBUGGER. IT INCLUDES: 1. USER DEFINALBLE DISPLAY 2. LITERAL/TRANSPARENT BREAKPOINTS 3. RESIDENT ASSEMBLER/DISASSEMBLER 4. COMPATABILITY WITH 3.3 DOS OPERATION BUGBYTER IS A 7.6K ($1A00 BYTE) BINARY FILE. TO EXECUTE IT, TYPE BRUN BUGBYTER OR, YOU CAN MAKE IT RUN WHERE YOU LIKE, FOR INSTANCE: BRUN BUGBYTER,A$1234 TO PUT BUGBYTER IN THE LANGUAGE CARD, CALL -151 C081 C081 F800 BRUN BUGBYTER,A$D000 DEFAULT RUN IS AT $7C00. BUGBYTER IS SELF-MODIFYING. THEREFORE, ONCE YOU RUN IT A PARTICULAR SPOT, YOU CAN NOT SAVE THAT VERSION AND RERUN IT AT A DIFFERENT SPOT. MASTER DISPLAY THE BUGBYTER MASTER DISPLAY IS DIVIDED INTO 6 DIVISIONS: ----------------- ! ! ! 1 ! ! ! --------!-------! ! ! ! ! 2 ! 3 ! ! ! ! !-------!-------! ! 4 ! 5 ! !-------!-------! ! ! ! 6 ! ! ! ----------------- 1. REGISTERS: 6502 AND BUG BYTER 2. 6502 STACK WITH STACK POINTER HIGHLIGHTED 3. CODE DISASSEMBLY AND TRACE/SINGLE STEP OPTIONS 4. USER SELECTED MEMORY CELLS 5. USER SELECTED BREAK POINTS 6. BUG BUYER COMMAND LINE ---TYPICAL SCREEN--- C R B PC A X Y S P NV-BDIZC 0014 00 0 030D FF 20 01 FF 30 00110000 1F9:C6 1FA:42 1FB:17 1FC:FB 0300: LDX #$20 E: (2) =1FD:FD= 0302: STX $01 E: (3) 1FE:FB 0304: LDY #$00 E: (2) 1FF:FD 0306: STY $00 E: (3) 100:B3 0308: LDA #$FF E: (2) 101:FB 030A: STA($00),Y E:2000 (6) 102:17 030C: INY E: (2) 103:26 =030D: BNE $030 = 104:17 030F: INC $01 105:6B 0311: DEX 0000:2000 BP POINT COUNT TRIG BROKE 2000:FF 1 030F 0000 0001 0000 0000:00 @ 2 0000 0000 0000 0000 0000:00 @ 3 0000 0000 0000 0000 0000:00 @ 4 0000 0000 0000 0000 NOTE: =...= MEANS HIGHLIGHTING DISPLAY #1 IN THE EXAMPLE ABOVE, BUG BYTER IS DISPLAYING THE 6 6502 REGISTERS AT THE TOP OF THE SCREEN. EXAMPLE ------- PC PROGRAM COUNTER 030D A A-REGISTER FF X X-REGISTER 20 Y Y-REGISTER 01 S STACK POINTER FF P PROCESSOR STATUS 30 IN THE UPPER RIGHT OF THE SCREEN, THE PROCESSOR STATUS (P) IS DIVIDED INFO INDIVIDUAL BITS: NV-BDIZC EXAMPLE ------- N NEGATIVE BIT 0 V OVERFLOW BIT 0 - UNUSED 1 B BREAK BIT 1 D DECIMAL BIT 0 I INTERRUPT BIT 0 Z ZERO BIT 0 C CARRY BIT 0 DISPLAY #2 ---------- THE HIGHLIGHTED ROW (=..= IN THE EXAMPLE HERE) IS THE CURRENT ONE. NOTICE THE FF IN THE STACK REGISTER IN DISPLAY #1. SETTING THE STACK POINTS: S=E0 THIS CAUSES 2 CHANGES: 1. THE COMMAND LINE WILL DISPLAY "S=E0" AND THEN CLEAR AFTER IS PRESSED. 2. THE STACK POINTER IN DISPLAY #1 WOULD CHANGE TO E0. (UNDER "S") 3. THE STACK WINDOW WILL SHOW NEW POSITION. THE STACK POINTER IN DISPLAY 1 WOULD SHOW E0, WHILE THE WINDOW WOULD SHOW $1E0. THE 6502 STACK IS IN PAGE 1 THEREFORE, SETTING STACK TO $1E0 IS THE SAME AS $E0. DISPLAY #3 TO THE RIGHT OF THE STACK WINDOW, BUG BYTER DISPLAYS THE PROGRAM CODE IN THIS FORM: ADDRESS:OPCODE OPERAND OPTION TYPE: FCA8L THE DISPLAY #3 WILL NOW SHOW A LIST FROM FCA8 UP. EXAMPLE: FCAC: BNE $FCAAA D0 FC FCAC: HEX ADDRESS BNE: 6502 OPCODE $FCAA: OPERAND D0 FC: ACTUAL BYTES IN MEMORY DISPLAY #4 CONTIANS USER-SELECTED BYES OR BYTE PAIRS DISPLAYS #5 AND #6 #5: USER DEFINED BREAKPOINTS #6: BUG BYTER COMMAND LINE SET DISPLAYS #1 AND #6 ARE FIXED. THE "SET" COMMAND ALLOW YOU TO ALTER THE SPACE ALLOCATED TO THE OTHER DISPLAYS. TYPE: SET 1. USE <- AND -> TO INCREASE/DECREASE NUMBER OF BREAKPOINTS. HIT WHEN DONE. 2. USE ARROWS TO MODE THE NEXT-INSTRUCTION-TO-BE-EXECUTED INVERSE BAR. PRESS WHEN DONE. 3. USE ARROWS TO ADJUST THE LINES AVAILABLE FOR THE STACK. 4. USE THE ARROWS TO POSITION THE STACK POINTER. EXITS SET COMMAND DOES NOT AFFECT MEMORY LOCATIONS. COMMANDS ACCEPT USER INPUT <- MOVE CURSOR LEFT -> MOVE CURSOR RIGHT ^X DELETE COMMAND LINE ^B CURSOR TO BEGINNING OF LINE ^N CURSOR TO END OF LINE ^D DELETE ONE CHARACTER ^I INSERT MODE ^C ACCEPT NEXT KEY VERBATIM IF IS FIRST COMMAND ON A LINE, BUG BYTER WILL NEXT (??) AVAILABLE MEMORY ADDRESS. COMMAND: ASM ------------ TYPE: ASM BUG BYTER WILL CLEAR DISASSEMBLY LINE AND OUT YOU IN ASM MODE. TYPE: 300:LDA C000 BPL COMMAND: L (DISASSEMBLY) ------------------------ L WILL JUST LIST FROM A LOCATION UP. TYPE: FAC8L COMMAND: M (MONITOR) -------------------- ENTERS APPLE MONITOR ^Y RETURN TO BUG BYTER COMMAND: DOS ------------ ENTER A PERIOD FIRST. TYPE: .CATALOG ^ DOS ERROR->BASIC (CALL 1016 RETURNS TO BUG BYTER) COMMAND: REGISTER REFERENCE --------------------------- TO ASSIGN A REGISTER, JUST TYPE: A=8D COMMAMD: SCREEN DISPLAY ----------------------- OFF: TURN OFF DISPLAY #1-#5 ON: TURNS ON WHEN OFF TURNED OFF BASE CONVERSION --------------- HEX->DEC $C3= OR 78D= DEC->HEX +43= OR -15119= QUITTING -------- Q WILL QUIT TO BASIC+DOS MEMORY REFERENCE ---------------- 1. USE MEM DISPLAY TO DISPLAY 184 BYTES 2. USE MEM COMMAND TO EDIT DISPLAY #4 MEM COMMAND ----------- TYPE: MEM -ARROWS MOVE TO NEXT/PREVIOUS ADDRESS -USE "H" TO DISPLAY CONTENTS OF ADDRESS AND ADDRESS+1 IN HEX/ASCII -USE "P" TO DISPLAY CONTENTS OF ADDRESS AND ADDRESS+1 AS A POINTER QUITS MEMORY DISPLAY PAGE ------------------- TO DISPLAY A SCREEN WORTH OF HEX/ASCII TYPE: AA60: THIS CAUSES BUG BYTER TO SWITCH TO A MEMORY DISPLAY WITH $AA60 AS ADDRESS IN UPPER LEFT CORNER. APPLE ASCII: 00-3F INVERSE 40-7F FLASHING 80-FF NORMAL QUITS TRACE/SINGLE STEP MODE ---------------------- DURING THE SINGLE STEP/TRACE MODE, ONE MAY SELECT ONE OF THE FOLLOWING TO BE DISPLAYED ON THE RIGHT HAND SIDE OF THE SCREEN: COMMAND DISPLAY --------------------------------- O=A 6502 ACCUM O=X 6502 X-REG O=Y 6502 Y-REG O=S STACK-PNTR O=P PROCESSOR STAT O=B INSTRUCTION BYTES O=E EFFECTIVE ADRS, BRANCH- ES, CYCLES O=E IS THE MOST POWERFUL OF THE ABOVE COMMANDS. USING THE FOUR METHODS OF ADDRESSING, INDEXED, INDIRECT, INDEXED INDIRECT, AND INDIRECT INDEXED, THE DISPLAY WILL SHOW THE BYTES ACTUALLY REFERENCED. HERE ARE SOME ADDITIONAL COMMANDS USABLE IN THIS MODE: COMMAND RESULT --------------------------------------- STEP ONE OPCODE CONTINUOUS TRACE RETURN TO NORMAL BB R TRACE UNTIL RTS -> SKIP NEXT INSTRUCTION C CLEAR CYCLE COUNTER P USE PADDLE (0) TO ADJUST THE TRACE RATE K USE KEYBOARD TO ADJUST Q SOUND OFF S SOUND ON 1 DISPLAY PAGE 1 2 DISPLAY PAGE 2 T DISPLAY TEXT L DISPLAY LO-RES H DISPLAY HI-RES F FULL SCREEN GRAPHICS M MIXED GRAPHICS RATE ADJUSTMENT: 1. USE "R=#" FOR RATE 2. PRESS "P" OR "K" TO ADJUST MODE 3. TO SPEED UP TRACING, TYPE "OFF" TO TURN OFF MASTER DISPLAY BREAKPOINTS ----------- POINT- USER DEFINED BREAK POINT COUNT- # OF TIMES POINT HAS BEEN FOUND TRIG- USER DEFINED COUNT BEFORE BREAKING BROKE- # OF TIMES "TRIGGED" TO ENTER BREAKPOINT: TYPE "BP" FOLLOWED BY BREAKPOINT ROW ADDRESS BP1 BUG BYTER WILL MOCE CURSOR TO FIRST 0 IN POINT FIELD. ENTER A HEX NUMBER FOR ADDRESS OF BREAK POINT. USE THE ARROWS TO MOVE FROM FIELD TO FIELD. IF TRIG=0, THE BREAKPOINT IS IGNORED. WHEN COUNT=TRIG, BUG BYTER WILL STOP. TYPING "T" OR "S" WILL RETURN TO TRACE. TYPING "CLR" WILL CLEAR BREAKPOINT. TRANSPARENT BREAKPOINTS ----------------------- THE USUAL BUG BYTER METHOD OF BREAKPOINTING IS TRANSPARENT, INTERPRATIVE. TYPING "OUT" WILL FORCE BUG BYTER TO THE TRANSPARENT MODE. THIS WILL MEAN THAT 6502 BREAKS (00) WILL HAVE NO EFFECT. REAL BREAKPOINTS ---------------- TYPE "IN" TO GET TO REAL BREAKPOINTS. YOU CAN NOT EDIT BREAKPOINTS IN THIS MODE. SOFT SWITCHES ------------- LOC ABSOLUTE LOC FUNCTION ----------------------------- (S=START) S+3 7C03 EXECUTE UNDEFINED OPS S+4 7C04 USE PAD(0) FOR TRACE S+5 7C05 USE PAD(0) FOR RATE S+6 7C06 TRACE KEYBOARD POLLING S+7 7C07 SOUND S+8,9 7C08-9 CYCLE COUNTER COMMAND LINE EDITOR ------------------- ENTER LINE DISPLAY NEXT ADDRESS <- CURSOR LEFT -> CURSOR RIGHT ^B CURSOR TO BEGINNING OF LINE ^C ACCEPT NEXT KEY VERBATIM ^D DELETE CHARACTER ^I INSERT CHARACTER MODE ^N CURSOR TO END OF COMMAND LINE ^X DELETE COMMAND LINE COMMANDS (GENERAL) ------------------ ASM ASSEMBLE ADR L DISASSEMBLE STARTING AT "L" M ENTER MONITOR (^Y RETURNS) SET CUSTOMIZE MASTER DISPLAY: -> WINDOW DOWN <- WINDOW UP FIXES WINDOW ON MASTER DISPLAY ON OFF MASTER DISPLAY OFF +DEC= CONVERT POSITIVE DEC->HEX -DEC= CONVERT NEGATIVE DEC->HEX VALUE= HEX->DEC $VALUE= HEX->DEC V DISPLAY COPYRIGHT Q QUIT