NEW
  AUTO 3,1
*--------------------------------------
*--------------------------------
*      PRINT SYMBOL TABLE IN ALPHABETICAL ORDER
*--------------------------------
SYMBOLS
STPRNT LDY #2       SKIP OVER .TF PSEUDO-SYMBOLS
.1     STY PNTR
       LDA HSHTBL,Y
       STA STPNTR
       LDA HSHTBL+1,Y
       BEQ .5
       STA STPNTR+1
*---PRINT VALUE AND DASH---------
.2     LDY #2       POINT AT VALUE
.25    >SYM LDA,STPNTR
       STA SYM.VALUE-2,Y   SAVE FOR LOCAL OFFSETS
       INY
       CPY #6
       BCC .25
       LDY #3
.26    LDA SYM.VALUE,Y
       BNE .27      ...NON-ZERO BYTE
       JSR SPC
       JSR SPC
       DEY
       BNE .26      ...UNTIL LAST BYTE
.27    LDA SYM.VALUE,Y
       JSR MON.PHEX
       DEY
       BPL .27      ...INCLUDE LAST BYTE
       JSR P.DASH
       JSR SPC
*---PRINT NAME-------------------
       LDY #6
       >SYM LDA,STPNTR    GET NAME LENGTH
       PHA          SAVE AGAIN FOR LOCAL LABELS FLAG
       AND #$3F     ISOLATE LENGTH
       TAX
.3     INY
       >SYM LDA,STPNTR
       JSR CHO
       DEX
       BNE .3
*---CHECK FOR LOCAL LABELS-------
       PLA          GET LENGTH AND FLAGS
       BMI .6       LOCAL LABELS
*---NEXT LABEL-------------------
.4     JSR CRLF.WITH.PAGING
       LDY #1       POINT AT POINTER
       >SYM LDA,STPNTR
       PHA
       DEY
       >SYM LDA,STPNTR
       STA STPNTR
       PLA
       STA STPNTR+1
       BNE .2       NEXT SYMBOL IN THIS CHAIN, IF ANY
.5     LDY PNTR
       INY
       INY
       CPY #54      # BYTES IN HASH POINTER TABLE
       BNE .1
       RTS
*---PRINT LOCAL LABELS-----------
.6     AND #$3F     POINT AT FIRST LOCAL LABEL
       CLC
       ADC #7
       TAY
       LDA #1       FORCE CRLF BEFORE 1ST LABEL
       STA EMIT.COLUMN
.7     >SYM LDA,STPNTR
       BEQ .4       END OF LOCALS
       AND #$7F     ISOLATE NAME
       PHA          SAVE NAME OF SYMBOL
       STY YSAVE    SAVE POINTER
       DEC EMIT.COLUMN
       BNE .9       ...UNLESS NEED A NEW LINE
       JSR CRLF.WITH.PAGING  CLOBBERS Y-REG IF FORMFEED
       LDY #8
.81    JSR SPC
       DEY
       BNE .81
       LDY #7       ...SEVEN PER LINE
       LDA SYM.VALUE+2
       BEQ .82
       LDY #5       ...FIVE PER LINE
.82    STY EMIT.COLUMN
.9     JSR SPC
       JSR SPC
       LDA #CHR.PERIOD
       JSR CHO
       PLA          GET NAME
       STA CURRENT.LINE.NUMBER
       LDA #0
       STA CURRENT.LINE.NUMBER+1
       LDX #1       ONLY TWO DIGITS
       LDA #$40     PRINT ONLY, DO NOT STORE IN WBUF
       JSR CONVERT.LINE.NUMBER
       LDA #'='     EQUAL SIGN
       JSR CHO
       LDY YSAVE    GET VALUE OF SYMBOL
       INY
       >SYM LDA,STPNTR
       CLC
       ADC SYM.VALUE
       PHA
       LDA SYM.VALUE+1
       ADC #0
       PHA
       LDA SYM.VALUE+2
       ADC #0
       BEQ .10      PRINT ONLY TWO BYTES
       JSR MON.PHEX
.10    PLA
       JSR MON.PHEX
       PLA
       JSR MON.PHEX
       INY
       BNE .7       ...ALWAYS
*--------------------------------------
MAN
SAVE usr/src/scmasm.31/scmasm.s.psym
LOAD usr/src/scmasm.31/scmasm.s
ASM
