File TD82.PA (PAL assembler source file)

Directory of image this file is from
This file as a plain text file

/4 TD8E HANDLER FOR BUILD..TD8E-A
/
/
/
/
/
/
/
/
/
/COPYRIGHT  (C)  1974,1975,1977 BY DIGITAL EQUIPMENT CORPORATION
/
/
/
/
/
/
/
/
/
/
/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
	-2
DEVICE TD8A;DEVICE DTA0;4210;4010;ZBLOCK 2
DEVICE TD8A;DEVICE DTA1;4210;4014;ZBLOCK 2

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

	TDVERSION="D&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


	*200

NXINIT,	7600	/CLEAR AC HERE!!!
	JMS I CINIT2	/PART OF INITIALIZATION..DO THE PART
BASE2,	DCA JINIT	/ON SECOND PAGE AND THEN TO JINIT
	JMP JINIT

BUFF,	0
PGCT,	0
FUNCT,	0
C1000,	1000

DTA0,	TDVERSION	/ENTRY FOR UNIT 0
	CLA CLL
	JMP DTA1X
UNIT,	0		/FILLER WORD
DTA1,	TDVERSION	/ENTRY FOR UNIT 1
	CLA CLL CML
	TAD DTA1
	DCA DTA0	/PICK UP ARGS AT DTA0
DTA1X,	RAR
	DCA UNIT	/UNIT # FROM LINK
	RDF
	TAD C6203
	DCA LEAVE	/SET UP EXIT FROM HANDLER
	TAD I DTA0
	DCA FUNCT	/SAVE FUNCTION WORD
	TAD FUNCT
	CLL RAL
C200,	AND CM200	/GET A PAGE COUNT
	DCA PGCT
	TAD FUNCT
C374,	AND C70		/ISOLATE FIELD OF TRANSFER
	TAD C6203
	DCA XFIELD
	ISZ DTA0	/POINT TO BUFFER
	TAD I DTA0
	DCA BUFF
	ISZ DTA0	/POINT TO RECORD
	TAD I DTA0
	CLL RAL		/CONVERT TO DECTAPE BLOCKS
	DCA TBLOCK
	ISZ DTA0	/POINT TO ERROR RET.
C6203,	CIF CDF 0

JINIT, JMP INIT /FIRST TIME THRU IT GETS EXECUTED /THE RETURN FROM INIT ZEROES IT CLA CLL CMA RTL DCA ERCNT /3 ERROR TRIES TAD UNIT DCA I CXUNIT JMS I CSELCT /CHECK FOR SELEC ERROR JMP .-1 /LOOPS IF NO ^C AND SELECT ERROR TAD FUNCT CLL RAR JMP GO /OK.. START THE SEARCH TRWCOM, SDST /TIME OR CHECK SUM ERROR? SZA CLA JMP TRY3 /YES TRY UP TO 3 TIMES TAD PGCT /NO.. IS PAGE COUNT EXHAUSTED? TAD CM200 SNA JMP EXIT /YES.. DONE THIS TRANSFER DCA PGCT /NEW PAGE COUNT ISZ TBLOCK TAD BUFF TAD C200 /GET NEW BUFFER ADDRESS DCA BUFF CLL CML /FORCE FORWARD MOTION GO, CLA CML RTR /PUT IN DIRECTION BIT TAD C1000 TAD UNIT SDLC /INITIATE THE MOTION JMS I CRDQAD /WAIT FOR 8 LINES TO PASS JMS I CRDQAD M20, 7760 /DON'T CARE IF IT DOES SKIP!!! TSRCH, SDSS /WAIT FOR BLOCK MARK OR END ZONE JMP .-1 SDRC CLL RTL /DIRECTION TO LINK, DATA TO AC 4-9 AND C374 /ISOLATE M.T BITS TAD M110 /IS IT END ZONE? SNA JMP ENDZ /YES..DO SOMETHING REASONABLE TAD M20 /HOW ABOUT BLOCK MARK? SZA CLA JMP TSRCH /NEITHER..KEEP LOOKING SDRD /WHAT IS THIS BLOCK'S #? SZL /IF IN REVERSE, LOOK FOR 3 BEFORE TAD TC3 /THE ACTUAL TARGET BLOCK CMA TAD TBLOCK CMA SNA /IS THIS THE BLOCK? JMP TFOUND /YES..HAVE CORRECT ONE M110, SZL SNA CLA /ARE WE HEADED PROPERLY? JMP TSRCH /YES.. KEEP LOOKING ENDZ, SDRC /IF WE ARE IN END ZONE FORWARD, WE LOSE CLL RTL JMP GO /EXECUTE TURN AROUND AND SEARCH
TRY3, CLA CLL /V3C ISZ ERCNT /TRIED 3 TIMES? JMP GO JMP FATAL EXIT, ISZ DTA0 /NORMAL RETURN CLL CML FATAL, TAD UNIT /STOP TAPE FIRST SDLC CLA CML RAR /EITHER 0 OR 4000 IN AC LEAVE, HLT /GETS CIF CDF N JMP I DTA0 INIT, JMS . /FIND OUT WHERE WE GOT LOADED BASE, TAD CRDQAD SPA /NEGATIVE ENDS LIST JMP NXINIT TAD INIT DCA CRDQAD ISZ .-1 ISZ BASE JMP BASE CRDQAD, R4LINE-BASE CINIT2, INIT2-BASE CSELCT, SELECT-BASE CXUNIT, XUNIT-BASE *367 TFOUND, SZL CLA /ARE WE IN RIGHT DIRECTION JMP GO /NOT YET TAD FUNCT CLL RAL /R/W TO LINK CLA C70, 70 TC3, 3 TAD BUFF XFIELD, HLT /CONTROL 'TRICKLES THROUGH TBLOCK=DTA1 ERCNT=INIT+1 CM200=NXINIT DTA2=DTA0 DTA3=DTA1 DTA4=DTA0 DTA5=DTA1 DTA6=DTA0 DTA7=DTA1
*400 CIF 0 /WE ARE IN FIELD 0 DCA XBUFF RAR DCA XFUNCT /READ/WRITE TO FUNCTION RGRD, SDSS JMP .-1 /LOOK FOR REVERSE GUARD PATTERN SDRC AND K77 TAD CM32 SZA CLA /IF NOT REV. GUARD, KEEP LOOKING JMP RGRD TAD C7600 DCA WORDS /128 WORDS/BLOCK TAD XFUNCT K7700, SMA CLA /IS IT READ OR WRITE? JMP TREAD SDRC /CHECK FOR WRITE LOCKOUT AND TC300 CLL /SETUP TO RETRY IF WRITE LOCK SZA CLA JMP I CTRY3 /IF LOCKED OUT, ERROR JMS R4LINE /SKIP A WORD C7600, 7600 /CLA TAD C1400 TAD XUNIT SDLC /TURN ON WRITE HEAD CLA CMA JMS W4LINE /7777 IN REV. CHECKSUM CLA CMA DCA CSUM /AND ALSO TAPE CHECKSUM WRTLP, TAD I XBUFF JMS W4LINE ISZ XBUFF /INCREMENT BUFF. ADD. K77, 77 ISZ WORDS /DONE A BLOCK? JMP WRTLP JMS W4LINE /A 129 TH WORD OF 0 JMS GCHK /GET 6 BIT CHECKSUM JMS W4LINE /WRITE IT TO TAPE JMS W4LINE /LET CHECK SUM FINISH JMP I CRWCOM /SEE IF WE ARE FINISHED
TREAD, JMS R4LINE JMS R4LINE /SKIP CONTROL WORDS JMS R4LINE AND K77 /CHECKSUM TAD K7700 DCA CSUM RDLP, JMS R4LINE JMS EFUN /ADD WORD TO CHECKSUM DCA I XBUFF ISZ XBUFF TC300, 300 ISZ WORDS /DONE BLOCK? JMP RDLP JMS R4LINE JMS EFUN /CHECK SUM 129 TH WORD JMS R4LINE AND K7700 /READ CHECKSUM JMS EFUN JMS GCHK /COMPARE TAPE AND OUR CHECKSUM JMP I CRWCOM W4LINE, 0 /ADD TO CHECKSUM AND WRITE A 12 BIT JMS EFUN /WORD SDSQ JMP .-1 /SKIP ON QUAD LINE FLAG SDLD CLA /AC IS NOT CLEARED AFTER SDLD JMP I W4LINE R4LINE, 0 /WAIT FOR QUAD FLAG AND READ SDSQ JMP .-1 SDRD JMP I R4LINE EFUN, 0 /COMPUTE EQUIVALENCE CHECKSUM CMA DCA ETMP /ACTUALLY CHECKSUMS ON DECTAPE ARE TAD ETMP /EQUIVALENCE OF ALL WORDS IN A RCORD AND CSUM /6 BITS AT A TIME. SINCE EQUIVALENCE CIA /IS ASSOCIATIVE WE DO IT 12 AT A TIME CLL RAL /AND CONDENSE LATER. TAD ETMP /IDENTITIES USED ARE: TAD CSUM /A+B=(A.XOR.B)+2*(A.AND.B) DCA CSUM /A.EQU.B=.NOT.(A.XOR.B)=A.XOR.(.NOT.B) TAD ETMP /A.EQU.B=(A+(.NOT.B))-2*(A.AND.(.NOT.B)) CMA JMP I EFUN
GCHK, 0 /FORM 6 BIT CHECKSUM CLA TAD CSUM CLL CMA RTL RTL RTL JMS EFUN CLA CLL CML TAD CSUM AND K7700 JMP I GCHK INIT2, 0 /TIS INITIALIZES LOCS IN PAGE 2 INIT3, TAD CTRY3 SNA JMP I INIT2 /0 ENDS LIST TAD INIT2 DCA CTRY3 /UPDATE THE LIST ISZ .-1 ISZ INIT3 JMP INIT3 CTRY3, TRY3-BASE2 CRWCOM, TRWCOM-BASE2 XBUFF, 0 /0 MUST TERMINATE IT!! CM32, -32 C1400, 1400 SELECT, 0 /THIS ROUTINE CHECKS FOR SELECT TAD XUNIT /AND ^C TYPED SDLC SDRC /GET STATUS AND SEE IF SELECT ERROR ON AND C100 SNA CLA ISZ SELECT /NOPE .TAKE NORMAL OUT KSF /SEE IF FLAG IS UP JMP I SELECT /NO..EXIT TAD C7600 KRS TAD (-7603 /IS IT A ^C? SZA CLA JMP I SELECT /NO..EXIT JMP I C7600 C100, 100 XFUNCT=INIT2 CSUM=XFUNCT+1 WORDS=CSUM+1 ETMP=WORDS+1 XUNIT=ETMP+1 $$$$$$$



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search