From 3dfb351d14ea3e43ac7f26bc6efe84257f6089e7 Mon Sep 17 00:00:00 2001 From: "Living Computers: Museum+Labs" Date: Fri, 22 Dec 2017 10:38:12 -0800 Subject: [PATCH] Delete dump-old.lst --- DumpDT18/dump-old.lst | 854 ------------------------------------------ 1 file changed, 854 deletions(-) delete mode 100644 DumpDT18/dump-old.lst diff --git a/DumpDT18/dump-old.lst b/DumpDT18/dump-old.lst deleted file mode 100644 index f72ef12..0000000 --- a/DumpDT18/dump-old.lst +++ /dev/null @@ -1,854 +0,0 @@ - - - - / TD8E 18-bit DECtape DUMP Program. Based on DUMPREST code fro Page 1 - - - 1 / TD8E 18-bit DECtape DUMP Program. Based on DUMPREST code from D. Gesswein - 2 / (see ftp://ftp.pdp8online.com/software/dumprest). - 3 / Modified for 18-bit DECtape w/standard checksum imaging by J. Dersch - 4 / - 5 / This program will send a DECtape image out the console port. - 6 / The format of the data sent is 0xff (0377) or 0xfd if read error - 7 / followed by 384 12-bit words (256 18-bit words) of data for each block. - 8 / After the last block a 0xfe (0376) is sent - 9 / with a two byte checksum, low 8 bits first then upper 4. - 10 / The words in a block are sent as three bytes for each 2 words. - 11 / 1 = low 8 bits first word - 12 / 2 = upper 4 bits first and lower 4 bits second - 13 / 3 = upper 8 bits second word - 14 / - 15 / The program (PC) receiving the data should be started before this program. - 16 / - 17 / To run, start at 0200. - 18 / SR 11 should be drive, only 0 and 1 supported without reassembling - 19 / SR 6-8 should be maximum memory field in computer, needs 8k minimum - 20 / - 21 / The receiving program should be running first. - 22 / At normal exit hitting cont will restart the program. - 23 / - 24 / Should halt at label finish (140) with number of recoverable errors in AC - 25 / The current block being read will be displayed in the AC - 26 / while running. - 27 / - 28 / The PC program will print out the bad location if an error occurs. - 29 / - 30 / We will retry each read up to four times on error. - 31 / - 32 / This transfers the standard 256 word by 578 blocks used by 18-bit DEC hardware, - 33 / using standard checksums (as used by the PDP-9 and later machines). - 34 / It will read as many blocks are present up to the forward end-zone, so it will - 35 / handle tapes that vary from the standard 1102(8) block length. - 36 / - 37 0030 INAD=030 / Address of serial input, 30 for console - 38 6030 KCF2=6000 INAD - 39 6031 KSF2=6001 INAD - 40 6032 KCC2=6002 INAD - 41 6034 KRS2=6004 INAD - 42 6035 KIE2=6005 INAD - 43 6036 KRB2=6006 INAD - 44 - 45 0040 OUTAD=040 / Address of serial output, 40 for console - 46 6040 TFL2=6000 OUTAD - 47 6041 TSF2=6001 OUTAD - 48 6042 TCF2=6002 OUTAD - 49 6044 TPC2=6004 OUTAD - 50 6045 TSK2=6005 OUTAD - - - - / TD8E 18-bit DECtape DUMP Program. Based on DUMPREST code fro Page 2 - - - 51 6046 TLS2=6006 OUTAD - 52 - 53 /2 TD8E INITIALIZER PROGRAM, V7A - 54 / - 55 /COPYRIGHT (C) 1975, 1977 - 56 /DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. - 57 / - 58 / - 59 / - 60 /THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A - 61 /SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE INCLU- - 62 /SION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, OR ANT OTHER - 63 /COPIES THEREOF, MAY NOT BR PROVIDED OR OTHERWISE MADE AVAILABLE - 64 /TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO - 65 /AGREES TO THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE - 66 /SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC. - 67 / - 68 / - 69 /THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT - 70 /NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL - 71 /EQUIPMRNT COROPATION. - 72 / - 73 /DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS - 74 /SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. - 75 / - 76 / - 77 / - 78 / - 79 / - 80 / - 81 - 82 /DECEMBER 21, 1973 GB/RL/EF/SR - 83 - 84 /ABSTRACT-- - 85 / THE ROUTINE DESCRIBED AND LISTED HERE IS A GENERAL - 86 /DATA HANDLER FOR THE TD8E DECTAPE SYSTEM. THE ROUTINE - 87 /CONTAINS SEARCH, READ, AND WRITE FUNCTIONS IN A FORMAT - 88 /WHICH IS COMPATIBLE WITH OS/8 DEVICE HANDLER CALLING - 89 /SEQUENCES. - 90 - 91 /FIXES SINCE FIELD-TEST RELEASE: - 92 - 93 /1. FIXED BUG RE CLA ON RETRY AFTER ERROR - 94 /2. ALLOWED FINAL BOOTSTRAP TO BE INTO A WRITE-LOCKED DEVICE - 95 - 96 /OS/8 V3D CHANGES: - 97 - 98 /3. FIXED BUG RE TD8E BUILD (V6B PATCH) - 99 - 100 /THIS ROUTINE CAN BE RE-EDITED AND ASSEMBLED TO PRODUCE - - - - / TD8E 18-bit DECtape DUMP Program. Based on DUMPREST code fro Page 3 - - - 101 /VARIATIONS ON THE BASIC TD8E SYSTEM. ASSEMBLY PARAMETERS - 102 /CONTROL: - 103 /A) WHAT DRIVES (UNITS 0-7) WILL BE USED - 104 /B) THE ORIGIN OF THE TWO PAGE ROUTINE - 105 /C) WHAT MEMORY FIELD THE ROUTINE WILL RUN IN - 106 /D) THE SIZE OF THE DECTAPE BLOCK TO BE READ/WRITTEN - 107 - 108 /FOLLOWING ARE THE PARAMETERS SET UP FOR THE STANDARD - 109 /DEC VERSION OF THIS ROUTINE: - 110 - 111 0010 DRIVE=10 /UNITS 0 AND 1 SELECTED - 112 0600 ORIGIN=600 /ENTER AT ORIGIN, ORIGIN+4 - 113 0000 AFIELD=0 /INITIAL FIELD SETTING - 114 0000 MFIELD=00 /AFIELD*10=MFIELD - 115 0600 WDSBLK=600 /384 12-BIT WORDS PER BLOCK (256 18-BIT DATA WORDS) - 116 - 117 /THE USE OF THE PARAMETERS IS AS FOLLOWS: - 118 - 119 / DRIVE: DRIVE DETERMINES WHICH UNITS WILL BE SELECTED - 120 / DRIVE=10 IMPLIES UNITS 0 &1 - 121 / DRIVE=20 IMPLIES UNITS 2&3 - 122 / DRIVE=30 IMPLIES UNITS 4&5 - 123 / DRIVE=40 IMPLIES UNITS 6&7 - 124 - 125 /ORIGIN: ALTERING ORIGIN CAUSES ASSEMBLY IN A DIFFERENT - 126 / MEMORY LOCATION. WHEN CHANGING ORIGIN KEEP IN MIND - 127 /THAT THIS IS A TWO PAGE ROUTINE. - 128 - 129 /AFIELD: AFIELD DETERMINES THE INITIAL FIELD SETTING FOR THE - 130 / LOADER. PERMISSIBLE VALUES FOR AFIELD ARE 0 TO 7. - 131 - 132 /MFIELD: MFIELD IS USED IN A CIF CDF MFIELD INSTRUCTION. - 133 / THE VALUE INSERTED FOR MFIELD SHOULD BE 10(8) TIMES - 134 / THE VALUE FOR AFIELD. THE PERMISSIBLE VALUES ARE 00-70. - 135 - 136 /WDSBLK: WDSBLK GOVERNS HOW MANY WORDS THE ROUTINE THINKS ARE - 137 / IN A DECTAPE BLOCK. THE STANDARD VALUE IS 201(8) OR - 138 / 128 DECIMAL. NOTE THAT THE FUNCTION WORD BIT 10 CAN - 139 / 129 DECIMAL ??? (DJG) - 140 / BE USED TO SUBTRACT ONE FROM WDSBLK. THE VALUE USED - 141 / FOR WDSBLK SHOULD BE THE NUMBER OF WORDS THE TAPE WAS - 142 / FORMATTED TO CONTAIN. - 143 - 144 /IF WE WANT A HANDLER FOR UNITS 2&3 TO RESIDE IN - 145 /FIELD 2 AT LOCATION 3000 AND READ/WRITE 256(10) WORDS - 146 /PER BLOCK, THE PARAMETERS WOULD BE: - 147 / DRIVE=20 - 148 / ORIGIN=3000 - 149 / AFIELD=2 - 150 / MFIELD=20 - - - - / TD8E 18-bit DECtape DUMP Program. Based on DUMPREST code fro Page 4 - - - 151 / WDSBLK=400 - 152 /THE CALL TO THE SUBROUTINE FOLLOWS BASICALLY THE - 153 /CALLING SEQUENCE FOR OS/8 DEVICE HANDLERS. - 154 /THE CALLING SEQUENCE IS: - 155 - 156 / CDF CURRENT - 157 / CIF MFIELD /MFIELD=FIELD ASSEMBLED IN - 158 / JMS ENTRY /ENTRY=ORIGIN (EVEN NUMBERED DRIVE - 159 /AND ORIGIN+4 FOR ODD NUMBERED DRIVE. - 160 / ARG1 - 161 / ARG1B (DJG) - 162 / ARG2 - 163 / ARG3 - 164 / ERROR RETURN - 165 / NORMAL RETURN - 166 - 167 /THE ARGUMENTS ARE: - 168 - 169 /ARG1: FUNCTION WORD BIT0: 0=READ, 1=WRITE - 170 / BITS 1-5: UNUSED, WAS # BLOCKS IN OPERATION (DJG) - 171 / BITS 6-8: FIELD OF BUFFER AREA - 172 / BIT 9: UNUSED - 173 / BIT 10: # OF WORDS/BLOCK. - 174 / 0= WDSBLK, 1=WDSBLK-1 - 175 / BIT 11: 1=START FORWARD, 0=REVERSE - 176 /ARG1A: # OF BLOCKS IN OPERATIONA (DJG) - 177 /ARG2: BUFFER ADDRESS FOR OPERATION - 178 /ARG3: STARTING BLOCK FOR OPERATION - 179 - 180 /ERRORS: THE HANDLER DETECTS TWO TYPES OF ERRORS: - 181 /A) FATAL ERRORS- PARITY ERROR, TIMING ERROR, - 182 / TOO GREAT A BLOCK NUMBER - 183 / FATAL ERRORS TAKE ERROR RETURN WITH THE - 184 / AC=4000. - 185 /B) NON-FATAL- SELECT ERROR. - 186 / IF NO PROPER UNIT IS SELECTED, THE ERROR - 187 / RETURN IS TAKEN WITH CLEAR AC. - 188 /FATAL ERRORS TRY THREE TIMES BEFORE TAKING ERROR RETURN. - 189 /THE NORMAL RETURN IS TAKEN AFTER ALL INDICATED - 190 /BLOCKS HAVE BEEN TRANSFERRED. THE AC IS CLEAR. - 191 - 192 /THE TD8E IOT'S ARE: - 193 6771 SDSS=7001-DRIVE /SKIP ON SINGLE LINE FLAG - 194 6772 SDST=7002-DRIVE /SKIP ON TIMING ERROR - 195 6773 SDSQ=7003-DRIVE /SKIP ON QUAD LINE FLAG - 196 6774 SDLC=7004-DRIVE /LOAD COMMAND REGISTER - 197 6775 SDLD=7005-DRIVE /LOAD DATA REGISTER - 198 6776 SDRC=7006-DRIVE /READ COMMAND REGISTER - 199 6777 SDRD=7007-DRIVE /READ DATA REGISTER - 200 - - - - / TD8E 18-bit DECtape DUMP Program. Based on DUMPREST code fro Page 5 - - - 201 /THE IOT'S IN GENERAL ARE 677X,676X,675X,AND 674X. - 202 /THE OTHERS CONTROL UNITS 2-7. - 203 - 204 / THIS HANDLER USES DECTAPE BLOCKS NOT OS/8 BLOCKS ! - 205 - 206 0600 *ORIGIN - 207 - 208 / MODIFIED SO BIT 0 ON ENTRY IS UNIT 1 - 209 00600 0000 DTA0, 0 - 210 00601 3047 DCA UNIT /SAVE UNIT POSITION - 211 00602 6214 RDF - 212 00603 1362 TAD C6203 /GET DATA FIELD AND SETUP RETURN - 213 00604 3360 DCA LEAVE - 214 00605 1600 TAD I DTA0 /GET FUNCTION WORD - 215 00606 6775 SDLD /PUT FUNCTION INTO DATA REGISTER - 216 00607 7112 CLL RTR /AC STILL HAS FUNCTION. PUT # WORDS PER - 217 /BLOCK INTO LINK - 218 00610 7630 SZL CLA /KNOCK ONE OFF WDSBLK? - 219 00611 7001 IAC /YES - 220 00612 1022 TAD MWORDS - 221 00613 3023 DCA WCOUNT /STORE MASTER WORD COUNT - 222 00614 2200 ISZ DTA0 /TO BLOCK COUNT (DJG) - 223 00615 1600 TAD I DTA0 / (DJG) - 224 00616 7041 CIA / (DJG) - 225 00617 3051 DCA PGCT / (DJG) - 226 00620 2200 ISZ DTA0 /TO BUFFER - 227 00621 1600 TAD I DTA0 - 228 00622 3044 DCA XBUFF /SAVE ADDRESS (DJG) - 229 / DCA BUFF - 230 00623 2200 ISZ DTA0 /TO BLOCK NUMBER - 231 00624 1600 TAD I DTA0 - 232 00625 3046 DCA BLOCK - 233 00626 2200 ISZ DTA0 /POINT TO ERROR EXIT - 234 00627 6203 CIF CDF MFIELD /TO ROUTINES DATA FIELD - 235 / SDRD /GET FUNCTION INTO AC - 236 / CLL RAL - 237 / AND CM200 /GET # PAGES TO XFER - 238 / DCA PGCT - 239 00630 6777 SDRD - 240 00631 0376 AND C70 /GET FIELD FOR XFER - 241 00632 1363 TAD C6201 /FORM CDF N - 242 00633 3253 DCA XFIELD /IF=0 AND DF=N AT XFER. - 243 00634 1047 TAD UNIT /TEST FOR SELECT ERROR - 244 00635 6774 SDLC - 245 00636 7200 CLA / Moved here because my drive 1 is slow selecting - 246 00637 1020 TAD RETRY - 247 00640 3050 DCA TRYCNT /3 ERROR TRIES - 248 00641 6776 SDRC - 249 00642 0366 AND C100 - 250 00643 7640 SZA CLA - - - - / TD8E 18-bit DECtape DUMP Program. Based on DUMPREST code fro Page 6 - - - 251 00644 5353 JMP FATAL-1 - 252 00645 6777 SDRD /PUT FUNCT INTO XFUNCT IN SECOND PG. - 253 00646 3765 DCA I CXFUN - 254 00647 1023 TAD WCOUNT - 255 00650 3452 DCA I CXWCT - 256 00651 6777 SDRD /GET MOTION BIT TO LINK - 257 00652 7110 CLL RAR - 258 00653 7402 XFIELD, HLT /INTO NEXT PAGE - 259 00654 5265 JMP GO /AND START THE MOTION. - 260 00655 6772 RWCOM, SDST /ANY CHECKSUM ERRORS? - 261 00656 7640 SZA CLA /OR CHECKSUM ERRORS? - 262 00657 5343 JMP TRY3 /PLEASE NOTE THAT THE LINK IS ALWAYS - 263 /SET AT RWCOM. GETCHK SETS IT. - 264 / TAD PGCT /NO ERROR..FINISHED XFER? - 265 / TAD CM200 - 266 / SNA - 267 00660 2051 ISZ PGCT / (DJG) - 268 00661 7410 SKP / (DJG) - 269 00662 5352 JMP EXIT /ALL DONE. GET OUT - 270 / DCA PGCT /NEW PAGE COUNT - 271 00663 2046 ISZ BLOCK /NEXT BLOCK TO XFER - 272 / TAD WCOUNT /FORM NEXT BUFFER ADDRESS - 273 / CIA - 274 / TAD BUFF - 275 / DCA XBUFF /SAVE ADDRESS (DJG) - 276 / DCA BUFF / (DJG) - 277 00664 7120 CLL CML /FORCES MOTION FORWARD - 278 00665 7232 GO, CLA CML RTR /LINK BECOMES MOTION BIT - 279 00666 1367 TAD C1000 - 280 00667 1047 TAD UNIT /PUT IN 'GO' AND UNIT # - 281 00670 6774 SDLC /LOOK FOR BLOCK NO. - 282 00671 7200 CLA - 283 00672 1044 TAD XBUFF - 284 00673 3043 DCA OLDBUF - 285 00674 6214 RDF - 286 00675 1363 TAD C6201 - 287 00676 3344 DCA OLDFLD - 288 00677 4764 JMS I CRDQUD /WAIT AT LEAST 6 LINES TO LOOK - 289 00700 4764 JMS I CRDQUD - 290 00701 7600 CM200, 7600 /COULD HAVE SAVED A LOC. HERE - 291 00702 6771 SRCH, SDSS - 292 00703 5302 JMP .-1 /WAIT FOR SINGLE LINE FLAG - 293 00704 6776 SDRC - 294 00705 7106 CLL RTL /DIRECTION TO LINK. INFO BITS - 295 /ARE SHIFTED. - 296 00706 0045 AND C374 /ISOLATE MARK TRACK BITS - 297 00707 1325 TAD M110 /IS IT END ZONE? - 298 00710 7450 SNA /THE LINK STAYS SAME THRU THIS - 299 00711 5333 JMP ENDZ - 300 00712 1053 TAD M20 /CHECK FOR BLOCK MARK - - - - / TD8E 18-bit DECtape DUMP Program. Based on DUMPREST code fro Page 7 - - - 301 00713 7640 SZA CLA - 302 00714 5302 JMP SRCH - 303 00715 6777 SDRD /GET THE BLOCK NUMBER - 304 00716 7430 SZL /IF WE ARE IN REVERSE, LOOK FOR 3 - 305 /BLOCKS BEFORE TARGET BLOCK. THIS - 306 /ALLOWS TURNAROUND AND UP TO SPEED. - 307 00717 1377 TAD C3 /REVERSE - 308 00720 7040 CMA - 309 00721 1046 TAD BLOCK - 310 00722 7040 CMA /IS IT RIGHT BLOCK? - 311 00723 7450 SNA - 312 00724 5372 JMP FOUND /YES..HOORAY! - 313 00725 7670 M110, SZL SNA CLA /NO, BUT ARE WE HEADED FOR IT? - 314 /ABOVE SNA IS SUPERFLUOUS. - 315 00726 5302 JMP SRCH /YES - 316 00727 6776 SDRC /NO, TURN US AROUND. - 317 00730 7106 CLL RTL /DIRECTION TO LINK - 318 00731 7200 CLA / - 319 00732 5265 JMP GO / - 320 00733 6776 ENDZ, SDRC /WE ARE IN THE END ZONE - 321 00734 7106 CLL RTL /DIRECTION TO LINK - 322 00735 7630 SZL CLA /ARE WE IN REVERSE? - 323 00736 5265 JMP GO /YES..TURN US AROUND - 324 00737 1046 TAD BLOCK /BLOCK 0? - 325 00740 7640 SZA CLA - 326 00741 5355 JMP ENDEX /END OF TAPE. STOP THE UNIT AND TAKE THE END EXIT. - 327 00742 5265 JMP GO - 328 00743 7200 TRY3, CLA - 329 00744 7000 OLDFLD, NOP - 330 00745 1043 TAD OLDBUF - 331 00746 3044 DCA XBUFF - 332 00747 2050 ISZ TRYCNT - 333 00750 5265 JMP GO /TRY 3 TIMES - 334 00751 5354 JMP FATAL /LINK OFF MEANS AC=4000 ON RETURN - 335 00752 2200 EXIT, ISZ DTA0 /TAKE THE NORMAL RETURN - 336 00753 7120 CLL CML /AC=0 ON NORMAL RETURN - 337 00754 2200 FATAL, ISZ DTA0 /TAKE THE ERROR RETURN - 338 00755 1047 ENDEX, TAD UNIT - 339 00756 6774 SDLC /STOP THE UNIT - 340 00757 7230 CLA CML RAR - 341 00760 7402 LEAVE, HLT - 342 00761 5600 JMP I DTA0 - 343 - 344 - 345 00762 6203 C6203, 6203 - 346 00763 6201 C6201, 6201 - 347 00764 1126 CRDQUD, RDQUAD - 348 /WCOUNT, 0 (MOVED PAGE 0 DJG) - 349 /BUFF, 0 (UNUSED, JAD) - 350 /MWORDS, -WDSBLK (MOVED PAGE 0 DJG) - - - - / TD8E 18-bit DECtape DUMP Program. Based on DUMPREST code fro Page 8 - - - 351 /UNIT, 0 (MOVED PAGE 0 JAD) - 352 00765 1166 CXFUN, XFUNCT - 353 00766 0100 C100, 100 - 354 00767 1000 C1000, 1000 - 355 - 356 - 357 0772 *ORIGIN+172 - 358 00772 7630 FOUND, SZL CLA /RIGHT BLOCK. HOW ABOUT DIRECTION? - 359 00773 5265 JMP GO /WRONG..TURN AROUND - 360 00774 1047 TAD UNIT /PUT UNIT INTO LINK - 361 00775 7104 CLL RAL /AC IS NOW 0 - 362 00776 0070 C70, 70 /********DON'T MOVE THIS!!!!****** - 363 00777 0003 C3, 3 - 364 / TAD BUFF /GET BUFFER ADDRESS (DJG) - 365 /XFIELD, HLT /INTO NEXT PAGE - 366 1000 *ORIGIN+200 - 367 01000 6202 CIF MFIELD - 368 / DCA XBUFF /SAVE ADDRESS (DJG) - 369 01001 7010 RAR /NOW GET UNIT # - 370 01002 3333 DCA XUNIT - 371 01003 6776 SDRC - 372 01004 6774 SDLC - 373 01005 6771 REVGRD, SDSS - 374 01006 5205 JMP .-1 /LOOK FOR REVERSE GUARD - 375 01007 6776 SDRC - 376 01010 0261 AND K77 - 377 01011 1367 TAD CM32 /IS IT REVERSE GUARD? - 378 01012 7640 SZA CLA - 379 01013 5205 JMP REVGRD /NO.KEEP LOOKING - 380 01014 1373 TAD XWCT - 381 01015 3372 DCA WORDS /WORD COUNTER - 382 01016 1366 TAD XFUNCT /GET FUNCTION READ OR WRITE - 383 01017 7700 K7700, SMA CLA - 384 01020 5262 JMP READ /NEG. IS WRITE - 385 01021 6776 WRITE, SDRC - 386 01022 0316 AND C300 /CHECK FOR WRITE LOCK AND SELECT ERROR - 387 01023 7120 CLL CML /LOCK OUT AND SELECT ARE AC 0 ERRORS - 388 01024 7640 SZA CLA - 389 01025 5764 JMP I CFATAL /FATAL ERROR. LINK MUST BE ON - 390 01026 4326 JMS RDQUAD /NO ONE EVER USES THIS WORD! - 391 01027 7600 C7600, 7600 - 392 01030 1370 TAD C1400 - 393 01031 1333 TAD XUNIT /INITIATE WRITE MODE - 394 01032 6774 SDLC - 395 01033 7240 CLA CMA - 396 01034 4317 JMS WRQUAD /PUT 77 IN REVERSE CHECKSUM - 397 01035 7240 CLA CMA - 398 01036 3371 DCA CHKSUM - 399 01037 1444 WRLP, TAD I XBUFF /GLORY BE! THE ACTUAL WRITE! - 400 01040 4317 JMS WRQUAD - - - - / TD8E 18-bit DECtape DUMP Program. Based on DUMPREST code fro Page 9 - - - 401 01041 2044 ISZ XBUFF /BUMP CORE POINTER - 402 01042 5247 JMP STFLD1+1 /NOT AT END OF FIELD (DJG) - 403 01043 6214 RDF - 404 01044 1377 TAD (6211 - 405 01045 3246 DCA STFLD1 - 406 01046 7000 STFLD1, NOP - 407 01047 2372 ISZ WORDS /DONE THIS BLOCK? - 408 01050 5237 JMP WRLP /NOT YET..LOOP A WHILE - 409 01051 1366 TAD XFUNCT /IS THE OPERATION FOR WDSBLK PER BLOCK? - 410 01052 7112 CLL RTR /IF NO, WRITE A 0 WORD - 411 01053 7630 SZL CLA - 412 01054 4317 JMS WRQUAD /WRITE A WORD OF 0 - 413 01055 4350 JMS GETCHK /DO THE CHECK SUM - 414 01056 4317 JMS WRQUAD /WRITE FORWARD CHECKSUM - 415 01057 4317 JMS WRQUAD /ALLOW CHECKSUM TO BE WRITTEN - 416 01060 5765 JMP I CRWCOM - 417 01061 0077 K77, 77 /ABOVE MAY SKIP (NOT ANYMORE DJG) - 418 01062 4326 READ, JMS RDQUAD - 419 01063 4326 JMS RDQUAD - 420 01064 4326 JMS RDQUAD /SKIP CONTROL WORDS - 421 01065 0261 AND K77 - 422 01066 1217 TAD K7700 /TACK 7700 ONTO CHECKSUM. - 423 01067 3371 DCA CHKSUM /CHECKSUM ONLY LOW 6 BITS ANYWAY - 424 01070 4326 RDLP, JMS RDQUAD - 425 01071 4333 JMS EQUFUN /COMPUT CHECKSUM AS WE GO - 426 01072 3444 DCA I XBUFF /IT GETS CONDENSED LATER - 427 01073 2044 ISZ XBUFF /AT END OF FIELD? - 428 01074 5301 JMP STFLD2+1 /NOT AT END OF FIELD (DJG) - 429 01075 6214 RDF - 430 01076 1377 TAD (6211 - 431 01077 3300 DCA STFLD2 - 432 01100 7000 STFLD2, NOP - 433 01101 2372 ISZ WORDS /DONE THIS OP? - 434 01102 5270 JMP RDLP /NO SUCH LUCK - 435 01103 1366 TAD XFUNCT /IF OP WAS FOR WDSBLK-1, READ AND - 436 01104 7112 CLL RTR /CHECKSUM THE LAST TAPE WORD - 437 01105 7620 SNL CLA - 438 01106 5311 JMP RDLP2 - 439 01107 4326 JMS RDQUAD /NOT NEEDED FOR WDSBLK/BLOCK - 440 01110 4333 JMS EQUFUN /CHECKSUM IT - 441 01111 4326 RDLP2, JMS RDQUAD /READ CHECKSUM - 442 01112 0217 AND K7700 - 443 01113 4333 JMS EQUFUN - 444 01114 4350 JMS GETCHK /GET SIX BIT CHECKSUM - 445 01115 5765 JMP I CRWCOM - 446 01116 0300 C300, 300 /PROTECTION (NOT ANYMORE DJG) - 447 - 448 01117 0000 WRQUAD, 0 /WRITE OUT A 12 BIT WORD - 449 01120 4333 JMS EQUFUN /ADD THIS TO CHECKSUM - 450 01121 6773 SDSQ /SKIP ON QUADLINE FLAG - - - - / TD8E 18-bit DECtape DUMP Program. Based on DUMPREST code fro Page 10 - - - 451 01122 5321 JMP .-1 - 452 01123 6775 SDLD /LOAD DATA ONTO BUS - 453 01124 7200 CLA /SDLD DOESN'T CLEAR AC - 454 01125 5717 JMP I WRQUAD - 455 - 456 01126 0000 RDQUAD, 0 /READ A 12 BIT WORD - 457 01127 6773 SDSQ - 458 01130 5327 JMP .-1 - 459 01131 6777 SDRD /READ DATA - 460 01132 5726 JMP I RDQUAD - 461 - 462 XUNIT, - 463 01133 0000 EQUFUN, 0 /COMPUTE EQUIVALENCE CHECKSUM - 464 01134 7040 CMA - 465 01135 3374 DCA EQUTMP /ACTUALLY CHECKSUMS ON DECTAPE ARE - 466 01136 1374 TAD EQUTMP /EQUIVALENCE OF ALL WORDS IN A RECORD - 467 01137 0371 AND CHKSUM /SIX BITS AT A TIME. BUT SINCE EQUIVALENCE - 468 01140 7041 CIA /IS ASSOCIATIVE, WE CAN DO IT 12 - 469 01141 7104 CLL RAL /BITS AT A TIME AND CONDENSE LATER. - 470 01142 1374 TAD EQUTMP /THIS ROUTINE USES THESE IDENTITIES: - 471 01143 1371 TAD CHKSUM /A+B=(A.XOR.B)+2*(A.AND.B) - 472 01144 3371 DCA CHKSUM /A.EQU.B=.NOT.(A.XOR.B)=A.XOR.(.NOT.B) - 473 01145 1374 TAD EQUTMP /A.EQU.B=(A+(.NOT.B))-2*(A.AND.(.NOT.B)) - 474 01146 7040 CMA - 475 01147 5733 JMP I EQUFUN - 476 - 477 01150 0000 GETCHK, 0 /FORM 6 BIT CHECKSUM - 478 01151 7200 CLA - 479 01152 1371 TAD CHKSUM - 480 01153 7040 CMA - 481 01154 7106 CLL RTL - 482 01155 7006 RTL - 483 01156 7006 RTL - 484 01157 4333 JMS EQUFUN - 485 01160 7320 CLA CLL CML /FORCES LINK ON AT RWCOM - 486 01161 1371 TAD CHKSUM - 487 01162 0217 AND K7700 - 488 01163 5750 JMP I GETCHK - 489 - 490 01164 0754 CFATAL, FATAL - 491 01165 0655 CRWCOM, RWCOM - 492 01166 0000 XFUNCT, 0 - 493 01167 7746 CM32, -32 - 494 01170 1400 C1400, 1400 - 495 01171 0000 CHKSUM, 0 - 496 01172 0000 WORDS, 0 - 497 01173 0000 XWCT, 0 - 498 01174 0000 EQUTMP, 0 - 499 - 01177 6211 - - - - / TD8E 18-bit DECtape DUMP Program. Based on DUMPREST code fro Page 11 - - - 500 0020 *20 - 501 00020 7774 RETRY, 7774 / RETRY UP TO 4 TIME - 502 00021 1202 NUMBLK, 1202 / MAX NUMBER OF BLOCKS TO ATTEMPT READING - 503 / (1102(8) blocks of 400(8) 18-bit words + 100 TO HANDLE NONSTANDARD (LONG) TAPES) - 504 00022 7200 MWORDS, -WDSBLK / WORDS PER BLOCK - 505 00023 0000 WCOUNT, 0 - 506 00024 0012 BLKFLD, 12 / 10 386-word-blocks (12-bit words, equivalent to 256 18-bit words + 1 cksum word) - 507 / WRAPPING PAST END OF LAST FIELD DOESN'T WORK - 508 00025 0000 FIELDS, 0 - 509 00026 0000 RDSIZE, 0 / NUMBER BLOCKS PER READ - 510 00027 0000 CBLOCK, 0 / CURRENT BLOCK TO XFER - 511 00030 0000 CLKSUM, 0 - 512 00031 0000 DRVSEL, 0 - 513 00032 0377 READST, 377 - 514 00033 0000 LOC, 0 - 515 00034 0000 LEN, 0 - 516 00035 0000 BCNT, 0 / BLOCKS TO SEND TO PC - 517 00036 0000 TEMP, 0 - 518 00037 0017 C17, 17 - 519 00040 0360 C360, 360 - 520 00041 0000 CHKSM, 0 - 521 00042 0000 ERRCN2, 0 - 522 00043 0000 OLDBUF, 0 / USED BY DTA0 ROUTINE - 523 00044 0000 XBUFF, 0 / USED BY DTA0 ROUTINE - 524 00045 0374 C374, 374 / USED BY DTA0 ROUTINE - 525 00046 0000 BLOCK, 0 / USED BY DTA0 ROUTINE - 526 00047 0000 UNIT, 0 / USED BY DTA0 ROUTINE - 527 00050 7775 TRYCNT, -3 / " - 528 00051 0000 PGCT, 0 / " - 529 00052 1173 CXWCT, XWCT / " - 530 00053 7760 M20, -20 / " - 531 - 532 0140 *140 - 533 00140 7402 FINISH, HLT / Normal good halt - 534 00141 5777@ JMP START - 535 - 536 0200 *200 - 537 00200 6201 START, CDF 0 - 538 00201 6007 CAF - 539 00202 7704 CLA CLL OSR / Get drive - 540 00203 0377 AND (1 - 541 00204 7012 RTR - 542 00205 3031 DCA DRVSEL - 543 00206 7704 CLA CLL OSR / Get max field - 544 00207 7012 RTR - 545 00210 7010 RAR - 546 00211 0376 AND (7 - 547 00212 7450 SNA - 548 00213 7402 HLT / Must have at least 1 field for buffer - 549 00214 7041 CIA - - - - / TD8E 18-bit DECtape DUMP Program. Based on DUMPREST code fro Page 12 - - - 550 00215 3025 DCA FIELDS - 551 00216 3042 DCA ERRCN2 - 552 00217 1024 RDSZLP, TAD BLKFLD / Multiply by number of fields available - 553 00220 2025 ISZ FIELDS - 554 00221 5217 JMP RDSZLP - 555 00222 3026 DCA RDSIZE / NUMBER BLOCK PER READ - 556 00223 3027 DCA CBLOCK - 557 00224 3041 DCA CHKSM - 558 - 559 00225 7200 DUMPLP, CLA - 560 00226 1026 TAD RDSIZE - 561 00227 1027 TAD CBLOCK - 562 00230 7041 CIA - 563 00231 1021 TAD NUMBLK / MORE BLOCKS LEFT THAN READSIZE? - 564 00232 7500 SMA / NO, READ NUMBER LEFT - 565 00233 7200 CLA / YES, ONLY READ RDSIZE - 566 00234 1026 TAD RDSIZE - 567 00235 7450 SNA / ANY MORE BLOCKS? - 568 00236 5270 JMP DONE / NO, DO FINISH STUFF - 569 00237 3245 DCA ARGSZ - 570 00240 1027 TAD CBLOCK - 571 00241 3247 DCA ARGBK - 572 00242 1031 TAD DRVSEL - 573 00243 4775@ JMS DTA0 - 574 00244 0010 0010 / READ STARTING IN FIELD 1 - 575 00245 0000 ARGSZ, 0 - 576 00246 0000 0 - 577 00247 0000 ARGBK, 0 - 578 00250 5774@ JMP ENDRET / TAKEN WHEN END OF TAPE IS HIT - 579 00251 5323 JMP ERRRET / TAKEN WHEN AN ERROR IS ENCOUNTERED - 580 00252 1373 TAD (377 / All blocks good - 581 00253 3032 DCA READST - 582 / Send data, each block starts with FF - 583 00254 7300 CLA CLL / then 2 12 bit words in 3 bytes - 584 00255 3033 DCA LOC / ERRRET DUPLICATES SOME OF THIS - 585 00256 1245 TAD ARGSZ - 586 00257 7041 CIA - 587 00260 3035 DCA BCNT / Setup loop counter with number blocks read - 588 00261 6211 CDF 10 - 589 00262 4772@ OUTBL1, JMS OUTBLK / Send a block - 590 00263 2027 ISZ CBLOCK - 591 00264 2035 ISZ BCNT / Send all read? - 592 00265 5262 JMP OUTBL1 / No - 593 00266 6201 CDF 0 - 594 00267 5225 JMP DUMPLP / Go read next batch - 595 - 596 - 597 00270 7200 DONE, CLA / Send FE and -checksum of all words - 598 00271 1371 TAD (376 - 599 00272 4770@ JMS PUN - - - - / TD8E 18-bit DECtape DUMP Program. Based on DUMPREST code fro Page 13 - - - 600 00273 7300 CLA CLL - 601 00274 1041 TAD CHKSM / Send checksum in two bytes, low bits first - 602 00275 7041 CIA - 603 00276 4770@ JMS PUN - 604 00277 7300 CLA CLL - 605 00300 1041 TAD CHKSM - 606 00301 7041 CIA - 607 00302 7012 RTR - 608 00303 7012 RTR - 609 00304 7012 RTR - 610 00305 7012 RTR - 611 00306 0037 AND C17 - 612 00307 4770@ JMS PUN - 613 00310 7200 CLA - 614 00311 1031 TAD DRVSEL - 615 00312 4775@ JMS DTA0 / REWIND TAPE - 616 00313 0010 0010 - 617 00314 0001 1 - 618 00315 0000 0 - 619 00316 0000 0 - 620 00317 7000 NOP - 621 00320 7000 NOP - 622 00321 1042 TAD ERRCN2 / Leave AC with # of errors - 623 00322 5140 JMP FINISH - 624 - 625 /SEND GOOD BLOCKS READ WITH GOOD BLOCK FLAG - 626 /THEN BAD WITH BAD BLOCK FLAG. - 627 ERRRET, - 628 / HLT / ****** If we want to stop on error - 629 00323 6211 CDF 10 - 630 00324 7300 CLA CLL - 631 00325 3033 DCA LOC - 632 00326 1027 TAD CBLOCK - 633 00327 7041 CIA - 634 00330 1046 TAD BLOCK /Get - number good blocks read - 635 00331 7041 CIA /Last was bad - 636 00332 7450 SNA - 637 00333 5343 JMP FSTBAD /First block is bad, no good to send - 638 00334 3035 DCA BCNT - 639 00335 1373 TAD (377 - 640 00336 3032 DCA READST - 641 00337 4772@ OUTBL2, JMS OUTBLK /Send good blocks - 642 00340 2027 ISZ CBLOCK - 643 00341 2035 ISZ BCNT - 644 00342 5337 JMP OUTBL2 - 645 00343 1367 FSTBAD, TAD (375 /NOW SEND BAD BLOCK - 646 00344 3032 DCA READST - 647 00345 4772@ JMS OUTBLK - 648 00346 2027 ISZ CBLOCK - 649 00347 2042 ISZ ERRCN2 - - - - / TD8E 18-bit DECtape DUMP Program. Based on DUMPREST code fro Page 14 - - - 650 00350 6201 CDF 0 - 651 00351 5225 JMP DUMPLP /And read from here on - 652 - 00367 0375 - 00370 0511 - 00371 0376 - 00372 0422 - 00373 0377 - 00374 0400 - 00375 0600 - 00376 0007 - 00377 0001 - 653 PAGE - 654 ENDRET, /SEND LAST SET OF BLOCKS READ BEFORE END OF TAPE AND FINISH. - 655 00400 6211 CDF 10 - 656 00401 7300 CLA CLL - 657 00402 3033 DCA LOC - 658 00403 1027 TAD CBLOCK - 659 00404 7041 CIA - 660 00405 1046 TAD BLOCK / GET NUMBER OF BLOCKS READ IN LAST BATCH - 661 00406 7040 CMA / +1 to -BCNT SO WE SEND ALL BLOCKS - 662 00407 7450 SNA - 663 00410 5777@ JMP DONE / READ ZERO BLOCKS IN LAST BATCH, WE ARE DONE - 664 00411 3035 DCA BCNT - 665 00412 1376 TAD (377 - 666 00413 3032 DCA READST - 667 00414 4222 OUTBL3, JMS OUTBLK / SEND ALL BLOCKS - 668 00415 2027 ISZ CBLOCK - 669 00416 2035 ISZ BCNT - 670 00417 5214 JMP OUTBL3 - 671 00420 6201 CDF 0 - 672 00421 5777@ JMP DONE / NO MORE BLOCKS, DONE. - 673 - 674 00422 0000 OUTBLK, 0 /Send a block of data out serial port - 675 00423 7200 CLA - 676 00424 1023 TAD WCOUNT - 677 00425 3034 DCA LEN - 678 00426 1032 TAD READST /Send good/bad flag - 679 00427 4311 JMS PUN - 680 00430 7300 OUT, CLA CLL - 681 00431 1433 TAD I LOC - 682 00432 1041 TAD CHKSM / Keep checksum of all words sent - 683 00433 3041 DCA CHKSM - 684 00434 1433 TAD I LOC / Send 2 words as 3 bytes - 685 00435 4311 JMS PUN - 686 00436 7300 CLA CLL - 687 00437 1433 TAD I LOC - 688 00440 7012 RTR / Shift top 4 bits to low 4 - 689 00441 7012 RTR - 690 00442 7012 RTR - - - - / TD8E 18-bit DECtape DUMP Program. Based on DUMPREST code fro Page 15 - - - 691 00443 7012 RTR - 692 00444 0037 AND C17 - 693 00445 3036 DCA TEMP - 694 00446 2033 ISZ LOC - 695 00447 5254 JMP STFLD3+1 /NOT AT END OF FIELD (DJG) - 696 00450 6214 RDF /At end, inc to next field - 697 00451 1375 TAD (6211 /BUILD CDF - 698 00452 3253 DCA STFLD3 - 699 00453 7000 STFLD3, NOP - 700 00454 2034 ISZ LEN /END IF BUFFER? - 701 00455 7410 SKP /NO - 702 00456 5306 JMP ENDBK /YES - 703 00457 1433 TAD I LOC - 704 00460 1041 TAD CHKSM - 705 00461 3041 DCA CHKSM - 706 00462 1433 TAD I LOC - 707 00463 7006 RTL - 708 00464 7006 RTL - 709 00465 0040 AND C360 - 710 00466 1036 TAD TEMP - 711 00467 4311 JMS PUN - 712 00470 7300 CLA CLL - 713 00471 1433 TAD I LOC - 714 00472 7012 RTR - 715 00473 7012 RTR - 716 00474 4311 JMS PUN - 717 00475 2033 ISZ LOC - 718 00476 5303 JMP STFLD4+1 /NOT AT END OF FIELD (DJG) - 719 00477 6214 RDF - 720 00500 1375 TAD (6211 /BUILD CDF - 721 00501 3302 DCA STFLD4 - 722 00502 7000 STFLD4, NOP - 723 00503 2034 ISZ LEN - 724 00504 5230 JMP OUT - 725 00505 5622 JMP I OUTBLK - 726 00506 1036 ENDBK, TAD TEMP /SEND LAST PART OF WORD - 727 00507 4311 JMS PUN - 728 00510 5622 JMP I OUTBLK - 729 - 730 00511 0000 PUN, 0 / Send byte out serial port - 731 / PLS / Punch for testing with emulator - 732 00512 6046 TLS2 / Send out console - 733 00513 7300 CLA CLL - 734 00514 1027 TAD CBLOCK - 735 / PSF - 736 00515 6041 TSF2 /Wait until character sent - 737 00516 5315 JMP .-1 - 738 00517 7200 CLA - 739 00520 5711 JMP I PUN - 740 - - - - / TD8E 18-bit DECtape DUMP Program. Based on DUMPREST code fro Page 16 - - - 00575 6211 - 00576 0377 - 00577 0270 - 00177 0200 - 741 $ - - No detected errors - 12 links generated