home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
SIMTEL
/
CPMUG
/
CPMUG008.ARK
/
SYMPRT.ASM
< prev
next >
Wrap
Assembly Source File
|
1984-04-29
|
4KB
|
214 lines
;---------------------------------------------------------
; PRINT BASIC-E SYMBOL TABLE
;
; SYMPRT-E.ASM - VERSION 0.1 - 5 NOV 77
;
; JEFFREY W. SHOOK, PO BOX 185, ROCKY POINT, NY 11778
;
;------------------------------------------------------
; THIS PROGRAM PRINTS THE SYMBOL TABLE LEFT IN
; MEMORY BY THE BASIC-E COMPILER VERSION K2.0.
; EACH ENTRY IN THE TABLE IS FORMATTED AS FOLLOWS:
;
; # USE BYTES
;
; 1) LABEL LENGTH 1
; 2) PARAMETER 1 2
; 3) SYMBOL NAME N
; 4) ENTRY TYPE 1
; 5) PARAMETER 2 2
; 6) UNUSED 1
; EACH TABLE ENTRY IS PRINTED IN THE FOLLOWING FORMAT:
; TBLADR / NAMELEN / PARAM1 / ENTTYP / PARAM2 / SYMBOLNAM
; TBLADR = ADDRESS OF ENTRY IN MEMORY
; NAMLEN = NUMBER OF BYTES IN SYMBOL NAME
; PARAM1 = POINTER TO RELATED ENTRY
; ENTTYP = TYPE OF ENTRY
; PARAM2 = ?
; SYMBOLNAM = SYMBOL NAME
; ENTRIES IN THE SYMBOL TABLE WHICH WERE
; MADE AUTOMATICALLY BY THE COMPILER ARE SHOWN AS AN
; OCTOTHORPE " # " FOLLOWED BY A 2 DIGIT HEXIDECIMAL
; NUMBER.
; ENTRY TYPE CODES ARE AS FOLLOWS:
;
; 1) " H " = LINE NUMBER REFERENCE
; 2) " @ " = SYMBOL
; 3) " D " = ???
BDOS EQU 5
WCON EQU 2
WCONB EQU 9
CR EQU 0DH
LF EQU 0AH
SYMTBL EQU 3044H ; START ADDRESS OF SYMBOL TABLE
ORG 100H
SYMPRT:
LXI H,0
DAD SP
SHLD SPSAV
LXI SP,STACK
LXI D,TITLM
MVI C,WCONB
CALL BDOS
LXI H,SYMTBL
SYMPR1:
MVI B,32
CALL OUTHHL ; PRINT ENTRY ADDRESS
CALL OUTS
CALL OUTHMI ; PRINT LABEL SIZE
CALL OUTS
CALL OUTMAIS ; PRINT FIRST PARAMETER
PUSH H
SYMPR9:
MOV A,M ; SKIP OVER LABEL
ORA A
INX H
JP SYMPR9
SBI 40H ; PRINT ENTRY TYPE CODE
CALL OUTCH
CALL OUTS
CALL OUTMAIS ; PRINT SECOND PARAMETER
CALL OUTS
CALL OUTS
POP H
MOV A,M ; CHECK FOR GENERATED LABEL
CPI 17H
JZ SYMPR8
SYMPR2:
MOV A,M ; PRINT LABEL
ORA A
JM SYMPR3
INX H
CALL OUTCH
DCR B
JNZ SYMPR2
LHLD SPSAV
SPHL
JMP BDOS ; RETURN TO CP/M
SYMPR3:
CALL CRLF ; END LINE AND MOVE PTR TO NEXT ENTRY
INX H
INX H
INX H
INX H
JMP SYMPR1
SYMPR8:
INX H ; PRINT GENERATED LABEL
MVI A,'#'
CALL OUTCH
CALL OUTS
CALL OUTHMI
JMP SYMPR3
;++++++++++++++++++++++++++++++++++++++++++++++
;
; HEXIDECIMAL REGISTER OUTPUT
;
; HEXOUT.LIB - VERSION 0.2 - 12 SEP 77
;
;++++++++++++++++++++++++++++++++++++++++++++++
; FUNCTIONS AVAILABLE:
;
; OUTHR PRINT RIGHT HEX DIGIT FROM A
; OUTHL PRINT LEFT HEX DIGIT FROM A
; OUT2H PRINT 2 HEX DIGITS FROM A
; OUTHM PRINT M
; OUTHMI PRINT M ; HL <+ HL - 1
; OUTHMD PRINT M ; HL <- HL - 1
; OUTH2M PRINT M ; HL <- HL - 1
; PRINT M ; HL <- HL - 1
; OUTHHL PRINT HL
OUTHHL: MOV A,H ; PRINT HL
CALL OUT2H
MOV A,L
JMP OUT2H
OUTH2M: CALL OUTHMD ; PRINT 2 BYTES POINTED BY HL
OUTHMD: MOV A,M
DCX H
JMP OUT2H
OUTHMI: MOV A,M
INX H
OUT2H: PUSH PSW
CALL OUTHL
POP PSW
JMP OUTHR
OUTHL: RRC
RRC
RRC
RRC
OUTHR: ANI 0FH
ADI '0'
CPI '9'+1
JC OUTHR1
ADI '@'-'9'
OUTHR1: JMP OUTCH
CRLF:
MVI A,0DH
CALL OUTCH
MVI A,0AH
CALL OUTCH
RET
OUTMAIS:
PUSH D
MOV E,M
INX H
MOV D,M
INX H
PUSH H
XCHG
CALL OUTHHL
POP H
POP D
CALL OUTS
RET
OUTHMIS:
CALL OUTHMI
OUTS:
MVI A,' '
OUTCH:
PUSH PSW
PUSH B
PUSH D
PUSH H
MVI C,WCON
MOV E,A
CALL BDOS
POP H
POP D
POP B
POP PSW
RET
TITLM: DB CR,LF,'BASIC-E SYMBOL TABLE',CR,LF,CR,LF,'$'
SPSAV: DS 2
DS 128
STACK:
END