| 1 | /12 OS8 MONITOR SYSTEM OS8 VERS. 3D |
| 2 | / |
| 3 | / |
| 4 | / |
| 5 | / |
| 6 | / |
| 7 | / |
| 8 | / |
| 9 | / |
| 10 | / |
| 11 | /COPYRIGHT (C) 1970,1971,1972,1973,1974,1975,1977 BY DIGITAL EQUIPMENT CORPORATION |
| 12 | / |
| 13 | / |
| 14 | / |
| 15 | / |
| 16 | / |
| 17 | / |
| 18 | / |
| 19 | / |
| 20 | / |
| 21 | / |
| 22 | /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE |
| 23 | /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT |
| 24 | /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY |
| 25 | /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. |
| 26 | / |
| 27 | /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER |
| 28 | /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED |
| 29 | /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH |
| 30 | /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. |
| 31 | / |
| 32 | /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE |
| 33 | /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY |
| 34 | /DIGITAL. |
| 35 | / |
| 36 | / |
| 37 | / |
| 38 | / |
| 39 | / |
| 40 | / |
| 41 | / |
| 42 | / |
| 43 | / |
| 44 | / |
| 45 | \f/13-APRIL-1977 RL/EF/HJ/SR |
| 46 | |
| 47 | |
| 48 | /THIS VERSION OF OS/8 IS THE BATCH OPERATING SYSTEM |
| 49 | /AS WELL AS THE STANDARD KEYBOARD SYSTEM. THIS SYSTEM |
| 50 | /IS EXTERNALLY COMPATIBLE WITH ALL PREVIOUS OS/8-PS/8 |
| 51 | /USER PROGRAMS. HOWEVER, INTERNALLY THE SYSTEMS ARE |
| 52 | /QUITE DIFFERENT. THE MARCH 1972 OS/8 WILL NOT RUN BATCH. |
| 53 | /THIS VERSION IS COMPATIBLE WITH CCL. |
| 54 | |
| 55 | / SYMBOLIC REFERENCES TO VARIOUS OVERLAYS: |
| 56 | |
| 57 | MEOVLY=26 /DIRECTORY OVERFLOW OVERLAY FOR "ENTER" |
| 58 | MCDREC=51 /COMMAND DECODER |
| 59 | MSOVLY=54 /"SAVE W. ARGS" OVERLAY |
| 60 | MSOVL2=55 /SECOND PART OF SAVE W. ARGS |
| 61 | MERRTN=56 /MONITOR ERROR ROUTINE |
| 62 | MRUNRC=57 /"CHAIN" OVERLAY |
| 63 | ODTREC=60 /SYSTEM ODT |
| 64 | MFREE=70 /BEGINNING OF FILE STORAGE |
| 65 | CCB=7400 |
| 66 | CSOVLY=400 |
| 67 | RSOVL1=1400 |
| 68 | RSOVL2=2000 |
| 69 | |
| 70 | VERSNO=3 |
| 71 | PATCHLEV="Q |
| 72 | |
| 73 | /V3 CHANGES: |
| 74 | |
| 75 | /1. CCL SUPPORT |
| 76 | /2. FIXED KILLER CLOSE BUG |
| 77 | /3. ADDED VERSION NUMBER |
| 78 | /4. ^U, RO TO BOL, AND LF ALL PRINT '.' AGAIN |
| 79 | /5. CALL TO USR WITH CODE OF 0 GIVES ERROR |
| 80 | /6. MONITOR ERROR MESSAGES NOW GIVE EXPLANATION |
| 81 | /7. ENTER NOW MOVES 7 FILES TO MAKE ROOM INSTEAD OF HALF SEGMENT |
| 82 | /8. DIRECTORY VERIFICATION HAS IMPROVED |
| 83 | |
| 84 | /V3 FIXES TO ABSLDR: |
| 85 | |
| 86 | /1. ALLOWED PARITY ^C |
| 87 | /2. PUT IN SELF-STARTING STUFF |
| 88 | /3. FIXED CCB BUG FOR 17600 |
| 89 | |
| 90 | /FIXES TO FIELD RELEASE |
| 91 | |
| 92 | /1. ABSLDR CHECKS PAGE 0 LITERALS |
| 93 | /2. FIXED BUG RE MONITOR ERROR MESSAGES |
| 94 | /3. ADDITIONAL INFO FIX |
| 95 | /4. BATCH FIX |
| 96 | |
| 97 | /FIXES FOR MAINTENANCE RELEASE: |
| 98 | |
| 99 | /1. CHANGED VERSION NUMBER OF MONITOR TO V3M |
| 100 | /2. INCORPORATED PATCH RE LOC 13121 AFTER MONITOR ERROR |
| 101 | / [SEQ #1, DSN APRIL 1975] |
| 102 | /3. ALLOW CHAIN TO WORK ON FULL FIELD SAVES |
| 103 | / [SEQ #2, DSN JUNE 1975] |
| 104 | /4. ALLOW ABSLDR/I TO WORK ON FULL FIELD CORE IMAGES |
| 105 | / [SEQ #1, DSN OCTOBER 1975] |
| 106 | /5. ADDED INTERNAL VERSION NUMBER TO ABSLDR AT LOCATION 2200 |
| 107 | / MAINT. RELEASE VERSION # IS V4 |
| 108 | /6. SET INITIAL ABSLDR DATE TO 1-NOVEMBER-1975 |
| 109 | |
| 110 | /V3D AND OS/78 CHANGES: |
| 111 | |
| 112 | /1. ACCEPT DEC STANDARD DATE FORMAT FOR INPUT (DD-MMM-YY) |
| 113 | /2. CHANGED VERSION NUMBER TO V3Q |
| 114 | /3. ADDED DATE/78 CHANGES |
| 115 | /4. FIXED BUG ABOUT WAITING FOR TTY FLAG & BATCH |
| 116 | /5. ADDED STUFF FOR LINKER [USES SOFSET] |
| 117 | /6. CHANGED ABSLDR DATE TO 1-JUNE-77 |
| 118 | /7. DISALLOW RUN OF PROGRAM WITH BIT 4 OF JSW ON [OS/78 ONLY] |
| 119 | /8. ASSIGNED RESIDENT BITS FOR SCOPE AND OS/78 |
| 120 | /9. ALLOW @ IN KBM COMMAND |
| 121 | /10. COULD RUN INIT.CM ON SYSTEM START-UP |
| 122 | /11. CHANGED BAD CORE IMAGE MSG TO CORE IMAGE ERR |
| 123 | /12. CHANGED ABSLDR/I SO THAT IT SETS UP JSW AND SA |
| 124 | \f /KEYBOARD MONITOR FOR OS/8 SYSTEM - UNCOMMENTED AT PRESENT |
| 125 | |
| 126 | FIELD 0 |
| 127 | MTHREE=CLA CLL CMA RTL |
| 128 | *200 |
| 129 | PRINT, JMP I PRNAME /MUST BE AT 200 FOR BATCH |
| 130 | JMP .+3 /****GETS CIF CDF N FOR BATCH***** |
| 131 | TSF /****GETS JMP I .+1****** |
| 132 | JMP .-1 /*GETS BOSPRT***** |
| 133 | TLS |
| 134 | CLA |
| 135 | TAD [7000 |
| 136 | DCA PRINT+1 |
| 137 | JMP I PRINT |
| 138 | GETNAM, 0 |
| 139 | DCA NM1 |
| 140 | DCA NM2 |
| 141 | DCA NM3 |
| 142 | DCA NM4 |
| 143 | TAD [NM1 |
| 144 | DCA PN |
| 145 | CLA CMA |
| 146 | DCA PRDSW |
| 147 | GTNMX, DCA NMCT |
| 148 | TAD I LXR |
| 149 | TAD [-240 |
| 150 | SNA |
| 151 | JMP .-3 |
| 152 | TAD [240 |
| 153 | SKP |
| 154 | GTNMLP, TAD I LXR |
| 155 | DCA TMP |
| 156 | TAD TMP |
| 157 | TAD [-256 |
| 158 | SNA |
| 159 | JMP PERIOD |
| 160 | TAD [-2 |
| 161 | CLL |
| 162 | TAD [-12 |
| 163 | SNL CLA |
| 164 | JMP NINSRT |
| 165 | TAD [-301 |
| 166 | TAD TMP |
| 167 | CLL CML |
| 168 | TAD [-32 |
| 169 | SNL CLA |
| 170 | JMP EONAME |
| 171 | NINSRT, TAD NMCT |
| 172 | TAD [-6 |
| 173 | SMA CLA |
| 174 | JMP GTNMLP |
| 175 | TAD NMCT |
| 176 | CLL RAR |
| 177 | TAD PN |
| 178 | DCA TEMP1 |
| 179 | TAD TMP |
| 180 | AND [77 |
| 181 | SZL |
| 182 | JMP .+4 |
| 183 | RTL |
| 184 | RTL |
| 185 | RTL |
| 186 | TAD I TEMP1 |
| 187 | DCA I TEMP1 |
| 188 | ISZ NMCT |
| 189 | JMP GTNMLP |
| 190 | PERIOD, ISZ PRDSW |
| 191 | JMP EONAME |
| 192 | ISZ PN |
| 193 | TAD [4 |
| 194 | JMP GTNMX |
| 195 | EONAME, TAD NMCT |
| 196 | SZA CLA |
| 197 | ISZ GETNAM |
| 198 | JMP I GETNAM |
| 199 | \fPRNAME, 4000 |
| 200 | TAD NM1 |
| 201 | JMS PRWD |
| 202 | TAD NM2 |
| 203 | JMS PRWD |
| 204 | TAD NM3 |
| 205 | JMS PRWD |
| 206 | TAD NM4 |
| 207 | SNA CLA |
| 208 | JMP I PRNAME |
| 209 | TAD [256 |
| 210 | JMS PCHAR |
| 211 | TAD NM4 |
| 212 | JMS PRWD |
| 213 | JMP I PRNAME |
| 214 | PRINLP, JMS PRWD |
| 215 | ISZ PRMESG |
| 216 | SKP |
| 217 | IFNZRO .-330 <CCLTRB,ERRR> |
| 218 | PRMESG, 0 |
| 219 | CLA |
| 220 | TAD I PRMESG |
| 221 | SZA |
| 222 | JMP PRINLP |
| 223 | TSF |
| 224 | JMP .-1 |
| 225 | JMP I ERRET |
| 226 | PRWD, 0 |
| 227 | DCA TMP |
| 228 | TAD TMP |
| 229 | RTR |
| 230 | RTR |
| 231 | RTR |
| 232 | JMS PCHAR |
| 233 | TAD TMP |
| 234 | JMS PCHAR |
| 235 | JMP I PRWD |
| 236 | PCHAR, 0 |
| 237 | AND [77 |
| 238 | SNA |
| 239 | JMP I PCHAR |
| 240 | TAD [240 |
| 241 | AND [77 |
| 242 | TAD [240 |
| 243 | JMS I PCH |
| 244 | JMP I PCHAR |
| 245 | \fPRINTQ, JMS PRMESG |
| 246 | TEXT /?/ |
| 247 | 0 |
| 248 | |
| 249 | *367 |
| 250 | KSV2A, SAVE2A |
| 251 | SAVE2, TAD I LXR |
| 252 | SNA /ARE THERE ARGUMENTS? |
| 253 | JMP I KSV2A /NO..USE CCB |
| 254 | JMS I [SHNDLR /READ IN ARGUMENT OVERLAY |
| 255 | 0201 |
| 256 | CSOVLY |
| 257 | MSOVLY |
| 258 | JMP KMONER /NORMAL RETURN IS TO 400 |
| 259 | \f *400 |
| 260 | KMNTRY, JMP I HANDAD /V3 |
| 261 | 0 /FREE LOCATION ! |
| 262 | PCRLF, JMS I [CRLF |
| 263 | IFNZRO .-403 <BTCHER,XXXX> |
| 264 | |
| 265 | KEYMON, JMS I GLINE |
| 266 | TAD [BEGLN-1 /ADDRESS REFERENCED BY INIT |
| 267 | DCA LXR |
| 268 | JMS I GNAME |
| 269 | /V3D JMP I [PRINTQ |
| 270 | XXX=[PRINTQ /NEED LITERAL IN SAME PLACE |
| 271 | NOP /V3D ALLOW @ IN NAME |
| 272 | JMS I [SRCH |
| 273 | -123; ASSIGN |
| 274 | -2301; SAVE |
| 275 | -2225; RUN |
| 276 | -705; GET |
| 277 | -2200; R |
| 278 | -2324; START |
| 279 | -1704; ODT |
| 280 | -0405; DEAS |
| 281 | IFNZRO .-431 <SEECCL,ZZZ> |
| 282 | -0401; DATE |
| 283 | 0 |
| 284 | JMP I .+1 |
| 285 | CCLSW, PRQMRK /MODIFIED FOR CCL TO 'GETCCL' |
| 286 | IFNZRO CCLSW-435 <SEECCL,ZZ> |
| 287 | |
| 288 | ASSIGN, TAD [12 |
| 289 | JMS GDEVNO |
| 290 | TAD [UDNAME-1 |
| 291 | DCA TM1 |
| 292 | JMS I GNAME |
| 293 | JMP ASGN2+1 /NO USER DEV. DO A DEASSIGN |
| 294 | TAD NM2 /SEE IF WE HASH IT |
| 295 | SNA |
| 296 | JMP ASGN2 /DON'T HASH..ONLY 1 OR 2 CHARS |
| 297 | TAD NM1 |
| 298 | RAL /LINK BECOMES 4000 IF NECESSARY |
| 299 | CLA CML RAR |
| 300 | TAD NM2 |
| 301 | ASGN2, TAD NM1 |
| 302 | JMP I [ASDONE |
| 303 | \fR, DCA I [GETSW |
| 304 | TAD P6203 |
| 305 | JMS I [RESET |
| 306 | ISZ RUNSW |
| 307 | TAD [SHNDLR |
| 308 | DCA HANDAD |
| 309 | CLA IAC |
| 310 | JMP RGETPG |
| 311 | GDEVNO, 0 |
| 312 | DCA ASNM1-1 |
| 313 | JMS I [MINCOR |
| 314 | JMS I GNAME |
| 315 | JMP I [KMER4 |
| 316 | TAD NM1 |
| 317 | DCA ASNM1 |
| 318 | TAD NM2 |
| 319 | DCA ASNM1+1 |
| 320 | TAD HNDLAD |
| 321 | DCA HANDAD |
| 322 | CIF 10 |
| 323 | JMS I SYSTEM |
| 324 | 1 |
| 325 | ASNM1, 0;0 |
| 326 | HANDAD, KMINIT /V3 |
| 327 | JMP I [KMER1 |
| 328 | TAD ASNM1+1 |
| 329 | JMP I GDEVNO |
| 330 | \fGET, TAD [SKP |
| 331 | RUN, DCA I [GETSW |
| 332 | TAD P6203 |
| 333 | JMS I [RESET |
| 334 | DCA RUNSW |
| 335 | CLA IAC |
| 336 | JMS GDEVNO |
| 337 | RGETPG, JMS RSCOMN |
| 338 | JMS I [MINCOR |
| 339 | TAD SENTER |
| 340 | CIF 10 |
| 341 | JMS I SYSTEM |
| 342 | 2 |
| 343 | PGNAME, NM1 |
| 344 | MOVBUF /USED AS POINTER TO FIELD 1 SR |
| 345 | JMP I [KMER2 |
| 346 | JMP I [RLOADR |
| 347 | RSCOMN, 0 |
| 348 | DCA SENTER |
| 349 | TAD HANDAD |
| 350 | DCA DEVHND |
| 351 | JMS I GNAME |
| 352 | JMP I [KMER4 |
| 353 | TAD NM4 |
| 354 | SNA |
| 355 | TAD [2326 |
| 356 | DCA NM4 |
| 357 | JMP I RSCOMN |
| 358 | SAVE, TAD [SAVE12 /CHANGE ERROR RETURN ADDRESS AS WE WILL DESTROY CORE |
| 359 | DCA ERRET |
| 360 | TAD I [JSBITS |
| 361 | JMS I [RESET |
| 362 | CIF 10 /MOVE THE LINE BUFFER TO 1600 DURING |
| 363 | JMS I PGNAME+1 /A SAVE, AS HANDLER WIPES IT OUT |
| 364 | TAD LXR /LET'S MOVE THE REGISTER AROUND |
| 365 | TAD [SVLNBF-BEGLN |
| 366 | DCA LXR |
| 367 | TAD [1001 |
| 368 | DCA HNDLAD |
| 369 | CLA IAC |
| 370 | JMS GDEVNO |
| 371 | JMS RSCOMN |
| 372 | JMP I [SAVE2 |
| 373 | HNDLAD, /REPLACED WITH 1001 BY SAVE |
| 374 | |
| 375 | WRCTLB, 7001 /WRITE OVERLAY AND CCB |
| 376 | JMS I [SHNDLR |
| 377 | 4600 |
| 378 | 6200 |
| 379 | MTEMP+6 |
| 380 | JMP KMONER |
| 381 | JMP I WRCTLB |
| 382 | \f *573 /LOADS SYSTEM ODT OVER THE MONITOR |
| 383 | ODT, JMS I PGTOUT |
| 384 | JMS I [SHNDLR |
| 385 | 1001 |
| 386 | 0 |
| 387 | ODTREC |
| 388 | /LOCATION 600 IN ODT IS A HLT (ERROR RETURN) |
| 389 | \f *600 |
| 390 | START, DCA TEMP1 |
| 391 | DCA TEMP2 |
| 392 | TAD I LXR /V3 |
| 393 | SZA /V3 |
| 394 | JMP I [STRTX /V3 |
| 395 | TAD I [JFIELD |
| 396 | DCA I [MSTCDF |
| 397 | TAD I [JSBITS |
| 398 | AND [1000 |
| 399 | SZA CLA |
| 400 | JMP I [KMER3 |
| 401 | TAD I [JSBITS |
| 402 | JMS I [RESET /RESET ONLY IF NO START ADR SPECIFIED |
| 403 | TAD I [JSTART |
| 404 | STCOMN, DCA I [MSTADR |
| 405 | TSF |
| 406 | JMP .-1 /WAIT FOR PRINTER TO FINISH |
| 407 | JMS I PGTOUT |
| 408 | TAD I [JSBITS |
| 409 | SPA CLA |
| 410 | JMP I [MSTCDF |
| 411 | TAD [SHNDLR |
| 412 | DCA I [MREAD-1 |
| 413 | TAD [1000 |
| 414 | DCA I [MREAD+1 |
| 415 | DCA I [MREAD+2 |
| 416 | TAD [MTEMP+4 |
| 417 | DCA I [MREAD+3 |
| 418 | TAD FUDJMP |
| 419 | DCA I [MSWITC |
| 420 | JMP I [MREAD |
| 421 | \fMINCOR, 0 |
| 422 | CIF 10 |
| 423 | JMS I SYSTEM |
| 424 | 10 |
| 425 | CDF 10 |
| 426 | DCA I [OLDT9 /ZERO OUT "DIRECTORY IN CORE" KEY |
| 427 | CDF 0 |
| 428 | TAD [200 |
| 429 | DCA SYSTEM |
| 430 | JMP I MINCOR |
| 431 | RLOADR, |
| 432 | RUN1, TAD I [PGNAME |
| 433 | DCA FILE |
| 434 | JMS I DEVHND |
| 435 | 0101 |
| 436 | CCB |
| 437 | FILE, 0 /READ IN THE HEADER BLOCK |
| 438 | JMP KMONER /ERROR WHILE READING HEADER BLOCK |
| 439 | TAD I [CCB |
| 440 | JMS I [CCBTST /TEST FOR VALID CORE CONTROL |
| 441 | TAD I [CCB+3 /V3D |
| 442 | RAL /V3D |
| 443 | JMS I KRCHK /V3D CAN'T RUN SYSTEM CUSP UNDER OS78 |
| 444 | TAD I [CCB+1 |
| 445 | DCA I [MSTCDF |
| 446 | TAD I [CCB+2 |
| 447 | DCA I [MSTADR /MOVE THE STARTING ADDRESS INTO UPPER CORE |
| 448 | TAD I [CCB+1 |
| 449 | DCA I [JFIELD |
| 450 | TAD I [CCB+2 |
| 451 | DCA I [JSTART |
| 452 | TAD I [CCB+3 /SET UP THE JOB INFORMATION AREA |
| 453 | JMS I [RESET /AND CLEAR INFORMATION ABOUT "RUN" HANDLER |
| 454 | TAD FUDJMP |
| 455 | DCA I [MSWITC /SET MSWITC TO INHIBIT LOADING 7400 |
| 456 | GETSW, SKP /SKP FOR GET, NOP FOR RUN |
| 457 | JMP RUN2 |
| 458 | TAD P6203 |
| 459 | DCA I [MSTCDF |
| 460 | TAD [7600 |
| 461 | DCA I [MSTADR /IF A GET, SET STARTING ADDRESS TO RETURN |
| 462 | /TO MONITOR |
| 463 | \fRUN2, TAD I [CCB |
| 464 | CLL CMA RAL /POINT TO LAST DOUBLEWORD IN CCB |
| 465 | TAD [CCB+4 |
| 466 | DCA TM1 /TM1 POINTS TO SEG. ADDRESS |
| 467 | TAD I TM1 /STORE ADDRES TO READ POSSIBLE OVERLAY |
| 468 | DCA I [MREAD+2 |
| 469 | ISZ TM1 /POINT TO SEGMENT CONTROL WORD |
| 470 | TAD DEVHND /IF THE HANDLER IS IN 7600, OR |
| 471 | TAD [200 /IF THE SEGMENT DOES NOT LOAD OVER |
| 472 | CLA RAL /7000, NO OVERLAY IS NEEDED. ALSO IF |
| 473 | TAD I TM1 /THE SEGMENT IS IN FIELDS 1-7. |
| 474 | AND [77 |
| 475 | RUN5A, SZA CLA |
| 476 | JMP I [RUN6 /NO PROBLEMS.. READ STUFF IN |
| 477 | TAD I [MREAD+2 /SEE IF WE OVERLAY 7000 |
| 478 | CLL CML RAR |
| 479 | TAD I TM1 /ADD IN CONTROL WORD |
| 480 | TAD [300 |
| 481 | SPA /IF NEGATIVE, 7000 IS NOT OVERLAYED |
| 482 | JMP RUN5A |
| 483 | TAD [7600 /GETS 0, 100, 200, OR 300 |
| 484 | SMA /IF POSITIVE READ 3 PAGE OVERLAY |
| 485 | ISZ I [PGNAME+1 /POINT TO NEXT TO LAST RECORD |
| 486 | TAD [300 |
| 487 | DCA RDCNT |
| 488 | TAD I [PGNAME+1 |
| 489 | CMA /GET RECORD TO READ OVERLAY FROM |
| 490 | TAD FILE |
| 491 | DCA R7000 |
| 492 | JMS I DEVHND /READ OVERLAY FROM THE FILE INTO PAGES |
| 493 | RDCNT, 0 /BEFORE CCB |
| 494 | 6200 /THEN WRITE THE WHOLE MESS OUT |
| 495 | R7000, 0 |
| 496 | JMP I [RERR |
| 497 | JMS I [WRCTLB /WRITE OUT THE OVERLAY+CCB |
| 498 | DCA .-1 /BUT ONLY ONCE!! |
| 499 | ISZ RUNSW |
| 500 | DCA I [MSWITC /ENABLE READ OF OVERLAY |
| 501 | TAD RDCNT /SEE IF THIS SEG IS EXHAUSTED |
| 502 | CIA |
| 503 | TAD I TM1 |
| 504 | SPA SNA |
| 505 | ISZ I [CCB /ARE WE DONE ALL SEGMENTS? |
| 506 | SKP /NOT YET. LOOP UNTIL DONE |
| 507 | JMP I [MSWITC |
| 508 | RUN5, DCA I TM1 /SAVE ALTERED CONTROL WORD |
| 509 | JMP RUN2 |
| 510 | \f/ASDONE, CDF 10 |
| 511 | / DCA I TM1 /THIS COULD BE OPTIMIZED |
| 512 | / CDF 0 |
| 513 | / JMP I [KEYMON |
| 514 | |
| 515 | KMER1, JMS I [PRNAME /DEVICE NOT AVAILABLE |
| 516 | JMS I [PRMESG |
| 517 | TEXT / NOT AVAILABLE/ |
| 518 | \f *1000 |
| 519 | /MUST BE AT 1000 FOR BATCH |
| 520 | BEGLN, 0 /LINE BUFFER COULD BECOME "@ |
| 521 | "I |
| 522 | "N |
| 523 | "I |
| 524 | "T |
| 525 | KMINIT, CDF 10 /INITIALIZATION - DESTROYED BY LINE BUFFER |
| 526 | ISZ I [7700 /LOC 17700=7777 IF I/O MONITOR IS KNOWN |
| 527 | JMP .+3 /TO BE IN CORE, SO SET UP |
| 528 | TAD [200 /THE INITIAL POINTER FOR CALLS TO THE MONITOR |
| 529 | DCA SYSTEM /ACCORDINGLY |
| 530 | CDF 0 |
| 531 | TAD I LXR |
| 532 | DCA I X1 |
| 533 | ISZ TEMP2 |
| 534 | JMP .-3 |
| 535 | CDF 10 |
| 536 | TAD MVFROM |
| 537 | DCA I PDBUF |
| 538 | ISZ .-2 |
| 539 | ISZ PDBUF |
| 540 | ISZ MVCNT |
| 541 | JMP .-5 |
| 542 | CDF 0 |
| 543 | TAD I PDBUF+1 /SEE IF BATCH IS SET |
| 544 | RAL /IF YES, GO TO PAGE 0 TO CONTINUE |
| 545 | SMA CLA /IF IT ISN'T, CONTINUE NORMALLY |
| 546 | JMP INTGO /NORMAL KEYBOARD SYSTEM |
| 547 | DCA I RTWTPT /DON'T WAIT ON TTY FLAG IF BATCH IS RUNNING |
| 548 | TAD I [JSBITS /IS BOS IN PLACE? |
| 549 | AND DCBF |
| 550 | SNA CLA |
| 551 | JMP BATCH /NO. GO READ IT IN. |
| 552 | JMP BCHGO /YES. START IT UP. |
| 553 | INTGO, TAD [200 |
| 554 | KRS |
| 555 | TAD M203 |
| 556 | SNA CLA /IS THERE A ^C IN THE READER BUFFER |
| 557 | KSF /WITH THE FLAG ON? |
| 558 | JMP I ERRET /NO - PRINT CRLF AND PERIOD |
| 559 | JMP CLR /V3D |
| 560 | /CCLADR, GETCCL /V3D DIDN'T SEEM TO BE USED |
| 561 | RTWTPT, RUNTWT |
| 562 | DCBF, 400 |
| 563 | /START |
| 564 | PMSRST, SHNDLR&177+4200 /JMS SHNDLR |
| 565 | 0300 |
| 566 | 7000 |
| 567 | MTEMP+6 |
| 568 | HLT /CONTAINS SECOND COPY OF OS/78 BIT |
| 569 | CDF CIF 0 |
| 570 | TCF |
| 571 | /END |
| 572 | MVCNT, MOVBUF-MVT3-1 |
| 573 | PDBUF, MOVBUF |
| 574 | \fMVFROM, NOPUNCH |
| 575 | *7626 |
| 576 | ENPUNCH |
| 577 | MOVBUF, 7777 /USED IN BATCH SETUP |
| 578 | TAD I MVT1 /MOVE THE LINE BUFFER FROM 1000 |
| 579 | DCA I MVT2 /TO 1655 |
| 580 | ISZ MVT1 |
| 581 | ISZ MVT2 |
| 582 | ISZ MVT3 |
| 583 | JMP .-5 |
| 584 | CIF CDF 0 |
| 585 | JMP I MOVBUF |
| 586 | |
| 587 | MVT1, BEGLN |
| 588 | MVT2, SVLNBF |
| 589 | MVT3, -112 |
| 590 | |
| 591 | |
| 592 | *1077 /V3D |
| 593 | INIT, CDF 10 /V3D (INITIALIZATION) |
| 594 | TAD DCBF |
| 595 | DCA I ROT /RESTORE LOC 7677 TO '400' |
| 596 | CDF 0 |
| 597 | DCA KMINIT /END LINE WITH 0 |
| 598 | TLS |
| 599 | JMP I CRLF /FAKE OUT KBM AS IF USER TYPED @INIT |
| 600 | |
| 601 | |
| 602 | CLR, KCC |
| 603 | JMP I .+1 |
| 604 | CTRLC |
| 605 | \f *1112 |
| 606 | ENPUNCH |
| 607 | |
| 608 | DIGTLP, TAD I LXR |
| 609 | STRTX, TAD (-270 |
| 610 | CLL |
| 611 | TAD [10 |
| 612 | DCA TMP1 /V3 |
| 613 | SNL |
| 614 | JMP EONUM |
| 615 | /V3 ISZ DIGFLG |
| 616 | JMS ROT |
| 617 | JMS ROT |
| 618 | JMS ROT |
| 619 | TAD TEMP2 |
| 620 | TAD TMP1 |
| 621 | DCA TEMP2 |
| 622 | JMP DIGTLP |
| 623 | EONUM, TAD TEMP1 |
| 624 | AND [7 |
| 625 | CLL RTL |
| 626 | RAL |
| 627 | TAD KM6203 |
| 628 | DCA I [MSTCDF |
| 629 | TAD TEMP2 |
| 630 | JMP I .+1 |
| 631 | STCOMN |
| 632 | |
| 633 | ROT, 7677 /V3D NEEDED FOR INIT |
| 634 | TAD TEMP2 |
| 635 | CLL RAL |
| 636 | DCA TEMP2 |
| 637 | TAD TEMP1 |
| 638 | RAL |
| 639 | DCA TEMP1 |
| 640 | JMP I ROT |
| 641 | \fDEAS, TAD [UDNAME-1 |
| 642 | DCA X1 |
| 643 | TAD [-17 |
| 644 | DCA TM1 |
| 645 | CDF 10 |
| 646 | DCA I X1 |
| 647 | ISZ TM1 |
| 648 | JMP .-2 |
| 649 | KM6203, CDF CIF 0 |
| 650 | JMP I [KEYMON |
| 651 | |
| 652 | ASDONE, CDF 10 /V3 |
| 653 | DCA I TM1 /V3 |
| 654 | JMP KM6203 /V3 |
| 655 | |
| 656 | |
| 657 | CRLF, KEYMON+1 /V3D NEEDED FOR INIT |
| 658 | TAD [215 |
| 659 | DCA NM1 |
| 660 | JMS I (PRNT |
| 661 | TAD [212 |
| 662 | JMS I PCH |
| 663 | JMP I CRLF |
| 664 | |
| 665 | M203, -203 |
| 666 | PAGE |
| 667 | \f/NOTE: XR=AMFLAG ! |
| 668 | |
| 669 | *1200 |
| 670 | /TELETYPE INPUT ROUTINE |
| 671 | XGLINE, KEYMON+1 /MUST BE AT 1200 FOR BATCH & CCL |
| 672 | TAD [". |
| 673 | JMS I PCH |
| 674 | DCA RBFLAG |
| 675 | TAD [BEGLN-1 |
| 676 | CHLM1, DCA LXR |
| 677 | DCA AMFLAG /ZERO ALTMODE FLAG |
| 678 | CHLOOP, KSF |
| 679 | JMP CHLOOP |
| 680 | TAD [200 |
| 681 | KRS |
| 682 | DCA NM1 |
| 683 | KCC |
| 684 | JMS SRCH |
| 685 | -225;CTRLU |
| 686 | -215;CARRET |
| 687 | -377;RUBOUT |
| 688 | -375;ALTMOD /THIS AREA GETS MODIFIED BY SET |
| 689 | -376;ALTMOD |
| 690 | -233;ALTMOD |
| 691 | -212;LFEED |
| 692 | -200;CHLOOP |
| 693 | -217;CHLOOP /IGNORE ^O |
| 694 | -203;CTRLC /MUST BE JUST BEFORE 0 |
| 695 | /MUST BE HERE FOR CCL |
| 696 | 0 |
| 697 | JMS PRNT |
| 698 | CINSRT, TAD NM1 |
| 699 | DCA I LXR |
| 700 | TAD LXR |
| 701 | TAD [-BEGLN-110 |
| 702 | SPA CLA |
| 703 | JMP CHLOOP |
| 704 | CARRET, JMS I [CRLF |
| 705 | TAD LXR |
| 706 | TAD [1-BEGLN |
| 707 | SNA CLA |
| 708 | JMP XGLINE+1 |
| 709 | DCA I LXR |
| 710 | DCA I LXR |
| 711 | JMP I XGLINE |
| 712 | \f/THIS PAGE GETS MODIFIED BY SET COMMANDS (FOR REAL SCOPE RUBOUTS) |
| 713 | /**** BEWARE! *** |
| 714 | |
| 715 | PRNT, 0 |
| 716 | ISZ RBFLAG |
| 717 | JMP .+3 |
| 718 | TAD ["\ |
| 719 | JMS I PCH |
| 720 | DCA RBFLAG |
| 721 | TAD NM1 |
| 722 | JMS I PCH |
| 723 | JMP I PRNT |
| 724 | CTRLC, |
| 725 | CTRLU, TAD ["^ |
| 726 | JMS I PCH |
| 727 | TAD NM1 |
| 728 | TAD [100 |
| 729 | CLRLIN, JMS I PCH |
| 730 | RBSPCL, JMS I [CRLF |
| 731 | JMP XGLINE+1 |
| 732 | |
| 733 | ALTMOD, TAD ["$ |
| 734 | DCA NM1 |
| 735 | JMS PRNT |
| 736 | ISZ AMFLAG /NOTE ALTMODE |
| 737 | JMP CARRET+1 |
| 738 | RUBOUT, TAD LXR |
| 739 | TAD [1-BEGLN |
| 740 | SNA CLA |
| 741 | JMP RBSPCL |
| 742 | TAD ["\ /MUST BE HERE |
| 743 | ISZ RBFLAG |
| 744 | JMS I PCH |
| 745 | CLA CMA |
| 746 | DCA RBFLAG |
| 747 | TAD LXR |
| 748 | DCA TEMP1 |
| 749 | TAD I TEMP1 |
| 750 | JMS I PCH |
| 751 | LBCKUP, CLA CMA |
| 752 | TAD LXR |
| 753 | JMP CHLM1 |
| 754 | \fSRCH, 0 |
| 755 | TAD I SRCH |
| 756 | ISZ SRCH |
| 757 | SNA |
| 758 | JMP I SRCH |
| 759 | TAD NM1 |
| 760 | SNA CLA |
| 761 | JMP SFND |
| 762 | ISZ SRCH |
| 763 | JMP SRCH+1 |
| 764 | SFND, TAD I SRCH |
| 765 | DCA TEMP1 |
| 766 | JMP I TEMP1 |
| 767 | LFEED, JMS I [CRLF |
| 768 | DCA I LXR |
| 769 | TAD [". |
| 770 | JMS I PCH |
| 771 | TAD [BEGLN-1 |
| 772 | DCA XR |
| 773 | TAD I XR |
| 774 | SNA |
| 775 | JMP LBCKUP |
| 776 | JMS I PCH |
| 777 | JMP .-4 |
| 778 | |
| 779 | PRQMRK, JMS I [PRNAME |
| 780 | JMP I [PRINTQ |
| 781 | IFNZRO PRQMRK-1357 <SEECCL,ZZXX> |
| 782 | ZBLOCK 1 /A FREE LOCATION! |
| 783 | |
| 784 | IFNZRO .-1362 <FIXCCL,ERRRR> |
| 785 | |
| 786 | GETCCL, TAD [6003 |
| 787 | JMS I [RESET |
| 788 | TAD [67 /CCL OVERLAY BLOCK IS BLOCK 67 *** |
| 789 | DCA OV |
| 790 | JMP DATE2 |
| 791 | DATE, TAD TMP |
| 792 | SNA CLA |
| 793 | JMP I [CCLSW-1 /USED TO BE JMP GETCCL |
| 794 | DATE2, JMS I [SHNDLR /READ IN DATE OVERLAY |
| 795 | 0201 |
| 796 | 0400 |
| 797 | OV, MSOVL2 |
| 798 | JMP KMONER |
| 799 | JMP I [600 |
| 800 | PAGE |
| 801 | \f *1400 |
| 802 | SAVE2A, JMS I [SHNDLR |
| 803 | 0201 |
| 804 | 400 |
| 805 | MTEMP+10 |
| 806 | JMP KMONER |
| 807 | SAVE3, TAD [603 |
| 808 | DCA XR |
| 809 | TAD I [600 |
| 810 | DCA TM1 |
| 811 | TAD TM1 |
| 812 | JMS I [CCBTST /CHECK TM1 FOR VALID CCB |
| 813 | SAVE3A, ISZ XR |
| 814 | TAD I XR /GET THE I/O CONTROL WORD OF THIS SEGMENT |
| 815 | JMS I PROTAT /EXTRACT THE LENGTH FROM IT |
| 816 | TAD CLENGT |
| 817 | DCA CLENGT /UPDATE THE LENGTH OF THE FILE |
| 818 | ISZ TM1 |
| 819 | JMP SAVE3A /LOOP FOR ALL SEGMENTS OF THE FILE |
| 820 | TAD CLENGT /USE THIS LENGTH WHEN ENTERING THE FILE |
| 821 | CLL RTL |
| 822 | RTL |
| 823 | TAD SENTER |
| 824 | CIF 10 |
| 825 | JMS I SYSTEM |
| 826 | 3 /ENTER |
| 827 | SFILE, NM1 |
| 828 | 0 /LENGHT UNIMPORTANT |
| 829 | JMP SAVERR |
| 830 | TAD SENTER |
| 831 | CIF 10 |
| 832 | JMS I SYSTEM |
| 833 | 4 /CLOSE |
| 834 | NM1 /NAME FOR "CLOSE" |
| 835 | CLENGT, 1 /CLOSING LENGTH |
| 836 | JMP SAVERR |
| 837 | TAD [603 |
| 838 | DCA XR |
| 839 | JMS I PGTOUT /KICK THE I/O MONITOR OUT IF NECESSARY |
| 840 | TAD I [JSBITS |
| 841 | RAL |
| 842 | CMA /IF JOB LOADS INTO LOCS 0-1777, |
| 843 | SNL SMA CLA /BUT NOT INTO LOCS 10000-11777, |
| 844 | JMS LOADF0 /LOAD 0-1777 INTO 10000-11777 NOW |
| 845 | TAD SFILE |
| 846 | DCA SWFILE |
| 847 | JMS SWRITE /WRITE OUT CONTROL BLOCK |
| 848 | SAVE4, TAD I XR |
| 849 | DCA SADR |
| 850 | CLA CLL CML RAR |
| 851 | TAD I XR |
| 852 | DCA SCTL |
| 853 | \fSAVE5, TAD SADR |
| 854 | RAL |
| 855 | SZL SPA CLA /DOES THIS SEGMENT START BELOW 2000? |
| 856 | JMP SAVE8 /NO - NOTHING TO WORRY ABOUT |
| 857 | TAD SCTL |
| 858 | AND [70 |
| 859 | SZA CLA /FIELD 0? |
| 860 | JMP SAVE8 /NO - SAVE AS IS |
| 861 | SAVE6, JMS LOADF0 /LOAD THE FIELD 0 SAVE AREA OVER THE I/O MONITOR |
| 862 | SAVE7, CLA CMA |
| 863 | TAD SCTL |
| 864 | CLL RAL |
| 865 | TAD SADR |
| 866 | RAL |
| 867 | SZL SPA CLA /CHECK WHETHER UPPER LIMIT IS ABOVE 2000 |
| 868 | JMP SAVE7A /IT IS - MUST MAKE 2 WRITES |
| 869 | TAD SCTL /TOTALLY CONTAINED IN 0-1777 |
| 870 | TAD [10 /CHANGE FIELD 0 TO FIELD 1 AND CONTINUE |
| 871 | JMP SAVE8A |
| 872 | SAVE7A, TAD SCTL /WRITE IN 2 PARTS - |
| 873 | DCA TM1 |
| 874 | TAD SADR |
| 875 | CIA /FIRST PART FROM FIELD 1, EVERYTHING BELOW 2000 |
| 876 | TAD [2020 |
| 877 | CLL CML RAR |
| 878 | DCA SCTL |
| 879 | JMS SWRITE |
| 880 | CLA CLL CML RTR |
| 881 | DCA SADR |
| 882 | TAD SCTL /SECOND PART FROM FIELD 0, EVERYTHING ABOVE 2000 |
| 883 | AND [3700 |
| 884 | CIA |
| 885 | TAD TM1 |
| 886 | SMA /FULL FIELD SAVE IN F0 MAKES THIS + |
| 887 | TAD [4000 /COMPENSATE FOR THAT CASE |
| 888 | SAVE8A, DCA SCTL |
| 889 | SAVE8, JMS SWRITE |
| 890 | ISZ I [600 |
| 891 | JMP SAVE4 |
| 892 | SAVE12, JMS I [SHNDLR |
| 893 | 0610 |
| 894 | 0 |
| 895 | MONTOR /FORCE THE I/O MONITOR BACK INTO CORE |
| 896 | JMP KMONER /(OY VEH!) |
| 897 | CLA CMA |
| 898 | CDF 10 |
| 899 | DCA I [7700 /TELL THE KEYBOARD MONITOR THAT ITS IN CORE |
| 900 | JMP I [7605 /*** DEPENDS ON 7605 BEING A CDF CIF 10 *** |
| 901 | |
| 902 | \fLOADF0, 0 |
| 903 | ISZ F0OVLY /HAS THE FIELD 0 OVERLAY BEEN LOADED BEFORE? |
| 904 | JMP I LOADF0 /EVIDENTLY |
| 905 | JMS I [SHNDLR |
| 906 | 1010 |
| 907 | F0OVLY, -1 /WILL BE 0 IF WE EXECUTE THIS CODE, OF COURSE |
| 908 | MTEMP+4 |
| 909 | JMP KMONER |
| 910 | JMP I LOADF0 |
| 911 | |
| 912 | SWRITE, 0 |
| 913 | JMS I DEVHND |
| 914 | SCTL, 4101 |
| 915 | SADR, 600 |
| 916 | SWFILE, 0 |
| 917 | JMP SAVERR |
| 918 | TAD SCTL |
| 919 | JMS I PROTAT |
| 920 | TAD SWFILE |
| 921 | DCA SWFILE /BUMP RECORD NUMBER |
| 922 | JMP I SWRITE |
| 923 | SAVERR, JMS I [PRMESG |
| 924 | TEXT /SAVE ERROR/ |
| 925 | PROTAT, ROTAT |
| 926 | \f *1600 |
| 927 | KMER4, JMS I [PRMESG |
| 928 | TEXT /TOO FEW ARGS/ |
| 929 | CCBTST, 0 /EXAMINE COUNT WORD OF CCB FOR VALIDITY |
| 930 | /ASCII AND BINARY FILES USUALLY FAIL THIS TEST |
| 931 | CMA |
| 932 | AND [7740 |
| 933 | SNA CLA |
| 934 | JMP I CCBTST /IT WAS VALID |
| 935 | CIERR, TAD [7605 |
| 936 | DCA ERRET /RELOAD MONITOR ON THIS ERROR |
| 937 | JMS I [PRMESG /IT WASN'T - TELL THE USER |
| 938 | TEXT /CORE IMAGE ERR/ |
| 939 | GETOUT, 0 /SUBROUTINE TO KICK MONITOR OUT IF NECESSARY |
| 940 | TAD I [JSBITS |
| 941 | RAR |
| 942 | CLA |
| 943 | TAD SYSTEM |
| 944 | SZL SPA CLA /IS THE SYSTEM IN CORE AND SHOULD IT BE? |
| 945 | JMP I GETOUT |
| 946 | CIF 10 /YES AND NO - KICK IT OUT |
| 947 | JMS I SYSTEM |
| 948 | 11 /BYE BYE |
| 949 | TAD [7700 |
| 950 | DCA SYSTEM |
| 951 | JMP I GETOUT |
| 952 | \fSVLNBF, |
| 953 | KMER2, JMS I [PRNAME |
| 954 | JMS I [PRMESG |
| 955 | TEXT / NOT FOUND/ |
| 956 | / |
| 957 | /NEXT 112 LOCATIONS DESTROYED BY THE LINE BUFFER DURING A SAVE |
| 958 | / |
| 959 | |
| 960 | RESET, 0 |
| 961 | DCA I [JSBITS /MARK AREAS FOR I/O OPTOMIZATION |
| 962 | JMS I [MINCOR |
| 963 | CIF 10 |
| 964 | JMS I SYSTEM |
| 965 | 13 /RESET DEVICE HANDLERS AND OUTPUT FILES |
| 966 | /V3D CDF 0 /THIS INSTRUCTION SEEMS UNNECESSARY |
| 967 | JMP I RESET |
| 968 | |
| 969 | RCHK, 0 |
| 970 | AND I RADR /V3D |
| 971 | AND [200 /CAN'T ALLOW BOTH OS78 BIT AND SYSTEM CUSP BIT |
| 972 | SNA CLA |
| 973 | JMP I RCHK |
| 974 | JMP CIERR /V3D CAN'T FALL INTO KMER3 |
| 975 | /BECAUSE HAVE TO RELOAD KBM TO RESET 'PGNAME' |
| 976 | KMER3, JMS I [PRMESG |
| 977 | TEXT /NO!!/ |
| 978 | |
| 979 | RUN6, TAD I TM1 /STORE CONTROL WORD FOR LAST SEG. |
| 980 | DCA I [MREAD+1 |
| 981 | TAD RUNSW /IS THIS R OR RUN? |
| 982 | SNA CLA |
| 983 | JMS I [WRCTLB /RUN |
| 984 | TAD I RFILE /V3D FOR LINKER |
| 985 | DCA I RCTL /V3D SAVE BLOCK NUMBER IN 'SOFSET' |
| 986 | TAD I RFILE |
| 987 | RUN7, IAC |
| 988 | DCA RUNFIL /STORE STARTING BLOCK NUMBER |
| 989 | TAD DEVHND |
| 990 | DCA I [MREAD-1 |
| 991 | TAD DEVHND |
| 992 | DCA RUNHND /STORE DEVICE HANDLER ENTRY IN THIS PAGE |
| 993 | TAD I ADR1 |
| 994 | DCA I ADR2 |
| 995 | ISZ ADCNT |
| 996 | JMP .-3 |
| 997 | JMP I .+1 /AND GO TO IT |
| 998 | RUN8&177+7400 |
| 999 | |
| 1000 | RFILE, FILE |
| 1001 | ADCNT, RUN8&177+7600 |
| 1002 | \fRUN8, ISZ I R7400 /IS THIS THE LAST PARAMETER PAIR? |
| 1003 | JMP RUN9 /NO - KEEP LOADING |
| 1004 | TAD RUNFIL |
| 1005 | DCA I RMRD3 /MOVE THE RECORD NUMBER INTO THE FINAL READ |
| 1006 | TSF |
| 1007 | RUNTWT, JMP .-1 /WAIT FOR THE TELETYPE TO DIE DOWN (RF08 IS FAST!) |
| 1008 | JMP I .+1 |
| 1009 | MREAD /READ THE LAST SEGMENT AND START UP |
| 1010 | RUN9, TAD I RUNADR |
| 1011 | DCA RADR /SET UP THE LOADING ADDRESS OF THE CURRENT SEGMENT |
| 1012 | ISZ RUNADR |
| 1013 | TAD I RUNADR |
| 1014 | DCA RCTL /AND THE READ CONTROL WORD |
| 1015 | JMS I RUNHND |
| 1016 | RCTL, SOFSET /V3D THESE ARE STORED INTO ONLY AFTER MOVING |
| 1017 | RADR, OS78 /V3D |
| 1018 | RUNFIL, 0 |
| 1019 | JMP RERR /INPUT ERROR READING THE PROGRAM |
| 1020 | TAD RCTL |
| 1021 | JMS ROTAT /GET THE BLOCK LENGTH OF THIS SEGMENT |
| 1022 | TAD RUNFIL |
| 1023 | DCA RUNFIL /UPDATE THE BLOCK NUMBER FROM IT |
| 1024 | ISZ RUNADR |
| 1025 | JMP RUN8 /BACK FOR ANOTHER ONE |
| 1026 | |
| 1027 | RERR, CIF 10 |
| 1028 | JMS I RU7700 |
| 1029 | 7 |
| 1030 | 0 /TOTALLY MEANINGLESS |
| 1031 | RUNADR, CCB+4 |
| 1032 | R7400, 7400 |
| 1033 | RMRD3, MREAD+3 |
| 1034 | RU7700, 7700 |
| 1035 | RUNHND, 0 |
| 1036 | IFNZRO ROTAT-SVLNBF-112&4000 <ERROR> |
| 1037 | *1765 /MUST BE AT TOP OF PAGE |
| 1038 | ROTAT, 0 |
| 1039 | CLL RTR |
| 1040 | RTR |
| 1041 | RTR |
| 1042 | AND RU37 |
| 1043 | SNA |
| 1044 | TAD RU37 |
| 1045 | IAC |
| 1046 | CLL RAR |
| 1047 | JMP I ROTAT |
| 1048 | RU37, 37 |
| 1049 | \f /OVERLAY TO KEYBOARD MONITOR FOR "SAVE" WITH ARGUMENTS |
| 1050 | *2000 /GOES INTO 400 |
| 1051 | SAVE1A, TAD (1603 |
| 1052 | DCA X1 |
| 1053 | DCA TM1 |
| 1054 | CDF 10 |
| 1055 | DCA I [OLDT9 |
| 1056 | S6203, CIF CDF 0 |
| 1057 | TAD (SGETOUT-RSOVL2 /POINTER TO NEW GETOUT |
| 1058 | |
| 1059 | DCA PGTOUT /LIKEWISE "GETOUT" |
| 1060 | JMS I [SHNDLR |
| 1061 | 0210 |
| 1062 | 1400 |
| 1063 | MTEMP+10 /READ IN CONTROL BLOCK |
| 1064 | JMP KMONER |
| 1065 | JMS LXRBAK /RESET LXR TO LOOK AT FIRST CHAR |
| 1066 | JMS LXRBAK |
| 1067 | DCA DASHFG |
| 1068 | SNUMLP, JMS SGTNUM |
| 1069 | JMP SDLOOK /NO NUMBER - GET DELIMETER |
| 1070 | TAD I LXR |
| 1071 | TAD (-"- |
| 1072 | SNA CLA |
| 1073 | JMP SVDASH |
| 1074 | JMS LXRBAK |
| 1075 | TAD DASHFG |
| 1076 | SNA CLA /WAS THERE A LOWER LIMIT? |
| 1077 | JMS DASHSB /NO - SET LOWER LIMIT TO UPPER LIMIT |
| 1078 | TAD TEMP1 |
| 1079 | CIA CLL CML |
| 1080 | TAD OLD1 |
| 1081 | SZA CLA /ARE THE FIELDS THE SAME? |
| 1082 | JMP KMER5 /NO - ERROR |
| 1083 | TAD TEMP2 |
| 1084 | AND [7600 |
| 1085 | TAD [200 |
| 1086 | DCA TEMP2 |
| 1087 | TAD TEMP2 |
| 1088 | CIA |
| 1089 | TAD OLD2 |
| 1090 | SZL CLA /IS UPPER LIMIT > LOWER LIMIT? |
| 1091 | JMP KMER5 /NO - ERROR |
| 1092 | CDF 10 |
| 1093 | TAD OLD1 |
| 1094 | DCA I X1 |
| 1095 | TAD OLD2 |
| 1096 | DCA I X1 |
| 1097 | TAD TEMP2 |
| 1098 | DCA I X1 /CREATE A TRIPLET(FIELD, LOW LIMIT, HIGH LIMIT) |
| 1099 | /IN THE TABLE IN FIELD 1 |
| 1100 | ISZ TM1 /BUMP ENTRY COUNT |
| 1101 | \fSDLOOK, CDF 0 |
| 1102 | TAD I LXR |
| 1103 | SNA |
| 1104 | JMP I (SVEND-RSOVL1 |
| 1105 | TAD (-", |
| 1106 | SNA |
| 1107 | JMP SNUMLP-1 |
| 1108 | TAD (",-"; |
| 1109 | SNA |
| 1110 | JMP SSTADR |
| 1111 | TAD (";-"= |
| 1112 | SNA CLA |
| 1113 | JMP I (SSBITS-RSOVL1 |
| 1114 | KMER5, JMS I [PRMESG |
| 1115 | TEXT /BAD ARGS/ |
| 1116 | LXRBAK, 0 |
| 1117 | CLA CMA |
| 1118 | TAD LXR |
| 1119 | DCA LXR |
| 1120 | JMP I LXRBAK |
| 1121 | SVDASH, TAD DASHFG |
| 1122 | SZA CLA |
| 1123 | JMP KMER5 |
| 1124 | ISZ DASHFG |
| 1125 | JMS DASHSB |
| 1126 | JMP SNUMLP |
| 1127 | SSTADR, JMS SGTNUM |
| 1128 | JMP KMER5 /NULL STARTING ADR - ERROR |
| 1129 | TAD TEMP1 |
| 1130 | AND [7 |
| 1131 | CLL RTL |
| 1132 | RAL |
| 1133 | TAD S6203 |
| 1134 | CDF 10 |
| 1135 | DCA I (1601 /STORE AWAY STARTING FIELD |
| 1136 | TAD TEMP2 |
| 1137 | DCA I (1602 /AND STARTING ADDRESS |
| 1138 | JMP SDLOOK |
| 1139 | DASHSB, 0 |
| 1140 | TAD TEMP1 |
| 1141 | AND [7 |
| 1142 | DCA OLD1 |
| 1143 | TAD TEMP2 |
| 1144 | AND [7600 |
| 1145 | DCA OLD2 |
| 1146 | JMP I DASHSB |
| 1147 | DASHFG, 0 |
| 1148 | OLD1, 0 |
| 1149 | OLD2, 0 |
| 1150 | |
| 1151 | \fSGTNUM, 0 /GET A NUMBER ROUTINE |
| 1152 | DCA DIGFLG /CLEAR DIGIT COLLECTED FLAG |
| 1153 | DCA TEMP1 |
| 1154 | DCA TEMP2 |
| 1155 | JMS I (STARTX-RSOVL1 |
| 1156 | JMP .+4 |
| 1157 | TAD (20 |
| 1158 | SNA CLA |
| 1159 | JMP .-4 |
| 1160 | JMS LXRBAK /SHOVE INDEX BACK |
| 1161 | TAD DIGFLG /IS DIGIT PRESENT? |
| 1162 | SZA CLA |
| 1163 | ISZ SGTNUM |
| 1164 | JMP I SGTNUM |
| 1165 | PAGE |
| 1166 | \f *2200 /LOADS INTO 600 |
| 1167 | SSBITS, JMS I (SGTNUM-RSOVL1 |
| 1168 | JMP I (KMER5-RSOVL1 |
| 1169 | TAD TEMP2 |
| 1170 | CDF 10 |
| 1171 | DCA I (1603 |
| 1172 | JMP I (SDLOOK-RSOVL1 |
| 1173 | SVEND, JMS I [SHNDLR |
| 1174 | 0101 |
| 1175 | 0400 |
| 1176 | MSOVL2 /READ IN SECOND PART OF OVERLAY |
| 1177 | JMP KMONER |
| 1178 | TAD TM1 |
| 1179 | SNA |
| 1180 | JMP I (MOVECB-RSOVL2 |
| 1181 | CIA |
| 1182 | CDF 10 |
| 1183 | DCA I (1600 |
| 1184 | /NOW SORT THE ENTRIES IN THE SEGMENT TABLE ON |
| 1185 | /DECREASING FIELD AND INCREASING ADDRESS |
| 1186 | /WITHIN THE FIELD. |
| 1187 | TAD (1603 |
| 1188 | DCA P1 |
| 1189 | CLA IAC |
| 1190 | TAD I (1600 |
| 1191 | SNA |
| 1192 | JMP I (SORTED-RSOVL2 /RIDICULOUS TO SORT ONE ITEM |
| 1193 | DCA TEMP1 |
| 1194 | OUTRLP, TAD (3 |
| 1195 | TAD P1 |
| 1196 | DCA P2 |
| 1197 | TAD TEMP1 |
| 1198 | DCA TEMP2 |
| 1199 | INERLP, TAD P1 |
| 1200 | DCA LXR |
| 1201 | TAD P2 |
| 1202 | DCA X1 |
| 1203 | TAD I LXR |
| 1204 | CIA CLL |
| 1205 | TAD I X1 |
| 1206 | SNA CLA |
| 1207 | JMP TIE /FIELDS ARE EQUAL - SORT ON ADDRESS IN FIELD |
| 1208 | SZL |
| 1209 | JMP SWITCH /WRONG ORDER - SWITCH 'EM |
| 1210 | TIENTY, TAD P2 |
| 1211 | TAD (3 |
| 1212 | DCA P2 /INDEX TO NEXT ENTRY |
| 1213 | SWNTRY, ISZ TEMP2 |
| 1214 | JMP INERLP |
| 1215 | TAD P1 |
| 1216 | TAD (3 |
| 1217 | DCA P1 /ELEMENT IS IN PLACE - GO TO NEXT POSITION |
| 1218 | ISZ TEMP1 |
| 1219 | JMP OUTRLP |
| 1220 | JMP I (SORTED-RSOVL2 /SORT COMPLETE - CHECK FOR CONSISTENCY |
| 1221 | \fTIE, TAD I LXR |
| 1222 | CIA CLL |
| 1223 | TAD I X1 |
| 1224 | SZL CLA /TEST FOR ADRESSES IN ASCENDING ORDER |
| 1225 | JMP TIENTY /YES - DONT HAVE TO SWAP |
| 1226 | SWITCH, JMS SWSUBR |
| 1227 | JMS SWSUBR |
| 1228 | JMS SWSUBR |
| 1229 | CLA CLL CMA RTL |
| 1230 | TAD P1 |
| 1231 | DCA P1 /RESET FIRST POINTER |
| 1232 | JMP SWNTRY /AND DONT BUMP 2D POINTER, AS WE HAVE JUST BUMPED IT |
| 1233 | SWSUBR, 0 |
| 1234 | ISZ P1 |
| 1235 | ISZ P2 |
| 1236 | TAD I P1 |
| 1237 | DCA TM1 |
| 1238 | TAD I P2 |
| 1239 | DCA I P1 |
| 1240 | TAD TM1 |
| 1241 | DCA I P2 |
| 1242 | JMP I SWSUBR |
| 1243 | P1, 0 |
| 1244 | P2, 0 |
| 1245 | |
| 1246 | \fSTARTX, 0 |
| 1247 | TAD I LXR /ANYTHING LEFT? |
| 1248 | SNA |
| 1249 | JMP I STARTX /NO.. TAKE EMPTY RETURN |
| 1250 | SKP |
| 1251 | ADGTLP, TAD I LXR |
| 1252 | TAD (-270 |
| 1253 | CLL /SEE IF THIS IS A DIGIT |
| 1254 | TAD [10 |
| 1255 | SNL |
| 1256 | JMP AONUM /NO.. GET OUT |
| 1257 | DCA TMP1 |
| 1258 | ISZ DIGFLG |
| 1259 | JMS ROT2 |
| 1260 | JMS ROT2 |
| 1261 | JMS ROT2 |
| 1262 | TAD TEMP2 |
| 1263 | TAD TMP1 |
| 1264 | DCA TEMP2 |
| 1265 | JMP ADGTLP /KEEP LOOKING |
| 1266 | AONUM, ISZ STARTX |
| 1267 | JMP I STARTX |
| 1268 | |
| 1269 | ROT2, 0 |
| 1270 | TAD TEMP2 |
| 1271 | CLL RAL /WE NEED THIS BECAUSE THE HANDLER |
| 1272 | DCA TEMP2 /WIPED THE FIRST COPY (MAYBE!!!) |
| 1273 | TAD TEMP1 |
| 1274 | RAL |
| 1275 | DCA TEMP1 |
| 1276 | JMP I ROT2 |
| 1277 | PAGE |
| 1278 | \f *2400 /LOADS INTO 400 ON TOP OF SAVE1A |
| 1279 | SORTED, TAD I (1600 |
| 1280 | IAC |
| 1281 | SNA /IS THERE ONLY ONE ITEM IN THE LIST? |
| 1282 | JMP MERGED /YES - DON'T COMPRESS FURTHER |
| 1283 | DCA TEMP1 |
| 1284 | TAD (1603 |
| 1285 | DCA X1 |
| 1286 | TAD (1606 |
| 1287 | DCA LXR |
| 1288 | /NOW CHECK THE SORTED FILE FOR CONSISTENCY |
| 1289 | /OVERLAPPING SEGMENTS ARE ERRORS, |
| 1290 | /ABUTTING SEGMENTS ARE TO BE CONDENSED IN |
| 1291 | /THE INTERESTS OF SPEED |
| 1292 | MRGLP, TAD I LXR |
| 1293 | CIA |
| 1294 | TAD I X1 |
| 1295 | SZA CLA |
| 1296 | JMP NOCMPR /DIFFERENT FIELDS - INCOMPARABLE |
| 1297 | ISZ X1 |
| 1298 | TAD I X1 |
| 1299 | CIA |
| 1300 | CLL |
| 1301 | TAD I LXR |
| 1302 | SNA CLA |
| 1303 | JMP BUTTNG /UPPER LIMIT(2)=LOWER LIMIT(1) - ABUTTING SEGMENTS |
| 1304 | SZL CLA |
| 1305 | JMP NXTONE /UPPER LIM(2)<LOWER LIM(1) - NORMAL CASE |
| 1306 | CDF 0 /UPPER LIM(2) > LOWER LIM(1) - ERROR |
| 1307 | JMS I [PRMESG |
| 1308 | TEXT /BAD ARGS/ |
| 1309 | BUTTNG, CLA CMA |
| 1310 | TAD X1 |
| 1311 | DCA X1 |
| 1312 | TAD I LXR |
| 1313 | DCA I X1 /SET UPPER LIM(2) = UPPER LIM(1) |
| 1314 | TAD X1 |
| 1315 | TAD (-1777 |
| 1316 | SZA CLA |
| 1317 | JMP .-5 /AND COMPRESS OUT THE LOWER ENTRY |
| 1318 | ISZ I (1600 /DECREMENT THE ENTRY COUNT (CAN'T OVERFLOW) |
| 1319 | JMP SORTED /START OVER FROM BEGINNING |
| 1320 | |
| 1321 | NOCMPR, ISZ X1 |
| 1322 | ISZ X1 |
| 1323 | ISZ LXR |
| 1324 | NXTONE, ISZ LXR |
| 1325 | ISZ TEMP1 |
| 1326 | JMP MRGLP /NOW ALL THAT REMAINS IS TO TRANSFORM OUR TRIPLETS |
| 1327 | /INTO THE FORMAT WHICH THE RUN LOADER EXPECTS; I.E. |
| 1328 | /DEVICE-HANDLER ARGUMENTS |
| 1329 | \fMERGED, TAD (1603 |
| 1330 | DCA LXR |
| 1331 | TAD (1603 |
| 1332 | DCA X1 |
| 1333 | TAD I (1603 |
| 1334 | AND (1777 |
| 1335 | TAD (6000 |
| 1336 | DCA I (1603 /INITIALIZE STATUS BITS TO NO OVERLOADS |
| 1337 | TAD I (1600 |
| 1338 | DCA TEMP1 |
| 1339 | MERGLP, TAD I LXR |
| 1340 | DCA TEMP2 |
| 1341 | TAD I LXR |
| 1342 | AND (7400 |
| 1343 | DCA TMP1 |
| 1344 | TAD TMP1 |
| 1345 | DCA I X1 /STORE ADDRESS |
| 1346 | TAD TMP1 |
| 1347 | CIA |
| 1348 | TAD I LXR /FORM UPPER LIM - LOWER LIM |
| 1349 | CLL RTR |
| 1350 | RTR |
| 1351 | TAD TEMP2 /ADD IN FIELD |
| 1352 | RAL |
| 1353 | RTL /ROTATE WHOLE MESS INTO PLACE |
| 1354 | DCA I X1 |
| 1355 | TAD TMP1 |
| 1356 | CLL RAL |
| 1357 | SZL SPA CLA /IS THE LOWER LIMIT < 2000? |
| 1358 | JMP NXTSEG /NO |
| 1359 | TAD TEMP2 |
| 1360 | RAR |
| 1361 | SZA CLA /YES- IS THE FIELD 0 OR 1? |
| 1362 | JMP NXTSEG /NO |
| 1363 | SNL |
| 1364 | IAC |
| 1365 | CMA CML RTR |
| 1366 | AND I (1603 /AND OUT THE PROPER OVERLOAD BIT |
| 1367 | DCA I (1603 |
| 1368 | NXTSEG, ISZ TEMP1 |
| 1369 | JMP MERGLP |
| 1370 | MOVECB, TAD (1577 |
| 1371 | DCA LXR |
| 1372 | TAD (577 |
| 1373 | DCA X1 |
| 1374 | TAD [7600 |
| 1375 | DCA TEMP1 |
| 1376 | CBMOVE, CDF 10 /FINAL CODE TO MOVE NEW CONTROL BLOCK |
| 1377 | TAD I LXR /INTO PAGE 600 OF FIELD 0 |
| 1378 | CDF 0 |
| 1379 | DCA I X1 |
| 1380 | ISZ TEMP1 |
| 1381 | JMP CBMOVE |
| 1382 | JMP I (SAVE3 /EXIT TO SAVE PROCESSOR |
| 1383 | |
| 1384 | \fSGETOUT,0 /REPLACES "GETOUT" WHICH WE'VE STORED OVER |
| 1385 | TAD I [JSBITS |
| 1386 | RAL /ONLY PERFORMS THOSE FUNCTIONS THAT "SAVE" NEEDS |
| 1387 | SPA CLA |
| 1388 | JMP I SGETOUT |
| 1389 | CIF 10 |
| 1390 | JMS I SYSTEM |
| 1391 | 11 |
| 1392 | DECIMB, JMP I SGETOUT /DECIMB ONLY CALLED BY NEXT PAGE |
| 1393 | /PART OF NEXT PAGE'S ROUTINE: |
| 1394 | TAD NM2 /ALL NEW FOR V3D |
| 1395 | TAD NM4 /ONLY ALLOW 2 CHARS FOR MM |
| 1396 | SNA CLA |
| 1397 | ISZ DECIMB |
| 1398 | TAD NM1 |
| 1399 | RTR |
| 1400 | RTR |
| 1401 | JMP I DECIMB |
| 1402 | PAGE |
| 1403 | \f *2600 /DATE PROCESSOR - LOADS IN 400, RUNS IN 600 |
| 1404 | DATEXX, JMS DECIM |
| 1405 | NUM2, DCA NUM2 |
| 1406 | TAD NUM2 |
| 1407 | TAD M40 |
| 1408 | SMA CLA |
| 1409 | JMP BADNUM /DAY > 31 |
| 1410 | JMS I GNAME |
| 1411 | L30, 30 /NOTHING FOUND WILL GIVE ERROR LATER |
| 1412 | / DCA NUM1 /NUM1 IS INITIALLY 0 |
| 1413 | NEWLUP, ISZ MONPTR |
| 1414 | ISZ NUM1 |
| 1415 | TAD I MONPTR |
| 1416 | ISZ MONPTR |
| 1417 | SMA |
| 1418 | JMP BADNUM /SYMBOLIC MONTH NOT FOUND |
| 1419 | TAD NM1 |
| 1420 | SNA CLA /SKIP IF FIRST 2 LETTERS DON'T MATCH |
| 1421 | TAD NM2 |
| 1422 | TAD I MONPTR |
| 1423 | SZA CLA |
| 1424 | JMP NEWLUP /SECOND 2 LETTERS DON'T MATCH |
| 1425 | /*** TEST DELIMETER HERE |
| 1426 | TAD NUM1 |
| 1427 | CLL RTL |
| 1428 | RTL |
| 1429 | RAL |
| 1430 | TAD NUM2 |
| 1431 | RTL |
| 1432 | RAL |
| 1433 | DCA NUM2 |
| 1434 | DCA DDELIM /MAKE END-OF-LINE THE DELIMITER |
| 1435 | JMS DECIM |
| 1436 | TAD (-106 /SCALE DOWN TO RANGE 1970-1999 |
| 1437 | SPA |
| 1438 | JMP BADNUM /DIDN'T MAKE THE RANGE |
| 1439 | DCA NUM1 |
| 1440 | TAD NUM1 |
| 1441 | AND L30 /ISOLATE EXTENSION DATE BITS |
| 1442 | CLL RTL |
| 1443 | RTL |
| 1444 | DCA TM1 |
| 1445 | TAD I (BIPCCL |
| 1446 | AND L7177 /STORE THEM INTO BITS RESERVED FOR THIS PURPOSE |
| 1447 | TAD TM1 |
| 1448 | TSLUP, DCA I (BIPCCL |
| 1449 | TAD NUM1 |
| 1450 | AND [7 |
| 1451 | TAD NUM2 /COMBINE WITH MONTH AND DAY |
| 1452 | CDF 10 |
| 1453 | DCA I (MDATE /STORE IN SYSTEM DATE CELL |
| 1454 | TSF /7605 SETS THE DF |
| 1455 | JMS L7177 /TIME OUT A BIT |
| 1456 | JMP I [7605 /IN CASE RUNNING UNDER BATCH |
| 1457 | L7177, 7177 /JMS IS LONGER THAN JMP |
| 1458 | ISZ DDELIM /DDELIM IS 0 AT END |
| 1459 | JMS TSLUP /WAIT FOR TELETYPE TO DIE DOWN (RF08) |
| 1460 | JMP I [7605 /RETURN TO MONITOR |
| 1461 | \fDDELIM, -"- |
| 1462 | |
| 1463 | /WOULD LIKE TO BRANCH TO CCLSW-1 IF DATE ENDED WITH ALTMODE |
| 1464 | |
| 1465 | CNV, 0 |
| 1466 | AND [77 |
| 1467 | SNA |
| 1468 | JMP NUL |
| 1469 | TAD (-60 |
| 1470 | SPA |
| 1471 | JMP BADNUM |
| 1472 | JMP I CNV |
| 1473 | NUL, TAD TM1 |
| 1474 | JMP GODE |
| 1475 | |
| 1476 | DECIM, 0 |
| 1477 | JMS I GNAME |
| 1478 | M40, -40 /NOTHING THERE (LOGIC WILL CAUSE ERROR LATER) |
| 1479 | TAD TMP |
| 1480 | TAD DDELIM /COMPARE AGAINST DESIRED DELIMETER |
| 1481 | SNA CLA /DASH OR NULL |
| 1482 | JMS I (DECIMB-2400+400 |
| 1483 | JMP BADNUM /DELIMETER BAD |
| 1484 | RTR |
| 1485 | JMS CNV |
| 1486 | DCA TM1 |
| 1487 | TAD TM1 |
| 1488 | CLL RTL |
| 1489 | TAD TM1 |
| 1490 | RAL |
| 1491 | DCA TEMP2 |
| 1492 | TAD NM1 |
| 1493 | JMS CNV |
| 1494 | TAD TEMP2 |
| 1495 | GODE, SZA |
| 1496 | JMP I DECIM |
| 1497 | BADNUM, CLA /CRAP IN AC |
| 1498 | TAD [7605 |
| 1499 | DCA ERRET |
| 1500 | JMS I [PRMESG |
| 1501 | TEXT /BAD DATE/ |
| 1502 | NUM1, 0 /MONTH NUMBER (MUST BE 0 INITIALLY) |
| 1503 | \fMONS, -1201 /JAN |
| 1504 | -1600 |
| 1505 | -0605 /FEB |
| 1506 | -0200 |
| 1507 | -1501 /MAR |
| 1508 | -2200 |
| 1509 | -0120 /APR |
| 1510 | -2200 |
| 1511 | -1501 /MAY |
| 1512 | -3100 |
| 1513 | -1225 /JUN |
| 1514 | -1600 |
| 1515 | -1225 /JUL |
| 1516 | -1400 |
| 1517 | -0125 /AUG |
| 1518 | -0700 |
| 1519 | -2305 /SEP |
| 1520 | -2000 |
| 1521 | -1703 /OCT |
| 1522 | -2400 |
| 1523 | -1617 /NOV |
| 1524 | -2600 |
| 1525 | -0405 /DEC |
| 1526 | -0300 |
| 1527 | MONPTR, MONS-2600+600-1 /RELOCATES TO PAGE 600 |
| 1528 | /MUST BE POSITIVE |
| 1529 | |
| 1530 | PAGE |
| 1531 | \f *3000 /MONITOR ERROR PROCESSOR - LOADS INTO 11400 |
| 1532 | DLYLPX, AND I 0 |
| 1533 | D7600, 7600 |
| 1534 | TAD MERRNO |
| 1535 | CLL RAL |
| 1536 | ISZ I (ZERO-1400 |
| 1537 | ISZ I (ZERO-1400 /V3C |
| 1538 | ISZ I (ZERO-1400 |
| 1539 | JMP DLYLPX /WAIT FOR TELEPRINTER (WITHOUT CDF'S) |
| 1540 | SNA |
| 1541 | JMP USRERR |
| 1542 | CLL RAL |
| 1543 | RTL |
| 1544 | RTL |
| 1545 | TAD (6040 |
| 1546 | DCA I (MERTYP-1400 |
| 1547 | MERCMN, TAD (MERRXR-1400 |
| 1548 | JMS EPRINT |
| 1549 | TAD I (FPUTX |
| 1550 | RTR |
| 1551 | RAR |
| 1552 | AND (7 |
| 1553 | TAD (60 |
| 1554 | JMS MERPCH |
| 1555 | CLA CLL CMA RAL |
| 1556 | TAD I (MONITO |
| 1557 | RAL |
| 1558 | DCA T1 |
| 1559 | TAD (-4 |
| 1560 | DCA T2 |
| 1561 | MEROLP, TAD T1 |
| 1562 | RTL |
| 1563 | RAL |
| 1564 | DCA T1 |
| 1565 | TAD T1 |
| 1566 | AND (7 |
| 1567 | TAD (60 |
| 1568 | JMS MERPCH |
| 1569 | ISZ T2 |
| 1570 | JMP MEROLP |
| 1571 | TAD MERRNO |
| 1572 | CLL RAL |
| 1573 | SNA |
| 1574 | JMP NOEXPL /NO EXPLANATION FOR USER ERRORS |
| 1575 | CLL RAR |
| 1576 | TAD (EXPLTBL-1401 /PRINT EXPLANATION |
| 1577 | DCA T1 /GET ADDRESS INTO MESSAGE TABLE |
| 1578 | TAD (240 |
| 1579 | JMS MERPCH |
| 1580 | TAD ("( |
| 1581 | JMS MERPCH |
| 1582 | TAD I T1 /GET ADDRESS OF MESSAGE |
| 1583 | JMS EPRINT |
| 1584 | TAD (") |
| 1585 | JMS MERPCH |
| 1586 | TAD MERRNO |
| 1587 | NOEXPL, TAD (3773 |
| 1588 | SPA CLA |
| 1589 | CLA CMA |
| 1590 | DCA I (7700 |
| 1591 | DCA OLDT9 |
| 1592 | CLA CLL CML RAR |
| 1593 | DCA MERRNO |
| 1594 | CDF 0 |
| 1595 | TAD I (JSBITS |
| 1596 | AND (6777 |
| 1597 | TAD (1000 |
| 1598 | DCA I (JSBITS /SET THE CURRENT JOB UNSTARTABLE |
| 1599 | CDF CIF 0 |
| 1600 | JMP I D7600 |
| 1601 | USRERR, CLA CLL |
| 1602 | JMS I (FGET |
| 1603 | TAD (4060 |
| 1604 | DCA I (UERTYP-1400 |
| 1605 | TAD (UERRXR-MERRXR |
| 1606 | JMP MERCMN |
| 1607 | MERPCH, 0 |
| 1608 | TLS |
| 1609 | TSF |
| 1610 | JMP .-1 |
| 1611 | CLA |
| 1612 | JMP I MERPCH |
| 1613 | ZERO, 0 |
| 1614 | \fEPRINT, 0 |
| 1615 | DCA T2 |
| 1616 | EPRLUP, TAD I T2 |
| 1617 | RTR |
| 1618 | RTR |
| 1619 | RTR |
| 1620 | JMS EPR |
| 1621 | TAD I T2 |
| 1622 | JMS EPR |
| 1623 | ISZ T2 |
| 1624 | JMP EPRLUP |
| 1625 | |
| 1626 | EPR, 0 |
| 1627 | AND (77 |
| 1628 | SNA |
| 1629 | JMP I EPRINT |
| 1630 | TAD (240 |
| 1631 | AND (77 |
| 1632 | TAD (240 |
| 1633 | JMS MERPCH |
| 1634 | JMP I EPR |
| 1635 | PAGE |
| 1636 | \f *3200 /LOADS INTO 1600 |
| 1637 | |
| 1638 | MERRXR, TEXT \MONITOR ERROR 0 AT \ |
| 1639 | MERTYP=MERRXR+7 |
| 1640 | |
| 1641 | UERRXR, TEXT \USER ERROR 0 AT \ |
| 1642 | UERTYP=UERRXR+5 |
| 1643 | |
| 1644 | EXPLTBL,MON1-1400 |
| 1645 | MON2-1400 |
| 1646 | MON3-1400 |
| 1647 | MON4-1400 |
| 1648 | MON5-1400 |
| 1649 | MON6-1400 |
| 1650 | MON7-1400 |
| 1651 | |
| 1652 | MON1, TEXT \CLOSE ERROR\ |
| 1653 | MON2, TEXT \DIRECTORY I/O ERROR\ |
| 1654 | \fMON3, TEXT \DEVICE HANDLER NOT IN CORE\ |
| 1655 | MON4, TEXT \ILLEGAL USR CALL\ |
| 1656 | MON5, TEXT \I/O ERROR ON SYS:\ |
| 1657 | MON6, TEXT \DIRECTORY OVERFLOW\ |
| 1658 | MON7, TEXT \RESERVED\ |
| 1659 | \f /EXECUTION TIME LOADER FOR MONITOR "CHAIN" COMMAND |
| 1660 | *3400 /EXECUTES IN FIELD 0 IN PAGE 7400 |
| 1661 | MCHNX, DCA MCHREC /STORE STARTING RECORD # |
| 1662 | TAD MCHREC |
| 1663 | DCA I (SOFSET /V3D SAVE STARTING ADDRESS |
| 1664 | CIF 10 |
| 1665 | JMS I (200 |
| 1666 | 13 /RESET ALL DEVICE ASSIGNMENTS |
| 1667 | 0 /BUT DON'T CLEAR OUTPUT FILES |
| 1668 | CIF 10 |
| 1669 | JMS I (200 |
| 1670 | 11 /KICK MONITOR OUT AND RESTORE CORE IF NECESSARY |
| 1671 | JMS MCHRD /PARAMETERS PRESET TO READ CONTROL BLOCK INT0 7200 |
| 1672 | TAD I (7200 /TEST FOR SAVE FILE! |
| 1673 | CMA /TEST FOR VALID CCB |
| 1674 | AND (7740 |
| 1675 | SZA CLA |
| 1676 | JMP CHERR |
| 1677 | TAD I (7201 |
| 1678 | DCA I (MSTCDF /TRANSFER INFORMATION FROM CONTROL BLOCK |
| 1679 | CLA IAC |
| 1680 | TAD I (7202 |
| 1681 | DCA I (MSTADR /TO PAGE 7600 |
| 1682 | TAD I (7203 |
| 1683 | TAD (1000 |
| 1684 | DCA I (JSBITS |
| 1685 | TAD (7204 |
| 1686 | DCA MCHT1 |
| 1687 | TAD MCHFJM |
| 1688 | DCA I (MSWITC |
| 1689 | TAD (TCF |
| 1690 | DCA I (MSTCDF+1 |
| 1691 | MCHN1, ISZ I (7200 |
| 1692 | JMP MCHN2 |
| 1693 | TAD I MCHT1 |
| 1694 | DCA I (MREAD+2 |
| 1695 | ISZ MCHT1 |
| 1696 | TAD I MCHT1 |
| 1697 | DCA I (MREAD+1 |
| 1698 | TAD MCHREC |
| 1699 | DCA I (MREAD+3 |
| 1700 | TAD (SHNDLR |
| 1701 | DCA I (MREAD-1 |
| 1702 | JMP I (MREAD |
| 1703 | MCHN2, TAD I MCHT1 |
| 1704 | DCA MCHADR /SET UP COMMAND TO READ NEXT SEGMENT |
| 1705 | ISZ MCHT1 |
| 1706 | TAD I MCHT1 |
| 1707 | DCA MCHCTL |
| 1708 | JMS MCHRD /READ IT |
| 1709 | ISZ MCHT1 |
| 1710 | JMP MCHN1 /LOOP ON NUMBER OF SEGMENTS |
| 1711 | \fMCHRD, 0 |
| 1712 | JMS I (SHNDLR |
| 1713 | MCHCTL, 0101 /1 RECORD INTO FIELD 0 STARTING FORWARDS |
| 1714 | MCHADR, 7200 |
| 1715 | MCHREC, 0 |
| 1716 | JMP CHERR /CHAIN ERROR |
| 1717 | TAD MCHCTL |
| 1718 | MCHBMP, CLL RTR |
| 1719 | RTR |
| 1720 | RTR |
| 1721 | AND (37 |
| 1722 | SNA /V3C |
| 1723 | TAD (40 /0 MEANS FULL 4K READ |
| 1724 | IAC |
| 1725 | CLL RAR |
| 1726 | TAD MCHREC |
| 1727 | DCA MCHREC |
| 1728 | JMP I MCHRD |
| 1729 | MCHT1, 0 |
| 1730 | MCHFJM, MSTCDF&177+5200 /"JMP MSTCDF" |
| 1731 | |
| 1732 | CHERR, ISZ CHERR1 |
| 1733 | JMP CHERR /LET TTY DIE DOWN |
| 1734 | ISZ CHERR2 |
| 1735 | JMP CHERR |
| 1736 | CHTADC, TAD CHARS |
| 1737 | SNA |
| 1738 | JMP I (7600 /DONE..BACK TO MONITOR |
| 1739 | TLS |
| 1740 | TSF |
| 1741 | JMP .-1 |
| 1742 | CLA |
| 1743 | ISZ CHTADC /NEXT LETTER |
| 1744 | JMP CHTADC |
| 1745 | \fCHERR1, 0 |
| 1746 | CHERR2, -6 |
| 1747 | CHARS, "C;"H;"A;"I;"N;" ;"E;"R;"R;215;212;0 |
| 1748 | PAGE |
| 1749 | \f *4000 /SYSTEM GENERATOR - WRITES STUFF OUT USING SHNDLR |
| 1750 | WRITE=JMS I SYSHND |
| 1751 | JMS SYSSWP /SWAP SYSTEM DEVICE HANDLER INTO 7600 |
| 1752 | |
| 1753 | WRITE; 4200; 7400; 0; JMP BERR /BOOTSTRAP |
| 1754 | TAD RBFLAG |
| 1755 | SZA CLA |
| 1756 | JMP .+6 |
| 1757 | WRITE; 4210; DCOUNT; 01; JMP BERR /DIRECTORY |
| 1758 | WRITE; 5001; 0000; 07; JMP BERR /KEYBOARD MONITOR |
| 1759 | WRITE; 4610; 0000; MONTOR; JMP BERR /USR |
| 1760 | WRITE; 4111; 3400; MEOVLY; JMP BERR /"ENTER" OVERLAY |
| 1761 | WRITE; 4701; 2000; MSOVLY; JMP BERR /SAVE OVERLAY, |
| 1762 | /ERROR ROUTINE AND "CHAIN" |
| 1763 | TAD RBFLAG |
| 1764 | SZA CLA |
| 1765 | JMP .+13 |
| 1766 | WRITE; 4101; LDRCTL; MFREE; JMP BERR /ABSLDR CONTROL BLOCK |
| 1767 | WRITE; 5010; 2000;MFREE+1; JMP BERR /ABSLDR |
| 1768 | JMS I (4200 /OUTPUT THE DEVICE HANDLERS |
| 1769 | JMP BERR |
| 1770 | JMS SYSSWP /SWAP BACK PAGE 7600 |
| 1771 | CLA CMA |
| 1772 | HLT |
| 1773 | CLA |
| 1774 | JMP I .+1 |
| 1775 | BERR, 7600 |
| 1776 | JMS SYSSWP |
| 1777 | HLT |
| 1778 | JMP .-1 |
| 1779 | W6600, 6600 |
| 1780 | W7600, 7600 |
| 1781 | SYSSWP, 0 |
| 1782 | TAD W6600 |
| 1783 | DCA SYTM1 |
| 1784 | TAD W7600 |
| 1785 | DCA SYTM2 |
| 1786 | SWAPLP, TAD I SYTM1 |
| 1787 | DCA TMSY |
| 1788 | TAD I SYTM2 |
| 1789 | DCA I SYTM1 |
| 1790 | TAD TMSY |
| 1791 | DCA I SYTM2 |
| 1792 | ISZ SYTM1 |
| 1793 | ISZ SYTM2 |
| 1794 | JMP SWAPLP |
| 1795 | JMP I SYSSWP |
| 1796 | |
| 1797 | /CONTROL BLOCK FOR ABSOLUTE LOADER |
| 1798 | LDRCTL, 7777 /ONE CONTIGUOUS LOAD |
| 1799 | 6213 /STARTING ADDRESS IN FIELD 1 |
| 1800 | 2000 /STARTING LOCATION=12000 |
| 1801 | 6003 /DOES NOT LOAD OVER EITHER MONITOR AREA |
| 1802 | /ALSO DOES NOT USE THESE AREAS AT COMMAND TIME - TRUE |
| 1803 | /ONLY FOR FIRST CALL TO COMMAND DECODER |
| 1804 | 2000 /FIRST(AND ONLY) SEGMENT STARTS AT 2000 |
| 1805 | 1010 /IN FIELD 1 AND IS 10 PAGES LONG |
| 1806 | |
| 1807 | IFNZRO LDRCTL-4113 <BLDER,XQX> |
| 1808 | |
| 1809 | SYTM1, 0 |
| 1810 | SYTM2, 0 |
| 1811 | TMSY, 0 |
| 1812 | SYSHND, 7607 |
| 1813 | PAGE |
| 1814 | \f *7400 |
| 1815 | NOPUNCH |
| 1816 | *7600 |
| 1817 | ENPUNCH |
| 1818 | /UPPER PAGE OF FIELD 1 - CHOCK FULL OF GOODIES |
| 1819 | /LIKE THOUSANDS OF TABLES AND THE MONITOR CALL LOCATION |
| 1820 | |
| 1821 | MOFILE, ZBLOCK 17 /OUTPUT FILE TABLE - 7600-7616 (3 ENTRIES MAX) |
| 1822 | /5 WORDS PER ENTRY - DEVICE # AND FILE NAME |
| 1823 | MIFILE, ZBLOCK 24 /INPUT FILE TABLE - 7617-7642 (10 ENTRIES MAX) |
| 1824 | /2 WORDS PER ENTRY - DEVICE # AND RECORD # |
| 1825 | |
| 1826 | /LAST WORD IN TABLE CONTAINS TERMINATION INDICATOR |
| 1827 | /(0 FOR CR, 1 FOR ALTMODE) AND HIGH ORDER |
| 1828 | /PART OF NUMERICAL ARGUMENT |
| 1829 | |
| 1830 | MPARAM, ZBLOCK 4 /PARAMETER TABLE - 7643-7646 |
| 1831 | /FIRST 3 WORDS - MASK OF SWITCHES(A-Z,0-9). |
| 1832 | /FOURTH WORD - CONTAINS THE LOW ORDER BITS OF |
| 1833 | /THE NUMERICAL ARGUMENT |
| 1834 | |
| 1835 | |
| 1836 | |
| 1837 | /TABLE OF DEVICE HANDLERS PRESENTLY IN CORE |
| 1838 | DVHNDL, 7607;7607;0;0;0;0;0 |
| 1839 | 0;0;0;0;0;0;0;0 |
| 1840 | MDATE, 0 /HOLDS THE CURRENT DATE- 4 BIT MONTH, |
| 1841 | /5 BIT DAY, 3 BIT YEAR FROM 1970 |
| 1842 | MGET, CIF 0 |
| 1843 | JMS SHNDLR /INST FIELD IS 0 |
| 1844 | 1000 /READ 4 RECORDS INTO FIELD 0 |
| 1845 | 0 /LOCATIONS 0-1777 |
| 1846 | 7 /KEYBOARD MONITOR FOLLOWS DIRECTORY |
| 1847 | PJSBTS, JSBITS /SERVES AS A HALT (WATCH IT!) |
| 1848 | SCDCIF, CDF CIF 0 |
| 1849 | JMP I .+1 |
| 1850 | KMNTRY /V3D GETS CHANGED TO INIT |
| 1851 | \fMCALL1, 0 |
| 1852 | DCA MARG1 /SAVE AC AS IT MAY CONTAIN AN ARGUMENT |
| 1853 | RDF /GET CALLING FIELD |
| 1854 | TAD SCDCIF |
| 1855 | DCA SMCIF |
| 1856 | CDF 0 |
| 1857 | TAD I PJSBTS |
| 1858 | RAR |
| 1859 | CDF 10 |
| 1860 | SZL CLA /DOES JOB USE LOCS 10000-11777? |
| 1861 | JMP MONRD /NO - DONT SAVE THEM |
| 1862 | CIF 0 |
| 1863 | JMS SHNDLR |
| 1864 | 5010 |
| 1865 | 0 |
| 1866 | MTEMP |
| 1867 | HLT |
| 1868 | MONRD, CIF 0 |
| 1869 | JMS SHNDLR |
| 1870 | 610 |
| 1871 | 0 |
| 1872 | MONTOR |
| 1873 | SCOPE, HLT /BIT 4 IS A 1 IF CONSOLE IS A SCOPE |
| 1874 | JMP MSTART /START THE MONITOR UP IN PAGE 0 |
| 1875 | MRETRN, CIF 0 |
| 1876 | JMS SHNDLR |
| 1877 | 1010 /READ 10 RECS INTO FIELD 1 |
| 1878 | 0 |
| 1879 | MTEMP /TEMP REGION ON SYS |
| 1880 | HLT /SYS HAS PROBLEMS |
| 1881 | SMCIF, 0 |
| 1882 | JMP I MCALL1 |
| 1883 | \fMARG1, 0 |
| 1884 | /TABLE OF USER DEVICE NAMES |
| 1885 | /ALSO USED BY SYSTEM ODT |
| 1886 | |
| 1887 | UDNAME, 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 |
| 1888 | \fDCB, ZBLOCK 17 /DEVICE CONTROL BLOCK - SET IN "CONFIG" |
| 1889 | |
| 1890 | |
| 1891 | |
| 1892 | |
| 1893 | |
| 1894 | |
| 1895 | |
| 1896 | |
| 1897 | |
| 1898 | /******************************************************** |
| 1899 | / MAP OF SYSTEM DEVICE AS OF 2/21/73 |
| 1900 | /******************************************************** |
| 1901 | / * 256 WORD RECORDS * |
| 1902 | /******************************************************** |
| 1903 | |
| 1904 | / RECORDS CONTENTS |
| 1905 | / ------- -------- |
| 1906 | |
| 1907 | / 0 MONITOR BOOTSTRAP |
| 1908 | / 1- 6 SYSTEM DIRECTORIES |
| 1909 | / 7-12 KEYBOARD MONITOR |
| 1910 | / 13-15 I/O MONITOR(CALLABLE MONITOR) |
| 1911 | / 16-25 DEVICE HANDLER RECORDS |
| 1912 | / 26 MONITOR "ENTER" OVERLAY |
| 1913 | / 27-50 MONITOR SCRATCH AREA FOR SAVING CORE |
| 1914 | / 51-53 COMMAND DECODER |
| 1915 | / 54-55 "SAVE WITH ARGUMENTS" AND "DATE" OVERLAYS |
| 1916 | / 56 MONITOR ERROR ROUTINE |
| 1917 | / 57 "CHAIN" PROCESSOR |
| 1918 | / 60-63 SYSTEM ODT |
| 1919 | / 64 RESERVED FOR EXPANSION |
| 1920 | /65 CCL REMINISCENSES |
| 1921 | / 66 USED BY TWO-PAGE SYS HANDLER |
| 1922 | / 67 USED BY CCL (CCL OVERLAY) |
| 1923 | / 70-END FILE STORAGE |
| 1924 | \f SHNDLR=7607 /ENTRY POINT TO SYSTEMS HANDLER |
| 1925 | |
| 1926 | *6600 |
| 1927 | NOPUNCH |
| 1928 | *7600 |
| 1929 | ENPUNCH |
| 1930 | |
| 1931 | /SYSTEM HANDLER AND FIELD 0 UPPER PAGE |
| 1932 | /INCLUDES BOOTSTRAP AND PART OF MONITOR CALL ROUTINE |
| 1933 | DVHORG=16 /DEVICE HANDLER RECORDS |
| 1934 | MTEMP=27 |
| 1935 | MONTOR=13 |
| 1936 | JMS SHNDLR |
| 1937 | 5000 /SAVE MONITOR CORE - WRITE 5 RECORDS FROM FIELD 0 |
| 1938 | 0 /(LOCATIONS 0-1777) |
| 1939 | MTEMP+4 |
| 1940 | 7602 /TROUBLE WITH SYSTEM DEVICE |
| 1941 | CDF CIF 10 |
| 1942 | JMP MGET /NOW GO READ IN THE KEYBOARD MONITOR |
| 1943 | \f *6744 /INFORMATION ABOUT CURRENT JOB |
| 1944 | NOPUNCH |
| 1945 | *7744 |
| 1946 | ENPUNCH |
| 1947 | JFIELD, 6203 /A CDF CIF N INSTRUCTION TO START THE JOB |
| 1948 | JSTART, 7600 /THE STARTING ADDRESS |
| 1949 | JSBITS, 1000 /VARIOUS STATUS BITS - USED FOR OPTIMIZATION |
| 1950 | /BIT 4000 - JOB DID NOT LOAD INTO 00000-01777 |
| 1951 | /BIT 2000 - JOB DID NOT LOAD INTO 10000-11777 |
| 1952 | /BIT 1000 - JOB IS NOT RESTARTABLE |
| 1953 | /BIT 400 - DOESN'T DESTROY BATCH MONITOR |
| 1954 | /BIT 2 - JOB DOES NOT USE LOCS 00000-01777 |
| 1955 | /BIT 1 - JOB DOES NOT USE LOCS 10000-11777 |
| 1956 | SOFSET, 0 /FOR FUTURE(AND MAYBE PRESENT) USE |
| 1957 | |
| 1958 | /DATA BREAK FILLERS FOR SYSTEM BOOTSTRAP |
| 1959 | 7750 |
| 1960 | 7751 |
| 1961 | 7752 |
| 1962 | 7753 |
| 1963 | 7754 |
| 1964 | 7755 |
| 1965 | /MONITOR PATCH TO HELP BLEEP LOADER |
| 1966 | 0 /ADDRESS OF HANDLER FOR DEVICE USED |
| 1967 | MREAD, JMS I .-1 |
| 1968 | 0 |
| 1969 | 0 |
| 1970 | 0 |
| 1971 | HLT |
| 1972 | MSWITC, JMP .+6 /ZEROED IF PG 7000 (HANDLER) MUST BE READ OVER |
| 1973 | JMS SHNDLR |
| 1974 | 0300 |
| 1975 | 7000 /THIS AREA MODIFIED BY ODT |
| 1976 | MTEMP+6 |
| 1977 | OS78, HLT /BIT 4 IS A 1 IF OS/78 IS RUNNING |
| 1978 | MSTCDF, CDF CIF 0 |
| 1979 | TCF /EXIT WITH A CLEAR CONSCIENCE(ALSO A CLEAR FLAG) |
| 1980 | JMP I .+1 |
| 1981 | MSTADR, 0 |
| 1982 | SBLOCK, 0 |
| 1983 | BIPCCL, 0 /MORE STATUS BITS. |
| 1984 | /BIT 1: 1=> BATCH IS IN PROGRESS |
| 1985 | /BITS 6-8: FIELD OF BATCH MONITOR |
| 1986 | /HIGHEST CORE FIELD USED BY OS/8 |
| 1987 | /OR 0 TO MEAN OS/8 MAY USE ALL OF CORE |
| 1988 | \f *0 |
| 1989 | VERSNO /OS/8 VERSION 3 |
| 1990 | KMONER, CLA |
| 1991 | TAD [7605 |
| 1992 | DCA ERRET |
| 1993 | JMS I [PRMESG |
| 1994 | TEXT /SYSTEM ERR/ |
| 1995 | |
| 1996 | /THE FOLLOWING REGISTERS ARE SET TO VITAL INITIAL VALUES. TO ALTER |
| 1997 | /THESE VALUES IS TO BRING DISASTER DOWN UPON YOUR HEAD! |
| 1998 | |
| 1999 | LXR, PMSRST-1 |
| 2000 | X1, MSWITC /THESE TWO ARE USED AT INITIALIZATION. |
| 2001 | ADR1, RUN8-1 |
| 2002 | ADR2, RUN8&177+7377 /USED DURING R, AND RUN COMMANDS |
| 2003 | XR, |
| 2004 | AMFLAG, 0 /1 MEANS SAW ALTMODE |
| 2005 | /MUST NOT MOVE FOR CCL AND BATCH |
| 2006 | |
| 2007 | *20 |
| 2008 | RBFLAG, 0 /MUST BE AT LOCATION 20 |
| 2009 | TEMP2, -7 |
| 2010 | SYSTEM, 7700 |
| 2011 | PCH, PRINT |
| 2012 | GLINE, XGLINE |
| 2013 | GNAME, GETNAM |
| 2014 | DEVHND, 7607 |
| 2015 | FUDJMP, MSTCDF&177+5200 |
| 2016 | P6203, 6203 |
| 2017 | TMP, PATCHLEV /MONITOR PATCH LEVEL MUST BE AT LOC 31 FOR CCL |
| 2018 | PGTOUT, GETOUT |
| 2019 | ERRET, PCRLF /MUST BE AT 33 FOR CCL |
| 2020 | |
| 2021 | /THE FOLLOWING LOCS. ARE TEMPORARIES. HOWEVER, THERE IS NOW |
| 2022 | /VITAL ONCE ONLY CODE TO HELP THE BATCH PROCESSOR. THIS CODE IS |
| 2023 | /READ IN EVERY TIME THE KEYBOARD MONITOR IS RE-READ. |
| 2024 | |
| 2025 | NM1, 203 /THIS MUST BE A 203! |
| 2026 | BATCH, /ENTRY TO READ NEW BATCH MONITOR |
| 2027 | NM2, JMS I [7607 /THE BATCH INITIALIZER ALTERS SOME VALUES |
| 2028 | NM3, 610 /IN THIS LIST...THIS ONE********** |
| 2029 | NM4, 0 /THIS ONE*****GETS ADDRESS OF BOS. |
| 2030 | TEMP1, 13 /******GETS RECORD OF BOS***** |
| 2031 | TM1, SKP CLA /ERROR. DON'T RUN BATCH |
| 2032 | TMP1, JMP BCHGO |
| 2033 | NMCT, DCA I KM1 /CLEAR BATCH FLAG. |
| 2034 | PN, JMP KMONER |
| 2035 | PRDSW, |
| 2036 | KM1, 7777 |
| 2037 | BCHGO, |
| 2038 | RUNSW, CIF CDF 0 |
| 2039 | DIGFLG, JMP I .+1 |
| 2040 | SENTER, KMINIT /GETS ENTRY POINT (BOS) |
| 2041 | KRCHK, RCHK |
| 2042 | \f FIELD 1 |
| 2043 | \f /FIELD 1 |
| 2044 | /OS/8 MONITOR - MONITOR ROUTINES |
| 2045 | /THIS MONITOR IS CALLED INTO CORE BY A JMS 7700 IN FIELD 1 |
| 2046 | /IT REPLACES CORE FROM 200-1777 |
| 2047 | /AND INTERPRETS THE WORDS AFTER THE JMS AS A MONITOR FUNCTION |
| 2048 | /MONITOR FUNCTIONS ARE ASSIGN,LOOKUP,ENTER,ETC. |
| 2049 | MAXCMD=13 |
| 2050 | *200 |
| 2051 | MONITO, 0 /MONITOR SUBROUTINE |
| 2052 | DCA MACARG /STORE AC ARG |
| 2053 | DCA USERFG /SET FLAG TO INDICATE WE WERE CALLED DIRECTLY |
| 2054 | RDF /GET CALLING FIELD |
| 2055 | TAD [CDF CIF 0 |
| 2056 | DCA FGETX |
| 2057 | MRENTR, TAD FGETX |
| 2058 | DCA FPUTX /FOR LOADING AND STORING CALLING SEQUENCE |
| 2059 | JMS FGET /GET FIRST ARGUMENT[AND SET DATA FIELD 1) |
| 2060 | ISZ MONITO |
| 2061 | CLL |
| 2062 | TAD [-MAXCMD-1 |
| 2063 | SZL |
| 2064 | JMP MERROR |
| 2065 | TAD JMPMAX |
| 2066 | DCA .+1 /BRANCH TO APPROPRIATE ROUTINE WITH LINK ON |
| 2067 | FGET, 0 /MUST PRESERVE LINK |
| 2068 | TAD MONITO |
| 2069 | JMS FGETW |
| 2070 | JMP I FGET |
| 2071 | /MONITOR COMMAND DISPATCH TABLE MUST BE JAMMED BEFORE 'FPUT' |
| 2072 | MERROR |
| 2073 | MASSIGN |
| 2074 | MLOOKUP |
| 2075 | MENTER |
| 2076 | MCLOSE |
| 2077 | MCD |
| 2078 | MCHAIN |
| 2079 | MERR |
| 2080 | MESCAP |
| 2081 | MESCPR |
| 2082 | MASGN |
| 2083 | MRSETP, MRESET |
| 2084 | FPUT, 0 /MUST FOLLOW LAST ADDRESS IN JUMP TABLE |
| 2085 | FPUTX, 0 |
| 2086 | DCA I MONITO |
| 2087 | CDF CIF 10 |
| 2088 | JMPMAX, JMP I FPUT |
| 2089 | MEOERR, ISZ MERRNO |
| 2090 | MIOERR, ISZ MERRNO |
| 2091 | MERROR, ISZ MERRNO |
| 2092 | ISZ MERRNO |
| 2093 | ISZ MERRNO |
| 2094 | ISZ MERRNO |
| 2095 | MERR, CLA |
| 2096 | CIF 0 |
| 2097 | JMS I [SHNDLR |
| 2098 | 0210 |
| 2099 | 1400 |
| 2100 | MERRTN |
| 2101 | HLT |
| 2102 | JMP I .-3 |
| 2103 | \fMCD, CLA CLL CML RAR |
| 2104 | JMS CDSWAP /SWAP OUT CORE IF NECESSARY |
| 2105 | JMS FGET |
| 2106 | DCA T1 |
| 2107 | CIF 0 |
| 2108 | JMS I [SHNDLR |
| 2109 | 0601 |
| 2110 | 0 |
| 2111 | MCDREC |
| 2112 | JMP MIOERR |
| 2113 | TAD FPUTX |
| 2114 | CDF CIF 0 |
| 2115 | JMS I [200 |
| 2116 | DCA FPUTX |
| 2117 | TAD FPUTX |
| 2118 | DCA FGETX |
| 2119 | JMS CDSWAP /RESTORE THE SWAPPED CORE IF NECESSARY |
| 2120 | STL /LINK MUST BE ON AT MRESET |
| 2121 | JMP I MRSETP /AFTER CD, RESET DEVICE AREA |
| 2122 | MCHAIN, JMS FGET |
| 2123 | DCA T1 /BUFFER THE ARGUMENT |
| 2124 | CIF 0 |
| 2125 | JMS I [SHNDLR |
| 2126 | 0101 |
| 2127 | 7400 |
| 2128 | MRUNRC |
| 2129 | JMP MIOERR |
| 2130 | TAD T1 /LOAD THE BUFFERED ARGUMENT |
| 2131 | CDF CIF 0 |
| 2132 | JMP I .-5 |
| 2133 | MLNOTF, CLA |
| 2134 | ISZ MONITO |
| 2135 | MNEXT, TAD USERFG |
| 2136 | MESCAP, CLL RAR |
| 2137 | TAD MONITO |
| 2138 | DCA I [7700 |
| 2139 | TAD FPUTX |
| 2140 | DCA I [SMCIF |
| 2141 | CLA IAC CML |
| 2142 | CDF 0 |
| 2143 | AND I [JSBITS |
| 2144 | CDF 10 |
| 2145 | RAR |
| 2146 | SZL SPA CLA /RESTORE CORE IF USERFG=1 AND JSW[11]=0 |
| 2147 | JMP I [SMCIF |
| 2148 | JMP I [MRETRN |
| 2149 | MESCPR, CLL CML |
| 2150 | JMP MESCAP+1 |
| 2151 | FGETW, 0 |
| 2152 | DCA FPUT |
| 2153 | FGETX, HLT |
| 2154 | TAD I FPUT |
| 2155 | CDF CIF 10 |
| 2156 | JMP I FGETW |
| 2157 | \fCDSWAP, 0 |
| 2158 | TAD ME1000 /FORM READ OR WRITE OPERATION |
| 2159 | DCA MCDCTL |
| 2160 | CDF 0 |
| 2161 | TAD I [JSBITS |
| 2162 | CDF 10 |
| 2163 | RTR |
| 2164 | SZL CLA /IS IT NECESSARY TO SAVE CORE? |
| 2165 | JMP I CDSWAP /NO |
| 2166 | CIF 0 |
| 2167 | JMS I [SHNDLR |
| 2168 | MCDCTL, 0 |
| 2169 | 0 |
| 2170 | MTEMP+4 |
| 2171 | JMP MIOERR |
| 2172 | JMP I CDSWAP |
| 2173 | |
| 2174 | EOVFLO, CIF 0 |
| 2175 | JMS I [SHNDLR |
| 2176 | 0111 |
| 2177 | ME1000, 1000 /ENTER OVERLAY LOADS OVER ENTER (NATCH) |
| 2178 | MEOVLY |
| 2179 | JMP MIOERR |
| 2180 | JMP I ME1000 |
| 2181 | \f *400 |
| 2182 | /ASSIGN PROCESSOR - TRANSLATE DEVICE NAME INTO DEVICE NUMBER |
| 2183 | /(IF NECESSARY),GET DEVICE HANDLER INTO CORE(IF NECESSARY) |
| 2184 | /AND ADJUST TABLES(IF NECESSARY). IS THIS REALLY NECESSARY? |
| 2185 | MASGN, CLA IAC |
| 2186 | MASSIGN, DCA ASFLAG |
| 2187 | TAD MACARG |
| 2188 | SZA /IS DEVICE NUMERIC OR SYMBOLIC? |
| 2189 | JMP DFOUND /NUMERIC |
| 2190 | JMS I [FGET /GET HIGH ORDER 2 CHARS OF NAME |
| 2191 | ISZ I [MONITO |
| 2192 | SNA |
| 2193 | JMP I [MRTRN+1 /FIRST WORD OF NAME MUST BE NON-ZERO |
| 2194 | DCA NAME |
| 2195 | JMS I [FGET |
| 2196 | SNA /IS NAME >2 CHARACTERS LONG? |
| 2197 | JMP NOHASH /NO - DON'T HASH |
| 2198 | TAD NAME |
| 2199 | RAL |
| 2200 | CLL CML RAR /FORCE SIGN BIT OF HASH NAME ON |
| 2201 | DCA NAME |
| 2202 | NOHASH, TAD [UDNAME-1 /SEARCH USER NAME TABLE FIRST |
| 2203 | DSRCH, DCA XR |
| 2204 | TAD [-17 |
| 2205 | DCA T2 |
| 2206 | DSRCLP, TAD I XR |
| 2207 | CIA |
| 2208 | TAD NAME |
| 2209 | SNA CLA |
| 2210 | JMP DSFND |
| 2211 | ISZ T2 |
| 2212 | JMP DSRCLP |
| 2213 | TAD XR |
| 2214 | SMA CLA /WHICH TABLE DID WE JUST SEARCH? |
| 2215 | JMP I [MRTRN+1 /SYSTEM TABLE - ERROR |
| 2216 | TAD [SDNAME-1 |
| 2217 | JMP DSRCH /GO SEARCH SYSTEM TABLE |
| 2218 | DSFND, TAD T2 |
| 2219 | TAD [20 |
| 2220 | JMS I [FPUT /PUT NUMBER INTO CALLING SEQUENCE |
| 2221 | JMS I [FGET /GET IT BACK IN AC, BUMPING POINTER |
| 2222 | ISZ I [MONITO |
| 2223 | DFOUND, JMS I [MCKDEV /DETERMINE ITS VALIDITY (NON-ZERONESS) |
| 2224 | /AND FORM POINTERS |
| 2225 | SNA /IS THE DEVICE HANDLER IN CORE? |
| 2226 | TAD I T2 |
| 2227 | SNA /DOES A HANDLER EXIST FOR THE DEVICE? |
| 2228 | JMP I [MLNOTF /NO - SAME AS THE DEVICE NOT EXISTING |
| 2229 | CMA RAL /GET THE COMPLEMENT OF THE HIGH ORDER BIT INTO THE LINK |
| 2230 | SNL CLA /TWO PAGE HANDLER?(IF HANDLER IS IN CORE, |
| 2231 | /THIS TEST IS RANDOM BUT WE DON'T CARE) |
| 2232 | TAD [100 /YES - FORCE A TWO-PAGE READ |
| 2233 | TAD [100 |
| 2234 | DCA DVHCTL |
| 2235 | TAD T1 |
| 2236 | DCA T7 /SAVE T1 AS WE WILL DESTROY IT LATER |
| 2237 | TAD I T1 |
| 2238 | TAD ASFLAG |
| 2239 | SZA CLA /DOES HE ACTUALLY WANT US TO LOAD THE SILLY THING? |
| 2240 | JMP AFINIS /NO - HE MUST HAVE TASTE. |
| 2241 | JMS I [FGET /FETCH PAGE IN WHICH HANDLER IS TO BE LOADED |
| 2242 | RAR /GET THE LINK, WHICH HAS BEEN UNTOUCHED SINCE WE |
| 2243 | /PUT THE "TWO PAGE HANDLER" FLAG INTO IT |
| 2244 | SNL SMA /IF THIS HANDLER IS TWO-PAGE, IS HE ALLOWING IT TO BE? |
| 2245 | JMP I [MLNOTF /NO - GIVE AN ERROR RETURN |
| 2246 | RAL /YES - ROTATE BACK |
| 2247 | AND [7600 /MAKE IT LEGAL |
| 2248 | DCA DVHLOC |
| 2249 | JMS GETREC |
| 2250 | DCA DVHREC |
| 2251 | CIF 0 |
| 2252 | JMS I [SHNDLR |
| 2253 | DVHCTL, 0 /READ ONE OR TWO PAGES INTO FIELD 0 |
| 2254 | DVHLOC, 0 |
| 2255 | DVHREC, 0 |
| 2256 | JMP I [MIOERR /SYSTEM DEVICE ERROR |
| 2257 | /NOW GO THROUGH THE TABLE OF AVAILABE HANDLERS |
| 2258 | TAD [-17 /AND MARK OFF THOSE WHICH ARE NOW IN CORE |
| 2259 | DCA T4 |
| 2260 | DVHCLP, TAD T4 |
| 2261 | JMS I [MCKDEV /LOW ORDER BITS OF T4 GO THROUGH 1-17 |
| 2262 | CMA |
| 2263 | TAD DVHLOC |
| 2264 | CLL CML RAR |
| 2265 | TAD DVHCTL /IF A HANDLER ENTRY POINT IS WITHIN 200 WORDS OF THE |
| 2266 | SMA CLA /LOADING ADDRESS (400 FOR A TWO-PAGE HANDLER) |
| 2267 | DCA I T1 /MARK IT AS WIPED |
| 2268 | JMS GETREC |
| 2269 | CIA |
| 2270 | TAD DVHREC |
| 2271 | SZA CLA |
| 2272 | JMP NOTINC |
| 2273 | TAD I T2 |
| 2274 | AND [177 |
| 2275 | TAD DVHLOC |
| 2276 | DCA I T1 |
| 2277 | NOTINC, ISZ T4 |
| 2278 | JMP DVHCLP |
| 2279 | AFINIS, TAD I T7 |
| 2280 | JMP I [MRTRN /STORE HANDLER ADDRESS AND EXIT |
| 2281 | \fGETREC, 0 |
| 2282 | TAD I T2 /GET RECORD OF DEVICE HANDLER |
| 2283 | CLL RTL |
| 2284 | RTL |
| 2285 | RTL /EXTRACT THE RECORD NUMBER |
| 2286 | AND [17 |
| 2287 | TAD [DVHORG-1 /ADD THE BASE OF DEVICE HANDLER STORAGE |
| 2288 | JMP I GETREC |
| 2289 | |
| 2290 | MCKDEV, 0 /MUST PRESERVE LINK |
| 2291 | AND [17 |
| 2292 | SNA |
| 2293 | JMP I [MERROR /DEVICE 0 IS ILLEGAL |
| 2294 | DCA NAME |
| 2295 | TAD NAME |
| 2296 | TAD [SDVHND-1 /FORM POINTER INTO HANDLER IMAGE TABLE |
| 2297 | DCA T2 |
| 2298 | TAD NAME |
| 2299 | TAD [DVHNDL-1 |
| 2300 | DCA T1 |
| 2301 | TAD NAME |
| 2302 | TAD [DCB-1 |
| 2303 | DCA T8 /FORM POINTER TO DCB ENTRY FOR DEVICE |
| 2304 | TAD I T1 |
| 2305 | JMP I MCKDEV |
| 2306 | |
| 2307 | IFNZRO .-564 <REASSEMBLE CONFIG> |
| 2308 | SDNAME, ZBLOCK 17 /SYSTEM DNAME TABLE - SET UP BY "CONFIG" |
| 2309 | \f IFZERO .+200&1000 <*600> |
| 2310 | /LOOKUP PROCESSOR - GETS THE STARTING BLOCK OF AN INPUT FILE |
| 2311 | /ON A SPECIFIED DEVICE.SKIPS IF FILE WAS FOUND OR DEVICE |
| 2312 | /IS NOT FILE ORIENTED |
| 2313 | MLOOKUP,CLL /SET RDCAT MODE TO INPUT |
| 2314 | JMS MRDCAT |
| 2315 | JMP ERETRN /NON-FILE STRUCTURED DEVICE |
| 2316 | JMS MDSRCH /SEARCH THE DIRECTORY FOR THE FILE |
| 2317 | JMP MRTRN+1 /NOT FOUND - TAKE ERROR RETURN |
| 2318 | LRETRN, TAD T5 |
| 2319 | CIA |
| 2320 | TAD I [DORG /CONVERT T5 TO A RECORD NUMBER |
| 2321 | ERETRN, JMS I [FPUT |
| 2322 | ISZ I [MONITO |
| 2323 | TAD T6 |
| 2324 | CIA /STORE FILE LENGTH AS A NEGATIVE NUMBER |
| 2325 | MRTRN, JMS I [FPUT /THIS CODE IS JUMPED TO BY SEVERAL ROUTINES |
| 2326 | MRTRN2, ISZ I [MONITO |
| 2327 | JMP I [MLNOTF |
| 2328 | |
| 2329 | MRDCAT, 0 |
| 2330 | SZA |
| 2331 | JMP MRDREN /NOT THE FIRST SEGMENT - DON'T SET UP POINTERS |
| 2332 | DCA T5 /ZERO STARTING BLOCK NUMBER |
| 2333 | DCA T6 /ZERO FILE LENGTH |
| 2334 | TAD MACARG /GET DEVICE NUMBER FROM AC |
| 2335 | JMS I [MCKDEV /CHECK LEGALITY AND FORM POINTERS |
| 2336 | SNA |
| 2337 | JMP I [MERROR+1 /DEVICE HANDLER IS NOT IN CORE - ERROR |
| 2338 | DCA T9 /ADDRESS OF DEVICE HANDLER |
| 2339 | JMS I [FGET |
| 2340 | DCA T4 /STORE THE POINTER TO THE FILE NAME IN T4 |
| 2341 | SNL |
| 2342 | CML RAR |
| 2343 | RTR /FORM A MASK OF 2000 OR 1000 DEPENDING ON LINK |
| 2344 | AND I T8 |
| 2345 | SZA CLA /TEST FOR READ-ONLY(L=1) OR WRITE-ONLY(L=0) |
| 2346 | JMP MRTRN+1 /FAILED THE TEST - ERROR RETURN |
| 2347 | TAD I T8 |
| 2348 | SMA CLA |
| 2349 | JMP I MRDCAT /DEVICE IS NOT FILE-ORIENTED |
| 2350 | ISZ MRDCAT |
| 2351 | CLA IAC |
| 2352 | MRDREN, DCA MCATRC /STORE SEGMENT NUMBER |
| 2353 | TAD T9 /USE LOW ORDER BITS |
| 2354 | AND [177 /OF DEVICE HANDLER ENTRY POINT |
| 2355 | CLL RTL /AND THE REQUESTED SEGMENT NUMBER |
| 2356 | RAL /TO FORM A "UNIQUE" KEY |
| 2357 | TAD MCATRC /FOR THIS SEGMENT OF THIS DIRECTORY |
| 2358 | /(THE UNIQUENESS DEPENDS ON EACH HANDLER HAVING A DIFFERENT |
| 2359 | /STARTING OFFSET IN ITS PAGE) |
| 2360 | CIA |
| 2361 | TAD OLDT9 /COMPARE KEY AGAINST KEY OF CURRENT SEGMENT |
| 2362 | SNA /ARE THEY THE SAME? |
| 2363 | JMP INLRDY /YES - DON'T READ SEGMENT, ITS IN CORE |
| 2364 | CIA |
| 2365 | TAD OLDT9 |
| 2366 | DCA OLDT9 /STORE THE KEY OF THE NEW IN-CORE SEGMENT |
| 2367 | CLA CLL CML RAR /CHANGE WRITE TO READ |
| 2368 | JMS MWRCAT |
| 2369 | INLRDY, TAD I [DCOUNT |
| 2370 | CML CMA RAL |
| 2371 | SZL SPA |
| 2372 | JMP JMPME2 |
| 2373 | CMA CML RAR /NEW V3 DIRECTORY VERIFYER |
| 2374 | DCA NFILES /FIRST WORD IN CATALOG = -# OF FILES IN CATALOG |
| 2375 | TAD [DPROPR-1 |
| 2376 | DCA XR /SET XR TO POINT TO FIRST FILE ENTRY |
| 2377 | JMP I MRDCAT /RETURN TO BUMPED ADDRESS |
| 2378 | MDSRCH, 0 |
| 2379 | FSRCLP, TAD I XR |
| 2380 | SNA CLA /EMPTY SPACES HAVE A ONE WORD ZERO DIRECTORY ENTRY |
| 2381 | JMP SKPMTF /SO SKIP THE 4 WORD COMPARE ON THEM |
| 2382 | CLA CMA |
| 2383 | TAD XR |
| 2384 | DCA XR |
| 2385 | TAD [-4 |
| 2386 | DCA T6 |
| 2387 | TAD T4 |
| 2388 | DCA T7 |
| 2389 | SRCWDL, TAD T7 |
| 2390 | JMS I [FGETW |
| 2391 | CIA |
| 2392 | TAD I XR |
| 2393 | SZA CLA /COMPARE ENTRY AGAINST ARGUMENT(8 CHARACTERS) |
| 2394 | JMP NXTFIL |
| 2395 | ISZ T7 |
| 2396 | ISZ T6 |
| 2397 | JMP SRCWDL |
| 2398 | JMS BUMPXR /SKIP GARBAGE WORDS |
| 2399 | TAD I XR |
| 2400 | SNA |
| 2401 | JMP SKPMTF+1 /UNCLOSED OUTPUT FILES DONT COUNT |
| 2402 | CIA |
| 2403 | DCA T6 /STORE FILE LENGTH |
| 2404 | ISZ MDSRCH |
| 2405 | JMP I MDSRCH |
| 2406 | NXTFIL, TAD T6 |
| 2407 | IAC |
| 2408 | JMS BUMPXR /SKIP REST OF NAME AND GARBAGE WORDS |
| 2409 | SKPMTF, TAD I XR /GET LENGTH OF THIS ENTRY |
| 2410 | TAD T5 |
| 2411 | DCA T5 /ADD TO BLOCK STARTING ADDRESS |
| 2412 | ISZ NFILES |
| 2413 | JMP FSRCLP |
| 2414 | DCA T5 /RE-INITIALIZE BLOCK NUMBER FOR NEXT SEGMENT |
| 2415 | TAD I [DLINK /DIRECTORY EXHAUSTED - ANY MORE? |
| 2416 | SZA |
| 2417 | JMP MRDREN |
| 2418 | JMP I MDSRCH |
| 2419 | |
| 2420 | BUMPXR, 0 /ROUTINE TO SKIP (DWASTE+AC) WORDS |
| 2421 | |
| 2422 | TAD I [DWASTE |
| 2423 | CIA /DWASTE IS NEGATIVE AND SO IS AC |
| 2424 | TAD XR |
| 2425 | DCA XR |
| 2426 | JMP I BUMPXR |
| 2427 | |
| 2428 | MWRCAT, 0 |
| 2429 | TAD [4210 |
| 2430 | DCA CATCTL |
| 2431 | CIF 0 |
| 2432 | JMS I T9 |
| 2433 | CATCTL, 4210 /WRITE 2 RECORDS FROM FIELD 1 |
| 2434 | 1400 |
| 2435 | MCATRC, 1 |
| 2436 | JMPME2, JMP I [MERROR+2 /CANNOT REWRITE CATALOG |
| 2437 | JMP I MWRCAT |
| 2438 | |
| 2439 | IFNZRO .-772 <REASSEMBLE CONFIG> /USED TO BE 766 |
| 2440 | SDVHND, ZBLOCK 17 /DEVICE HANDLER INFORMATION TABLE - SET BY CONFIG |
| 2441 | \f IFZERO 1000&. <*1000> |
| 2442 | /ENTER PROCESSOR FOR MONITOR |
| 2443 | /FIND A HOLE IN THE DIRECTORY LARGE ENOUGH TO ACCOMODATE THE FILE |
| 2444 | /AND STICK IT IN. MAKE A NOTE THAT WE DID SO FOR THE |
| 2445 | /"CLOSE" PROCESSOR. |
| 2446 | MENTER, DCA EPASS /SET UP FOR PASS 1 |
| 2447 | JMS I [MRDCAT /READ CATALOG AND SET UP NFILES AND XR |
| 2448 | JMP I [ERETRN /NON-FILE-STRUCTURED DEVICE |
| 2449 | JMS I [CONSOL |
| 2450 | DCA T2 /INTIIALIZE STARTING BLOCK NUMBER COUNTER |
| 2451 | TAD [DPROPR-1 |
| 2452 | DCA XR /RESTORE XR (CONSOLIDATOR DESTROYED IT) |
| 2453 | TAD MACARG |
| 2454 | CLL RTR |
| 2455 | RTR |
| 2456 | AND [377 /GET REQUESTED LENGTH FROM AC BITS 0-7 |
| 2457 | CIA |
| 2458 | DCA T3 /T3=REQUESTED LENGTH. IF T3=0, MEANS RETURN |
| 2459 | /LARGEST EMPTY SPACE ON TAPE. IF T3<>0, MEANS RETURN |
| 2460 | /SMALLEST BLOCK OF LENGTH =>T3. |
| 2461 | TAD I T8 /GET FCB ENTRY |
| 2462 | AND [7 |
| 2463 | SZA CLA /ANY ACTIVE TENTATIVE FILES ON THIS DEVICE? |
| 2464 | JMP I [MRTRN+1 /YES - TAKE ERROR RETURN |
| 2465 | MELOOP, TAD I XR |
| 2466 | SNA CLA |
| 2467 | JMP MEMPTY /EMPTY SPACE - LOOK AT LENGTH |
| 2468 | MTHREE /OCCUPIED - IGNORE |
| 2469 | JMS I [BUMPXR |
| 2470 | TAD I XR |
| 2471 | MELEND, TAD T2 |
| 2472 | DCA T2 /UPDATE T2 TO STARTING BLOCK # OF NEXT ENTRY |
| 2473 | ISZ NFILES |
| 2474 | JMP MELOOP /GO TO NEXT ENTRY |
| 2475 | |
| 2476 | /DIRECTORY BLOCK EXHAUSTED |
| 2477 | TAD EPASS |
| 2478 | SZA CLA /WHAT PASS ARE WE IN? |
| 2479 | JMP EFINUP /SECOND PASS - THIS IS FOR KEEPS |
| 2480 | TAD I [DLINK /FIRST PASS |
| 2481 | SZA /ANY MORE SEGMENTS? |
| 2482 | JMP I [MRDREN /YES - CONTINUE |
| 2483 | |
| 2484 | |
| 2485 | /DONE - SEE IF OUR BEST IS GOOD ENOUGH. |
| 2486 | TAD T4 |
| 2487 | JMS I [FGETW |
| 2488 | SZA CLA /CHECK THAT FIRST WORD OF NAME IS NON-ZERO |
| 2489 | TAD T6 |
| 2490 | SNA CLA /AND THAT WE FOUND WHAT WE WANTED |
| 2491 | JMP I [MRTRN2 /OTHERWISE GIVE ERROR RETURN |
| 2492 | TAD ASFLAG /GET NUMBER OF BEST SEGMENT |
| 2493 | ISZ EPASS /AND RESTART THE ALGORITHM IN PASS 2 |
| 2494 | JMP I [MRDREN /(TAKES LESS SPACE THAN SAVING XR AND NAME) |
| 2495 | |
| 2496 | /EVERYTHING IS SET UP - PERFORM THE ACTUAL ENTRY OPERATION |
| 2497 | |
| 2498 | EFINUP, TAD XR |
| 2499 | DCA T1 |
| 2500 | TAD [-4 |
| 2501 | JMS I [BUMPXR |
| 2502 | TAD I [DWASTE |
| 2503 | CIA |
| 2504 | TAD XR /CATALOG MUST HAVE ROOM FOR ONE MORE FILE |
| 2505 | TAD [-1772 /AFTER THIS FILE IS ENTERED |
| 2506 | SMA CLA /WILL NEW ADDITION OVERFLOW CATALOG? |
| 2507 | JMP I [EOVFLO /YUP - CALL OVERLAY TO EXTEND DIRECTORY |
| 2508 | MELP2, TAD I T1 /MOVE REST OF CATALOG UP |
| 2509 | DCA I XR /TO CREATE SPACE FOR NEW ENTRY |
| 2510 | CLA CMA |
| 2511 | TAD T1 |
| 2512 | DCA T1 |
| 2513 | CLA CMA CLL RAL |
| 2514 | TAD XR |
| 2515 | DCA XR |
| 2516 | TAD T1 |
| 2517 | CIA CLL CML |
| 2518 | TAD NAME |
| 2519 | SZA CLA /HAVE WE PUSHED UP EVERYTHING? |
| 2520 | JMP MELP2 /NO, KEEP PUSHING |
| 2521 | TAD [-4 |
| 2522 | DCA T1 /NOW MOVE THE USERS FILE NAME |
| 2523 | TAD NAME |
| 2524 | DCA XR |
| 2525 | TAD T4 |
| 2526 | JMS I [FGETW /[IN THE USERS FIELD, OF COURSE) |
| 2527 | DCA I XR |
| 2528 | ISZ T4 |
| 2529 | ISZ T1 /INTO THE EMPTY SPACE JUST CREATED |
| 2530 | JMP .-5 |
| 2531 | TAD I [MDATE /PUT DATE OF CREATION INTO FILE NAME |
| 2532 | DCA I XR /THIS WILL BE DESTROYED IF DWASTE=0 |
| 2533 | IAC /ADJUST XR BUMP BECAUSE OF DATE STORE |
| 2534 | JMS I [BUMPXR |
| 2535 | DCA I XR /GIVE THE NEWLY ENTERED FILE A LENGTH OF 0 |
| 2536 | TAD XR /PUT A POINTER TO THE LENGTH WORD OF THE |
| 2537 | DCA I [DFLAG /NEW ENTRY INTO THE DIRECTORY HEADER |
| 2538 | CLA CMA |
| 2539 | TAD I [DCOUNT |
| 2540 | DCA I [DCOUNT /INCREASE THE FILE COUNT BY 1 |
| 2541 | TAD I T8 |
| 2542 | TAD ASFLAG |
| 2543 | DCA I T8 /SIGNAL AN OPEN OUTPUT FILE ON THIS DEVICE |
| 2544 | JMS I [MWRCAT /WRITE THE ALTERED CATALOG BACK OUT |
| 2545 | JMP I [LRETRN /STORE ARGS BACK JUST LIKE "LOOKUP" |
| 2546 | \fMEMPTY, TAD I XR |
| 2547 | CIA CLL |
| 2548 | DCA T1 /SAVE LENGTH OF CURRENT ENTRY |
| 2549 | TAD T3 |
| 2550 | TAD T6 |
| 2551 | CLA /LINK NOW EQUALS BEST LENGTH>=DESIRED LENGTH |
| 2552 | TAD T3 |
| 2553 | SNA |
| 2554 | CML /IF DESIRED LENGTH=0 WE ALWAYS WANT MAXIMUM |
| 2555 | TAD T1 |
| 2556 | CLA CML /LINK IS NOW ON IF DESIRED LENGTH IS NOT IN BETWEEN |
| 2557 | /BEST LENGTH AND CURRENT LENGTH |
| 2558 | TAD T1 |
| 2559 | CIA |
| 2560 | TAD T6 |
| 2561 | SZL SNA CLA /TAKE EITHER MIN OR MAX OF BEST AND CURRENT LENGTHS, |
| 2562 | /DEPENDING ON WHETHER LINK IS ON OR OFF |
| 2563 | JMP MNOCHG /MIN(MAX)=BEST - NOTHING TO DO |
| 2564 | TAD T1 |
| 2565 | DCA T6 /MAKE CURRENT ENTRY NEW "BEST" |
| 2566 | CLA CLL CMA RAL |
| 2567 | TAD XR |
| 2568 | DCA NAME /REMEMBER CATALOG LOCATION |
| 2569 | TAD I [MCATRC |
| 2570 | DCA ASFLAG /ALSO DIRECTORY SEGMENT NUMBER |
| 2571 | TAD T2 |
| 2572 | DCA T5 /AND STARTING BLOCK NUMBER |
| 2573 | MNOCHG, TAD T1 |
| 2574 | CIA |
| 2575 | JMP MELEND /GO UPDATE THE BLOCK NUMBER |
| 2576 | \f /CLOSE PROCESSOR - CLOSES AN OUTPUT FILE WHICH WAS OPENED |
| 2577 | /BY THE "ENTER" CALL -- ARGUMENTS ARE THE DEVICE NUMBER AND THE |
| 2578 | /CLOSING LENGTH OF THE FILE. PERFORMS A DIRECTORY CLEANUP AFTER |
| 2579 | /CLOSING THE FILE. IF AN ENTRY ALREADY EXISTS WITH THE NEW FILE'S |
| 2580 | /NAME IT IS DELETED. (CLOSE MAY BE USED AS A "DELETE" COMMAND |
| 2581 | /ONLY IF NO OUTPUT FILE WAS ENTERED). AN ERROR RETURN IS |
| 2582 | /GIVEN IF THE CLOSING LENGTH IS TOO BIG OR IF THERE WAS NEITHER |
| 2583 | /AN ACTIVE TENTATIVE FILE OR AN OLD FILE TO DELETE. |
| 2584 | |
| 2585 | MCLOSE, JMS I [MRDCAT /GET THE CATALOG |
| 2586 | JMP CRETRN /NON-FILE STRUCTURED DEVICE - RETURN NORMALLY |
| 2587 | CLA IAC /GET THE NEXT WORD IN THE CALLING SEQUENCE |
| 2588 | JMS I [FGET |
| 2589 | DCA T1 /GET CLOSING LENGTH AND STORE IT AWAY |
| 2590 | JMS I [MDSRCH /SEARCH FOR THE OLD COPY |
| 2591 | JMP NODLET /NO OLD COPY |
| 2592 | MTHREE |
| 2593 | TAD I [DWASTE |
| 2594 | JMS SQUISH /SQUISH OUT 3+#WASTE WORDS OF THE OLD COPY |
| 2595 | DCA I XR2 /AND MAKE THE OTHER TWO INTO AN EMPTY |
| 2596 | TAD T6 /FILE ENTRY WITH THE SAME LENGTH |
| 2597 | CIA |
| 2598 | DCA I XR2 /AS THE OLD COPY |
| 2599 | TAD I T8 |
| 2600 | AND [7 |
| 2601 | SNA /IS THERE AN OPEN OUTPUT FILE ON THIS DEVICE |
| 2602 | JMP EOCLOS /NO - FINISH UP AND GET OUT |
| 2603 | CIA /GET THE SEGMENT NUMBER WE WANT |
| 2604 | TAD I [MCATRC |
| 2605 | SNA CLA |
| 2606 | JMP .+3 |
| 2607 | JMS CONSOL |
| 2608 | JMS I [MWRCAT /NO - WRITE OUT THE ONE WE SQUISHED |
| 2609 | TAD I [DFLAG /GET LOCATION OF TENTATIVE FILE |
| 2610 | CIA CLL |
| 2611 | TAD XR2 |
| 2612 | SZL CLA /IS THE ENTRY TO BE CLOSED ABOVE THE ONE |
| 2613 | JMP .+3 /WE JUST DELETED? |
| 2614 | MTHREE /YES - MOVE THE POINTER DOWN |
| 2615 | TAD I [DWASTE /TO COMPENSATE FOR THE SQUISHING |
| 2616 | TAD I [DFLAG /THE POINTER WILL NOW POINT |
| 2617 | DCA I [DFLAG /TO THE LENGTH WORD. |
| 2618 | /(THIS WAS WASTED WORK UNLESS THE CORRECT SEGMENT IS IN CORE) |
| 2619 | |
| 2620 | NODLET, TAD I T8 |
| 2621 | AND [7 |
| 2622 | SNA /IS THERE AN OPEN OUTPUT FILE ON THIS DEVICE? |
| 2623 | JMP I [MRTRN+1 /WHAT DID HE CALL US FOR? - ERROR |
| 2624 | JMS I [MRDCAT /YES - READ IN THE CORRECT SEGMENT |
| 2625 | TAD I [DFLAG |
| 2626 | DCA T4 /T4 POINTS TO THE LENGTH OF THE TENTATIVE ENTRY |
| 2627 | TAD T1 |
| 2628 | CIA /IF T1=0, NEW ENTRY WILL BE DELETED AUTOMATICALLY |
| 2629 | DCA I T4 /DURING CONSOLIDATION |
| 2630 | ISZ T4 |
| 2631 | ISZ T4 |
| 2632 | CLL CML |
| 2633 | TAD T1 |
| 2634 | TAD I T4 /SUBTRACT CLOSING LENGTH FROM FREE BLOCK ADJACENT TO ENTRY |
| 2635 | SNL SZA |
| 2636 | JMP I [MERROR+3 /THIS CREEP HAS GONE AND DESTROYED HIS TAPE |
| 2637 | DCA I T4 |
| 2638 | EOCLOS, JMS CONSOL /CONSOLIDATE THE DIRECTORY |
| 2639 | TAD [7770 |
| 2640 | AND I T8 |
| 2641 | DCA I T8 |
| 2642 | SKP |
| 2643 | CRETRN, TAD [7600 /DO A WRITE OF 0 PAGES. (MAGTAPE) |
| 2644 | JMS I [MWRCAT |
| 2645 | ISZ I [MONITO |
| 2646 | JMP I [MRTRN2 |
| 2647 | \f /CONSOLIDATOR - CHECKS FOR ENTRIES OF LENGTH 0 AND DELETES THEM. |
| 2648 | /ALSO CHECKS FOR ADJACENT FREE AREAS AND COMBINES THEM. |
| 2649 | CONSOL, 0 |
| 2650 | TAD [DPROPR-1 |
| 2651 | DCA XR |
| 2652 | TAD I [DCOUNT |
| 2653 | DCA T7 /T7 = FILE COUNT |
| 2654 | CONLP, TAD I XR |
| 2655 | SNA CLA /EMPTY FILE? |
| 2656 | JMP CONMTF /YES - GO CHECK FOR NULL AND 2 IN A ROW |
| 2657 | MTHREE |
| 2658 | JMS I [BUMPXR /GET PAST THE GARBAGE WORDS |
| 2659 | TAD I XR /GET COUNT |
| 2660 | SZA CLA /WOULD THIS HAPPEN TO BE A NULL FILE? |
| 2661 | JMP CONLPT /NAH, GO TO NEXT ONE |
| 2662 | TAD [-5 /YEAH, REMOVE IT ENTIRELY |
| 2663 | TAD I [DWASTE /INCLUDING THE WASTE WORDS |
| 2664 | SQCOMN, JMS SQUISH |
| 2665 | ISZ I [DCOUNT /BUMP DOWN FILE COUNT IN DIRECTORY |
| 2666 | ISZ NFILES /AS WELL AS THE TEMPORARY ONE IN PAGE 0 |
| 2667 | NOP /V3 RL INSISTS |
| 2668 | JMP CONSOL+1 /REPEAT ENTIRE CONSOLIDATION - THIS DELETION MAY |
| 2669 | /HAVE BROUGHT TWO FREE ENTRIES TOGEHER |
| 2670 | / THE ABOVE NOP FIXES THE KILLER CLOSE BUG |
| 2671 | CONLPT, ISZ T7 |
| 2672 | JMP CONLP /MORE FILES - KEEP PLUGGING |
| 2673 | JMP I CONSOL /RETURN FROM CONSOLIDATOR |
| 2674 | CONMTF, TAD I XR /IS THIS FREE ENTRY NULL? |
| 2675 | SNA |
| 2676 | JMP SQTRIV /YES - SQUASHITLIKEABUG |
| 2677 | DCA T2 /NO - SAVE LENGTH |
| 2678 | TAD XR |
| 2679 | DCA SQUISH /SAVE POSITION OF LENGTH WORD |
| 2680 | ISZ T7 /WAS IT THE LAST FILE? |
| 2681 | SKP /NO, THEN THERE IS ONE AFTER IT(GOOD THINKING!) |
| 2682 | JMP I CONSOL /YES - RETURN FROM CONSOLIDATOR |
| 2683 | TAD I XR |
| 2684 | SZA CLA /TWO EMPTIES IN A ROW? |
| 2685 | JMP CONLP+3 /NO - SLIP BACK INTO LOOP |
| 2686 | TAD I XR |
| 2687 | TAD T2 /YES - COMBINE LENGTHS |
| 2688 | DCA I SQUISH /STORE BACK IN FIRST LENGTH WORD AND SQUISH SECOND ENTRY |
| 2689 | SQTRIV, CLA CMA CLL RAL |
| 2690 | JMP SQCOMN /SQUISH OUT 2 WORDS |
| 2691 | \fMRESET, TAD [-17 |
| 2692 | DCA T3 |
| 2693 | MRSETL, TAD T3 |
| 2694 | JMS I [MCKDEV |
| 2695 | /LINK MUST BE ON AT THIS POINT |
| 2696 | TAD [200 |
| 2697 | SZL CLA /ZERO ALL DEVICE HANDLER SLOTS THAT AREN'T RESIDENT |
| 2698 | DCA I T1 |
| 2699 | JMS I [FGET |
| 2700 | SZA CLA |
| 2701 | TAD [7 |
| 2702 | CMA STL |
| 2703 | AND I T8 |
| 2704 | DCA I T8 /DELETE THE "FILE CURRENTLY OPEN" FLAG IF ASKED |
| 2705 | ISZ T3 |
| 2706 | JMP MRSETL |
| 2707 | JMP I [MNEXT |
| 2708 | |
| 2709 | /SUBR TO COLLAPSE DIRECTORY AFTER A POINT |
| 2710 | SQUISH, 0 |
| 2711 | TAD XR |
| 2712 | DCA XR1 |
| 2713 | CLA CLL CMA RAL |
| 2714 | TAD XR1 |
| 2715 | DCA XR2 /SET UP XR2 FOR CHANGING SQUISHED ENTRY |
| 2716 | SQLOOP, TAD I XR |
| 2717 | DCA I XR1 /MOVE DOWN ONE WORD |
| 2718 | TAD XR |
| 2719 | TAD [-1777 |
| 2720 | SZA CLA /AT END YET? |
| 2721 | JMP SQLOOP /NO, KEEP GOING |
| 2722 | JMP I SQUISH |
| 2723 | \f *1400 |
| 2724 | /INITIAL DIRECTORY FOR MONITOR |
| 2725 | /DEFINES OS/8 ABSOLUTE LOADER (ABSLDR.SV) |
| 2726 | |
| 2727 | DCOUNT, -2 /TWO ENTRIES |
| 2728 | DORG, MFREE /FILE STORAGE STARTS AT BLOCK "MFREE" |
| 2729 | DLINK, 0 /THIS IS THE ONLY DIRECTORY RECORD |
| 2730 | DFLAG, 0 /THERE ARE NO OPEN OUTPUT FILES ON THIS DEVICE |
| 2731 | DWASTE, -1 /# OF WASTED WORDS PER ENTRY |
| 2732 | DPROPR, 0102 /AB |
| 2733 | 2314 /SL |
| 2734 | 0422 /DR |
| 2735 | 2326 /.SV |
| 2736 | 3017 /V3D ENCODING FOR 1-JUN-77 |
| 2737 | -5 /FIVE BLOCKS LONG( 1 BLOCK = 256 WORDS) |
| 2738 | 0 /EMPTY SPACE |
| 2739 | -1 /OVERLAYED BY DEVICE DEPENDENT PART WITH LENGTH |
| 2740 | |
| 2741 | IFNZRO .-1415 <CNFER,QQQ> |
| 2742 | \f *3400 /"ENTER" OVERLAY TO USR - RUNS IN 11000 |
| 2743 | JMP .+3 |
| 2744 | MSEGLM, -7 /# DIRECT. SEGS |
| 2745 | NEWLEN, -10 |
| 2746 | MEOVLP, TAD I [DLINK |
| 2747 | SNA CLA |
| 2748 | JMP MELAST /LAST SEGMENT - MUST CREATE A NEW ONE |
| 2749 | ISZ I [DCOUNT /BUMP ENTRY COUNT DOWN |
| 2750 | JMS I [MWRCAT /WRITE OUT THIS SEGMENT |
| 2751 | JMS MSKIPF /FIND END OF SHORTENED DIRECTORY |
| 2752 | DCA MEFCNT /PREPARE TO TRANSFER LAST ENTRY |
| 2753 | TAD (MEOVLS-1 |
| 2754 | DCA XR1 /INTO NEXT DIRECTORY SEGMENT |
| 2755 | TAD I XR |
| 2756 | DCA I XR1 |
| 2757 | ISZ MEFCNT /THROUGH A BUFFER AT LOC 11200 |
| 2758 | TAD XR |
| 2759 | CIA |
| 2760 | TAD T1 /T1 WAS SET UP BY "ENTER" |
| 2761 | SZA CLA |
| 2762 | JMP .-7 |
| 2763 | TAD I T1 /GET LENGTH OF MOVED ENTRY |
| 2764 | DCA MEOCNT |
| 2765 | TAD I [DLINK |
| 2766 | JMS I [MRDCAT /READ NEXT SEGMENT |
| 2767 | JMS I [CONSOL /MAKE SURE IT IS AT ITS SMALLEST |
| 2768 | TAD I [DORG |
| 2769 | TAD MEOCNT |
| 2770 | DCA I [DORG /BUMP FILE ORIGIN DOWN |
| 2771 | JMS MSKIPF /FIND LAST LOC IN NEW SEGMENT |
| 2772 | MELP3, TAD XR |
| 2773 | DCA METMP1 |
| 2774 | TAD XR |
| 2775 | TAD MEFCNT |
| 2776 | DCA METMP2 /PREPARE TO PUSH ALL ENTRIES UP |
| 2777 | TAD I METMP1 |
| 2778 | DCA I METMP2 /DO THE PUSHING |
| 2779 | STA |
| 2780 | TAD XR |
| 2781 | DCA XR |
| 2782 | TAD XR |
| 2783 | TAD (-DWASTE |
| 2784 | SZA CLA /ARE WE THROUGH? |
| 2785 | JMP MELP3 /NO |
| 2786 | TAD (MEOVLS-1 |
| 2787 | DCA XR /PREPARE TO MOVE THE SAVED ENTRY INTO THE |
| 2788 | CLA CMA /NEW SEGMENT |
| 2789 | TAD I [DCOUNT |
| 2790 | DCA I [DCOUNT /INCREASE ENTRY COUNT OF NEW SEGMENT |
| 2791 | TAD MEFCNT |
| 2792 | CIA |
| 2793 | MECOMN, DCA MEFCNT /STORE NUMBER OF WORDS TO MOVE |
| 2794 | TAD [DWASTE |
| 2795 | DCA XR1 |
| 2796 | TAD I XR |
| 2797 | DCA I XR1 |
| 2798 | ISZ MEFCNT |
| 2799 | JMP .-3 /MOVE THE ENTRY IN |
| 2800 | JMS MSKIPF |
| 2801 | TAD XR |
| 2802 | DCA T1 /T1=LAST LOC IN SEGMENT |
| 2803 | TAD I [DWASTE |
| 2804 | CIA |
| 2805 | TAD XR |
| 2806 | TAD [-1772 |
| 2807 | SMA CLA /HAVE WE MADE THIS SEGMENT TOO BIG? |
| 2808 | JMP MEOVLP /YES - LOOP UNTIL WE GET IT RIGHT |
| 2809 | JMS I [MWRCAT /WRITE OUT NEW SEGMENT |
| 2810 | JMP MEOXIT /READ IN ENTER AND CONTINUE |
| 2811 | \fMWRONG, IAC |
| 2812 | MELAST, TAD NEWLEN |
| 2813 | DCA METMP1 /LENGTH OF NEW SEGMENT |
| 2814 | TAD METMP1 |
| 2815 | CIA |
| 2816 | TAD I [DCOUNT |
| 2817 | SMA /WERE THERE "NEWLEN+1" |
| 2818 | JMP MWRONG /NO - SET OUR SIGHTS LOWER |
| 2819 | DCA I [DCOUNT /ADJUST LENGTH OF OLD SEGMENT |
| 2820 | JMS MSKIPF /FIND BOUNDARY LOC BETWEEN SEGMENTS |
| 2821 | TAD I [MCATRC |
| 2822 | IAC |
| 2823 | DCA I [DLINK /LINK THE OLD LAST SEGMENT TO |
| 2824 | TAD I [DLINK /THE NEWLY CREATED ONE |
| 2825 | TAD MSEGLM |
| 2826 | SMA CLA |
| 2827 | JMP I (MEOERR /PROVIDED THAT THERE IS ROOM FOR ANOTHER |
| 2828 | JMS I [MWRCAT /WRITE OUT THE NEXT-TO-LAST SEGMENT |
| 2829 | ISZ I [MCATRC /BUMP RECORD NUMBER FOR NEXT WRITE |
| 2830 | ISZ OLDT9 /LIKEWISE BUMP DIRECTORY KEY |
| 2831 | TAD METMP1 |
| 2832 | DCA I [DCOUNT |
| 2833 | TAD MEOCNT |
| 2834 | CIA |
| 2835 | TAD I [DORG |
| 2836 | DCA I [DORG /SET UP PARAMETERS OF THE NEW SEGMENT |
| 2837 | DCA I [DLINK /MARK IT AS THE NEW LAST SEGMENT |
| 2838 | TAD XR |
| 2839 | TAD [-1777 /SET UP COUNT OF WORDS TO SLIDE DOWN |
| 2840 | JMP MECOMN /USE COMMON CODE TO SLIDE WORDS AND EXIT |
| 2841 | |
| 2842 | MSKIPF, 0 /SUBR TO FIND LAST LOC USED IN A SEGMENT |
| 2843 | /ALSO FINDS NUMBER OF BLOCKS USED BY SEGMENT |
| 2844 | TAD I [DCOUNT |
| 2845 | DCA MNOFIL |
| 2846 | TAD [DWASTE |
| 2847 | DCA XR |
| 2848 | DCA MEOCNT /INITIALIZE POINTER(XR) AND COUNT(MEOCNT) |
| 2849 | MSKPLP, TAD I XR |
| 2850 | SNA CLA |
| 2851 | JMP MEOMTY |
| 2852 | MTHREE |
| 2853 | TAD I [DWASTE /BUMP POINTER TO LENGTH WORD OF FILE ENTRY |
| 2854 | CIA |
| 2855 | TAD XR |
| 2856 | DCA XR |
| 2857 | MEOMTY, TAD I XR |
| 2858 | TAD MEOCNT |
| 2859 | DCA MEOCNT |
| 2860 | ISZ MNOFIL |
| 2861 | JMP MSKPLP |
| 2862 | JMP I MSKIPF |
| 2863 | \fMEOCNT, 0 |
| 2864 | MEFCNT, 0 |
| 2865 | METMP1, 0 |
| 2866 | METMP2, 0 |
| 2867 | MNOFIL, 0 |
| 2868 | MEOVLS=1200 /DESTROYS PART OF "CLOSE" OP FOR BUFFER |
| 2869 | PAGE |
| 2870 | \f EJECT ABSLDR |
| 2871 | /ABSOLUTE LOADER FOR OS/8 - VERSION 4A |
| 2872 | *2000 |
| 2873 | CTLBLK=3400 |
| 2874 | BUFFER=CTLBLK |
| 2875 | XFIELD=20 |
| 2876 | ORIGIN=21 |
| 2877 | B1=22 |
| 2878 | B2=23 |
| 2879 | B3=24 |
| 2880 | C1=25 |
| 2881 | C2=26 |
| 2882 | C3=27 |
| 2883 | WD=30 |
| 2884 | WD1=31 |
| 2885 | WD2=32 |
| 2886 | FILPTR=33 |
| 2887 | PG7400=34 |
| 2888 | LSTFLD=35 |
| 2889 | LOADXR=11 |
| 2890 | ABSLDR, JMS I (CTINIT |
| 2891 | JMS I (CTINIT |
| 2892 | JMP CALLCD |
| 2893 | JMP NOCD |
| 2894 | NEXTCD, JMS I (NEXFIL |
| 2895 | CALLCD, JMS I [200 |
| 2896 | 5 /COMMAND DECODE |
| 2897 | 0216 /ASSUMED EXTENSION IS .BN |
| 2898 | NOCD, TAD [6001 |
| 2899 | CDF 0 |
| 2900 | DCA I [JSBITS /SET JSBITS TO SAVE CD AREA NEXT TIME |
| 2901 | CDF 10 |
| 2902 | TAD I [MPARAM+1 |
| 2903 | AND [100 |
| 2904 | SZA CLA /IS /R SWITCH ON? |
| 2905 | JMS I (CTINIT /YES - RE-INITIALIZE LOADER TABLES |
| 2906 | LD7400, 7400 |
| 2907 | TAD (MIFILE |
| 2908 | DCA FILPTR |
| 2909 | JMS I (SETADR /GET THE STARTING ADDRESS IF IT APPEARS ON THE LINE |
| 2910 | NEWFIL, TAD (7001 |
| 2911 | DCA HANDLR |
| 2912 | TAD I FILPTR |
| 2913 | AND [7760 |
| 2914 | SZA /LENGTH OF 256 BLOCKS IMPLIES AT LEAST 256 |
| 2915 | TAD [17 |
| 2916 | CLL CML RTR |
| 2917 | RTR |
| 2918 | DCA RCDCNT |
| 2919 | TAD I FILPTR |
| 2920 | ISZ FILPTR |
| 2921 | SNA |
| 2922 | JMP NEXTCD /FILE POINTER = 0 MEANS NO MORE INPUT FILES |
| 2923 | JMS I [200 |
| 2924 | 1 /ASSIGN |
| 2925 | HANDLR, 7001 /LOAD INTO 7000 IF NOT ALREADY LOADED |
| 2926 | JMP I (IOERR |
| 2927 | TAD I FILPTR |
| 2928 | DCA RECNO |
| 2929 | ISZ FILPTR |
| 2930 | CLA CMA |
| 2931 | DCA CHCNT |
| 2932 | DCA REOF |
| 2933 | TAD I [MPARAM /TEST FOR /I |
| 2934 | AND (10 |
| 2935 | SNA CLA |
| 2936 | JMP I (LOADER /I IS NOT ON |
| 2937 | ISZ OFLG /IS /I ALLOWED? |
| 2938 | JMP I (OERR /NO! |
| 2939 | JMP I (SLASHO |
| 2940 | \fGETCH, 0 /GET-NEXT-INPUT-CHARACTER ROUTINE |
| 2941 | TAD [200 |
| 2942 | KRS |
| 2943 | TAD (-203 |
| 2944 | SNA CLA |
| 2945 | KSF |
| 2946 | SKP |
| 2947 | JMP I (MGET |
| 2948 | ISZ JMPGET |
| 2949 | ISZ CHCNT |
| 2950 | JMPX, JMP JMPGET |
| 2951 | TAD REOF |
| 2952 | SZA CLA |
| 2953 | JMP I GETCH /EOF REACHED BEFORE LOGICAL END - ERROR |
| 2954 | CIF 0 |
| 2955 | JMS I HANDLR |
| 2956 | 0210 /READ 2 RECORDS INTO FIELD 1 |
| 2957 | PBUFFR, BUFFER |
| 2958 | RECNO, 0 |
| 2959 | JMP RERROR |
| 2960 | ISZ RECNO |
| 2961 | ISZ RCDCNT |
| 2962 | SKP |
| 2963 | ISZ REOF |
| 2964 | TAD (-601 |
| 2965 | DCA CHCNT |
| 2966 | TAD PBUFFR |
| 2967 | DCA CHPTR |
| 2968 | TAD JMPX |
| 2969 | DCA JMPGET |
| 2970 | JMP GETCH+1 |
| 2971 | \fJMPGET, JMP . |
| 2972 | JMP CHAR1 |
| 2973 | JMP CHAR2 |
| 2974 | CHAR3, TAD JMPX |
| 2975 | DCA JMPGET |
| 2976 | TAD I CHPTR |
| 2977 | AND LD7400 |
| 2978 | CLL RTR |
| 2979 | RTR |
| 2980 | TAD CHTMP |
| 2981 | RTR |
| 2982 | RTR |
| 2983 | ISZ CHPTR |
| 2984 | JMP GCHCOM |
| 2985 | CHAR2, TAD I CHPTR |
| 2986 | AND LD7400 |
| 2987 | DCA CHTMP |
| 2988 | ISZ CHPTR |
| 2989 | CHAR1, TAD I CHPTR |
| 2990 | GCHCOM, AND (377 |
| 2991 | ISZ GETCH |
| 2992 | JMP I GETCH |
| 2993 | RERROR, SPA CLA |
| 2994 | JMP I (IOERR /AN ACTUAL READ ERROR - AMAZING! |
| 2995 | ISZ REOF |
| 2996 | JMP RECNO+2 |
| 2997 | REOF, 0 |
| 2998 | CHCNT, 0 |
| 2999 | CHPTR, 0 |
| 3000 | CHTMP, 0 |
| 3001 | RCDCNT, 0 |
| 3002 | OFLG, -1 /SWITCH FOR /O OPTION |
| 3003 | PAGE |
| 3004 | \f *2200 |
| 3005 | PUTWD, 6402 /ABSLDR VERSION NUMBER |
| 3006 | CMA |
| 3007 | AND I B2 /AND OUT THE PAGE SLOT IN THE PAGE TABLE |
| 3008 | DCA I B2 |
| 3009 | TAD ORIGIN |
| 3010 | DCA ORGX |
| 3011 | TAD XFIELD |
| 3012 | CLL RTR |
| 3013 | RTR |
| 3014 | SZA CLA /TEST FOR FIELDS 0 OR 1 |
| 3015 | JMP PUTIT /NEITHER - STORE AS IS |
| 3016 | SNL |
| 3017 | JMP FLD0 |
| 3018 | TAD ORIGIN |
| 3019 | SPA CLA |
| 3020 | JMP FLD1 |
| 3021 | CLA CLL CML RTR |
| 3022 | TAD ORIGIN |
| 3023 | SMA CLA |
| 3024 | JMP .+3 |
| 3025 | ISZ I (OVLYFG /SET FLAG THAT LOADER IS BEING OVERLAYED |
| 3026 | TAD (2400 /LOADER OVERLAYS GO IN MTEMP+11 - MTEMP+14 |
| 3027 | LCOMPR, TAD ORIGIN |
| 3028 | RTL |
| 3029 | RTL |
| 3030 | RAL |
| 3031 | AND [17 |
| 3032 | TAD (MTEMP |
| 3033 | RLCOMN, DCA PGTMP |
| 3034 | TAD BUFREC |
| 3035 | CIA |
| 3036 | TAD PGTMP |
| 3037 | SNA CLA |
| 3038 | JMP DONTWR |
| 3039 | JMS WRBUF |
| 3040 | WRIBUF, CLA /MODIFIED..IF NOT /O GETS SZA CLA |
| 3041 | JMP DONTWR |
| 3042 | CIF 0 |
| 3043 | JMS I [SHNDLR |
| 3044 | 0210 |
| 3045 | 1400 /USE CATALOG SPACE |
| 3046 | PGTMP, 0 |
| 3047 | JMP I (LIOERR |
| 3048 | DONTWR, DCA OLDT9 /MARK THE CATALOG DESTROYED |
| 3049 | TAD PGTMP |
| 3050 | DCA BUFREC |
| 3051 | TAD ORIGIN |
| 3052 | AND [377 |
| 3053 | TAD PTRBFR |
| 3054 | DCA ORGX |
| 3055 | JMP PUTIT2 |
| 3056 | \fFLD1, CLL |
| 3057 | TAD ORIGIN /IGNORE LOCATIONS ABOVE 17600 |
| 3058 | TAD [200 |
| 3059 | SZL CLA |
| 3060 | JMP I PUTWD |
| 3061 | PUTIT, TAD XFIELD |
| 3062 | TAD [7770 /CONSTRUCT CDF N FOR PROPER FIELD |
| 3063 | PUTIT2, TAD CDF10 |
| 3064 | DCA .+1 |
| 3065 | M7, -7 |
| 3066 | TAD C3 |
| 3067 | DCA I ORGX |
| 3068 | CDF10, CDF 10 |
| 3069 | JMP I PUTWD |
| 3070 | FLD0, TAD ORIGIN /CHECK FOR STUFF IN PAGE 7000 |
| 3071 | TAD (1000 |
| 3072 | SNL CLA /IF NON ZERO,OVERLAY |
| 3073 | JMP PUTIT |
| 3074 | TAD [7400 /FORM RECORD NO. FOR OVERLAY |
| 3075 | ISZ PG7400 /SET OVERLAY FLAG |
| 3076 | JMP LCOMPR /FORM RECORD NO. |
| 3077 | WRBUF, CALONC |
| 3078 | TAD BUFREC |
| 3079 | SNA |
| 3080 | JMP I WRBUF |
| 3081 | CIF 0 |
| 3082 | JMS I [SHNDLR |
| 3083 | 4210 |
| 3084 | PTRBFR, 1400 |
| 3085 | BUFREC, 0 |
| 3086 | JMP I (LIOERR |
| 3087 | DCA BUFREC |
| 3088 | /BAD I/O ON SYSTEM DEVICE |
| 3089 | JMP I WRBUF |
| 3090 | \fORGX, |
| 3091 | NEXFIL, ERTRN |
| 3092 | JMS WRBUF /WRITE WHATEVER |
| 3093 | TAD I [MPARAM-1 |
| 3094 | SPA CLA |
| 3095 | JMP I (BUILD |
| 3096 | TAD I (MPARAM |
| 3097 | AND (40 |
| 3098 | SZA CLA |
| 3099 | JMP I (BUILD |
| 3100 | JMP I NEXFIL |
| 3101 | |
| 3102 | CORTAB, ZBLOCK 30 /ONCE-ONLY CODE INSERTED HERE KATER |
| 3103 | ZBLOCK 2 /EXTRA NEEDED BY ONCE-ONLY CODE |
| 3104 | /NOT USED BY CORE TABLE |
| 3105 | PAGE |
| 3106 | \f *2400 |
| 3107 | ITSOVR, JMS ASSEMB |
| 3108 | CIA |
| 3109 | TAD LCKSUM |
| 3110 | SZAIN, SZA CLA |
| 3111 | JMP I (BADCKS |
| 3112 | TAD I [MPARAM+1 |
| 3113 | AND L40 |
| 3114 | SNA CLA |
| 3115 | JMP I (NEWFIL |
| 3116 | LOADER, DCA LCKSUM |
| 3117 | DCA I (OFLG /CANCEL FURTHER /I'S |
| 3118 | TAD SZAIN |
| 3119 | DCA I (WRIBUF |
| 3120 | JMS GETFLD |
| 3121 | DCA XFIELD |
| 3122 | TAD [200 |
| 3123 | DCA ORIGIN |
| 3124 | JMS I (GETCH |
| 3125 | JMP I (NEWFIL |
| 3126 | SNA |
| 3127 | JMP .-3 |
| 3128 | TAD [-200 |
| 3129 | SZA CLA |
| 3130 | JMP LOADER+1 |
| 3131 | LEADER, JMS I (GETCH |
| 3132 | JMP I (NEWFIL |
| 3133 | SNA |
| 3134 | JMP LOADER+1 |
| 3135 | TAD [-200 |
| 3136 | SNA |
| 3137 | JMP LEADER |
| 3138 | NEWWD, SMA |
| 3139 | JMP FIELDW |
| 3140 | TAD [200 |
| 3141 | DCA WD1 |
| 3142 | JMS I (GETCH |
| 3143 | JMP I (BADINP |
| 3144 | DCA WD2 |
| 3145 | JMS I (GETCH |
| 3146 | JMP I (BADINP |
| 3147 | TAD [-200 |
| 3148 | SNA |
| 3149 | JMP ITSOVR |
| 3150 | DCA WD |
| 3151 | JMS ASSEMB |
| 3152 | SNL |
| 3153 | JMP DATAWD |
| 3154 | DCA ORIGIN |
| 3155 | DCA I (LOADWD /ZERO 'DATA LOADED' FLAG V3 |
| 3156 | JMP GETNXT |
| 3157 | \fDATAWD, JMS I (LOADWD |
| 3158 | ISZ ORIGIN |
| 3159 | L40, 40 |
| 3160 | GETNXT, TAD WD1 |
| 3161 | TAD WD2 |
| 3162 | TAD LCKSUM |
| 3163 | DCA LCKSUM |
| 3164 | TAD WD |
| 3165 | JMP NEWWD |
| 3166 | \fASSEMB, 0 |
| 3167 | TAD WD1 |
| 3168 | CLL RTL |
| 3169 | RTL |
| 3170 | RTL |
| 3171 | TAD WD2 |
| 3172 | JMP I ASSEMB |
| 3173 | FIELDW, TAD (-32 |
| 3174 | SNA |
| 3175 | JMP CTLZ |
| 3176 | TAD (-46 |
| 3177 | SPA |
| 3178 | JMP NOTXP |
| 3179 | DCA WD1 |
| 3180 | TAD WD1 |
| 3181 | AND [7 /V3C |
| 3182 | SZA CLA |
| 3183 | JMP NOTXP |
| 3184 | TAD WD1 |
| 3185 | AND (70 |
| 3186 | DCA XFIELD |
| 3187 | JMS I (GETCH |
| 3188 | JMP I (BADINP |
| 3189 | TAD [-200 |
| 3190 | SZA |
| 3191 | JMP NEWWD |
| 3192 | NOTXP, CLA |
| 3193 | TAD LCKSUM |
| 3194 | SNA CLA |
| 3195 | JMP LOADER |
| 3196 | JMP I (BADINP |
| 3197 | LCKSUM, 0 |
| 3198 | CTLZ, TAD LCKSUM |
| 3199 | SZA CLA |
| 3200 | JMP I (BADINP |
| 3201 | JMP I (NEWFIL |
| 3202 | \fGETFLD, 0 |
| 3203 | DCA C1 |
| 3204 | TAD I (MPARAM+2 |
| 3205 | AND (1774 |
| 3206 | SNA |
| 3207 | JMP I GETFLD |
| 3208 | RTL |
| 3209 | RAL |
| 3210 | ISZ C1 |
| 3211 | SNL |
| 3212 | JMP .-3 |
| 3213 | CLA CMA |
| 3214 | TAD C1 |
| 3215 | CLL RTL |
| 3216 | RAL |
| 3217 | JMP I GETFLD |
| 3218 | PAGE |
| 3219 | \f *2600 |
| 3220 | BUILD, TAD (CORTAB+25 |
| 3221 | DCA B1 |
| 3222 | TAD I (CORTAB+3 |
| 3223 | CLL CMA |
| 3224 | AND [7760 |
| 3225 | SNA CLA |
| 3226 | CML |
| 3227 | TAD I (CORTAB |
| 3228 | CMA |
| 3229 | AND [7760 |
| 3230 | SNA CLA |
| 3231 | IAC |
| 3232 | RTR |
| 3233 | DCA I (CTLBLK+3 |
| 3234 | TAD (CTLBLK+3 |
| 3235 | DCA LOADXR |
| 3236 | TAD [-10 |
| 3237 | DCA C1 |
| 3238 | TAD [70 |
| 3239 | DCA FIELDB |
| 3240 | DCA I (CTLBLK |
| 3241 | FLDLP, TAD FIELDB |
| 3242 | TAD [-20 |
| 3243 | SMA CLA /IGNORE 07600 AND 17600 IN CCB /V3 |
| 3244 | CMA /IN THE CORE MAP |
| 3245 | TAD [-37 |
| 3246 | DCA C2 |
| 3247 | DCA LOWERA |
| 3248 | MTLOOP, JMS I (SHFT |
| 3249 | SNL CLA |
| 3250 | JMP INUSE |
| 3251 | TAD LOWERA |
| 3252 | MTRSME, TAD [200 |
| 3253 | DCA LOWERA |
| 3254 | ISZ C2 |
| 3255 | JMP MTLOOP |
| 3256 | JMP FLDOVR |
| 3257 | INUSE, TAD LOWERA |
| 3258 | TAD [200 |
| 3259 | DCA UPPERA |
| 3260 | ISZ C2 |
| 3261 | SKP |
| 3262 | JMP ENDRGN-2 |
| 3263 | JMS I (SHFT |
| 3264 | SZL CLA |
| 3265 | JMP ENDRGN |
| 3266 | TAD UPPERA |
| 3267 | JMP INUSE+1 |
| 3268 | CLA CMA |
| 3269 | DCA C2 |
| 3270 | ENDRGN, TAD LOWERA |
| 3271 | AND [7400 |
| 3272 | DCA I LOADXR |
| 3273 | ISZ I (CTLBLK |
| 3274 | TAD LOWERA |
| 3275 | AND [7400 |
| 3276 | CIA |
| 3277 | TAD UPPERA |
| 3278 | CLL RAR |
| 3279 | TAD FIELDB |
| 3280 | DCA I LOADXR |
| 3281 | TAD UPPERA |
| 3282 | JMP MTRSME |
| 3283 | \fFLDOVR, TAD FIELDB |
| 3284 | TAD [-10 |
| 3285 | DCA FIELDB |
| 3286 | CLA CLL CMA RTL |
| 3287 | TAD B1 |
| 3288 | DCA B1 |
| 3289 | ISZ C1 |
| 3290 | JMP FLDLP |
| 3291 | TAD I (CTLBLK |
| 3292 | SNA |
| 3293 | JMP I (NULERR |
| 3294 | CIA |
| 3295 | DCA I (CTLBLK |
| 3296 | TAD I [MPARAM+1 /CLOBBER BATCH? |
| 3297 | AND [400 |
| 3298 | TAD I (MPARAM+2 /AH ED, BUG IF YOU SPEC /P/1 TO LOADER |
| 3299 | AND (403 |
| 3300 | TAD I (CTLBLK+3 |
| 3301 | DCA I (CTLBLK+3 |
| 3302 | TAD LSTFLD |
| 3303 | AND [7 |
| 3304 | CLL RTL |
| 3305 | RAL |
| 3306 | TAD [CDF CIF 0 |
| 3307 | DCA I (CTLBLK+1 |
| 3308 | SKP |
| 3309 | ORG200, TAD [200 |
| 3310 | TAD LSTADR |
| 3311 | SZA /V3 |
| 3312 | JMP NOORG /V3 ALLOW EXPLICIT START ADDR TO OVERRIDE DEFAULT |
| 3313 | TAD I (LOADWD /V3 NO EXPLICIT START ADDR |
| 3314 | CLA /REPLACE BY 'SZA CLA' TO ALLOW SELF-STARTING STUFF |
| 3315 | /* SZA CLA /V3 IS IT SELF STARTING BIN FORMAT? |
| 3316 | JMP ORG200 /V3 NO |
| 3317 | TAD XFIELD /V3 YES |
| 3318 | TAD [CIF CDF 0 /V3 |
| 3319 | DCA I (CTLBLK+1 /V3 |
| 3320 | TAD I (ORIGIN /V3 |
| 3321 | NOORG, DCA I (CTLBLK+2 |
| 3322 | JMP I (LGTOUT /WRITE CONTROL BLOCK AND EXIT |
| 3323 | FIELDB, 0 |
| 3324 | \fUPPERA, |
| 3325 | SETADR, 0 |
| 3326 | TAD I (MPARAM+3 |
| 3327 | SNA /IS THERE A STARTING ADDRESS SPECIFIED? |
| 3328 | JMP I SETADR /NO |
| 3329 | DCA LSTADR |
| 3330 | TAD I [MPARAM-1 |
| 3331 | DCA LSTFLD |
| 3332 | JMP I SETADR |
| 3333 | |
| 3334 | LOWERA, 0 |
| 3335 | LSTADR, 0 |
| 3336 | PAGE |
| 3337 | \f *3000 |
| 3338 | ZOFILE, MOFILE |
| 3339 | ZOUCNT, -47 |
| 3340 | LGTOUT, TAD PG7400 |
| 3341 | SNA CLA |
| 3342 | JMP .+7 |
| 3343 | CIF 0 |
| 3344 | JMS I [SHNDLR |
| 3345 | 0300 |
| 3346 | 7000 |
| 3347 | MTEMP+15 |
| 3348 | JMP I (LIOERR |
| 3349 | CIF 0 |
| 3350 | JMS I [SHNDLR |
| 3351 | 4210 |
| 3352 | CTLBLK-200 |
| 3353 | MTEMP+10 |
| 3354 | JMP I (LIOERR |
| 3355 | TAD I (CTLBLK+2 |
| 3356 | DCA CTL2 /MOVE THINGS INTO THIS PAGE |
| 3357 | TAD I (CTLBLK+3 |
| 3358 | DCA CTL3 /SO WE CAN REFERENCE THEM WITH DF=0 |
| 3359 | TAD I [MPARAM |
| 3360 | AND (40 |
| 3361 | SNA CLA |
| 3362 | JMP LNOGO |
| 3363 | TAD CTL3 |
| 3364 | RAL |
| 3365 | SPA CLA /ARE WE OVERLAYING THE I/O MONITOR? |
| 3366 | JMP LKICKM /NO |
| 3367 | CDF 0 |
| 3368 | DCA I [JSBITS /YES - SET JSBITS TO FORCE A READ |
| 3369 | CDF 10 |
| 3370 | JMS I [200 |
| 3371 | 13 /RESET I/O DEVICES AND FILES |
| 3372 | LKICKM, JMS I [200 |
| 3373 | 11 /KICK MONITOR OUT |
| 3374 | /******************************************** |
| 3375 | /NO PAGE ZERO REFERENCES AFTER THIS POINT |
| 3376 | /PAGE ZERO MAY CONTAIN USER CODE |
| 3377 | /******************************************** |
| 3378 | DCA I ZOFILE /ZERO OUT COMMAND DECODER AREA |
| 3379 | ISZ ZOFILE |
| 3380 | ISZ ZOUCNT |
| 3381 | JMP .-3 |
| 3382 | TAD I (CTLBLK+1 |
| 3383 | CDF 0 |
| 3384 | DCA I (MSTCDF |
| 3385 | TAD CTL2 |
| 3386 | DCA I (MSTADR /SET UP STARTING ADDRESS IN FIELD 0 |
| 3387 | JMP LMOVRD |
| 3388 | \fLNOGO, TAD CTL3 /ABOVE COMMENT DOESN'T APPLY TO NEXT 9 LINES |
| 3389 | SPA CLA /ARE WE OVERLAYING THE KEYBOARD MONITOR? |
| 3390 | TAD (5 /NO - RETURN TO NON-SAVING ENTRY |
| 3391 | TAD [7600 |
| 3392 | CDF 0 |
| 3393 | DCA I (MSTADR |
| 3394 | TAD ZCDIF0 |
| 3395 | DCA I (MSTCDF |
| 3396 | CLA CMA |
| 3397 | LMOVRD, CDF 10 |
| 3398 | DCA I (7700 /SET 7700 TO -1 IF NO GO |
| 3399 | TAD I (CTLBLK+1 |
| 3400 | CDF 0 |
| 3401 | DCA I (JFIELD /SET UP PARAMETERS IN FIELD 0 |
| 3402 | TAD CTL2 |
| 3403 | DCA I (JSTART |
| 3404 | TAD CTL3 |
| 3405 | DCA I (JSBITS |
| 3406 | LMOVLP, TAD COMBO |
| 3407 | DCA I COMBPT |
| 3408 | ISZ LMOVLP |
| 3409 | ISZ COMBPT |
| 3410 | ISZ COMBCT |
| 3411 | JMP LMOVLP /MOVE THE READ OF THE LOADER OVERLAY INTO FIELD 0 |
| 3412 | ZCDIF0, CDF CIF 0 |
| 3413 | TAD OVLYFG |
| 3414 | SZA CLA |
| 3415 | JMP I (MREAD /LOADER OVERLAYED - GO READ OVERLAY |
| 3416 | JMP I (MSTCDF /LOADER NOT OVERLAYED - WHY READ? |
| 3417 | COMBPT, MREAD-1 |
| 3418 | COMBCT, -7 |
| 3419 | COMBO, 7607 |
| 3420 | MREAD-1&177+4600 /JMS I .-1 |
| 3421 | 1010 |
| 3422 | 2000 |
| 3423 | MTEMP+11 /LOCATION OF SCRATCH BLOCKS FOR LOADER OVERLAY |
| 3424 | HLT |
| 3425 | MSTCDF&177+5200 /JMP MSTCDF |
| 3426 | CTL2, 0 |
| 3427 | CTL3, 0 |
| 3428 | OVLYFG, 0 |
| 3429 | \fLOADWD, 0 |
| 3430 | DCA C3 |
| 3431 | TAD XFIELD |
| 3432 | CLL RAR |
| 3433 | TAD XFIELD |
| 3434 | RTR |
| 3435 | TAD (CORTAB-1 |
| 3436 | DCA B2 |
| 3437 | TAD ORIGIN |
| 3438 | AND [7600 |
| 3439 | CLL RTL |
| 3440 | RTL |
| 3441 | RTL |
| 3442 | ISZ B2 |
| 3443 | TAD (-14 |
| 3444 | SMA |
| 3445 | JMP .-3 |
| 3446 | DCA CTL2 |
| 3447 | CLL CML |
| 3448 | RAL |
| 3449 | ISZ CTL2 |
| 3450 | JMP .-2 |
| 3451 | JMS I (PUTWD |
| 3452 | JMP I LOADWD |
| 3453 | PAGE |
| 3454 | \f *3200 |
| 3455 | ERPCH, 0 |
| 3456 | AND (77 /GET LOW ORDER 6 BITS |
| 3457 | SZA |
| 3458 | JMP NZCHAR |
| 3459 | JMS ERR |
| 3460 | FILMSG, TEXT /, FILE 0/ |
| 3461 | NZCHAR, TAD (240 |
| 3462 | AND (77 |
| 3463 | TAD (240 /CONVERT TO ASCII |
| 3464 | JMS LDRPCH /PRINT |
| 3465 | JMP I ERPCH /AND RETURN |
| 3466 | LDRPCH, 0 |
| 3467 | TLS |
| 3468 | TSF |
| 3469 | JMP .-1 |
| 3470 | CLA |
| 3471 | JMP I LDRPCH |
| 3472 | SHFT, 0 |
| 3473 | CLA CLL CMA RTL |
| 3474 | DCA C3 |
| 3475 | CLA CLL CML RTL |
| 3476 | TAD B1 |
| 3477 | SHFTLP, DCA B3 |
| 3478 | TAD I B3 |
| 3479 | RAL |
| 3480 | DCA I B3 |
| 3481 | CLA CMA CML |
| 3482 | TAD B3 |
| 3483 | ISZ C3 |
| 3484 | JMP SHFTLP |
| 3485 | JMP I SHFT /NOTE: SHFT LEAVES AC NON-ZERO |
| 3486 | \fERR, ONCE /CAN'T USE PAGE 0 LITERALS |
| 3487 | CLA |
| 3488 | CDF 10 |
| 3489 | TAD I (FILPTR /ZERO CHAR GETS REPLACED BY "FILE #" |
| 3490 | TAD (322 /MAGIC NUMBER |
| 3491 | CLL CML RAR /AC NOW CONTAINS " #" |
| 3492 | DCA FILMSG+3 |
| 3493 | ERRLUP, TAD I ERR |
| 3494 | SNA |
| 3495 | JMP EOMESG /MESSAGE MUST BE EVEN NUMBER OF CHARS LONG |
| 3496 | RTR |
| 3497 | RTR |
| 3498 | RTR |
| 3499 | JMS ERPCH |
| 3500 | TAD I ERR |
| 3501 | JMS ERPCH |
| 3502 | ISZ ERR |
| 3503 | JMP ERRLUP |
| 3504 | EOMESG, TAD (215 /TERMINATE MESSAGE WITH CR-LF |
| 3505 | JMS LDRPCH |
| 3506 | TAD (212 |
| 3507 | JMS LDRPCH |
| 3508 | ERTRN, JMP I (ABSLDR /RETURN TO LOADER STARTING ADDRESS |
| 3509 | IOERR, JMS ERR |
| 3510 | TEXT %I/O ERROR% |
| 3511 | BADINP, JMS ERR |
| 3512 | TEXT /BAD INPUT/ |
| 3513 | BADCKS, JMS ERR |
| 3514 | TEXT / BAD CHECKSUM/ |
| 3515 | NULERR, JMS CTINIT |
| 3516 | NOP |
| 3517 | JMS ERR |
| 3518 | TEXT /NO INPUT/ |
| 3519 | \fLIOERR, JMS ERR |
| 3520 | TEXT /SYSTEM I-O ERROR/ |
| 3521 | OERR, JMS ERR |
| 3522 | TEXT %NO /I!% |
| 3523 | |
| 3524 | CTINIT, 0 |
| 3525 | CALONC, JMS I ERR /CALL ONCE-ONLY CODE |
| 3526 | TAD (-30 |
| 3527 | DCA C1 |
| 3528 | TAD (CORTAB-1 |
| 3529 | DCA LOADXR |
| 3530 | CLA CMA |
| 3531 | DCA I LOADXR |
| 3532 | ISZ C1 |
| 3533 | JMP .-3 |
| 3534 | DCA LSTFLD |
| 3535 | DCA I (LSTADR /V3 SET INITIAL STARTING ADDRESS TO 0 |
| 3536 | DCA I (OVLYFG |
| 3537 | DCA PG7400 |
| 3538 | ISZ CTINIT |
| 3539 | JMP I CTINIT |
| 3540 | PAGE |
| 3541 | \f |
| 3542 | *CTLBLK+200 |
| 3543 | |
| 3544 | /CODE FOR OVERLAY OPTION IS HERE.IF /I IS NOT |
| 3545 | /USED IMMEDIATELY, THIS CODE WILL PROBABLY BE DESTROYED, |
| 3546 | /AS IT IS USED FOR A BUFFER |
| 3547 | |
| 3548 | SLASHO, CLA CMA |
| 3549 | DCA I (OFLG /RE ENABLE /I |
| 3550 | TAD I (HANDLR |
| 3551 | DCA GLONK /ENTRY POINT TO HANDLER |
| 3552 | TAD I (RECNO |
| 3553 | DCA CCBLOK |
| 3554 | CIF 0 |
| 3555 | JMS I GLONK /READ IN CORE CONTROL BLOCK |
| 3556 | 0110 |
| 3557 | CCBPTR, CTLBLK |
| 3558 | CCBLOK, 0 |
| 3559 | JMP I (OERR /DATA FAILURE |
| 3560 | TAD I CCBPTR /NO. SEGMENTS |
| 3561 | CMA /TEST FOR BAD CORE IMAGE |
| 3562 | AND L7740 |
| 3563 | SZA CLA |
| 3564 | JMP I (BADINP /NOT CORE IMAGE |
| 3565 | TAD I CCBPTR |
| 3566 | DCA SEGCNT |
| 3567 | TAD I SGSTAD /THIS CODE IS NEW FOR V3D |
| 3568 | / AND [70 /GET FIELD |
| 3569 | CLL RTR |
| 3570 | RAR |
| 3571 | DCA I (LSTFLD |
| 3572 | ISZ SGSTAD |
| 3573 | TAD I SGSTAD |
| 3574 | DCA I (LSTADR |
| 3575 | ISZ SGSTAD |
| 3576 | TAD I SGSTAD /GET JSW FROM SAVE FILE |
| 3577 | AND [400 |
| 3578 | DCA TEMP /PRESERVE /P |
| 3579 | TAD I [MPARAM+1 |
| 3580 | AND (7377 |
| 3581 | TAD TEMP |
| 3582 | DCA I [MPARAM+1 |
| 3583 | TAD I SGSTAD |
| 3584 | AND (3 /PRESERVE LAST 2 BITS |
| 3585 | DCA TEMP |
| 3586 | TAD I (MPARAM+2 |
| 3587 | AND [7774 |
| 3588 | TAD TEMP |
| 3589 | DCA I (MPARAM+2 |
| 3590 | ISZ SGSTAD |
| 3591 | NEWSEG, TAD I SGSTAD /SEGMENT START ADDRESS |
| 3592 | DCA ORIGIN |
| 3593 | TAD I SGFDLT /FIELD AND LENGTH |
| 3594 | AND L77 |
| 3595 | DCA XFIELD |
| 3596 | TAD I SGFDLT |
| 3597 | AND [7700 |
| 3598 | SNA /V3C |
| 3599 | STL CLA RAR /AC4000 |
| 3600 | DCA SEGLTH |
| 3601 | TAD SEGLTH |
| 3602 | TWOPG, TAD [7600 |
| 3603 | SMA CLA /NO.. IS TWO PAGE SEGMENT LEFT? |
| 3604 | TAD [7600 /YES..-400 TO WORD COUNT |
| 3605 | TAD [7600 /NO.. -200 TO WORD COUNT |
| 3606 | DCA WDCT |
| 3607 | TAD SEGLTH |
| 3608 | TAD [7600 /BUMP DOWN LENGTH LEFT |
| 3609 | DCA SEGLTH |
| 3610 | |
| 3611 | ISZ CCBLOK /POINT TO NEXT DATA RECORD |
| 3612 | TAD CCBLOK |
| 3613 | DCA DATRC |
| 3614 | DCA OLDT9 /MARK DIRECTORY DESTROYED |
| 3615 | CIF 0 |
| 3616 | JMS I GLONK /READ THE DATA RECORD IN |
| 3617 | 0210 |
| 3618 | 1400 /INTO 11400 |
| 3619 | TEMP, |
| 3620 | DATRC, 0 |
| 3621 | JMP I (IOERR /DATA FAILURE |
| 3622 | CLA CMA |
| 3623 | TAD ORIGIN |
| 3624 | AND [177 |
| 3625 | TAD (1200 /SET UP INPUT POINTER |
| 3626 | CHARPT=10 |
| 3627 | DCA CHARPT |
| 3628 | LOOPI, TAD I CHARPT |
| 3629 | JMS I (LOADWD /MOST OF THE WORK |
| 3630 | ISZ ORIGIN |
| 3631 | L7400, 7400 /NOP |
| 3632 | ISZ WDCT /FINISHED THIS BLOCK? |
| 3633 | JMP LOOPI |
| 3634 | JMS I (WRBUF /YES.. WRITE THE STUFF OUT |
| 3635 | DCA I (BUFREC /SO THAT WRBUF DOESN'T SCREW US UP |
| 3636 | TAD SEGLTH /V3C (REARRANGED) |
| 3637 | SMA SZA /ALL PAGES DONE? |
| 3638 | JMP TWOPG /NO, NEXT! (IF DONE, FALL INTO 'GTSEG') |
| 3639 | ISZ SEGCNT /YES, ANY MORE SEGMENTS |
| 3640 | SKP |
| 3641 | JMP RENEW /RESET CCB POINTER FOR NEXT /I |
| 3642 | CLA CLL CML RTL |
| 3643 | TAD SGSTAD |
| 3644 | DCA SGSTAD |
| 3645 | CLA CLL CML RTL |
| 3646 | TAD SGFDLT |
| 3647 | DCA SGFDLT /POINT TO NEXT CCB ENTRIES |
| 3648 | JMP NEWSEG |
| 3649 | |
| 3650 | GLONK, 0 /HANDLER ENTRY POINT HERE |
| 3651 | WDCT, 0 |
| 3652 | SEGCNT, 0 |
| 3653 | SEGLTH, 0 |
| 3654 | CTLBLK=3400 |
| 3655 | |
| 3656 | SGFDLT, CTLBLK+5 /FIELD AND LENGTH WORD |
| 3657 | SGSTAD, CTLBLK+1 /SEGMENT START ADDRESS |
| 3658 | |
| 3659 | L7740, |
| 3660 | RENEW, 7740 /USED TO CLEAR AC |
| 3661 | L77, 77 /MIGHT OR MIGHT NOT SKIP |
| 3662 | TAD (CTLBLK+1 |
| 3663 | DCA SGSTAD |
| 3664 | TAD (CTLBLK+5 |
| 3665 | DCA SGFDLT |
| 3666 | JMP I (NEWFIL |
| 3667 | PAGE |
| 3668 | \f *CORTAB /ONCE-ONLY CODE |
| 3669 | |
| 3670 | ONCE, 0 /ONCE-ONLY CODE TO CHECK FOR CORRECT MONITOR |
| 3671 | DCA I WRBUF /DON'T CALL AGAIN |
| 3672 | TAD [400 |
| 3673 | TAD K7400 |
| 3674 | SZA CLA |
| 3675 | JMP OLDMON |
| 3676 | TAD [7 |
| 3677 | TAD M7 |
| 3678 | SNA CLA |
| 3679 | JMP I ONCE /THEY AGREE |
| 3680 | OLDMON, TAD KERR |
| 3681 | DCA I NEXFIL |
| 3682 | JMS I PERR /THEY DON'T |
| 3683 | TEXT /INCOMPATIBLE/ /MUST BE AN EVEN # OF CHARS LONG |
| 3684 | CIF CDF 0 |
| 3685 | JMP I K7605 |
| 3686 | K7400, 7400 |
| 3687 | PERR, ERR |
| 3688 | K7605, 7605 |
| 3689 | KERR, ERR&177+5600 |
| 3690 | \f /PAGE 0 - TEMPORARIES AND LITERALS. |
| 3691 | /LOCATIONS 0-3 ARE RESERVED FOR POINTERS TO KEY LOCATIONS |
| 3692 | /IN THE MONITOR (SO THE CUSPS CAN GET AT THESE LOCATIONS) |
| 3693 | |
| 3694 | /LOCATIONS 4-6 ARE RESERVED FOR SYSTEM ODT FIELD 1 BREAKPOINTS |
| 3695 | |
| 3696 | *7 |
| 3697 | OLDT9, 0 /POINTER TO DEVICE HANDLER OF DIRECTORY IN CORE |
| 3698 | |
| 3699 | *15 |
| 3700 | XR1, 0 |
| 3701 | XR2, 0 |
| 3702 | XR, 0 |
| 3703 | *20 /ENTRY TO MONITOR FROM A CALL TO 17700 - |
| 3704 | /CAN BE DESTROYED AFTER IT IS EXECUTED |
| 3705 | MSTART, TAD I T1 |
| 3706 | DCA MACARG |
| 3707 | TAD I [7700 |
| 3708 | DCA I [MONITO |
| 3709 | TAD I [SMCIF |
| 3710 | DCA I T2 /FAKE A CALL TO "MONITO" |
| 3711 | TAD I [MONITO |
| 3712 | RAL |
| 3713 | SNL SMA CLA |
| 3714 | TAD I [SMCIF |
| 3715 | TAD T3 |
| 3716 | SNA CLA /CHECK FOR A CALL FROM 10000-11777 |
| 3717 | JMP I [MERROR /YES - GIVE ERROR IMMEDIATELY |
| 3718 | JMP I T4 /NO - SLIDE INTO MONITOR CODE |
| 3719 | |
| 3720 | *36 /POINTERS TO INTERNAL MONITOR LOCATIONS FOR "BUILD" |
| 3721 | SDNAME /SYSTEM DEVICE NAME TABLE |
| 3722 | SDVHND /DEVICE HANDLER ENTRY TABLE |
| 3723 | \f *40 /LOCATIONS 20-37 RESERVED FOR CUSP SCRATCH SPACE |
| 3724 | USERFG, 1 /MUST BE IN 40 - SEE CD LISTING |
| 3725 | T1, MARG1 /MUST BE AT 41 |
| 3726 | T2, FGETX |
| 3727 | T3, -6213 |
| 3728 | T4, MRENTR |
| 3729 | T5, 0 |
| 3730 | T6, 0 |
| 3731 | T7, 0 |
| 3732 | T8, 0 |
| 3733 | T9, 0 |
| 3734 | NAME, 0 |
| 3735 | NFILES, 0 |
| 3736 | ASFLAG, 0 |
| 3737 | MACARG, 0 |
| 3738 | EPASS, 0 |
| 3739 | MERRNO, 4000 |
| 3740 | MEOXIT, CIF 0 /RETURN FROM ENTER OVERLAY |
| 3741 | JMS I [SHNDLR |
| 3742 | 0210 |
| 3743 | 1000 |
| 3744 | MONTOR+2 /RESTORE LOCS 1000-1377 OF USR |
| 3745 | HLT /HELP! |
| 3746 | JMP I .+1 |
| 3747 | MENTER /RESTART ENTER OPERATION COMPLETELY |
| 3748 | \f $ |
| 3749 | \f |