/ P?S/8 TC12 SYSTEM HANDLER PAL8-VB0 08-APR-87 PAGE 1 1 / P?S/8 TC12 SYSTEM HANDLER 2 3 / LAST EDIT: 17-DEC-1986 23:00:00 CJL 4 5 / MUST BE ASSEMBLED WITH '/J' SWITCH SET. 6 7 / P?S/8 HANDLER FOR TC12 LINCTAPE ON PDP-12. 8 9 / CAN BE BOOTSTRAPPED TO ANY UNIT. 10 11 / SUPPORTS EIGHT UNITS (0-7). 12 13 / SUPPORTS PARITY ERROR DETECTION. 14 15 / OVERLAY SUPPORTS DRIVE NOT READY AND WRITE LOCK DETECTION. 16 17 / WAITS IN PDP-8 MODE AND CAN BE INTERRUPTED. 18 19 / SUPPORTS 128 OR 129 WORDS/BLOCK LINCTAPES. 20 21 / SUPPORTS STANDARD CONSOLE MANUAL BOOTSTRAP FOR DRIVE ZERO. 22 23 / RESTRICTION: USES BUFFERED SLURP LOADER (IF NOT /V) WHICH RESTRICTS THE 24 / LOADING OF 007400-007577. 25 26 / P?S/8 MONITOR GENERATION RESTRICTIONS GENERALLY REQUIRE BTUNIT=0 FOR THE 27 / INITIAL MONITOR. HOWEVER, THE OTHER UNITS CAN BE SELECTED FOR ASSEMBLY 28 / PURPOSES AS THE ONLY CODE AFFECTED IS THE COLD BOOTSTRAP. 29 30 / CONDITIONAL ASSEMBLY DEFINITIONS. 31 32 IFNDEF BTUNIT /GENERATE A UNIT ZERO BOOTSTRAP / P?S/8 TC12 SYSTEM HANDLER PAL8-VB0 08-APR-87 PAGE 4 125 / DRIVE ZERO BOOTSTRAP. 126 127 NOPUNCH /TURN OFF BINARY OUTPUT 128 129 4016 *4016 /EQUIVALENT OF CONSOLE OPERATION 130 131 004016 0700 RDC; 0000 /READ IN BLOCK ZERO INTO 004000 132 004017 0000 133 134 / SYSTEM WILL START HERE. 135 136 / THE ABOVE BOOTSTRAP IS EXECUTED ON THE PDP-12 CONSOLE SWITCHES BY: 137 138 / 0700 0000 /DO RDC; 0 ON THE SWITCHES 139 / START 0020 /START IT UP AT 4020 140 141 / MULTIPLE DRIVE BOOTSTRAP. 142 143 4013 *4013 /EQUIVALENT OF CONSOLE OPERATION 144 145 004013 1020 LDA+20; BTUNIT%2/GET EXTENDED UNIT BITS OF DESIRED UNIT 146 004014 0000 147 004015 0001 AXO /LOAD EXTENDED UNIT BITS 148 004016 0700 BTUNIT&1^10+RDC;0000 /RDC; 0 OR RDC U; 0 149 004017 0000 150 151 / SYSTEM WILL START HERE. 152 153 ENPUNCH /RESTORE BINARY OUTPUT / P?S/8 TC12 SYSTEM HANDLER PAL8-VB0 08-APR-87 PAGE 10 378 / P?S/8 SYSTEM I/O ROUTINE LOADER. 379 380 / CORE IMAGE OF A BINARY FORMAT FILE WHICH WILL BE WRITTEN OUT TO THE /I BLOCK. 381 382 / THE FOLLOWING PAGE OF CODE IS AN EXAMPLE OF A P?S/8 BINARY FORMAT FILE. 383 / IT WILL BE WRITTEN OUT AT SYSGEN TIME AS A CORE IMAGE OF A "FILE" TO BE 384 / USED LATER AS THE LAST LOADED "FILE" WHEN INVOKING THE '/I' OPTION OF THE 385 / SLURP LOADER. AT RUN TIME, IT WILL BE LOADED OVER AND NEXT TO THE SLURP 386 / LOADER (BY THE SLURP LOADER!), CAUSING THE SYSTEM I/O ROUTINES TO BE RELOADED; 387 / THE FINAL EFFECT IS AS IF THE VIRTUAL LOADER (/V) HAD BEEN USED, BUT WITHOUT 388 / THE OVERHEAD AND WRITING (THE SLURP LOADER AND /I CODING CAN BE USED WITH 389 / WRITE-LOCKED DEVICES.) 390 391 / THE ONLY RESTRICTION ON USE OF THE /I OPTION IS THAT IT IS PASSED AS A FILE 392 / ARGUMENT TO THE LOADER, AND THUS LIMITS THE LOADER TO ONLY SIXTEEN FILES 393 / MAXIMUM INSTEAD OF THE NORMAL SEVENTEEN. BY USING THE /I OPTION, THE USER 394 / CAN MAINTAIN DEVICE INDEPENDENCE, YET TAKE ADVANTAGE OF THE BENEFITS OF 395 / THE SLURP LOADER OVER THE VIRTUAL (/V) LOADER. 396 397 / P?S/8 BINARY FORMAT AND CORE IMAGE FORMAT ARE RELATIVELY SIMILAR, BUT THE 398 / DIFFERENCES WILL BE DESCRIBED. 399 400 / P?S/8 BINARY FORMAT DESCRIPTION. 401 402 / THE P?S/8 BINARY FILE FORMAT CONSISTS OF A SEQUENTIAL LIST OF BLOCKS, EACH 403 / BLOCK CONTAINING 128 LOGICAL WORDS. THE WORDS BREAKDOWN FURTHER INTO EIGHTEEN 404 / GROUPS OF SEVEN WORDS PLUS TWO WASTE WORDS. IF ANY PHYSICAL ADDITIONAL WORDS 405 / EXIST, IT IS THE LOADER'S RESPONSIBILITY TO PROPERLY IGNORE THEM, JUST AS 406 / IN SEVERAL SYSTEM HANDLERS. 407 408 / EACH GROUP OF SEVEN WORDS CONSISTS OF A CONTROL WORD AND SIX DATA WORDS. 409 / THE CONTROL WORD CONSISTS OF SIX BIT PAIRS EACH OF WHICH CONTROLS THE 410 / CORRESPONDING FOLLOWING DATA WORDS. THE ORDERING IS LEFT TO RIGHT, I.E. 411 / THE HIGH-ORDER TWO BITS OF THE CONTROL WORD CONTROL THE DATA WORD IMMEDIATELY 412 / FOLLOWING THE CONTROL WORD; THE LOW-ORDER TWO BITS OF THE CONTROL WORD CONTROL 413 / THE SIXTH DATA WORD FOLLOWING THE CONTROL WORD. SINCE EACH GROUP (AND 414 / THEREFORE BLOCK) IS AUTONOMOUS EXCEPT FOR IMPLIED ORIGIN AND FIELD, ANY 415 / SINGLE BLOCK CAN BE LOADED INDEPENDENTLY. 416 417 / THIS /I BLOCK CONFORMS TO THIS CONVENTION, AND WILL BE TREATED AS A ONE 418 / BLOCK LONG "FILE" COMPLETE WITH . 419 420 / ALL ACTUAL DATA WORDS ARE IDENTICAL TO THEIR CORE IMAGE COUNTERPARTS, HOWEVER, 421 / NOT ALL WORDS IN A GROUP ARE ACTUAL DATA WORDS. / P?S/8 TC12 SYSTEM HANDLER PAL8-VB0 08-APR-87 PAGE 11 422 / BIT CONVENTION FOR CONTROL WORDS. 423 424 / EACH OF THE CONTROL WORD'S BIT PAIRS CONTROLS THE CORRESPONDING DATA WORD 425 / IN THE FOLLOWING MANNER: 426 427 / 00 ACTUAL DATA WORD; THE CORRESPONDING WORD IS AN ACTUAL DATA WORD 428 / TO BE LOADED ACCORDING TO THE CURRENT ORIGIN ADDRESS; LOAD IT AND 429 / ADVANCE THE ORIGIN ADDRESS BY ONE. 430 / 01 END OF FILE; IGNORE CORRESPONDING WORD (AND REST OF FILE!). 431 / 10 ORIGIN SETTING; SET CURRENT ORIGIN ADDRESS TO THE VALUE OF THE 432 / CORRESPONDING DATA WORD. 433 / 11 FIELD SETTING; THE CORRESPONDING WORD IS A CDF INSTRUCTION TO THE 434 / NEW FIELD; EXECUTE IT WHEN LOADING DATA WORDS INDIRECTLY THROUGH 435 / THE CURRENT ORIGIN ADDRESS. THIS ALLOWS LOADING TO OCCUR IN FIELDS 436 / 0-7. 437 438 / TYPICAL P?S/8 BINARY FORMAT FILES ARE CREATED BY EITHER AN ASSEMBLER PROGRAM 439 / OR THE BINARY UTILITIES (BIN, BSAVE, ETC.). SEVERAL SYSTEM PROGRAMS CHECK 440 / BINARY FILE FORMAT VALIDITY BY LOOKING FOR INITIAL DATA OF AN ORIGIN TO 441 / 0200, THUS MAKING THE CONTROL WORD OF THE FORM 10 XX XX XX XX XX, AND THE 442 / FIRST DATA WORD 0200. 443 444 / THE /I "FILE" WAS NOT CREATED DIRECTLY BY ANY ASSEMBLER, AND THIS LACKS THE 445 / (UNNECESSARY) "*200" CONVENTION OF A DEFAULT ORIGIN. ONLY THE SLURP LOADER 446 / WILL EVER LOOK AT THE /I "FILE", AND THE LOADER DOESN'T VALIDATE THE FILE 447 / FORMAT. 448 449 / A TYPICAL BINARY FILE IS SLIGHTLY GREATER THAN 7/6 OF THE EQUIVALENT CORE 450 / IMAGE FILE SIZE. 451 452 / SINCE NO CHECKSUM SCHEME IS USED IN THE FILE FORMAT, THE USER CAN PATCH 453 / FREELY ANY BINARY FILE. THIS IS USEFUL WHEN MODIFYING OLD PAPER-TAPE BINARY 454 / FILES WHICH LACK FIELD SETTINGS, ETC. WHEN ATTEMPTING TO LOAD THEM INTO 455 / EXTENDED MEMORY FIELDS THEY WERE NOT INTENDED FOR, ETC. 456 457 / THE /I CODE COULD BE IMPLEMENTED BY A USER PROGRAM, BUT WOULD THEN NOT BE 458 / DEVICE INDEPENDENT. 459 460 / SPECIAL NOTE ON SELF-STARTING. 461 462 / SINCE THE USER CAN DIRECTLY OVERLAY THE LOADER (INDEED THE /I OPTION USES 463 / THIS VERY METHOD!), IT IS POSSIBLE TO CREATE A "SELF-STARTING" PROGRAM BY 464 / SELECTIVE OVERLAY OF THE STARTUP LOCATIONS: 465 466 / BCIF (07746) STARTING FIELD AS A CIF CDF INSTRUCTION. 467 / SPARM (07756) STARTING ADDRESS IN THE STARTING FIELD. 468 469 / USER LOADING OF THESE LOCATIONS WILL ALWAYS OVERRIDE ANY AND ALL OTHER METHODS 470 / (DEFAULT VALUES, DEFAULT VALUES WITH /I IN EFFECT, "GET" VALUES, EXPLICIT 471 / COMMAND OPTION SWITCHES, EQUALS PARAMETERS, PRIOR USER LOADING OF THESE 472 / SAME LOCATIONS IN AN EARLIER PASSED BINARY FILE, ETC.). 473 474 / N. B. THIS SELF-STARTING ABILITY IS TOTALLY IGNORED WHEN USING THE VIRTUAL 475 / (/V) LOADER; SEE "BIN" FOR A DISCUSSION OF THE DISPOSITION OF USER LOADING 476 / INTO 07600-07777, ETC. WHEN THE VIRTUAL LOADER IS IN EFFECT. / P?S/8 TC12 SYSTEM HANDLER PAL8-VB0 08-APR-87 PAGE 19 782 / ERRORS COME HERE. 783 784 011200 7106 TRPERR, CLL RTL /*4 785 011201 3077 DCA ESTATUS /SAVE RELATIVE ERROR ADDRESS 786 011202 4203 JMS ERLOC8 /FIND OURSELVES 787 011203 0000 ERLOC8, .-. /OUR ADDRESS STORED HERE 788 011204 1203 TAD ERLOC8 /GET OUR ADDRESS 789 011205 1377 TAD (PAR-ERLOC8) /ADJUST TO BLURB ADDRESS 790 011206 1077 TAD ESTATUS /NOW HAVE PROPER BLURB ADDRESS 791 011207 4422 JMS I MOVBLB /MOVE IT INTO ERROR MESSAGE 792 011210 7774 -BLBLEN /PASSED BLURB LENGTH IN WORDS 793 011211 4423 JMS I FILBLB /FILL IN I/O PARTICULARS 794 011212 4424 JMS I DSPBLB /DISPLAY BLURB AND POSSIBLY COME BACK 795 011213 6202 TCIF, CIF 00 /GOTO MONITOR FIELD 796 011214 1200 TAD TRPERR /GET ERROR CODE 797 011215 7650 SNA CLA /SKIP IF DRIVE PROBLEM 798 011216 5776 JMP I (SNEXT) /JUMP IF READ PARITY ERROR 799 011217 1020 TAD CALADR /GET USER'S ADDRESS 800 011220 3736 DCA I TSYSIO/(SYSIO) /RESTORE IT 801 011221 1021 TAD CALFLD /GET CALLING CDF INSTRUCTION 802 011222 3223 DCA .+1 /STORE IN-LINE 803 011223 0000 .-. /GOTO CALLING FIELD 804 011224 5775 JMP I (SYSRETRY) /TRY, TRY AGAIN 805 806 / ERROR BLURBS. 807 808 011225 4040 PAR, TEXT " PARITY" /PARITY ERROR BLURB 809 011226 2001 810 011227 2211 811 011230 2431 812 011231 4020 WRILOCK,TEXT " PROTECT" /WRITE-PROTECT ERROR BLURB 813 011232 2217 814 011233 2405 815 011234 0324 816 011235 4040 SEL, TEXT " SELECT" /DRIVE NOT READY (SELECT) ERROR BLURB 817 011236 2305 818 011237 1405 819 011240 0324 820 011241 2411 TIM, TEXT "TIME OUT" /TIME-OUT ERROR BLURB 821 011242 1505 822 011243 4017 823 011244 2524 824 825 0004 BLBLEN= .-TIM /LENGTH OF ERROR BLURBS