530 lines
11 KiB
Groff
530 lines
11 KiB
Groff
|
|
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 <CR>
|
|
|
|
|
|
OR, YOU CAN MAKE IT RUN WHERE YOU LIKE, FOR INSTANCE:
|
|
|
|
BRUN BUGBYTER,A$1234 <CR>
|
|
|
|
TO PUT BUGBYTER IN THE LANGUAGE CARD,
|
|
|
|
CALL -151 <CR>
|
|
C081 C081 F800<F800.FFFFM C083 C083<CR>
|
|
BRUN BUGBYTER,A$D000 <CR>
|
|
|
|
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 <CR>
|
|
|
|
THIS CAUSES 2 CHANGES:
|
|
|
|
1. THE COMMAND LINE WILL DISPLAY "S=E0" AND THEN CLEAR
|
|
AFTER <CR> 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 <CR>
|
|
|
|
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 <CR>
|
|
|
|
1. USE <- AND -> TO INCREASE/DECREASE NUMBER OF BREAKPOINTS.
|
|
HIT <CR> WHEN DONE.
|
|
|
|
2. USE ARROWS TO MODE THE NEXT-INSTRUCTION-TO-BE-EXECUTED INVERSE BAR.
|
|
PRESS <CR> WHEN DONE.
|
|
|
|
3. USE ARROWS TO ADJUST THE LINES AVAILABLE FOR THE STACK.
|
|
|
|
4. USE THE ARROWS TO POSITION THE STACK POINTER. <CR> EXITS
|
|
|
|
SET COMMAND DOES NOT AFFECT MEMORY LOCATIONS.
|
|
|
|
|
|
COMMANDS
|
|
|
|
<CR> 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
|
|
|
|
<SPACE> IF <SPACE> IS FIRST COMMAND ON A LINE, BUG
|
|
BYTER WILL NEXT (??) AVAILABLE MEMORY ADDRESS.
|
|
|
|
COMMAND: ASM
|
|
------------
|
|
|
|
TYPE: ASM <CR>
|
|
|
|
BUG BYTER WILL CLEAR DISASSEMBLY LINE AND OUT YOU IN ASM MODE.
|
|
|
|
TYPE: 300:LDA C000 <CR>
|
|
<SPACE> BPL <CR>
|
|
|
|
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 <CR>
|
|
|
|
|
|
COMMAMD: SCREEN DISPLAY
|
|
-----------------------
|
|
|
|
OFF: TURN OFF DISPLAY #1-#5
|
|
|
|
ON: TURNS ON WHEN OFF TURNED OFF
|
|
|
|
|
|
BASE CONVERSION
|
|
---------------
|
|
|
|
HEX->DEC $C3= <CR>
|
|
OR
|
|
78D= <CR>
|
|
|
|
DEC->HEX +43= <CR>
|
|
OR
|
|
-15119= <CR>
|
|
|
|
|
|
|
|
QUITTING
|
|
--------
|
|
|
|
Q <CR> 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 <CR>
|
|
|
|
-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
|
|
|
|
<ESC> QUITS
|
|
|
|
|
|
MEMORY DISPLAY PAGE
|
|
-------------------
|
|
|
|
TO DISPLAY A SCREEN WORTH OF HEX/ASCII
|
|
TYPE: AA60: <CR>
|
|
|
|
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
|
|
|
|
<ESC> 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
|
|
---------------------------------------
|
|
<SPACE> STEP ONE OPCODE
|
|
<CR> CONTINUOUS TRACE
|
|
<ESC> 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 <CR>
|
|
|
|
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
|
|
-------------------
|
|
<CR> ENTER LINE
|
|
<SPACE> 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
|
|
<CR>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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|