ASMB,R,Q,C
      HED OVERLAY DIRECTORY BUILDER 
* 
*     NAME:    T.OVL
*     SOURCE:  92076-18024
*     RELOC:   PART OF 92076-16002
*     PGMR:    B.J.L. 
* 
*  **************************************************************** 
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979.  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.        * 
*  **************************************************************** 
* 
      NAM T.OVL,8 92076-1X024 REV.2001 800322 92076-16002 
* 
      SUP 
* 
* 
*  THE FOLLOWING ROUTINE BUILDS THE OVERLAY DIRECTORIES 
*  FOR RTETG.  UPON COMPLETION, T.OVB CONTAINS (IN 4-WORD 
*  GROUPS) A LIST OF OVERLAY DIRECTORY NAMES ANE THE
*  NUMBER OF SUBROUTINES IN EACH AS FOLLOWS:
* 
*     WORD 1:     # OF SUBROUTINES
*     WORDS 2-4:  OVERLAY DIRECTORY NAME
*       . 
*       . 
*       .     UP TO 128 WORDS USED
*       . 
*       . 
* 
*  CALLING SEQUENCE:
*     SORTED BRANCH TABLE IN T.BRN
*     SORTED ENTRY POINT LIST IN T.ENT
*     T.BAD POINTS AT END+1 OF BRANCH TABLE 
*     JSB T.OVL 
* 
* 
      ENT T.OVL 
* 
      EXT CREAT     FILE MANAGER CREATE 
      EXT WRITF     FMGR WRITE RECORD 
      EXT KCVT      CONVERT NUMBER TO ASCII 
      EXT T.BRN     SORTED BRANCH TABLE (IN MAIN) 
      EXT T.ENT     BUFFER (IN MAIN) OF ENTRY POINTS
      EXT T.DCB     DCB BUFFER (IN MAIN)
      EXT .DRCT     GET DIRECT ADDRESS
      EXT T.BAD     ADDRESS OF END OF BRANCH TABLE
      EXT CLOSE     FMGR CLOSE
      EXT .DFER     3-WORD TRANSFER 
      EXT T.IDL     ID LETTER CODE. 
      EXT T.OVB     BUFFER OF OVERLAY NAMES.
      EXT T.SUB     SIZE AND SUBROUTINE COUNT BUFFER. 
      EXT T.LEN     WILL HOLD # OF OVERLAYS.
      EXT T.PRI     PRIORITY OF OVERLAYS. 
      EXT T.SEC     SEC. CODE FOR OVERLAY DIRECTORIES 
      EXT T.CRF     CARTRIDGE # FOR OVERLAY DIRECTORIES.
      EXT T.ERN     ERROR NUMBER
      EXT T.CON     CONTROL WORD FOR WRITE *800322* 
      EXT EXEC      *800322*
* 
* 
A     EQU 0 
B     EQU 1 
* 
* 
SZSUB BSS 1 
OVBUF BSS 1 
TEMP  NOP 
TEMP1 NOP 
* 
T.OVL NOP 
      JSB .DRCT 
      DEF T.OVB 
      STA OVBUF 
      JSB .DRCT 
      DEF T.ENT 
      STA ENPTS 
      JSB .DRCT 
      DEF T.SUB 
      STA SZSUB 
      JSB .DRCT 
      DEF T.BRN 
      STA SAVE1 
      CLB           INITIALIZE THE NUMBER 
      STB T.LEN     OF OVERLAYS CREATED.
T.OV6 CPA T.BAD     ADDR ASSUMED IN A REG.
      JMP T.OVL,I   FINISHED - LEAVE. 
      LDA A,I       CREATE NAME OF NEXT 
      LSR 6         OVERLAY DIRECTORY.
      AND B37       ISOLATE OVERLAY NUMBER. 
      STA SAVE4     SAVE OVERLAY NUMBER.
      JSB KCVT      CONVERT IT TO 2-DIGIT ASCII.
      DEF *+2 
      DEF SAVE4 
      LDB NAME      NAME FOR RELOCATABLE
      STB OVBUF,I 
      LDB NAMA1     NAM RECORD NAME 
      STB OVBFR     ADDRESS 
      IOR DBL0
      CLB 
      LSL 8         SHIFT THE RESULT. 
      STA CHSUM     MERGE INTO THE NAME.
      LDA T.IDL     MERGE ID LETTER 
      ALF,ALF       INTO NAME.
      ADA NAME+1
      AND HIBYT 
      XOR B 
      STA TEMP      SAVE FOR DUEL STORE 
      LDB OVBUF     MERGER OF REL. NAME 
      INB 
      STA B,I 
      LDA CHSUM 
      XOR B40 
      STA TEMP1 
      INB 
      STA B,I 
      LDB OVBFR     MERGE FOR NAM RECD NAME ALSO
      INB 
      LDA TEMP
      STA B,I 
      LDA TEMP1 
      INB 
      STA B,I 
T.OV2 ISZ SAVE1 
      ISZ SAVE1 
      LDA T.BAD     AT THE END OF THE BUFFER? 
      CPA SAVE1 
      JMP T.OV1     YES.
      LDB SAVE1,I   NO - GET NEXT BRANCH
      LSL 5         TABLE ENTRY.
      LSR 11        SEPARATE OUT THE OVERLAY #. 
      CPB SAVE4     OVERLAY # CHANGED.
      JMP T.OV2     BACK THROUGH SEARCH.
      JMP T.OV1     YES - GO AHEAD AND CREATE DIRECTORY.
* 
BUFFR BSS 60
B37   OCT 37
B40   OCT 40
B77   OCT 77
BUFAD DEF BUFFR 
SAVE1 BSS 1 
SAVE2 BSS 1 
SAVE3 BSS 1 
OVBFR BSS 1 
DBL0  ASC 1,00
NAMA1 DEF NAMA
NAMA  ASC 3,BS@ 
NAME  ASC 3,%B@ 
* 
*  SUBROUTINE TO CALCULATE RELOCATABLE CHECKSUMS. 
* 
CHSUM NOP 
      LDB BUFAD 
      LDA B,I       GET RECORD LENGTH.
      ALF,ALF 
      CMA,INA       SET UP A COUNTER. 
      ADA D3
      STA WRTRC     ADD UP ALL WORDS IN 
      INB           THE RECORD EXCEPT 
      LDA B,I       WORDS 1 AND 3.
      INB 
      STB SAVE2 
      INB 
      ADA B,I 
      ISZ WRTRC 
      JMP *-3 
      STA SAVE2,I 
      JMP CHSUM,I 
* 
D2    DEC 2 
D3    DEC 3 
D5    DEC 5 
D7    DEC 7 
D10   DEC 10
D17   DEC 17
M6    DEC -6
WDJSB OCT 14001 
WD5   OCT 102000
NAMID OCT 20000 
IDENT OCT 60102 
SID   BSS 1 
CALSB DEF *+1 
      ASC 3,CALSB 
* 
* 
*****************************ADDED 800322***************************
PRNAM JSB EXEC
      DEF PRNA1 
      DEF D2
      DEF T.CON 
      DEF OVBUF,I 
      DEF D3
PRNA1 JMP T.OVL,I 
* 
T.OV1 JSB CREAT     CREATE THE OVERLAY
      DEF T.O10     DIRECTORY FILE. 
      DEF T.DCB 
      DEF T.ERN 
      DEF OVBUF,I 
      DEF D10 
      DEF D5
      DEF T.SEC 
      DEF T.CRF 
T.O10 LDA T.ERN     ERRORS? 
      SSA 
      JMP PRNAM     YES -PRINT NAME AND LEAVE*800322* 
* 
      ISZ T.LEN     INCREMENT # OF OVERLAYS.
      LDA SZSUB     GET NUMBER OF SUBROUTINES 
      ADA SAVE4     IN THIS OVERLAY 
      LDA A,I       AND SAVE IT.
      AND B77 
      STA SAVE3 
* 
*  PUT TOGETHER NAM RECORD. 
* 
      LDA BUFAD     PUT TOGETHER NAM RECORD.
      STA SAVE2 
      ISZ SAVE2 
      LDB D17       PUT IN RECORD LENGTH. 
      BLF,BLF 
      STB A,I 
      LDA NAMID     PUT IN IDENTIFIER 
      STA SAVE2,I   FOR NAM RECORD. 
      ISZ SAVE2 
      ISZ SAVE2 
      JSB .DFER     MOVE THE SYMBOL 
      DEF SAVE2,I   INTO THE RECORD.
      DEF OVBFR,I   USE NAM RECD. NAME
      LDB SAVE2 
      ADB D3
      LDA SAVE3 
      ADA D2        STORE LENGTH OF MAIN
      STA B,I       PROGRAM SEGMENT.
      INB 
      CLA           STORE LENGTH OF BASE
      STA B,I       PAGE AND COMMON 
      INB           SEGMENTS, BOTH 0. 
      STA B,I 
      INB 
      LDA D2        TYPE 2. 
      STA B,I 
      LDA T.PRI     PRIORITY. 
      INB 
      STA B,I 
      LDA M6
      STA CHSUM     STORE TIME PARAMETERS,
      CLA           ALL 0 SINCE THERE IS
      INB           NO TIME LIST SCHEDULING.
      STA B,I 
      ISZ CHSUM 
      JMP *-3 
      JSB CHSUM     PUT IN THE CHECKSUM.
      LDA D17 
      JSB WRTRC     WRITE THE RECORD. 
* 
*  PUT TOGETHER THE ENT RECORD
* 
      LDA BUFAD     PUT TOGETHER THE ENT RECORD.
      LDB D7        PUT IN RECORD LENGTH. 
      BLF,BLF 
      STB A,I 
      INA 
      CLB,INB 
      RBR,RBR 
      INB 
      STB A,I       PUT IN IDENTIFIER WORD. 
      ADA D2
      STA SAVE2 
      JSB .DFER     MOVE SYMBOL INTO RECORD.
      DEF SAVE2,I 
      DEF OVBFR,I   PROGRAM RELOCATABLE.
      LDA SAVE2 
      ADA D3
      CLB           PUT IN RELOCATABLE ADDRESS
      STB A,I       OF THE SYMBOL.
      JSB CHSUM     CALCULATE THE CHECKSUM. 
      LDA D7
      JSB WRTRC     WRITE THE RECORD. 
* 
*  PUT TOGETHER "EXT CALSB" RECORD. 
* 
      CLA,INA       PUT TOGETHER EXT CALSB RECORD.
      STA SID       INITIALIZE SYMBOL ID #. 
      LDB CALSB     NAME BUFFER 
      JSB CREXT     # ENTRIES = 1 
* 
*  PUT TOGETHER REMAINING EXT RECORD(S).
* 
      LDA SAVE3     PUT TOGETHER EXT RECORD(S)
      CLB           FOR THE DEVICE SUBROUTINES
      JSB CREXT 
      LDB SAVE5     UPDATE ENTRY POINT
      STB ENPTS     NAME POINTER. 
* 
*  BUILD DBL RECORD FOR JSB AND DEF INSTRUCTIONS. 
* 
      LDB BUFAD     PUT TOGETHER DBL RECORD(S)
      LDA D7
      ALF,ALF       PUT TOGETHER JSB CALSB, 
      STA B,I       DEF START IN ONE RECORD.
      INB 
      LDA IDENT     STORE IDENTIFIER WORD.
      STA B,I 
      ADB D2
      CLA 
      STA B,I 
      INB 
      LDA WD5 
      STA B,I 
      INB 
      LDA WDJSB 
      STA B,I       STORE JSB CALSB 
      INB 
      LDA D2
      STA B,I       STORE DEF START 
      JSB CHSUM     STORE CHECKSUM. 
      LDA D7
      JSB WRTRC     WRITE THE RECORD. 
* 
*  BUILD DBL RECORD(S) FOR THE SUBROUTINE DEF'S.
* 
      LDA D2        INITIALIZE EXTERNAL SYMBOL ID.
      STA SID 
      STA SAVE5     INITIALIZE RELOCATABLE LOAD ADDRESS.
      LDA SAVE3 
T.OV5 ADA M46       SET UP COUNTERS.
      STA CNTR
      SSA,RSS 
      JMP T.OV3 
      ADA D46 
      CMA,INA 
      STA SAVE4 
      JMP T.OV4 
* 
*  SUBROUTINE TO WRITE A RECORD AND CHECK 
*  ERRORS.  WRTRC DOES NOT RETURN IN CASE 
*  OF ERROR BUT INSTEAD EXITS T.OVL DIRECTLY. 
* 
WRTRC NOP 
      STA RECLN     SAVE RECORD LENGTH. 
      JSB WRITF     DO A FMGR WRITE.
      DEF *+5 
      DEF T.DCB 
      DEF T.ERN 
      DEF BUFAD,I 
      DEF RECLN 
      LDA T.ERN 
      SZA 
      JMP T.OVL,I 
      JMP WRTRC,I 
* 
RECLN BSS 1 
* 
D4    DEC 4 
M5    DEC -5
M46   DEC -46 
D46   DEC 46
M45   DEC -45 
EXTRF OCT 111110
DBLID OCT 60100 
ENDID OCT 120001
D45   DEC 45
* 
T.OV3 LDA M45 
      STA SAVE4 
T.OV4 CMA,INA       FIGURE OUT TOTAL LENGTH 
      STA SAVE2     OF RECORD AND # OF
      CLB           INSTRUCTION WORDS.
      DIV D5
      ADA SAVE2 
      ADA D4
      SZB 
      INA 
      LDB BUFAD 
      ALF,ALF 
      STA B,I       SAVE RECORD LENGTH. 
      INB 
      LDA DBLID 
      ADA SAVE2 
      STA B,I       STORE IDENT WORD. 
      ADB D2
      LDA SAVE5 
      STA B,I       STORE RELOCATABLE LOAD
T.OV8 INB           ADDRESS.
      LDA EXTRF 
      STA B,I       STORE DESCRIPTOR WORD.
      LDA M5
      STA SAVE2     STORE THE SYMBOLS.
T.OV9 INB 
      LDA SID 
      STA B,I 
      ISZ SID       INCREMENT SYMBOL #. 
      ISZ SAVE4     FINISHED? 
      JMP T.OV7     NO. 
* 
      JSB CHSUM     STORE CHECKSUM. 
      LDA BUFAD,I 
      ALF,ALF 
      JSB WRTRC     WRITE THE RECORD. 
      LDA SAVE5 
      ADA D45       INCREMENT RELOCATABLE 
      STA SAVE5     LOAD ADDRESS. 
      LDA CNTR      DO WE NEED TO 
      SSA,INA,RSS   MAKE MORE RECORDS?
      JMP T.OV5     YES - BACK THROUGH LOOP.
* 
*  BUILD END RECORD.
* 
      LDB BUFAD     PUT TOGETHER END RECORD.
      LDA D4
      ALF,ALF 
      STA B,I       STORE RECORD LENGTH.
      INB 
      LDA ENDID 
      STA B,I       STORE IDENTIFIER WORD.
      ADB D2
      CLA 
      STA B,I       STORE RELOCATABLE TRANSFER ADDRESS. 
      JSB CHSUM     PUT IN CHECKSUM.
      LDA D4
      JSB WRTRC     WRITE THE RECORD. 
* 
      JSB CLOSE     NO - ALL DONE WITH THIS DIRECTORY.
      DEF *+3       CLOSE THE OVERLAY 
      DEF T.DCB     DIRECTORY FILE. 
      DEF T.ERN 
      LDA T.ERN     ERRORS? 
      SZA 
      JMP T.OVL,I   YES - LEAVE.
* 
      LDA OVBUF     SET UP TO CREATE
      ADA D3        MORE OVERLAYS.  GO
      STA OVBUF     BACK AND SEARCH 
      LDA SAVE1     THE BRANCH TABLE. 
      JMP T.OV6 
* 
T.OV7 ISZ SAVE2     FINISHED WITH GROUP OF 5? 
      JMP T.OV9     NO. 
      JMP T.OV8     YES.
* 
* 
* 
*  SUBROUTINE TO CREATE EXT RECORD OR RECORDS.
* 
*  CALLING SEQUENCE:
* 
*     LDA NUMBER OF SYMBOLS       CREXT WRITES THE
*     LDB SYMBOL BUFFER ADDRESS   RECORDS AND EXITS 
*     JSB CREXT                   T.OVL DIRECTLY IF 
*     RETURN                      THERE IS AN ERROR.
*                                 IF THE SYMBOL BUFFER
*                                 ADDRESS IS 0, CREXT 
*                 WORKS FROM THE BRANCH AND ENTRY POINT TABLE.
* 
* 
CREXT NOP 
      SZB,RSS       SYMBOL BUFFER SUPPLIED? 
      LDB ENPTS     NO - USE ENTRY POINTS.
      STB SAVE5     YES - SAVE IT.
CREX4 ADA M20 
      STA CNTR
      SSA,RSS 
      JMP CREX1 
      ADA D20 
      CMA,INA 
      STA SAVE4 
      JMP CREX2 
* 
CNTR  BSS 1 
ENPTS BSS 1 
SAVE4 BSS 1 
D20   DEC 20
M20   DEC -20 
M19   DEC -19 
SAVE5 BSS 1 
HIBYT OCT 177400
* 
CREX1 LDA M19 
      STA SAVE4 
CREX2 CMA,INA       FIGURE OUT TOTAL
      STA CHSUM     LENGTH OF THE RECORD. 
      ALS 
      ADA CHSUM 
      ADA D3
      ALF,ALF 
      LDB BUFAD 
      STA B,I       STORE LENGTH
      LDA CHSUM     GET NUMBER OF ENTRIES 
      CCE           AND FORM IDENT WORD.
      ELA,RAR 
      INB 
      STA B,I 
      ADB D2
      STB SAVE2 
CREX3 JSB .DFER     STORE THE SYMBOL IN 
      DEF SAVE2,I   THE BUFFER. 
      DEF SAVE5,I   SOURCE BUFFER ADDRESS.
      LDB SAVE2     STORE THE SYMBOL ID 
      ADB D2
      LDA B,I 
      AND HIBYT 
      XOR SID 
      STA B,I 
      ISZ SID 
      INB           INCREMENT SYMBOL POINTERS.
      STB SAVE2 
      LDB SAVE5 
      ADB D3
      STB SAVE5 
      ISZ SAVE4     FINISHED WITH THIS RECORD?
      JMP CREX3     NO - BACK THROUGH LOOP. 
      JSB CHSUM     YES - PUT IN CHECKSUM.
      LDA BUFAD,I 
      ALF,ALF 
      JSB WRTRC     WRITE THE RECORD. 
      LDA CNTR      CHECK IF WE NEED TO 
      SSA,INA,RSS   MAKE MORE RECORDS.
      JMP CREX4     NEED MORE.
      JMP CREXT,I   ALL DONE. 
* 
      END 
                                                                                                                                                                                                                                                    