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 >
Assembly Source File  |  1984-04-29  |  4KB  |  214 lines

  1. ;---------------------------------------------------------
  2. ; PRINT BASIC-E SYMBOL TABLE
  3. ;
  4. ; SYMPRT-E.ASM  -  VERSION 0.1  -  5 NOV 77
  5. ;
  6. ; JEFFREY W. SHOOK, PO BOX 185, ROCKY POINT, NY 11778
  7. ;
  8. ;------------------------------------------------------
  9.  
  10. ;    THIS PROGRAM PRINTS THE SYMBOL TABLE LEFT IN
  11. ; MEMORY BY THE BASIC-E COMPILER VERSION K2.0.
  12. ; EACH ENTRY IN THE TABLE IS FORMATTED AS FOLLOWS:
  13. ;
  14. ;    #   USE              BYTES
  15. ;
  16. ;    1)  LABEL LENGTH     1
  17. ;    2)  PARAMETER 1      2
  18. ;    3)  SYMBOL NAME      N
  19. ;    4)  ENTRY TYPE       1
  20. ;    5)  PARAMETER 2      2
  21. ;       6)  UNUSED           1
  22.  
  23.  
  24. ; EACH TABLE ENTRY IS PRINTED IN THE FOLLOWING FORMAT:
  25.  
  26. ; TBLADR / NAMELEN / PARAM1 / ENTTYP / PARAM2 / SYMBOLNAM
  27.  
  28. ;    TBLADR      = ADDRESS OF ENTRY IN MEMORY
  29. ;    NAMLEN      = NUMBER OF BYTES IN SYMBOL NAME
  30. ;    PARAM1      = POINTER TO RELATED ENTRY
  31. ;    ENTTYP      = TYPE OF ENTRY
  32. ;    PARAM2      = ?
  33. ;    SYMBOLNAM   = SYMBOL NAME
  34.  
  35. ;    ENTRIES IN THE SYMBOL TABLE WHICH WERE
  36. ; MADE AUTOMATICALLY BY THE COMPILER ARE SHOWN AS AN
  37. ; OCTOTHORPE " # " FOLLOWED BY A 2 DIGIT HEXIDECIMAL
  38. ; NUMBER.
  39. ;    ENTRY TYPE CODES ARE AS FOLLOWS:
  40. ;
  41. ;    1) " H " = LINE NUMBER REFERENCE
  42. ;    2) " @ " = SYMBOL
  43. ;    3) " D " = ???
  44.  
  45.  
  46. BDOS    EQU    5
  47. WCON    EQU    2
  48. WCONB    EQU    9
  49. CR    EQU    0DH
  50. LF    EQU    0AH
  51. SYMTBL    EQU    3044H    ; START ADDRESS OF SYMBOL TABLE
  52.  
  53.     ORG    100H
  54.  
  55. SYMPRT:
  56.     LXI    H,0
  57.     DAD    SP
  58.     SHLD    SPSAV
  59.     LXI    SP,STACK
  60.     LXI    D,TITLM
  61.     MVI    C,WCONB
  62.     CALL    BDOS
  63.     LXI    H,SYMTBL
  64. SYMPR1:
  65.     MVI    B,32
  66.     CALL    OUTHHL    ; PRINT ENTRY ADDRESS
  67.     CALL    OUTS
  68.     CALL    OUTHMI    ; PRINT LABEL SIZE
  69.     CALL    OUTS
  70.     CALL    OUTMAIS    ; PRINT FIRST PARAMETER
  71.     PUSH    H
  72. SYMPR9:
  73.     MOV    A,M    ; SKIP OVER LABEL
  74.     ORA    A
  75.     INX    H
  76.     JP    SYMPR9
  77.     SBI    40H    ; PRINT ENTRY TYPE CODE
  78.     CALL    OUTCH
  79.     CALL    OUTS
  80.     CALL    OUTMAIS    ; PRINT SECOND PARAMETER
  81.     CALL    OUTS
  82.     CALL    OUTS
  83.     POP    H
  84.     MOV    A,M    ; CHECK FOR GENERATED LABEL
  85.     CPI    17H
  86.     JZ    SYMPR8
  87. SYMPR2:
  88.     MOV    A,M    ; PRINT LABEL
  89.     ORA    A
  90.     JM    SYMPR3
  91.     INX    H
  92.     CALL    OUTCH
  93.     DCR    B
  94.     JNZ    SYMPR2
  95.     LHLD    SPSAV
  96.     SPHL
  97.     JMP    BDOS    ; RETURN TO CP/M
  98.  
  99.  
  100. SYMPR3:
  101.     CALL    CRLF    ; END LINE AND MOVE PTR TO NEXT ENTRY
  102.     INX    H
  103.     INX    H
  104.     INX    H
  105.     INX    H
  106.     JMP    SYMPR1
  107.  
  108. SYMPR8:
  109.     INX    H    ; PRINT GENERATED LABEL
  110.     MVI    A,'#'
  111.     CALL    OUTCH
  112.     CALL    OUTS
  113.     CALL    OUTHMI
  114.     JMP    SYMPR3
  115.  
  116.  
  117. ;++++++++++++++++++++++++++++++++++++++++++++++
  118. ;
  119. ; HEXIDECIMAL REGISTER OUTPUT
  120. ;
  121. ; HEXOUT.LIB  -  VERSION 0.2  -  12 SEP 77
  122. ;
  123. ;++++++++++++++++++++++++++++++++++++++++++++++
  124.  
  125. ; FUNCTIONS AVAILABLE:
  126. ;
  127. ;    OUTHR    PRINT RIGHT HEX DIGIT FROM A
  128. ;    OUTHL    PRINT LEFT HEX DIGIT FROM A
  129. ;    OUT2H    PRINT 2 HEX DIGITS FROM A
  130. ;    OUTHM    PRINT M
  131. ;    OUTHMI    PRINT M ; HL <+ HL - 1
  132. ;    OUTHMD    PRINT M ; HL <- HL - 1
  133. ;    OUTH2M    PRINT M ; HL <- HL - 1
  134. ;        PRINT M ; HL <- HL - 1
  135. ;    OUTHHL    PRINT HL
  136.  
  137. OUTHHL:    MOV    A,H    ; PRINT HL
  138.     CALL    OUT2H
  139.     MOV    A,L
  140.     JMP    OUT2H
  141.  
  142. OUTH2M:    CALL    OUTHMD    ; PRINT 2 BYTES POINTED BY HL
  143. OUTHMD:    MOV    A,M
  144.     DCX    H
  145.     JMP    OUT2H
  146.  
  147. OUTHMI:    MOV    A,M
  148.     INX    H
  149. OUT2H:    PUSH    PSW
  150.     CALL    OUTHL
  151.     POP    PSW
  152.     JMP    OUTHR
  153.  
  154. OUTHL:    RRC
  155.     RRC
  156.     RRC
  157.     RRC
  158. OUTHR:    ANI    0FH
  159.     ADI    '0'
  160.     CPI    '9'+1
  161.     JC    OUTHR1
  162.     ADI    '@'-'9'
  163. OUTHR1:    JMP    OUTCH
  164.  
  165. CRLF:
  166.     MVI    A,0DH
  167.     CALL    OUTCH
  168.     MVI    A,0AH
  169.     CALL    OUTCH
  170.     RET
  171.  
  172.  
  173.  
  174. OUTMAIS:
  175.     PUSH    D
  176.     MOV    E,M
  177.     INX    H
  178.     MOV    D,M
  179.     INX    H
  180.     PUSH    H
  181.     XCHG
  182.     CALL    OUTHHL
  183.     POP    H
  184.     POP    D
  185.     CALL    OUTS
  186.     RET
  187.  
  188. OUTHMIS:
  189.     CALL    OUTHMI
  190. OUTS:
  191.     MVI    A,' '
  192. OUTCH:
  193.     PUSH    PSW
  194.     PUSH    B
  195.     PUSH    D
  196.     PUSH    H
  197.     MVI    C,WCON
  198.     MOV    E,A
  199.     CALL    BDOS
  200.     POP    H
  201.     POP    D
  202.     POP    B
  203.     POP    PSW
  204.     RET
  205.  
  206. TITLM:    DB    CR,LF,'BASIC-E SYMBOL TABLE',CR,LF,CR,LF,'$'
  207.  
  208. SPSAV:    DS    2
  209.     DS    128
  210. STACK:
  211.  
  212.     END
  213.  
  214.