User Tools

Site Tools


cdc:nos2.source:opl.opl871:common:comcmtp

Common COMCMTP

2 Modifications

Source

Seq #  *Modification Id* Act 
----------------------------+
00001  M01S00001.comcmtp +++|          CTEXT  COMCMTP - MANAGED TABLE PROCESSORS.
00002  M01S00002.comcmtp +++|          SPACE  4
00003  M01S00003.comcmtp +++|          IF     -DEF,FTAB,1
00004  M01S00004.comcmtp +++| TABLES   HERE
00005  M01S00005.comcmtp +++|          SPACE  4
00006  M01S00006.comcmtp +++|          IF     -DEF,QUAL$,1
00007  M01S00007.comcmtp +++|          QUAL   COMCMTP
00008  M01S00008.comcmtp +++|          BASE   D
Line S00009 Modification History
M01 (Added by) comcmtp
M02 (Updated by) 281l803
Seq #  *Modification Id* Act 
----------------------------+
00009  M02S00009.281l803 ---|*         COMMENT COPYRIGHT CONTROL DATA CORP. 1970.
00010  M01S00001.281l803 +++|*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992.
00011  M01S00010.comcmtp +++|          SPACE  4
00012  M01S00011.comcmtp +++|***       COMCMTP - MANAGED TABLE PROCESSORS.
00013  M01S00012.comcmtp +++|*         G. R. MANSFIELD.  70/12/20.
00014  M01S00013.comcmtp +++|          SPACE  4
00015  M01S00014.comcmtp +++|***              COMCMTP CONTAINS ROUTINES FOR PROCESSING MANAGED
00016  M01S00015.comcmtp +++|*         TABLES.  MACROS FOR CALLS AND GENERATION ARE CONTAINED
00017  M01S00016.comcmtp +++|*         IN COMCMTM.
00018  M01S00017.comcmtp +++|*
00019  M01S00018.comcmtp +++|*
00020  M01S00019.comcmtp +++|*                THE MANAGED TABLE PROCESSORS ALLOW THE PARTIONING OF
00021  M01S00020.comcmtp +++|*         CENTRAL MEMORY INTO VARIABLE REGIONS (CALLED TABLES).
00022  M01S00021.comcmtp +++|*         THESE TABLES ARE REFERENCED BY POINTERS WHICH INDICATE
00023  M01S00022.comcmtp +++|*         THE FIRST ADDRESS OF THE TABLE AND THE TABLE LENGTH.
00024  M01S00023.comcmtp +++|*         MEMORY IS ALLOCATED TO EACH TABLE AS IT IS REQUIRED AND
00025  M01S00024.comcmtp +++|*         THE USER MAY DELETE SPACE FROM THE TABLES.  THE USER IS
00026  M01S00025.comcmtp +++|*         EXPECTED TO PROVIDE CERTAIN CONSTANTS FOR USE BY THE
00027  M01S00026.comcmtp +++|*         TABLE PROCESSORS.  EACH TABLE IS ALLOWED AT LEAST 1 WORD
00028  M01S00027.comcmtp +++|*         OF EXPANSION SPACE TO ALLOW A DUMMY WORD BETWEEN EACH
00029  M01S00028.comcmtp +++|*         TABLE.  THIS ALLOWS EFFICIENT SEARCH METHODS TO BE USED.
00030  M01S00029.comcmtp +++|*
00031  M01S00030.comcmtp +++|*
00032  M01S00031.comcmtp +++|*
00033  M01S00032.comcmtp +++|*
00034  M01S00033.comcmtp +++|*         *MEML* = LOWEST ADDRESS OF MANAGED MEMORY.
00035  M01S00034.comcmtp +++|*         *TOV*  = ADDRESS OF TABLE OVERFLOW PROCESSOR.
00036  M01S00035.comcmtp +++|*
00037  M01S00036.comcmtp +++|*         DATA PROVIDED BY *COMCMTM*.
00038  M01S00037.comcmtp +++|*
00039  M01S00038.comcmtp +++|*         *NTAB* = NUMBER OF MANAGED TABLES.
00040  M01S00039.comcmtp +++|*         *FTAB* = START OF TABLE ADDRESSES.
00041  M01S00040.comcmtp +++|*         *LTAB* = START OF TABLE LENGTHS.
00042  M01S00041.comcmtp +++|*         *F.TNAM* = ADDRESS POINTER FOR TABLE *TNAM*.
00043  M01S00042.comcmtp +++|*         *L.TNAM* = LENGTH POINTER FOR TABLE *TNAM*.
00044  M01S00043.comcmtp +++|*         *C.TNAM* = WORDS/ENTRY FOR SEARCH ROUTINES.
00045  M01S00044.comcmtp +++|*
00046  M01S00045.comcmtp +++|*         DATA DYNAMICALLY CHANGABLE.
00047  M01S00046.comcmtp +++|*
00048  M01S00047.comcmtp +++|*         (TN) = NUMBER OF MANAGED TABLES.  SET TO *NTAB* BY
Line S00048 Modification History
M01 (Added by) comcmtp
M02 (Updated by) cmtp1
Seq #  *Modification Id* Act 
----------------------------+
00049  M02S00048.cmtp1   ---|*                *COMCMTM*.  VALUE MUST BE ;*NTAB* DURING USE.
00050  M01S00001.cmtp1   +++|*                *COMCMTM*.  VALUE MUST BE .LE. *NTAB* DURING USE.
00051  M01S00049.comcmtp +++|*         (TO) = TABLE OVERFLOW PROCESSOR.  SET TO *TOV* BY
00052  M01S00050.comcmtp +++|*                *COMCMTM*.
00053  M01S00051.comcmtp +++|*         (LM) = LOW MEMORY LIMIT.  VALUE SET TO *MEML* BY *COMCMTM*.
00054  M01S00052.comcmtp +++|*                IF THIS VALUE IS RAISED, *MTU* SHOULD BE CALLED
00055  M01S00053.comcmtp +++|*                TO ALLOW ROOM FOR CHANGE.
00056  M01S00054.comcmtp +++|*         (F.TEND) = HIGH MEMORY LIMIT.  VALUE MUST BE INITIALIZED
00057  M01S00055.comcmtp +++|*                BY USER.  IF THIS VALUE IS LOWERED, *MTD* SHOULD
00058  M01S00056.comcmtp +++|*                BE CALLED TO ALLOW ROOM FOR CHANGE.
00059  M01S00057.comcmtp +++| ADW      SPACE  4
00060  M01S00058.comcmtp +++|***       ADW - ADD WORD TO TABLE.
00061  M01S00059.comcmtp +++|*
00062  M01S00060.comcmtp +++|*         ENTRY  (A0) = TABLE NUMBER.
00063  M01S00061.comcmtp +++|*                (X1) = WORD.
00064  M01S00062.comcmtp +++|*
00065  M01S00063.comcmtp +++|*         EXIT   (X1) = WORD.
00066  M01S00064.comcmtp +++|*                (X6) = WORD.
00067  M01S00065.comcmtp +++|*                (A6) = ADDRESS OF WORD.
00068  M01S00066.comcmtp +++|*                (X2) = FWA TABLE.
00069  M01S00067.comcmtp +++|*                (X3) = LENGTH OF TABLE.
00070  M01S00068.comcmtp +++|*
00071  M01S00069.comcmtp +++|*         USES   X - 1, 2, 3, 4, 6, 7.
00072  M01S00070.comcmtp +++|*                B - NONE.
00073  M01S00071.comcmtp +++|*                A - 1,2,3,4,6,7.
00074  M01S00072.comcmtp +++|*
00075  M01S00073.comcmtp +++|*         CALLS  ATS.
00076  M01S00074.comcmtp +++|
00077  M01S00075.comcmtp +++|
00078  M01S00076.comcmtp +++| ADW1     BX6    X1          PLACE ENTRY IN TABLE
00079  M01S00077.comcmtp +++|          IX7    X2+X3
00080  M01S00078.comcmtp +++|          SA6    X7
00081  M01S00079.comcmtp +++|          SX3    X3+B1
00082  M01S00080.comcmtp +++|
00083  M01S00081.comcmtp +++| ADW      PS                 ENTRY/EXIT
00084  M01S00082.comcmtp +++|          SA2    FTAB+A0     SET TABLE DIFFERENTIAL
00085  M01S00083.comcmtp +++|          SA4    A2+B1
00086  M01S00084.comcmtp +++|          IX7    X4-X2
00087  M01S00085.comcmtp +++|          SA3    LTAB+A0     CURRENT LENGTH
00088  M01S00086.comcmtp +++|          SX6    X3+B1       ADD NEW ENTRY
00089  M01S00087.comcmtp +++|          IX7    X6-X7
00090  M01S00088.comcmtp +++|          SA6    A3          UPDATE LENGTH
00091  M01S00089.comcmtp +++|          NG     X7,ADW1     IF ROOM FOR ENTRY + 1 WORD
00092  M01S00090.comcmtp +++|          BX6    X1          SAVE ENTRY
00093  M01S00091.comcmtp +++|          LX7    X3          RESTORE LENGTH
00094  M01S00092.comcmtp +++|          SA6    ADWA
00095  M01S00093.comcmtp +++|          SA7    A3
00096  M01S00094.comcmtp +++|          ALLOC  A0,1        ALLOCATE 1 WORD
00097  M01S00095.comcmtp +++|          SA1    ADWA        RESTORE ENTRY
00098  M01S00096.comcmtp +++|          SX3    X3-1        SET ORIGINAL LENGTH
00099  M01S00097.comcmtp +++|          EQ     ADW1        PROCESS ENTRY
00100  M01S00098.comcmtp +++|
00101  M01S00099.comcmtp +++| ADWA     CON    0
00102  M01S00100.comcmtp +++| AMU      SPACE  4
00103  M01S00101.comcmtp +++|***       AMU - ACCUMULATE MEMORY USED.
00104  M01S00102.comcmtp +++|*
00105  M01S00103.comcmtp +++|*         ENTRY  NONE.
00106  M01S00104.comcmtp +++|*
00107  M01S00105.comcmtp +++|*         EXIT   MU = MAX(MU,CURRENT ASSIGNED LENGTH)
00108  M01S00106.comcmtp +++|*
00109  M01S00107.comcmtp +++|*         USES   X - 1, 2, 3, 6.
00110  M01S00108.comcmtp +++|*                B - 2.
00111  M01S00109.comcmtp +++|*                A - 1, 2, 6.
00112  M01S00110.comcmtp +++|*
00113  M01S00111.comcmtp +++|*         CALLS  NONE.
00114  M01S00112.comcmtp +++|
00115  M01S00113.comcmtp +++|
00116  M01S00114.comcmtp +++| AMU1     IX6    X6+X2       ACCUMULATE LENGTH
00117  M01S00115.comcmtp +++|          SB2    B2-B1
00118  M01S00116.comcmtp +++|          SA2    A2+B1       NEXT TABLE
00119  M01S00117.comcmtp +++|          NE     B2,B1,AMU1  LOOP FOR ALL TABLES
00120  M01S00118.comcmtp +++|          SA1    MU          SET MAX LENGTH
00121  M01S00119.comcmtp +++|          IX3    X6-X1
00122  M01S00120.comcmtp +++|          NG     X3,AMU
00123  M01S00121.comcmtp +++|          SA6    A1
00124  M01S00122.comcmtp +++|
00125  M01S00123.comcmtp +++| AMU      PS                 ENTRY/EXIT
00126  M01S00124.comcmtp +++|          SA1    TN          (B2) = NUMBER OF TABLES
00127  M01S00125.comcmtp +++|          MX6    0           CLEAR ACCUMULATION
00128  M01S00126.comcmtp +++|          SB2    X1
00129  M01S00127.comcmtp +++|          SA2    LTAB        FIRST TABLE
00130  M01S00128.comcmtp +++|          EQ     AMU1
00131  M01S00129.comcmtp +++| ATS      SPACE  4
00132  M01S00130.comcmtp +++|***       ATS - ALLOCATE TABLE SPACE.
00133  M01S00131.comcmtp +++|*
00134  M01S00132.comcmtp +++|*         ENTRY  (A0) = TABLE INDEX.
00135  M01S00133.comcmtp +++|*                (X1) = CHANGE (+ OR -) TO TABLE SIZE.
00136  M01S00134.comcmtp +++|*
00137  M01S00135.comcmtp +++|*         EXIT   (X1) = CHANGE.
00138  M01S00136.comcmtp +++|*                (X2) = FWA OF TABLE.
00139  M01S00137.comcmtp +++|*                (X3) = NEW LENGTH OF TABLE.
Line S00138 Modification History
M01 (Added by) comcmtp
M02 (Updated by) cmtp1
Seq #  *Modification Id* Act 
----------------------------+
00140  M02S00138.cmtp1   ---|*                (X7) < 0 IF TABLES MOVED.
00141  M01S00002.cmtp1   +++|*                (X7) .LT. 0 IF TABLES MOVED.
00142  M01S00139.comcmtp +++|*
00143  M01S00140.comcmtp +++|*         IF TABLES NOT MOVED -
00144  M01S00141.comcmtp +++|*         USES   X - 2, 3, 4, 6, 7.
00145  M01S00142.comcmtp +++|*                B - NONE.
00146  M01S00143.comcmtp +++|*                A - 2, 3, 4, 6.
00147  M01S00144.comcmtp +++|*
00148  M01S00145.comcmtp +++|*         IF TABLES MOVED -
00149  M01S00146.comcmtp +++|*         USES   X - 0, 1, 2, 3, 4, 5, 6, 7.
00150  M01S00147.comcmtp +++|*                B - 2, 3, 4, 5, 6, 7.
00151  M01S00148.comcmtp +++|*                A - 1, 2, 3, 4, 6, 7.
00152  M01S00149.comcmtp +++|*
00153  M01S00150.comcmtp +++|*         RESTORES X - 0, 1, 5.
00154  M01S00151.comcmtp +++|*                  B - 2, 3, 4, 5, 6, 7. (EXCEPT -0)
00155  M01S00152.comcmtp +++|*
00156  M01S00153.comcmtp +++|*         CALLS  AMU, MVE, TOV.
00157  M01S00154.comcmtp +++|*
00158  M01S00155.comcmtp +++|*         ENTRY CONDITIONS FOR USER ROUTINE *TOV*.
00159  M01S00156.comcmtp +++|*
00160  M01S00157.comcmtp +++|*                (B1) = 1.
00161  M01S00158.comcmtp +++|*                (B5) = COMPLEMENT OF NUMBER OF WORDS REQUIRED.
00162  M01S00159.comcmtp +++|*                (B6) = RETURN ADDRESS TO CONTINUE PROCESSING, I.E.,
00163  M01S00160.comcmtp +++|*                       EXIT FROM *TOV* VIA  * JP B6 *  INSTRUCTION.
00164  M01S00161.comcmtp +++|*
Line S00162 Modification History
M01 (Added by) comcmtp
M02 (Updated by) cmtp1
Seq #  *Modification Id* Act 
----------------------------+
00165  M02S00162.cmtp1   ---|*                THE LOCATION *TOV* MUST CONTAIN EXECUTABLE CODE.  *TOV*
Line S00163 Modification History
M01 (Added by) comcmtp
M02 (Updated by) cmtp1
Seq #  *Modification Id* Act 
----------------------------+
00166  M02S00163.cmtp1   ---|*                IS ENTERED VIA A *JP*, NOT VIA *RJ*.
00167  M01S00003.cmtp1   +++|*                THE LOCATION *TOV* MUST CONTAIN EXECUTABLE CODE.
00168  M01S00004.cmtp1   +++|*                *TOV* IS ENTERED VIA A *JP*, NOT VIA *RJ*.
00169  M01S00164.comcmtp +++|*
00170  M01S00165.comcmtp +++|*         EXIT CONDITIONS FOR *TOV*.
00171  M01S00166.comcmtp +++|*
00172  M01S00167.comcmtp +++|*                ONLY B1 MUST BE PRESERVED.
00173  M01S00168.comcmtp +++|*
00174  M01S00169.comcmtp +++|*                A POINTER WORD MUST BE INCREMENTED BY THE NUMBER OF
Line S00170 Modification History
M01 (Added by) comcmtp
M02 (Updated by) cmtp1
Seq #  *Modification Id* Act 
----------------------------+
00175  M02S00170.cmtp1   ---|*                WORDS NEWLY AVAILABLE.  IF *NT* HAS NOT BEEN ALTERED
00176  M01S00005.cmtp1   +++|*                WORDS NEWLY AVAILABLE.  IF *TN* HAS NOT BEEN ALTERED
00177  M01S00171.comcmtp +++|*                DURING EXECUTION, THE ADDRESS OF THE POINTER WORD IS
00178  M01S00172.comcmtp +++|*                *F.TEND*.
Line S00173 Modification History
M01 (Added by) comcmtp
M02 (Updated by) cmtp1
Seq #  *Modification Id* Act 
----------------------------+
00179  M02S00173.cmtp1   ---|*                IF *NT* HAS CHANGED, THE ADDRESS OF THE POINTER WORD
Line S00174 Modification History
M01 (Added by) comcmtp
M02 (Updated by) cmtp1
Seq #  *Modification Id* Act 
----------------------------+
00180  M02S00174.cmtp1   ---|*                = FTAB-1 PLUS THE CONTENTS OF *NT*.
00181  M01S00006.cmtp1   +++|*                IF *TN* HAS CHANGED, THE ADDRESS OF THE POINTER WORD
00182  M01S00007.cmtp1   +++|*                IS FTAB-1 PLUS THE CONTENTS OF *TN*.
00183  M01S00175.comcmtp +++|
00184  M01S00176.comcmtp +++|
00185  M01S00177.comcmtp +++| ATS      PS                 ENTRY/EXIT
00186  M01S00178.comcmtp +++| ATS1     SA2    FTAB+A0     CURRENT FWA
00187  M01S00179.comcmtp +++|          SA3    LTAB+A0     CURRENT LENGTH
00188  M01S00180.comcmtp +++|          SA4    A2+B1       NEXT TABLE FWA
00189  M01S00181.comcmtp +++|          IX6    X1+X3       NEW LENGTH
00190  M01S00182.comcmtp +++|          IX7    X4-X2       ROOM BETWEEN TABLES
00191  M01S00183.comcmtp +++|          SA6    A3          SET NEW LENGTH
00192  M01S00184.comcmtp +++|          IX7    X6-X7
00193  M01S00185.comcmtp +++|          BX3    X6
00194  M01S00186.comcmtp +++|          NG     X7,ATS      RETURN IF ROOM FOR CHANGE + 1 WORD
00195  M01S00187.comcmtp +++|          IX7    X6-X1       SET PREVIOUS LENGTH
00196  M01S00188.comcmtp +++|
00197  M01S00189.comcmtp +++|*         INITIALIZE FOR TABLE MOVE.
00198  M01S00190.comcmtp +++|
00199  M01S00191.comcmtp +++|          BX6    X0          SAVE (X0)
00200  M01S00192.comcmtp +++|          SA7    A3
00201  M01S00193.comcmtp +++|          SA6    ATSB
00202  M01S00194.comcmtp +++|          BX7    X1          SAVE (X1)
00203  M01S00195.comcmtp +++|          LX6    X5          SAVE (X5)
00204  M01S00196.comcmtp +++|          SA7    A6+B1
00205  M01S00197.comcmtp +++|          SA6    A7+B1
00206  M01S00198.comcmtp +++|          SX7    B2          SAVE B REGISTERS
00207  M01S00199.comcmtp +++|          SX6    B3
00208  M01S00200.comcmtp +++|          SA7    A6+B1
00209  M01S00201.comcmtp +++|          SA6    A7+B1
00210  M01S00202.comcmtp +++|          SX7    B4
00211  M01S00203.comcmtp +++|          SX6    B5
00212  M01S00204.comcmtp +++|          SA7    A6+B1
00213  M01S00205.comcmtp +++|          SA6    A7+B1
00214  M01S00206.comcmtp +++|          SX7    B6
00215  M01S00207.comcmtp +++|          SX6    B7
00216  M01S00208.comcmtp +++|          SA7    A6+1
00217  M01S00209.comcmtp +++|          SA6    A7+1
00218  M01S00210.comcmtp +++|
00219  M01S00211.comcmtp +++|*         COMPUTE REMAINING TABLE SPACE.
00220  M01S00212.comcmtp +++|
00221  M01S00213.comcmtp +++| ATS1.1   SA2    TN          (B2) = NUMBER OF TABLES
00222  M01S00214.comcmtp +++|          SB2    X2
00223  M01S00215.comcmtp +++|          IX4    X1+X2       LENGTH = NUMBER OF TABLES + INCREASE
00224  M01S00216.comcmtp +++|          SB3    B2-1
00225  M01S00217.comcmtp +++| ATS2     SB3    B3-B1       LENGTH = LENGTH + TABLE LENGTH
00226  M01S00218.comcmtp +++|          SA3    LTAB+B3
00227  M01S00219.comcmtp +++|          IX4    X4+X3
00228  M01S00220.comcmtp +++|          NZ     B3,ATS2     LOOP FOR ALL TABLES
00229  M01S00221.comcmtp +++|          SA2    LM          SET AVAILABLE LENGTH
00230  M01S00222.comcmtp +++|          SA3    FTAB-1+B2
00231  M01S00223.comcmtp +++|          IX6    X3-X2
00232  M01S00224.comcmtp +++|          SB4    X4          (B4) = TOTAL ASSIGNED LENGTH
00233  M01S00225.comcmtp +++|          IX7    X6-X4
00234  M01S00226.comcmtp +++|          SB5    X7          (B5) = REMAINING SPACE
00235  M01S00227.comcmtp +++|          NG     X7,ATS6     IF NO REMAINING SPACE
00236  M01S00228.comcmtp +++|          RJ     MTD         MOVE TABLES DOWN
00237  M01S00229.comcmtp +++|          SA1    ATSB+1      INCREMENT SIZE OF REQUESTED TABLE
00238  M01S00230.comcmtp +++|          SA2    LTAB+A0
00239  M01S00231.comcmtp +++|          IX6    X2+X1
00240  M01S00232.comcmtp +++|          SA6    A2
00241  M01S00233.comcmtp +++|
00242  M01S00234.comcmtp +++|*         REALLOCATE TABLES.
00243  M01S00235.comcmtp +++|*         ALLOCATE INTERSPACE.  (LA/2N) + ((TL*LA)/2) + 1
00244  M01S00236.comcmtp +++|
00245  M01S00237.comcmtp +++|          SA1    FTAB-1+B2   (X0) = LWA+1 LAST TABLE
00246  M01S00238.comcmtp +++|          SB6    B2-B1
00247  M01S00239.comcmtp +++|          BX0    X1
00248  M01S00240.comcmtp +++| ATS3     LE     B6,B1,ATS5  IF TABLE RELOCATION COMPLETE
00249  M01S00241.comcmtp +++|          SB6    B6-B1       I = I-1
00250  M01S00242.comcmtp +++|          SX4    B5          LA (LENGTH AVAILABLE)
00251  M01S00243.comcmtp +++|          SA2    FTAB+B6     FWA(I)
00252  M01S00244.comcmtp +++|          SA1    LTAB+B6     TL (LENGTH OF TABLE)
00253  M01S00245.comcmtp +++|          SX3    B2-B1       N  (NUMBER OF TABLES)
00254  M01S00246.comcmtp +++|          AX5    X4,B1       LA/2
00255  M01S00247.comcmtp +++|          IX6    X4/X3       L1 = LA/N
00256  M01S00248.comcmtp +++|          ZR     B4,ATS4     IF NO TABLES ASSIGNED, L = L1
00257  M01S00249.comcmtp +++|          SX3    B4          AL (TOTAL ASSIGNED LENGTH)
00258  M01S00250.comcmtp +++|          IX7    X5*X1       (LA/2)*TL
00259  M01S00251.comcmtp +++|          AX6    1           L1 = LA/2N
00260  M01S00252.comcmtp +++|          IX7    X7/X3       L2 = (TL*LA)/2
00261  M01S00253.comcmtp +++|          IX6    X6+X7       L = L1+L2
00262  M01S00254.comcmtp +++| ATS4     SX6    X6+B1       L = L+1
00263  M01S00255.comcmtp +++|          IX4    X0-X6       FWA(I+1)-L
00264  M01S00256.comcmtp +++|          UX1    X1          RESET LENGTH
00265  M01S00257.comcmtp +++|          IX7    X4-X1       FWA(I) = FWA(I+1)-L-TL
00266  M01S00258.comcmtp +++|          BX3    X7          DESTINATION = FWA(I)
00267  M01S00259.comcmtp +++|          SA7    A2
00268  M01S00260.comcmtp +++|          LX0    X7          FWA(I+1) = FWA(I)
00269  M01S00261.comcmtp +++|          BX4    X2-X3       CHECK MOVE DIFFERENTIAL
00270  M01S00262.comcmtp +++|          ZR     X4,ATS3     IF NO MOVE REQUIRED
00271  M01S00263.comcmtp +++|          RJ     MVE=        MOVE TABLE
00272  M01S00264.comcmtp +++|          EQ     ATS3        CONTINUE RELOCATING TABLES
00273  M01S00265.comcmtp +++|
00274  M01S00266.comcmtp +++| ATS5     RJ     AMU         ACCUMULATE MEMORY USED
00275  M01S00267.comcmtp +++|
00276  M01S00268.comcmtp +++|*         RESTORE REGISTERS.
00277  M01S00269.comcmtp +++|
00278  M01S00270.comcmtp +++|          SA1    ATSA        COUNT MOVES
00279  M01S00271.comcmtp +++|          SX6    X1+B1
00280  M01S00272.comcmtp +++|          SA6    A1
00281  M01S00273.comcmtp +++|          SA2    ATSB        RESTORE (X0)
00282  M01S00274.comcmtp +++|          SA1    A2+B1       RESTORE (X1)
00283  M01S00275.comcmtp +++|          BX0    X2
00284  M01S00276.comcmtp +++|          SA3    A1+B1       RESTORE (X5)
00285  M01S00277.comcmtp +++|          SA2    A3+B1       RESTORE B REGISTERS
00286  M01S00278.comcmtp +++|          BX5    X3
00287  M01S00279.comcmtp +++|          SB2    X2
00288  M01S00280.comcmtp +++|          SA3    A2+B1
00289  M01S00281.comcmtp +++|          SB3    X3
00290  M01S00282.comcmtp +++|          SA4    A3+B1
00291  M01S00283.comcmtp +++|          SB4    X4
00292  M01S00284.comcmtp +++|          SA2    A4+B1
00293  M01S00285.comcmtp +++|          SB5    X2
00294  M01S00286.comcmtp +++|          SA3    A2+B1
00295  M01S00287.comcmtp +++|          SB6    X3
00296  M01S00288.comcmtp +++|          SA4    A3+B1
00297  M01S00289.comcmtp +++|          SB7    X4
00298  M01S00290.comcmtp +++|          SA2    FTAB+A0     SET TABLE FWA
00299  M01S00291.comcmtp +++|          SA3    LTAB+A0     SET TABLE LENGTH
00300  M01S00292.comcmtp +++|          SX7    -B1         FLAG TABLES MOVED
00301  M01S00293.comcmtp +++|          EQ     ATS         RETURN
00302  M01S00294.comcmtp +++|
00303  M01S00295.comcmtp +++| ATS6     SA3    TO          PROCESS TABLE OVERFLOW
00304  M01S00296.comcmtp +++|          SB2    X3
00305  M01S00297.comcmtp +++|          SX6    A0          PRESERVE (A0) FROM USER DEPREDATIONS
00306  M01S00298.comcmtp +++|          SB6    ATS7        PASS RETURN ADDRESS TO USER
00307  M01S00299.comcmtp +++|          SA6    ATSC
00308  M01S00300.comcmtp +++|          JP     B2
00309  M01S00301.comcmtp +++|
00310  M01S00302.comcmtp +++|*         RETURN FROM USER ROUTINE *TOV*.
00311  M01S00303.comcmtp +++|
00312  M01S00304.comcmtp +++| ATS7     SA1    ATSC        RESTORE (A0), (X1)
00313  M01S00305.comcmtp +++|          SA0    X1+
00314  M01S00306.comcmtp +++|          SA1    ATSB+1
00315  M01S00307.comcmtp +++|          JP     ATS1.1      RE-COMPUTE WITH NEW MEMORY
00316  M01S00308.comcmtp +++|
00317  M01S00309.comcmtp +++| ATSA     CON    0           COUNT OF TABLE MOVES
00318  M01S00310.comcmtp +++|
00319  M01S00311.comcmtp +++| ATSB     CON    0,0,0       (X0, X1, X5) SAVE
00320  M01S00312.comcmtp +++|          CON    0,0,0,0,0,0 (B2 - B7) SAVE
00321  M01S00313.comcmtp +++| ATSC     CON    0           (A0) SAVE IF TABLE OVERFLOW
00322  M01S00314.comcmtp +++| EQS      SPACE  4
00323  M01S00315.comcmtp +++|***       EQS -  EQUALITY SEARCH TABLE.
00324  M01S00316.comcmtp +++|*
00325  M01S00317.comcmtp +++|*         ENTRY  (X6) = ENTRY FOR SEARCH.
00326  M01S00318.comcmtp +++|*                (B7) = WORD COUNT/ENTRY.
00327  M01S00319.comcmtp +++|*                (A0) = TABLE NUMBER.
00328  M01S00320.comcmtp +++|*
00329  M01S00321.comcmtp +++|*         EXIT   (X2) = ENTRY FOUND.
00330  M01S00322.comcmtp +++|*
00331  M01S00323.comcmtp +++|*         USES   X - 1,2,3,7.
00332  M01S00324.comcmtp +++|*                B - NONE.
00333  M01S00325.comcmtp +++|*                A - 1,2,6.
00334  M01S00326.comcmtp +++|*
00335  M01S00327.comcmtp +++|*         CALLS  NONE.
00336  M01S00328.comcmtp +++|
00337  M01S00329.comcmtp +++|
00338  M01S00330.comcmtp +++| EQS      PS                 ENTRY/EXIT
00339  M01S00331.comcmtp +++|          SA1    FTAB+A0     SET TABLE PARAMETERS
00340  M01S00332.comcmtp +++|          SA2    LTAB+A0
00341  M01S00333.comcmtp +++|          IX3    X1+X2       SET SEARCH KEY IN LWA+1
00342  M01S00334.comcmtp +++|          SA6    X3
00343  M01S00335.comcmtp +++|          NO
00344  M01S00336.comcmtp +++|          SA1    X1          FIRST ENTRY
00345  M01S00337.comcmtp +++| +        BX2    X1-X6       COMPARE ENTRIES
00346  M01S00338.comcmtp +++|          SA1    A1+B7       NEXT ENTRY
00347  M01S00339.comcmtp +++|          NZ     X2,*        LOOP TO MATCH
00348  M01S00340.comcmtp +++|          SX7    A1-B7       CHECK SEARCH
00349  M01S00341.comcmtp +++|          BX2    X7-X3
00350  M01S00342.comcmtp +++|          ZR     X2,EQS      RETURN IF NOT FOUND
00351  M01S00343.comcmtp +++|          SA2    A1-B7       RETURN ENTRY
00352  M01S00344.comcmtp +++|          EQ     EQS
00353  M01S00345.comcmtp +++| MES      SPACE  4
00354  M01S00346.comcmtp +++|***       MES - MASKED EQUALITY SEARCH TABLE.
00355  M01S00347.comcmtp +++|*
00356  M01S00348.comcmtp +++|*         ENTRY  (X6) = ENTRY FOR SEARCH.
00357  M01S00349.comcmtp +++|*                (X0) = MASK.
00358  M01S00350.comcmtp +++|*                (B7) = WORD COUNT/ENTRY.
00359  M01S00351.comcmtp +++|*                (A0) = TABLE NUMBER.
00360  M01S00352.comcmtp +++|*
00361  M01S00353.comcmtp +++|*         EXIT   (X2) = ENTRY FOUND.
00362  M01S00354.comcmtp +++|*
00363  M01S00355.comcmtp +++|*         USES   X - 1,2,3,4,7.
00364  M01S00356.comcmtp +++|*                B - NONE.
00365  M01S00357.comcmtp +++|*                A - 1,2,6.
00366  M01S00358.comcmtp +++|*
00367  M01S00359.comcmtp +++|*         CALLS  NONE.
00368  M01S00360.comcmtp +++|
00369  M01S00361.comcmtp +++|
00370  M01S00362.comcmtp +++| MES1     BX4    X0*X2
00371  M01S00363.comcmtp +++|          SA1    A1+B7       NEXT ENTRY
00372  M01S00364.comcmtp +++|          BX2    X6-X1       COMPARE ENTRIES
00373  M01S00365.comcmtp +++|          NZ     X4,MES1     LOOP TO MATCH
00374  M01S00366.comcmtp +++|          SX7    A1-B7       CHECK SEARCH
00375  M01S00367.comcmtp +++|          BX2    X7-X3
00376  M01S00368.comcmtp +++|          ZR     X2,MES      RETURN IF NOT FOUND
00377  M01S00369.comcmtp +++|          SA2    X7+         RETURN ENTRY
00378  M01S00370.comcmtp +++|
00379  M01S00371.comcmtp +++| MES      PS                 ENTRY/EXIT
00380  M01S00372.comcmtp +++|          SA1    FTAB+A0     SET TABLE PARAMETERS
00381  M01S00373.comcmtp +++|          SA2    LTAB+A0
00382  M01S00374.comcmtp +++|          IX3    X1+X2       SET SEARCH KEY IN LWA+1
00383  M01S00375.comcmtp +++|          SA6    X3
00384  M01S00376.comcmtp +++|          SA1    X1          FIRST ENTRY
00385  M01S00377.comcmtp +++|          BX2    X6-X1
00386  M01S00378.comcmtp +++|          EQ     MES1
00387  M01S00379.comcmtp +++| MTD      SPACE  4
00388  M01S00380.comcmtp +++|***       MTD - MOVE TABLES DOWN.
00389  M01S00381.comcmtp +++|*
00390  M01S00382.comcmtp +++|*         ENTRY  NONE.
00391  M01S00383.comcmtp +++|*
00392  M01S00384.comcmtp +++|*         EXIT   (B2) = NUMBER OF TABLES.
00393  M01S00385.comcmtp +++|*
00394  M01S00386.comcmtp +++|*         USES   X - 0, 1, 2, 3, 4, 7.
00395  M01S00387.comcmtp +++|*                B - 2, 3.
00396  M01S00388.comcmtp +++|*                A - 1,2,3,7.
00397  M01S00389.comcmtp +++|*
00398  M01S00390.comcmtp +++|*         CALLS  MVE=.
00399  M01S00391.comcmtp +++|
00400  M01S00392.comcmtp +++|
00401  M01S00393.comcmtp +++| MTD      PS                 ENTRY/EXIT
00402  M01S00394.comcmtp +++|          SA1    LM          LOW MEMORY LIMIT
00403  M01S00395.comcmtp +++|          SA2    TN          (B2) = NUMBER OF TABLES
00404  M01S00396.comcmtp +++|          BX0    X1
00405  M01S00397.comcmtp +++|          SB2    X2
00406  M01S00398.comcmtp +++|          SB3    1
00407  M01S00399.comcmtp +++| MTD1     SA2    FTAB-1+B3   ORIGIN = PREVIOUS FWA
00408  M01S00400.comcmtp +++|          SA3    LTAB-1+B3   WORD COUNT = LENGTH + 1
00409  M01S00401.comcmtp +++|          BX4    X2-X0       MOVE DIFFERENTIAL
00410  M01S00402.comcmtp +++|          SX1    X3+B1
00411  M01S00403.comcmtp +++|          SX7    X0          SET NEW FWA
00412  M01S00404.comcmtp +++|          IX0    X0+X1       NEXT FWA
00413  M01S00405.comcmtp +++|          SB3    B3+B1       ADVANCE TABLE NUMBER
00414  M01S00406.comcmtp +++|          ZR     X4,MTD2     IF NO MOVE REQUIRED
00415  M01S00407.comcmtp +++|          SA7    A2
00416  M01S00408.comcmtp +++|          MOVE   X1,X2,X7    MOVE MEMORY BLOCK
00417  M01S00409.comcmtp +++| MTD2     LT     B3,B2,MTD1  LOOP TO LAST TABLE
00418  M01S00410.comcmtp +++|          EQ     MTD         RETURN
00419  M01S00411.comcmtp +++| MTU      SPACE  4
00420  M01S00412.comcmtp +++|***       MTU - MOVE TABLES UP.
00421  M01S00413.comcmtp +++|*
00422  M01S00414.comcmtp +++|*         ENTRY  NONE.
00423  M01S00415.comcmtp +++|*
00424  M01S00416.comcmtp +++|*         EXIT   NONE.
00425  M01S00417.comcmtp +++|*
00426  M01S00418.comcmtp +++|*         USES   X - 0, 1, 2, 3, 7.
00427  M01S00419.comcmtp +++|*                B - 3.
00428  M01S00420.comcmtp +++|*                A - 1, 2, 7.
00429  M01S00421.comcmtp +++|*
00430  M01S00422.comcmtp +++|*         CALLS  MVE.
00431  M01S00423.comcmtp +++|
00432  M01S00424.comcmtp +++|
00433  M01S00425.comcmtp +++| MTU1     SB3    B3-B1       DECREMENT TABLE COUNT
00434  M01S00426.comcmtp +++|          SA2    FTAB+B3
00435  M01S00427.comcmtp +++|          SA1    LTAB+B3
00436  M01S00428.comcmtp +++|          IX7    X0-X1       NEW FWA = L - LENGTH
00437  M01S00429.comcmtp +++|          LX0    X7          L = NEW FWA
00438  M01S00430.comcmtp +++|          SA7    A2
00439  M01S00431.comcmtp +++|          BX3    X0          MOVE TABLE
00440  M01S00432.comcmtp +++|          RJ     MVE=
00441  M01S00433.comcmtp +++|          NZ     B3,MTU1
00442  M01S00434.comcmtp +++|
00443  M01S00435.comcmtp +++| MTU      PS                 ENTRY/EXIT
00444  M01S00436.comcmtp +++|          SA1    F.TEND      (X0) = LWA+1 ALL TABLES (L)
00445  M01S00437.comcmtp +++|          SB3    NTAB-1      (B3) = NUMBER OF TABLES - 1
00446  M01S00438.comcmtp +++|          BX0    X1
00447  M01S00439.comcmtp +++|          EQ     MTU1
00448  M01S00440.comcmtp +++|          SPACE  4
00449  M01S00441.comcmtp +++|          BASE   *
00450  M01S00442.comcmtp +++| QUAL$    IF     -DEF,QUAL$
00451  M01S00443.comcmtp +++|          QUAL   *
00452  M01S00444.comcmtp +++| ADW      EQU    /COMCMTP/ADW
00453  M01S00445.comcmtp +++| AMU      EQU    /COMCMTP/AMU
00454  M01S00446.comcmtp +++| ATS      EQU    /COMCMTP/ATS
00455  M01S00447.comcmtp +++| EQS      EQU    /COMCMTP/EQS
00456  M01S00448.comcmtp +++| MES      EQU    /COMCMTP/MES
00457  M01S00449.comcmtp +++| MTD      EQU    /COMCMTP/MTD
00458  M01S00450.comcmtp +++| MTU      EQU    /COMCMTP/MTU
00459  M01S00451.comcmtp +++| QUAL$    ENDIF
00460  M01S00452.comcmtp +++|          ENDX
cdc/nos2.source/opl.opl871/common/comcmtp.txt · Last modified: by 127.0.0.1