/ / / / / / / / / / /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 SUBROUTINE TLTASK /THIS SUBROUTINE ACCEPTS REQUESTS FOR CHANGES IN PRIORITY /OF THE TASKS (BOTH SYSTEM AND USER) LOCATED IN THE TASK /TABLES. TAKEN A PAIR AT A TIME, TASK PRIORITY IS CHANGED /BY REORIENTING THE DISPLACEMENT OF THE TASK DISPLACEMENT /RELATIVE TO THE DATUM PROVIDED BY THE USER SPECIFICATION. /TLTASK IS ENTERED WHEN MAIN1.MA ENCOUNTERS THE RECORD /TYPE TL. TLTASK ALSO OUTPUTS A LISTING OF CURRENT PRIORITIES WHEN ? RESPONSE /IS ENCOUNTERED. .RSECT TLTASK .ENTRY TL .EXTERNAL TABLE1,TTYPTR,PACK8,PCK,PCKPTR,SYSPTR,TSKPTR,TEMP1,TEMP2,TEMP3 .EXTERNAL TTYDVR,TEMP4,ETASK,SNRPTR,ESYS,ETASK,ESNR,TSYS .EXTERNAL TTASK,TSNR,TTYIO,PACPTR,TTTY,UNPACK,UQ,ETTY,TYPE .EXTERNAL TABLE1,TTYPTR,PACK6,PACPTR,DEV3,DEV4,LOGNUM,PAC6 .EXTERNAL DEV6,DEV5,IFLAG,SYSNR,ETTY,TEMP1,MOV,ERR1 .EXTERNAL CQUES,GETREC,ANSPTR,RECLOC .EXTERNAL OVRPTR,UNPACK,PCKPTR,PACK8 .EXTERNAL MOVE,SYSPTR,TSNR,ESNR .EXTERNAL SNRPTR,QUES,TEMP6,DIRLOC .EXTERNAL TEMP7,DIRFLG,TEMP10,CFLAG .EXTERNAL DEVNO2,ENTR3,ESYS,TSKPTR,UNP1,PCK,TTTY .EXTERNAL TFLAG,DIRLOC,SYSST,TSYS,TTASK,PAC1,GETR XLIST .INCLUDE MACLIB.MA XLIST .MCALL ,HANDL,CLEAR FIELD 1 TL, 0 CLA TAD (CIF CDF) RDF CDF .FLD DCA TL30 /SETUP FOR RETURN CDF TABLE1 ISZ TFLAG /SET FLAG SO NO # REQUESTS ARE SERVICED /AFTER THIS POINT IN THE BUILD JMS I TL15 /GO CONCATENATE THE TASK TABLES T300, CLA /HERE AFTER ERROR MESSAGE TAD (322 DCA TYPE /SIMULATE TYPE R RECORD TO BLANK RECORD /INFORMATION CDF .FLD CIF UQ JMS I TLL1 /GO BLANK IT CDF TABLE1 CLA DCA TYPE /ALLOW USER TO RESPOND CDF .FLD CIF TTYIO JMS I TLL2 /OUTPUT PRIORITY MESSAGE /GO MERGE THE THREE TASK TABLES TL31, CDF TABLE1 CLA TAD TTYPTR DCA 10 /POINT TO TTY BUFFER TAD I 10 TAD (-215 SNA JMP TL1 /CHECK FOR CARRIAGE RETURN WHICH /TERMINATES PRIORITY CHANGE ENTRY TAD (215-277 SNA JMP AHD1 /IF ? RESPONSE, USER WANTS TASK LISTING TL2, CLA TAD I 10 TAD (-254 SNA JMP TL3 /FOUND COMMA CLA TAD TLL3 CIA TAD 10 SPA JMP TL2 JMP ERR150 /IF END OF TTY BUFFER BEFORE COMMA, /IMPROPER FORMAT ERROR TL3, CLA TAD 10 DCA TL5 /SAVE POINTER TO HIGHER PRIORITY TASK /IN TTY BUFFER (DATUM) STA TAD 10 DCA 10 /BACKUP TO COMMA DELIMITER TAD (215 DCA I 10 /REPLACE COMMA WITH A CARRIAGE RETURN CDF .FLD CIF PCK JMS I TL4 TTTY-1 UNPACK-1 /PACK FIRST TASK SPECIFICATION IN /OS/8 FORMAT (STOPS AT COMMA) CDF .FLD JMS I MATCH1 UNPACK-1 TL7, 0 /RETURNS STARTING LOCATION HERE CDF TABLE1 TAD TTYPTR DCA 11 /POINT TO TTY BUFFER TAD TL5 DCA 10 /10 POINTS TO BEGINNING OF HIGH PRIORITY /TASK IN TTY BUFFER; LOW,HIGH SPEC. TL6, CLA TAD I 10 TAD (-215 /CHECK FOR CARRIAGE RETURN SNA JMP TL36 TAD (215 DCA I 11 /MOVE IT TO BEGINNING OF TTY BUFFER TAD TLL3 CIA TAD 10 SMA JMP ERR150 /ERROR IF END OF TTY BUFFER AND NO CR. JMP TL6 /START TL36, CLA TAD (215 DCA I 11 /STUFF A CR BEHIND TASK CDF .FLD CIF PCK JMS I TL4 TTTY-1 UNPACK-1 /THIS TIME PACK SECOND TASK JMP AHD2 TL15, COMPAC /SERVICE ROUTINE TO MERGE TASK TABLES TLL1,UQ /LINK TO UQUES ROUTINE TLL2,TTYIO /LINK TO RECORD OUTPUT ROUTINE TLL3,ETTY /POINTER TO END OF TTY BUFFER TL5,0 /TEMP. STORAGE FOR POINTER TO SECOND TASK /ENTERED BY USER TL4, PCK /PACK8 ENTRY MATCH1, MAT /SERVICE ROUTINE TO MATCH 4 WORDS IN PAGE AHD2, CDF .FLD /SPECIFICATION IN UNPACK TABLE. JMS I MATCH UNPACK-1 /RETURN STARTING LOCATION HERE TL10, 0 TAD TL7 DCA TLL7 TAD TLL7 TAD (5 DCA TL12 /TL7 HAS CURRENTLY LOWER PRIORITY TASK TAD TLL7 CIA TAD TL10 SMA JMP ERR150 /MOVE FROM HIGH TO LOW NOT ALLOWED CDF TABLE1 /SAVE AS FIRST ADDRESS OF SHUFFLE TAD TL10 TAD (5 DCA TL14 /SAVE AS FIRST ENTRY WHERE /SHUFFLE ENDS CLA TAD TLL7 DCA 10 /POINT TO TASK TO BE MOVED. TAD (-5 DCA TLL17 /SETUP TO MOVE 5 WORDS TO SCRATCH STORAGE TL20, TAD I 10 TL17, DCA SCRTC1 /MOVE TASK TO SCRATCH AREAA ISZ TL17 /INCREMENT CACULATED DCA ISZ TLL17 JMP TL20 /CONTINUE UNTIL FOUR WORDS MOVED TAD SCRTC2 DCA TL17 /REINITIALIZE CACULATED DCA TL22, TAD TLL7 TAD (-1 DCA 10 /BACKUP TO LAST WORD OF PREVIOUS /TASK TAD TL12 TAD (-1 DCA 11 /INITIALIZE AUTOINDEX TO POINT TO /RESPECTIVE TASKS TL23, CLA TAD I 10 /START FROM BOTTOM OF TASK TABLES DCA I 11 /MOVE WORD FROM HIGHER TO TAD 10 /LOWER POSITION TAD (-2 DCA 10 /USE 37 AND 12 LOCATION AS TAD 11 /INDEXERS THROUGH TABLE TAD (-2 DCA 11 /EACH TASK IS EACTLY 4 WORD TAD 11 /ENTRY CIA TAD TL10 SPA JMP TL23 CLA /WHEN TL7 IS 1 LESS THAN TL10, /BACKWARD SHUFFLE COMPLETE /NOW MOVE LOWER PRIORITY /TASK FROM SCRATCH AREA /INTO NEW POSITION TAD (-5 DCA TLL25 /SETUP TO MOVE 5 WORDS TL25, TAD SCRTC1 DCA I 11 ISZ TL25 ISZ TLL25 JMP TL25 /CONTINUE UNTIL 5 WORDS MOVED TAD SCRTC3 DCA TL25 /REINITIALIZE TL25 INSTRUCTION T277, CDF .FLD CIF TTYIO JMS I TL40 CDF TABLE1 /SEND PRIORTY MESSAGE JMP TL31 /DO IT AGAIN UNTIL CARRIAGE /RETURN /HERE WHEN NO MORE CHANGES TL1, CDF .FLD TAD TL DCA TL32 TL30, 0 JMP I TL32 ERR150, CLA /IMPROPER FORMAT TAD (150 CDF .FLD CIF ERR1 JMS I RETUX 0 /OUTPUT ERROR MESSAGE, AND RETURN HERE JMP T300 /GO OUTPUT PROMPT TO USER RETUX,ERR1 /LINK TO ERROR ROUTINE TL33, 0 /COUNTER FOR TTY MOVE LOOP MATCH, MAT /SERVICE ROUTINE TO MATCH 4 WORDS IN /TASK TABLES. SCRTC1, ZBLOCK 5,0 /SCRATCH AREA FOR PRIORITIZED /TASK SCRTC2, DCA SCRTC1 /CACULATED DCA SCRTC3, TAD SCRTC1 /CACULATED TAD TL32, 0 TL40,TTYIO /LINK TO TTY HANDLER ROUTINE TL12, 0 TL37,0 /CROSS PAGE LINKAGE FOR TL7 LOCATION TL14, 0 TLL7,0 TLL17,0 /COUNTER FOR 5-WORD MOVE TLL25,0 PAGE AHD1, CLA CDF TABLE1 TAD (4200 RDF DCA TK21 /CACULATE CONTROL WORD FOR 1 PAGE /OF OUTPUT, FOR FIELD OF TABLE 1 CLEAR TTYPTR,ETTY,TABLE1,0,TK33 /ZERO TTY BUFFER JMS I HEADE /SEND A HEADER FOR TASK LISTING CDF .FLD CLA TAD (260 DCA H TAD (260 DCA T TAD (260 DCA U /RESET RELATIVE PRIORITY COUNTER FOR /REPEAT PRINTOUT REQUESTS CDF TABLE1 CLA TAD SNRPTR DCA TMMOV6 /GET LAST ENTRY POINTER IN MERGED TASK TABLES JMS I TMOVER TSYS TMMOV6, SNRPTR /OUPTUT THE CONTENTS OF THE MERGED TASK TABLES /TO THE OUTPUT DEVICE JMP T277 TMOV6, CLA /HERE WHEN TASK COUNTER OVERFLOW CDF .FLD TAD (260 DCA U /REINITIALIZE UNITS ISZ T /INCREMENT TENS TAD T TAD (-270 SMA JMP TNUM2 CDF TABLE1 JMP TMOV7 /CHECK FOR OVERFLOW OF TENS TNUM2, CLA TAD (260 DCA T /OVERFLOW-INITIALIZE TENS ISZ H CDF TABLE1 JMP TMOV7 TMOV40, CDF .FLD CLA TAD TMOV13 TAD (-1 CIA TAD 16 SMA JMP TMOV41 /COMPARE 16 TO TTY BUFFER END AND /ZERO FILL REMAINDER OF BUFFER CLA CDF TABLE1 DCA I 16 JMP TMOV40 /CONTINUE LOOP TK27,0 TMOVER,TMOV /POINTER TO TASK OUTPUT ROUTINE TK33,CLR /POINTER TO CLEAR ROUTINE TK21,0 /CONTROL WORD FOR HANDLER CALL TK35,TTTY ERR145,CLA TAD (145 CDF .FLD CIF ERR1 JMS I RETU 0 JMP HEAD1 RETU,ERR1 /LINK TO ERROR ROUTINE HEADE,HEAD /POINTER TO HEADER SUBROUTINE ZERO,0 /ARGUMENT FOR HANDLER CALL. ZERO CAUSES FORMFEED /FOR LINEPRINTER NOP FOR TTY PAGE 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 MAT, 0 CLA TAD MAT1 DCA 17 /POINT TO BEGINNING OF TASK TABLE TAD I MAT DCA MAT4 /GET PASSED PARAMETER AND INITIALIZE /AUTOINDEX ISZ MAT /INCREMENT TO NEXT PARAMETER PASSED FIRST, CDF TABLE1 CLA TAD MAT4 DCA 16 /INITIALIZE FOR EACH TRY TAD I 16 CIA DCA TEMP1 /GET FIRST CHARACTER FORM /USER SPECIFIED TASK & SAVE TAD I 17 TAD TEMP1 SNA JMP SECOND /MATCH, CHECK FOR OVERFLOW CLA TAD MAT3 CIA TAD 17 SMA JMP ERR160 /NO MATCH FOUND-END OF /TASK TABLE REACHED; ERROR. JMP FIRST SECOND, TAD I 16 CIA DCA TEMP2 TAD I 17 TAD TEMP2 SNA JMP THIRD /SECOND OS/8 WORD MATCHES /GO CHECK THIRD. JMP FIRST /NO MATCH; TRY AGAIN THIRD, TAD I 16 CIA DCA TEMP3 TAD I 17 TAD TEMP3 SNA JMP FOURTH /THIRD WORD MATCHES, TRY FOR FOUR JMP FIRST /NO MATCH; TRY AGAIN FOURTH, TAD I 16 CIA DCA TEMP4 TAD I 17 TAD TEMP4 SNA JMP MAT2 /ALL FOUR MATCH, THIS IS THE /TASK IN QUESITON JMP FIRST /NO MATCH, TRY AGAIN MAT2, TAD 17 TAD (-4 CDF .FLD DCA I MAT /BACKUP TO BEGINNING OF /(TASK-1) AND RETURN TO /CALLER ISZ MAT JMP I MAT /RETURN TO CALLER MAT1, TSYS-1 /START OF TASK TABLE MAT3,ESNR /END OF LOW PRIORITY SYSTEM TASK TABLE MAT4,0 /TEMPORARY STORAGE FOR AUTOINDEX VALUE ERR160, CLA TAD (160 CDF .FLD CIF ERR1 JMS I RET 0 /OUTPUT ERROR MESSAGE AND RETURN HERE JMP T300 RET,ERR1 /LINK TO ERROR ROUTINE PAGE .ENABLE OS8 HEAD, 0 CLA CDF TABLE1 TAD TTYPTR DCA 15 HEAD2, TAD HEADER TAD (1 SNA JMP HEAD1 TAD (-1 DCA I 15 /POINT TO TTY BUFFER; GET FIRST CHARACTER /IF POSITIVE, STORE IN BUFFER ISZ HEAD2 /CACULATE TAD FOR NEXT LOOP JMP HEAD2 /GO STUFF NEXT CHARACTER HEAD1, CLA TAD HEAD3 DCA HEAD2 /MINUS ONE ENCOUNTER. INITIALIZE /HEAD 2 TO POINT AT BEGINNING /OF HEADER TAD ENTR3 DCA TMOV30 /SETUP FOR ON PAGE LINK TO HANDLER ENTRY CDF .FLD HANDL TK21,TK35,ZERO,ERR145,TMOV30 /GO SEND HEADER TO SELECT /DEVICE ELECT FOR FORMFEED (ZERO) ISZ ZERO /FORMFEED ONLY ON FIRST TIME HEAD10, CDF TABLE1 /THROUGH JMP I HEAD HEADER, TEXT "RTS8 BUILD PROGRAM"<215><212> TEXT "TASK PRIORITY ASSIGNMENT"<215><212><215><212> TEXT "TASK PRIORITY"<212><215> EHDR, -1 TMOV30,0 HEAD3, TAD HEADER .SBTTL SUBROUTINE TMOV /CALLING SEQUENCE: /JMS I MOVER /ARG1 /ARG2 /. /. /. /MOVER, TMOV /TMOV WILL MOVE ANY NOZERO ENTRY IN THE TABLE POINTED TO BY /ARG1. ARG1 CONTAINS THE ADDRESS OF THE LAST ENTRY MADE IN /THE TABLE PLUS 1. PAGE TMOV, 0 CLA CDF .FLD /TMOV PART OF TLTASK AND IS /ASSEMBLED WITH IT IN SAME /FIELD TAD I TMOV DCA TMOV1 /GET SOURCE BUFFER. TARGET /BUFFER ALWAYS TTTY ISZ TMOV TAD I TMOV DCA TMOV2 /TMOV2 HAS LAST ENTRY PLUS /1 INTO SOURCE BUFFER. ISZ TMOV /SETUP FOR RETURN TAD TMOV1 CIA TAD TMOV2 SPA /NO ENTRIES IF LAST ENTRY POINTER NOT /GREATER THAN TABLE START POINTER JMP TMOV15 /GO PAST TASK OUTPUT CODE CLA TAD TMOV1 TAD (-1 DCA 17 /SETUP FOR AUTOINDEX DCA TMOV3 /INITIALIZE OUTPUT BUFFER COUNTER CDF TABLE1 /DATA MOVE OCCURS IN FIELD /OF SYSTEM TABLES. TAD ENTR3 DCA TMOV31 /GET ON PAGE LINK TO HANDLER ENTRY TMOV21, TAD TTYPTR DCA 16 /POINT TO TTY OUTPUT BUFFER TMVV2, TAD (-4 DCA TMVV1 /SETUP TO MOVE FOUR WORDS TMOV4, TAD I 17 DCA I 16 /GET CHARACTERS AND STORE ISZ TMVV1 /INCREMENT MOVE COUNTER JMP TMOV4 ISZ 17 /INCREMENT AUTOINDEX PAST TASK DELIMITER TMOV5, ISZ U CLA TAD U TAD (-270 /INCREMENT UNITS AND CHECK /FOR OVERFLOW SMA JMP TMOV6 /OVERFLOW GO INCREMENT TENS. /RESET UNITS TMOV7, CLA TMOV20, TAD TRALER SNA JMP TMOV10 DCA I 16 ISZ TMOV20 JMP TMOV7 /PUT THE TASK NUMBER IN OUT BUFFER TMOV10, TAD TMOV11 DCA TMOV20 /INITIALIZE CACULATED TAD FOR /NEXT PASS. TAD 17 CIA TAD TMOV2 TAD (-1 SPA JMP TMOV12 /CHECK FOR LAST ENTRY IN SOURCE /BUFFER CLA TAD 16 CIA TAD TMOV13 TAD (-13 /13 WORDS MAXIMUM PER BUFFER /ENTRY SPA JMP TMOV14 /ROOM FOR AT LEAST 1 MORE ENTRY /INTO OUTPUT BUFFER CLA JMP TMVV2 TMOV14, CDF .FLD /HERE WHEN OUTPUT BUFFER FULL. JMS OUT /SEND IT CDF TABLE1 JMP TMOV21 /GO BUILD NEXT OUTPUT BUFFER TMOV12, CLA /HERE WHEN LAST ENTRY HAS BEEN /MOVED JMP TMOV40 /GO FILL REMAINDER OF TTY BUFFER /WITH ZEROS TMOV41, CDF .FLD JMS OUT /SEND LAST BUFFER TMOV15, CDF TABLE1 JMP I TMOV /RETURN TO TKTASK OUT, 0 HANDL TK21,TK35,ZERO,ERR144,TMOV31 JMP I OUT TMOV1, 0 /SOURCE BUFFER TMOV2, 0 /LAST ENTRY LOCATION PLUS 1 TRALER, 211 /TAB 275 /= 240 /SPACE H, 260 /0 T, 260 /0 U, 260 /0 215 /CARRIAGE RETURN 212 /LINE FEED ETRLR, 0 /DELIMITER TMOV3, 0 TMOV11, TAD TRALER TMOV13, ETTY TMOV31,0 TMVV1,0 /COUNTER FOR TTY BUFFER FILL ERR144, CLA TAD (144 CDF .FLD CIF ERR1 JMS I RETUY 0 /OUTPUT ERROR MESSAGE AND RETURN HERE JMP (OUT+1) RETUY,ERR1 /LINK TO ERROR ROUTINE