/ / / / / / / / / / /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 MBLD-MACREL BATCH FILE BUILDER /THIS PASS 3 ROUTINE BUILDS THE MACREL BATCH FILE, /WHICH WHEN SUBMITTED, CAUSES THE SYSTEM AND /USER TASK SOURCES TO BE ASSEMBLED, TOGETHER /WITH THEIR CONTROL FILES (IF ANY) AND A PARAM /FILE UNDER THE MACREL ASSEMBLER. DEFAULT IS /TESTED, AND IF TRUE, A SPECIAL SET OF PREPROGRAMMED /BATCH MESSAGES IS PRODUCED. .ENABLE OS8 .ENTRY MBLD .RSECT MBLDR .EXTERNAL ANSPTR,TABLE1,QUES,CQUES,DIRLOC .EXTERNAL SIZ,QUEPTR,EQUES,CLR,UNP1,TOVER,TQUES .EXTERNAL SYSPTR,UNPACK,TSYS,PCKPTR,PCK,OVRPTR,RECLOC .EXTERNAL IN,CON,CN,BUF,FET,ST,SNRPTR MBLD, 0 CLA TAD (CDF CIF) RDF DCA MBLD40 CDF .FLD CIF ST JMS I MBLD1 0 /OPEN MNAME.MA FILE 1 CLA TAD (7110 JMS RECFET /OVERLAY $JOB RECORD CDF .FLD CIF CN JMS I ML1 /SQUISH AND OUTPUT RECORD CLA TAD (7112 JMS RECFET /OVERLAY MOUNT DEVICE MESSAGE JMS GLEN DCA MBLD14 TAD (31 JMS AFET /POINT TO SOURCE DEVICE ANSWER CDF .FLD CIF IN JMS I INSR 34 /DISPLACEMENT IS 23 4 /NUMBER OF CHARACTERS TO INSERT IS FOUR CDF .FLD CIF CON JMS I SQ MBLD14, 0 /SQUISH AND CONCATENATE CONTROL WORDS DCA MBLD10 /STORE RESULTANT LENGTH AHEAD FOR MOVE CALL CDF .FLD CIF BUF JMS I MBLD11 MBLD10, 0 /OUTPUT THE RECORD CLA TAD (16 JMS AFET /POINT TO DEFAULT ANSWER SZA CLA /DEFAULT? JMS M4 /YES: GO HANDLE JMS M3 /NO: BUILD NORMAL BATCH FILE MBLD4, CLA CDF .FLD TAD DFFG SZA CLA /IS THIS THE DEFAULT CASE? JMP MBLD21 /YES. ASSUME SOURCES ARE ON ONE MEDIUM TAD (337 JMS AFET /POINT TO SINGLE MEDIA QUESTION SNA CLA JMP MBLD2 /SOURCE FILES NOT ON SINGLE MBLD21, TAD (7117 /FILES ON SINGLE MEDIA ISZ SMED /SET THE SINGLE MEDIA FLAG JMP MBLD3 MBLD2, TAD (7116 /FILES ARE SCATTERED ABOUT, USE /THE E OPTION MBLD3, JMS RECFET /GET THE RECORD CLA JMS GLEN /CALCULATE ITS LENGTH DCA MBLD17 TAD (21 JMS AFET /POINT TO FILES PRODUCED ANSWER CDF .FLD CIF IN JMS I INSR 5 /DISPLACEMENT 6 /NO. OF CHAR. CLA TAD (25 JMS AFET /POINT TO FILES NAME ANSWER CDF .FLD CIF IN JMS I INSR 14 /DISPLACEMENT 5 /NO. OF CHAR. JMS SMED1 /SUBMIT LINK IF SINGLE MEDIUM,OR /MACREL IF NOT CDF .FLD CIF CON JMS I SQ MBLD17, 0 /SQUISH,INSERT LF, CR, AND TAB DCA MBLD13 CDF .FLD CIF BUF JMS I MBLD11 MBLD13, 0 /OUTPUT THE SUBMIT MESSAGE CLA TAD (7111 JMS RECFET /OVERLAY $END MESSAGE CLA IAC /SET AC NON-ZERO (LAST MESSAGE) CDF .FLD CIF CN JMS I ML1 /OUTPUT (NO INSERTS) CDF .FLD CIF ST /CLOSE THE FILE JMS I MBLD1 1 /CLOSE 1 /FILE MNAME.BI MBLD40, 0 JMP I MBLD /RETURN TO MAIN 3 MBLD1, ST /OPEN / CLOSE FILE HANDLER INSR,IN SMED,0 /SINGLE MEDIUM FLAG SQ,CON ML1,CN MBLD11,BUF PAGE MBLD16,SIZ AFET, 0 CDF TABLE1 TAD ANSPTR DCA 11 TAD I 11 JMP I AFET /FORM POINTER TO CURRENT ANSWER GLEN, 0 CDF .FLD CIF SIZ JMS I MBLD16 JMP I GLEN /THIS ROUTINE HANDLES THE DEFAULT MACREL BATCH FILE. /PREPROGRAMMED MESSAGES FROM SCRIPT ARE OUTPUTTED TO MNAME.MA. M4, 0 CLA TAD (7004 DCA CQUES /POINT TO FIRST DEFAULT BATCH MESSAGE M47, CDF .FLD CIF FET JMS I M43 /OVERLAY IT CLA DCA PFLG /RESET LAST PASS FLAG CDF TABLE1 TAD QUES TAD (-7776 SNA CLA /LAST DEFAULT BATCH MESSAGE? JMP MBLD4 /YES CLA CDF .FLD ISZ DFFG /SET THE DEFAULT FLAG IN CDF TABLE1 /BATCH RECORD BUILD ROUTINE JMS M7 /GO HANDLE DEFAULT MESSAGE CLA IAC /SET AC =1 TO FETCH NEXT SEQUENTIAL RECORD JMP M47 /CONTINUE TIL DONE M43, FET /RECORD FETCHER MLIST, 0 CLA TAD (333 JMS AFET /GET ANSWER TO ASSEMBLY LISTING QUESTION SZA CLA JMP I MLIST /NO ACTION IF ANSWER IS YES TAD (22 TAD QUEPTR DCA 11 /NO LISTINGS REQUIRED. POINT TO DISPLACEMENT /FOR LISTING DEVICE AND FILE NAME TAD (-16 DCA MLIST3 /ZERO 13 CHARACTERS FROM COMMAND STRING MLIST2, DCA I 11 ISZ MLIST3 JMP MLIST2 TAD QUEPTR TAD (74 DCA 11 /SETUP TO ZERO /B/C STUFF TAD (-4 DCA MLIST3 /FOUR CHARACTERS TO ZERO MLIST4, DCA I 11 ISZ MLIST3 JMP MLIST4 JMP I MLIST /RETURN WHEN DONE MLIST3,0 /NEGATIVE COUNTER FOR ZERO LOOPS SMED1, 0 CDF TABLE1 CLA TAD QUEPTR TAD (13+4 DCA 11 /POINT TO DISPLACEMENT IN SUBMIT RECORD OF /FIRST CHARACTER OF BATCH FILE NAME JMS MPX /MOVE NAME RIGHT ONE CHARACTER CDF .FLD TAD SMED SNA CLA /SINGLE MEDIUM? IAC /NO. SET FILE NAME TO MXXXXX.BI TAD (314 CDF TABLE1 DCA I 11 /EITHER M OR L JMP I SMED1 /RETURN TO CALLER RECFET, 0 CDF TABLE1 DCA CQUES CDF .FLD CIF FET JMS I FETR CDF TABLE1 CLA JMP I RECFET FETR,FET /POINTER TO RECORD FETCHING ROUTINE MP, 0 CLA TAD QUEPTR TAD (50+4 DCA 11 JMS MPX /MOVE STRING RIGHT ONE CHARACTER JMP MP3 /CONTINUE 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 MP3, TAD (320 DCA I 11 /INSERT A P JMP I MP /RETURN TO CALLER MP1,0 /NEGATIVE LOOP COUNTER /THIS ROUTINE IS THE NORMAL PATH FOR BUILDING THE MACREL BATCH /FILE. EACH TASK IN THE TASK TABLE NOT DELIMITED BY A (XXX2) IS /INCLUDED IN A .MAC RECORD IN THE MACREL BATCH FILE. PAGE M3, 0 CLA TAD (7114 JMS RECFET /OVERLAY DUMMY MACREL BATCH RECORD MK1, TAD DIRLOC TAD (-3 DCA DIRLOC CDF .FLD DCA PFLG /RESET THE LAST PASS FLAG IAC /SET POINTER BACK TO CURRENT RECORD AND /SET AC=1 TO FETCH CIF FET JMS I M33 JMS M7 JMP MK1 /DO UP TO 127 DECIMAL TASKS MK20, JMP I M3 /RETURN TO CALLER M33,FET /POINTER TO RECORD FETCHER PAGE M7, 0 /USED FOR BOTH DEFAULT AND NORMAL BUILD CLA JMS GLEN /GET RECORD LENGTH DCA MK3 /STORE AHEAD FOR CONCATENATE CALL TAD (-4 DCA M326 /4 DEVICES TO ENTER M313, TAD D1 JMS AFET /POINT TO .RB STORAGE ANSWER CDF .FLD CIF IN JMS I M311 M314, 6 /DISPLACEMENT FOR FIRST DEVICE IS 6 6 /SIX CHARACTERS CLA TAD (16 TAD M314 DCA M314 /POINT TO NEXT INSERT ISZ M313 /POINT TO NEXT DEVICE ANSWER ISZ M326 /INCREMENT NEGATIVE COUNTER JMP M313 /CONTINUE INTIL FOUR DEVICE NAMES ARE INSERTED TAD (-4 DCA M326 /SET COUNTER FOR FOUR FILE NAMES TAD DFFG SZA CLA JMP MK2 /IF DFFG IS SET, THE TASK NAME /NEED NOT BE INSERTED (DEFAULT) CDF TABLE1 TAD SNRPTR CIA TAD M74 SMA CLA JMP MK20 /CHECK FOR LAST TASK M320, TAD M74 /POINT TO BEGINNING OF TASK TABLES M321, CDF .FLD CIF IN JMS I M311 M317, 15 /AC=POINTER TO NAME, ARG1=DISPLACEMENT 6 /NO. CHAR IS SIX AND (1 SZA CLA JMP M2 /BIT 11 IS SET FOR DISPLACEMENT TYPE RECORDS IF /DELIMITER NO SOURCE IS INDICATED TAD (16 TAD M317 DCA M317 /INCREMENT TO NEXT FILE NAME ENTRY ISZ M326 /INCREMENT NEGATIVE COUNTER JMP M320 /CONTINUE UNTIL ALL TASK NAMES HAVE BEEN INSERTED MK2, STA DCA M326 TAD (51 /SET UP FOR SINGLE PASS DCA M317 /POINT TO PARAM NAME DISPLACEMENT IN /.MAC COMMAND STRING TAD PFLG SZA CLA JMP MK7 /CHECK FIRST PASS FLAG ISZ PFLG /SET IT IF NOT TAD (25 JMS AFET /POINT TO PARAMETER FILE NAME ANSWER JMP M321 /GO INSERT IT MK7, JMS MLIST /GO CHECK IF LISTING IS DESIRED JMS MP /INSERT A P IN PARAM FILE SPEC JMS CFCK /GO CHECK FOR CONTROL FILE TASK CDF .FLD CIF CON JMS I M70 MK3, 0 /STARTING LENGTH STORED HERE AS ARG1 DCA M10 CDF .FLD CIF BUF JMS I M11 M10, 0 /RECORD LENGTH M2, CLA TAD D5 DCA M313 TAD (6 DCA M314 TAD (15 DCA M317 /RESET THE ARGUMENTS FOR THE NEXT PASS TAD DFFG SZA CLA JMP I M7 /IF DEFAULT FLAG IS SET, ONLY ONE RECORD IS /OUTPUTTED PER / CALL /M4 ROUTINE BRINGS IN NEXT RECORD AND /RETURNS UNTIL DONE. TAD (5 TAD M74 DCA M74 /INCREMENT TO POINT TO NEXT TASK /ENTRY IN TASK TABLES CDF TABLE1 JMP I M7 D1, 332 /ANSWER TO .RB STORAGE D2, 34 /ANSWER TO .LS DEVICE D3, 21 /ANSWER TO FILES PRODUCED STORAGE D4, 31 /ANSWER TO SOURCES DEVICE D5, TAD D1 /CALCULATE TAD INSTRUCTION DFFG, 0 /DEFAULT COMMAND STRING FLAG M74, TSYS-6 /POINTER TO TASK TABLE START PFLG, 0 /PARAMETER FILE INSERT FLAG /1 MEANS INSERT COMPLETED /FIRST ENTRY IN TABLE IS ZERO M76, 0 /NEGATIVE COUNTDOWN, MAXIMUM NUMBER OF TASKS M311,IN M326,0 /NEGATIVE COUNTER M70,CON M11,BUF /THIS SUBROUTINE ACCOUNTS FOR THE POSSIBILITY THAT A CONTROL FILE PRODUCED /MAY NOT BE ON THE SAME MEDIA AS THAT INDICATED IN THE "SOURCES" ANSWER /IF THE TASK IS ONE OF THE DESIGNATED CONTROL TASKS (AS DETERMINED BY /A MATCHING ALGORITHM) THE .MAC STRING IS OVERLAYED BY THE FILES /PRODUCED ANSWER REPLACING THE "SOURCES" ANSWER. PAGE CFCK, 0 CLA CDF .FLD TAD M74 DCA 10 /SETUP POINTER TO CURRENT TASK CDF TABLE1 TAD I 10 DCA TAB1 TAD I 10 DCA TAB2 TAD I 10 DCA TAB3 TAD I 10 DCA TAB4 /MOVE TASK ON-PAGE TAD TABPTR DCA TADRVR /INITIALIZE ROVING TABLE POINTER ONE, CDF .FLD TAD I TADRVR CIA TAD TAB1 /FORM WORD ONE - FIRST ENTRY SNA CLA JMP TWO /MATCH,TRY FOR SECOND WORD TAD (4 TAD TADRVR DCA TADRVR /NO MATCH, BUMP POINTER TO NEXT ENTRY TAD TADRVR CIA TAD TABE /FORM TABE-TADRVR SPA CLA JMP I CFCK /END OF TEST AND NO MATCH, RETURN JMP ONE /TRY NEXT ENTRY TWO, ISZ TADRVR TAD I TADRVR /BUMP POINTER AND GET SECOND WORD CIA TAD TAB2 /FORM TADRVR-TAB2 SNA CLA JMP THREE /TWO WORDS MATCH, TRY FOR THREE TAD TADRVR TAD (3 DCA TADRVR /BUMP POINTER TO NEXT ENTRY JMP ONE /NO MATCH, RETURN TO TRY AGAIN THREE, ISZ TADRVR TAD I TADRVR CIA TAD TAB3 SNA CLA /TRY FOR THIRD WORD MATCH JMP FOUR /MATCH TRY FOR FOUR TAD (2 TAD TADRVR DCA TADRVR JMP ONE /MISSED ON THIRD WORD, START AGAIN FOUR, ISZ TADRVR TAD I TADRVR CIA TAD TAB4 SNA CLA JMP MATCH /FOUR WORDS MATCH, THIS IS A CONTROL FILE TASK ISZ TADRVR JMP ONE /MISSED ON FOURTH, TRY AGAIN MATCH, TAD (21 JMS AFET CDF .FLD CIF IN JMS I CFCK1 60 6 /DISPLACEMENT FOR INSERT IS 60 OCTAL, NO. CHAR. IS 6 CLA JMP I CFCK /REPLACE SOURCES DEVICE WITH PRODUCED ANSWER AND /RETURN TAB1,0 TAB2,0 TAB3,0 TAB4,0 /ON-PAGE STORAGE FOR CURRENT TASK TADRVR,0 /ROVING TABLE POINTER CFCK1,IN /POINTER TO INSERT ROUTINE .ENABLE OS8 TABS, TEXT "TTY1" TEXT "TTY2" TEXT "TTY3" TEXT "TTY4" TEXT "RX8A" TEXT "RX8B" TEXT "RX8C" TEXT "RX8D" TABT,0 TABE,TABT /DELIMITER FOR CONTROL FILE TASK NAME TABLE TABPTR, TABS