Seq # *Modification Id* Act
----------------------------+
00001 M01S00001.comcwts +++| CTEXT COMCWTS - WRITE CODED LINE FROM STRING BUFFER.
00002 M01S00002.comcwts +++| WTS SPACE 4
00003 M01S00003.comcwts +++| IF -DEF,QUAL$,1
00004 M01S00004.comcwts +++| QUAL COMCWTS
00005 M01S00005.comcwts +++| BASE D
Line S00006 Modification History |
M01 (Added by) | comcwts |
M02 (Updated by) | 281l803 |
Seq # *Modification Id* Act
----------------------------+
00006 M02S00006.281l803 ---|* COMMENT COPYRIGHT CONTROL DATA CORP. 1970.
00007 M01S00001.281l803 +++|* COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
00008 M01S00007.comcwts +++| WTS SPACE 4
00009 M01S00008.comcwts +++|*** WTS - WRITE CODED LINE FROM STRING BUFFER.
00010 M01S00009.comcwts +++|* R. S. HORECK. 71/05/19.
00011 M01S00010.comcwts +++|* S. R. MCPHERSON. 74/09/30.
00012 M01S00011.comcwts +++| WTS SPACE 4
00013 M01S00012.comcwts +++|*** WTS TRANSFERS 1 CODED LINE FROM A STRING BUFFER TO
00014 M01S00013.comcwts +++|* A CIO BUFFER WITH TRAILING SPACE SUPPRESSION.
00015 M01S00014.comcwts +++|* CHARACTERS IN THE WORKING BUFFER ARE PACKED AND STORED IN
00016 M01S00015.comcwts +++|* THE CIRCULAR BUFFER.
00017 M01S00016.comcwts +++|* IF THE BUFFER BECOMES SUFFICIENTLY FULL TO REQUIRE WRITING,
00018 M01S00017.comcwts +++|* WTS WILL PERFORM A *WRITE* FUNCTION UNLESS THE SYMBOL *WRIF$*
00019 M01S00018.comcwts +++|* IS DEFINED. IN THIS CASE, THE CIO FUNCTION THAT IS IN THE FET
00020 M01S00019.comcwts +++|* WILL BE RE-ISSUED.
00021 M01S00020.comcwts +++|*
00022 M01S00021.comcwts +++|* ENTRY (X2) = ADDRESS OF FET FOR FILE.
00023 M01S00022.comcwts +++|* (B6) = FWA WORKING BUFFER.
00024 M01S00023.comcwts +++|* (B7) = WORD COUNT OF WORKING BUFFER.
00025 M01S00024.comcwts +++|* IF (B7) = 0, NO TRANSFER WILL BE PERFORMED.
00026 M01S00025.comcwts +++|*
00027 M01S00026.comcwts +++|* EXIT (X2) = ADDRESS OF FET FOR FILE.
00028 M01S00027.comcwts +++|* (B6) = WORD COUNT OF DATA WRITTEN.
00029 M01S00028.comcwts +++|*
00030 M01S00029.comcwts +++|* USES X - 1, 2, 3, 4, 6, 7.
00031 M01S00030.comcwts +++|* B - 1, 2, 3, 4, 5, 6, 7.
00032 M01S00031.comcwts +++|* A - 1, 2, 3, 4, 6, 7.
00033 M01S00032.comcwts +++|*
00034 M01S00033.comcwts +++|* CALLS DCB=, WTX=.
00035 M01S00034.comcwts +++|
00036 M01S00035.comcwts +++|
00037 M01S00036.comcwts +++| + EQ WTS3 ENTRY FROM DCB= ON A WRITE REQUEST
00038 M01S00037.comcwts +++|
00039 M01S00038.comcwts +++| WTS= PS ENTRY/EXIT
00040 M01S00039.comcwts +++| SA4 WTS=
00041 M01S00040.comcwts +++| ZR B7,WTS= IF WORKING BUFFER EMPTY
00042 M01S00041.comcwts +++|
00043 M01S00042.comcwts +++| IF -DEF,B1=1,1
00044 M01S00043.comcwts +++| SB1 1
00045 M01S00044.comcwts +++|
00046 M01S00045.comcwts +++| SA1 X2+4 (B5) = LIMIT
00047 M01S00046.comcwts +++| SB4 B6+B7
00048 M01S00047.comcwts +++| SB5 X1
00049 M01S00048.comcwts +++| SX7 1R
00050 M01S00049.comcwts +++| SA1 B4-B1 READ LAST CHARACTER
00051 M01S00050.comcwts +++| SB2 B1+B1 (2)
00052 M01S00051.comcwts +++| WTS1 BX6 X1-X7 CHECK FOR BLANKS
00053 M01S00052.comcwts +++| SA1 A1-B1 DECREMENT CHARACTER POSITION
00054 M01S00053.comcwts +++| ZR X6,WTS1 IF BLANK
00055 M01S00054.comcwts +++| SB7 A1+B2 (B7) = LWA + 1
00056 M01S00055.comcwts +++| LT B6,B7,WTS2 IF NOT TO PAST START OF BUFFER
00057 M01S00056.comcwts +++| SB7 B6+B1
00058 M01S00057.comcwts +++| WTS2 SA3 X2+1 (A3) = ADDRESS OF FIRST
00059 M01S00058.comcwts +++| SX4 0 (X4) = WORD COUNT TRANSFERED TO BUFFER
00060 M01S00059.comcwts +++|
00061 M01S00060.comcwts +++|* INITIALIZE REGISTERS FOR TRANSFER.
00062 M01S00061.comcwts +++|
00063 M01S00062.comcwts +++| WTS3 SA1 A3-B1 SAVE FET STATUS
00064 M01S00063.comcwts +++| SA2 A3+B1 (X2) = IN
00065 M01S00064.comcwts +++| BX6 X1
00066 M01S00065.comcwts +++| SA1 A2+B1 OUT
00067 M01S00066.comcwts +++| SA6 WTSA
00068 M01S00067.comcwts +++| SB3 X2+B1 (B3) = IN+1
00069 M01S00068.comcwts +++| SB4 X1
00070 M01S00069.comcwts +++| SX6 B4-B3 OUT - IN+1
00071 M01S00070.comcwts +++| PL X6,WTS4 IF OUT \ IN+1
00072 M01S00071.comcwts +++| SX6 B5-B3 LIMIT - IN+1
00073 M01S00072.comcwts +++| WTS4 SB4 X6 (B4) = FREE BUFFER SPACE
00074 M01S00073.comcwts +++| SX3 X2 (X3) = IN
00075 M01S00074.comcwts +++| NZ X6,WTS6 IF SPACE AVAILABLE
00076 M01S00075.comcwts +++|
00077 M01S00076.comcwts +++|* PROCESS EXHAUSTED FREE BUFFER SPACE.
00078 M01S00077.comcwts +++|
00079 M01S00078.comcwts +++| WTS5 SA1 WTSA GET FET STATUS
00080 M01S00079.comcwts +++| SA2 A3+B1 (A2) = ADDRESS OF IN
00081 M01S00080.comcwts +++| SB2 X1 (B2) = FET STATUS
00082 M01S00081.comcwts +++| SX2 X3 (X2) = IN
00083 M01S00082.comcwts +++| NE B3,B5,=XDCB= IF IN+1 " LIMIT
00084 M01S00083.comcwts +++| SA1 A3 (X1) = FIRST
00085 M01S00084.comcwts +++| SX6 X1
00086 M01S00085.comcwts +++| SA1 A3-B1 FET+0
00087 M01S00086.comcwts +++| SB2 X1 (B2) = FET STATUS
00088 M01S00087.comcwts +++| SA1 A2+B1 OUT
00089 M01S00088.comcwts +++| IX7 X1-X6 OUT - IN+1
00090 M01S00089.comcwts +++| SB3 X6 IN+1 = FIRST
00091 M01S00090.comcwts +++| ZR X7,=XDCB= IF IN+1 = OUT
00092 M01S00091.comcwts +++| SB4 X7 (B4) = FREE BUFFER SPACE
00093 M01S00092.comcwts +++|
00094 M01S00093.comcwts +++|* CHECK ASSEMBLY BUFFER.
00095 M01S00094.comcwts +++|
00096 M01S00095.comcwts +++| WTS6 SB2 B6+10 SET LAST CHARACTER
00097 M01S00096.comcwts +++| MX6 0 CLEAR ASSEMBLY
00098 M01S00097.comcwts +++| SA1 B6 GET FIRST CHARACTER
00099 M01S00098.comcwts +++| LT B7,B2,WTS8 IF ASSEMBLY OVERRUNS WORKING BUFFER
00100 M01S00099.comcwts +++| SA2 A1+B1 GET SECOND CHARACTER
00101 M01S00100.comcwts +++| SB6 A2+B1 INCREMENT CHARACTER ADDRESS
00102 M01S00101.comcwts +++|
00103 M01S00102.comcwts +++|
00104 M01S00103.comcwts +++|* ASSEMBLE WORD.
00105 M01S00104.comcwts +++|
00106 M01S00105.comcwts +++| WTS7 LX1 6 POSITION ODD CHARACTER
00107 M01S00106.comcwts +++| SB6 B6+2 ADVANCE CHARACTER ADDRESS
00108 M01S00107.comcwts +++| BX6 X6+X1 ASSEMBLE CHARACTER
00109 M01S00108.comcwts +++| SA1 A2+B1 GET NEXT ODD CHARACTER
00110 M01S00109.comcwts +++| BX6 X6+X2 ASSEMBLE CHARACTER
00111 M01S00110.comcwts +++| SA2 A1+B1 GET NEXT EVEN CHARACTER
00112 M01S00111.comcwts +++| LX6 12 POSITION ASSEMBLY
00113 M01S00112.comcwts +++| NE B6,B2,WTS7 LOOP FOR 10 CHARACTERS
00114 M01S00113.comcwts +++| LX1 6 POSITION 9TH CHARACTER
00115 M01S00114.comcwts +++| BX6 X6+X2 ASSEMBLE CHARACTER
00116 M01S00115.comcwts +++| SB3 B3+B1 IN+1 = IN+1 + 1
00117 M01S00116.comcwts +++| BX6 X6+X1 ASSEMBLE CHARACTER
00118 M01S00117.comcwts +++| SB4 B4-B1 DECREMENT FREE BUFFER SPACE
00119 M01S00118.comcwts +++| SA6 X3 STORE WORD
00120 M01S00119.comcwts +++| SX4 X4+B1 COUNT WORD
00121 M01S00120.comcwts +++| SX3 B3-B1 IN = IN+1
00122 M01S00121.comcwts +++| NZ B4,WTS6 LOOP TO LAST CHARACTER OF FULL BUFFER
00123 M01S00122.comcwts +++| EQ WTS5 CHECK BUFFER POINTERS
00124 M01S00123.comcwts +++|
00125 M01S00124.comcwts +++|* PROCESS LAST .LE. 9 CHARACTERS
00126 M01S00125.comcwts +++|
00127 M01S00126.comcwts +++| WTS8 SX7 0 SET ADD-ON CHARACTER
00128 M01S00127.comcwts +++| SB2 54 (B2) = SHIFT COUNT
00129 M01S00128.comcwts +++| EQ B6,B7,WTS10 IF WORKING BUFFER EMPTY
00130 M01S00129.comcwts +++| SX2 B7-B6 SET CHARACTER COUNT REMAINING
00131 M01S00130.comcwts +++| LX2 59-0 CHECK FOR ODD OR EVEN CHARACTER COUNT
00132 M01S00131.comcwts +++| PL X2,WTS9 IF EVEN CHARACTER COUNT
00133 M01S00132.comcwts +++| SX7 1R
00134 M01S00133.comcwts +++| WTS9 LX1 X1,B2 POSITION CHARACTER
00135 M01S00134.comcwts +++| SB6 B6+B1 ADVANCE CHARACTER ADDRESS
00136 M01S00135.comcwts +++| SB2 B2-6 DECREMENT SHIFT COUNT
00137 M01S00136.comcwts +++| BX6 X6+X1 ASSEMBLE CHARACTER
00138 M01S00137.comcwts +++| SA1 B6 GET NEXT CHARACTER
00139 M01S00138.comcwts +++| NE B6,B7,WTS9 LOOP TO END OF BUFFER
00140 M01S00139.comcwts +++|
00141 M01S00140.comcwts +++|* PROCESS LAST WORD.
00142 M01S00141.comcwts +++|
00143 M01S00142.comcwts +++| WTS10 NZ X7,WTS11 IF ODD NUMBER OF CHARACTERS
00144 M01S00143.comcwts +++| ZR B2,WTS11 IF WORD FULL
00145 M01S00144.comcwts +++| SA1 A1-1 GET LAST CHARACTER IN BUFFER
00146 M01S00145.comcwts +++| NZ X1,WTS11 IF NOT *00* CHARACTER
00147 M01S00146.comcwts +++| SX7 2R PRESERVE *00* CHARACTER WITH * *
00148 M01S00147.comcwts +++| SB2 B2-6 REVISE SHIFT COUNT
00149 M01S00148.comcwts +++| WTS11 LX7 X7,B2 ADD LAST CHARACTER(S)
00150 M01S00149.comcwts +++| SA2 A3+B1 SET (A2) = IN
00151 M01S00150.comcwts +++| MX1 -12
00152 M01S00151.comcwts +++| BX6 X6+X7
00153 M01S00152.comcwts +++| SX4 X4+B1 COUNT WORD
00154 M01S00153.comcwts +++| SA6 X3 STORE LAST WORD
00155 M01S00154.comcwts +++| BX7 -X1*X6
00156 M01S00155.comcwts +++| SX2 B3 IN = IN+1
00157 M01S00156.comcwts +++| SB6 X4 SET WORD COUNT TRANSFERRED
00158 M01S00157.comcwts +++| SA3 A3 (X3) = FIRST
00159 M01S00158.comcwts +++| ZR X7,WTS13 IF VALID END OF LINE, EXIT
00160 M01S00159.comcwts +++| SB3 B3+B1 ADVANCE IN+1
00161 M01S00160.comcwts +++| SB4 B4-B1 DECREMENT FREE BUFFER SPACE
00162 M01S00161.comcwts +++| MX1 -6
00163 M01S00162.comcwts +++| BX1 -X1*X7 GET LAST CHARACTER
00164 M01S00163.comcwts +++| SX3 X2+ (X3) = IN
00165 M01S00164.comcwts +++| SB6 B7+ RESET CHARACTER POSITION
00166 M01S00165.comcwts +++| ZR B4,WTS5 IF FREE SPACE EXHAUSTED
00167 M01S00166.comcwts +++| SX6 B0+
00168 M01S00167.comcwts +++| NZ X1,WTS12 IF NOT *00* CHARACTER
00169 M01S00168.comcwts +++| SX6 2R PRESERVE *00* CHARACTER WITH * *
00170 M01S00169.comcwts +++| WTS12 LX6 48
00171 M01S00170.comcwts +++| SB6 X4+B1 RESET WORD COUNT
00172 M01S00171.comcwts +++| SA6 X2
00173 M01S00172.comcwts +++| SX2 B3 IN=IN+1
00174 M01S00173.comcwts +++| WTS13 SA1 A2+B1 SET OUT
00175 M01S00174.comcwts +++| SB4 X1
00176 M01S00175.comcwts +++| EQ =XWTX= EXIT
00177 M01S00176.comcwts +++|
00178 M01S00177.comcwts +++|
00179 M01S00178.comcwts +++| WTSA CON 0 FET STATUS PRIOR TO READING OUT
00180 M01S00179.comcwts +++| SPACE 4
00181 M01S00180.comcwts +++| BASE *
00182 M01S00181.comcwts +++| QUAL$ IF -DEF,QUAL$
00183 M01S00182.comcwts +++| QUAL *
00184 M01S00183.comcwts +++| WTS= EQU /COMCWTS/WTS=
00185 M01S00184.comcwts +++| QUAL$ ENDIF
00186 M01S00185.comcwts +++| ENDX