File: TD8EA.LS of Disk: V50/Source/Source-Listing-PAL-1
(Source file text) 


/TD8E HANDLER TD8E-A VERSION 50		  PAL8-V50A 29-MAI-87 PAGE 1

		/TD8E HANDLER TD8E-A VERSION 50
		/
		/
		/
		/
		/
		/
		/
		/
		/
		/COPYRIGHT  (C)  1974,1975,1977 BY DIGITAL EQUIPMENT CORPORATION
		/		 AND 2015 W. VAN DER MARK
		/
		/
		/
		/
		/
		/
		/
		/
		/
		/
		/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
		/AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
		/CORPORATION.  DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
		/FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
		/
		/THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
		/UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
		/(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
		/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
		/
		/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
		/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
		/DIGITAL.
		/
		/
		/
		/
		/
		/
		/
		/
		/
		/
	0000		*0
000000  7776		-2
000001  2404	DEVICE TD8A;DEVICE DTA0;4210;4010;ZBLOCK 2
000002  7001
000003  0424
000004  0160
000005  4210
000006  4010
000007  0000
000011  2404	DEVICE TD8A;DEVICE DTA1;4210;4014;ZBLOCK 2

/TD8E HANDLER TD8E-A VERSION 50		  PAL8-V50A 29-MAI-87 PAGE 1-1

000012  7001
000013  0424
000014  0161
000015  4210
000016  4014
000017  0000

	6771		SDSS=6771	/SKIP ON SINGLE LINE FLAG
	6772		SDST=6772	/SKIP ON TIME ERROR
	6773		SDSQ=6773	/SKIP ON QUAD LINE FLAG
	6774		SDLC=6774	/LOAD TAPE COMMAND REGISTER
	6775		SDLD=6775	/LOAD DATA REGISTER
	6776		SDRC=6776	/READ COMMAND REGISTER
	6777		SDRD=6777	/READ DATA REGISTER

	0030		TDVERSION="X&77

		/V3 CHANGES:

		/1.	VERSION # IS NOW 1
		/2.	PARITY ^C IS NOW LEGAL
		/3.	^C CHECK NO LONGER WILL ADVANCE READER

		/MAINTENANCE RELEASE CHANGES:

		/4.	FIXED ^C BUG
		/5.	MADE CODE IMPROVEMENTS
		/6.	FIXED RETRY BUG


	0200		*200

000200  7600	NXINIT,	7600	/CLEAR AC HERE!!!
000201  4763		JMS I CINIT2	/PART OF INITIALIZATION..DO THE PART
000202  3250	BASE2,	DCA JINIT	/ON SECOND PAGE AND THEN TO JINIT
000203  5250		JMP JINIT

000204  0000	BUFF,	0
000205  0000	PGCT,	0
000206  0000	FUNCT,	0
000207  1000	C1000,	1000

000210  0030	DTA0,	TDVERSION	/ENTRY FOR UNIT 0
000211  7300		CLA CLL
000212  5220		JMP DTA1X
000213  0000	UNIT,	0		/FILLER WORD
000214  0030	DTA1,	TDVERSION	/ENTRY FOR UNIT 1
000215  7320		CLA CLL CML
000216  1214		TAD DTA1
000217  3210		DCA DTA0	/PICK UP ARGS AT DTA0
000220  7010	DTA1X,	RAR
000221  3213		DCA UNIT	/UNIT # FROM LINK
000222  6214		RDF
000223  1247		TAD C6203
000224  3347		DCA LEAVE	/SET UP EXIT FROM HANDLER

/TD8E HANDLER TD8E-A VERSION 50		  PAL8-V50A 29-MAI-87 PAGE 1-2

000225  1610		TAD I DTA0
000226  3206		DCA FUNCT	/SAVE FUNCTION WORD
000227  1206		TAD FUNCT
000230  7104		CLL RAL
000231  0200	C200,	AND CM200	/GET A PAGE COUNT
000232  3205		DCA PGCT
000233  1206		TAD FUNCT
000234  0374	C374,	AND C70		/ISOLATE FIELD OF TRANSFER
000235  1247		TAD C6203
000236  3377		DCA XFIELD
000237  2210		ISZ DTA0	/POINT TO BUFFER
000240  1610		TAD I DTA0
000241  3204		DCA BUFF
000242  2210		ISZ DTA0	/POINT TO RECORD
000243  1610		TAD I DTA0
000244  7104		CLL RAL		/CONVERT TO DECTAPE BLOCKS
000245  3214		DCA TBLOCK
000246  2210		ISZ DTA0	/POINT TO ERROR RET.
000247  6203	C6203,	CIF CDF 0

/TD8E HANDLER TD8E-A VERSION 50		  PAL8-V50A 29-MAI-87 PAGE 2




000250  5351	JINIT,	JMP INIT	/FIRST TIME THRU IT GETS EXECUTED
					/THE RETURN FROM INIT ZEROES IT
000251  7346		CLA CLL CMA RTL
000252  3352		DCA ERCNT	/3 ERROR TRIES
000253  1213		TAD UNIT
000254  3765		DCA I CXUNIT
000255  4764		JMS I CSELCT	/CHECK FOR SELEC ERROR
000256  5255		JMP .-1		/LOOPS IF NO ^C AND SELECT ERROR
000257  1206		TAD FUNCT
000260  7110		CLL RAR
000261  5277		JMP GO		/OK.. START THE SEARCH
000262  6772	TRWCOM,	SDST		/TIME OR CHECK SUM ERROR?
000263  7640		SZA CLA
000264  5336		JMP TRY3	/YES TRY UP TO 3 TIMES
000265  1205		TAD PGCT	/NO.. IS PAGE COUNT EXHAUSTED?
000266  1200		TAD CM200
000267  7450		SNA
000270  5342		JMP EXIT	/YES.. DONE THIS TRANSFER
000271  3205		DCA PGCT	/NEW PAGE COUNT
000272  2214		ISZ TBLOCK
000273  1204		TAD BUFF
000274  1231		TAD C200	/GET NEW BUFFER ADDRESS
000275  3204		DCA BUFF
000276  7120		CLL CML		/FORCE FORWARD MOTION
000277  7232	GO,	CLA CML RTR	/PUT IN DIRECTION BIT
000300  1207		TAD C1000
000301  1213		TAD UNIT
000302  6774		SDLC		/INITIATE THE MOTION
000303  4762		JMS I CRDQAD	/WAIT FOR 8 LINES TO PASS
000304  4762		JMS I CRDQAD
000305  7760	M20,	7760		/DON'T CARE IF IT DOES SKIP!!!
000306  6771	TSRCH,	SDSS		/WAIT FOR BLOCK MARK OR END ZONE
000307  5306		JMP .-1
000310  6776		SDRC
000311  7106		CLL RTL		/DIRECTION TO LINK, DATA TO AC 4-9
000312  0234		AND C374	/ISOLATE M.T BITS
000313  1331		TAD M110	/IS IT END ZONE?
000314  7450		SNA
000315  5333		JMP ENDZ	/YES..DO SOMETHING REASONABLE
000316  1305		TAD M20		/HOW ABOUT BLOCK MARK?
000317  7640		SZA CLA
000320  5306		JMP TSRCH	/NEITHER..KEEP LOOKING
000321  6777		SDRD		/WHAT IS THIS BLOCK'S #?
000322  7430		SZL		/IF IN REVERSE, LOOK FOR 3 BEFORE
000323  1375		TAD TC3		/THE ACTUAL TARGET BLOCK
000324  7040		CMA
000325  1214		TAD TBLOCK
000326  7040		CMA 
000327  7450		SNA		/IS THIS THE BLOCK?
000330  5367		JMP TFOUND	/YES..HAVE CORRECT ONE
000331  7670	M110,	SZL SNA CLA	/ARE WE HEADED PROPERLY?
000332  5306		JMP TSRCH	/YES.. KEEP LOOKING

/TD8E HANDLER TD8E-A VERSION 50		  PAL8-V50A 29-MAI-87 PAGE 2-1

000333  6776	ENDZ,	SDRC		/IF WE ARE IN END ZONE FORWARD, WE LOSE
000334  7106		CLL RTL
000335  5277		JMP GO		/EXECUTE TURN AROUND AND SEARCH

/TD8E HANDLER TD8E-A VERSION 50		  PAL8-V50A 29-MAI-87 PAGE 3



000336  7300	TRY3,	CLA CLL		/V3C
000337  2352		ISZ ERCNT	/TRIED 3 TIMES?
000340  5277		JMP GO
000341  5344		JMP FATAL
000342  2210	EXIT,	ISZ DTA0	/NORMAL RETURN
000343  7120		CLL CML
000344  1213	FATAL,	TAD UNIT	/STOP TAPE FIRST
000345  6774		SDLC
000346  7230		CLA CML RAR	/EITHER 0 OR 4000 IN AC
000347  7402	LEAVE,	HLT	/GETS CIF CDF N
000350  5610		JMP I DTA0

000351  4351	INIT,	JMS .		/FIND OUT WHERE WE GOT LOADED
000352  1362	BASE,	TAD CRDQAD
000353  7510		SPA		/NEGATIVE ENDS LIST
000354  5200		JMP NXINIT
000355  1351		TAD INIT
000356  3362		DCA CRDQAD
000357  2356		ISZ .-1
000360  2352		ISZ BASE
000361  5352		JMP BASE

000362  0132	CRDQAD,	R4LINE-BASE
000363  0167	CINIT2,	INIT2-BASE
000364  0205	CSELCT,	SELECT-BASE
000365  0173	CXUNIT,	XUNIT-BASE

	0367		*367
000367  7630	TFOUND,	SZL CLA		/ARE WE IN RIGHT DIRECTION
000370  5277		JMP GO		/NOT YET
000371  1206		TAD FUNCT
000372  7104		CLL RAL		/R/W TO LINK
000373  7200		CLA
000374  0070	C70,	70
000375  0003	TC3,	3
000376  1204		TAD BUFF
000377  7402	XFIELD,	HLT		/CONTROL 'TRICKLES THROUGH

	0214	TBLOCK=DTA1
	0352	ERCNT=INIT+1
	0200	CM200=NXINIT
	0210	DTA2=DTA0
	0214	DTA3=DTA1
	0210	DTA4=DTA0
	0214	DTA5=DTA1
	0210	DTA6=DTA0
	0214	DTA7=DTA1

/TD8E HANDLER TD8E-A VERSION 50		  PAL8-V50A 29-MAI-87 PAGE 4



	0400		*400
000400  6202		CIF 0		/WE ARE IN FIELD 0
000401  3354		DCA XBUFF
000402  7010		RAR
000403  3341		DCA XFUNCT	/READ/WRITE TO FUNCTION
000404  6771	RGRD,	SDSS
000405  5204		JMP .-1		/LOOK FOR REVERSE GUARD PATTERN
000406  6776		SDRC
000407  0241		AND K77
000410  1355		TAD CM32
000411  7640		SZA CLA		/IF NOT REV. GUARD, KEEP LOOKING
000412  5204		JMP RGRD
000413  1226		TAD C7600
000414  3343		DCA WORDS	/128 WORDS/BLOCK
000415  1341		TAD XFUNCT
000416  7700	K7700,	SMA CLA		/IS IT READ OR WRITE?
000417  5251		JMP TREAD
000420  6776		SDRC		/CHECK FOR WRITE LOCKOUT
000421  0263		AND TC300
000422  7100		CLL		/SETUP TO RETRY IF WRITE LOCK
000423  7640		SZA CLA
000424  5752		JMP I CTRY3	/IF LOCKED OUT, ERROR
000425  4304		JMS R4LINE	/SKIP A WORD
000426  7600	C7600,	7600		/CLA
000427  1356		TAD C1400
000430  1345		TAD XUNIT
000431  6774		SDLC		/TURN ON WRITE HEAD
000432  7240		CLA CMA
000433  4275		JMS W4LINE	/7777 IN REV. CHECKSUM
000434  7240		CLA CMA
000435  3342		DCA CSUM	/AND ALSO TAPE CHECKSUM
000436  1754	WRTLP,	TAD I XBUFF
000437  4275		JMS W4LINE
000440  2354		ISZ XBUFF	/INCREMENT BUFF. ADD.
000441  0077	K77,	77
000442  2343		ISZ WORDS	/DONE A BLOCK?
000443  5236		JMP WRTLP
000444  4275		JMS W4LINE	/A 129 TH WORD OF 0
000445  4326		JMS GCHK	/GET 6 BIT CHECKSUM
000446  4275		JMS W4LINE	/WRITE IT TO TAPE
000447  4275		JMS W4LINE	/LET CHECK SUM FINISH
000450  5753		JMP I CRWCOM	/SEE IF WE ARE FINISHED

/TD8E HANDLER TD8E-A VERSION 50		  PAL8-V50A 29-MAI-87 PAGE 5




000451  4304	TREAD,	JMS R4LINE
000452  4304		JMS R4LINE	/SKIP CONTROL WORDS
000453  4304		JMS R4LINE
000454  0241		AND K77		/CHECKSUM
000455  1216		TAD K7700
000456  3342		DCA CSUM
000457  4304	RDLP,	JMS R4LINE
000460  4311		JMS EFUN	/ADD WORD TO CHECKSUM
000461  3754		DCA I XBUFF
000462  2354		ISZ XBUFF
000463  0300	TC300,	300
000464  2343		ISZ WORDS	/DONE BLOCK?
000465  5257		JMP RDLP
000466  4304		JMS R4LINE
000467  4311		JMS EFUN	/CHECK SUM 129 TH WORD
000470  4304		JMS R4LINE
000471  0216		AND K7700	/READ CHECKSUM
000472  4311		JMS EFUN
000473  4326		JMS GCHK	/COMPARE TAPE AND OUR CHECKSUM
000474  5753		JMP I CRWCOM

000475  0000	W4LINE,	0		/ADD TO CHECKSUM AND WRITE A 12 BIT
000476  4311		JMS EFUN	/WORD
000477  6773		SDSQ
000500  5277		JMP .-1		/SKIP ON QUAD LINE FLAG
000501  6775		SDLD
000502  7200		CLA		/AC IS NOT CLEARED AFTER SDLD
000503  5675		JMP I W4LINE

000504  0000	R4LINE,	0		/WAIT FOR QUAD FLAG AND READ
000505  6773		SDSQ
000506  5305		JMP .-1
000507  6777		SDRD
000510  5704		JMP I R4LINE

000511  0000	EFUN,	0		/COMPUTE EQUIVALENCE CHECKSUM
000512  7040		CMA
000513  3344		DCA ETMP	/ACTUALLY CHECKSUMS ON DECTAPE ARE
000514  1344		TAD ETMP	/EQUIVALENCE OF ALL WORDS IN A RCORD
000515  0342		AND CSUM	/6 BITS AT A TIME. SINCE EQUIVALENCE
000516  7041		CIA		/IS ASSOCIATIVE WE DO IT 12 AT A TIME
000517  7104		CLL RAL		/AND CONDENSE LATER.
000520  1344		TAD ETMP	/IDENTITIES USED ARE:
000521  1342		TAD CSUM	/A+B=(A.XOR.B)+2*(A.AND.B)
000522  3342		DCA CSUM	/A.EQU.B=.NOT.(A.XOR.B)=A.XOR.(.NOT.B)
000523  1344		TAD ETMP	/A.EQU.B=(A+(.NOT.B))-2*(A.AND.(.NOT.B))
000524  7040		CMA
000525  5711		JMP I EFUN


/TD8E HANDLER TD8E-A VERSION 50		  PAL8-V50A 29-MAI-87 PAGE 6



000526  0000	GCHK,	0		/FORM 6 BIT CHECKSUM
000527  7200		CLA 
000530  1342		TAD CSUM
000531  7146		CLL CMA RTL
000532  7006		RTL
000533  7006		RTL
000534  4311		JMS EFUN
000535  7320		CLA CLL CML
000536  1342		TAD CSUM
000537  0216		AND K7700
000540  5726		JMP I GCHK

000541  0000	INIT2,	0		/TIS INITIALIZES LOCS IN PAGE 2
000542  1352	INIT3,	TAD CTRY3
000543  7450		SNA
000544  5741		JMP I INIT2	/0 ENDS LIST
000545  1341		TAD INIT2
000546  3352		DCA CTRY3	/UPDATE THE LIST
000547  2346		ISZ .-1
000550  2342		ISZ INIT3
000551  5342		JMP INIT3

000552  0134	CTRY3,	TRY3-BASE2
000553  0060	CRWCOM,	TRWCOM-BASE2
000554  0000	XBUFF,	0		/0 MUST TERMINATE IT!!
000555  7746	CM32,	-32
000556  1400	C1400,	1400

000557  0000	SELECT,	0		/THIS ROUTINE CHECKS FOR SELECT
000560  1345		TAD XUNIT	/AND ^C TYPED
000561  6774		SDLC
000562  6776		SDRC		/GET STATUS AND SEE IF SELECT ERROR ON
000563  0376		AND C100
000564  7650		SNA CLA
000565  2357		ISZ SELECT	/NOPE .TAKE NORMAL OUT
000566  6031		KSF		/SEE IF FLAG IS UP
000567  5757		JMP I SELECT	/NO..EXIT
000570  1226		TAD C7600
000571  6034		KRS
000572  1377		TAD (-7603	/IS IT A ^C?
000573  7640		SZA CLA
000574  5757		JMP I SELECT	/NO..EXIT
000575  5626		JMP I C7600

000576  0100	C100,	100

	0541	XFUNCT=INIT2
	0542	CSUM=XFUNCT+1
	0543	WORDS=CSUM+1
	0544	ETMP=WORDS+1
	0545	XUNIT=ETMP+1
000577  0175
		$$$$$$$

/TD8E HANDLER TD8E-A VERSION 50		  PAL8-V50A 29-MAI-87 PAGE 7

BASE   0352      SDRD   6777      
BASE2  0202      SDSQ   6773      
BUFF   0204      SDSS   6771      
CINIT2 0363      SDST   6772      
CM200  0200      SELECT 0557      
CM32   0555      TBLOCK 0214      
CRDQAD 0362      TC3    0375      
CRWCOM 0553      TC300  0463      
CSELCT 0364      TDVERS 0030      
CSUM   0542      TFOUND 0367      
CTRY3  0552      TREAD  0451      
CXUNIT 0365      TRWCOM 0262      
C100   0576      TRY3   0336      
C1000  0207      TSRCH  0306      
C1400  0556      UNIT   0213      
C200   0231      WORDS  0543      
C374   0234      WRTLP  0436      
C6203  0247      W4LINE 0475      
C70    0374      XBUFF  0554      
C7600  0426      XFIELD 0377      
DTA0   0210      XFUNCT 0541      
DTA1   0214      XUNIT  0545      
DTA1X  0220      
DTA2   0210      
DTA3   0214      
DTA4   0210      
DTA5   0214      
DTA6   0210      
DTA7   0214      
EFUN   0511      
ENDZ   0333      
ERCNT  0352      
ETMP   0544      
EXIT   0342      
FATAL  0344      
FUNCT  0206      
GCHK   0526      
GO     0277      
INIT   0351      
INIT2  0541      
INIT3  0542      
JINIT  0250      
K77    0441      
K7700  0416      
LEAVE  0347      
M110   0331      
M20    0305      
NXINIT 0200      
PGCT   0205      
RDLP   0457      
RGRD   0404      
R4LINE 0504      
SDLC   6774      
SDLD   6775      
SDRC   6776      



ERRORS DETECTED: 0
LINKS GENERATED: 0