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

127 lines
3.1 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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