User Tools

Site Tools


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

Common COMCTIO

Library Member Format: MODIFY

Source

Seq #  *Modification Id* Act 
----------------------------+
00001  M00S00001.comctio +++|          CTEXT  COMCTIO - TEXT I/O ROUTINES.
00002  M00S00002.comctio +++|          BASE   D
Line S00003 Modification History
M01 (Removed by) 281l803
Seq #  *Modification Id* Act 
----------------------------+
00003  M01S00003.281l803 ---|*COMMENT  COPYRIGHT CONTROL DATA CORP.  1985.
Line S00001 Modification History
M01 (Added by) 281l803
Seq #  *Modification Id* Act 
----------------------------+
00004  M01S00001.281l803 +++|*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992.
00005  M00S00004.comctio +++| COMCTIO  SPACE  4,10
00006  M00S00005.comctio +++|***       COMCTIO - TEXT I/O.
00007  M00S00006.comctio +++|*
00008  M00S00007.comctio +++|*         COMCTIO PROVIDES ROUTINES TO PERFORM TEXT I/O FROM
00009  M00S00008.comctio +++|*         COMPASS PROGRAMS.  TEXT IS ADDED TO A FILE IN CHARACTER
00010  M00S00009.comctio +++|*         INCREMENTS, INSTEAD OF IN WORD INCREMENTS.  NUMERIC DATA
00011  M00S00010.comctio +++|*         ITEMS ARE CONVERTED TO EITHER LEFT OR RIGHT JUSTIFIED
00012  M00S00011.comctio +++|*         CHARACTERS.  NOS END OF LINE CONVENTIONS ARE INSURED.
00013  M00S00012.comctio +++|*
00014  M00S00013.comctio +++|*         NOTE   FET+5 IS USED BY THESE ROUTINES.
00015  M00S00014.comctio +++| CTI      SPACE  4,15
00016  M00S00015.comctio +++|**        CTI - CONVERT TO DECIMAL DISPLAY CODE WITH LEADING ZERO.
00017  M00S00016.comctio +++|*         SUPPRESSION.
00018  M00S00017.comctio +++|*
00019  M00S00018.comctio +++|*         ENTRY  (X1) = NUMBER TO BE CONVERTED.
00020  M00S00019.comctio +++|*
00021  M00S00020.comctio +++|*         EXIT   (X3) = DECIMAL CONVERSION LEFT JUSTIFIED, BLANK FILLED
00022  M00S00021.comctio +++|*                (B6) = NUMBER OF CHARACTERS CONVERTED.
00023  M00S00022.comctio +++|*
00024  M00S00023.comctio +++|*         USES   A - 3, 4, 5.
00025  M00S00024.comctio +++|*                X - 1, 3, 4, 5, 6, 7.
00026  M00S00025.comctio +++|*                B - 6.
00027  M00S00026.comctio +++|
00028  M00S00027.comctio +++|
00029  M00S00028.comctio +++| CTI      SUBR               ENTRY/EXIT
00030  M00S00029.comctio +++|          SA4    CTIA        0.1P48+1
00031  M00S00030.comctio +++|          SA5    CTIB
00032  M00S00031.comctio +++|          PX1    X1
00033  M00S00032.comctio +++|          SB6    B0          CLEAR CHARACTER COUNT
00034  M00S00033.comctio +++|          SA3    CTIC
00035  M00S00034.comctio +++| CTI1     DX6    X1*X4       COMPUTE QUOTIENT
00036  M00S00035.comctio +++|          FX1    X1*X4
00037  M00S00036.comctio +++|          UX7    X1          CHECK QUOTIENT
00038  M00S00037.comctio +++|          FX6    X6*X5       EXTRACT REMAINDER DIGIT
00039  M00S00038.comctio +++|          SB6    B6+B1
00040  M00S00039.comctio +++|          SX6    X6+1R0-1R   CONVERT DIGIT
00041  M00S00040.comctio +++|          IX3    X6+X3
00042  M00S00041.comctio +++|          LX3    -6          SHIFT ASSEMBLY
00043  M00S00042.comctio +++|          NZ     X7,CTI1     IF LOOP TO ZERO QUOTIENT
00044  M00S00043.comctio +++|          EQ     CTIX        RETURN
00045  M00S00044.comctio +++|
00046  M00S00045.comctio +++| CTIA     CON    0.1P48+1
00047  M00S00046.comctio +++| CTIB     CON    10.P
00048  M00S00047.comctio +++| CTIC     CON    10H
00049  M00S00048.comctio +++| CTO      SPACE  4,15
00050  M00S00049.comctio +++|**        CTO - CONVERT TO OCTAL DISPLAY CODE WITH LEADING ZERO.
00051  M00S00050.comctio +++|*         SUPPRESSION.
00052  M00S00051.comctio +++|*
00053  M00S00052.comctio +++|*         ENTRY  (X1) = NUMBER TO BE CONVERTED.
00054  M00S00053.comctio +++|*
00055  M00S00054.comctio +++|*         EXIT   (X3) = OCTAL CONVERSION LEFT JUSTIFIED, BLANK FILLED.
00056  M00S00055.comctio +++|*                (B6) = NUMBER OF CHARACTERS CONVERTED.
00057  M00S00056.comctio +++|*
00058  M00S00057.comctio +++|*         USES   A - 3.
00059  M00S00058.comctio +++|*                X - 1, 3, 4, 6.
00060  M00S00059.comctio +++|*                B - 6.
00061  M00S00060.comctio +++|
00062  M00S00061.comctio +++|
00063  M00S00062.comctio +++| CTO      SUBR               ENTRY/EXIT
00064  M00S00063.comctio +++|          SA3    CTIC
00065  M00S00064.comctio +++|          MX6    -3          (X2) = DIGIT MASK
00066  M00S00065.comctio +++|          SB6    B0          CLEAR CHARACTER COUNT
00067  M00S00066.comctio +++| CTO1     BX4    -X6*X1      EXTRACT DIGIT
00068  M00S00067.comctio +++|          SB6    B6+B1
00069  M00S00068.comctio +++|          SX4    X4+1R0-1R   CONVERT DIGIT
00070  M00S00069.comctio +++|          AX1    3           SHIFT OFF DIGIT
00071  M00S00070.comctio +++|          IX3    X4+X3       ADD DIGIT TO ASSEMBLY
00072  M00S00071.comctio +++|          LX3    -6
00073  M00S00072.comctio +++|          NZ     X1,CTO1     IF LOOP TO ZERO DIGIT
00074  M00S00073.comctio +++|          EQ     CTOX        RETURN
00075  M00S00074.comctio +++| WRC      SPACE  4,10
00076  M00S00075.comctio +++|**        WRC - WRITE CHARACTERS TO TEXT FILE.
00077  M00S00076.comctio +++|*
00078  M00S00077.comctio +++|*         ENTRY  (X2) = TEXT FILE FET ADDRESS.
00079  M00S00078.comctio +++|*                (X3) = FIRST WORD OF CHARACTERS TO WRITE.
00080  M00S00079.comctio +++|*                (B6) = NUMBER OF CHARACTERS TO WRITE.
00081  M00S00080.comctio +++|*                     = 0, IF TO WRITE TILL ZERO BYTE TERMINATOR.
00082  M00S00081.comctio +++|*                (A3) = ADDRESS OF FIRST WORD OF CHARACTERS, IF MORE
00083  M00S00082.comctio +++|*                       THAN 10 CHARACTERS TO WRITE.
00084  M00S00083.comctio +++|*
00085  M00S00084.comctio +++|*         USES   A - 1, 3, 4, 6, 7.
00086  M00S00085.comctio +++|*                X - 1, 3, 4, 5, 6, 7.
00087  M00S00086.comctio +++|*                B - 2, 3, 4, 6, 7.
00088  M00S00087.comctio +++|
00089  M00S00088.comctio +++|
00090  M00S00089.comctio +++| WRC8     SB5    X7+B6       ADVANCE CHARACTER COUNT IN BUFFER WORD
00091  M00S00090.comctio +++|          LT     B5,B4,WRC9  IF NOT INTO NEXT WORD
00092  M00S00091.comctio +++|          SA6    B2
00093  M00S00092.comctio +++|          SB2    B2+B1       ADVANCE BUFFER ADDRESS
00094  M00S00093.comctio +++|          BX6    -X1*X3
00095  M00S00094.comctio +++|          SB5    B5-B4
00096  M00S00095.comctio +++|          SB6    B6-B4
Line S00096 Modification History
M01 (Removed by) ctio1
Seq #  *Modification Id* Act 
----------------------------+
00097  M01S00096.ctio1   ---| WRC9     SA4    WRCB+10+B5  EXTRACT CHARACTERS TO STORE
Line S00001 Modification History
M01 (Added by) ctio1
Seq #  *Modification Id* Act 
----------------------------+
00098  M01S00001.ctio1   +++| WRC9     SA4    WRCC+B5     EXTRACT CHARACTERS TO STORE
00099  M00S00097.comctio +++|          SX1    B6          UPDATE CHARACTER COUNT IN LAST BUFFER WORD
00100  M00S00098.comctio +++|          BX6    -X4*X6
00101  M00S00099.comctio +++|          SA6    B2          STORE LAST WORD
00102  M00S00100.comctio +++|          SX6    B2          UPDATE IN
00103  M00S00101.comctio +++|          IX7    X7+X1
00104  M00S00102.comctio +++|          SA6    X2+2
00105  M00S00103.comctio +++|          SA7    X2+5
00106  M00S00104.comctio +++|
00107  M00S00105.comctio +++| WRC=     SUBR               ENTRY/EXIT
00108  M00S00106.comctio +++|          SB4    10          (B4) = 10
00109  M00S00107.comctio +++|          NZ     B6,WRC3     IF LINE LENGTH PRESENT
00110  M00S00108.comctio +++|          SA1    WRCA        40404040404040404040B
00111  M00S00109.comctio +++|
00112  M00S00110.comctio +++|*         COMPUTE CHARACTER COUNT IN LINE.
00113  M00S00111.comctio +++|
00114  M00S00112.comctio +++|          MX6    -6
00115  M00S00113.comctio +++|          BX7    -X6*X3
00116  M00S00114.comctio +++|          BX4    X3
00117  M00S00115.comctio +++|          ZR     X7,WRC2     IF SINGLE WORD
00118  M00S00116.comctio +++|          SB5    B1
00119  M00S00117.comctio +++| WRC1     SA4    A3+B5
00120  M00S00118.comctio +++|          SB6    B6+B4
00121  M00S00119.comctio +++|          SB5    B5+B1
00122  M00S00120.comctio +++|          BX7    -X6*X4
00123  M00S00121.comctio +++| WRC2     NZ     X7,WRC1     IF NOT LAST WORD IN LINE
00124  M00S00122.comctio +++|          SX6    B1
00125  M00S00123.comctio +++|          IX6    X4-X6
00126  M00S00124.comctio +++|          BX6    -X6+X4
00127  M00S00125.comctio +++|          BX6    X1*X6
00128  M00S00126.comctio +++|          CX6    X6
00129  M00S00127.comctio +++|          SB6    X6+B6
00130  M00S00128.comctio +++|
00131  M00S00129.comctio +++|*         TRANSFER CHARACTERS TO FILE BUFFER.
00132  M00S00130.comctio +++|
00133  M00S00131.comctio +++| WRC3     SA4    X2+4
00134  M00S00132.comctio +++|          SA1    A4+B1       READ CHARACTER COUNT
00135  M00S00133.comctio +++|          SB7    X4          (B7) = LIMIT POINTER
00136  M00S00134.comctio +++|          BX7    X1          (X7) = FET + 5
00137  M00S00135.comctio +++|          SA4    WRCB+X7
00138  M00S00136.comctio +++|          SA1    A4+B4       (X1) = WORD SPLITING MASK
00139  M00S00137.comctio +++|          SB5    X4          (B5) = SHIFT COUNT FOR WORD
00140  M00S00138.comctio +++|          SA4    X2+2
00141  M00S00139.comctio +++|          SB2    X4          (B2) = IN POINTER
00142  M00S00140.comctio +++|          SA4    A4+B1
00143  M00S00141.comctio +++|          SB3    X4          (B3) = OUT POINTER
00144  M00S00142.comctio +++|          SA4    B2          READ BUFFER WORD TO ADD CHARACTERS TO
00145  M00S00143.comctio +++|          BX4    -X1*X4
00146  M00S00144.comctio +++| WRC4     LX3    B5
00147  M00S00145.comctio +++|          BX6    X1*X3       EXTRACT LOWER CHARACTERS
00148  M00S00146.comctio +++|          BX6    X6+X4       MERGE WITH WORD IN BUFFER
00149  M00S00147.comctio +++|          BX4    -X1*X3      EXTRACT CHARACTERS TO CARRY FORWARD
00150  M00S00148.comctio +++|          LT     B6,B4,WRC8  IF PARTIAL WORD TO ADD TO BUFFER
00151  M00S00149.comctio +++|          SA6    B2
00152  M00S00150.comctio +++|          SB2    B2+B1
00153  M00S00151.comctio +++|          SB6    B6-B4       DECREMENT CHARACTER COUNT
00154  M00S00152.comctio +++|          SA3    A3+B1       READ NEXT WORD TO ADD
00155  M00S00153.comctio +++|          EQ     B2,B7,WRC6  IF IN+1 = LIMIT - BUFFER WRAP
00156  M00S00154.comctio +++|          NE     B2,B3,WRC4  IF IN+1 .NE. OUT - ROOM IN BUFFER
00157  M00S00155.comctio +++|          SA1    X2
00158  M00S00156.comctio +++|          SX6    B2-B1       SET IN POINTER
00159  M00S00157.comctio +++|          LX1    59
00160  M00S00158.comctio +++|          SA6    X2+2
00161  M00S00159.comctio +++|          NG     X1,WRC7     IF BUFFER NOT BUSY
00162  M00S00160.comctio +++|          ZR     X1,WRC7     IF NULL FET
00163  M00S00161.comctio +++| WRC5     RECALL
00164  M00S00162.comctio +++|          SA1    X2+3        REREAD POINTERS
00165  M00S00163.comctio +++|          SB3    X1
00166  M00S00164.comctio +++|          SA1    X2+5
00167  M00S00165.comctio +++|          BX7    X1
Line S00166 Modification History
M01 (Removed by) ctio1
Seq #  *Modification Id* Act 
----------------------------+
00168  M01S00166.ctio1   ---|          SA1    A4+B4
Line S00002 Modification History
M01 (Added by) ctio1
Seq #  *Modification Id* Act 
----------------------------+
00169  M01S00002.ctio1   +++|          SA1    WRCC+X7
00170  M00S00167.comctio +++|          EQ     B2,B3,WRC7  IF NO ROOM IN BUFFER
00171  M00S00168.comctio +++|          EQ     WRC4        PROCESS NEXT WORD
00172  M00S00169.comctio +++|
00173  M00S00170.comctio +++| WRC6     SA1    X2+3        SET IN TO FIRST IF ROOM
00174  M00S00171.comctio +++|          SB3    X1
00175  M00S00172.comctio +++|          SA1    X2+B1       FIRST
00176  M00S00173.comctio +++|          SB2    X1
00177  M00S00174.comctio +++|          SA1    X2+5
00178  M01S00003.ctio1   +++|          BX7    X1
00179  M01S00004.ctio1   +++|          SA1    WRCC+X7
00180  M00S00175.comctio +++|          NE     B2,B3,WRC4  IF OUT .NE. FIRST, SET IN TO FIRST
00181  M00S00176.comctio +++| WRC7     WRITE  X2
00182  M00S00177.comctio +++|          EQ     WRC5        RECHECK POINTERS
00183  M00S00178.comctio +++|
00184  M00S00179.comctio +++| WRCA     CON    40404040404040404040B
00185  M00S00180.comctio +++| WRCB     CON    0,54,48,42,36,30,24,18,12,6  SHIFT COUNT TABLE
Line S00181 Modification History
M01 (Removed by) ctio1
Seq #  *Modification Id* Act 
----------------------------+
00186  M01S00181.ctio1   ---|          CON    -0          TABLE OF MASKS TO SPLIT WORD
Line S00005 Modification History
M01 (Added by) ctio1
Seq #  *Modification Id* Act 
----------------------------+
00187  M01S00005.ctio1   +++| WRCC     CON    -0          TABLE OF MASKS TO SPLIT WORD
00188  M00S00182.comctio +++|          CON    777777777777777777B,7777777777777777B,77777777777777B
00189  M00S00183.comctio +++|          CON    777777777777B,7777777777B,77777777B,777777B,7777B,77B
00190  M00S00184.comctio +++| WRL      SPACE  4,10
00191  M00S00185.comctio +++|**        WRL - WRITE LINE TO FILE.
00192  M00S00186.comctio +++|*
00193  M00S00187.comctio +++|*         ENTRY  (X2) = FET ADDRESS.
00194  M00S00188.comctio +++|*
00195  M00S00189.comctio +++|*         EXIT   LINE WRITTEN TO FILE.
00196  M00S00190.comctio +++|*
00197  M00S00191.comctio +++|*         USES   A - 1, 3, 4, 6.
00198  M00S00192.comctio +++|*                X - 1, 3, 4, 6.
00199  M00S00193.comctio +++|*                B - 2.
00200  M00S00194.comctio +++|*
00201  M00S00195.comctio +++|*         MACROS WRITEW.
00202  M00S00196.comctio +++|
00203  M00S00197.comctio +++|
00204  M00S00198.comctio +++| WRL=     SUBR               ENTRY/EXIT
00205  M00S00199.comctio +++|          SA1    X2+2
00206  M00S00200.comctio +++|          SA3    X2+5
00207  M00S00201.comctio +++|          SX3    X3
00208  M00S00202.comctio +++|          LX3    -1
00209  M00S00203.comctio +++|          PL     X3,WRL1     IF EVEN CHARACTERS IN LAST WORD
00210  M00S00204.comctio +++|          SA3    WRLA+X3
00211  M00S00205.comctio +++|          SA4    X1          BLANK FILL TO EVEN CHARACTER
00212  M00S00206.comctio +++|          BX6    X4+X3
00213  M00S00207.comctio +++|          SA6    A4
00214  M00S00208.comctio +++|          AX3    6
00215  M00S00209.comctio +++|          NZ     X3,WRL1     IF WORD NOT COMPLETED
00216  M00S00210.comctio +++|          WRITEW X2,A6,1
00217  M00S00211.comctio +++|          SX1    =0
00218  M00S00212.comctio +++|
00219  M00S00213.comctio +++| WRL1     WRITEW X2,X1,1     WRITE LAST WORD OF LINE TO BUFFER
00220  M00S00214.comctio +++|          SA1    X2+5        CHECK FOR LINE LIMIT
00221  M00S00215.comctio +++|          UX1,B2 X1          (B2) = LINE COUNT
00222  M00S00216.comctio +++|          SX6    X1          CLEAR CHARACTER COUNT
00223  M00S00217.comctio +++|          BX1    X1-X6
00224  M00S00218.comctio +++|          SB2    B2+B1
00225  M00S00219.comctio +++|          PX6    X1,B2
00226  M00S00220.comctio +++|          SA6    A1
00227  M00S00221.comctio +++|          EQ     WRL=        RETURN
00228  M00S00222.comctio +++|
00229  M00S00223.comctio +++| WRLA     CON    55BS48,55BS36,55BS24,55BS12,1R
00230  M00S00224.comctio +++|          SPACE  4
00231  M00S00225.comctio +++|          BASE   *
00232  M00S00226.comctio +++|          ENDX
cdc/nos2.source/opl.opl871/common/comctio.txt ยท Last modified: (external edit)