ASMB,L,C NAM RUN.C,7 92067-16100 790405 REV. 1926 $CLIB * * SOURCE: 92067-18480 * * PROC RUN.C(FCB1,FCB2,PRAM,ID); * STRING ID; * COMMENT ID IS THE NAME STRING OF THE PROGRAM TO BE SCHEDULED; * INTEGER ARRAY PRAM; * COMMENT PRAM IS A 5 WORD ARRAY USED TO PASS USER DATA BETWEEN * THE FATHER AND SON PROCESSES; * RECORD FCB1,FCB2; * COMMENT FCB'S ARE DATA STRUCTURES CONTAINING ALL THE DATA * NECESSARY TO MANAGE A FILE IT IS ASSUMED THAT FCB1 IS TO BE * THE INPUT FILE, AND FCB2 IS THE LIST FILE BEING PASSED TO THE * SON PROCESS; * BEGIN * MOVE FCB1 TO FCB1. FOR 25 WORDS; * MOVE FCB2 TO FCB2. FOR 25 WORDS; * IF FCB1 = SYSSCRATCH THEN * UNLINK(FCB1); * CLOSE-ALL-LINKED-FCB'S; * GET-ID-FOUND * SCHEDULE(ID,PRAMLIST); * IF ERROR THEN GO ERROR EXIT; * PICKUP_AND_STORE_THE_RETURN_PARAMETERS; * IF FCB1 = SYSSCRATCH THEN * LINK_IT_BACK_IN; * END OF RUN.C; SKP ENT RUN.C EXT EXEC GUESS WHO EXT LUTRU UNIQUE LOGLU NO. UNDER SESSION EXT .MVW THE MOVE WORDS GUY EXT C.TRN THE TURN ON STRING EXT C.TTY THE TERMINAL EXT C.RP ID FINDER EXT CLO.C THE LIBRARY CLOSE ROUTINE EXT INDC. INDIRECT CLEANER EXT FCB1. FCB1'S PLACE IN THE TURN ON STRING EXT FCB2. FCB1'S PLACE IN THE TURN ON STRING EXT C.HLK THE FCB LINKED LIST HEAD EXT C.PAS THE PARAMETER PASSING BUFFER * PROC RUN.C(FCB1,FCB2,ID,PRAM); * STRING ID; * INTEGER ARRAY PRAM; * COMMENT PRAM IS A 5 WORD ARRAY USED TO PASS USER DATA BETWEEN * THE FATHER AND SON PROCESSES; * RECORD FCB1,FCB2; * BEGIN A EQU 0 B EQU 1 .FCB1 DEF FCB1. .FCB2 DEF FCB2. FCB1P BSS 1 LOCAL POINTER SET UP TO POINT TO FCB1 FCB2P BSS 1 LOCAL POINTER SET UP TO POINT TO FCB2 .CHLK DEF C.HLK .PRAM BSS 1 .CPAS DEF C.PAS D5 DEC 5 D25 DEC 25 D112 DEC 112 B77 OCT 77 .SKED DEC 23 SCRFG BSS 1 THE SCRATCH FILE FLAG DUPFG BSS 1 THE DUPPED ID FLAG\TEMP STORAGE RUN.C BSS 1 * MOVE FCB1 TO FCB1. FOR 25 WORDS; LDB RUN.C JSB INDC. GET THE FROM ADDRESS AND CLEAR OFF INDIRECTS STB FCB1P SAVE FOR LATER USE LDA B ADA =D2 LDB .FCB1 GET THE TO ADDRESS AND CLEAR OFF INDIRECTS JMP *+2 LDB B,I RBL,CLE,SLB,ERB JMP *-2 JSB .MVW MOVE IT DEF D25 NOP * MOVE FCB2 TO FCB2. FOR 25 WORDS; ISZ RUN.C LDB RUN.C JSB INDC. STB FCB2P (WILL FIX C.#SC LATER) LDA B ADA =D2 LDB .FCB2 JMP *+2 LDB B,I RBL,CLE,SLB,ERB JMP *-2 JSB .MVW MOVE IT DEF D25 NOP * IF FCB1 = SYSSRATCH THEN LDB FCB1P ADB =D7 LDA B,I STA SCRFG SAVE IT FOR LATER USE SZA JMP CLOSE * UNLINK(FCB1); LDA .CHLK NEXT LDB A,I SZA,RSS JMP CLOSE CPB FCB1P JMP FOUND LDA B JMP NEXT GO AROUND AGAIN FOUND LDB B,I STB A,I * CLOSE ALL_LINKED_FCB'S; CLOSE LDA C.HLK SZA,RSS JMP SKED STA CLOSF JSB CLO.C CLOSF BSS 1 JMP *+2 JMP CLOSE ISZ RUN.C JMP EXIT * COPY C.#SC FROM OLD FCB2 TO NEW ONE. SKED LDA FCB2P GET IT. ADA =D6 LDA A,I STA FCB2.+4 PUT IN NEW. * MOVE_THE_USERS_PARAMETERS_DOWN; ISZ RUN.C LDB RUN.C JSB INDC. STB ID ISZ RUN.C LDB RUN.C JSB INDC. STB .PRAM LDA B LDB .CPAS JMP *+2 LDB B,I RBL,CLE,SLB,ERB JMP *-2 JSB .MVW DEF D5 NOP * GET-ID-FOUND LDA C.TTY+2 AND B77 STA DUPFG JSB LUTRU DEF *+2 DEF DUPFG LDB ID JSB C.RP JMP EXIT NO ERROR RETURN STA DUPFG STB ID * SCHEDULE(ID,PRAMLIST); JSB EXEC DEF *+9+1 DEF .SKED ID BSS 1 DEF C.PAS DEF C.PAS+1 DEF C.PAS+2 DEF C.PAS+3 DEF C.PAS+4 DEF C.TRN DEF D112 * IF ERROR THEN GO ERROR EXIT; * PICKUP THE RETURN PARAMETERS AND STORE THEM INTO PRAM; LDA B LDB .PRAM JSB .MVW DEF D5 NOP LDA DUPFG * *FOLLOWING CODE CHANGED ON 790403 *REV 1926-CORRECTS SESSION 'RP' PROBLEM * SZA,RSS * *THAT'S IT! * JMP EXIT LDB ID CLA JSB C.RP DELETE ID NOP NO ERROR RETURN EXIT ISZ RUN.C * IF FCB1 = SYSSCRATCH THEN LDA SCRFG SZA JMP RUN.C,I * LINK_IT_BACK_IN; LDA FCB1P STA C.HLK CLA STA FCB1P,I JMP RUN.C,I END