ASMB,R,L,C HED SRPM 91700-16154 REV.A 760206 * (C) HEWLETT-PACKARD CO. 1976 NAM SRPM,17,4 91700-16154 REV.A 760206 SPC 1 ****************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * ****************************************************************** SPC 2 ENT SRPM EXT EXEC,#SRPM,RNRQ,#TBRN,#RSAX EXT #QCLM,#CLWT,#PLOG,#SVTO,#CDCB SUP * * * SRPM * SOURCE: 91700-18154 * BINARY: 91700-16154 * PRGMR: BOB SHATZER * DATE: 06 FEB 76 * * * * SRPM IS THE SLAVE REQUEST PRE-PROCESS MODULE FOR DS-1. * IT RECEIVES BOTH PARMB'S AND QCB HEADERS FROM GRPM AND * BUILDS A SLAVE STREAM LIST ENTRY IN RES FOR THE REQUEST. * IT THEN PRE-PROCESSES THE REQUEST AS REQUIRED BY THE * PARTICULAR DESTINATION MONITOR AND THEN SENDS THE REQUEST * TO THAT MONITOR VIA ITS I/O CLASS WITH A CLASS WRITE/ * READ. * * * ERRORS: THE FOLLOWING ERROR CONDITIONS CAN OCCUR: * * 1. SRPM'S CLASS IS BAD - REPORT CATASTROPHIC ERROR * 2. THE RES TABLE MGT RN (#TBRN) IS BAD - DITTO * 3. CANNOT BUILD A TABLE ENTRY IN RES - IGNORE REQUEST * 4. MONITOR'S CLASS IS BAD - THROW THE REQUEST AWAY * * ALL ERROR PROCESSING IS DONE BY THE DISC-RESIDENT MODULE * 'QCLM'. THE NECESSARY ERROR PROCESSING INFORMATION AND * THE PARMB IS WRITTEN INTO QCLM'S I/O CLASS. THUS, SRPM IS * FREE TO SERVICE THE NEXT INCOMING REQUEST. * SKP SRPM JSB EXEC CLASS GET TO WAIT FOR PARMB DEF *+7 DEF D21I DEF #SRPM DEF QCB DEF D42 DEF LU DEF SCODE JSB ERR1 * LDA PARMB GET FIRST WORD OF REQUEST AND B377 ISOLATE STREAM TYPE STA STREM AND SAVE IT ALF,ALF ROTATE TO UPPER BYTE USE WITH #RSAX ADA D2 SET IN LOWER BYTE TO INDICATE SLAVE LISTS STA ST.LS SAVE FOR #RSAX CONTROL WORD * LDA SCODE GET SELECT CODE ALF,ALF MOVE TO UPPER BYTE IOR #SVTO STUFF IN SLAVE REQUEST TIMEOUT LDB REGS+1 GET EQT12 FROM DRIVER RETURN BLF,BLF ROTATE DATA PENDING BIT TO BIT 0 SLB IS THERE A DATA PENDING CONDITION? IOR BIT14 YES - SET BIT 14 IN RSAX ENTRY WORD STA ENTRY AND STORE IN BUFFER FOR #RSAX DLD PARMB+33 GET TIME TAG FROM PARMB DST ENTRY+1 AND PUT INTO RSAX ENTRY * JSB RNRQ GLOBAL LOCK #RSAX TABLE RN DEF *+4 DEF GLW DEF #TBRN DEF MCLSN JSB ERR1 * JSB #RSAX CALL #RSAX TO BUILD LIST ENTRY DEF *+5 FOR THIS REQUEST DEF D2 DEF ST.LS DEF ZERO DEF ENTRY SSA ERROR? JSB ERR0 YES - DROP THE REQUEST AND GET THE NEXT * LDA LU GET THE SPECIFIED LU STA PARMB+24 STUFF IT INTO THE PARMB * LDA STREM GET STREAM TYPE CPA D6 IS THIS A STREAM 6 REQUEST? (RFA) RSS YES. SKIP TO GET CDCB ADDRESS. JMP GETCL NO. GO TO GET MONITOR'S CLASS. LDB CDCBA GET THE CDCB ADDRESS. RSS OBTAIN LDB B,I A RBL,CLE,SLB,ERB DIRECT JMP *-2 ADDRESS STB PARMB+22 STUFF CDCB ADDRESS INTO PARMB * GETCL LDB SHEDR GET STREAM HEADER ADDRESS INB BUMP POINTER TO MONITOR'S CLASS NUMBER LDA B,I GET CLASS NUMBER STA MCLSN SAVE MONITOR'S CLASS NUMBER * JSB #CLWT WRITE PARMB TO MONITOR'S CLASS DEF *+6 DEF MCLSN DEF PARMB DEF D35 DEF ZERO DEF ZERO JSB ERR2 ERROR RETURN * LDA #PLOG GET PARMB LOGGING FLAG SZA,RSS IS IT SET? JMP SRPM NO - GO BACK TO GET ANOTHER REQUEST JSB #CLWT WRITE QCB AND PARMB TO LOGGER DEF *+6 DEF #PLOG DEF QCB DEF D42 DEF XEQT DEF ZERO JSB ERR0 IGNORE ERROR RETURN JMP SRPM ALL DONE - GET THE NEXT REQUEST * SKP * * ERROR PROCESSING SECTION * ERR0 NOP HERE TO GIVE UP AND TERMINATE DST REGS SAVE REGISTERS IN QCB CLA SET QCB CONTROL WORD TO ZERO LDB ERR0 PICK UP ORIGINATION ADDRESS JMP ERRN AND GO TO GENERAL ERROR PROCESSOR * ERR1 NOP HERE TO REPORT CATASTROPHIC ERROR DST REGS LDA BIT15 LDB ERR1 JMP ERRN * ERR2 NOP HERE TO DEALLOCATE LIST ENTRY DST REGS LDA B40 LDB ERR2 JMP ERRN * ERRN STA QCB SAVE CONTROL WORD ADB M1 SUBTRACT 1 FROM ERROR ADDRESS STB ERRAD AND SAVE IT IN THE QCB JSB #CLWT WRITE QCB+PARMB TO QCLM DEF *+6 DEF #QCLM DEF QCB DEF D42 DEF XEQT DEF ZERO NOP ERROR RETURN JMP SRPM GO GET ANOTHER REQUEST * SKP * * CONSTANTS AND STORAGE * B EQU 1 XEQT EQU 1717B BIT15 OCT 100000 D21I ABS 100000B+21 D35 DEC 35 D42 DEC 42 B377 OCT 377 STREM NOP ZERO OCT 0 D2 DEC 2 GLW OCT 40002 LU NOP SCODE NOP M1 DEC -1 CDCBA DEF #CDCB BIT14 OCT 40000 ENTRY OCT 0,0,0 MCLSN NOP D6 DEC 6 QCB NOP QCB - DO NOT REORDER THESE 8 LINES SHEDR NOP STREAM LIST HEADER ADDRESS ST.LS NOP #RSAX STREAM/LIST CONTROL WORD CHANL NOP REQUESTING LU AND SELECT CODE ERRAD NOP ERROR ORIGINATION ADDRESS REGS NOP REGISTER STORAGE AREA NOP PARMB BSS 35 PARMB AREA B40 OCT 40 * END SRPM