home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lang_asm / objxref / xrprnt.asm < prev    next >
Encoding:
Assembly Source File  |  1986-04-26  |  3.5 KB  |  216 lines

  1.  PAGE    81,128
  2.  TITLE    XRPRNT    - Print    Cross Ref Listing
  3.  SUBTTL    V1.0 - May 1986    - Cross    Reference Facility
  4. ;
  5. ;=============================================================================|
  6. ;         Copyright 1986 - Dan Daetwyler - Springdale, AR 72764          |
  7. ;=============================================================================|
  8.     .SALL
  9. ;
  10. DATA    SEGMENT    BYTE PUBLIC 'DATA'
  11. ;
  12.     PUBLIC    PAGNO,LCNT
  13. ;
  14.     EXTRN    MNAMES:BYTE,MEXTN:BYTE,MPUBN:BYTE,MPCNT:WORD
  15. ;
  16. ENAM1    DB    12 DUP (?)
  17.     DB    ' in '
  18. ENAM2    DB    12 DUP (?)
  19.     DB    ' ref by: ',0
  20. CRLF    DB    13,10,0
  21. ;
  22. CCNT    DW    90
  23. LCNT    DB    90
  24. PAGNO    DB    0
  25. ;
  26. LXREF    DB    15,27,'0CROSS REFERENCE LISTING  --  Page  ',0
  27. ;
  28. DATA    ENDS
  29. ;
  30. CODE    SEGMENT    BYTE PUBLIC 'CODE'
  31.     ASSUME    CS:CODE,DS:DATA,ES:DATA
  32. ;
  33. ;==============================================================================
  34. ; Entry    Point    XRPRNT                                  |
  35. ;==============================================================================
  36. ;                                          |
  37. ; This module uses the sorted public  references table to drive    through    the   |
  38. ; X reference listing.    All stacks are used.                      |
  39. ;                                          |
  40. ; Entry    conventions:    None.                              |
  41. ;                                          |
  42. ; Returns:        None.                              |
  43. ;                                          |
  44. ;==============================================================================
  45. ;
  46.     EXTRN    XRSRCH:NEAR
  47. ;
  48.     PUBLIC    XRPRNT
  49. ;
  50. XRPRNT    PROC    NEAR
  51.     MOV    CX,MPCNT        ;Count of publics
  52.     MOV    SI,OFFSET MPUBN        ;Point to stack
  53. LP:    CMP    LCNT,74
  54.     JBE    NOPAG
  55.     CALL    DOPAGE
  56. NOPAG:    CALL    CLEAR            ;Prepare print line buffer
  57.     MOV    DI,OFFSET ENAM1
  58.     CALL    MOVE            ;Put name in buffer
  59.     PUSH    SI
  60.     MOV    SI,WORD    PTR [SI+14]    ;Load module name pointer
  61.     MOV    DI,OFFSET ENAM2
  62.     CALL    MOVE
  63.     MOV    SI,OFFSET ENAM1
  64.     CALL    PRINT
  65.     POP    SI
  66.     MOV    DX,CCNT            ;Load remaining    line length
  67.     MOV    DI,OFFSET MEXTN        ;Point to start    of external names
  68. XLP:    CALL    XRSRCH            ;Search    for external reference
  69.     JC    NOMORE
  70.     XCHG    BX,SI
  71.     CALL    BMOVE
  72.     XCHG    BX,SI
  73.     ADD    DI,15
  74.     JMP    XLP
  75. NOMORE:    CALL    DCRLF
  76.     ADD    SI,16            ;Step to next stack entry
  77.     LOOP    LP
  78.     RET
  79. XRPRNT    ENDP
  80. ;
  81. MOVE    PROC    NEAR
  82.     PUSH    SI
  83.     PUSH    DI
  84.     PUSH    CX
  85.     XOR    CX,CX
  86.     MOV    CL,BYTE    PTR [SI]
  87.     INC    SI
  88.     REP    MOVSB
  89.     POP    CX
  90.     POP    DI
  91.     POP    SI
  92.     RET
  93. MOVE    ENDP
  94. ;
  95. BMOVE    PROC    NEAR
  96.     PUSH    CX
  97.     MOV    CL,BYTE    PTR [SI]        ;Get name length
  98.     XOR    CH,CH
  99.     INC    SI
  100.     SUB    DX,CX
  101.     JC    EOL
  102.     JZ    EOL
  103.     DEC    DX
  104.     JNZ    BNORM
  105. EOL:    PUSH    SI
  106.     PUSH    CX
  107.     CALL    DCRLF
  108.     MOV    CX,127
  109.     SUB    CX,CCNT
  110.     MOV    DL,' '
  111.     MOV    AH,5
  112. BPLP:    INT    21H
  113.     LOOP    BPLP
  114.     POP    CX
  115.     POP    SI
  116.     MOV    DX,CCNT
  117. BNORM:    MOV    AH,5
  118.     PUSH    DX
  119. BNLP:    LODSB
  120.     MOV    DL,AL
  121.     INT    21H
  122.     LOOP    BNLP
  123.     MOV    DL,' '
  124.     INT    21H
  125.     POP    DX
  126.     POP    CX
  127.     RET
  128. BMOVE    ENDP
  129. ;
  130. CLEAR    PROC    NEAR
  131.     PUSH    DI
  132.     PUSH    CX
  133.     MOV    CX,12
  134.     MOV    AL,' '
  135.     MOV    DI,OFFSET ENAM1
  136.     REP    STOSB
  137.     MOV    CX,12
  138.     MOV    DI,OFFSET ENAM2
  139.     REP    STOSB
  140.     POP    CX
  141.     POP    DI
  142.     RET
  143. CLEAR    ENDP
  144. ;
  145. PRINT    PROC    NEAR
  146.     PUSH    SI
  147.     PUSH    DX
  148.     PUSH    CX
  149.     MOV    AH,5
  150. PLP:    LODSB
  151.     OR    AL,AL
  152.     JZ    PDNE
  153.     MOV    DL,AL
  154.     INT    21H
  155.     JMP    PLP
  156. PDNE:    POP    CX
  157.     POP    DX
  158.     POP    SI
  159.     RET
  160. PRINT    ENDP
  161. ;
  162. DOPAGE    PROC    NEAR
  163.     PUSH    SI
  164.     PUSH    CX
  165.     MOV    LCNT,0
  166.     CMP    PAGNO,0
  167.     JE    SKIPFF
  168.     MOV    DL,12
  169.     MOV    AH,5
  170.     INT    21H            ;Restore page
  171. SKIPFF:    MOV    SI,OFFSET LXREF
  172.     MOV    AH,5
  173. SLP:    LODSB
  174.     OR    AL,AL
  175.     JZ    SDNE
  176.     MOV    DL,AL
  177.     INT    21H
  178.     JMP    SLP
  179. SDNE:    INC    PAGNO
  180.     MOV    AL,PAGNO
  181.     AAM
  182.     OR    AX,'00'
  183.     MOV    DL,AH
  184.     MOV    AH,5
  185.     PUSH    AX
  186.     INT    21H
  187.     POP    AX
  188.     MOV    DL,AL
  189.     INT    21H
  190.     CALL    DCRLF
  191.     CALL    DCRLF
  192.     POP    CX
  193.     POP    SI
  194.     RET
  195. DOPAGE    ENDP
  196. ;
  197. DCRLF    PROC    NEAR
  198.     PUSH    SI
  199.     PUSH    CX
  200.     MOV    SI,OFFSET CRLF
  201.     MOV    CX,2
  202.     MOV    AH,5
  203. DCLP:    LODSB
  204.     MOV    DL,AL
  205.     INT    21H
  206.     LOOP    DCLP
  207.     INC    LCNT
  208.     POP    CX
  209.     POP    SI
  210.     RET
  211. DCRLF    ENDP
  212. ;
  213. CODE    ENDS
  214. ;
  215.     END
  216.