*DECK UCLOAD
          IDENT  UCLOAD 
**DOCK    TITLE  SPACE,4,10                                             01251834
**DOCK    EJECT  4,10                                                   01251835
  
          ENTRY  LOADER=,LOADER 
 UCLOAD   TITLE  UCLOAD - LOADER USER CALL INTERFACE ROUTINE. 
  
**DOCK    TITLE  SOFT 
          SPACE  4,8
***       CONTROL DATA PROPRIETARY PRODUCT
*         COPYRIGHT CONTROL DATA CORP. - 1976, 1977, 1978, 1979, 1980,
*         1981, 1982. 
          SPACE  4
**        ******************************************************
*         * U C L O A D  -  LOADER USER CALL INTERFACE ROUTINE *
*         ******************************************************
* 
* 
*         ALAN MCDEARMON           71/10/01.
*                            WRITTEN FOR SCOPE 3.4. 
*         C J LABATE               74/12/03.
*                            MODIFIED TO RUN UNDER SCOPE 3.4/KRONOS 2.1 
*         S. MALEK                 75/06/01.
*                            MODIFIED TO RUN IN A *CMM* ENVIRONMENT 
          SPACE  4,8
**             *UCLOAD* IS A RELOCATABLE CPU PROGRAM WHICH IS LOADED
*         DURING THE INITIAL (CONTROL-CARD-INITIATED) LOAD OF THE RUN 
*         IF THERE WAS, WITHIN THE PROGRAMS TO BE LOADED, ANY EXTERNAL
*         REFERENCES TO THE ENTRY POINTS *LOADER* OR *LOADER=*. 
* 
*              AT THE TIME SCOPE 3.4 WAS RELEASED, *UCLOAD* WAS 
*         APPROXIMATELY 260 OCTAL CM WORDS IN LENGTH. 
          SPACE  4,8
*CALL LDRCOM
          IPARAMS 
          SPACE  4
          IFMACS
          SPACE  4
 UCLOAD   COMMENT L "LEVEL" LOADER USER CALL INTERFACE ROUTINE. 
          SPACE  4
 LOADER=  TITLE  ENTRY AND OLD-STYLE CONVERSION.
**        + + + + + + + 
*         + PROCEDURE + 
*         + + + + + + + 
* 
* 
*         1)   ENTRY TO *UCLOAD* IS BY MEANS OF A RETURN JUMP.
* 
  
LOADER=   PS                       ENTRY/EXIT 
LOADER    EQU    LOADER=
          SB1    1
          SA1    LOADER=
          LX1    30                (B4) = FWA OF PARAMETER AREA 
          SX2    B1                ADVANCE RETURN ADDRESS 
          SA3    X1 
          IX7    X1+X2
          SB4    X3 
          SX6    X7 
          SA6    RETURN            SAVE RETURN ADDRESS
          LX7    30 
          SA7    A1 
          SA1    RA+COMLDLWA       LWA+1 OF PREVIOUS LOAD 
          SX7    MES5 
          LX1    42 
          NG     X1,ABORT          IF *CMM* ENVIRONMENT 
          SA1    MEM               ISSUE CALL TO *MEM* TO GET THE 
          MX7    0                  FIELD LENGTH
          BX6    X1 
          SA7    X1                CLEAR *MEM* PARAMETER WORD 
          RJ   SYS                 CALL *MEM* 
          SA4    X6                (A0) = FIELD LENGTH
          AX4    30 
          SA0    X4 
          SX6    B4                SAVE FWA OF OLD PARAMETER AREA 
          SA6    OLDFWA 
          MX1    3
          SA2    B4                GET 1ST WORD OF PARAMETER AREA 
          BX3    X1*X2             UPPER 3 BITS ARE SET IF NEW STYLE
          BX3    X1-X3
          ZR   X3,UC1              IF NEW-STYLE CALL
  
**        2)   IF THE USER CALL IS OF THE OLD STYLE (3.3 AND EARLIER),
*              THEN IT IS CONVERTED TO A CALL OF THE NEW FORM, AND IT IS
*              THIS NEW FORM WHICH IS PASSED TO THE MAIN LOADER ROUTINE 
*              *LOADU*. 
* 
*              IF THE REQUEST IS FOR AN OVERLAY LOAD, THEN THE PPU
*              PROGRAM *LDV* IS CALLED DIRECTLY, SINCE THE *LDV* CALLING
*              SEQUENCE IS UPWARD COMPATIBLE WITH THE OLD-STYLE CALLS.
* 
  
          SX7    B4 
OLD1      SA5    B4+B1             CHECK IF OVERLAY REQUEST 
          LX5    59-OLDVBIT 
          PL   X5,OLD3             IF NOT OVERLAY REQUEST 
          SA2    LDV               PASS REQUEST TO *LDV*
          BX6    X2+X7
          LX5    OLDVBIT-EBIT 
          NG   X5,OLD2             IF E-BIT IS SET
          SX7    B1                SET FOR AUTO-RECALL
          LX7    40 
          BX6    X7+X6
OLD2      RJ   SYS                 ISSUE *LDV* REQUEST
+         PL   X5,LOADER=          EXIT IF AUTO-RECALL SPECIFIED
          EQ   *                   *LDV* WILL DROP CPU
  
**        3)   IF PROCESSING AN OLD-STYLE USER CALL FOR A RELOCATABLE 
*              LOAD, IT IS NOT ALLOWABLE FOR THE USER CALL REQUEST TO BE
*              WITHIN THE LOADABLE AREA, SINCE THIS REQUEST MUST BE 
*              UPDATED AT THE END OF THE LOAD.  IT IS POSSIBLE TO 
*              OVERWRITE A NEW-STYLE REQUEST, HOWEVER.
* 
  
  
OLD3      SA1    B4+B1             2ND WORD OF 2-WORD PARAMETER AREA
          SB5    A1+B1             (B5) = LWA+1 OF THIS 2-WORD AREA 
          SB2    X1                (B2) = FWA LOADABLE AREA 
          AX1    18                (B3) = LWA+1 LOADABLE AREA 
          SB3    X1 
          RJ   SETLIM 
          ZR   X0,OLD4             IF NOT WITHIN LOADABLE AREA
          SX7    MES1              THIS IS ALLOWED ONLY WHEN PROCESSING 
          EQ   ABORT                NEW-STYLE USER-CALLS
  
*         CONVERT OLD-STYLE USER CALL TO THE EQUIVALENT NEW-STYLE CALL. 
  
OLD4      MX7    3                 FORM HEADER WORD 
          SX1    B2                FWA LOAD 
          SX2    B3                LWA+1 LOAD 
          LX1    30 
          BX3    X1+X2
          BX7    X7+X3
          SA7    HOLDER 
          MX6    0
          SA6    A7+B1             WORD 2 = 0  (ECS LIMITS) 
          SA6    A6+B1             WORD 3 = 0  (REPLY WORD) 
          SB7    A6+B1             (B7) = FWA CURRENT REQUEST 
          SB6    B7                (B6) = STORE POINTER 
          SA5    B5-B1             (X5) = WORD 2 OF (OLD) PARAM AREA
          LX5    59-OLDMBIT        CHECK MAP BITS 
          R=     X7,CMAP
          LX7    48 
          SX6    B1                SET FOR LDSET(MAP=0) 
          NG   X5,OLD5             IF M-BIT SET, NO MAP 
          R=     X6,3              SET FOR LDSET(MAP=S) 
          LX5    OLDMBIT-OLDPBIT
          PL   X5,OLD6             IF P-BIT NOT SET 
OLD5      BX7    X7+X6             INSERT LDSET(MAP=0) OR LDSET(MAP=S)
          SA7    B6 
          SB6    B6+B1             ADVANCE POINTERS 
          SB7    B7+B1
OLD6      SA4    A5-B1             WORD 1 OF PARAMETER AREA 
          MX0    42 
          SA5    A5                WORD 2 
          BX1    -X0*X4            (X1) = *SL* POINTER, IF PRESENT
          BX4    X0*X4             (X4) = NAME OF SOME SORT 
          NZ   X1,OLD11            IF SL ADDRESS SPECIFIED
          LX5    59-OLDKBIT 
          NG   X5,OLD10            IF K-BIT SET 
S         IFSCOPE 
          R=     X7,6              CALL *LDL* TO FIND OUT WHETHER THE 
          SA1    LDL                NAME IN THE USER CALL (X4) IS THAT
          BX7    X4+X7               OF A LFN 
          BX6    X1 
          SA7    X1 
          RJ   SYS                 ISSUE *LDL* CALL 
          SA2    A7                FETCH REPLY FROM *LDL* 
          MX3    -6 
          AX2    12 
          BX2    -X3*X2 
          NZ   X2,OLD9             IF *NAME* IS NOT AN LFN
S         ENDIF 
K         IFNOS 
          SA1    LFMSTAT           CALL *LFM* TO FIND OUT WHETHER THE 
          BX7    X4                NAME IN THE USER CALL (X4) IS A LFN
          BX6    X1                (IN LINE LFM STATUS CODE 12 CALL)
          SA7    X1 
          RJ   SYS                 ISSUE *LFM* CALL 
          SA2    A7                FETCH REPLY FROM *LFM* 
          MX3    -17
          AX2    1
          BX2    -X3*X2 
          NZ   X2,OLD9             IF *NAME* IS NOT A LFN 
K         ENDIF 
          R=     X6,CLOAD          FORM LOAD(NAME/NR) 
          SX1    B1                (X6) = WORD 1
          LX6    48 
          LX1    36 
          BX6    X6+X1
          SX7    B1+B1             (X7) = WORD 2
          BX7    X4+X7
          SA6    B6 
          SA7    A6+B1
          SB6    A7+B1
          EQ   OLD15
  
OLD9      R=     X6,CLIBLOAD       FORM LIBLOAD(,NAME)
          SX1    B1+B1             (X6) = WORD 1
          LX6    48 
          LX1    36 
          BX6    X6+X1
          MX7    0                 EMPTY LIBRARY NAME 
          SA6    B6                STORE WORDS 1 AND 2
          SA7    A6+B1
          BX7    X4                WORD 3 = NAME
          SA7    A7+B1
          SB6    A7+B1
          EQ   OLD15
  
OLD10     R=     X6,CENTRY         FORM ENTRY(NAME) 
          SX1    B1                (X6) = WORD 1
          LX6    48 
          LX1    36 
          BX6    X6+X1
          BX7    X4                (X7) = WORD 2
          SA6    B6 
          SA7    A6+B1
          SB6    A7+B1
          EQ   OLD15
  
OLD11     LX5    59-OLDUBIT 
          NG   X5,OLD12            IF U-BIT SET 
          R=     X6,CSLOAD         FORM HEADER FOR *SLOAD*
          SX2    B1 
          SX7    B1+B1
          EQ   OLD13
  
OLD12     R=     X6,CLIBLOAD       FORM HEADER FOR *LIBLOAD*
          SX2    B1 
          MX7    0
OLD13     LX6    48                STORE HEADER 
          LX2    36 
          BX6    X6+X2
          BX7    X4+X7
          SA6    B6 
          SA7    A6+B1
          SB6    A7+B1
          SX3    B1                MOVE CONTENTS OF SL LIST TO THE
          LX3    36                 REQUEST 
          SA2    X1                1ST WORD OF LIST 
OLD14     ZR   X2,OLD15            IF END OF SL LIST
          BX7    X2                STORE ENTRY
          SA7    B6 
          SB6    B6+B1
          SA2    A2+B1             NEXT ENTRY 
          SA4    B7                BUMP LENGTH IN REQUEST HEADER
          IX7    X4+X3
          SA7    A4 
          EQ   OLD14               LOOP 
  
OLD15     SA5    A5 
          LX5    59-OLDCBIT 
          PL   X5,OLD16            IF C-BIT NOT SET 
          R=     X7,CSATISFY       INSERT *SATISFY* REQUEST 
          LX7    48 
          SA7    B6 
          SB6    B6+B1
OLD16     LX5    OLDCBIT-OLDSBIT
          PL   X5,OLD17            IF S-BIT NOT SET 
          SX7    MES2              OLD-STYLE SEGMENTATION, ERROR
          EQ   ABORT
  
**        4)   REGARDING THE MESSAGE: 
* 
*                   *SL LIST TOO BIG - CONSULT UCLOAD IMS*
* 
*              THE CONVERSION OF AN OLD-STYLE USER CALL INVOLVES
*              BUILDING A NEW-STYLE CALL IN A FIXED AREA IN *UCLOAD*. 
*              THE LENGTH OF THIS AREA IS DEFINED BY THE LOCAL SYMBOL 
*              *SIZE*.  THERE IS NO CAPABILITY OF INCREASING THIS AREA
*              WITHOUT RE-ASSEMBLING *UCLOAD*.  THE ABOVE MESSAGE WILL
*              APPEAR IF, IN THE PROCESS OF CONVERTING, THE RESULTING 
*              NEW-STYLE CALL WILL NOT FIT INTO THIS AREA.  IT IS RATHER
*              UNLIKELY THAT THIS WILL OCCUR, SINCE THE ONLY VARIABLE-
*              LENGTH ITEM IN THE OLD-STYLE CALLS WAS THE SL LIST.
* 
  
OLD17     MX7    0                 INSERT ZERO-WORD AT END OF REQUEST 
          SA7    B6 
          SB4    HOLDER            (B4) = FWA OF (NEW) PARAMETER AREA 
          SB5    B6+B1             (B5) = LWA+1 OF PARAMETER AREA 
          SX6    OLDRET            SET RETURN ADDRESS 
          SA6    RETURN 
          SB7    HOLDER+SIZE       CHECK IF SL LIST WAS TOO LONG
          SX7    MES3 
          LE   B5,B7,UC3           IF NOT TOO LONG
          EQ   ABORT
 UC       TITLE  CALL MAIN LOADER.
**        5)   THIS IS THE START OF THE ACTUAL PROCESSING OF THE NEW- 
*              STYLE CALL.  THE ABOVE STEPS ARE NOT PERFORMED IF THE
*              USER SPECIFIES A NEW-STYLE CALL. 
* 
*              THE LIMITS SPECIFIED FOR THE LOAD ARE CHECKED TO SEE IF
*              THEY WILL OVERWRITE THE USER-CALL PARAMETER AREA.  THIS
*              CONDITION IS ALLOWED, BUT IT MEANS THE USUAL REPLY 
*              INFORMATION WILL NOT BE AVAILABLE TO THE CALLING PROGRAM.
*              IF THIS IS THE CASE, THE PARAMETER AREA IS MOVED, IF 
*              NECESSARY, TO THE VERY TOP OF THE LOADABLE AREA, SO AS TO
*              AVOID ITS BEING CLOBBERED WHEN *LOADU* IS READ IN BY 
*              *LDV* IN A CASE IN WHICH IT WAS NEAR THE BOTTOM OF THE 
*              LOADABLE AREA. 
* 
  
UC1       SB3    X2                (B3) = LWA+1 OF LOADABLE AREA
          AX2    30                (B2) = FWA OF LOADABLE AREA
          SB2    X2 
          MX0    -12               DETERMINE LWA+1 OF PARAMETER AREA
          SB5    B4+3 
          SB7    A0                (B7) = FIELD LENGTH
UC2       SA1    B5                GET HEADER OF NEXT REQUEST 
          LX1    -36               (X2) = LENGTH OF THIS REQUEST
          BX2    -X0*X1 
          SX2    X2+B1
          SB5    B5+X2             ADVANCE FETCH ADDRESS
          ZR   X1,UC2A             IF *END* 
          LX1    -12
          BX1    -X0*X1            ISOLATE REQUEST TYPE 
          SX2    X1-CLAST-1 
          PL   X2,UC2A             IF ILLEGAL 
          SX2    X1-CEXECUTE
          ZR   X2,UC2A             IF *EXECUTE* 
          SX2    X1-CNOGO 
          ZR   X2,UC2A             IF *NOGO*
          LT   B5,B7,UC2           IF MORE WITHIN FL
          SX7    MES4 
          EQ   ABORT               *LDREQ END MISSING*
  
UC2A      RJ   SETLIM              PROCESS LIMITS 
          MX7    3                 PLACE ACTUAL FWA AND LWA+1 OF
          SX1    B2                 LOADABLE AREA IN REQUEST HEADER 
          SX2    B3                  IN CASE EITHER HAD BEEN = 0 BEFORE 
          LX1    30 
          BX3    X1+X2
          BX7    X7+X3
          SA7    B4 
UC3       BSS    0
  
**        6)   PARAMETERS EXPECTED BY THE MAIN LOADER PROGRAM *LOADU* 
*              ARE PLACED IN THE APPROPRIATE REGISTERS AS FOLLOWS:  
* 
*                   A0 - CM FIELD LENGTH. 
*                   X0 - ECS FIELD LENGTH.
*                   B7 - FWA OF LOADABLE AREA.  THIS IS ALSO THE ADDRESS
*                        WHERE *LOADU* IS LOADED.  *LOADU* NEEDS IT IN
*                        ORDER TO RELOCATE ITSELF.
*                   X6 - BITS  0-17 - FWA OF USER-CALL PARAMETER AREA.
*                        BITS 18-35 - LWA+1 OF USER-CALL PARAMETER AREA.
*                        BITS 36-53 - ADDRESS FOR *LOADU* TO RETURN.
* 
  
          IFEQ   IP.MECS,0,1
          MX0    0                 NO ECS FIELD LENGTH
ECS       IFNE   IP.MECS,0
          SA1    MEM               ISSUE CALL TO *MEM* TO GET ECS 
          SX2    B1                 FIELD LENGTH
          LX2    18 
          MX7    0
          BX6    X1+X2             INSERT BIT TO INDICATE ECS 
          SA7    X1                CLEAR *MEM* PARAMETER WORD 
          RJ   SYS                 CALL *MEM* 
          SA3    X6                (X0) = ECS FIELD LENGTH
          AX3    30 
          BX0    X3 
ECS       ENDIF 
  
          SA1    RETURN            RETURN 
          SX6    B5                RQLWA
          SX7    B4                RQFWA
          LX1    36 
          LX6    18 
          BX6    X1+X6
          BX6    X6+X7
          SB7    B2                (B7) = FWA LOADABLE AREA 
  
**        7)   THE PPU PROGRAM *LDV* IS CALLED TO LOAD *LOADU*.  THE
*              CALL IS SET UP IF THE MANNER SUCH THAT *LDV* WILL NOT
*              RETURN, BUT INSTEAD, WILL ENTER *LOADU* DIRECTLY.  THIS
*              MUST BE DONE, SINCE IT IS POSSIBLE THAT THE LOADING OF 
*              *LOADU* WILL OVERWRITE *UCLOAD* ITSELF.
* 
  
          SX2    B7                FWA
          SA1    LOADU             NAME OF LOADER OVERLAY 
          SX3    B3                LWA+1
          BX7    X1 
          SX4    141B              U-BIT, V-BIT, E-BIT
          SA7    LDVCALL           STORE 1ST PARAM WORD 
          LX3    18                FORM 2ND PARAM WORD
          LX4    36 
          BX3    X2+X3
          SA1    LDV               FORM *LDV* CALL WORD 
          BX7    X3+X4
          SX3    400B        (4,0) OVERLAY LEVEL NUMBERS                 LDR0223
          LX3    48                                                      LDR0223
          BX7    X3+X7                                                   LDR0223
          SX2    A7 
          SA7    A7+B1             STORE 2ND PARAM WORD 
          BX7    X1+X2
          SA7    B1                CALL *LDV* 
+         EQ   *                   *LDV* WILL DROP CPU
  
*         CONTROL NEVER RETURNS FROM THE ABOVE, SINCE THE CALL
*         INDICATED THAT *LDV* SHOULD ENTER THE OVERLAY (*LOADU*) 
*         DIRECTLY. 
          SPACE  4,8
*         SETLIM - PROCESS LOAD LIMITS. 
* 
*              IF THE USER-CALL PARAMETER AREA IS ANYWHERE WITHIN 
*         THE LOADABLE AREA, IT IS MOVED TO THE TOP OF THE LOADABLE 
*         AREA TO FACILITATE ITS BEING PICKED UP BY *LOADU* AND ALSO
*         TO MINIMIZE ITS CHANCES OF BEING OVERWRITTEN BY THE LOADING 
*         OF *LOADU*. 
* 
*         ENTRY  (B1) = 1.
*                (B2) = FWA OF LOADABLE AREA. 
*                (B3) = LWA+1 OF LOADABLE AREA. 
*                (B4) = FWA OF USER-CALL PARAMETER AREA.
*                (B5) = LWA+1 OF USER-CALL PARAMETER AREA.
*                (A0) = CM FIELD LENGTH.
*         EXIT   (B4) AND (B5) REFLECT THE NEW LOCATION OF THE USER-CALL
*                  PARAMETER AREA IF IT WAS MOVED.
*                (X0) AND LOCATION *NOREQ* = 0 IF THE PARAMETER AREA
*                  DOES NOT LIE WITHIN THE LOADABLE AREA. 
*         USES   X - 1, 2, 6, 7.
*                B - 6, 7.
*                A - 1, 2, 6, 7.
  
  
SETLIM    PS                       ENTRY/EXIT 
          SA1    RA+COMLDLWA       (X1) = LWA+1 PREVIOUS LOAD 
          SX7    MES1              (X7) = MESSAGE ADR IN CASE OF ERROR
          SB7    A0                (B7) = FIELD LENGTH
          NZ   B2,SETLIM1          IF LOAD FWA IS SPECIFIED 
          SB2    X1                ELSE USE LWA+1 PREVIOUS LOAD 
SETLIM1   MX0    0                 INITIALIZE VALUE FOR *NOREQ* = 0 
          NZ   B3,SETLIM2          IF LOAD LWA+1 IS SPECIFIED 
          SB3    A0-3              ELSE USE FIELD LENGTH - 3
SETLIM2   GE   B2,B3,SETLIM3       IF LWA NOT > FWA, ERROR
          LE   B3,B7,SETLIM4       IF LWA @ FL
  
*         ERROR EXIT.  (X7) = MESSAGE ADDRESS.
  
SETLIM3   BSS    0
ABORT     EQU    SETLIM3
          SA1    MSG
          LX7    30                STORE MESSAGE ADDRESS
          BX6    X1 
          SA7    X1 
          RJ   SYS                 CALL *MSG* 
          SX7    3RABT
          LX7    42                ABORT CPU
          SA7    B1 
+         EQ   *
  
*         COMPARE LIMITS OF LOADABLE AREA WITH LIMITS OF USER-CALL
*         PARAMETER AREA. 
  
SETLIM4   GE   B4,B3,SETLIM        IF PARAMETER AREA COMPLETELY ABOVE 
                                    LOADABLE AREA 
          GE   B2,B5,SETLIM        IF PARAMETER AREA COMPLETELY BELOW 
                                    LOADABLE AREA 
          SX0    B1                SET FLAG INDICATING PARAMETER AREA 
          SX7    B1                 WILL NOT BE INTACT AFTER THE LOAD 
          SA7    NOREQ               IS COMPLETED 
          GE   B5,B3,SETLIM        IF NOT NECESSARY TO MOVE PARAM AREA
  
*         MOVE PARAMETER AREA TO THE TOP OF THE LOADABLE AREA.
  
          SB7    B5-B4             (B7) = LENGTH OF PARAMETER AREA
          SB6    B1                (B6) = WORDS MOVED + 1 
SETLIM5   SA1    B5-B6             MOVE TOP WORD FIRST
          BX6    X1 
          SA6    B3-B6
          SB6    B6+B1             SET FOR NEXT WORD
          GE   B7,B6,SETLIM5       LOOP 
          SB5    B3                ADJUST PARAMETER AREA LWA+1 AND FWA
          SB4    B3-B7
          EQ   SETLIM              EXIT 
          SPACE  4,8
*         SYS - PROCESS SYSTEM REQUEST. 
* 
*         ENTRY  (X6) = SYSTEM REQUEST. 
*         EXIT   REQUEST PROCESSED. 
*         USES   X - 1. 
*                B - NONE.
*                A - 1, 6.
*         CALLS  NONE.
  
  
SYS2      SA1    A1 
          LX1    59-40
          NG   X1,SYS2             WAIT (RA+1) IF AUTO-RECALL 
SYS       PS                       ENTRY/EXIT 
SYS1      SA1    1                 WAIT (RA+1) CLEAR
          NZ   X1,SYS1
          SA6    A1                ENTER REQUEST
          EQ   SYS2 
          SPACE  4,8
RETURN    CON    0                 RETURN ADDRESS TO PASS *LOADU* 
NOREQ     CON    0                 NZ IF PARAMETER AREA WILL BE CLOBBERD
WORK      CON    0                 ARG FOR PP CALLS 
MEM       VFD    24/0LMEMP,18/0,18/WORK 
S         IFSCOPE 
LDL       VFD    24/0LLDLP,18/0,18/WORK 
S         ENDIF 
K         IFNOS 
LFMSTAT   VFD    24/0LLFMP,12/12B,6/0,18/WORK 
K         ENDIF 
LDV       VFD    18/0LLDV,42/0
LOADU     VFD    60/0LLOADU        NAME OF MAIN LOADER PROGRAM TO LOAD
LDVCALL   BSSZ   2
MSG       VFD    24/0LMSGP,18/0,18/WORK 
MES1      DATA   C*FWA-LWA ERROR ON LOADER USER CALL* 
MES4      DATA   C*LDREQ END MISSING* 
 MES5     DATA   C*CMM PARAM MISSING FROM LOADER CALL*
OLDCBIT   EQU    36 
OLDSBIT   EQU    38 
OLDKBIT   EQU    39 
OLDMBIT   EQU    40 
OLDVBIT   EQU    41 
OLDUBIT   EQU    42 
OLDPBIT   EQU    43 
OLDFEBIT  EQU    36 
OLDNEBIT  EQU    37 
EBIT      EQU    36 
 OLDRET   TITLE  RETURN FROM LOADER.
**        8)   IF PROCESSING A NEW-STYLE REQUEST, CONTROL TRANSFERS 
*              DIRECTLY BACK TO THE CALLING PROGRAM AFTER THE LOAD HAS
*              BEEN COMPLETED.
* 
*              IF PROCESSING AN OLD-STYLE REQUEST, *UCLOAD* GETS CONTROL
*              BACK IN ORDER TO UPDATE THE NECESSARY FIELDS IN THE
*              OLD-STYLE REQUEST.  IT THEN GIVES CONTROL BACK TO THE
*              CALLING PROGRAM. 
  
OLDRET    SA1    OLDFWA            (X1) = FWA OF OLD-STYLE CALL 
          SA2    HOLDER+2          INSERT XFERS IN OLD PARAMETER AREA 
          MX4    24 
          BX7    -X4*X2 
          MX5    1
          BX6    X5*X2             FATAL ERROR BIT
          LX6    1+OLDFEBIT 
          BX7    X7+X6
          LX2    1
          BX6    X5*X2             NON-FATAL ERROR BIT
          LX6    1+OLDNEBIT 
          BX7    X7+X6
          MX6    0                 CLEAR WORD 1 OF OLD PARAMETER AREA 
          SA6    X1 
          SA7    A6+B1             STORE REPLY WORD 
          R=     X3,CENTRY         CHECK IF AN *ENTRY* REQUEST WAS
          MX6    -12                PROCESSED DUE TO K-BIT BEING SET
          SA4    A2+B1
          LX4    -48
          BX4    -X6*X4 
          IX4    X3-X4
          ZR   X4,OLDRET1          IF *ENTRY* 
          SA4    A4+B1             MIGHT HAVE BEEN IN NEXT WORD 
          LX4    -48
          BX4    -X6*X4 
          IX4    X3-X4
          NZ   X4,OLDRET2          IF NO *ENTRY*
OLDRET1   SA4    A4+B1             GET ADDRESS AND PLACE IN OLD CALL
          SX4    X4 
          NG   X4,OLDRET2          IF -0, FORGET
          SA2    A7 
          MX3    42 
          BX7    X3*X2
          BX7    X7+X4
          SA7    A2 
  
*         CHECK IF THERE IS ANOTHER OF THE OLD-STYLE USER-CALLS.
*         IF SO, REPEAT THE ENTIRE PROCESS. 
  
OLDRET2   SX7    X1+2              ADVANCE POINTER
          SB4    X7                (B4) = REQUEST FWA 
          SA7    A1 
          SA1    B4 
          NZ   X1,OLD1             IF ANOTHER 
          EQ   LOADER=             EXIT TO USER 
          SPACE  4,8
OLDFWA    CON    0                 FWA OF OLD-STYLE USER-CALL PARAMETER 
                                    AREA CURRENTLY BEING PROCESSED
MES2      DATA   C*OLD-STYLE SEGMENTATION NOT SUPPORTED*
MES3      DATA   C*SL LIST TOO BIG - CONSULT UCLOAD IMS*
SIZE      EQU    40B               SIZE OF AREA FOR NEW-STYLE PARAMETER 
                                    AREA CONVERTED FROM OLD-STYLE ONE 
HOLDER    BSS    SIZE 
  
          ORG    HOLDER 
 COPYRITE DATA   C/ CONTROL DATA PROPRIETARY PRODUCT /
          DATA   C/ COPYRIGHT CONTROL DATA CORP. 1976, 1977, 1978,/ 
          DATA   C/ 1979, 1980, 1981, 1982./
          ORG    HOLDER+SIZE
  
          END 
