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