File LCLISR.PA (PAL assembler source file)

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

/DECNET/8 V1A LOCAL TURNAROUND "INTERRUPT SERVICE" ROUTINE
	IFDEF DDCMP <XLIST>
/
/
/
/
/
/
/
/
/
/
/
/COPYRIGHT  (C)  1976,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.
/
/
/
/
/
/
/
/
/
/
	IFDEF DDCMP <XLIST>

/J. ROTH 22-MAY-76 / / DECNET/8 RELEASE VERSION 1 / DECNET/8 PATCH LEVEL A / APRIL 8,1977 / VERSION=01 PATCH="A / / / IF ONLY ONE KL8J COMMUNICATION LINE IS PRESENT, / THEN THE FOLLOWING PARAMETERS CAN BE EDITED / DIRECTLY INTO THIS SOURCE, IN WHICH CASE, / NO LINE CONTROL FILE IS NECESSARY. / ALTERNATIVELY, A LINE CONTROL FILE CAN BE CREATED WHICH / HAS THESE EQUATES. / / LINE= /LINE NUMBER / BUFFLD= /FIELD OF BUFFER / BUFLOC= /LOCATION OF ISR BUFFER / BUFLEN= /LENGTH OF BUFFER IN WORDS / ISRFLD= /FIELD OF THIS ISR (TIMES 10) / ISRLOC= /STARING ADDRESS OF THIS ISR / ISRTYP= /LOCAL TYPE IFNDEF NOMAP <NOMAP=0> IFNDEF LINE <LINE=0> IFNDEF BUFFLD <BUFFLD=10> IFNDEF BUFLOC <BUFLOC=4000> IFNDEF BUFLEN <BUFLEN=176> IFNDEF ISRFLD <ISRFLD=10> IFNDEF ISRLOC <ISRLOC=200> ISRTYP= 100 /DEFINE LOCAL TYPE ISR CUR= ISRFLD LCB= LINE^LCBSIZ+LCBTAB /SYMBOLIC CHARACTER DEFINITIONS DEL= 377 SOH= 201 ENQ= 005 DLE= 220 SYN= 226 /FIL= 000 ACK= 001 NAK= 002 REP= 003 /RES= 004 /RESAK= 005 STRT= 006 STACK= 007 QSYNC= 100 SELECT= 200 /TIMER TICKS AND THRESHOLD COUNTS TSYNCS= 4 /NUMBER OF LEADING SYNCS TO SEND MAXREP= 12 /MAX OF 10 CONSEC REPS BEFORE FAILURE MAXSTR= 12 /MAX CONSEC STRTS BEFORE FAILURE ACKTKS= 12 /TIMER TICKS BFORE ANOTHER ACK REQUESTED QTMTKS= 144 /TIMER TICKS BETWEEN IDLING REPS CHRTKS= 2 /TICKS BETWEEN CHARACTERS /ERROR DEFINES BCCHDR= 01 /REASON FOR NAK: CRC ERROR ON HEADER BCCDTA= 02 /REASON FOR NAK: CRC ERROR ON DATA REPRSP= 03 /REASON FOR NAK: REP'D MESSAGE NOT RECEIVED NOSPAC= 10 /BUFFER UNAVL AT INTERRUPT LEVEL NAKFMT= 22 /HEADER FORMAT ERROR DETECTED (A MULTITUED OF THINGS) BFOERR= 1000 /INT SVC: BUFFER OVERFLOWED QELERR= 0100 /INT SVC: QUEUE ELEMENT UNAVALIABLE TMOERR= 0400 /INT SVC: INTER CHARACTER TIMEOUT BFMERR= 0200 /INT SVC: BAD FORMAT ERROR (MULTITUDES) FIELD CUR%10
/OUTPUT INITIATOR /ENTRY DF = DDCFLD *ISRLOC STRTO, 0 TAD (TAD I OUTTBL DCA OUTMV /SET UP PARAMETER COPY LOOP TAD (DCA HDRBUF DCA HDRSTR TAD (HDRBUF-OUTCNT-1 DCA HDRCNT OUTMV, 0 /TAD I OUTTBL+N HDRSTR, 0 /DCA HDRBUF+N ISZ OUTMV /BUMP SOURCE PTR ISZ HDRSTR /BUMP TARGET PTR ISZ HDRCNT /BUMP COUNT JMP OUTMV /LOOP IF MORE JMS I (GETBF /FIRST GET A PACKET TAD (-10 DCA HDRCNT /SET TO MOVE 8. CHARACTERS TAD TADHDR DCA HDRTAD /BUILD INSTR INLINE (SAVES A PAIR OF CDF'S) HDRTAD, 0 /TAD HDRBUF+N JMS I (DDCPUT ISZ HDRTAD ISZ HDRCNT JMP HDRTAD /ITERATE TADHDR, TAD HDRBUF TAD (-SOH SZA CLA JMP OUTXIT /EXIT IF NOT SENDING USER DATA TAD OCDF /ELSE STORE CDF INLINE DCA OUTCD JMS I (LINKBF /LINK BUFFER ON QUEUE NOW JMS I (GETBF /GET ANOTHER JMS I (SETBF /FIRST COPY THE DESCRIPTOR IN TAD OUTCNT JMS I (DDCPUT OUTCD, 0 /CHAINED BUFFER MOVE LOOP ISZ OUTPTR /PREINCREMENT POINTER TAD I OUTPTR SMA JMP OUTGTC /JMP IF CHAR DCA OUTCD /ELSE STORE CDF ISZ OUTPTR TAD I OUTPTR DCA OUTPTR /AND STORE PTR JMP OUTCD /LOOP OUTGTC, JMS I (PCH /STORE IN INPUT BUFFER ISZ OUTCNT /INCR CHARACTER COUNT JMP OUTCD /ITERATE IF MORE TAD DCRCL /NOW PASS CRC OF DATA JMS I (DDCPUT TAD DCRCH JMS I (DDCPUT JMS I (SETBF /FINALLY PASS NEW BUFFER MARK OUTXIT, JMS I (LINKBF /LINK PACKET ON DDCMP INPUT Q CIF CDF DDCFLD /JR FIX RACE CONDITION - LOCK ACCES TO ATTENTION BUFFER TAD I (ATNINP DCA ATNPTR TAD (LINE /STORE LINE IN OUT COMPLETION Q DCA I ATNPTR TAD ATNPTR /GET POINTER AGAIN IAC AND (7767 /BUMP MOD 10 DCA I (ATNINP /RESTORE IT JMP I STRTO /DONE
/INTERRUPT LEVEL DATA HDRBUF, 0 0 0 0 0 0 CRCL, 0 CRCH, 0 DCRCL, 0 DCRCH, 0 OCDF, 0 OUTPTR, 0 OUTCNT, 0 ATNPTR, 0 /TEMP PTR HDRCNT, 0 /TEMPORARY COUNTER /TABLE TO MAP OUTPUT MESSAGE TO HDRBUF OUTTBL, OHDR /OHDR OHDR+1 /OCNTL OHDR+2 /OCNTH OHDR+3 /ORES OHDR+4 /ONUM OHDR+5 /OA0 OCRCL /OCRCL OCRCL+1 /OCRCH ODCRCL /ODCRCL ODCRCL+1 /ODCRCH OUTCDF /OUTCDF OUTCDF+1 /OUTPTR OUTCDF+2 /OUTCNT
/RECEIVER INTERRUPT SERVICE INITIATOR /ENTRY DF = DDCFLD /ONLY PERMISSABLE FUNCTION = INIT /(CAN'T GET ERRORS ON LOCAL LINE) STRTI, 0 SMA CLA HLT /UNREACHABLE CLRBUF, CDF BUFFLD STA DCA I CLR1 /STORE A -1 IN THE BUFFER ISZ CLR1 ISZ CLR2 JMP CLRBUF /LOOP IF MORE TAD CLRBUF DCA I CLR1 /NOW STORE THE LINK CDF ISZ CLR1 TAD CLR3 DCA I CLR1 /FINALLY THE LINK PTR CIF CDF DDCFLD /RETURN JMP I STRTI CLR1, BUFLOC CLR2, -BUFLEN+2 CLR3, BUFLOC-1 PAGE
/GET A PACKET FROM THE NODE POOL GETBF, 0 CIF CUR /INHIBIT INTERRUPTS TAD I (FREHD SNA HLT /TEMPORARILY HALT IF ERROR DCA DDCPT AC0002 TAD DDCPT DCA DDCPTR /SET A PAIR OF POINTERS TAD I DDCPT DCA I (FREHD /UNLINK THIS PACKET JMP I GETBF /LINK A PACKET ON DDCMP'S INPUT Q LINKBF, 0 CIF CUR DCA I DDCPT /CLEAR THE THREAD WORD TAD I (DDCTL DCA S1 TAD DDCPT DCA I S1 /LINK ON THE INPUT Q TAD DDCPT DCA I (DDCTL /UPDATE LIET PTR TAD (LINE ISZ DDCPT /POINT AT LINE WORD DCA I DDCPT /STORE LINE NUMBER JMP I LINKBF /DONE S1, 0 /CHAINED BUFFER MOVING ROUTINE PCH, 0 DCA CHAR /STORE CHAR PASSED IN AC BUFCDF, CDF BUFFLD ISZ BUFPTR TAD I BUFPTR CMA SNA JMP MTSLOT SPA SNA CLA JMP BUFOVR TAD I BUFPTR DCA BUFCDF /LINK TO NEXT SEGMENT ISZ BUFPTR TAD I BUFPTR DCA BUFPTR JMP BUFCDF /TRY AGAIN MTSLOT, TAD CHAR DCA I BUFPTR /STORE NEXT CHAR CDF DDCFLD /BACK TO DDCFLD JMP I PCH /RETURN TO OUTPUT CODE BUFOVR, HLT /CURRENTLY UNRECOVERABLE BUFPTR, BUFLOC-1 CHAR, 0 /STORE A WORD IN THE CURRENT PACKET DDCPUT, 0 DCA I DDCPTR ISZ DDCPTR JMP I DDCPUT DDCPT, 0 DDCPTR, 0 /SAVE BUFFER MARK IN CURRENT PACKET SETBF, 0 TAD BUFCDF JMS DDCPUT TAD BUFPTR JMS DDCPUT JMP I SETBF
ERRTAB, ISRTYP /LINE TYPE VERSION /DRIVER VERSION NUMBER PATCH /PATCH LEVEL ZBLOCK 75 /MAKE SPACE FOR ERROR TABLE PAGE FIELD DDCFLD%10 *LCB CDF CUR ERRTAB STRTI STRTO *LCB+20 BUFLOC-1 /INITIAL BUFFER PTR CDF BUFFLD IFNZRO NOMAP-7777 < FIELD BUFFLD%10 *BUFLOC ZBLOCK BUFLEN /MARK BUFFER IN BITMAP IF DESIRED > $$$$



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