User Tools

Site Tools


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

Common COMCTIO

2 Modifications

Source

Seq #  *Modification Id* Act 
----------------------------+
00001  M01S00001.comctio +++|          CTEXT  COMCTIO - TEXT I/O ROUTINES.
00002  M01S00002.comctio +++|          BASE   D
Line S00003 Modification History
M01 (Added by) comctio
M02 (Updated by) 281l803
Seq #  *Modification Id* Act 
----------------------------+
00003  M02S00003.281l803 ---|*COMMENT  COPYRIGHT CONTROL DATA CORP.  1985.
00004  M01S00001.281l803 +++|*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992.
00005  M01S00004.comctio +++| COMCTIO  SPACE  4,10
00006  M01S00005.comctio +++|***       COMCTIO - TEXT I/O.
00007  M01S00006.comctio +++|*
00008  M01S00007.comctio +++|*         COMCTIO PROVIDES ROUTINES TO PERFORM TEXT I/O FROM
00009  M01S00008.comctio +++|*         COMPASS PROGRAMS.  TEXT IS ADDED TO A FILE IN CHARACTER
00010  M01S00009.comctio +++|*         INCREMENTS, INSTEAD OF IN WORD INCREMENTS.  NUMERIC DATA
00011  M01S00010.comctio +++|*         ITEMS ARE CONVERTED TO EITHER LEFT OR RIGHT JUSTIFIED
00012  M01S00011.comctio +++|*         CHARACTERS.  NOS END OF LINE CONVENTIONS ARE INSURED.
00013  M01S00012.comctio +++|*
00014  M01S00013.comctio +++|*         NOTE   FET+5 IS USED BY THESE ROUTINES.
00015  M01S00014.comctio +++| CTI      SPACE  4,15
00016  M01S00015.comctio +++|**        CTI - CONVERT TO DECIMAL DISPLAY CODE WITH LEADING ZERO.
00017  M01S00016.comctio +++|*         SUPPRESSION.
00018  M01S00017.comctio +++|*
00019  M01S00018.comctio +++|*         ENTRY  (X1) = NUMBER TO BE CONVERTED.
00020  M01S00019.comctio +++|*
00021  M01S00020.comctio +++|*         EXIT   (X3) = DECIMAL CONVERSION LEFT JUSTIFIED, BLANK FILLED
00022  M01S00021.comctio +++|*                (B6) = NUMBER OF CHARACTERS CONVERTED.
00023  M01S00022.comctio +++|*
00024  M01S00023.comctio +++|*         USES   A - 3, 4, 5.
00025  M01S00024.comctio +++|*                X - 1, 3, 4, 5, 6, 7.
00026  M01S00025.comctio +++|*                B - 6.
00027  M01S00026.comctio +++|
00028  M01S00027.comctio +++|
00029  M01S00028.comctio +++| CTI      SUBR               ENTRY/EXIT
00030  M01S00029.comctio +++|          SA4    CTIA        0.1P48+1
00031  M01S00030.comctio +++|          SA5    CTIB
00032  M01S00031.comctio +++|          PX1    X1
00033  M01S00032.comctio +++|          SB6    B0          CLEAR CHARACTER COUNT
00034  M01S00033.comctio +++|          SA3    CTIC
00035  M01S00034.comctio +++| CTI1     DX6    X1*X4       COMPUTE QUOTIENT
00036  M01S00035.comctio +++|          FX1    X1*X4
00037  M01S00036.comctio +++|          UX7    X1          CHECK QUOTIENT
00038  M01S00037.comctio +++|          FX6    X6*X5       EXTRACT REMAINDER DIGIT
00039  M01S00038.comctio +++|          SB6    B6+B1
00040  M01S00039.comctio +++|          SX6    X6+1R0-1R   CONVERT DIGIT
00041  M01S00040.comctio +++|          IX3    X6+X3
00042  M01S00041.comctio +++|          LX3    -6          SHIFT ASSEMBLY
00043  M01S00042.comctio +++|          NZ     X7,CTI1     IF LOOP TO ZERO QUOTIENT
00044  M01S00043.comctio +++|          EQ     CTIX        RETURN
00045  M01S00044.comctio +++|
00046  M01S00045.comctio +++| CTIA     CON    0.1P48+1
00047  M01S00046.comctio +++| CTIB     CON    10.P
00048  M01S00047.comctio +++| CTIC     CON    10H
00049  M01S00048.comctio +++| CTO      SPACE  4,15
00050  M01S00049.comctio +++|**        CTO - CONVERT TO OCTAL DISPLAY CODE WITH LEADING ZERO.
00051  M01S00050.comctio +++|*         SUPPRESSION.
00052  M01S00051.comctio +++|*
00053  M01S00052.comctio +++|*         ENTRY  (X1) = NUMBER TO BE CONVERTED.
00054  M01S00053.comctio +++|*
00055  M01S00054.comctio +++|*         EXIT   (X3) = OCTAL CONVERSION LEFT JUSTIFIED, BLANK FILLED.
00056  M01S00055.comctio +++|*                (B6) = NUMBER OF CHARACTERS CONVERTED.
00057  M01S00056.comctio +++|*
00058  M01S00057.comctio +++|*         USES   A - 3.
00059  M01S00058.comctio +++|*                X - 1, 3, 4, 6.
00060  M01S00059.comctio +++|*                B - 6.
00061  M01S00060.comctio +++|
00062  M01S00061.comctio +++|
00063  M01S00062.comctio +++| CTO      SUBR               ENTRY/EXIT
00064  M01S00063.comctio +++|          SA3    CTIC
00065  M01S00064.comctio +++|          MX6    -3          (X2) = DIGIT MASK
00066  M01S00065.comctio +++|          SB6    B0          CLEAR CHARACTER COUNT
00067  M01S00066.comctio +++| CTO1     BX4    -X6*X1      EXTRACT DIGIT
00068  M01S00067.comctio +++|          SB6    B6+B1
00069  M01S00068.comctio +++|          SX4    X4+1R0-1R   CONVERT DIGIT
00070  M01S00069.comctio +++|          AX1    3           SHIFT OFF DIGIT
00071  M01S00070.comctio +++|          IX3    X4+X3       ADD DIGIT TO ASSEMBLY
00072  M01S00071.comctio +++|          LX3    -6
00073  M01S00072.comctio +++|          NZ     X1,CTO1     IF LOOP TO ZERO DIGIT
00074  M01S00073.comctio +++|          EQ     CTOX        RETURN
00075  M01S00074.comctio +++| WRC      SPACE  4,10
00076  M01S00075.comctio +++|**        WRC - WRITE CHARACTERS TO TEXT FILE.
00077  M01S00076.comctio +++|*
00078  M01S00077.comctio +++|*         ENTRY  (X2) = TEXT FILE FET ADDRESS.
00079  M01S00078.comctio +++|*                (X3) = FIRST WORD OF CHARACTERS TO WRITE.
00080  M01S00079.comctio +++|*                (B6) = NUMBER OF CHARACTERS TO WRITE.
00081  M01S00080.comctio +++|*                     = 0, IF TO WRITE TILL ZERO BYTE TERMINATOR.
00082  M01S00081.comctio +++|*                (A3) = ADDRESS OF FIRST WORD OF CHARACTERS, IF MORE
00083  M01S00082.comctio +++|*                       THAN 10 CHARACTERS TO WRITE.
00084  M01S00083.comctio +++|*
00085  M01S00084.comctio +++|*         USES   A - 1, 3, 4, 6, 7.
00086  M01S00085.comctio +++|*                X - 1, 3, 4, 5, 6, 7.
00087  M01S00086.comctio +++|*                B - 2, 3, 4, 6, 7.
00088  M01S00087.comctio +++|
00089  M01S00088.comctio +++|
00090  M01S00089.comctio +++| WRC8     SB5    X7+B6       ADVANCE CHARACTER COUNT IN BUFFER WORD
00091  M01S00090.comctio +++|          LT     B5,B4,WRC9  IF NOT INTO NEXT WORD
00092  M01S00091.comctio +++|          SA6    B2
00093  M01S00092.comctio +++|          SB2    B2+B1       ADVANCE BUFFER ADDRESS
00094  M01S00093.comctio +++|          BX6    -X1*X3
00095  M01S00094.comctio +++|          SB5    B5-B4
00096  M01S00095.comctio +++|          SB6    B6-B4
Line S00096 Modification History
M01 (Added by) comctio
M02 (Updated by) ctio1
Seq #  *Modification Id* Act 
----------------------------+
00097  M02S00096.ctio1   ---| WRC9     SA4    WRCB+10+B5  EXTRACT CHARACTERS TO STORE
00098  M01S00001.ctio1   +++| WRC9     SA4    WRCC+B5     EXTRACT CHARACTERS TO STORE
00099  M01S00097.comctio +++|          SX1    B6          UPDATE CHARACTER COUNT IN LAST BUFFER WORD
00100  M01S00098.comctio +++|          BX6    -X4*X6
00101  M01S00099.comctio +++|          SA6    B2          STORE LAST WORD
00102  M01S00100.comctio +++|          SX6    B2          UPDATE IN
00103  M01S00101.comctio +++|          IX7    X7+X1
00104  M01S00102.comctio +++|          SA6    X2+2
00105  M01S00103.comctio +++|          SA7    X2+5
00106  M01S00104.comctio +++|
00107  M01S00105.comctio +++| WRC=     SUBR               ENTRY/EXIT
00108  M01S00106.comctio +++|          SB4    10          (B4) = 10
00109  M01S00107.comctio +++|          NZ     B6,WRC3     IF LINE LENGTH PRESENT
00110  M01S00108.comctio +++|          SA1    WRCA        40404040404040404040B
00111  M01S00109.comctio +++|
00112  M01S00110.comctio +++|*         COMPUTE CHARACTER COUNT IN LINE.
00113  M01S00111.comctio +++|
00114  M01S00112.comctio +++|          MX6    -6
00115  M01S00113.comctio +++|          BX7    -X6*X3
00116  M01S00114.comctio +++|          BX4    X3
00117  M01S00115.comctio +++|          ZR     X7,WRC2     IF SINGLE WORD
00118  M01S00116.comctio +++|          SB5    B1
00119  M01S00117.comctio +++| WRC1     SA4    A3+B5
00120  M01S00118.comctio +++|          SB6    B6+B4
00121  M01S00119.comctio +++|          SB5    B5+B1
00122  M01S00120.comctio +++|          BX7    -X6*X4
00123  M01S00121.comctio +++| WRC2     NZ     X7,WRC1     IF NOT LAST WORD IN LINE
00124  M01S00122.comctio +++|          SX6    B1
00125  M01S00123.comctio +++|          IX6    X4-X6
00126  M01S00124.comctio +++|          BX6    -X6+X4
00127  M01S00125.comctio +++|          BX6    X1*X6
00128  M01S00126.comctio +++|          CX6    X6
00129  M01S00127.comctio +++|          SB6    X6+B6
00130  M01S00128.comctio +++|
00131  M01S00129.comctio +++|*         TRANSFER CHARACTERS TO FILE BUFFER.
00132  M01S00130.comctio +++|
00133  M01S00131.comctio +++| WRC3     SA4    X2+4
00134  M01S00132.comctio +++|          SA1    A4+B1       READ CHARACTER COUNT
00135  M01S00133.comctio +++|          SB7    X4          (B7) = LIMIT POINTER
00136  M01S00134.comctio +++|          BX7    X1          (X7) = FET + 5
00137  M01S00135.comctio +++|          SA4    WRCB+X7
00138  M01S00136.comctio +++|          SA1    A4+B4       (X1) = WORD SPLITING MASK
00139  M01S00137.comctio +++|          SB5    X4          (B5) = SHIFT COUNT FOR WORD
00140  M01S00138.comctio +++|          SA4    X2+2
00141  M01S00139.comctio +++|          SB2    X4          (B2) = IN POINTER
00142  M01S00140.comctio +++|          SA4    A4+B1
00143  M01S00141.comctio +++|          SB3    X4          (B3) = OUT POINTER
00144  M01S00142.comctio +++|          SA4    B2          READ BUFFER WORD TO ADD CHARACTERS TO
00145  M01S00143.comctio +++|          BX4    -X1*X4
00146  M01S00144.comctio +++| WRC4     LX3    B5
00147  M01S00145.comctio +++|          BX6    X1*X3       EXTRACT LOWER CHARACTERS
00148  M01S00146.comctio +++|          BX6    X6+X4       MERGE WITH WORD IN BUFFER
00149  M01S00147.comctio +++|          BX4    -X1*X3      EXTRACT CHARACTERS TO CARRY FORWARD
00150  M01S00148.comctio +++|          LT     B6,B4,WRC8  IF PARTIAL WORD TO ADD TO BUFFER
00151  M01S00149.comctio +++|          SA6    B2
00152  M01S00150.comctio +++|          SB2    B2+B1
00153  M01S00151.comctio +++|          SB6    B6-B4       DECREMENT CHARACTER COUNT
00154  M01S00152.comctio +++|          SA3    A3+B1       READ NEXT WORD TO ADD
00155  M01S00153.comctio +++|          EQ     B2,B7,WRC6  IF IN+1 = LIMIT - BUFFER WRAP
00156  M01S00154.comctio +++|          NE     B2,B3,WRC4  IF IN+1 .NE. OUT - ROOM IN BUFFER
00157  M01S00155.comctio +++|          SA1    X2
00158  M01S00156.comctio +++|          SX6    B2-B1       SET IN POINTER
00159  M01S00157.comctio +++|          LX1    59
00160  M01S00158.comctio +++|          SA6    X2+2
00161  M01S00159.comctio +++|          NG     X1,WRC7     IF BUFFER NOT BUSY
00162  M01S00160.comctio +++|          ZR     X1,WRC7     IF NULL FET
00163  M01S00161.comctio +++| WRC5     RECALL
00164  M01S00162.comctio +++|          SA1    X2+3        REREAD POINTERS
00165  M01S00163.comctio +++|          SB3    X1
00166  M01S00164.comctio +++|          SA1    X2+5
00167  M01S00165.comctio +++|          BX7    X1
Line S00166 Modification History
M01 (Added by) comctio
M02 (Updated by) ctio1
Seq #  *Modification Id* Act 
----------------------------+
00168  M02S00166.ctio1   ---|          SA1    A4+B4
00169  M01S00002.ctio1   +++|          SA1    WRCC+X7
00170  M01S00167.comctio +++|          EQ     B2,B3,WRC7  IF NO ROOM IN BUFFER
00171  M01S00168.comctio +++|          EQ     WRC4        PROCESS NEXT WORD
00172  M01S00169.comctio +++|
00173  M01S00170.comctio +++| WRC6     SA1    X2+3        SET IN TO FIRST IF ROOM
00174  M01S00171.comctio +++|          SB3    X1
00175  M01S00172.comctio +++|          SA1    X2+B1       FIRST
00176  M01S00173.comctio +++|          SB2    X1
00177  M01S00174.comctio +++|          SA1    X2+5
00178  M01S00003.ctio1   +++|          BX7    X1
00179  M01S00004.ctio1   +++|          SA1    WRCC+X7
00180  M01S00175.comctio +++|          NE     B2,B3,WRC4  IF OUT .NE. FIRST, SET IN TO FIRST
00181  M01S00176.comctio +++| WRC7     WRITE  X2
00182  M01S00177.comctio +++|          EQ     WRC5        RECHECK POINTERS
00183  M01S00178.comctio +++|
00184  M01S00179.comctio +++| WRCA     CON    40404040404040404040B
00185  M01S00180.comctio +++| WRCB     CON    0,54,48,42,36,30,24,18,12,6  SHIFT COUNT TABLE
Line S00181 Modification History
M01 (Added by) comctio
M02 (Updated by) ctio1
Seq #  *Modification Id* Act 
----------------------------+
00186  M02S00181.ctio1   ---|          CON    -0          TABLE OF MASKS TO SPLIT WORD
00187  M01S00005.ctio1   +++| WRCC     CON    -0          TABLE OF MASKS TO SPLIT WORD
00188  M01S00182.comctio +++|          CON    777777777777777777B,7777777777777777B,77777777777777B
00189  M01S00183.comctio +++|          CON    777777777777B,7777777777B,77777777B,777777B,7777B,77B
00190  M01S00184.comctio +++| WRL      SPACE  4,10
00191  M01S00185.comctio +++|**        WRL - WRITE LINE TO FILE.
00192  M01S00186.comctio +++|*
00193  M01S00187.comctio +++|*         ENTRY  (X2) = FET ADDRESS.
00194  M01S00188.comctio +++|*
00195  M01S00189.comctio +++|*         EXIT   LINE WRITTEN TO FILE.
00196  M01S00190.comctio +++|*
00197  M01S00191.comctio +++|*         USES   A - 1, 3, 4, 6.
00198  M01S00192.comctio +++|*                X - 1, 3, 4, 6.
00199  M01S00193.comctio +++|*                B - 2.
00200  M01S00194.comctio +++|*
00201  M01S00195.comctio +++|*         MACROS WRITEW.
00202  M01S00196.comctio +++|
00203  M01S00197.comctio +++|
00204  M01S00198.comctio +++| WRL=     SUBR               ENTRY/EXIT
00205  M01S00199.comctio +++|          SA1    X2+2
00206  M01S00200.comctio +++|          SA3    X2+5
00207  M01S00201.comctio +++|          SX3    X3
00208  M01S00202.comctio +++|          LX3    -1
00209  M01S00203.comctio +++|          PL     X3,WRL1     IF EVEN CHARACTERS IN LAST WORD
00210  M01S00204.comctio +++|          SA3    WRLA+X3
00211  M01S00205.comctio +++|          SA4    X1          BLANK FILL TO EVEN CHARACTER
00212  M01S00206.comctio +++|          BX6    X4+X3
00213  M01S00207.comctio +++|          SA6    A4
00214  M01S00208.comctio +++|          AX3    6
00215  M01S00209.comctio +++|          NZ     X3,WRL1     IF WORD NOT COMPLETED
00216  M01S00210.comctio +++|          WRITEW X2,A6,1
00217  M01S00211.comctio +++|          SX1    =0
00218  M01S00212.comctio +++|
00219  M01S00213.comctio +++| WRL1     WRITEW X2,X1,1     WRITE LAST WORD OF LINE TO BUFFER
00220  M01S00214.comctio +++|          SA1    X2+5        CHECK FOR LINE LIMIT
00221  M01S00215.comctio +++|          UX1,B2 X1          (B2) = LINE COUNT
00222  M01S00216.comctio +++|          SX6    X1          CLEAR CHARACTER COUNT
00223  M01S00217.comctio +++|          BX1    X1-X6
00224  M01S00218.comctio +++|          SB2    B2+B1
00225  M01S00219.comctio +++|          PX6    X1,B2
00226  M01S00220.comctio +++|          SA6    A1
00227  M01S00221.comctio +++|          EQ     WRL=        RETURN
00228  M01S00222.comctio +++|
00229  M01S00223.comctio +++| WRLA     CON    55BS48,55BS36,55BS24,55BS12,1R
00230  M01S00224.comctio +++|          SPACE  4
00231  M01S00225.comctio +++|          BASE   *
00232  M01S00226.comctio +++|          ENDX
cdc/nos2.source/opl.opl871/common/comctio.txt ยท Last modified: by 127.0.0.1