ASMB,R,Q,C
      NAM IOMAP,18,90 91750-16130 REV 2013 800214 ALL 
* 
* 
******************************************************************* 
*  * (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: IOMAP
*  SOURCE: 91750-18130
*   RELOC: 91750-16130
*    PGMR: JOHN LAMPING 
* 
*    WRITTEN BY LYLE WEIMAN [MARCH 1979]
*    MODIFIED BY JOHN LAMPING [OCTOBER 1979]
* 
* 
*     PROGRAM TO SET UP I/O MAP.
*     (MAY BE RUN FROM A REMOTE NODE.  ALL PARAMETERS AND RESULTS 
*     ARE PASSED IN THE FIVE "SCHEDULE" AND "RETURN" PARAMETERS, SO 
*     THE REMOTE "SCHEDULE-WITH-WAIT" CALLS MAY BE USED.  NOTE THAT 
*     'IOMAP' RUNS IN THE SAME NODE AS THE LU MAPPING DRIVER AND THE
*     I/O MAP, AND THEREFORE, FROM THE POINT OF VIEW OF THE USER, IS
*     USUALLY IN A "REMOTE" NODE.  THEREFORE, ONE USUALLY NEEDS TO
*     SCHEDULE IT USING THE "REMOTE PROGRAM SCHEDULE WITH WAIT" CALL. 
*     THIS IMPLIES THAT 'EXECW' EXISTS IN THE SAME NODE.
      SPC 2 
* 
*     SCHEDULE PARAMETERS:
* 
*     S1 = LU NUMBER AT IOMAP'S NODE WHICH IS TO BE SET UP AS MAPPED
*        = -1 TO REQUEST MAPPING OF ANY UNUSED MAPABLE LU 
*        = -2 TO GET LU MAPPING ERROR PARAMETERS
*   
*     S2 = LU NUMBER TO WHICH "S1" IS TO BE MAPPED. 
*          SET BIT 15 IF "HEADER MESSAGE", IDENTIFYING SOURCE, IS TO
*          PRECEDE MESSAGES SENT BY PROGRAMS. 
*          SET BIT 14 IF A "PROMPT" (NNNNNN) IS TO PRECEDE ALL "READ" 
*          REQUESTS AT REMOTE LU
*        = 0 TO TURN OFF MAPPING ON LU
*        = -1 TO LEAVE MAP ALONE AND JUST RETURN STATUS 
*          INFORMATION IS RETURNED ON THE FIRST MAPABLE LU >= S1
*        = -32768 TO REQUEST SYSTEM ATTENTION ON LU S1
* 
*     S3 = NODE NUMBER AT WHICH LU IN S2 EXISTS.
*        = 25834 SECURITY CODE IF SYSTEM ATTENTION IS REQUESTED IN P2 
* 
*     S4 = IOMAP NODE'S NETWORK SECURITY CODE IF MAP SETUP REQUESTED
*          THE CODE IN P4 MUST MATCH THAT CODE OR THE MAP SET-UP IS DENIED. 
      SPC 3 
*     RETURN PARAMETERS FOR THE ABOVE FUNCTIONS:
* 
*     R1 = LU FOR WHICH MAP WAS SET UP OR #LMPE IF S1 = -2
*        = -1 IF SECURITY CODE IS ILLEGAL 
*        = -2 IF LU IN S1 IS ILLEGAL
*        = -3 IF NO MAP HAS YET BEEN SET UP OR LU MAPPING IS BOTCHED
*     P2 = DESTINATION LU TO WHICH MAP IS SENT OR #LMPE+1 IF S1 = -2
*     P3 = DESTINATION NODE TO WHICH MAP IS SENT OR #LMPE+2 IF S1 =-2 
* 
* 
* 
* 
      EXT RMPAR,EXEC,PRTN,#NODE,XLUEX 
      EXT #SPLU,#LMPE,#NMSC 
      SPC 2 
IOMAP EQU * 
      JSB RMPAR     FETCH SCHEDULE PARAMETERS 
      DEF *+2 
      DEF IPRAM 
* 
*     FIND "RESERVED LU" FOR THIS NODE
*     IF NONE SET UP YET, SET IT UP NOW.
      LDA #SPLU     IS THERE A "SPECIAL" LU ALREADY SAVED IN SSGA?
      SZA 
      JMP IO1       YES.
      LDA MAPLU     NO, WERE WE GIVEN 
      SZA             A POTENTIALLY 
      SSA               MAPPABLE LU?
      JMP RTER3     NO, CAN'T DO SETUP, TOO BAD 
      IOR BIT15     MAKE DYNAMIC STATUS CALL
      STA SPCL1       SO THAT DRIVER
      JSB XLUEX         WILL BE ENTERED 
      DEF *+3             AND SET UP
      DEF D3                "SPECIAL" LU
      DEF SPCL1 
      LDA #SPLU     WAS "SPECIAL" LU
      SZA,RSS         SET UP? 
      JMP RTER3     NO, BAD TROUBLES
IO1   EQU * 
      IOR BIT15     SET "TRUE LU" BIT 
      STA SPCL1     SAVE LU IN DOUBLE WORD
      STA SPCL2       XLUEX CONWD TEMPLATES 
      LDA MAPLU     REQUEST TO SIMPLY RETURN PRESENT
      CPA M2          CONTENTS OF #LMPE?
      JMP ERTRN     YES.
      LDA RLU       GET REMOTE LU 
      CPA M1        REQUEST TO RETURN I/O MAP INFORMATION?
      JMP RTMAP     YES 
      CPA BIT15     REQUEST SYSTEM ATTENTION? 
      JMP SYSAT     YES 
*                   SET UP I/O MAP
      LDA SECOD     GET SECURITY CODE 
      UNL 
      ALF,ALF 
      CMA 
      LST 
      CPA #NMSC     IS IT CORRECT?
      JMP IO2       YES 
RTER1 CCB           NO, SET ERROR INDICATION
      JMP RETRN 
IO2   LDB FNMBR     GET SECURITY CODE FOR DRIVER
      STB BUFFR 
      LDA MAPLU 
      STA BUFFR+1 
      LDA RLU 
      STA BUFFR+2 
      LDA NODE
      STA BUFFR+3 
      JSB XLUEX     ESTABLISH I/O MAP 
      DEF *+5 
      DEF D2
      DEF SPCL1 
      DEF BUFFR 
      DEF D4
      SZB,RSS       WAS MAP SET UP? 
RTER2 LDB M2        NO, ILLEGAL LU
* 
RETRN EQU * 
      STB IPRAM     SET RETURN CODE 
* 
*                   PASS RESULTS BACK TO CALLER 
PRT   EQU * 
      JSB PRTN
      DEF *+2 
      DEF IPRAM 
      JSB EXEC      TERMINATE 
      DEF *+2 
      DEF D6
*               
*     RETURN LU MAPPING ERROR CODES 
* 
ERTRN DLD #LMPE+1   SET SECOND TWO
      DST IPRAM+1     ERROR WORDS 
      LDB #LMPE     GET FIRST ERROR WORD
      JMP RETRN     RETURN IT 
      SPC 10
* 
*     HERE TO REQUEST SYSTEM ATTENTION
* 
SYSAT LDA IPRAM+2   IS THE SYSAT SECURITY CODE
      CPA FNMBR       PRESENT?
      RSS           YES, GO AHEAD 
      JMP RTER1     NO, REJECT THIS 
      JSB XLUEX 
      DEF *+4 
      DEF D3
      DEF SPCL2 
      DEF MAPLU     SYSTEM ATTENTION LU FOR RTE-L 
      JMP PRT       RETURN
      SKP 
*     HERE TO RETURN I/O MAP INFORMATION TO "FATHER"
* 
RTMAP EQU * 
* 
RTP1  JSB XLUEX 
      DEF *+6 
      DEF D1
      DEF SPCL1     "RESERVED LU" + 3600B 
      DEF IPRAM+1   RETURN INFORMATION HERE 
      DEF D2
      DEF IPRAM     LU TO CHECK 
* 
      LDA IPRAM+1   IS THIS A "MAPPABLE" LU?
      SSA,RSS 
      JMP RTP2      YES--RETURN MAP INFORMATION 
      ISZ IPRAM     NO, TRY NEXT LU 
      LDA IPRAM       --BE SURE 
      AND B377          THAT WE DON'T 
      CPA IPRAM             GO TOO FAR....
      JMP RTP1      .. LU < 256, GO SEE IF IT'S A VALID ONE 
      JMP RTER2     ERROR: ALL LUS HAVE BEEN CHECKED
* 
RTP2  DLD IPRAM+1   PUT THE     
      SWP             LU FIELD
      DST IPRAM+1       FIRST 
      JMP PRT       RETURN RESULTS
* 
RTER3 EQU *         HERE WHEN LU MAPPING HAS NOT BEEN SET UP YET. 
      LDB M3        RETURN -3 
      JMP RETRN 
      SPC 2 
IPRAM BSS 5         'RMPAR' PARAMETER AREA
MAPLU EQU IPRAM     "MAPPED" LU 
RLU   EQU IPRAM+1   REMOTE LU 
NODE  EQU IPRAM+2   REMOTE NODE NUMBER
SECOD EQU IPRAM+3   SECURITY CODE 
BUFFR BSS 4         I/O MAPSET-UP BUFFER AREA 
SPCL1 NOP           "SPECIAL LU" + A SUBFUNCTION
      OCT 3600      MAP SETUP/READ FUNCTION 
SPCL2 NOP 
      OCT 3500      SYSTEM ATTENTION CONTROL FUNCTION 
M1    DEC -1
M2    DEC -2
M3    DEC -3
M4    DEC -4
D1    DEC 1 
D2    DEC 2 
D3    DEC 3 
D3N   DEF 3,I 
D13N  DEF 13,I      I/O STATUS, NO ABORT
D4    DEC 4 
D6    DEC 6 
B377  OCT 377 
BIT15 OCT 100000
FNMBR DEC 25834 
      END IOMAP 
                                                                                                