/ / / / / / / / / / /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 TASK /THIS SUBROUTINE OUTPUTS A TASK ENTRY QUESTION IN AN ITERATIVE /FASHION WITH AN INCREASING TASK NUMBER. UPON RETURN FROM /TTYDVR THE TASK IS ENTERED INTO THE TASK TABLE AFTER PACKING /USING ROUTINES PACK8 AND MOVE. TASK CHECKS FOR NUMBER OF ENTRIES /AND TAKES ERROR RETURN IF NUMBER OF ENTRIES EXCEEDS 127 /(DECIMAL). EACH TASK ENTRY IN TTASK IS DELIMITED BY A MINUS /ONE. .RSECT TASK .ENTRY TI .EXTERNAL TABLE1,RECLOC,PACK8,PCKPTR,TTTY,UNPACK,TTASK,ERR1 .EXTERNAL PCK,MOVE,MOV,TTYDVR,OVRPTR,UQ,TYPE,TFLAG,STASKS .EXTERNAL TTYIO,TTYPTR,TSKPTR,ETASK,CLR,IQUES,PARPTR .EXTERNAL TEMP1,TEMP2,TEMP3,TEMP4,TSYS,ESNR XLIST .INCLUDE MACLIB.MA XLIST .MCALL , ,CLEAR FIELD 1 TI, 0 CLA TAD (CIF CDF) RDF CDF .FLD DCA TI20 DCA TI11 /SETUP FOR RETURN. ZERO 11 JMP TI40 /GO INITIALIZE SOME STORAGE TI41, TAD RECLOC TAD OVRPTR TAD (6 /POINT TO BEGINNING OF TASK NUMBER /IN TASK QUESTION DCA TI23 /TI23 HAS DISPLACEMENT INTO /CURRENT RECORD TAD TI30 DCA TSKPTR /INITIALIZE TSKPTR FOR POSSIBLE SECOND /PASS TAD TI30 DCA TI13 /INITIALIZE MOVE ARGUMENT CDF TABLE1 TI1, TAD TI23 DCA 17 /USE 17 TO INDEX THROUGH RECORD ISZ C TAD C TAD (-272 SMA CLA /CHECK THAT UNITS HAVE NOT GONE /BEYOND 9(DECIMAL). JMP TI2 /OVERFLOW. GO RESET UNITS AND /INCREMENT TENS TI14, TAD C CLL RTL;RTL AND (7400 /FORM FIRST HALF OF THIRD CHARACTER TAD A /GET SECOND CHARACTER AND ADD DCA I 17 /STORE IN TASK MESSAGE TAD C CLL RTR;RTR;RAR AND (7400 TAD B /FORM SECOND OS/8 WORD DCA I 17 /STORE IT ALSO TASC16, CLA /RETURN HERE AFTER ALPHANUMERIC RESPONSE /ERROR. TAD (322 DCA TYPE /SIMULATE R TYPE RECORD CDF .FLD CIF UQ JMS I TI22 /GO BLANK SYSTEM INFORMATION CDF TABLE1 CLA DCA TYPE /CLEAR TYPE TO ALLOW USER ANSWER CDF .FLD ISZ EFLG /SET FLAG TO AVOID INITIALIZATION FOR /TTYDVR ERROR CIF TTYIO JMS I TI21 /GO SEND MODIFIED TASK QUESTION CLA DCA EFLG /RESET THE EFLG CDF TABLE1 ISZ TI11 TAD TI11 TAD (-200 TAD STASKS SMA CLA JMP ERR120 /ERROR, USER ATTEMPTS TO /ENTER MORE THAN 127 (DECIMAL) /TASKS JMP TASC12 /GO MAKE ALPHANUMERIC CHECK TASC17, TAD TTYPTR DCA 15 TAD I 15 /POINT TO TTY BUFFER AND GET /FIRST CHARACTER TAD (-215 SNA CLA JMP TI20 /USER STRIKES CARRIAGE RETURN /WHEN DONE ENTERING TASKS CDF .FLD CIF PCK JMS I PACKER /GO PACK CURRENT USER TASK NAME TTTY-1 UNPACK-1 /SOURCE AND TARGET BUFFERS JMS MAT /CHECK FOR DUPLICATE TASK ENTRY CDF .FLD CIF MOV JMS I MOVER UNPACK-1 TI13, TTASK-1 /GO MOVE DATA FROM UNPACK /TABLE TO TASK TABLE. TI13 /CONTAINS POINTER TO NEXT /ENTRY UPON RETURN. CDF TABLE1 TAD TI13 DCA TSKPTR /STORE ENTRY OF NEXT USER TASK /POINTER. STA TAD TI13 DCA 11 /POINT TO CURRENT TASK DELIMITER TAD 11 DCA 12 /TWO POINTERS TAD I 11 CDF .FLD TAD PTNO1 CDF TABLE1 DCA I 12 /ADD PARTITION BITS TO DELIMITER AND RESTORE JMP TI1 /CONTINUE TO ASK FOR TASK ENTRY /UNTIL USER TERMINATES TI20, 0 JMP I TI /RETURN TO CALLER /USED TO PROMPT USER UNTIL TASK ENTRY COMPLETE A, 260 B, 260 C, 260 TI6, 0 /MOVING COUNTER TI11, 0 /MOVING COUNTER, NUMBER OF TASKS PRESENTLY ENTERED TI21, TTYIO /LINK TO TTYDVR ROUTINE TI22,UQ /LINK TO UQUES ROUTINE TI23,0 /STORAGE FOR POINTER TO USER TASK NUMBER IN SCRIPT TI30,TTASK-1 /VALUE FOR INITIALIZING POINTER TO TTASK PACKER, PCK /LINK TO PACK8 ROUTINE MOVER, MOV /LINK TO MOVE ROUTINEER PAGE TASC12, DCA PTNO1 /INITIALIZE PARTITION NUMBER TAD TTYPTR DCA 10 /BACKUP TO BEGINNING OF USER RESPONSE TASC14, TAD I 10 TAD (-254 SZA JMP PTNO /CHECK FOR COMMA, PARTITION ASSIGNMENT CLA /YES,PROCESS TAD I 10 TAD (-270 SMA JMP ERR204 /CHECK FOR PARTITION ENTRY LESS THAN SEVEN TAD (270-260 SPA JMP ERR204 /MUST BE IN RANGE 0-7 DCA PTNO2 /SAVE PARTITION NUMBER TAD PTNO2 CLL RTL RTL;RTL;RTL;RAL DCA PTNO1 /MOVE TO BITS 0-2 AND SAVE TAD I 10 TAD (-215 SZA JMP ERR204 /LOOK FOR SINGLE DIGIT PARTITION ANSWER CLA CLL CMA RTL TAD 10 DCA 10 /BACKUP TO COMMA TAD (215 DCA I 10 /DELIMIT TASK WITH CR FOR PACK CALL STA TAD 10 DCA 10 TAD PTNO2 TAD PARPTR DCA 12 /POINT TO PARTITION TALLY TABLE TAD I 12 TAD (-20 SMA CLA /CHECK IF 16 ENTRIES ALREADY MADE FOR /THIS LEVEL JMP ERR206 /ERROR MORE THAN 16 ENTRIES ATTEMPTED STA TAD 12 DCA 12 /BACKUP TOCURRENT TALLY ISZ I 12 /INCREMENT NO. OF ENTRIES FOR THIS LEVEL JMP TASC14 /POINT TO CR AND RETURN TO LOOP PTNO, TAD (-215+254 SNA /CARRIAGE RETURN INDICATES END OF USER RESPONSE JMP TASC17 /ANSWER IS ALPHANUMERIC. GO STORE IT TAD (215-260 SPA JMP ERR55 /NOT ALPHANUMERIC IF LESS THAN 260 TAD (260-333 SMA JMP ERR55 /NOT ALPHANUMERIC IF GREATER THAN 332 TAD (333-272 SPA JMP TASC13 /CHECK IF LESS THAN 272 TAD (272-301 SPA JMP ERR55 /IF NOT LESS THAN 273, MUST BE EQUAL OR /GREATER THAN 301 TASC13, CLA JMP TASC14 /CONTINUE TEST UNTIL END OF USER RESPONSE ERR55, CLA TAD (55 /GET ERROR NUMBER ERR56, CDF .FLD CIF ERR1 JMS I TASC15 /GO TO ERROR TO OUTPUT ERROR MESSAGE 0 /SET ERROR PARAMETER TO RETURN HERE EFLG1, CLA CDF .FLD DCA EFLG /RESET TTY ERROR FLAG CDF TABLE1 DCA IQUES /RESET THE CONSTANT Q. NUMBER FLAG CDF .FLD STA TAD C DCA C STA TAD TI11 DCA TI11 /DECREMENT THE RUNNING TASK TALLY CDF TABLE1 /MAKE TASK NUMBER SAME AS LAST PROMPT JMP TI1 TASC15,ERR1 /LINK TO ERROR ROUTINE. ERR204, CLA TAD (204 JMP ERR56 ERR206, CLA TAD (206 JMP ERR56 /HERE FOR MORE THAN 16 PARTITIONS ENTERED ERR120, CLA /HERE WHEN ATTEMPT TO ENTER MORE THAN 127 DECIMAL TASKS TAD (120 CDF .FLD CIF ERR1 JMS I TASC15 0 CLA CDF TABLE1 DCA IQUES /RESET THE CONSTANT Q. NUMBER FLAG JMP TI20 /OUTPUT ERROR MESSAGE,AND TERMINATE TASK ENTRY PTNO1,0 /STORAGE FOR CURRENT PARTITION NUMBER PTNO2,0 /CURRENT DISPLACEMENT IN PARTITION TABLE PAGE TI2, CLA CDF .FLD TAD (260 /HERE WHEN UNITS OVERFLOW DCA C /SET UNITS TO ZERO ISZ B /INCREMENT TENS TAD B TAD (-272 SMA CLA JMP NUM1 CDF TABLE1 JMP TI14 /CHECK TENS FOR OVERFLOW NUM1, TAD (260 DCA B /OVERFLOW ZERO TENS AND /INCREMENT HUNDREDS ISZ A CDF TABLE1 JMP TI14 /NO OVERFLOW ON HUNDREDS /POSSIBLE. RETURN TO LOOP. TI40, TAD EFLG SZA CLA JMP EFLG1 TAD (260 DCA C TAD (260 DCA B TAD (260 DCA A /INITIALIZE USER TASK NUMBER CLEAR SYSPTR,ETASK,TABLE1,0,SUB21 /CLEAR OUT ANY PREVIOUS ENTRIES CDF TABLE1 CLA TAD PARPTR /POINT TO PARTITION TALLY TABLE DCA 10 TAD (-200 DCA I 10 /NO LIMIT ON LEVEL ZERO ENTRIES (MAIN) TAD (-7 /SETUP TO ZERO 8 TALLIES DCA CTPAR CTPAR1, DCA I 10 ISZ CTPAR JMP CTPAR1 /CONTINUE TIL DONE JMP TI41 /RETURN TO FIRST PAGE CTPAR,0 /NEGATIVE COUNTER EFLG,0 /FLAG TO AVOID REENTRY WHEN TTYDVR ERROR OCCURS SUB21,CLR /POINTER TO CLEAR SUBROUTINE MAT, 0 CLA TAD MAT1 DCA 17 /POINT TO BEGINNING OF TASK TABLE FIRST, CDF TABLE1 TAD PCKPTR 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 CLA JMP SECOND /MATCH, CHECK FOR OVERFLOW TAD MAT3 CIA TAD 17 SMA CLA JMP I MAT /NO MATCH FOUND-END OF /TASK TABLE REACHED TASK NAME IS UNIQUE. JMP FIRST SECOND, TAD I 16 CIA DCA TEMP1 TAD I 17 TAD TEMP1 SNA CLA JMP THIRD /SECOND OS/8 WORD MATCHES /GO CHECK THIRD. JMP FIRST /NO MATCH; TRY AGAIN THIRD, TAD I 16 CIA DCA TEMP1 TAD I 17 TAD TEMP1 SNA CLA JMP FOURTH /THIRD WORD MATCHES, TRY FOR FOUR JMP FIRST /NO MATCH; TRY AGAIN FOURTH, TAD I 16 CIA DCA TEMP1 TAD I 17 TAD TEMP1 SNA CLA JMP ERR207 /ALL FOUR MATCH, THIS IS THE /TASK IN QUESITON JMP FIRST /NO MATCH, TRY AGAIN MAT1, TSYS-1 /START OF TASK TABLE MAT3,ESNR /END OF LOW PRIORITY SYSTEM TASK TABLE ERR207, CDF .FLD TAD PTNO2 CDF TABLE1 TAD PARPTR DCA 11 TAD 11 DCA 12 STA TAD I 11 DCA I 12 /DECREMENT PARTITION TALLY TAD (207 JMP ERR56 /DUPLICATE TASK NAME ERROR