ASMB,R,L,C HED 3000 REQUEST CONVERTER (C) HEWLETT-PACKARD CO. 1979 NAM RQCNV,19,25 91741-16004 REV 1913 790104 SPC 1 ****************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. 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. * ****************************************************************** SPC 2 EXT EXEC,$LIBR,$LIBX,$RNTB,#QXCL,RNRQ EXT #RSAX,#TST,#NULL,#LDEF,#TBRN EXT #RQCV,#QRN,#RPCV,$OPSY SPC 2 **************************** RQCNV ******************************* * * * SOURCE: 91741-18004 * * * * BINARY: 91741-16004 * * * * PROGRAMMER: JIM HARTSELL * * * * FEBRUARY 14, 1977 * * * *----------------------------------------------------------------* * * * MODIFIED BY DMT BEGINNING NOVEMBER 7, 1978 * * * ****************************************************************** SPC 2 L EQU 304 MAXIMUM LINE BUFFER SIZE. DBL EQU 512 MAXIMUM SLAVE DATA LENGTH. * * RQCNV IS THE INTERFACE TO THE DS/1000 SLAVE MONITORS FOR REQUESTS * ORIGINATING FROM THE HP 3000. ALL INCOMING REQUESTS ARE CONVERTED * TO DS/1000 FORMATS FOR PROCESSING AT THE RTE SYSTEM. * SUP A EQU 0 B EQU 1 SPC 1 RQCNV LDA $OPSY RAR,SLA IS THIS AN RTE-III OR IV? RSSI RSS YES. JMP GET NO. LDB RSSI GET "RSS" INSTRUCTION. STB MODI2 MODIFY TO DO CROSS-MAP LOAD. STB MODI3 MODIFY TO DO CROSS-MAP STORE. DLD MWII MODIFY TO DO "MWI" DST DMS2 CROSS-MAP MOVE. DLD MWFI MODIFY TO DO "MWF" DST DMS3 CROSS-MAP MOVE. * ************************************************************ * * * MAIN PROCESSING SECTION FOR ALL REQUESTS FROM THE 3000. * * * ************************************************************ * GET EQU * * JSB EXEC WAIT FOR A REQUEST. DEF *+5 DEF CLS21 DEF #RQCV RQCNV'S I/O CLASS. DEF RQBUF 3000 REQUEST BUFFER. DEF MAXRQ NOP IGNORE ERRORS. * STB RCVLN SAVE ACTUAL # WORDS RECEIVED. CLA CLEAR TST POINTER INTO S.A.M. STA TSTAD STA STREM CLEAR LOCAL TST HEADER. STA LCSEQ STA HLDCL STA MCLAS STA FCNCD STA MASK * LDA PARMA CLEAR DS/1000 REQUEST BUFFER AREA. STA TEMP LDB PRMBL CMB,INB CLA CLR STA TEMP,I ISZ TEMP INB,SZB JMP CLR * **** EVENTUALLY, BREAK SHOULD BE HANDLED BY REMOTE SESSION MONITOR **** LDA RQ0 CHECK FOR MESSAGE CLASS 6, AND B377 STREAM 22 OCTAL (BREAK). ALF,ALF STA B LDA RQ2 AND B377 IOR B CPA M6S22 JMP SNREP YES. JUST SEND A REPLY. * * CHECK TRANSACTION STATUS TABLE (TST) FOR MATCHING SEQUENCE # * IN 8-WORD FIXED-FORMAT HEADER. A MATCH WILL BE FOUND FOR * RFA/P-TO-P/DEXEC WRITE AND READ CONTINUATIONS. NOTE THAT * THE CONTINUATION BIT IS NOT SET IF THIS IS THE LAST ONE. * DLD #TST GET TST ADDR AND # OF ENTRIES. STA TEMP CMB,INB STB TEMP1 SZA SZB,RSS JMP REJCT REJECT IF NO TST. (SHOULDN'T HAPPEN) * TSTLP LDB TEMP CHECK NEXT ENTRY. JSB LODWD ENTRY IN USE? SZA,RSS JMP NXTST NO. GO ON TO NEXT ENTRY. INB YES. JSB LODWD (CROSS) LOAD LOCAL SEQ. #. CPA RQ5 JMP CONT1 MATCH. GO PROCESS CONTINUATION. * NXTST LDB TEMP BUMP TO NEXT ENTRY. ADB TSTLN STB TEMP ISZ TEMP1 JMP TSTLP * * NO TST ENTRY. PERFORM "GRPM" FUNCTIONS FOR NEW REQUEST. * LDA RQ0 IF WORD COUNT BYTE = 8, THIS ALF,ALF IS A RESIDUAL CONTINUATION AND B377 REQUEST AFTER A TIMEOUT. CPA D8 JMP REJCT * LDB #NULL SZB,RSS ANY TCBS AVAILABLE? JMP REJCT NO. REJECT. * LDA RQ0 GET 3000 MESSAGE CLASS. AND B377 STA TEMP1 LDA RQ2 GET 3000 STREAM TYPE. AND B377 STA TEMP2 * LDB MAPTB MAP DS/3000 MSG CLASS AND STB TEMP STREAM TO DS/1000 STREAM. * MAPLP LDA B,I GET NEXT MAP TABLE ENTRY. CPA N1 JMP REJCT NOT IN TABLE. CPA TEMP1 COMPARE MESSAGE CLASS. RSS JMP NMACH NO MATCH ON THIS ONE. * INB MATCH. LDA B,I COMPARE DS/3000 STREAM TYPE. SZA IF TABLE ENTRY = 0, IT'S A MATCH. CPA TEMP2 NON-ZERO: TEST IT. JMP MATCH MATCH. GO GET DS/1000 STREAM TYPE. * NMACH LDB TEMP BUMP TO NEXT MAP TABLE ENTRY. ADB D3 STB TEMP JMP MAPLP CONTINUE SEARCH. * MATCH INB LDA B,I GET DS/1000 STREAM TYPE. STA STREM * ADA #LDEF ADA D2 POINT TO LIST HEADER POINTER. LDB A,I POINT TO LIST HEADER. INB LDA B,I STA MCLAS SAVE MONITOR'S CLASS #. INB LDB B,I GET ID SEG ADDR OF MONITOR. RBL,CLE,ERB SZB,RSS IF MONITOR NOT ENABLED, JMP REJCT REJECT REQUEST. ADB D15 LDA B,I AND D15 CPA D4 AVAILABLE MEMORY SUSPEND? JMP REJCT YES. REJECT THE REQUEST. * LDB $RNTA RSS LDB B,I RESOLVE INDIRECT. RBL,CLE,SLB,ERB JMP *-2 LDA #QRN GET QUIESCENT RN. AND B377 ISOLATE TABLE INDEX. ADB A COMPUTE POSITION IN RN TABLE. LDA B,I GET IT. AND B377 SZA QUIESCING? JMP REJCT YES. SEND IT BACK. STA PARMB+2 SET SOURCE NODE # = 0. * CCA SET DESTINATION NODE = LOCAL. STA PARMB+3 * JSB #RSAX BUILD TCB FOR THIS STREAM. DEF *+5 DEF D3 DEF D0 PASS ORIGINATORS SEQUENCE # DEF STREM & STREAM DEF PARMB+2 & ORIGIN NODE #. * SSB OK? JMP REJCT NO. STA PARMB+1 YES. STORE SEQ # IN PARMB. STA LCSEQ SAVE FOR TST ENTRY. * INB SET "3K" BIT IN WORD 2 OF TCB. JSB LODWD IOR BIT14 JSB STRWD ADB D2 LDA LCSEQ STORE "LOCAL SEQ #" AS JSB STRWD "ORIG SEQ #" IN TCB. * LDB #NULL IF WE USED SZB LAST TCB, JMP OK JSB RNRQ LOCK TABLE DEF *+4 ACCESS RN DEF LGNW [GLOBAL LOCK] DEF #TBRN [NO WAIT] DEF TEMP [NO ABORT] * * IF CONTINUATION BIT IS SET IN DS/3000 REQUEST, ALLOCATE * A HOLDING CLASS FOR COLLECTION OF DATA BLOCKS BEFORE * PASSING REQUEST TO DS/1000 MONITOR. * OK LDA RQ2 BIT 13 OF STREAM WORD RAL,RAL IS CONTINUATION BIT. SSA,RSS JMP CONV NO CONTINUATION. * LDA B1315 INITIALIZE CLASS # FOR STA HLDCL NO RELEASE & NO WAIT. * JSB EXEC QUICK ALLOCATE - NO ABORT. DEF *+5 DEF CLS19 CLASS CONTROL. DEF D0 LU = "BIT BUCKET" FOR ALLOCATION. DEF D0 DUMMY PARAM FOR ALLOCATION. DEF HLDCL CLASS NUMBER STORAGE ADDRESS. JMP REJCT ERROR. * JSB EXEC COMPLETE PREVIOUS ALLOC. REQUEST. DEF *+5 DEF CLS21 CLASS GET - NO ABORT. DEF HLDCL DEF D0 DEF D0 JMP REJCT ERROR. * * CONVERT DS/3000 REQUEST TO DS/1000 FORMAT. * CONV JSB D1000 * STA RQLEN SAVE LENGTH OF DS/1000 REQUEST. * * BUILD ENTRY IN TRANSACTION STATUS TABLE (TST). * DLD #TST FIND EMPTY SLOT (AVAIL. ENTRY). STA TEMP CMB,INB STB TEMP1 BLOOP LDB TEMP CHECK NEXT ENTRY. JSB LODWD CROSS LOAD WORD 1. SZA,RSS ZERO? JMP STTST YES. (B) = ADDR IN S.A.M. * LDB TEMP NO. GO TO NEXT ENTRY. ADB TSTLN STB TEMP ISZ TEMP1 JMP BLOOP JMP REJCT NO AVAILABLE ENTRY. * STTST STB TSTAD SAVE ADDR OF TST ENTRY IN S.A.M. LDA TSTLN LENGTH OF A TST ENTRY. CAX PREPARE FOR A DMS "MWI". LDA LTSTA GET LOCAL TST AREA ADDRESS. JSB $LIBR NOP DMS2 MVW TSTLN MOVE ENTRY TO TST [DMS: "MVI"]. JSB $LIBX DEF *+1 DEF *+1 * STDL LDB ARQ0 PREPARE FOR DATA ADDRESS POINTER. LDA RQ0 IS THERE DATA? ALF,ALF AND B377 ADB A STB DABUF SET ADDR OF POSSIBLE DATA. ADA N8 CMA,INA LDB RQ7 INB BRS ADA B STA DALEN SAVE LENGTH OF DATA (OR ZERO). * * CHECK IF THERE WILL BE A CONTINUATION OF DATA. * LDA RQ2 CONTINUATION BIT SET IN RAL,RAL DS/3000 REQUEST? SSA JMP CONT2 YES. GO USE HOLDING CLASS. * * CLASS WRITE THE DS/1000 REQUEST TO REQUIRED MONITOR. * PUT JSB EXEC DO CLASS WRITE/READ. DEF *+8 DEF CLS20 NO ABORT. DEF CONWX CONTROL WORD W/"Z" BIT & "WRITE". DEF DABUF,I DATA ADDRESS. DEF DALEN DATA LENGTH (COULD BE ZERO). DEF PARMB REQUEST ADDRESS. DEF RQLEN REQUEST LENGTH. DEF MCLAS I/O CLASS OF MONITOR. JMP REJCT ERROR RETURN. * JMP GET GO GET NEXT REQUEST. SKP * * PROCESS CONTINUATION REQUEST. * CONT1 LDA TEMP SAVE ADDR OF TST ENTRY IN S.A.M. STA TSTAD * LDA RQ0 IF REQUEST IS A ALF,ALF CONTINUATION AND B377 WITHOUT DATA, ADA N8 CLE,ELA CMA,INA ADA RQ7 SZA PASS IT TO RPCNV. JMP CONRQ (OTHERWISE PROCESS CONT.) SPC 1 ************************************************************ * * * LET RPCNV HANDLE INTERMEDIATE CONTINUATION REQUESTS FOR * * DREAD/PREAD/DEXEC(1). * * * ************************************************************ * JSB EXEC CLASS WRITE/READ TO RPCNV. DEF *+8 DEF CLS20 NO ABORT. DEF D0 SEND ONLY ONE BUFFER. DEF RQBUF DS/3000 CONT. REQ. DEF D8 # OF WORDS. DEF D8 FLAG TO RPCNV. DEF TSTAD TST ENTRY ADDR. DEF #RPCV REPLY CONVERTER CLASS. JMP REJCT ERROR RETURN. JMP GET GET NEXT REQUEST. SPC 1 ************************************************************ * * * SECONDARY SECTION FOR DWRIT/PWRIT/DEXEC(2) WHEN DATA * * RECORD LENGTH IS GREATER THAN 256 WORDS (CONTINUATIONS). * * * ************************************************************ * CONRQ LDA D6 MOVE 1ST 6 WORDS OF TST ENTRY CAX TO LOCAL TST STORAGE AREA. LDA TSTAD LDB LTSTA JSB $LIBR NOP DMS3 MVW D6 MOVE: [DMS: "MWF"]. JSB $LIBX DEF *+1 DEF *+1 * JSB #RSAX IS SLAVE TCB STILL AROUND? DEF *+4 DEF D5 DEF LCSEQ DEF STREM * SSB JMP REJCT NO! REJECT. * LDB ARQ0 YES. SET DATA POINTER & LENGTH. LDA RQ0 ALF,ALF AND B377 ADB A STB DABUF ADA N8 CMA,INA LDB RQ7 INB BRS ADA B STA DALEN * JMP CONT3 GO STACK THE DATA BLOCK. * * WRITE DS/1000 REQUEST TO HOLDING CLASS. LOCAL TST STORAGE * AREA CONTAINS APPLICABLE TST ENTRY. * CONT2 JSB EXEC WRITE THE DS/1000 REQUEST TO DEF *+8 THE HOLDING CLASS. DEF CLS20 DEF D0 DEF PARMB ADDRESS OF REQUEST. DEF RQLEN LENGTH. DEF RQLEN DEF D0 DEF HLDCL JMP REJCT ERROR. * * WRITE THE DATA BLOCK TO THE HOLDING CLASS. LOCAL TST * STORAGE AREA CONTAINS APPLICABLE TST ENTRY. * CONT3 JSB EXEC WRITE DATA BLOCK TO HOLDING CLASS. DEF *+8 DEF CLS20 DEF D0 DEF DABUF,I ADDRESS OF DATA. DEF DALEN LENGTH OF THIS BLOCK. DEF DALEN DEF D0 DEF HLDCL JMP REJCT ERROR. * LDA RQ2 CONTINUATION BIT SET (IS THERE MORE?). RAL,RAL SSA,RSS JMP GATHR NO. GO PREPARE FOR MONITOR. * * SEND INTERMEDIATE REPLY FOR THIS CONTINUATION REQUEST. * SNREP LDA RQ0 SET WDCNT = 8. AND B377 IOR LFT8 STA RQ0 LDA RQ2 SET REPLY BIT. IOR BIT15 STA RQ2 LDA RQ4 REVERSE PROCESS NUMBERS. ALF,ALF STA RQ4 LDA LCSEQ STORE LOCAL SEQUENCE NUMBER. STA RQ5 CLA SET N = 0. STA RQ7 * LDA #QXCL SSA JMP GET LINE IS DISCONNECTED. IGNORE. * JSB EXEC WRITE "REPLY" TO QUEX'S CLASS. DEF *+8 DEF CLS20 DEF D0 DEF RQBUF DEF D8 DEF D8 DEF D0 DEF #QXCL JMP REJCT ERROR. * JMP GET GO WAIT FOR CONTINUATION. * * GATHER DS/1000 REQUEST AND DATA BLOCKS FOR * PASSAGE TO DS/1000 SLAVE MONITOR. * GATHR JSB EXEC GET DS/1000 REQUEST. DEF *+6 DEF CLS21 DEF HLDCL NO WAIT, NO RELEASE. DEF PARMB DEF PRMBL DEF LOG JMP REJCT ERROR. * SSA ANYTHING THERE? JMP REJCT NO. * LDA LOG STA RQLEN SAVE LEN OF DS/1000 REQUEST. * LDA ARQ8 INIT DATA BUFFER POINTER. STA DABUF SET POINTER TO DATA. STA TEMP CLA INIT TOTAL DATA LENGTH. STA DALEN * GDATA JSB EXEC GET A DATA BLOCK. DEF *+6 DEF CLS21 DEF HLDCL NO WAIT, NO RELEASE. DEF TEMP,I DATA BUFFER POINTER. DEF MAXDA MAX DATA LENGTH. DEF LOG JMP REJCT ERROR. * SSA,RSS ANYTHING THERE? JMP ADJST YES. LDA DALEN NO. DID WE GET ANY DATA? SZA,RSS JMP REJCT NO. REJECT. JSB RLEAS YES. RELEASE HOLDING CLASS. JMP PUT GO SEND REQUEST TO MONITOR. * ADJST LDA TEMP ADJUST FOR NEXT DATA BLOCK. ADA LOG STA TEMP LDA DALEN ADA LOG STA DALEN * JMP GDATA GET MORE DATA. SKP * * SEND A "REJECT" REPLY TO THE 3000 FOR THIS REQUEST. * LOCAL TST STORAGE AREA CONTAINS CURRENT TST 6-WORD HEADER * AND FIXED-FORMAT HEADER FROM CURRENT REQUEST. "TSTAD" * CONTAINS ADDRESS OF TST ENTRY IN S.A.M. * REJCT LDB TSTAD DELETE TST ENTRY IN S.A.M. CLA SZB SKIP IF NO TST CREATED. JSB STRWD * LDA LCSEQ WAS SLAVE TCB CREATED? SZA,RSS JMP HLD NO. * JSB #RSAX YES. DELETE SLAVE TCB. DEF *+4 DEF D7 DEF LCSEQ DEF STREM * HLD LDA HLDCL HOLDING CLASS ALLOCATED? SZA JSB RLEAS YES. RELEASE IT. * LDA RQ2 SET REJECT BIT IN REQUEST. IOR BIT14 STA RQ2 LDA D8 STA RQLEN JMP SNREP GO SEND REJECT REPLY. SPC 3 * * SUBROUTINE TO FLUSH AND RELEASE THE HOLDING CLASS. * RLEAS NOP * CREPT CCA SET RELEASE RE-TRY SWITCH STA TEMP TO -1. * CLRTN JSB EXEC RELEASE CLASS NUMBER. DEF *+5 DEF CLS21 NO ABORT. DEF HLDCL HOLDING CLASS #. DEF D0 DEF D0 RSS * ISZ TEMP RELEASE PROCESSING COMPLETED? JMP RLEND YES. INA,SZA NO. ARE ALL PENDING REQUESTS CLEARED? JMP CREPT NO. CONTINUE TO CLEAR REQUESTS. * LDA HLDCL YES. SET FOR DE-ALLOCATE. AND CLMSK STA HLDCL JMP CLRTN DO FINAL DEALLOCATION. * RLEND CLA CLEAR SLOT IN LOCAL TST. STA HLDCL LDB TSTAD IF TST ENTRY EXISTS, SZB,RSS JMP RLEAS,I ADB D2 CLEAR SLOT THERE, TOO. JSB STRWD JMP RLEAS,I RETURN TO CALLER. SKP * * SUBROUTINE TO LOAD FROM ALTERNATE MAP (IF RTE-III OR IV). * LODWD NOP MODI2 LDA B,I (RSS IF DMS SYSTEM) JMP LODWD,I RETURN IF RTE-II. XLA B,I LOAD WORD FROM ALTERNATE MAP. JMP LODWD,I * MWII MWI NOP * MWFI MWF NOP SPC 3 * * SUBROUTINE TO STORE INTO ALTERNATE MAP (IF RTE-III OR IV). * STRWD NOP JSB $LIBR NOP MODI3 STA B,I (RSS IF DMS SYSTEM) JMP OUT XSA B,I STORE WORD INTO ALTERNATE MAP. OUT JSB $LIBX DEF STRWD SKP ************************************************************** * * * SUBROUTINE TO CONVERT DS/3000 REQUESTS TO DS/1000 FORMAT. * * * ************************************************************** * D1000 NOP * * KEY OFF 3000 MESSAGE CLASS NUMBER. * LDA RQ0 AND B377 ISOLATE MESSAGE CLASS. ADA N3 SUBRACT 3. LDB D5 JSB BNDCK CHECK RANGE: 0 - 5. ADA JTAB1 TABLE ADDRESS + MESSAGE CLASS. LDA A,I LDB RQ2 GET DS/3000 STREAM WORD. JMP A,I GO TO MESSAGE CLASS PROCESSORS. * JTAB1 DEF *+1 DEF MSCL3 OPERATOR COMMAND. DEF MSCL4 PREAD/PWRIT/PCONT. DEF MSCL5 $STDLIST/$STDIN. DEF REJCT DEF MSCL7 POPEN/PCLOS. DEF MSCL8 RFA/DEXEC. * ************************************************ * MESSAGE CLASS 3 ..... OPERATOR COMMANDS. * ************************************************ * MSCL3 CPB B20 RSS JMP REJCT ILLEGAL STREAM TYPE. * LDA D7 STORE DS/1000 STREAM TYPE. IOR BIT3K SET "3K" BIT. STA PARMB LDA RQ7 STORE COMMAND LENGTH. STA PARMB+4 (+ BYTES) INA ARS CONVERT +BYTES TO +WORDS. STA TEMP * CMA,INA CHECK LENGTH AGAINST LIMIT. ADA PRMBL ADA N5 SSA JMP REJCT COMMAND IS TOO LONG. REJECT. * LDA ARQ8 MOVE ASCII COMMAND. LDB NAMA MVW TEMP * LDA TEMP SET LENGTH OF DS/1000 REQUEST. ADA D5 JMP D1000,I RETURN. * ************************************************ * MESSAGE CLASS 4 ..... PREAD/PWRIT/PCONT. * ************************************************ * MSCL4 LDA D4 STORE DS/1000 STREAM TYPE. IOR BIT3K SET "3K" BIT. STA PARMB LDA B GET DS/3000 STREAM WORD. AND B377 ISOLATE STREAM. ADA NB22 SUBRACT 22 OCTAL. LDB D2 JSB BNDCK CHECK RANGE: 0 - 2. ADA D2 FORM PTOP FCODE. STA PARMB+7 STORE IN REQUEST. STA FCNCD STORE IN TST ENTRY. * LDA ARQ10 MOVE PCB AND TAG FIELD. LDB PCBA MVW D23 * LDA FCNCD CPA D4 JMP MSC4A SKIP IF PCONT. LDA RQ9 CHECK FOR DATA LIMIT. JSB LIMCK STB PARMB+10 STORE IL PARAM IN PARMB. * MSC4A LDA D31 SET LENGTH OF DS/1000 REQUEST. JMP D1000,I RETURN. * ************************************************ * MESSAGE CLASS 5 ..... $STDLIST/$STDIN * ************************************************ * MSCL5 LDA RCVLN CHECK LENGTH AGAINST LIMIT. CMA,INA ADA PRMBL LDB PRMBL SSA STB RCVLN TOO LONG. TRUNCATE MESSAGE. * LDA ARQ0 MOVE REQ TO PARMB AREA. LDB PARMA MVW RCVLN LDA LCSEQ STORE SEQUENCE NUMBER. STA PARMB+5 * LDA RCVLN SET LENGTH OF REQUEST. STA RQLEN JMP STDL PASS ON TO "CNSLM". * ************************************************ * MESSAGE CLASS 7, STREAM 21 ..... POPEN/PCLOS.* ************************************************ * MSCL7 LDA B AND B377 CPA B21 RSS JMP REJCT ILLEGAL STREAM. * LDA D4 STORE DS/1000 STREAM TYPE. IOR BIT3K SET "3K" BIT. STA PARMB * LDA RQ10 GET DS/3000 "RFA" CODE. AND B377 ADA NB25 SUBTRACT 25 OCTAL. LDB D1 JSB BNDCK CHECK RANGE: 0 - 1. SZA JMP PCLOS * * CONVERT POPEN REQUEST. * CLA,INA STORE PTOP FCODE. STA PARMB+7 STA FCNCD STORE IN TST ENTRY. * LDA ARQ11 MOVE PROGRAM NAME. LDB PCBA MVW D3 LDA ARQ29 MOVE TAG FIELD. LDB PCBA ADB D3 MVW D20 * LDA RQ55 STORE POPEN MASK IN TST ENTRY. STA MASK * LDA D31 SET LENGTH OF DS/1000 REQUEST. JMP D1000,I RETURN. * * CONVERT PCLOS REQUEST. * PCLOS LDA D5 STORE PTOP FCODE. STA PARMB+7 STA FCNCD STORE IN TST ENTRY. * LDA ARQ11 MOVE PCB. LDB PCBA MVW D3 * LDA D11 SET LENGTH OF DS/1000 REQUEST. JMP D1000,I * ************************************************ * MESSAGE CLASS 8, STREAM 20 ..... RFA. * ************************************************ * MSCL8 LDA B AND B377 CPA B20 RSS JMP STM21 STREAM 21 IS DEXEC. * LDA D6 STORE DS/1000 STREAM TYPE. IOR BIT3K SET "3K" BIT. STA PARMB LDA ARQ12 MOVE DCB (GARBAGE FOR DSTAT). LDB NAMA MVW D3 * LDA RQ8 GET FCN CODE FROM DS/3000 REQUEST. ADA N150 SUBRACT 150. LDB D12 JSB BNDCK CHECK RANGE: 0 - 12. ADA JMAP1 TABLE ADDRESS + 3000 FCN CODE. LDA A,I GET DS/1000 FCN CODE. STA PARMB+4 STORE IN DS/1000 REQUEST. STA FCNCD STORE IN TST ENTRY. * ADA JTAB3 TABLE ADDRESS + 1000 FCN CODE. LDB A,I LDA XEQT GET ID SEG ADDR OF RQCNV (DUMMY). JMP B,I GO CONVERT THE RFA REQUEST. * JMAP1 DEF *+1 DS/3000 - DS/1000 FCN MAPPING TABLE. D3 DEC 3 DCRET D8 DEC 8 DPURG D6 DEC 6 DOPEN D12 DEC 12 DWRIT D9 DEC 9 DREAD D7 DEC 7 DPOSN D11 DEC 11 DWIND D1 DEC 1 DCLOS D5 DEC 5 DNAME D2 DEC 2 DCONT D4 DEC 4 DLOCF D0 DEC 0 DAPOS D10 DEC 10 DSTAT * JTAB3 DEF *+1 TABLE OF CONVERSION ROUTINE ADDRESSES. DEF DAPOS DEF DCLOS DEF DCONT DEF DCRET DEF DLOCF DEF DNAME DEF DOPEN DEF DPOSN DEF DPURG DEF DREAD DEF DSTAT DEF DWIND DEF DWRIT * * CONVERT DS/3000 RFA REQUEST TO DS/1000 FORMAT. * DAPOS STA PARMB+5 LDA RQ15 MOVE RECNUM PARAM. STA PARMB+8 LDA RQ16 MOVE REL BLOCK PARAM. STA PARMB+9 LDA RQ17 MOVE BLOCK OFFSET PARAM. STA PARMB+10 * LDA D11 SET LENGTH OF DS/1000 REQUEST. JMP D1000,I RETURN. * DCLOS STA PARMB+5 LDA RQ15 MOVE ITRUN PARAM. STA PARMB+8 LDA D9 SET LENGTH OF DS/1000 REQUEST. JMP D1000,I RETURN. * DCONT STA PARMB+5 DLD RQ15 MOVE ICON1, ICON2 DST PARMB+8 * LDA D10 SET LENGTH OF DS/1000 REQUEST. JMP D1000,I RETURN. * DCRET STA PARMB+9 LDA RQ19 MOVE ICR PARAM. STA PARMB+8 LDA RQ18 MOVE ISECU PARAM. STA PARMB+10 DLD RQ15 MOVE ISIZE(1), ISIZE(2). DST PARMB+11 LDA RQ17 MOVE ITYPE PARAM. STA PARMB+13 * LDA D14 SET LENGTH OF DS/1000 REQUEST. JMP D1000,I RETURN. * DLOCF STA PARMB+5 LDA D8 SET LENGTH OF DS/1000 REQUEST. JMP D1000,I RETURN. * DNAME STA PARMB+9 LDA RQ19 MOVE ICR PARAM. STA PARMB+8 LDA RQ18 MOVE ISECU PARAM. STA PARMB+10 DLD RQ15 MOVE NEWNAME PARAM. DST PARMB+11 LDA RQ17 STA PARMB+13 *