ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:06 2020 Source File: \kforph09.asm 1130 FORTRAN COMPILER PHASE 9 2 | *************************************************** K0900020 3 | * * K0900030 4 | *STATUS - VERSION 2 MODIFICATION 7 * K0900040 5 | * * K0900050 6 | *FUNCTION/OPERATION- * K0900060 7 | * * EXAMINES ONLY DATA STATEMENTS, BYPASSING ALL* K0900070 8 | * OTHER STATEMENTS. * K0900080 9 | * * CHECKS EACH VARIABLE FOR VALIDITY * K0900090 10 | * * CHECKS TO SEE THAT EACH VARIABLE NAME HAS * K0900100 11 | * BEEN ENTERED INTO THE SYMBOL TABLE. * K0900110 12 | * * CHECKS TO ENSURE THAT DIMENSIONING INDICATED* K0900120 13 | * IN THE DATA STATEMENT DOES NOT EXCEED THE * K0900130 14 | * DIMENSIONS INDICATED BY THE SYMBOL TBL ENTRY* K0900140 15 | * * CHECKS EACH DATA STMNT FOR CORRECT SYNTAX * K0900150 16 | * * REFORMATS THE DATA STMNT INTO A STRING OF * K0900160 17 | * DATA GROUPS. * K0900170 18 | * * K0900180 19 | *ENTRY POINTS- * K0900190 20 | * * BEGIN-PHASE 9 IS READ INTO CORE BY THE ROL * K0900200 21 | * PROGRAM AND EXECUTION BEGINS AT THIS ADDRESS* K0900210 22 | * * K0900220 23 | *INPUT- * K0900230 24 | * * THE STATEMENT STRING * K0900240 25 | * * THE SYMBOL TABLE * K0900250 26 | * * DCOM * K0900260 27 | * * K0900270 28 | *OUTPUT- * K0900280 29 | * * THE UPDATED STATEMENT STRING * K0900290 30 | * * THE UPDATED SYMBOL TABLE * K0900300 31 | * * DCOM * K0900310 32 | * * K0900320 33 | *EXTERNAL REFERENCES- * K0900330 34 | * SUBROUTINES- * K0900340 35 | * * ROL * K0900350 36 | * COMMA/DCOM- * K0900360 37 | * * $PHSE * K0900370 38 | * * K0900380 39 | *EXITS- * K0900390 40 | * NORMAL- * K0900400 41 | * * EXITS VIA A CALL TO THE ROL SUBROUTINE TO* K0900410 42 | * READ IN THE NEXT PHASE. * K0900420 43 | * * K0900430 44 | * ERROR- * K0900440 45 | * * OVERLAP-DOES NO PROCESSING AND EXITS * K0900450 46 | * NORMALLY * K0900460 47 | * * ERRORS DETECTED BY THIS PHASE ARE * K0900470 48 | * 75, 76, 77, 78, 79, 80, AND 82. * K0900480 49 | * * K0900490 50 | *TABLES/WORK AREAS-N/A * K0900500 51 | * * K0900510 52 | *ATTRIBUTES-NONE * K0900520 53 | * * K0900530 54 | *NOTES-N/A * K0900540 55 | * * K0900550 56 | *************************************************** K0900560 1130 FORTRAN COMPILER PHASE 9 58 | * K0900580 59 | ABS K0900590 60 | * K0900600 61 | * /8000 SYSTEM EQUATES K0900610 8000 62 | MEMRY EQU /8000 CORE SIZE K0900620 7A23 63 | OVERL EQU MEMRY-1501 PHASE OVERLAY AREA SIZE K0900630 7FBC 64 | ROL EQU MEMRY-68 K0900640 0078 65 | $PHSE EQU /78 K0900650 7A23 66 | ORG OVERL K0900660 0027 67 | PHID EQU 39 K0900670 68 | * K0900680 69 | * FORTRAN COMMUNICATION AREA K0900690 70 | * K0900700 7A23 71 | ORG BSS 1 ORIGIN ADDRESS 2-4 K0900705 7A24 72 | SOFS BSS 1 START OF STRING K0900710 7A25 73 | EOFS BSS 1 END OF STRING K0900720 7A26 74 | SOFST BSS 1 START OF SYMBOL TABLE K0900730 7A27 75 | SOFNS BSS 1 START OF NON-STATEMENT NUMBERS K0900740 7A28 76 | SOFXT BSS 1 START OF SUBSCRIPT TEMPORARIES K0900750 7A29 77 | SOFGT BSS 1 START OF GENERATED TEMPORARIES K0900760 7A2A 78 | EOFST BSS 1 END OF SYMBOL TABLE K0900770 7A2B 79 | COMON BSS 1 NEXT AVAILABLE COMMON K0900780 7A2C 80 | CSIZE BSS 1 SIZE OF COMMON K0900790 7A2D 81 | ERROR BSS 1 OVERLAP ERROR K0900800 7A2E 82 | FNAME BSS 1 PROGRAM NAME K0900810 7A2F 83 | BSS 1 * K0900820 7A30 84 | SORF BSS 1 SUBROUTINE(-) OR FUNCTION(+) K0900830 7A31 85 | CCWD BSS 1 CONTROL CARD WORD K0900840 86 | * BIT 15 TRANSFER TRACE K0900850 87 | * BIT 14 ARITHMETIC TRACE K0900860 88 | * BIT 13 EXTENDED PRECISION K0900870 89 | * BIT 12 LIST SYMBOL TABLE K0900880 90 | * BIT 11 LIST SUBPROGRAM NAMES K0900890 91 | * BIT 10 LIST SOURCE PROGRAM K0900900 92 | * BIT 9 ONE WORD INTEGERS K0900910 93 | * BIT 8 ORIGIN K0900920 7A32 94 | IOCS BSS 1 IOCS CONTROL CARD WORD K0900940 95 | * BIT 15 CARD K0900950 96 | * BIT 14 PAPER TAPE K0900960 97 | * BIT 13 TYPEWRITER K0900970 98 | * BIT 12 1443 PRINTER K0900980 99 | * BIT 11 MAGNETIC TAPE K0900990 100 | * BIT 10 KEYBOARD K0901000 101 | * BIT 8 DISK K0901010 102 | * BIT 3 PLOTTER K0901020 103 | * BIT 1 UNFORMATTED DISK K0901030 7A33 104 | DFCNT BSS 1 K0901040 105 | * K0901050 106 | * K0901060 107 | * K0901070 108 | * END OF FORTRAN COMMUNICATION K0901080 109 | * AREA K0901090 110 | * K0901100 7A36 111 | BPHAR EQU *+2 BEGINNING ADDR OF PHASE K0901110 7A34 0000 112 | DC 0 LOADER WORK AREA K0901120 7A35 FFD9 113 | DC -39 -PHASE ID FOR SLET LOOKUP K0901130 7A36 022E 114 | DC NXTPH-*+1 TABLE FOR NEXT PHASE ENTRY K0901140 7A37 0001 115 | DC 1 ONE ENTRY TO BE SET BY LDR K0901150 7A36 116 | ORG *-2 K0901160 117 | * K0901170 118 | * THIS PHASE PROCESSES THE DATA STATEMENT. INPUT IS K0901180 119 | * K0901190 120 | * ST-ID NAME1,...,NAMEN/CON1,...CONN/ K0901200 121 | * WHERE NAMES HAVE NOT YET BEEN LOOKED UP IN THE K0901210 122 | * SYMBOL LIST, REAL CONSTANTS ARE ALREADY CONVERTED K0901220 123 | * EXCEPT FOR SIGN, AND INTEGERS ARE NOT YET K0901230 124 | * CONVERTED. OUTPUT IS OF THE FORM K0901240 125 | * K0901250 126 | * ST-ID DATAGROUP HDR CON1 NAME1 DATAGROUP HDR K0901260 127 | * CON2 NAME2...DATAGROUP HDR CONN NAMEN K0901270 128 | * K0901280 129 | * WHERE THE DATAGROUP HDR IS OF THE FORM BIT0=0, K0901290 130 | * BIT 1-7=DUPLICATION FACTOR, BITS 8-15=CONSTANT K0901300 131 | * LENGTH. BIT 1 OF THE NAME PT=1 IF A DISPLACEMENT K0901310 132 | * WORD FOLLOWS, ELSE IT IS 0. ALL NAME PTS NOW K0901320 133 | * POINT TO THE SYMBOL LIST, AND ALL CONSTANTS ARE K0901330 134 | * CONVERTED. K0901340 135 | * K0901350 7A36 6127 136 | BEGIN LDX 1 PHID GET ID THIS PHASE K0901360 7A37 6D00 0078 137 | STX L1 $PHSE STORE IN SYSTEM PHASE AREA K0901370 7A39 C0F3 138 | LD ERROR OVERLAP ERROR SWITCH K0901380 7A3A 4C20 7C5E 139 | BSC L EXIT1,Z SKIP PHASE IF OVERLAP ERROR K0901390 7A3C C0E7 140 | LD SOFS START OF STRING ADDRESS K0901400 7A3D D400 7AC0 141 | STO L NEXT NEXT STMNT ID WORD ADDRESS K0901410 7A3F 6500 7E26 142 | LDX L1 WORK INDEX REG 1= WORK AREA ADDR K0901420 7A41 4068 143 | BSI FINDD FIND FIRST DATA STMNT K0901430 7A42 C06E 144 | LD START CURRENT STMNT ID WD ADDR K0901440 7A43 D400 7C43 145 | STO L ENDD PRESET FOR MOVE K0901450 7A45 C0EB 146 | LD CCWD CONTROL CARD WORD K0901460 7A46 E01E 147 | AND L4 EXTRACT BIT 13- PRECISION K0901470 7A47 1802 148 | SRA 2 RIGHT JUSTIFY K0901480 7A48 807D 149 | A TWO LENGTH=2 NORMAL, 3 EXTENDED K0901490 7A49 D400 7CD3 150 | STO L LNGTH REAL WORD LENGTH K0901500 7A4B D07C 151 | STO INTL SAVE AS INTEGER LENGTH K0901510 7A4C C0E4 152 | LD CCWD CONTROL CARD WORD K0901520 7A4D 1009 153 | SLA 9 ONE-WD INTEGER INDR TO SIGN K0901530 7A4E 180F 154 | SRA 15 RIGHT JUSTIFY INDICATOR K0901540 7A4F 4820 155 | BSC Z SKIP IF NO ONE-WD INTEGERS K0901550 7A50 D077 156 | STO INTL SET INTEGER LENGTH TO ONE K0901560 157 | * K0901570 158 | * FIND FIRST CONSTANT IN SUBSTATEMENT K0901580 159 | * K0901590 7A51 6E00 7C39 160 | FINDC STX L2 K SET K=J K0901600 7A53 6A0F 161 | STX 2 J SAVE J K0901610 7A54 162 | FNDC1 EQU * LABEL FNDC1 EQUALS LOOP1 K0901620 7A54 C480 7C39 163 | LOOP1 LD I K NEXT STMNT WORD K0901630 7A56 9072 164 | S SLASH SLASH CONSTANT K0901640 7A57 4C18 7A66 165 | BSC L LOOP2,+- BRANCH IF SLASH K0901650 7A59 7401 7C39 166 | MDX L K,1 INCREMENT K=K+1 K0901660 7A5B C064 167 | LD NEXT ADDR NEXT STMNT ID WORD K0901670 7A5C 9400 7C39 168 | S L K ADDR CURRENT STMNT POINTER K0901680 7A5E 4C20 7A54 169 | BSC L LOOP1,Z BR IF NOT STMNT END K0901690 7A60 614B 170 | ERR8 LDX X1 D8 ILLEGAL STATEMENT FORMAT K0901700 7A61 4C00 7C2B 171 | BSC L ERR BR TO SET UP ERROR 75 K0901710 172 | * K0901720 173 | * CONSTANTS AND WORK AREA K0901730 174 | * K0901740 7A63 175 | J BSS 1 INDEX FOR VARIABLES K0901750 7A64 176 | HDRPT BSS 1 DATA GROUP HEADER WD PT K0901760 7A65 0004 177 | L4 DC 4 DECIMAL 4 K0901770 178 | * K0901780 179 | * CHECK FOR NAMES K0901790 180 | * K0901800 7A66 D400 7B7F 181 | LOOP2 STO L SUB CLEAR SUBSCRIPT K0901810 7A68 C400 7C39 182 | LD L K CURRENT POINTER ADDRESS K0901820 7A6A 90F8 183 | S J POINTER AFTER LAST CONSTANT K0901830 7A6B 1801 184 | SRA 1 K0901840 7A6C 4C20 7A72 185 | BSC L NEXTC+1,Z BR IF NAMES SPECIFIED K0901850 7A6E 614B 186 | LDX X1 D1 NO NAMES SPECIFIED K0901860 7A6F 4C00 7C2B 187 | BSC L ERR BR TO SET UP ERROR 75 K0901870 7A71 188 | NEXTC EQU * LABEL FOR NEXT INSTRUCTION K0901880 7A71 6AF1 189 | STX 2 J SAVE POINTER AFTER LAST CON K0901890 7A72 7401 7C39 190 | MDX L K,1 INCR INTER-STMNT POINTER K0901900 7A74 69EF 191 | STX 1 HDRPT HEADER WORD POINTER K0901910 7A75 4028 192 | BSI INCRP INCR WORK AREA POINTER K0901920 7A76 4400 7C7A 193 | BSI L GCON BR TO GET NEXT CONSTANT K0901930 7A78 C04E 194 | LD CONL CONSTANT LENGTH INDR K0901940 7A79 4C18 7A60 195 | BSC L ERR8,+- BR IF CONSTANT NOT FOUND K0901950 7A7B 6201 196 | LDX 2 1 K0901960 7A7C 6A75 197 | STX 2 DUP DUPLICATION FACTOR=1 K0901970 7A7D C480 7C39 198 | LD I K NEXT STMNT WORD K0901980 7A7F 901C 199 | S STAR ASTERISK CONSTANT K0901990 7A80 4C20 7ACA 200 | BSC L BLDH,Z BR IF NOT ASTERISK K0902000 7A82 C044 201 | LD CONL CONSTANT LENGTH INDICATOR K0902010 7A83 9400 7C3E 202 | S L ONE K0902020 7A85 4C18 7A8A 203 | BSC L *+3,+- BR IF CONSTANT LENGTH=1 K0902030 7A87 614B 204 | ERR2 LDX X1 D2 NOT A POSITIVE INTEGER K0902040 7A88 4C00 7C2B 205 | BSC L ERR BR TO SET UP ERROR 75 K0902050 7A8A C1FF 206 | LD 1 -1 LAST WORD HEADER WORK AREA K0902060 7A8B 4C28 7A87 207 | BSC L ERR2,Z+ BR TO SET ERROR 75 K0902070 7A8D D064 208 | STO DUP SAVE FOR NAME ITERATION K0902080 7A8E 900E 209 | S TOP CHECK DUPLICATION SIZE K0902090 7A8F 4C10 7A87 210 | BSC L ERR2,- BR IF TOO LARGE K0902100 7A91 7401 7C39 211 | MDX L K,1 INCREMENT K K0902110 7A93 71FF 212 | MDX 1 -1 MOVE WORK AREA POINTER K0902120 7A94 4400 7C7A 213 | BSI L GCON GET NEXT CONSTANT K0902130 7A96 C030 214 | LD CONL CONSTANT LENGTH INDR K0902140 7A97 4C20 7ACA 215 | BSC L BLDH,Z BR IF CONSTANT FOUND K0902150 7A99 614B 216 | LDX X1 D3 SET UP ERROR 75 IF CONSTANT K0902160 7A9A 4C00 7C2B 217 | BSC L ERR NOT FOUND AFTER DUP FACTOR K0902170 218 | * K0902180 219 | * CONSTANTS K0902190 220 | * K0902200 7A9C 001C 221 | STAR DC /1C ASTERISK CONSTANT K0902210 7A9D 1000 222 | TOP DC /1000 DUPLICATION FACTOR LIMIT K0902220 223 | * K0902230 224 | * THIS ROUTINE INCREMENTS X1, THE WORK AREA POINTER K0902240 225 | * BY ONE, CHECKING TO SEE THAT THE LIMIT OF THE K0902250 226 | * AREA IS NOT EXCEEDED. IF IT IS EXCEEDED, THE K0902260 227 | * STATEMENT RECEIVES AN ERROR 82. K0902270 228 | * K0902280 7A9E 229 | INCRP BSS 1 RETURN ADDR K0902290 7A9F 7101 230 | MDX 1 1 INCR WORK AREA POINTER K0902300 7AA0 6908 231 | STX 1 WKAA K0902310 7AA1 C007 232 | LD WKAA WORK AREA POINTER K0902320 7AA2 9005 233 | S WKNDA WORK AREA END ADDRESS K0902330 7AA3 4CA8 7A9E 234 | BSC I INCRP,+Z EXIT IF NO OVERLAP K0902340 7AA5 6152 235 | LDX 1 D15 OVERLAP ERROR INDICATED K0902350 7AA6 4C00 7C2B 236 | BSC L ERR SET UP ERROR 82 K0902360 237 | * K0902370 238 | * CONSTANT AND WORK AREA K0902380 239 | * K0902390 7AA8 7F8A 240 | WKNDA DC WKEND ADDR END OF WORK AREA K0902400 7AA9 0000 241 | WKAA DC *-* CURRENT END OF WORK AREA K0902410 242 | * K0902420 243 | * THIS ROUTINE LOCATES THE NEXT DATA STATEMENT. K0902430 244 | * THE POINTERS START AND NEXT ARE UPDATED TO POINT K0902440 245 | * TO THE START OF THE NEXT DATA STATEMENT AND TO K0902450 246 | * THE STATEMENT FOLLOWING, RESPECTIVELY. K0902460 247 | * K0902470 7AAA 248 | FINDD BSS 1 RETURN ADDRESS K0902480 7AAB 6680 7AC0 249 | LDX I2 NEXT POINTER TO NEXT STMNT ID WD K0902490 7AAD 6E00 7C41 250 | STX L2 SAVE+1 SAVE FOR MOVE K0902500 7AAF 6A01 251 | FNDD1 STX 2 START SAVE AS START OF STMNT K0902510 7AB1 252 | START EQU *+1 LABEL NEXT INSTRUCTION ADDR K0902520 7AB0 C400 0000 253 | LD L *-* STMNT ID WORD K0902530 7AB2 1802 254 | SRA 2 RIGHT JUSTIFY STMNT WD CNT K0902540 7AB3 E00E 255 | AND L1FF EXRACT WORD COUNT K0902550 7AB4 80FC 256 | A START START OF STMNT ADDR K0902560 7AB5 D00A 257 | STO NEXT ADDR OF NEXT STMNT ID WORD K0902570 7AB6 9400 7A25 258 | S L EOFS END OF STRING ADDRESS K0902580 7AB8 4C30 7C57 259 | BSC L EXIT,Z- EXIT IF END OF STRING K0902590 7ABA C200 260 | LD 2 0 STMNT ID WORD K0902600 7ABB 180B 261 | SRA 11 RIGHT JUSTIFY STMNT TYPE K0902610 7ABC 9006 262 | S DATA DATA STMNT TYPE CONSTANT K0902620 7ABD 4C98 7AAA 263 | BSC I FINDD,+- EXIT IF DATA STMNT K0902630 7AC0 264 | NEXT EQU *+1 LABEL NEXT INSTRUCTION ADDR K0902640 7ABF 6600 0000 265 | LDX L2 *-* SET POINTER NEXT STMNT ID K0902650 7AC1 70ED 266 | MDX FNDD1 BR TO FIND NEXT STMNT ID WD K0902660 267 | * K0902670 268 | * CONSTANTS AND WORK AREA K0902680 269 | * K0902690 7AC2 01FF 270 | L1FF DC /1FF STMNT WD COUNT MASK K0902700 7AC3 001F 271 | DATA DC /1F DATA STMNT TYPE CODE K0902710 7AC4 8001 272 | H8000 DC /8001 NAME BIT PLUS 1 K0902720 7AC5 0020 273 | H20 DC /20 DEFINED BIT K0902730 7AC6 0002 274 | TWO DC 2 DECIMAL TWO K0902740 7AC7 275 | CONL BSS 1 LENGTH OF CONSTANT K0902750 7AC8 276 | INTL BSS 1 INTEGER ELEMENT LENGTH K0902760 7AC9 0021 277 | SLASH DC /21 / CONSTANT K0902770 278 | * K0902780 279 | * BUILD DATAGROUP HEADER WORD K0902790 280 | * K0902800 7ACA C0FC 281 | BLDH LD CONL CONSTANT LENGTH K0902810 7ACB D028 282 | STO CONLT SAVE FOR NAME ITERATION K0902820 7ACC C025 283 | LD DUP DUPLICATION FACTOR K0902830 7ACD 1003 284 | SLA 3 TO HIGH 13 BITS K0902840 7ACE 80F8 285 | A CONL CONSTANT LENGTH K0902850 7ACF D480 7A64 286 | STO I HDRPT DATAGROUP HEADER WORD K0902860 7AD1 C025 287 | LD CONTP CONSTANT TYPE K0902870 7AD2 D022 288 | STO CONTT SAVE FOR NAME ITERATION K0902880 7AD3 6680 7A63 289 | LDX I2 J SET INDEX REG 2 = J K0902890 7AD5 7400 7B7F 290 | MDX L SUB,0 CHECK SUBSC TEMP-SKIP IF 0 K0902900 7AD7 702B 291 | MDX NXTN4+1 BR IF NAME NOT YET FULL K0902910 7AD8 7201 292 | NEXTN MDX 2 1 INCR J=J+1 K0902920 7AD9 C200 293 | LD 2 0 NEXT STMNT WORD K0902930 7ADA 4C10 7A87 294 | BSC L ERR2,- BR IF NOT A NAME 2-6 K0902940 7ADC 6780 7A27 295 | LDX I3 SOFNS INDEX REG 3=SYMBOL TABLE PT K0902950 7ADE C200 296 | NXTN1 LD 2 0 NEXT STMNT WORD K0902960 7ADF 9301 297 | S 3 1 SYMBOL TABLE ENTRY K0902970 7AE0 4C18 7AF9 298 | BSC L NXTN3,+- BR IF NAME FOUND K0902980 7AE2 299 | NXTNA EQU * LABEL NEXT INSTRUCTION K0902990 7AE2 C300 300 | LD 3 0 EXTRACT DIMENSION K0903000 7AE3 1003 301 | SLA 3 *INFORMATION K0903010 7AE4 180E 302 | SRA 14 * K0903020 7AE5 4820 303 | BSC Z SKIP NEXT IF NO DIMENSION K0903030 7AE6 73FD 304 | MDX 3 -3 DECR SYMBOL TABLE POINTER K0903040 7AE7 73FD 305 | MDX 3 -3 DECR SYMBOL TABLE POINTER K0903050 7AE8 6B0A 306 | STX 3 NOST ADDR TEMP K0903060 7AE9 C009 307 | LD NOST CURRENT SYMBOL TBL POINTER K0903070 7AEA 9400 7A2A 308 | S L EOFST END OF SYMBOL TABLE ADDRESS K0903080 7AEC 4C20 7ADE 309 | BSC L NXTN1,Z BR IF NOT STRING END K0903090 7AEE 6150 310 | ERR4 LDX X1 D4 NAME IS UNDEFINED K0903100 7AEF 4C00 7C2B 311 | BSC L ERR SET UP ERROR 80 K0903110 312 | * K0903120 313 | * CONSTANTS AND WORK AREA K0903130 314 | * K0903140 7AF1 0003 315 | THREE DC 3 DECIMAL 3 CONSTANT K0903150 7AF2 316 | DUP BSS 1 DUPLICATION FACTOR K0903160 7AF3 317 | NOST BSS 1 INTEGER SAVE TEMPORARY K0903170 7AF4 318 | CONLT BSS 1 CONSTANT LENGTH TEMPORARY K0903180 7AF5 319 | CONTT BSS 1 CONSTANT TYPE TEMPORARY K0903190 7AF6 4040 320 | BLANK DC /4040 WORD OF EBCDIC BLANKS K0903200 7AF7 321 | CONTP BSS 1 CONSTANT TYPE K0903210 7AF8 8000 322 | T8000 DC /8000 NAME BIT CONSTANT K0903220 323 | * K0903230 324 | * CONTINUE BUILD DATAGROUP HEADER WORD K0903240 325 | * K0903250 7AF9 C201 326 | NXTN3 LD 2 1 NEXT STMNT WORD K0903260 7AFA 4810 327 | BSC - SKIP IF 2ND WORD OF NAME K0903270 7AFB C0FC 328 | LD T8000 BLANK 2ND WORD OF NAME K0903280 7AFC 9302 329 | S 3 2 2ND WD FR SYMBOL TABLE K0903290 7AFD 4C20 7AE2 330 | BSC L NXTNA,Z BR IF NAME NOT FOUND K0903300 7AFF C201 331 | LD 2 1 2ND HALF OF NAME K0903310 7B00 4828 332 | BSC +Z SKIP NEXT IF NOT NAME K0903320 7B01 7201 333 | MDX 2 1 INCR STMNT POINTER J=J+1 K0903330 7B02 334 | NXTN4 EQU * LABEL FOR NEXT INSTRUCTION K0903340 7B02 7201 335 | MDX 2 1 INCR STMNT POINTER K0903350 7B03 6BEF 336 | STX 3 NOST SYMBOL TABLE POINTER K0903360 7B04 C400 7A26 337 | LD L SOFST START OF SYMBOL TABLE ADDR K0903370 7B06 90EC 338 | S NOST CURRENT POINTER VALUE K0903380 7B07 1890 339 | SRT 16 MAKE NORMAL DIVIDEND K0903390 7B08 A8E8 340 | D THREE NO. OF WORDS PER ENTRY K0903400 7B09 80BA 341 | A H8000 NAME BIT K0903410 7B0A D035 342 | STO TNAME STORE NAME K0903420 343 | * K0903430 7B0B C300 344 | LD 3 0 SYMBOL TABLE ID WORD K0903440 7B0C E8B8 345 | OR H20 SET DEFINED BIT K0903450 7B0D D300 346 | STO 3 0 RESTORE ID WORD K0903460 7B0E 4C08 7B1C 347 | BSC L ERR9,+ BR IF NOT A VARIABLE- ERROR K0903470 7B10 180A 348 | SRA 10 IS IT A DUMMY VARIABLE 2-5 K0903472 7B11 4C04 7AEE 349 | BSC L ERR4,E ERROR 80 IF YES 2-5 K0903474 7B13 1804 350 | SRA 4 DATA TYPE BITS K0903480 7B14 D0DE 351 | STO NOST K0903490 7B15 90DF 352 | S CONTT CON TYPE TEMPORARY K0903500 7B16 4C18 7B1F 353 | BSC L NXTN8,+- BR IF SAME TYPE K0903510 7B18 C0DC 354 | LD CONTT CONSTANT TYPE TEMP K0903520 7B19 90AC 355 | S TWO K0903530 7B1A 4C18 7B1F 356 | BSC L *+3,+- BR IF HOLLERITH DATA K0903540 7B1C 614D 357 | ERR9 LDX 1 D9 DATA TYPES DO NOT MATCH K0903550 7B1D 4C00 7C2B 358 | BSC L ERR SET UP ERROR 77 K0903560 7B1F C0D3 359 | NXTN8 LD NOST CON TYPE 2-1 K0903570 7B20 4C20 7B26 360 | BSC L INT,Z BR IF INTEGER 2-1 K0903580 7B22 C400 7CD3 361 | LD L LNGTH LENGTH OF REAL 2-1 K0903590 7B24 D05E 362 | STO NAML CURRENT LENGTH 2-1 K0903600 7B25 7004 363 | MDX *+4 2-1 K0903610 7B26 C0A1 364 | INT LD INTL LENGTH OF INTEGER 2-1 K0903620 7B27 D05B 365 | STO NAML CURRENT LENGTH 2-1 K0903630 7B28 C400 7C3E 366 | LD L ONE 2-1 K0903640 7B2A 90C9 367 | S CONLT CONSTANT LENGTH TEMPORARY K0903650 7B2B 4C28 7CCF 368 | BSC L ERR11,+Z BR TO SET UP ERR 78 IF NEG K0903660 7B2D 4C08 7B41 369 | BSC L NXT8A,+ BRANCH IF ZERO K0903670 370 | * K0903680 7B2F C0C5 371 | LD CONTT K0903690 7B30 9095 372 | S TWO K0903700 7B31 4C20 7B41 373 | BSC L NXT8A,Z BRANCH IF NOT ALPHA CONST K0903710 374 | * K0903720 7B33 C0C2 375 | LD BLANK PACK CONSTANT WITH BLANKS K0903730 7B34 D100 376 | STO 1 0 * K0903740 7B35 4400 7A9E 377 | BSI L INCRP K0903750 7B37 C480 7A64 378 | LD I HDRPT ADJUST HEADER K0903760 7B39 8400 7C3E 379 | A L ONE * K0903770 7B3B D480 7A64 380 | STO I HDRPT * K0903780 7B3D 7401 7AF4 381 | MDX L CONLT,1 INCREMENT CONSTANT LENGTH K0903790 7B3F 70DF 382 | MDX NXTN8 CONTINUE K0903800 383 | * K0903810 7B40 0000 384 | TNAME DC 0 NAME SAVE AREA K0903820 385 | * K0903830 7B41 C0FE 386 | NXT8A LD TNAME OUTPUT NAME K0903840 7B42 D100 387 | STO 1 0 * K0903850 7B43 4400 7A9E 388 | BSI L INCRP * K0903860 389 | * K0903870 7B45 C300 390 | LD 3 0 SYMBOL TABLE ID WORD K0903880 7B46 1003 391 | SLA 3 EXTRACT AND RIGHT JUSTIFY K0903890 7B47 180E 392 | SRA 14 DIMENSION BITS. K0903900 7B48 D063 393 | STO DIMN SAVE DIMENSIONALITY K0903910 7B49 D03A 394 | STO DIMNT SAVE FOR SUBSC CALCULATION K0903920 7B4A 4C18 7B56 395 | BSC L NXTN7,+- BR IF NOT DIMENSIONED K0903930 7B4C 4400 7A9E 396 | BSI L INCRP INCR WORK AREA POINTER K0903940 7B4E 7400 7B7F 397 | MDX L SUB,0 TEST FOR SUBSCRIPT K0903950 7B50 705C 398 | MDX NXTN2 BR IF SUBSCRIPT K0903960 7B51 71FF 399 | MDX 1 -1 DECR WORK AREA POINTER K0903970 7B52 C200 400 | LD 2 0 NEXT STMNT WORD K0903980 7B53 902D 401 | S LPAR LEFT PARENTHESIS CONSTANT K0903990 7B54 4C18 7B92 402 | BSC L NXTN5,+- BR TO GET SUBSCRIPT K0904000 7B56 C400 7C3E 403 | NXTN7 LD L ONE K0904010 7B58 7400 7BAC 404 | MDX L DIMN,0 SKIP IF NOT DIMENSIONED K0904020 7B5A C3FD 405 | LD 3 -3 NEXT SYMBOL ID WORD K0904030 7B5B 9023 406 | S SUB REMAINING ELEMENTS IN NAME K0904040 7B5C 4C30 7B61 407 | BSC L *+3,-Z BR IF SUBSCRIPT OK K0904050 7B5E 408 | ERR13 EQU * LABEL FOR NEXT INSTRUCTION K0904060 7B5E 6121 409 | LDX X1 D13 SUBSCRIPT TOO LARGE K0904070 7B5F 4C00 7C2B 410 | GERR BSC L ERR SET UP ERROR 33 K0904080 7B61 9090 411 | S DUP DUPLICATION FACTOR K0904090 7B62 D01D 412 | STO TEMP REMAINING AFTER THIS CON K0904100 7B63 4C08 7B69 413 | BSC L NXTN9,+ BF IF NAME FULL OR OVERFLOW K0904110 7B65 C3FD 414 | LD 3 -3 NEXT ENTRY ID WORD K0904120 7B66 9019 415 | S TEMP REMAINDER K0904130 7B67 D017 416 | STO SUB SUBSCRIPT FOR NEXT CONSTANT K0904140 7B68 7058 417 | MDX COM BR TO TEST FOR ANOTHER CON K0904150 7B69 1810 418 | NXTN9 SRA 16 K0904160 7B6A D014 419 | STO SUB CLEAR SUBSCRIPT K0904170 7B6B 9014 420 | S TEMP REMAINDER K0904180 7B6C D085 421 | STO DUP DUPCTN FACTOR FOR NEXT NAME K0904190 7B6D 4C18 7B74 422 | BSC L *+5,+- BR IF CONSTANT EXHAUSTED K0904200 7B6F C200 423 | LD 2 0 NEXT STMNT WORD K0904210 7B70 9014 424 | S COMMA COMMA CONSTANT K0904220 7B71 4C18 7AD8 425 | BSC L NEXTN,+- BR CONSTANT NOT EXHAUSTED K0904230 7B73 7055 426 | MDX ERR7 NO COMMA AFTER NAME K0904240 7B74 C200 427 | LD 2 0 NEXT STMNT WORD K0904250 7B75 900F 428 | S COMMA COMMA CONSTANT K0904260 7B76 4C18 7BC1 429 | BSC L COM,+- BR IF COMMA K0904270 7B78 430 | SLSH2 EQU * LABEL FOR NEXT INSTRUCITON K0904280 7B78 C200 431 | LD 2 0 NEXT STMNT WORD K0904290 7B79 9400 7AC9 432 | S L SLASH SLASH CONSTANT K0904300 7B7B 4C18 7BCB 433 | BSC L SLSH,+- BR IF SLASH K0904310 7B7D 614B 434 | LDX X1 D5 ILLEGAL CHAR AFTER NAME K0904320 7B7E 70E0 435 | MDX GERR BR TO SET UP ERROR 75 K0904330 436 | * K0904340 437 | * CONSTANTS AND WORK AREA K0904350 438 | * K0904360 7B7F 0000 439 | SUB DC 0 SUBSCRIPT TEMPORARY K0904370 7B80 440 | TEMP BSS 1 REMAINDER TEMPORARY K0904380 7B81 000D 441 | LPAR DC /0D LEFT PARENTHESIS CONSTANT K0904390 7B82 4000 442 | H4000 DC /4000 NAME SUBSCRIPT BIT K0904400 7B83 443 | NAML BSS 1 CURRENT DIMENSION LENGTH K0904410 7B84 0000 444 | DIMNT DC 0 DIMENSION TEMPORARY K0904420 7B85 002B 445 | COMMA DC /2B COMMA CONSTANT K0904430 7B86 7B87 446 | SUBSW DC * SUBSCRIPTED ELEMENT SWITCH K0904440 447 | * K0904450 448 | * CALCULATE VECTOR DISPLACEMENT FROM K0904460 449 | * VARIABLE STATEMENT K0904470 450 | * K0904480 7B87 C200 451 | NEXTS LD 2 0 NEXT STMNT WORD K0904490 7B88 90FC 452 | S COMMA COMMA CONSTANT K0904500 7B89 4C20 7B5E 453 | BSC L ERR13,Z BR NO COMMA BETWEEN SUBSC K0904510 7B8B 71FF 454 | MDX 1 -1 DECR WORK AREA POINTER K0904520 7B8C 4400 7C68 455 | BSI L GCONS GET NEXT SUBSCRIPT INTEGER K0904530 7B8E A300 456 | M 3 0 MPY BY DIMENSION K0904540 7B8F 18D0 457 | RTE 16 PRODUCT TO ACC K0904550 7B90 80EE 458 | A SUB ACCUMULATED VALUE K0904560 7B91 7008 459 | MDX TESTS BR TO SAVE AND TEST SUBSC K0904570 7B92 D0F3 460 | NXTN5 STO SUBSW SET SUBSCRIPTED ELT SWITCH K0904580 7B93 C400 7C39 461 | LD L K K0904590 7B95 D0EA 462 | STO TEMP SAVE K K0904600 7B96 6E00 7C39 463 | STX L2 K K=J K0904610 7B98 4400 7C68 464 | BSI L GCONS GET SUBSCRIPT INTEGER K0904620 7B9A D0E4 465 | TESTS STO SUB SAVE ACCUMULATED RESULT K0904630 7B9B 93FF 466 | S 3 -1 TEST FOR CURRENT SIZE K0904640 7B9C 4C10 7B5E 467 | BSC L ERR13,- TOO LARGE K0904650 7B9E 73FF 468 | MDX 3 -1 MOVE DIMENSION PT BACK ONE K0904660 7B9F 74FF 7B84 469 | MDX L DIMNT,-1 TEST IF MORE SUBSC EXPECTED K0904670 7BA1 70E5 470 | MDX NEXTS YES K0904680 7BA2 C0DD 471 | NXTN6 LD TEMP K FROM TEMPORARY K0904690 7BA3 D400 7C39 472 | STO L K RESET K K0904700 7BA5 7201 473 | MDX 2 1 INCREMENT STMNT POINTER K0904710 7BA6 C2FF 474 | LD 2 -1 LAST STMNT WORD K0904720 7BA7 9400 7C3B 475 | S L RPAR RIGHT PARENTHESIS CONSTANT K0904730 7BA9 4C20 7B5E 476 | BSC L ERR13,Z BR NOT RIGHT PARENTHESIS K0904740 7BAC 477 | DIMN EQU *+1 NUMBER OF DIMENSIONS K0904750 7BAB 7700 0000 478 | MDX L3 *-* RESET SYMBOL TBL POINTER K0904760 7BAD C0D1 479 | NXTN2 LD SUB SUBSCRIPT TEMP K0904770 7BAE A0D4 480 | M NAML GET TRUE DISPLACEMENT K0904780 7BAF 1090 481 | SLT 16 PRODUCT TO ACC K0904790 7BB0 D1FF 482 | STO 1 -1 STORE SUBSCRIPT IN WORK K0904800 7BB1 C1FE 483 | LD 1 -2 NAME WORD K0904810 7BB2 E8CF 484 | OR H4000 SET SUBSCRIPT BIT IN NAME K0904820 7BB3 D1FE 485 | STO 1 -2 RESTORE NAME WORD K0904830 7BB4 7400 7B86 486 | MDX L SUBSW,0 SKIP IF SUBSCRIPTED ELT K0904840 7BB6 709F 487 | MDX NXTN7 BR TO FIND MORE ENTRIES K0904850 7BB7 68CE 488 | STX SUBSW RESET SUBSCRIPTED ELT SW K0904860 7BB8 1010 489 | SLA 16 LOAD ZERO K0904870 7BB9 D0F2 490 | STO DIMN ZERO NO. OF DIMENSIONS K0904880 7BBA D0C9 491 | STO DIMNT ZERO WORK AREA K0904890 7BBB D0C3 492 | STO SUB ZERO SUBSCRIPTS K0904900 7BBC C1FE 493 | LD 1 -2 SET SUBSCRIPTED ELEMENT K0904910 7BBD E802 494 | OR H2000 *BIT INTO NAME POINTER K0904920 7BBE D1FE 495 | STO 1 -2 * K0904930 7BBF 7096 496 | MDX NXTN7 BR TO FIND MORE K0904940 7BC0 2000 497 | H2000 DC /2000 SUBSCRIPTED ELEMENT BIT K0904950 7BC1 498 | COM EQU * LABEL FOR NEXT INSTRUCTION K0904960 7BC1 C480 7C39 499 | LD I K NEXT STMNT WORD K0904970 7BC3 90C1 500 | S COMMA COMMA CONSTANT K0904980 7BC4 4C18 7A71 501 | BSC L NEXTC,+- NEXT CON IF MORE IN LIST K0904990 7BC6 7400 7B7F 502 | MDX L SUB,0 SKIP NEXT SUBSCRIPT = ZERO K0905000 7BC8 70AF 503 | MDX SLSH2 CHK FOR UNFILLED LAST NAME K0905010 7BC9 614C 504 | ERR7 LDX X1 D7 NO. OF CONS, NAMES UNEQUAL K0905020 7BCA 7060 505 | MDX ERR BR TO SET UP ERROR 76 K0905030 506 | * K0905040 507 | * MOVE WORK STRING TO STRING AREA K0905050 508 | * K0905060 7BCB 509 | SLSH EQU * LABEL FOR NEXT INSTRUCITON K0905070 7BCB D0B3 510 | STO SUB CLEAR SUBSCRIPT K0905080 7BCC C480 7C39 511 | LD I K NEXT STMNT WORD K0905090 7BCE 9400 7AC9 512 | S L SLASH SLASH CONSTANT K0905100 7BD0 4C20 7BC9 513 | BSC L ERR7,Z BR IF NOT SLASH K0905110 7BD2 7401 7C39 514 | MDX L K,1 INCR STMNT POINTER K0905120 7BD4 C480 7C39 515 | LD I K NEXT STMNT WORD K0905130 7BD6 90AE 516 | S COMMA COMMA CONSTANT K0905140 7BD7 4C20 7BDE 517 | BSC L SLSH1,Z BR IF NOT A COMMA K0905150 7BD9 C05F 518 | LD K STMNT POINTER K0905160 7BDA D400 7A63 519 | STO L J J=K K0905170 7BDC 4C00 7A54 520 | BSC L FNDC1 BR FOR MULTIPLE STMNTS K0905180 7BDE 7401 7C39 521 | SLSH1 MDX L K,1 INCR STMNT POINTER K0905190 7BE0 C058 522 | LD K CURRENT POINTER VALUE K0905200 7BE1 9400 7AC0 523 | S L NEXT ADDR NEXT STMNT ID WORD K0905210 7BE3 4C20 7A60 524 | BSC L ERR8,Z BR IF NOT STMNT END K0905220 7BE5 7500 81DB 525 | MDX L1 1-WORK GET LENGTH K0905230 7BE7 690D 526 | STX 1 SL+1 END OF OUTPUT INCREMENT K0905240 7BE8 6680 7C43 527 | LDX I2 ENDD PICK UP END OF OUTPUT PT K0905250 7BEA C04F 528 | LD DATAS DATA STMNT ID SHIFTED 2 RT K0905260 7BEB E809 529 | OR SL+1 BUILD NEW STMNT ID FOR DATA K0905270 7BEC 1002 530 | SLA 2 RESTORE TO NORMAL FROM K0905280 7BED D016 531 | STO IDWD SAVE NEW ID WORD K0905290 7BEE 9200 532 | S 2 0 END OF OUTPUT WORD K0905300 7BEF 4C30 7C06 533 | BSC L OPEN,-Z BR TO OPEN STRING K0905310 7BF1 C012 534 | CONTS LD IDWD RESTORE NEW ID WORD K0905320 7BF2 D200 535 | STO 2 0 MOVE IN DATA STMNT ID K0905330 7BF3 71FF 536 | MDX 1 -1 DECR WORK AREA POINTER K0905340 7BF4 7600 0000 537 | SL MDX L2 *-* POINT TO END OF OUTPUT K0905350 7BF6 6A4C 538 | STX 2 ENDD SAVE AS NEW END K0905360 7BF7 C500 7E25 539 | LOOP3 LD L1 WORK-1 WORD FROM WORK AREA K0905370 7BF9 D2FF 540 | STO 2 -1 TO STRING AREA K0905380 7BFA 72FF 541 | MDX 2 -1 DECR STRING POINTER K0905390 7BFB 71FF 542 | MDX 1 -1 DECR AREA POINTER K0905400 7BFC 70FA 543 | MDX LOOP3 BR IF WORK PT NOT ZERO K0905410 7BFD 4400 7AAA 544 | NXTD BSI L FINDD FIND NEXT DATA STMNT K0905420 7BFF 403F 545 | BSI MOVE COMPRESS STRING K0905430 7C00 6500 7E26 546 | LDX L1 WORK RESET WORK POINTER K0905440 7C02 4C00 7A51 547 | BSC L FINDC FIND CONSTANT K0905450 548 | * K0905460 549 | * WORK AREA K0905470 550 | * K0905480 7C04 0000 551 | IDWD DC *-* NEW ID WORD TEMPORARY K0905490 7C05 0000 552 | RUNOF DC *-* STRING SIZE TO MOVE K0905500 553 | * K0905510 554 | * THIS ROUTINE OPENS THE STRING TO PUT K0905520 555 | * ENLARGED DATA STMNT IN STRING AREA K0905530 556 | * K0905540 7C06 1802 557 | OPEN SRA 2 K0905550 7C07 D022 558 | STO CNTOF COUNT OVERFLOW K0905560 7C08 8400 7A25 559 | A L EOFS FIND NEW END OF STRING K0905570 7C0A D011 560 | STO OWD1+3 PUT ADDR IN MOVER LOOP K0905580 7C0B C400 7A25 561 | LD L EOFS END OF STRING ADDRESS K0905590 7C0D D00C 562 | STO OWD1+1 MOVE INSTRUCTION K0905600 7C0E 9034 563 | S ENDD START OF MOVE AREA K0905610 7C0F 802E 564 | A ONE ONE K0905620 7C10 D0F4 565 | STO RUNOF STRING SIZE TO MOVE K0905630 7C11 C00A 566 | LD OWD1+3 K0905640 7C12 9400 7A2A 567 | S L EOFST CHECK IF OVERLAP 2-7 K0905642 7C14 4C10 7C35 568 | BSC L ERR97,- BRANCH IF YES 2-7 K0905644 7C16 C005 569 | LD OWD1+3 LOAD AND STORE 2-7 K0905646 7C17 D400 7A25 570 | STO L EOFS NEW END OF STRING ADDRESS K0905650 7C19 C400 0000 571 | OWD1 LD L *-* NEXT WORD TO MOVE K0905660 7C1B D400 0000 572 | STO L *-* OPEN STRING K0905670 7C1D 74FF 7C1A 573 | MDX L OWD1+1,-1 DECR NEXT WORD TO MOVE ADDR K0905680 7C1F 74FF 7C1C 574 | MDX L OWD1+3,-1 DECR MOVE TO ADDRESS K0905690 7C21 74FF 7C05 575 | MDX L RUNOF,-1 DECR NO. OF WORDS TO MOVE K0905700 7C23 70F5 576 | MDX OWD1 BR TO CONTINUE K0905710 7C24 C400 7AC0 577 | LD L NEXT ADDR NEXT STMNT ID WORD K0905720 7C26 8003 578 | A CNTOF RANGE OF MOVE K0905730 7C27 D400 7AC0 579 | STO L NEXT NEW NEXT STMNT ADDR K0905740 7C29 70C7 580 | MDX CONTS BR TO RESTORE NEW ID WORD K0905750 581 | * K0905760 7C2A 0000 582 | CNTOF DC *-* RANGE OF STRING OPENING K0905770 583 | * K0905780 584 | * THIS ROUTINE IS ENTERED FOR ALL ERROR CONDITIONS. K0905790 585 | * THE STATEMENT BEING PROCESSED IS DISCARDED, AND K0905800 586 | * REPLACED BY AN ERROR RECORD. MOVE IS THEN CALLED K0905810 587 | * TO CONDENSE THE STRING, AND PROCESSING CONTINUES K0905820 588 | * WITH THE NEXT STATEMENT. ON INPUT, INDEX 1 HOLDS K0905830 589 | * THE ERROR NUMBER. K0905840 590 | * K0905850 7C2B C00C 591 | ERR LD ERRCD ERROR INDICATOR K0905860 7C2C D480 7C43 592 | STO I ENDD SET ERROR IN STMNT ID WORD K0905870 7C2E 7401 7C43 593 | MDX L ENDD,1 INCR END OF STRING K0905880 7C30 6D80 7C43 594 | STX I1 ENDD SET ERROR CODE K0905890 7C32 7401 7C43 595 | MDX L ENDD,1 INCR END OF STRING K0905900 7C34 70C8 596 | MDX NXTD COMPRESS, THEN NEXT STMNT K0905910 597 | * K0905912 7C35 7401 7A2D 598 | ERR97 MDX L ERROR,1 SET ERROR 97 2-7 K0905914 7C37 7026 599 | MDX EXIT1 EXIT TO NEXT PHASE 2-7 K0905916 600 | * K0905918 601 | * K0905920 602 | * CONSTANTS AND ERROR EQUIVALENCE TABLE K0905930 603 | * K0905940 7C38 A008 604 | ERRCD DC /A008 ERROR INDICATOR - STMNT ID K0905950 004B 605 | D1 EQU 75 NO NAMES SPECIFIED K0905960 004B 606 | D2 EQU 75 DUPCTN FACTOR NOT POS DIGI K0905970 004B 607 | D3 EQU 75 NO CON AFTER DUPCTN FACTOR K0905980 0050 608 | D4 EQU 80 UNDEFINED NAME K0905990 004B 609 | D5 EQU 75 ILLEGAL CHAR AFTER NAME K0906000 0018 610 | D6 EQU 24 ILLEGAL INTEGER CONSTANT K0906010 004C 611 | D7 EQU 76 NAMES AND CONS NOT 1 TO 1 K0906020 004B 612 | D8 EQU 75 ILLEGAL STMNT FORMAT K0906030 004D 613 | D9 EQU 77 NAME AND CON TYPE NOT SAME K0906040 004B 614 | D10 EQU 75 ILLEGAL MINUS SIGN K0906050 004E 615 | D11 EQU 78 ILLEGAL HOLLERITH CONSTANT K0906060 004F 616 | D12 EQU 79 ILLEGAL PARTIAL WORD FIELD K0906070 0021 617 | D13 EQU 33 ILLEGAL SUBSCRIPT K0906080 004F 618 | D14 EQU 79 ILLEGAL CHAR IN PARTIAL WD K0906090 0052 619 | D15 EQU 82 WORK AREA EXCEEDED K0906100 7C39 620 | K BSS 1 INDEX FOR CONSTANTS K0906110 7C3A 3E00 621 | DATAS DC /3E00 DATA STMNT ID SHIFTED 2 RT K0906120 7C3B 001D 622 | RPAR DC /1D RIGHT PARENTHESIS CONSTANT K0906130 7C3C 0020 623 | MINUS DC /20 - K0906140 7C3D 003D 624 | BCD DC /3D QUOTE MARK (APOSTROPHE) K0906150 7C3E 0001 625 | ONE DC 1 DECIMAL ONE CONSTANT K0906160 626 | * K0906170 627 | * THIS SUBROUTINE COMPRESSES THE STATEMENT STRING. K0906180 628 | * THE INPUT CONSISTS OF A FROM POINTER AND A TO K0906190 629 | * POINTER, IN START AND ENDD RESPECTIVELY K0906200 630 | * ON OUTPUT, ENDD IS UPDATED TO POINT ONE BEYOND K0906210 631 | * THE NEW END, AND INDEX 2 CONTAINS THE INPUT START K0906220 632 | * VALUE. K0906230 633 | * K0906240 7C3F 634 | MOVE BSS 1 RETURN ADDRESS K0906250 7C40 6700 0000 635 | SAVE LDX L3 *-* START OF STRING TO MOVE K0906260 7C43 636 | ENDD EQU *+1 LABEL NEXT INSTRUCTION ADD K0906270 7C42 6600 0000 637 | LDX L2 *-* START OF MOVE AREA K0906280 7C44 C0F9 638 | LD ONE K0906290 7C45 9400 7AB1 639 | S L START 1-START K0906300 7C47 D003 640 | STO TEST+1 SAVE FOR END TEST K0906310 7C48 C300 641 | MOVE1 LD 3 0 NEXT WORD TO MOVE K0906320 7C49 D200 642 | STO 2 0 COMPRESS STRING K0906330 7C4A 7700 0000 643 | TEST MDX L3 *-* TEST FOR END OF MOVE K0906340 7C4C 7005 644 | MDX DONE DONE IF NOT ZERO OR NEG K0906350 7C4D 7780 7AB1 645 | MDX I3 START EFFECTIVE INCR MOVE ADDR K0906360 7C4F 7000 646 | MDX * NO-OP FOR POSSIBLE SKIP K0906370 7C50 7201 647 | MDX 2 1 INCR MOVE TO ADDRESS K0906380 7C51 70F6 648 | MDX MOVE1 NEXT WORD K0906390 7C52 6AF0 649 | DONE STX 2 ENDD NEW END OF STRING K0906400 7C53 6680 7AB1 650 | LDX I2 START RESET INDEX REG 2 K0906410 7C55 4C80 7C3F 651 | BSC I MOVE EXIT K0906420 652 | * K0906430 653 | * THIS ROUTINE COMPLETES STRING COMPRESSION AND K0906440 654 | * EXITS TO THE NEXT PHASE K0906450 655 | * K0906460 7C57 C0EB 656 | EXIT LD ENDD END OF STRING K0906470 7C58 4C18 7C5E 657 | BSC L EXIT1,+- IF ENDD IS ZERO, NO MOVE K0906480 7C5A 40E4 658 | BSI MOVE MOVE THE REST OF THE STRING K0906490 7C5B C0E7 659 | LD ENDD K0906500 7C5C D400 7A25 660 | STO L EOFS NEW END OF STRING ADDR K0906510 7C5E 661 | EXIT1 EQU * LABEL FOR NEXT INSTRUCTION K0906520 7C5E 6580 7C65 662 | LDX I1 NXTPH+1 LOAD PARAM FOR READING K0906530 7C60 C805 663 | LDD NXTPH+2 NEXT PHASE K0906540 7C61 4C00 7FBC 664 | BSC L ROL BR TO READ IN NEXT PHASE K0906550 7C64 665 | BSS E 0 MAKE ADDRESS EVEN K0906560 7C64 0028 666 | NXTPH DC 40 ID OF NEXT PHASE K0906570 7C65 667 | BSS 3 LOADER TBL FOR NEXT PHASE K0906580 668 | * K0906590 669 | * THIS SUBROUTINE CALLS THE GET CONSTANT SUBROUTINE K0906600 670 | * TO FIND A SUBSCRIPT INTEGER. IT TESTS THE GCON K0906610 671 | * OUTPUT TO DETERMINE VALIDITY OF THE SUBSCRIPT. K0906620 672 | * K0906630 7C68 673 | GCONS BSS 1 RETURN ADDRESS K0906640 7C69 7401 7C39 674 | MDX L K,1 INCR CONSTANT INDEX K0906650 7C6B 400E 675 | BSI GCON GET CONSTANT K0906660 7C6C C400 7AC7 676 | LD L CONL CONSTANT LENGTH K0906670 7C6E 90CF 677 | S ONE ONE K0906680 7C6F 4C20 7C77 678 | BSC L ERR6,Z ERROR IF NOT AN INTEGER K0906690 7C71 C1FF 679 | LD 1 -1 CONSTANT K0906700 7C72 90CB 680 | S ONE CONSTANT - 1 K0906710 7C73 6680 7C39 681 | LDX I2 K J=K K0906720 7C75 4C90 7C68 682 | BSC I GCONS,- EXIT IF POSITIVE INTEGER K0906730 7C77 6118 683 | ERR6 LDX X1 D6 ILLEGAL SUBSCRIPT K0906740 7C78 70B2 684 | MDX ERR SET UP ERROR 24 K0906750 685 | * K0906760 7C79 000E 686 | PLUS DC /0E + SIGN K0906770 687 | * K0906780 688 | * THIS SUBROUTINE FINDS THE NEXT CONSTANT IN THE K0906790 689 | * STRING, IF ANY. ON INPUT, K POINTS TO THE K0906800 690 | * EXPECTED FIRST WORD OF THE CONSTANT, AND INDEX 1 K0906810 691 | * TO THE NEXT AVAILABLE WORD IN THE WORK AREA. K0906820 692 | * ON EXIT, THE CONSTANT IS IN THE WORK AREA, INDEX K0906830 693 | * 1 UPDATED, AND THE FOLLOWING SWITCHES SET. K0906840 694 | * CONL=0 NO CONSTANT FOUND K0906850 695 | * =OTHER LENGTH OF CONSTANT K0906860 696 | * CONTP=O REAL CONSTANT K0906870 697 | * =1 INTEGER CONSTANT K0906880 698 | * =2 HOLLERITH CONSTANT K0906890 699 | * K0906900 700 | * IN ADDITION, K IS UPDATED TO POINT TO THE NEXT K0906910 701 | * WORD PAST THE CONSTANT K0906920 702 | * K0906930 7C7A 703 | GCON BSS 1 RETURN ADDRESS K0906940 7C7B 1810 704 | SRA 16 CLEAR ACCUMULATOR K0906950 7C7C D400 7AC7 705 | STO L CONL ZERO CONSTANT LENGTH K0906960 7C7E D400 7AF7 706 | STO L CONTP CONSTANT TYPE K0906970 7C80 D053 707 | STO NEG NEGATIVE SWITCH K0906980 7C81 6F00 7D60 708 | STX L3 SAV3+1 SAVE INDEX REGISTER O K0906990 7C83 6780 7C39 709 | LDX I3 K SET INDEX REG 3 = K K0907000 7C85 C300 710 | LD 3 0 NEXT STMNT WORD K0907010 7C86 90F2 711 | S PLUS PLUS SIGN K0907020 7C87 4C20 7C8B 712 | BSC L *+2,Z BR IF NOT PLUS SIGN K0907030 7C89 7301 713 | MDX 3 1 DISCARD PLUS SIGN K0907040 7C8A 7006 714 | MDX *+6 BR TO LOAD NEXT STMNT WORD K0907050 7C8B C300 715 | LD 3 0 NEXT STMNT WORD K0907060 7C8C 90AF 716 | S MINUS MINUS SIGN K0907070 7C8D 4C20 7C91 717 | BSC L *+2,Z BR NOT MINUS SIGN CHAR K0907080 7C8F 6844 718 | STX NEG MINUS SIGN, SET NEG NONZERO K0907090 7C90 7301 719 | MDX 3 1 INCR STMNT POINTER K0907100 7C91 C300 720 | LD 3 0 NEXT STMNT WORD K0907110 7C92 90AA 721 | S BCD QUOTE MARK K0907120 7C93 4C20 7CD5 722 | BSC L GCON1,Z BR IF NOT HOLLERITH K0907130 7C95 C03E 723 | LD NEG NEGATIVE INDICATOR K0907140 7C96 4C18 7C9A 724 | BSC L *+2,+- BR IF POSITIVE K0907150 7C98 725 | ERR10 EQU * LABEL FOR NEXT INSTRUCTION K0907160 7C98 614B 726 | LDX X1 D10 NEGATIVE HOLLERITH CONSTANT K0907170 7C99 7091 727 | MDX ERR BR TO SET UP ERROR 75 K0907180 7C9A 7402 7AF7 728 | MDX L CONTP,2 SET DATA TYPE =2 K0907190 7C9C 7301 729 | MDX 3 1 INCR STMNT POINTER K0907200 730 | * K0907210 731 | * PROCESS EBCDIC CONSTANTS K0907220 732 | * K0907230 7C9D 1090 733 | GCON2 SLT 16 CLEAR EXTENSION K0907240 7C9E C300 734 | LD 3 0 NEXT STMNT WORD K0907250 7C9F F09D 735 | EOR BCD QUOTE MARK CONSTANT K0907260 7CA0 4C18 7CBA 736 | BSC L GCON4,+- BR IF QUOTE MARK K0907270 7CA2 1808 737 | SRA 8 K0907280 7CA3 4C18 7CCF 738 | BSC L ERR11,+- BR IF ILLEGAL HOLLERITH CON K0907290 7CA5 C300 739 | LD 3 0 NEXT STMNT WORD K0907300 7CA6 7301 740 | B MDX 3 1 INCR STMNT POINTER K0907310 7CA7 18D0 741 | RTE 16 BRING IN PREVIOUS WORD K0907320 7CA8 4C18 7C9E 742 | BSC L GCON2+1,+- DISCARD IF EMPTY K0907330 7CAA D100 743 | STO 1 0 WORK AREA K0907340 7CAB 4400 7A9E 744 | BSI L INCRP INCR WORK AREA POINTER K0907350 7CAD C1FF 745 | LD 1 -1 LOAD LAST O/P WORD K0907360 7CAE E00A 746 | AND LFF MASK OUT LEFT CHARACTER K0907370 7CAF 7401 7AC7 747 | MDX L CONL,1 INCR CONSTANT LENGTH IF K0907380 7CB1 4C20 7C9E 748 | BSC L GCON2+1,Z WORD FULL. K0907390 7CB3 C1FF 749 | LD 1 -1 LAST WD FROM WORK AREA K0907400 7CB4 1808 750 | SRA 8 RIGHT JUSTIFY LEFT CHAR K0907410 7CB5 1088 751 | SLT 8 PACK IN ONE MORE CHARACTER K0907420 7CB6 D1FF 752 | STO 1 -1 RESTORE TO WORK AREA K0907430 7CB7 70E6 753 | MDX GCON2+1 GET NEXT INPUT K0907440 754 | * K0907450 7CB8 7D00 755 | BCD1 DC /7D00 LEFT ADJUSTED QOUTE MARK K0907460 7CB9 00FF 756 | LFF DC /FF LOW 8 BIT MASK K0907470 757 | * K0907480 7CBA 7301 758 | GCON4 MDX 3 1 INCR STMNT POINTER K0907490 7CBB C300 759 | LD 3 0 NEXT STMNT WORD K0907500 7CBC 9080 760 | S BCD QUOTE MARK K0907510 7CBD 4C20 7CC1 761 | BSC L QT1,Z BR IF NOT ANOTHER QUOTE K0907520 7CBF C0F8 762 | LD BCD1 COMPRESS TO ONE QUOTE K0907530 7CC0 70E5 763 | MDX B CONTINUE PACKING K0907540 7CC1 1090 764 | QT1 SLT 16 SHIFT IN PREVIOUS WORD K0907550 7CC2 4C18 7CCB 765 | BSC L QT2,+- BR IF ZERO K0907560 7CC4 EC00 7AF6 766 | OR L BLANK BLANK LOW CHAR IF ZERO K0907570 7CC6 D100 767 | STO 1 0 WORK AREA K0907580 7CC7 4400 7A9E 768 | BSI L INCRP INCR WORK AREA POINTER K0907590 7CC9 7401 7AC7 769 | MDX L CONL,1 UPDATE CONSTANT LENGTH K0907600 7CCB C400 7AC7 770 | QT2 LD L CONL CONSTANT LENGTH K0907610 7CCD 4C20 7D5D 771 | BSC L GCONX,Z EXITIF VALID K0907620 7CCF 614E 772 | ERR11 LDX X1 D11 ILLEGAL CONSTANT LENGTH K0907630 7CD0 4C00 7C2B 773 | BSC L ERR SET UP ERROR 77 K0907640 774 | * K0907650 7CD2 005E 775 | REAL DC /5E REAL CONSTANT INDR K0907660 7CD3 0000 776 | LNGTH DC 0 LENGTH OF REAL INDR K0907670 7CD4 777 | NEG BSS 1 NEGATIVE CONSTANT HDR K0907680 778 | * K0907690 779 | * PROCESS REAL CONSTANTS K0907700 780 | * K0907710 7CD5 C300 781 | GCON1 LD 3 0 NEXT STMNT WORD K0907720 7CD6 90FB 782 | S REAL REAL CONSTANT INDR K0907730 7CD7 4C20 7D09 783 | BSC L GCON3,Z BR IF NOT A REAL CONSTANT K0907740 7CD9 C301 784 | LD 3 1 FIRST WORD OF REAL CONSTANT K0907750 7CDA D100 785 | STO 1 0 WORK AREA K0907760 7CDB D028 786 | STO WD SAVE IN CASE NEGATIVE K0907770 7CDC C302 787 | LD 3 2 SECOND WORD OF REAL CON K0907780 7CDD D101 788 | STO 1 1 WORK AREA K0907790 7CDE C0F4 789 | LD LNGTH LENGTH OF REAL INDR K0907800 7CDF D400 7AC7 790 | STO L CONL SET CONSTANT LENGTH K0907810 7CE1 9400 7AF1 791 | S L THREE THREE K0907820 7CE3 D022 792 | STO EXTND NORMAL PRECISION= NON-ZERO K0907830 7CE4 4C20 7CED 793 | BSC L INC3,Z BR IF NORMAL PRECISION K0907840 7CE6 C302 794 | LD 3 2 2ND WORD OF EXTENDED REAL K0907850 7CE7 D01C 795 | STO WD SAVE IN CASE NEGATIVE K0907860 7CE8 C303 796 | LD 3 3 3RD WORD OF EXTENDED REAL K0907870 7CE9 D102 797 | STO 1 2 WORK AREA K0907880 7CEA 7301 798 | MDX 3 1 SPECIAL INCR FOR 3RD WORD K0907890 7CEB 4400 7A9E 799 | BSI L INCRP INCR WORK AREA POINTER K0907900 7CED 7303 800 | INC3 MDX 3 3 UPDATE STMNT POINTER K0907910 7CEE 4400 7A9E 801 | BSI L INCRP INCREMENT WORK AREA POINTER K0907920 7CF0 4400 7A9E 802 | BSI L INCRP TWICE. K0907930 7CF2 C0E1 803 | LD NEG NEGATIVE CONSTANT INDR K0907940 7CF3 4C18 7D5D 804 | BSC L GCONX,+- EXIT IF POSITIVE K0907950 7CF5 C3FF 805 | LD 3 -1 LAST WORD (THIRD OR SECOND) K0907960 7CF6 7400 7D06 806 | MDX L EXTND,0 SKIP NEXT IF EXTENDED PREC K0907970 7CF8 E00E 807 | AND HFF00 MASK OUT EXPONENT K0907980 7CF9 D00B 808 | STO WD+1 SAVE FOR COMPLEMENT K0907990 7CFA F3FF 809 | EOR 3 -1 IF NORMAL, SET EXPONENT K0908000 7CFB D00C 810 | STO EXP IF EXTENDED, SET ZERO K0908010 7CFC 1898 811 | SRT 24 CLEAR ACC AND EXT K0908020 7CFD 9806 812 | SD WD COMPLEMENT MANTISSA K0908030 7CFE D1FE 813 | STO 1 -2 (LAST-1) WORD TO WORK K0908040 7CFF 18D0 814 | RTE 16 LAST WORD K0908050 7D00 E807 815 | OR EXP SET EXPONENT IF NORMAL PREC K0908060 7D01 D1FF 816 | STO 1 -1 LAST WORD TO WORK K0908070 7D02 705A 817 | MDX GCONX EXIT K0908080 818 | * K0908090 7D04 819 | WD BSS E 2 TEMP FOR COMPLEMENTING K0908100 7D06 0000 820 | EXTND DC 0 NORMAL PRECISION=NONZERO K0908110 7D07 FF00 821 | HFF00 DC /FF00 HIGH ORDER 8-BIT MASK K0908120 7D08 0000 822 | EXP DC 0 EXPONENT FOR NORMAL PREC K0908130 823 | * K0908140 824 | * PROCESS INTEGER CONSTANTS K0908150 825 | * K0908160 7D09 C300 826 | GCON3 LD 3 0 LOOK FOR PARTIAL WORD SPEC K0908170 7D0A E05B 827 | AND H7E00 EXTRACT 1ST CHAR OF SYMBOL K0908180 7D0B F05B 828 | EOR SYMZ CHECK FOR A Z K0908190 7D0C 4C18 7D70 829 | BSC L BPWS,+- BRANCH IF SO. K0908200 7D0E 7005 830 | MDX *+5 BR TO CHECK FOR OPERATOR K0908210 7D0F C300 831 | LD 3 0 LOAD CHARACTER K0908220 7D10 F400 7B81 832 | EOR L LPAR CHK FOR LEFT PARENTHESIS K0908230 7D12 4C18 7D1C 833 | BSC L FPWS,+- BR IF LEFT PARENTHESIS K0908240 7D14 C300 834 | LD 3 0 CHK FOR OPERATOR K0908250 7D15 4C10 7A60 835 | BSC L ERR8,- BRANCH IF SO (ERROR). K0908260 7D17 4400 7DC4 836 | BSI L GCONI GET INTEGER K0908270 7D19 4400 7A9E 837 | BSI L INCRP INCR WORK AREA POINTER K0908280 7D1B 7041 838 | MDX GCONX EXIT K0908290 7D1C C0B7 839 | FPWS LD NEG NEGATIVE CONSTANT INDICATOR K0908300 7D1D 4C20 7C98 840 | BSC L ERR10,Z BR IF NEG PARTIAL WORD K0908310 7D1F 1810 841 | SRA 16 CLEAR ACCUMULATOR K0908320 7D20 D042 842 | STO PW CLEAR PARTIAL WD ACC K0908330 7D21 D042 843 | STO PWTOT CLEAR PARTIAL WORD COUNT K0908340 844 | * K0908350 845 | * PROCESS PARTIAL WORD CONSTANTS K0908360 846 | * K0908370 7D22 7301 847 | GCON9 MDX 3 1 DISCARD DELIMITER K0908380 7D23 4400 7DC4 848 | BSI L GCONI GET INTEGER K0908390 7D25 C100 849 | LD 1 0 COUNT FROM WORK AREA K0908400 7D26 D015 850 | STO PWCT SAVE COUNT FOR THIS FIELD K0908410 7D27 803C 851 | A PWTOT UPDATE TOTAL COUNT K0908420 7D28 D03B 852 | STO PWTOT RESTORE K0908430 7D29 903B 853 | S L16 DECIMAL 16 K0908440 7D2A 4C08 7D2F 854 | BSC L *+3,+ BR PRATIAL WORD COUNT OK K0908450 7D2C 614F 855 | ERR12 LDX X1 D12 PARTIAL WD CNT GT 16 K0908460 7D2D 4C00 7C2B 856 | BSC L ERR BR TO SET UP ERROR 79 K0908470 7D2F C400 7AC7 857 | LD L CONL CONSTANT LENGTH K0908480 7D31 4C18 7D2C 858 | BSC L ERR12,+- BR CONSTANT NOT FOUND K0908490 7D33 C300 859 | LD 3 0 NEXT STMNT WORD K0908500 7D34 903A 860 | S EQSGN EQUAL SIGN K0908510 7D35 4C20 7D2C 861 | BSC L ERR12,Z BR NO EQUAL SIGN K0908520 7D37 7301 862 | MDX 3 1 INCR STMNT POINTER K0908530 7D38 4400 7DC4 863 | BSI L GCONI GET INTEGER K0908540 7D3A 6A09 864 | STX 2 SAV2+1 SAVE INDEX REG 2 K0908550 7D3C 865 | PWCT EQU *+1 PARTIAL WD ELEMENT LENGTH K0908560 7D3B 6600 0000 866 | LDX L2 *-* GET SHIFT COUNT K0908570 7D3D C100 867 | LD 1 0 HEADER WD FROM WORK AREA K0908580 7D3E 1A80 868 | SRT 2 0 K0908590 7D3F 4C20 7D2C 869 | BSC L ERR12,Z BR IF CONSTANT TOO LARGE K0908600 7D41 C021 870 | LD PW PARTIAL WORD TO ACCUMULATOR K0908610 7D42 1280 871 | SLT 2 0 PUT IN NEW FIELD K0908620 7D43 6600 0000 872 | SAV2 LDX L2 *-* RESTORE INDEX REG 2 K0908630 7D45 D01D 873 | STO PW STORE UPDATED PARTIAL WORD K0908640 7D46 C300 874 | LD 3 0 NEXT STMNT WORD K0908650 7D47 9400 7B85 875 | S L COMMA COMMA CONSTANT K0908660 7D49 4C18 7D22 876 | BSC L GCON9,+- BR TO GET NEXT FIELD IF ANY K0908670 7D4B C300 877 | LD 3 0 NEXT STMNT WORD K0908680 7D4C 9400 7C3B 878 | S L RPAR RIGHT PARENTHESIS CONSTANT K0908690 7D4E 4C20 7D2C 879 | BSC L ERR12,Z ERROR IF NOT RT PARENTHESIS K0908700 7D50 C012 880 | LD PW PARTIAL WORD K0908710 7D51 D100 881 | STO 1 0 TO WORK AREA K0908720 7D52 4400 7A9E 882 | BSI L INCRP INCR WORK AREA POINTER K0908730 7D54 7301 883 | MDX 3 1 INCR STMNT POINTER K0908740 7D55 6F00 7C39 884 | STX L3 K SAVE AS K K0908750 7D57 6301 885 | LDX 3 1 SET INTEGER SWITCH K0908760 7D58 6F00 7AF7 886 | STX L3 CONTP CONSTANT TYPE K0908770 7D5A 6F00 7AC7 887 | STX L3 CONL CONSTANT LENGTH K0908780 7D5C 7002 888 | MDX SAV3 BR TO RESTORE XR3 AND EXIT K0908790 7D5D 6F00 7C39 889 | GCONX STX L3 K SAVE K K0908800 7D5F 6700 0000 890 | SAV3 LDX L3 *-* RESTORE XR3 K0908810 7D61 4C80 7C7A 891 | BSC I GCON EXIT K0908820 892 | * K0908830 893 | * CONSTANTS AND WORK AREA K0908840 894 | * K0908850 7D63 895 | PW BSS 1 PARTIAL WORD TEMPORARY K0908860 7D64 896 | PWTOT BSS 1 PARTIAL WORD TOTAL LENGTH K0908870 7D65 0010 897 | L16 DC 16 PARTIAL WD COUNT LIMIT K0908880 7D66 7E00 898 | H7E00 DC /7E00 MASK TO GET 1ST CHAR K0908890 7D67 5200 899 | SYMZ DC /5200 Z DENOTES HEX DIGITS FOLLOW K0908900 7D68 900 | PW1 BSS E 1 HOLDS 1-4 CHARACTERS (HEX K0908910 7D69 901 | PW2 BSS 1 DIGITS W/ Z PRECEDING). K0908920 7D6A C000 902 | HC000 DC /C000 MASK TO GET ZONE BITS K0908930 7D6B F000 903 | HF000 DC /F000 MASK TO GET NUMERIC PART K0908940 7D6C 9000 904 | H9000 DC /9000 GT THAN WHICH ARE CHARS K0908950 7D6D 1800 905 | H1800 DC /1800 ADD TO NO. PART TO GET BIN K0908960 7D6E FC00 906 | HFC00 DC /FC00 MASK TO GET 1ST CHAR K0908970 7D6F 003E 907 | EQSGN DC /3E = K0908980 908 | * K0908990 909 | * CONTINUE PROCESSING PARTIAL WD CONS K0909000 910 | * K0909010 7D70 C400 7CD4 911 | BPWS LD L NEG CHK FOR NEGATIVE K0909020 7D72 4C20 7C98 912 | BSC L ERR10,Z BRANCH IF SO (ERROR). K0909030 7D74 D0EE 913 | STO PW CLEAR PARTIAL WORD K0909040 7D75 D0F3 914 | STO PW2 ZERO 2ND HALF OF SYMBOL K0909050 7D76 C300 915 | LD 3 0 CHECK FIRST CHAR AFTER K0909060 7D77 1007 916 | SLA 7 THE Z, MUST BE NON-BLANK. K0909070 7D78 E0F5 917 | AND HFC00 EXTRACT THE CHAR K0909080 7D79 4C18 7DC1 918 | BSC L ER14,+- BR TO SET UP ERROR IF BLANK K0909090 7D7B 10A0 919 | SLT 32 CLEAR EXTENSION K0909100 7D7C C300 920 | LD 3 0 GET 1ST HALF K0909110 7D7D 1001 921 | SLA 1 SHIFT OUT INDICATOR BIT K0909120 7D7E D0E9 922 | STO PW1 SAVE IN PW1 TEMPORARY K0909130 7D7F C301 923 | LD 3 1 CHECK FOR 3-5 CHARS K0909140 7D80 4C10 7D8D 924 | BSC L SYMGT,- BRANCH IF NOT K0909150 7D82 1001 925 | SLA 1 SHIFT OUT INDICATOR BIT K0909160 7D83 1801 926 | SRA 1 REPLACE IT W/ ZERO, MOVE K0909170 7D84 188E 927 | SRT 14 LAST 15 BITS TO Q, TO LEAVE K0909180 7D85 E8E2 928 | OR PW1 THE CHARACTERS CONTIGUOUS K0909190 7D86 D0E1 929 | STO PW1 AND LEFT JUSTIFIED IN K0909200 7D87 18D0 930 | RTE 16 PW1 AND PW2. K0909210 7D88 D0E0 931 | STO PW2 K0909220 7D89 7301 932 | MDX 3 1 INCREMENT STRING POINTER K0909230 7D8A C301 933 | LD 3 1 CHECK TO BE SURE THE NEXT K0909240 7D8B 4C28 7D2C 934 | BSC L ERR12,+Z CHAR IS AN OPERATOR, BR NOT K0909250 7D8D 6A31 935 | SYMGT STX 2 X2S+1 SAVE X2 K0909260 7D8E 6206 936 | LDX 2 6 SET SHIFT COUNTER FOR 1ST K0909270 7D8F C8D8 937 | GTHD LDD PW1 LOAD THE PW SPEC ZHHHH K0909280 7D90 1280 938 | SLT 2 0 GET THE NTH CHARACTER K0909290 7D91 E0D8 939 | AND HC000 CHK ZONE BITS K0909300 7D92 4C18 7DA7 940 | BSC L CKAD,+- BR IF A TO F. K0909310 7D94 90D5 941 | S HC000 ELSE IT MUST BE NUMERIC, K0909320 7D95 4C20 7DC1 942 | BSC L ER14,Z ERROR IF NOT. K0909330 7D97 C8D0 943 | LDD PW1 GET THE DIGIT, IN 6-BIT K0909340 7D98 1280 944 | SLT 2 0 CODE, LEFT JUSTIFY IN ACC. K0909350 7D99 1002 945 | SLA 2 STRIP ZONE BITS K0909360 7D9A E0D0 946 | AND HF000 DROP OTHER DIGITS K0909370 7D9B 4C18 7DA1 947 | BSC L PTHD,+- BRANCH ON DIGIT ZERO K0909380 7D9D 90CE 948 | S H9000 CHK WITHIN RANGE 0 TO 9 K0909390 7D9E 4C30 7DC1 949 | BSC L ER14,-Z BR NOT 0 TO 9 K0909400 7DA0 80CB 950 | A H9000 (RESTORE ACTUAL VALUE) K0909410 7DA1 1890 951 | PTHD SRT 16 LEFT JUSTIFY DIGIT IN EX- K0909420 7DA2 C0C0 952 | LD PW TENSION, THEN APPEND IT TO K0909430 7DA3 1084 953 | SLT 4 THE PARTIAL WD BEING BUILT. K0909440 7DA4 D0BE 954 | STO PW K0909450 7DA5 7206 955 | MDX 2 6 INCR XR2 TO GET NEXT CHAR K0909460 7DA6 70E8 956 | MDX GTHD BR TO GET CHARACTER K0909470 7DA7 C8C0 957 | CKAD LDD PW1 CHECK DIGITS A-F. K0909480 7DA8 1280 958 | SLT 2 0 GET THE CHARACTER K0909490 7DA9 E0C4 959 | AND HFC00 DROP OTHER CHARACTERS K0909500 7DAA 4C08 7DB2 960 | BSC L ENDHD,+ EXIT IF 000000 K0909510 7DAC 90C0 961 | S H1800 CHECK TO SEE IF IN RANGE K0909520 7DAD 4C30 7DC1 962 | BSC L ER14,-Z BRANCH IF NOT A-F. K0909530 7DAF 80BE 963 | A HFC00 ADD BACK 1800 PLUS 2400 TO K0909540 7DB0 1002 964 | SLA 2 GET BINARY EQUIVALENT. K0909550 7DB1 70EF 965 | MDX PTHD INSTALL IN PARTIAL WORD K0909560 7DB2 C0B0 966 | ENDHD LD PW PARTIAL WORD TEMPORARY K0909570 7DB3 D100 967 | STO 1 0 STORE PARTIAL WD K0909580 7DB4 4400 7A9E 968 | BSI L INCRP INCR WORK AREA POINTER K0909590 7DB6 7301 969 | MDX 3 1 K=K+1 K0909600 7DB7 6F00 7C39 970 | STX L3 K SAVE K K0909610 7DB9 6301 971 | LDX 3 1 K0909620 7DBA 6F00 7AF7 972 | STX L3 CONTP CONSTANT TYPE K0909630 7DBC 6F00 7AC7 973 | STX L3 CONL CONSTANT LENGTH K0909640 7DBE 6600 0000 974 | X2S LDX L2 *-* RESTORE XR2 K0909650 7DC0 709E 975 | MDX SAV3 BR TO RESTORE XR3 AND EXIT K0909660 7DC1 614F 976 | ER14 LDX 1 D14 ERROR - CHAR NOT A-F IN K0909670 7DC2 4C00 7C2B 977 | BSC L ERR PARTIAL WORD SPEC. K0909680 978 | * K0909690 979 | * THIS SUBROUTINE IS USED BY GCON TO GET AN INTEGER K0909700 980 | * CONST WHICH IS PUT IN NEXT AVAIL WORK AREA WORD. K0909710 981 | * WK AREA POINTER IS UPDATED. K0909720 982 | * K0909730 7DC4 983 | GCONI BSS 1 RETURN ADDRESS K0909740 7DC5 10A0 984 | SLT 32 CLEAR ACC AND EXTENSION K0909750 7DC6 D100 985 | STO 1 0 CLEAR NEXT WORK AREA WORD K0909760 7DC7 C300 986 | LD 3 0 NEXT STMNT WORD K0909770 7DC8 D833 987 | STD NOS SAVE INTEGER WORD 1 K0909780 7DC9 7301 988 | MDX 3 1 INCR STMNT POINTER K0909790 7DCA C300 989 | LD 3 0 NEXT STMNT WORD K0909800 7DCB 4C10 7DD0 990 | BSC L GCON6,- BR IF NO WORD 2 K0909810 7DCD 1001 991 | SLA 1 KNOCK OUT HIGH BIT K0909820 7DCE D02E 992 | STO NOS+1 SAVE INTEGER WORD 2 K0909830 7DCF 7301 993 | MDX 3 1 INCR STMNT POINTER K0909840 7DD0 2000 994 | GCON6 LDS 0 CLEAR CARRY BIT K0909850 7DD1 C02A 995 | LD NOS INTEGER TEMPORARY K0909860 7DD2 1002 996 | GCON7 SLA 2 K0909870 7DD3 4C02 7DD8 997 | BSC L *+3,C BR IF NOT FINISHED K0909880 7DD5 4C20 7C77 998 | BSC L ERR6,Z BR TO ERROR IF NOT A DIGIT K0909890 7DD7 7018 999 | MDX GCON8 BR FINISHED K0909900 7DD8 4C10 7C77 1000 | BSC L ERR6,- BR TO ERROR IF NOT A DIGIT K0909910 7DDA 1001 1001 | SLA 1 STRIP OFF ZONE BITS K0909920 7DDB 180C 1002 | SRA 12 ISOLATE DIGIT K0909930 7DDC D400 7AF3 1003 | STO L NOST SAVE DIGIT K0909940 7DDE 901F 1004 | S NINE DIGIT LIMIT VALUE K0909950 7DDF 4C30 7C77 1005 | BSC L ERR6,-Z BR IF NOT A DECIMAL DIGIT K0909960 7DE1 C100 1006 | LD 1 0 ACCUMULATED TOTAL K0909970 7DE2 A017 1007 | M TEN MPY BY 10 K0909980 7DE3 1081 1008 | SLT 1 K0909990 7DE4 4C20 7C77 1009 | BSC L ERR6,Z BR IF VALUE TOO LARGE K0910000 7DE6 108F 1010 | SLT 15 SHIFT INTO ACCUMULATOR K0910010 7DE7 8400 7AF3 1011 | A L NOST ADD LATEST DIGIT K0910020 7DE9 4C01 7C77 1012 | BSC L ERR6,O BR IF VALUE TOO LARGE K0910030 7DEB D100 1013 | STO 1 0 UPDATE ACCUMULATED TOTAL K0910040 7DEC C80F 1014 | LDD NOS INTEGER TEMPORARY K0910050 7DED 1086 1015 | SLT 6 SHIFT OFF PROCESSED DIGIT K0910060 7DEE D80D 1016 | STD NOS RESTORE K0910070 7DEF 70E2 1017 | MDX GCON7 BR TO FIND NEXT DIGIT K0910080 7DF0 9100 1018 | GCON8 S 1 0 NEGATE INTEGER K0910090 7DF1 7400 7CD4 1019 | MDX L NEG,0 SKIP NEXT IF NEG INDR OFF K0910100 7DF3 D100 1020 | STO 1 0 SET INTEGER NEGATIVE K0910110 7DF4 7401 7AC7 1021 | MDX L CONL,1 INCR CONSTANT LENGTH K0910120 7DF6 7401 7AF7 1022 | MDX L CONTP,1 INCR CONSTANT TYPE K0910130 7DF8 4C80 7DC4 1023 | BSC I GCONI EXIT K0910140 1024 | * K0910150 1025 | * CONSTANTS, WORK, AND PATCH AREA K0910160 1026 | * K0910170 7DFA 000A 1027 | TEN DC 10 DECIMAL 10 MPY CONSTANT K0910180 7DFC 1028 | NOS BSS E 2 INTEGER TEMPORARY STORE K0910190 7DFE 0009 1029 | NINE DC 9 DECIMAL 9 DIGIT LIMIT CON K0910200 7DFF 1030 | PATCH BSS /7E25-* PATCH AREA K0910210 7E25 0000 1031 | DC 0 K0910220 7E26 1032 | WORK BSS ROL-50-* ORIGIN OF OUTPUT DATA STMNT K0910230 7F8A 1033 | WKEND EQU * END OF WK AREA + 1 K0910240 1034 | * K0910250 7F8A 1035 | END BPHAR-2 K0910260 There were no errors in this assembly === CROSS REFERENCES ========================================================== Name Val Defd Referenced $PHSE 0078 65 137 B 7CA6 740 763 BCD 7C3D 624 721 735 760 BCD1 7CB8 755 762 BEGIN 7A36 136 BLANK 7AF6 320 375 766 BLDH 7ACA 281 200 215 BPHAR 7A36 111 1035 BPWS 7D70 911 829 CCWD 7A31 85 146 152 CKAD 7DA7 957 940 CNTOF 7C2A 582 558 578 COM 7BC1 498 417 429 COMMA 7B85 445 424 428 452 500 516 875 COMON 7A2B 79 CONL 7AC7 275 194 201 214 281 285 676 705 747 769 770 790 857 887 973 1021 CONLT 7AF4 318 282 367 381 CONTP 7AF7 321 287 706 728 886 972 1022 CONTS 7BF1 534 580 CONTT 7AF5 319 288 352 354 371 CSIZE 7A2C 80 D1 004B 605 186 D10 004B 614 726 D11 004E 615 772 D12 004F 616 855 D13 0021 617 409 D14 004F 618 976 D15 0052 619 235 D2 004B 606 204 D3 004B 607 216 D4 0050 608 310 D5 004B 609 434 D6 0018 610 683 D7 004C 611 504 D8 004B 612 170 D9 004D 613 357 DATA 7AC3 271 262 DATAS 7C3A 621 528 DFCNT 7A33 104 DIMN 7BAC 477 393 404 490 DIMNT 7B84 444 394 469 491 DONE 7C52 649 644 DUP 7AF2 316 197 208 283 411 421 ENDD 7C43 636 145 527 538 563 592 593 594 595 649 656 659 ENDHD 7DB2 966 960 EOFS 7A25 73 258 559 561 570 660 EOFST 7A2A 78 308 567 EQSGN 7D6F 907 860 ER14 7DC1 976 918 942 949 962 ERR 7C2B 591 171 187 205 217 236 311 358 410 505 684 727 773 856 977 ERR10 7C98 725 840 912 ERR11 7CCF 772 368 738 ERR12 7D2C 855 858 861 869 879 934 ERR13 7B5E 408 453 467 476 ERR2 7A87 204 207 210 294 ERR4 7AEE 310 349 ERR6 7C77 683 678 998 1000 1005 1009 1012 ERR7 7BC9 504 426 513 ERR8 7A60 170 195 524 835 ERR9 7B1C 357 347 ERR97 7C35 598 568 ERRCD 7C38 604 591 ERROR 7A2D 81 138 598 EXIT 7C57 656 259 EXIT1 7C5E 661 139 599 657 EXP 7D08 822 810 815 EXTND 7D06 820 792 806 FINDC 7A51 160 547 FINDD 7AAA 248 143 263 544 FNAME 7A2E 82 FNDC1 7A54 162 520 FNDD1 7AAF 251 266 FPWS 7D1C 839 833 GCON 7C7A 703 193 213 675 891 GCON1 7CD5 781 722 GCON2 7C9D 733 742 748 753 GCON3 7D09 826 783 GCON4 7CBA 758 736 GCON6 7DD0 994 990 GCON7 7DD2 996 1017 GCON8 7DF0 1018 999 GCON9 7D22 847 876 GCONI 7DC4 983 836 848 863 1023 GCONS 7C68 673 455 464 682 GCONX 7D5D 889 771 804 817 838 GERR 7B5F 410 435 GTHD 7D8F 937 956 H1800 7D6D 905 961 H20 7AC5 273 345 H2000 7BC0 497 494 H4000 7B82 442 484 H7E00 7D66 898 827 H8000 7AC4 272 341 H9000 7D6C 904 948 950 HC000 7D6A 902 939 941 HDRPT 7A64 176 191 286 378 380 HF000 7D6B 903 946 HFC00 7D6E 906 917 959 963 HFF00 7D07 821 807 IDWD 7C04 551 531 534 INC3 7CED 800 793 INCRP 7A9E 229 192 234 377 388 396 744 768 799 801 802 837 882 968 INT 7B26 364 360 INTL 7AC8 276 151 156 364 IOCS 7A32 94 J 7A63 175 161 183 189 289 519 K 7C39 620 160 163 166 168 182 190 198 211 461 463 472 499 511 514 515 518 521 522 674 681 709 884 889 970 L16 7D65 897 853 L1FF 7AC2 270 255 L4 7A65 177 147 LFF 7CB9 756 746 LNGTH 7CD3 776 150 361 789 LOOP1 7A54 163 169 LOOP2 7A66 181 165 LOOP3 7BF7 539 543 LPAR 7B81 441 401 832 MEMRY 8000 62 63 64 MINUS 7C3C 623 716 MOVE 7C3F 634 545 651 658 MOVE1 7C48 641 648 NAML 7B83 443 362 365 480 NEG 7CD4 777 707 718 723 803 839 911 1019 NEXT 7AC0 264 141 167 249 257 523 577 579 NEXTC 7A71 188 185 501 NEXTN 7AD8 292 425 NEXTS 7B87 451 470 NINE 7DFE 1029 1004 NOS 7DFC 1028 987 992 995 1014 1016 NOST 7AF3 317 306 307 336 338 351 359 1003 1011 NXT8A 7B41 386 369 373 NXTD 7BFD 544 596 NXTN1 7ADE 296 309 NXTN2 7BAD 479 398 NXTN3 7AF9 326 298 NXTN4 7B02 334 291 NXTN5 7B92 460 402 NXTN6 7BA2 471 NXTN7 7B56 403 395 487 496 NXTN8 7B1F 359 353 382 NXTN9 7B69 418 413 NXTNA 7AE2 299 330 NXTPH 7C64 666 114 662 663 ONE 7C3E 625 202 366 379 403 564 638 677 680 OPEN 7C06 557 533 ORG 7A23 71 OVERL 7A23 63 66 OWD1 7C19 571 560 562 566 569 573 574 576 PATCH 7DFF 1030 PHID 0027 67 136 PLUS 7C79 686 711 PTHD 7DA1 951 947 965 PW 7D63 895 842 870 873 880 913 952 954 966 PW1 7D68 900 922 928 929 937 943 957 PW2 7D69 901 914 931 PWCT 7D3C 865 850 PWTOT 7D64 896 843 851 852 QT1 7CC1 764 761 QT2 7CCB 770 765 REAL 7CD2 775 782 ROL 7FBC 64 664 1032 RPAR 7C3B 622 475 878 RUNOF 7C05 552 565 575 SAV2 7D43 872 864 SAV3 7D5F 890 708 888 975 SAVE 7C40 635 250 SL 7BF4 537 526 529 SLASH 7AC9 277 164 432 512 SLSH 7BCB 509 433 SLSH1 7BDE 521 517 SLSH2 7B78 430 503 SOFGT 7A29 77 SOFNS 7A27 75 295 SOFS 7A24 72 140 SOFST 7A26 74 337 SOFXT 7A28 76 SORF 7A30 84 STAR 7A9C 221 199 START 7AB1 252 144 251 256 639 645 650 SUB 7B7F 439 181 290 397 406 416 419 458 465 479 492 502 510 SUBSW 7B86 446 460 486 488 SYMGT 7D8D 935 924 SYMZ 7D67 899 828 T8000 7AF8 322 328 TEMP 7B80 440 412 415 420 462 471 TEN 7DFA 1027 1007 TEST 7C4A 643 640 TESTS 7B9A 465 459 THREE 7AF1 315 340 791 TNAME 7B40 384 342 386 TOP 7A9D 222 209 TWO 7AC6 274 149 355 372 WD 7D04 819 786 795 808 812 WKAA 7AA9 241 231 232 WKEND 7F8A 1033 240 WKNDA 7AA8 240 233 WORK 7E26 1032 142 525 539 546 X2S 7DBE 974 935