Common COMCMVE

Library Member Format: MODIFY

Source

Seq #  *Modification Id* Act 
----------------------------+
00001  M00S00001.comcmve +++|          CTEXT  COMCMVE - MOVE BLOCK OF DATA.
00002  M00S00002.comcmve +++| MVE      SPACE  4
00003  M00S00003.comcmve +++|          IF     -DEF,QUAL$,1
00004  M00S00004.comcmve +++|          QUAL   COMCMVE
00005  M00S00005.comcmve +++|          BASE   D
Line S00006 Modification History
M01 (Removed by) 281l803
Seq #  *Modification Id* Act 
----------------------------+
00006  M01S00006.281l803 ---|*         COMMENT COPYRIGHT CONTROL DATA CORP. 1970.
Line S00001 Modification History
M01 (Added by) 281l803
Seq #  *Modification Id* Act 
----------------------------+
00007  M01S00001.281l803 +++|*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992.
00008  M00S00007.comcmve +++| MVE      SPACE  4
00009  M00S00008.comcmve +++|***       MVE - MOVE BLOCK OF DATA.
00010  M00S00009.comcmve +++|*         G. R. MANSFIELD.   70/10/09.
00011  M00S00010.comcmve +++|*         R. E. TATE.        73/11/04.
00012  M00S00011.comcmve +++| MVE      SPACE  4
00013  M00S00012.comcmve +++|***              MVE MOVES A BLOCK OF DATA.
00014  M00S00013.comcmve +++|*
00015  M00S00014.comcmve +++|*         NOTE-  UPWARD MOVE MEANS TOWARD RA.
Line S00001 Modification History
M01 (Added by) ns2340
Seq #  *Modification Id* Act 
----------------------------+
00016  M01S00001.ns2340  +++|*
00017  M01S00002.ns2340  +++|*         A *MOVE* REQUEST MAY ACCESS DATA FROM BEYOND THE END OF THE
00018  M01S00003.ns2340  +++|*         BUFFER, THUS CAUSING AN ABORT IF THE LAST WORD ADDRESS OF
00019  M01S00004.ns2340  +++|*         THE SOURCE BUFFER IS WITHIN 2 WORDS OF THE PROGRAM-S FIELD
00020  M01S00005.ns2340  +++|*         LENGTH.
00021  M00S00015.comcmve +++|*
00022  M00S00016.comcmve +++|*         ENTRY  (X1) = WORD COUNT.
00023  M00S00017.comcmve +++|*                (X2) = SOURCE ADDRESS.
00024  M00S00018.comcmve +++|*                (X3) = DESTINATION ADDRESS.
00025  M00S00019.comcmve +++|*
00026  M00S00020.comcmve +++|*         EXIT   (B1) = 1.
00027  M00S00021.comcmve +++|*
00028  M00S00022.comcmve +++|*         USES   X - 1, 2, 3, 4, 6, 7.
00029  M00S00023.comcmve +++|*                B - 7.
00030  M00S00024.comcmve +++|*                A - 2, 4, 6, 7.
00031  M00S00025.comcmve +++|
00032  M00S00026.comcmve +++|
00033  M00S00027.comcmve +++|*         COMPARE MOVE UNIT BUFFER AREA/PRESET.
00034  M00S00028.comcmve +++|*         MVEB IS READ UP AND THEN RETURN JUMPED TO IN ORDER TO VOID
00035  M00S00029.comcmve +++|*         THE INSTRUCTION STACK.  LATER MVEB IS USED FOR THE CMU
00036  M00S00030.comcmve +++|*         DESCRIPTOR WORD.
00037  M00S00031.comcmve +++|
00038  M00S00032.comcmve +++| MVE11    BSS    0           ENTRY FOR PRESET
00039  M00S00033.comcmve +++| MVEB     IX4    X2-X3       CHECK DIRECTION OF MOVE  (NO CMU)
00040  M00S00034.comcmve +++|          MX7    59
00041  M00S00035.comcmve +++|          JP     MVE13
00042  M00S00036.comcmve +++|
00043  M00S00037.comcmve +++| MVEC     BX7    X2          CHECK IF CMU AVAILABLE (BUFFER AREA FWA)
00044  M00S00038.comcmve +++|          SA2    CMUR
00045  M00S00039.comcmve +++|          PL     X2,MVE12    IF NO CMU
00046  M00S00040.comcmve +++|          SA4    MVED
00047  M00S00041.comcmve +++| MVE12    BX6    X4
00048  M00S00042.comcmve +++|          LX2    X7          RESTORE X2
00049  M00S00043.comcmve +++|          SA6    MVEA
00050  M00S00044.comcmve +++|          JP     MVE1        RESTART LOOP
00051  M00S00045.comcmve +++|
00052  M00S00046.comcmve +++| MVED     IX4    X2-X3       CHECK DIRECTION OF MOVE (CMU)
00053  M00S00047.comcmve +++|          BX7    X1          SET WORD COUNT
00054  M00S00048.comcmve +++|          BX1    X0          SAVE X0
00055  M00S00049.comcmve +++|          LX2    30
00056  M00S00050.comcmve +++|
00057  M00S00051.comcmve +++|*         DETERMINE MOVE DIRECTION.
00058  M00S00052.comcmve +++|
00059  M00S00053.comcmve +++| MVE13    BX6    -X7*X1
00060  M00S00054.comcmve +++|          IX1    X1-X6       REDUCE WORD COUNT TO EVEN NUMBER
00061  M00S00055.comcmve +++|          PL     X4,MVE15    IF MOVE UP
00062  M00S00056.comcmve +++|
00063  M00S00057.comcmve +++|*         BEGIN DOWNWARD MOVE.
00064  M00S00058.comcmve +++|
00065  M00S00059.comcmve +++|          ZR     X6,MVE14    IF WORD COUNT EVEN
00066  M00S00060.comcmve +++|          SB7    X1
00067  M00S00061.comcmve +++|          SA4    X2+B7       MOVE INITIAL WORD
00068  M00S00062.comcmve +++|          BX6    X4
00069  M00S00063.comcmve +++|          SA6    X3+B7
00070  M00S00064.comcmve +++| MVE14    IX2    X2+X1
00071  M00S00065.comcmve +++|          IX3    X3+X1
00072  M00S00066.comcmve +++|          SB7    -2
00073  M00S00067.comcmve +++|          EQ     MVE16
00074  M00S00068.comcmve +++|
00075  M00S00069.comcmve +++|*         BEGIN UPWARD MOVE.
00076  M00S00070.comcmve +++|
00077  M00S00071.comcmve +++| MVE15    SB7    -2          UPWARD MOVE
00078  M00S00072.comcmve +++|          SX2    X2+B7
00079  M00S00073.comcmve +++|          SX3    X3+B7
00080  M00S00074.comcmve +++|          SB7    B1+B1
00081  M00S00075.comcmve +++|          ZR     X6,MVE16    IF WORD COUNT EVEN
00082  M00S00076.comcmve +++|          SA4    X2+B7       MOVE INITIAL WORD
00083  M00S00077.comcmve +++|          IX2    X2+X6
00084  M00S00078.comcmve +++|          BX7    X4
00085  M00S00079.comcmve +++|          SA7    X3+B7
00086  M00S00080.comcmve +++|          IX3    X3+X6
00087  M00S00081.comcmve +++|
00088  M00S00082.comcmve +++|*         INITIALIZE MOVE LOOP.
00089  M00S00083.comcmve +++|
00090  M00S00084.comcmve +++| MVE16    ZR     X1,MVE=     IF MOVE COMPLETE
00091  M00S00085.comcmve +++|          SA2    X2+B7       MOVE FIRST 2 WORDS
00092  M00S00086.comcmve +++|          SA4    A2+B1
00093  M00S00087.comcmve +++|          BX6    X2
00094  M00S00088.comcmve +++|          LX7    X4
00095  M00S00089.comcmve +++|          SA6    X3+B7
00096  M00S00090.comcmve +++|          SA7    A6+B1
00097  M00S00091.comcmve +++|          SX3    B1+B1
00098  M00S00092.comcmve +++|          IX1    X1-X3
00099  M00S00093.comcmve +++|          ZR     X1,MVE=     IF MOVE COMPLETE
00100  M00S00094.comcmve +++|          SA2    A2+B7       NEXT 2 WORDS
00101  M00S00095.comcmve +++|          SA4    A4+B7
00102  M00S00096.comcmve +++|
00103  M00S00097.comcmve +++|*         MOVE LOOP.
00104  M00S00098.comcmve +++|
00105  M00S00099.comcmve +++| MVE17    BX6    X2
00106  M00S00100.comcmve +++|          SA2    A2+B7
00107  M00S00101.comcmve +++|          LX7    X4
00108  M00S00102.comcmve +++|          SA4    A4+B7
00109  M00S00103.comcmve +++|          IX1    X1-X3
00110  M00S00104.comcmve +++|          NO
00111  M00S00105.comcmve +++|          SA6    A6+B7
00112  M00S00106.comcmve +++|          SA7    A7+B7
00113  M00S00107.comcmve +++|          NZ     X1,MVE17
00114  M00S00108.comcmve +++|
00115  M00S00109.comcmve +++| MVEE     BSS    0           END OF CMU BUFFER AREA
00116  M00S00110.comcmve +++| MVELL    EQU    MVEE-MVEC   NUMBER OF WORDS IN BUFFER
00117  M00S00111.comcmve +++|
00118  M00S00112.comcmve +++| MVE=     PS                 ENTRY/EXIT
00119  M00S00113.comcmve +++|          R=     B1,1
00120  M00S00114.comcmve +++| MVEA     BSS    0
00121  M00S00115.comcmve +++| MVE1     SA4    MVEB        INITIALIZE FOR CMU
00122  M00S00116.comcmve +++|          RJ     MVE11
00123  M00S00117.comcmve +++|*         IX4    X2-X3       CHECK DIRECTION OF MOVE (NO CMU)
00124  M00S00118.comcmve +++|*         MX7    59          (NO CMU)
00125  M00S00119.comcmve +++|*         JP     MVE13       (NO CMU)
00126  M00S00120.comcmve +++|*
00127  M00S00121.comcmve +++|*         IX4    X2-X3       CHECK DIRECTION OF MOVE (CMU)
00128  M00S00122.comcmve +++|*         BX7    X1          (CMU)
00129  M00S00123.comcmve +++|*         BX1    X0          SAVE X0 (CMU)
00130  M00S00124.comcmve +++|*         LX2    30          (CMU)
00131  M00S00125.comcmve +++|
00132  M00S00126.comcmve +++|*         MOVE DATA WITH CMU.
00133  M00S00127.comcmve +++|
00134  M00S00128.comcmve +++|          ZR     X7,MVE=     IF NO DATA TO MOVE
00135  M00S00129.comcmve +++|          SX6    X7-819
00136  M00S00130.comcmve +++|          BX0    X4
00137  M00S00131.comcmve +++|          NG     X4,MVE2     IF MOVE DOWNWARD
00138  M00S00132.comcmve +++|          BX0    -X4
00139  M00S00133.comcmve +++| MVE2     IX0    X0+X7
00140  M00S00134.comcmve +++|          BX6    X0*X6
00141  M00S00135.comcmve +++|          PL     X6,MVE3     IF BLOCK TOO LONG FOR 1 MOVE OR BLOCKS LAP
00142  M00S00136.comcmve +++|          BX0    X7          SET UP FOR 1 MOVE
00143  M00S00137.comcmve +++|          BX2    X2+X3
00144  M00S00138.comcmve +++|          BX7    X7-X7       SET TO FORCE EXIT
00145  M00S00139.comcmve +++|          MX4    -4
00146  M00S00140.comcmve +++|          SB7    MVE9
00147  M00S00141.comcmve +++|          JP     MVE10
00148  M00S00142.comcmve +++|
00149  M00S00143.comcmve +++| MVE3     SX6    MVEC        SET INTERMEDIATE BUFFER ADDRESS
00150  M00S00144.comcmve +++|          NG     X4,MVE6     IF MOVE DOWNWARD
00151  M00S00145.comcmve +++|
00152  M00S00146.comcmve +++|*         MOVE UPWARD.
00153  M00S00147.comcmve +++|
00154  M00S00148.comcmve +++|          BX2    X2+X6
00155  M00S00149.comcmve +++|          LX6    30
00156  M00S00150.comcmve +++|          BX3    X3+X6
00157  M00S00151.comcmve +++| MVE4     BX0    X7
00158  M00S00152.comcmve +++|          SX7    X7-MVELL    DECREMENT WORD COUNT
00159  M00S00153.comcmve +++|          MX4    -4
00160  M00S00154.comcmve +++|          NG     X7,MVE5     IF LAST BLOCK TO MOVE
00161  M00S00155.comcmve +++|          SX0    MVELL
00162  M00S00156.comcmve +++| MVE5     SB7    *+1         SET TO RETURN HERE
00163  M00S00157.comcmve +++|          JP     MVE10
00164  M00S00158.comcmve +++|          IM     MVEB
00165  M00S00159.comcmve +++|          SB7    X7
00166  M00S00160.comcmve +++|          BX0    X1          RESTORE X0
00167  M00S00161.comcmve +++|          LT     B7,B1,MVE=  IF MOVE COMPLETE
00168  M00S00162.comcmve +++|          SX4    -MVELL      UPDATE ADDRESSES
00169  M00S00163.comcmve +++|          IX3    X3-X4
00170  M00S00164.comcmve +++|          LX4    30
00171  M00S00165.comcmve +++|          IX2    X2-X4
00172  M00S00166.comcmve +++|          JP     MVE4
00173  M00S00167.comcmve +++|
00174  M00S00168.comcmve +++|*         MOVE DOWNWARD.
00175  M00S00169.comcmve +++|
00176  M00S00170.comcmve +++| MVE6     LX6    30          SET LAST WORD ADDRESSES OF DATA AREAS
00177  M00S00171.comcmve +++|          BX6    X7+X6
00178  M00S00172.comcmve +++|          IX3    X3+X6
00179  M00S00173.comcmve +++|          LX6    30
00180  M00S00174.comcmve +++|          IX2    X2+X6
00181  M00S00175.comcmve +++| MVE7     SX6    MVELL
00182  M00S00176.comcmve +++|          SX0    X7
00183  M00S00177.comcmve +++|          IX7    X7-X6
00184  M00S00178.comcmve +++|          MX4    -4
00185  M00S00179.comcmve +++|          NG     X7,MVE8     IF LAST BLOCK TO MOVE
00186  M00S00180.comcmve +++|          BX0    X6
00187  M00S00181.comcmve +++| MVE8     BX6    X0          ADJUST DESTINATION AND SOURCE ADDRESSES
00188  M00S00182.comcmve +++|          IX3    X3-X0
00189  M00S00183.comcmve +++|          LX6    30
00190  M00S00184.comcmve +++|          IX2    X2-X6
00191  M00S00185.comcmve +++|          SB7    *+1         SET TO RETURN HERE
00192  M00S00186.comcmve +++|          JP     MVE10
00193  M00S00187.comcmve +++|          IM     MVEB        MOVE DATA TO DESTINATION BUFFER
00194  M00S00188.comcmve +++| MVE9     SB7    X7
00195  M00S00189.comcmve +++|          BX0    X1          RESTORE X0
00196  M00S00190.comcmve +++|          LT     B7,B1,MVE=  IF MOVE COMPLETE
00197  M00S00191.comcmve +++|          JP     MVE7        LOOP
00198  M00S00192.comcmve +++|
00199  M00S00193.comcmve +++|*         SETUP MOVE WORD.
00200  M00S00194.comcmve +++|*         (X0) = NUMBER OF WORDS TO MOVE.
00201  M00S00195.comcmve +++|*         (X4) = 56 BIT MASK.
00202  M00S00196.comcmve +++|
00203  M00S00197.comcmve +++| MVE10    LX6    X0,B1       10 * WORD COUNT = CHARACTER COUNT
00204  M00S00198.comcmve +++|          LX0    3
00205  M00S00199.comcmve +++|          IX6    X0+X6
00206  M00S00200.comcmve +++|          BX0    -X4*X6      EXTRACT LOWER PORTION
00207  M00S00201.comcmve +++|          BX4    X4*X6       EXTRACT UPPER PORTION
00208  M00S00202.comcmve +++|          LX0    26
00209  M00S00203.comcmve +++|          LX4    48-4
00210  M00S00204.comcmve +++|          BX0    X4+X0
00211  M00S00205.comcmve +++|          BX6    X2+X0
00212  M00S00206.comcmve +++|          SA6    MVEB        STORE FIRST DESCRIPTOR WORD
00213  M00S00207.comcmve +++|          BX6    X3+X0
00214  M00S00208.comcmve +++|          IM     MVEB        MOVE DATA TO INTERMEDIATE BUFFER
00215  M00S00209.comcmve +++|          SA6    A6          STORE SECOND DESCRIPTOR WORD
00216  M00S00210.comcmve +++|          JP     B7
00217  M00S00211.comcmve +++|          SPACE  4
00218  M00S00212.comcmve +++|          BASE   *
00219  M00S00213.comcmve +++| QUAL$    IF     -DEF,QUAL$
00220  M00S00214.comcmve +++|          QUAL   *
00221  M00S00215.comcmve +++| MVE=     EQU    /COMCMVE/MVE=
00222  M00S00216.comcmve +++| QUAL$    ENDIF
00223  M00S00217.comcmve +++|          ENDX