ASMB,R,Q,C HED LUQUE 91750-16134 REV.2013 800305 ALL NAM LUQUE,18,25 91750-16134 REV.2013 800305 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 HEWLETT-PACKARD COMPANY. * ****************************************************************** * * * NAME: LUQUE * SOURCE: 91750-18134 * RELOC: 91750-16134 * PGMR: JOHN LAMPING * * WRITTEN BY LYLE WEIMAN [MARCH 1979] * MODIFIED BY JOHN LAMPING [OCTOBER 1979] * EXT EXEC,RMPAR,CLRQ,RNRQ,#GRPM,XLUEX EXT #QRN,#LUMP,#NRVS EXT #LMPE,#SPLU SUP * * * * LUQUE IS THE DS/1000 PROGRAM SCHEDULED BY THE "VIRTUAL TERMINAL" * DRIVER WHEN AN I/O REQUEST IS MADE TO A "MAPPED" LU. * LUQUE DOES NOT HANDLE THE REQUEST, BUT ONLY ISSUES THE CLASS-I/O * "READ" REQUEST, WHICH ALLOWS THE DRIVER TO PASS INFORMATION ABOUT * THE REQUEST (INCLUDING DATA, IN THE CASE OF "WRITE" REQUESTS) * TO 'LUMAP', THE PROGRAM WHICH ACTUALLY CONVERTS THE I/O REQUEST * INTO A "DEXEC" CALL. * * IF AN IMMEDIATE REJECT OF THE REQUEST OCCURS DUE TO * INSUFFICIENT SYSTEM AVAILABLE MEMORY (SAM), OR THE NODE IS * QUIESCENT, LUQUE SENDS A "STOP" TO THE DRIVER. * * * IF AN ERROR OCCURS, THIS FACT IS RECORDED IN " #LMPE ", AN * ENTRY POINT IN SSGA, POSSIBLY INCLUDING THE NEXT TWO LOCATIONS, * IF THE ERROR CODE IS ASCII. #LMPE IS ONLY SET ON ERRORS. THAT IS, * ITS VALUE ONLY RECORDS THE LAST ERROR CONDITION, IF ANY. THUS, IF * YOU ARE HAVING TROUBLE WITH "LU MAPPING", YOU MAY (IF YOU'VE INCLUDED * PROGRAM "IOMAP" IN THE TROUBLESOME NODE) USE "IOMAP" TO RETURN THE * ERROR CODE(S) FROM #LMPE. BEAR IN MIND, HOWEVER, THAT #LMPE DOES * NOT NECESSARILY REFLECT THE LAST ERROR YOU SAW (THERE MAY BE OTHER * USERS OF "LU MAPPING" AT THE SAME NODE). HOWEVER, IF YOU ARE THE * ONLY USER OF "LU MAPPING" AT A GIVEN NODE, AND YOU CHECK #LMPE * IMMEDIATELY AFTER YOU FIND AN ERROR, YOU CAN FIND OUT WHAT WENT * WRONG. * * THOSE ERROR CODES SET BY 'LUQUE' ARE SHOWN BELOW: * * #LMPE CAUSE ACTION * ----- -------------------------------------- --------- * 1 SCHEDULE "SPECIAL" LU NOT DEVICE TYPE 0 -- IGNORE IT * 2 SCHEDULE NOT FROM "LU MAPPING" DRIVER IGNORE IT * 3 SCHEDULE PARAMETER IS NON-EXISTANT LU IGNORE IT * 4 DS/1000 QUIESCENT RN IS SPECIFIED IN #QRN * IS BAD (AN ERROR OCCURRED ON ATTEMPT * TO CHECK ITS STATUS) SEND 'STOP' * 5 NODE IS QUIESCED SEND 'STOP' * 6 LUMAP'S CLASS IS BAD " " * 7 NOT ENOUGH SYSTEM AVAILABLE MEMORY " " * 8 ERROR ON ATTEMPT TO SCHEDULE 'LUMAP' * (MOST LIKELY, 'LUMAP' IS NOT IN SYSTEM) " " * 9 REMOTE NODE NUMBER NOT FOUND IN NRV " " * 10 DS/1000 NOT INITIALIZED, OR SHUT DOWN " " * 11 ERROR EXIT TAKEN ON CLASS # ALLOCATION " " * 12 NO CLASS #S AVAILABLE " " * * OTHER ASCII VALUES (> 20000B) OF #LMPE INDICATE "DS" OR OTHER * SORT OF ERROR. LOCATIONS #LMPE & #LMPE+1 WILL CONTAIN A 4-CHARACTER * ASCII ERROR CODE, DEFINED IN DS/1000 MANUALS IF "DS" ERROR, OR * RTE MANUALS OF OTHER ERROR. #LMPE+2 CONTAINS THE REPORTING NODE * NUMBER SKP LUQUE EQU * JSB RMPAR RECOVER PARAMETERS DEF *+2 DEF PARAM CLA CLEAR "LUMAP" ERROR CODE STA LMPE LDA #SPLU SPECIAL LU SZA,RSS SET UP? JMP EXIT NO, NOT MUCH TO DO IOR BIT15 SET "TRUE LU" BIT STA STPLU SUBFUNCTION FOR STOP STA SPCLU SUBFUNCTION FOR READ * LDA #GRPM IS DS/1000 INITIALIZED SZA,RSS OR SHUT DOWN? JMP ERR10 UNINITIALIZED OR SHUT DOWN. * JSB RNRQ CHECK FOR QUIESCENT SYSTEM DEF *+4 DEF NWGLC LOCK WORD:NO-WAIT,NO-ABORT,GLOBAL LOCK & CLEAR DEF #QRN QUIESCENT SYSTEM RN DEF EQT4 RETURN STATUS HERE JMP ERR4 BAD RN, ERROR # 4 LDA EQT4 IS THIS SYSTEM CPA K7 QUIESCED? JMP ERR5 YES, ERROR # 5 LDA #LUMP PICK UP LUMAP'S CLASS NUMBER SZA CLASS ALLOCATED? JMP X JSB CLRQ NO, ALLOCATE A CLASS NUMBER DEF *+4 DEF K1N ASSIGN A CLASS NUMBER, NO-WAIT, NO ABORT DEF CLASS RETURN CLASS NUMBER HERE DEF ZERO NO OWNERSHIP IS ASSIGNED. JMP ERR11 --ERROR EXIT FROM CLRQ LDA CLASS SZA,RSS WAS ONE ALLOCATED? JMP ERR12 NO IOR B200. SET "DO NOT DE-ALLOCATE CLASS" BIT STA #LUMP SAVE X EQU * CCE RAL,ERA SET NO-WAIT BIT IN CLASS WORD. STA CLASS SAVE LOCALLY * JSB EXEC MAKE SURE LUMAP DEF *+3 IS SCHEDULED DEF K10N DEF LUMAP JMP ERR8 ERROR--PROBABLY NO 'LUMAP' * LDB DLEN OBTAIN REQUEST LENGTH SSB,RSS CHARACTERS? JMP *+4 NO CMB,INB YES, CONVERT TO WORDS INB BRS STB LEN SAVE LENGTH * * IF ORIGINAL REQUEST WAS A "WRITE", THEN INCREASE THE * BUFFER LENGTH FROM THE USER'S ORIGINAL LENGTH TO * INCLUDE THE CALLER'S ORIGINAL DATA * LDB HDRSZ LOAD HEADER SIZE ADB LEN ADD DATA SIZE STB LEN JSB #NRVS FIND MASTER TIME-OUT DEF *+3 DEF RNODE REMOTE NODE NUMBER DEF TOVAL JMP ERR9 --ERROR: NODE NOT FOUND LDA TOVAL CONVERT MASTER TIME-OUT TO CENTOSECONDS AND B377 CMA,INA GET # TICKS LEFT ADA B377 MPY D500 TO GO IN EQT SSA DID THIS OVERFLOW? LDA B777. YES, LOAD MAXIMUM TIME-OUT VALUE. CMA,INA CONVERT TO TWO'S COMPLEMENT STA TOVAL SAVE EQT TIME-OUT VALUE. JSB XLUEX READ THE REQUEST TO LUMAP'S CLASS DEF *+8 DEF K17N NO ABORT DEF SPCLU "SPECIAL" LU SUBFUNCTION 3700(8) DEF ZERO DEF LEN DATA LENGTH DEF VEQT "VIRTUAL" EQT DEF TOVAL "MASTER" TIME-OUT VALUE TO SET IN EQT DEF CLASS JMP ERR6X --ERROR, PROBABLY BAD CLASS NUMBER * EXIT JSB EXEC TERMINATE LUQUE DEF *+2 DEF K6 * SKP * * ERROR PROCESSING SECTION * ERR6X EQU * HERE ON BAD CLASS NUMBER ERROR CLA CLEAR CLASS NUMBER STA #LUMP JMP ERR6 SET ERROR CODE # 6, SEND 'STOP' & TERMINATE * ERR12 ISZ LMPE ERROR # 12: LEAVE LMPE = 12 ERR11 ISZ LMPE ERROR # 11: LEAVE LMPE = 11 ERR10 ISZ LMPE ERROR # 10: LEAVE LMPE = 10 ERR9 ISZ LMPE ERROR # 9: LEAVE LMPE = 9 ERR8 ISZ LMPE ERROR # 8: LEAVE LMPE = 8 ERR7 ISZ LMPE ERROR # 7: LEAVE LMPE = 7 ERR6 ISZ LMPE ERROR # 6: LEAVE LMPE = 6 ERR5 ISZ LMPE ERROR # 5: LEAVE LMPE = 5 ERR4 ISZ LMPE ERROR # 4: LEAVE LMPE = 4 ERR3 ISZ LMPE ERROR # 3: LEAVE LMPE = 3 ERR2 ISZ LMPE ERROR # 2: LEAVE LMPE = 2 ERR1 ISZ LMPE ERROR # 1: LEAVE LMPE = 1 LDA LMPE STA #LMPE RE-SET #LMPE ONLY ON ERRORS * * CALL DRIVER TO SEND A STOP * JSB XLUEX DEF *+7 DEF K2N DEF STPLU DEF ZERO DEF ZERO DEF VEQT DEF SEQN NOP IGNORE ERRORS JMP EXIT * SKP * * CONSTANTS AND STORAGE * * * * CLASS NOP LMPE NOP LOCAL STORAGE FOR ERROR CODE B77 OCT 77 B377 OCT 377 B200. OCT 20000 "DO NOT DE-ALLOCATE CLASS" BIT BIT15 OCT 100000 B777. OCT 77777 D500 DEC 500 NWGLC OCT 140006 GLOBAL LOCK & CLEAR, WITHOUT WAITING, NO ABORT ZERO OCT 0 K1N OCT 140001 ALLOCATE CLASS#, NO-WAIT, NO-ABORT K2 DEC 2 K3 DEC 3 K2N OCT 100002 I/O WRITE REQUEST, NO-ABORT K6 DEC 6 K7 DEC 7 K10N OCT 100012 SCHEDULE W/O WAIT, NO-ABORT K17N OCT 100021 LUMAP ASC 3,LUMAP HDRSZ DEC 9 SIZE OF HEADER LEN NOP SPCLU NOP "SPECIAL" LU NUMBER OCT 3700 MUST FOLLOW SPCLU STPLU NOP "STOP" LU AND SUBFUNCTION OCT 3500 MUST FOLLOW STPLU TOVAL NOP STORAGE FOR TIME-OUT VALUE TO SET (BY DRIVER) EQT4 NOP PARAM BSS 5 VEQT EQU PARAM "VIRTUAL" EQT ADDRESS RNODE EQU PARAM+1 REMOTE NODE NUMBER DLEN EQU PARAM+2 BUFFER LENGTH SEQN EQU PARAM+3 SEQUENCE NUMBER * * SIZE BSS 0 * END LUQUE