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