ASMB,R,Q,C HED <#MAST> MASTER REQUEST INTERFACE * (C) HEWLETT-PACKARD CO. 1980* NAM #MAST,7 91750-1X019 REV 2013 801010 ALL ENT #MAST,#RQB,#TILT,#MSTC,#TTOV * ****************************************************************** * * (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 HEWLETT-PACKARD COMPANY. * ****************************************************************** * * * * EXT .ENTR,EXEC,RNRQ,CLRQ,XLUEX EXT #NRVS,#MAAS,#GET,#RSAX EXT #MSSM,PGMAD,DSERR * EXT #WAIT,#NODE,#QRN,#GRPM,#TBRN,#LEVL EXT #BREJ,$OPSY,#OTCV,#MHCT * * NAME: #MAST * SOURCE: 91750-18019 * RELOC: 91750-1X019 * PGMR: TOM MILNER APR 1979 * REVISED: CLARK JOHNSON 801010 CORRECT CLEANUP OF TCBS AND CLASSES * * * * * #MAST CALLING SEQUENCE: (NOTE: FOR WRITE W/O * WAITING FOR REPLY, INCLUDE THE FOLLOWING CODE * BEFORE THE #MAST CALL). * * EXT #MSTC NO WAIT FLAG AND REPLY CLASS # * LDA CLASS PRE-ALLOCATED CLASS # FOR REPLY * STA #MSTC SET NO WAIT FLAG * . * . * JSB #MAST * DEF *+7 OR 8 * DEF CONWD CONTROL WORD/ERROR-RETURN FLAG (BIT#15). * DEF RQLEN REQUEST LENGTH. * DEF DABUF OUTGOING DATA BUFFER ADDRESS * DEF DLWRT OUTGOING BUFFER LENGTH (OR ZERO) * DEF DLRED INCOMING BUFFER LENGTH (OR ZERO) * DEF RPLEN MAX REPLY LENGTH * DEF INBUF (OPTIONAL) INCOMING DATA BUFFER ADDRESS * A & B HAVE ASCII ERROR CODE (ALSO IN REPLY 5 & 6) * A= RCVD REQ LEN, B= RCVD DATA LEN (OR 0) * * * * CONWD DESCRIPTION: * * BIT#15 - ERROR-RETURN FLAG (RETURN W/ ERRORS IF SET) * BIT#14 -NO TIMEOUT (IF SET) * BIT#0 - NO-REPLY OPTION (IF SET) * SKP * * * #MAST PERFORMS THE FOLLOWING FUNCTIONS: * 1. RETURNS DS00 TO CALLER IF SYSTEM IS QUIESCENT. * 2. ALLOCATES A CLASS NUMBER FOR THE REQUEST. * 3. DOES A LOCK/WAIT ON THE "RES" TABLE ACCESS RN. * 4. CREATES A MASTER TCB * 5. CONVERTS DESTINATION NODE TO LU * 6. SENDS THE REQUEST(/DATA) * 6. CALLS "#GET" TO AWAIT THE REPLY(/DATA) * 8. IF REPLY WAS A "QUIESCENT-REJECT", PUTS SELF IN TIME-LIST. * 9. IF ERROR FLAG IN 7TH REPLY WORD = 1, DOES ERROR RETURN. * 10. CLEARS THE MASTER CLASS # AND TCB. * 11. IF REPLY OK, GIVES RETURN WITH RCVD LENGTHS IN A & B. * * #MAST ERROR PROCESSING: * * 1. IF SIGN BIT(#15) OF CONWD PARAMETER IS SET, ASCII ERROR CODES * ARE SUPPLIED TO THE CALLER IN THE & REGISTERS, UPON * RETURN TO THE POINT IN THE CALLING SEQUENCE. * 2. IF THE SIGN BIT IS NOT SET, THEN THE CALLER'S PROGRAM IS * ABORTED, AFTER PRINTING AN ERROR MESSAGE ON THE SYSTEM * CONSOLE. * * #MAST ERROR MESSAGES: * * "DS00" - DS1000 IS SHUT-DOWN! * (1) #GRPM = 0 * (2) #QRN = 0 * (3) SYSTEM QUIESCENING * "DS02" - DRIVER DETECTED ERROR (PARITY, ETC.) * "DS03" - REQUEST LENGTH ERROR * (2) REQUEST LENGTH TOO SMALL * (3) REQUEST LENGTH TOO LARGE * "DS04" - LOGICAL UNIT INVALID OR NO CLCT ENTRY. * "DS05" - MASTER REQUEST TIMEOUT (COURTESY OF 'UPLIN'). * (1) MASTER REQUEST ACKNOWLEDGED BY MA * "DS07" - 'RES' TABLE-ACCESS ERROR. * (1) NO LEVEL CONVERTERS * "DS08" - REMOTE BUSY FAILURE - NO SAM, ETC * "DS09" - PARAMETER ERROR. * (1) NOT ENOUGH PARAMETERS * (2) NEGATIVE WRITE DATA LENGTH * (3) " READ " " * (4) " MAX REPLY DATA LENGTH * "IOXX" - \ * - RTE SYSTEM DETECTED ERRORS. * "RNXX" - / * 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, DINIT, PTOPM * * EXECM, EXECW, OPERM, RFAM1, RFAM2, DLIST, DLIS3 * * DSTIO, LUMAP, #MSTN * ****************************************************************** * ***!!!!! THE ORDER OF THE FIRST 7 WORDS (#STR THRU #ENO) IS * ***!!!!! FIXED BY THE REQUIREMENT THAT THE STREAM, ADDRESSES * ***!!!!! AND ERROR CODES ALWAYS BE IN THE SAME PLACE, * ***!!!!! REGARDLESS OF MESSAGE FORMAT. THIS MAKES STORE-AND-* ***!!!!! FORWARD CODE MUCH SIMPLER. * #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 SPC 1 A EQU 0 B EQU 1 SKP #MSTC NOP NO WAIT CLASS NUMBER PLUGGED HERE #MAST NOP LDB #MSTC LDA K2 SZB NO WAIT? LDA K14 . YES GET NO WAIT CODE STA GETCB SET #RSAX CONTROL WORD TO GET TCB CLA INITIALIZE BEFORE RUN STA RPLEN STA INBUF STA MA.ID LDA CONWX STA LU+1 INITIALIZE CONTROL WORD LDB #MAST STB ENTRY SETUP FOR .ENTR JMP ENTRY+1 SPC 1 CONWD NOP CONTROL WORD ADDRESS. RQLEN NOP REQUEST BUFFER LENGTH. DABUF NOP OUTGOING DATA BUFFER ADDRESS OR DUMMY PARAMETER. DLWRT NOP WRITE DATA LENGTH (OR ZERO) DLRED NOP READ DATA LENGTH (OR ZERO) RPLEN NOP MAX EXPECTED REPLY LENGTH INBUF NOP INCOMING DATA BUFFER ADDRESS SPC 2 ENTRY NOP (ARTIFICAL?) ENTRY/EXIT JSB .ENTR OBTAIN DIRECT ADDRESSES DEF CONWD FOR PARAMETERS & RETURN POINT. LDB RPLEN SZB,RSS FIRST 6 PARAMETERS PASSED? JMP DS091 NO, GIVE ILLEGAL REQUEST * LDA DLWRT,I CHECK PARAMETERS FOR POSITIVE LENGTH SSA JMP DS092 LDA DLRED,I SSA JMP DS093 LDA RPLEN,I SSA JMP DS094 * LDB INBUF SZB,RSS LDB DABUF SET 7TH PARM TO 3TH IF NOT GIVEN STB INBUF * * CLEAR OUT REQUEST BUFFER * CLB,INB ADB @RQB ADB RQLEN,I --> 2ND APPENDAGE WORD CLA STA B,I CLEAR 2ND WORD (INCLUDES RETRY COUNT) STA RQB+#EC1 STA RQB+#EC2 STA RQB+#ENO STA RQB+#ECQ STA RQB+#MAS STA RQB+#MAR STA RQB+#MAC STA RQB+#SID * * FILL IN HOP COUNT FROM 'RES' * LDA #MHCT STA RQB+#HCT * * CHECK FOR NO-REPLY OPTION * LDB BIT15 LDA CONWD,I GET CONWD SLA TEST FOR NO-REPLY BIT (BIT 0) STB RQB+#ECQ IF SET, SET BIT15 IN ECQ * * * CHECK FOR LOCAL SYSTEM SHUT-DOWN OR QUIESCENT STATUS. * START EQU * CLB STB SEQN CLEAR SEQ # ALLOCATED FLAG STB CLSFG CLEAR CLASS # ALLOCATED FLAG CPB #GRPM IS THE DS/1000 SYSTEM SHUT-DOWN? JMP DS001 YES. GO TELL CALLER THE SAD NEWS. * * REQUESTS WILL BE FORCED TO WAIT HERE, IF LOCAL SYSTEM HAS BEEN QUIESCED. * LDA #QRN CHECK IF #QRN IS VALID SZA,RSS JMP DS002 * JSB RNRQ GO TO RTE TO CHECK FOR SYSTEM QUIESCENCE. DEF *+4 DEF LCGNW DEF #QRN CHECK SYSTEM-QUIESCENCE RESOURCE NUMBER. DEF TEMP SAVE RN STATUS JMP PASER * RTE ERROR - PASS CODE TO CALLER * CLA,INA IS RN CLEAR? CPA TEMP RSS JMP DS003 . NO, TELL USER SYSTEM QUIESCENED/ING * LDA #MSTC CHECK IF CLASS # ALREADY ASSIGNED STA CLASN SZA JMP S1 BYPASS CLASS REQUEST * * REQUEST A CLASS NUMBER ALLOCATION FROM RTE. * JSB CLRQ REQUEST CLASS NUMBER DEF *+4 DEF CLRQ1 ALLOCATION CONTROL WORD DEF CLASN CLASS NUMBER DEF ZERO INDICATE NO OWNERSHIP JMP DS085 ERROR! CANNOT ALLOCATE CLASS NUMBER! LDA CLASN INDICATE CLASS NUMBER HAS BEEN ALLOCATED STA CLSFG * S1 EQU * LDA CONWD,I RAL,ELA MOVE TIMEOUT SUPPRESS FLAG (BIT14) LDA CLASN TO BIT15 RAL,ERA OF CLASS WORD STA TEMP * LDA #NODE LOCAL NODE NUMBER STA RQB+#SRC SET ORIGINATOR NODE (US) LDA RQB+#DST GET DESTINATION NODE CPA N1 ALWAYS LOCAL? LDA #NODE YES! GET LOCAL NODE # STA RQB+#DST SET DESTINATION FIELD * * CONVERT DESTINATION NODE TO LU * JSB #NRVS SEARCH NRV (LU RETURNED IN ) DEF *+6 DEF RQB+#DST (NODE NUMBER FOR SEARCH) DEF TMOUT MASTER TIME-OUT DEF UPLVL UPGRADE LEVEL OF DEST. NODE DEF NABOR NEIGHBOR FLAG (IGNORED) DEF RQB+#DST NODE # FROM NRV (NEEDED IF -LU USED) JMP GETDS ERROR RTN - NODE NOT IN NRV STA LU SAVE COMMUNICATIONS LINK LU * LDA #TTOV GET TRANSACTION T/O OVERRIDE SZA IS IT SPECIFIED (NON-ZERO)? STA TMOUT .YES, OVERRIDE THE T/O VALUE * * WAIT FOR AVAILABILITY OF LIST-ENTRY SPACE IN 'RES'; ADD NEW ENTRY. * LDA #MSTC CHECK NO WAIT FLAG SZA JMP MAAS BYPASS WAIT CODE * JSB RNRQ WAIT FOR TCB AVAILABLE (#MAST ONLY) DEF *+4 DEF LGW LOCK GLOBAL RN/WAIT FOR IT/NO ABORT. DEF #TBRN TABLE-ACCESS SPACE-AVAILABLE RN. DEF CLNUP (DUMMY PARAMETER). JMP PASER * RTE ERROR - PASS ERROR CODE TO USER * * MAAS LDA UPLVL CHECK UPGRADE LEVEL - CANNOT SZA,RSS HAVE MA TO LEVEL ZERO! JMP ALLOC THIS TURNS OFF MA TO THIS NODE. * * GET MESSAGE ACCOUNTING (MA) SEQUENCE NUMBER * JSB #MAAS MA ASSIGNMENT DEF *+3 DEF RQB (REQUEST BUFFER) DEF RQLEN,I (REQUEST LENGTH) JMP MAERR ERROR - RETURN W/ DS08 STA MA.ID UNIQUE MA IDENTIFIER * ALLOC JSB #RSAX ALLOCATE TCB DEF *+6 DEF GETCB ADD MASTER TCB DEF TEMP PASS CLASS # & TIMEOUT FLAG DEF MA.ID UNIQUE (MA) MESSAGE IDENTIFIER DEF RQB+#DST PASS DESTINATION NODE DEF TMOUT MASTER TIME-OUT SSB ANY ERRORS? JMP RESER * ERROR: "DS07" (NOT LIKELY) STA RQB+#SEQ STORE SEQ # IN REQUEST STA SEQN SAVE LOCALLY, BECAUSE IT CAN BE CLOBBERED IN RQST * * VERIFY REQUEST LENGTH * LDA MINLN CHECK REQUEST LENGTH CMA,INA ADA RQLEN,I MUST BE AT LEAST THE MINIMUM SSA JMP DS032 GIVE DS03 IF < MINIMUM LDA MAXLN CMA ADA RQLEN,I SSA,RSS JMP DS033 GIVE DS03 IF > MAXIMUM * * ASSIGN REMOTE SESSION ID (IN REQUEST) * CLA JSB #MSSM =0 JMP PASER ERROR RETURN * * NOW SEND THE REQUEST(/DATA) * LDA LU LOAD COMMUNICATIONS LINK LU IOR BIT15 BYPASS SESSION SST STA LU DESTINATION LU W/ CONTROL BITS LDB #GRPM GRPM'S CLASS NUMBER STB CLASS * LDA RQB+#LVL GET LEVEL NUMBER (IN HEADER) AND UPMSK MASK UPPER BYTE IOR #LEVL INCLUDE IN THIS SYSTEM'S UPGRADE LEVEL STA RQB+#LVL * LDA RQB+#STR GET STREAM WORD AND B77 CLEAR THE RETRY COUNTERS IOR #BREJ INITIALIZE TO REQUIRED VALUE IOR BIT12 SET "> LEVEL 0" INDICATOR STA RQB+#STR * * CHECK DESTINATION NODE UPGRADE LEVEL - IF LESS THAN * "ME" (LOCAL NODE LEVEL) SEND TO REQUEST/REPLY CONVERTER * FOR TRANSMISSION. LDA #LEVL IS MY UPGRADE LEVEL CMA,INA HIGHER THAN ADA UPLVL THAT OF DESTINATION SSA,RSS NODE? JMP WRITE . NO, MESSAGE DOESN'T NEED CONVERSION. * * DESTINATION NODE'S UPGRADE LEVEL IS LOWER THAN LOCAL NODE. * PASS THIS MESSAGE THROUGH OUT-BOUND MESSAGE CONVERTER * BEFORE TRANSMISSION. * LDA #OTCV CLASS # OF OUTPUT CONVERTER SZA,RSS CONVERTERS AVAILABLE? JMP DS071 . NO BADO BADO ... STA CLASS LDA BIT15 BYPASS SESSION SST STA LU * WRITE EQU * LDA RQLEN,I ADA C#LSZ BUMP LENGTH FOR LOCAL BUFFER STA LEN CCB ADB @RQB ADB A --> LAST WORD OF REQUEST LDA B,I IOR BIT8 SET "DS STATUS" BIT STA B,I * JSB XLUEX DO CLASS WRITE/READ TO DEST. LU DEF *+8 DEF CLS20 NO ABORT DEF LU DESTINATION LU DEF DABUF,I DEF DLWRT,I DATA BUFFER LENGTH OR ZERO @RQB DEF RQB REQUEST ADDRESS DEF LEN REQUEST LENGTH DEF CLASS JMP PASER DO ERROR RETURN * LDA RQB+#SEQ RETURN SEQUENCE NUMBER TO CALLER STA REG LDA #MSTC CHECK FOR NO WAIT CALL SZA JMP RTN AND RETURN SKP * * DO A CLASS GET TO WAIT FOR A REPLY FOR THIS TRANSACTION. * JSB #GET WAIT FOR REPLY DEF *+6 DEF CLASN SPECIFY MASTER CLASS NO.--NO RELEASE. DEF RQB REPLY ADDRESS DEF RPLEN,I SPECIFY MAXIMUM REPLY LENGTH. DEF INBUF,I DATA BUFFER ADDR DEF DLRED,I DATA LENGTH OR ZERO JMP PASER * GET ERROR: GO TO PROCESS * DST REG SAVE REGS FOR RETURN * * CHECK FOR PROPER REPLY. * SZA,RSS CHECK FOR ZERO REPLY LENGTH. JMP DS05 * ZERO LENGTH: GO PROCESS TIMEOUT ERROR * CPA K1 MA RETRY REQUEST? JMP RETRY . YES, RESEND MESSAGE DLD RQB+#EC1 CHECK FOR DS05 RETURNED CPA "DS" BY MA AND PERFORM NORMAL RSS TIMEOUT PROCESSING (MA JMP *+3 WILL HAVE SET QUALIFIER) CPB "05" JMP DS05 CLA,INA =1 JSB #MSSM LOG RETURNED SESSION ID (IF ANY) LDB RQB+#ENO GET NODE REPORTING ERROR * * CHECK THAT REPLY DOESN'T CONTAIN ERROR SSB,RSS IS SIGN BIT SET (IN ERROR NODE)? JMP GOODX . NO, NO ERROR DLD RQB+#EC1 CHECK FOR REMOTE BUSY ("DS08") CPA "DS" DS TYPE ERROR? RSS . YES CHECK MORE JMP ERPLY . NO CORN-TINUE CPB "08" "DS08"? JMP SUSPD . YES, GO SUSPEND AWHILE JMP ERPLY ELSE DO ERROR EXIT * GOODX JSB CLNUP GO TO CLEAN UP BEFORE EXITING. * * RETURN TO USER AT NORMAL RETURN POINT. * RTN DLD REG = RCVD REQUEST & DATA LENGTHS ISZ ENTRY SET EXIT POINTER FOR NORMAL RETURN. JMP ENTRY,I RETURN TO THE CALLER. SKP * SUSPD CLB CPB #WAIT DO WE DELAY OR RETURN ERROR DS08? JMP ERPLY NO WAIT SPEC'D, GIVE DS08 TO CALLER * DELAY AWHILE THEN TRY AGAIN JSB CLNUP RETURN MASTER CLASS # & TCB * JSB EXEC GO TO THE RTE 'EXEC' DEF *+6 IN ORDER TO PLACE DEF K12 INTO THE TIME-LIST, DEF ZERO THIS PROGRAM, FOR A PERIOD DEF K2 OF DELAY IN SECONDS, DEF ZERO (ONCE-ONLY) AS DETERMINED BY A DEF #WAIT NEGATIVE VALUE <#WAIT> IN 'RES'. * JMP START NOW, RE-SUBMIT THE REQUEST. * RETRY EQU * BEFORE RETRY, JSB CLNUP RELEASE THE TCB AND CLASS NUMBERS ALLOCATED JMP START THEN, RE-SUBMIT THE REQUEST. * SKP * * SUBROUTINE TO RELEASE THE MASTER CLASS & CLEAR THE MASTER TCB * CLNUP NOP ENTRY/EXIT LDA CLSFG CHECK IF CLASS ALLOCATED SZA,RSS IF CLASS NEVER ASSIGNED, JMP CLTCB TRY THE TCB... * JSB CLRQ RELEASE CLASS NUMBER & PENDING BUFS DEF *+3 DEF CLRQ2 FUNCTION 2 DEF CLASN CLASS NUMBER ZERO NOP * CLTCB EQU * LDA SEQN CHECK IF TCB ALLOCATED, SZA,RSS AND IF JMP CLNUP,I NOT, RETURN * ELSE ... JSB #RSAX CLEAR MASTER TCBS DEF *+3 DEF K6 CLEAR MASTER TCB CODE DEF SEQN PASS SEQ # JMP CLNUP,I RETURN. SPC 2 * * ERROR PROCESSING SECTION. * MAERR STB TEMP JSB RNRQ UNLOCK TCB LOCK DEF *+4 DEF ULGW DEF #TBRN DEF CLNUP (DUMMY) NOP LDB TEMP JMP GETDS DS001 LDA Q1 #GRPM = 0 RSS DS002 LDA Q2 #QRN = 0 RSS DS003 LDA Q3 SYSTEM QUIESCENING LDB "00" SYSTEM IS SHUT-DOWN: "DS00". JMP STQLF STORE QUALIFIER IN (A) DS032 LDA Q2 DS03/2 - RECORD LENGTH TOO SMALL RSS DS033 LDA Q3 DS03/3 - RECORD LENGTH TOO BIG LDB "03" JMP STQLF STORE QUALIFIER IN (A) DS05 JSB #RSAX TEST 'REQUEST ACKED' BIT DEF *+3 DEF K16 DEF SEQN LDB Q1 SZA DID REQUEST MAKE IT TO OTHER SIDE? STB RQB+#ECQ . YES OVERRIDE QUALIFIER LDB "05" DS05 - MASTER REQUEST TIMEOUT JMP GETDS DS071 LDA Q1 DS07/1 - NO LEVEL CONVERTERS LDB "07" JMP STQLF RESER EQU * CPB N3 JMP DS08 LDA Q3 DS07/3 - #RSAX ERROR LDB "07" JMP STQLF DS085 LDA Q5 DS08(5) - CANNOT ALLOCATE STA RQB+#ECQ CLASS NUMBER! DS08 LDB "08" JMP GETDS DS091 LDA Q1 RSS DS092 LDA Q2 RSS DS093 LDA Q3 RSS DS094 LDA Q4 LDB "09" DS09 - BAD PARAMETERS * STQLF EQU * STA RQB+#ECQ STORE QUALIFIER IN (A) * * LOCAL ERRORS HAVE NODE NUMBER INSERTED INTO RQB * GETDS LDA "DS" GET FIRST HALF OF ERROR MESSAGE "DS". * PASER DST RQB+#EC1 SAVE ERROR MESSAGE IN REPLY (NO MATTER WHAT) LDB RQB+#ENO LDA #NODE LOCAL NODE REPORTING ERROR IOR BIT15 SET ASCII ERROR BIT SZB,RSS THEN, DONT OVERLAY IF SOME NODE # IS ALREADY THERE STA RQB+#ENO * ERPLY JSB CLNUP GO TO CLEAN UP BEFORE EXITING. LDA CONWD,I GET ERROR-RETURN FLAG. ELA POSITION TO FOR TESTING. DLD RQB+#EC1 GET ERROR CODES SEZ ABORT OR RETURN TO CALLER? JMP ENTRY,I . RETURN TO CALLER * * ABORT THE CURRENT PROGRAM * #TILT NOP CLA STA ABMSG INDICATE CURRENT PGM NAME WANTED JSB PGMAD DEF *+2 DEF ABMSG * JSB DSERR EXPAND ERROR CODES DEF *+2 DEF RQB (OVERLAY TO SAVE SPACE) * JSB EXEC DEF *+5 DEF K2 DEF K1 DEF ABMSG DEF K32 * JSB EXEC BYE BYE... DEF *+2 DEF K6 SKP *----------------------------------------------------- * CONSTANTS *----------------------------------------------------- Q1 OCT 000020 Q2 OCT 000040 Q3 OCT 000060 Q4 OCT 000100 Q5 OCT 000120 BIT8 OCT 000400 BIT12 OCT 010000 BIT15 OCT 100000 CLRQ1 OCT 140001 ALLOCATE CLASS FUNCTION CLRQ2 OCT 140002 DEALLOCATE CLASS FUNCTION B77 OCT 77 UPMSK OCT 177400 CONWX OCT 010100 CLS20 DEF 20,I CLASS WRITE/READ--NO ABORT LCGNW OCT 140006 GLOBAL RN LOCK/CLEAR/NO WAIT/NO-ABORT. LGW OCT 040002 GLOBAL RN LOCK/WAIT/NO ABORT. ULGW OCT 040004 UNLOCK K1 DEC 1 K2 DEC 2 K6 DEC 6 K12 DEC 12 K14 DEC 14 K16 DEC 16 K32 DEC 32 N1 DEC -1 N3 DEC -3 "00" ASC 1,00 "03" ASC 1,03 "05" ASC 1,05 "07" ASC 1,07 "08" ASC 1,08 "09" ASC 1,09 "DS" ASC 1,DS * C#LSZ ABS #LSZ REQUEST APPENDAGE SIZE MINLN ABS #MHD MINIMUM REQUEST LENGTH MAXLN ABS #MXR MAXIMUM REQUEST LENGTH *----------------------------------------------------- * STORAGE *----------------------------------------------------- SUP SEQN NOP SEQUENCE NUMBER #TTOV NOP TRANSACTION T/O OVERRIDE WORD * * NOTE: ABMSG MUST IMMEDIATELY PRECEDE #RQB BUFFER * DO NOT DISTURB THIS ORDER! * ABMSG ASC 8,XXXXX ABORTED! #RQB EQU * RQB BSS #MXR+#LSZ REG BSS 2 RETURN REGISTER INFORMATION. MA.ID BSS 1 UNIQUE (MA) MESSAGE IDENTIFIER GETCB BSS 1 RSAX COMMAND WORD TO GET A TCB LU BSS 2 DESTINATION LU TMOUT BSS 1 MASTER TIME-OUT VALUE UPLVL BSS 1 DESTINATION UPGRADE LEVEL NABOR BSS 1 NEIGHBOR FLAG FOR #NRVS CALL (IGNORED) TEMP BSS 1 TEMPORARY STORAGE. CLASN BSS 1 CLASS NUMBER STORAGE. CLASS BSS 1 CLSFG BSS 1 CLASS ALLOCATED FLAG LEN BSS 1 SIZE EQU * END