File: DMPTD8.LS of Tape: Original/Originals/dta02
(Source file text) 


/TD8E Dectape DUMP Program                            PAL8-V10A 06-AUG-77 PAGE 1

             /TD8E Dectape DUMP Program
             /
             / This program will send a Dectape image out the console port.
             / The format of the data sent is 0xff (0377) or 0xfd if read error
             / followed by 128 word  of data for each block.
             / After the last block a 0xfe (0376) is sent
             / with a two byte checksum, low 8 bits first then upper 4.
             / The words in a block are sent as three bytes for each 2 words.
             / Like this: (WvdM)
             /   +--------------------+
             /   ! byte1     ! byte2h !
             /   +--------------------+
             /   ! byte2l !  byte 3   !
             /   +--------------------+
             /
             /   1 = low 8 bits first word (was like this WvdM)
             /   2 = upper 4 bits first and lower 4 bits second
             /   3 = upper 8 bits second word
             /
             / The program (PC) receiving the data should be started before this program
             /
             / To run start at 0200.
             /    SR 11 should be drive, only 0 and 1 supported without reassembling
             /    SR 6-8 should be maximum memory field in computer, needs 8k minimum
             / The receiving program should be running first.
             / At normal exit hitting cont will restart the program
             /
             / Should halt at label finish (140) with number of recoverable errors in AC
             / The current block being read will be displayed in the AC
             / while running.
             /
             / If a unrecoverable error occurs the program will halt with the error in
             / the AC.  Hit continue to dump more or comment out hlt, search for *****.
             / The PC program will print out the bad location if an error occurs
             /
             / We will retry each read up to 16 times on error
             /
             / This transfers the standard 129 word by 1474 blocks used by OS/8 etc.
             / Other formats can be handled by changing constants below

       0030          INAD=030                / Address of serial input, 30 for console
       6030          KCF2=6000 INAD
       6031          KSF2=6001 INAD
       6032          KCC2=6002 INAD
       6034          KRS2=6004 INAD
       6035          KIE2=6005 INAD
       6036          KRB2=6006 INAD

       0040          OUTAD=040               / Address of serial output, 40 for console
       6040          TFL2=6000 OUTAD
       6041          TSF2=6001 OUTAD
       6042          TCF2=6002 OUTAD
       6044          TPC2=6004 OUTAD
       6045          TSK2=6005 OUTAD
       6046          TLS2=6006 OUTAD

/TD8E Dectape DUMP Program                            PAL8-V10A 06-AUG-77 PAGE 1-1


             /2 TD8E INITIALIZER PROGRAM, V7A
             /
             /COPYRIGHT (C) 1975, 1977
             /DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
             /
             /
             /ABSTRACT--
             /       THE ROUTINE DESCRIBED AND LISTED HERE IS A GENERAL
             /DATA HANDLER FOR THE TD8E DECTAPE SYSTEM. THE ROUTINE
             /CONTAINS SEARCH, READ, AND WRITE FUNCTIONS IN A FORMAT
             /WHICH IS COMPATIBLE WITH OS/8 DEVICE HANDLER CALLING
             /SEQUENCES.

             /THIS ROUTINE CAN BE RE-EDITED AND ASSEMBLED TO PRODUCE
             /VARIATIONS ON THE BASIC TD8E SYSTEM. ASSEMBLY PARAMETERS
             /CONTROL:
             /A) WHAT DRIVES (UNITS 0-7) WILL BE USED
             /B) THE ORIGIN OF THE TWO PAGE ROUTINE
             /C) WHAT MEMORY FIELD THE ROUTINE WILL RUN IN
             /D) THE SIZE OF THE DECTAPE BLOCK TO BE READ/WRITTEN

             /FOLLOWING ARE THE PARAMETERS SET UP FOR THE STANDARD
             /DEC VERSION OF THIS ROUTINE:

       0010          DRIVE=10        /UNITS 0 AND 1 SELECTED
       0600          ORIGIN=600      /ENTER AT ORIGIN, ORIGIN+4
       0000          AFIELD=0        /INITIAL FIELD SETTING
       0000          MFIELD=00       /AFIELD*10=MFIELD
       0201          WDSBLK=201      /129 WORDS PER BLOCK

             /THE USE OF THE PARAMETERS IS AS FOLLOWS:

             / DRIVE: DRIVE DETERMINES WHICH UNITS WILL BE SELECTED
             /       DRIVE=10 IMPLIES UNITS 0 &1
             /       DRIVE=20 IMPLIES UNITS 2&3
             /       DRIVE=30 IMPLIES UNITS 4&5
             /       DRIVE=40 IMPLIES UNITS 6&7

             /ORIGIN: ALTERING ORIGIN CAUSES ASSEMBLY IN A DIFFERENT
             /       MEMORY LOCATION. WHEN CHANGING ORIGIN KEEP IN MIND
             /THAT THIS IS A TWO PAGE ROUTINE.

             /AFIELD: AFIELD DETERMINES THE INITIAL FIELD SETTING FOR THE
             /       LOADER. PERMISSIBLE VALUES FOR AFIELD ARE 0 TO 7.

             /MFIELD: MFIELD IS USED IN A CIF CDF MFIELD INSTRUCTION.
             /       THE VALUE INSERTED FOR MFIELD SHOULD BE 10(8) TIMES
             /       THE VALUE FOR AFIELD. THE PERMISSIBLE VALUES ARE 00-70.

             /WDSBLK: WDSBLK GOVERNS HOW MANY WORDS THE ROUTINE THINKS ARE
             /       IN A DECTAPE BLOCK. THE STANDARD VALUE IS 201(8) OR
             /       129 DECIMAL. NOTE THAT THE FUNCTION WORD BIT 10 CAN
             /       BE USED TO SUBTRACT ONE FROM WDSBLK. THE VALUE USED
             /       FOR WDSBLK SHOULD BE THE NUMBER OF WORDS THE TAPE WAS

/TD8E Dectape DUMP Program                            PAL8-V10A 06-AUG-77 PAGE 1-2

             /       FORMATTED TO CONTAIN.

             /IF WE WANT A HANDLER FOR UNITS 2&3 TO RESIDE IN
             /FIELD 2 AT LOCATION 3000 AND READ/WRITE 256(10) WORDS
             /PER BLOCK, THE PARAMETERS WOULD BE:
             /       DRIVE=20
             /       ORIGIN=3000
             /       AFIELD=2
             /       MFIELD=20
             /       WDSBLK=400
             /
             /THE CALL TO THE SUBROUTINE FOLLOWS BASICALLY THE
             /CALLING SEQUENCE FOR OS/8 DEVICE HANDLERS.
             /THE CALLING SEQUENCE IS:

             /       CDF CURRENT
             /       CIF MFIELD      /MFIELD=FIELD ASSEMBLED IN
             /       JMS ENTRY       /ENTRY=ORIGIN (EVEN NUMBERED DRIVE
                                     /AND ORIGIN+4 FOR ODD NUMBERED DRIVE.
             /       ARG1A
             /       ARG1B (DJG)
             /       ARG2
             /       ARG3
             /       ERROR RETURN
             /       NORMAL RETURN

             /THE ARGUMENTS ARE:

             /ARG1A: FUNCTION WORD   BIT0: 0=READ, 1=WRITE
             /                       BITS 1-5: UNUSED, WAS # BLOCKS IN OPERATION (DJG)
             /                       BITS 6-8: FIELD OF BUFFER AREA
             /                       BIT 9: UNUSED
             /                       BIT 10: # OF WORDS/BLOCK.
             /                       0= WDSBLK, 1=WDSBLK-1
             /                       BIT 11: 1=START FORWARD, 0=REVERSE
             /ARG1B: # OF BLOCKS IN OPERATION (DJG)
             /ARG2: BUFFER ADDRESS FOR OPERATION
             /ARG3: STARTING BLOCK FOR OPERATION

             /ERRORS: THE HANDLER DETECTS TWO TYPES OF ERRORS:
             /A) FATAL ERRORS- PARITY ERROR, TIMING ERROR,
             /               TOO GREAT A BLOCK NUMBER
             /       FATAL ERRORS TAKE ERROR RETURN WITH THE
             /       AC=4000.
             /B) NON-FATAL- SELECT ERROR.
             /       IF NO PROPER UNIT IS SELECTED, THE ERROR
             /       RETURN IS TAKEN WITH CLEAR AC.
             /FATAL ERRORS TRY THREE TIMES BEFORE TAKING ERROR RETURN.
             /THE NORMAL RETURN IS TAKEN AFTER ALL INDICATED
             /BLOCKS HAVE BEEN TRANSFERRED. THE AC IS CLEAR.

             /THE TD8E IOT'S ARE:
       6771          SDSS=7001-DRIVE /SKIP ON SINGLE LINE FLAG
       6772          SDST=7002-DRIVE /SKIP ON TIMING ERROR
       6773          SDSQ=7003-DRIVE /SKIP ON QUAD LINE FLAG

/TD8E Dectape DUMP Program                            PAL8-V10A 06-AUG-77 PAGE 1-3

       6774          SDLC=7004-DRIVE /LOAD COMMAND REGISTER
       6775          SDLD=7005-DRIVE /LOAD DATA REGISTER
       6776          SDRC=7006-DRIVE /READ COMMAND REGISTER
       6777          SDRD=7007-DRIVE /READ DATA REGISTER

             /THE IOT'S IN GENERAL ARE 677X,676X,675X,AND 674X.
             /THE OTHERS CONTROL UNITS 2-7.

             /       THIS HANDLER USES DECTAPE BLOCKS NOT OS/8 BLOCKS !

       0600          *ORIGIN

             /       MODIFIED SO BIT 0 ON ENTRY IS UNIT 1
00600  0000  DTA0,   0
00601  3355          DCA UNIT        /SAVE UNIT POSITION
00602  6214          RDF
00603  1351          TAD C6203       /GET DATA FIELD AND SETUP RETURN
00604  3347          DCA LEAVE
00605  1600          TAD I DTA0      /GET FUNCTION WORD
00606  6775          SDLD            /PUT FUNCTION INTO DATA REGISTER
00607  7112          CLL RTR         /AC STILL HAS FUNCTION. PUT # WORDS PER
                                     /BLOCK INTO LINK
00610  7630          SZL CLA         /KNOCK ONE OFF WDSBLK?
00611  7001          IAC             /YES
00612  1022          TAD MWORDS
00613  3023          DCA WCOUNT      /STORE MASTER WORD COUNT
00614  2200          ISZ DTA0        /TO BLOCK COUNT (DJG)
00615  1600          TAD I DTA0      / (DJG)
00616  7041          CIA             / (DJG)
00617  3360          DCA PGCT        / (DJG)
00620  2200          ISZ DTA0        /TO BUFFER
00621  1600          TAD I DTA0
00622  3044          DCA XBUFF       /SAVE ADDRESS (DJG)
             /       DCA BUFF
00623  2200          ISZ DTA0        /TO BLOCK NUMBER
00624  1600          TAD I DTA0
00625  3046          DCA BLOCK
00626  2200          ISZ DTA0        /POINT TO ERROR EXIT
00627  6203          CIF CDF MFIELD  /TO ROUTINES DATA FIELD
             /       SDRD            /GET FUNCTION INTO AC
             /       CLL RAL
             /       AND CM200       /GET # PAGES TO XFER
             /       DCA PGCT
00630  6777          SDRD
00631  0376          AND C70         /GET FIELD FOR XFER
00632  1352          TAD C6201       /FORM CDF N
00633  3253          DCA XFIELD      /IF=0 AND DF=N AT XFER.
00634  1355          TAD UNIT        /TEST FOR SELECT ERROR
00635  6774          SDLC
00636  7200          CLA             / Moved here because my drive 1 is slow selecting
00637  1020          TAD RETRY
00640  3363          DCA TRYCNT      /3 ERROR TRIES
00641  6776          SDRC
00642  0362          AND C100
00643  7640          SZA CLA

/TD8E Dectape DUMP Program                            PAL8-V10A 06-AUG-77 PAGE 1-4

00644  5343          JMP FATAL-1
00645  6777          SDRD            /PUT FUNCT INTO XFUNCT IN SECOND PG.
00646  3756          DCA I CXFUN
00647  1023          TAD WCOUNT
00650  3761          DCA I CXWCT
00651  6777          SDRD            /GET MOTION BIT TO LINK
00652  7110          CLL RAR
00653  7402  XFIELD, HLT             /INTO NEXT PAGE
00654  5265          JMP GO          /AND START THE MOTION.

00655  6772  RWCOM,  SDST            /ANY CHECKSUM ERRORS?
00656  7640          SZA CLA         /OR CHECKSUM ERRORS?
00657  5333          JMP TRY3        /PLEASE NOTE THAT THE LINK IS ALWAYS
                                     /SET AT RWCOM. GETCHK SETS IT.
             /       TAD PGCT        /NO ERROR..FINISHED XFER?
             /       TAD CM200
             /       SNA
00660  2360          ISZ PGCT        / (DJG)
00661  7410          SKP             / (DJG)
00662  5342          JMP EXIT        /ALL DONE. GET OUT
             /       DCA PGCT        /NEW PAGE COUNT
00663  2046          ISZ BLOCK       /NEXT BLOCK TO XFER
             /       TAD WCOUNT      /FORM NEXT BUFFER ADDRESS
             /       CIA
             /       TAD BUFF
             /       DCA XBUFF       /SAVE ADDRESS (DJG)
             /       DCA BUFF        / (DJG)
00664  7120          CLL CML         /FORCES MOTION FORWARD
00665  7232  GO,     CLA CML RTR     /LINK BECOMES MOTION BIT
00666  1364          TAD C1000
00667  1355          TAD UNIT        /PUT IN 'GO' AND UNIT #
00670  6774          SDLC            /LOOK FOR BLOCK NO.
00671  7200          CLA
00672  1044          TAD XBUFF
00673  3043          DCA OLDBUF
00674  6214          RDF
00675  1352          TAD C6201
00676  3334          DCA OLDFLD
00677  4753          JMS I CRDQUD    /WAIT AT LEAST 6 LINES TO LOOK
00700  4753          JMS I CRDQUD
00701  7600  CM200,  7600            /COULD HAVE SAVED A LOC. HERE
00702  6771  SRCH,   SDSS
00703  5302          JMP .-1         /WAIT FOR SINGLE LINE FLAG
00704  6776          SDRC
00705  7106          CLL RTL         /DIRECTION TO LINK. INFO BITS
                                     /ARE SHIFTED.
00706  0045          AND C374        /ISOLATE MARK TRACK BITS
00707  1325          TAD M110        /IS IT END ZONE?
00710  7450          SNA             /THE LINK STAYS SAME THRU THIS
00711  5327          JMP ENDZ
00712  1357          TAD M20         /CHECK FOR BLOCK MARK
00713  7640          SZA CLA
00714  5302          JMP SRCH
00715  6777          SDRD            /GET THE BLOCK NUMBER
00716  7430          SZL             /IF WE ARE IN REVERSE, LOOK FOR 3

/TD8E Dectape DUMP Program                            PAL8-V10A 06-AUG-77 PAGE 1-5

                                     /BLOCKS BEFORE TARGET BLOCK. THIS
                                     /ALLOWS TURNAROUND AND UP TO SPEED.
00717  1377          TAD C3          /REVERSE
00720  7040          CMA
00721  1046          TAD BLOCK
00722  7040          CMA             /IS IT RIGHT BLOCK?
00723  7450          SNA
00724  5372          JMP FOUND       /YES..HOORAY!
00725  7670  M110,   SZL SNA CLA     /NO, BUT ARE WE HEADED FOR IT?
                                     /ABOVE SNA IS SUPERFLUOUS.
00726  5302          JMP SRCH        /YES
00727  6776  ENDZ,   SDRC            /WE ARE IN THE END ZONE
00730  7106          CLL RTL         /DIRECTION TO LINK
00731  7200          CLA             /ARE WE IN REVERSE?
00732  5265          JMP GO          /YES..TURN US AROUND
             /IF WE ARE IN THE END ZONE GOING FORWARD, IT IS AN ERROR
00733  7200  TRY3,   CLA
00734  7000  OLDFLD, NOP
00735  1043          TAD OLDBUF
00736  3044          DCA XBUFF
00737  2363          ISZ TRYCNT
00740  5265          JMP GO          /TRY 3 TIMES
00741  5344          JMP FATAL               /LINK OFF MEANS AC=4000 ON RETURN
00742  2200  EXIT,   ISZ DTA0
00743  7120          CLL CML         /AC=0 ON NORMAL RETURN
00744  1355  FATAL,  TAD UNIT
00745  6774          SDLC            /STOP THE UNIT
00746  7230          CLA CML RAR
00747  7402  LEAVE,  HLT
00750  5600          JMP I DTA0


/TD8E Dectape DUMP Program                            PAL8-V10A 06-AUG-77 PAGE 2


00751  6203  C6203,  6203
00752  6201  C6201,  6201
00753  1126  CRDQUD, RDQUAD
             /WCOUNT,        0       (MOVED PAGE 0 DJG)
00754  0000  BUFF,   0
             /MWORDS,        -WDSBLK (MOVED PAGE 0 DJG)
00755  0000  UNIT,   0
00756  1166  CXFUN,  XFUNCT
00757  7760  M20,    -20
00760  0000  PGCT,   0                                                               /TOTAL PAGES TO TRANSFER
00761  1173  CXWCT,  XWCT
00762  0100  C100,   100
00763  7775  TRYCNT, -3
00764  1000  C1000,  1000


       0772          *ORIGIN+172
00772  7630  FOUND,  SZL CLA         /RIGHT BLOCK. HOW ABOUT DIRECTION?
00773  5265          JMP GO          /WRONG..TURN AROUND
00774  1355          TAD UNIT        /PUT UNIT INTO LINK
00775  7104          CLL RAL         /AC IS NOW 0
00776  0070  C70,    70              /********DON'T MOVE THIS!!!!******
00777  0003  C3,     3
             /       TAD BUFF        /GET BUFFER ADDRESS (DJG)
             /XFIELD, HLT         /INTO NEXT PAGE

/TD8E Dectape DUMP Program                            PAL8-V10A 06-AUG-77 PAGE 3

       1000         *ORIGIN+200
01000  6202          CIF MFIELD
             /       DCA XBUFF       /SAVE ADDRESS (DJG)
01001  7010          RAR             /NOW GET UNIT #
01002  3333          DCA XUNIT
01003  6776          SDRC
01004  6774          SDLC
01005  6771  REVGRD, SDSS
01006  5205          JMP .-1         /LOOK FOR REVERSE GUARD
01007  6776          SDRC
01010  0261          AND K77
01011  1367          TAD CM32        /IS IT REVERSE GUARD?
01012  7640          SZA CLA
01013  5205          JMP REVGRD      /NO.KEEP LOOKING
01014  1373          TAD XWCT
01015  3372          DCA WORDS       /WORD COUNTER
01016  1366          TAD XFUNCT      /GET FUNCTION  READ OR WRITE
01017  7700  K7700,  SMA CLA
01020  5262          JMP READ        /NEG. IS WRITE
01021  6776  WRITE,  SDRC
01022  0316          AND C300        /CHECK FOR WRITE LOCK AND SELECT ERROR
01023  7120          CLL CML         /LOCK OUT AND SELECT ARE AC 0 ERRORS
01024  7640          SZA CLA
01025  5764          JMP I CFATAL    /FATAL ERROR. LINK MUST BE ON
01026  4326          JMS RDQUAD      /NO ONE EVER USES THIS WORD!
01027  7600  C7600,  7600
01030  1370          TAD C1400
01031  1333          TAD XUNIT       /INITIATE WRITE MODE
01032  6774          SDLC
01033  7240          CLA CMA
01034  4317          JMS WRQUAD      /PUT 77 IN REVERSE CHECKSUM
01035  7240          CLA CMA
01036  3371          DCA CHKSUM
01037  1444  WRLP,   TAD I XBUFF     /GLORY BE! THE ACTUAL WRITE!
01040  4317          JMS WRQUAD
01041  2044          ISZ XBUFF       /BUMP CORE POINTER
01042  5247          JMP STFLD1+1    /NOT AT END OF FIELD (DJG)
01043  6214          RDF
01044  1377          TAD (6211
01045  3246          DCA STFLD1
01046  7000  STFLD1, NOP
01047  2372          ISZ WORDS       /DONE THIS BLOCK?
01050  5237          JMP WRLP        /NOT YET..LOOP A WHILE
01051  1366          TAD XFUNCT      /IS THE OPERATION FOR WDSBLK PER BLOCK?
01052  7112          CLL RTR         /IF NO, WRITE A 0 WORD
01053  7630          SZL CLA
01054  4317          JMS WRQUAD      /WRITE A WORD OF 0
01055  4350          JMS GETCHK      /DO THE CHECK SUM
01056  4317          JMS WRQUAD      /WRITE FORWARD CHECKSUM
01057  4317          JMS WRQUAD      /ALLOW CHECKSUM TO BE WRITTEN
01060  5765          JMP I CRWCOM
01061  0077  K77,    77              /ABOVE MAY SKIP (NOT ANYMORE DJG)

/TD8E Dectape DUMP Program                            PAL8-V10A 06-AUG-77 PAGE 4

01062  4326  READ,  JMS RDQUAD
01063  4326          JMS RDQUAD
01064  4326          JMS RDQUAD      /SKIP CONTROL WORDS
01065  0261          AND K77
01066  1217          TAD K7700       /TACK 7700 ONTO CHECKSUM.
01067  3371          DCA CHKSUM      /CHECKSUM ONLY LOW 6 BITS ANYWAY
01070  4326  RDLP,   JMS RDQUAD
01071  4333          JMS EQUFUN      /COMPUT CHECKSUM AS WE GO
01072  3444          DCA I XBUFF     /IT GETS CONDENSED LATER
01073  2044          ISZ XBUFF       /AT END OF FIELD?
01074  5301          JMP STFLD2+1    /NOT AT END OF FIELD (DJG)
01075  6214          RDF
01076  1377          TAD (6211
01077  3300          DCA STFLD2
01100  7000  STFLD2, NOP
01101  2372          ISZ WORDS       /DONE THIS OP?
01102  5270          JMP RDLP        /NO SUCH LUCK
01103  1366          TAD XFUNCT      /IF OP WAS FOR WDSBLK-1, READ AND
01104  7112          CLL RTR         /CHECKSUM THE LAST TAPE WORD
01105  7620          SNL CLA
01106  5311          JMP RDLP2
01107  4326          JMS RDQUAD      /NOT NEEDED FOR WDSBLK/BLOCK
01110  4333          JMS EQUFUN      /CHECKSUM IT
01111  4326  RDLP2,  JMS RDQUAD      /READ CHECKSUM
01112  0217          AND K7700
01113  4333          JMS EQUFUN
01114  4350          JMS GETCHK      /GET SIX BIT CHECKSUM
01115  5765          JMP I CRWCOM
01116  0300  C300,   300             /PROTECTION (NOT ANYMORE DJG)

01117  0000  WRQUAD, 0               /WRITE OUT A 12 BIT WORD
01120  4333          JMS EQUFUN      /ADD THIS TO CHECKSUM
01121  6773          SDSQ            /SKIP ON QUADLINE FLAG
01122  5321          JMP .-1
01123  6775          SDLD            /LOAD DATA  ONTO BUS
01124  7200          CLA             /SDLD DOESN'T CLEAR AC
01125  5717          JMP I WRQUAD

01126  0000  RDQUAD, 0               /READ A 12 BIT WORD
01127  6773          SDSQ
01130  5327          JMP .-1
01131  6777          SDRD            /READ DATA
01132  5726          JMP I RDQUAD


/TD8E Dectape DUMP Program                            PAL8-V10A 06-AUG-77 PAGE 5

             XUNIT,
01133  0000  EQUFUN, 0               /COMPUTE EQUIVALENCE CHECKSUM
01134  7040          CMA
01135  3374          DCA EQUTMP      /ACTUALLY CHECKSUMS ON DECTAPE ARE
01136  1374          TAD EQUTMP      /EQUIVALENCE OF ALL WORDS IN A RECORD
01137  0371          AND CHKSUM      /SIX BITS AT A TIME. BUT SINCE EQUIVALENCE
01140  7041          CIA             /IS ASSOCIATIVE, WE CAN DO IT 12
01141  7104          CLL RAL         /BITS AT A TIME AND CONDENSE LATER.
01142  1374          TAD EQUTMP      /THIS ROUTINE USES THESE IDENTITIES:
01143  1371          TAD CHKSUM      /A+B=(A.XOR.B)+2*(A.AND.B)
01144  3371          DCA CHKSUM      /A.EQU.B=.NOT.(A.XOR.B)=A.XOR.(.NOT.B)
01145  1374          TAD EQUTMP      /A.EQU.B=(A+(.NOT.B))-2*(A.AND.(.NOT.B))
01146  7040          CMA
01147  5733          JMP I EQUFUN

01150  0000  GETCHK, 0               /FORM 6 BIT CHECKSUM
01151  7200          CLA
01152  1371          TAD CHKSUM
01153  7040          CMA
01154  7106          CLL RTL
01155  7006          RTL
01156  7006          RTL
01157  4333          JMS EQUFUN
01160  7320          CLA CLL CML     /FORCES LINK ON AT RWCOM
01161  1371          TAD CHKSUM
01162  0217          AND K7700
01163  5750          JMP I GETCHK

01164  0744  CFATAL, FATAL
01165  0655  CRWCOM, RWCOM
01166  0000  XFUNCT, 0                                                               / FUNCTION SET IN FIRST PAGE
01167  7746  CM32,   -32
01170  1400  C1400,  1400
01171  0000  CHKSUM, 0
01172  0000  WORDS,  0
01173  0000  XWCT,   0
01174  0000  EQUTMP, 0

01177  6211
       0020          *20
00020  7774  RETRY,  7774            / RETRY UP TO 4 TIME
00021  2702  NUMBLK, 2702            / NUMBER OF BLOCKS
00022  7577  MWORDS, -WDSBLK         / WORDS PER BLOCK
00023  0000  WCOUNT, 0                                                               / MASTER WORD COUNT
00024  0037  BLKFLD, 37              / 31 129 word blocks per field
                                     / WRAPPING PAST END OF LAST FIELD DOESN'T WORK
00025  0000  FIELDS, 0
00026  0000  RDSIZE, 0               / NUMBER BLOCKS PER READ
00027  0000  CBLOCK, 0               / CURRENT BLOCK TO XFER
00030  0000  CLKSUM, 0
00031  0000  DRVSEL, 0
00032  0377  READST, 377
00033  0000  LOC,    0
00034  0000  LEN,    0
00035  0000  BCNT,   0                                                               / BLOCKS TO SEND TO PC

/TD8E Dectape DUMP Program                            PAL8-V10A 06-AUG-77 PAGE 5-1

00036  0000  TEMP,   0
00037  0017  C17,    17
00040  0360  C360,   360
00041  0000  CHKSM,  0
00042  0000  ERRCN2, 0
00043  0000  OLDBUF, 0               / USED BY DTA0 ROUTINE
00044  0000  XBUFF,  0               / USED BY DTA0 ROUTINE
00045  0374  C374,   374             / USED BY DTA0 ROUTINE
00046  0000  BLOCK,  0               / USED BY DTA0 ROUTINE

       0140          *140
00140  7402  FINISH, HLT             / Normal good halt
00141  5777'         JMP START

       0200          *200
00200  6201  START,  CDF 0
00201  6007          CAF
00202  7704          CLA CLL OSR     / Get drive
00203  0377          AND (1
00204  7012          RTR
00205  3031          DCA DRVSEL
00206  7704          CLA CLL OSR     / Get max field
00207  7012          RTR
00210  7010          RAR
00211  0376          AND (7
00212  7450          SNA
00213  7402          HLT             / Must have at least 1 field for buffer
00214  7041          CIA
00215  3025          DCA FIELDS
00216  3042          DCA ERRCN2
00217  1024  RDSZLP, TAD BLKFLD      / Multiply by number of fields available
00220  2025          ISZ FIELDS
00221  5217          JMP RDSZLP
00222  3026          DCA RDSIZE      / NUMBER BLOCK PER READ
00223  3027          DCA CBLOCK
00224  3041          DCA CHKSM

00225  7200  DUMPLP, CLA
00226  1026          TAD RDSIZE
00227  1027          TAD CBLOCK
00230  7041          CIA
00231  1021          TAD NUMBLK      / MORE BLOCKS LEFT THAN READSIZE?
00232  7500          SMA             / NO, READ NUMBER LEFT
00233  7200          CLA             / YES, ONLY READ RDSIZE
00234  1026          TAD RDSIZE
00235  7450          SNA             / ANY MORE BLOCKS?
00236  5267          JMP DONE        / NO, DO FINISH STUFF
00237  3245          DCA ARGSZ
00240  1027          TAD CBLOCK
00241  3247          DCA ARGBK
00242  1031          TAD DRVSEL
00243  4775'         JMS DTA0
00244  0010          0010              / READ STARTING IN FIELD 1
00245  0000  ARGSZ,  0
00246  0000          0

/TD8E Dectape DUMP Program                            PAL8-V10A 06-AUG-77 PAGE 5-2

00247  0000  ARGBK,  0
00250  5321          JMP ERRRET
00251  1374          TAD (377        / All blocks good
00252  3032          DCA READST
                                     / Send data, each block starts with FF
00253  7300          CLA CLL         / then 2 12 bit words in 3 bytes
00254  3033          DCA LOC         / ERRRET DUPLICATES SOME OF THIS
00255  1245          TAD ARGSZ
00256  7041          CIA
00257  3035          DCA BCNT        / Setup loop counter with number blocks read
00260  6211          CDF 10
00261  4773' OUTBL1, JMS OUTBLK      / Send a block
00262  2027          ISZ CBLOCK
00263  2035          ISZ BCNT        / Send all read?
00264  5261          JMP OUTBL1      / No
00265  6201          CDF 0
00266  5225          JMP DUMPLP      / Go read next batch


00267  7200  DONE,   CLA             / Send FE and -checksum of all words
00270  1372          TAD (376
00271  4771'         JMS PUN
00272  7300          CLA CLL
00273  1041          TAD CHKSM       / Send checksum in two bytes, low bits first
00274  7041          CIA
00275  4771'         JMS PUN
00276  7300          CLA CLL
00277  1041          TAD CHKSM
00300  7041          CIA
00301  7012          RTR
00302  7012          RTR
00303  7012          RTR
00304  7012          RTR
00305  0037          AND C17
00306  4771'         JMS PUN
00307  7200          CLA
00310  1031          TAD DRVSEL
00311  4775'         JMS DTA0        / REWIND TAPE
00312  0010          0010
00313  0001          1
00314  0000          0
00315  0000          0
00316  7000          NOP
00317  1042          TAD ERRCN2      / Leave AC with # of errors
00320  5140                                  JMP FINISH

                                     /SEND GOOD BLOCKS READ WITH GOOD BLOCK FLAG
                                     /THEN BAD WITH BAD BLOCK FLAG.
             ERRRET,
             /       HLT             / ****** If we want to stop on error
00321  6211          CDF 10
00322  7300          CLA CLL
00323  3033          DCA LOC
00324  1027          TAD CBLOCK
00325  7041          CIA

/TD8E Dectape DUMP Program                            PAL8-V10A 06-AUG-77 PAGE 5-3

00326  1046                  TAD BLOCK       /Get - number good blocks read
00327  7041          CIA             /Last was bad
00330  7450                                  SNA
00331  5341                                  JMP FSTBAD                      /First block is bad, no good to send
00332  3035          DCA BCNT
00333  1374          TAD (377
00334  3032          DCA READST
00335  4773' OUTBL2, JMS OUTBLK      /Send good blocks
00336  2027          ISZ CBLOCK
00337  2035          ISZ BCNT
00340  5335          JMP OUTBL2
00341  1370  FSTBAD, TAD (375        /NOW SEND BAD BLOCK
00342  3032          DCA READST
00343  4773'         JMS OUTBLK
00344  2027          ISZ CBLOCK
00345  2042          ISZ ERRCN2
00346  6201          CDF 0
00347  5225          JMP DUMPLP      /And read from here on

00370  0375
00371  0466
00372  0376
00373  0400
00374  0377
00375  0600
00376  0007
00377  0001
       0400          PAGE
00400  0000  OUTBLK, 0               /Send a block of data out serial port
00401  7200          CLA
00402  1023          TAD WCOUNT
00403  3034          DCA LEN
00404  1032          TAD READST      /Send good/bad flag
00405  4266          JMS PUN
00406  7300  OUT,    CLA CLL
00407  1433          TAD I LOC
00410  1041          TAD CHKSM       / Keep checksum of all words sent
00411  3041          DCA CHKSM
00412  1433          TAD I LOC       / Send 2 words as 3 bytes
00413  7112          CLL RTR                                 / WvdM: Left 8 Bits first
00414  7012          RTR                                                     / WvdM:
00415  4266          JMS PUN
00416  7300          CLA CLL
00417  1433          TAD I LOC
             /        RTR             / Shift top 4 bits to low 4
             /        RTR
             /        RTR
             /        RTR
00420  0037          AND C17
00421  7106                                  CLL RTL                                 / WvdM: Low 4 Bits to high byte 2
00422  7006                                  RTL                                                     / WvdM
00423  3036          DCA TEMP
00424  2033          ISZ LOC
00425  5232          JMP STFLD3+1    /NOT AT END OF FIELD (DJG)
00426  6214          RDF             /At end, inc to next field

/TD8E Dectape DUMP Program                            PAL8-V10A 06-AUG-77 PAGE 5-4

00427  1377          TAD (6211                               /BUILD CDF
00430  3231          DCA STFLD3
00431  7000  STFLD3, NOP
00432  2034                                  ISZ LEN                                 /END IF BUFFER?
00433  7410                                  SKP                                                     /NO
00434  5263                                  JMP ENDBK                               /YES
00435  1433          TAD I LOC
00436  1041          TAD CHKSM
00437  3041          DCA CHKSM
00440  1433          TAD I LOC
00441  7106          CLL RTL
00442  7006          RTL
00443  7004          RAL                                                     / New: High 4 bits to low byte 2
00444  0037          AND C17                                 / (WvdM) was AND C360
00445  1036          TAD TEMP
00446  4266          JMS PUN
00447  7300          CLA CLL
00450  1433          TAD I LOC
             /        RTR                                            / WvdM: byte 3
             /        RTR
00451  4266          JMS PUN
00452  2033          ISZ LOC
00453  5260          JMP STFLD4+1    /NOT AT END OF FIELD (DJG)
00454  6214          RDF
00455  1377          TAD (6211                               /BUILD CDF
00456  3257          DCA STFLD4
00457  7000  STFLD4, NOP
00460  2034          ISZ LEN
00461  5206          JMP OUT
00462  5600          JMP I OUTBLK
00463  1036  ENDBK,  TAD TEMP                                /SEND LAST PART OF WORD
00464  4266          JMS PUN
00465  5600          JMP I OUTBLK

00466  0000  PUN,    0               / Send byte out serial port
00467  6026          PLS             / Punch for testing with emulator
             /       TLS2            / Send out console
00470  7300          CLA CLL
00471  1027          TAD CBLOCK
00472  6021          PSF
             /       TSF2            /Wait until character sent
00473  5272          JMP .-1
00474  7200          CLA
00475  5666          JMP I PUN

00577  6211
                     $
00177  0200

/TD8E Dectape DUMP Program                            PAL8-V10A 06-AUG-77 PAGE 6

AFIELD 0000      KSF2   6031      WDSBLK 0201      
ARGBK  0247      K77    1061      WORDS  1172      
ARGSZ  0245      K7700  1017      WRITE  1021      
BCNT   0035      LEAVE  0747      WRLP   1037      
BLKFLD 0024      LEN    0034      WRQUAD 1117      
BLOCK  0046      LOC    0033      XBUFF  0044      
BUFF   0754      MFIELD 0000      XFIELD 0653      
CBLOCK 0027      MWORDS 0022      XFUNCT 1166      
CFATAL 1164      M110   0725      XUNIT  1133      
CHKSM  0041      M20    0757      XWCT   1173      
CHKSUM 1171      NUMBLK 0021      
CLKSUM 0030      OLDBUF 0043      
CM200  0701      OLDFLD 0734      
CM32   1167      ORIGIN 0600      
CRDQUD 0753      OUT    0406      
CRWCOM 1165      OUTAD  0040      
CXFUN  0756      OUTBLK 0400      
CXWCT  0761      OUTBL1 0261      
C100   0762      OUTBL2 0335      
C1000  0764      PGCT   0760      
C1400  1170      PUN    0466      
C17    0037      RDLP   1070      
C3     0777      RDLP2  1111      
C300   1116      RDQUAD 1126      
C360   0040      RDSIZE 0026      
C374   0045      RDSZLP 0217      
C6201  0752      READ   1062      
C6203  0751      READST 0032      
C70    0776      RETRY  0020      
C7600  1027      REVGRD 1005      
DONE   0267      RWCOM  0655      
DRIVE  0010      SDLC   6774      
DRVSEL 0031      SDLD   6775      
DTA0   0600      SDRC   6776      
DUMPLP 0225      SDRD   6777      
ENDBK  0463      SDSQ   6773      
ENDZ   0727      SDSS   6771      
EQUFUN 1133      SDST   6772      
EQUTMP 1174      SRCH   0702      
ERRCN2 0042      START  0200      
ERRRET 0321      STFLD1 1046      
EXIT   0742      STFLD2 1100      
FATAL  0744      STFLD3 0431      
FIELDS 0025      STFLD4 0457      
FINISH 0140      TCF2   6042      
FOUND  0772      TEMP   0036      
FSTBAD 0341      TFL2   6040      
GETCHK 1150      TLS2   6046      
GO     0665      TPC2   6044      
INAD   0030      TRYCNT 0763      
KCC2   6032      TRY3   0733      
KCF2   6030      TSF2   6041      
KIE2   6035      TSK2   6045      
KRB2   6036      UNIT   0755      
KRS2   6034      WCOUNT 0023      



ERRORS DETECTED: 0
LINKS GENERATED: 9