*COMDECK CMMCOM 
 CMMCOM   CTEXT  CMMCOM - CMM COMMON DECK 
****
*                C M M   C O M M O N  D E C K 
          SPACE  4,8
*         ADD MODIFICATIONS TO ASSEMBLY CONSTANTS HERE. 
  
  
*         **************************************************************
*         COPYRIGHT CONTROL DATA CORP. 1976,1977,1978,1979,1980,1981, 
*         1982
*         **************************************************************
  
*         MISCELLANEOUS DEFINITIONS.
  
 SUBSYS   MICRO  1,,CMM V1.1 -
 DEFVER   CEQU   0           0 - FAST IS THE DEFAULT VERSION
                             1 - SAFE IS THE DEFAULT VERSION
          IF     DEF,ERRCK,7
          IFEQ   DEFVER,ERRCK,2 
 PREFIX   MICRO  1,, CMM     MAKE FUNCTION ENTRY POINTS = CMM.XXX 
          SKIP   4
          IFEQ   DEFVER,0,2 
 PREFIX   MICRO  1,, CMS     MAKE FUNCTION ENTRY POINTS = CMS.XXX 
          SKIP   1
 PREFIX   MICRO  1,, CMF     MAKE FUNCTION ENTRY POINTS = CMF.XXX 
 RA65     EQU    65B
 RA66     EQU    66B
 HHA      EQU    104B 
 DEFTRIG  MICRO  1,,$95$     DEFAULT CORE-UTILIZATION MAXIMUM 
          SPACE  4,8
*         HIGH-CORE STORAGE.
  
 P.ENDZ   EQU    1           POINTER TO END OF BLOCKS 
 P.BOOT   EQU    P.ENDZ+1    INTERNAL BLOCK PTR - BOOTSTRAP CODE
 P.UAS    EQU    P.BOOT+1    INTERNAL BLOCK PTR - UNLOAD-ACTION SUBRS 
 P.OAS    EQU    P.UAS+1     INTERNAL BLOCK PTR - OVERFLOW-ACTION STACK 
 P.IV     EQU    P.OAS+1     INTERNAL BLOCK PTR - IDENTIFIED VALUES 
 P.GID    EQU    P.IV+1      INTERNAL BLOCK PTR - GROUP-IDS 
 NIB      EQU    P.GID-1     NUMBER OF INTERNAL BLOCKS
 MAXFL    EQU    P.GID+1     CURRENT VALUE FOR *MAXFL*
 MAXFLST  EQU    MAXFL+1     ACTUAL JOB *MAXFL* 
 OVERFLOW EQU    MAXFLST+1   NZ IF IN OVERFLOW MODE 
 GROUPID  EQU    OVERFLOW+1  MOST-RECENT GROUP-ID ASSIGNED
 ENTRYID  EQU    GROUPID+1   MOST-RECENT ENTRY-ID ASSIGNED  (OV-ACTION) 
 UNLOADID EQU    ENTRYID+1   MOST-RECENT ID FOR UNLOAD-ACTION SUBRS 
 UNIQUEID EQU    UNLOADID+1  MOST-RECENT ID FOR TYPE 4 BLOCKS 
 FLMAX    EQU    UNIQUEID+1  MAXIMUM FL ATTAINED
 FLINC.C  EQU    FLMAX+1     CURRENT VALUE FOR *FLINC*
 FLF.C    EQU    FLINC.C+1   CURRENT VALUE FOR *FLF*
 FLUP     EQU    FLF.C+1     NO. OF FL INCREASES
 FLDOWN   EQU    FLUP+1      NO. OF FL DECREASES
 MAXALL   EQU    FLDOWN+1    MAX. NO. OF ALLOCATED CM WORDS 
 CURALL   EQU    MAXALL+1    CURRENT NO. OF ALLOCATED CM WORDS
 CRASHES  EQU    CURALL+1    NO. OF CRASHES (BLOCK MOVES) 
 OACALLS  EQU    CRASHES+1   NO. OF OVERFLOW-ACTION CALLS 
 IMAPM    EQU    OACALLS+1   NZ IF IN A POINTER-MAINT. SUBR.
 IMAUA    EQU    IMAPM+1     NZ IF IN AN UNLOAD-ACTION SUBR.
 OP1      EQU    IMAUA+1     NZ IF IN NO-READJUSTMENT PERIOD
 OWNFG    EQU    OP1+1       NZ IF IN USER ERROR EXIT MODE               CMM0008
 MNARGS   EQU    OWNFG+1     START OF SAVE AREA FOR PARAMS AND STUFF
 MNRETURN EQU    MNARGS      CURRENT FUNCTION RETURN ADDRESS
 MNFNAME  EQU    MNRETURN+1  CURRENT FUNCTION NAME
 MNFWA    EQU    MNFNAME+1   ARG WHICH MAY NEED ADDRESS UPDATED 
 MNARG1   EQU    MNFWA+1     FUNCTION ARGS (OTHER THAN MNFWA) 
 MNARG2   EQU    MNARG1+1    FUNCTION ARGS (OTHER THAN MNFWA) 
 MNARG3   EQU    MNARG2+1    FUNCTION ARGS (OTHER THAN MNFWA) 
 MNARG4   EQU    MNARG3+1    FUNCTION ARGS (OTHER THAN MNFWA) 
 MNARG5   EQU    MNARG4+1    FUNCTION ARGS (OTHER THAN MNFWA) 
 MNARG6   EQU    MNARG5+1    FUNCTION ARGS (OTHER THAN MNFWA) 
 MNSAVEA0 EQU    MNARG6+1    A0 SAVE AREA 
 MNEND    EQU    MNSAVEA0+1  END OF SAVE AREA 
 REGSAVE  EQU    MNEND       REGISTER SAVE AREA  (CMM.LDV NEEDS 14) 
 ENDSTORE EQU    REGSAVE+14  END OF FIXED-LENGTH STORAGE
          SPACE  4,8
*         ASSEMBLY CONSTANTS. 
* 
* 
*         FLF      DEFAULT VALUE USED BY THE FL REDUCTION ALGORITHM 
*                  USED WHEN THE VARIABLE BLOCK CODE IS NOT PRESENT 
*                  (I.E., ONLY FIXED BLOCKS).  THE AMOUNT OF FREE SPACE 
*                  ABOVE THE HIGHEST FIXED BLOCK WILL BE REDUCED TO 
*                  *FLF* CM WORDS.
*                  THIS VALUE CAN BE CHANGED DYNAMICALLY WITH *CMM.OP6*.
*                  THE LOWER THE VALUE OF *FLF*, THE LESS UNUSED FREE 
*                  SPACE LEFT AROUND, BUT THE HIGHER THE OVERALL
*                  FREQUENCY OF MEMORY REQUESTS MADE TO THE SYSTEM. 
  
 FLF      CEQU   2000B
  
  
*         FLINC    DEFAULT VALUE FOR THE AMOUNT CMM WILL ATTEMPT TO 
*                  INCREASE FL MORE THAN THE MINIMUM AMOUNT NECESSARY.
*                  THIS VALUE CAN BE CHANGED DYNAMICALLY WITH *CMM.OP5*.
*                  THE HIGHER THE VALUE OF *FLINC*, THE BETTER THE
*                  CHANCE THAT THE NEXT FIXED BLOCK ALLOCATED WILL FIT
*                  WITHOUT ANOTHER FIELD LENGTH INCREASE, BUT MORE
*                  UNUSED SPACE WILL BE LEFT AROUND IN THE MEANTIME.
  
 FLINC    CEQU   2000B
  
  
*         FLV1,    DEFAULT VALUES USED BY THE FL REDUCTION ALGORITHM
*         FLV2     USED WHEN VARIABLE BLOCKS, WITH OR WITHOUT FIXED 
*                  BLOCKS, ARE PRESENT.  IF THE TOTAL FREE SPACE ABOVE
*                  THE HIGHEST FIXED BLOCK \ *FLV1*, THEN VARIABLE
*                  BLOCKS ARE RE-DISTRIBUTED AND FIELD LENGTH IS
*                  REDUCED SO THAT THE TOTAL FREE SPACE = *FLV2*. 
  
 FLV1     CEQU   20000B 
 FLV2     CEQU   10000B 
  
  
*         MINFXVR  FREE SPACE IS DIVIDED IN PROPORTION TO ALLOCATED 
*                  FIXED AND VARIABLE BLOCKS AT CERTAIN TIMES.  A FREE
*                  REGION IS ESTABLISHED OF THE SIZE OF THE AMOUNT FOR
*                  FIXED BLOCKS.  THIS OPTION PREVENTS THE FORMATION
*                  OF SUCH A FREE REGION WHICH IS LESS THAN THE VALUE 
*                  SPECIFIED BY THIS OPTION.
  
 MINFXVR  CEQU   20B
  
  
*         THR      THRESHOLD FOR WHICH PREFERENCE IS GIVEN TO 
*                  INCREASING THE FIELD LENGTH WHEN TRYING TO EXPAND THE
*                  PRIMARY VARIABLE REGION, EVEN THOUGH SOME FREE CM
*                  WORDS STILL REMAIN IN THE REGION.  THE RESULTING 
*                  VALUE IS BASED ON THE SIZE OF THE REGION AT ANY GIVEN
*                  TIME, AS FOLLOWS:  
* 
*                  AMOUNT = (REGION SIZE) / 2**THR
  
 THR      CEQU   6
          SPACE  4,8
*         MACROS, OPSYNS, ETC.
  
          IPARAMS 
 OS.NMV   MICRO  1,7,*"OS.NAME""OS.VER"*   NAME AND VERS OF OP SYSTEM 
  
 FS       IF     DEF,ERRCK
  
          IFNE   ERRCK,0,3
 IFSAFE   OPSYN  IFCP        CONTROL ASSEMBLY OF ERROR-CHECKING VERSION 
 IFFAST   OPSYN  SKIP 
          SKIP   2
 IFSAFE   OPSYN  SKIP 
 IFFAST   OPSYN  IFCP 
          SPACE  3
*         CMMENT - DEFINE ENTRY POINT.
* 
*         ENTRY  A = FUNCTION NAME. 
  
 CMMENT   MACRO  A
          ENTRY  "PREFIX"._A
 "PREFIX"._A BSS 0
 CMMENT   ENDM
  
 FS       ENDIF 
          SPACE  4,8
*         MERR - ISSUE MEMORY ERROR.
* 
*         ENTRY  A = ERROR NUMBER.
  
 MERR     MACRO  A           CALL TO ISSUE MEMORY OVERFLOW MESSAGE
          R=     X1,A 
          RJ     =XCMM.MEP
 MERR     ENDM
          SPACE  3
*         UERR - ISSUE USER ERROR.
* 
*         ENTRY  A = MESSAGE FWA. 
*                B = 0-10 INSERTION CHARS.
*                C = VALUE TO SET IN B1 IF NOT NULL.
  
 UERR     MACRO  A,B,C       CALL TO ISSUE USER-ERROR MESSAGE 
          R=     X1,A 
          R=     X2,B 
          IFC    NE,*C**,1
          R=     B1,C 
          RJ     =XCMM.UEP
 UERR     ENDM
          SPACE  4,8
*         MEMORY ERROR DEFINITIONS. 
  
 ERRUTL   EQU    1           NO OV-ACTION SPECIFIED, .95 UTIL LEVEL 
 ERRFAIL  EQU    2           CMM.YYY CANNOT COMPLETE
 ERRNOA   EQU    3           NO MORE OVERFLOW-ACTION CALLS POSSIBLE 
 ERRFAOV  EQU    4           CMM.YYY CANNOT COMPLETE - OVERFLOW MODE
 ERRCIA   EQU    5           NO ROOM TO INCREASE CMM INTERNAL AREA
          SPACE  4,8
*         USER ERROR DEFINITIONS. 
  
 CMEOVFL  EQU    1           CMM ERROR ', MAIN-CMM.''', OV-CMM.'''
 CMEUSER  EQU    2           CMM ERROR - FROM CMM.''' 
 CMECTP3  EQU    3           BAD CHG TO BLOCK WITH TYPE 3 PTR WDS 
 CMEBFWA  EQU    4           BLOCK FWA ERROR
 CMESIZE  EQU    5           BLOCK SIZE ERROR ON ALLOCATE 
 CMEPMR   EQU    6           CALLED FROM POINTER-MAINTENANCE ROUTINE
 CMEUAR   EQU    7           CALLED FROM UNLOAD-ACTION SUBROUTINE 
 CMEFPVS  EQU    8           FIXED-POS, LWA-END BLOCK PRESENT 
 CMEHHA   EQU    9           FWA OR LWA GT HHA
 CMEZFWA  EQU    10          FWA = 0 WITH PENDING UNL-ACTION SUBRS
 CMENGT1  EQU    11          GROUP-TYPE 1 BLOCKS ILLEGALLY ACTIVE 
 CMEFST   EQU    12          ILLEGAL 1ST CALL TO CMM
 CMENUM   EQU    13          ILLEGAL GROW-SHRINK AMOUNT 
 CMEAUX   EQU    14          IMPROPERLY SPECIFIED AUX1 OR AUX2
 CMEGID   EQU    15          IMPROPERLY SPECIFIED GROUP-ID
 CMEGT    EQU    16          IMPROPERLY SPECIFIED GROUP-TYPE
 CMESC    EQU    17          IMPROPERLY SPECIFIED SIZE-CODE 
 CMETRIG  EQU    18          IMPROPERLY SPECIFIED TRIGGER VALUES
 CMETC    EQU    19          IMPROPERLY SPECIFIED TYPE-CODE 
 CMEUID   EQU    20          IMPROPERLY SPECIFIED UNIQUE-ID 
 CMEMFL   EQU    21          MAXFL LT HHA 
 CMEAGLF  EQU    22          MAY NOT ADD LWA GROWTH TO FIXED BLOCK
 CMEFTP3  EQU    23          MAY NOT FREE BLOCK WITH TYPE 3 PTR WDS 
 CMEDGHH  EQU    24          MAY NOT INCREASE DABA GT HHA 
 CMEHHLD  EQU    25          MAY NOT REDUCE HHA LT DABA 
 CMEHFXB  EQU    26          MAY NOT UP HHA IF FIXED BLOCKS PRESENT 
 CMENEED  EQU    27          NEED TO LOAD - CMM.''' 
 CMENGID  EQU    28          NON-ACTIVE GROUP-ID SPECIFIED
 CMENEID  EQU    29          NON-EXISTENT ENTRY-ID
 CMENUID  EQU    30          NON-EXISTENT UNLOAD-ID 
 CMEN54   EQU    31          NON-54 TABLE OVERLAY LOADED
 CMEOVHH  EQU    32          OVERLAY LOAD INCREASED HHA 
 CMETY1M  EQU    33          POINTER WORD IN BLOCK WITH MOVABLE FWA 
 CMESCV   EQU    34          SIZE-CODE VIOLATION
 CMEPTR   EQU    35          BLOCK POINTERS MESSED UP - SEE (B2)
 CMERA65  EQU    36          RA+65B INCORRECT - ICM CALLED FROM ''''''
 CMEDAO   EQU    37          SYS ERR - DYNAMIC AREA OVERWRITTEN 
 CMEMXBG  EQU    38          MAY NOT SET MAXFL GT ORIGINAL VALUE
 CMEMXSM  EQU    39          MAY NOT SET MAXFL LT FL
 CMEFFER  EQU    40          INCORRECT VALUE FOR FLINC OR FLF 
  
*         END OF CMMCOM.
****
  
          ENDX
