File: TD8ESY.PA of Disk: V50/Init/Build-Init
(Source file text) 

/TD8E SYSTEM RESIDENT (12K)
/
/
/
/
/
/
/
/
/
/COPYRIGHT  (C)  1974,1975 BY DIGITAL EQUIPMENT CORPORATION
/				 AND W. VAN DER MARK 2015
/
/
/
/
/
/
/
/
/
/
/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.
/
/
/
/
/
/
/
/
/
/






	*0

	-3
	DEVICE TD8E;DEVICE SYS;4211;6007;0;1341
	DEVICE TD8E;DEVICE DTA0;4211;5007;0;1341
	DEVICE TD8E;DEVICE DTA1;4211;SDTA1&177+5000;0;1341






	TDBEGN-TD77-1

/FOLLOWING IS THE BOOTSTRAP FOR THE TD8E 12K SYSTEM

	NOPUNCH
	RELOC 7300
K1000,	TAD GET		/PUT DRIVE IN REVERSE
	JMS GET		/LOOK FOR END ZONE
	JMS GET		/LOOK FOR 31 CODE
RD,	SDSQ		/NOW READ ALL INTO CORE
	JMP .-1
	SDRD		/READ 12 BIT WORD
	DCA I WCT	/AND PUT IT IN CORE
	ISZ WCT
	JMP RD		/LOOP UNTIL FIELD 0
	JMP I STRT	/IS LOADED, THEN START
GET,	2000
	TAD K1000	/SET MOTION &DIRECTION
	SDLC
BSRCH,	SDSS		/WAIT FOR 22 OR 31 CODE
	JMP .-1		/22 IS END ZONE, 31 IS
	SDRC		/4 WORDS BEFORE DATA
	AND K77		/IS THIS WHAT WE WANT?
	TAD BM22	/THIS GETS INCREMENTED
	SZA CLA		/IF YES, RETURN.
	JMP BSRCH	/NO.KEEP LOOKING.
	ISZ .-3		/LOOK FOR NEXT IN LIST
	JMP I GET
WCT,	7354		/START LOADING CORE AT 7354
BM22,	-22		/THE OTHER BOOTSTRAP GETS
	-31		/LOADED AT 7400.
K77,	77
STRT,	7400
	RELOC
	ENPUNCH

/TD8E DECTAPE BOOTSTRAP RECORD

/EXPLANATION:
/THE TOGGLE BOOTSTRAP READS 4 WORDS OF NONSENSE
/INTO 7354-7357;THEN 20 WORDS OF ZERO INTO 7360-7377
/'TDBOOT' IN 7400;NOW WE HAVE GAINED 20 WORDS SO THAT
/WE CAN GO ON READING OVER THE INTERBLOCK ZONE AND
/THE FIELD 0 RESIDENT PART WILL LOAD CORRECTLY INTO
/7600-7777;FIELD 1 & 2 ARE LOADED FROM BLOCK 66
/THIS EXPLAINS WHY A 'TWO PAGE' RESIDENT HANDLER
/CAN USE A MUCH LONGER BOOTSTRAP.

	RELOC 7360

	SDSS=6771
	SDST=6772
	SDSQ=6773
	SDLC=6774
	SDLD=6775
	SDRC=6776
	SDRD=6777

TDBEGN,	ZBLOCK 20	/INTERBLOCK ZONE LENGTH			/(5*2)*3/2+1
	TAD I K7777	/GET OLD BIPCCL DATE
	AND K1700	/ONLY DATE BITS AND MORE...
	DCA BIPSAV	/SAVE IT
	CDF 10
	TAD I K7666	/GET OLD DATE
	DCA DATSAV	/SAVE IT
TDBOOT,	TAD K7600	/128 WORDS PER PAGE
	DCA TDWCT
TDMORE,	SDSS		/WAIT FOR A BLOCK MARK (TAPE IS
	JMP .-1		/STILL MOVING)
	SDRC
	AND TD77
	TAD KM26	/IS IT A BLOCK MARK?
	SZA CLA
	JMP TDMORE	/NO..WAIT A WHILE LONGER
	SDRD		/GET THE BLOCK NO.
TDBKNO,	TAD TDM14	/NEED DECTAPE BLOCKS 154 & 155 (REC. 66)
	SZA CLA
	JMP TDMORE	/NOT YET, BUSTER
TDRGRD,	SDSS
	JMP .-1		/NOW LET'S LOOK FOR A REVERSE GUARD WORD
	SDRC
	AND TD77
	TAD KM32
	SZA CLA
	JMP TDRGRD	/KEEP LOOKING FOR IT
	JMS TDRQD
	JMS TDRQD
	JMS TDRQD	/SKIP CONTROL WORDS
TDFLD,	CDF 10		/LOAD UP FIELD 1 OR 2
TDREAD,	JMS TDRQD	/GET A DATA WORD
	DCA I TDPTR
	ISZ TDPTR	/ARE WE DONE?
	JMP TDREAD	/NOT YET
	ISZ TDBKNO	/YES..LOOK AT BLOCK 15
	TAD KCDF20
	DCA TDFLD	/LOAD UP FIELD 2
	ISZ M2		/DONE THIS JUNK?
	JMP TDBOOT	/GO DO FIELD 2
	SDLC		/STOP THE TAPE
	CDF 10
	TAD DATSAV	/GET OLD DATE
	DCA I K7666	/STORE IN NEW SYSTEM
	TAD BIPSAV	/GET OLD BIP DATE
	CIF CDF 0
	DCA I K7777	/STORE IN MAGIC LOCATION
	JMP I K7605






TDM14,	-154
	-155		/USE RECORD 66
TDPTR,
TDWCT,	7600

TDRQD,	0
	SDSQ
	JMP .-1
	SDRD
	JMP I TDRQD

DATSAV,	0
BIPSAV,	0
K1700,	1700
K7777,	7777
K7666,	7666
K7600,	7600
KM26,	-26
KM32,	-32
KCDF20,	CDF 20
M2,	-2
K7605,	7605
TD77,	77

/	THIS BOOTSTRAP RESIDES IN BLOCK 0
/	BLOCK 1/2 CONTAINS THE USUAL IMAGE OF 07600
/	BLOCK 66 CONTAINS THE IMAGE OF 17600
/	BLOCK 66 1/2 CONTAINS THE IMAGE OF 27600
	RELOC






	*200

/TD8E DECTAPE SYSTEM HANDLER
/THIS HANDLER CAN DRIVE UNITS 0&1, AND IS PERMANENTLY
/RESIDENT IN FIELDS 0&2.

	RELOC 7600

	VERSION="Y&77

	ZBLOCK 7
SHNDLR,	VERSION		/UNIT 0 ENTRY POINT
	CLA CLL
	JMP SHND2
C3,	3		/MUST BE HERE FOR BUILD
S70,	70
SDTA1,	VERSION		/UNIT 1 ENTRY
	CLA CLL CML
SC1000,	TAD SDTA1	/DOUBLES AS CONSTANT 1000
	DCA SHNDLR	/GET ARGS AT SHNDLR
SHND2,	RAR		/UNIT #
	DCA SUNIT
	RDF		/SETUP FOR EXIT
	TAD S6203
	DCA EFLD
	TAD I SHNDLR	/FUNCTION WORD
	SDLD		/PUT IT IN DATA EGISTER
	AND S70		/SDLD DOES NOT 0 AC..GET FIELD
	TAD S6203	/CIF CDF N FOR TRANSFER FIELD
	DCA TFLD
	ISZ SHNDLR
	TAD I SHNDLR	/BUFFER ADDRESS
	DCA BPTR
	ISZ SHNDLR
	TAD I SHNDLR	/BLOCK #. TIMES 2 FOR REAL #
	CLL RAL
	DCA BLOCK
	ISZ SHNDLR	/POINT TO ERROR EXIT
	IFNZRO .-7642 <CIFERR+=>
	CIF CDF 20	/BLOAD & FRTS LOAD SOME CIF CDF X
	TAD SUNIT	/PUT UNIT # INTO FIELD 2
	DCA I SUNIT2
	JMP F2SET	/TO FIELD 2 FOR INIT.

F1GO,	SDRD		/INITIAL DIRECTION TO LINK
	RAR
	JMP RGO






RENTER,	TAD BPTR	/DONE THIS BLOCK..NEXT ADDRESS
	TAD SC200
	DCA BPTR
	ISZ BLOCK	/NEXT TAPE BLOCK..CAN'T SKIP
	CLL CML		/FORCE FORWARD MOTION
RGO,	CLA CML RTR	/LINK TO MOTION BIT
	TAD SC1000
	TAD SUNIT
	SDLC		/MOVE THE TAPE
	SDSQ
	JMP .-1
	SDRD		/KNOCK DOWN QUAD FLAG
	SDSQ
	JMP .-1
	SDRD		/THIS IS NEEDED, ELSE TIME ERROR!!!






SRCH,	SDSS		/WAIT FOR A BLOCK MARK
	JMP .-1
	SDRC		/GET MARK TRACK BITS
	CLL RTL		/DIRECTION TO LINK
	AND SC374
	TAD SM110	/IS IT A N END ZONE?
	SNA
	JMP SENDZ	/YES
	TAD SM20	/MAYBE A BLOCK MARK?
	SZA CLA
	JMP SRCH	/NEITHER..KEEP GOING
	SDRD		/READ THE BLOCK #
	SZL		/IF REVERSE, LOOK 3 AHEAD OF TARGET
	TAD C3
	CMA
	TAD BLOCK
	CMA
	SNA		/IS IT THE RIGHT ONE?
	JMP FOUND	/YES
SM110,	CLA SNA SZL	/SNA SUPERFLUOUS..ONLY SZL VALID
	JMP SRCH	/HEADED FOR IT..KEEP GOING
SENDZ,	SDRC
	CLL RTL
	SZL CLA		/IF IN END ZONE FORWARD, GIVE ERROR
	JMP RGO
IFNZRO .-7721 <CIFERR+=>/BLOAD & FRTS LOAD CIF X
	CIF 20		/IF IT IS REALL END ZONE, AN ERROR
	JMP ERROR

FOUND,	SZL CLA		/RIGHT BLOCK..HOW ABOUT DIRECTION?
	JMP RGO		/WRONG..EXECUTE TURNAROUND
	TAD BPTR
TFLD,	HLT		/GETS CIF CDF N
	CIF 20
	JMP RDWT	/LET'S TRANSFER DATA

SEXIT,	ISZ SHNDLR	/NORMAL RETURN
SEREX,	TAD SUNIT	/STOP THE TAPE
	SDLC
	CML CLA RAR	/EITHER 0 OR 4000 IN AC ON RETURN
EFLD,	HLT
	JMP I SHNDLR

	BPTR=7755
	BLOCK=7754
	SUNIT=SDTA1

S6203,	6203
SC200,	200
SC374,	374
SM20,	-20
SUNIT2,	SXUNIT
	RELOC






	*400

	NOPUNC
	FIELD 2
	ENPUNC
	RELOC 7600	/RUNS IN 27600

XPTR,	0		/BUFFER POINTER
F2SET,	CLA CLL CMA RTL	/3 ERROR TRIES
	DCA TRYCNT
	TAD SXUNIT	/MAKE SURE TAPE IS STOPPED
	SDLC
F26203,	CIF CDF 0
	SDRD		/FUNCTION WORD
	CLL RAL
	AND CX7600	/PAGE COUNT
	DCA XPGCT
	SDRD
	DCA SXFUN	/SAVE THE FUNCTION WORD
	JMP F1GO

RDWT,	DCA XPTR	/SAVE NEW BUFFER ADDRESS
	TAD CX7600
	DCA XWCNT	/128 WORDS PER BLOCK
REVGRD,	SDSS		/WAIT FOR REVERSE GUARD WORD
	JMP .-1
	SDRC
	AND X77
	TAD XM32	/IS IT REVERSE GUARD?
	SZA CLA
	JMP REVGRD	/NO
	TAD SXFUN
SK7700,	SMA CLA		/READ OR WRITE?
	JMP READ		/READ
	SDRC
	AND C300	/ERRORS ON WRITE LOCKOUT AND TIME
	SZA CLA
	JMP ERROR
	JMS RDQUAD	/SKIP A WORD
CX7600,	7600
	TAD WRLP
	TAD SXUNIT
	SDLC		/TURN ON THE WRITE
	CLA CMA
	JMS WRQUAD	/WRITE 7777 IN REV. CHECKSUM
	CLA CMA
	DCA SCKSUM	/AND ALSO IN COMPUTE CHECKSUM
WRLP,	TAD I XPTR
	JMS WRQUAD	/WRITE THE DATA
	ISZ XPTR
X77,	77		/JUST IN CASE
	ISZ XWCNT	/DONE 128?
	JMP WRLP
	JMS WRQUAD	/WRITE AND CHECKSUM A WORD OF 0
	JMS GETCHK	/GET CHECKSUM
	JMS WRQUAD
	JMS WRQUAD	/LET CHECKSUM GET WRITTEN







RWCOM,	SDST		/CHECK FOR TIME AND CHECKSUM ERRORS
	SZA CLA
	JMP ERROR	/NOTE THAT LINK IS OFF AT RWCOM
	CIF CDF 0
	TAD XPGCT	/FINISHED TRANSFER?
	TAD CX7600	/LINK GOES ON HERE
	SNA
	JMP SEXIT	/YES..GETOUT
	DCA XPGCT
	JMP RENTER

READ,	JMS RDQUAD	/SKIP CONTROL WORDS
	JMS RDQUAD
	JMS RDQUAD	/GET CHECKSUM
	AND X77
	TAD SK7700
	DCA SCKSUM
SRDLP,	JMS RDQUAD
	DCA I XPTR
	TAD I XPTR
	JMS EQUFUN
	ISZ XPTR
C300,	300
	ISZ XWCNT	/DONE ALL?
	JMP SRDLP	/NO
	JMS RDQUAD	/READ AND CHECKSUM LAST WORD
	JMS EQUFUN
	JMS RDQUAD	/GET CHECKSUM
	AND SK7700
	JMS EQUFUN
	JMS GETCHK
	JMP RWCOM

ERROR,	CLA CLL		/THIS CAUSES SEARCH REVERSE AT RGO
	CIF CDF 0
	ISZ TRYCNT	/EXHAUSTED ERROR TRIES?
	JMP RGO
	JMP SEREX	/YES..FATAL EXIT

WRQUAD,	0		/WRITE A 12 BIT WORD
	SDSQ
	JMP .-1
	SDLD
	JMS EQUFUN	/SDLD LEAVES AC ALONE
	JMP I WRQUAD

RDQUAD,	0		/READ A 12 BIT WORD
	SDSQ
	JMP .-1
	SDRD
	JMP I RDQUAD






EQUFUN,	0		/EQUIVALENCE CHECKSUM
	CMA
	DCA EQUTMP
	TAD EQUTMP
	AND SCKSUM
	CIA
	CLL RAL
	TAD EQUTMP
	TAD SCKSUM
	DCA SCKSUM
	JMP I EQUFUN

GETCHK,	0
	TAD SCKSUM
	CLL CMA RTL
	RTL
	RTL
	JMS EQUFUN
	TAD SCKSUM
	AND SK7700
	JMP I GETCHK

SXUNIT,	0
XPGCT,	0
SXFUN,	0
TRYCNT,	0
XWCNT,	0
XM32,	-32
SCKSUM,	0
EQUTMP,	0

/THE LAST 4 LOCS. ARE FREE FOR USE BY BATCH
	ZBLOCK 4
	RELOC
	$