Seq # *Modification Id* Act
----------------------------+
00001 M01S00001.gmsg +++| IDENT GMSG
00002 M01S00002.gmsg +++| TITLE GET M860 MESSAGE AND ASSOCIATED DATA.
00003 M01S00003.gmsg +++| ENTRY GMSG
00004 M01S00004.gmsg +++| ENTRY GDATA
00005 M01S00005.gmsg +++| SST
00006 M01S00006.gmsg +++|*COMMENT GET M860 MESSAGE AND ASSOC. DATA.
Line S00007 Modification History |
M01 (Added by) | gmsg |
M02 (Updated by) | 281l803 |
Seq # *Modification Id* Act
----------------------------+
00007 M02S00007.281l803 ---| COMMENT COPYRIGHT CONTROL DATA CORP. 1982.
00008 M01S00001.281l803 +++| COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
00009 M01S00008.gmsg +++| SYSCOM B1
00010 M01S00009.gmsg +++| GMSG SPACE 4
00011 M01S00010.gmsg +++|*** GMSG - GET M860 MESSAGE AND ASSOCIATED DATA.
00012 M01S00011.gmsg +++|*
00013 M01S00012.gmsg +++|* W. J. STURGIS. 82/09/14.
00014 M01S00013.gmsg +++|*
00015 M01S00014.gmsg +++|* GMSG GETS A M860 MESSAGE AND VERIFIES THE CHECKSUM.
00016 M01S00015.gmsg +++|* THE MESSAGE UNPACKED AND RETURNED TO THE CALLER ALONG
00017 M01S00016.gmsg +++|* WITH A STATUS. ENTRY GDATA RETURNS AN ASSOCIATED DATA
00018 M01S00017.gmsg +++|* BLOCK TO THE CALLER ALONG WITH A STATUS.
00019 M01S00018.gmsg +++|*
00020 M01S00019.gmsg +++|* SYMPL CALLS
00021 M01S00020.gmsg +++|* GMSG(FET,MSG,STS);
00022 M01S00021.gmsg +++|* GDATA(FET,DATA,LEN,STS);
00023 M01S00022.gmsg +++|*
00024 M01S00023.gmsg +++|* WHERE
00025 M01S00024.gmsg +++|* FET = FET ASSRESS.
00026 M01S00025.gmsg +++|* MSG = MESSAGE BUFFER(UPPER 48 BITS OF 11 WORDS)
00027 M01S00026.gmsg +++|* DATA = ASSOCIATED DATA BUFFER.
00028 M01S00027.gmsg +++|* LEN = LENGTH OF ASSOCIATED DATA.
00029 M01S00028.gmsg +++|* STS = RETURN STATUS.
00030 M01S00029.gmsg +++|* 0 = NORMAL COMPLETE.
00031 M01S00030.gmsg +++|* 1 = CHECKSUM ERROR(GMSG ONLY).
00032 M01S00031.gmsg +++|* 2 = NOT ENOUGH DATA IN BUFFER(BUFFER IS EMPTY).
00033 M01S00032.gmsg +++| SPACE 4,10
00034 M01S00033.gmsg +++|* COMMON DECKS.
00035 M01S00034.gmsg +++|
00036 M01S00035.gmsg +++|
00037 M01S00036.gmsg +++|*CALL,COMCMAC
00038 M01S00037.gmsg +++| TITLE LOCAL MACROS.
00039 M01S00038.gmsg +++|** UPACK - UNPACK ONE MESSAGE WORD.
00040 M01S00039.gmsg +++|*
00041 M01S00040.gmsg +++|* UNPACK SC
00042 M01S00041.gmsg +++|*
00043 M01S00042.gmsg +++|* WHERE SC = MASK AND SHIDT COUNT.
00044 M01S00043.gmsg +++|
00045 M01S00044.gmsg +++|
00046 M01S00045.gmsg +++| PURGMAC UNPACK
00047 M01S00046.gmsg +++|
00048 M01S00047.gmsg +++| UPACK MACRO SC
00049 M01S00048.gmsg +++| SA1 A1+B1 GET NEXT PACKED WORD
00050 M01S00049.gmsg +++| MX0 SC
00051 M01S00050.gmsg +++| BX2 X0*X1
00052 M01S00051.gmsg +++| LX2 SC-48 POSITION TO LOWER OF PREVOIUS
00053 M01S00052.gmsg +++| BX6 X6+X2
00054 M01S00053.gmsg +++| SA6 B2 STORE UNPACKED WORD
00055 M01S00054.gmsg +++| SB2 B2+B1
00056 M01S00055.gmsg +++| BX6 -X0*X1 LOWER TO NEXT WORD
00057 M01S00056.gmsg +++| LX6 SC LEFT JUSTIFY
00058 M01S00057.gmsg +++| ENDM
00059 M01S00058.gmsg +++| TITLE MAIN ROUTINES.
00060 M01S00059.gmsg +++| GMSG SPACE 0
00061 M01S00060.gmsg +++| GMSG SUBR ENTRY/EXIT
00062 M01S00061.gmsg +++| SB1 1
00063 M01S00062.gmsg +++| SX7 A1
00064 M01S00063.gmsg +++| SA7 PARL SAVE PARAMETER LIST
00065 M01S00064.gmsg +++| SA0 X1 FET ADDRESS
00066 M01S00065.gmsg +++| SB6 MBUF
00067 M01S00066.gmsg +++| SB7 9
00068 M01S00067.gmsg +++| RJ RDW READ MESSAGE TO WORKING BUFFER
00069 M01S00068.gmsg +++| ZR B7,GMS2 IF FULL MESSAGE
00070 M01S00069.gmsg +++| SX6 2 FLAG PARTIAL OR NO MESSAGE
00071 M01S00070.gmsg +++| GMS1 SA1 PARL
00072 M01S00071.gmsg +++| SA1 X1+2
00073 M01S00072.gmsg +++| SA6 X1 STORE RESPONSE
00074 M01S00073.gmsg +++| EQ GMSGX RETURN
00075 M01S00074.gmsg +++|
00076 M01S00075.gmsg +++| GMS2 SA1 PARL
00077 M01S00076.gmsg +++| SA1 X1+B1 CALLER MESSAGE BUFFER
00078 M01S00077.gmsg +++| SB2 X1
00079 M01S00078.gmsg +++| SA1 MBUF-1 INITIALIZE A1
00080 M01S00079.gmsg +++| SB3 0 LOOP COUNTER
00081 M01S00080.gmsg +++| GMS3 SA1 A1+B1
00082 M01S00081.gmsg +++| MX0 48
00083 M01S00082.gmsg +++| BX6 X0*X1
00084 M01S00083.gmsg +++| SA6 B2
00085 M01S00084.gmsg +++| SB2 B2+B1
00086 M01S00085.gmsg +++| BX6 -X0*X1
00087 M01S00086.gmsg +++| LX6 48 LEFT JUSTIFY
00088 M01S00087.gmsg +++| UPACK 36
00089 M01S00088.gmsg +++| UPACK 24
00090 M01S00089.gmsg +++| UPACK 12
00091 M01S00090.gmsg +++| SA6 B2 STORE LAST WORD
00092 M01S00091.gmsg +++| SB2 B2+B1
00093 M01S00092.gmsg +++| SB3 B3+B1
00094 M01S00093.gmsg +++| LE B3,B1,GMS3
00095 M01S00094.gmsg +++| SA1 A1+B1
00096 M01S00095.gmsg +++| MX0 32 ONLY 32 BITS IN LAST WORD
00097 M01S00096.gmsg +++| BX6 X0*X1
00098 M01S00097.gmsg +++| SA6 B2
00099 M01S00098.gmsg +++|
00100 M01S00099.gmsg +++|* CHECKSUM MESSAGE
00101 M01S00100.gmsg +++|
00102 M01S00101.gmsg +++| SB3 B2-10 START OF MESSAGE
00103 M01S00102.gmsg +++| MX0 -16
00104 M01S00103.gmsg +++| BX6 X6-X6 INITIAL CHECKSUM
00105 M01S00104.gmsg +++| GMS4 SA1 B3 MESSAGE WORD
00106 M01S00105.gmsg +++| LX1 16
00107 M01S00106.gmsg +++| BX2 -X0*X1
00108 M01S00107.gmsg +++| IX6 X6+X2
00109 M01S00108.gmsg +++| LX1 16
00110 M01S00109.gmsg +++| BX2 -X0*X1
00111 M01S00110.gmsg +++| IX6 X6+X2
00112 M01S00111.gmsg +++| LX1 16
00113 M01S00112.gmsg +++| BX1 -X0*X1
00114 M01S00113.gmsg +++| IX6 X6+X1
00115 M01S00114.gmsg +++| SB3 B3+B1
00116 M01S00115.gmsg +++| LE B3,B2,GMS4 IF NOT ENTIRE MESSAGE
00117 M01S00116.gmsg +++| BX6 -X0*X6 IGNORE OVERFLOW
00118 M01S00117.gmsg +++| ZR X6,GMS1 IF CHECKSUM CORRECT
00119 M01S00118.gmsg +++| SX6 1 RETURN CHECKSUM ERROR STATUS
00120 M01S00119.gmsg +++| JP GMS1 STORE STATUS AND RETURN
00121 M01S00120.gmsg +++| EJECT
00122 M01S00121.gmsg +++| GDATA SPACE 0
00123 M01S00122.gmsg +++|** GDATA - GET ASSOCIATED DATA FROM BUFFER.
00124 M01S00123.gmsg +++|
00125 M01S00124.gmsg +++|
00126 M01S00125.gmsg +++| GDATA SUBR ENTRY/EXIT
00127 M01S00126.gmsg +++| SB1 1
00128 M01S00127.gmsg +++| SX7 A1
00129 M01S00128.gmsg +++| SA7 PARL SAVE PARAMETER LIST POINTER
00130 M01S00129.gmsg +++| SA0 X1 FET ADDRESS
00131 M01S00130.gmsg +++| SA1 A1+B1
00132 M01S00131.gmsg +++| SB6 X1 DATA BUFFER
00133 M01S00132.gmsg +++| SA1 A1+B1
00134 M01S00133.gmsg +++| SA1 X1
00135 M01S00134.gmsg +++| SB7 X1 LENGTH
00136 M01S00135.gmsg +++| RJ RDW MOVE DATA TO BUFFER
00137 M01S00136.gmsg +++| SX6 B7 REMAINDER WORD COUNT
00138 M01S00137.gmsg +++| ZR X6,GDA1 IF ALL DATA
00139 M01S00138.gmsg +++| SX6 2 SET NOT FULL BLOCK STATUS
00140 M01S00139.gmsg +++| GDA1 SA1 PARL
00141 M01S00140.gmsg +++| SA1 X1+3
00142 M01S00141.gmsg +++| SA6 X1 STORE RESPONSE
00143 M01S00142.gmsg +++| EQ GDATAX RETURN
00144 M01S00143.gmsg +++| TITLE SUBROUTINES.
00145 M01S00144.gmsg +++| RDW SPACE 4
00146 M01S00145.gmsg +++|** RDW - READ WORDS TO WORKING BUFFER.
00147 M01S00146.gmsg +++|*
00148 M01S00147.gmsg +++|** RDW READS A GIVEN NUMBER OF WORDS FROM A CIRCULAR
00149 M01S00148.gmsg +++|* BUFFER TO A WORKING BUFFER. RDW IS ADAPTED FROM RDW=(COMCRDW)
00150 M01S00149.gmsg +++|*
00151 M01S00150.gmsg +++|* ENTRY (A0) = ADDRESS OF FET FOR FILE.
00152 M01S00151.gmsg +++|* (B6) = FWA WORKING BUFFER.
00153 M01S00152.gmsg +++|* (B7) = WORD COUNT OF WORKING BUFFER.
00154 M01S00153.gmsg +++|* IF (B7) = 0, NO TRANSFER WILL BE PERFORMED.
00155 M01S00154.gmsg +++|*
00156 M01S00155.gmsg +++|* EXIT (B7) = 0 FOR TRANSFER COMPLETE.
00157 M01S00156.gmsg +++|* (B7) = REMAINING WORDS ON INCOMPLETE TRANSFER.
00158 M01S00157.gmsg +++|*
00159 M01S00158.gmsg +++|* USES X - 1, 2, 3, 4, 6, 7.
00160 M01S00159.gmsg +++|* B - 1, 2, 3, 4, 5, 6, 7.
00161 M01S00160.gmsg +++|* A - 1, 2, 3, 4, 6, 7.
00162 M01S00161.gmsg +++|*
00163 M01S00162.gmsg +++|* CALLS NONE.
00164 M01S00163.gmsg +++|
00165 M01S00164.gmsg +++|
00166 M01S00165.gmsg +++|* PROCESS 1 WORD OR BUFFER EMPTY.
00167 M01S00166.gmsg +++|
00168 M01S00167.gmsg +++| RDW18 ZR B3,RDWX IF NO DATA
00169 M01S00168.gmsg +++| BX7 X1 STORE 1 WORD
00170 M01S00169.gmsg +++| SA7 B6
00171 M01S00170.gmsg +++| RDW19 SX6 B4+B3 ADVANCE OUT
00172 M01S00171.gmsg +++| SB4 B4+B3
00173 M01S00172.gmsg +++| SB6 B6+B3
00174 M01S00173.gmsg +++| SB7 B7-B3
00175 M01S00174.gmsg +++| NE B4,B5,RDW20 IF OUT " LIMIT
00176 M01S00175.gmsg +++| SA1 A0+B1 READ FIRST
00177 M01S00176.gmsg +++| SX6 X1 OUT = FIRST
00178 M01S00177.gmsg +++| RDW20 SA6 A3 UPDATE OUT
00179 M01S00178.gmsg +++| NZ B7,RDW1 IF NOT DONE
00180 M01S00179.gmsg +++|
00181 M01S00180.gmsg +++| RDW SUBR ENTRY/EXIT
00182 M01S00181.gmsg +++| RDW0 SX1 B0+
00183 M01S00182.gmsg +++| LE B7,RDWX IF NO WORDS TO TRANSFER
00184 M01S00183.gmsg +++| RDW1 SA3 A0+3 (B4) = OUT
00185 M01S00184.gmsg +++| SA1 A0+2 (B3) = IN
00186 M01S00185.gmsg +++| SB1 1
00187 M01S00186.gmsg +++| SA4 A3+B1 (B5) = LIMIT
00188 M01S00187.gmsg +++| SB4 X3
00189 M01S00188.gmsg +++| SB3 X1
00190 M01S00189.gmsg +++| SA1 X3 READ FIRST WORD
00191 M01S00190.gmsg +++| SB5 X4
00192 M01S00191.gmsg +++| GE B3,B4,RDW2 IF NO END AROUND
00193 M01S00192.gmsg +++| SB3 B5
00194 M01S00193.gmsg +++| RDW2 SB3 B3-B4 FREE DATA LENGTH
00195 M01S00194.gmsg +++| LE B3,B7,RDW3 IF NOT ENOUGH ROOM
00196 M01S00195.gmsg +++| SB3 B7
00197 M01S00196.gmsg +++| RDWA BSS 0
00198 M01S00197.gmsg +++| RDW3 SA3 RDWB PRESET CMU CODE
00199 M01S00198.gmsg +++| RJ RDW16 PRESET CMU CODE
00200 M01S00199.gmsg +++|* LE B3,B1,RDW18 IF 1 WORD OR LESS OF DATA (NO CMU)
00201 M01S00200.gmsg +++|* BX7 X1 (NO CMU)
00202 M01S00201.gmsg +++|* SA1 A1+B1 (NO CMU)
00203 M01S00202.gmsg +++|*
00204 M01S00203.gmsg +++|* LE B3,B1,RDW18 IF 1 WORD OR LESS OF DATA (CMU)
00205 M01S00204.gmsg +++|* JP RDW14 (CMU)
00206 M01S00205.gmsg +++|
00207 M01S00206.gmsg +++|* INITIALIZE REGISTERS FOR TRANSFER.
00208 M01S00207.gmsg +++|
00209 M01S00208.gmsg +++| RDW4 SX4 B3-B1
00210 M01S00209.gmsg +++| MX6 -3
00211 M01S00210.gmsg +++| SA7 B6
00212 M01S00211.gmsg +++| BX3 -X6*X4 NUMBER OF ODD WORDS
00213 M01S00212.gmsg +++| AX4 3 NUMBER OF BLOCKS
00214 M01S00213.gmsg +++|
00215 M01S00214.gmsg +++|* TRANSFER UP TO 7 WORDS.
00216 M01S00215.gmsg +++|
00217 M01S00216.gmsg +++| ZR X3,RDW6 IF NO ODD WORDS
00218 M01S00217.gmsg +++| SB2 X3
00219 M01S00218.gmsg +++| RDW5 SB2 B2-B1
00220 M01S00219.gmsg +++| BX7 X1
00221 M01S00220.gmsg +++| SA1 A1+B1
00222 M01S00221.gmsg +++| SA7 A7+B1
00223 M01S00222.gmsg +++| NZ B2,RDW5 IF MORE WORDS
00224 M01S00223.gmsg +++|
00225 M01S00224.gmsg +++|* PRE-READ REGISTERS.
00226 M01S00225.gmsg +++|
00227 M01S00226.gmsg +++| RDW6 ZR X4,RDW19 IF NO BLOCKS
00228 M01S00227.gmsg +++| SA2 A1+B1
00229 M01S00228.gmsg +++| SB2 B1+B1 (B2) = 2
00230 M01S00229.gmsg +++| SA3 A2+B1
00231 M01S00230.gmsg +++| SB4 X4 (B4) = LOOP COUNT
00232 M01S00231.gmsg +++| SA4 A3+B1
00233 M01S00232.gmsg +++|
00234 M01S00233.gmsg +++|* TRANSFER 8 WORD BLOCKS.
00235 M01S00234.gmsg +++|
00236 M01S00235.gmsg +++| RDW7 BX6 X1
00237 M01S00236.gmsg +++| LX7 X2
00238 M01S00237.gmsg +++| SA1 A3+B2
00239 M01S00238.gmsg +++| SA2 A4+B2
00240 M01S00239.gmsg +++| SA6 A7+B1
00241 M01S00240.gmsg +++| SB4 B4-B1
00242 M01S00241.gmsg +++| SA7 A6+B1
00243 M01S00242.gmsg +++| BX6 X3
00244 M01S00243.gmsg +++| LX7 X4
00245 M01S00244.gmsg +++| SA3 A1+B2
00246 M01S00245.gmsg +++| SA4 A2+B2
00247 M01S00246.gmsg +++| SA6 A6+B2
00248 M01S00247.gmsg +++| SA7 A7+B2
00249 M01S00248.gmsg +++| BX6 X1
00250 M01S00249.gmsg +++| LX7 X2
00251 M01S00250.gmsg +++| SA1 A3+B2
00252 M01S00251.gmsg +++| SA2 A4+B2
00253 M01S00252.gmsg +++| SA6 A6+B2
00254 M01S00253.gmsg +++| SA7 A7+B2
00255 M01S00254.gmsg +++| BX6 X3
00256 M01S00255.gmsg +++| LX7 X4
00257 M01S00256.gmsg +++| SA3 A1+B2
00258 M01S00257.gmsg +++| SA4 A2+B2
00259 M01S00258.gmsg +++| SA6 A6+B2
00260 M01S00259.gmsg +++| SA7 A7+B2
00261 M01S00260.gmsg +++| NZ B4,RDW7 LOOP
00262 M01S00261.gmsg +++|
00263 M01S00262.gmsg +++|* READ EXIT.
00264 M01S00263.gmsg +++|
00265 M01S00264.gmsg +++| SA3 A0+3 OUT
00266 M01S00265.gmsg +++| SA1 A3+B1 (B5) = LIMIT
00267 M01S00266.gmsg +++| SB5 X1
00268 M01S00267.gmsg +++| RDW8 SB6 B6+B3
00269 M01S00268.gmsg +++| SB7 B7-B3
00270 M01S00269.gmsg +++| SB4 X3+B3 ADVANCE OUT
00271 M01S00270.gmsg +++| SX6 X3+B3
00272 M01S00271.gmsg +++| SA1 A0+1 READ FIRST
00273 M01S00272.gmsg +++| NE B4,B5,RDW20 IF OUT " LIMIT
00274 M01S00273.gmsg +++| SX6 X1+ OUT = FIRST
00275 M01S00274.gmsg +++| RDW9 EQ RDW20 CLEAN UP AND RETURN
00276 M01S00275.gmsg +++|
00277 M01S00276.gmsg +++|* MOVE DATA WITH CMU.
00278 M01S00277.gmsg +++|
00279 M01S00278.gmsg +++| RDW14 SX4 B3-819
00280 M01S00279.gmsg +++| PL X4,RDW15 IF MOVE TOO BIG FOR CMU
00281 M01S00280.gmsg +++| SX4 B3 10 * WORDS = CHARACTERS
00282 M01S00281.gmsg +++| LX6 X4,B1
00283 M01S00282.gmsg +++| BX1 X0 SAVE X0
00284 M01S00283.gmsg +++| LX4 3
00285 M01S00284.gmsg +++| IX6 X4+X6
00286 M01S00285.gmsg +++| SX7 B6 SET DESTINATION ADDRESS
00287 M01S00286.gmsg +++| LX3 30
00288 M01S00287.gmsg +++| MX4 -4
00289 M01S00288.gmsg +++| BX7 X7+X3
00290 M01S00289.gmsg +++| BX3 X4*X6 EXTRACT UPPER PORTION OF CHARACTER COUNT
00291 M01S00290.gmsg +++| LX3 48-4
00292 M01S00291.gmsg +++| BX4 -X4*X6
00293 M01S00292.gmsg +++| BX7 X3+X7
00294 M01S00293.gmsg +++| LX4 26
00295 M01S00294.gmsg +++| BX7 X4+X7
00296 M01S00295.gmsg +++| AX3 51
00297 M01S00296.gmsg +++| SA7 RDWB STORE DESCRIPTOR WORD
00298 M01S00297.gmsg +++| IM RDWB MOVE DATA
00299 M01S00298.gmsg +++| BX0 X1 RESTORE X0
00300 M01S00299.gmsg +++| ZR X3,RDW19 IF NO READ EXIT CHECK
00301 M01S00300.gmsg +++| SX3 B4 SET OUT
00302 M01S00301.gmsg +++| JP RDW8
00303 M01S00302.gmsg +++|
00304 M01S00303.gmsg +++| RDW15 BX7 X1
00305 M01S00304.gmsg +++| SA1 A1+B1
00306 M01S00305.gmsg +++| JP RDW4
00307 M01S00306.gmsg +++|
00308 M01S00307.gmsg +++|* PRESET FOR CMU.
00309 M01S00308.gmsg +++|* RDWB IS READ UP AND THEN RETURN JUMPED TO IN ORDER TO VOID
00310 M01S00309.gmsg +++|* THE INSTRUCTION STACK.
00311 M01S00310.gmsg +++|
00312 M01S00311.gmsg +++| RDWB LE B3,B1,RDW18 IF 1 WORD OR LESS (CMU)
00313 M01S00312.gmsg +++| JP RDW14
00314 M01S00313.gmsg +++|
00315 M01S00314.gmsg +++| RDW16 EQU RDWB USED TO VOID STACK AT PRESET
00316 M01S00315.gmsg +++|
00317 M01S00316.gmsg +++|* PRESET FOR CMU.
00318 M01S00317.gmsg +++|
00319 M01S00318.gmsg +++| SA4 CMUR CHECK IF CMU AVAIALABLE
00320 M01S00319.gmsg +++| SB3 RDWA
00321 M01S00320.gmsg +++| NG X4,RDW17 IF CMU
00322 M01S00321.gmsg +++| SA3 RDWC
00323 M01S00322.gmsg +++| RDW17 BX6 X3
00324 M01S00323.gmsg +++| SA6 B3
00325 M01S00324.gmsg +++| JP RDW1
00326 M01S00325.gmsg +++|
00327 M01S00326.gmsg +++| RDWC LE B3,B1,RDW18 IF 1 WORD OR LESS (NO CMU)
00328 M01S00327.gmsg +++| BX7 X1
00329 M01S00328.gmsg +++| SA1 A1+B1
00330 M01S00329.gmsg +++| TITLE WORKING STORAGE.
00331 M01S00330.gmsg +++|* WORKING STORAGE.
00332 M01S00331.gmsg +++|
00333 M01S00332.gmsg +++|
00334 M01S00333.gmsg +++| PARL BSS 1 PARAMETER LIST POINTER
00335 M01S00334.gmsg +++| MBUF BSS 9 MESSAGE BUFFER
00336 M01S00335.gmsg +++| SPACE 4
00337 M01S00336.gmsg +++| END