/ / / / / / / / / / /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 PBLD-PARAMETER FILE BUILDER /PBLD IS THE ROUTINE RESPONSIBLE FOR CREATING /THE PARAMETER FILE PNAME.MA, WHERE NAME /IS USER SPECIFIED. PBLD TAKES A SEPARATE PATH /IN THE DEFAULT CASE, SETTING THE DEFAULT /PARAMETER AND OUTPUTTING M1000 AND P1001. /IN THE NORMAL CASE, PBLD BUILDS THE /TASK EQUATES FIRST, THEN FOLLOWED BY /ALL OTHER EQUATES, AND FINALLY THE SYSTEM /CONDITIONALS IN THE P1001 AREA OF THE /PARAMETER FILE. .ENTRY PBLD .RSECT PBLDER .EXTERNAL TABLE1,ANSPTR,TTALLY,ST,UNP1,FET,SIZ,IN,CON,BUF,CN .EXTERNAL CQUES,IFLAG,PCKPTR,DIRLOC,QUES,TQUES,TSYS,SYSPTR .EXTERNAL OVRPTR,RECLOC,TTYPTR,TTTY,ETTY,SNRPTR,ESYS,ETASK .EXTERNAL UNPACK,PACPTR,PAC1,LOGNUM,TSKPTR,ESNR,TTASK,TSNR .EXTERNAL PAGEFG,GETR,TFLAG FIELD 1 PBLD, 0 CLA TAD (CDF CIF) RDF DCA PB70 /SETUP FOR RETURN CDF .FLD CIF ST JMS I PB67 0 /OPEN FILE 0 /PNAMEX.MA CLA TAD (16 JMS PFET /GET ANSWER TO DEFAULT QUESTION SZA CLA JMS PB10 /GO TO DEFAULT SECTION IF ANSWER IS YES /RETURN TO PB101 TO BY PASS NORMAL BUILD JMS PB66 /GO TO TASK OUTPUT ROUTINE JMS PB65 /GO OUTPUT THE EQUATES PB101, JMS PB64 /OUTPUT THE SYSTEM PARAMETERS CLA CDF .FLD CIF ST JMS I PB67 1 /CLOSE FILE 0 /PNAME.MA CLA TAD (770 JMS PFET /GET ANSWER TO DEFAULT QUESTION SZA CLA /ANY FLOPPY CONTROL FILES REQUIRED? JMS PB63 /GO HANDLE CDF TABLE1 TAD TTALLY SZA CLA /ANY TTY CONTROL FILES REQUIRED? JMS PB62 /YES. GO BUILD THEM. PB70, 0 JMP I PBLD /RETURN TO MAIN3 WHEN DONE. PB67,ST /LINK TO PASS3 I/O ROUTINE PFET, 0 CDF TABLE1 TAD ANSPTR DCA 16 TAD I 16 JMP I PFET /GET ANSWER POINTED TO IN AC PRFET, 0 CDF TABLE1 DCA CQUES CDF .FLD CIF FET JMS I PBLD2 CLA CDF TABLE1 JMP I PRFET PBLD2, FET /SUB TO MAKE A COMMON CALL TO FETCH COMPAC, 0 CLA CDF TABLE1 TAD SYSPTR DCA 10 TAD COMP5 CIA TAD TSKPTR SPA JMP COMP11 /CHECK IF ANY USER TASKS CLA TAD COMP1 DCA 11 /SETUP FOR COMPACTING TASK /TABLES COMP7, CLA TAD I 11 DCA I 10 /MERGE TTASK INTO TSYS TAD TSKPTR CIA TAD 11 SPA JMP COMP7 /TILL ALL OF TTASK UP TO THE NEXT /ENTRY IS MOVED COMP11, CLA TAD COMP6 CIA TAD SNRPTR SPA JMP COMP12 CLA /CHECK FOR ANY LOW-PRIORITY SYSTEM TASKS TAD COMP2 DCA 11 /ETASK = (TSNR-1) COMP10, CLA TAD I 11 DCA I 10 TAD SNRPTR CIA TAD 11 SPA JMP COMP10 /MERGE TSNR TO TSYST TTASK /UNTIL ALL OF TSNR HAS BEEN MOVED COMP12, CLA TAD 10 DCA SNRPTR /SNRPTR IS CHANGED TO INDICATE /NEXT ENTRY INTO NEWLY FORMED /TASK TABLE JMP I COMPAC /RETURN COMP1, ESYS COMP2, ETASK COMP3, ESNR COMP4, TSYS COMP5, TTASK COMP6, TSNR /THIS ROUTINE IS USED WHEN DEFAULT OCCURS. IT SETS /THE DEFAULT EQUATES, OUTPUTS M1000, AND RETURNS /VIA PB101 TO BYPASS THE NORMAL PATH. PAGE PB10, 0 CLA TAD (2016 /POINT TO DEFAULT QUESTION JMS PRFET /OVERLAY THE DEFAULT EQUATE CDF .FLD CIF SIZ JMS I PB611 /CALCULATE RECORD LENGTH DCA PB100 /ANSWER IN AC. TAD (16 JMS PFET /POINT TO DEFAULT ANSWER CDF .FLD CIF IN JMS I P617 PB100, 0 0 /AC HAS POINTER TO ANSWER,ARG2=0,CONCATENATE ANSWER DCA P14 /SAVE RESULTANT LENGTH AS ARGUMENT CDF .FLD CIF CON JMS I PB612 P14, 0 /CONCATENATE CONTROL WORDS AND SQUISH DCA P100 /PACKED LENGTH RETURNED IN AC CDF .FLD CIF BUF JMS I P613 P100, 0 /OUTPUT DEFAULT EQUATE TO TTY BUFFER CLA TAD (1000 JMS PRFET /OVERLAY IT CDF .FLD CIF CN JMS I P616 /OUTPUT EACH SEGMENT WITH CR,LF,AND TAB TAD (-4 DCA T5 /SET UP FOR FOUR POSSIBLE CPU EQUATES L3, TAD T1 DCA L1 /POINT TO FIRST CALCULATED TAD L1, 0 /CALCULATED TAD JMS PFET /POINT TO CURRENT CPU ANSWER SZA CLA JMP L2 /THIS CPU TYPE SELECTED.GO PROCESS ISZ L3 /POINT TO NEXT CPU ANSWER ISZ T5 /CHECK FOR FOUR DONE JMP L3 /CONTINUE JMP PB101 /RETURN, NONE SELECTED T1, TAD (41 T2, TAD (43 T3, TAD (44 T4, TAD (45 T5,0 L2, CLA TAD L1 DCA T7 T7, 0 TAD (2000 JMS PRFET /OVERLAY CORRESPONDING CPU EQUATE CDF .FLD CIF SIZ JMS I PB611 DCA L10 CDF TABLE1 STA TAD 16 DCA 16 /BACKUP AUTOINDEX TO ANSWER TAD I 16 /GET IT AND PASS AS ARGUMENT TO INSERT CDF .FLD CIF IN JMS I P617 L10, 0 0 /0 CHARACTERS CAUSES INSERT OF ANSWER AT END OF RECORD DCA L12 /RESULTANT LENGTH RETURNED IN AC CDF .FLD CIF CON JMS I PB612 L12, 0 DCA L11 /RESULTANT LENGTH IN AC CDF .FLD CIF BUF JMS I P613 L11, 0 /MOVE LENGTH JMP PB101 /RETURN P611,FET PB611,SIZ P617,IN PB612,CON P613,BUF P616,CN /THIS ROUTINE HANDLES THE BUILDING OF ANY TTY CONTROL FILES THAT ARE /SPECIFIED BY THE USER DURING PASS 1. PAGE PB62, 0 STA /HERE FOR TTY CONTROL FILES TAD TTALLY CIA DCA PB620 /SETUP NEGATIVE COUNTER - NUMBER OF TTY CF PB623, JMS P62 /GO BUILD IT ISZ PB621 /INCREMENT FILENAME ARGUMENT ISZ PB622 /INCREMENT BASE POINTER ISZ PB620 /ANY MORE? JMP PB623 /YES. CONTINUE JMP I PB62 /NO. RETURN TO PBLD. P62, 0 CLA CDF .FLD CIF ST JMS I P620 0 /OPEN FILE PB621, 7 /INITIALLY FILENAME TTY1-1 PB622, TAD CFBASE DCA BASE /POINT TO BEGINNING OF SKELETON FILE TAD NOPAR DCA NOPAR1 /INITIALIZE PARAMETER COUNT P621, TAD BASE TAD (1000 JMS PRFET /FORM PARAMETER RECORD NUMBER /AND OVERLAY IT CDF .FLD CIF CN JMS I PB624 /NO INSERT FOR FIRST RECORD ISZ NOPAR1 /DECREMENT PARAMETER COUNT ISZ BASE /POINT TO NEXT PARAMETER P6201, CLA IAC /SET AC TO 1 TO FETCH NEXT SEQUENTIAL RECORD CDF .FLD CIF FET JMS I P622 /GET NEXT PARAMETER CDF .FLD CIF SIZ JMS I P627 DCA P6210 /GET DISPLACEMENT ARGUMENT FOR INSERT ROUTINE TAD BASE JMS PFET /POINT TO ANSWER CDF .FLD CIF IN JMS I P626 P6210, 0 0 /INSERT ANSWER SPA JMP P6202 /CHECK IF ANSWER IS NO DCA PB625 CDF .FLD CIF CON JMS I P623 PB625, 0 /SQUISH RESULT,INSERT CR,LF,AND TAB DCA P6211 CDF .FLD CIF BUF JMS I P624 P6211, 0 /OUTPUT IT P6202, CLA ISZ BASE /POINT TO NEXT SKELETON FILE ISZ NOPAR1 /ANY MORE PARAMETERS? JMP P6201 /YES CONTINUE CLA TAD PB621 DCA P630 /GET CURRENT FILENAME ARGUMENT TAD (5702 /POINT TO INCLUDE RECORD JMS PRFET /OVERLAY IT CDF .FLD CIF SIZ JMS I P627 DCA PB627 /GET LENGTH AND STORE AHEAD CLA TAD (31 JMS PFET /POINT TO DEVICE ANSWER (SOURCES) CDF .FLD CIF IN JMS I P626 12 /DISPLACEMENT IS 10 6 /INSERT 4 CHARACTERS CDF .FLD CIF CON JMS I P623 PB627, 0 DCA P6203 /SQUISH ,INSERT CONTROL WORDS CLA IAC /LAST OUTPUT,INSERT CNTL-Z AND OUTPUT CDF .FLD CIF BUF JMS I P624 P6203, 0 /OUTPUT IT CDF .FLD CIF ST JMS I P620 1 /CLOSE FILE P630, 0 /FILENAME ARGUMENT JMP I P62 /RETURN BASE,0 /CURRENT POINTER TO BASE OF TTY CF CFBASE,700 /FIRST BASE 715 /SECOND 730 /THIRD 745 /FOURTH NOPAR1,0 /NEGATIVE COUNTER-NUMBER OF CF PARAMETERS NOPAR,-11 /CONSTANT PB620,0 /NAGATIVE COUNTER-NUMBER OF TTY CF REQUIRED P620,ST /PASS 3 I/O ROUTINE P622,FET /RECORD FETCHER P623,CON /SQUISH ROUTINE P624,BUF /OUTPUT BUFFER HANDLER P626,IN /INSERT ROUTINE P627,SIZ /RECORD LENGTH CALCULATOR PB624,CN /THIS ROUTINE HANDLES THE BUILDING OF ANY SINGLE PARAMETER /FLOPPY CONTROL FILES THAT ARE SPECIFIED BY THE USER. PAGE PB63, 0 CLA TAD (-4 DCA P635 PB632, ISZ PB631 /INCREMENT COUNT OF NUMBER OF FILES REQUIRED TAD I 16 /11 ALREADY SETUP BY MAIN3. ANSWERS ARE /CONTIGUOUS IN TANS. SNA CLA JMP PB634 /NO ISZ P635 /NOT MORE THAN FOUR CF ARE HANDLED JMP PB632 /CONTINUE UNTIL ALL ARE ACCOUNTED FOR. PB634, TAD PB631 CIA DCA PB631 /FORM COUNTER FOR LOOP P640, CDF .FLD CIF ST JMS I P637 0 /OPEN FILE P636, 3 /FIRST FLOPPY CF /OPEN FIRST FLOPPY CONTROL FILE TAD PB6323 JMS PRFET /GO GET THE PARAMETER CDF .FLD CIF CN JMS I P6310 /OUTPUT TASK=RX8?? CLA IAC CDF .FLD CIF FET JMS I P6301 /GET DEVICE CODE PARAMETER CDF .FLD CIF SIZ JMS I P6351 DCA P6350 /GET DISPLACEMENT FOR INSERT CALL CDF TABLE1 TAD QUES TAD (-1000 JMS PFET /POINT TO FLOPPY DEVICE ANSWER /GET IT CDF .FLD CIF IN JMS I P631 P6350, 0 /DISPLACEMENT 0 /NUMBER OF CHARACTERS TO INSERT UNKNOWN DCA PB635 CDF .FLD CIF CON JMS I P632 PB635, 0 /SQUISH AND INSERT CONTROL WORDS DCA P633 /STORE RESULTANT LENGTH AHEAD CDF .FLD CIF BUF JMS I P634 P633, 0 /LENGTH ARGUMENT CLA TAD (5703 JMS PRFET /OVERLAY INCLUDE RECORD CDF .FLD CIF SIZ JMS I P6351 DCA PB637 /SIZE IT TAD (31 JMS PFET /POINT TO SOURCES DEVICE ANSWER CDF .FLD CIF IN JMS I P631 PB636, 12 6 /INSERT DEVICE ANSWER CLA CDF .FLD CIF CON JMS I P632 PB637, 0 /SQUISH AND PACK DCA P6372 IAC /LAST OUTPUT CDF .FLD CIF BUF JMS I P634 P6372, 0 TAD P636 DCA P6321 /GET FILENAME NUMBER AND STORE FOR CLOSE CALL CDF .FLD CIF ST JMS I P637 1 /CLOSE FILE P6321, 0 /FILENAME ISZ PB6323 /POINT TO NEXT CF ANSWER ISZ P636 /POINT TO NEXT FILENAME CLA /INCREMENT TOTAL NUMBER OF CF ISZ PB631 JMP P640 /CONTINUE UNTIL DONE JMP I PB63 /RETURN TO MAIN3 PB631, 0 /TALLY OF NUMBER OF CF PB6323, 1770 /FIRST FLOPPY ANSWER P6351,SIZ /RECORD LENGTH CALCULATOR P637,ST /PASS3 I/O ROUTINE P6301,FET /RECORD FETCHER P632,CON /SQUISH ROUTINE P634,BUF /OUTPUT BUFFER BUILDER P631,IN /INSERT ROUTINE P635,0 /COUNTER P6310,CN /SQUISH ROUTINE POINTER /THIS ROUTINE HANDLES THE OUTPUT TO PNAME.MA, THOSE /CONDITIONALS AND PARAMETERS REQUIRED BY THE RTS8 /SOURCE FOR CORRECT ASSEMBLY. PAGE PB64, 0 CLA TAD (1001 /P1001 IS MESSAGE NUMBER FOR SYSTEM /PARAMETER RECORDS JMS PRFET /GO FETCH IT IAC /SET AC=1 FOR CNTL-Z INSERTION AFTER THIS RECORD CDF .FLD CIF CN JMS I P641 /MOVE FIRST BLOCK OF DATA FROM TOVER PB647, CLA JMP I PB64 /RETURN TO MAIN3 P641,CN /LARGE RECORD MOVE ROUTINE.(NO INSERTS) /THIS ROUTINE MOVES THE VARIOUS EQUATES OTHER THAN /TASK OR SYSTEM PARAMETERS TO PNAME.MA. PB65, 0 CLA CDF TABLE1 TAD (2016 /POINT TO BEGINNING OF PARAMETER FILE DCA CQUES /GO GET FIRST PARAMETER PB656, CDF .FLD CIF FET JMS I P650 CDF .FLD CIF SIZ JMS I P6521 DCA P6522 /GET DISPLACEMENT FOR INSERT CALL CDF TABLE1 TAD QUES TAD (-2000 JMS PFET /POINT TO CORRESPONDING ANSWER CDF .FLD CIF IN JMS I P651 P6522, 0 0 /GO INSERT ANSWER IF ANY SPA JMP PB655 /NEGATIVE AC MEANS PARAMETER NOT SELECTED DCA P653 /STORE RESULTANT LENGTH AHEAD CDF .FLD CIF CON JMS I P656 P653, 0 DCA P657 CDF .FLD CIF BUF JMS I P6510 P657, 0 /SQUISH AND OUTPUT RESULT PB655, CLA CDF TABLE1 TAD DIRLOC DCA 12 TAD I 12 /GET RECORD NUMBER OF NEXT PARAMETER CIA TAD (2074 SNA /BEGINNING OF TASK PARAMETERS? JMP PB652 TAD (-2074+1000 SNA /END OF PARAMETERS? JMP PB6520 P652, CLA IAC JMP PB656 /GO PROCESS NEXT PARAMETER PB6520, CLA JMP I PB65 /RETURN TO PBLD P650,FET /RECORD FETCHER P651,IN /INSERT ROUTINE P656,CON /SQUISH ROUTINE P6510,BUF /OUTPUT BUFFER BUILDER P6521,SIZ /RECORD LENGTH CALCULATOR PB652, CLA /HERE TO AVOID TASK EQUATES TAD (1776 JMS PRFET JMP P652 ETEN, CDF .FLD TAD (267 DCA UNIT /SET UNITS=7 TAD TEN TAD (-260 SNA CLA JMP ETEN2 /IF TENS =ZERO ALSO,CHECK HUNDREDS STA TAD TEN DCA TEN /SET TEN=TEN-1 CDF TABLE1 JMP ETEN1 ETEN2, TAD HUN TAD (-260 SNA CLA JMP ETEN3 /CHECK IF HUN IS ZERO ALSO TAD (267 DCA TEN /SET TEN =ASCII 7 STA TAD HUN DCA HUN /SET HUN=HUN-1 CDF TABLE1 JMP ETEN1 ETEN3, TAD (260 DCA UNIT /ZERO UNIT,NO TASKS CDF TABLE1 JMP ETEN1 /THIS SERVICE ROUTINE ASSIGNS A PRIORITY TO EACH /TASK INTHE TASK TABLE, AND OUTPUTS THEM TO /PNAME.MA IN THE ORDER OF THEIR PRIORITY. PAGE PB66, 0 CLA TAD PB661 DCA P661 /INITIALIZE UNPACK CALL TO POINT TO START OF TASK ENTRY TAD TFLAG SNA CLA JMS COMPAC /SQUISH TASK TABLES,IF NO PRIORITY ROUTINES RUN PB6615, CDF .FLD CIF UNP1 JMS I P660 P661, 0 /SOURCE BUFFER IS CURRENT TASK TQUES-1 /TARGET BUFFER IS TQUES 2 /UNPACK 6 CHARACTERS P6616, CLA CDF TABLE1 P6611, TAD PB660 TAD (6 DCA 13 /POINT TO END OF TASK TAD (275 /= SIGN DCA I 13 TAD HUN /MSD DCA I 13 TAD TEN DCA I 13 /ASSIGN PRIORITY TO TASK TAD UNIT /LSD DCA I 13 CDF .FLD CIF CON JMS I P666 /SQUISH AND CONCATENATE CONTROL WORDS P6620, 12 /RESULTANT LENGTH WILL BE 12 DCA P665 /SAVE RESULTANT LENGTH FOR MOVE CALL CDF .FLD CIF BUF JMS I P667 P665, 0 /LENGTH ARGUMENT CDF TABLE1 CLA ISZ UNIT TAD UNIT TAD (-270 /CHECK FOR UNITS OVERFLOW SMA CLA JMP PB6614 /OVERFLOW. GO HANDLE PB6616, TAD P661 TAD (5 DCA P661 /POINT TO NEXT TASK TAD TSKFG SZA CLA /NTASKS WRITTEN? JMP PB6630 /YES. GET OUT IAC TAD P661 CIA TAD SNRPTR SPA CLA JMP P6610 /OUTPUT NTASKS WHEN ALL TASKS ARE DONE JMP PB6615 /CONTINUE P6610, CLA TAD PB660 DCA 12 /POINT TO START OF TQUES TAD (-6 DCA PB6622 PB6621, TAD PB6620 DCA I 12 ISZ PB6621 ISZ PB6622 JMP PB6621 /MOVE 6 CHARACTERS INTO TQUES TAD UNIT TAD (-260 SNA CLA JMP ETEN /CHECK IF UNITS ARE ZERO WHEN LAST TASK OCCURS TAD (-1 TAD UNIT DCA UNIT /DECREMENT UNIT COUNT. ETEN1, ISZ TSKFG /SET LAST PASS FLAG JMP P6616 /GO OUTPUT NTASKS PB6630, CLA JMP I PB66 /RETURN TO PBLD PB660,TQUES-1 /START OF WORKING BUFFER P666,CON /SQUISH ROUTINE P667,BUF /OUTPUT BUFFER BUILDER PB661, TSYS-1 /TASK TABLE START PB665, UNPACK-1 /TASKTABLE END PB666, 0 /COUNTER HUN, 260 /ZERO TEN, 260 /ZERO UNIT, 261 /ONE .ENABLE ASCII PB6620, TEXT "NTASKS" PB6614, TAD (260 DCA UNIT /RESET UNIT ISZ TEN /BUMP TENS COUNTER TAD TEN TAD (-270 /OVERFLOW? SPA CLA JMP PB6616 /NO. TAD (260 DCA TEN /BUMP TENS COUNTER ISZ HUN JMP PB6616 /HUNDREDS CANNOT OVERFLOW. P660,UNP1 /POINTER TO UNPACK ROUTINE TSKFG,0 /LAST TASK FLAG PB6622,0 /COUNTER