ASMB,Q,C HED EXECW: SCHEDULE-WITH-WAIT PROCESSOR *(C) HEWLETT-PACKARD CO. 1980* NAM EXECW,19,30 91750-16112 REV.2013 800507 ALL SPC 1 * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* * * THE PRIOR WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. * * *************************************************************** * * NAME: EXECW * SOURCE: 91750-18112 * RELOC: 91750-16112 * PGMR: C. HAMILTON [07/28/77] * * * * * IS THE DS/1000 MONITOR, WHOSE FUNCTION IS TO PROCESS ALL * REQUESTS, WHICH ARE FORWARDED TO THIS NODE VIA SLAVE STREAM #3. ALL OF * THESE REQUESTS WILL HAVE BEEN ORIGINATED THROUGH A USER'S REQUEST TO THE * USER-INTERFACE MODULE. REQUESTS PROCESSED BY ARE * HANDLED ON A 'FIRST COME, FIRST SERVED' BASIS! THUS, IF IS * 'WAITING' FOR COMPLETION OF A PREVIOUSLY-SCHEDULED PROGRAM, A NEW * REQUEST CANNOT BE HONORED, UNTIL THE PREVIOUS REQUEST HAS COMPLETED. * * THE CURRENT USER'S NODE NUMBER WILL BE STORED IN #CNOD, IN . * ( WHEN IS INACTIVE, #CNOD WILL CONTAIN -1 ) * * NOTE: SPECIAL PROCESSING IS PROVIDED FOR THE RTE-M&L ABSOLUTE * LOADER (SEE INFORMATION FOR SUBROUTINE 'APLCK'). * * THOSE REQUESTS WHICH ARE ACCEPTABLE FOR PROCESSING VIA * MAY BE CLASSIFIED UNDER THE FOLLOWING 'EXEC' REQUEST CODES: * * 6 - TERMINATE A PROGRAM (PREVIOUSLY SCHEDULED VIA ) * ** NOTE: NOT SUPPORTED IN RTE-L ENVIRONMENT REJECTED: DS06! * * * 9 - SCHEDULE A PROGRAM WITH 'WAIT' (REPLY RETURNED UPON COMPLETION) * * 23 - QUEUE-SCHEDULE A PROGRAM WITH 'WAIT' (SCHEDULE WHEN AVAILABLE) * (REPLY RETURNED UPON COMPLETION OF SCHEDULED PROGRAM) * * * NOTE: FOR RC=9,23 PARAMETERS RETURNED FROM THE SCHEDULEE-VIA 'PRTN' OR * 'PRTM'-WILL BE PASSED TO THE CALLER. [ SETS =-1, * TO INFORM THAT PARAMETERS HAVE BEEN RETURNED.] * ALSO, IF REQUEST CODE BIT #11=1, THE SCHEDULED PROGRAM MAY BE * CLONED, BY THE #SCSM ROUTINE. * * 24 - QUEUE-SCHEDULE A PROGRAM IMMEDIATELY (SCHEDULE WHEN AVAILABLE) * (REPLY RETURNED AS SOON AS PROGRAM IS SCHEDULED) SKP * * ERRORS, ORIGINATING IN (ERROR QUALIFIER =3): * * "DS06" - ILLEGAL REQUEST CODE (NOT 6,9,23,24) * * "DS08" - INSUFFICIENT MEMORY FOR 'STRING BUFFER', OR NOT DORMANT. * * "RS01" - NO REMOTE SESSION SCB. * "SC01" - MISSING SCHEDULING PARAMETER. * "SC02" - ILLEGAL SCHEDULING PARAMETER. * "SC05" - ATTEMPT TO CONTROL , OR UNDEFINED PROGRAM. * * "XXNN" - [ RTE SYSTEM-ORIGINATED ERRORS, ERROR QUALIFIER =0 ] SKP * GLBLK-START * ****************************************************************** * * * G L O B A L B L O C K REV 2001 790531 * * * * GLOBAL OFFSETS INTO DS/1000 MESSAGE BUFFERS, USED BY: * * * * REMAT, RFMST, DEXEC, DMESS, FLOAD, POPEN, #MAST * * GET, #SLAV, RQCNV, RPCNV, GRPM, LSTEN, PTOPM * * EXECM, EXECW, OPERM, RFAM1, RFAM2, DLIST, DLIS3 * * * ****************************************************************** * ***!!!!! THE FIRST 7 WORDS (#STR THRU #ENO) MUST BE FIXED !!!!!*** #STR EQU 0 STREAM WORD. #SEQ EQU #STR+1 SEQUENCE NUMBER. #SRC EQU #SEQ+1 SOURCE NODE #. #DST EQU #SRC+1 DEST. NODE #. #EC1 EQU #DST+1 REPLY ECOD1. #EC2 EQU #EC1+1 REPLY ECOD2. #ENO EQU #EC2+1 NUMBER OF NODE REPORTING ERROR. * #ECQ EQU #ENO+1 ERROR CODE QUALIFIER (BITS 4 TO 7) #LVL EQU #ECQ MESSAGE FORMAT LEVEL (BITS 0 TO 3) #MAS EQU #LVL+1 MA "SEND" SEQ. # #MAR EQU #MAS+1 MA "RECV" SEQ. # #MAC EQU #MAR+1 MA "CANCEL" FLAGS #HCT EQU #MAC+1 HOP COUNT #SID EQU #HCT+1 SESSION ID WORD * #EHD EQU #SID LAST ITEM OF HEADER #MHD EQU #EHD+1 MINIMUM HEADER SIZE #REQ EQU #MHD START OF REQUEST SPECIFIC AREA #REP EQU #MHD START OF REPLY SPECIFIC AREA * #MXR EQU #MHD+24 <<< MAXIMUM DS REQ/REPLY BUFFER SIZE >>> #LSZ EQU 2 <<< SIZE OF LOCAL APPENDAGE AREA >>> * ****************************************************************** * * GLBLK-END SKP * DXBLK-START * ****************************************************************** * * * D E X E C B L O C K REV 2013 800221 * * * * OFFSETS INTO DS/1000 DEXEC MESSAGE BUFFERS, USED BY: * * * * DEXEC, EXECM, EXECW, RQCNV, RPCNV, FLOAD, REMAT * * * ****************************************************************** * * OFFSETS INTO DEXEC REQUEST BUFFERS. * #ICD EQU #REQ ICODE FOR DEXEC(ALL) #CNW EQU #ICD+1 CONWD FOR DEXEC(1,2,3,13) #CWX EQU #CNW+1 DLUEX EXTENSION FOR DEXEC(1,2,3,13) #BFL EQU #CWX+1 IBUFL FOR DEXEC(1,2) #PM1 EQU #BFL+1 IPRM1 FOR DEXEC(1,2) #PM2 EQU #PM1+1 IPRM2 FOR DEXEC(1,2) #ZOF EQU #PM1 Z-BUFFER OFFSET FOR DEXEC(1,2,3,13) #ZLN EQU #PM2 Z-BUFFER LENGTH FOR DEXEC(1,2,3,13) #PR2 EQU #PM2+1 2ND OPT. PARAMETER FOR DEXEC(3) [RTE-L]. #KEY EQU #PR2+1 KEYWORD(RN) FOR DEXEC(1,2,3) [RTE-L]. #PRM EQU #CWX+1 IPRAM FOR DEXEC(3) #PGN EQU #ICD+1 PRGNM FOR DEXEC(6,9,10,12,23,24,99) #INU EQU #PGN+3 INUMB FOR DEXEC(6) #DPM EQU #INU+1 PARMS FOR DEXEC(6) (5-WORD AREA) #PMS EQU #PGN+3 PARMS FOR DEXEC(9,10,23,24)(5-WORD AREA) #IBF EQU #PMS+5 IBUFR FOR DEXEC(9,10,23,24) #IBL EQU #IBF+1 IBUFL FOR DEXEC(9,10,23,24) #FNO EQU #IBL+1 FNOD FOR DEXEC(9) (APLDR) #RSL EQU #PGN+3 IRESL FOR DEXEC(12) #MPL EQU #RSL+1 MTPLE FOR DEXEC(12) #HRS EQU #MPL+1 IHRS FOR DEXEC(12) #MIN EQU #HRS+1 IMIN FOR DEXEC(12) #SEC EQU #MIN+1 ISECS FOR DEXEC(12) #MSC EQU #SEC+1 MSECS FOR DEXEC(12) #PAR EQU #ICD+1 PARTI FOR DEXEC(25) (PARTITION #) #IST EQU #PGN+3 ISTAT FOR DEXEC(99) * * OFFSETS INTO DEXEC REPLY BUFFERS. * #EQ5 EQU #EC1 EQT 5 FOR DEXEC(1,2,3) #XML EQU #EC2 TRANSMISSION LOG (DEXEC 1,2) #RPM EQU #REP PRAMS FOR DEXEC(9,23) (5-WORD AREA) #TMS EQU #REP MSEC FOR DEXEC(11) #TSC EQU #TMS+1 SEC FOR DEXEC(11) #TMN EQU #TSC+1 MIN FOR DEXEC(11) #THR EQU #TMN+1 HRS FOR DEXEC(11) #TDA EQU #THR+1 DAY FOR DEXEC(11) #TYR EQU #TDA+1 YEAR FOR DEXEC(11) #ST1 EQU #REP ISTA1 FOR DEXEC(13) #ST2 EQU #ST1+1 ISTA2 FOR DEXEC(13) #ST3 EQU #ST2+1 ISTA3 FOR DEXEC(13) #ST4 EQU #ST3+1 ISTA4 FOR DEXEC(13) [RTE-L]. #PAG EQU #REP IPAGE FOR DEXEC(25) #IPN EQU #PAG+1 IPNUM FOR DEXEC(25) #PST EQU #IPN+1 ISTAT FOR DEXEC(25) #KST EQU #REP ISTAT FOR DEXEC(99) * * MAXIMUM SIZE OF DEXEC REQUEST/REPLY BUFFER. * #DLW EQU #MHD+11+#LSZ M A X I M U M S I Z E ! ! ! * * MAXIMUM SIZE OF DEXEC/EXECM DATA BUFFER. * #DBS EQU 512 M A X I M U M S I Z E ! ! ! * * DXBLK-END SKP * EXT #ATCH,#CNOD,#GET,#LNOD,#NODE,#RPB,#SCSM,#SLAV EXT $LIBR,$LIBX,$OPSY,DTACH,EXEC,RMPAR,PGMAD EXT .CAX,.DSX,.MVW,.CBT A EQU 0 B EQU 1 RQB EQU #RPB SUP SPC 2 EXECW JSB RMPAR RETRIEVE THE DEF *+2 SCHEDULING DEF SAVCL PARAMETER(S). * CLB LDA $OPSY GET THE SYSTEM SPECIFICATION. AND D4 ISOLATE THE RTE-M&L BIT(#2). SZA IF NOT RTE-M OR L, SKIP STB SCHD0 ELSE, PREVENT PROCESSING. * STB DABUF CLEAR NAME BUFFER, WORD #1. JSB PGMAD GO TO DEF *+3 OBTAIN DEF DABUF DEF XEQT ID ADDRESS. * LDB RQBAD GET A JMP *+2 DIRECT LDB B,I ADDRESS RBL,CLE,SLB,ERB FOR THE JMP *-2 REQUEST STB RQBAD BUFFER. * * CALL TO 'GET' A NEW REQUEST. * GET JSB DTACH DETACH FROM A POSSIBLE SCB ASSOCIATION. DEF *+1 * JSB #GET WE WAIT FOR A REQUEST TO ARRIVE DEF *+6 DEF SAVCL MONITOR'S CLASS RQBAD DEF RQB REQUEST BUFFER ADDRESS. DEF L#DLW MAXIMUM REQUEST LENGTH. DABFA DEF DABUF DATA BUFFER ADDRESS. DEF DBMAX MAXIMUM DATA BUFFER SIZE. JMP GET IGNORE INITIAL ERRORS! * DST SAVA = REQUEST LENGTH; = DATA LENGTH. LDA L#MHD INITIALIZE FOR A STA RPLYL MINIMUM-LENGTH REPLY. * SKP * * EXAMINE AND VERIFY THE REQUEST CODE (VALID CODES: 6,9,23,24) * LDA RQB+#ICD GET THE REQUEST CODE. AND CLNMS EXCLUDE THE 'CLONE-OK' BIT (#11). CPA D6 TERMINATION REQUEST? JMP PKILL YES, GO TO KILL THE PROGRAM. CPA D9 SCHEDULE WITH WAIT? JMP SCHED YES. GO TO SCHEDULE & WAIT. CPA D23 QUEUE-SCHEDULE WITH WAIT? JMP SCHED YES--THAT'S ACCEPTABLE. CPA D24 QUEUE-SCHEDULE WITHOUT WAIT? JMP SCHED YES--ACCEPT THAT REQUEST, ALSO. * ERDS6 DLD DS06 ERROR "DS06": BAD REQUEST CODE. JMP ERRTN RETURN ERROR-CODE TO CALLER. ERS01 DLD RS01 "RS01": NO REMOTE SESSION SCB. JMP ERRTN ERSC1 DLD SC01 ERROR "SC01": MISSING PARAMETER. JMP ERRTN ERSC2 DLD SC02 ERROR "SC02": INVALID PARAMETER. JMP ERRTN RETURN ERROR-CODES TO CALLER. ERSC5 DLD SC05 ERROR "SC05": IMPROPER PROGRAM REFERENCE. JMP ERRTN ERDS8 DLD DS08 ERROR "DS08": INSUFFICIENT RESOURCES. * ERRTN CCE ERROR RETURN. DST RQB+#EC1 CONFIGURE REPLY BUFFER WITH ERROR CODES. LDA RQB+#ECQ REMOVE THE OLD AND UPMSK ERROR QUALIFIER INFORMATION; IOR B60 INCLUDE THE EXECW QUALIFIER (3), STA RQB+#ECQ RESTORE THE MODIFIED WORD, AND JMP SNODE GO ESTABLISH NODE OF DETECTION. * SCDON CLB,CLE SCHEDULE-RETURN (NO PARAMETERS). * DONE DST RQB+#EC1 STORE REGISTERS IN WORDS 5&6 OF REPLY. SNODE LDA #NODE GET THE LOCAL NODE NUMBER, AND ELA,CLE,RAR INCLUDE ASCII-ERROR FLAG (BIT#15). STA RQB+#ENO STORE THE ERROR INDICATOR--IF ANY. LDA DM1 RESET #CNOD =-1, TO INDICATE JSB STCND THAT IS INACTIVE. * JSB NCLON GO TO REMOVE THE CLONE--IF ANY. * * CALL <#SLAV> TO INDICATE, TO THE USER, THAT THE REQUEST IS COMPLETE. * LDB RQBAD GET THE REPLY BUFFER ADDRESS. ADB RPLYL COMPUTE THE NEXT AVAILABLE LOCATION. LDA $OPSY GET THE OP-SYSTEM IDENTIFIER, STA B,I AND RETURN IT AS LAST WORD OF REPLY. ISZ RPLYL INCLUDE IDENTIFIER IN REPLY LENGTH. * SKP JSB #SLAV TRANSMIT DEF *+4 THE REPLY DEF RPLYL BACK TO THE ORIGINAL DEF DABUF REQUESTOR'S DEF D0 NODE. NOP IGNORE ERRORS--WE CAN DO NOTHING! JMP GET RETURN FOR THE NEXT REQUEST/COMPLETION. * SKP * PROGRAM COMPLETION, SCHEDULE W/WAIT, & QUEUE-SCHEDULEING RC=6,9,23,24 * PKILL LDB $OPSY PROGRAM TERMINATION. CPB DM31 IF ENVIRONMENT IS RTE-L, THEN JMP ERDS6 TERMINATION OF A SON IS NOT SUPPORTED. * SCHED IOR BIT15 ADD NO-ABORT BIT(#15) TO REQUEST CODE, STA RCODE AND SAVE FOR THE CALL TO 'EXEC'. LDA RQB+#SID GET SESSION ID WORD FROM REQUEST. AND B377 ISOLATE DEST. SESSION ID (BITS# 7-0). STA TEMP SAVE SESSION ID FOR CALL. JSB #ATCH ATTACH TO THE SESSION CONTROL BLOCK. DEF *+2 DEF TEMP CPA DM1 JMP ERS01 ERROR: 'RS01' SCB NOT FOUND! * JSB CLONE CREATE A CLONE PROGRAM--IF REQUESTED. * JSB PGMAD GO TO GET THE SCHEDULEE'S STATUS. DEF *+6 THE PROGRAM OF INTEREST RQNAM DEF RQB+#PGN IS NAMED IN THE REQUEST BUFFER. DEF TEMP RETURNED: ID ADDRESS DEF TEMP+1 RETURNED: PROGRAM STATUS DEF TEMP+2 RETURNED: ID SEGMENT TYPE DEF TEMP+3 RETURNED: FATHER'S ID ADDRESS SZA ANY ATTEMPT TO CPA XEQT REMOTELY-CONTROL JMP ERSC5 IS UN-ACCEPTABLE! ERROR: "SC05". * LDB RCODE GET THE REQUEST CODE. ELB,CLE,ERB REMOVE THE NO-ABORT BIT(#15). CPB D6 PROGRAM TERMINATION REQUEST? JMP CKLIN YES. SKIP TO DETERMINE LINEAGE. JMP SCHD0 NO. IT'S A NORMAL SCHEDULE REQUEST. * CKLIN LDA TEMP+3 GET THE FATHER'S ID SEGMENT ADDRESS. CPA XEQT OUR OFFSPRING? JMP SCHD0+1 YES, WE CAN HONOR THE REQUEST. JMP ERSC5 NO. WE CANNOT PROCESS THE REQUEST. * SCHD0 JSB APLCK CHECK FOR [NOP: RTE-II/III/IV] LDA SAVA GET THE REQUEST LENGTH. ADA N#FNO IF THE LENGTH [AFTER APLCK COMPENSATION] SSA,RSS EXCEEDS MAX, THEN JMP ERSC2 IT IS AN INVALID REQUEST! * LDA L#MIN GET THE MINIMUM BUFFER SIZE. CMA,INA NEGATE. LDB RTNDF GET THE DEFAULT RETURN POINTER. ADA SAVA SUBTRACT THE MINIMUM FROM ACTUAL SIZE. ADB A COMPUTE THE ACTUAL RETURN ADDRESS, STB RTNAD AND CONFIGURE THE RETURN POINTER. SZA,RSS ANY ADDITIONAL PARAMETERS? JMP SCHD2 NO. GO CLEAR REMAINDER OF CALL BUFFER. * SSA WERE WE SUPPLIED WITH ENOUGH PARAMETERS? JMP ERSC1 NO. * ERROR: SC01 ! * JSB .CAX YES. SAVE ADDITIONAL PARAMETER COUNT. LDA PR3DF = ADDRESS OF NEXT USER-PARAMETER LDB RTNDF =ADDRESS OF NEXT CALL-BUFFER LOCATION. SCHD1 STA B,I STORE PARAM ADDR INTO CALL BUFFER. INA ADVANCE PARAMETER POINTER. INB ADVANCE CALL BUFFER POINTER. JSB .DSX ALL PARAMETERS PROCESSED? JMP SCHD1 NO. PROCESS THE NEXT ONE. * CLA PREPARE TO CLEAR REST OF CALL BUFFER. SCHD2 ADB D2 ADVANCE POINTER PAST ERROR INSTRUCTIONS. CPB LASTA LAST CALL BUFFER LOCATION CLEARED? JMP SCHD3 YES. GO TO COMPLETE THE CALL. STA B,I NO. CLEAR THE LOCATION. INB ADVANCE THE CALL BUFFER POINTER, AND JMP SCHD2+1 GO TO CLEAR THE NEXT LOCATION. * SCHD3 LDA STRAD+1 GET THE STRING-SIZE POINTER--IF ANY. SZA,RSS PASSING A STRING TO THE PROGRAM? JMP SCHD4 NO. BYPASS DATA-BUFFER SET-UP. LDA DABFA GET LOCAL DATA BUFFER ADDRESS, STA STRAD AND ESTABLISH STRING-POINTER IN CALL. SCHD4 DLD ERRIN LOAD THE ERROR-DETECTION INSTRUCTIONS. DST RTNAD,I STORE THEM AT END OF CALLING SEQUENCE. LDA RQB+#SRC GET THE SOURCE-NODE. JSB STCND ESTABLISH CURRENT USER'S NODE IN . LDB DM1 PREPARE FOR RETURN-PARAMETER CHECKING. * * THE CONFIGURED 'EXEC' CALLING SEQUENCE IS EXECUTED BELOW: * JSB EXEC BUFFER FOR ASSEMBLING 'EXEC' REQUESTS. RTNAD DEF PR3AD RETURN POINTER (CONFIGURED). DEF RCODE REQUEST CODE (SUPPLIED BY CALLER) DEF RQB+#PGN POINTER TO FIRST REQUEST PARAMETER. PR3AD NOP CONFIGURED POINTERS (7-MAX.) TO NOP USER-SUPPLIED CALLING-PARAMETERS, NOP WHICH RESIDE IN THE REQUEST BUFFER. NOP UN-USED CALLING-SEQUENCE LOCATIONS ARE NOP DYNAMICALLY CHANGED TO 'NOP'. STRAD NOP STRING-BUFFER ADDRESS--IF ANY. NOP STRING-LENGTH POINTER--IF ANY. NOP [ ERROR-DETECTION INSTRUCTIONS: WILL BE NOP POSITIONED TO FOLLOW LAST POINTER ] ENDBF CPA DM1 REJECTING A STRING-PASSING REQUEST? JMP ERDS8 YES, SKIP TO RETURN "DS08". SEZ NO. WAS A SYSTEM-LEVEL ERROR DETECTED? JMP DONE YES. RETURN THE ERROR CODES TO CALLER! * CPB DM1 IF NO PARAMETERS WERE RETURNED, JMP SCDON THEN RETURN TO CALLER WITH =0; STA STCND ELSE, SAVE THE STATUS TEMPORARILY. * LDA B SOURCE=RETURN-PARAMETERS IN I.D.SEGMENT. LDB RTPRM DESTN.=EIGHTH WORD OF REPLY BUFFER. JSB .MVW MOVE THE PARAMETERS TO THE REPLY BUFFER. DEF D5 NOP * LDA L#RPM SET THE STA RPLYL REPLY LENGTH. LDA STCND RECOVER THE PROGRAM STATUS. CCB,CLE INDICATE: PARAMETERS RETURNED--NO ERROR. JMP DONE COMPLETE THE REQUEST PROCESSING. * * SESSION MONITOR INTERFACING ROUTINE: CLONE A PROGRAM. * CLONE NOP CREATE A CLONE, CLA IF THE CLONE-OK BIT(#11) OF RC IS SET. JSB #SCSM CALL THE CLONE ESTABLISHMENT ROUTINE. JMP ERSC5 CANNOT BE DONE: ERROR 'SC05'! * LDA RQNAM GET REQ. BUFFER ADDRESS OF PGM. NAME, LDB SVNAM AND SAVE-BUFFER ADDRESS, TOO. JSB .MVW MOVE THE CLONE DEF D3 PROGRAM NAME NOP TO A SAFE PLACE. * JMP CLONE,I RETURN. * NCLON NOP LIQUIDATE A CLONE PROGRAM. LDA SVNAM GET ADDRESS OF SAVED PGM. NAME. JSB #SCSM GO TO ELIMINATE THE CLONE. JMP NCLON,I RETURN. * SVNAM DEF SAVBF SAVBF BSS 3 SAVE BUFFER FOR CLONE'S NAME. * SKP * SET #CNOD IN : + NODE # = CURRENT CALLER; -1 = INACTIVE. * STCND NOP JSB $LIBR D0 NOP STA #CNOD SET INTO #CNOD, IN . JSB $LIBX DEF STCND RETURN. * * SPECIAL PROCESSING FOR IN RTE-M OR L ENVIRONMENT: * * IF NOT SCHEDULING , RETURN; ELSE, CHECK STATUS. * IF NOT DORMANT, REJECT "DS08"; ELSE, STORE SECURITY CODE AND * CARTRIDGE REFERENCE NO. INTO I.D. SEGMENT WORDS #27,28 * IN AN 'M', OR, IN THE 2ND SCHEDULE PARAMETER AND #ACRN IN * , RESPECTIVELY, IN AN 'L'. * STORE REQUEST'S SOURCE-NODE INTO #CNOD IN , AND ALSO STORE * FILE-LOCATION NODE INTO #LNOD IN . * APLCK NOP ADA D12 POINT TO I.D. SEGMENT WORD #13 (NAME). RAL FORM A BYTE ADDRESS STA B FOR THE PROGRAM'S I.D. SEGMENT "NAME". * LDA APLBA GET THE REFERENCE BYTE ADDRESS. JSB .CBT IF THIS IS AN SCHEDULE REQUEST, DEF D5 NOP JMP APSET THEN GO TO PROCESS IT'S PARAMETERS; JMP APLCK,I ELSE, NO FURTHER SPECIAL JMP APLCK,I PROCESSING IS REQUIRED. * APSET LDA TEMP+1 GET THE I.D. SEGMENT STATUS WORD. AND B17 ISOLATE CURRENT STATUS. SZA IF IT IS NOT AVAILABLE, JMP ERDS8 THEN, NOTHING MORE CAN BE DONE! * LDA SAVA COMPENSATE FOR THE CPA L#FNO THREE ADDITIONAL ADA DM3 REQUEST-PARAMETERS, USED TO STA SAVA SPECIFY DOWN-LOADING. * LDA $OPSY CPA DM31 L-SERIES ? JMP APSE1 YES, HANDLE EXTRA PARAMETERS * CLE,ERB CONVERT FROM BYTE, TO WORD ADDRESS. ADB D12 POINT TO I.D. SEGMENT WORD #27. LDA RQB+#IBF GET THE SECURITY CODE. JSB $LIBR NOP STA B,I SET SECURITY CODE INTO I.D. WORD #27. CLE,INB LDA RQB+#IBL GET THE CARTRIDGE REFERENCE NUMBER. STA B,I SET CRN INTO I.D. SEGMENT WORD #28. * LDB RQB+#FNO GET LOCATION-NODE FOR THE RELOC. FILE. STB #LNOD SET #LNOD IN , FOR . JSB $LIBX DEF APLCK RETURN. * APSE1 LDA RQB+#IBF GET SECURITY CODE STA RQB+#PMS+1 MAKE IT SECOND PRAM. DLD RQB+#IBL GET CRN & NODE # DST DABUF SAVE IN DATA BUFFER. LDA D2 INSERT STRING LENGTH STA RQB+#IBL INTO REQUEST BUFFER. ADA SAVA COMPENSATE FOR STA SAVA STRING PASSING. JMP APLCK,I RETURN TO MAIN PROCESSING. * * APLBA DBL *+1 REFERENCE-NAME BYTE ADDRESS. ASC 3,APLDR * SKP DM31 DEC -31 DM3 DEC -3 DM1 DEC -1 D2 DEC 2 D3 DEC 3 D4 DEC 4 D5 DEC 5 D6 DEC 6 D9 DEC 9 D12 DEC 12 B17 OCT 17 D23 DEC 23 D24 DEC 24 B60 OCT 60 B377 OCT 377 CLNMS OCT 173777 BIT #11 EXCLUSION MASK. BIT15 OCT 100000 DS06 ASC 2,DS06 DS08 ASC 2,DS08 RS01 ASC 2,RS01 SC01 ASC 2,SC01 SC02 ASC 2,SC02 SC05 ASC 2,SC05 RCODE NOP REQUEST CODE FOR CALL TO 'EXEC'. RPLYL NOP RTPRM DEF RQB+#RPM PR3DF DEF RQB+#PMS RTNDF DEF PR3AD DBMAX ABS #DBS MAXIMUM DATA BUFFER SIZE. LASTA DEF ENDBF L#FNO ABS #FNO+1 MAXIMUM 'APLDR' REQUEST LENGTH. L#MIN ABS #PGN+3 N#FNO ABS -#FNO-1 L#RPM ABS #RPM+5 L#DLW ABS #DLW L#MHD ABS #MHD TEMP BSS 4 UPMSK OCT 177400 XEQT NOP CONFIGURED ID ADDRESS: . * * * * DO NOT CHANGE ORDER OF NEXT SIX STATEMENTS * * * * ERRIN CCE,RSS CLE SAVA NOP NOP SAVCL NOP DABUF BSS #DBS DATA BUFFER. * * * * * * * * * * * * * * * * * * * * * * * * * * * * BSS 0 [ SIZE OF ] * END EXECW