IDENT P.SYSTM PSYSTM 2 SST FL PSYSTM 3 SYSCOM B1 PSYSTM 4 IPARAMS PSYSTM 5 LIST F PSYSTM 6 ENTRY P.ACV PSYSTM 7 ENTRY P.CAD PSYSTM 8 ENTRY P.CFD PSYSTM 9 ENTRY P.CFV PSYSTM 10 ENTRY P.CLOCK PSYSTM 11 ENTRY P.CLO PSYSTM 12 ENTRY P.CPV PSYSTM 13 ENTRY P.DATE PSYSTM 14 ENTRY P.DFV PSYSTM 15 ENTRY P.DISPD PSYSTM 16 ENTRY P.EFD PSYSTM 17 ENTRY P.END PSYSTM 18 ENTRY P.FCA PSYSTM 19 ENTRY P.FOB PSYSTM 20 ENTRY P.FXF V41CC14 6 ENTRY P.GETB PSYSTM 21 ENTRY P.GETC PSYSTM 22 ENTRY P.GETCH PSYSTM 23 ENTRY P.GETLN PSYSTM 24 ENTRY P.GETS PSYSTM 25 ENTRY P.GLOBL PSYSTM 26 ENTRY P.GTO PSYSTM 27 ENTRY P.HALT PSYSTM 28 ENTRY P.INIT PSYSTM 29 ENTRY P.INV PSYSTM 30 ENTRY P.IOE PSYSTM 31 ENTRY P.ISM PSYSTM 32 ENTRY P.MSG PSYSTM 33 ENTRY P.NEWD PSYSTM 34 ENTRY P.NFN PSYSTM 35 ENTRY P.OPE PSYSTM 36 ENTRY P.OS PSYSTM 37 ENTRY P.PAGE PSYSTM 38 ENTRY P.PEG PSYSTM 39 ENTRY P.PEN PSYSTM 40 ENTRY P.PEX PSYSTM 41 ENTRY P.PPF PSYSTM 42 ENTRY P.PUTB PSYSTM 43 ENTRY P.PUTC PSYSTM 44 ENTRY P.PUTCH PSYSTM 45 ENTRY P.PUTLN PSYSTM 46 ENTRY P.PUTS PSYSTM 47 ENTRY P.RESET PSYSTM 48 ENTRY P.REWRT PSYSTM 49 ENTRY P.RPE PSYSTM 50 ENTRY P.RPF PSYSTM 51 ENTRY P.RWR PSYSTM 52 ENTRY P.RWRTS PSYSTM 53 ENTRY P.SABRT PSYSTM 54 ENTRY P.SCO PSYSTM 55 ENTRY P.SCU PSYSTM 56 ENTRY P.SKP PSYSTM 57 ENTRY P.SNM PSYSTM 58 ENTRY P.SPE PSYSTM 59 ENTRY P.SPK PSYSTM 60 ENTRY P.SRS PSYSTM 61 ENTRY P.SWS PSYSTM 62 ENTRY P.TERA PSYSTM 63 ENTRY P.TIME PSYSTM 64 ENTRY P.TMS PSYSTM 65 ENTRY P.VPE PSYSTM 66 ENTRY P.WWR PSYSTM 67 PSYSTM SPACE 4,10 PSYSTM 68 PSYSTM TITLE PASCAL-6000 RUN TIME SYSTEM. PSYSTM 69 COMMENT PASCAL-6000 RUN TIME SYSTEM. PSYSTM 70 COMMENT COPYRIGHT (C) UNIVERSITY OF MINNESOTA - 1978. PSYSTM 71 PSYSTM SPACE 4,10 PSYSTM 72 *** PASCAL-6000 RUN TIME SYSTEM. PSYSTM 73 * J. P. STRAIT. 77/01/20. PSYSTM 74 * J. J. DRUMMOND. 77/01/20. PSYSTM 75 * PSYSTM 76 * ORIGINAL VERSION BY PSYSTM 77 * H. SANDMAYR CIRCA JUNE 1974. PSYSTM 78 * N. WIRTH CIRCA JUNE 1974. PSYSTM 79 * S. KNUDSEN CIRCA MARCH 1976. PSYSTM 80 * PSYSTM 81 * SCOPE VERSIONS BY PSYSTM 82 * H. JORAANDSTAD (CERN) OCTOBER 1975. RELEASE 1 PSYSTM 83 * A. P. HAYES (MNCH) OCTOBER 1976. RELEASE 2 PSYSTM 84 * A. G. HAY (MNCH) JANUARY 1980. RELEASE 3 PSYSTM 85 * D. J. LEGGE (MNCH) MARCH 1983. RELEASE 4 PSYSTM 86 HISTORY SPACE 4,10 HPSYSTM 1 ** PASCAL-6000 MODIFICATION HISTORY. HPSYSTM 2 * HPSYSTM 3 * FIX FAILURE TO USE SYMBOLIC CONSTANTS IN P.PTB. V41FC05 5 * KEEP PTB FROM ISSUING UNNECESSARY READ REQUESTS. V41FC04 5 * RESTORE BASHED REGISTER IN P.SABRT. V41FC03 6 * FLUSH NON-PERSISTENT CONNECTED FILES. V41EC07 8 * ALLOW CONTROL STATEMENT *PASCAL,/...*. V41EC06 7 * SYNCHRONIZE DAYFILE MESSAGES UNDER NOS/BE WITH RECALL. V41EC04 11 * FIX DOCUMENTATION OF P.NEWD AND P.PPF. V41EC04 12 * RENAME SYMBOL *ETERMINL* TO *ECONNECT*. V41EC01 7 * CORRECT CODE TO USE NEW VALUE OF *ERT* AND TO USE *ERTW*. V41DC09 8 * CHANGE *P.CFV* TO HANDLE SPECIAL PROGRAM PARAMS (SYSLOC = 1). V41DC06 48 * CHANGE *P.FXF* TO ENSURE I/O COMPLETE ON ACTUAL FILE *OUTPUT*. V41DC04 7 * FIX COMPASS CODING IN ROUTINE *P.SABRT*. V41DC03 5 * CORRECT ERRORS IN P.FCA CODE AND EXIT-CONDITION DOCUMENTATION. V41DC02 5 * FIX TYPOS IN ASCII CONDITIONAL ASSEMBLY. V41CC22 5 * CHANGE ROUTINE *P.TMS* TO REMOVE TRAILING BLANKS, HANDLE ASCII. V41CC17 5 * ADD ROUTINE *P.FXF*; CHANGE *P.SABRT* TO CALL *P.FXF*. V41CC14 7 * CHANGE "P.RWR" AND "P.WWR" TO USE "ENTER" INSTEAD OF "ROUTINE". V41CC13 7 * ADD ASCII CONDITIONAL ASSEMBLY. V41CC10 34 * USE SYMBOLIC EFET CONSTANTS. V41CC05 6 * SPEED UP P.ACV. V41CC01 5 * FIX ERROR IN REWRITE ON TAPE FILES UNDER NOS AND KRONOS. V41AC14 6 * ELIMINATE NESTED CONDITIONAL ASSEMBLY. V41AC14 7 * CORRECT SKIP COUNT IN P.SKP WHEN AT END OF INFORMATION. V41AC12 5 * CHANGE SYMBOL *NOS* TO *NOS1+NOS2*. V41AC01 18 * HPSYSTM 4 PRESET SPACE 4,10 PSYSTM 87 USE PRESET PSYSTM 88 SCRATCH SET * SCRATCH STORAGE PSYSTM 89 USE * PSYSTM 90 PSYSTM TITLE MACROS AND MICROS. PSYSTM 91 ** MACROS. PSYSTM 92 SCRATCH SPACE 4,10 PSYSTM 93 ** SCRATCH - DECLARE SCRATCH STORAGE. PSYSTM 94 * PSYSTM 95 * TAG SCRATCH N PSYSTM 96 * PSYSTM 97 * DECLARES N WORDS OF SCRATCH STORAGE OVERLAYED ON PSYSTM 98 * THE PRESET CODE. PSYSTM 99 PSYSTM 100 PSYSTM 101 PURGMAC SCRATCH PSYSTM 102 PSYSTM 103 MACRO SCRATCH,TAG,N PSYSTM 104 TAG EQU SCRATCH PSYSTM 105 SCRATCH SET SCRATCH+N PSYSTM 106 ERRNG PRSL-SCRATCH STORAGE EXCEEDS PRESET. PSYSTM 107 ENDM PSYSTM 108 PSYSTM TITLE TABLES. PSYSTM 109 ** TABLES. PSYSTM 110 TGVR SPACE 4,10 PSYSTM 111 ** TGVR - TABLE OF GLOBAL VARIABLES. PSYSTM 112 * PSYSTM 113 * THIS TABLE INCLUDES RUN TIME SYSTEM VARIABLES THAT ARE PSYSTM 114 * MAINTAINED ACROSS THE ENTIRE EXECUTION OF A PASCAL PROGRAM. PSYSTM 115 * IN OTHER WORDS, THEY ARE GLOBAL WITH RESPECT TO THE USER PSYSTM 116 * PROGRAM. PSYSTM 117 PSYSTM 118 PSYSTM 119 TGVR ENTER P.GLOBL PSYSTM 120 LOC 0 PSYSTM 121 PSYSTM 122 DATA L*P.GLOBL* PSYSTM 123 TGVRPMDS VFD 30/0,30/0 PMD STACK-CHUNK (30/LWA+1,30/FWA), PSYSTM 124 ZERO IF PMD NOT ENABLED PSYSTM 125 TGVRKEY DATA 1 KEY FOR POINTER CHECKS PSYSTM 126 TGVRFORT DATA 0 FORTRAN CALL FLAG PSYSTM 127 TGVRPTRS BSS 1 FOR SAVING GLOBAL POINTERS (B4,5,6) PSYSTM 128 PSYSTM 129 LOC *O PSYSTM 130 TERA SPACE 4,10 PSYSTM 131 ** TERA - TABLE OF ERROR RECOVERY ADDRESSES. PSYSTM 132 * PSYSTM 133 * THIS VECTOR IS JUMPED TO WHEN PASCAL DETECTS A RUN TIME PSYSTM 134 * ERROR. A0 WILL CONTAIN THE LINE NUMBER AT THIS TIME IF PSYSTM 135 * P+ IS ON. PSYSTM 136 PSYSTM 137 PSYSTM 138 TERA ENTER P.TERA TABLE OF ERROR RECOVERY ADDRESSES PSYSTM 139 LOC 0 PSYSTM 140 PSYSTM 141 ASSERR SX0 MSGD VALUE OUT OF RANGE PSYSTM 142 EQ ABT PSYSTM 143 PSYSTM 144 INXERR SX0 MSGE INDEX OR CASE VAR OUT OF RANGE PSYSTM 145 EQ ABT PSYSTM 146 PSYSTM 147 DIVERR SX0 MSGF DIVISION BY ZERO PSYSTM 148 EQ ABT PSYSTM 149 PSYSTM 150 ICNERR SX0 MSGAG INCONSISTENT NODE REFERENCE. PSYSTM 151 EQ ABT PSYSTM 152 PSYSTM 153 OVLERR SX0 MSGN INTEGER OVERFLOW PSYSTM 154 EQ ABT PSYSTM 155 PSYSTM 156 PTRERR SX0 MSGH INCORRECT POINTER REFERENCE PSYSTM 157 EQ ABT PSYSTM 158 PSYSTM 159 MODERR SX0 MSGAD MOD BY NON-POSITIVE MODULO PSYSTM 160 EQ ABT PSYSTM 161 PSYSTM 162 EOLERR SX0 MSGAE TRIED TO CHECK EOLN WHILE AT EOS/EOF PSYSTM 163 EQ ABT PSYSTM 164 PSYSTM 165 ISMERR SX0 MSGQ MEMORY REQUIRED EXCEEDS SPECIFIED MFL PSYSTM 166 EQ ABT PSYSTM 167 PSYSTM 168 LOC *O PSYSTM 169 TMSG SPACE 4,10 PSYSTM 170 ** TMSG - TABLE OF DAYFILE MESSAGES. PSYSTM 171 * PSYSTM 172 * NOTE THAT THE LENGTHS OF THE MESSAGES MUST BE EVEN. PSYSTM 173 PSYSTM 174 PSYSTM 175 MSGA DATA C* AT LINE +++++ IN --------- //////////.* PSYSTM 176 MSGB DATA C* IN --------- //////////.* PSYSTM 177 MSGD DATA C* VALUE OUT OF RANGE.* PSYSTM 178 MSGE DATA C* INDEX OR CASE EXPR OUT OF RANGE. * PSYSTM 179 MSGF DATA C* DIVISION BY ZERO.* PSYSTM 180 MSGH DATA C* INCORRECT POINTER REFERENCE. * PSYSTM 181 MSGI DATA C* TOO MANY PROGRAM PARAMETERS. * PSYSTM 182 MSGJ DATA C* HALT.* PSYSTM 183 MSGK DATA C* LINELIMIT EXCEEDED ON =======. * PSYSTM 184 MSGL DATA C* TRIED TO READ ======= PAST EOS/EOF.* PSYSTM 185 MSGM DATA C* TRIED TO WRITE ======= WITHOUT REWRITE.* PSYSTM 186 MSGN DATA C* INTEGER LARGER THAN MAXINT.* PSYSTM 187 MSGO DATA C* BUFFER TOO SMALL ON =======. * PSYSTM 188 MSGP DATA C* XXXXXXB LOAD FL, XXXXXXB START FL. * PSYSTM 189 MSGQ DATA C* MEMORY REQUIRED EXCEEDS SPECIFIED MFL. * PSYSTM 190 MSGR DATA C* PASCAL SYSTEM ERROR. * PSYSTM 191 MSGS DATA C* NON-DIGIT FOUND WHILE READING =======. * PSYSTM 192 MSGT DATA C* VALUE TOO LARGE WHILE READING =======. * PSYSTM 193 MSGU DATA C* INTERNAL FILE LIMIT EXCEEDED.* PSYSTM 194 MSGV DATA C* INCOMPATIBLE VERSION OF PASCLIB USED.* PSYSTM 195 MSGAA DATA C* AAAAA.BBB CP SECS, XXXXXXB MAX CM USED.* PSYSTM 196 MSGAB DATA C* TRIED TO READ ======= WITHOUT RESET. * PSYSTM 197 MSGAC DATA C* UNDEFINED VALUE TO WRITE ON =======. * PSYSTM 198 MSGAD DATA C* MOD BY NON-POSITIVE MODULO.* PSYSTM 199 MSGAE DATA C* TRIED TO CHECK EOLN WHILE AT EOS/EOF.* PSYSTM 200 MSGAF DATA C* XXXXXXB HIGHEST FIELD LENGTH.* PSYSTM 201 MSGAG DATA C* INCONSISTENT NODE REFERENCE. * PSYSTM 202 PSYSTM 203 SCOPE2 IFNE SCOPE2,0 PSYSTM 204 MSGRMA DATA C* RECORD MANAGER ERROR NNNNNN ON FILE =======. * PSYSTM 205 MSGRMB DATA C* FILE ======= MUST BE SEQUENTIAL, RT IN [W,S,Z,F,U].* PSYSTM 206 MSGRMC DATA C* MRL ON FILE CARD FOR ======= EXCEEDS BUFLEN. * PSYSTM 207 MSGRMD DATA C* INVALID RECORD TYPE FOR SKIP ON =======. * PSYSTM 208 MSGRMG DATA C* ATTEMPT TO SKIP ======= PAST EOF/EOI.* PSYSTM 209 SCOPE2 ENDIF PSYSTM 210 TIOE SPACE 4,10 PSYSTM 211 ** TIOE - TABLE OF INPUT/OUTPUT ERRORS. PSYSTM 212 PSYSTM 213 PSYSTM 214 TIOE BSS 0 PSYSTM 215 LOC 0 PSYSTM 216 PSYSTM 217 IOEA CON MSGK LINELIMIT EXCEEDED ON XXXXXXX. PSYSTM 218 IOEB CON MSGL TRIED TO READ XXXXXXX PAST EOS/EOF. PSYSTM 219 IOEC CON MSGM TRIED TO WRITE XXXXXXX WITHOUT REWRITE. PSYSTM 220 IOED CON MSGO BUFFER TOO SMALL ON XXXXXXX. PSYSTM 221 IOEE CON MSGS NON-DIGIT FOUND WHILE READING XXXXXXX. PSYSTM 222 IOEF CON MSGT VALUE TOO LARGE WHILE READING XXXXXXX. PSYSTM 223 IOEG CON MSGAB TRIED TO READ XXXXXXX WITHOUT RESET. PSYSTM 224 IOEH CON MSGAC UNDEFINED VALUE TO WRITE ON XXXXXXX. PSYSTM 225 PSYSTM 226 SCOPE2 IFNE SCOPE2,0 PSYSTM 227 RMIOEA CON MSGRMA RECORD MAN ERROR ON FILE XXXXXXX. PSYSTM 228 RMIOEB CON MSGO BUFFER TOO SMALL ON XXXXXXX. PSYSTM 229 RMIOEC CON MSGRMB FILE XXXXXXX MUST BE FO=SQ, RT=W,S,Z,U. PSYSTM 230 RMIOED CON MSGRMC FILE CARD SPECIFIES MRL>PASCAL BUFFER. PSYSTM 231 RMIOEE CON MSGRMD INVALID RT FOR SKIP ON XXXXXXX. PSYSTM 232 RMIOEH CON MSGRMG ZERO SKIP COUNT ON XXXXXXX. PSYSTM 233 SCOPE2 ENDIF PSYSTM 234 PSYSTM 235 LOC *O PSYSTM 236 PSYSTM TITLE RUN TIME ROUTINES. PSYSTM 237 P.ACV SPACE 4,15 PSYSTM 238 ** P.ACV - ALLOCATE AND COPY VALUE PARAMETER. PSYSTM 239 * PSYSTM 240 * ENTRY (X1) = SIZE OF VALUE. PSYSTM 241 * (X2) = SOURCE FWA. PSYSTM 242 * (B1) = 1. PSYSTM 243 * PSYSTM 244 * EXIT DESTINATION ALLOCATED. PSYSTM 245 * VALUE COPIED INTO DESTINATION. PSYSTM 246 * (X6) = DESTINATION FWA. PSYSTM 247 * PSYSTM 248 * USES X - ALL. PSYSTM 249 * A - 1, 2, 3, 4, 5, 6, 7. PSYSTM 250 * B - 2, 3, 7. PSYSTM 251 * PSYSTM 252 * CALLS P.ALM. PSYSTM 253 PSYSTM 254 PSYSTM 255 ACV ROUTINE P.ACV ENTRY/EXIT PSYSTM 256 LX2 18 PSYSTM 257 BX6 X1+X2 PSYSTM 258 SA6 ACVA SAVE SOURCE FWA AND VALUE SIZE PSYSTM 259 RJ =XP.ALM ALLOCATE MEMORY PSYSTM 260 SA1 ACVA PSYSTM 261 SB7 X1 SIZE PSYSTM 262 AX1 18 SOURCE FWA PSYSTM 263 ZR B7,ACVX IF SIZE = 0 PSYSTM 264 SX1 X1-1 V41CC01 6 ACV1 SA3 X1+B7 V41CC01 7 SB7 B7-B1 V41CC01 8 BX7 X3 PSYSTM 267 SA7 X6+B7 PSYSTM 268 NZ B7,ACV1 IF MORE TO COPY PSYSTM 269 EQ ACVX RETURN PSYSTM 270 PSYSTM 271 ACVA SCRATCH 1 PSYSTM 272 P.CFV SPACE 4,25 PSYSTM 273 ** P.CFV - COMMISSION FILE VARIABLE. PSYSTM 274 * PSYSTM 275 * ENTRY (X1) = 51/0, 9/DISPOSITION CODE FOR EFET. PSYSTM 276 * (X2) = FORMAL FILE NAME (1-7 CHARS, ZERO FILLED), IF PSYSTM 277 * PROGRAM-PARAMETER BIT (EPROGPAR) IS SET IN (X1). PSYSTM 278 * (A5) = SYSTEM PARAMETER LOCATION IN LOW CORE, IF PSYSTM 279 * PROGRAM-PARAMETER BIT (EPROGPAR) IS SET IN (X1). PSYSTM 280 * (A5) = 1, IF FORMAL NAME NOT TO BE SET IN LOW CORE. V41DC06 49 * (X5) = ((A5)), IF PROGRAM-PARAMETER BIT IS SET IN (X1). PSYSTM 281 * (X6) = LRL (FILE ELEMENT SIZE). PSYSTM 282 * (B1) = 1. PSYSTM 283 * (B3) = EFET ADDRESS. PSYSTM 284 * (B7) = BUFFER SIZE. PSYSTM 285 * PSYSTM 286 * EXIT EFET INITIALIZED. PSYSTM 287 * CIO BUFFER ALLOCATED. PSYSTM 288 * (B2) UNCHANGED. PSYSTM 289 * PSYSTM 290 * USES X - ALL. PSYSTM 291 * A - 1, 2, 3, 4, 5, 6, 7. PSYSTM 292 * B - 2, 3, 7. PSYSTM 293 * PSYSTM 294 * CALLS OPE, P.ALM, SRS, SWS. PSYSTM 295 PSYSTM 296 PSYSTM 297 * OPEN PERSISTENT FILE NOT BOUND TO *INPUT*. PSYSTM 298 PSYSTM 299 CFV3 RJ SWS SET WRITE STATUS PSYSTM 300 PSYSTM 301 CFV ROUTINE P.CFV ENTRY/EXIT PSYSTM 302 PSYSTM 303 * SAVE DISPOSITION CODE AND LRL IN EFET. PSYSTM 304 PSYSTM 305 LX1 EDISPC V41CC05 7 ERRNZ ELRL SHIFT X6 V41CC05 8 BX6 X6+X1 9/DISPOSITION CODE, 33/0, 18/LRL PSYSTM 307 PSYSTM 308 SCOPE2 IFNE SCOPE2,0 PSYSTM 309 SX7 B7 PSYSTM 310 LX7 EWSALEN PSYSTM 311 BX6 X6+X7 PSYSTM 312 SCOPE2 ENDIF PSYSTM 313 PSYSTM 314 ERRNZ EFET FIX NEXT LINE PSYSTM 315 SA6 B3 PSYSTM 316 LX1 59-EPROGPAR PSYSTM 317 BX7 X7-X7 ASSUME ZERO FILE NAME PSYSTM 318 PL X1,CFV1 IF NOT PROGRAM PARAMETER PSYSTM 319 BX7 X2 FILE NAME PSYSTM 320 SX0 A5-1 V41DC06 50 ZR X0,CFV1 IF FORMAL NAME NOT TO BE SUBSTITUTED V41DC06 51 PSYSTM 321 * SUBSTITUTE FORMAL NAME IN LOW CORE AND ACTUAL IN FET. PSYSTM 322 PSYSTM 323 SCOPE2 IFNE SCOPE2,1 PSYSTM 324 SX6 B3+EFETFET FET ADDRESS PSYSTM 325 SCOPE2 ELSE PSYSTM 326 SX6 B3+EFITFIT PSYSTM 327 SCOPE2 ENDIF PSYSTM 328 PSYSTM 329 BX6 X6+X7 42/FORMAL NAME, 18/FET ADDR PSYSTM 330 SA6 A5 PSYSTM 331 ZR X5,CFV1 IF NO ACTUAL NAME PSYSTM 332 MX0 7*6 PSYSTM 333 BX7 X0*X5 ACTUAL NAME FOR FET PSYSTM 334 PSYSTM 335 * ALLOCATE BUFFER. PSYSTM 336 V41DC06 52 CFV1 BSS 0 V41DC06 53 PSYSTM 337 SCOPE2 IFNE SCOPE2,1 PSYSTM 338 SA7 B3+B1 FET+0 V41DC06 54 ERRNZ EFETFET-1 FIX PREVIOUS LINE PSYSTM 340 SCOPE2 ELSE PSYSTM 341 SA7 B3+EFITFIT V41DC06 55 SCOPE2 ENDIF PSYSTM 343 PSYSTM 344 SX1 B7 PSYSTM 345 SX6 B3 PSYSTM 346 LX6 -18 PSYSTM 347 BX6 X6+X1 18/B3,18/0,6/0,18/B7 PSYSTM 348 SX7 B2 PSYSTM 349 LX6 2*18 PSYSTM 350 BX6 X6+X7 6/0,18/B7,18/B3,18/B2 PSYSTM 351 SA6 CFVA SAVE B-REGISTERS PSYSTM 352 RJ =XP.ALM ALLOCATE MEMORY ((X1) = SIZE) PSYSTM 353 PSYSTM 354 * INITIALIZE FET. PSYSTM 355 PSYSTM 356 SA1 CFVA RESTORE B-REGISTERS PSYSTM 357 SB2 X1 PSYSTM 358 AX1 18 PSYSTM 359 SB3 X1 PSYSTM 360 AX1 18 PSYSTM 361 PSYSTM 362 SCOPE2 IFNE SCOPE2,1 PSYSTM 363 SX2 FETSZ-5 PSYSTM 364 LX2 18 PSYSTM 365 BX7 X6+X2 42/FETSZ-5,18/FIRST PSYSTM 366 SA7 B3+EFETFRST PSYSTM 367 SA6 A7+B1 IN := FIRST PSYSTM 368 SA6 A6+B1 OUT := FIRST PSYSTM 369 IX7 X6+X1 FIRST + BUFFER LENGTH PSYSTM 370 SA7 A6+B1 LIMIT PSYSTM 371 SA2 B3+EFETFET FILE NAME PSYSTM 372 RJ OPE OPEN EFET PSYSTM 373 SA1 X2-EFETFET PSYSTM 374 SCOPE2 ELSE PSYSTM 375 SX7 X6 X6 IS ADDR BUFFER = WSA PSYSTM 376 LX6 BUFADDR PSYSTM 377 BX6 X6+X7 X6 = 24/0,18/WSA,18/WSA PSYSTM 378 SA7 B3+EFITIN SET IN/OUT POINTER TO WSA PSYSTM 379 SA6 B3+EFITBUF PSYSTM 380 SA2 B3+EFITFIT FILE NAME PSYSTM 381 RJ OPE OPEN EFET PSYSTM 382 SA1 X2-EFITFIT PSYSTM 383 SCOPE2 ENDIF PSYSTM 384 PSYSTM 385 LX1 59-EPERSIST PSYSTM 386 PL X1,CFV2 IF NON-PERSISTENT FILE PSYSTM 387 SA3 X2 FET+0 PSYSTM 388 MX0 42 PSYSTM 389 BX3 X0*X3 EXTRACT FILE NAME PSYSTM 390 SA4 =5LINPUT PSYSTM 391 BX4 X4-X3 PSYSTM 392 NZ X4,CFV3 IF FILE NAME <> *INPUT* PSYSTM 393 PSYSTM 394 * INITIALIZE EFET BOUND TO *INPUT*. PSYSTM 395 PSYSTM 396 LX1 EPERSIST-59 RESTORE X1 PSYSTM 397 MX6 1 PSYSTM 398 LX6 ESEGMENT-59 PSYSTM 399 BX6 X6+X1 SET SEGMENTED-FILE BIT PSYSTM 400 SA6 A1 PSYSTM 401 RJ SRS SET READ STATUS PSYSTM 402 EQ CFVX RETURN PSYSTM 403 PSYSTM 404 * INITIALIZE NON-PERSISTENT FILES. PSYSTM 405 PSYSTM 406 CFV2 RJ SRS SET READ STATUS PSYSTM 407 EQ CFVX RETURN PSYSTM 408 PSYSTM 409 CFVA SCRATCH 1 PSYSTM 410 P.CLOCK SPACE 4,10 PSYSTM 411 ** P.CLOCK - RETURN CP TIME IN MILLISECONDS. PSYSTM 412 * PSYSTM 413 * ENTRY (B1) = 1. PSYSTM 414 * PSYSTM 415 * EXIT (X6) = CP TIME IN MILLISECONDS. PSYSTM 416 * PSYSTM 417 * USES X - 1, 2, 3, 4, 6, 7. PSYSTM 418 * A - 1, 2, 6. PSYSTM 419 * PSYSTM 420 * MACROS TIME. PSYSTM 421 PSYSTM 422 PSYSTM 423 CLK ROUTINE P.CLOCK ENTRY/EXIT PSYSTM 424 TIME CLKA PSYSTM 425 MX1 -12 PSYSTM 426 SA2 CLKA PSYSTM 427 MX3 -24 PSYSTM 428 BX4 -X1*X2 0 <= MILLISECONDS < 1000D PSYSTM 429 AX2 12 PSYSTM 430 SX6 1000D PSYSTM 431 BX3 -X3*X2 SECONDS PSYSTM 432 IX7 X6*X3 PSYSTM 433 NO PSYSTM 434 IX6 X4+X7 TOTAL MILLISECONDS PSYSTM 435 EQ CLKX RETURN PSYSTM 436 PSYSTM 437 CLKA BSS 1 TEMPORARY PSYSTM 438 P.CLO SPACE 4,20 PSYSTM 439 ** P.CLO - CLOSE EFET. PSYSTM 440 * PSYSTM 441 * ENTRY (A1) = EFET ADDRESS. PSYSTM 442 * (X1) = ((A1)). PSYSTM 443 * PSYSTM 444 * EXIT (B2) UNCHANGED. PSYSTM 445 * IF PERSISTENT, THE BUFFER IS FLUSHED; PSYSTM 446 * IF NON-PERSISTENT, THE FILE IS RETURNED OR UNLOADED. PSYSTM 447 * FET MAY BE BUSY. PSYSTM 448 * PSYSTM 449 * USES X - ALL. PSYSTM 450 * A - 1, 2, 3, 4, 5, 6, 7. PSYSTM 451 * B - 3, 7. PSYSTM 452 * PSYSTM 453 * CALLS FOB. PSYSTM 454 * PSYSTM 455 * MACROS CLOSE, CLOSEM, FETCH, RETURN. PSYSTM 456 PSYSTM 457 PSYSTM 458 CLO1 LX1 EPERSIST-ECONNECT V41EC07 9 PL X1,CLO2 IF NOT CONNECTED V41EC07 10 RJ FOB FLUSH OUTPUT BUFFER V41EC07 11 CLO2 BSS 0 V41EC07 12 V41EC07 13 NOS IFNE KRONOS+NOS1+NOS2,0 V41AC01 19 RETURN X2,R RETURN FILE V41EC07 14 NOS ENDIF PSYSTM 461 PSYSTM 462 NOSBE IFNE NOSBE+SCOPE34,0 PSYSTM 463 CLOSE X2,UNLOAD,R UNLOAD FILE V41EC07 15 NOSBE ENDIF PSYSTM 465 PSYSTM 466 SCOPE2 IFNE SCOPE2,0 PSYSTM 467 CLOSEM X2,U UNLOAD FILE V41EC07 16 SCOPE2 ENDIF PSYSTM 469 PSYSTM 470 CLO ROUTINE P.CLO ENTRY/EXIT PSYSTM 471 PSYSTM 472 SCOPE2 IFNE SCOPE2,1 PSYSTM 473 ERRNZ EFETFET-1 FIX NEXT LINE PSYSTM 474 SX2 A1+B1 PSYSTM 475 SCOPE2 ELSE PSYSTM 476 SX2 A1+EFITFIT X2 := ADDR(FIT[0]) PSYSTM 477 FETCH X2,OC,X5 X5 := 0-NEVER OPEN;1-OPEN;10-CLOSED PSYSTM 478 LX5 -1 PSYSTM 479 PL X5,CLOX IF FILE ALREADY CLOSED PSYSTM 480 SCOPE2 ENDIF PSYSTM 481 PSYSTM 482 LX1 59-EPERSIST PSYSTM 483 PL X1,CLO1 IF NON-PERSISTENT FILE PSYSTM 484 RJ FOB FLUSH OUTPUT BUFFER PSYSTM 485 PSYSTM 486 SCOPE2 IFNE SCOPE2,0 PSYSTM 487 SA3 =5LINPUT PSYSTM 488 SA4 X2 PSYSTM 489 MX0 42 PSYSTM 490 BX4 X0*X4 PSYSTM 491 BX3 X4-X3 PSYSTM 492 ZR X3,CLOX IF ACTUAL FILE *INPUT* PSYSTM 493 SA3 =6LOUTPUT PSYSTM 494 BX3 X4-X3 PSYSTM 495 ZR X3,CLOX IF ACTUAL FILE *OUTPUT* PSYSTM 496 CLOSEM X2,N CLOSE FILE WITH NO REWIND PSYSTM 497 SCOPE2 ENDIF PSYSTM 498 PSYSTM 499 EQ CLOX RETURN PSYSTM 500 P.CPV SPACE 4,15 PSYSTM 501 ** P.CPV - COPY PARAMETER VALUE. PSYSTM 502 * PSYSTM 503 * ENTRY (X1) = SIZE OF VALUE. PSYSTM 504 * (X2) = VALUE SOURCE FWA. PSYSTM 505 * (X3) = VALUE DESTINATION FWA. PSYSTM 506 * (B1) = 1. PSYSTM 507 * PSYSTM 508 * EXIT VALUE COPIED INTO DESTINATION. PSYSTM 509 * (X1) = FIRST WORD OF COPIED VALUE. PSYSTM 510 * PSYSTM 511 * USES X - 1, 7. PSYSTM 512 * A - 1, 7. PSYSTM 513 * B - 7. PSYSTM 514 PSYSTM 515 PSYSTM 516 CPV1 SB7 B7-B1 PSYSTM 517 SA1 X2+B7 PSYSTM 518 BX7 X1 PSYSTM 519 SA7 X3+B7 PSYSTM 520 NZ B7,CPV1 IF MORE TO COPY PSYSTM 521 PSYSTM 522 CPV ROUTINE P.CPV ENTRY/EXIT PSYSTM 523 SB7 X1+ PSYSTM 524 NZ X1,CPV1 IF SIZE <> 0 PSYSTM 525 EQ CPVX RETURN PSYSTM 526 P.DATE SPACE 4,15 V41CC10 35 ** P.DATE - RETURN SYSTEM DATE. PSYSTM 528 * PSYSTM 529 * ENTRY (X1) = ADDRESS TO RETURN SYSTEM DATE. PSYSTM 530 * PSYSTM 531 * EXIT ((X1)) = SYSTEM DATE. PSYSTM 532 * PSYSTM 533 * USES X - 1, 2, 3, 4, 5, 6. V41CC10 36 * A - 1, 4, 6. V41CC10 37 * V41CC10 38 * CALLS P.DWA. V41CC10 39 * PSYSTM 536 * MACROS DATE. PSYSTM 537 PSYSTM 538 PSYSTM 539 ASCII IFEQ ASCFLAG,1 V41CC22 6 DTEZ SET DCALFALN-ASALFALN V41CC22 7 ASCII ENDIF V41CC22 8 V41CC22 9 DTE ROUTINE P.DATE ENTRY/EXIT PSYSTM 540 PSYSTM 541 OS IFNE KRONOS+NOS1+NOS2+NOSBE+SCOPE34,0 V41CC10 40 ASCII IFNE ASCFLAG,1 V41CC10 41 DATE X1 V41CC10 42 ASCII ELSE V41CC10 43 BX5 X1 V41CC10 44 DATE DTEA V41CC10 45 SA1 DTEA V41CC10 46 SX2 ASALFALN V41CC10 47 RJ =XP.DWA CONVERT DISPLAY CODE WORD TO ASCII V41CC10 48 SA6 X5 STORE FIRST PART OF DATE V41CC10 49 SX2 DTEZ DCALFALN-ASALFALN V41CC22 10 RJ =XP.DWA CONVERT DISPLAY CODE WORD TO ASCII V41CC10 51 SA4 X5+B1 V41CC10 52 MX3 DTEZ*ASCHARSZ (DCALFALN-ASALFALN)*ASCHARSZ V41CC22 11 BX4 -X3*X4 V41CC10 54 BX6 X4+X6 V41CC10 55 SA6 A4 STORE REMAINDER OF DATE V41CC10 56 ASCII ENDIF V41CC10 57 OS ENDIF V41CC10 58 V41CC10 59 OS IFNE SCOPE2,0 V41CC10 60 BX6 X1 WE USE THE SAME REGISTERS JUST IN CASE PSYSTM 545 SA6 DTEA SAVE X1 PSYSTM 546 DATE DTEB PSYSTM 547 SA1 DTEB PSYSTM 548 BX6 X1 PSYSTM 549 SA1 DTEA PSYSTM 550 SA6 X1 PSYSTM 551 OS ENDIF V41CC10 61 PSYSTM 553 EQ DTEX RETURN PSYSTM 554 V41CC10 62 ASCII IFEQ ASCFLAG,1 V41CC10 63 DTEA SCRATCH 1 V41CC10 64 ASCII ENDIF V41CC10 65 PSYSTM 555 SCOPE2 IFNE SCOPE2,0 PSYSTM 556 DTEA SCRATCH 1 PSYSTM 557 DTEB SCRATCH 1 PSYSTM 558 SCOPE2 ENDIF PSYSTM 559 P.DFV SPACE 4,20 PSYSTM 560 ** P.DFV - DECOMMISSION FILE VARIABLE. PSYSTM 561 * PSYSTM 562 * ENTRY (A1) = EFET ADDRESS. PSYSTM 563 * (X1) = ((A1)). PSYSTM 564 * PSYSTM 565 * EXIT CIO BUFFER LIBERATED IF NON-PROGRAM PARAMETER. PSYSTM 566 * EFET AND FET DECOMMISSIONED. PSYSTM 567 * (B2) UNCHANGED. PSYSTM 568 * PSYSTM 569 * USES X - ALL. PSYSTM 570 * A - 1, 2, 3, 4, 5, 6, 7. PSYSTM 571 * B - 2, 3, 7. PSYSTM 572 * PSYSTM 573 * CALLS CLO, P.LIM. PSYSTM 574 * PSYSTM 575 * MACROS RECALL. PSYSTM 576 PSYSTM 577 PSYSTM 578 DFV ROUTINE P.DFV ENTRY/EXIT PSYSTM 579 RJ CLO CLOSE EFET PSYSTM 580 PSYSTM 581 SCOPE2 IFNE SCOPE2,1 PSYSTM 582 SA1 X2-EFETFET PSYSTM 583 SCOPE2 ELSE PSYSTM 584 SA1 X2-EFITFIT PSYSTM 585 SCOPE2 ENDIF PSYSTM 586 PSYSTM 587 LX1 59-EPROGPAR PSYSTM 588 NG X1,DFVX IF PROGRAM PARAMETER PSYSTM 589 PSYSTM 590 SCOPE2 IFNE SCOPE2,1 PSYSTM 591 RECALL X2 PSYSTM 592 ERRNZ EFETFRST-EFETFET-1 FIX NEXT LINE PSYSTM 593 SA1 X2+B1 PSYSTM 594 SCOPE2 ELSE PSYSTM 595 SA1 A1+EFITBUF PSYSTM 596 LX1 -BUFADDR PSYSTM 597 SCOPE2 ENDIF PSYSTM 598 PSYSTM 599 SX6 B2 PSYSTM 600 SX1 X1 ISOLATE FIRST (BUFFER FWA) PSYSTM 601 SA6 DFVA SAVE B2 PSYSTM 602 RJ =XP.LIM LIBERATE MEMORY PSYSTM 603 SA3 DFVA PSYSTM 604 SB2 X3 RESTORE B2 PSYSTM 605 EQ DFVX RETURN PSYSTM 606 PSYSTM 607 DFVA SCRATCH 1 PSYSTM 608 P.DISPD SPACE 4,10 PSYSTM 609 ** P.DISPD - TEST AND DEALLOCATE HEAP STORAGE. PSYSTM 610 * PSYSTM 611 * ENTRY (X1) = EXTENDED POINTER VALUE ($T+). PSYSTM 612 * PSYSTM 613 * EXIT NODE DEALLOCATED. PSYSTM 614 * PSYSTM 615 * USES X - 1, 2, 3, 4, 5, 6. PSYSTM 616 * A - 2, 4, 6. PSYSTM 617 * PSYSTM 618 * CALLS ABT, P.LIM. PSYSTM 619 PSYSTM 620 PSYSTM 621 TDS1 SA6 X1 ZERO FIRST WORD OF NODE PSYSTM 622 RJ =XP.LIM LIBERATE NODE PSYSTM 623 PSYSTM 624 TDS ROUTINE P.DISPD ENTRY/EXIT PSYSTM 625 SA2 =XP.TMEM+MEMFL CURRENT FIELD LENGTH PSYSTM 626 BX3 X1 SAVE ORIGINAL POINTER PSYSTM 627 SX1 X1-1 ADDRESS OF ACTUAL NODE. PSYSTM 628 IX5 X1-X2 PSYSTM 629 BX6 -X5+X1 PSYSTM 630 NG X6,TERA+PTRERR IF POINTER NOT IN FIELD LENGTH PSYSTM 631 SA4 X1 GET KEY FROM NODE PSYSTM 632 IX6 X4-X3 PSYSTM 633 ZR X6,TDS1 IF KEYS MATCH PSYSTM 634 EQ TERA+PTRERR INCORRECT POINTER REFERENCE PSYSTM 635 P.END SPACE 4,15 PSYSTM 636 ** P.END - RETURN CONTROL TO THE OPERATING SYSTEM. PSYSTM 637 * PSYSTM 638 * ENTRY (B1) = 1. PSYSTM 639 * PSYSTM 640 * EXIT TO OPERATING SYSTEM. PSYSTM 641 * PSYSTM 642 * USES ALL REGISTERS. PSYSTM 643 * PSYSTM 644 * CALLS ISM. PSYSTM 645 * PSYSTM 646 * MACROS ENDRUN. PSYSTM 647 PSYSTM 648 PSYSTM 649 END ENTER P.END ENTRY PSYSTM 650 SA1 =XP.PIT+PITFLAG PSYSTM 651 LX1 59-57 PSYSTM 652 PL X1,END1 IF NOT ISSUING STATISTICS PSYSTM 653 RJ ISM ISSUE STATISTICS MESSAGE PSYSTM 654 END1 ENDRUN PSYSTM 655 P.GETB SPACE 4,15 PSYSTM 656 ** P.GETB - GET BINARY. PSYSTM 657 * PSYSTM 658 * ENTRY (A1) = EFET ADDRESS. PSYSTM 659 * (X1) = ((A1)). PSYSTM 660 * PSYSTM 661 * EXIT (X2) = FET ADDRESS. PSYSTM 662 * (X3) = FILE POINTER, IF NOT EOS/EOF. PSYSTM 663 * (X5) = UNCHANGED. V41CC10 66 * (B2) = UNCHANGED. V41CC10 67 * PSYSTM 664 * USES X - 0, 1, 2, 3, 4, 6, 7. PSYSTM 665 * A - 1, 2, 3, 4, 6, 7. PSYSTM 666 * B - 3, 7. PSYSTM 667 * PSYSTM 668 * CALLS IOE, RWR. PSYSTM 669 * PSYSTM 670 * MACROS FETCH, GETW, GETWP, READ, RECALL. PSYSTM 671 PSYSTM 672 PSYSTM 673 SCOPE2 IFNE SCOPE2,1 PSYSTM 674 PSYSTM 675 GTB9 BX7 -X7+X6 PSYSTM 676 AX0 1 (LIMIT - FIRST) / 2 PSYSTM 677 NG X7,GTBX IF FET BUSY OR EOR/EOF/EOI PSYSTM 678 SB3 X0+ PSYSTM 679 GE B7,B3,GTBX IF BUFFER HALF FULL PSYSTM 680 PSYSTM 681 NOSBE IFNE NOSBE+SCOPE34,0 PSYSTM 682 SA1 X2+B1 PSYSTM 683 AX1 54 DEVICE TYPE FROM FET PSYSTM 684 SX1 X1+77B-61B PSYSTM 685 ZR X1,GTBX IF FILE IS CONNECTED PSYSTM 686 NOSBE ENDIF PSYSTM 687 PSYSTM 688 READ X2 PSYSTM 689 PSYSTM 690 GTB ROUTINE P.GETB ENTRY/EXIT PSYSTM 691 SA3 A1+EFETFET+3 OUT V41CC05 9 LX1 59-EREWRITE V41CC05 10 ERRNZ EFETFET-1 FIX NEXT LINE V41CC05 11 SX2 A1+B1 FET PSYSTM 694 SA4 A3+B1 LIMIT PSYSTM 695 NG X1,RWR IF READ WITHOUT RESET V41CC13 8 LX1 EREWRITE-59 V41CC05 12 ERRNZ EEOSF-59 SHIFT X1 V41CC05 13 NG X1,GTB7 IF READ AT EOS/EOF PSYSTM 698 ERRNZ ELRL SHIFT X1 V41CC05 14 SB3 X1 LRL PSYSTM 699 SX7 X3+B3 OUT + LRL PSYSTM 700 SX4 X4 LIMIT PSYSTM 701 SA1 X2+B1 FIRST PSYSTM 702 IX3 X7-X4 (OUT + LRL) - LIMIT PSYSTM 703 SX6 X1 FIRST PSYSTM 704 IX0 X4-X6 LIMIT - FIRST PSYSTM 705 PL X3,GTB1 IF OUT = LIMIT PSYSTM 706 SX6 X7 OUT + LRL PSYSTM 707 GTB1 SA6 A3 ADVANCE OUT PSYSTM 708 BX3 X6 PSYSTM 709 SA6 X2-EFETFET+EFETPTR ADVANCE FILE POINTER V41CC05 15 GTB2 SA1 X2 FET PSYSTM 711 LX7 X1 SAVE FET PSYSTM 712 SA1 A3-B1 IN PSYSTM 713 IX6 X1-X3 IN - OUT PSYSTM 714 PL X6,GTB3 IF IN >= OUT PSYSTM 715 IX6 X6+X0 PSYSTM 716 GTB3 SB7 X6 FULL SPACE IN BUFFER PSYSTM 717 LX7 59-0 COMPLETE BIT PSYSTM 718 SX6 X7 PSYSTM 719 LX6 0-4 EOR BIT PSYSTM 720 GE B7,B3,GTB9 IF BUFFER NOT EMPTY PSYSTM 721 SX1 X2-EFETFET ADDRESS OF EFET V41CC05 16 NG X7,GTB4 IF FET NOT BUSY PSYSTM 723 RECALL PSYSTM 724 EQ GTB2 TRY AGAIN PSYSTM 725 PSYSTM 726 GTB4 PL X6,GTB6 IF NOT EOR PSYSTM 727 MX4 2 PSYSTM 728 BX4 X4*X6 EXTRACT EOR/EOF BITS PSYSTM 729 PSYSTM 730 NOS IFNE KRONOS+NOS1+NOS2,0 V41AC01 20 MX6 -4 PSYSTM 732 LX7 60-59+0-14 RIGHT ADJUST EOR LEVEL NUMBER PSYSTM 733 BX6 -X6*X7 EOR LEVEL PSYSTM 734 SB7 X6 PSYSTM 735 EQ B7,B1,GTB6 IF LEVEL 1 EOR (INTERACTIVE INPUT) PSYSTM 736 NOS ENDIF PSYSTM 737 PSYSTM 738 SA1 X1 EFET PSYSTM 739 LX1 59-ESEGMENT V41CC05 17 NG X1,GTB5 IF SEGMENTED FILE PSYSTM 741 LX7 X4,B1 PSYSTM 742 AX4 X7,B1 PSYSTM 743 GTB5 PL X4,GTB6 IF NOT EOS/EOF PSYSTM 744 SA1 X2-EFETFET EFET V41CC05 18 ERRNZ EEOSF-59 FIX X4 V41CC05 19 ERRNZ EEOF-58 FIX X4 V41CC05 20 BX6 X1+X4 PSYSTM 746 SA6 A1 SET EOS AND/OR EOF BITS PSYSTM 747 EQ GTBX RETURN PSYSTM 748 PSYSTM 749 GTB6 READ X2 FILL THE BUFFER PSYSTM 750 EQ GTB2 TRY AGAIN PSYSTM 751 PSYSTM 752 SCOPE2 ENDIF PSYSTM 753 PSYSTM 754 GTB7 SX1 IOEB READ AT EOS/EOF ON XXXXXXX. PSYSTM 755 EQ IOE1 ISSUE INPUT/OUTPUT ERROR PSYSTM 756 PSYSTM 757 SCOPE2 IFNE SCOPE2,0 PSYSTM 758 PSYSTM 759 GTB ROUTINE P.GETB ENTRY/EXIT PSYSTM 760 SX2 A1+EFITFIT PSYSTM 761 PSYSTM 762 * CHECK READ WITHOUT RESET, EOS/EOF BITS. PSYSTM 763 PSYSTM 764 LX1 59-EREWRITE FOR RESET V41CC05 21 NG X1,RWR IF READ WITHOUT RESET V41CC13 9 LX1 EREWRITE-59 V41CC05 22 ERRNZ EEOSF-59 SHIFT X1 V41CC05 23 NG X1,GTB7 IF READ AT EOS/EOF PSYSTM 768 PSYSTM 769 * INCREMENT BUFFER POINTERS. PSYSTM 770 PSYSTM 771 SA3 A1+EFETIN X3 := IN V41CC05 24 ERRNZ ELRL SHIFT X1 V41CC05 25 SX1 X1 X1 := LRL PSYSTM 773 IX7 X1+X3 PSYSTM 774 SA7 A3 IN := IN + LRL PSYSTM 775 ERRNZ EFETPTR+1 FIX NEXT LINE V41CC05 26 SA7 A1-B1 EFET[-1] := IN (NON-TEXT FILES) PSYSTM 776 BX3 X7 FOR EXIT PSYSTM 777 PSYSTM 778 * CHECK IF INPUT BUFFER EXHAUSTED. PSYSTM 779 PSYSTM 780 ERRNZ EFITBUF-1 FIX NEXT LINE V41CC05 27 SA4 A1+B1 X4:=24/BUFLEN, 18/BUFADR, 18/EOR PSYSTM 781 SX4 X4 X4 := CURRENT EOR PSYSTM 782 IX7 X7+X1 IN + LRL PSYSTM 783 IX0 X4-X7 PSYSTM 784 PL X0,GTBX IF IN + LRL <= EOR PSYSTM 785 PSYSTM 786 * REFRESH INPUT BUFFER. FOR 7RM GET-MACROS SET:- PSYSTM 787 * X3 := BUFLEN (MAX RECORD LENGTH). PSYSTM 788 * X4 := BUFADR. PSYSTM 789 PSYSTM 790 ERRNZ EFITBUF-1 FIX NEXT LINE V41CC05 28 GTB0 SA3 A1+B1 PSYSTM 791 AX3 18 PSYSTM 792 SX4 X3 X4 := BUFADR PSYSTM 793 BX7 X4 PSYSTM 794 SA7 A1+EFITIN RESET IN := BUFADR V41CC05 29 ERRNZ EFETPTR+1 FIX NEXT LINE V41CC05 30 SA7 A1-B1 EFET[-1] := IN (NON-TEXT FILES) PSYSTM 796 AX3 18 PSYSTM 797 SX3 X3 X3 := BUFLEN (MAX RECORD LENGTH) PSYSTM 798 SX2 A1+EFITFIT X2 := ADDR(FIT[0]) PSYSTM 799 PSYSTM 800 * CHECK RECORD TYPE FROM ERT FIELD IN EFET[0]. V41DC09 9 PSYSTM 802 SA1 A1 REFRESH X1 = EFET[0] V41DC09 10 MX0 -ERTW V41CC05 31 LX1 0-ERT RIGHT-JUSTIFY RT V41CC05 32 BX0 -X0*X1 V41CC05 33 SX5 X0-RTS PSYSTM 808 NZ X5,GTB2 IF NOT S-TYPE RECORDS PSYSTM 809 PSYSTM 810 * CHECK POSITIONING OF MULTI-BLOCKED S-TYPE RECORDS. PSYSTM 811 * MACRO FETCH DESTROYS X5, X6, X7, A5. PSYSTM 812 PSYSTM 813 FETCH X2,FP,X5 FETCH FILE POSITION PSYSTM 814 ZR X5,GTB1 IF FILE IN MID-RECORD PSYSTM 815 SX5 X5-FPEOP PSYSTM 816 PL X5,GTB6 IF NOT EOS/EOP/EOR PSYSTM 817 MX5 1 PSYSTM 818 SA1 X2-EFITFIT RETRIEVE DISP BITS PSYSTM 819 BX6 X1 PSYSTM 820 LX6 59-ESEGMENT V41CC05 34 PL X6,GTB1 IF NOT SEGMENTED PSYSTM 822 ERRNZ EEOSF-59 SHIFT X5 V41CC05 35 BX6 X5+X1 DISP[1] := EOS PSYSTM 823 SA6 A1 PSYSTM 824 EQ GTBX RETURN PSYSTM 825 PSYSTM 826 * GET PARTIAL S-TYPE RECORD. PSYSTM 827 PSYSTM 828 GTB1 GETWP X2,X4,X3,GTB6 *RJ GTB6* IF END OF DATA PSYSTM 829 EQ GTB5 PSYSTM 830 PSYSTM 831 * GET U, T, W, Z-TYPE RECORDS PSYSTM 832 PSYSTM 833 GTB2 GETW X2,X4,X3,GTB6.1 *RJ GTB6.1* IF END OF DATA PSYSTM 834 SA1 X2-EFITFIT A1 := ADDR(EFET[0]) PSYSTM 835 PSYSTM 836 * IGNORE EOL PROCESSING FOR U-TYPE RECORDS. PSYSTM 837 PSYSTM 838 SX5 X0-RTU PSYSTM 839 ZR X5,GTB5 IF U-TYPE RECORD PSYSTM 840 PSYSTM 841 * PROCESS ALL OTHER RECORD TYPES. PSYSTM 842 * GETW RETURNS X3 WITH 42/UNUSEDBITS, 18/WORDS TRANSFERRED. PSYSTM 843 PSYSTM 844 LX3 42 PSYSTM 845 SX6 X3 X6 := UNUSED BITS PSYSTM 846 LX3 18 PSYSTM 847 ZR X6,GTB3 NO UNUSED BITS PSYSTM 848 PSYSTM 849 * PROCESS PARTIALLY TRANSFERRED WORD. PSYSTM 850 * 1. MASK OUT UNUSED BITS IN BUFFER. PSYSTM 851 * IF TEXT-FILE THEN:- PSYSTM 852 * 2. IF <12 UNUSED FILL WITH 1 BLANK, APPEND 0-WORD PSYSTM 853 * IF =12 .. .. .. 2 BLANKS, APPEND 0-WORD. PSYSTM 854 * IF >12 .. AND LAST CHAR WAS COLON THEN PAD PSYSTM 855 * WITH SUFFICIENT BLANKS TO LEAVE 12 0-BITS PSYSTM 856 * AT THE END. PSYSTM 857 PSYSTM 858 SX3 X3 X3 := NO WORDS TRANSFERRED PSYSTM 859 SB3 X6-1 UNUSED BITS-1 PSYSTM 860 MX6 1 PSYSTM 861 AX6 X6,B3 FORM MASK FOR EACH UNUSED BIT PSYSTM 862 SB3 B3+B1 SAVE UNUSED BITS PSYSTM 863 LX6 X6,B3 PSYSTM 864 IX7 X4+X3 PSYSTM 865 SA2 X7-1 X2 := LAST WORD TRANSFERRED PSYSTM 866 BX7 -X6*X2 MASK OUT UNUSED PSYSTM 867 SA7 A2 RESTORE LAST WORD PSYSTM 868 LX1 59-ETEXT V41CC05 36 PL X1,GTB4.1 IF NOT A TEXT-FILE PSYSTM 870 PSYSTM 871 SB2 B3-60 PSYSTM 872 EQ B2,B0,GTB5 IF ALREADY ONE ZERO WORD PSYSTM 873 SB2 B3-12 PSYSTM 874 LT B2,B0,GTB2.2 IF LESS THEN 12 ZERO BITS PSYSTM 875 LX6 6 MASK TO UNCOVER LAST CHAR PSYSTM 876 BX5 X6*X7 X5 := LAST CHAR + ZERO BITS PSYSTM 877 NZ X5,GTB5 IF LASTCHAR<>COLON GO HOME PSYSTM 878 EQ B2,B0,GTB2.1 EXACTLY 12 ZERO BITS + COLON PSYSTM 879 SA5 =8L PSYSTM 880 AX6 6 PSYSTM 881 BX6 X6*X5 EXTRACT SUFFICIENT BLANKS LEAVING PSYSTM 882 BX7 X6+X7 12 0-BITS PSYSTM 883 SA7 A7 PAD WITH BLANKS PSYSTM 884 EQ GTB5 PSYSTM 885 PSYSTM 886 GTB2.1 SX6 2R PAD WITH TWO BLANKS PSYSTM 887 EQ GTB2.3 PSYSTM 888 PSYSTM 889 GTB2.2 SX6 1R PAD WITH ONE BLANK PSYSTM 890 GTB2.3 BX7 X7+X6 PSYSTM 891 SA7 A7 PSYSTM 892 EQ GTB4 APPEND 1 ZERO-WORD PSYSTM 893 PSYSTM 894 * PROCESS COMPLETE TRANSFER. PSYSTM 895 * IF TEXT-FILE THEN PSYSTM 896 * IF 12 0-BITS LEAVE ALONE PSYSTM 897 * ELSE APPEND 1 ZERO-WORD. PSYSTM 898 PSYSTM 899 GTB3 BSS 0 PSYSTM 900 LX1 59-ETEXT V41CC05 37 PL X1,GTB4.1 IF NOT A TEXT-FILE PSYSTM 902 PSYSTM 903 MX6 12 CHECK IF LAST 12 BITS ARE ALREADY 0 PSYSTM 904 IX7 X4+X3 PSYSTM 905 LX6 12 PSYSTM 906 SA2 X7-1 EXTRACT LAST WORD PSYSTM 907 BX5 X2*X6 PSYSTM 908 ZR X5,GTB5 IF LAST 12 BITS ARE ZERO PSYSTM 909 PSYSTM 910 GTB4 MX6 0 APPEND ONE WHOLE WORD OF ZEROES PSYSTM 911 SA6 A2+B1 PSYSTM 912 SX3 X3+B1 INCREMENT RECORD LENGTH PSYSTM 913 EQ GTB5 PSYSTM 914 PSYSTM 915 GTB4.1 SA1 A1 REFRESH X1 := EFET[0] PSYSTM 916 LX1 59-ESEGMENT V41CC05 38 PL X1,GTB5 IF NOT SEGMENTED PSYSTM 918 ZR X3,GTB0 IF SEGMENTED AND EMPTY RECORD PSYSTM 919 PSYSTM 920 * UPDATE BUFFER DESCRIPTOR. PSYSTM 921 PSYSTM 922 ERRNZ EFITBUF-1 FIX NEXT LINE V41CC05 39 GTB5 SA5 A1+B1 X5 := DESCRIPTOR PSYSTM 923 AX5 18 PSYSTM 924 IX6 X4+X3 EOR := BUFADR+RECORD LENGTH PSYSTM 925 LX5 18 PSYSTM 926 BX6 X6+X5 PSYSTM 927 SA6 A5 EFET[1]:=BUFLEN/BUFADR/EOR PSYSTM 928 SA1 A1 PSYSTM 929 ERRNZ EFITIN-2 FIX NEXT LINE V41CC05 40 SA3 A5+B1 X3 := IN PSYSTM 930 SX2 A1+EFITFIT X2 := ADDR(FIT[0]) PSYSTM 931 EQ GTBX RETURN PSYSTM 932 PSYSTM 933 * PROCESS END OF DATA FOR S-TYPE RECORDS. PSYSTM 934 PSYSTM 935 GTB6 PS ENTRY/EXIT PSYSTM 936 MX5 2 PSYSTM 937 SA1 A1 PSYSTM 938 ERRNZ EEOSF-59 FIX X5 V41CC05 41 ERRNZ EEOF-58 FIX X5 V41CC05 42 BX6 X5+X1 SET EOS/EOF FOR S-TYPE FILE PSYSTM 939 SA6 A1 IN DISP FIELD OF EFET[0] PSYSTM 940 BX1 X6 FOR EXIT PSYSTM 941 SX2 A1+EFITFIT X2 := ADDR(FIT[0]) PSYSTM 942 EQ GTBX RETURN PSYSTM 943 PSYSTM 944 * PROCESS END OF DATA FOR W,U-TYPE RECORDS. PSYSTM 945 PSYSTM 946 GTB6.1 PS ENTRY/EXIT PSYSTM 947 FETCH X2,FP,X5 FETCH FILE POSITION PSYSTM 948 MX3 2 PSYSTM 949 SA1 A1 X1 := EFET[0] PSYSTM 950 SX5 X5-FPEOP PSYSTM 951 PL X5,GTB6.2 IF EOI THEN SET EOS/EOF FLAG PSYSTM 952 BX5 X1 PSYSTM 953 LX5 59-ESEGMENT ELSE IF NOT SEGMENTED V41CC05 43 PL X5,GTB2 RE-READ NEXT SECTION/PARTITION PSYSTM 955 MX3 1 ELSE SET EOS FLAG PSYSTM 956 GTB6.2 BSS 0 V41CC05 44 ERRNZ EEOSF-59 FIX X3 V41CC05 45 ERRNZ EEOF-58 FIX X3 V41CC05 46 BX6 X3+X1 V41CC05 47 SA6 A1 UPDATE DISP FIELD OF EFET[0] PSYSTM 958 BX1 X6 PSYSTM 959 SX2 A1+EFITFIT X2 := ADDR(FIT[0]) PSYSTM 960 EQ GTBX RETURN PSYSTM 961 PSYSTM 962 SCOPE2 ENDIF PSYSTM 963 P.GETC SPACE 4,15 PSYSTM 964 ** P.GETC - GET CHARACTER. PSYSTM 965 * PSYSTM 966 * ENTRY (A1) = EFET ADDRESS + EFETPTR. V41CC05 48 * (X1) = ((A1)). PSYSTM 968 * PSYSTM 969 * EXIT (X2) = FET ADDRESS. PSYSTM 970 * PSYSTM 971 * USES X - 0, 1, 2, 3, 4, 6, 7. PSYSTM 972 * A - 1, 2, 3, 4, 6, 7. PSYSTM 973 * B - 2, 3, 7. V41CC10 68 * PSYSTM 975 * CALLS GCH. PSYSTM 976 PSYSTM 977 PSYSTM 978 GTC ROUTINE P.GETC ENTRY/EXIT PSYSTM 979 SA3 X1+B1 NEW CHARACTER OR END OF BUFFER PSYSTM 980 V41CC10 69 ASCII IFNE ASCFLAG,1 V41CC10 70 SX6 X1+B1 ADVANCE POINTER PSYSTM 981 SA6 A1+ UPDATE POINTER PSYSTM 982 ASCII ELSE V41CC10 71 SX4 B1 V41CC10 72 IX6 X4+X1 ADVANCE POINTER V41CC10 73 LX1 59-PREWRITE LEFT-ADJUST REWRITE BIT V41CC10 74 BX0 X1+X3 V41CC10 75 SA6 A1 UPDATE POINTER V41CC10 76 ASCII ENDIF V41CC10 77 PSYSTM 983 SCOPE2 IFNE SCOPE2,1 PSYSTM 984 SX2 A1+EFETFET-EFETPTR FET PSYSTM 985 SCOPE2 ELSE PSYSTM 986 SX2 A1+EFITFIT-EFETPTR FIT PSYSTM 987 SCOPE2 ENDIF PSYSTM 988 PSYSTM 989 ASCII IFNE ASCFLAG,1 V41CC10 78 PL X3,GTCX IF BUFFER NOT EMPTY V41CC10 79 ASCII ELSE V41CC10 80 PL X0,GTCX IF BUFFER NOT EMPTY V41CC10 81 ASCII ENDIF V41CC10 82 V41CC10 83 SX7 GTCX RETURN ADDRESS PSYSTM 991 V41CC10 84 ASCII IFNE ASCFLAG,1 V41CC10 85 EQ GCH CALL HELPER TO FILL BUFFER V41CC10 86 ASCII ELSE V41CC10 87 * EQ GCH FALL THROUGH TO HELPER TO FILL BUFFER V41CC10 88 ASCII ENDIF V41CC10 89 P.GETCH SPACE 4,20 PSYSTM 993 ** P.GETCH - GET CHARACTER HELPER. PSYSTM 994 * PSYSTM 995 * ENTRY (A1) = EFET ADDRESS + EFETPTR. V41CC05 49 * (A3) = LOWER 18 BITS OF ((A1)) IF EOLN TO BE SET. PSYSTM 997 * (X1) < 0 IF READ WITHOUT RESET ERROR. PSYSTM 998 * (X3) = 1/1, 59/0 IF EOLN TO BE SET. PSYSTM 999 * = 60/-0 IF BUFFER TO BE FILLED. PSYSTM 1000 * = 2/3,1/EOF,57/0 IF EOS/EOF TO BE SET (ASCII). V41CC10 90 * (X5) = UNCHANGED (RESTORED). V41CC10 91 * (X6) = ((A1)) ONLY NECESSARY IF EOLN TO BE SET. PSYSTM 1001 * (X7) = RETURN ADDRESS. PSYSTM 1002 * PSYSTM 1003 * EXIT (X2) = FET ADDRESS OR UNCHANGED. PSYSTM 1004 * PSYSTM 1005 * USES X - 0, 1, 2, 3, 4, 6, 7. PSYSTM 1006 * A - 1, 2, 3, 4, 6, 7. PSYSTM 1007 * B - 2, 3, 7. V41CC10 92 * PSYSTM 1009 * CALLS GTB, RWR. V41CC10 93 * PSYSTM 1011 * MACROS READ, RECALL. PSYSTM 1012 PSYSTM 1013 V41CC10 94 ASCII IFNE ASCFLAG,1 V41CC10 95 PSYSTM 1014 ERRNZ EFETPTR+1 FIX NEXT LINE V41CC05 50 GCH8 SA1 A1+B1 EFET PSYSTM 1015 RJ GTB GET NEXT WORD PSYSTM 1016 PSYSTM 1017 SCOPE2 IFNE SCOPE2,1 PSYSTM 1018 SA1 X2-EFETFET PSYSTM 1019 SX6 X2-EFETFET+EFETCBUF PSYSTM 1020 SCOPE2 ELSE PSYSTM 1021 SA1 X2-EFITFIT PSYSTM 1022 SX6 X2-EFITFIT+EFETCBUF PSYSTM 1023 SCOPE2 ENDIF PSYSTM 1024 PSYSTM 1025 MX0 -6 PSYSTM 1026 ERRNZ EEOSF-59 SHIFT X1 V41CC05 51 NG X1,GCH7 IF EOS/EOF ENCOUNTERED PSYSTM 1027 ERRNZ EFETPTR+1 FIX NEXT LINE V41CC05 52 SA6 A1-B1 SET FILE POINTER INTO CHARACTER BUFFER PSYSTM 1028 SA4 X3 GET CURRENT WORD PSYSTM 1029 SB3 X6 PSYSTM 1030 ZR X4,GCH6 IF ZERO (WILL RETURN IF -0) PSYSTM 1031 GCH9 LX4 6 PSYSTM 1032 BX6 -X0*X4 PSYSTM 1033 LX4 6 PSYSTM 1034 SA6 B3 STORE CHARACTER 1 PSYSTM 1035 BX7 -X0*X4 PSYSTM 1036 LX4 6 PSYSTM 1037 SA7 A6+B1 STORE CHARACTER 2 PSYSTM 1038 BX6 -X0*X4 PSYSTM 1039 LX4 6 PSYSTM 1040 SA6 A7+B1 STORE CHARACTER 3 PSYSTM 1041 BX7 -X0*X4 PSYSTM 1042 LX4 6 PSYSTM 1043 SA7 A6+B1 STORE CHARACTER 4 PSYSTM 1044 BX6 -X0*X4 PSYSTM 1045 LX4 6 PSYSTM 1046 SA6 A7+B1 STORE CHARACTER 5 PSYSTM 1047 BX7 -X0*X4 PSYSTM 1048 LX4 6 PSYSTM 1049 SA7 A6+B1 STORE CHARACTER 6 PSYSTM 1050 BX6 -X0*X4 PSYSTM 1051 LX4 6 PSYSTM 1052 SA6 A7+B1 STORE CHARACTER 7 PSYSTM 1053 BX7 -X0*X4 PSYSTM 1054 LX4 6 PSYSTM 1055 SA7 A6+B1 STORE CHARACTER 8 PSYSTM 1056 BX6 -X0*X4 PSYSTM 1057 LX4 6 PSYSTM 1058 SA6 A7+B1 STORE CHARACTER 9 PSYSTM 1059 BX7 -X0*X4 PSYSTM 1060 SA7 A6+B1 STORE CHARACTER 10 PSYSTM 1061 ZR X7,GCH1 IF POSSIBLE EOL IN THIS WORD PSYSTM 1062 GCH10 SA1 GCHB PSYSTM 1063 SB7 X1+ RETURN ADDRESS PSYSTM 1064 JP B7 PSYSTM 1065 PSYSTM 1066 GCH ENTER P.GETCH ENTRY PSYSTM 1067 SA7 GCHB SAVE RETURN ADDRESS PSYSTM 1068 ZR X3,GCH8 IF CHARACTER BUFFER TO BE FILLED PSYSTM 1069 BX6 X6+X3 PSYSTM 1070 MX7 60 PSYSTM 1071 NG X1,GCH8 IF READ WITHOUT RESET, LET GTB ISSUE ERROR PSYSTM 1072 SA6 A1+ SET EOLN FLAG PSYSTM 1073 SX6 1R PSYSTM 1074 SA7 A3+B1 SET END OF CHARACTER BUFFER SENTINAL PSYSTM 1075 SA6 A3 SET CURRENT CHARACTER TO BLANK PSYSTM 1076 EQ GCH10 PSYSTM 1077 PSYSTM 1078 GCH1 ZR X6,GCH5 IF EOL IN THIS WORD PSYSTM 1079 PSYSTM 1080 SCOPE2 IFNE SCOPE2,1 PSYSTM 1081 RECALL X2 WAIT I/O COMPLETE PSYSTM 1082 SA3 X2+4 LIMIT PSYSTM 1083 SA4 A3-B1 OUT PSYSTM 1084 SX0 X3 LIMIT PSYSTM 1085 GCH2 SX6 X4+B1 ADVANCE OUT PSYSTM 1086 SA3 A4-1 IN PSYSTM 1087 IX7 X0-X6 LIMIT - OUT PSYSTM 1088 NZ X7,GCH3 IF OUT <> LIMIT PSYSTM 1089 SA1 X2+B1 FIRST PSYSTM 1090 SX6 X1 OUT BECOMES FIRST PSYSTM 1091 GCH3 IX7 X6-X3 OUT - IN PSYSTM 1092 NZ X7,GCH4 IF BUFFER NOT EMPTY PSYSTM 1093 SA1 X2 FET PSYSTM 1094 NO PSYSTM 1095 LX1 59-4 PSYSTM 1096 NG X1,GCH10 IF EOR/EOF/EOI, THIS IS ZERO CHARACTER PSYSTM 1097 READ X2,R FILL THE BUFFER PSYSTM 1098 EQ GCH2 TRY AGAIN PSYSTM 1099 PSYSTM 1100 GCH4 SA1 X6 LOOK AHEAD ONE WORD PSYSTM 1101 CX3 X1 PSYSTM 1102 NZ X3,GCH10 IF NOT ZERO WORD, THIS IS ZERO CHARACTER PSYSTM 1103 SA1 X2-EFETFET EFET V41CC05 53 RJ GTB SKIP ZERO WORD PSYSTM 1105 SX6 X2-EFETFET+EFETCBUF FWA CHARACTER BUFFER V41CC05 54 MX7 1 PSYSTM 1107 NO PSYSTM 1108 SA6 X2-EFETFET+EFETPTR RESET FILE POINTER V41CC05 55 SA7 X2-EFETFET+EFETCBUF+9 SET EOL FLAG V41CC05 56 SCOPE2 ENDIF PSYSTM 1111 PSYSTM 1112 EQ GCH10 PSYSTM 1113 PSYSTM 1114 GCH5 SX7 B1 PSYSTM 1115 SA3 GCHA 40404040404040404040B PSYSTM 1116 IX7 X4-X7 PSYSTM 1117 BX1 -X7+X4 FORM MASK FOR UPPER NON-ZERO CHARACTERS PSYSTM 1118 MX6 1 PSYSTM 1119 BX3 X1*X3 PSYSTM 1120 CX7 X3 NUMBER OF NONZERO CHARACTERS PSYSTM 1121 SA6 B3+X7 SET EOL FLAG PSYSTM 1122 EQ GCH10 PSYSTM 1123 PSYSTM 1124 GCH6 NG X4,GCH9 IF TEN SEMI-COLONS FOOLED GCH PSYSTM 1125 GCH7 SX7 1R PSYSTM 1126 MX1 1 PSYSTM 1127 SA7 X6 SET CURRENT CHARACTER TO BLANK PSYSTM 1128 ERRNZ PEOLN-59 SHIFT X1 V41CC05 57 BX6 X6+X1 SET EOLN BIT PSYSTM 1129 MX7 60 PSYSTM 1130 ERRNZ EFETPTR+1 FIX NEXT LINE V41CC05 58 SA6 A1-B1 SET FILE POINTER PSYSTM 1131 SA7 X6+B1 SET END OF BUFFER SENTINAL PSYSTM 1132 EQ GCH10 PSYSTM 1133 PSYSTM 1134 ASCII ELSE V41CC10 96 V41CC10 97 GCH ENTER P.GETCH ENTRY V41CC10 98 SX2 A1-EFETPTR+EFETFET V41CC10 99 NG X1,RWR IF READ WITHOUT RESET ERROR V41CC10 100 SA1 X2-EFETFET+EFET V41CC10 101 NZ X3,GCH8 IF EOLN OR EOS/EOF V41CC10 102 V41CC10 103 * END OF BUFFER - TRY TO REFILL IT. V41CC10 104 V41CC10 105 SA3 X2-EFETFET+EFETOUT V41CC10 106 SA7 GCHA RETURN ADDRESS V41CC10 107 SA6 GCHC SAVE EOLN FLAG V41CC10 108 BX7 X5 V41CC10 109 BX5 X5-X5 V41CC10 110 SA7 GCHB SAVE X5 - WE NEED TO USE IT V41CC10 111 SB2 X2-EFETFET+EFETCBUF V41CC10 112 BX0 X1 V41CC10 113 LX0 -EDCCHS RIGHT ADJUST DCCHS FIELD V41CC10 114 ERRNZ EDCCHSW-18 FIX NEXT LINE V41CC10 115 SB3 X0 DCCHS V41CC10 116 SA4 X3 GET DCB V41CC10 117 V41CC10 118 * EXTRACT 1 CHAR FROM DCB. V41CC10 119 V41CC10 120 GCH1 NZ B3,GCH2 IF DCB NOT EMPTY V41CC10 121 RJ GTB GET BINARY V41CC10 122 SA1 X2-EFETFET+EFET V41CC10 123 SA4 X3 DCB V41CC10 124 ERRNZ EEOSF-59 IF EOS/EOF BIT <> 59 V41CC10 125 MX0 1 SET EOS/EOF BIT V41CC10 126 SB3 DCALFALN DCCHS := DCALFALN V41CC10 127 PL X1,GCH2 IF NOT EOS/EOF, UNPACK CHAR V41CC10 128 SA4 GCHC EOLN FLAG V41CC10 129 BX6 X5 V41CC10 130 BX5 X5+X0 FLAG EOS/EOF V41CC10 131 NZ X6,GCH3 IF CHAR TO CONVERT V41CC10 132 SB7 A1-EFET+EFETCBUF V41CC10 133 SX6 B7-B2 IF (P <> FWA CHARBUFF) OR V41CC10 134 BX4 -X6*X4 (PREVIOUS CHAR <> EOL) V41CC10 135 PL X4,GCH5 THEN ADD IN EOL V41CC10 136 SB3 B0 DCCHS := 0 INDICATING EMPTY DCB V41CC10 137 BX6 X6-X6 RESET EOLN V41CC10 138 EQ GCH7 EXIT V41CC10 139 V41CC10 140 GCH2 MX6 -DCCHARSZ ONE DISPLAY CODE CHAR MASK V41CC10 141 SB3 B3-B1 DCCHS := DCCHS - 1 V41CC10 142 LX4 DCCHARSZ V41CC10 143 BX0 -X6*X4 EXTRACT DESIRED CHAR V41CC10 144 BX4 X6*X4 DCB[DCCHS] := 0 V41CC10 145 V41CC10 146 * CHECK FOR ZERO CHAR OR POSSIBLE EOLN. V41CC10 147 V41CC10 148 BX6 X0+X4 V41CC10 149 NZ X6,GCH3 IF CHAR <> CHR(0) OR NOT EOLN V41CC10 150 NZ B3,GCH5 IF AT LEAST TWO ZERO CHARS, EOLN V41CC10 151 RJ GTB ONLY DCB[0] = 0, SO FETCH NEXT WORD V41CC10 152 SA1 X2-EFETFET+EFET V41CC10 153 SA4 X3 GET DCB V41CC10 154 ERRNZ EEOSF-59 IF EOS/EOF BIT <> 59 V41CC10 155 MX6 1 SET EOS/EOF BIT V41CC10 156 SB3 DCALFALN DCCHS := DCALFALN V41CC10 157 BX0 X1*X6 X0 := 0 IF NOT EOS/EOF V41CC10 158 IX6 X0+X4 DCB V41CC10 159 BX5 X5+X0 IF EOS/EOF, FLAG FACT V41CC10 160 ZR X6,GCH5 IF NOT EOS/EOF AND DCB = 0, EOLN V41CC10 161 V41CC10 162 * CONVERT THE CHARACTER TO ASCII. V41CC10 163 V41CC10 164 GCH3 SA2 X0+=XP.TD2A V41CC10 165 NZ X5,GCH4 IF ALREADY KNOW ESCAPE CHAR OR EOS/EOF V41CC10 166 SX0 X0-76B ESCAPE CHAR 1 V41CC10 167 SX5 ASCHARSZ ELSE SEE IF CHAR IS ESCAPE CHAR V41CC10 168 ZR X0,GCH1 IF ESCAPE CHAR 1, GET REST OF 12-BIT CHAR V41CC10 169 SX0 X0+76B-74B ESCAPE CHAR 2 V41CC10 170 LX5 1 ASCHARSZ*2 V41CC10 171 ZR X0,GCH1 IF ESCAPE CHAR, GET REST OF 12-BIT CHAR V41CC10 172 BX5 X5-X5 ELSE MUST BE IN PRIMARY CHAR SET V41CC10 173 GCH4 SB7 X5 V41CC10 174 MX6 -ASCHARSZ V41CC10 175 AX2 B7 RIGHT ADJUST DESIRED CHAR V41CC10 176 BX6 -X6*X2 MASK OFF REMAINING CHARS V41CC10 177 V41CC10 178 * STORE ASCII CHAR IN CHARBUFF. V41CC10 179 V41CC10 180 SA6 B2 CHARBUFF[P] := CHAR V41CC10 181 SB2 B2+B1 V41CC10 182 NG X5,GCH5 IF HIT EOS/EOF V41CC10 183 SB7 A1-EFET+EFETSNTL V41CC10 184 BX5 X5-X5 RESET ALT CHAR SET FLAG V41CC10 185 BX6 X6-X6 RESET EOLN V41CC10 186 LT B2,B7,GCH1 IF NOT DCALFALN ASCII CHARS UNPACKED V41CC10 187 EQ GCH7 EXIT V41CC10 188 V41CC10 189 * EOLN - PUT EITHER (EOL CODE)/BLANK IN CHARBUFF, RE/SET EOLN. V41CC10 190 V41CC10 191 GCH5 SB7 A1-EFET+EFETCBUF ASSUME P = FWA CHARBUFF V41CC10 192 SX7 ASSPACE PUT BLANK INSTEAD OF EOL CODE IN CHARBUFF V41CC22 12 ERRNZ PEOLN-59 IF EOLN BIT <> 59 V41CC10 194 MX6 1 AND SET EOLN FLAG V41CC10 195 SA7 B2 CHARBUFF[P] := ' ' V41CC10 196 MX7 60 SENTINEL := -0 V41CC10 197 SA7 B2+B1 CHARBUFF[P + 1] := EOB V41CC10 198 EQ B2,B7,GCH6 IF ASSUMPTION CORRECT (CHARBUFF EMPTY) V41CC10 199 SA6 B2 ELSE CHARBUFF[P] := EOL CODE (1/1,59/0) V41CC10 200 BX6 X6-X6 RESET EOLN FLAG IN FILEPTR V41CC10 201 V41CC10 202 * CHECK AND HANDLE PREMATURE EOS/EOF. V41CC10 203 V41CC10 204 ERRNZ EEOSF-59 IF EOS/EOF BIT <> 59 V41CC10 205 ERRNZ EEOF-58 IF EOF BIT <> 58 V41CC10 206 GCH6 MX0 2 SET EOS/EOF,EOF BITS V41CC10 207 SB3 B0 DCCHS := 0, INDICATING DCB EMPTY V41CC10 208 BX7 X0*X1 EXTRACT EOS/EOF FLAGS FROM EFET V41CC10 209 AX7 1 2/3,1/EOF,57/0 V41CC10 210 PL X5,GCH7 IF DIDN'T HIT EOS/EOF, EXIT V41CC10 211 SA7 B2+B1 CHARBUFF[P + 1] := FLAG WORD V41CC10 212 BX1 -X0*X1 RESET EOS AND EOF FLAGS IN EFET V41CC10 213 V41CC10 214 * UPDATE P AND DCCHS, RETURN. V41CC10 215 V41CC10 216 GCH7 BX7 X4 V41CC10 217 SA4 GCHA RETURN ADDRESS V41CC10 218 SA7 X3 STORE DCB V41CC10 219 SA3 GCHB V41CC10 220 SX5 A1-EFET+EFETCBUF V41CC10 221 MX0 -EDCCHSW V41CC10 222 BX6 X6+X5 V41CC10 223 SA6 A1-EFET+EFETPTR 1/EOLN,1/REWRITE,40/,18/P V41CC10 224 LX1 -EDCCHS RIGHT ADJUST DCCHS FIELD V41CC10 225 BX6 X0*X1 MASK OFF OLD DCCHS V41CC10 226 SX0 B3 V41CC10 227 BX6 X6+X0 ADD IN NEW DCCHS V41CC10 228 LX6 EDCCHS V41CC10 229 SX2 A1-EFET+EFETFET V41CC10 230 SA6 A1 STORE NEW EFET V41CC10 231 SB7 X4 V41CC10 232 BX5 X3 RESTORE X5 V41CC10 233 JP B7 RETURN V41CC10 234 V41CC10 235 * EOLN OR EOS/EOF CODE FOUND IN CHARBUFF. V41CC10 236 V41CC10 237 GCH8 LX4 X3,B1 V41CC10 238 SB7 X7 RETURN ADDRESS V41CC10 239 NG X4,GCH9 IF PREMATURE EOS/EOF V41CC10 240 V41CC10 241 * EOLN - SET CHARBUFF[P] = ' ', EOLN TO TRUE, EXIT. V41CC10 242 V41CC10 243 SX7 ASSPACE ASCII SPACE V41CC22 13 BX6 X6+X3 1/1,1/0,40/,18/P V41CC10 245 SA7 A3 CHARBUFF[P] := ' ' V41CC10 246 SA6 X2-EFETFET+EFETPTR V41CC10 247 JP B7 RETURN V41CC10 248 V41CC10 249 * EOS/EOF - SET FLAGS IN EFET TO REFLECT FILE STATUS, EXIT. V41CC10 250 V41CC10 251 GCH9 SX6 X6 CLEAR EOLN FLAG V41CC10 252 ERRNZ EEOSF-59 IF EOS/EOF BIT <> 59 V41CC10 253 ERRNZ EEOF-58 IF EOF BIT <> 58 V41CC10 254 MX7 2 SET EOS/EOF,EOF BITS V41CC10 255 SA6 X2-EFETFET+EFETPTR UPDATE EFETPTR V41CC10 256 BX7 X7*X4 RETRIEVE EOS/EOF FLAGS V41CC10 257 MX6 60 V41CC10 258 BX7 X7+X1 INSERT INTO EFET V41CC10 259 SA6 A3 CHARBUFF[P] := ANY ILLEGAL CHAR VALUE V41CC10 260 SA7 A1 UPDATE EFET V41CC10 261 SA6 A3+B1 CHARBUFF[P + 1] := EOB V41CC10 262 JP B7 RETURN V41CC10 263 V41CC10 264 ASCII ENDIF V41CC10 265 V41CC10 266 ASCII IFNE ASCFLAG,1 V41CC10 267 GCHA DATA 40404040404040404040B PSYSTM 1135 GCHB SCRATCH 1 PSYSTM 1136 ASCII ELSE V41CC10 268 GCHA SCRATCH 1 RETURN ADDRESS V41CC10 269 GCHB SCRATCH 1 (X5) V41CC10 270 GCHC SCRATCH 1 EFET POINTER WORD V41CC10 271 ASCII ENDIF V41CC10 272 P.GETLN SPACE 4,15 PSYSTM 1137 ** P.GETLN - GET LINE. PSYSTM 1138 * PSYSTM 1139 * ENTRY (A1) = EFET ADDRESS + EFETPTR. V41CC05 59 * (X1) = ((A1)). PSYSTM 1141 * PSYSTM 1142 * EXIT (X2) = FET ADDRESS. PSYSTM 1143 * PSYSTM 1144 * USES X - 0, 1, 2, 3, 4, 6, 7. V41CC10 273 * A - 1, 2, 3, 4, 6, 7. V41CC10 274 * B - 2, 3, 7. V41CC10 275 * PSYSTM 1148 * CALLS GCH, GTB, GTC. V41CC10 276 PSYSTM 1150 PSYSTM 1151 GTL ROUTINE P.GETLN ENTRY/EXIT PSYSTM 1152 V41CC10 277 ASCII IFNE ASCFLAG,1 V41CC10 278 NG X1,GTL3 IF EOLN PSYSTM 1153 SB7 X1+1 PSYSTM 1154 GTL1 SA3 B7 ADVANCE TO NEXT CHARACTER PSYSTM 1155 SB7 B7+B1 PSYSTM 1156 PL X3,GTL1 IF NOT END OF CHARACTER BUFFER PSYSTM 1157 NZ X3,GTL3 IF EOLN FOUND PSYSTM 1158 ERRNZ EFETPTR+1 FIX NEXT LINE V41CC05 60 GTL2 SA1 A1+B1 EFET PSYSTM 1159 RJ GTB GET BINARY PSYSTM 1160 PSYSTM 1161 SCOPE2 IFNE SCOPE2,1 PSYSTM 1162 SA1 X2-EFETFET+EFETPTR PSYSTM 1163 SCOPE2 ELSE PSYSTM 1164 SA1 X2-EFITFIT+EFETPTR PSYSTM 1165 SCOPE2 ENDIF PSYSTM 1166 PSYSTM 1167 MX5 48 PSYSTM 1168 SA3 X1 PSYSTM 1169 BX1 -X5*X3 PSYSTM 1170 NZ X1,GTL2 IF NOT EOLN PSYSTM 1171 GTL3 SA2 GTLX RETURN ADDRESS PSYSTM 1172 MX3 60 SET TO FILL CHARACTER BUFFER PSYSTM 1173 AX2 30 PSYSTM 1174 SX7 X2 RETURN ADDRESS PSYSTM 1175 EQ GCH CALL GETC HELPER PSYSTM 1176 ASCII ELSE V41CC10 279 NG X1,GTL4 IF EOLN V41CC10 280 SX3 A1-EFETPTR+EFETSNTL-1 V41CC10 281 IX3 X3-X1 V41CC10 282 SX2 A1-EFETPTR+EFETFET FET ADDRESS V41CC10 283 ZR X3,GTL2 IF P = LWA CHARBUFF V41CC10 284 GTL1 RJ GTC SEARCH CHARBUFF V41CC10 285 SA1 X2-EFETFET+EFETPTR V41CC10 286 SA3 X1+B1 CHARBUFF[P + 1] V41CC10 287 LX3 30 KLUDGY BUT FAST WAY TO CHECK FOR -0 (EOB) V41CC10 288 NG X1,GTL4 IF EOLN V41CC10 289 PL X3,GTL1 IF NOT (EOLN OR EOB) V41CC10 290 GTL2 SA4 A1+B1 EFET V41CC10 291 MX6 EDCCHSW V41CC10 292 LX6 EDCCHS+EDCCHSW