/ / / / / / / / / / /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 TSTASK /THIS SUBROUTINE ACCEPTS REQUESTS FOR CHANGES IN PARTITION ASSIGNMENT /OF THE TASKS (BOTH SYSTEM AND USER), DETERMINED BY BITS 0-2 OF THE /TASK DELIMITER. /TSTASK IS ENTERED WHEN MAIN1.MA ENCOUNTERS THE RECORD /TYPE TS. TSTASK ALSO OUTPUTS A LISTING OF CURRENT PARTITION ALLOCATION /WHEN ? RESPONSE IS ENCOUNTERED. .RSECT TSWAP .ENTRY TJ .EXTERNAL TABLE1,TTYPTR,PACK8,PCK,PCKPTR,SYSPTR,TSKPTR,TEMP1,TEMP2,TEMP3 .EXTERNAL TTYDVR,TEMP4,ETASK,SNRPTR,ESYS,ETASK,ESNR,TSYS,COMPAC .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,PARPTR .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 TJ, 0 CLA TAD (CIF CDF) RDF CDF .FLD DCA TS30 /SETUP FOR RETURN CDF TABLE1 /SET FLAG SO NO # REQUESTS ARE SERVICED /AFTER THIS POINT IN THE BUILD JMS SWLOC /GET SWAP TASK RELATIVE DISPLACEMENT IN /THE TASK TABLES. DCA TS15 /SAVE IT T300, CLA /HERE AFTER ERROR MESSAGE TAD (322 DCA TYPE /SIMULATE TYPE R RECORD TO BLANK RECORD /INFORMATION CDF .FLD CIF UQ JMS I TSL1 /GO BLANK IT CDF TABLE1 CLA DCA TYPE /ALLOW USER TO RESPOND CDF .FLD CIF TTYIO JMS I TSL2 /OUTPUT PARTITION MESSAGE /GO MERGE THE THREE TASK TABLES TS31, CDF TABLE1 CLA TAD TTYPTR DCA 10 /POINT TO TTY BUFFER TAD I 10 TAD (-215 SNA JMP TS1 /CHECK FOR CARRIAGE RETURN WHICH /TERMINATES PARTITION ENTRY TAD (215-277 SNA CLA JMP AHD1 /IF ? RESPONSE, USER WANTS LISTING TS2, TAD I 10 TAD (-254 SNA CLA JMP TS3 /FOUND COMMA TAD TSL3 CIA TAD 10 SPA CLA JMP TS2 JMP ERR205 /IF END OF TTY BUFFER BEFORE COMMA, /IMPROPER FORMAT ERROR TS3, TAD I 10 DCA TS5 /SAVE PARTITION NUMBER CLA CLL CMA RAL /SET AC =-2 TAD 10 DCA 10 /BACKUP TO COMMA DELIMITER TAD (-5 DCA TSP1 /SETUP TO ZERO FIVE WORDS TSP2, DCA I 10 ISZ TSP1 JMP TSP2 /CONTINUE ZEROING TO INSURE TASK HAS AT /LEAST SIX CHARACTERS TAD (215 DCA I 10 /REPLACE COMMA WITH A CARRIAGE RETURN CDF .FLD CIF PCK JMS I TS4 TTTY-1 UNPACK-1 /PACK TASK SPECIFICATION IN /OS/8 FORMAT CDF .FLD JMS MAT UNPACK-1 TS7, 0 /RETURNS STARTING LOCATION HERE CDF TABLE1 CLA TAD TS7 /GET STARTING LOCATION OF TASK CIA TAD TS15 /FORM SA(SWAP)-SA(TASK) SMA CLA JMP ERR203 /CANNOT ASSIGN IF PRIORITY GREATER THAN /SWAP TASK TAD TS5 /GET DESIRED PARTITION NUMBER TAD (-270 SMA JMP ERR204 /ONLY 7 LEVELS AVAILABLE TAD (270-260 SPA JMP ERR204 /NOT WITHIN RANGE 0-7 DCA TSP1 /SAVE RIGHT JUSTIFIED PARTITION NUMBER TAD TSP1 CLL RTL RTL;RTL;RTL;RAL /MOVE TO BITS 0-2 DCA TS5 /SAVE IT TAD TSP1 JMS PCHK /CHECK IF ROOM AVAILABLE IN TARGET PARTITION CLA TAD TS7 TAD (4 /FORM POINTER TO TASK DELIMITER DCA 11 TAD 11 DCA 12 /FORM TWO POINTERS TAD I 11 AND (777 /SAVE OTHER FLAGS TAD TS5 DCA I 12 /SET DELIMITER TO NEW PARTITION INDICATOR JMP T300 /GO PROMPT USER AGAIN UNTIL CR ONLY RESPONSE TS1, CLA TS30, 0 JMP I TJ /RETURN TSP1,0 /NEGATIVE COUNTER TS15,0 /SWAP TASK STARTING ADDRESS IN TASK TABLE TSL1,UQ /LINK TO UQUES ROUTINE TSL2,TTYIO /LINK TO RECORD OUTPUT ROUTINE TSL3,ETTY /POINTER TO END OF TTY BUFFER TS5,0 /TEMP. STORAGE TS4, PCK /PACK8 ENTRY PAGE /INCORRECT FORMAT ERR205, CLA TAD (205 JMS TSERR /PRIORITY HIGHER THAN SWAP ERR203, CLA TAD (203 JMS TSERR /ILLEGAL PARTITION NUMBER ERR204, CLA TAD (204 JMS TSERR /MORE THAN 16 PARTITIONS ATTEMPTED ERR206, CLA TAD (206 JMS TSERR TSERR, 0 CDF .FLD CIF ERR1 JMS I RETUX 0 /OUTPUT ERROR MESSAGE, AND RETURN HERE CDF TABLE1 JMP T300 /GO OUTPUT PROMPT TO USER RETUX,ERR1 /LINK TO ERROR ROUTINE SWLOC, 0 CLA TAD (-4 DCA SWLOC1 /SETUP TO MOVE 4 CHARACTERS TAD PCKPTR DCA 11 /POINT TO UNPACK TABLE SWLOC3, TAD SWLOC2 DCA I 11 /MOVE SWAP NAME TO UNPACK TABLE ISZ SWLOC3 ISZ SWLOC1 JMP SWLOC3 /CONTINUE TAD SWLOC4 DCA SWLOC3 /RESTORE CALCULATED TAD CDF .FLD JMS MAT UNPACK-1 SWLOC5, 0 /STARTING LOCATION RETURNED HERE CLA TAD TFLAG SZA CLA JMP SW /TASK TABLES COMPACTED YET? CDF .FLD CIF COMPAC JMS I SW1 SW, CLA CDF TABLE1 ISZ TFLAG /INSURE TFLAG IS SET TAD SWLOC5 JMP I SWLOC /RETURN WITH ADDRESS IN AC SW1,COMPAC SWLOC1,0 SWLOC4, TAD SWLOC2 /CACULATED TAD SWLOC2, 6323 0727 320 0 /ASCII SWAP PCHK, 0 SNA JMP PCHK1 /NO LIMIT ON NUMBER OF ROUTINES IN MAIN TAD PARPTR DCA 11 TAD I 11 /FORM POINTER TO PARTITION TALLY FOR THIS REQUEST TAD (-20 SMA CLA JMP ERR206 /ABORT ATTEMPT TO ASSIGN MORE THAN 16(DECIMAL) STA TAD 11 DCA 11 /BACK UP TO POINT AT CURRENT TALLY PCHK2, ISZ I 11 /INCREMENT TALLY OF ENTRIES FOR THIS LEVEL CDF .FLD TAD TS7 TAD (4 DCA 11 CDF TABLE1 TAD I 11 /GET THE CURRENT DELIMITER AND TCHK2 CLL RTR RTR;RTR;RTR;RAR /ISOLATE PARTITION BITS AND MOVE TO 9-11 TAD PARPTR DCA 11 TAD 11 DCA 12 STA TAD I 11 DCA I 12 /DECREMENT THE TALLY FOR TASK'S CURRENT ASSIGNMENT JMP I PCHK /RETURN NORMALLY IF ANY SLOTS REMAIN PCHK1, TAD PARPTR DCA 11 JMP PCHK2 /IF TARGET PARTITION IS MAIN, BYPASS 16-LIMIT CHECK TCHK, 0 TAD I 15 AND TCHK2 /ISOLATE PARTITION BITS TCHK6, TAD TCHK3 SNA CLA /THIS PARTITION? JMP I TCHK /YES OUTPUT TASK NAME TAD 17 TAD (5 DCA 17 /MOVE POINTER TO NEXT TASK JMP TMOV10 /BYPASS OUTPUT CODE TCHK3, 0 -1000 -2000 -3000 -4000 -5000 -6000 -7000 TCHK2,7000 TCHK5, TAD TCHK3 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 HEAD /SEND A HEADER FOR LISTING CDF .FLD CLA TAD (260 DCA PNO /RESET PARTITION NUMBER COUNTER 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 T300 TMOV40, CDF .FLD STA TAD TMOV13 CIA TAD 16 SMA CLA JMP TMOV41 /COMPARE 16 TO TTY BUFFER END AND /ZERO FILL REMAINDER OF BUFFER 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 ZERO,0 /ARGUMENT FOR HANDLER CALL. ZERO CAUSES FORMFEED /FOR LINEPRINTER NOP FOR TTY 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 ERR205 /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 CDF TABLE1 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 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 PARTITION ALLOCATION"<215><212><215><212> TEXT "TASK PARTITION"<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 TSTASK 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 CLA /NO ENTRIES IF LAST ENTRY POINTER NOT /GREATER THAN TABLE START POINTER JMP TMOV15 /GO PAST TASK OUTPUT CODE TAD (-10 DCA TCHK4 /SET COUNTER FOR 8 LEVELS CDF TABLE1 /DATA MOVE OCCURS IN FIELD /OF SYSTEM TABLES. TAD ENTR3 DCA TMOV31 /GET ON PAGE LINK TO HANDLER ENTRY TAD TTYPTR DCA 16 /POINT TO TTY OUTPUT BUFFER TMOV21, STA TAD TMOV1 DCA 17 /SETUP FOR AUTOINDEX DCA TMOV3 /INITIALIZE OUTPUT BUFFER COUNTER TMVV2, TAD (-4 DCA TMVV1 /SETUP TO MOVE FOUR WORDS TAD 17 TAD (4 DCA 15 /POINT TO TASK DELIMITER JMS TCHK /GO CHECK IF THIS LEVEL 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 TMOV20, TAD TRALER SNA JMP TMOV10 DCA I 16 ISZ TMOV20 JMP TMOV20 /PUT THE PARTITION NUMBER IN OUT BUFFER TMOV10, TAD TMOV11 DCA TMOV20 /INITIALIZE CACULATED TAD FOR /NEXT PASS. TAD 17 CIA TAD TMOV2 TAD (-1 SPA CLA JMP TMOV12 /CHECK FOR LAST ENTRY IN SOURCE /BUFFER TAD 16 CIA TAD TMOV13 TAD (-13 /13 WORDS MAXIMUM PER BUFFER /ENTRY SPA CLA JMP TMOV14 /ROOM FOR AT LEAST 1 MORE ENTRY /INTO OUTPUT BUFFER JMP TMVV2 TMOV14, CDF .FLD /HERE WHEN OUTPUT BUFFER FULL. JMS OUT /SEND IT CDF TABLE1 TAD TTYPTR DCA 16 /INITIALIZE OUTPUT BUFFER POINTER JMP TMVV2 /GO BUILD NEXT OUTPUT BUFFER /HERE WHEN LAST ENTRY HAS BEEN /MOVED TMOV12, CDF .FLD ISZ TCHK6 CDF TABLE1 /POINT TO NEXT LEVEL ISZ PNO /INCREMENT TO NEXT PARTITION ASCII NUMBER ISZ TCHK4 /ANY LEVELS LEFT? JMP TMOV21 /YES GO OUTPUT NEXT LEVEL JMP TMOV40 /GO FILL REMAINDER OF TTY BUFFER /WITH ZEROS TMOV41, CDF .FLD JMS OUT /SEND LAST BUFFER TMOV15, TAD TCHK5 DCA TCHK6 /RESTORE CALCULATED TAD 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 240 /SPACE 240 /SPACE PNO, 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 TCHK4,0 /LEVEL COUNTER PAGE ERR144, CLA TAD (144 CDF .FLD CIF ERR1 JMS I RETUY JMP (OUT+1) ERR145, CLA TAD (145 CDF .FLD CIF ERR1 JMS I RETUY 0 JMP HEAD1 RETUY,ERR1