/P?S/8 TC01/TC08 DECTAPE SYSTEM HANDLER PAL8-VB0 08-APR-87 PAGE 1 1 /P?S/8 TC01/TC08 DECTAPE SYSTEM HANDLER 2 3 / LAST EDIT: 21-NOV-1986 06:00:00 CJL 4 5 / MUST BE ASSEMBLED WITH '/J' SWITCH SET. 6 7 / P?S/8 HANDLER FOR TC01/TC08/BE01 OR ANY OTHER COMPATIBLE DECTAPE CONTROL 8 / (C. O. L., ETC.) WITH UP TO EIGHT DECTAPE DRIVE UNITS TU55/TU56/BE03 9 / (C. O. L., ETC.). 10 11 / AUTOMATICALLY REMEMBERS PROPER INITIAL SEARCH DIRECTION. 12 13 / CAN BE BOOTSTRAPPED TO ANY UNIT. 14 15 / HALTS/RETRIES ON ANY ERROR WHILE SEARCHING OR TRANSFERRING EXCEPT 16 / END ERROR (WHICH CAUSES A TURN-AROUND). /P?S/8 TC01/TC08 DECTAPE SYSTEM HANDLER PAL8-VB0 08-APR-87 PAGE 4 102 / MULTIPLE DRIVE BOOTSTRAP. 103 104 NOPUNCH /TURN OFF BINARY OUTPUT 105 106 7600 *SBOOT /BOOTSTRAP LOADING ADDRESS 107 108 007600 7604 SBOOT, LAS /GET UNIT FROM SWITCHES 109 007601 0214 AND SRWAIT/(7000) /JUST UNIT BITS 110 007602 1213 TAD SR600/(600) /GET REWIND VALUE 111 007603 4214 JMS SRWAIT /WAIT FOR END ZONE 112 007604 6774 DTLB /ENSURE FIELD 0 TRANSFER 113 007605 3354 DCA SWC /CLEAR WORD COUNT 114 007606 1221 TAD SR7577/(SBOOT-1)/SETUP THE 115 007607 3355 DCA SCAA /CURRENT ADDRESS 116 007610 6761 DTRA /GET CURRENT "A" REGISTER CONTENTS 117 007611 1222 TAD SR7620/(220-400)/GET READ VALUE 118 007612 4214 JMS SRWAIT /WAIT FOR TRANSFER 119 007613 0600 SR600, 600 /CONSTANT 0600 120 121 007614 7000 SRWAIT, 7000 /INITIALIZED FOR USE AS A CONSTANT 122 007615 6766 DTLA /LOAD "A" REGISTER 123 007616 6771 DTSF /FLAG UP? 124 007617 5216 JMP .-1 /NO, WAIT FOR IT 125 007620 5614 JMP I SRWAIT /YES, RETURN 126 127 007621 7577 SR7577, SBOOT-1 /CONSTANT 7577 128 007622 7620 SR7620, 220-400 /CONSTANT 7620 129 130 / SHORTEST BOOTSTRAP. 131 132 7615 *7615 /OVER WAIT AREA 133 134 007615 7604 LAS /GET SWITCHES 135 007616 6766 DTLA /LOAD "A" REGISTER 136 007617 5217 JMP . /WAIT FOR TRANSFER 137 138 7754 *7754 /AT WORD COUNT AREA 139 140 007754 7577 SWC, SBOOT-1 /ENSURE A GOOD VALUE 141 007755 7577 SCAA, SBOOT-1 /THIS MUST BE CORRECT 142 143 / EITHER MOUNT TAPE IN END ZONE MANUALLY OR START AT 7615 WITH CONSOLE SWITCHES 144 / CONTAINING 0600+(UNIT IN BITS[0-2]). WAIT FOR END ERROR. 145 146 / AFTER POSITIONING THE TAPE IN END ZONE, START AT 7615 WITH CONSOLE SWITCHES 147 / CONTAINING 0220+(UNIT IN BITS[0-2]). MONITOR WILL COME UP. 148 149 / THE WORD COUNT MUST BE SET TO ANYTHING OTHER THAN 7624-7777. SINCE THE CURRENT 150 / ADDRESS MUST BE SET TO 7577, AND THIS IS AN ACCEPTABLE VALUE FOR THE WORD 151 / COUNT, DEPOSITING THAT NUMBER TWICE IS LESS CONSOLE MANIPULATION THAN ANY 152 / OTHER METHOD. 153 154 ENPUNCH /RESTORE BINARY OUTPUT /P?S/8 TC01/TC08 DECTAPE SYSTEM HANDLER PAL8-VB0 08-APR-87 PAGE 10 371 / P?S/8 SYSTEM I/O ROUTINE LOADER. 372 373 / CORE IMAGE OF A BINARY FORMAT FILE WHICH WILL BE WRITTEN OUT TO THE /I BLOCK. 374 375 / THE FOLLOWING PAGE OF CODE IS AN EXAMPLE OF A P?S/8 BINARY FORMAT FILE. 376 / IT WILL BE WRITTEN OUT AT SYSGEN TIME AS A CORE IMAGE OF A "FILE" TO BE 377 / USED LATER AS THE LAST LOADED "FILE" WHEN INVOKING THE '/I' OPTION OF THE 378 / SLURP LOADER. AT RUN TIME, IT WILL BE LOADED OVER AND NEXT TO THE SLURP 379 / LOADER (BY THE SLURP LOADER!), CAUSING THE SYSTEM I/O ROUTINES TO BE RELOADED; 380 / THE FINAL EFFECT IS AS IF THE VIRTUAL LOADER (/V) HAD BEEN USED, BUT WITHOUT 381 / THE OVERHEAD AND WRITING (THE SLURP LOADER AND /I CODING CAN BE USED WITH 382 / WRITE-LOCKED DEVICES.) 383 384 / THE ONLY RESTRICTION ON USE OF THE /I OPTION IS THAT IT IS PASSED AS A FILE 385 / ARGUMENT TO THE LOADER, AND THUS LIMITS THE LOADER TO ONLY SIXTEEN FILES 386 / MAXIMUM INSTEAD OF THE NORMAL SEVENTEEN. BY USING THE /I OPTION, THE USER 387 / CAN MAINTAIN DEVICE INDEPENDENCE, YET TAKE ADVANTAGE OF THE BENEFITS OF 388 / THE SLURP LOADER OVER THE VIRTUAL (/V) LOADER. 389 390 / P?S/8 BINARY FORMAT AND CORE IMAGE FORMAT ARE RELATIVELY SIMILAR, BUT THE 391 / DIFFERENCES WILL BE DESCRIBED. 392 393 / P?S/8 BINARY FORMAT DESCRIPTION. 394 395 / THE P?S/8 BINARY FILE FORMAT CONSISTS OF A SEQUENTIAL LIST OF BLOCKS, EACH 396 / BLOCK CONTAINING 128 LOGICAL WORDS. THE WORDS BREAKDOWN FURTHER INTO EIGHTEEN 397 / GROUPS OF SEVEN WORDS PLUS TWO WASTE WORDS. IF ANY PHYSICAL ADDITIONAL WORDS 398 / EXIST, IT IS THE LOADER'S RESPONSIBILITY TO PROPERLY IGNORE THEM, JUST AS 399 / IN SEVERAL SYSTEM HANDLERS. 400 401 / EACH GROUP OF SEVEN WORDS CONSISTS OF A CONTROL WORD AND SIX DATA WORDS. 402 / THE CONTROL WORD CONSISTS OF SIX BIT PAIRS EACH OF WHICH CONTROLS THE 403 / CORRESPONDING FOLLOWING DATA WORDS. THE ORDERING IS LEFT TO RIGHT, I.E. 404 / THE HIGH-ORDER TWO BITS OF THE CONTROL WORD CONTROL THE DATA WORD IMMEDIATELY 405 / FOLLOWING THE CONTROL WORD; THE LOW-ORDER TWO BITS OF THE CONTROL WORD CONTROL 406 / THE SIXTH DATA WORD FOLLOWING THE CONTROL WORD. SINCE EACH GROUP (AND 407 / THEREFORE BLOCK) IS AUTONOMOUS EXCEPT FOR IMPLIED ORIGIN AND FIELD, ANY 408 / SINGLE BLOCK CAN BE LOADED INDEPENDENTLY. 409 410 / THIS /I BLOCK CONFORMS TO THIS CONVENTION, AND WILL BE TREATED AS A ONE 411 / BLOCK LONG "FILE" COMPLETE WITH . 412 413 / ALL ACTUAL DATA WORDS ARE IDENTICAL TO THEIR CORE IMAGE COUNTERPARTS, HOWEVER, 414 / NOT ALL WORDS IN A GROUP ARE ACTUAL DATA WORDS. /P?S/8 TC01/TC08 DECTAPE SYSTEM HANDLER PAL8-VB0 08-APR-87 PAGE 11 415 / BIT CONVENTION FOR CONTROL WORDS. 416 417 / EACH OF THE CONTROL WORD'S BIT PAIRS CONTROLS THE CORRESPONDING DATA WORD 418 / IN THE FOLLOWING MANNER: 419 420 / 00 ACTUAL DATA WORD; THE CORRESPONDING WORD IS AN ACTUAL DATA WORD 421 / TO BE LOADED ACCORDING TO THE CURRENT ORIGIN ADDRESS; LOAD IT AND 422 / ADVANCE THE ORIGIN ADDRESS BY ONE. 423 / 01 END OF FILE; IGNORE CORRESPONDING WORD (AND REST OF FILE!). 424 / 10 ORIGIN SETTING; SET CURRENT ORIGIN ADDRESS TO THE VALUE OF THE 425 / CORRESPONDING DATA WORD. 426 / 11 FIELD SETTING; THE CORRESPONDING WORD IS A CDF INSTRUCTION TO THE 427 / NEW FIELD; EXECUTE IT WHEN LOADING DATA WORDS INDIRECTLY THROUGH 428 / THE CURRENT ORIGIN ADDRESS. THIS ALLOWS LOADING TO OCCUR IN FIELDS 429 / 0-7. 430 431 / TYPICAL P?S/8 BINARY FORMAT FILES ARE CREATED BY EITHER AN ASSEMBLER PROGRAM 432 / OR THE BINARY UTILITIES (BIN, BSAVE, ETC.). SEVERAL SYSTEM PROGRAMS CHECK 433 / BINARY FILE FORMAT VALIDITY BY LOOKING FOR INITIAL DATA OF AN ORIGIN TO 434 / 0200, THUS MAKING THE CONTROL WORD OF THE FORM 10 XX XX XX XX XX, AND THE 435 / FIRST DATA WORD 0200. 436 437 / THE /I "FILE" WAS NOT CREATED DIRECTLY BY ANY ASSEMBLER, AND THIS LACKS THE 438 / (UNNECESSARY) "*200" CONVENTION OF A DEFAULT ORIGIN. ONLY THE SLURP LOADER 439 / WILL EVER LOOK AT THE /I "FILE", AND THE LOADER DOESN'T VALIDATE THE FILE 440 / FORMAT. 441 442 / A TYPICAL BINARY FILE IS SLIGHTLY GREATER THAN 7/6 OF THE EQUIVALENT CORE 443 / IMAGE FILE SIZE. 444 445 / SINCE NO CHECKSUM SCHEME IS USED IN THE FILE FORMAT, THE USER CAN PATCH 446 / FREELY ANY BINARY FILE. THIS IS USEFUL WHEN MODIFYING OLD PAPER-TAPE BINARY 447 / FILES WHICH LACK FIELD SETTINGS, ETC. WHEN ATTEMPTING TO LOAD THEM INTO 448 / EXTENDED MEMORY FIELDS THEY WERE NOT INTENDED FOR, ETC. 449 450 / THE /I CODE COULD BE IMPLEMENTED BY A USER PROGRAM, BUT WOULD THEN NOT BE 451 / DEVICE INDEPENDENT. 452 453 / SPECIAL NOTE ON SELF-STARTING. 454 455 / SINCE THE USER CAN DIRECTLY OVERLAY THE LOADER (INDEED THE /I OPTION USES 456 / THIS VERY METHOD!), IT IS POSSIBLE TO CREATE A "SELF-STARTING" PROGRAM BY 457 / SELECTIVE OVERLAY OF THE STARTUP LOCATIONS: 458 459 / BCIF (07746) STARTING FIELD AS A CIF CDF INSTRUCTION. 460 / SPARM (07756) STARTING ADDRESS IN THE STARTING FIELD. 461 462 / USER LOADING OF THESE LOCATIONS WILL ALWAYS OVERRIDE ANY AND ALL OTHER METHODS 463 / (DEFAULT VALUES, DEFAULT VALUES WITH /I IN EFFECT, "GET" VALUES, EXPLICIT 464 / COMMAND OPTION SWITCHES, EQUALS PARAMETERS, PRIOR USER LOADING OF THESE 465 / SAME LOCATIONS IN AN EARLIER PASSED BINARY FILE, ETC.). 466 467 / N. B. THIS SELF-STARTING ABILITY IS TOTALLY IGNORED WHEN USING THE VIRTUAL 468 / (/V) LOADER; SEE "BIN" FOR A DISCUSSION OF THE DISPOSITION OF USER LOADING 469 / INTO 07600-07777, ETC. WHEN THE VIRTUAL LOADER IS IN EFFECT. /P?S/8 TC01/TC08 DECTAPE SYSTEM HANDLER PAL8-VB0 08-APR-87 PAGE 20 768 / ERROR BLURBS. 769 770 011236 4040 MRK, TEXT " MARK" /MARK ERROR BLURB 771 011237 1501 772 011240 2213 773 011241 4040 END, TEXT " END" /END ERROR BLURB 774 011242 4005 775 011243 1604 776 011244 2305 SELECT, TEXT "SELECT" /SELECT ERROR BLURB 777 011245 1405 778 011246 0324 779 011247 2001 PAR, TEXT "PARITY" /PARITY ERROR BLURB 780 011250 2211 781 011251 2431 782 011252 2411 TIM, TEXT "TIMING" /TIMING ERROR BLURB 783 011253 1511 784 011254 1607 785 011255 4040 TIMOUT, TEXT " WAIT" /TIME-OUT WAIT ERROR BLURB 786 011256 2701 787 011257 1124 788 789 0003 BLBLEN= .-TIMOUT /LENGTH OF ERROR BLURBS 790 791 011375 7657 792 011376 0014 793 011377 0003 794 1400 PAGE