cdc:nos2.source:opl.opl871:common:comcwts
Common COMCWTS
1 Modification
Source
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
cdc/nos2.source/opl.opl871/common/comcwts.txt · Last modified: by 127.0.0.1