/ / / / / / / / / / /COPYRIGHT (C) 1978,1979 BY DIGITAL EQUIPMENT CORPORATION / / / / / / / / / / /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. / /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. / /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY /DIGITAL. / / / / / / / / / /VERSION=1 / .TITLE LBLD.MA-LINKER BATCH FILE BUILDER /THIS PASS3 SUBROUTINE BUILDS A LINKER BATCH FILE TO LINK THE .RB FILES /PRODUCED DURING THE RUN OF MNAME.MA. THE FILE PRODUCED IS CALLED LNAME.MA /AND IS STORED ACCORDING TO THE "FILES PRODUCED" ANSWER. .RSECT LBLDR .ENTRY LBLD .EXTERNAL NUMBER,ANSPTR,IN,CON,UNP1,TSYS,TQUES,SIZ,QUEPTR .EXTERNAL FET,BUF,CQUES,QUES,ST,TABLE1,CN,SNRPTR,UNPACK,PCKPTR LBLD, 0 CLA TAD (CDF CIF) RDF DCA LBLD20 /SETUP FOR RETURN CDF .FLD CIF ST JMS I LBLD1 0 /OPEN FILE 2 /FILENAME NUMBER POINTS TO LNAMEX.MA CLA TAD (16 /POINT TO THE ANSWER TO DEFAULT QUESTION JMS LFET /GET IT SZA CLA /DEFAULT? JMS L1 /YES: GO HANDLE JMS L2 /NO: TAKE NORMAL PATH LBLD2, CLA /RETURN HERE TO BYPASS NORMAL BUILD JMS L5 /OUTPUT THE *$ RECORD TAD (23 /POINT TO RTS8 CHAIN QUESTION JMS LFET SZA CLA /CHAIN? JMS L3 /YES: GO HANDLE JMS L6 /OUTPUT THE $END RECORD CDF .FLD CIF ST JMS I LBLD1 1 2 /GO CLOSE THE FILE LBLD20, 0 JMP I LBLD /RETURN TO MAIN 3 LBLD1, ST /OPEN/CLOSE AND WRITE ROUTINE L1, 0 JMS L4 /GO OUTPUT STANDARD RECORDS ($JOB ETC.) CLA TAD (6006 /POINT TO FIRST DEFAULT LINK TASK JMS LRFT /OVERLAY IT LB17, CLA JMS LLEN /CALCULATE RECORD LENGTH DCA LB12 /SAVE RECORD LENGTH AHEAD TAD (332 JMS LFET CDF .FLD CIF IN JMS I LB13 2 /DISPLACEMENT IS TWO 6 /INSERT 6 CHARACTERS TAD LB12 /GET RECORD LENGTH JMS L7 /GO OUTPUT THE RECORD STA /SETUP NOT TO BRANCH CDF .FLD CIF FET JMS I LB11 /GET NEXT LINK DEFAULT RECORD CLA CDF TABLE1 TAD QUES /RECORD 6776 DELIMITS LINK TAD (-6776 /DEFAULT RECORDS SZA JMP LB17 /CONTINUE UNTIL DEFAULTS ARE WRITTEN JMP LBLD2 /RETURN TO AVOID NORMAL PATH LB11, FET /RECORD INPUT ROUTINE LB12,0 /STORAGE FOR RECORD LENGTH LB13,IN /POINTER TO INSERTION ROUTINE PAGE L2, 0 /HERE WHEN NORMAL LINKER BATCH FILE IS REQUIRED JMS L4 /OUTPUT STANDARD BATCH HEADER CLA TAD (-10 DCA L215 /INITIALIZE NEGATIVE LEVEL COUNTER L241, TAD L21 DCA LB14 /POINT TO TASK ENTRY TABLE TAD LB14 TAD (4 DCA LB15 /POINT TO DELIMITER OF TASK ENTRY L211, TAD (6102 JMS LRFT /OVERLAY LEVEL RECORD JMS LLEN DCA L250 /GET AND SAVE ITS INITIAL LENGTH L24, TAD I LB15 DCA LVCK /GET TASK DELIMITER AND SAVE TAD LVCK AND (1 SZA CLA /IS NO SOURCE INDICATER LIGHT? JMP L217 /YES DON'T INCLUDE TASK TAD LVCK L26, TAD MK0 SZA CLA /THIS LEVEL? JMP L217 /NO, GO TO NEXT TASK ENTRY JMP L27 /YES: INCLUDE L217, TAD (5 TAD LB14 DCA LB14 /POINT TO BEGINNING OF NEXT TASK TAD (4 TAD LB14 DCA LB15 /POINT TO NEXT DELIMITER TAD SNRPTR CIA TAD LB14 SMA CLA JMP L214 /CHANGE LEVEL AFTER END OF TASK LIST REACHED TAD DATFG SZA CLA JMP L216 /IF NO TASK OUTPUTTED THIS PASS, AVOID OVERLAY JMP L24 /CONTINUE CHECKING FOR CURRENT LEVEL TASKS L27, TAD (332 /POINT TO .RB STORAGE DEVICE JMS LFET CDF .FLD CIF IN /GO INSERT IT JMS I L212 2 /DISPLACEMENT IS 2 6 /INSERT 4 CHARACTERS STA TAD LB14 CDF .FLD CIF IN JMS I L212 /STRING 11 /DISPLACEMENT IS 7TH CHARACTER 6 /INSERT SIX CHARACTERS CLA TAD L250 /PASS INITIAL LENGTH TO CONC JMS L7 /OUTPUT STRING ISZ DATFG JMP L217 L214, ISZ L26 /POINT TO NEXT MASK (CALCULATED AND) ISZ LFG ISZ LVFG /SET LEVEL CHECK FLAG ISZ L215 /INCREMENT NEGATIVE LEVEL COUNTER JMP L216 /CONTINUE FOR ALL LEVELS OF OVERLAY JMP L222 /DONE L216, CLA DCA DATFG TAD LFG SZA CLA /LEVEL CHANGE JMP L230 /YES TAD LVFG SNA CLA JMP L211 /ON FIRST LEVEL,/C NOT DESIRED TAD MK10 /NO, GET /C RECORD DCA L211 JMP L211 /CONTINUE L230, CLA TAD MK11 JMS LRFT /FETCH SOLITARY /O RECORD JMS LLEN /SIZE IT JMS L7 /OUTPUT IT TAD MK10 /GET /C LINK RECORD DCA L211 DCA LFG /RESET LEVEL CHANGE JMP L241 /CONTINUE L222, CLA CDF TABLE1 JMP I L2 /RETURN TO LBLD LVCK,0 /TEMPORARY STORAGE L250,0 /INITIAL LENGTH OF DUMMY LINK COMMAND STRING L21, TSYS-5 /POINTER TO TASK TABLES L215, 0 /NEGATIVE LEVEL COUNTER L213, 0 /POINTER TO .RB STORAGE DEVICE L23, FET /POINTER TO INPUT ROUTINE L212, IN /POINTER TO INSERT ROUTINE LFG, 0 /LEVEL CHANGE FLAG LVFG,0 /LEVEL CHECK FLAG MK0, 0 /MASK FOR LEVEL ZERO OVERLAYS MK1, -1000 MK2, -2000 MK3, -3000 MK4, -4000 MK5, -5000 MK6, -6000 MK7, -7000 /MASK FOR LEVEL 7 OVERLAY MK10, TAD (6103 /POINTER TO /C RECORD MK11, 6104 /POINTER TO /O RECORD LB14,0 LB15,0 DATFG,0 /DATA OUTPUTTED FLAG PAGE L3, 0 /HERE WHEN USER WANTS TO CHAIN TO RTS8 CLA TAD (6107 /SETUP FOR .R SNAME RECORD JMS LRFT /OVERLAY IT INTO TOVER JMS LLEN DCA L34 /CALCULATE INITIAL LENGTH AND SAVE TAD (32 JMS LFET /GET POINTER TO .SV STORAGE DEVICE CDF .FLD CIF IN JMS I L41 5 6 /INSERT .SV DEVICE NAME INTO CHAIN COMMAND STRING CLA TAD (25 JMS LFET /POINT TO NAME ANSWER CDF .FLD CIF IN JMS I L41 /GO INSERT IT 14 /DISPLACEMENT IS 14 6 /NUMBER OF CHARACTERS IS 5 CLA TAD (13 JMS LMED1 /MOVE 5 CHARACTERS AND INSERT A S CLA TAD L34 /PASS INITIAL LENGTH TO L7 JMS L7 /CONCATENATE AND OUTPUT IT JMP I L3 /RETURN TO LBLD L31, FET /RECORD FETCHER L34, 0 /STORAGE FOR INITIAL RECORD LENGTH L41, IN L5, 0 /HERE FOR *$ AND $END INSERTS CLA TAD (6105 /POINT TO *$ RECORD JMS LRFT /OVERLAY *$ RECORD CDF .FLD CIF CN JMS I L54 /CONCATENATE AND OUTPUT CLA JMP I L5 /RETURN TO CALLER L54,CN /BLOCK DATA OUTPUT ROUTINE PAGE L4, 0 CLA TAD (6111 /POINT TO $JOB RECORD JMS LRFT /OVERLAY IT JMS LLEN /CALCULATE RECORD LENGTH JMS L7 /CONCATENATE AND OUTPUT IT CLA TAD (6100 /POINT TO .R LINK RECORD JMS LRFT /OVERLAY IT JMS LLEN /GET ITS SIZE JMS L7 /CONCATENATE AND OUTPUT IT CLA TAD (6101 /GET FIRST VARIABLE RECORD JMS LRFT /OVERLAY IT JMS LLEN /CALCULATE SIZE DCA L43 /SAVE LENGTH CLA TAD (32 JMS LFET /GET POINTER TO .SV DEVICE ANSWER CDF .FLD CIF IN JMS I LB41 /GO INSERT ANSWER 2 /DISPLACEMENT IS 2 6 /NUMBER OF CHARACTERS IS 4 CLA TAD (25 JMS LFET /GET POINTER TO RTS8 FILE NAME ANSWER CDF .FLD CIF IN JMS I LB41 /GO INSERT IT 11 /DISPLACEMENT IS 5 6 /NUMBER OF CHARACTERS IS 6 CLA TAD (10 JMS LMED1 /MOVE 5 CHARACTERS, AND INSERT AN S CLA JMS LLIST /CHECK IF LINKER LOAD MAP SPECIFIED TAD (36 JMS LFET /RETURNS HERE IF YES. POINT TO MAP DEVICE CDF .FLD CIF IN JMS I LB41 20 /DISPLACEMENT 6 /SIX CHARACTERS CLA TAD (25 JMS LFET /INSERT SAME NAME AS RTS8 FILE NAME CDF .FLD CIF IN JMS I LB41 27 6 /INSERT AS MAP FILE NAME CLA TAD (26 JMS LMED1 /MOVE 5 CHAR. AND INSERT S L42, CLA /RETURN HERE IF MAP NOT DESIRED TAD (16 JMS LFET /CHECK FOR DEFAULT SZA CLA JMP L45 /SKIP AROUND FIELD CALCULATION IF DEFAULT JMS NOFD /GO CALCULATE AND INSERT NUMBER OF FIELDS L45, TAD L43 JMS L7 /CONCATENATE AND OUTPUT IT CLA /PUT OUT MINI-RECORD /M=3 TAD (6012 /RECORD # JMS LRFT /OVERLAY IT JMS LLEN /CALCULATE LENGTH JMS L7 /PUT IT OUT CLA CDF TABLE1 JMP I L4 /RETURN TO CALLER LB41, IN /INSERT ROUTINE L43,0 /INITIAL RECORD SIZE PAGE NOFD, 0 /HERE TO CALCULATE THE /K=XX PARAMETER CDF TABLE1 CLA JMS A78 TAD (162 /POINT TO OS8 SUPPORT TASK ANSWER JMS LFET /GET IT SNA CLA /SELECTED? JMP NORM /NO: FIELDS=(057-1) TAD (67 /POINT TO KT8A ANSWERS JMS LFET SNA CLA /KT8A INDICATED? JMP ANORM /NUMBER OF FIELDS=(NFLDS-OSFLDS) TAD (57 /POINTER TO NFLDS ANSWER JMS DEC /GO CONVERT TO BINARY DCA C /SAVE IT TAD (167 /POINT TO OSFLDS ANSWER JMS DEC /CONVERT TO BINARY CIA TAD C /FORM (NFLDS-OSFLDS) DCA C /SAVE IT TAD (201 /POINT TO OSBASE ANSWER JMS DEC /CONVERT TO BINARY CIA TAD C /FORM (NFLDS-OSFLDS-OSBASE) SZA CLA /NFLDS=(OSFLDS-OSBASE)? JMP NORM /YES: FIELDS=(NFLDS-1) JMP ANORM /NO: FIEELDS=(NFLDS-OSFLDS) NORM, TAD (57 /POINT TO NFLDS JMS DEC /CONVERT ANSWER TO BINARY TAD (-1 /FORM (NFLDS-1) JMP CONV /GO CONVERT TO ASCII AND INSERT ANORM, TAD (167 /POINT TO OSFLDS ANSWER JMS DEC /CONVERT TO BINARY CIA DCA C /FORM (-OSFLDS) AND SAVE TAD (57 JMS DEC /GET OSFLDS AND CONVERT TAD C /FORM (NFLDS-OSFLDS) JMP CONV /CONVERT TO ASCII AND I SERT CONV, DCA N /SAVE CALCULATION RESULT TAD N /GET IT AND (70 /GET TENS DIGIT CLL RTR;RAR /MOVE TO 3 LSD TAD (260 DCA N1 TAD N AND (7 TAD (260 DCA N2 TAD N3 TAD (40 /ADD DISPLACEMENT TO INSERT DCA 14 TAD N1 /INSERT TENS ASCII DCA I 14 TAD N2 /INSERT UNITS ASCII DCA I 14 JMP I NOFD /RETURN TO CALLER N1, 0 /STORAGE FOR TENS RESULT N2, 0 /STORAGE FOR UNITS RESULT N3, TQUES-1 /POINTER TO UNPACKED COMMAND STRING C, 0 /TEMPORARY WORK AREA N,0 /TEMPORARY WORK AREA DEC, 0 /HERE TO CONVERT DECIMAL ASCII TO BINARY CDF TABLE1 TAD ANSPTR DCA 10 TAD I 10 /GET POINTER TO ANSWER SNA JMP ANORM /IF NO OSBASE ANSWER, NFLDS-OSFLDS DCA DEC11 CDF .FLD CIF UNP1 JMS I DEC12 DEC11, 0 UNPACK-1 2 /UNPACK DECIMAL ANSWER CDF TABLE1 CLA TAD PCKPTR DCA 10 DEC2, DCA DECNUM TAD DECNUM CLL RTL /CURRENT RESULT X 4 TAD DECNUM /NUMBER X 5 CLL RAL DCA DEC10 /SAVE IT TAD I 10 /ADD NEXT CHARACTER TAD (-256 /CHECK FOR A PERIOD SNA JMP DEC13 /END OF DECIMAL ASCII STRING IF PERIOD TAD (-260+256 /STRIP BASE TAD DEC10 JMP DEC2 /CONTINUE DEC13, TAD DECNUM /GET RESULTING NUMBER JMP I DEC /AC CONTAINS ANSWER A78, 0 TAD (57 TAD ANSPTR DCA 10 /POINT TO NUMBER OF FIELDS ANSWER TAD I 10 /GET IT SZA CLA JMP I A78 /RETURN FOR NORMAL PROCESSING IF NON-ZERO TAD (3 JMP CONV /IF ZERO, SET TO FOUR FIELDS DECNUM,0 /PARTIAL RESULT STORAGE DEC10,0 /COUNTER FOR NUMBER OF PASSES DEC12,UNP1 PAGE L7, 0 DCA L74 CDF .FLD CIF CON JMS I L71 L74, 0 /SQUISH RECORD,INSERT CR,LF AND TAB DCA L73 CDF .FLD CIF BUF JMS I L72 L73, 0 /RESULANT RECORD LENGTH FOR OUTPUT CALL CLA CDF TABLE1 JMP I L7 L71,CON /SQUISH ROUTINE L72,BUF /OUTPUT BUFFER BUILDER LFET, 0 CDF TABLE1 TAD ANSPTR DCA 11 TAD I 11 JMP I LFET /FORM POINTER TO CURRENT ANSWER LLEN, 0 CDF .FLD CIF SIZ JMS I LLEN1 CDF TABLE1 JMP I LLEN LLEN1,SIZ /POINTER TO RECORD LENGTH CALCULATOR L6, 0 CLA TAD (6110 /POINT TO $END MESSAGE JMS LRFT /OVERLAY $END RECORD CLA IAC /SET LAST OUTPUT FLAG CDF .FLD CIF CN JMS I LL4 /OUTPUT RECORD JMP I L6 /RETURN TO LBLD LL4,CN LLIST, 0 CLA TAD (35 JMS LFET /GET ANSWER TO ASSEMBLY LISTING QUESTION SZA CLA JMP I LLIST /NO ACTION IF ANSWER IS YES TAD (16 TAD QUEPTR DCA 11 /NO LISTINGS REQUIRED. POINT TO DISPLACEMENT /FOR LISTING DEVICE AND FILE NAME TAD (-16 DCA LLIST3 /ZERO 14 CHARACTERS FROM COMMAND STRING LLIST2, DCA I 11 ISZ LLIST3 JMP LLIST2 JMP L42 /RETURN WHEN DONE LLIST3,0 /NEGATIVE COUNTER FOR ZERO LOOPS LMED1, 0 CDF TABLE1 TAD (4 TAD QUEPTR DCA 11 /POINT TO DISPLACEMENT IN SUBMIT RECORD OF /FIRST CHARACTER OF BATCH FILE NAME JMS MPX /MOVE NAME RIGHT ONE CHARACTER TAD (323 /SET FIRST CHARACTER OF NAME TO S CDF TABLE1 DCA I 11 /INSERT A S JMP I LMED1 /RETURN TO CALLER LRFT, 0 CDF TABLE1 DCA CQUES CDF .FLD CIF FET JMS I FETX JMP I LRFT FETX,FET /POINTER TO RECORD FETCHING ROUTINE MPX, 0 /11 POINTS TO PNAME IN COMMAND /STRING. TAD (-5 DCA MP1 /MOVE 5 CHARACTERS MP2, TAD I 11 DCA I 11 CLA CLL CMA RTL /SET AC=-3 TAD 11 DCA 11 ISZ MP1 JMP MP2 /CONTINUE TIL DONE ISZ 11 JMP I MPX /RETURN TO CALLER MP1,0 /NEGATIVE LOOP COUNTER