File LTA.PA (PAL assembler source file)

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

/3 RTS-8 LINCTAPE HANDLER
	VERS=1
	XLIST 1
/
/
/
/
/
/
/
/
/
/COPYRIGHT  (C)  1975 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.
/
/
/
/
/
/
/
/
/
/
	XLIST 0		/COPYRIGHT HAS ALREADY BEEN PRINTED
/	FIXED BUG ON 18-JUN-75 RE USING DOUBLE BLOCKS IN OS/8 MODE
	TASK=LTA
	INIWT=0
	CUR=10

	LOC=5000	/LOAD ADDRESS

/	SR

/	MESSAGE FORMAT:

/LTMESG,ZBLOCK 3	/RTS-8 OVERHEAD
/	MODE+UNIT
/	RW+PAGES+FIELD
/	BUFADD
/	BLOKNO
/	STATUS

/MODE=	0	LINCTAPE CONTAINS 200 OR 201 WORDS PER BLOCK
/	4000	LINCTAPE CONTAINS 400 WORDS PER BLOCK

/UNIT=		UNIT NUMBER (0-7)

/RW=	0	READ
/	4000	WRITE

/PAGES=		NUMBER OF PAGES TO TRANSFER (BITS 1-5) 0 MEANS 40
/		MUST BE EVEN IF 400 WORD PER BLOCK MODE

/FIELD=		FIELD OF BUFFER (BITS 6-8)

/BUFADD=	ADDRESS OF BUFFER
/		WORD AFTER END OF BUFFER IS VOLATILE

/BLOKNO=	LINCTAPE BLOCK NUMBER IF 400 WORD PER BLOCK MODE
/		OS/8 LOGICAL BLOCK NUMBER IF 201 WORD PER BLOCK MODE
/		(ONE OS/8 BLOCK = 2 LINCTAPE BLOCKS IN THIS CASE)

/STATUS		ONES COMPLEMENT OF TAPE CHECKSUM LEFT HERE
/		0 MEANS NO ERRORS

/***********************/
/			/	IN 201 WORD PER BLOCK MODE
/	WARNING!  -->	/	WORD AFTER END OF BUFFER GETS
/			/	TEMPORARILY DESTROYED BY THIS TASK.
/***********************/

	LINC=6141	/ENTER LINC MODE
	AXO=1		/AC TO EXTENDED TAPE OPERATIONS BUFFER
	PDP=2		/ENTER PDP-8/I MODE
	TAC=3		/TAPE ACCUMULATOR BUFFER TO AC
	TMA=23		/AC TO TAPE MEMORY ADDRESS SETUP REGISTER
	LMR=6151	/LOAD LINCTAPE MAINTENANCE REGISTER

FIELD CUR%10 *LOC IFNDEF PDP12 <NOT12,_ERROR_> BPTR, /POINTS TO BUFFER START, CAL /INSERT INTERRUPT SKIP IN SKIP CHAIN UNIT, SKPINS /UNIT WORD (BIT 0=1 MEANS SPECIAL 400 WORD PER BLOCK MODE) FNWORD, INTRPT /BITS 1-5 CONTAIN # OF PAGES LEFT TO XFER LOOP, CAL RECEIVE /GET A MESSAGE MADDR, 0 /ADDRESS OF MESSAGE LEFT HERE DCA MSGFLD /CDF TO FIELD OF MSG LEFT IN AC STA TAD MADDR DCA MADDR /BUMP BACK MADDR JMS GET /GET UNIT AND SPECIAL FUNCTIONS BIT DCA UNIT JMS GET /GET FUNCTION WORD DCA FNWORD JMS GET /GET BUFFER ADDRESS DCA BPTR TAD UNIT RAL CLA JMS GET /GET BLOCK NUMBER SNL CLL RAL DCA BLOCK CDF CUR JMS I (PAGE2 /STUFF ON 2ND PAGE TAD FNWORD RTL AND L3 /ISOLATE LOW ORDER UNIT AND R/W BIT CLL RTL /UNIT TO BIT 8 (OF COURSE) TAD (702 /702=READ ONE BLOCK; 706=WRITE ONE BLOCK DCA LTINST /SAVE NEWLY FORMED LINCTAPE INSTRUCTION GLOOP, AC7775 /CAN'T HURT TO RETRY 3 TIMES DCA TRYCNT RETRY, TAD BPTR /KLUDGE: SAVE 201ST WORD TAD (200 /CAUTION USER ABOUT THIS DCA TEMP /THIS IS A REAL TIME SYSTEM JMS BUFC TAD I TEMP /SAVE VOLATILE LOCATION CDF CUR /BACK TO OUR FIELD DCA LOCSAV TAD BPTR IOF /ANOTHER UNAVOIDABLE EXCURSION INTO THE REALMS OF LINC /LINC MODE! TMA /PERFORM READ OR WRITE OF ONE BLOCK LTINST, 0 /LINCTAPE INSTRUCTION (702=READ, 706=WRITE) BLOCK, 0 /BLOCK NUMBER PDP /BACK TO CIVILISATION ISZ DFLAG /NOTE THAT LINCTAPE IS NOW BUSY ION /A TYPE OF CHARGED ATOM CAL WAITE /WAIT FOR DONE FLAG TO COME UP DFLAG IOF /STAVE OFF POSSIBLE CATASTROPHE LINC /WHO KNOWS WHERE EVIL LURKS? L3, TAC /GET TAPE CHECK (7777 IS GOOD) PDP /GOODNESS ION /PERMIT INTERRUTS, WE'RE SAFE NOW CMA /USE 1'S COMPLEMENT SINCE 0 MEANS GOOD TO RTS-8 DCA STATUS /SAVE RESULTING STATUS WORD TAD UNIT SPA CLA JMP NOREST /NOTHING TO RESTORE IN 400 WORD/BLCK MODE TAD LOCSAV JMS BUFC DCA I TEMP /RESTORE 201ST WORD CDF CUR NOREST, TAD LTINST AND (4 SZA CLA /READ OR WRITE? DCA STATUS /WRITES CAN'T FAIL TAD STATUS SNA CLA JMP OK /NO RETRIES IF WRITE WAS BAD ISZ TRYCNT /READ ERROR JMP RETRY /GO TRY AGAIN EXIT, JMS GET /AC MIGHT BE NON-ZERO CLA /DATA FIELD IS NOW RIGHT TAD STATUS DCA I MADDR TAD MSGFLD DCA EFCDF TAD MADDR TAD (-7 CAL POST STATUS, /ONES COMPLEMENT OF TAPE CHECK EFCDF, HLT JMP LOOP /GET ANOTHER MESSAGE BUFC, 0 BUFCDF, HLT JMP I BUFC
OK, TAD UNIT RAL CLA TAD FNWORD AND (3700 SNA TAD (4000 /DON'T UPSET LINK BUT 0 MEANS 40 SZL TAD (-100 /READ 2 PAGES IN SPECIAL MODE TAD (-100 /READ ONE PAGE IN REGULAR MODE SPA SNA /ANY MORE PAGES TO READ? JMP EXIT /NO (IGNORE LAST ODD-PAGE IF IN 400 WRD MODE) DCA FNWORD /YES, PUT # BACK IN 'FNWORD' TAD UNIT SPA CLA TAD (200 /ADVANCE BUFFER PTR 400 IF 400 WD MODE TAD (200 /OR 200 IF 200/201 WD MODE TAD BPTR DCA BPTR ISZ BLOCK /POINT TO NEXT BLOCK JMP GLOOP TEMP, /SHORT FOR TEMPORARY GET, 0 /DON'T TOUCH LINK MSGFLD, HLT ISZ MADDR TAD I MADDR JMP I GET LOCSAV, 0 TRYCNT, -3 DFLAG, 0 /TAPE DONE FLAG (0=DONE, 1=BUSY) PAGE
INTRPT, ZBLOCK 2 /RTS-8 OVERHEAD TAD (100 /SKIP IF TAPE DONE FLAG=1 LMR SKP CLA /NOT DONE, CLEAR AC AND BRANCH BUT NOT JUMP SKP CLA /DONE JMP I INTRPT /NOT DONE, GO ON TO NEXT SKIP CDF CUR TAD (200 /CLEAR TAPE DONE FLAG LMR CLA /PLAY SAFE TAD (DFLAG CIF 0 /POST DONE FLAG POSTDS /DISMISS INTERRUPT PAGE2, 0 TAD I (FNWORD AND (70 TAD (CDF DCA I (BUFCDF TAD I (FNWORD AND (70 /ISOLATE FIELD OF BUFFER CLL RTL RTL RTL /FIELD TO BITS 0-2 DCA TEM TAD I (UNIT AND (7 /ISOLATE UNIT NUMBER FROM UNIT WORD CLL RAR /HIGH-ORDER UNIT BITS TO AC 10,11 TAD TEM /COMBINE AND ALSO PUT LOW-ORDER UNIT # IN LINK TAD (130 /ENABLE INTERRUPTS, EXTENDED MODE, NO PAUSE IOF /DISASTER IF GET INTERRUPT WHILE IN DREADED LINC /LINC MODE! AXO /SEND FUNCTION TO CONTROLLER PDP /BACK TO SAFE PDP-8 MODE ION /THAT WASN'T TOO BAD NOW WAS IT? CLA JMP I PAGE2 TEM, 0 $



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