ASMB,R,L,C  RTE-M CROSS-REFERENCE TABLE GENERATOR 
      HED ** RTE-M CROSS-REFERENCE TABLE GENERATOR ** 
* 
* 
*     9/10/76 
* 
* 
*  ***************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY.       ALL RIGHTS     *
*  * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,       *
*  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT*
*  * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.       *
*  ***************************************************************
* 
* NAME  : XREF
* SOURCE: 92064-18149 
* RELOC : 92064-16051 
* PRGMR : C.H., H.C., S.K.
* 
      NAM XREF,3,99 92064-16051 REV.1650 761001 
      SUP 
* 
* 
* 
* 
* PARAMETERS ARE PASSED THROUGH THE RU COMMAND
*   RU,XREF,FI,LE,NM,A,B
*           LU
*            0
*  WHERE FI,LE,NM IS ANSWER FILE NAME CONTAINING
*                   INPUT AND LIST FILE NAMES 
*         LU IS LU# OF DEVICE TO WHICH QUERIES ARE DIRECTED BY XREF 
*         0  DEFAULT IS CONSOLE FROM WHICH XREF WAS SCHEDULED 
* 
*         PARAMETERS A & B ARE DESCRIBED PRECEEDING XRFSG SEGMENT 
* 
* 
      EXT CREAT,OPEN,CLOSE,GTFIL,LIMEM,SEGLD
      EXT .STOP,IMESS,RMPAR,WRITF,READF,FCONT 
      ENT AI,AL,DCBI,DCBL,?ERR,?LWA,?FWA,PRMXR
      ENT ?FMPE,RTNXR,.M12
* 
* 
XREF1 ASC 3,XREF1 
IWHCH NOP 
IWRDS NOP 
?FWA  NOP 
?LWA  NOP 
AI    BSS 6 
AL    BSS 6 
ANSW  BSS 3 
OPTNI OCT 410 
?ERR  NOP 
DCBL  BSS 144 
DCBI  BSS 144 
M1    DEC -1
M2    DEC -2
.M12  DEC -12 
.1    DEC 1 
.4    DEC 4 
.64   DEC 64
.210B OCT 210 
.21B  OCT 21
.LU   ASC 1,LU
...   ASC 1,..
PRMXR BSS 2 
* 
* 
* 
XREF  JSB RMPAR     GET PARAMETERS
      DEF *+2 
      DEF AI        USE AI AS TEMPORARY BUFFER
      DLD AI        MOVE FIRST 3 PARMS IN ANSWER FILE 
      DST ANSW      BUFFER
      LDA AI+2
      STA ANSW+2
      DLD AI+3      PARMS 4&5 INTO PARM BUFFER
      DST PRMXR 
* 
GETFL JSB GTFIL     GET FILE NAMES FOR
      DEF *+7       INPUT & LIST
      DEF .21B      OPTION WORD 
      DEF ?ERR      ERROR WORD
      DEF ANSW      ANSWER FILE NAME
      DEF AI        INPUT FILE NAME BUFFER
      NOP 
      DEF AL        LIST FILE NAME BUFFER 
      SSA,RSS       ERRORS? 
      JMP XREFA     NO
      JSB ?FMPE     FMP ERROR ROUTINE 
      DEF ANSW
* 
XREFA CLB           CLEAR ANSWER FILE NAME
      STB ANSW
      STB ANSW+1
      STB ANSW+2
* 
OPIN  JSB OPEN      OPEN INPUT FILE 
      DEF *+7 
      DEF DCBI      INPUT FILE DCB
      DEF ?ERR
      DEF AI+1      INPUT FILE NAME 
      DEF OPTNI     OPTION WORD=410B
      DEF AI+5      SECURITY CODE 
      DEF AI        DRN OR -LU #
      SSA,RSS       ERRORS? 
      JMP CRLST     NO, CREATE LIST FILE
      JSB ?FMPE     FMP ERROR ROUTINE 
      DEF AI+1      INPUT FILE NAME 
* 
CRLST LDA AL+1      LIST FILE IS AN LU? 
      CPA .LU 
      RSS 
      JMP CRLS1     NOT AN LU 
      LDA AL+2
      CPA ... 
      JMP OPLST     IT IS AN LU, DO NOT CREATE
CRLS1 JSB CREAT     CREATE LIST FILE
      DEF *+8 
      DEF DCBL      LIST FILE DCB 
      DEF ?ERR      ERROR WORD
      DEF AL+1      LIST FILE NAME
      DEF .64       SIZE OF LIST FILE 64 BLOCKS 
      DEF .4        TYPE OF LIST FILE 4 
      DEF AL+5      SECURITY CODE 
      DEF AL        DRN OR -LU# 
      SSA,RSS       ERRORS? 
      JMP OPLST     NO OPEN LIST FILE 
      CPA M2        DUPLICATE FILE NAME?
      JMP OPLST     YES, THEN DO NOT CREATE FILE
      JSB ?FMPE     FMP ERROR MESSAGE ROUTINE 
      DEF AL+1      LIST FILE NAME
* 
OPLST JSB OPEN      OPEN LIST FILE
      DEF *+7 
      DEF DCBL      LIST FILE DCB 
      DEF ?ERR      ERROR WORD
      DEF AL+1      LIST FILE NAME
      DEF .210B     OPTION WORD FOR LIST FILE 
      DEF AL+5      SECURITY CODE 
      DEF AL        DRN OR -LU# 
      SSA,RSS       ERRORS? 
      JMP SYMTB     NO, GET MEMORY SPACE FOR SYMBOL TABLE 
      JSB ?FMPE     FMP ERROR MESSAGE ROUTINE 
      DEF AL+1      LIST FILE NAME
* 
SYMTB JSB LIMEM     FIND FWA & # OF WORDS IN AVAILABLE
      DEF *+4       MEMORY
      DEF IWHCH 
      DEF ?FWA
      DEF IWRDS 
      LDA IWRDS     # OF WORDS = 0? 
      SZA 
      JMP AVMEM     NO CALCULATE LWA
      JSB IMESS     NO SYMBOL TABLE SPACE 
      DEF *+4 
      DEF .2        SEND MESSAGE
      DEF TBLOV     /XREF: TABLE OVERFLOW 
      DEF .11 
      JMP XRFEX     ABORT XREF
* 
AVMEM LDA ?FWA      FIRST WORD AVAILABLE OF FREE MEMORY 
      ADA M1        -1
      ADA IWRDS     # OF WORDS IN FREE MEM
      STA ?LWA      LAST WORD AVAILALE IN FREE MEM
* 
      JSB FCONT     PAGE EJECT
      DEF *+5 
      DEF DCBL      LIST FILE DCB 
      DEF ?ERR      ERROR WORD
      DEF B1100     OPTION WORD 
      DEF M1        PAGE EJECT
      SSA,RSS       ERRORS? 
      JMP SGMLD     NO, THEN LOAD SEGMENT 
      CPA .M12      -12 ERROR?
      JMP SGMLD     YES, THEN IGNORE IT 
      JSB ?FMPE     YES, DISPLAY ERROR
      DEF AL+1      LIST FILE NAME
* 
SGMLD JSB SEGLD     LOAD XREF SEGMENT 
      DEF *+3 
      DEF XREF1     XREF SEGMENT NAME 
      DEF ?ERR      ERROR WORD
      JSB ?FMPE     FMP ERROR ROUTINE 
      DEF XREF1     SEGMENT NAME
* 
* 
RTNXR JSB CLOSE     CLOSE INPUT FILE
      DEF *+3 
      DEF DCBI      INPUT FILE DCB
      DEF ?ERR      ERROR WORD
      SSA,RSS       ERRORS? 
      JMP EFLST     NO, WRITE EOF ON LIST FILE
      JSB ?FMPE 
      DEF AI+1      INPUT FILE NAME 
EFLST JSB FCONT     WRITE EOF RECORD ON LIST FILE 
      DEF *+4 
      DEF DCBL
      DEF ?ERR
      DEF B100
      SSA,RSS       ERRORS? 
      JMP CLLST     NO
      CPA .M12      -12 ERROR?
      JMP CLLST     YES, THEN IGNORE IT 
      JSB ?FMPE     YES 
      DEF AL+1
* 
CLLST JSB CLOSE     CLOSE LIST FILE 
      DEF *+3 
      DEF DCBL      LIST FILE DCB 
      DEF ?ERR      ERROR WORD
      SSA,RSS       ERROR?
      JMP XRFEX     NO, EXIT XREF 
      JSB ?FMPE     DISPLAY ERROR AND ABORT XREF
      DEF AL+1      LIST FILE NAME
* 
XRFEX JSB IMESS 
      DEF *+4 
      DEF .2
      DEF XRFEN 
      DEF .6
* 
      JSB LIMEM     RELEASE AVAILABLE MEMORY
      DEF *+2 
      DEF M1
      CLA           EXIT XREF 
      JSB .STOP 
* 
XRFEN ASC 6, /XREF: $END
TBLOV ASC 11, /XREF: TABLE OVERFLOW 
B100  OCT 100 
B1100 OCT 1100
.6    DEC 6 
.11   DEC 11
* 
* 
* ?FMPE - ROUTINE TO DISPLAY FMP ERROR & ABORT XREF 
* CALLING SEQUENCE:  JSB ?FMPE
*                    DEF AI       FILE NAME OF FILE BEING ACCESSED
*                                 WHEN ERROR OCCURED
*         A REG = ERROR CODE
* 
* 
?FMPE NOP 
      CMA,INA       MAKE ERROR CODE +VE 
      STA FMERR     SAVE ERROR CODE 
      CCE           E REG = 1 FOR DECIMAL 
      JSB BNCN      CONVERT ERROR CODE TO ASCII 
      DLD ASCI+1
      DST FMPER+6 
      LDA ?FMPE,I   GET FILE NAME BUFFER ADDRESS
      STA ASCI      USE ASCI BUFFER AS TEMPORARY
      DLD ASCI,I    MOVE FILE NAME TO BUFFER
      DST FMPER+9 
      LDA ASCI
      ADA .2
      LDA A,I 
      STA FMPER+11
      JSB IMESS     PRINT MESSAGE ON CONSOLE
      DEF *+4       FILEMANAGER ERROR -NNNN FILENM
      DEF .2
      DEF FMPER     ERROR MESSAGE 
      DEF .12       LENGTH OF MESSAGE 
      JMP XRFEX     ABORT ASMB
* 
FMERR NOP 
.2    DEC 2 
.12   DEC 12
FMPER ASC 12,FMP ERROR -
* 
* 
*          ************************************** 
*          * BINARY TO ASCII CONVERSION ROUTINE * 
*          *  A = NUMBER TO BE CONVERTED        * 
*          *  E = 0  CONVERT TO OCTAL           * 
*          *  E = 1  CONVERT TO DECIMAL         * 
*          ************************************** 
      OCT 30060     PACKED ASCII '00'.
BNCN  NOP 
      LDB ICSA     GET LOC'N OF ACSI BUFFER 
      STB SYMI
      CCB 
      STB VALUS     START UPPER 
      LDB BNCN-1    SET BUFFER=ASCII ZERO'S 
      STB ASCI
      STB ASCI+1
      STB ASCI+2
      SEZ         TEST E BIT (=0,OCTAL  =1,DECIMAL) 
      JMP % DEC CONVERSION
      LDB .M6 
      STB DCNT
      CLE,ELA 
      STA VALU
      CLA 
      ELA           SIGN BIT IS SIXTH DIGIT 
      JSB DPCK
      LDA VALU
      ALF,RAR 
      STA VALU
      AND .7   (7) MASK 1 DIGIT 
      ISZ DCNT      END ? 
      JMP *-6        NO. CONTINUE.
      JMP BNCN,I     YES, EXIT
DPCK  NOP 
      ADA SYMI,I
      ISZ VALUS 
      JMP *+4 
      ALF,ALF 
      STA SYMI,I
      JMP DPCK,I
      STA SYMI,I
      ISZ SYMI
      CCA 
      STA VALUS 
      JMP DPCK,I    EXIT
%     LDB .M3       (-3) DEC. CONVERSION RTN
      STB DCNT
      LDB LMDG
      STB VAL0
      LDB LPDG
      STB VAL1
      LDB 0         A TO B
      ISZ SYMI
DPCR  CLA,RSS 
      INA           (FROM *+3)
      ADB VAL0,I    COUNT NO.OF TIMES GT 10**N
      SSB,RSS 
      JMP *-3 
      ADB VAL1,I    <10**N, RESTORE VALUE 
      JSB DPCK      PACK DIGIT
      ISZ VAL1
      ISZ VAL0
      ISZ DCNT
      JMP DPCR      RETURN FOR 10**N-1
      LDA 1 
      JSB DPCK
      JMP BNCN,I    EXIT
* 
.M3   DEC -3
.M6   DEC -6
.7    DEC 7 
ICSA  DEF ASCI
SYMI  NOP 
VAL0  NOP 
VAL1   NOP
VALU  NOP 
VALUS NOP 
DCNT  NOP 
LMDG  DEF *+1 
      DEC -1000,-100,-10
LPDG  DEF *+1 
      DEC 1000,100,10 
ASCI  BSS 3 
A     EQU 0 
B     EQU 1 
* 
      END XREF
                                                              