| 1 | /2 TC08 HANDLER FOR BUILD |
| 2 | / |
| 3 | / |
| 4 | / |
| 5 | / |
| 6 | / |
| 7 | / |
| 8 | / |
| 9 | / |
| 10 | / |
| 11 | /COPYRIGHT (C) 1974,1975 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 MANUAL. |
| 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/1 TC08 HANDLER FOR BUILD |
| 46 | *0 |
| 47 | -10 |
| 48 | DEVICE TC;DEVICE DTA0;4160;10;ZBLOCK 2 |
| 49 | DEVICE TC;DEVICE DTA1;4160;11;ZBLOCK 2 |
| 50 | DEVICE TC;DEVICE DTA2;4160;12;ZBLOCK 2 |
| 51 | DEVICE TC;DEVICE DTA3;4160;13;ZBLOCK 2 |
| 52 | DEVICE TC;DEVICE DTA4;4160;14;ZBLOCK 2 |
| 53 | DEVICE TC;DEVICE DTA5;4160;15;ZBLOCK 2 |
| 54 | DEVICE TC;DEVICE DTA6;4160;16;ZBLOCK 2 |
| 55 | DEVICE TC;DEVICE DTA7;4160;17;ZBLOCK 2 |
| 56 | DTRB=6772 |
| 57 | DTLB=6774 |
| 58 | DTXA=6764 |
| 59 | DTCA=6762 |
| 60 | DTRA=6761 |
| 61 | DTSF=6771 |
| 62 | |
| 63 | TCVERSION="A&77 |
| 64 | |
| 65 | *200 |
| 66 | /DECTAPE HANDLERS(PAGE RELOCATABLE) FOR PS/8 MONITOR |
| 67 | DFUN, 0 |
| 68 | DM203, -203 |
| 69 | DBLOCK, 0 |
| 70 | DBLKCT, 0 |
| 71 | D3, 3 |
| 72 | WC, 7754 |
| 73 | CA, 7755 |
| 74 | DERRCT, TCVERSION |
| 75 | DTA0, ISZ DTANO |
| 76 | DTA1, ISZ DTANO |
| 77 | DTA2, ISZ DTANO |
| 78 | DTA3, ISZ DTANO |
| 79 | DTA4, ISZ DTANO |
| 80 | DTA5, ISZ DTANO |
| 81 | DTA6, ISZ DTANO |
| 82 | DTA7, ISZ DTANO |
| 83 | D400, 400 |
| 84 | CLA CLL CMA RTL |
| 85 | DCA DERRCT /SET TO REPEAT THREE TIMES IN CASE OF ERROR |
| 86 | TAD DTANO |
| 87 | CMA |
| 88 | TAD DTATAD /GENERATE "TAD DTAN" WHERE DTAN IS THE ONE THAT |
| 89 | DCA DTANO /WAS CALLED. |
| 90 | CLA CLL CML RTR |
| 91 | TAD DTANO /ALSO GENERATE "DCA DTAN" SO WE CAN RESTORE IT |
| 92 | DCA DTADCA |
| 93 | RDF |
| 94 | TAD DCDIF0 |
| 95 | DCA DSTOP /STORE CALLING FIELD FOR RETURNING |
| 96 | DTANO, 0 /GET CALLING ADDRESS |
| 97 | DCA DTA /SAVE IT |
| 98 | TAD DTAISZ |
| 99 | DTADCA, 0 /RESTORE ENTRY POINT |
| 100 | DLOC=DTADCA |
| 101 | DTAISZ, ISZ DTANO /BUMP DTANO FOR VARIOUS GROOVY REASONS |
| 102 | /WHICH WILL BE APPARENT LATER |
| 103 | TAD I DTA |
| 104 | DCA DFUN /STORE AWAY FUNCTION WORD FOR FUTURE USE |
| 105 | ISZ DTA |
| 106 | DT7140, CLL CMA /THE "CLL" IS ONLY NECESSARY TO FORM THE 7140 |
| 107 | TAD I DTA |
| 108 | DCA DLOC /BUFFER ADDRESS -1 |
| 109 | ISZ DTA |
| 110 | TAD I DTA |
| 111 | CLL RAL /MULTIPLY BY 2 FOR 256-WORD SIMULATED RECORDS |
| 112 | DCA DBLOCK /DECTAPE BLOCK # |
| 113 | ISZ DTA |
| 114 | DTATRY, TAD WC |
| 115 | DCDIF0, CDF CIF 0 |
| 116 | DCA I CA |
| 117 | TAD DFUN |
| 118 | RAR |
| 119 | CLA CML /COMPLEMENT OF BIT 11 OF DFUN NOW IN THE LINK |
| 120 | TAD DTANO /DTANO = "TAD DTAN+1" |
| 121 | RTR |
| 122 | RTR /THESE TWO ROTATES FORM THE FLLOWING NUMBER |
| 123 | /IN THE AC: YYYF00101000, WHERE YYY =DTAN+1 |
| 124 | /AND F IS THE COMPLEMENT OF DFUN(11) |
| 125 | TAD DT7140 /THE MAGIC STEP - THIS SIMULTANEOUSLY BUMPS DOWN |
| 126 | /THE RECORD NUMBER IN AC(0-2) AND TRANSFORMS |
| 127 | /THE REST OF THE AC TO F10001000 WHICH IS A |
| 128 | /SEARCH IN DIRECTION F(F=1 MEANS BACKWARDS) WITH |
| 129 | /THE MOTION BIT ON. |
| 130 | DTCA DTXA |
| 131 | DTLB /SET DECTAPE FIELD TO 0 FOR SEARCHING |
| 132 | JMP DC+3 /JUMP INTO THE BLOCK SEARCH ROUTINE |
| 133 | DERR, RTL /DECTAPE STATUS REGISTER B IS USUALLY IN THE AC HERE |
| 134 | RAL |
| 135 | D7600, 7600 /GET THE "END OF TAPE" FLAG INTO THE LINK AND CLEAR THE AC |
| 136 | TAD D200 /GET MOTION BIT |
| 137 | DC, SZL /AND, IF LINK IS ON |
| 138 | DTATAD, TAD D400 /REVERSE DIRECTION OF MOTION |
| 139 | DTXA |
| 140 | TAD D200 |
| 141 | KRS |
| 142 | TAD DM203 |
| 143 | SNA CLA |
| 144 | KSF /CHECK FOR ^C TYPED |
| 145 | JMP DTAWT |
| 146 | TAD D7600 /**PROBLEM: LINK IS RANDOM YET MUST BE 0 |
| 147 | DCA DTA /FAKE DTA SO WE GO TO LOC 7600 IN FIELD 0 |
| 148 | JMP DSTOP1 /AFTER STOPPING THE TAPE |
| 149 | DTAWT, DTSF DTRB |
| 150 | JMP .-1 /WAIT FOR SEARCH TO COMPLETE |
| 151 | SPA /HAS AN ERROR OCCURED? |
| 152 | JMP DERR /DO SOMETHING APPROPRIATE |
| 153 | DTRA |
| 154 | RTL |
| 155 | CMA RTL |
| 156 | SNL CLA /WAS MOTIOZ OF TAPE FORWARDS? |
| 157 | TAD D3 /NO, SO ONLY SUCCEED IF WE ARE 3 BLOCKS IN FRONT |
| 158 | /OF TARGET BLOCK |
| 159 | TAD I WC |
| 160 | CMA |
| 161 | TAD DBLOCK |
| 162 | CMA /AFTER THIS OPERATION WE HAVE THE FOLLOWING 4 POSSIBILITIES |
| 163 | /1)AC=0, L=1 /SEARCH COMPLETE |
| 164 | /2)AC=0, L=0 /RIGHT PLACE ON TAPE,WRONG DIRECTION |
| 165 | /3)AC .GT. 0, L=0 /WEVE PASSED THE CORRECT BLOCK |
| 166 | /4)AC .GT. 0, L=1 /WE HAVENT REACHED THE CORRECT BLOCK YET |
| 167 | SZA CLA |
| 168 | JMP DC |
| 169 | SNL |
| 170 | JMP DTATAD /DC+1 |
| 171 | TAD DLOC |
| 172 | DCA I CA /SET THE CURRENT ADDRESS REGISTER TO THE BUFFER -1 |
| 173 | TAD DFUN |
| 174 | DTLB /SET FIELD TO BUFFER FIELD |
| 175 | TAD D7700 |
| 176 | D200, AND DFUN |
| 177 | CLL RAL |
| 178 | DCA DBLKCT /GET UNCOMPLEMENTED WORD COUNT INTO DBLKCT |
| 179 | RAL |
| 180 | IAC |
| 181 | CLL CML RTL |
| 182 | RTL /FORM A 50 IF L=1, A 30 IF L=0 |
| 183 | DL, DTXA /XOR IN 50(WRITE) OR 30(READ) OR 0(CONTINUE PREVIOUS OP) |
| 184 | TAD D7600 |
| 185 | DCA I WC /READ/WRITE 128 WORDS FROM/INTO EACH BLOCK |
| 186 | DTSF DTRB |
| 187 | JMP .-1 |
| 188 | CLL CML /SET ERROR FLAG ON INITIALLY |
| 189 | D7700, SMA CLA |
| 190 | JMP DJ |
| 191 | ISZ DERRCT /ERROR-IS IT THE THIRD? |
| 192 | \f JMP DTATRY /NO-TRY AGAIN |
| 193 | JMP DSTOP /3 ERRORS-STOP TAPE! |
| 194 | DJ, TAD DBLKCT |
| 195 | TAD D7600 |
| 196 | SNA /BUMP WORD COUNT BY -128 AND SEE IF 0 |
| 197 | \f /ALSO REVERSE LINK. |
| 198 | JMP DOVER /YES - DONE |
| 199 | DCA DBLKCT /RESTORE BUMPED WORD COUNT |
| 200 | JMP DL /AND LOOP |
| 201 | DOVER, ISZ DTA /SKIP ERROR RETURN |
| 202 | DSTOP, HLT /RESTORE CALLING FIELD |
| 203 | DSTOP1, TAD D200 /STOP THE TAPE |
| 204 | DTXA |
| 205 | DCA DTANO /INITIALIZE DTANO FOR THE NEXT CALL |
| 206 | RAR /GET ERROR CODE FROM LINK INTO AC0 |
| 207 | JMP I DTA /AND EXIT |
| 208 | DTA, 0 |
| 209 | $ |
| 210 | \f |