A2osX/SCMASM.30/SCMASM.S.PSYM.txt

127 lines
3.1 KiB
Plaintext
Raw Permalink Normal View History

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.30/scmasm.s.psym
LOAD usr/src/scmasm.30/scmasm.s
ASM