File LTA.PA (PAL assembler source file)

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

/2 RTS-8 LINCTAPE HANDLER
/
/
/
/
/
/
/
/
/
/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.
/
/
/
/
/
/
/
/
/
/

/ 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 <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