User Tools

Site Tools


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

Common COMCMTP

Library Member Format: MODIFY

Source

Seq #  *Modification Id* Act 
----------------------------+
00001  M00S00001.comcmtp +++|          CTEXT  COMCMTP - MANAGED TABLE PROCESSORS.
00002  M00S00002.comcmtp +++|          SPACE  4
00003  M00S00003.comcmtp +++|          IF     -DEF,FTAB,1
00004  M00S00004.comcmtp +++| TABLES   HERE
00005  M00S00005.comcmtp +++|          SPACE  4
00006  M00S00006.comcmtp +++|          IF     -DEF,QUAL$,1
00007  M00S00007.comcmtp +++|          QUAL   COMCMTP
00008  M00S00008.comcmtp +++|          BASE   D
Line S00009 Modification History
M01 (Removed by) 281l803
Seq #  *Modification Id* Act 
----------------------------+
00009  M01S00009.281l803 ---|*         COMMENT COPYRIGHT CONTROL DATA CORP. 1970.
Line S00001 Modification History
M01 (Added by) 281l803
Seq #  *Modification Id* Act 
----------------------------+
00010  M01S00001.281l803 +++|*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992.
00011  M00S00010.comcmtp +++|          SPACE  4
00012  M00S00011.comcmtp +++|***       COMCMTP - MANAGED TABLE PROCESSORS.
00013  M00S00012.comcmtp +++|*         G. R. MANSFIELD.  70/12/20.
00014  M00S00013.comcmtp +++|          SPACE  4
00015  M00S00014.comcmtp +++|***              COMCMTP CONTAINS ROUTINES FOR PROCESSING MANAGED
00016  M00S00015.comcmtp +++|*         TABLES.  MACROS FOR CALLS AND GENERATION ARE CONTAINED
00017  M00S00016.comcmtp +++|*         IN COMCMTM.
00018  M00S00017.comcmtp +++|*
00019  M00S00018.comcmtp +++|*
00020  M00S00019.comcmtp +++|*                THE MANAGED TABLE PROCESSORS ALLOW THE PARTIONING OF
00021  M00S00020.comcmtp +++|*         CENTRAL MEMORY INTO VARIABLE REGIONS (CALLED TABLES).
00022  M00S00021.comcmtp +++|*         THESE TABLES ARE REFERENCED BY POINTERS WHICH INDICATE
00023  M00S00022.comcmtp +++|*         THE FIRST ADDRESS OF THE TABLE AND THE TABLE LENGTH.
00024  M00S00023.comcmtp +++|*         MEMORY IS ALLOCATED TO EACH TABLE AS IT IS REQUIRED AND
00025  M00S00024.comcmtp +++|*         THE USER MAY DELETE SPACE FROM THE TABLES.  THE USER IS
00026  M00S00025.comcmtp +++|*         EXPECTED TO PROVIDE CERTAIN CONSTANTS FOR USE BY THE
00027  M00S00026.comcmtp +++|*         TABLE PROCESSORS.  EACH TABLE IS ALLOWED AT LEAST 1 WORD
00028  M00S00027.comcmtp +++|*         OF EXPANSION SPACE TO ALLOW A DUMMY WORD BETWEEN EACH
00029  M00S00028.comcmtp +++|*         TABLE.  THIS ALLOWS EFFICIENT SEARCH METHODS TO BE USED.
00030  M00S00029.comcmtp +++|*
00031  M00S00030.comcmtp +++|*
00032  M00S00031.comcmtp +++|*
00033  M00S00032.comcmtp +++|*
00034  M00S00033.comcmtp +++|*         *MEML* = LOWEST ADDRESS OF MANAGED MEMORY.
00035  M00S00034.comcmtp +++|*         *TOV*  = ADDRESS OF TABLE OVERFLOW PROCESSOR.
00036  M00S00035.comcmtp +++|*
00037  M00S00036.comcmtp +++|*         DATA PROVIDED BY *COMCMTM*.
00038  M00S00037.comcmtp +++|*
00039  M00S00038.comcmtp +++|*         *NTAB* = NUMBER OF MANAGED TABLES.
00040  M00S00039.comcmtp +++|*         *FTAB* = START OF TABLE ADDRESSES.
00041  M00S00040.comcmtp +++|*         *LTAB* = START OF TABLE LENGTHS.
00042  M00S00041.comcmtp +++|*         *F.TNAM* = ADDRESS POINTER FOR TABLE *TNAM*.
00043  M00S00042.comcmtp +++|*         *L.TNAM* = LENGTH POINTER FOR TABLE *TNAM*.
00044  M00S00043.comcmtp +++|*         *C.TNAM* = WORDS/ENTRY FOR SEARCH ROUTINES.
00045  M00S00044.comcmtp +++|*
00046  M00S00045.comcmtp +++|*         DATA DYNAMICALLY CHANGABLE.
00047  M00S00046.comcmtp +++|*
00048  M00S00047.comcmtp +++|*         (TN) = NUMBER OF MANAGED TABLES.  SET TO *NTAB* BY
Line S00048 Modification History
M01 (Removed by) cmtp1
Seq #  *Modification Id* Act 
----------------------------+
00049  M01S00048.cmtp1   ---|*                *COMCMTM*.  VALUE MUST BE ;*NTAB* DURING USE.
Line S00001 Modification History
M01 (Added by) cmtp1
Seq #  *Modification Id* Act 
----------------------------+
00050  M01S00001.cmtp1   +++|*                *COMCMTM*.  VALUE MUST BE .LE. *NTAB* DURING USE.
00051  M00S00049.comcmtp +++|*         (TO) = TABLE OVERFLOW PROCESSOR.  SET TO *TOV* BY
00052  M00S00050.comcmtp +++|*                *COMCMTM*.
00053  M00S00051.comcmtp +++|*         (LM) = LOW MEMORY LIMIT.  VALUE SET TO *MEML* BY *COMCMTM*.
00054  M00S00052.comcmtp +++|*                IF THIS VALUE IS RAISED, *MTU* SHOULD BE CALLED
00055  M00S00053.comcmtp +++|*                TO ALLOW ROOM FOR CHANGE.
00056  M00S00054.comcmtp +++|*         (F.TEND) = HIGH MEMORY LIMIT.  VALUE MUST BE INITIALIZED
00057  M00S00055.comcmtp +++|*                BY USER.  IF THIS VALUE IS LOWERED, *MTD* SHOULD
00058  M00S00056.comcmtp +++|*                BE CALLED TO ALLOW ROOM FOR CHANGE.
00059  M00S00057.comcmtp +++| ADW      SPACE  4
00060  M00S00058.comcmtp +++|***       ADW - ADD WORD TO TABLE.
00061  M00S00059.comcmtp +++|*
00062  M00S00060.comcmtp +++|*         ENTRY  (A0) = TABLE NUMBER.
00063  M00S00061.comcmtp +++|*                (X1) = WORD.
00064  M00S00062.comcmtp +++|*
00065  M00S00063.comcmtp +++|*         EXIT   (X1) = WORD.
00066  M00S00064.comcmtp +++|*                (X6) = WORD.
00067  M00S00065.comcmtp +++|*                (A6) = ADDRESS OF WORD.
00068  M00S00066.comcmtp +++|*                (X2) = FWA TABLE.
00069  M00S00067.comcmtp +++|*                (X3) = LENGTH OF TABLE.
00070  M00S00068.comcmtp +++|*
00071  M00S00069.comcmtp +++|*         USES   X - 1, 2, 3, 4, 6, 7.
00072  M00S00070.comcmtp +++|*                B - NONE.
00073  M00S00071.comcmtp +++|*                A - 1,2,3,4,6,7.
00074  M00S00072.comcmtp +++|*
00075  M00S00073.comcmtp +++|*         CALLS  ATS.
00076  M00S00074.comcmtp +++|
00077  M00S00075.comcmtp +++|
00078  M00S00076.comcmtp +++| ADW1     BX6    X1          PLACE ENTRY IN TABLE
00079  M00S00077.comcmtp +++|          IX7    X2+X3
00080  M00S00078.comcmtp +++|          SA6    X7
00081  M00S00079.comcmtp +++|          SX3    X3+B1
00082  M00S00080.comcmtp +++|
00083  M00S00081.comcmtp +++| ADW      PS                 ENTRY/EXIT
00084  M00S00082.comcmtp +++|          SA2    FTAB+A0     SET TABLE DIFFERENTIAL
00085  M00S00083.comcmtp +++|          SA4    A2+B1
00086  M00S00084.comcmtp +++|          IX7    X4-X2
00087  M00S00085.comcmtp +++|          SA3    LTAB+A0     CURRENT LENGTH
00088  M00S00086.comcmtp +++|          SX6    X3+B1       ADD NEW ENTRY
00089  M00S00087.comcmtp +++|          IX7    X6-X7
00090  M00S00088.comcmtp +++|          SA6    A3          UPDATE LENGTH
00091  M00S00089.comcmtp +++|          NG     X7,ADW1     IF ROOM FOR ENTRY + 1 WORD
00092  M00S00090.comcmtp +++|          BX6    X1          SAVE ENTRY
00093  M00S00091.comcmtp +++|          LX7    X3          RESTORE LENGTH
00094  M00S00092.comcmtp +++|          SA6    ADWA
00095  M00S00093.comcmtp +++|          SA7    A3
00096  M00S00094.comcmtp +++|          ALLOC  A0,1        ALLOCATE 1 WORD
00097  M00S00095.comcmtp +++|          SA1    ADWA        RESTORE ENTRY
00098  M00S00096.comcmtp +++|          SX3    X3-1        SET ORIGINAL LENGTH
00099  M00S00097.comcmtp +++|          EQ     ADW1        PROCESS ENTRY
00100  M00S00098.comcmtp +++|
00101  M00S00099.comcmtp +++| ADWA     CON    0
00102  M00S00100.comcmtp +++| AMU      SPACE  4
00103  M00S00101.comcmtp +++|***       AMU - ACCUMULATE MEMORY USED.
00104  M00S00102.comcmtp +++|*
00105  M00S00103.comcmtp +++|*         ENTRY  NONE.
00106  M00S00104.comcmtp +++|*
00107  M00S00105.comcmtp +++|*         EXIT   MU = MAX(MU,CURRENT ASSIGNED LENGTH)
00108  M00S00106.comcmtp +++|*
00109  M00S00107.comcmtp +++|*         USES   X - 1, 2, 3, 6.
00110  M00S00108.comcmtp +++|*                B - 2.
00111  M00S00109.comcmtp +++|*                A - 1, 2, 6.
00112  M00S00110.comcmtp +++|*
00113  M00S00111.comcmtp +++|*         CALLS  NONE.
00114  M00S00112.comcmtp +++|
00115  M00S00113.comcmtp +++|
00116  M00S00114.comcmtp +++| AMU1     IX6    X6+X2       ACCUMULATE LENGTH
00117  M00S00115.comcmtp +++|          SB2    B2-B1
00118  M00S00116.comcmtp +++|          SA2    A2+B1       NEXT TABLE
00119  M00S00117.comcmtp +++|          NE     B2,B1,AMU1  LOOP FOR ALL TABLES
00120  M00S00118.comcmtp +++|          SA1    MU          SET MAX LENGTH
00121  M00S00119.comcmtp +++|          IX3    X6-X1
00122  M00S00120.comcmtp +++|          NG     X3,AMU
00123  M00S00121.comcmtp +++|          SA6    A1
00124  M00S00122.comcmtp +++|
00125  M00S00123.comcmtp +++| AMU      PS                 ENTRY/EXIT
00126  M00S00124.comcmtp +++|          SA1    TN          (B2) = NUMBER OF TABLES
00127  M00S00125.comcmtp +++|          MX6    0           CLEAR ACCUMULATION
00128  M00S00126.comcmtp +++|          SB2    X1
00129  M00S00127.comcmtp +++|          SA2    LTAB        FIRST TABLE
00130  M00S00128.comcmtp +++|          EQ     AMU1
00131  M00S00129.comcmtp +++| ATS      SPACE  4
00132  M00S00130.comcmtp +++|***       ATS - ALLOCATE TABLE SPACE.
00133  M00S00131.comcmtp +++|*
00134  M00S00132.comcmtp +++|*         ENTRY  (A0) = TABLE INDEX.
00135  M00S00133.comcmtp +++|*                (X1) = CHANGE (+ OR -) TO TABLE SIZE.
00136  M00S00134.comcmtp +++|*
00137  M00S00135.comcmtp +++|*         EXIT   (X1) = CHANGE.
00138  M00S00136.comcmtp +++|*                (X2) = FWA OF TABLE.
00139  M00S00137.comcmtp +++|*                (X3) = NEW LENGTH OF TABLE.
Line S00138 Modification History
M01 (Removed by) cmtp1
Seq #  *Modification Id* Act 
----------------------------+
00140  M01S00138.cmtp1   ---|*                (X7) < 0 IF TABLES MOVED.
Line S00002 Modification History
M01 (Added by) cmtp1
Seq #  *Modification Id* Act 
----------------------------+
00141  M01S00002.cmtp1   +++|*                (X7) .LT. 0 IF TABLES MOVED.
00142  M00S00139.comcmtp +++|*
00143  M00S00140.comcmtp +++|*         IF TABLES NOT MOVED -
00144  M00S00141.comcmtp +++|*         USES   X - 2, 3, 4, 6, 7.
00145  M00S00142.comcmtp +++|*                B - NONE.
00146  M00S00143.comcmtp +++|*                A - 2, 3, 4, 6.
00147  M00S00144.comcmtp +++|*
00148  M00S00145.comcmtp +++|*         IF TABLES MOVED -
00149  M00S00146.comcmtp +++|*         USES   X - 0, 1, 2, 3, 4, 5, 6, 7.
00150  M00S00147.comcmtp +++|*                B - 2, 3, 4, 5, 6, 7.
00151  M00S00148.comcmtp +++|*                A - 1, 2, 3, 4, 6, 7.
00152  M00S00149.comcmtp +++|*
00153  M00S00150.comcmtp +++|*         RESTORES X - 0, 1, 5.
00154  M00S00151.comcmtp +++|*                  B - 2, 3, 4, 5, 6, 7. (EXCEPT -0)
00155  M00S00152.comcmtp +++|*
00156  M00S00153.comcmtp +++|*         CALLS  AMU, MVE, TOV.
00157  M00S00154.comcmtp +++|*
00158  M00S00155.comcmtp +++|*         ENTRY CONDITIONS FOR USER ROUTINE *TOV*.
00159  M00S00156.comcmtp +++|*
00160  M00S00157.comcmtp +++|*                (B1) = 1.
00161  M00S00158.comcmtp +++|*                (B5) = COMPLEMENT OF NUMBER OF WORDS REQUIRED.
00162  M00S00159.comcmtp +++|*                (B6) = RETURN ADDRESS TO CONTINUE PROCESSING, I.E.,
00163  M00S00160.comcmtp +++|*                       EXIT FROM *TOV* VIA  * JP B6 *  INSTRUCTION.
00164  M00S00161.comcmtp +++|*
Line S00162 Modification History
M01 (Removed by) cmtp1
Seq #  *Modification Id* Act 
----------------------------+
00165  M01S00162.cmtp1   ---|*                THE LOCATION *TOV* MUST CONTAIN EXECUTABLE CODE.  *TOV*
00166  M01S00163.cmtp1   ---|*                IS ENTERED VIA A *JP*, NOT VIA *RJ*.
Line S00003 Modification History
M01 (Added by) cmtp1
Seq #  *Modification Id* Act 
----------------------------+
00167  M01S00003.cmtp1   +++|*                THE LOCATION *TOV* MUST CONTAIN EXECUTABLE CODE.
00168  M01S00004.cmtp1   +++|*                *TOV* IS ENTERED VIA A *JP*, NOT VIA *RJ*.
00169  M00S00164.comcmtp +++|*
00170  M00S00165.comcmtp +++|*         EXIT CONDITIONS FOR *TOV*.
00171  M00S00166.comcmtp +++|*
00172  M00S00167.comcmtp +++|*                ONLY B1 MUST BE PRESERVED.
00173  M00S00168.comcmtp +++|*
00174  M00S00169.comcmtp +++|*                A POINTER WORD MUST BE INCREMENTED BY THE NUMBER OF
Line S00170 Modification History
M01 (Removed by) cmtp1
Seq #  *Modification Id* Act 
----------------------------+
00175  M01S00170.cmtp1   ---|*                WORDS NEWLY AVAILABLE.  IF *NT* HAS NOT BEEN ALTERED
Line S00005 Modification History
M01 (Added by) cmtp1
Seq #  *Modification Id* Act 
----------------------------+
00176  M01S00005.cmtp1   +++|*                WORDS NEWLY AVAILABLE.  IF *TN* HAS NOT BEEN ALTERED
00177  M00S00171.comcmtp +++|*                DURING EXECUTION, THE ADDRESS OF THE POINTER WORD IS
00178  M00S00172.comcmtp +++|*                *F.TEND*.
Line S00173 Modification History
M01 (Removed by) cmtp1
Seq #  *Modification Id* Act 
----------------------------+
00179  M01S00173.cmtp1   ---|*                IF *NT* HAS CHANGED, THE ADDRESS OF THE POINTER WORD
00180  M01S00174.cmtp1   ---|*                = FTAB-1 PLUS THE CONTENTS OF *NT*.
Line S00006 Modification History
M01 (Added by) cmtp1
Seq #  *Modification Id* Act 
----------------------------+
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  M00S00175.comcmtp +++|
00184  M00S00176.comcmtp +++|
00185  M00S00177.comcmtp +++| ATS      PS                 ENTRY/EXIT
00186  M00S00178.comcmtp +++| ATS1     SA2    FTAB+A0     CURRENT FWA
00187  M00S00179.comcmtp +++|          SA3    LTAB+A0     CURRENT LENGTH
00188  M00S00180.comcmtp +++|          SA4    A2+B1       NEXT TABLE FWA
00189  M00S00181.comcmtp +++|          IX6    X1+X3       NEW LENGTH
00190  M00S00182.comcmtp +++|          IX7    X4-X2       ROOM BETWEEN TABLES
00191  M00S00183.comcmtp +++|          SA6    A3          SET NEW LENGTH
00192  M00S00184.comcmtp +++|          IX7    X6-X7
00193  M00S00185.comcmtp +++|          BX3    X6
00194  M00S00186.comcmtp +++|          NG     X7,ATS      RETURN IF ROOM FOR CHANGE + 1 WORD
00195  M00S00187.comcmtp +++|          IX7    X6-X1       SET PREVIOUS LENGTH
00196  M00S00188.comcmtp +++|
00197  M00S00189.comcmtp +++|*         INITIALIZE FOR TABLE MOVE.
00198  M00S00190.comcmtp +++|
00199  M00S00191.comcmtp +++|          BX6    X0          SAVE (X0)
00200  M00S00192.comcmtp +++|          SA7    A3
00201  M00S00193.comcmtp +++|          SA6    ATSB
00202  M00S00194.comcmtp +++|          BX7    X1          SAVE (X1)
00203  M00S00195.comcmtp +++|          LX6    X5          SAVE (X5)
00204  M00S00196.comcmtp +++|          SA7    A6+B1
00205  M00S00197.comcmtp +++|          SA6    A7+B1
00206  M00S00198.comcmtp +++|          SX7    B2          SAVE B REGISTERS
00207  M00S00199.comcmtp +++|          SX6    B3
00208  M00S00200.comcmtp +++|          SA7    A6+B1
00209  M00S00201.comcmtp +++|          SA6    A7+B1
00210  M00S00202.comcmtp +++|          SX7    B4
00211  M00S00203.comcmtp +++|          SX6    B5
00212  M00S00204.comcmtp +++|          SA7    A6+B1
00213  M00S00205.comcmtp +++|          SA6    A7+B1
00214  M00S00206.comcmtp +++|          SX7    B6
00215  M00S00207.comcmtp +++|          SX6    B7
00216  M00S00208.comcmtp +++|          SA7    A6+1
00217  M00S00209.comcmtp +++|          SA6    A7+1
00218  M00S00210.comcmtp +++|
00219  M00S00211.comcmtp +++|*         COMPUTE REMAINING TABLE SPACE.
00220  M00S00212.comcmtp +++|
00221  M00S00213.comcmtp +++| ATS1.1   SA2    TN          (B2) = NUMBER OF TABLES
00222  M00S00214.comcmtp +++|          SB2    X2
00223  M00S00215.comcmtp +++|          IX4    X1+X2       LENGTH = NUMBER OF TABLES + INCREASE
00224  M00S00216.comcmtp +++|          SB3    B2-1
00225  M00S00217.comcmtp +++| ATS2     SB3    B3-B1       LENGTH = LENGTH + TABLE LENGTH
00226  M00S00218.comcmtp +++|          SA3    LTAB+B3
00227  M00S00219.comcmtp +++|          IX4    X4+X3
00228  M00S00220.comcmtp +++|          NZ     B3,ATS2     LOOP FOR ALL TABLES
00229  M00S00221.comcmtp +++|          SA2    LM          SET AVAILABLE LENGTH
00230  M00S00222.comcmtp +++|          SA3    FTAB-1+B2
00231  M00S00223.comcmtp +++|          IX6    X3-X2
00232  M00S00224.comcmtp +++|          SB4    X4          (B4) = TOTAL ASSIGNED LENGTH
00233  M00S00225.comcmtp +++|          IX7    X6-X4
00234  M00S00226.comcmtp +++|          SB5    X7          (B5) = REMAINING SPACE
00235  M00S00227.comcmtp +++|          NG     X7,ATS6     IF NO REMAINING SPACE
00236  M00S00228.comcmtp +++|          RJ     MTD         MOVE TABLES DOWN
00237  M00S00229.comcmtp +++|          SA1    ATSB+1      INCREMENT SIZE OF REQUESTED TABLE
00238  M00S00230.comcmtp +++|          SA2    LTAB+A0
00239  M00S00231.comcmtp +++|          IX6    X2+X1
00240  M00S00232.comcmtp +++|          SA6    A2
00241  M00S00233.comcmtp +++|
00242  M00S00234.comcmtp +++|*         REALLOCATE TABLES.
00243  M00S00235.comcmtp +++|*         ALLOCATE INTERSPACE.  (LA/2N) + ((TL*LA)/2) + 1
00244  M00S00236.comcmtp +++|
00245  M00S00237.comcmtp +++|          SA1    FTAB-1+B2   (X0) = LWA+1 LAST TABLE
00246  M00S00238.comcmtp +++|          SB6    B2-B1
00247  M00S00239.comcmtp +++|          BX0    X1
00248  M00S00240.comcmtp +++| ATS3     LE     B6,B1,ATS5  IF TABLE RELOCATION COMPLETE
00249  M00S00241.comcmtp +++|          SB6    B6-B1       I = I-1
00250  M00S00242.comcmtp +++|          SX4    B5          LA (LENGTH AVAILABLE)
00251  M00S00243.comcmtp +++|          SA2    FTAB+B6     FWA(I)
00252  M00S00244.comcmtp +++|          SA1    LTAB+B6     TL (LENGTH OF TABLE)
00253  M00S00245.comcmtp +++|          SX3    B2-B1       N  (NUMBER OF TABLES)
00254  M00S00246.comcmtp +++|          AX5    X4,B1       LA/2
00255  M00S00247.comcmtp +++|          IX6    X4/X3       L1 = LA/N
00256  M00S00248.comcmtp +++|          ZR     B4,ATS4     IF NO TABLES ASSIGNED, L = L1
00257  M00S00249.comcmtp +++|          SX3    B4          AL (TOTAL ASSIGNED LENGTH)
00258  M00S00250.comcmtp +++|          IX7    X5*X1       (LA/2)*TL
00259  M00S00251.comcmtp +++|          AX6    1           L1 = LA/2N
00260  M00S00252.comcmtp +++|          IX7    X7/X3       L2 = (TL*LA)/2
00261  M00S00253.comcmtp +++|          IX6    X6+X7       L = L1+L2
00262  M00S00254.comcmtp +++| ATS4     SX6    X6+B1       L = L+1
00263  M00S00255.comcmtp +++|          IX4    X0-X6       FWA(I+1)-L
00264  M00S00256.comcmtp +++|          UX1    X1          RESET LENGTH
00265  M00S00257.comcmtp +++|          IX7    X4-X1       FWA(I) = FWA(I+1)-L-TL
00266  M00S00258.comcmtp +++|          BX3    X7          DESTINATION = FWA(I)
00267  M00S00259.comcmtp +++|          SA7    A2
00268  M00S00260.comcmtp +++|          LX0    X7          FWA(I+1) = FWA(I)
00269  M00S00261.comcmtp +++|          BX4    X2-X3       CHECK MOVE DIFFERENTIAL
00270  M00S00262.comcmtp +++|          ZR     X4,ATS3     IF NO MOVE REQUIRED
00271  M00S00263.comcmtp +++|          RJ     MVE=        MOVE TABLE
00272  M00S00264.comcmtp +++|          EQ     ATS3        CONTINUE RELOCATING TABLES
00273  M00S00265.comcmtp +++|
00274  M00S00266.comcmtp +++| ATS5     RJ     AMU         ACCUMULATE MEMORY USED
00275  M00S00267.comcmtp +++|
00276  M00S00268.comcmtp +++|*         RESTORE REGISTERS.
00277  M00S00269.comcmtp +++|
00278  M00S00270.comcmtp +++|          SA1    ATSA        COUNT MOVES
00279  M00S00271.comcmtp +++|          SX6    X1+B1
00280  M00S00272.comcmtp +++|          SA6    A1
00281  M00S00273.comcmtp +++|          SA2    ATSB        RESTORE (X0)
00282  M00S00274.comcmtp +++|          SA1    A2+B1       RESTORE (X1)
00283  M00S00275.comcmtp +++|          BX0    X2
00284  M00S00276.comcmtp +++|          SA3    A1+B1       RESTORE (X5)
00285  M00S00277.comcmtp +++|          SA2    A3+B1       RESTORE B REGISTERS
00286  M00S00278.comcmtp +++|          BX5    X3
00287  M00S00279.comcmtp +++|          SB2    X2
00288  M00S00280.comcmtp +++|          SA3    A2+B1
00289  M00S00281.comcmtp +++|          SB3    X3
00290  M00S00282.comcmtp +++|          SA4    A3+B1
00291  M00S00283.comcmtp +++|          SB4    X4
00292  M00S00284.comcmtp +++|          SA2    A4+B1
00293  M00S00285.comcmtp +++|          SB5    X2
00294  M00S00286.comcmtp +++|          SA3    A2+B1
00295  M00S00287.comcmtp +++|          SB6    X3
00296  M00S00288.comcmtp +++|          SA4    A3+B1
00297  M00S00289.comcmtp +++|          SB7    X4
00298  M00S00290.comcmtp +++|          SA2    FTAB+A0     SET TABLE FWA
00299  M00S00291.comcmtp +++|          SA3    LTAB+A0     SET TABLE LENGTH
00300  M00S00292.comcmtp +++|          SX7    -B1         FLAG TABLES MOVED
00301  M00S00293.comcmtp +++|          EQ     ATS         RETURN
00302  M00S00294.comcmtp +++|
00303  M00S00295.comcmtp +++| ATS6     SA3    TO          PROCESS TABLE OVERFLOW
00304  M00S00296.comcmtp +++|          SB2    X3
00305  M00S00297.comcmtp +++|          SX6    A0          PRESERVE (A0) FROM USER DEPREDATIONS
00306  M00S00298.comcmtp +++|          SB6    ATS7        PASS RETURN ADDRESS TO USER
00307  M00S00299.comcmtp +++|          SA6    ATSC
00308  M00S00300.comcmtp +++|          JP     B2
00309  M00S00301.comcmtp +++|
00310  M00S00302.comcmtp +++|*         RETURN FROM USER ROUTINE *TOV*.
00311  M00S00303.comcmtp +++|
00312  M00S00304.comcmtp +++| ATS7     SA1    ATSC        RESTORE (A0), (X1)
00313  M00S00305.comcmtp +++|          SA0    X1+
00314  M00S00306.comcmtp +++|          SA1    ATSB+1
00315  M00S00307.comcmtp +++|          JP     ATS1.1      RE-COMPUTE WITH NEW MEMORY
00316  M00S00308.comcmtp +++|
00317  M00S00309.comcmtp +++| ATSA     CON    0           COUNT OF TABLE MOVES
00318  M00S00310.comcmtp +++|
00319  M00S00311.comcmtp +++| ATSB     CON    0,0,0       (X0, X1, X5) SAVE
00320  M00S00312.comcmtp +++|          CON    0,0,0,0,0,0 (B2 - B7) SAVE
00321  M00S00313.comcmtp +++| ATSC     CON    0           (A0) SAVE IF TABLE OVERFLOW
00322  M00S00314.comcmtp +++| EQS      SPACE  4
00323  M00S00315.comcmtp +++|***       EQS -  EQUALITY SEARCH TABLE.
00324  M00S00316.comcmtp +++|*
00325  M00S00317.comcmtp +++|*         ENTRY  (X6) = ENTRY FOR SEARCH.
00326  M00S00318.comcmtp +++|*                (B7) = WORD COUNT/ENTRY.
00327  M00S00319.comcmtp +++|*                (A0) = TABLE NUMBER.
00328  M00S00320.comcmtp +++|*
00329  M00S00321.comcmtp +++|*         EXIT   (X2) = ENTRY FOUND.
00330  M00S00322.comcmtp +++|*
00331  M00S00323.comcmtp +++|*         USES   X - 1,2,3,7.
00332  M00S00324.comcmtp +++|*                B - NONE.
00333  M00S00325.comcmtp +++|*                A - 1,2,6.
00334  M00S00326.comcmtp +++|*
00335  M00S00327.comcmtp +++|*         CALLS  NONE.
00336  M00S00328.comcmtp +++|
00337  M00S00329.comcmtp +++|
00338  M00S00330.comcmtp +++| EQS      PS                 ENTRY/EXIT
00339  M00S00331.comcmtp +++|          SA1    FTAB+A0     SET TABLE PARAMETERS
00340  M00S00332.comcmtp +++|          SA2    LTAB+A0
00341  M00S00333.comcmtp +++|          IX3    X1+X2       SET SEARCH KEY IN LWA+1
00342  M00S00334.comcmtp +++|          SA6    X3
00343  M00S00335.comcmtp +++|          NO
00344  M00S00336.comcmtp +++|          SA1    X1          FIRST ENTRY
00345  M00S00337.comcmtp +++| +        BX2    X1-X6       COMPARE ENTRIES
00346  M00S00338.comcmtp +++|          SA1    A1+B7       NEXT ENTRY
00347  M00S00339.comcmtp +++|          NZ     X2,*        LOOP TO MATCH
00348  M00S00340.comcmtp +++|          SX7    A1-B7       CHECK SEARCH
00349  M00S00341.comcmtp +++|          BX2    X7-X3
00350  M00S00342.comcmtp +++|          ZR     X2,EQS      RETURN IF NOT FOUND
00351  M00S00343.comcmtp +++|          SA2    A1-B7       RETURN ENTRY
00352  M00S00344.comcmtp +++|          EQ     EQS
00353  M00S00345.comcmtp +++| MES      SPACE  4
00354  M00S00346.comcmtp +++|***       MES - MASKED EQUALITY SEARCH TABLE.
00355  M00S00347.comcmtp +++|*
00356  M00S00348.comcmtp +++|*         ENTRY  (X6) = ENTRY FOR SEARCH.
00357  M00S00349.comcmtp +++|*                (X0) = MASK.
00358  M00S00350.comcmtp +++|*                (B7) = WORD COUNT/ENTRY.
00359  M00S00351.comcmtp +++|*                (A0) = TABLE NUMBER.
00360  M00S00352.comcmtp +++|*
00361  M00S00353.comcmtp +++|*         EXIT   (X2) = ENTRY FOUND.
00362  M00S00354.comcmtp +++|*
00363  M00S00355.comcmtp +++|*         USES   X - 1,2,3,4,7.
00364  M00S00356.comcmtp +++|*                B - NONE.
00365  M00S00357.comcmtp +++|*                A - 1,2,6.
00366  M00S00358.comcmtp +++|*
00367  M00S00359.comcmtp +++|*         CALLS  NONE.
00368  M00S00360.comcmtp +++|
00369  M00S00361.comcmtp +++|
00370  M00S00362.comcmtp +++| MES1     BX4    X0*X2
00371  M00S00363.comcmtp +++|          SA1    A1+B7       NEXT ENTRY
00372  M00S00364.comcmtp +++|          BX2    X6-X1       COMPARE ENTRIES
00373  M00S00365.comcmtp +++|          NZ     X4,MES1     LOOP TO MATCH
00374  M00S00366.comcmtp +++|          SX7    A1-B7       CHECK SEARCH
00375  M00S00367.comcmtp +++|          BX2    X7-X3
00376  M00S00368.comcmtp +++|          ZR     X2,MES      RETURN IF NOT FOUND
00377  M00S00369.comcmtp +++|          SA2    X7+         RETURN ENTRY
00378  M00S00370.comcmtp +++|
00379  M00S00371.comcmtp +++| MES      PS                 ENTRY/EXIT
00380  M00S00372.comcmtp +++|          SA1    FTAB+A0     SET TABLE PARAMETERS
00381  M00S00373.comcmtp +++|          SA2    LTAB+A0
00382  M00S00374.comcmtp +++|          IX3    X1+X2       SET SEARCH KEY IN LWA+1
00383  M00S00375.comcmtp +++|          SA6    X3
00384  M00S00376.comcmtp +++|          SA1    X1          FIRST ENTRY
00385  M00S00377.comcmtp +++|          BX2    X6-X1
00386  M00S00378.comcmtp +++|          EQ     MES1
00387  M00S00379.comcmtp +++| MTD      SPACE  4
00388  M00S00380.comcmtp +++|***       MTD - MOVE TABLES DOWN.
00389  M00S00381.comcmtp +++|*
00390  M00S00382.comcmtp +++|*         ENTRY  NONE.
00391  M00S00383.comcmtp +++|*
00392  M00S00384.comcmtp +++|*         EXIT   (B2) = NUMBER OF TABLES.
00393  M00S00385.comcmtp +++|*
00394  M00S00386.comcmtp +++|*         USES   X - 0, 1, 2, 3, 4, 7.
00395  M00S00387.comcmtp +++|*                B - 2, 3.
00396  M00S00388.comcmtp +++|*                A - 1,2,3,7.
00397  M00S00389.comcmtp +++|*
00398  M00S00390.comcmtp +++|*         CALLS  MVE=.
00399  M00S00391.comcmtp +++|
00400  M00S00392.comcmtp +++|
00401  M00S00393.comcmtp +++| MTD      PS                 ENTRY/EXIT
00402  M00S00394.comcmtp +++|          SA1    LM          LOW MEMORY LIMIT
00403  M00S00395.comcmtp +++|          SA2    TN          (B2) = NUMBER OF TABLES
00404  M00S00396.comcmtp +++|          BX0    X1
00405  M00S00397.comcmtp +++|          SB2    X2
00406  M00S00398.comcmtp +++|          SB3    1
00407  M00S00399.comcmtp +++| MTD1     SA2    FTAB-1+B3   ORIGIN = PREVIOUS FWA
00408  M00S00400.comcmtp +++|          SA3    LTAB-1+B3   WORD COUNT = LENGTH + 1
00409  M00S00401.comcmtp +++|          BX4    X2-X0       MOVE DIFFERENTIAL
00410  M00S00402.comcmtp +++|          SX1    X3+B1
00411  M00S00403.comcmtp +++|          SX7    X0          SET NEW FWA
00412  M00S00404.comcmtp +++|          IX0    X0+X1       NEXT FWA
00413  M00S00405.comcmtp +++|          SB3    B3+B1       ADVANCE TABLE NUMBER
00414  M00S00406.comcmtp +++|          ZR     X4,MTD2     IF NO MOVE REQUIRED
00415  M00S00407.comcmtp +++|          SA7    A2
00416  M00S00408.comcmtp +++|          MOVE   X1,X2,X7    MOVE MEMORY BLOCK
00417  M00S00409.comcmtp +++| MTD2     LT     B3,B2,MTD1  LOOP TO LAST TABLE
00418  M00S00410.comcmtp +++|          EQ     MTD         RETURN
00419  M00S00411.comcmtp +++| MTU      SPACE  4
00420  M00S00412.comcmtp +++|***       MTU - MOVE TABLES UP.
00421  M00S00413.comcmtp +++|*
00422  M00S00414.comcmtp +++|*         ENTRY  NONE.
00423  M00S00415.comcmtp +++|*
00424  M00S00416.comcmtp +++|*         EXIT   NONE.
00425  M00S00417.comcmtp +++|*
00426  M00S00418.comcmtp +++|*         USES   X - 0, 1, 2, 3, 7.
00427  M00S00419.comcmtp +++|*                B - 3.
00428  M00S00420.comcmtp +++|*                A - 1, 2, 7.
00429  M00S00421.comcmtp +++|*
00430  M00S00422.comcmtp +++|*         CALLS  MVE.
00431  M00S00423.comcmtp +++|
00432  M00S00424.comcmtp +++|
00433  M00S00425.comcmtp +++| MTU1     SB3    B3-B1       DECREMENT TABLE COUNT
00434  M00S00426.comcmtp +++|          SA2    FTAB+B3
00435  M00S00427.comcmtp +++|          SA1    LTAB+B3
00436  M00S00428.comcmtp +++|          IX7    X0-X1       NEW FWA = L - LENGTH
00437  M00S00429.comcmtp +++|          LX0    X7          L = NEW FWA
00438  M00S00430.comcmtp +++|          SA7    A2
00439  M00S00431.comcmtp +++|          BX3    X0          MOVE TABLE
00440  M00S00432.comcmtp +++|          RJ     MVE=
00441  M00S00433.comcmtp +++|          NZ     B3,MTU1
00442  M00S00434.comcmtp +++|
00443  M00S00435.comcmtp +++| MTU      PS                 ENTRY/EXIT
00444  M00S00436.comcmtp +++|          SA1    F.TEND      (X0) = LWA+1 ALL TABLES (L)
00445  M00S00437.comcmtp +++|          SB3    NTAB-1      (B3) = NUMBER OF TABLES - 1
00446  M00S00438.comcmtp +++|          BX0    X1
00447  M00S00439.comcmtp +++|          EQ     MTU1
00448  M00S00440.comcmtp +++|          SPACE  4
00449  M00S00441.comcmtp +++|          BASE   *
00450  M00S00442.comcmtp +++| QUAL$    IF     -DEF,QUAL$
00451  M00S00443.comcmtp +++|          QUAL   *
00452  M00S00444.comcmtp +++| ADW      EQU    /COMCMTP/ADW
00453  M00S00445.comcmtp +++| AMU      EQU    /COMCMTP/AMU
00454  M00S00446.comcmtp +++| ATS      EQU    /COMCMTP/ATS
00455  M00S00447.comcmtp +++| EQS      EQU    /COMCMTP/EQS
00456  M00S00448.comcmtp +++| MES      EQU    /COMCMTP/MES
00457  M00S00449.comcmtp +++| MTD      EQU    /COMCMTP/MTD
00458  M00S00450.comcmtp +++| MTU      EQU    /COMCMTP/MTU
00459  M00S00451.comcmtp +++| QUAL$    ENDIF
00460  M00S00452.comcmtp +++|          ENDX
cdc/nos2.source/opl.opl871/common/comcmtp.txt ยท Last modified: by 127.0.0.1