*      OPT    l        *
*      OPT    cre      *
*      NAM    EXBUG    *
*      HJS    2026     *
       PAGE   60
       TITL    "*** MC6800 EXORCISER EXBUG MONITOR ***"
*******************************************************************************
*                                                                             *
*               *** EXBUG Program Control Commands ***                        *
*                                                                             *
* CMD                       DESCIPTION                                        *
* LOAD   Initiates memory loader function.                                    *
* VERF   Compares contents of memory with tape data. Where unequal, prints    *
*        location in hexadecimal.                                             *
* PNCH   Instructs EXORciser to punch an absolute formatted binary obj tape.  *
*        An 'X' will exit the punch routine.                                  *
* PRNT   Causes terminal to print the contents of memory in hexadecimal       *
*        followed by the literal ASCII characters.                            *
*        An 'X' will exit the print routine.                                  *
* SRCH   Searches tape for header record. Stops reader at first record        *
*        encountered and prints that record.                                  *
* MAID   Enter the Motorola Assembler Interpreter Debugger.                   *
* S10,   Inserts nulls for proper printing during terminal operation at 110,  *
* S30 &  300, and 1200 BPS: 0, or 0, or 3 nulls, respectively, inserted after *
* S120   standard ASCII characters; 0, or 4, or 23, respectively, inserted    *
*        following carriage return character.                                 *
*                                                                             *
*******************************************************************************
*                                                                             *
*                *** MAID Program Control Commands ***                        *
*                                                                             *
* CMD                       DESCIPTION                                        *
* n/     Print the contents of memory location n and enable the               *
*        EXORciser to change the contents of this memory location.            *
* n;O    Calculate the address offset (for relative addr mode instructions).  *
* (LF)   Print the contents of the next sequential memory location and enable *
*        thw EXORciser to change the contents of this memory location.        *
*        (LF-Line Feed)                                                       *
* ^      Print the contents of the previous sequential memory location and    *
*        enable the EXORciser to change the contents of this memory location. *
*        (^-up arrow character or SHIFT key and N character).                 *
* (CR)   Return the displayed contents to memory and accept next command.     *
*        (CR - Carriage Return).                                              *
* n;V    Enter a breakpoint at memory location n.                             *
* $V     Display the memory location of each breakpoint.                      *
* n;U    Remove the breakpoint at memory location n.                          *
* ;U     Remove all the breakpoint.                                           *
* n;G    Execute user's program starting at memory location n.                *
* ;G     Execute the user's program starting at the auto restart memory loc.  *
* $R     Display/change the user's program registers.                         *
* $M     Display the search mask.                                             *
* n;P    Continue executing from the selected breakpoint until this           *
*        breakpoint is encountered n times.                                   *
* ;P     Continue executing from the current program counter setting.         *
* n;N    Trace n instructions.                                                *
* ;N     Trace one instruction.                                               *
* N      Trace one instruction.                                               *
* $S     Display and set the stop-on-address compare-Scope trigger pulse.     *
* ;S     Reset the stop-on-address compare-Scope trigger pulse.               *
* $T     Set the trace mode.                                                  *
* ;T     Reset the trace mode.                                                *
* n,W    Search for the n bit pattern.                                        *
* X      Exit MAID and return to EXBUG 1.1                                    *
* #n=    Convert the decimal number n to its hexadecimal equivalent.          *
* #$n=   Convert the hexadecimal number n to its decimal equivalent.          *
* #@n=   Convert the octal number n to its hexadecimal equivalent.            *
*                                                                             *
*******************************************************************************
*
* EXBUG Monitor Entry Points for user program
*
       ORG    $F000    ;
PWRUP  JMP    LBF558   ; Entry after powerup or restart
       JMP    MBUGE    ; MBUGE  (Alt) Alternative exit vector to the monitor
       JMP    CBCDHX   ; CBCDHX Convert a hexadec ASCII char to a binary value
       JMP    LBF9C0   ; XCHEXL CONVERT LEFT (HI) NIBBLE TO HEX ASCII
       JMP    LBF9C4   ; XCHEXR CONVERT RIGHT (LO) NIBBLE TO HEX ASCII
       JMP    LBFA65   ; XINADD Input a hexadecimal char
       JMP    INCH     ; Read single char
       JMP    INCHNP   ; Read a single char with no parity
       JMP    OUTCH    ; Output a single char to the terminal
       JMP    OUT2H    ; Output two hexadec char (one byte) to the terminal
       JMP    OUT4HS   ; Output four hexadec char (two bytes/address)
       JMP    PCRLF    ; Output a CR and LF to the terminal
       JMP    PDATA    ; Output a complete ASCII string (term EOF char)
       JMP    PDAT1    ; Output an ASCII string at the curr pos (w/o a CRLF)
       JMP    PSPAC    ; Print a space

LBF02D FCB    $27,$10  ;TABLE FOR HEX TO DEC CONVERTION
       FCB    $03,$E8  ;
       FCB    $00,$64  ;
       FCB    $00,$0A  ;
       FCB    $00,$01  ;

LBF037 JSR    CBCDHX   ;CONV BCD TO HEX
       BMI    LBF0A8   ;
       ASL    1,X      ;
       ROL    0,X      ;
       BSR    LBF07E   ;SHIFT 4 BITS LEFT
       ADDA   1,X      ;
       STAA   1,X      ;
*
* HEX -> DEC CONV
LBF046 JSR    INCHNP   ;
       CMPA   #$3D     ;'=' ?
       BNE    LBF037   ;LOOP...
       LDAA   #$20     ;SPACE
       JSR    OUTCH    ;PRINT IT
* CONVERT LOC $FF08/09 TO DECIMAL ASCII CHAR
CHXBCD LDX    #LBF02D  ;GET HEX-DEC CONV TBL @
       LDAA   LBFF08   ;
       LDAB   LBFF08+1 ;
LBF05B CLR    LBFF5A   ;CLR COUNTER
LBF05E INC    LBFF5A   ;
       SUBB   1,X      ;
       SBCA   0,X      ;
       BCC    LBF05E   ;LOOP...
       ADDB   1,X      ;
       ADCA   0,X      ;
       PSHA            ;SAVE A
       LDAA   LBFF5A   ;PRINT CNTR
       ADDA   #$2F     ;MAKE IT ASCII
       JSR    OUTCH    ;PRINT IT
       PULA            ;RESTORE A
       INX             ;NEXT ENTRY CONV TBL
       INX             ;
       CPX    #LBF037  ;CONV DONE ?
       BNE    LBF05B   ;NO, LOOP...
       BRA    LBF0F9   ;PRT '*' PROMPT
*
* SHIFT WORD POINTED BY X-REG 3 BITS LEFT
LBF07E ASL    1,X      ;SHIFT WORD
       ROL    0,X      ;
       ASL    1,X      ;  3 BITS
       ROL    0,X      ;
       ASL    1,X      ;    TO THE LEFT.
       ROL    0,X      ;
       RTS             ;RETURN TO CALLER
*
* CONVERT OCTAL/HEX/DEC
LBF08B LDX    #LBFF08  ;
       CLR    LBFF07   ;
       CLR    0,X      ;
       CLR    1,X      ;
       JSR    INCHNP   ;
       CMPA   #$24     ;'$' ?
       BEQ    LBF046   ;HEX -> DEC CONV
       CMPA   #$40     ;'@' ?
       BEQ    LBF0EA   ;OCTAL -> HEX CONV
*DEC -> HEX CONV
* INPUT DECIMAL NUMBER
LBF0A0 CMPA   #$30     ; <0 ?
       BMI    LBF0A8   ;INVALID DEC ?
       CMPA   #$39     ; >9 ?
       BLE    LBF0AB   ;YES
LBF0A8 JMP    LBF128   ;PRINT ' ?'

LBF0AB ANDA   #$0F     ;ADD DEC VALUE
       STAA   LBFF5A   ;SAVE LAST ENTER DECIMAL
       LDAA   0,X      ;SHIFT WORD 1 BITS LEFT
       LDAB   1,X      ;
       ASLB            ;
       ROLA            ;
       JSR    LBF07E   ;SHIFT WORD 3 BITS LEFT
       ADDB   1,X      ;
       ADCA   0,X      ;
       ADDB   LBFF5A   ;
       ADCA   #$00     ;CARRY
       STAA   0,X      ;SAVE RESULT
       STAB   1,X      ; IN LBFF08
       JSR    INCHNP   ;
       CMPA   #$3D     ;'=' ?
       BNE    LBF0A0   ;LOOP...
*
* PRINT RESULT IN HEX
LBF0CD LDAA   #$20     ;SPACE
       JSR    OUTCH    ;PRINT IT
       LDX    #LBFF08  ;PRINT RESULT
       JSR    OUT4HS   ; IN HEX
       BRA    LBF0F9   ;PRT '*' PROMPT
LBF0DA CMPA   #$30     ; <0 ?
       BMI    LBF0A8   ;INVALID HEX
       CMPA   #$38     ; >8 ?
       BPL    LBF0A8   ;INVALID HEX
       BSR    LBF07E   ;SHIFT WORD 3 BITS LEFT
       ANDA   #$07     ;
       ADDA   1,X      ;
       STAA   1,X      ;
*
* OCTAL -> HEX CONV
LBF0EA JSR    INCHNP   ;
       CMPA   #$3D     ;'=' ?
       BNE    LBF0DA   ;PRINT ' ?'
       BRA    LBF0CD   ;

MAID   EQU    *        ;
       CLR    LBFF60   ;
       CLR    LBFF54   ;CLEAR ??? FLAG
LBF0F9 LDS    #EXOSTK  ;INIT EXBUG STACK PTR
       LDX    #LBFBC2  ;'*' MAID PROMPT
       JSR    PDATA    ;PRINT IT
       JSR    LBFA62   ;READ 4 HEX
       TSTB            ;HEX INPUT OK ?
       BNE    LBF130   ;YES, BRANCH
       CMPA   #$58     ;'X' EXIT ?
       BNE    LBF10F   ;NO, CONTINUE
       JMP    RSTART   ;RESTART EXBUG

LBF10F CMPA   #$24     ;'$' ?
       BNE    LBF116   ;NO, CONTINUE
       JMP    LBF33D   ;
LBF116 CMPA   #$3B     ;';' ?
       BNE    LBF11D   ;NO, CONTINUE
       JMP    LBF27F   ;
LBF11D CMPA   #$4E     ;'N' ?
       BEQ    LBF155   ;YES, BRANCH
       CMPA   #$23     ;'#' ?
       BNE    LBF128   ;PRINT ' ?'
       JMP    LBF08B   ;CONVERT CMD

LBF128 LDX    #LBFBBE  ;PRINT ' ?' W/O CRLF
       JSR    PDAT1    ; FOLLOWED WITH
LBF12E BRA    LBF0F9   ;  A '*' PROMPT

LBF130 CMPA   #$3B     ;';' ?
       BEQ    LBF1A3   ;YES, BRANCH
       LDX    LBFF08   ;
       CMPA   #$2F     ;'/' ?
       BNE    LBF128   ;NO, PRINT ' ?'
       JMP    LBF1D6   ;
       PAGE   60
*
* PROCESS 'NNNN;N' TRACE NNNN INSTRUCTIONS
LBF13E LDX    LBFF08   ;'N' TRACE
       BEQ    LBF144   ;
       DEX             ;
LBF144 STX    LBFF51   ;SET TRACE STEP CNTR
       LDAA   #$FF     ;
       STAA   LBFF60   ;SET ??? FLAG
       STAA   LBFF50   ;.
       STAA   LBFF54   ;.
       JMP    LBF431   ;

LBF155 LDX    #$0000   ;'N' TRACE 1 INSTR
       BRA    LBF144   ;CONTINUE
*
* PROCESS 'NNNN;V' ENTER A BP
LBF15A LDAA   LBFF08   ;
       LDAB   LBFF08+1 ;
       JSR    LBF2BA   ;FIND BP IN TABLE
       BEQ    LBF0F9   ;PRT '*' PROMPT
       LDX    #BRKPTS  ;
LBF168 LDAA   0,X      ;BP = $0000 ?
       ADDA   1,X      ;.
       BNE    LBF179   ;NO, BRANCH
       LDS    LBFF08   ;LOAD BP ADDR
       STS    0,X      ;INSERT BP IT TABLE
       CLR    32,X     ;CLR BP HIT CNTR
       CLR    33,X     ;.
       BRA    LBF12E   ;PRT '*' PROMPT
LBF179 INX             ;NEXT ENTRY
       INX             ;.
       CPX    #LBFF2F  ;END OF BP TABLE ?
       BNE    LBF168   ;
LBF180 JMP    LBF128   ;PRINT ' ?'
*
* PROCESS 'NNNN;U' CLEAR BREAKPOINT
LBF183 LDX    #BRKPTS  ;'U' REMOVE BP
LBF186 LDAA   0,X      ;
       CMPA   LBFF08   ;FOUND ?
       BNE    LBF19A   ;NO, BRANCH
       LDAA   1,X      ;
       CMPA   LBFF08+1 ;FOUND ?
       BNE    LBF19A   ;NO, CONTINUE
       CLR    0,X      ;CLEAR BP
       CLR    1,X      ;
LBF198 BRA    LBF12E   ;PRT '*' PROMPT
LBF19A INX             ;NEXT BP IN TABLE
       INX             ;
       CPX    #LBFF2F  ;END OF BP TABLE ?
       BNE    LBF186   ;LOOP...
* BP NOT FOUND IN TABLE
       BRA    LBF180   ;YES, PRINT ' ?'
*
* PROCESS 'NNNN;. R, V, M, T OR S' COMMAND
LBF1A3 JSR    INCHNP   ;
       CMPA   #$47     ;'G' EXECUTE
       BNE    LBF1AD   ;
       JMP    LBF41C   ;
LBF1AD CMPA   #$4E     ;'N' TRACE
       BEQ    LBF13E   ;
       CMPA   #$50     ;'P' CONTINUE
       BNE    LBF1B8   ;
       JMP    LBF3FC   ;
LBF1B8 CMPA   #$55     ;'U' REMOVE BP
       BEQ    LBF183   ;
       CMPA   #$56     ;'V' ENTER A BP
       BEQ    LBF15A   ;
       CMPA   #$57     ;'W' SEARCH
       BNE    LBF180   ;NO, PRINT ' ?'
       BRA    LBF23D   ;

LBF1C6 INX             ;
       JSR    PCR      ;PRINT CR
LBF1CA STX    LBFF56   ;SAVE NNNN ADDR
LBF1CD LDX    #LBFF56  ;
       JSR    LBFA2B   ;PRINT NNNN/
       LDX    LBFF56   ;
* PROCESS 'NNNN/' DISPLAY LOC NNNN CONTENT
LBF1D6 JSR    LBF971   ;READ 2 HEX CHAR
       BMI    LBF1E9   ;
       CMPA   #$0D     ;CR ?
       BEQ    LBF198   ;
       CMPA   #$0A     ;LF ?
       BEQ    LBF1C6   ;
       DEX             ;
       JSR    PCRLF    ;
       BRA    LBF1CA   ;LOOP...
LBF1E9 CMPA   #$3B     ;';' ?
       BNE    LBF180   ;
       JSR    INCHNP   ;
       CMPA   #$4F     ;'O' ?
       BNE    LBF180   ;NO, PRINT ' ?'
*
* PROCESS 'NNNN;O' CALCULATE ADDRESS OFFSET
       LDX    LBFF56   ;'O' CALC OFFSET
       INX             ;
       STX    LBFF5A   ;
       LDAA   LBFF5A   ;ADDR
       LDAB   LBFF5A+1 ; .
       SUBB   LBFF08+1 ; COMPARE
       SBCA   LBFF08   ;  .
       BCS    LBF229   ;
       BNE    LBF221   ; > 128 ?
       CMPB   #$81     ;
       BCC    LBF221   ;
       NEGB            ;
LBF210 STAB   LBFF07   ;
       JSR    PSPAC    ;
       LDX    #LBFF07  ;
       JSR    OUT2H    ;PRINT RESULT
LBF21C JSR    PCRLF    ;
       BRA    LBF1CD   ;
LBF221 LDX    #LBFB79  ;' INVL'
       JSR    PDAT1    ;PRINT W/O CRLF
       BRA    LBF21C   ;LOOP...

LBF229 LDAA   LBFF08   ;END
       LDAB   LBFF08+1 ; ADDR <
       SUBB   LBFF5A+1 ;  BEG
       SBCA   LBFF5A   ;   ADDR ?
       BNE    LBF221   ;NO, ERROR
       ASLB            ;
       BCS    LBF221   ;NO, ERROR
       LSRB            ;
       BRA    LBF210   ;LOOP...
*
* PROCESS 'NNNN;W' SEARCH FOR N BIT PATTERN
LBF23D LDAA   LBFF08   ;'W' SEARCH
       BNE    LBF2A3   ;
       LDAA   LBFF08+1 ;
       STAA   LBFF13   ;
       LDX    LBFF0E   ;BEG ADDR
LBF24B STX    LBFF56   ;UPDATE NNNN
       LDAA   0,X      ;
       EORA   LBFF13   ;
       ANDA   LBFF12   ;
       BNE    LBF267   ;PATTERN FOUND ?
       JSR    PCRLF    ;
       LDX    #LBFF56  ;GET NNNN ADDR
       JSR    OUT4HS   ;PRINT 4 HEX + SPACE
       LDX    LBFF56   ;
       JSR    OUT2H    ;
LBF267 LDX    LBFF56   ;
       CPX    LBFF10   ;END ADDR ?
       BEQ    LBF2B1   ;
       INX             ;NEXT MEM LOC
       BRA    LBF24B   ;LOOP...
LBF272 CLR    LBFF60   ;
       CLR    LBFF54   ;CLR ??? FLAG
       BRA    LBF2B1   ;
LBF27A CLR    LBFF5D   ;CLR ??? FLAG
       BRA    LBF2B1   ;
*
* PROCESS ';' + G/N/P/S/T/U
LBF27F JSR    INCHNP   ;
       CMPA   #$47     ;'G' EXEC USER PGM ?
       BNE    LBF289   ;
       JMP    LBF414   ;
LBF289 CMPA   #$4E     ;'N' TRACE ?
       BNE    LBF290   ;
       JMP    LBF155   ;
LBF290 CMPA   #$50     ;'P' CONT EXEC USER PGM ?
       BNE    LBF297   ;
       JMP    LBF3F0   ;
*
LBF297 CMPA   #$53     ;'S' DISP STOP-ON-ADDR ?
       BEQ    LBF27A   ;
       CMPA   #$54     ;'T' RESET TRACE ?
       BEQ    LBF272   ;
       CMPA   #$55     ;'U' REMOVE ALL BP'S ?
       BEQ    LBF2A6   ;
LBF2A3 JMP    LBF128   ;PRINT ' ?'
*
* CLEAR $FF1F -> $FF4F
LBF2A6 LDX    #BRKPTS  ;INIT X
LBF2A9 CLR    0,X      ;CLEAR LOC
       INX             ;NEXT
       CPX    #LBFF4F  ;END REACHED ?
       BNE    LBF2A9   ;NO
LBF2B1 JMP    LBF0F9   ;PRT '*' PROMPT
*
* FIND BP IN TABLE
LBF2B4 LDAA   LBFF16   ;GET USER
       LDAB   LBFF17   ; PGM PC
LBF2BA LDX    #BRKPTS  ;GET BP TABLE ADDR
LBF2BD CMPA   0,X      ;HI EQUAL ?
       BNE    LBF2C6   ;NO, NEXT ENTRY
       CMPB   1,X      ;LO EQUAL ?
       BNE    LBF2C6   ;NO, NEXT ENTRY
       RTS             ;RETURN TO CALLER
*
LBF2C6 INX             ;NEXT ENTRY
       INX             ;.
       CPX    #LBFF2F  ;END OF BP TABLE ?
       BNE    LBF2BD   ;NO, LOOP...
       LDAA   #$FF     ;MARK NOT FOUND
       RTS             ;RETURN TO CALLER
*
LBF2D0 JSR    LBFAC0   ;4 HEX ???
       JSR    LBF964   ;PRINT & READ 4 HEX
       INX             ;
       BRA    LBF2DF   ;
LBF2D9 JSR    LBFAC0   ;2 HEX ???
       JSR    LBF971   ;READ 2 HEX CHAR
LBF2DF CMPA   #$0D     ;CR ?
       BEQ    LBF33A   ;
       INX             ;
       CMPA   #$0A     ;LF ?
       BEQ    LBF2EC   ;
       JSR    PCRLF    ;PRINT CRLF
       RTS             ;RETURN TO CALLER
*
LBF2EC JSR    PCR      ;PRINT CR
       RTS             ;RETURN TO CALLER
*
* PROCESS '$R' DISPLAY/MODIFY USER PGM REGS
LBF2F0 JSR    LBFAC9   ;'R' DISPLAY USER PGM REGS
       JSR    PCRLF    ;PRINT CRLF
       LDX    #LBFF16  ;GET USER REGS ADDR
       LDAA   #$50     ;'P' PC REG ?
       BSR    LBF2D0   ;NEW XXXX VALUE ?
       LDAA   #$58     ;'X' X REG ?
       BSR    LBF2D0   ;NEW XXXX VALUE ?
       LDAA   #$41     ;'A'
       BSR    LBF2D9   ;NEW XX VALUE ?
       LDAA   #$42     ;'B'
       BSR    LBF2D9   ;NEW XX VALUE ?
       LDAA   #$43     ;'C' CC REG ?
       BSR    LBF2D9   ;NEW XX VALUE ?
       LDAA   #$53     ;'S' SP REG ?
       BSR    LBF2D0   ;NEW XXXX VALUE ?
       BRA    LBF33A   ;PRT '*' PROMPT
*
* PROCESS '$M' DISPLAY SEARCH MASK
LBF313 JSR    PSPAC    ;'M' DISPL SEARCH MASK
       LDX    #LBFF12  ;
       JSR    LBF971   ;READ 2 HEX CHAR
       BMI    LBF355   ;
LBF31E LDX    #LBFB36  ;'BEG ADDR '
       JSR    PDATA    ;PRINT IT
       LDX    #LBFF0E  ;
       JSR    LBF964   ;PRINT & READ 4 HEX
       BMI    LBF31E   ;
LBF32C LDX    #LBFB40  ;'END ADDR '
       JSR    PDATA    ;PRINT IT
       LDX    #LBFF10  ;
       JSR    LBF964   ;PRINT & READ 4 HEX
       BMI    LBF32C   ;
LBF33A JMP    LBF0F9   ;PRT '*' PROMPT
*
* PROCESS '$R, $V, $M, $T OR $S'
LBF33D JSR    INCHNP   ;
       TAB             ;
       CMPB   #$52     ;'R' USER REGS
       BEQ    LBF2F0   ;
       CMPB   #$56     ;'V' ALL BP'S
       BEQ    LBF358   ;
       CMPB   #$4D     ;'M' SEARCH MASK
       BEQ    LBF313   ;
       CMPB   #$54     ;'T' TRACE
       BEQ    LBF37D   ;
       CMPB   #$53     ;'S' STOP-ON-ADDRESS COMPARE
       BEQ    LBF368   ;
LBF355 JMP    LBF128   ;PRINT ' ?'
*
* PROCESS '$V' DISPLAY ALL BREAK POINTS
LBF358 JSR    PCRLF    ;'V' DISPL ALL BP'S
       LDX    #BRKPTS  ;
       LDAB   #8       ;8 BREAK POINTS
LBF360 JSR    OUT4HS   ;PRINT
       DECB            ; THEM ALL HEX
       BNE    LBF360   ;  WITH SPACES
       BRA    LBF33A   ;PRT '*' PROMPT
*
* PROCESS '$S' DISPLAY & SET STOP-ON-ADDR
LBF368 EQU    *        ;'S' SET STOP-ON-ADDR
       LDX    #LBFBA0  ;'STOP ADDR '
       JSR    PDATA    ;PRINT IT
       LDX    #LBFF5E  ;
       JSR    LBF964   ;PRINT & READ 4 HEX
       BMI    LBF355   ;
       LDAA   #$FF     ;
       STAA   LBFF5D   ;SET ??? FLAG
       BRA    LBF33A   ;PRT '*' PROMPT
*
* PROCESS '$T' SET TRACE MODE
LBF37D EQU    *        ;'T' SET TRACE MODE
       LDX    #LBFB40  ;'END ADDR '
       JSR    PDATA    ;PRINT IT
       LDX    #LBFF14  ;
       JSR    LBF964   ;PRINT & READ 4 HEX
       BMI    LBF355   ;
       LDAA   #$FF     ;
       STAA   LBFF60   ;SET ??? FLAG
       CLR    LBFF50   ;
       BRA    LBF33A   ;PRT '*' PROMPT
*
* ACTIVATE ALL BREAK POINT IN TABLE IN MEMORY
*
LBF395 TST    LBFF4F   ;TST ??? FLAG
       BNE    LBF3C8   ;
       LDX    #BRKPTS  ;GET @ BP SAVE AREA
LBF39D STX    LBFF56   ;SAVE IT
       LDAA   0,X      ;BREAK
       BNE    LBF3A8   ; POINT
       LDAA   1,X      ;  SET ?
       BEQ    LBF3BC   ;NO, BRANCH
LBF3A8 LDX    0,X      ;LOAD BP ADDR
       LDAA   0,X      ;SAVE USER PGM OPCODE
       LDAB   #$3F     ;STORE SWI OPCODE
       STAB   0,X      ;.
       CMPB   0,X      ;VERIFY STORE
       BEQ    LBF3B7   ;OK, CONTINUE
       JMP    LBF9A4   ;ERROR, NO CHANGE

LBF3B7 LDX    LBFF56   ;GET BP SAVE AREA @
       STAA   16,X     ;SAVE ORIG OPCODE
LBF3BC INX             ;NEXT BREAK POINT
       INX             ;.
       CPX    #LBFF2F  ;END OF BP TABLE ?
       BNE    LBF39D   ;LOOP...
       LDAA   #$FF     ;SET ??? FLAG
       STAA   LBFF4F   ;.
LBF3C8 RTS             ;RETURN TO CALLER
*
* RESTORE ORIG USER PGM  BP IN MEMORY
LBF3C9 TST    LBFF4F   ;TST ??? FLAG
       BEQ    LBF3EC   ;
       LDX    #BRKPTS  ;GET ADDR BP TABLE
LBF3D1 STX    LBFF56   ;SAVE BP ENTRY POINTER
       LDAA   0,X      ;BREAK
       BNE    LBF3DC   ; POINT
       LDAB   1,X      ;  IN USE ?
       BEQ    LBF3E2   ;NO, BRANCH
LBF3DC LDAA   16,X     ;RESTORE
       LDX    0,X      ; USER PGM
       STAA   0,X      ;  OPCODE
LBF3E2 LDX    LBFF56   ;NEXT BP ENTRY
       INX             ;.
       INX             ;.
       CPX    #LBFF2F  ;END OF BP TABLE ?
       BNE    LBF3D1   ;NO, LOOP...
LBF3EC CLR    LBFF4F   ;CLR ??? FLAG
       RTS             ;RETURN TO CALLER
*
* PROCESS ';P' CONTINUE USER PGM AT CURRENT PC
LBF3F0 TST    LBFF60   ;';P'
       BNE    LBF42C   ;
       JSR    LBF2B4   ;FIND BP IN TABLE
       BEQ    LBF42C   ;
       BRA    LBF427   ;
*
* PROCESS 'NNNN;P' CONTINUE TILL NNNN BP HITS
LBF3FC TST    LBFF60   ;TST ??? FLAG
       BNE    LBF406   ;
       JSR    LBF2B4   ;FIND BP IN TABLE
       BEQ    LBF409   ;
LBF406 JMP    LBF128   ;PRINT ' ?'

LBF409 LDS    LBFF08   ;DECR
       DES             ; BP HIT
       STS    32,X     ;  CNTR
       LDS    #EXOSTK  ;INIT EXBUG STACK PTR
       BRA    LBF42C   ;
*
* PROCESS ';G' EXECUTE
LBF414 LDX    LBFF00   ;';G'
       DEX             ;
       LDX    0,X      ;
       BRA    LBF41F   ;
*
* PROCESS 'NNNN;G' EXECUTE USER PGM AT LOC NNNN
LBF41C LDX    LBFF08   ;';G' EXECUTE
LBF41F STX    LBFF16   ;
       TST    LBFF60   ;
       BMI    LBF42C   ;
LBF427 JSR    LBF395   ;
       BRA    LBF431   ;
*
* PREPARE FOR TRACE INSTRUCTION USER PGM
LBF42C LDAA   #$FF     ;
       STAA   LBFF54   ;SET ??? FLAG
LBF431 LDAB   #7       ;SET LOOP CNTR
       LDS    LBFF1D   ;
       LDX    #LBFF16  ;GET ADDR USER REG'S
* FILL TOP OF STACK WITH USER PC,X,A,B,CC.
* WILL THEN BE 'RESTORED' WITH A RTI.
LBF439 LDAA   0,X      ;GET USER REG
       PSHA            ;PUSH ON USER STACK
       INX             ;NEXT
       DECB            ;DONE ?
       BNE    LBF439   ;NO, LOOP...
       TSX             ;SP -> X REG
       LDAA   3,X      ;SWAP H/L PC
       LDAB   4,X      ;.
       STAA   4,X      ;.
       STAB   3,X      ;.
       LDAA   5,X      ;SWAP H/L X
       LDAB   6,X      ;.
       STAA   6,X      ;.
       STAB   5,X      ;.
       TST    LBFF5D   ;TST ??? FLAG
       BEQ    LBF467   ;
* UPDATE ADDRESS COMPARE
       LDAA   LBFF5E+1 ;
       STAA   LBFCF8   ;PIA DP-A
       LDAA   LBFF5E   ;
       STAA   LBFCFA   ;PIA DP-B
       LDAA   #$34     ;'00110100'
       STAA   LBFCF9   ;UPDATE PIA CR-A
LBF467 TST    LBFF54   ;TST ??? FLAG
       BEQ    LBF476   ;RETURN
* PREPARE HW FOR A IRQ AFTER 1 INSTR EXECUTED ???
       LDAA   #$34     ;'00110100'
       STAA   LBFCFB   ;UPDATE PIA CR-B
       LDAA   #$3C     ;'00111100'
       STAA   LBFCFB   ;UPDATE PIA CR-B
LBF476 RTI             ;RETURN FOR INTERRUPT

SWI    EQU    *        ;
       LDAB   #7       ;SET LOOP CNTR
       LDX    #LBFF1C  ;LOAD ADDR USER REGS
LBF47C PULA            ;SAVE USER REGS ON
       STAA   0,X      ; USER STACK IN MEMORY
       DEX             ;NEXT
       DECB            ;ALL DONE ?
       BNE    LBF47C   ;NO, LOOP...

       STS    LBFF1D   ;
       LDS    #EXOSTK  ;INIT EXBUG STACK PTR
       BSR    LBF4BF   ;SWAP H/L OF PC & X
       LDX    LBFF16   ;DECREMENT
       DEX             ; USER PGM
       STX    LBFF16   ;  PC.
       TST    LBFF4F   ;
       BEQ    LBF4AB   ;
       JSR    LBF3C9   ;RESTORE ORIG BP IN MEM
       JSR    LBF2B4   ;FIND BP IN TABLE
       BNE    LBF4AB   ;FOUND ?, NO BRANCH
       LDS    32,X     ;NR OF BP = 0 ?
       BEQ    LBF4B7   ;YES ?
       DES             ;DECR BP HIT CNTR
       STS    32,X     ;SAVE IT
       LDS    #EXOSTK  ;INIT EXBUG STACK PTR
       BRA    LBF42C   ;

LBF4AB LDX    #LBFBC4  ;'BKPT ERROR '
       JSR    PDATA    ;PRINT IT
       CLR    LBFF60   ;
       CLR    LBFF54   ;CLR ??? FLAG
LBF4B7 LDS    #EXOSTK  ;INIT EXBUG STACK PTR
       JSR    LBFAC9   ;DISPLAY USER PGM REGS
       BRA    LBF536   ;PRT '*' PROMPT
* SWAP H/L OF PC & X
LBF4BF LDX    #LBFF16  ;GET USER PGM REGS ADDR
       LDAA   0,X      ;SWAP PCH & PCL
       LDAB   1,X      ;.
       STAA   1,X      ;.
       STAB   0,X      ;.
       LDAA   2,X      ;SWAP XH & XL
       LDAB   3,X      ;.
       STAA   3,X      ;.
       STAB   2,X      ;.
       RTS             ;RETURN TO CALLER

LBF4D3 STS    LBFF1D   ;
LBF4D6 BRA    LBF4D6   ;LOOP
       PAGE   60
**********************************************
START  EQU    *        ;
NMI    EQU    *        ;
**********************************************
LBF4D8 LDAA   #$3C     ;'00111100' DDR
       STAA   LBFCF9   ;PIA CR-A
       LDAA   #$34     ;'00110100' DDR
       STAA   LBFCFB   ;PIA CR-B
* SAVE TOP 7 BYTES OF STACK
       LDAB   #7       ;SET LOOP CNTR
       LDX    #LBFF1C  ;LOAD ADDR USER REGS
LBF4E7 PULA            ;SAVE USER REGS ON
       STAA   0,X      ; USER STACK IN MEMORY
       DEX             ;NEXT
       DECB            ;DONE ?
       BNE    LBF4E7   ;NO, LOOP...
       STS    LBFF1D   ;
       LDS    #EXOSTK  ;INIT EXBUG STACK PTR
       BSR    LBF4BF   ;SWAP H/L OF PC & X
       JSR    LBF3C9   ;RESTORE ORIG BP IN MEM
* PGM ABORTED ?
       LDAA   LBFCF9   ;PIA CR-A
       LDAB   LBFCF8   ;PIA DP-A (RESET ?)
       BITA   #$80     ;PGM ABORTED ? (IRQA1)
       BNE    LBF54D   ;NO,
* STOP ON ADDRESS ?
       LDAA   LBFCFB   ;PIA CR-B
       LDAB   LBFCFA   ;PIA DP-B
       BITA   #$80     ;STOP ON ADDRESS ?
       BNE    LBF539   ;YES, BRANCH

       TST    LBFF60   ;TST ??? FLAG
       BEQ    LBF544   ;
       JSR    LBFAC9   ;DISPLAY USER PGM REGS
       TST    LBFF50   ;
       BEQ    LBF525   ;
       LDX    LBFF51   ;DECR
       BEQ    LBF52D   ; TRACE
       DEX             ;  STEP
       STX    LBFF51   ;   CNTR
       BRA    LBF54A   ;PRT '*' PROMPT
LBF525 LDX    LBFF16   ;
       CPX    LBFF14   ;
       BNE    LBF54A   ;PRT '*' PROMPT
LBF52D CLR    LBFF60   ;CLR ??? FLAG
       CLR    LBFF50   ;.
       CLR    LBFF54   ;.
LBF536 JMP    LBF0F9   ;PRT '*' PROMPT

LBF539 LDX    #LBFB8F  ;'STOP ON ADDRESS'
       JSR    PDATA    ;PRINT IT
       JSR    LBFACC   ;PRINT USER PGM REGS
       BRA    LBF536   ;PRT '*' PROMPT

LBF544 JSR    LBF395   ;INIT FF1F -> FF2F ???
       CLR    LBFF54   ;CLR ??? FLAG
LBF54A JMP    LBF431   ;PRT '*' PROMPT

LBF54D LDX    #LBFBAB  ;'ABORTED AT'
       JSR    PDATA    ;PRINT IT
       JSR    LBFACC   ;PRINT USER PGM REGS
       BRA    LBF567   ;
*    VECTOR ENTRY 1    ;
LBF558 SEI             ;
       LDX    #$83FF   ;SET USER
       STX    LBFF00   ; PGM PC
       LDAA   #$00     ;NULL
       STAA   LBFF02   ;
* SET HARDWARE VECTORS
       LDS    #EXOSTK  ;INIT EXBUG STACK PTR
LBF567 STS    LBFF1D   ;
       LDX    #LBF4D8  ;INIT USER NMI VECTOR
       STX    NMISVC   ;
       LDX    #LBF4D8  ;INIT USER START VECTOR
       STX    PWRSVC   ;
       LDX    #SWI     ;INIT USER SWI VECTOR
       STX    SWISVC   ;
       LDX    LBFF00   ;
       DEX             ;X = X-7
       DEX             ; .
       DEX             ;  .
       DEX             ;   .
       DEX             ;    .
       DEX             ;     .
       DEX             ;      .
       LDX    0,X      ;
       STX    IRQSVC   ;
* CLEAR BP TABLE + USER MEM AREA
       LDX    #BRKPTS  ;
LBF58E CLR    0,X      ;
       INX             ;
       CPX    #BRKPES  ;END OF USER RAM AREA  ?
       BNE    LBF58E   ;NO, LOOP

       LDS    #EXOSTK  ;INIT EXBUG STACK PTR
       LDAA   #$38     ;'00111000'
       STAA   LBFCF9   ;PIA CR-A
       LDAA   #$30     ;'00110000'
       STAA   LBFCFB   ;PIA CR-B
       LDAA   #$FF     ;RESET DP-A&B
       STAA   LBFCF8   ;PIA DP-A
       STAA   LBFCFA   ;PIA DP-B
       LDAA   #$34     ;'00110100'
       STAA   LBFCFB   ;PIA CR-B
       LDAA   #$3C     ;'00111100'
       STAA   LBFCF9   ;PIA CR-B

       LDAA   #$03     ;'00000011'
       STAA   ACIACS   ;
       LDAA   LBFCFD   ;PIA CR-A
       ANDA   #$35     ;'00110101'
       STAA   ACIACS   ;
       LDAA   #$10     ;
       JSR    LBF9CF   ;PRINT IT
       LDAA   #$3A     ;':'
       JSR    LBF9CF   ;PRINT IT
       LDAA   #$10     ;ASCII DLE
       JSR    LBF9CF   ;PRINT IT
       LDAA   #$39     ;'9'
       JSR    LBF9CF   ;PRINT IT
       LDX    #LBFBB7  ;
       JSR    PDAT1    ;PRINT W/O CRLF
       PAGE   60
****************************************************
*      RESTART EXBUG ENTRY
****************************************************
RSTART LDX    #LBFB2B  ;'EXBUG 1.1'
       JSR    PDATA    ;PRINT IT
       LDAA   ACIADT   ;ANY INPUT ?
       LDX    #LBFF03  ;LOAD ADDR INPBUF
LBF5E8 JSR    LBFA4E   ;X, ^, CR, OR LF ?
       STAA   0,X      ;SAVE IT INPBUF
       INX             ;
       CPX    #LBFF07  ;END INPBUF ?
       BNE    LBF5E8   ;NEXT LOOP...
       LDX    #LBFAF5  ;4 CMD TABLE
LBF5F6 LDAA   LBFF03   ;
       CMPA   0,X      ;1ST CHAR MATCH ?
       BNE    LBF616   ;
       LDAA   LBFF03+1 ;
       CMPA   1,X      ;2ND CHAR MATCH ?
       BNE    LBF616   ;
       LDAA   LBFF03+2 ;
       CMPA   2,X      ;3RD CHAR MATCH ?
       BNE    LBF616   ;
       LDAA   LBFF03+3 ;
       CMPA   3,X      ;4TH CHAR MATCH ?
       BNE    LBF616   ;
       LDX    4,X      ;PNT TO CMD ADDR
       JMP    0,X      ;EXECUTE CMD

LBF616 INX             ;NEXT
       INX             ; ENTRY
       INX             ;  IN
       INX             ;   CMD
       INX             ;    TABLE
       INX             ;     ...
       CPX    #LBFB2B  ;END OF CMD TABLE ?
       BNE    LBF5F6   ;NO, LOOP...
       BRA    RSTART   ;YES, RESTART EXBUG

LBF623 CLRA            ;
       BRA    LBF628   ;

LBF626 LDAA   #$01     ;
LBF628 STAA   LBFF02   ;
       BRA    RSTART   ;RESTART EXBUG

* PROCESS 'S120'
LBF62D LDAA   #$FF     ;
       BRA    LBF628   ;

LBF631 LDX    #LBFBF5  ;'HDR-X'
       JSR    PDATA    ;PRINT IT
       LDX    #LBFF8D  ;SPECIFY
LBF63A JSR    INCHNP   ;
       CMPA   #$20     ;VALID
       BLT    LBF645   ; ASCII
       CMPA   #$61     ;  CHAR ?
       BLT    LBF647   ;YES
LBF645 LDAA   #$20     ;NO, REPL WITH SPC
LBF647 STAA   0,X      ;SAVE IT
       INX             ;NEXT
       CPX    #LBFF93  ;END BUFFER ?
       BNE    LBF63A   ;NO, LOOP...
       JSR    LBF70B   ;EXEC ?
       SEC             ;SET CARRY
       ROL    LBFF62   ;
       TST    LBFF02   ;
       BPL    LBF665   ;
       LDAA   #$10     ;
       JSR    OUTCH    ;PRINT IT
       LDAA   #$30     ;'0'
       JSR    OUTCH    ;PRINT IT
LBF665 LDAA   #$12     ;DC2 PUNCH ON
       JSR    OUTCH    ;PRINT IT
       JSR    LBF700   ;PRINT 40 NULLS
       LDAB   #$83     ;
       LDX    #LBFBE5  ;PUNCH S0 RECORD
       JSR    PDAT1    ; W/O CRLF
       LDX    #LBFF8D  ;
LBF678 JSR    LBF6FA   ;PRINT 2 HEX CHAR
       CPX    #LBFF93  ;
       BNE    LBF678   ;
       COMB            ;
       PSHB            ;
       TSX             ;
       BSR    LBF6FA   ;PRINT 2 HEX CHAR
       PULB            ;
       LDX    LBFF0A   ;
       STX    LBFF5A   ;
LBF68C LDAA   LBFF0C+1 ;BEG
       SUBA   LBFF5A+1 ; ADDR <
       LDAB   LBFF0C   ;  END
       SBCB   LBFF5A   ;   ADDR ?
       BNE    LBF69E   ;
       CMPA   #$10     ;END@ - BEG@ < 16 ?
       BCS    LBF6A0   ;
LBF69E LDAA   #$0F     ;
LBF6A0 ADDA   #$04     ;
       STAA   LBFF58   ;
       SUBA   #$03     ;
       STAA   LBFF07   ;
       LDX    #LBFBD0  ;CR LF
       JSR    PDAT1    ;PRINT W/O CRLF
       CLRB            ;
       LDX    #LBFF58  ;
       BSR    LBF6FA   ;PRINT 2 HEX CHAR
       LDX    #LBFF5A  ;
       BSR    LBF6FA   ;PRINT 4 HEX CHAR
       BSR    LBF6FA   ;.
       LDX    LBFF5A   ;
LBF6C0 BSR    LBF6FA   ;PRINT 2 HEX CHAR
       DEC    LBFF07   ;
       BNE    LBF6C0   ;
       STX    LBFF5A   ;
       COMB            ;
       PSHB            ;
       TSX             ;
       BSR    LBF6FA   ;PRINT 2 HEX CHAR
       PULB            ;
       LDX    LBFF5A   ;
       DEX             ;
       CPX    LBFF0C   ;
       BNE    LBF68C   ;
       LDX    #LBFBD6  ;
       JSR    PDAT1    ;PRINT W/O CRLF
       BSR    LBF700   ;PRINT 40 NULLS
       LDAA   #$14     ;DC4 PUNCH OFF
       JSR    OUTCH    ;PRINT DC4
       TST    LBFF02   ;
       BPL    LBF6F5   ;
       LDAA   #$10     ;
       JSR    OUTCH    ;PRINT IT
       LDAA   #$39     ;'9'
       JSR    OUTCH    ;PRINT IT
LBF6F5 CLR    LBFF62   ;
       BRA    LBF719   ;
LBF6FA ADDB   0,X      ;
       JSR    LBFA14   ;
       RTS             ;RETURN TO CALLER
*
* PRINT 40 BYTES OF NULL'S
LBF700 LDAB   #40      ;SET CNTR
LBF702 LDAA   #$00     ;
       JSR    OUTCH    ;PRINT IT
       DECB            ;
       BNE    LBF702   ;LOOP...
       RTS             ;RETURN TO CALLER

LBF70B LDX    #LBFB7F  ;'EXEC '
       JSR    PDATA    ;PRINT IT
       JSR    LBFA4E   ;X, ^, CR, OR LF ?
       CMPA   #$59     ;'Y' ?
       BNE    LBF70B   ;RETRY LOOP...
       RTS             ;RETURN TO CALLER
*
* PUNCH & PRINT COMMAND
PNCH   EQU    *        ;
PRNT   EQU    *        ;
LBF719 JSR    MBUGE    ;GET FROM-TO ADDR
       LDAA   LBFF03+1 ;
       CMPA   #$52     ;'R' PRNT ?
       BEQ    LBF726   ;
       JMP    LBF631   ;
*
* PROCESS '$R' DISPLAY USER REGS
LBF726 BSR    LBF70B   ;'EXEC' Y?
       LDX    LBFF0A   ;
       STX    LBFF08   ;
       LDAA   LBFF08+1 ;SET XXX0 BOUNDARY
       ANDA   #$F0     ;.
       STAA   LBFF08+1 ;.
LBF736 JSR    PCRLF    ;
LBF739 JSR    PCRLF    ;
       LDX    #LBFF08  ;LOAD MEM LOC POINTER
       JSR    OUT4HS   ;PRINT IT
       LDX    LBFF08   ;
       LDAB   #16      ;16 HEX PER LINE
LBF747 JSR    OUT2H    ;
       DECB            ;DONE ?
       BNE    LBF747   ;NO, LOOP
       LDAA   #$20     ;SPACE
       JSR    OUTCH    ;PRINT IT
       LDAB   #16      ;
       LDX    LBFF08   ;16 ASCII CHAR
LBF757 LDAA   0,X      ;
       ANDA   #$7F     ;
       CMPA   #$20     ;PRINTABLE ?
       BLT    LBF763   ;NO
       CMPA   #$61     ;'a' PRINTABLE ?
       BLT    LBF765   ;YES
LBF763 LDAA   #$2E     ;'.' NON-PRINTABLE
LBF765 JSR    OUTCH    ;PRINT IT
       INX             ;NEXT LOC
       DECB            ;DONE ?
       BNE    LBF757   ;NO, LOOP
       STX    LBFF08   ;
       CPX    #$0000   ;
       BEQ    LBF719   ;
       LDAA   LBFF0C   ;BEG
       LDAB   LBFF0C+1 ; ADDR >
       SUBB   LBFF08+1 ;  END
       SBCA   LBFF08   ;   ADDR ?
       BCS    LBF719   ;RETRY INPUT
       TST    LBFF08+1 ;1 OR 2 LINES SEPARATION ?
       BNE    LBF739   ;ONE
       BRA    LBF736   ;TWO
*
* MBUGE SOFT RESTART RETURN TO THE MONITOR PROMPT
MBUGE  EQU    *        ;
       LDX    #LBFB36  ;'BEG ADDR '
       JSR    PDATA    ;PRINT IT
       LDX    #LBFF0A  ;
       JSR    LBF964   ;PRINT & READ 4 HEX
       BMI    MBUGE    ;
LBF797 LDX    #LBFB40  ;'END ADDR '
       JSR    PDATA    ;PRINT IT
       LDX    #LBFF0C  ;
       JSR    LBF964   ;PRINT & READ 4 HEX
       BMI    LBF797   ;
       LDAA   LBFF0C   ;BEG
       LDAB   LBFF0C+1 ; ADDR >
       SUBB   LBFF0A+1 ;  END
       SBCA   LBFF0A   ;   ADDR ?
       BCS    MBUGE    ;RETRY INPUT
       RTS             ;RETURN TO CALLER

SRCH   EQU    *        ;
       LDAA   #$FF     ;
       STAA   LBFF5A   ;SET ??? FLAG
       BRA    CONT     ;
*
* INIT MEMORY LOADER
LOAD   EQU    *        ;
LBF7BB CLR    LBFF5A   ;CLR ??? FLAG
       BRA    LBF7C8   ;

VERF   EQU    *        ;
       LDAA   #$01     ;
       STAA   LBFF5A   ;
       CLR    LBFF61   ;CLR ??? FLAG
LBF7C8 LDX    #LBFB85  ;'SGL/CONT '
       JSR    PDATA    ;PRINT IT
       JSR    LBFA4E   ;X, ^, CR, OR LF ?
       STAA   LBFF58   ;
       CMPA   #$53     ;'S' STOP ?
       BEQ    CONT     ;
       CMPA   #$43     ;'C' CONTINUE ?
       BNE    LBF7C8   ;INVALID ENTRY
       JSR    PCRLF    ;
CONT   JSR    LBF8A4   ;
       LDAA   LBFF8C   ;
       CMPA   #$30     ;'0' ?
       BNE    LBF81C   ;NO, BRANCH
       LDAA   LBFF8D   ;
       LDX    #LBFF8D  ;
LBF7EF INX             ;
       DECA            ;
       BNE    LBF7EF   ;LOOP...
       LDAA   #$04     ;
       STAA   0,X      ;
       LDX    #LBFF90  ;'A...'
       JSR    PDATA    ;PRINT IT
       JSR    LBF91D   ;
       TST    LBFF5A   ;
       BPL    CONT     ;LOOP...
LBF805 LDX    #LBFB4A  ;'CONT/LOAD/VERF'
       JSR    PDATA    ;PRINT IT
       JSR    LBFA4E   ;X, ^, CR, OR LF ?
       CMPA   #$43     ;'C' CONTINUE ?
       BEQ    CONT     ;
       CMPA   #$4C     ;'L' LOAD ?
       BEQ    LOAD
       CMPA   #$56     ;'V' VERIFY ?
       BEQ    VERF     ;
       BRA    LBF805   ;LOOP...

LBF81C TST    LBFF5A   ;
       BMI    CONT     ;
       JSR    LBF91D   ;
       LDAA   LBFF8C   ;
       CMPA   #$31     ;'S1' ?
       BEQ    LBF839   ;
       CMPA   #$39     ;'S9' ?
       BNE    CONT     ;
       LDAA   LBFF58   ;
       CMPA   #$43     ;'C' CONTINUE ?
       BEQ    CONT     ;
       JMP    RSTART   ;RESTART EXBUG
*
* PROCESS S1 RECORD
LBF839 LDAA   LBFF8D   ;SKIP
       SUBA   #$03     ; S-REC
       STAA   LBFF8D   ;  HEADER
       LDX    #LBFF90  ;
       STX    LBFF08   ;
       LDX    LBFF8E   ;
LBF84A STX    LBFF56   ;SAVE LOAD ADDR
       LDX    LBFF08   ;
       LDAA   0,X      ;
       INX             ;NEXT
       STX    LBFF08   ;UPDATE LOAD ADDR
       LDX    LBFF56   ;
       TST    LBFF5A   ;TST ??? FLAG
       BEQ    LBF895   ;VERIFY OR STORE
       CMPA   0,X      ;
       BEQ    LBF88C   ;
       PSHA            ;
       STX    LBFF56   ;
       TST    LBFF61   ;TST ??? FLAG
       BNE    LBF875   ;
       SEC             ;
       ROL    LBFF61   ;SET ??? FLAG
       LDX    #LBFB6B  ;'ADDR/MEM/TAPE'
       JSR    PDATA    ;PRINT IT
LBF875 LDX    #LBFF56  ;
       JSR    PCRLF    ;
       JSR    OUT4HS   ;PRINT ADDR
       LDX    LBFF56   ;
       JSR    OUT2H    ;MEM
       TSX             ;
       JSR    OUT2H    ;
       PULA            ;
       LDX    LBFF56   ;
LBF88C INX             ;
       DEC    LBFF8D   ;
       BNE    LBF84A   ;LOOP...
       JMP    CONT     ;

LBF895 STAA   0,X      ;STORE IT
       CMPA   0,X      ;SAVE SUCCESSFULL ?
       BEQ    LBF88C   ;
       LDX    #LBFB5A  ;'NO CHANGE'
       JSR    PDATA    ;PRINT IT
       JMP    RSTART   ;RESTART EXBUG

LBF8A4 CLR    LBFF8C   ;CLR ??? FLAG
       TST    LBFF02   ;
       BPL    LBF8B8   ;
LBF8AC LDAA   #$10     ;
       JSR    LBF9CF   ;PRINT IT
       LDAA   #$37     ;'7'
       JSR    LBF9CF   ;PRINT IT
       BRA    LBF8C5   ;CONTINUE
LBF8B8 LDAA   LBFCFD   ;PIA CR-A
       ANDA   #$55     ;
       STAA   ACIACS   ;
       LDAA   #$11     ;DC1 READER ON
       JSR    OUTCH    ;PRINT IT
LBF8C5 SEC             ;SET TERMINAL
       ROL    AECHO    ; ECHO ON
       JSR    INCHNP   ;
       CMPA   #$0D     ;CR ?
       BNE    LBF8D5   ;
       TST    LBFF02   ;
       BMI    LBF8AC   ;
LBF8D5 CMPA   #$53     ;'S' ?
       BNE    LBF8C5   ;
       LDX    #LBFF8D  ;
LBF8DC SEC             ;SET TERMINAL
       ROL    AECHO    ; ECHO ON
       JSR    INCHNP   ;
       CMPA   #$7F     ;DEL ?
       BEQ    LBF8DC   ;NEXT...
       CMPA   #$30     ;'S0' ?
       BEQ    LBF8F3   ;
       CMPA   #$31     ;'S1' ?
       BEQ    LBF8F3   ;
       CMPA   #$39     ;'S9' ?
       BNE    LBF8C5   ;LOOP...
*
* PROCESS S0/S1/S9 RECORD
LBF8F3 STAA   LBFF8C   ;
       CLR    LBFF8B   ;CLEAR CHKSUM
       BSR    LBF94B   ;READ & SUPPR 'DEL'
       STAA   LBFF07   ;
LBF8FE BSR    LBF94B   ;READ & SUPPR 'DEL'
       DEC    LBFF07   ;
       BNE    LBF8FE   ;LOOP...
       INC    LBFF8B   ;FORCE CHKSUM ERROR
       LDAA   LBFCFD   ;PIA CR-A
       ANDA   #$35     ;'00110101'
       STAA   ACIACS   ;
       LDX    #LBFBB8  ;DC3 + 4 NULLS
       JSR    PDAT1    ;PRINT W/O CRLF
       LDAA   ACIADT   ;
       LDAA   ACIADT   ;
       RTS             ;RETURN TO CALLER

LBF91D TST    LBFF8B   ;CHECK SUM ERROR ?
       BEQ    LBF93E   ;
LBF922 LDX    #LBFB65  ;'CKSM'
       JSR    PDATA    ;PRINT IT
       LDX    #LBFF8E  ;
       JSR    OUT4HS   ;
       JSR    LBFA4E   ;X, ^, CR, OR LF ?
       CMPA   #$52     ;'R' ?
       BNE    LBF938   ;
       JMP    CONT     ;
LBF938 CMPA   #$43     ;'C' ?
       BNE    LBF922   ;
       LDAA   #$FF     ;
LBF93E RTS             ;RETURN TO CALLER
*
* READ CHAR AND SUPPRESS 'DEL'S
LBF93F SEC             ;SET CARRY
       ROL    AECHO    ;
       JSR    LBFAA5   ;READ HEX CHAR
       CMPA   #$7F     ;'DEL' ?
       BEQ    LBF93F   ;LOOP...
       RTS             ;RETURN TO CALLER

LBF94B BSR    LBF93F   ;READ & SUPPRESS 'DEL'
       ASLA            ;MOVE LO
       ASLA            ; NIBBLE
       ASLA            ;  TO
       ASLA            ;   HI NIBBLE
       TAB             ;
       BSR    LBF93F   ;READ & SUPPRESS 'DEL'
       ABA             ;
       STAA   0,X      ;STORE INPUT
       ADDA   LBFF8B   ;UPDATE CHECKSUM
       STAA   LBFF8B   ;.
       CPX    #LBFFD5  ;END OF BUFFER ?
       BEQ    LBF963   ;
       INX             ;EXTRA INC ???
LBF963 RTS             ;RETURN TO CALLER
*
* PRINT AND READ 4 HEX-DEC CHARACTERS TO STORE
LBF964 STX    LBFF56   ;SAVE X
       LDAA   #4       ;4 HEX-DECIMAL CHAR
       STAA   LBFF5C   ;
       JSR    OUT4HS   ;PRINT 4 HEX
       BRA    LBF97C   ;
*
* PRINT AND READ 2 HEX-DEC CHARACTERS TO STORE
LBF971 STX    LBFF56   ;
       LDAA   #2       ;2 HEX-DECIMAL CHAR
       STAA   LBFF5C   ;
       JSR    OUT2H    ;PRINT 2 HEX

LBF97C JSR    LBFA62   ;READ 2 OR 4 HEX
       LDX    LBFF56   ;
       JSR    LBFA50   ;X, ^, CR, OR LF ?
       BNE    LBF9BD   ;NO, RETURN
       TSTB            ;
       BEQ    LBF9B7   ;RETURN
       CMPB   LBFF5C   ;
       BHI    LBF9BD   ;RETURN
       CMPB   LBFF07   ;
       BHI    LBF9BD   ;RETURN
       LDAB   LBFF5C   ;
       CMPB   #$02     ;
       BEQ    LBF9AE   ;
       LDAB   LBFF08   ;
       STAB   0,X      ;STORE IT
       CMPB   0,X      ;SAVE SUCCESFULL ?
       BEQ    LBF9AD   ;YES
LBF9A4 LDX    #LBFB5A  ;'NO CHANGE'
       JSR    PDATA    ;PRINT IT
       JMP    LBF0F9   ;PRT '*' PROMPT

LBF9AD INX             ;
LBF9AE LDAB   LBFF08+1 ;
       STAB   0,X      ;
       CMPB   0,X      ;SAVE SUCCESFULL ?
       BNE    LBF9A4   ;'NO CHANGE'
LBF9B7 CLRB            ;
       LDX    LBFF56   ;
       TSTB            ;
       RTS             ;RETURN TO CALLER
LBF9BD LDAB   #$FF     ;
       RTS             ;RETURN TO CALLER
*
* CONVERT HI NIBBLE TO HEX ASCII
LBF9C0 LSRA            ;MOVE HI NIBLE TO LO
       LSRA            ;
       LSRA            ;
       LSRA            ;
* CONVERT LO NIBBLE TO HEX ASCII
LBF9C4 ANDA   #$0F     ;REMOVE HI NIBBLE
       ADDA   #$30     ;MAKE IT ASCII
       CMPA   #$39     ;NUMERIC ?
       BLS    LBF9CE   ;YES
       ADDA   #$07     ;MAKE IT A-F
LBF9CE RTS             ;RETURN TO CALLER
*
* PRINT ONE CHARACTER
LBF9CF PSHB            ;SAVE B
LBF9D0 LDAB   ACIACS   ;TX BUFFER EMPTY ?
       BITB   #$02     ;
       BEQ    LBF9D0   ;WAIT...
       STAA   ACIADT   ;TRANSMIT DATA
       PULB            ;RESTORE B
       RTS             ;RETURN TO CALLER
*
* OUTPUT ON CHAR
OUTCH  EQU    *        ;
       PSHB            ;SAVE B
LBF9DD LDAB   ACIACS   ;READ ACIA CS
       BITB   #$02     ;TX BUFFER EMPTY ?
       BEQ    LBF9DD   ;WAIT...
       STAA   ACIADT   ;TRANSMIT DATA
       CMPA   #$0D     ;CR ?
       BNE    LBFA06   ;NO
       TST    LBFF62   ;TST ??? FLAG
       BNE    LBF9F9   ;
       LDAB   #$17     ;
       TST    LBFF02   ;TST ??? FLAG
       BEQ    LBFA04   ;EXIT
       BMI    LBF9FB   ;
* PRINT 4 NULL CHAR
LBF9F9 LDAB   #4       ;SET LOOP CNTR
LBF9FB PSHA            ;
       LDAA   #$00     ;LOAD NULL
       BSR    LBF9CF   ;PRINT IT
       PULA            ;
       DECB            ;
       BNE    LBF9FB   ;LOOP...
LBFA04 PULB            ;
       RTS             ;RETURN TO CALLER
*
LBFA06 TST    LBFF02   ;
       BPL    LBFA04   ;
       TST    LBFF62   ;
       BNE    LBFA04   ;
       LDAB   #3       ;PRINT 3 NULL CHAR
       BRA    LBF9FB   ;.
*
* PRINT 2 HEX CHAR POINTED BY X                     ;
LBFA14 LDAA   0,X      ;PRINT HEX CHAR
       BSR    LBF9C0   ;GET HI NIBBLE
       BSR    OUTCH    ;PRINT IT
       LDAA   0,X      ;
       BSR    LBF9C4   ;GET LO NIBBLE
       BSR    OUTCH    ;PRINT IT
       INX             ;
       RTS             ;RETURN TO CALLER

OUT4HS EQU    *        ;PRINT 4 HEXDEC CHAR
       BSR    LBFA14   ;
OUT2H  EQU    *        ;PRINT 2 HEXDEC CHAR
       BSR    LBFA14   ;
PSPAC  LDAA   #$20     ;SPACE
LBFA28 BSR    OUTCH    ;PRINT IT
       RTS             ;RETURN TO CALLER

LBFA2B BSR    LBFA14   ;PRINT 2 HEX
       BSR    LBFA14   ;.
       LDAA   #$2F     ;'/'
       BRA    LBFA28   ;PRINT IT

PDATA  BSR    PCRLF    ;PRINT STRING
PDAT1  LDAA   0,X      ;
       CMPA   #$04     ;EOF ?
       BEQ    LBFA40   ;
       BSR    OUTCH    ;PRINT IT
       INX             ;
       BRA    PDAT1    ;LOOP...
LBFA40 RTS             ;RETURN TO CALLER
*
*    VECTOR ENTRY 12   ;
PCRLF  LDAA   #$0A     ;XMIT LF
       BSR    OUTCH    ;PRINT IT
PCR    LDAA   #$0D     ;XMIT CR
       BSR    OUTCH    ;PRINT IT
       LDAA   #$00     ;XMIT NULL
       BSR    OUTCH    ;PRINT IT
       RTS             ;RETURN TO CALLER

LBFA4E BSR    INCHNP   ;READ ASCII CHAR
LBFA50 CMPA   #$58     ;'X' ?
       BNE    LBFA57   ;
       JMP    RSTART   ;RESTART EXBUG

LBFA57 CMPA   #$5E     ;'^'
       BEQ    LBFA61   ;
       CMPA   #$0D     ;CR ?
       BEQ    LBFA61   ;
       CMPA   #$0A     ;LF ?
LBFA61 RTS             ;RETURN TO CALLER

LBFA62 LDX    #LBFF08  ;
*    VECTOR ENTRY 6    ;
LBFA65 CLR    LBFF07   ;CLEAR CNTR
       CLR    0,X      ;CLEAR INPUT AREA
       CLR    1,X      ;
LBFA6C BSR    LBFAA5   ;READ HEX CHAR
       BMI    LBFA87   ;INVALID HEX ?
       LDAB   #4       ;SHIFT
LBFA72 ASL    1,X      ; WORD
       ROL    0,X      ;  4 BITS
       DECB            ;   LEFT
       BNE    LBFA72   ;
       ORAA   1,X      ;INSERT
       STAA   1,X      ; LOW NIBBLE
       INC    LBFF07   ;MAX
       LDAB   LBFF07   ; 4
       CMPB   #5       ;  CHAR
       BNE    LBFA6C   ;LOOP...
LBFA87 LDAB   LBFF07   ;LOAD CNTR 0=OK
       RTS             ;RETURN TO CALLER
*
* INPUT ONE CHARACTER
INCH   LDAA   ACIACS   ;
       ASRA            ;
       BCC    INCH     ;WAIT...
       LDAA   ACIADT   ;
       TST    AECHO    ;ECHO ENABLED ?
       BNE    LBFA9C   ;NO
       JMP    OUTCH    ;ECHO INPUT
LBFA9C CLR    AECHO    ;DISABLE ECHO
       RTS             ;RETURN TO CALLER

INCHNP EQU    *        ;INP ON CHAR WITHOUT PARITY
       BSR    INCH     ;
       ANDA   #$7F     ;REMOVE PARITY BIT
       RTS             ;RETURN TO CALLER

LBFAA5 BSR    INCHNP   ;READ ASCII CHAR
CBCDHX CMPA   #$30     ;'0' ?
       BMI    LBFABC   ;INVALID HEX CHAR ?
       CMPA   #$39     ;'9' ?
       BLE    LBFAB9   ;0-9
       CMPA   #$41     ;'A' ?
       BMI    LBFABC   ;INVALID HEX CHAR ?
       CMPA   #$46     ;'F' ?
       BGT    LBFABC   ;INVALID HEX CHAR ?
       SUBA   #$07     ;MAKE IT HEX A-F
LBFAB9 ANDA   #$0F     ;REMOVE HI NIBBLE
       RTS             ;RETURN TO CALLER
LBFABC TST    LBFAF4   ;SET INVALID HEX
       RTS             ;RETURN TO CALLER

LBFAC0 JSR    OUTCH    ;PRINT IT
       LDAA   #$2D     ;'-'
       JSR    OUTCH    ;PRINT IT
       RTS             ;RETURN TO CALLER

LBFAC9 JSR    PCRLF    ;
LBFACC LDX    #LBFF16  ;GET USER REGS ADDR
       LDAA   #$50     ;'P'
       BSR    LBFAEE   ;PRINT '-' + 4 HEX
       LDAA   #$58     ;'X'
       BSR    LBFAEE   ;PRINT '-' + 4 HEX
       LDAA   #$41     ;'A'
       BSR    LBFAE8   ;PRINT '-' + 2 HEX
       LDAA   #$42     ;'B'
       BSR    LBFAE8   ;PRINT '-' + 2 HEX
       LDAA   #$43     ;'C'
       BSR    LBFAE8   ;PRINT '-' + 2 HEX
       LDAA   #$53     ;'S'
       BSR    LBFAEE   ;PRINT '-' + 4 HEX
       RTS             ;RETURN TO CALLER

LBFAE8 BSR    LBFAC0   ;PRINT '-'
       JSR    OUT2H    ;FOLLOWED 2 HEX CHAR
       RTS             ;RETURN TO CALLER

LBFAEE BSR    LBFAC0   ;PRINT '-'
       JSR    OUT4HS   ;FOLLOWED 4 HEX CHAR
       RTS             ;RETURN TO CALLER
LBFAF4 FCB    $FF      ;
       PAGE   60
****************************************************
*      EXBUG COMMANDS
****************************************************
LBFAF5 FCC    "LOAD"   ;
       FDB    LOAD     ;
       FCC    "VERF"   ;
       FDB    VERF     ;
       FCC    "SRCH"   ;
       FDB    SRCH     ;
       FCC    "PRNT"   ;
       FDB    LBF719   ;
       FCC    "PNCH"   ;
       FDB    LBF719   ;
       FCC    "MAID"   ;
       FDB    MAID     ;

       FCC    "S10."   ;
       FDB    LBF623   ;
       FCC    "S30."   ;
       FDB    LBF626   ;
       FCC    "S120"   ;
       FDB    LBF62D   ;

LBFB2B FCC    "EXBUG 1.1 "
       FCB    4        ;
LBFB36 FCC    "BEG ADDR "
       FCB    4        ;
LBFB40 FCC    "END ADDR "
       FCB    4        ;
LBFB4A FCC    "CONT/LOAD/VERF "
       FCB    4        ;
LBFB5A FCC    "NO CHANGE"
       FCB    $07,4    ;
LBFB65 FCC    "CKSM "
       FCB    4        ;
LBFB6B FCC    "ADDR/MEM/TAPE"
       FCB    4        ;
LBFB79 FCC    " INVL"
       FCB    4        ;
LBFB7F FCC    "EXEC "
       FCB    4        ;
LBFB85 FCC    "SGL/CONT "
       FCB    4        ;
LBFB8F FCC    "STOP-ON-ADDRESS "
       FCB    4        ;
LBFBA0 FCC    "STOP ADDR "
       FCB    4        ;
LBFBAB FCC    "ABORTED AT "
       FCB    4        ;
LBFBB7 FCB    $14      ;DC4 PUNCH OFF
LBFBB8 FCB    $13      ;DC3 READER OFF
       FCB    $00,$00,$00,$00,4  ;
LBFBBE FCB    $07,$20,$3F,4      ; ' ?'
LBFBC2 FCC    "*"      ;
       FCB    4        ;
LBFBC4 FCC    "BKPT ERROR "
       FCB    4        ;
LBFBD0 FCB    $0D,$0A,$00
       FCB    $53,$31,$04   ; S1 EOF
LBFBD6 FCB    $0D,$0A,$00
       FCC    "S9030000FC"  ; S9 END RECORD
       FCB    $0D,4    ;
LBFBE5 FCB    $0D,$0A,$00
       FCC    "S00B00005820" ; S0 RECORD HEADER
       FCB    4        ;
LBFBF5 FCC    "HDR=X " ;
       FCB    4        ;
LBFBFA EQU    $FBFA
       FCB    $04,$04,$F6,$EA
LBFBFD EQU    $FBFD

       PAGE   60
****************************************************
*      MEMORY MAPPED I/O DEVICES
****************************************************
       ORG    $FCF0
       FCB    $00      ;0
       FCB    $00      ;1
       FCB    $00      ;2
       FCB    $00      ;3
* ACIA
ACIACS FCB    $00      ;CONTROL/STATUS REG
ACIADT FCB    $3D      ;TX/RX DATA REG
       FCB    $00      ;
       FCB    $00      ;
* PIA#1
LBFCF8 FCB    $FF      ;DATA PORT A
* PA0 - PA7 ADDR BUS COMPARE A0-A7
LBFCF9 FCB    $3C      ;CONTROL REG A
LBFCFA FCB    $FF      ;DATA PORT B
* PB0 - PB7 ADDR BUS COMPARE A8-A15
LBFCFB FCB    $34      ;CONTROL REG B
* PIA#2
LBFCFC EQU    $FCFC    ;DATA PORT A
* PA0  OUT PINS 74166
* PA1  OUT B PIN 74166
* PA3  INP ?
* PA4  OUT D PIN 74166
* PA5  COMP VUA ?
* PA6  ???

LBFCFD EQU    $FCFD    ;CONTROL REG A
LBFCFE EQU    $FCFE    ;DATA PORT B
* PB7 FIRQ
LBFCFF EQU    $FCFF    ;CONTROL REG B

       PAGE   60
****************************************************
*      RAM AREA IN TOP OF MEMORY $FF00 - $FFFF
****************************************************
       ORG    $FF00    ;
LBFF00 FDB    $83FF    ;USER PGM START ADDR
LBFF02 FCB    $00      ;??? FLAG 0 1 2 ?
* EXBUG COMMAND INPUT BUFFER
LBFF03 FCC    "MAID"   ;
LBFF07 FCB    $04      ; .
LBFF08 FDB    $0000    ;GENERAL ADDRESS INPUT
LBFF0A FDB    $0000    ;BEGIN ADDRESS
LBFF0C FDB    $0000    ;END ADDRESS
LBFF0E FDB    $0000    ;SEARCH START ADDRESS
LBFF10 FDB    $0000    ;SEARCH END ADDRESS
LBFF12 FCB    $00      ;SEARCH MASK
LBFF13 FCB    $00      ;
LBFF14 FDB    $0000    ;TRACE END ADDRESS

LBFF16 FDB    $E800    ;USER PC-SAVE
LBFF17 EQU    LBFF16+1 ;USER PC LO
       FDB    $0000    ;USER X-SAVE
       FCB    $00      ;USER A-SAVE
       FCB    $00      ;USER B-SAVE
LBFF1C FCB    $00      ;USER CC-SAVE
LBFF1D FDB    $FF8A    ;USER SP-SAVE
*
* TABLE FOR EIGHT USER PRGM BREAK POINTS
BRKPTS FDB    $0000    ;8 BREAK POINTS
       FDB    $0000    ;
       FDB    $0000    ;
       FDB    $0000    ;
       FDB    $0000    ;
       FDB    $0000    ;
       FDB    $0000    ;
       FDB    $0000    ;

LBFF2F FCB    $00,$00  ;SAVE ORG USER OPCODE
       FCB    $00,$00  ;
       FCB    $00,$00  ;
       FCB    $00,$00  ;
       FCB    $00,$00  ;
       FCB    $00,$00  ;
       FCB    $00,$00  ;
       FCB    $00,$00  ;

LBFF3F FDB    $0000    ;BP HIT COUNTERS
       FDB    $0000    ;
       FDB    $0000    ;
       FDB    $0000    ;
       FDB    $0000    ;
       FDB    $0000    ;
       FDB    $0000    ;
       FDB    $0000    ;

       ORG    $FF4F    ;
LBFF4F FCB    $FF      ;??? FLAG
LBFF50 FCB    $00      ;??? FLAG
LBFF51 FDB    $0000    ;HI TRACE STEP COUNTER
AECHO  FCB    $00      ;DIS/ENABLE INPUT ECHO
LBFF54 FCB    $00      ;??? FLAG
       FCB    $00      ;
LBFF56 FDB    $0000    ;NNNN/ ADDR
LBFF58 FCB    $00      ;
       FCB    $00      ;
LBFF5A FCB    $00      ;TEMP USED BY CONV.
LBFF5B FCB    $00      ;.
LBFF5C FCB    $00      ;READ 2 OR 4 HEXDEC CHAR
LBFF5D FCB    $00      ;??? FLAG
LBFF5E FDB    $0000    ;$S STOP ADDR
LBFF60 FCB    $00      ;??? FLAG
LBFF61 FCB    $00      ;??? FLAG
LBFF62 FCB    $00      ;

BRKPES FCB    $00,$00,$00,$00 ; S
       FCB    $00,$00,$00,$00 ; T
       FCB    $00,$00,$00,$00 ; A
       FCB    $00,$00,$00,$00 ; C
       FCB    $00,$00,$00,$00 ; K
       FCB    $00,$00,$00,$00 ;
       FCB    $00,$00,$00,$00 ; A
       FCB    $00,$00,$00,$00 ; R
       FCB    $00,$00,$00,$00 ; E
       FCB    $00,$00,$00     ; A
EXOSTK FCB    $00      ;EXBUG STACK

LBFF8B FCB    $32      ;CHECK SUM
LBFF8C FCB    $03      ;TEMP
* 6 CHAR BUFFER FOR HDR-X ......
LBFF8D FCB    $42      ;B
LBFF8E FCB    $47      ;G
       FCB    $32      ;2
LBFF90 FCB    $41      ;A
       FCB    $20,$20  ;SPACE

LBFF93 FCB    $86,$1F  ;DUMP END ADDRESS ???
       FCB    $01      ;
       FCB    $0B      ;
       FCB    $09      ;
       FCB    $12      ;
       FCB    $4F      ;
       FCB    $02      ;
       FCB    $42      ;
       FCB    $87      ;
       FCB    $00      ;
       FCB    $53      ;
       FCB    $83      ;
       FCB    $02      ;
       FCB    $7F      ;
       FCB    $00      ;
       FCB    $16      ;
       FCB    $6F      ;
       FCB    $12      ;
       FCB    $37      ;
       FCB    $01      ;
       FCB    $11      ;
       FCB    $4F      ;
       FCB    $00      ;
       FCB    $56      ;
       FCB    $43      ;
       FCB    $02      ;
       FCB    $13      ;
       FCB    $05      ;
       FCB    $90,$7B  ;
       FCB    $00      ;
       FCB    $36      ;
       FCB    $A7,$10  ;
       FCB    $0F      ;
       FCB    $01      ;
       FCB    $10      ;
       FCB    $B7,$00,$76
       FCB    $27,$00  ;
       FCB    $1F      ;
       FCB    $83      ;
       FCB    $10      ;
       FCB    $CF      ;
       FCB    $80,$76  ;
       FCB    $2F,$40  ;
       FCB    $03      ;
       FCB    $09      ;
       FCB    $10      ;
       FCB    $2F      ;
       FCB    $00      ;
       FCB    $76,$2F,$C0
       FCB    $0B      ;
       FCB    $00      ;
       FCB    $10      ;
       FCB    $CF      ;
       FCB    $00      ;
       FCB    $56      ;
       FCB    $3F      ;
LBFFD5 FCB    $09      ;END PUNCH BUFFER ???
       FCB    $1F      ;
       FCB    $85,$52  ;
       FCB    $DA,$00  ;
       FCB    $26,$47  ;
       FCB    $C1,$6F  ;
       FCB    $03      ;
       FCB    $10      ;
       FCB    $2F,$00  ;
       FCB    $16      ;
       FCB    $4F      ;
       FCB    $8B,$17  ;
       FCB    $01      ;
       FCB    $19      ;
       FCB    $DF,$00  ;
       FCB    $56      ;
       FCB    $3F      ;
       FCB    $A3      ;
       FCB    $9B,$10  ;
       FCB    $10      ;
       FCB    $DF,$00  ;
       FCB    $96,$8B  ;
       FCB    $91,$83  ;
       FCB    $49      ;

       ORG    $FFF8    ;
IRQSVC FDB    $0000    ;IRQ VECTOR
SWISVC FDB    SWI      ;SWI VECTOR
NMISVC FDB    NMI      ;NMI VECTOR
PWRSVC FDB    PWRUP    ;START VECTOR

       END    START    ;
