Google
 

Trailing-Edge - PDP-10 Archives - BB-H348C-RM_1982 - swskit-v21/listings/mcb/kdpmc.list
There are no other files named kdpmc.list in the archive.
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE	DNMAC X24.07-563  04-DEC-79  13:50
KMCMAC.MAC    09-MAY-79 07:32		TABLE OF CONTENTS

    34		MICROPROCESSOR REGISTER DEFINITIONS
   182		MICRO-INSTRUCTION FIELD DEFINITIONS
   224		MICRO INSTRUCTION DEFINITIONS
   225			BRANCH INSTRUCTIONS
   263			INDEXED BRANCH INSTRUCTIONS
   364			MOVE INSTRUCTIONS
   742		TABLE OFFSET DEFINITIONS
   959		INIT - INITIALIZATION
  1017		IDLE - IDLE LOOP
  1049		DATA PORT PROCESSING ROUTINES
  1252		TIMER - TIMER SERVICE
  1407		BASEIN-BASE IN SERVICE ROUTINE
  1450		CONIN-CONTROL IN PROCESS ROUTINE
  1573		BAIN-BUFFER ADDRESS IN SERVICE ROUTINE
  1674		XMTDON - TRANSMIT DONE
  1852		RCVDON-RECEIVED CHARACTER PROCESSOR
  1892		BIT-STUFF PROTOCOL RECEIVE PROCESSORS
  1898		RB1-BIT STUFF RECEIVE STATE ONE
  1922		RB2-BIT STUFF RECEIVE STATE TWO
  1945		RB3-BIT STUFF RECEIVE STATE THREE
  1974		LSILO-PUSH CHARACTER INTO LOCAL TWO CHARACTER SILO
  2007		RBDONE - END OF BIT STUFF MESSAGE RECEIVED
  2029		DDCMP RECEIVE STATE PROCESSORS
  2041		RDH1-RECEIVING FIRST DDCMP HEADER CHARACTER
  2107		RDH2-RECEIVING SECOND DDCMP HEADER CHARACTER
  2143		RDH3-RECEIVING THIRD DDCMP HEADER CHARACTER
  2190		RDH4-RECEIVING FOURTH DDCMP HEADER CHARACTER
  2219		RDH5-RECEIVING FIFTH DDCMP HEADER CHARACTER
  2248		RDH6-RECEIVING SIXTH DDCMP HEADER CHARACTER
  2301		RHCRC1-RECEIVING FIRST DDCMP HEADER CRC
  2329		RHCRC2-RECEIVING SECOND DDCMP HEADER CRC
  2371		RDDATA-RECEIVING DDCMP DATA CHARACTERS
  2414		RDCRC1-RECEIVING FIRST DDCMP DATA CRC
  2439		RDCRC2-RECEIVING SECOND DATA CRC
  2482		DSRCHG-DATA SET READY CHANGE
  2507		MSGIN-DDCMP MESSAGE PROCESSOR
  2572		KILLAL-KILL XMT OT RCV OPERATION
  2647		XMTSYN - TRANSMIT SYNC'S OR ZERO BITS
  2691		XMTCNT - DECREMENT TRANSMIT BYTE COUNT
  2747		XMTABT - TRANSMIT ABORT PENDING
  2776		XMTSND - SET OR CLEAR DUP SEND
  2839		XMTAB1 - TRANSMIT ABORT STAGE ONE
  2864		STORE-STORE RECEIVED CHARACTER IN CORE
  3034		EOFMSG-END OF MESSAGE
  3083		BAORE-BA OUT FOR END OF RECEIVED MESSAGE
  3122		BOUT/COUT-BA OR CONTROL OUT (WITH DESCRIPTOR UPDATED)
  3191		BAORC-BA OUT FOR RECEIVE BUFFER COMPLETION
  3224		COUTX-CONTROL OUT FOR TRANSMIT OPERATION
  3251		BAOX/COUX-BA/CONTROL OUT FOR TRANSMIT BUFFER COMPLETION
  3310		QPDATA-QUEUE PORT DATA
  3372		STFSLO-STUFF COMPLETION SILO SUBROUTINE
  3434		NXBUF-GET NEXT  BUFFER
  3479		NXLST-GET NEXT BUFFER LIST
  3537		NXDSCP - GET NEXT DESCRIPTOR
  3646		ERROR PROCESSING ROUTINES
  3711		RSNCRT - RESYNC AND RETURN TO TIMER
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50
KDPMC.MAC    14-JUN-79 07:11		TABLE OF CONTENTS

  3730		RESYNC-RESYNC DUP-11 RECEIVER
  3780		SETRBA-SET OUTBA TO CURRENT INPUT ADDRESS IN USER RECEIVE BUFFER
  3809		DECDCC-DECREMENT DDCMP DATA CHARACTER COUNT
  3832		DRCNT/DECNT-DECREMENT BUFFER COUNT
  3875		INCOUT/IC2OUT/INCOB-OUT NPR TO CURRENT ADDRESS+OFFSET
  3954		ADRCSR-SET OUTBA=DUP'S CSR ADDRESS
  3994		NXTTBL - ROUTINE TO CALCULATE THE ADDRESS OF THE NEXT TABLE
  4025		INCIN/INCINH/IC2IN - EIGHTEEN BIT ADD TO INPUT ADDRESS
  4090		INCMEM - EIGHTEEN BIT ADD TO ADDRESS POINT TO BY MAR
  4129		NXMERR - NONEXISTENT MEMORY ERROR
  4153		PATCH - PATCH AREA
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 1
KDPMC.MAC    14-JUN-79 07:11

     1						.TITLE	KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11
     2					;
     3					; COPYRIGHT (C)	1978
     4					; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. 01754
     5					;
     6					; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON
     7					; A SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH
     8					; THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS
     9					; SOFTWARE, OR ANY OTHER COPIES THEREOF, MAY NOT BE PROVIDED
    10					; OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON
    11					; EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO AGREES TO
    12					; THESE LICENSE TERMS.  TITLE TO AND OWNERSHIP OF THE
    13					; SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC
    14					;
    15					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE
    16					; WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS A COM-
    17					; MITMENT BY DIGITAL EQUIPMENT CORPORATION.
    18					;
    19					; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY
    20					; OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY
    21					; DEC.
    22					;
    23					; DISTRIBUTED SYSTEMS SOFTWARE ENGINEERING
    24					;
    25						.SBTTL	TABLE OFFSET DEFINITIONS
    26						.IDENT	/V1.0A/
    27					;	FILE	DUPEQU.MAC
    28					 
    29						.NLIST	CND
    30					 
    31					 
    32		000001			BIT0=1
    33		000002			BIT1=2
    34		000004			BIT2=4
    35		000010			BIT3=10
    36		000020			BIT4=20
    37		000040			BIT5=40
    38		000100			BIT6=100
    39		000200			BIT7=200
    40					 
    41					 
    42					; RAM TABLE OFFSETS PER DDCMP/SDLC LINE
    43					 
    44		000000			D.RSTR=0		;TIMER RESTART VALUE
    45					 
    46		000001			D.TIME=D.RSTR+1		;TIMER VALUE
    47					 
    48		000002			D.CSR=D.TIME+1		;CSR ADDRESS (2 BYTES)
    49					 
    50		000004			D.STS=D.CSR+2		;STATUS
    51		000200				DS.CRI=BIT7		;BIT STUFF CRC INHIBIT
    52		000200				DS.SLT=BIT7		;DDCMP SELECT ON CURRENT MESSAGE
    53		000100				DS.QSC=BIT6		;Q-SYNC BIT
    54		000040				DS.DEC=BIT5		;DEC MODE
    55		000020				DS.IGN=BIT4		;IGNORE CURRENT MESSAGE
    56		000010				DS.HDX=BIT3		;HALF DUPLEX LINE
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 1-1
KDPMC.MAC    14-JUN-79 07:11		TABLE OFFSET DEFINITIONS

    57		000004				DS.SEC=BIT2		;SECONDARY STATION
    58		000002				DS.DSR=BIT1		;LAST STATE OF DATA SET READY
    59		000001				DS.NUM=BIT0		;RECEIVING NUMBERED MESSAGE
    60					 
    61		000005			D.RPTR=D.STS+1		;RECEIVE STATE POINTER
    62					 
    63		000006			D.SADR=D.RPTR+1		;SECONDARY ADDRESS
    64					 
    65		000007			D.DCC1=D.SADR+1		;DDCMP DATA CHARACTER COUNT(LOW BYTE)
    66					 
    67		000010			D.DCC2=D.DCC1+1		;DDCMP DATA CHARACTER COUNT(HIGH BYTE)
    68					; THE ABOVE TWO BYTES WILL BE USED AS THE LOCAL DELAY BUFFER FOR SDLC.
    69					 
    70		000007			D.SILO=D.DCC1		;TWO CHARACTER SDLC SILO
    71					 
    72		000011			D.RDP=D.DCC2+1		;CURRENT RECEIVE DESCRIPTOR POINTER (3 BYTES)
    73					 
    74		000014			D.ARLP=D.RDP+3		;ALTERNATE LINK POINTER (3 BYTES)
    75					 
    76		000017			D.ORBC=D.ARLP+3		;ORIGINAL RECEIVE BYTE COUNT (2 BYTES)
    77					 
    78		000021			D.ORBA=D.ORBC+2		;ORIGINAL RECEIVE CURRENT BUFFER ADDRESS (3 BYTES)
    79					 
    80		000024			D.RBD=D.ORBA+3		;CURRENT RECEIVE BUFFER DESCRIPTOR(5 BYTES)
    81		000024			 D.RBDC=D.RBD		;CURRENT RECEIVE COUNTER
    82
    83		000026			 D.RBDA=D.RBDC+2	;CURRENT RECEIVE BUFFER ADDRESS
    84		000030			 D.RBDF=D.RBDA+2	;FLAG BIT BYTE
    85		000200				DR.LST=BIT7		;DESCRIPTOR IS LAST IN LIST 
    86		000100				DR.ABA=BIT6		;ALTERNATE BUFFER IS ASSIGNED
    87		000040				DR.CBA=BIT5		;CURRENT BUFFER IS ASSIGNED
    88		000010				DR.17=BIT3		;RCV ADDRESS BIT 17
    89		000004				DR.16=BIT2		;RCV ADDRESS BIT 16
    90		000001				DR.FST=BIT0		;FIRST CHARACTER IN CURRENT BUFFER
    91					 
    92		000031			D.ERC=D.RBD+5		;EVEN RECEIVE CHARACTER
    93					 
    94		000032			D.XDP=D.ERC+1		;CURRENT TRANSMIT DESCRIPTOR POINTER (3 BYTES)
    95					 
    96		000035			D.AXLP=D.XDP+3		;ALTERNATE TRANSMIT LINK POINTER (3 BYTES)
    97					 
    98		000040			D.OXBC=D.AXLP+3		;ORIGINAL TRANSMIT BYTE COUNT (2 BYTES)
    99					 
   100		000042			D.DUMMY=D.OXBC+2	;3 BYTES OF DUMMY DATA
   101					 
   102		000045			D.XBD=D.DUMMY+3		;CURRENT TRANSMIT BUFFER DESCRIPTOR (5 BYTES)
   103		000045			 D.XBDC=D.XBD		;COUNT (LOW BYTE)
   104		000047			 D.XBDA=D.XBDC+2	;ADDRESS (LOW BYTE)
   105		000051			 D.XBDF=D.XBDA+2	;FLAG BITS BYTE
   106		000200				DX.LST=DR.LST		;DISCRIPTOR IS LAST IN LIST
   107		000100				DX.ABA=DR.ABA		;ALTERNATE XMT BUFFER ASSIGNED
   108		000040				DX.CBA=DR.CBA		;CURRENT XMT BUFFER ASSIGNED
   109		000020				DX.SYN=BIT4		;SEND SYNCS
   110		000010				DX.17=BIT3				;XMT ADDRESS BIT 17
   111		000004				DX.16=BIT2				;XMT ADDRESS BIT 16
   112		000002				DX.EOM=BIT1				;END OF MESSAGE
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 1-2
KDPMC.MAC    14-JUN-79 07:11		TABLE OFFSET DEFINITIONS

   113		000001				DX.SOM=BIT0				;START OF MESSAGE
   114					 
   115		000052			D.OXC=D.XBD+5		;ODD TRANSMIT CHARACTER
   116					 
   117		000053			D.SYNC=D.OXC+1		;TRANSMIT SYNC COUNT
   118					 
   119		000054			D.XSTS=D.SYNC+1		;TRANSMIT STATUS FLAGS
   120		000021				DT.ABT=BIT0!BIT4  ;TRANSMIT ABORT PENDING
   121		000002				DT.AB1=BIT1	;TRANSMIT ABORT STAGE 1 PENDING
   122					 
   123		000060			D.LNG=60			;LENGTH OF TABLE
   124					 
   125					; RAM OFFSET PER COMM IOP
   126					 
   127		002000			P.MSTA=2000		;LAST RAM LOCATION + 1
   128		001777			P.SLOT=P.MSTA-1		;COMPLETION SILO NEXT OUT POINTER
   129		001776			P.SLIN=P.SLOT-1		;COMPLETION SILO NEXT IN POINTER
   130		001775			P.PORT=P.SLIN-1		;PORT SERVICE ROUTINE
   131		001775			P.PLST=P.PORT
   132		000006				SENTRY=6	;SIZE OF A SILO ENTRY
   133		000035				NMSENT=29.	;NUMBER OF SILO ENTRIES
   134		001517			P.NPR=P.PLST-<SENTRY*NMSENT>	;COMPLETION SILO
   135		001767				SILOED=P.PLST-SENTRY	;LAST ENTRY IN SILO
   136		001457			P.LADR=P.NPR-<MAXDEV*2>	;TABLE OF LINE TABLE ADDRESSES
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 2
KDPMC.MAC    14-JUN-79 07:11		TABLE OFFSET DEFINITIONS

   138
   139					;
   140					; SCRATCH PAD DEFINITIONS
   141					;
   142		000007				SP.CHR=SP7		;LOW BYTE OF DUP'S CSR2 (RECEIVE CHARACTER)
   143		000010				SP.RST=SP10		;HIGH BYTE OF DUP'S CSR2 (RECEIVE CHARACTER STATUS)
   144		000011				SP.STS=SP11		;COMM IOP STATUS REGISTER
   145		000012				SP.LN=SP12		;COMM IOP LINE # CURRENTLY SELECTED
   146		000013				SP.RM0=SP13		;RAM TABLE ADDRESS FOR CURRENT LINE - BITS 0-7
   147		000014				SP.RM1=SP14		;RAM TABLE ADDRESS FOR CURRENT LINE - BITS 8&9
   148		000015				SP.SB1=SP15		;SUBROUTINE RETURN ADDRESS (LEVEL B SUBROUTINES)
   149		000016				SP.SUB=SP16		;SUBROUTINE RETURN ADDRESS (LEVEL A SUBROUTINES
   150		000017				SP.CS0=SP17		;IMAGE OF CSR0 (LOW BYTE)
   151
   152
   153					; DUP-11 INTERFACE RELATED EQUATES
   154					;	RECEIVE CONTROL AND STATUS REGISTERS (XX0)
   155					 
   156					;		LOW BYTE
   157		000002			DUPDTR=BIT1		;DATA TERMINAL READY
   158		000004			DUPRTS=BIT2		;REQUEST TO SEND
   159		000020			DUPREN=BIT4		;ENABLE RECEIVER
   160		000200			DUPRDN=BIT7		;RECEIVE DONE
   161					;		HIGH BYTE
   162		000001			DUPSSY=BIT0		;STRIP SYNC
   163		000002			DUPDSR=BIT1		;DATA SET READY
   164					 
   165					 
   166					;RECEIVE DATA BUFFER REGISTER -RXDBUF (XX2)
   167					 
   168					;		HIGH BYTE
   169		000001			DUPRSM=BIT0		;RECEIVE START OF MESSAGE
   170		000002			DUPREM=BIT1		;RECEIVE END OF MESSAGE
   171		000004			DUPRAB=BIT2		;RECEIVE ABORT
   172		000020			DUPCPE=BIT4		;CRC/PARITY ERROR
   173		000100			DUPOVR=BIT6		;OVERUN ERROR
   174		000200			DUPRE=BIT7		;RECEIVE ERROR
   175					 
   176					;PARAMETER CONTROL AND STATUS REGISTER -PARCSR (XX2)
   177					 
   178					;		HIGH BYTE
   179		000002			DUPCRI=BIT1		;CRC INHIBIT
   180		000020			DUPSAM=BIT4		;SECONDARY ADDRESS MODE
   181		000200			DUPDEC=BIT7		;DEC MODE
   182					 
   183					;TRANSMIT CONTROL AND STAUS REGISTER-TXCSR (XX4)
   184					;		LOW BYTE
   185		000010			DUPHDX=BIT3		;HALF DUPLEX MODE
   186		000020			DUPSND=BIT4		;SEND
   187		000200			DUPTXD=BIT7		;TRANSMIT DONE
   188					 
   189					;		HIGH BYTE
   190		000001			DUPDR=BIT0			;DEVICE RESET
   191					 
   192					;TRANSMIT DATA BUFFER REGISTER - TXDBUF (XX6)
   193					 
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 2-1
KDPMC.MAC    14-JUN-79 07:11		TABLE OFFSET DEFINITIONS

   194					;		HIGH BYTE
   195		000001			DUPTSM=BIT0		;TRANSMIT START OF MESSAGE
   196		000002			DUPTEM=BIT1		;TRANSMIT END OF MESSAGE
   197		000004			DUPTAB=BIT2		;TRANSMIT ABORT
   198					 
   199					 
   200					;NPR CONTROL EQUATES
   201					 
   202		000021			DATO=021			;WORD OUT NPR
   203		000221			DATOB=221			;BYTE OUT NPR
   204		000002			HLDBUS=002			;HOLD BUS
   205					 
   206					 
   207					;DDCMP EQUATES
   208					 
   209		000201			SOH=201			;START OF HEADER-NUMBERED MESSAGE
   210		000005			ENQ=005			;ENQUIRY
   211		000220			DLE=220			;DELETE-MAINTAINANCE MESSAGE
   212		000226			SYNC=226		;SYNC CHARACTER
   213					 
   214		000007			SYNCNT=7		;NUMBER OF SYNC'S TO TRANSMIT
   215					 
   216					 
   217					 
   218					;CONTROL/BUFFER ADDRESS OUT PARAMETERS
   219					 
   220		000200			C.BAOX=200		;BA OUT FOR TRANSMIT OPERATION
   221		000204			C.BAOR=204		;BA OUT FOR RECEIVE OPERATION
   222		000201			C.CLOX=201		;CONTROL OUT  FOR TRANSMIT OPERATION
   223		000205			C.CLOR=205		;CONTROL OUT FOR RECEIVE OPERATION
   224					 
   225		000020			EOM=20			;END OF MESSAGE
   226					 
   227					;ERROR CODES
   228					 
   229		000006			ER.ABO=6		;RECEIVE ABORT (BIT STUFF)
   230		000010			ER.HBC=10		;DDCMP HEADER BCC ERROR
   231		000012			ER.CRC=12		;RECEIVE CRC ERROR
   232		000014			ER.NBA=14		;NO BUFFER AVAILABLE (RECEIVE)
   233		000016			ER.DSR=16		;DATA SET READY TRANSITION
   234		000020			ER.NXM=20		;NON-EXISTENT MEMORY
   235		000022			ER.UNR=22		;TRANSMIT UNDERRUN
   236		000024			ER.OVR=24		;RECEIVE OVERRUN
   237		000026			ER.KIL=26		;USER KILL
   238					 
   239					 
   240		000020				MAXDEV=16.	;MAXIMUM NUMBER OF DUP'S GEN'ED FOR
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 2-2
KDPMC.MAC    14-JUN-79 07:11		INIT - INITIALIZATION

   242						.SBTTL	INIT - INITIALIZATION
   243					;	FILE	IDLE.DUP
   244
   245					;+
   246					; **INIT-INITIALIZATION ROUTINE**
   247					;
   248					; INPUTS:
   249					;	BRG = 0 (MASTER CLEAR)
   250					;	MAR = 0 (MASTER CLEAR)
   251					; OUTPUTS:
   252					;	RAM IS CLEARED EXCEPT FOR THE COUNTERS IN THE POLLING LIST
   253					;	WHICH ARE SET TO MINUS ONE TO INDICATE NO ACTIVE DEVICES.
   254					;	THE ADDRESSES OF EACH LINE TABLE IS PUT IN A TABLE AT P.LADR
   255					;	THE CSR'S ARE ALSO CLEARED
   256					;-
   257
   258	000000'				$KDPMC::			;START OF CODE GLOBAL LABEL
   259
   260	000000'				INIT:	OUT	BR,SELB,OINCON	;ZERO THE INPUT CONTROL CSR
   261	000002'					OUT	BR,SELB,OOCON	;ZERO THE OUTPUT CONTROL CSR
   262	000004'					SP	BR,SELB,SP.RM1	;CLEAR OUT RAM ADDRESS HIGH SCRATCH PAD
   263	000006'					SP	BR,SELB,SP.RM0	;CLEAR LOW BYTE OF ADDRESS
   264	000010'					SP	BR,SELB,SP4	;ZERO SP4
   265	000012'				10$:	MEMINC	IMM,0		;ZERO THE NEXT MEMORY LOCATION
   266	000014'					SPBR	IBUS,NPR,SP0	;READ THE NPR CONTROL REGISTER
   267	000016'					BRWRTE	BR,ADD,SP0	;SHIFT IT LEFT
   268	000020'					BR7	20$		;OVERFLOWED MAR TO 10 BITS - ALL DONE
   269	000022'					ALWAYS	10$		;KEEP ZEROING RAM
   270					 
   271					; MAR = 0 FROM OVERFLOW
   272					 
   273	000024'				20$:
   274	000024'					BRWRTE	IMM,MAXDEV*2	;MAXIMUM NUMBER OF DEVICES GENED FOR TIMES 2
   275	000026'					SP	BR,SELB,SP5	;SAVE IT IN A SCRATCH PAD
   276	000030'				INIT1:
   277	000030'					BRWRTE	TWOA,SP4,INCMAR	;GET CURRENT LINE TIMES 2
   278	000032'					SP	BR,SELB,SP0		;SAVE IT IN SP0
   279	000034'					COMP	BR,SP5		;ARE WE FINISHED WITH ALL LINES
   280	000036'					Z	40$		;ALL DONE
   281	000040'					SP	INCA,SP4	;ONE MORE LINE INITIALIZED
   282	000042'					MEM	IMM,377		;INITIALIZE POLLING COUNTER TO MINUS ONE
   283	000044'					BRWRTE	IMM,P.LADR,LDMAPG	;LOAD THE BRG WITH THE ADDRESS OF
   284									;THE LINE TABLE ADDRESS TABLE AND SET THE
   285									;MAR HI TO THAT ADDRESS
   286	000046'					LDMA	BR,ADD,SP0	;POINT TO THIS LINES ENTRY IN THE TABLE
   287	000050'					MEMINC	SELA,SP.RM0	;SAVE THE LINE TABLE ADDRESS
   288	000052'					MEM	SELA,SP.RM1	;LOW AND HI
   289	000054'					ALWAYS	NXTTBL		;"CALL" ROUTINE TO CALCULATE ADDRESS OF
   290									;NEXT LINE'S TABLE (OFFSET BY D.TIME)
   291									;RETURN MADE TO INIT1 WITH MAR&SP.RM0,1 SET
   292	000056'				40$:	LDMAP	IMM,P.PORT	;LOAD MAR HIGH WITH ADDRESS OF PORT STATUS BYTE
   293	000060'					LDMA	IMM,P.PORT	;LOAD MAR LOW
   294	000062'					MEMADR	RDOSET,INCMAR	;ADDRESS OF ROUTINE TO CHECK FOR OUTPUT COMPLETIONS
   295	000064'					MEMINC	IMM,P.NPR	;INITIALIZE COMPLETION SILO IN POINTER
   296	000066'					MEM	IMM,377		;INITIALIZE COMPLETION SILO OUT POINTER (LOGICAL ZERO)
   297									;FALL INTO IDLE LOOP
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 3
KDPMC.MAC    14-JUN-79 07:11		INIT - INITIALIZATION

   299
   300						.SBTTL	IDLE - IDLE LOOP
   301
   302					;+
   303					; **IDLE-LOOP BETWEEN PORT AND DEVICE SERVICE
   304					;
   305					; INPUTS:
   306					;	P.PORT = ADDRESS OF NEXT PORT SERVICE ROUTINE
   307					;
   308					; OUTPUTS:
   309					;	IF THE PGMCLK BIT IN THE MISC REG HAS EXPIRED,
   310					;	THE DEVICES ARE POLLED AND SERVICED BY THE TIMER ROUTINE
   311					;	IN ANY CASE, THE NEXT PORT ROUTINE IS BRANCHED TO.
   312					;
   313					;	MAR  = P.PORT
   314					;	ALL PORT ROUTINES RETURN TO IDLE
   315					;-
   316
   317	000070'				IDLE:	SPBR	IBUS,UBBR,SP0	;READ THE BUS REQUEST REGISTER AND
   318									;STORE THE IMAGE IN SP0 AND THE BRG
   319	000072'					BR4	TIMER		;BRANCH IF THE TIMER HAS EXPIRED
   320	000074'				IDLE1:	LDMA	IMM,P.PORT	;LOAD MAR TO POINT TO PORT STATUS
   321	000076'					LDMAP	IMM,P.PORT	;LOAD MAR HIGH
   322	000100'					.ALWAY	MEMX,SELB,0	;TIMER HAS NOT EXPIRED YET, CHECK THE
   323									;DATA PORT TO SEE IF ANY PROCESSING IS REQUIRED
   324									;RAM CONTAINS THE ADDRESS OF THE APPROPRIATE
   325									;SERVICE ROUTINE
   326									; RQISET --> WAITING FOR RQI TO SET
   327									; RDICLR --> WAITING FOR RDYI TO CLEAR
   328									; RDOSET --> WAITING FOR A COMPLETION
   329									; RDOCLR --> WAITING FOR RDYO TO CLEAR
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 4
KDPMC.MAC    14-JUN-79 07:11		IDLE - IDLE LOOP

   331
   332						.SBTTL	DATA PORT PROCESSING ROUTINES
   333					;+
   334					; **RDOCLR-WAITING FOR READY OUT TO BE CLEARED BY THE PDP-11**
   335					;
   336					; INPUTS:
   337					;	MAR = PORT SERVICE ROUTINE (P.PORT)
   338					; OUTPUTS:
   339					;	THIS ROUTINE WAITS FOR READY OUT TO BE CLEARED BY THE PDP-11
   340					;	THUS SIGNALING IT IS DONE.  IT ALSO CHECKS IF OUTPUT INTERRUPTS
   341					;	ARE REQUESTED IN THE MEANTIME AND WILL GENERATE ONE IF THEY WERE
   342					;	NOT REQUESTED WHEN RDYO WAS SET.
   343					;
   344					;	WHEN RDYO IS CLEARED, CONTROL IS PASSED TO RQISET TO CHECK
   345					;	FOR PENDING PORT REQUESTS
   346					;
   347					;	NOTE: THERE EXISTS THE POSSIBILITY OF AN INTERRUPT BEING GENERATED
   348					;	IF IEO IS CLEARED AT ANY TIME AFTER IT IS TESTED BY THE MICROPROCESSOR
   349					;	(APPROX A 1.5US WINDOW)
   350					;-
   351
   352	000102'				RDOCLR:
   353	000102'					BRWRTE	IBUS,OCON		;READ CONTROL CSR BSEL2
   354	000104'					BR7	RDOST1			;READY OUT STILL SET, CHECK INTERRUPTS
   355					;
   356					; ENTER HERE IF AN OUTPUT INTERRUPT HAS ALREADY BEEN GENERATED
   357					;
   358	000106'				RDOCL1:
   359	000106'					BRWRTE	IBUS,OCON		;READ OUTPUT CONTROL CSR
   360	000110'					BR7	IDLE			;READY OUT STILL SET
   361	000112'					BRWRTE	IMM,0			;CLEAR OUTPT CONTROL CSR
   362	000114'					OUT	BR,SELB,OOCON		;..
   363	000116'					MEMADR	RQISET			;LOOK FOR RQI NEXT
   364	000120'					ALWAYS	IDLE			;BACK TO IDLE LOOP
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 5
KDPMC.MAC    14-JUN-79 07:11		DATA PORT PROCESSING ROUTINES

   366
   367					;+
   368					; **RDOSET-MICROPROCESSOR COMPLETION POSTING**
   369					;
   370					; INPUTS:
   371					;	MAR = PORT SERVICE ROUTINE (P.PORT)
   372					; OUTPUTS:
   373					;	CHECK THE COMPLETION SILO TO SEE IF ANY COMPLETIONS ARE PENDING.
   374					;	IF THERE ARE POST THE COMPLETION TO THE PDP-11 
   375					;	SILO POINTERS (P.SLOT,P.SLIN) ARE UPDATED
   376					;	AND WAIT FOR RDYO TO CLEAR (RDOCLR)
   377					;	OTHERWISE CHECK TO SEE IF THE PDP-11 HAS ANY INPUT DATA (RQISET)
   378					;-
   379
   380	000122'				RDOSET:
   381	000122'					MEMADR	RQISET			;LOOK FOR RQI NEXT
   382	000124'					LDMA	IMM,P.SLOT	;SET MAR TO COMPLETION SILO NEXT OUT POINTER
   383	000126'					LDMA	MEMX,SELB	;POINT COMPLETION TO NEXT OUT ENTRY
   384	000130'					Z	IDLE		;THE POINTER IS ZERO THEREFORE THE SILO IS EMPTY
   385					 
   386					; A COMPLETION OUTPUT IS PENDING IN THE COMPLETION SILO. MAR POINTS TO THE
   387					; NEXT ENTRY
   388	000132'					OUT	MEMI,SELB,OLINEN ;WRITE THE LINE NUMBER BYTE
   389					 
   390					; READ THE SECOND WORD OF THE COMPLETION SILO AND SET UP CSR 4
   391					 
   392	000134'					OUT	MEMI,SELB,OPORT1 ;WRITE PORT BYTE 1
   393	000136'					OUT	MEMI,SELB,OPORT2 ;AND PORT BYTE 2
   394					 
   395					; READ THE THIRD WORD OF THE COMPLETION SILO AND SET UP CSR 6
   396					 
   397	000140'					OUT	MEMI,SELB,OPORT3 ;WRITE PORT BYTE 3
   398	000142'					OUT	MEMI,SELB,OPORT4 ;AND PORT BYTE 4
   399					 
   400	000144'					OUT	MEMI,SELB,OOCON	;WRITE THE NEW OUTPUT CNTRL CSR
   401					 
   402					; INCREMENT THE SILO NEXT OUT POINTER
   403					 
   404	000146'					LDMA	IMM,P.SLIN	;SET MAR TO POINT TO COMPLETION SILO NEXT IN OFFSET
   405	000150'					SP	MEMI,SELB,SP1	;SAVE THE NEXT IN POINTER IN SP1
   406	000152'					SP	MEMX,SELB,SP0	;SAVE THE NEXT OUT POINTER IN SP0
   407	000154'					MEM	IMM,P.NPR	;ASSUME THE SILO IS GOING TO WRAP AROUND
   408	000156'					BRWRTE	IMM,SILOED	;OFFSET TO LAST SILO ENTRY
   409	000160'					COMP	BR,SP0		;COMPARE CURRENT OUT POINTER WITH END OF SILO
   410	000162'					Z	50$		;IT WRAPPED AROUND - ALREADY SET UP
   411	000164'					BRWRTE	IMM,SENTRY	;GET THE SIZE OF A SILO ENTRY
   412	000166'					MEM	BR,ADD,SP0	;INCREMENT NEXT OUT POINTER AND SAVE IT
   413					 
   414					; IF SILO IS NOW EMPTY "ZERO" THE NEXT OUT POINTER
   415					 
   416	000170'				50$:	COMP	MEMX,SP1		;COMPARE OUT POINTER TO IN POINTER
   417	000172'					Z	70$		;THEY ARE THE SAME
   418	000174'					ALWAYS	80$		;THEY ARE DIFFERENT
   419	000176'				70$:	MEM	IMM,377		;THE SILO IS EMPTY - SET NEXT OUT POINTER
   420									;TO A LOGICAL ZERO (-1)
   421	000200'				80$:	LDMA	IMM,P.PORT	;SET MAR TO POINT TO PORT STATUS
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 5-1
KDPMC.MAC    14-JUN-79 07:11		DATA PORT PROCESSING ROUTINES

   422	000202'				RDOST1:
   423	000202'					SPBR	IBUS,INCON,SP0		;READ INPUT CONTROL CSR
   424	000204'					BR4	RDOST2			;OUTPUT INTERRUPT REQUESTED
   425	000206'					MEMADR	RDOCLR			;STATE TO WAITING FOR READY OUT CLEARING
   426	000210'					ALWAYS	IDLE			;BACK TO IDLE LOOP
   427
   428	000212'				RDOST2:	MEMADR	RDOCL1			;STATE TO WAITING FOR READY OUT CLEARING
   429	000214'					BRWRTE	IMM,300			;MASK FOR BUS REQUEST AND XX4
   430	000216'				RDOST3:	OUT	BR,SELB,OBR		;GENERATE AN INTERRUPT
   431	000220'					ALWAYS	IDLE			;BACK TO IDLE LOOP
   432					 
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 6
KDPMC.MAC    14-JUN-79 07:11		DATA PORT PROCESSING ROUTINES

   434
   435					;+
   436					; **RQISET-REQUEST IN SET, THE PDP-11 HAS REQUESTED THE DATA PORTS
   437					;
   438					; INPUTS:
   439					;	MAR = PORT SERVICE ROUTINE (P.PORT) 
   440					; OUTPUTS:
   441					;	CHECK TO SEE IF REQUEST IN HAS BEEN SET BY THE PDP-11. IF SO,
   442					;	SET READY IN AND LET THE PDP-11 SET UP A COMMAND IN THE DATA PORTS
   443					;	IF INPUT INTERRUPTS ARE REQUESTED, GENERATE ONE
   444					;	TRANSFER CONTROL TO RDICLR TO WAIT UNTIL THE PDP-11 IS DONE
   445					;-
   446
   447	000222'				RQISET:	BRWRTE	IBUS,INCON		;READ INPUT CONTROL CSR
   448	000224'					BR7	10$			;REQUEST IN SET
   449	000226'					ALWAYS	RDOSET			;SEE IF ANY COMPLETIONS TO POST
   450
   451	000230'				10$:	SP	IMM,20,SP0		;MASK TO SET READY IN
   452	000232'					OUT	SELA,OOCON		;SET IN OUPUT CONTROL CSR
   453	000234'					BR0	RQIST1			;INTERRUPT ENABLE IS SET
   454	000236'					MEMADR	RDICLR			;STATE TO WAITING FOR RDYI TO CLEAR
   455	000240'					ALWAYS	IDLE			;BACK TO IDLE LOOP
   456
   457	000242'				RQIST1:	MEMADR	RDICL1			;STATE TO WAITING FOR RDYI TO CLEAR
   458	000244'					BRWRTE	IMM,200			;MASK FOR BUS REQUEST AND XX0
   459	000246'					ALWAYS	RDOST3			;GENERATE AN INTERRUPT
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 7
KDPMC.MAC    14-JUN-79 07:11		DATA PORT PROCESSING ROUTINES

   461
   462					;+
   463					; **RDICLR-WAIT FOR READY IN TO CLEAR (DATA PORTS HAVE BEEN SET UP)**
   464					;
   465					; INPUTS:
   466					;	MAR = PORT SERVICE ROUTINE (P.PORT)
   467					; OUTPUTS:
   468					;	CHECK TO SEE IF THE PDP-11 HAS CLEARED READY IN SIGNIFYING
   469					;	THAT IT HAS SET UP THE DATA PORTS.  IF SO THEN DISPATCH TO THE
   470					;	PROPER ROUTINE TO HANDLE THE REQUEST BASED ON
   471					;	BIT 0&1 OF THE  CONTROL CSR BSEL2
   472					;-
   473					 
   474					; RDYI CLEAR ROUTINE IS ENTERED HERE IF INTERRUPT ENABLE WAS NOT
   475					; SET WHEN THE COMMIOP SET READY IN. IF IN THE  MEANTIME INTERRUPT ENABLE
   476					; WAS SET, IT WILL BE SEEN HERE AND AN INTERRUPT WILL BE GENERATED
   477					 
   478						.ENABL	LSB
   479	000250'				RDICLR:
   480	000250'					BRWRTE	IBUS,OCON		;READ OUTPUT CONTROL CSR
   481	000252'					BR4	5$			;READY IN STILL SET
   482	000254'					ALWAYS	10$			;PDP-11 CLEARED RDYI. DONT BOTHER
   483										;CHECKING FOR IEI JUST PROCESS THE DATA
   484	000256'				5$:	BRWRTE	IBUS,INCON		;READ CONTROL CSR
   485	000260'					BR0	RQIST1			;INTERRUPT REQUESTED
   486	000262'				RDICL1:
   487	000262'					BRWRTE	IBUS,OCON		;READ OUTPUT CONTROL CSR
   488	000264'					BR4	IDLE			;RDYI STILL SET
   489	000266'				10$:	MEMADR	RDOSET			;STATE TO WAIT FOR COMPLETIONS
   490					 
   491					; READY IN CLEAR
   492					 
   493	000270'					BRWRTE	IMM,P.LADR	;GET ADDRESS OF LINE TABLE ADDR TABLE
   494	000272'					SP	BR,SELB,SP5	;SAVE IT IN SP5
   495	000274'					SP	IBUS,LINENM,SP.LN	;READ THE LINE NUMBER
   496	000276'					BRWRTE	BR,TWOA,SP.LN	;MULTIPY IT BY TWO
   497	000300'					LDMA	BR,ADD,SP5	;POINT TO ENTRY IN TABLE FOR THIS LINE
   498	000302'					SP	MEMI,SELB,SP.RM0	;GET THE ADDRESS OF THIS LINE'S TABLE
   499									;(LOW) AND SAVE IT IN SP.RM0
   500	000304'					SP	MEMX,SELB,SP.RM1,LDMAPG	;GET THE ADDRESS (HIGH) AND POINT
   501									;THE MAR HI TO THIS ADDRESS
   502	000306'					LDMA	SELA,SP.RM0	;SET MAR LOW
   503	000310'				15$:
   504	000310'					BRWRTE	IMM,14,INCMAR	;SET UP DUP CSR BY SETTING ADDR BITS 16-17
   505	000312'					OUT	BR,SELB,OBR,INCMAR ;WRITE EXTENDED MEM BITS FOR OUT NPR
   506	000314'					OUTPUT	MEMI,SELB,OBA1	;WRITE OUT LOW BYTE OF CSR ADDRESS
   507	000316'					OUTPUT	MEMI,SELB,OBA2	;WRITE OUT HIGH BYTE
   508	000320'					LDMA	SELA,SP.RM0	;POINT BACK TO START OF LINE TABLE
   509
   510									;REGISTERS FOR COMMAND ROUTINES
   511									; MAR=LINE TABLE  SP.LN=LINE NUMBER
   512									; SP.RM0,1=LINE TABLE ADDR
   513									; NPR OUTPUT ADDR=DEVICE CSR 0
   514
   515	000322'					BRWRTE	IBUS,OCON	;GET ORIGINAL IMAGE OF INPUT CONTROL CSR
   516									;READ FROM BSEL2 TO AVOID RAM BIT SET PROBLEM
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 7-1
KDPMC.MAC    14-JUN-79 07:11		DATA PORT PROCESSING ROUTINES

   517									;BY THIS TIME ALL BITS WILL HAVE SETTLED
   518	000324'					BR1	20$		;BIT 1 SET
   519	000326'					BR0	CONIN		;BIT 1=0 AND BIT 0=1 -> CONTROL IN REQUEST
   520	000330'					ALWAYS	BAIN		;BIT 0&1=0 -> BUFFER ADDRESS IN REQUEST
   521	000332'				20$:	BR0	BASEIN		;BIT 1=1 BIT 0=1 -> BASE IN REQUEST
   522									;BIT 1=1 BIT 0=0 -> ILLEGAL REQUEST
   523						.DSABL	LSB
   524					 
   525					; ABOVE THREE ROUTINES RETURN HERE AFTER REQUEST HAS BEEN PROCESSED
   526					 
   527	000334'				RQICL2:	BRWRTE	IMM,0		;CLEAR OUT CONTROL CSR
   528	000336'					OUT	BR,SELB,OOCON	;..
   529	000340'					SPBR	IBUS,UBBR,SP0	;READ THE MISC REGISTER
   530	000342'					BR0	NXMERR		;IF BIT 0 SET, THEN A NON-EXISTENT MEMORY
   531									;ERROR OCCURRED, REPORT IT.
   532	000344'					ALWAYS	IDLE		;OTHERWISE, BACK TO IDLE LOOP
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 8
KDPMC.MAC    14-JUN-79 07:11		DATA PORT PROCESSING ROUTINES

   534
   535						.SBTTL	TIMER - TIMER SERVICE
   536					;+
   537					; **TIMER-TIMER SERVICE ROUTINE**
   538					;
   539					; INPUTS:
   540					;	BRG & SP0 = IMAGE OF BUS REQUEST REGISTER
   541					;
   542					; OUTPUTS:
   543					;	EACH DEVICES TIMER COUNTER IS DECREMENTED AND TESTED FOR
   544					;	AN EXPIRATION.  IF THE COUNTER WENT TO ZERO THE DEVICE
   545					;	IS POLLED TO SEE IF IT HAS A TRANSMIT DONE OR A RECEIVE DONE
   546					;	AND IF SO IT IS SERVICED.  IF NONE OF THE DEVICES REQUIRES
   547					;	SERVICING THE MODEM TIMER IS DECREMENTED AND IF IT EXPIRED
   548					;	MODEM CHANGES ARE CHECKED.
   549					;	WHEN A DEVICE DONE SERVICE ROUTINE IS FINISHED THIS ROUTINE
   550					;	CONTINUES WITH THE NEXT DEVICE.
   551					;-
   552						.ENABL	LSB
   553	000346'				TIMER:	BRWRTE	IMM,121		;MASK TO CLEAR ALL BUT TIMER, XX4 AND NXM
   554									;N.B. THE TIMER WILL ALREADY BE SET TO ONE
   555									;FROM IT EXPIRING SO THE MASK IS GUARANTEED
   556									;TO LEAVE IT A ONE FOR RESETTING
   557	000350'					OUT	BR,AANDB,OBR	;AND THE MASK WITH THE PREVIOUS CONTENTS OF
   558									;THE BUS REQUEST REGISTER RESETING THE
   559									;TIMER
   560	000352'					BRWRTE	IMM,0		;ZERO THE BRG
   561	000354'					SP	BR,SELB,SP.LN	;START WITH LINE ZERO
   562	000356'					SP	BR,SELB,SP.RM0,LDMAR	;SAVE THE ADDRESS IN RAM ADDRESS SCRATCH PAD
   563	000360'					SP	BR,SELB,SP.RM1,LDMAPG	;INITIALIZE SCRATCH PAD WITH THE HIGH BITS
   564	000362'					ALWAYS	TIMRT1		;START POLLING
   565					 
   566					 
   567					; MAIN POLLING LOOP
   568					; RECEIVE DONE  ROUTINES RETURN HERE
   569
   570	000364'				TIMRTN:
   571					 
   572	000364'				10$:
   573	000364'					SPBR	IBUS,UBBR,SP0	;READ THE MISC.  REGISTER
   574	000366'					BR0	NXMERR		;NXM ERROR OCCURRED DURING LAST POLL
   575	000370'					SP	BR,INCA,SP.LN	;ONE LESS DEVICE TO POLL
   576	000372'					BRWRTE	IMM,MAXDEV	;CHECK TO SEE IF LAST DEVICE
   577	000374'					COMP	BR,SP.LN	;HAS BEEN POLLED
   578	000376'					Z	IDLE1		;ALL DONE - BACK TO IDLE LOOP
   579	000400'					BRWRTE	IMM,P.LADR,LDMAPG	;GET STARTING ADDRESS FOR TABLE
   580									;OF LINE TABLE ADDRESSES AND SET MAR HI
   581	000402'					SP	BR,SELB,SP0	;SAVE IT IN SP0
   582	000404'					BRWRTE	BR,TWOA,SP.LN	;MAKE LINE NUMBER A DOUBLE BYTE INDEX
   583	000406'					LDMA	BR,ADD,SP0	;SET ADDRESS FOR ENTRY OF THIS LINE
   584	000410'					SP	MEMI,SELB,SP.RM0	;SAVE ADDRESS FOR THIS LINE
   585	000412'					SP	MEMX,SELB,SP.RM1,LDMAPG	;HIGH 2 BITS AND LOAD MAR HI
   586	000414'					LDMA	BR,SELA,SP.RM0	;LOAD MAR LOW
   587	000416'				TIMRT1:
   588	000416'					BRWRTE	MEMI,SELB	;SAVE THE RESTART VALUE IN THE BRG
   589									;AND INCREMENT THE MAR
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 8-1
KDPMC.MAC    14-JUN-79 07:11		TIMER - TIMER SERVICE

   590									;IN CASE THE TIMER EXPIRED
   591	000420'					SP	MEMX,SELB,SP0	;READ THE COUNTER FOR THIS DEVICE
   592	000422'					Z	10$		;THE DEVICE IS NOT ACTIVE
   593	000424'					MEM	BR,DECA,SP0	;DECREMENT THE COUNTER AND WRITE IT
   594									;BACK TO MEMORY
   595	000426'					C	10$		;LOOK AT THE NEXT DEVICE'S COUNTER
   596
   597					; TIMER HAS EXPIRED - SEE IF THERE ARE ANY "DONES" PENDING
   598					; INPUTS:
   599					;	BRG = RESET VALUE
   600
   601	000430'				30$:	MEMINC	BR,SELB		;RESET THE COUNTER TO THE INITIAL VALUE
   602	000432'					OUTPUT	MEMI,SELB,IBA1 ;STORE THE LOW BYTE OF THE DEVICES
   603									;CSR INTO THE LOW BYTE OF THE INPUT BUFFER
   604									;ADDRESS REGISTER
   605	000434'					OUTPUT	MEMI,SELB,IBA2 ;DO THE SAME WITH THE HIGH BYTE
   606									;AND INCRMENT THE MAR TO STATUS BYTE
   607	000436'					BRWRTE	IMM,14!DATI		;MASK TO SET EXTENDED MEMORY BITS
   608									; DO AN INPUT NPR
   609	000440'					OUT	BR,SELB,ONPR	;START THE NPR
   610	000442'					SP	MEMX,SELB,SP.STS	;SAVE THE STATUS BYTE IN SP.STS
   611	000444'				40$:	BRWRTE	IBUS,NPR	;READ THE NPR REQUEST REGISTER
   612	000446'					BR0	40$		;WAIT FOR THE NPR TO COMPLETE
   613	000450'					SPBR	IBUS,INDAT2,SP1	;READ THE HIGH BYTE OF CSR 0
   614									;SAVE IT IN SP1 FOR XMTDON
   615	000452'					BRWRTE	BR,AXORB,SP.STS	;SEE IF ANY CHANGE IN THE DSR STATE
   616	000454'					BR1	DSRCHG		;DATA SET READY HAS CHANGED STATES
   617	000456'					SP	IBUS,IIBA1,SP0		;READ LOW BYTE OF CSR0'S ADDRESS
   618	000460'					SPBR	IBUS,INDAT1,SP.CS0	;READ THE LOW BYTE OF THE DEVICES CSR
   619	000462'					BR7	60$			;RECEIVE DONE SET
   620					;
   621					; SEE IF TRANSMIT DONE SET
   622					;
   623	000464'				45$:	BRSHFT			;SHIFT THE CSR IMAGE
   624	000466'					BR1	XMTDON		;REQUEST TO SEND SET
   625					;
   626					; RETURN HERE AFTER FINISHED PROCESSING THE TRANSMITTER
   627					;
   628	000470'				TIMRT3:
   629	000470'				50$:
   630	000470'					BRWRTE	BR,SELA,SP.CS0	;RE-READ IMAGE OF CSR0
   631	000472'					BR7	RCVDON		;RECEIVE DONE WAS SET
   632	000474'					ALWAYS	10$		;NOT SET - RETURN
   633					;
   634					; RECEIVE DONE FOUND SET
   635					;
   636	000476'				60$:
   637	000476'					BRWRTE	IMM,2		;PREPARE TO ADD TWO TO THIS ADDRESS
   638					 
   639	000500'					OUTPUT	BR,ADD,IBA1	;ADD TWO TO THE ADDRESS IN SP0 GETTING THE ADDRESS
   640									; OF CSR2 WHICH CONTAINS THE RECEIVE
   641									;CHARACTER IN THE LOW BYTE AND THE
   642									;STATUS IN THE HIGH BYTE
   643	000502'					BRWRTE	IMM,14!DATI		;MASK TO SET EXTENDED MEMORY BITS
   644									;AND TO START THE NPR
   645	000504'					OUT	BR,SELB,ONPR	;START THE NPR TO READ CSR2
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 8-2
KDPMC.MAC    14-JUN-79 07:11		TIMER - TIMER SERVICE

   646	000506'				70$:	BRWRTE	IBUS,NPR	;READ THE NPR STATUS REGISTER
   647	000510'					BR0	70$		;NPR IS NOT DONE YET
   648	000512'					SP	IBUS,INDAT1,SP.CHR	;SAVE THE CHARACTER IN A SCRATCH PAD
   649	000514'					SP	IBUS,INDAT2,SP.RST	;SAVE THE CHARACTER'S STATUS
   650	000516'					BRWRTE	BR,SELA,SP.CS0		;RESTORE THE BRG FOR XMIT DONE TESTING
   651	000520'					ALWAYS	45$			;SEE IF ANY XMIT DONES
   652					 
   653										;UPON TRANSFER TO XMTDON OR RCVDON
   654									;THE FOLLOWING LOCATIONS HAVE BEEN SET UP
   655									;FOR ENTRY TO THE "DONE" PROCESSOR:
   656									; SP.RM1 -> BITS 8&9 OF RAM TABLE ADDRESS
   657									; SP.RM0 -> BITS 0-7 OF RAM TABLE ADDRESS
   658									; MAR --> STATUS (D.STS) IN LINE TABLE
   659									; SP.LN --> LINE NUMBER
   660									; SP.CS0 --> IMAGE OF LOW BYTE OF CSR 0
   661									; SP.STS --> IMAGE OF D.STS
   662									; SP0 --> LOW BYTE OF CSR 0 ADDRESS
   663									; SP1 --> HIGH BYTE OF CONTENTS OF CSR 0
   664									; NPR INPUT ADDR -> DEVICE CSR 0
   665									;IF RECV DONE, 
   666									; SP.CHR --> RECEIVED CHARACTER
   667									; SP.RST --> RCV CHAR STATUS (CSR2 MSB)
   668						.DSABL	LSB
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 9
KDPMC.MAC    14-JUN-79 07:11		TIMER - TIMER SERVICE

   670
   671					;%	FILE	DUPUSER.MAC
   672
   673					;INDIRECT RETURNS THROUGH PAGE ZERO
   674					 
   675					;******FOLLOWING INSTRUCTIONS MUST RESIDE IN MICRO PAGE ZERO******
   676					 
   677					 
   678					;RETURN FROM INCOUT DUE TO A CALL FROM BOUT ROUTINE
   679	000522'				BOUTR0:	ALWAYS	QPDATA	;GO TO QPDATA ON RETURN
   680					 
   681					 
   682					;RETURN FROM INCOUT DUE TO A CALL FROM XMTSND
   683	000524'				XMTEM0:	ALWAYS	XMTBC0
   684
   685
   686					;RETURN FROM LSILO DUE TO A CALL FROM RB3
   687	000526'				RB3P0:	ALWAYS	STORE	;GO TO STORE ROUTINE ON RETURN
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 10
KDPMC.MAC    14-JUN-79 07:11		TIMER - TIMER SERVICE

   689
   690						.SBTTL	BASEIN-BASE IN SERVICE ROUTINE
   691					 
   692					;+
   693					;
   694					;			B A S E  I N
   695					;
   696					;
   697					;
   698					;CALLED BY:	RDICLR
   699					;
   700					;INPUTS:
   701					;	KMC BSEL3		=LINE NUMBER
   702					;	KMC SEL6 <3:12>		=CSR ADDR FOR CURRENT DUP
   703					;	SP.RM0,SP.RM1		=LINE TABLE ADDRESSES
   704					;	MAR 			=LINE TABLE 
   705					;OUTPUTS:
   706					;	DUP CSR ADDR IS SAVED IN THE LINE TABLE (D.CSR)
   707					;	DUP IS RESET
   708					;-
   709					 
   710	000530'				BASEIN:
   711					;SAVE CURRENT DUP CSR ADDR IN RAM
   712					 
   713	000530'					SP	IBUS,PORT3,SP0,INCMAR	;GET CSR ADDR INTO SP0
   714	000532'					BRWRTE	IMM,370,INCMAR		;MASK TO STRIP 3 LSB'S OF CSR ADDR
   715	000534'					MEM	BR,AANDB,SP0	;STRIP THEM AND STORE IN RAM
   716	000536'					OUTPUT	MEMI,SELB,OBA1	;SAVE CSR IN OUT ADDRESS REGISTERS
   717	000540'					SP	IBUS,PORT4,SP0	;GET HIGH BYTE INTO SP0
   718	000542'					BRWRTE	IMM,340		;MASK TO SET 3 MSB'S
   719	000544'					MEM	BR,AORB,SP0	;SAVE IT IN RAM WITH 3 HIGH BITS SET TO ONES
   720	000546'					OUTPUT	MEMX,SELB,OBA2	;SAVE HIGH BYTE OF CSR ADDRESS
   721					 
   722	000550'				BASEI1:
   723					;DEVICE RESET THE DUP
   724					 
   725	000550'					BRWRTE	IMM,DUPDR	;SET PROPER BIT (BIT 0) IN OUTDATA HB
   726	000552'					OUTPUT	BR,SELB,OUTDA2
   727	000554'					CALLSR	SP.SUB,INCOB,RQICL2,5	;DO THE NPR TO MASTER CLEAR THE DUP
   728									;AND RETURN TO CLEAR READY IN
   729					; RESET IS A 2 MICRO-SECOND ONE SHOT.IT IS ASSUMED THAT BEFORE THE DUP
   730					;IS ACCESSED AGAIN, THIS PERIOD WILL HAVE ELAPSED.
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 11
KDPMC.MAC    14-JUN-79 07:11		BASEIN-BASE IN SERVICE ROUTINE

   732
   733						.SBTTL	CONIN-CONTROL IN PROCESS ROUTINE
   734					 
   735					;+
   736					;
   737					;			C O N T R O L  I N
   738					;
   739					;
   740					;
   741					;CALLED BY:	RDICLR
   742					;
   743					;INPUTS:
   744					;	BSEL4 (PORT1)	=POLLING COUNT
   745					;	BSEL6 (PORT3)	=SECONDARY ADDRESS
   746					;	BSEL7 (PORT4)	=CONTROL FLAGS
   747					;	SP.RM0,SP.RM1	=LINE TABLE ADDRESS
   748					;	MAR		=LINE TABLE ADDRESS
   749					;	OUT BA		=DUP'S CSR 0
   750					;OUTPUTS:
   751					;	VARIOUS LINE TABLE LOCATIONS AND DUP FUNCTIONS ARE INITIALIZED ACCORDING TO
   752					;	THE CONTROL IN PARAMETERS.THESE INCLUDE:
   753					;		DUP CSR XX0-STRIP SYNC FOR DEC MODE
   754					;		DUP CSR XX2-DEC MODE&SYNC CHARACTER FOR DDCMP OR SEC MODE,
   755					;		  SEC ADDRESS FOR BITSTUFF MODE
   756					;		DUP CSR XX4-HALFDUPLEX
   757					;-
   758					 
   759	000564'				CONIN:
   760	000564'					BRWRTE	IBUS,PORT4	;READ BSEL 7
   761	000566'					BR0	10$		;ENABLE LINE IS SET
   762	000570'					SPBR	IMM,0,SP0,INCMAR	;CLEAR SP0
   763	000572'					MEMINC	DECA,SP0	;WRITE A 377 TO D.TIME DISABLING THIS LINE
   764	000574'					ALWAYS	20$
   765					 
   766	000576'				10$:	MEMINC	IBUS,PORT1	;SET TIMER RESTART VALUE
   767	000600'					MEMINC	IBUS,PORT1	;AND TIMER ENABLING THE LINE
   768	000602'					BRWRTE	IMM,DUPDTR!DUPREN	;VALUE TO SET  DTR AND RECEIVE ENABLE
   769					 
   770					; BRG = DUPDTR!DUPREN IF ENABLE WAS REQUEST OR 0 IF DISABLE
   771					 
   772	000604'				20$:	OUTPUT	BR,SELB,OUTDA1,INCMAR	;VALUE TO SET OR CLEAR DTR,RCV ENABLE
   773	000606'					BRWRTE	IBUS,PORT4,INCMAR	;REREAD BSEL7
   774										;MAR = D.STS
   775	000610'					MEM	IMM,DUPSSY	;ASSUME DEC MODE BY STORING STRIP SYNC
   776									;BIT TEMPORARILY IN MEMORY
   777	000612'					BR7	30$		;IT IS DEC MODE
   778	000614'					MEM	IMM,0		;BIT STUFF MODE - DON'T SET STRIP SYNC
   779	000616'				30$:	OUTPUT	MEMX,SELB,OUTDA2	;STORE STRIP SYNC SETTING
   780	000620'					BRWRTE	IMM,DATO	;DO AN OUTPUT NPR 
   781	000622'					OUT	BR,SELB,ONPR	;REQUEST THE NPR
   782	000624'				40$:	BRWRTE	IBUS,NPR	;SEE IF NPR DONE YET
   783	000626'					BR0	40$		;WAIT FOR IT
   784					 
   785	000630'				CONIN2:
   786	000630'					SPBR	IBUS,PORT4,SP0	;REREAD BSEL7
   787	000632'					BR7	10$		;DEC MODE?
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 11-1
KDPMC.MAC    14-JUN-79 07:11		CONIN-CONTROL IN PROCESS ROUTINE

   788					; LOAD SYNC CHARACTER/SECONDARY ADDRESS INTI XX2 LOW BYTE
   789					 
   790	000634'					OUTPUT	IBUS,PORT3,OUTDA1 ;NO,SO LOAD SEC ADDRESS FIELD
   791	000636'					MEM	IMM,DS.CRI	;ASSUME CRC INHIBIT
   792	000640'					BR1	5$		;BRANCH IF IT IS CRC INHIBIT
   793	000642'					MEM	IMM,0		;CLEAR D.STS
   794	000644'				5$:	BRWRTE	IMM,DUPSAM!DUPCRI ;SET SECONDARY ADDRESS MODE,CRC INHIBIT
   795	000646'					ALWAYS	20$
   796					; UPDATE XX3
   797	000650'				10$:
   798	000650'					MEM	IMM,SYNC	;MOVE SYNC CHARACTER TO MEMORY IN ORDER
   799									;TO SAVE THE BRG
   800	000652'					OUTPUT	MEMX,SELB,OUTDA1 ;MOVE IT TO OUT DATA REGISTER
   801	000654'					MEM	IMM,DS.SEC!DS.DEC	;ASSUME DEC AND SEC MODE
   802	000656'					BR4	15$			;BRANCH IF SEC MODE
   803	000660'					MEM	IMM,DS.DEC		;NO,JUST DEC MODE
   804	000662'				15$:	BRWRTE	IMM,DUPDEC	 ;ISOLATE DEC MODE,CRC INHIBIT
   805					;NOTE: DUP SOULD NOT BE SET TO SECONDARY ADDRESS MODE WHILE IN DEC MODE.THIS
   806					;WILL INHIBIT RECEIVE DONES.
   807	000664'				20$:
   808	000664'					OUTPUT	BR,AANDB,OUTDA2 	;MODE CRC INHIBIT&AND LOAD INTO OUTADA2
   809	000666'					CALLSB	SP.SUB,IC2OUT		;WRITE IT OUT TO XX3,XX2
   810					; UPDATE DUP XX5,XX4
   811					 
   812	000674'				CONIN3:
   813	000674'					BRWRTE	IBUS,PORT4
   814	000676'					BRSHFT
   815	000700'					BR4	30$			;HALF DUPLEX MODE
   816					;FULL DUPLEX MODE,CLEAR XX4
   817					 
   818	000702'					BRWRTE	IMM,0
   819	000704'					ALWAYS 	40$
   820					 
   821					;HALF DUPLEX MODE, SET HALF DUPLEX BIT IN XX4
   822					 
   823	000706'				30$:
   825	000706'					BRWRTE	IMM,DUPHDX	;HALF DUPLEX MASK (SAME AS DX.HDX)
   826	000710'					SP	BR,SELB,SP0	;SAVE IT IN SP0
   827	000712'					MEM	MEMX,AORB,SP0	;SET HALF DUPLEX IN D.STS
   828	000714'				40$:
   829					 
   830	000714'					OUTPUT	BR,SELB,OUTDA1,INCMAR	;WRITE HALF DUPLEX MASK
   831									;MAR = D.RPTR (RECV STATE POINTER)
   832					 
   833					; SET RECEIVE STATE POINTER
   834					 
   835	000716'					RSTATE	RDH1		;ASSUME DEC MODE
   836	000720'					BRWRTE	IBUS,PORT4	;REREAD BSEL 7
   837	000722'					BR7	50$		;IT IS
   838	000724'					RSTATE	RB1		;BIT STUFF MODE
   839					 
   840					;CLEAR XX5
   841	000726'				50$:	BRWRTE	IMM,0
   842	000730'					OUTPUT	BR,SELB,OUTDA2,INCMAR
   843									;MAR = D.SADR (SECONDARY ADDRESS)
   844					 
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 11-2
KDPMC.MAC    14-JUN-79 07:11		CONIN-CONTROL IN PROCESS ROUTINE

   845	000732'					MEMINC	IBUS,PORT3	;SAVE SECONDARY ADDRESS
   846	000734'					BRWRTE	IMM,D.XSTS	;OFFSET OF TRANSMIT ABORT STATUS
   847	000736'					LDMA	BR,ADD,SP.RM0	;SET MAR
   848	000740'					MEM	IMM,0		;CLEAR ANY PENDING STATUS
   849					 
   850					;WRITE TWO BYTES INTO XX4/XX5
   851					 
   852	000742'					CALLSR	SP.SUB,IC2OUT,RQICL2	;SHIP IT AND RETURN TO CALLER
   853					  
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 12
KDPMC.MAC    14-JUN-79 07:11		CONIN-CONTROL IN PROCESS ROUTINE

   855
   856						.SBTTL	BAIN-BUFFER ADDRESS IN SERVICE ROUTINE
   857					 
   858					;+
   859					;		B U F F E R  A D D R E S S  I N
   860					; 
   861					;CALLED BY:	RDICLR
   862					;
   863					;INPUTS:
   864					;	SEL4,BSEL7 <7:6>	=BUFFER DESCRPTR LIST ADDR
   865					;	BSEL7<5:4>	=KILL ASSIGN AND KILL BITS
   866					;	SP.RM0,SP.RM1	=LINE TABLE ADDRESS
   867					;	MAR 		=LINE TABLE
   868					;	OUT BA		=DUP'S CSR ADDRESS
   869					;OUTPUTS:
   870					;	BUFFER DESCRIPTOR ADDRESS DEFINED BY THE BA IN IS LOADED INTO
   871					;	THE APPROPRIATE (RECEIVE/TRANSMIT) DESCRIPTOR POINTER.
   872					;	IF THE CURRENT BUFFER IS THE ONE JUST ASSIGNED,LINE TABLE LOCATIONS
   873					;	(BUFFER ADDRESS,BYTE COUNT) ARE UPDATED. OTHERWISE DR.ABA IS SET (ALT ASGNED)
   874					;	IF THE CURRENT BUFFER FOR TRANSMISSION IS BEING ASSIGNED,FIRST ODD
   875					;	CHARACTER IN THE TRANSMIT BUFFER IS SAVED IN D.OXC
   876					;	IF THE CURRENT BUFFER FOR RECEPTION IS BEING ASSIGNED,DR.FST IS SET
   877					;-
   878
   879	000750'				BAIN:
   880					 
   881					;LOAD RECEIVE CONTROL AND STATUS REGISTER INTO SP.CS0
   882					 
   883	000750'					OUTPUT	IBUS,IOBA1,IBA1	;SET INBA 7:0
   884	000752'					OUTPUT	IBUS,IOBA2,IBA2	;SET INBA 15:8
   885	000754'					BRWRTE	IMM,<BIT3!BIT2!DATI>	;SET EXT BITS AND 
   886	000756'					OUT	BR,SELB,ONPR	;DO IN NPR
   887					;DETERMINE TYPE OF IO REQUIRED (RECEIVE OR TRANSMIT)
   888					 
   889	000760'					BRWRTE	IBUS,OCON	;GET OUTPUT CONTROL REGISTER
   890	000762'					BRSHFT
   891	000764'					BR1	BARCV		;BAIN FOR RECEIVE
   892					 
   893					;BAIN FOR TRANSMIT OPERATION
   894	000766'					BRWRTE	IMM,D.XDP	;ADDRESS D.XDP
   895	000770'					ALWAYS	BAIN1
   896					;BAIN FOR RECEIVE OPERATION
   897	000772'				BARCV:	BRWRTE	IMM,D.RDP	;ADDRESS D.RDP
   898	000774'				BAIN1:
   899	000774'					BRWRTE	BR,ADD,SP.RM0	;BR=ADDRESS OF D.RDP OR D.XDP
   900	000776'					SP	BR,SELB,SP6	;SET SP6=THAT ADDRESS
   901	001000'				10$:	BRWRTE	IBUS,NPR	;WAIT FOR NPR COMPLETION
   902	001002'					BR0	10$
   903	001004'					SP	IBUS,INDAT1,SP.CS0	;LOAD RCV CSR (XX0) INTO SP.CS0
   904					 
   905					;CHECK IF THERE IS A KILL
   906					 
   907	001006'					BRWRTE	IBUS,PORT4		;GET PORT 4 INTO BR
   908	001010'					BR4	KILLAL			;BRANCH TO KILL ROUTINE
   909					 
   910					 
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 12-1
KDPMC.MAC    14-JUN-79 07:11		BAIN-BUFFER ADDRESS IN SERVICE ROUTINE

   911					; THIS IS A VALID BUFFER ASSIGNMENT
   912					;(ALSO ENTRY POINT AFTER A KILL IF A NEW BUFFER IS ASSIGNED)
   913	001012'				BAIN0:
   914					 
   915					;CHECK IF CURRENT OR ALTERNATE OPERATION
   916	001012'					BRWRTE	IMM,<D.RBDF-D.RDP>	;OFFSET TO FLAG BYTE FOR CURRENT OPERATION
   917	001014'					LDMA	BR,ADD,SP6	;ADDRESS FLAG BYTE
   918	001016'					SPBR	MEMX,SELB,SP5	;GET FLAGS INTO BR,SP5
   919	001020'					BRSHFT
   920	001022'					BR4	BAALT		;CURRENT BUFFER ALREADY ASSIGNED
   921					;CURRENT BUFFER NOT ASSIGNED,ASSIGN CURRENT BUFFER
   922	001024'					MEM	IMM,DR.CBA	;SET CURRENT BUFFER ASSIGNED & CLEAR
   923									;ALL OTHER BITS IN FLAG BYTE
   924	001026'					LDMA	BR,SELA,SP6	;ADDRESS D.RDP/D.XDP
   925					;SAVE LIST ADDRESS AT CURRENT MEMORY LOCATION
   926	001030'				BAIN2:
   927	001030'					MEMINC	IBUS,PORT1	;ADDRESS 7:0
   928	001032'					MEMINC	IBUS,PORT2	;ADDRESS 15:8
   929	001034'					SP	IBUS,PORT4,SP0	;GET EXT ADDRESS
   930	001036'					BRWRTE	IMM,300		;BR=MASK TO ISOLATE EXT ADDRESS
   931	001040'					BRWRTE	BR,AANDB,SP0	;BR=JUST EXT ADDRESS BITS
   932	001042'					BRSHFT			;SHIFT IT INTO PROPER POSITION
   933	001044'					BRSHFT
   934	001046'					BRSHFT
   935	001050'					BRSHFT
   936	001052'					MEM	BR,SELB		;SAVE EXT ADDRESS
   937					 
   938					;IF THE CURRENT BUFFER IS BEING ASSIGNED,DO SPECIAL THINGS
   939	001054'					BRWRTE	BR,TWOA,SP5	;SP5 HAS FLG BITS
   940	001056'					BR7	RQICL2		;ALTERNATE BUFFER ASSIGNED,EXIT
   941					;CURRENT BUFFER BEING ASSIGNED,MOVE DESCRIPTOR PARAMETRS INTO RAM
   942	001060'					CALLSR	SP.SB1,NXDSCP,RQICR2	;RETURN TO IDLE THROUGH PAGE 2
   943					;LABEL TO USE "ALWAYS NXDSCP" IN THE ABOVE MACRO AS AN INTER PAGE RETURRN
   944		001064'			NXDP1=.-2
   945					 
   946					;ASIGNING ALTERNATE BUFFER
   947	001066'				BAALT:
   948					 
   949	001066'					BRWRTE	IMM,DR.ABA	;SET DR.ALT(=DX.ALT)BIT
   950	001070'					MEM	BR,AORB,SP5
   951	001072'					SP	MEMX,SELB,SP5	;SET SP5=NEW FLAGS
   952	001074'					BRWRTE	IMM,<D.ARLP-D.RDP>	;ADDRESS ALTERNATE POINTER
   953	001076'					LDMA	BR,ADD,SP6
   954	001100'					ALWAYS	BAIN2		;SAVE LIST POINTER IN RAM
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 13
KDPMC.MAC    14-JUN-79 07:11		BAIN-BUFFER ADDRESS IN SERVICE ROUTINE

   956
   957						.SBTTL	XMTDON - TRANSMIT DONE
   958					;	FILE	DUXMIT.MAC
   959					 
   960					;+
   961					; **-XMTDON-ROUTINE TO LOOK FOR AND HANDLE A DUP TRANSMIT DONE**
   962					;
   963					; CALLED BY:	TIMER
   964					;
   965					; INPUTS:
   966					;	SP0	= LOW BYTE OF DUP'S CSR0 ADDRESS
   967					;	SP1	= HIGH BYTE OF DUP'S CSR0 (CTS STATUS)
   968					;	SP.RM0-RM1	= RAM TABLE ADDRESS
   969					;	SP.CS0	= LOW BYTE OF CSR0 (CONTAINS STATE OF RTS & RECV. ENABLE)
   970					;	SP.LN	= LINE NUMBER
   971					;	MAR AND SP.STS	= STATUS BYTE IN LINE'S TABLE
   972					;	IN DATA ADDRESS	= DUP'S CSR 0
   973					;
   974					; OUTPUTS:
   975					;	IN THE NORMAL CASE THE NEXT CHARACTER IS TRANSMITTED.  SPECIAL
   976					;	CASES INCLUDE HANDLING SYNC TRANSMISSION, CRC TRANSMISSION
   977					;	AND ERROR CONDITIONS.
   978					;-
   979					 
   980	001102'				XMTDON:
   981	001102'					BRWRTE	SELA,SP1	;READ THE HIGH BYTE OF CSR 0
   982	001104'					BRSHFT
   983	001106'					BR4	10$		;CLEAR TO SEND IS SET
   984	001110'					ALWAYS	TIMRT3		;NO, SET CHECK FOR RECEIVE DONES
   985	001112'				10$:	BRWRTE	IMM,4		;PREPARE TO POINT TO CSR4
   986	001114'					OUTPUT	BR,ADD,IBA1	;SET IT UP
   987	001116'					BRWRTE	IMM,14!DATI		;MASK TO SET EXTENDED MEMORY BITS
   988									;AND START NPR
   989	001120'					OUT	BR,SELB,ONPR	;START THE NPR
   990	001122'				20$:	BRWRTE	IBUS,NPR	;IS THE NPR DONE YET
   991	001124'					BR0	20$		;NO, WAIT FOR IT
   992	001126'					BRWRTE	IBUS,INDAT1	;READ THE TRANSMIT CNTROL REGISTER
   993	001130'					BR7	XMTDN1		;TRANSMIT DONE SET
   994	001132'					ALWAYS	TIMRT3		;TRANSMIT NOT DONE - RETURN
   995					 
   996					; TRANSMIT DONE FOUND
   997					 
   998						.ENABL	LSB
   999	001134'				XMTDN1:
  1000	001134'					OUTPUT	IBUS,IIBA1,OBA1	;COPY INPUT ADDRESS TO OUTPUT
  1001	001136'					OUTPUT	IBUS,IIBA2,OBA2	;ADDRESS
  1002	001140'					SP	IBUS,UBBR,SP0	;READ THE CONTENTS OF THE BUS REQ REG
  1003	001142'					BRWRTE	IMM,101		;MASK TO CLEAR ALL BUT NXM AND XX4 BITS
  1004	001144'					SP	BR,AANDB,SP0	;CLEAR THEM
  1005	001146'					BRWRTE	IMM,14		;EXTENDED MEMORY BITS
  1006	001150'					OUT	BR,AORB,OBR	;SET THEM UP
  1007	001152'					BRWRTE	IMM,D.XSTS	;LOOK AT TRANSMIT STATUS BYTE
  1008	001154'					LDMA	BR,ADD,SP.RM0	; LOAD THE MAR
  1009	001156'					SPBR	MEMX,SELB,SP0	;READ THE BYTE
  1010	001160'					BR4	XMTABT		;TRANSMIT ABORT PENDING
  1011	001162'					BRWRTE	IMM,D.XBDF	;LOOK AT TRANSMITTER FLAGS WORD
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 13-1
KDPMC.MAC    14-JUN-79 07:11		XMTDON - TRANSMIT DONE

  1012	001164'					LDMA	BR,ADD,SP.RM0	; (LOAD MAR)
  1013	001166'					BRWRTE	MEMX,SELB	;READ THE FLAGS WORD
  1014	001170'					BRSHFT			;SHIFT IT RIGHT
  1015	001172'					BR4	50$		;BUFFER IS ASSIGNED
  1016					 
  1017					; THIS DONE IS THE RESULT OF A BUFFER TERMINATING AND NO SUBSEQUENT BUFFERS ASSIGNED
  1018					 
  1019	001174'					BR0	10$		;LAST BUFFER HAD END OF MESSAGE SET
  1020	001176'					ALWAYS	TIMRT3		;PREVIOUS BUFFER WAS NOT THE END OF
  1021									;MESSAGE - WAIT FOR THE NEXT BUFFER
  1022									;OR AN UNDERRUN ERROR
  1023	001200'				10$:	SP	IBUS,IOBA1,SP0	;READ THE LOW BYTE OF OUT ADDRESS (CSR 4)
  1024	001202'					BRWRTE	IMM,370		;MASK TO CHANGE IT TO CSR 0
  1025	001204'					OUTPUT	BR,AANDB,OBA1	;MAKE IT CSR 0
  1026	001206'					BRWRTE	IMM,377-DUPRTS		;MASK TO CLEAR RTS
  1027	001210'					SPBR	BR,AANDB,SP.CS0		;AND IMAGE OF CSR 0
  1028	001212'					OUTPUT	BR,SELB,OUTDA1	;IMAGE OF CSR 0 WITH RTS CLEAR
  1029	001214'					ALWAYS	XMTSN0			;START THE NPR THEN RETURN TO TIMER LOOP
  1030					 
  1031					; BUFFER IS ASSIGNED
  1032					 
  1033	001216'				XMTDN3:
  1034	001216'				50$:
  1035	001216'					BRWRTE	IBUS,INDAT1	;READ THE TRANSMIT CNTROL REGISTER
  1036	001220'					BR4	55$		;SEND SET
  1037	001222'					BRWRTE	IBUS,INDAT2	;GET THE BYTE CONTAINING TX ACTIVE
  1038	001224'					BR1	TIMRT3		;IF SET, DON'T SET SEND YET.
  1039									;NOTE THAT THE DUP MAY GET IN AN ILLEGAL
  1040									;SET IF SEND IS DROPPED AND REASSERTED BEFORE
  1041									;TX ACTIVE CLEARS
  1042	001226'					SP	IMM,DUPSND,SP0	;MASK TO SET SEND
  1043	001230'					ALWAYS	XMTSND		;"CALL" SEND ROUTINE AND RETURN TO TIMER LOOP
  1044					;
  1045					; ENTER HERE AFTER COMPLETING ONE BUFFER AND FIND ANOTHER ASSIGNED
  1046					; THE BRG CURRENTLY CONTAINS THE TRANSMIT FLAGS BYTE ROTATED
  1047					;
  1048	001232'				XMTDN4:	BR7	TIMRT3		;START OF MESSAGE SET - INDICATES PREVIOUS
  1049									;MESSAGE ENDED WITH AN EOF HENCE A TEOM
  1050									;HAS JUST BEEN SENT SO WAIT FOR NEXT TDONE
  1051	001234'				55$:	SPBR	MEMX,SELB,SP0	;READ THE FLAGS AGAIN
  1052	001236'					BR0	120$		;START OF MESSAGE FLAG SET
  1053	001240'				60$:	CALLSR	SP.SUB,DECNT,XMTCNT,D.XBDC ;DECREMENT THE BYTE COUNT
  1054					 
  1055					; ABOVE SUBROUTINE RETURNS HERE IF THE BYTE COUNT WAS NOT ZERO
  1056					; IF BYTE COUNT WAS ZERO, END OF BUFFER CONDITIONS ARE CHECKED IN XMTCNT
  1057					 
  1058	001250'				XMTDN2:	SPBR	MEMX,SELB,SP1	;READ THE LOW BYTE OF THE ADDRESS
  1059									;AND SAVE IT IN THE BRG
  1060	001252'					MEMINC	INCA,SP1	;INCREMENT ADDRESS AND STORE IT BACK
  1061	001254'					BR0	110$		;ODD CHARACTER (ALREADY BEEN READ)
  1062									;OTHERWISE ITS AN EVEN CHARACTER
  1063
  1064					; TRANSMIT EVEN CHARACTER
  1065					;  MUST READ A WORD FROM MEMORY
  1066					;
  1067									;NO NEED TO WORRY ABOUT CARRY SINCE THERE
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 13-2
KDPMC.MAC    14-JUN-79 07:11		XMTDON - TRANSMIT DONE

  1068									;CAN'T BE ON AN EVEN TO ODD INCREMENT
  1069	001256'					OUTPUT	BR,SELB,IBA1	;BUFFER ADDRESS TO IN ADDRESS FIELD
  1070	001260'					OUTPUT	MEMI,SELB,IBA2	;..
  1071	001262'					BRWRTE	IMM,14		;MASK TO ISOLATE EXTENDED MEMORY BITS
  1072	001264'					SP	BR,AANDB,SP0	;MASK FLAGS WORD
  1073	001266'					OUT	INCA,ONPR	;SET EXTENDED MEM BITS AND NPR REQUEST BIT
  1074	001270'					BRWRTE	IMM,0		;ZERO THE BRG
  1075	001272'					OUTPUT	BR,SELB,OUTDA2	;CLEAR ALL DUP CONTROL BITS
  1076	001274'				80$:	BRWRTE	IBUS,NPR	;READ THE NPR STATUS REGISTER
  1077	001276'					BR0	80$		;NPR NOT DONE YET
  1078	001300'					OUTPUT	IBUS,INDAT1,OUTDA1,INCMAR ;MOVE CHARACTER TO OUTDATA FIELD
  1079									;AND MOVE THE MAR TO ODD CHARACTER SAVE BYTE
  1080	001302'					MEM	IBUS,INDAT2	;SAVE THE ODD CHARACTER IN RAM
  1081
  1082					; "RETURN" POINT FROM XMTSYN
  1083	001304'				WRTRT:
  1084	001304'					SP	IBUS,IOBA1,SP0	;READ CURRENT OUTPUT ADDRESS (CSR4)
  1085	001306'					BRWRTE	IMM,2		;VALUE TO ADD
  1086	001310'					OUTPUT	BR,ADD,OBA1	;POINT TO CSR6
  1087	001312'					BRWRTE	IMM,DATO	;MASK TO DO OUT NPR
  1088					; THIS IS THE "RETURN" POINT FROM XMTSND AND XMTSN0
  1089	001314'				XMTDN6:
  1090	001314'					OUT	BR,SELB,ONPR	;DO THE NPR
  1091	001316'				90$:	BRWRTE	IBUS,NPR	;WAIT FOR IT TO COMPLETE
  1092	001320'					BR0	90$		;NOT YET
  1093	001322'					ALWAYS	TIMRT3		;RETURN TO TIMER LOOP
  1094					 
  1095					; TRANSMIT ODD DATA CHARACTER
  1096					;
  1097					; INPUTS:
  1098					;	"C" BIT IS SET OR CLEAR DEPENDING ON CARRY FROM INCREMENT OF LOW BYTE
  1099					;	MAR	= D.XBDA+1
  1100					 
  1101	001324'				110$:	C	113$		;IF CARRY SET THEN MUST INCRMENT HIGH 10 BITS OF ADDR
  1102	001326'					BRWRTE	IMM,0,INCMAR	;ZERO THE BRG AND POINT MAR TO D.XBDF
  1103	001330'					ALWAYS	116$		;OTHERWISE NO NEED TO
  1104	001332'				113$:	CALLSB	SP.SUB,INCMM	;INCREMENT THE BUFFER ADDRESS (HIGH 10 BITS)
  1105									;RETURNS WITH MAR POINTING TO D.XBDF
  1106	001340'					BRWRTE	IMM,0		;ZERO THE BRG 
  1107	001342'				116$:	OUTPUT	BR,SELB,OUTDA2,INCMAR	;CLEAR ALL DUP CONTROL BITS
  1108									;AND POINT MAR TO ODD TRANSMIT CHARACTER
  1109	001344'					OUTPUT	MEMX,SELB,OUTDA1	;MOVE THE CHARACTER TO THE OUTDATA FIELD
  1110	001346'					ALWAYS	WRTRT		;INCREMENT OUT ADDR BY 2 (CSR6) AND DO AN
  1111									;NPR TO WRITE OUT THE CHARACTER
  1112									;RETURN TO THE TIMER LOOP
  1113					 
  1114					; START OF MESSAGE SET
  1115					;
  1116					; BRG AND SP0 = (D.XBDF)
  1117					 
  1118	001350'				120$:
  1119	001350'					BR4	XMTSYN		;RESYNC REQUESTED
  1120	001352'					BRWRTE	IBUS,INDAT2	;READ HIGH BYTE OF CSR4
  1121	001354'					BR7	130$		;UNDERRUN OCCURRED, SEND 2 SOM'S
  1123	001356'					MEM	DECA,SP0	;CLEAR IT
  1124	001360'					BRWRTE	SELA,SP.STS	;GET THE STATUS BYTE
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 13-3
KDPMC.MAC    14-JUN-79 07:11		XMTDON - TRANSMIT DONE

  1125	001362'					BRSHFT
  1126	001364'					BR4	60$		;DEC MODE (DDCMP)
  1127	001366'				130$:
  1128	001366'					BRWRTE	IMM,DUPTSM	;START OF MESSAGE BIT
  1129	001370'					OUTPUT	BR,SELB,OUTDA2	;SET START OF MESSAGE
  1130	001372'					ALWAYS	WRTRT		;COMMON CODE TO INCR OUT ADDR BY 2
  1131									;DO AN NPR AND RETURN TO TIMER LOOP
  1132						.DSABL	LSB
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 14
KDPMC.MAC    14-JUN-79 07:11		XMTDON - TRANSMIT DONE

  1134
  1135						.SBTTL	RCVDON-RECEIVED CHARACTER PROCESSOR
  1136					;	FILE	DUPRCV.MAC
  1137					 
  1138					;+
  1139					;	R E C E I V E  C H A R A C T E R  P R O C E S S O R
  1140					; 
  1141					; 
  1142					;CALLED BY:	TIMER
  1143					;
  1144					;INPUTS:
  1145					;	SP.RM0,SP.RM1	=ADDRESS OF CURRENT LINE TABLE
  1146					;	SP.CS0   =DUP RECEIVE STATUS REGISTER
  1147					;	SP.CHR   =RECEIVED CHARACTER
  1148					;	SP.RST   =STATUS OF CHARACTER
  1149					;OUTPUTS:
  1150					;	CHECKS FOR RECEIVE ERRORS, THEN BRANCHES TO A RECEIVE STATE PROCESSOR
  1151					;	USING D.RPTR FROM LINE TABLE.  RSTATE MACRO CHANGES STATE SETTINGS.
  1152					;	RECIEVE STATE INITIALIZED BY CONTROL IN.
  1153					;-
  1154					 
  1155	001374'				RCVDON:
  1156	001374'					BRWRTE	IMM,D.STS		;OFFSET TO STATUS BYTE
  1157	001376'					LDMA	BR,ADD,SP.RM0		;SET UP MAR
  1158	001400'					LDMAP	SELA,SP.RM1		;LOAD MAR HI
  1159	001402'					SP	MEMI,SELB,SP.STS	;SAVE STATUS BYTE IN SP
  1160					 
  1161					; CHECK IF ANY ERROR ON RECEIVED CHARACTER
  1162					 
  1163	001404'					BRWRTE	BR,SELA,SP.RST		;GET HIGH BYTE OF RECEIVE BUFFER
  1164	001406'					BR7	DUPRER			;RECEIVE ERROR ***
  1165					 
  1166					;CHARACTER IS ERROR FREE
  1167					 
  1168					;DISPATCH TO THE CURRENT RECEIVE STATE PROCESSOR.
  1169					 
  1170	001410'					.ALWAY	MEMX,SELB,RP		;DISPATCH VIA STATE POINTER
  1171
  1172					; ***NOTE: ALL STATE PROCESSORS MUST BE IN PAGE RP
  1173					 
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 14-1
KDPMC.MAC    14-JUN-79 07:11		BIT-STUFF PROTOCOL RECEIVE PROCESSORS

  1175						.SBTTL	BIT-STUFF PROTOCOL RECEIVE PROCESSORS
  1176					;	FILE	DUPSDLC.MAC
  1177					 
  1178		004000			RP=<.-START>&3000*4	;PAGE ADDRESS OF RECEIVE STATE PROCESSORES
  1179
  1180
  1181						.SBTTL	RB1-BIT STUFF RECEIVE STATE ONE
  1182					 
  1183					;+ 
  1184					; 
  1185					;	B I T  S T U F F  R E C E I V E  S T A T E  O N E
  1186					; 
  1187					;ENTERED FROM:	RCVDON 
  1188					;
  1189					;INPUTS: 
  1190					;	MAR	=RECEIVER STATE POINTER (D.RPTR)
  1191					;
  1192					;OUTPUTS:
  1193					;	RECEIVE STATE POINTER IS SET TO STATE TWO
  1194					;-
  1195					 
  1196	001412'				RB1:
  1197	001412'					RSTATE	RB2			;SET TO STATE 2
  1198					 
  1199	001414'					BRADDR	TIMRTN			;ULTIMATE RETURN ADDRESS
  1200	001416'					SP	BR,SELB,SP.SUB,INCMAR	;STORE IN RETURN SCRATCH PAD
  1201	001420'					ALWAYS	LSILO			;JUMP TO ROUTINE TO SILO CHARACTER
  1202										;RETURN TO TIMER
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 15
KDPMC.MAC    14-JUN-79 07:11		RB1-BIT STUFF RECEIVE STATE ONE

  1204
  1205						.SBTTL	RB2-BIT STUFF RECEIVE STATE TWO
  1206					 
  1207					;+ 
  1208					; 
  1209					;	B I T  S T U F F  R E C E I V E  S T A T E  T W O
  1210					; 
  1211					;ENTERED FROM:	RCVDON 
  1212					; 
  1213					;INPUTS:
  1214					;	MAR	=RECEIVE STATE POINTER (D.RPTR)
  1215					;
  1216					;OUTPUTS:
  1217					;	STATE POINTER IS SET TO STATE THREE
  1218					;	CURRENT RECEIVED CHARACTER IS PUSHED INTO THE LOCAL TWO CHARACTER SILO
  1219					;-
  1220
  1221	001422'				RB2:
  1222	001422'					RSTATE	RB3		;SET STATE THREE
  1223	001424'					BRADDR	TIMRTN		;RETURN ADDRESS TO POLLING LOOP
  1224	001426'					SP	BR,SELB,SP.SUB,INCMAR
  1225	001430'					ALWAYS	LSILO		;PUSH SILO AND RETURN TO TIMER
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 16
KDPMC.MAC    14-JUN-79 07:11		RB2-BIT STUFF RECEIVE STATE TWO

  1227
  1228						.SBTTL	RB3-BIT STUFF RECEIVE STATE THREE
  1229					 
  1230					;+ 
  1231					; 
  1232					;	B I T  S T U F F  R E C E I V E  S T A T E  T H R E E
  1233					; 
  1234					; ENTERED FROM:	RCVDON 
  1235					; 
  1236					; INPUTS:
  1237					;	MAR = RECEIVE STATE POINTER (D.RPTR)
  1238					;	BR = HIGH BYTE OF CSR0 (SP.RST - RECEIVE CHARACTER STATUS)
  1239					; OUTPUTS:
  1240					;	CHECK FOR END OF MESSAGE, IF END GOTO RBDONE
  1241					;	ELSE STORE THE CHARACTER AND STAY IN THIS STATE
  1242					;-
  1243					 
  1244	001432'				RB3:
  1245					 
  1246					; CHECK IF END OF MESSAGE
  1247					 
  1248	001432'					BR1	RBDONE			;END OF RECEIVED MESSAGE
  1249					 
  1250					;NOT END OF RECEIVED MESSAGE
  1251					 
  1252	001434'					BRADDR	RB3P0			;RETURN ADDRESS TO STORE
  1253	001436'					SP	BR,SELB,SP.SUB,INCMAR	;SAVE RETURN ADDRESS
  1254										;FALL INTO LSILO
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 17
KDPMC.MAC    14-JUN-79 07:11		RB3-BIT STUFF RECEIVE STATE THREE

  1256
  1257						.SBTTL	LSILO-PUSH CHARACTER INTO LOCAL TWO CHARACTER SILO
  1258					 
  1259					;+
  1260					; 
  1261					; 	P U S H  C H A R A C T E R  I N T O  L O C A L  S I L O
  1262					; 
  1263					; CALLED BY:	BIT STUFF RECEIVE STATES; RB1,RB2,RB3
  1264					; 
  1265					; INPUTS:
  1266					;	SP.SUB=RETURN ADDRESS
  1267					;	SP.CHR=CHARACTER TO BE PUSHED INTO LOCAL TWO CHARACTER SILO
  1268					;	MAR = D.SADR
  1269					;
  1270					; OUTPUTS:
  1271					;	CHARACTER IN SP.CHR IS PUSHED INTO SILO
  1272					;	UNDERFLOW CHARACTER FROM THE SILO IS LOADED INTO SP.CHR
  1273					;	IF IN CRC INHIBIT MODE,INPUT CHARACTER IS DIRECTLY STORED
  1274					;	IN MEMORY.
  1275					;-
  1276					 
  1277	001440'				LSILO:
  1278					 
  1279	001440'					BRWRTE	SELA,SP.STS,INCMAR	;GET STATUS BYTE
  1280										;MAR NOW POINTS TO D.SILO
  1281	001442'					BR7	STORE		;STORE CHARACTER IF CRC INHIBIT
  1282	001444'					SP	MEMX,SELB,SP0	;TEMPORARILY STORE TOP SILO CHR IN SP0
  1283	001446'					MEMINC	SELA,SP.CHR	;LOAD NEW CHARACTER INTO TOP SILO POSITION
  1284	001450'					SP	MEMX,SELB,SP.CHR	;LOAD UNDERFLOW CHR. INTO SP.CHR
  1285	001452'					MEM	SELA,SP0	;STORE OLD TOP CHR INTO BOTTOM POSITION IN SILO
  1286	001454'					RTNSUB	SP.SUB,P0	;RETURN
  1287					 
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 18
KDPMC.MAC    14-JUN-79 07:11		LSILO-PUSH CHARACTER INTO LOCAL TWO CHARACTER SILO

  1289
  1290						.SBTTL	RBDONE - END OF BIT STUFF MESSAGE RECEIVED
  1291
  1292					;+
  1293					;
  1294					;	END OF BIT STUFF MESSAGE RECEIVED
  1295					;
  1296					; ENTERED BY:	RB3
  1297					;
  1298					; INPUTS:
  1299					;	MAR	=RECEIVE STATE POINTER (D.RPTR)
  1300					;
  1301					; OUTPUTS:
  1302					;	RECEIVE STATE POINTER RESET TO ONE
  1303					;	GENERAL END OF RECEIVE MESSAGE ROUTINE CALLED
  1304					;-
  1305					 
  1306	001456'				RBDONE:
  1307	001456'					RSTATE	RB1		;SET RECEIVE STATE 1
  1308	001460'					CALLSR	SP.SB1,EOFMSG,TIMRP2 ;CALL END OF MESSAGE ROUTINE AND 
  1309									; RETURN TO TIMER'S POLLING LOOP
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 19
KDPMC.MAC    14-JUN-79 07:11		RBDONE - END OF BIT STUFF MESSAGE RECEIVED

  1311
  1312						.SBTTL	DDCMP RECEIVE STATE PROCESSORS
  1313					;	FILE	DUPDDCMP.MAC
  1314					 
  1315					;+ 
  1316					; 
  1317					;	D D C M P  R E C E I V E  S T A T E  P R O C E S S O R S
  1318					; 
  1319					; 
  1320					; DDCMP RECEIVE STATE PROCESSORS FOR THE COMIOP-DUP FOLLOW.
  1321					;- 
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 20
KDPMC.MAC    14-JUN-79 07:11		DDCMP RECEIVE STATE PROCESSORS

  1323
  1324						.SBTTL	RDH1-RECEIVING FIRST DDCMP HEADER CHARACTER
  1325					 
  1326					 
  1327					;+
  1328					;	R E C E I V I N G  F I R S T  D D C M P  C H A R A C T E R
  1329					; 
  1330					; ENTERED FROM:	RCVDON
  1331					;
  1332					; INPUTS:
  1333					;	MAR    = RECEIVE STATE POINTER (D.RPTR)
  1334					;	SP.CHR = CURRENT RECEIVE CHARACTER
  1335					;	SP.LN  = CURRENT LINE NUMBER
  1336					;	SP.CS0 = IMAGE OF LOW BYTE OF DUP'S CSR0
  1337					;
  1338					; OUTPUTS:
  1339					;	RECEIVE STATE POINTER IS SET TO THE SECOND DDCMP RECEIVE STATE.
  1340					;	RECEIVE STATUS BYTE D.STS IS UPDATED TO INDICATE WHETHER A
  1341					;	NUMBERED MESSAGE (SOH OR DLE) OR AN UNNUMBERED MESSAGE (ENQ) IS RECEIVED.
  1342					;	A CONTROL OUT IS GENERATED IF AN ILLEGAL HEADER CHARACTER IS RECEIVED.
  1343					;IF THE CHARACTER IS LEGAL, STORE ROUTINE IS CALLED TO SAVE IT IN THE USER
  1344					;RECEIVE BUFFER.
  1345					;IF THE CHARACTER IS SYNC OR PAD,RESYNC THE RECEIVER
  1346					;-
  1347					 
  1348					 
  1349	001466'				RDH1:
  1350					; SET RECEIVE STATE TWO
  1351	001466'					RSTATE	RDH2		;SET RECEIVE STATE TWO
  1352					 
  1353					; SET RAM ADDRESS TO RECEIVE STATUS BYTE
  1354					 
  1355	001470'					BRWRTE	IMM,D.STS	;OFFSET INTO BR
  1356	001472'					LDMA	BR,ADD,SP.RM0
  1357					;RESET SELECT,Q-SYNC,IGNORE AND NUMBERED MESSAGE BITS
  1358					 
  1359	001474'					BRWRTE	IMM,<377-DS.SLT-DS.QSC-DS.IGN-DS.NUM> ;MASK TO CLEAR THOSE BITS
  1360	001476'					MEM	BR,AANDB,SP.STS	;CLEAR THOSE BITS AND SAVE
  1361	001500'					SP	MEMX,SELB,SP.STS	;GET NEW STATUS
  1362					 
  1363					; DETERMINE TYPE OF MESSAGE.INPUT CHARACTER IS AVAILABLE IN SP.CHR
  1364					 
  1365	001502'					BRWRTE	IMM,SOH		;IS IT AN SOH?
  1366	001504'					COMP	BR,SP.CHR
  1367	001506'					Z	10$		;YES,NUMBERED MESSAGE
  1368					 
  1369	001510'					BRWRTE	IMM,ENQ		;IS IT AN ENQ?
  1370	001512'					COMP	BR,SP.CHR
  1371	001514'					Z	STORE		;YES,UNNUMBERED MESSAGE
  1372					 
  1373	001516'					BRWRTE	IMM,DLE		;IS IT A DLE?
  1374	001520'					COMP	BR,SP.CHR
  1375	001522'					Z	10$		;YES,MAINTAINANCE (NUMBERED) MESSAGE
  1376					 
  1377					; UNRECOGNIZED START OF HEADER CHARACTER - JUST RESYNC
  1378					 
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 20-1
KDPMC.MAC    14-JUN-79 07:11		RDH1-RECEIVING FIRST DDCMP HEADER CHARACTER

  1379	001524'					ALWAYS	RSNCRT		;RESYNC AND RETURN TO TIMER
  1380					 
  1381					;A NUMBERED MESSAGE IS BEING RECEIVED(SOH OR DLE). SET 'NUMBERED MESSAGE
  1382					;BEING RECEIVED' IN D.STS
  1383					 
  1384	001526'				10$:
  1385	001526'					BRWRTE	IMM,DS.NUM	;MASK TO SET IT
  1386	001530'					MEM	BR,AORB,SP.STS	;OR IT IN INTO D.STS
  1387	001532'					ALWAYS	STORE		;STORE FIRST DDCMP CHARACTER IN RECEIVE BUFFER
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 21
KDPMC.MAC    14-JUN-79 07:11		RDH1-RECEIVING FIRST DDCMP HEADER CHARACTER

  1389
  1390						.SBTTL	RDH2-RECEIVING SECOND DDCMP HEADER CHARACTER
  1391					 
  1392					;+ 
  1393					; 
  1394					;	R E C E I V I N G  S E C O N D  D D C M P  C H A R A C T E R
  1395					; 
  1396					; ENTERED FROM:	RCVDON
  1397					; 
  1398					; INPUTS:
  1399					;	MAR	= RECEIVE STATE POINTER (D.RPTR)
  1400					;	SP.CHR	= RECEIVED CHARACTER
  1401					; 
  1402					; OUTPUTS:
  1403					;	RECEIVE STATE POINTER IS CHANGED TO RECEIVE STATE THREE.  CURRENT
  1404					; RECEIVED CHARACTER (LOW ORDER BYTE COUNT IN THE CASE OF A NUMBERED
  1405					; MESSAGE) IS SAVED IN D.DCC1. STORE ROUTINE IS CALLED TO STORE THE CURRENT
  1406					; RECEIVED CHARACTER IN THE USER RECEIVE BUFFER
  1407					;- 
  1408					 
  1409	001534'				RDH2:
  1410					 
  1411					; UPDATE RECEIVE STATE POINTER TO STATE THREE
  1412					 
  1413	001534'					RSTATE	RDH3
  1414					 
  1415					; SAVE CHARACTER COUNT (TYPE IF UNNUMBERED MESSAGE) IN D.DCC1
  1416					 
  1417	001536'					BRWRTE	IMM,D.DCC1	;ADDRESS D.DCC1
  1418	001540'					LDMA	BR,ADD,SP.RM0
  1419	001542'					MEM	SELA,SP.CHR	;CURRENT CHARACTER AVAILABLE IN SP.CHR
  1420					 
  1421					; STORE CURRENT RECEIVED CHARACTER IN USER BUFFER
  1422					 
  1423	001544'					ALWAYS	STORE
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 22
KDPMC.MAC    14-JUN-79 07:11		RDH2-RECEIVING SECOND DDCMP HEADER CHARACTER

  1425
  1426						.SBTTL	RDH3-RECEIVING THIRD DDCMP HEADER CHARACTER
  1427					 
  1428					;+ 
  1429					; 
  1430					;	R E C E I V I N G  T H I R D  D D C M P  C H A R A C T E R
  1431					; 
  1432					; ENTERED FROM:	RCVDON
  1433					; 
  1434					; INPUTS:
  1435					;	MAR	= RECEIVE STATE POINTER (D.RPTR)
  1436					;	SP.CHR	= RECEIVED CHARACTER
  1437					; 
  1438					; OUTPUTS:
  1439					;	RECEIVE STATE POINTER IS CHANGED TO STATE FOUR OF DDCMP RECEIVE PROCESSOR.
  1440					; HIGH ORDER SIX BITS OF THE CHARACTER COUNT (MEANINGFUL ONLY TO
  1441					; NUMBERED MESSAGES) ARE STORED IN D.DCC2. Q-SYNC AND SELECT BITS ARE UPDATED
  1442					; IN D.STS.
  1443					;- 
  1444					 
  1445	001546'				RDH3:
  1446					 
  1447					; SET RECEIVE STATE POINTER TO STATE FOUR
  1448					 
  1449	001546'					RSTATE	RDH4
  1450					 
  1451					; SAVE HIGH ORDER SIX BITS OF BYTE COUNT (NOT MEANINGFUL FOR UNNUMBERED MESSAGE)
  1452					 
  1453	001550'					BRWRTE	IMM,D.DCC2	;ADDRESS D.DCC2
  1454	001552'					LDMA	BR,ADD,SP.RM0
  1455	001554'					BRWRTE	IMM,77		;MASK TO STRIP HIGH ORDER 2 BITS
  1456	001556'					MEM	BR,AANDB,SP.CHR	;STRIP THEM FROM CURRENT CHR AND STORE IN RAM
  1457					 
  1458					; UPDATE SELECT AND Q-SYNC BITS IN D.STS
  1459					 
  1460	001560'					SP	BR,AANDB,SP.STS	;STRIP OLD SEL. Q-SYNC BITS IN SP.STS
  1461	001562'					BRWRTE	IMM,D.STS	;ADDRESS D.STS
  1462	001564'					LDMA	BR,ADD,SP.RM0
  1463	001566'					BRWRTE	IMM,300		;MASK TO ISOLATE NEW SELECT,Q-SYNC BITS
  1464	001570'					BRWRTE	BR,AANDB,SP.CHR	;GET NEW BITS INTO BR
  1465	001572'					MEM	BR,AORB,SP.STS	;UPDATE D.STS
  1466					 
  1467					; STORE CURRENT RECEIVED CHARACTER IN USER RECEIVE BUFFER
  1468					 
  1469	001574'					ALWAYS	STORE
  1470					 
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 23
KDPMC.MAC    14-JUN-79 07:11		RDH3-RECEIVING THIRD DDCMP HEADER CHARACTER

  1472
  1473						.SBTTL	RDH4-RECEIVING FOURTH DDCMP HEADER CHARACTER
  1474					 
  1475					;+ 
  1476					; 
  1477					;	R E C E I V I N G  F O U R T H  D D C M P  C H A R A C T E R
  1478					;			(RESPONSE FIELD)
  1479					; 
  1480					; ENTERED FROM:	RCVDON
  1481					; 
  1482					; INPUTS:
  1483					;	MAR	= RECEIVE STATE POINTER (D.RPTR)
  1484					;	SP.CHR	= RECEIVED CHARACTER
  1485					; 
  1486					; OUTPUTS:
  1487					;	RECEIVE STATE POINTER IS CHANGED TO STATE FIVE OF RECEIVE PROCESSOR.
  1488					; THE CURRENT CHARACTER (RESPONSE FIELD) IS STORED IN USER RECEIVE BUFFER.
  1489					;- 
  1490					 
  1491	001576'				RDH4:
  1492					 
  1493					; SET RECEIVE STATE POINTER TO STATE FIVE
  1494					 
  1495	001576'					RSTATE	RDH5
  1496					 
  1497					; STORE CURRENT CHARACTER (RESPONSE FIELD) IN USER RECEIVE BUFFER
  1498					 
  1499	001600'					ALWAYS STORE
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 24
KDPMC.MAC    14-JUN-79 07:11		RDH4-RECEIVING FOURTH DDCMP HEADER CHARACTER

  1501
  1502						.SBTTL	RDH5-RECEIVING FIFTH DDCMP HEADER CHARACTER
  1503					 
  1504					;+ 
  1505					; 
  1506					;	R E C E I V I N G  F I F T H  D D C M P  C H A R A C T E R
  1507					;			(MESSAGE NUMBER FIELD)
  1508					; 
  1509					; ENTERED FROM:	RCVDON
  1510					; 
  1511					; INPUTS:
  1512					;	MAR	= RECEIVE STATE POINTER (D.RPTR)
  1513					;	SP.CHR	= RECEIVED CHARACTER
  1514					; 
  1515					; OUTPUTS:
  1516					;	RECEIVE STATE POINTER IS SET TO STATE SIX.  CURRENT CHARACTER (MESSAGE
  1517					; NUMBER FIELD) IS STORED IN THE USER RECEIVE BUFFER.
  1518					;- 
  1519
  1520	001602'				RDH5:
  1521					 
  1522					; SET RECEIVE STATE POINTER TO STATE SIX
  1523					 
  1524	001602'					RSTATE	RDH6
  1525					 
  1526					;STORE CURRENT CHARACTER (MESSAGE NUMBER) IN USER BUFFER
  1527					 
  1528	001604'					ALWAYS	STORE
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 25
KDPMC.MAC    14-JUN-79 07:11		RDH5-RECEIVING FIFTH DDCMP HEADER CHARACTER

  1530
  1531						.SBTTL	RDH6-RECEIVING SIXTH DDCMP HEADER CHARACTER
  1532					 
  1533					;+ 
  1534					; 
  1535					;	R E C E I V I N G  S I X T H  D D C M P  C H A R A C T E R
  1536					;			(STATION ADDRESS FIELD)
  1537					; 
  1538					; ENTERED FROM:	RCVDON
  1539					;
  1540					; INPUTS:
  1541					;	MAR	= RECEIVE STATE POINTER (D.RPTR)
  1542					;	SP,CHR	= RECEIVES CHARACTER
  1543					; 
  1544					; OUTPUTS:
  1545					;	RECEIVE STATE POINTER IS SET TO PROCESS FIRST HEADER CRC CHARACTER.
  1546					; IF THE USER STATION IS A SECONDARY STATION AND THERE IS AN ADDRESS MISMATCH,
  1547					; THE IGNORE BIT IS SET IN D.STS.
  1548					;- 
  1549
  1550	001606'				RDH6:
  1551					 
  1552					;SET RECEIVE STATE POINTER TO PROCESS FIRST HEADER CRC
  1553					 
  1554	001606'					RSTATE	RHCRC1
  1555					 
  1556					;CHECK IF SECONDARY STATION
  1557					 
  1558	001610'					BRWRTE	SELA,SP.STS,INCMAR	;LOAD D.STS INTO BR AND ADDRESS D.SADR
  1559	001612'					BRSHFT			;SHIFT IT RIGHT
  1560	001614'					BR1	10$		;BRANCH IF SECONDARY STATION
  1561					 
  1562					; CURRENT STATION IS NOT A SECONDARY STATION, NO ADDRESS CHECKING NECESSARY
  1563					 
  1564	001616'					ALWAYS	STORE		;STORE CHARACTER IN REC BUFFER
  1565					 
  1566					; CURRENT STATION IS A SECONDARY STATION.
  1567					 
  1568	001620'				10$:
  1569					 
  1570					;CHECK IF ADDRESS MATCH (MAR MUST NOW BE POINTING AT D.SADR)
  1571	001620'					COMP	MEMX,SP.CHR	;ADDRESS MATCH?
  1572	001622'					Z	STORE		;YES,STORE THE CHARACTER
  1573					 
  1574					; STATION IS A SECONDARY STATION, BUT IS NOT ADDRESSED 
  1575					; SET IGNORE MODE
  1576					 
  1577	001624'					BRWRTE	IMM,D.STS	;ADDRESS  STATUS BYTE
  1578	001626'					LDMA	BR,ADD,SP.RM0
  1579	001630'					BRWRTE	IMM,DS.IGN	;MASK TO SET IGNORE MODE
  1580	001632'					MEM	BR,AORB,SP.STS	;WRITE IT BACK INTO RAM WITH IGNORE BIT SET
  1581	001634'					ALWAYS	STORE		;STORE CURRENT CHARACTER
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 26
KDPMC.MAC    14-JUN-79 07:11		RDH6-RECEIVING SIXTH DDCMP HEADER CHARACTER

  1583
  1584						.SBTTL	RHCRC1-RECEIVING FIRST DDCMP HEADER CRC
  1585					 
  1586					;+ 
  1587					; 
  1588					;	R E C E I V I N G  F I R S T  D D C M P  H E A D E R  C R C
  1589					; 
  1590					; ENTERED FROM:	RCVDON
  1591					; 
  1592					; INPUTS:
  1593					;	MAR	= RECEIVE STATE POINTER (D.RPTR)
  1594					; 
  1595					; OUTPUTS:
  1596					;	RECEIVE STATE POINTER IS SET TO PROCESS SECOND DDCMP HEADER
  1597					; CRC CHARACTER.
  1598					;-
  1599
  1600	001636'				RHCRC1:
  1601					 
  1602					;SET RECEIVE STATE POINTER TO RECEIVE SECOND DDCMP HEADER CRC
  1603					 
  1604	001636'					RSTATE	RHCRC2
  1605
  1606					; ** PAGE ONE RETURN TO TIMER FOR RECEIVE ROUTINES **
  1607
  1608	001640'				TIMRP1:	ALWAYS	TIMRTN		;RETURN TO THE TIMER LOOP
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 27
KDPMC.MAC    14-JUN-79 07:11		RHCRC1-RECEIVING FIRST DDCMP HEADER CRC

  1611
  1612						.SBTTL	RHCRC2-RECEIVING SECOND DDCMP HEADER CRC
  1613					 
  1614					;+ 
  1615					;
  1616					;	R E C E I V I N G  S E C O N D  D D C M P  H E A D E R  C R C
  1617					; 
  1618					; ENTERED FROM:	RCVDON
  1619					; 
  1620					; INPUTS:
  1621					;	MAR	= RECEIVE STATE POINTER (D.RPTR)
  1622					;	BR = HIGH BYTE OF CSR 2 (SP.RST - RECEIVE CHARACTER STATUS)
  1623					;
  1624					; OUTPUTS:
  1625					;	DUP HAS RECEIVED SECOND HEADER CRC CHAR.
  1626					;	CHECK IF HEADER CRC IS VALID, IF NOT POST ERROR CNTRL OUT.
  1627					;	IF THIS IS AN UNNUMBERED MESG, PROCESS NOW.
  1628					;	ELSE (NUMBERED OR MAINT), STATE IS SET TO RECEIVE DATA.
  1629					;-
  1630					 
  1631	001642'				RHCRC2:
  1632					 
  1633					; SET RECEIVE STATE POINTER TO RECEIVE DDCMP DATA
  1634					 
  1635	001642'					RSTATE	RDDATA
  1636					 
  1637					; CHECK IF THERE IS A CRC ERROR
  1638					 
  1639	001644'					BR4	10$		;CRC=0,MESSAGE IS OK
  1640	001646'					ALWAYS	ERR10		;***CRC ERROR***
  1641					 
  1642					;CHECK IF THE CURRENT MESSAGE IS A NUMBERED MESSAGE
  1643					 
  1644	001650'				10$:
  1645	001650'					BRWRTE	SELA,SP.STS	;LEFT SHIFT D.STS AND LOAD INTO BR
  1646	001652'					BR0	TIMRTN		;RECEIVING NUMBERED MESSAGE
  1647									;RETURN TO TIMER
  1648					 
  1649					;RECEIVING UNNUMBERED MESSAGE
  1650					 
  1651	001654'					ALWAYS	MSGIN		;PROCESS ONE MESSAGE
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 28
KDPMC.MAC    14-JUN-79 07:11		RHCRC2-RECEIVING SECOND DDCMP HEADER CRC

  1653
  1654						.SBTTL	RDDATA-RECEIVING DDCMP DATA CHARACTERS
  1655					 
  1656					;+ 
  1657					; 
  1658					;	R E C E I V I N G  D D C M P  D A T A  C H A R A C T E R S
  1659					; 
  1660					; ENTERED FROM:	RCVDON
  1661					; 
  1662					; INPUTS:
  1663					;	MAR	= RECEIVE STATE POINTER (D.RPTR)
  1664					; 
  1665					; OUTPUTS:
  1666					;	THE DATA BYTE COUNT IS DECREMENTED.
  1667					;	IF ALL DATA IS RECEIVED, THIS IS THE FIRST CRC CHAR.
  1668					;	OTHERWISE, STORE THE DATA IN BUFFER IF FOR THIS STATION.
  1669					;-
  1670					 
  1671	001656'				RDDATA:
  1672					 
  1673					;CHECK IF LAST DDCMP DATA CHARACTER
  1674					 
  1675	001656'					CALLSR	SP.SUB,DECDCC,DECP2	;DECREMENT DDCMP DATA CHARACTER COUNT
  1676	001664'				RDATA1:
  1677	001664'					C	10$		;BRANCH IF COUNT NOT -1
  1678					 
  1679					;CURRENT CHARACTER IS THE FIRST DDCMP DATA CRC CHARACTER
  1680					 
  1681	001666'					ALWAYS	RDCRC1
  1682					 
  1683					 
  1684					; STORE CURRENT DATA CHARACTER IN USER RECEIVE BUFFER IF THE CURRENT MESSAGE
  1685					;IS ADDRESSED TO THIS STATION.
  1686					 
  1687	001670'				10$:
  1688	001670'					BRWRTE	SELA,SP.STS	;GET SP.STS(=D.STS)
  1689	001672'					BR4	TIMRTN		;MESSAGE NOT FOR THIS STATION
  1690					 
  1691					; DATA CHARACTER IS PART OF A NUMBERED MESSAGE ADDRESSED TO THIS STATION,SAVE IT
  1692					 
  1693	001674'					ALWAYS	STORE
  1694					 
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 29
KDPMC.MAC    14-JUN-79 07:11		RDDATA-RECEIVING DDCMP DATA CHARACTERS

  1696
  1697						.SBTTL	RDCRC1-RECEIVING FIRST DDCMP DATA CRC
  1698					 
  1699					;+ 
  1700					; 
  1701					;	R E C E I V I N G  F I R S T  D D C M P  D A T A  C R C
  1702					; 
  1703					; ENTERED FROM:	RDDATA
  1704					; 
  1705					; INPUTS:
  1706					; 
  1707					; OUTPUTS:
  1708					;	RECEIVE STATE POINTER IS SET TO PROCESS SECOND DATA CRC
  1709					;- 
  1710
  1711	001676'				RDCRC1:
  1712					 
  1713					;SET RECEIVE STATE POINTER TO SECOND DATA CRC PROCESSOR
  1714					 
  1715	001676'					BRWRTE	IMM,D.RPTR	;ADDRESS D.RPTR (SINCE IT WAS CHANGED IN
  1716	001700'					LDMA	BR,ADD,SP.RM0	;THE PREVIOUS STATE)
  1717	001702'					RSTATE	RDCRC2
  1718	001704'					ALWAYS	TIMRTN		;RETURN TO TIMER
  1719					 
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 30
KDPMC.MAC    14-JUN-79 07:11		RDCRC1-RECEIVING FIRST DDCMP DATA CRC

  1721
  1722						.SBTTL	RDCRC2-RECEIVING SECOND DATA CRC
  1723					 
  1724					;+ 
  1725					;
  1726					;	R E C E I V I N G  S E C O N D  D A T A  C R C
  1727					; 
  1728					; ENTERED FROM:	RCVDON
  1729					; 
  1730					; INPUTS:
  1731					;	BR = HIGH BYTE OF CSR2 (SP.RST - RECEIVE CHARACTER STATUS)
  1732					; OUTPUTS:
  1733					; IF A CRC ERROR IS DETECTED ON THE CURRENT MESSAGE,A CONTROL OUT IS GENERATED.
  1734					; IF THE MESSAGE IS GOOD, MSGIN ROUTINE IS EXECUTED TO PROCESS IT
  1735					;-
  1736					 
  1737	001706'				RDCRC2:
  1738					 
  1739					; CHECK FOR CRC ERROR
  1740					 
  1741	001706'					BR4	MSGIN		;CRC OK,USE COMMON CODE
  1742	001710'					ALWAYS	ERR12		;***CRC ERROR ON DATA***
  1743					 
  1744					 
  1745					;+
  1746					;
  1747					;	 RETURN TO TIMER LOOP FROM RECEIVE STORE ROUTINES
  1748					;
  1749					; ENTERED FROM:	RCVEXT (SUBR RETURN)
  1750					;
  1751					; INPUTS:
  1752					;	NPR STARTED EARLIER IN STORE RECVD CHAR ROUTINES
  1753					;
  1754					; OUTPUTS:
  1755					;	WAIT FOR NPR TO COMPLETE AND RETURN TO TIMER
  1756					;-
  1757
  1759	001712'				NPRWP1:
  1760	001712'					BRWRTE	IBUS,NPR	;READ NPR CONTROL REGISTER
  1761	001714'					BR0	NPRWP1		;NOT DONE YET
  1762	001716'					ALWAYS	TIMRTN		;RETURN TO TIMER LOOP
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 31
KDPMC.MAC    14-JUN-79 07:11		RDCRC2-RECEIVING SECOND DATA CRC

  1764
  1765						.SBTTL	DSRCHG-DATA SET READY CHANGE
  1766
  1767					;+
  1768					; **DSRCHG-ROUTINE TO GIVE A DATA SET READY CHANGE CONTROL OUT**
  1769					;
  1770					; CALLED BY:	TIMER
  1771					;
  1772					; INPUTS:
  1773					;	SP0 = IMAGE OF DUP'S CSR 1 (DSR=BIT 1)
  1774					;	MAR = D.STS
  1775					;
  1776					; OUTPUTS:
  1777					;	MAR = D.STS
  1778					;	D.STS (BIT 1) = CURRENT SETTING OF DSR
  1779					;-
  1780	001720'				DSRCHG:
  1782	001720'					SP	IMM,DS.DSR,SP2	;GET MASK FOR DSR INTO SP2
  1783	001722'					MEM	MEMX,AXORB,SP2	;RECORD THE CURRENT STATE OF DSR
  1784									;IF IT WAS SET CLEAR IT, IF IT WAS CLEAR
  1785									;SET IT
  1786	001724'					CALLSR	SP.SUB,COUTX,TIMRP3,ER.DSR	;QUEUE A CONTROL OUT AND
  1787									;RETURN TO TIMER LOOP
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 32
KDPMC.MAC    14-JUN-79 07:11		DSRCHG-DATA SET READY CHANGE

  1789
  1790						.SBTTL	MSGIN-DDCMP MESSAGE PROCESSOR
  1791
  1792					;+
  1793					;
  1794					;		D D C M P  M E S S A G E  I N
  1795					; 
  1796					; ENTERED FROM:	RDCRC2(NUMBERED), RHCRC2(UNNUMBERED)
  1797					;
  1798					; A COMPLETE DDCMP MESSAGE (NUMBERED OR UNNUMBERED) HAS BEEN RECEIVED WITHOUT
  1799					; A CRC ERROR.PROCESS IT.
  1800					;
  1801					; INPUTS:
  1802					;	MAR	= RECEIVE STATE POINTER (D.RPTR)
  1803					;
  1804					; OUTPUTS:
  1805					;	RECEIVE STATE RESET TO FIRST HEADER CHAR.
  1806					;	IF MESG IS FOR US, POST A BA OUT.
  1807					;	ELSE, RESET BUFFER POINTERS IN LINE TABLE.
  1808					;-
  1809					 
  1810	001734'				MSGIN:
  1811					 
  1812					; INITIALIZE RECEIVE STATE POINTER
  1813	001734'					RSTATE	RDH1
  1814					 
  1815					; CHECK IF THIS MESSAGE IS TO BE IGNORED
  1816	001736'					BRWRTE	SELA,SP.STS	;SET BR=SP.STS
  1817	001740'					BR4	10$		;IGNORE CURRENT MESSAGE
  1818					 
  1819					; MESSAGE IS WITHOUT ERROR AND ADDRESSED TO THIS STATION. GENERATE A BA OUT
  1820					 
  1821	001742'					CALLSR	SP.SB1,EOFMSG,MSGIN1	;POST THE COMPLETION AND RETURN TO MSGIN1
  1822					 
  1823					;CURRENT MESSAGE IS NOT FOR THIS STATION,IGNORE IT
  1824					 
  1825	001750'				10$:
  1826					; RECEIVE BUFFER ADDRESS AND BYTE COUNT WAS ADVANCED AT THE BEGINNING OF
  1827					;THIS MESSAGE, RESET IT.
  1828	001750'					BRWRTE	IMM,D.ORBC		;ADDRESS D.ORBC
  1829	001752'					LDMA	BR,ADD,SP.RM0
  1830
  1831					;SAVE ORIGINAL PARAMETERS IN SCRATCH PADS
  1832	001754'					SP	MEMI,SELB,SP4		;SAVE ORIGINAL BYTE COUNT IN SP4,SP3
  1833	001756'					SP	MEMI,SELB,SP3
  1834	001760'					SP	MEMI,SELB,SP2		;SAVE ORIGINAL ADDRESS IN SP2,SP1&SP0
  1835	001762'					SP	MEMI,SELB,SP1
  1836	001764'					SP	MEMI,SELB,SP0
  1837
  1838					;RESTORE THEM INTO CURRENT PARAMETERS
  1839					 
  1840	001766'					MEMINC	SELA,SP4		;RESTORE BYTE COUNT
  1841	001770'					MEMINC	SELA,SP3
  1842	001772'					MEMINC	SELA,SP2		;RESTORE BUFFER ADDRESS IN CURRENT AREA
  1843	001774'					MEMINC	SELA,SP1
  1844	001776'					MEMINC	SELA,SP0
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 32-1
KDPMC.MAC    14-JUN-79 07:11		MSGIN-DDCMP MESSAGE PROCESSOR

  1845
  1846					;CHECK IF Q-SYNC BIT SET
  1847					 
  1849	002000'				MSGIN1:
  1850	002000'					BRWRTE	TWOA,SP.STS	;READ STATUS REGISTER
  1851	002002'					ALWAYS	PATCHA		;JUMP TO PATCH, PATCH BRANCHES TO 
  1852									;RSNCRT OR TIMRTN ON BR7
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 33
KDPMC.MAC    14-JUN-79 07:11		MSGIN-DDCMP MESSAGE PROCESSOR

  1854
  1855						.SBTTL	KILLAL-KILL XMT OT RCV OPERATION
  1856					 
  1857					;+
  1858					;
  1859					;	KILL RECEIVE OR TRANSMIT BUFFERS
  1860					;
  1861					; CALLED BY:	BAIN
  1862					;
  1863					; INPUTS:
  1864					;	BSEL2<2> (OCON)	=IN I/O (1=RECV, 0=XMIT)
  1865					;	BSEL7<5> (PORT4)=KILL ASSIGN
  1866					;
  1867					; OUTPUTS:
  1868					;	DEASSIGNS EITHER TRANSMIT OF RECEIVE BUFFERS DEPENDING ON THE IN I/O BIT.
  1869					;	IF ASSIGNMENT IS REQUESTED(KILL ASSGN), BAIN IS RETURNED TO .
  1870					;	ELSE IT RETURNS DIRECTLY TO RDICLR.
  1871					;-
  1872					 
  1873	002004'				KILLAL:
  1874					 
  1875					;DETERMINE WHETHER THE TRANSMIT OR RECEIVE OPERATION IS TO BE KILLED
  1876					 
  1877	002004'					BRWRTE	IBUS,OCON	;GET BSEL2
  1878	002006'					BRSHFT
  1879	002010'					BR1	KILLRC		;KILL RECEIEV OPERATION
  1880
  1881					;KILL TRANSMIT OPERATION
  1882					 
  1883	002012'				KILLXM:
  1884	002012'					BRWRTE	IMM,D.XSTS	;POINT TO TRANSMIT STATUS BYTE
  1885	002014'					LDMA	BR,ADD,SP.RM0	; LOAD THE MAR
  1886	002016'					SP	MEMX,SELB,SP0	;READ THE STATUS BYTE
  1887	002020'					BRWRTE	IMM,DT.ABT!DT.AB1	;ABORT PENDING FLAG
  1888	002022'					MEM	BR,AORB,SP0	;OR IT BACK TO MEMORY
  1889	002024'					BRWRTE	IMM,C.CLOX	;SET CONTROL OUT FOR XMT
  1890	002026'					ALWAYS	KILCOM		;USE COMMON CODE
  1891					 
  1892					;KILL RECEIVE OPERATION
  1893					 
  1894	002030'				KILLRC:
  1895	002030'					CALLSB	SP.SB1,RESYNC	;RESYNC RECEIVER
  1896	002036'					BRWRTE	IMM,C.CLOR	;SET CONTROL OUT FOR RECEIVE
  1897					 
  1898	002040'				KILCOM:
  1899	002040'					SP	BR,SELB,SP2	;SAVE BSEL2 IMAGE
  1900	002042'					BRWRTE	IMM,ER.KIL	;REASON CODE 'KILL'
  1901	002044'					SP	BR,SELB,SP3	;INTO SP3
  1902	002046'					CALLSB	SP.SB1,COUT	;QUEUE CONTROL OUT
  1903					;*****FOLLWING INSTRUCTION MUST BE IN PAGE 2 DUE TO RETURN FROM COUT****
  1904	002054'				KILLC1:
  1905	002054'					BRWRTE	IMM,<D.RBDF-D.RDP> ;ADDRESS FLAGS BYTE
  1906	002056'					LDMA	BR,ADD,SP6
  1907	002060'					MEM	IMM,<DX.EOM!DX.LST>	;CLEAR ALL BUFFER ASSIGN FLAGS
  1908	002062'					BRWRTE	IBUS,PORT4	;GET NEW PORT4 BACK
  1909	002064'					BRSHFT
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 33-1
KDPMC.MAC    14-JUN-79 07:11		KILLAL-KILL XMT OT RCV OPERATION

  1910	002066'					BR4	BAIN0		;NEW BUFFER ASSIGNED
  1911	002070'				RQICR2:	ALWAYS	RQICL2		;NO NEW BUFFER
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 34
KDPMC.MAC    14-JUN-79 07:11		KILLAL-KILL XMT OT RCV OPERATION

  1913
  1914					;******FOLLOWING INSTRUCTIONS MUST RESIDE IN PAGE TWO SINCE IT IS USED BY
  1916					; CERTAIN SUBROUTINES TO RETURN TO THE PROPER PAGE OF CALLER******
  1917
  1918					;RETURN TO TIMER FROM RECEIVE ROUTINES
  1919	002072'				TIMRP2:	ALWAYS	TIMRTN
  1920					 
  1921					;RETURN FROM CONTROL OUT DUE TO A CALL FROM RERROR
  1922	002074'				RERRP2:	ALWAYS	ERREXT
  1923
  1924					;A RETURN FROM DECDCC DUE TO A CALL FROM RDDATA
  1925	002076'				DECP2:	ALWAYS	RDATA1
  1926					 
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 35
KDPMC.MAC    14-JUN-79 07:11		KILLAL-KILL XMT OT RCV OPERATION

  1929
  1930						.SBTTL	XMTSYN - TRANSMIT SYNC'S OR ZERO BITS
  1931					;	FILE	XMTAUX.MAC
  1932					 
  1933					;+
  1934					; **XMTSYN-RESYNC TRANSMITTER REQUESTED**
  1935					;
  1936					; CALLED BY:	XMTDON
  1937					;
  1938					; INPUTS:
  1939					;	OUTPUT NPR ADDRESS = DUP'S CSR4
  1940					;	SP0 = FLAGS BYTE OF XMIT DESCRIPTOR
  1941					;	MAR = FLAGS BYTE OF XMIT DESCRIPTOR
  1942					;
  1943					; OUTPUTS:
  1944					;	BIT STUFF MODE - 16 ZERO BITS ARE TRANSMITTED
  1945					;	DEC MODE - SYNC CHARACTERS ARE TRANSMITTER
  1946					;-
  1947					 
  1948	002100'				XMTSYN:
  1949	002100'					BRWRTE	SELA,SP.STS	;GET THE STATUS BYTE 
  1950	002102'					BRSHFT			;SHIFT THE STATUS RIGHT
  1951	002104'					BR4	80$		;DEC MODE (DDCMP)
  1952	002106'					BRWRTE	IMM,0		;ZERO THE BRG
  1953	002110'					OUTPUT	BR,SELB,OUTDA1	;ZERO THE LOW BYTE OF OUT DATA
  1954	002112'					OUTPUT	IMM,DUPTSM!DUPTEM,OUTDA2	;SET BOTH START OF MESSAGE AND END OF ME
  1955	002114'				75$:	BRWRTE	IMM,377-DX.SYN	;MASK TO CLEAR RESYNC FLAG
  1956	002116'					MEM	BR,AANDB,SP0	;CLEAR IT AND WRITE NEW FLAGS WORD TO RAM
  1957	002120'					ALWAYS	WRTRT		;INCREMENT OUTPUT ADDRESS BY 2,
  1958									;DO AN NPR AND RETURN TO TIMER LOOP
  1959					 
  1960	002122'				80$:	BRWRTE	IMM,SYNC	;GET SYNC CHARACTER
  1961	002124'					OUTPUT	BR,SELB,OUTDA1,INCMAR	;WRITE IT TO LOW BYTE OF OUT DATA
  1962	002126'					BRWRTE	IMM,DUPTSM	;START OF MESSAGE BIT
  1963	002130'					OUTPUT	BR,SELB,OUTDA2,INCMAR	;WRITE IT TO HIGH BYTE
  1964									;MAR IS NOW AT D.SYNC (SYNC COUNTER)
  1965	002132'					SP	MEMX,SELB,SP1	;READ SYNC COUNTER INTO THE SCRATCH PAD
  1966	002134'					MEM	DECA,SP1	;DECREMENT THE COUNT
  1967	002136'					C	WRTRT		;COUNT NOT ZERO YET - DO THE NPR
  1968									;AND RETURN TO THE POLLING LOOP
  1969	002140'					BRWRTE	IMM,D.XBDF	;ADDRESS OF FLAGS BYTE IN XMIT DESCRIPTOR
  1970	002142'					LDMA	BR,ADD,SP.RM0	;RESET THE MAR TO FLAGS BYTE
  1971	002144'					ALWAYS	75$		;CLEAR RESYNC FLAG
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 36
KDPMC.MAC    14-JUN-79 07:11		XMTSYN - TRANSMIT SYNC'S OR ZERO BITS

  1973
  1974						.SBTTL	XMTCNT - DECREMENT TRANSMIT BYTE COUNT
  1975					 
  1976					;+
  1977					;	**XMTCNT-DECREMENT XMIT COUNT RETURN
  1978					;	**XMTBCZ-ZERO BYTE COUNT**
  1979					;
  1980					; CALLED BY:	XMTDON
  1981					;
  1982					; INPUTS:
  1983					;	INPUT AND OUTPUT ADDRESS = DUP'S CSR 4
  1984					;	SP0 = D.XBDF (FLAGS BYTE)
  1985					;
  1986					; OUTPUTS:
  1987					;	RETURN TO XMTDON IF BYTE COUNT NOT ZERO.
  1988					;	ELSE: UNDERRUN CHECKED
  1989					;	EOM SENT IF SET IN BUFFER DESC
  1990					;	BUFFER ADDR OUT QUEUED.
  1991					;	IF ANOTHER BUFFER IS THERE, RETURN TO XMTDON TO XMIT
  1992					;	ELSE, RETURN TO TIMER
  1993					;-
  1994					 
  1995					; THE LABEL XMTCNT MUST RESIDE IN PAGE 2
  1997					 
  1998					; TRANSMIT DECREMENT COUNT ROUTINE RETURNS HERE
  1999	002146'				XMTCNT:	C	XMTDN2		;BYTE COUNT NOT ZERO
  2000									;BYTE COUNT ZERO - FALL INTO XMTBCZ
  2001						.ENABLE	LSB
  2002	002150'				XMTBCZ:
  2003	002150'					BRWRTE	IBUS,INDAT2	;READ HIGH BYTE OF CSR4
  2004	002152'					BR7	XMTUNR		;UNDERRUN
  2005	002154'					BRWRTE	BR,SELA!SP0	;READ THE FLAGS WORD INTO THE BRG
  2006	002156'					BR1	160$		;END OF MESSAGE SET
  2007	002160'				XMTBC0:
  2008	002160'				100$:	CALLSB	SP.SB1,BAOX	;DO A BUFFER ADDRESS OUT COMPLETION
  2009									;***NOTE*** BAOX MUST NOT DESTROY THE
  2010									;OUTPUT BUFFER ADDRESS CURRENTLY SET AT
  2011									;THE DUP'S CSR 4 OR 6
  2012	002166'				XMTBC1:
  2013	002166'					BRWRTE	IMM,374		;RESET OUT BA TO POINT TO CSR4
  2014	002170'					SP	IBUS,IOBA1,SP0	;READ OLD BA WHICH WAS CSR4 OR 6
  2015	002172'					OUTPUT	BR,AANDB,OBA1	;SET CSR4 OFFSET
  2016	002174'					BRWRTE	IMM,D.XBDF	;ADDRESS OF TRANSMIT FLAGS WORD
  2017	002176'					LDMA	BR,<ADD!SP.RM0>	;POINT TO FLAGS WORD
  2018	002200'					SPBR	MEMX,SELB,SP0	;READ THE FLAGS WORD TO THE BRG
  2019	002202'					BROTAT			;ROTATE IT RIGHT
  2020	002204'					BR4	XMTDN4		;ANOTHER BUFFER - SEND NEXT CHARACTER
  2021					 
  2022					; NO MORE BUFFER'S ASSIGNED.  IF THE PREVIOUS BUFFER HAD THE END OF MESSAGE
  2023					; FLAG SET THEN SHUT DOWN THE TRANSMITTER, OTHERWISE, WAIT FOR THE NEXT
  2024					; BUFFER OF THE MESSAGE TO BE ASSIGNED
  2025					 
  2026	002206'					BR0	170$		;END OF MESSAGE FLAG SET
  2027	002210'					ALWAYS	TIMRT3		;NOT THE END OF MESSAGE - EXIT
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 37
KDPMC.MAC    14-JUN-79 07:11		XMTCNT - DECREMENT TRANSMIT BYTE COUNT

  2029
  2030						.SBTTL	XMTABT - TRANSMIT ABORT PENDING
  2031
  2032					;+
  2033					;	**XMTABT-TRANSMIT ABORT PENDING
  2034					;
  2035					; CALLED BY:	XMTDON
  2036					;
  2037					; INPUTS:
  2038					;	BRG	= XMIT STATUS (D.XSTS)
  2039					;	MAR	= D.XSTS
  2040					; OUTPUTS:
  2041					;	IF STAGE ONE, GOTO XMTAB1 TO TRANSMIT ABORT CHARS
  2042					;	STAGE TWO, CHECKS FOR ASSIGNED BUFFERS.
  2043					;	IF NONE, DUP SEND IS CLEARED.
  2044					;-
  2045					 
  2046	002212'				XMTABT:
  2047	002212'					BR1	XMTAB1		;STAGE ONE OF ABORT PENDING
  2048	002214'					MEM	IMM,0		;CLEAR ABORT PENDING FLAG
  2049	002216'					BRWRTE	IMM,D.XBDF	;OFFSET TO TRANSMIT BUFFER FLAGS
  2050	002220'					LDMA	BR,ADD,SP.RM0	;ADDRESS IT
  2051	002222'					BRWRTE	MEMX,SELB	;READ THE FLAGS
  2052	002224'					BRSHFT			;SHIFT THEM RIGHT
  2053	002226'					BR4	XMTDN3		;BUFFER ASSIGNED, START NEXT MESSAGE
  2054									;BUFFER NOT ASSIGNED, CLEAR SEND
  2055	002230'				120$:	SP	IMM,0,SP0	;MASK TO CLEAR SEND
  2056									;FALL INTO XMTSND
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 38
KDPMC.MAC    14-JUN-79 07:11		XMTABT - TRANSMIT ABORT PENDING

  2058
  2059						.SBTTL	XMTSND - SET OR CLEAR DUP SEND
  2060
  2061					;+
  2062					; **XMTSND-ROUTINE TO SET OR CLEAR SEND IN THE DUP
  2063					;
  2064					; CALLED BY:	XMTDON
  2065					; ENTERED FROM:	XMTABT
  2066					;
  2067					; INPUTS:
  2068					;	SP0 = MASK TO SET OR CLEAR SEND
  2069					;	SP.STS = D.STS
  2070					;
  2071					; OUTPUTS:
  2072					;	START NPR TO CHANGE SEND AND RETURN TO XMTDON
  2073					;
  2074					;-
  2075					 
  2076	002232'				XMTSND:
  2077	002232'					BRWRTE	IMM,DS.HDX	;MASK FOR HALF DUPLEX
  2078	002234'					BRWRTE	BR,AANDB,SP.STS	;ISOLATE HALF DUPLEX FLAG
  2079	002236'					OUTPUT	BR,AORB,OUTDA1	;STORE "SEND" MASK IN OUT DATA LOW BYTE
  2080	002240'				XMTSN0:
  2081	002240'					BRWRTE	IMM,DATOB	;MASK TO DO A BYTE OUT NPR
  2082	002242'					ALWAYS	XMTDN6		;START THE NPR AND RETURN TO TIMER LOOP
  2083
  2084					 
  2085					;+
  2086					; END OF MESSAGE FLAG SET - SEND A EOM
  2087					; CALLED BY:	XMTBCZ
  2088					;-
  2089					 
  2090	002244'				160$:	BRWRTE	IMM,DUPTEM	;SET TRANSMIT END OF MESSAGE
  2091	002246'					OUTPUT	BR,SELB,OUTDA2	;SAVE FLAG IN OUT DATA HIGH BYTE
  2092	002250'					CALLSR	SP.SUB,IC2OUT,XMTEM0	;WRITE IT OUT TO THE DUP
  2093									;AND RETURN TO XMTBC0
  2094					 
  2095
  2096					;+
  2097					; END OF MESSAGE SET AND NO MORE BUFFER ASSIGNED - SEND PADS
  2098					;	THIS FILLS THE DUP SILO SO THE EOM CHAR GETS TO THE LINE
  2099					;	USE ABORT SEQUENCE TO SEND TWO PAD(377) CHARS.
  2100					; ENTERED FROM:	XMTBCZ
  2101					;-
  2102					 
  2103	002256'				170$:	BRWRTE	IMM,D.XSTS	;ADDRESS TRANSMIT STATUS BYTE
  2104	002260'					LDMA	BR,ADD,SP.RM0	;SET THE MAR
  2105	002262'					MEM	IMM,DT.ABT!DT.AB1	;SET UP FOR AN ABORT
  2106	002264'					ALWAYS	TIMRT3		;RETURN TO TIMER LOOP
  2107
  2108
  2109
  2110					;+
  2111					; UNDERRUN ERROR
  2112					; CALLED FROM:	XMTBCZ
  2113					;- 
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 38-1
KDPMC.MAC    14-JUN-79 07:11		XMTSND - SET OR CLEAR DUP SEND

  2114	002266'				XMTUNR:
  2115	002266'					BRWRTE	IMM,ER.UNR	;TRANSMIT UNDERRUN ERROR CODE
  2116	002270'					SP	BR,SELB,SP3	;SAVE IT IN SP3 FOR SUBROUTINE
  2117	002272'					CALLSR	SP.SB1,COUX,XMTBC1,C.CLOX	;DO A CONTROL OUT
  2118									;AND RETURN TO XMTBC1
  2119						.DSABL	LSB
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 39
KDPMC.MAC    14-JUN-79 07:11		XMTSND - SET OR CLEAR DUP SEND

  2121
  2122						.SBTTL	XMTAB1 - TRANSMIT ABORT STAGE ONE
  2123					;+
  2124					; **XMTAB1-ROUTINE TO PERFORM A TRANSMIT ABORT
  2125					;
  2126					; ENTERED FROM:	XMTABT
  2127					;
  2128					; INPUTS:
  2129					;	INPUT AND OUTPUT ADDRESS = DUP'S CSR 4
  2130					;	MAR = D.XSTS
  2131					;	SP0 = (D.XSTS)
  2132					;
  2133					; OUTPUTS:
  2134					;	D.XSTS IS DECREMENTED
  2135					;	AN ABORT CHARACTER IS SENT
  2136					;
  2137					;	D.XSTS LOW ORDER BITS WERE SET TO 11, XMTABT WILL BRANCH HERE IF
  2138					;	BIT 1 IS SET. THUS TWO ABORT CHARS GET SENT.
  2139					;-
  2140
  2141	002302'				XMTAB1:
  2142	002302'					MEM	DECA,SP0	;ONE LESS ABORT TO SEND
  2143	002304'					BRWRTE	IMM,DUPTAB	;DUP TRANSMIT ABORT BIT
  2144	002306'					OUTPUT	BR,SELB,OUTDA2	;MOVE IT TO OUT DATA
  2145	002310'					ALWAYS	WRTRT		;RETURN TO XMTDON TO DO THE NPR
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 39-1
KDPMC.MAC    14-JUN-79 07:11		STORE-STORE RECEIVED CHARACTER IN CORE

  2147						.SBTTL	STORE-STORE RECEIVED CHARACTER IN CORE
  2148					;	FILE	DUPSTORE.MAC
  2149					 
  2150					;+ 
  2151					;
  2152					;	S T O R E  R E C E I V E D  C H A R A C T E R
  2153					; 
  2154					; ENTERED FROM:	RECEIVE STATE ROUTINES
  2155					; 
  2156					; INPUTS:
  2157					;	 SP.CHR=CURRENT RECEIVED CHARACTER
  2158					;
  2159					; OUTPUTS:
  2160					;	A WORD TRANSFER IS MADE TO THE USER BUFFER IN PDP-11 CORE WHEN
  2161					; A PAIR OF CHARACTERS ARE RECEIVED. ANY CHARACTER DESTINED FOR AN EVEN CORE
  2162					; BUFFER ADDRESS IS LOCALLY BUFFERED UNTIL THE NEXT CHARACTER IS RECEIVED.HOWEVER,
  2163					; BYTE TRANSFERS ARE SOMETIMES MADE DURING CERTAIN MESSAGE AND BUFFER BOUNDRY
  2164					; CONDITIONS.
  2165					;- 
  2166					 
  2167	002312'				STORE:
  2168					 
  2169					;CHECK IF A RECEIVE BUFFER IS AVAILABE
  2170	002312'					BRWRTE	IMM,D.RBDF		;ADDRESS D.RBDF
  2171	002314'					LDMA	BR,ADD,SP.RM0
  2172	002316'					SPBR	MEMX,SELB,SP2		;LOAD IT INTO BR AND SP2
  2173	002320'					BRSHFT
  2174	002322'					BR4	10$			;BUFFER AVAILABLE
  2175					 
  2176					; A CHARACTER IS RECEIVED,BUT THERE IS NO RECEIVE BUFFER TO STORE IT
  2177					 
  2178	002324'					BRADDR	TIMRP2		;ULTIMATE RETURN FROM RESYNC
  2179	002326'					SP	BR,SELB,SP.SB1	;SAVE IT IN RETURN SCRATCH PAD
  2180	002330'					CALLSR	SP.SUB,COUTX,RESYNC,ER.NBA ;Q PORT DATA AND RETURN TO TIMER
  2181					;NOTE: A REGULAR CONTROL OUT IS NOT SENT BECAUSE IT MODIFIES PDP-11
  2182					;MEMORY ADDRESSED BY CURRENT DESCRIPTOR POINTER. SINCE THE DESCRIPTOR
  2183					;POINTER IS INVALID AT THIS TIME, THIS IS PROHIBITED.
  2184
  2185	002340'				10$:
  2186					; DECREMENT RECEIVE BYTE COUNT
  2187					 
  2188	002340'					CALLSB	SP.SUB,DRCNT
  2189					; NOTE: DRCNT DECREMENTS THE BYTE COUNT AND STORES IT BACK INTO RAM. 
  2190					 
  2191	002346'					C	CHKODD		;BRANCH IF COUNT NOT -1
  2192					 
  2193					;CURRENT BUFFER IS FULL,SO SEND BA OUT ETC BEFORE PROCESSING CURRENT CHARACTER
  2194	002350'				EOFBUF:
  2195	002350'					SPBR	MEMX,SELB,SP2	;GET THE LOW BYTE OF THE BUFFER ADDRESS
  2196	002352'					BR0	5$		;BUFFER ENDED ON AN ODD ADDRESS THEREFORE
  2197									;THE LAST RECEIVE CHARACTER IS STILL IN THE
  2198									;KMC RAM AND IT MUST BE WRITTEN OUT
  2199					;
  2200					; OTHERWISE ALL RECEIVE DATA HAVE BEEN WRITTEN TO THE BUFFER
  2201					;
  2202	002354'					ALWAYS	10$
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 39-2
KDPMC.MAC    14-JUN-79 07:11		STORE-STORE RECEIVED CHARACTER IN CORE

  2203					;
  2204	002356'				5$:
  2205	002356'					CALLSB	SP.SUB,SETRBA	;SET OUTBA TO CURRENT INPUT ADDRESS IN REC BUFF
  2206	002364'					BRWRTE	BR,DECA,SP2	;BUFFER ADDRESS MUST BE DECREMENTED TO POINT
  2207									;TO EVEN BYTE ADDRESS
  2208	002366'					OUTPUT	BR,SELB,OBA1	;RESET IT
  2209	002370'					BRWRTE	IMM,DATOB,INCMAR	;MASK TO DO A BYTE TRANSFER
  2210										;MAR NOW POINT TO D.ERC
  2211	002372'					OUTPUT	MEMX,SELB,OUTDA1	;GET THE EVEN RECEIVE CHARACTER
  2212	002374'					OUT	BR,SELB,ONPR		;START THE NPR
  2213	002376'				10$:
  2214	002376'					BRADDR	STORE		;SET UP RETURN ADDRESS TO STORE
  2215	002400'					SP	BR,SELB,SP.SB1
  2216	002402'				20$:	BRWRTE	IBUS,NPR	;IN CASE AN NPR WAS STARTED WAIT FOR IT TO COMPLETE
  2217	002404'					BR0	20$		;WAIT UNTIL DONE
  2218	002406'					ALWAYS	BAORC	;SEND BAOUT FOR RECEIVE BUFFER COMPLETEION
  2219					;NOTE: ORIGINAL INPUT PARAMETERS TO STORE MUST BE INTACT AT THIS POINT
  2220					; CHECK IF CURRENT RECEIVE BUFFER ADDRESS IS ODD
  2221	002410'				CHKODD:
  2222					 
  2223	002410'					BRWRTE	MEMX,SELB	;GET LOW BYTE OF BUFFER ADDR INTO BR
  2224									;MAR NOW POINT TO HIGH ADDR BYTE
  2225	002412'					BR0	STRODD		;BRANCH IF RECEIVE BUFFER ADDRESS IS ODD
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 40
KDPMC.MAC    14-JUN-79 07:11		STORE-STORE RECEIVED CHARACTER IN CORE

  2227
  2228					;		 CURRENT RECEIVE BUFFER ADDRESS IS EVEN
  2229					 
  2230					 
  2231	002414'				STREVN:
  2232					;
  2233					; SP2 CONTAINS THE IMAGE OF D.RBDF
  2234					; MAR POINTS TO LOW BYTE OF BUFFER ADDRESS
  2235					;
  2236					 
  2237	002414'					INCMA			;MAR NOW POINTS TO HIGH BYTE OF ADDRESS
  2238					; CLEAR "FIRST CHARACTER IN BUFFER" INDICATOR
  2239					 
  2240	002416'					BRWRTE	IMM,<377-DR.FST>,INCMAR ;MASK TO CLEAR DR.FST
  2241									;MAR POINT TO FLAGS BYTE
  2242	002420'					MEMINC	BR,AANDB,SP2	;CLEAR DR.FST
  2243									;MAR POINTS TO D.ERC
  2244					 
  2245					; STORE THE CURRENT RECEIVE CHARACTER IN LOCAL BUFFER
  2246					 
  2247	002422'					MEM	SELA,SP.CHR	;STORE REC'D CHARACTER IN D.ERC
  2248					 
  2249					 
  2250	002424'					ALWAYS	RCVEXT
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 41
KDPMC.MAC    14-JUN-79 07:11		STORE-STORE RECEIVED CHARACTER IN CORE

  2252
  2253					;		CURRENT RECEIVE BUFFER ADDRESS IS ODD
  2254					 
  2255					 
  2256	002426'				STRODD:
  2257					;
  2258					; SP2 CONTAINS THE IMAGE OF D.RBDF
  2259					; MAR POINTS TO LOW BYTE OF RECEIVE BUFFER ADDRESS
  2260					 
  2261	002426'					CALLSB	SP.SUB,SETRBA	;SET OUTBA TO CURRENT INPUT ADDRESS IN REC BUFF
  2262					 
  2263					; LOAD ODD (CURRENT) CHARACTER INTO OUTDATA HB
  2264					 
  2265	002434'					BRWRTE	BR,SELA,SP.CHR,INCMAR	;MOVE CHARACTER INTO BR FIRST
  2266										;MAR NOW POINTS TO D.ERC
  2267	002436'					OUTPUT	BR,SELB,OUTDA2	;NOW MOVE IT INTO OUTDATA 15:8
  2268	002440'					OUTPUT	MEMX,SELB,OUTDA1	;LOAD EVEN RECEIVE CHARACTER INTO OUTDATA 7:0
  2269					; CHECK IF THE CURRENT ODD CHARACTER IS DESTINED FOR FIRST LOCATION OF BUFFER
  2270					 
  2271	002442'					BRWRTE	MEMX,SELA,SP2	;LOAD IMAGE OF D.RBDF INTO BR
  2272	002444'					BR0	10$		;BRANCH IF FIRST CHARACTER OF BUFFER
  2273					 
  2274					; CURRENT CHARACTER IS DESTINED FOR ODD CORE ADDRESS AND IS NOT THE FIRST
  2275					;CHARACTER IN THE BUFFER. THEREFORE IT IS SAFE TO DO A WORD TRANSFER.
  2276					 
  2277	002446'					BRWRTE	IMM,DATO	;MASK TO START WORD OUT NPR
  2278	002450'					ALWAYS	20$		;DO NPR AND EXIT
  2279					;NOTE: DURING THE ABOVE WORD NPR, THE CORE ADDRESS IS ODD. THE HARDWARE SHOULD
  2280					;AUTOMATICALLY IGNORE BIT0 OF CORE ADDRESS.
  2281					 
  2282					 
  2283					; CURRENT RECEIVED CHARACTER IS DESTINED FOR AN ODD CORE ADDRESS.
  2284					;BUT THIS ADDRESS HAPPENS TO BE THE FIRST LOCATION OF THE CURRENT BUFFER.
  2285					;THEREFORE DO A BYTE TRANSFER.
  2286					 
  2287	002452'				10$:
  2288					 
  2289	002452'					BRWRTE	IMM,DATOB	;MASK TO SEND ONE BYTE(ODD CHARACTER)
  2290	002454'				20$:
  2291	002454'					OUT	BR,SELB,ONPR	;START NPR
  2292									;NOTE: NPR COMPLETION IS CHECKED FOR AFTER
  2293									;RETURN FROM INCMEM
  2294					 
  2295					;FALL INTO RCVEXT
  2296					 
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 42
KDPMC.MAC    14-JUN-79 07:11		STORE-STORE RECEIVED CHARACTER IN CORE

  2298
  2299					;		COMMON EXIT FROM STORE ROUTINE
  2300					 
  2301					 
  2302	002456'				RCVEXT:
  2303					 
  2304					;INCREMENT RECEIVE BUFFER POINTER
  2305					 
  2306					; ADDRESS D.RBDA
  2307					 
  2308	002456'					BRWRTE	IMM,D.RBDA
  2309	002460'					LDMA	BR,ADD,SP.RM0
  2310					 
  2311					; INCREMENT MEMORY LOCATIONS
  2312					 
  2313	002462'					CALLSR	SP.SUB,INCMEM,NPRWP1,1	;INCREMENT MEMORY & RETURN 
  2314										;TO WAIT FOR NPR COMPLETION
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 43
KDPMC.MAC    14-JUN-79 07:11		STORE-STORE RECEIVED CHARACTER IN CORE

  2316
  2317						.SBTTL	EOFMSG-END OF MESSAGE
  2318					 
  2319					;+ 
  2320					; 
  2321					;		E N D  O F  R E C E I V E D  M E S S A G E
  2322					; 
  2323					; CALLED BY:	RBDONE(BIT STUFF), MSGIN(DDCMP)
  2324					; 
  2325					;INPUTS:
  2326					;	SP.SB1=RETURN ADDRESS
  2327					;	D.RBD=CURRENT INPUT ADDRESS
  2328					;OUTPUTS:
  2329					;	STORES IN RECEIVE BUFFER ANY RESIDUAL EVEN CHARACTER THAT IS SAVED
  2330					;	IN THE LOCAL BUFFER (D,ERC)
  2331					;	GENERATES A BAOUT. ULTIMATE RETURN TO LOCATION SPECIFIED BY SP.SB1
  2332					;-
  2333					 
  2334	002472'				EOFMSG:
  2335					 
  2336					;CHECK IF THE LAST RECEIVED CHARACTER WAS EVEN
  2337					 
  2338	002472'					BRWRTE	IMM,D.RBDA	;SET TO POINT TO BUFFER ADDRES
  2339	002474'					LDMA	BR,ADD,SP.RM0	;SET THE MAR
  2340	002476'					SPBR	MEMX,SELB,SP2	;READ THE LOW BYTE OF THE ADDRESS
  2341	002500'					BR0	10$		;BRANCH IF ODD
  2342					; CURRENT RECEIVE BUFFER IS EVEN,THAT MEANS LAST RECEIVED CHARACTER WAS
  2343					;DESTINED FOR AN ODD ADDRESS AND ALREADY BEEN TRANSFERED TO RECEIVE
  2344					;BUFFER.
  2345					 
  2346	002502'					ALWAYS	BAORE		;SEND BAOUT
  2347					 
  2348					;CURRENT RECEIVE BUFFER ADDRESS IS ODD. THEREFORE THE PREVIOUS CHARACTER
  2349					;DESTINED FOR AN EVEN ADDRESS IS STORED LOCALLY. TRANSFER IT TO CORE
  2350					 
  2351	002504'				10$:
  2352					 
  2353	002504'					CALLSB	SP.SUB,SETRBA	;SET RECEIVE BUFFER ADDRESS
  2354	002512'					BRWRTE	DECA,SP2,INCMAR	;DECREMENT ADDRESS TO GET EVEN BYTE
  2355									;MAR POINTS TO D.ERC
  2356	002514'					OUTPUT	BR,SELB,OBA1	;PUT ADDR IN THE OBA REG
  2357	002516'					OUTPUT	MEMX,SELB,OUTDA1	;LOAD EVEN CHAR INTO OUT DATA
  2358	002520'					BRWRTE	IMM,DATOB	;WRITE OUT RESIDUAL EVEN RECEIVED
  2359	002522'					OUT	BR,SELB,ONPR	;INTO CORE
  2360	002524'				20$:	BRWRTE	IBUS,NPR	;AND WAIT FOR NPR TO COMPLETE
  2361	002526'					BR0	20$
  2362					 
  2363					;FALL INTO BAORE
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 44
KDPMC.MAC    14-JUN-79 07:11		EOFMSG-END OF MESSAGE

  2365
  2366						.SBTTL	BAORE-BA OUT FOR END OF RECEIVED MESSAGE
  2367					 
  2368					;+ 
  2369					; 
  2370					;	B A  O U T  F O R  E N D  O F  R E C E I V E D  M E S S A G E
  2371					; 
  2372					; ENTERED FROM:	EOFMSG
  2373					; 
  2374					;INPUTS:
  2375					;	SP.SB1=RETURN ADDRESS
  2376					; 
  2377					;OUTPUTS:
  2378					;	INPUT PARAMETERS FOR BOUT ARE SET UP
  2379					;	BOUT IS EXECUTED
  2380					;-
  2381
  2382	002530'				BAORE:
  2383					 
  2384					;SET SP3 TO INDICATE END OF MESSAGE
  2385					 
  2386	002530'					BRWRTE	IMM,EOM
  2387	002532'					SP	BR,SELB,SP3
  2388					 
  2389					;SET SP2 TO INDICATE BAOUT FOR RECEIVE OPERATION
  2390					 
  2391	002534'					BRWRTE	IMM,C.BAOR
  2392
  2393					; FOLLOWING CODE IS SHARED WITH THE ERROR ROUTINES IN DUPERR
  2394	002536'				ENTRY2:
  2395	002536'					SP	BR,SELB,SP2
  2396					;SET SP6=ADDRESS OF D.RDP
  2397	002540'					BRWRTE	IMM,D.RDP	;BR=D.RDP
  2398	002542'					BRWRTE	BR,<ADD!SP.RM0>	;BR=ADDRESS OF D.RDP/D.XDP
  2399	002544'					SP	BR,SELB,SP6	;SP6=BR
  2400					 
  2401					;FALL INTO BOUT/COUT
  2402					 
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 45
KDPMC.MAC    14-JUN-79 07:11		BAORE-BA OUT FOR END OF RECEIVED MESSAGE

  2404
  2405						.SBTTL	BOUT/COUT-BA OR CONTROL OUT (WITH DESCRIPTOR UPDATED)
  2406					 
  2407					;+ 
  2408					; 
  2409					;		B A  O R  C O N T R O L  O U T
  2410					;		(CURRENT DESCRIPTOR IS UPDATED)
  2411					; 
  2412					; THIS IS COMMON CODE SHARED BY THOSE BAOUT ROUTINES AND  CONTROL OUT 
  2413					;ROUTINES THAT REQUIRE AN UPDATE OF BYTE COUNT IN THE RECEIVE OR TRANSMIT 
  2414					;DESCRIPTORS.
  2415					; 
  2416					; ENTERED FROM:	BAORE
  2417					; CALLED BY:	KILLAL
  2418					; 
  2419					;INPUTS:
  2420					;	SP.SB1	-RETURN ADDRESS.
  2421					;	SP2	-CODE TO INDICATE BAOUT OR CONTROL OUT (KMC CSR2 IMAGE)
  2422					;	SP3	-ERROR CODE
  2423					;	SP6	-ADDRESS OF D.RDP(RECEIVE) OR D.XDP(TRANSMIT)
  2424					; 
  2425					;OUTPUTS:
  2426					;	BYTE COUNT IN THE CURRENT TRANSMIT OR RECEIVE DESCRIPTOR IS UPDATED
  2427					;BY SUBTRACTING THE CONTENTS OF D.RBDC OR D.XBDC FROM IT.
  2428					;SP4,SP5,SP6 ARE LOADED WITH THE CURENT DESCRIPTOR ADDRESS AND QPDATA
  2429					;ROUTINE IS EXECUTED.
  2430					;- 
  2431					 
  2432	002546'				BOUT:
  2433	002546'				COUT:
  2434					 
  2435					;SET OUBA TO CURRENT DESCRIPTOR
  2436					 
  2437	002546'					LDMA	SELA,SP6		;ADDRESS DESCRIPTOR ADDRESS POINTER
  2438	002550'					OUTPUT	MEMI,SELB,OBA1		;ADDRESS 7:0
  2439	002552'					OUTPUT	MEMI,SELB,OBA2		;ADDRESS 15:8
  2440	002554'					SP	IBUS,UBBR,SP0		;GET CURRENT BUS REQ REG
  2441	002556'					BRWRTE	IMM,101			;CLEAR ALL BUT VEC XX4,NXM
  2442	002560'					SP	BR,AANDB,SP0
  2443	002562'					SP	MEMX,SELB,SP1		;GET FLAGS BYTE (MEM EXT BITS) **V0.10**
  2444	002564'					BRWRTE	IMM,14			;EXTRACT MEM EXT BITS
  2445	002566'					BRWRTE	BR,AANDB,SP1		;MASK OFF ALL OTHER BITS
  2446	002570'					OUT	BR,AORB,OBR		;LOAD EXT ADDRESS BITS
  2447					;SUBTRACT CURRENT BYTE COUNT FROM ORIGINAL BYTE COUNT TO GET # OF CHARACTERS
  2448					;RECEIVED/TRANSMITTED IN THIS BUFFER
  2449	002572'					BRWRTE	IMM,<D.ORBC-D.RDP>	;ADDRESS ORIGINAL BUFFER COUNT
  2450	002574'					LDMA	BR,ADD,SP6
  2451	002576'					SP	MEMI,SELB,SP0		;AND SAVE IT IN SP0
  2452	002600'					SP	MEMX,SELB,SP1		;AND HIGH BYTE INTO SP1
  2453	002602'					BRWRTE	IMM,<D.RBDC-D.RDP>	;ADDRESS CURRENT COUNT
  2454	002604'					LDMA	BR,ADD,SP6
  2455	002606'					OUTPUT	MEMI,SUB,OUTDA1		;OUTDA1=ORG 7:0-CUR7:0
  2456	002610'					BRWRTE	MEMI,SUBC,SP1		;BR=ORG15:8-CUR15:8
  2457	002612'					OUTPUT	BR,SELB,OUTDA2,INCMAR	;STORE IT IN OUTDATA 1 **V0.11**
  2458					 
  2459					;OUTDATA NOW CONTAINS THE NUMBER OF CHARACTERS TRANSFERED FROM/TO
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 45-1
KDPMC.MAC    14-JUN-79 07:11		BOUT/COUT-BA OR CONTROL OUT (WITH DESCRIPTOR UPDATED)

  2460					;THE CURRENT BUFFER
  2461					; WRITE IT INTO CURRENT DESCRIPTOR
  2462	002614'					BRADDR	BOUTR0			;RETURN ADDRESS INTO BR **V0.11**
  2463	002616'					SP	BR,SELB,SP.SUB,INCMAR	;SAVE IN SP.SUB (MAR = FLAGS)
  2464	002620'					BRWRTE	MEMX,SELB		;READ FLAGS
  2465	002622'					BRSHFT				;SHIFT RIGHT
  2466	002624'					BR4	IC2OUT			;IF BUFFER ASSIGNED, WRITE NEW BC
  2467	002626'					ALWAYS	QPDATA			;OTHERWISE DON'T (CAN GET HERE FROM
  2468										;KILL CODE WITH NO BUFFER ASSIGNED) **V0.11**
  2469					 
  2470					;CURRENT DESCRIPTOR IS NOW COMPLETELY UPDATED
  2471
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 46
KDPMC.MAC    14-JUN-79 07:11		BOUT/COUT-BA OR CONTROL OUT (WITH DESCRIPTOR UPDATED)

  2473
  2474						.SBTTL	BAORC-BA OUT FOR RECEIVE BUFFER COMPLETION
  2475					 
  2476					;+ 
  2477					; 
  2478					;	B A  O U T  F O R  R E C E I V E  B U F F E R  C O M P L E T I O N
  2479					; 
  2480					; CALLED BY:	STORE
  2481					;
  2482					;INPUTS:
  2483					;	SP.SB1=RETURN ADDRESS
  2484					; 
  2485					;OUTPUTS:
  2486					;	INPUT PARAMETERS FOR COUX ARE SET UP
  2487					;	COUX IS EXECUTED
  2488					;-
  2489
  2490	002630'				BAORC:
  2491					 
  2492					;SET SP3 TO INDICATE END OF MESSAGE
  2493					 
  2494	002630'					BRWRTE	IMM,0
  2495	002632'					SP	BR,SELB,SP3
  2496					 
  2497					;SET SP2 TO INDICATE BAOUT FOR RECEIVE OPERATION
  2498					 
  2499	002634'					BRWRTE	IMM,C.BAOR
  2500	002636'					SP	BR,SELB,SP2
  2501					 
  2502					; SET SP6=ADDRESS OF D.RDP
  2503	002640'					BRWRTE	IMM,D.RDP	;BR=D.RDP
  2504	002642'					ALWAYS	ENTRY1		;USE COMMON CODE IN COUX
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 47
KDPMC.MAC    14-JUN-79 07:11		BAORC-BA OUT FOR RECEIVE BUFFER COMPLETION

  2506
  2507						.SBTTL	COUTX-CONTROL OUT FOR TRANSMIT OPERATION
  2508					 
  2509					;+ 
  2510					; 
  2511					;	C O N T R O L  O U T  F O R  X M T  O P E R A T I O N S
  2512					; 
  2513					; CALLED BY:	DSRCHG,STORE,NXMERR
  2514					; 
  2515					;INPUTS:
  2516					;	SP.SUB=RETURN ADDRESS
  2517					;	BRG	=ERROR CODE
  2518					;OUTPUTS:
  2519					;	A CONTROL OUT IS QUEUED WITH THE BUFFER DESCRIPTOR ADDRESS ZEROED.
  2520					;- 
  2521					 
  2522	002644'				COUTX:
  2523	002644'					SP	BR,SELB,SP3	;SAVE ERROR CODE IN SP3
  2524	002646'					SPBR	IMM,0,SP0	;SET UP SCRATCH PADS FOR QPDATA
  2525	002650'					SP	BR,SELB,SP1	;..
  2526	002652'					SP	BR,SELB,SP4	;..
  2527
  2528					;SET SP2 TO INDICATE CONTROL OUT FOR XMT OPERATION
  2529	002654'					BRWRTE	IMM,C.CLOX	;CSR2 IMAGE INTO SP2
  2530	002656'					SP	BR,SELB,SP2
  2531	002660'					ALWAYS	QPDAT1		;QUEUE THE CONTROL OUT
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 48
KDPMC.MAC    14-JUN-79 07:11		COUTX-CONTROL OUT FOR TRANSMIT OPERATION

  2533
  2534						.SBTTL	BAOX/COUX-BA/CONTROL OUT FOR TRANSMIT BUFFER COMPLETION
  2535					;+ 
  2536					; 
  2537					;	B A  O U T  F O R  X M T  B U F F E R  C O M P L E T I O N
  2538					; 
  2539					;CALLED BY:	XMTBCZ
  2540					; 
  2541					;INPUTS:
  2542					;	SP.SB1=RETURN ADDRESS
  2543					; 
  2544					;OUTPUTS:
  2545					;	INPUT PARAMETERS FOR QPDATA ARE SET UP
  2546					;	A BUF ADDR OUT IS QUEUED.
  2547					;-
  2548
  2549	002662'				BAOX:
  2550					 
  2551					;SET SP3 TO INDICATE BUFFER COMPLETION
  2552					 
  2553	002662'					BRWRTE	IMM,0
  2554	002664'					SP	BR,SELB,SP3
  2555					 
  2556					;SET BRG TO INDICATE BA OUT FOR TRANSMIT OPERATION
  2557					 
  2558	002666'					BRWRTE	IMM,C.BAOX
  2559					;	FALL INTO COUX
  2560
  2561
  2562					;+
  2563					; **COUX-ROUTINE TO QUEUE A TRANSMIT CONTROL OUT WITH BUFFER ADDRESS**
  2564					;
  2565					; CALLED BY:	XMTUNR
  2566					; ENTERED FROM:	BAOX
  2567					;
  2568					; INPUTS:
  2569					;	SP.SB1 = RETURN ADDR
  2570					;	SP3 = ERROR CODE
  2571					;	BRG = BSEL2 CODE (NORMALLY C.CLOX)
  2572					;
  2573					; OUTPUTS:
  2574					;	PARAMETERS FOR QPDATA ARE SET UP
  2575					;	SO A COMPLETION WILL BE QUEUED TO THE PDP-11
  2576					;-
  2577
  2578	002670'				COUX:
  2579	002670'					SP	BR,SELB,SP2	;PUT BSEL2 CODE IN SP2
  2580					 
  2581					;SET SP6=ADDRESS OF D.XDP
  2582	002672'					BRWRTE	IMM,D.XDP	;BR=D.XDP
  2583
  2584					;COMMON CODE, USED BY BAORC ALSO
  2585	002674'				ENTRY1:
  2586	002674'					BRWRTE	BR,ADD,SP.RM0	;BR=ADDRESS OF D.RDP/D.XDP
  2587	002676'					SP	BR,SELB,SP6	;SP6=BR
  2588					 
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 48-1
KDPMC.MAC    14-JUN-79 07:11		BAOX/COUX-BA/CONTROL OUT FOR TRANSMIT BUFFER COMPLETION

  2589					;	FALL INTO QPDATA
  2590					 
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 49
KDPMC.MAC    14-JUN-79 07:11		BAOX/COUX-BA/CONTROL OUT FOR TRANSMIT BUFFER COMPLETION

  2592
  2593						.SBTTL	QPDATA-QUEUE PORT DATA
  2594					 
  2595					;+ 
  2596					; 
  2597					;	Q U E U E  P O R T  D A T A
  2598					; 
  2599					; ENTERED AT QPDATA FROM:	BOUT,COUX
  2600					; ENTERED AT QPDAT1 FROM:	COUTX
  2601					; 
  2602					; INPUTS:
  2603					;	SP.SB1=RETURN ADDRESS
  2604					;	SP.LN=LINE NUMBER
  2605					;	SP2=CLO(R/T) TO SEND CONTROL OUT,=BAO(R/T) TO SEND BAOUT
  2606					;	SP3	=ERROR CODE WITH THE ERROR BIT SET
  2607					;	SP6	=ADDRESS OF D.RDP/D.XDP
  2608					;OUTPUTS:
  2609					;	SIX BYTES OF CONTROL OUT DATA IS STUFFED INTO THE LOCAL COMPLETION SILO.
  2610					;	ENTRY AT QPDATA: CALLER'S RETURN IN SP.SB1, EXECUTE STFSLO AND NXBUF
  2611					;	ENTRY AT QPDAT1: CALLER'S RETURN IN SP.SUB, EXECUTE STFSLO AND RETURN
  2612					;-
  2613					 
  2614	002700'				QPDATA:
  2615	002700'					BRADDR	NXBUF		;ADDRESS FOR STUFF SILO TO RETURN TO
  2616	002702'					SP	BR,SELB,SP.SUB	;SAVE IT IN RETURN SCRATCH PAD
  2617					 
  2618					;GET CURRENT DESCRIPTOR ADDRESS INTO SCRATCH PADS
  2619					 
  2620	002704'					LDMA	SELA,SP6	;ADDRESS CURRENT DESCRIPTOR POINTER
  2621	002706'					SP	MEMI,SELB,SP0	;SP0=ADDRESS 7:0
  2622	002710'					SP	MEMI,SELB,SP1	;SP1=ADDRESS 15:8
  2623	002712'					SP	MEMX,SELB,SP4	;SP4=ADDRESS 17:16
  2624					 
  2625					; ADDRESS 'NEXT IN' LOCATION IN LOCAL SILO
  2626					 
  2627	002714'				QPDAT1:
  2628	002714'					LDMA	IMM,P.SLIN	;ADDRESS NEXT IN POINTER
  2629	002716'					LDMAP	IMM,P.SLIN
  2630	002720'					LDMA	MEMX,SELB	;ADDRESS LOCATION POINTED TO BY P.SLIN
  2631					 
  2632					;STORE BYTE 0 WORD 1 INTO SILO
  2633					 
  2634	002722'					MEMINC	SELA,SP.LN	;LOAD LINE NUMBER
  2635	002724'					MEMINC	SELA,SP0	;LOAD DESCRIPTOR ADDRESS 7:0
  2636	002726'					MEMINC	SELA,SP1	;LOAD DESCRIPTOR ADDRESS 15:0
  2637	002730'					MEM	SELA,SP3	;STORE ERROR CODE (FOR CONTROL OUT ONLY)
  2638	002732'					BRWRTE	SELA,SP2	;BUT IS THIS A CONTROL OUT?
  2639	002734'					BR0	10$		;YES
  2640	002736'					MEM	IMM,0		;NO,CLEAR ERROR CODE
  2641	002740'					ALWAYS	20$
  2642	002742'				10$:	BRWRTE	IMM,0		;CONTROL OUT,CLEAR SP3
  2643	002744'					SP	BR,SELB,SP3
  2644	002746'				20$:
  2645	002746'					SP	TWOA,SP4,INCMAR	;SHIFT EXT ADDRESS LEFT TO POSITION
  2646	002750'					SP	TWOA,SP4
  2647	002752'					SP	TWOA,SP4
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 49-1
KDPMC.MAC    14-JUN-79 07:11		QPDATA-QUEUE PORT DATA

  2648	002754'					SPBR	TWOA,SP4
  2649	002756'					MEMINC	BR,AORB,SP3 	;STORE EOM BIT AND EXT MEM BITS IF BA OUT
  2650	002760'					MEMINC	SELA,SP2	;CONTROL OUT OR BAOUT CODE
  2651					;FALL INTO STUFF SILO ROUTINE
  2652					 
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 50
KDPMC.MAC    14-JUN-79 07:11		QPDATA-QUEUE PORT DATA

  2654
  2655						.SBTTL	STFSLO-STUFF COMPLETION SILO SUBROUTINE
  2656					 
  2657					;+ 
  2658					;
  2659					;		S T U F F  C O M P L E T I O N  S I L O
  2660					;
  2661					; ENTERED FROM:	QPDATA
  2662					; 
  2663					; INPUTS:
  2664					;	SP.SB1=ULTIMATE RETURN ADDRESS
  2665					;	SP.SUB=RETURN FOR STUFF SILO
  2666					; 
  2667					;	THE THREE SILO WORDS MUST ALREADY BE IN RAM STARTING AT LOCATION 
  2668					;	POINTED TO BY P.SLIN.
  2669					;
  2670					; OUTPUTS:
  2671					;	SILO POINTERS ARE UPDATED. IF THERE WAS A SILO OVERFLOW,BIT 16 OF
  2672					;	THE FIRST WORD IS SET TO 1.
  2673					;-
  2674					 
  2675	002762'				STFSLO:
  2676					 
  2677					; CHECK IF SILO IS EMPTY OR FULL
  2678					 
  2679	002762'					LDMA	IMM,<P.SLIN>		;GET NEXT IN
  2680	002764'					SP	MEMI,SELB,SP0		;INTO BR,SP0
  2681	002766'					BRWRTE	MEMX,SELB		;AND NEXT OUT INTO THE BR
  2682	002770'					Z	30$			;SILO IS EMPTY
  2683	002772'					COMP	BR,SP0			;NEXTIN=NEXT OUT?
  2684	002774'					Z	40$			;YES,SILO IS FULL
  2685					 
  2686					; SILO IS NOT FULL
  2687					 
  2688					; INCREMENT NEXT IN BY ONE ENTRY LENGTH
  2689	002776'				10$:
  2690	002776'					LDMA	IMM,<P.SLIN&377>	;MAR=ADDRESS OF NEXT IN POINTER
  2691	003000'					BRWRTE	IMM,SILOED		;OFFSET OF LAST ENTRY
  2692	003002'					COMP	BR,SP0			;NEXT IN=LAST ENTRY IN SILO?
  2693	003004'					Z	20$			;YES,WRAP NEXT IN
  2694	003006'					BRWRTE	IMM,SENTRY		;BR=ONE ENTRY SIZE
  2695	003010'					MEM	BR,ADD,SP0		;INCREMENT P.SLIN BY ONE ENTRY SIZE
  2696	003012'					RTNSUB	SP.SUB,P3		;RETURN
  2697					 
  2698					; WRAP NEXT IN
  2699	003014'				20$:	MEM	IMM,P.NPR		;SET NEXT IN=P.NPR
  2700	003016'					RTNSUB	SP.SUB,P3
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 51
KDPMC.MAC    14-JUN-79 07:11		STFSLO-STUFF COMPLETION SILO SUBROUTINE

  2702
  2703					; SILO IS EMPTY,SET NEXT OUT=NEXT IN
  2704					 
  2705	003020'				30$:	MEM	SELA,SP0		;STORE NEXT IN P.SLOT
  2706	003022'					ALWAYS	10$			;STORE ONE ENTRY
  2707					 
  2708					; SILO IS FULL, SET ERROR BIT IN CURRENT NEXT IN RAM LOCATION
  2709					 
  2710	003024'				40$:
  2711	003024'					LDMA	SELA,SP0		;LOAD MAR TO ADDRESS SILO ENTRY
  2712	003026'					SP	IMM,200,SP0		;LOAD ERROR CODE MASK
  2713	003030'					MEM	MEMX,AORB,SP0		;OR OVERRUN BIT ONTO LINE NUMBER
  2714	003032'					RTNSUB	SP.SUB,P3
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 52
KDPMC.MAC    14-JUN-79 07:11		STFSLO-STUFF COMPLETION SILO SUBROUTINE

  2716
  2717						.SBTTL	NXBUF-GET NEXT  BUFFER
  2718					 
  2719					;+
  2720					;			N E X T  B U F F E R
  2721					;
  2722					; ENTERED FROM:	STFSLO
  2723					;
  2724					; INPUTS:
  2725					;	SP.SB1	=RETURN ADDRESS
  2726					;	SP6	=ADDRESS OF D.RDP OR D.XDP
  2727					;
  2728					; OUTPUTS:
  2729					;	1) CURRENT  DESCRIPTOR POINTER  IS MODIFIED TO POINT
  2730					;	TO THE NEXT DESCRIPTOR IN THE CURRENT LIST
  2731					;	2) IF NO MORE DESCRIPTORS ARE AVAILABLE IN THE CURRENT LIST, 
  2732					;	D.RDP/D.XDP IS SET TO POINT TO THE FIRST DESCRIPTOR IN THE ALTERNATE LIST.
  2733					;	THE "ALTERNATE LIST ASSIGNED" BIT IS CLEARED
  2734					;	3) IF THE ALTERNATE LIST IS NOT ASSIGNED IN THE ABOVE CASE,THE"CURRENT
  2735					;	LIST ASSIGNED" BIT IS CLEARED.
  2736					;	4) IF THE NEW DESCRIPTOR IS THE LAST ONE IN ITS LIST THE "LAST DESCRIPTOR
  2737					;	IN LIST" INDICATOR IS SET.
  2738					;
  2739					;	THIS ROUTINE; CHECKS IF CURRENT DESCRIPTOR IS LAST ON LIST
  2740					;	IF SO, BRANCH TO NXLST
  2741					;	OTHERWISE, ADD 6 TO LIST POINTER AND GOTO NXDSCP TO LOAD DESC
  2742					;-
  2743
  2744	003034'				NXBUF:
  2745					 
  2746					; CHECK IF THE CURRENT BUFFER DESCRIPTOR IS THE LAST ONE IN THE CURRENT LIST
  2747					 
  2748	003034'					BRWRTE	IMM,<D.RBDF-D.RDP>	;ADDRESS FLAG BYTE
  2749	003036'					LDMA	BR,ADD,SP6
  2750	003040'					LDMAP	SELA,SP.RM1		;SINCE STUFF SILO CHANGED PAGE
  2751	003042'					SPBR	MEMX,SELB,SP0		;LOAD FLAG BYTE INTO BR,SP0
  2752	003044'					BR7	NXLST			;LAST DESCRIPTOR IN LIST,GET NEXT LIST
  2753					 
  2754					;	CURRENT BUFFER DESCRIPTOR IS NOT THE LAST ONE IN THE LIST
  2755					;ADD 6 TO CURRENT DESCRIPTOR ADDRESS TO GET THE NEXT DESCRIPTOR ADDRESS
  2756	003046'					LDMA	SELA,SP6		;ADDRESS CURRENT DESCRIPTOR POINTER
  2757	003050'					CALLSR	SP.SUB,INCMEM,NXDP1,6.	;CALL TO INCRE PNTR BY 6
  2758										;RETURN TO NXDSCP
  2759
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 53
KDPMC.MAC    14-JUN-79 07:11		NXBUF-GET NEXT  BUFFER

  2761
  2762						.SBTTL	NXLST-GET NEXT BUFFER LIST
  2763					 
  2764					;+ 
  2765					; 
  2766					;			N E X T  L I S T
  2767					; 
  2768					; ENTERED FROM:	NXBUF
  2769					; 
  2770					; INPUTS:
  2771					;	SP.SB1	=RETURN ADDRESS
  2772					;	MAR,MARP=D.RBDF OR D.XBDF
  2773					;	SP0	=CONTENTS OF D.RBDF OR D.XBDF
  2774					;	SP6	=ADDRESS OF D.RBD OR D.XBD
  2775					; 
  2776					; OUTPUTS:
  2777					;	CHECK IF ALTERNATE LIST IS ASSIGNED
  2778					;	IF NOT, CLEAR BUFFER ASSIGNED BIT AND RETURN
  2779					;	IF SO, CLEAR ALTERNATE ASSIGNED BIT AND UPDATE CURRENT LIST PNTR
  2780					;	DROP INTO NXDSCP TO LOAD NEW DESC INTO LINE TABLE.
  2781					;-
  2782
  2783	003060'				NXLST:
  2784					 
  2785					; CHECK IF THE ALTERNATE LIST IS ASSIGNED
  2786					;	(MAR=D.RBDF FOR REC OR D.XBDF FOR XMT,SP0=ITS CONTENTS
  2787					 
  2788	003060'					BRWRTE	TWOA,SP0	;LEFT SHIFT 
  2789	003062'					BR7	10$		;BRANCH IF ALTERNATE LIST IS ASSIGNED
  2790					 
  2791					; ALTERNATE LIST IS NOT ASSIGNED. CLEAR 'CURRENT BUFFER ASSIGNED BIT AND RETURN
  2792					 
  2793	003064'					BRWRTE	IMM,<377-DR.CBA> ;MASK TO CLEAR DR.CBA
  2794	003066'					MEM	BR,AANDB,SP0	;CLEAR IT AND STORE RESULT IN D.RBDF/D.XBDF/
  2795					;*************ONE OF THE RETURN POINTS FOR BA,CONTROL ETC.**********
  2796	003070'					RTNSUB	SP.SB1,P2	;RETURN
  2797					;********************************************************************
  2798					 
  2799					 
  2800					; ALTERNATE LIST IS ASSIGNED.
  2801	003072'				10$:
  2802					 
  2803					;CLEAR 'ALTERNATE LIST ASSIGNED' BIT
  2804	003072'					BRWRTE	IMM,<377-DR.ABA> ;MASK TO CLEAR DS.ABA
  2805	003074'					MEM	BR,AANDB,SP0	;STORE IT IN RAM
  2806					 
  2807					;MOVE ALTERNATE LIST POINTER INTO CURRENT DECRIPTOR POINTER
  2808	003076'					BRWRTE	IMM,<D.ARLP-D.RDP> ;OFFSET FROM CURRENT DESCRIPTOR POINTER
  2809	003100'					LDMA	BR,ADD,SP6	;ADDRESS ALTERNATE POINTER
  2810	003102'					SP	MEMI,SELB,SP0	;SP0=ADDRESS 7:0
  2811	003104'					SP	MEMI,SELB,SP1	;SP1=ADDRESS 15:8
  2812	003106'					SP	MEMI,SELB,SP2	;SP2=ADDRESS 17:16
  2813	003110'					LDMA	SELA,SP6	;ADDRESS CURRENT POINTER
  2814	003112'					MEMINC	SELA,SP0	;STORE ADDRESS 7:0
  2815	003114'					MEMINC	SELA,SP1	;STORE ADDRESS 15:8
  2816	003116'					MEM	SELA,SP2	;AND EXT ADDRESS
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 53-1
KDPMC.MAC    14-JUN-79 07:11		NXLST-GET NEXT BUFFER LIST

  2817									;FALL INTO NXDSCP
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 54
KDPMC.MAC    14-JUN-79 07:11		NXLST-GET NEXT BUFFER LIST

  2819
  2820						.SBTTL	NXDSCP - GET NEXT DESCRIPTOR
  2821
  2822					;+
  2823					;
  2824					;	**NXDSCP-ROUTINE TO LOAD THE NEXT DESCRIPTOR INTO LINE TABLE
  2825					;
  2826					; ENTERED FROM:	NXLST
  2827					; CALLED FROM:	BAIN
  2828					;
  2829					;INPUTS:
  2830					;	SP6=ADDRESS OF THE CURRENT DESCRIPTOR FOR CURRENT OPERATION (ADDRESS
  2831					;	OF D.RDP OR D.XDP)
  2832					;
  2833					; OUTPUTS:
  2834					;	THE NEW DESCRIPTOR IS FETCHED FROM PDP-11 MEMORY AND STORE IN THE LINE TABLE.
  2835					;	IF A TRANSMIT BUFFER, ANY ODD LEADING CHARACTER IS PREFETCHED
  2836					;	IF A RECEIVE BUFFER, THE FIRST CHARACTER FLAG(DR.FST) IS SET
  2837					;-
  2838
  2839	003120'				NXDSCP:
  2840					 
  2841					;SET INBA TO THE CURRENT DESCRIPTOR ADDRESS
  2842	003120'					LDMA	SELA,SP6	;ADDRESS CURRENT DESCRIPTOR POINTER
  2843	003122'					OUTPUT	MEMI,SELB,IBA1	;ADDRESS 7:0
  2844	003124'					OUTPUT	MEMI,SELB,IBA2	;ADDRESS 15:8
  2845	003126'					BRWRTE	IMM,1		;START NPR 
  2846	003130'					SP	BR,SELB,SP0
  2847	003132'					OUT	MEMI,AORB,ONPR	;ADRESS 17:16
  2848					 
  2849					 
  2850					;MOVE NEW BUFFER ADDRESS AND BYTE COUNT INTO ORIGINAL BUF ADDRESS AND COUNT AREA
  2851					 
  2852	003134'				5$:	BRWRTE	IBUS,NPR	;WAIT FOR BUFFER ADDRESS 15:0
  2853	003136'					BR0	5$
  2854	003140'					SP	IBUS,INDAT1,SP4,INCMAR	;TEMPORARILY SAVE ADD 7:0 IN SP4
  2855	003142'					SP	IBUS,INDAT2,SP5,INCMAR	;AND ADDRESS 15:8 IN SP5
  2856	003144'					CALLSB	SP.SUB,IC2IN	;READ BYTE COUNT FROM DESCRIPTOR
  2857	003152'					SP	IBUS,INDAT1,SP2,INCMAR	;SAVE LOW BYTE IN SP2
  2858	003154'					SP	IBUS,INDAT2,SP3	;AND HIGH COUNT IN SP3
  2859					;MAR IS NOW POINTING TO D.ORBC/D.OXBC
  2860	003156'					MEMINC	IBUS,INDAT1	;SAVE LOW BYTE OF COUNT
  2861	003160'					MEMINC	IBUS,INDAT2	;SAVE HIGH BYTE OF COUNT
  2862	003162'					MEMINC	SELA,SP4	;NOW STORE DESCP ADDRESS 7:0
  2863	003164'					MEMINC	SELA,SP5	;AND ADDRESS 15:8 IN RAM
  2864					 
  2865					; UPDATE EXTENDED ADDRESS BITS OF BUFFER & LAST DESCRIPTOR BIT
  2866	003166'					CALLSB	SP.SUB,IC2IN	;READ NEXT DESCRIPTOR WORD
  2867	003174'					SP	IBUS,INDAT2,SP0	;LOAD HIGH BYTE (FLAGS,EXT ADDR)INTO SP0
  2868	003176'					MEMINC	IBUS,INDAT2	;SAVE FLAGS BYTE
  2869	003200'					MEMINC	SELA,SP2	;SAVE LOW BYTE OF COUNT
  2870	003202'					MEMINC	SELA,SP3	;SAVE HIGH BYTE
  2871	003204'					MEMINC	SELA,SP4	;SAVE BUFFER ADDRESS IN CURRENT AREA
  2872	003206'					MEMINC	SELA,SP5
  2873	003210'					SP	MEMX,SELB,SP2	;SAVE OLD FLAGS IN SP2
  2874	003212'					BRWRTE	IMM,<DR.CBA!DR.ABA>	;STRIP ALL BUT THESE
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 54-1
KDPMC.MAC    14-JUN-79 07:11		NXDSCP - GET NEXT DESCRIPTOR

  2875	003214'					BRWRTE	BR,AANDB,SP2	;AND LOAD IT NTO BR
  2876	003216'					MEM	BR,AORB,SP0	;OR IN NEW FLAGS
  2877					 
  2878					;CHECK IF RECEIVE OR TRANSMIT OPERATION
  2879	003220'					BRWRTE	IMM,D.RDP	;SET BR TO
  2880	003222'					BRWRTE	BR,ADD,SP.RM0	;RAM ADDRESS OF D.RDP
  2881					;IF THIS IS A RECEIVE OPERATION,SP6 WILL BE EQUAL TO THIS VALUE
  2882	003224'					COMP	BR,SP6		;BR=SP6?
  2883	003226'					Z	NXRBUF		;SP6=ADDRESS OF D.RDP,RECEIVE OPERATION
  2884
  2885					;TRANSMIT OPERATION,DO SPECIAL THINGS FOR IT
  2886					;READ READ CHARACTER INTO D.OXC IF THE FIRST BUFFER ADDRESS IS ODD
  2887	003230'					BRWRTE	DECA,SP4,INCMAR	;SP4 HAS LOW BYTE OF BUFFER ADDRESS
  2888	003232'					BR0	30$		;ADDRESS IS EVEN
  2889					;FIRST TRANSMIT BUFFER ADDRESS IS ODD,MOVE FIRST CHARACTER INTO D.OXC
  2890	003234'				10$:
  2891	003234'					OUTPUT	BR,SELB,IBA1	;SET ADR 7:0 OF XMT BUFFER
  2892	003236'					BRWRTE	SELA,SP5	;SP5 HAS ADR 15:8
  2893	003240'					OUTPUT	BR,SELB,IBA2	;SET ADDRESS 15:8
  2894	003242'					BRWRTE	IMM,BIT3!BIT2	;MASK TO ISOLATE EXT ADDRESS
  2895	003244'					SP	BR,AANDB,SP0	;SP0=EXT ADDRESS
  2896	003246'					OUT	INCA,ONPR	;START NPR (SP0 HAS EXT ADDRESS)
  2897	003250'				20$:	BRWRTE	IBUS,NPR	;WAIT FOR NPR TO COMPLETE
  2898	003252'					BR0	20$
  2899	003254'				30$:
  2900					; MAR IS NOW POINTING TO D.OXC
  2901	003254'					MEMINC	IBUS,INDAT2		;SAVE ODD CHARACTER
  2902	003256'					MEMINC	IMM,SYNCNT		;RESET SYNC COUNT
  2903					;RAISE REQUEST TO SEND IF IT IS NOT ALREADY SET
  2904	003260'					BRWRTE	SELA,SP.CS0		;RTS SET?
  2905	003262'					BRSHFT
  2906	003264'					BR1	NXBEXT
  2907	003266'					MEM	IMM,0			;CLEAR ABORT FLAGS **V0.7**
  2908	003270'					BRWRTE	IMM,DUPRTS	;SET RTS
  2909	003272'					SPBR	BR,AORB,SP.CS0	;OR MASK WITH ORIGINAL DUP REGISTER
  2910	003274'					OUTPUT	BR,SELB,OUTDA1	;SHIP IT INTO DUP REGISTER
  2911	003276'					CALLSB	SP.SUB,ADRCSR	;ADDRESS DUP
  2912					;************ ULTIMATE RETURN FOR BA & CONTROL OUT*************
  2913					 
  2914	003304'				NXBEXT:	RTNSUB	SP.SB1,P2	;RETURN
  2915					 
  2916					;***************************************************************
  2917					 
  2918					;ASSIGNING RECEIVE BUFFER,SET FIRST CHR IN BUFFER
  2919	003306'				NXRBUF:
  2920	003306'					BRWRTE	IMM,DR.LST!DR.ABA!DR.CBA!DR.17!DR.16	;CLEAR IRRELEVANT BITS *V0.7*
  2921	003310'					SP	MEMX,SELB,SP0	;SP0=FLAGS
  2922	003312'					SP	BR,AANDB,SP0	;SAVE THE RELEVANT BITS *V0.7*
  2924	003314'					MEM	INCA,SP0	;SET FIRST CHR IN BUFFER FLAG
  2925	003316'					RTNSUB	SP.SB1,P2
  2926					;NOTE: RECEIVER WAS ENABLED AT CONTROL TIME
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 55
KDPMC.MAC    14-JUN-79 07:11		NXDSCP - GET NEXT DESCRIPTOR

  2928
  2929						.SBTTL	ERROR PROCESSING ROUTINES
  2930
  2931					;+
  2932					; **DUPRER-ERROR DETECTED BY DUP OR MICROCODE ON THE RECEIVER
  2933					;
  2934					; ENTERED FROM:	RCVDON
  2935					;
  2936					; INPUTS:
  2937					;	MAR = RECEIVE STATE POINTER
  2938					; OUTPUTS:
  2939					;	CONTROL OUT IS GENERATED.
  2940					;	FALL INTO RESYNC AND RETURN TO TIMER ROUTINE
  2941					;-
  2942
  2943					; DUP HARDWARE DETECTED RECEIVE ERROR
  2944					 
  2945	003320'				DUPRER:
  2946					 
  2947					; DUP HARDWARE HAS DETECTED AN ERROR ON RECEIVED CHARACTER. ANALYZE IT.
  2948					 
  2949	003320'					BR4	ERR12		;CRC ERROR
  2950	003322'					BRWRTE	TWOA,SP.RST	;SHIFT RECEIVE STATUS LEFT
  2951	003324'					BR7	OVRUN		;CHARACTER OVERRUN
  2952					;
  2953					; OTHERWISE MUST BE ABORT
  2954					;
  2955	003326'				ABORT:
  2956					 
  2957	003326'					BRWRTE	IMM,ER.ABO		;ERROR CODE
  2958	003330'					ALWAYS	RERROR			;SEND A CONTROL OUT
  2959
  2960					; 
  2961					; INVALID DDCMP HEADER BCC
  2962					; ENTERED FROM:	RHCRC2
  2963					; 
  2964	003332'				ERR10:
  2965					 
  2966	003332'					BRWRTE	IMM,ER.HBC	;ERROR CODE INTO BR
  2967	003334'					ALWAYS	RERROR		;EXECUTE COMMON ERROR SUBROUTINE
  2968					 
  2969					; 
  2970					; BCC ERROR ON RECEIVED MESSAGE
  2971					; ENTERED FROM:	DUPRER,RDCRC2 
  2972	003336'				ERR12:
  2973					 
  2974	003336'					BRWRTE	IMM,ER.CRC	;ERROR CODE INTO BR
  2975	003340'					ALWAYS	RERROR		;COMMON ERROR CODE
  2976					 
  2977					 
  2978					; CHARACTER OVERRUN
  2979					 
  2980	003342'				OVRUN:
  2981					 
  2982	003342'					BRWRTE	IMM,ER.OVR	;ERROR CODE
  2983									;FALL INTO RERROR
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 55-1
KDPMC.MAC    14-JUN-79 07:11		ERROR PROCESSING ROUTINES

  2984					;SEND CONTROL OUT
  2985					 
  2986	003344'				RERROR:
  2987					 
  2988	003344'					SP	BR,SELB,SP3	;ERROR CODE INTO SP3
  2989	003346'					CALLSR	SP.SB1,ENTRY2,RERRP2,C.CLOR ;CONTROL OUT SUB ROUTINE
  2990	003356'				ERREXT:				;RETURN HERE AFTER SUBROUTINE
  2991					;	FALL INTO RSNCRT
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 56
KDPMC.MAC    14-JUN-79 07:11		ERROR PROCESSING ROUTINES

  2993
  2994						.SBTTL	RSNCRT - RESYNC AND RETURN TO TIMER
  2995					;+
  2996					;
  2997					;	**RSNCRT-RESYNC RECEIVER AND RETURN TO TIMER POLLING LOOP
  2998					;
  2999					; ENTERED FROM:	DUPRER,RDH1,MSGIN
  3000					;
  3001					; INPUTS:	NONE
  3002					; OUTPUTS:
  3003					;	SET UP RETURN TO TIMER THEN FALL INTO RESYNC
  3004					;-
  3005
  3006	003356'				RSNCRT:
  3007	003356'					BRADDR	TIMRP2		;RETURN TO TIMER VIA PAGE 2
  3008	003360'					SP	BR,SELB,SP.SB1
  3009					;	ALWAYS	RESYNC		;AFTER RESYNCING THE RECEIVER
  3010					; FALL INTO RESYNC
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 57
KDPMC.MAC    14-JUN-79 07:11		RSNCRT - RESYNC AND RETURN TO TIMER

  3012
  3013						.SBTTL	RESYNC-RESYNC DUP-11 RECEIVER
  3014					 
  3015					;+
  3016					;	R E S Y N C  D U P-1 1  R E C E I V E R
  3017					;
  3018					; ENTERED FROM:	RSNCRT
  3019					; CALLED BY:	ERREXT,KILLRC,STORE
  3020					; 
  3021					;INPUTS:
  3022					;	SP.SB1=RETURN ADDRESS
  3023					;	SP.CS0=RECEIVE STATUS REGISTER LOW BYTE
  3024					;OUTPUTS:
  3025					;	CURRENT DUP-11 RECEIVER ENABLE BIT IN ITS RECEIVE STATUS REGISTER
  3026					;	IS CLEARED.IT IS THEN SET THUS INITIALIZING DUP RECEIVER LOGIC.
  3027					;	RECEIVER STATE POINTER IS RESET.
  3028					;	RETURN TO ADDRESSES IN PAGE TWO
  3029					;-
  3030					 
  3031	003362'				RESYNC:
  3032					 
  3033					;CLEAR RECEIVE ENABLE BIT
  3034	003362'					LDMAP	SELA,SP.RM1		;SET UP PAGE ADDRESS
  3035	003364'					BRWRTE	IMM,<377-DUPREN>
  3036	003366'					SPBR	BR,AANDB,SP.CS0	 	;LOAD ORIGINAL STATUS WITH RCV ENABLE
  3037	003370'					OUTPUT	BR,SELB,OUTDA1	;BIT CLEARED INTO OUTDA1
  3038	003372'					CALLSB	SP.SUB,ADRCSR	;SET UP OUT BA TO DUP'S CSR AND DO A
  3039									;BYTE NPR
  3040					 
  3041					;NOW SET RECEIVE ENABLE BIT
  3042					 
  3043	003400'					BRWRTE	IMM,DUPREN	;MASK TO SET REC ENABLE BIT
  3044	003402'					SPBR	BR,AORB,SP.CS0	;MASK IN THE ORIGINAL STATUS
  3045	003404'					OUTPUT	BR,SELB,OUTDA1	;AND RECEIVE ENABLE BIT INTO OUTDA1
  3046	003406'					BRWRTE	IMM,DATOB	;WRITE IT INTO 
  3047	003410'					OUT	BR,SELB,ONPR	;RECEIVE STATUS REGISTER
  3048					;	***NPR STARTED***
  3049					; RESET RECEIVE PARAMETERS
  3050	003412'					BRWRTE	MEMX,SELB,INCMAR	;BR=D.STS,ADDRESS D.RPTR
  3051					 
  3052					;RESET RECEIVE STATE POINTER FOR DDCMP/BITSTUFF
  3053					 
  3054	003414'					RSTATE	RDH1		;SET DDCMP INTIAL RECEIVE STATE
  3055	003416'					BRSHFT
  3056	003420'					BR4	20$		;BRANCH IF DEC MODE
  3057	003422'					RSTATE	RB1		;SET BIT STUFF INITIAL STATE
  3058	003424'				20$:	BRWRTE	IBUS,NPR	;WAIT FOR PREVIOUS NPR TO COMPLETE
  3059	003426'					BR0	20$		;NOT YET
  3060	003430'					RTNSUB	SP.SB1,P2	;RETURN TO PAGE 2
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 58
KDPMC.MAC    14-JUN-79 07:11		RESYNC-RESYNC DUP-11 RECEIVER

  3062
  3063						.SBTTL	SETRBA-SET OUTBA TO CURRENT INPUT ADDRESS IN USER RECEIVE BUFFER
  3064					 
  3065					;+
  3066					; 	SET OUTBA TO CURRENT INPUT ADDRESS IN RECEIVE BUFFER
  3067					;
  3068					; CALLED BY:	STORE,STRODD,EOFMSG
  3069					;
  3070					; INPUTS:
  3071					;	SP.SUB = RETURN ADDRESS ON PAGE 2
  3072					;	MAR = D.RBDA
  3073					; OUTPUTS:
  3074					;	OBA,OBR	= ADDRESS POINTED TO BY MAR
  3075					;	MAR	= D.RBDF
  3076					;-
  3077					 
  3078	003432'				SETRBA:
  3079					 
  3080	003432'					OUTPUT	MEMI,SELB,OBA1	;SET OUTBA 7:0
  3081	003434'					OUTPUT	MEMI,SELB,OBA2	;SET OUTBA 15:0
  3082	003436'					SP	IBUS,UBBR,SP0	;SP0=BUS REQUEST REGISTER
  3083	003440'					BRWRTE	IMM,101		;MASK TO CLEAR ALL BUT VEC XX4,NXM BITS
  3084	003442'					SP	BR,AANDB,SP0
  3085	003444'					BRWRTE	IMM,14		;MASK TO CLEAR UNWANTED BITS IN EXT. ADDRESS
  3086	003446'					SP	BR,SELB,SP1	;SAVE THE MASK IN SP1
  3087	003450'					BRWRTE	MEMX,AANDB,SP1	;BR=JUST THE EXT ADR
  3088	003452'					OUT	BR,AORB,OBR	;OR IN THE EXT ADDRESS
  3089	003454'					RTNSUB	SP.SUB,P2	;RETURN TO PAGE 2
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 59
KDPMC.MAC    14-JUN-79 07:11		SETRBA-SET OUTBA TO CURRENT INPUT ADDRESS IN USER RECEIVE BUFFER

  3091
  3092						.SBTTL	DECDCC-DECREMENT DDCMP DATA CHARACTER COUNT
  3093					 
  3094					;+ 
  3095					; 
  3096					;	D E C R E M E N T  D D C M P  D A T A  C H A R A C T E R  C O U N T
  3097					; 
  3098					; CALLED BY:	RDDATA
  3099					; 
  3100					;INPUT:
  3101					;	SP.SUB=RETURN ADDRESS
  3102					;OUTPUT:
  3103					; DDCMP DATA CHARACTER COUNT FOR THE CURRENT MESSAGE IS DECREMENTED BY ONE.
  3104					;	C BIT IS SET IF AND ONLY IF THE NEW BYTE COUNT IS NOT -1
  3105					;	COMMON CODE IN DECNT IS USED.
  3106					;- 
  3107					 
  3108	003456'				DECDCC:
  3109					 
  3110					;ADDRESS DDCMP DATA CHARACTER COUNT SAVE AREA IN RAM
  3111	003456'					BRWRTE	IMM,D.DCC1
  3112	003460'					ALWAYS	DECNT		;EXECUTE COMMON CODE
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 60
KDPMC.MAC    14-JUN-79 07:11		DECDCC-DECREMENT DDCMP DATA CHARACTER COUNT

  3114
  3115						.SBTTL	DRCNT/DECNT-DECREMENT BUFFER COUNT
  3116					 
  3117					;+ 
  3118					; 
  3119					;	D E C R E M E N T  B U F F E R  B Y T E  C O U N T
  3120					; 
  3121					; CALLED BY:	STORE
  3122					; DECNT CALLED BY:	XMTDON
  3123					; 
  3124					;INPUT:
  3125					;	SP.SUB=RETURN ADDRESS
  3126					;OUTPUT:
  3127					;	BYTE COUNT FOR THE CURRENT LINE IS DECREMENTED BY ONE
  3128					;	C BIT IS SET IF AND ONLY IF THE NEW BYTE COUNT IS NOT -1
  3129					;	MAR IS LEFT POINTING TO ADDRESS FOLLOWING BYTE COUNT
  3130					;
  3131					; SCRATCH PADS USED:	SP1,SP.RM0,SP.SUB
  3132					;-
  3133					 
  3134	003462'				DRCNT:
  3135					 
  3136					; ADDRESS RECEIVE BYTE COUNT SAVE AREA (D.RBDC)
  3137	003462'					BRWRTE	IMM,D.RBDC
  3138
  3139					;
  3140					; FOLLOWING CODE IS SHARED BY DECDCC AND DRCNT.
  3141					; INPUTS:	BRG = LINE TABLE OFFSET OF BYTE COUNT
  3142					;
  3143					 
  3144	003464'				DECNT:
  3145	003464'					LDMA	BR,ADD,SP.RM0
  3146	003466'					SP	MEMX,SELB,SP1	;GET LOW BYTE COUNT INTO SP1
  3147	003470'					MEMINC	DECA,SP1	;DECREMENT IT AND WRITE IT BACK
  3148	003472'					Z	10$		;BRANCH IF ZERO
  3149	003474'					INCMA			;INCREMENT PAST HIGH BYTE OF COUNT
  3150	003476'					RTNSUB	SP.SUB,P2	;RETURN TO CALLLER
  3151
  3152					; BORROW FROM HIGH BYTE, DECREMENT HIGH BYTE
  3153	003500'				10$:	SP	MEMX,SELB,SP1	;GET HIGH BYTE INTO SP1
  3154	003502'					MEMINC	DECA,SP1	;DECREMENT IT AND STORE IT BACK
  3155	003504'					RTNSUB	SP.SUB,P2	;RETURN
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 61
KDPMC.MAC    14-JUN-79 07:11		DRCNT/DECNT-DECREMENT BUFFER COUNT

  3157
  3158						.SBTTL	INCOUT/IC2OUT/INCOB-OUT NPR TO CURRENT ADDRESS+OFFSET
  3159					 
  3160					;+ 
  3161					;
  3162					;		INCREMENT OUTBA AND OUTPUT  SUBROUTINE
  3163					;
  3164					; CALLED BY: (INCOB):	BAIN
  3165					;            (IC2OUT):	CONIN,XMTBCZ,COUT
  3166					; 
  3167					; INPUTS:
  3168					;	BR	=INCREMENT
  3169					;	SP.SUB	=RETURN ADDRESS
  3170					;	ENTRY POINTS INCOUT,IC2OUT,INCOB
  3171					; 
  3172					; OUTPUTS:
  3173					;	THE DEVICE ADDRESS (OUT BA 17:0) FOR AN OUT NPR OPERATION
  3174					; IS INCREMENTED BY A FACTOR EQUAL TO THE CONTENTS OF BR.
  3175					; THEN A BYTE OR WORD TRANSFER WITH OR WITHOUT BUSHOLD IS PERFORMED DEPENDING
  3176					; ON THE ENTRY POINT.
  3177					; RETURNED TO THE ADDRESS IN CURRENT PAGE SPECIFIED BY SP.SUB
  3178					; BUSHOLD ENTRYS REMOVED BECAUSE OF INTERFERENCE PROBLEMS
  3179					; 
  3180					; REGISTERS USED:
  3181					;	BR,UBBR,SP0,SP1,SP.SUB
  3182					; 
  3183					; REGISTERS DESTROYED (OR CHANGED)
  3184					;	BR,UBBR,SP0,SP1
  3185					;- 
  3186					 
  3187					; ENTRY POINT TO DO BYTE NPR WITHOUT BUS HOLD
  3188	003506'				INCOB:
  3189	003506'					SP	IMM,221,SP1	;MASK TO DO BYTE OUT NPR ***TRICKY INSTR***
  3190	003510'					ALWAYS	INCOT1		;COMMON CODE
  3191
  3192
  3193					;ENTRY TO INCREMENT BY 2 AND DO WORD TRANSFER
  3194	003512'				IC2OUT:
  3195	003512'					BRWRTE	IMM,2
  3196
  3197					 
  3198					; ENTRY TO DO WORD TRANSFER WITHOUT BUS HOLD
  3199	003514'				INCOUT:
  3200	003514'					SP	IMM,21,SP1	;MASK TO DO WORD OUT NPR ****TRICKY INSTR***
  3201					 
  3202	003516'				INCOT1:
  3203					; INCREMENT OUTBA 7:0
  3204					 
  3205	003516'					SP	IBUS,IOBA1,SP0	;READ OUTBA7:0 INTO SP0
  3206	003520'					OUTPUT	BR,ADD,OBA1	;ADD INCREMNT AND RESTORE(SP0 IS SELECTED
  3207					 
  3208					; INCREMENT OUTBA 15:0
  3209					 
  3210	003522'				10$:	SP	IBUS,IOBA2,SP0	;READ OUTBA15:8 INTO SP0
  3211	003524'					OUTPUT	BR,APLUSC,OBA2	;ADD CARRY TO OUTBA15:8(SP0 SELECTED)
  3212	003526'					C	30$		;CARRY,INCREMENT EXTENDED ADDRESS
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 61-1
KDPMC.MAC    14-JUN-79 07:11		INCOUT/IC2OUT/INCOB-OUT NPR TO CURRENT ADDRESS+OFFSET

  3213	003530'				20$:	ALWAYS	40$		;NPR AND RETURN
  3214					 
  3215					; INCREMENT OUTBA 17:16
  3216	003532'				30$:	SP	IBUS,UBBR,SP0	;LOAD UBBR INTO DP0
  3217	003534'					BRWRTE	IMM,4		;ADD ONE TO EXT. ADDRESS
  3218	003536'					SP	BR,ADD,SP0
  3219	003540'					BRWRTE	IMM,115		;MASK TO SET CLOCK BIT=0
  3220	003542'					OUT	BR,AANDB,OBR	;STORE UPDATED VALUE INTO UBBR
  3221
  3222					;NOW DO THE NPR
  3223	003544'				40$:
  3224	003544'					SP	IBUS,NPR,SP0	;GET NPR REGISTER INTO SP0
  3225	003546'					BRWRTE	IMM,155		;STRIP NPR CONTROL BITS
  3226	003550'					BRWRTE	BR,AANDB,SP0	;SAVE RESULTS IN BR
  3227	003552'					BRWRTE	BR,AORB,SP1	;OR IN THE NEW NPR CONTROL BITS
  3228	003554'					OUT	BR,SELB,ONPR	;LOAD THE NEW BYTE INTO NPR REGISTER
  3229
  3230					; WAIT FOR NPR TO COMPLETE
  3231	003556'				WAIT:
  3232	003556'				10$:	BRWRTE	IBUS,NPR	;WAIT FOR NPR TO COMPLTE
  3233	003560'					BR0	10$
  3234	003562'					RTNSUB	SP.SUB,P0
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 62
KDPMC.MAC    14-JUN-79 07:11		INCOUT/IC2OUT/INCOB-OUT NPR TO CURRENT ADDRESS+OFFSET

  3236
  3237						.SBTTL	ADRCSR-SET OUTBA=DUP'S CSR ADDRESS
  3238					 
  3239					;+ 
  3240					; 
  3241					;		SET OUTBA TO DUP CSR
  3242					;
  3243					; CALLED BY:	NXDSCP, RESYNC
  3244					;
  3245					;INPUTS:
  3246					;	SP.SUB	=RETURN ADDRESS
  3247					;	OUTDA1 = VALUE TO BE WRITTEN TO DUP'S CSR0
  3248					;OUTPUTS:
  3249					;	OUTBA=ADDRESS OF CURRENT DUP
  3250					;	START A BYTE NPR TO CSR0 AND WAIT FOR ITS COMPLETION
  3251					;	MAR = D.STS
  3252					;-
  3253					 
  3254	003564'				ADRCSR:
  3255	003564'					BRWRTE	IMM,D.CSR	;ADDRESS D.CSR
  3256	003566'					LDMA	BR,ADD,SP.RM0
  3257	003570'					OUTPUT	MEMI,SELB,OBA1	;SET OUTBA 7:0
  3258	003572'					OUTPUT	MEMI,SELB,OBA2	;SET OUTBA 15:8
  3259	003574'					SP	IBUS,UBBR,SP0	;GET BUS REQ REG
  3260	003576'					BRWRTE	IMM,101		;KEEP VEC XX4,NXM BITS
  3261	003600'					SP	BR,AANDB,SP0
  3262	003602'					BRWRTE	IMM,14		;SET EXT ADDRESS BITS
  3263	003604'					OUT	BR,AORB,OBR	;SP0 IMPLIED FOR B SIDE
  3264	003606'					BRWRTE	IMM,DATOB	;BYTE OUT NPR MASK
  3265	003610'					OUT	BR,SELB,ONPR	;START THE NPR
  3266	003612'					ALWAYS	INCIN1		;RETURN VIA SP.SUB,P3
  3267									;USE CODE IN INCIN
  3268					 
  3269
  3270
  3271
  3272					;*** PAGE 3 RETURN TO TIMER FOR RECEIVE ROUTINES ***
  3274	003614'				TIMRP3:	ALWAYS	TIMRTN		;RETURN TO POLLING LOOP FROM DSRCHG
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 63
KDPMC.MAC    14-JUN-79 07:11		ADRCSR-SET OUTBA=DUP'S CSR ADDRESS

  3276
  3277						.SBTTL	NXTTBL - ROUTINE TO CALCULATE THE ADDRESS OF THE NEXT TABLE
  3278					;	FILE	SUBR.MAC
  3279					 
  3280					;+
  3281					; **-NXTTBL-CALCULATE RAM ADDRESS OF NEXT LINE'S TABLE**
  3282					;
  3283					; CALLED FROM:	INIT
  3284					;
  3285					; INPUTS:
  3286					;	SP.RM0-1 = PREVIOUS RAM TABLE ADDRESS
  3287					;
  3288					; OUTPUTS:
  3289					;	MAR AND SP.RM0-1 ARE SET TO ADDRESS OF NEXT TABLE ENTRY
  3290					;-
  3291	003616'				NXTTBL:
  3292	003616'					BRWRTE	IMM,D.LNG	;GET THE LENGTH OF A RAM TABLE ENTRY
  3293	003620'					SP	BR,ADD,SP.RM0,LDMAR	;POINT TO NEXT ENTRY AND LOAD MAR
  3294	003622'					NODST	BR,ADD,SP.RM0	;WOULD THIS LINE TABLE CROSS A PAGE BOUNDARY?
  3295	003624'					C	10$		;YES, MAKE IT START AT THE BEGINNING OF THE
  3296									;NEXT PAGE
  3297	003626'					LDMAP	SELA,SP.RM1		;LOAD MAR HIGH
  3298	003630'					ALWAYS	INIT1		;BACK TO INITIALIZE LOOP
  3299
  3300	003632'				10$:	SP	APLUSC,SP.RM1,LDMAPG	;INCREMENT THE PAGE NUMBER AND LOAD
  3301									;MAR HIGH
  3302	003634'					BRWRTE	IMM,0		;ZERO THE BRG
  3303	003636'					SP	BR,SELB,SP.RM0,LDMAR	;ZERO THE LOW 8 BITS OF THE MAR AND
  3304									;SP.RM0
  3305	003640'					ALWAYS	INIT1		;BACK TO INITIALIZE LOOP
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 64
KDPMC.MAC    14-JUN-79 07:11		NXTTBL - ROUTINE TO CALCULATE THE ADDRESS OF THE NEXT TABLE

  3307
  3308						.SBTTL	INCIN/INCINH/IC2IN - EIGHTEEN BIT ADD TO INPUT ADDRESS
  3309					;+
  3310					; **INCIN/INCINH-ROUTINE TO DO 18 BIT TO THE INPUT ADDRESS**
  3311					;
  3312					; CALLED BY: (IC2IN):	NXDSCP
  3313					;
  3314					; CALLING SEQUENCE:
  3315					;	CALLSB	SP.SUB,INCIN,ADDEND	;ADD "ADDEND" TO IN BA AND DO
  3316					;					;AN NPR WITH BUS HOLD CLEAR
  3317					;	CALLSB	SP.SUB,INCINH,ADDEND	;ADD "ADDEND TO IN BA AND DO
  3318					;					;AN NPR WITH BUS HOLD SET
  3319					;	CALLSB	SP.SUB,IC2IN		;ADD 2 TO IN BA AND DO AN NPR
  3320					;					;WITH BUS HOLD CLEAR
  3321					;					;N.B. CALLING SEQUENCE IS ONE INSTR LESS
  3322					;
  3323					; INPUTS:
  3324					;	INPUT BUFFER ADDRESS MUST BE SET UP IN THE I/O BUS INCLUDING
  3325					;	THE EXTENDED MEMORY BITS IN THE NPR CONTROL REGISTER
  3326					;
  3327					;	BRG = ADDEND
  3328					;
  3329					; OUTPUTS:
  3330					;	THE INPUT ADDRESS IS INCREMENTED BY THE BRG CONTENTS, THE NPR IS STARTED
  3331					;	AND THE ROUTINE WAITS FOR IT TO COMPLETE.
  3332					;	NOTE: BUS HOLD OPTIONS NOT USED TO PREVENT INTERFERENCE WITH OTHER
  3333					;	 UNIBUS DEVICES.
  3334					;-
  3335						.ENABL	LSB
  3336
  3337					;*******************************
  3338					;INCINH:	SP	IMM,0,SP1	;WRITE A ONE TO SP 1 ***** TRICKY INSTRUCTION **
  3339					;	SP	BR,INCA,SP1	;MAKE IT A TWO IN ORDER TO MASK ON BUS HOLD BIT
  3340					;	ALWAYS	5$		;TO COMMON CODE
  3341					;***** ABOVE CODE NOT USED******
  3342					 
  3343	003642'				IC2IN:	BRWRTE	IMM,2		;MOST COMMON INCREMENT VALUE
  3344									;FALL INTO INCIN
  3345	003644'				INCIN:
  3346					;**************
  3347					;	SP	IMM,1,SP1	;WRITE A ONE TO SCRATCH PAD ONE **** TRICKY INSTR.****
  3348					;				;LEAVES BIT 1 A ZERO TO MASK OFF BUS HOLD
  3349					;**************
  3350
  3351	003644'				5$:	SP	IBUS,IIBA1,SP0	;GET THE CURRENT LOW BYTE OF THE INPUT ADDRESS
  3352	003646'					OUTPUT	BR,ADD,IBA1	;NEW LOW BYTE OF INPUT ADDRESS
  3353	003650'					SP	IBUS,IIBA2,SP0	;GET THE HIGH BYTE OF THE INPUT ADDRESS
  3354	003652'					OUTPUT	APLUSC,IBA2	;ADD ANY CARRY FROM PREVIOUS ADD TO HIGH BYTE
  3355	003654'					SP	IBUS,NPR,SP0	;GET THE NPR REGISTER CONTENTS
  3356	003656'					C	50$		;A PLUS C CAUSED A CARRY TO EXTENDED MEMORY BITS
  3357	003660'				30$:	BRWRTE	IMM,16		;MASK TO EXT. MEM. BIT OVERFLOW
  3358	003662'					SP	BR,AANDB,SP0	;MASK OFF UNWANTED BITS
  3359	003664'					OUT	BR,INCA,ONPR	;START THE NPR
  3360
  3361					; THE FOLLOWING CODE SHARED WITH ADRCSR
  3362	003666'				INCIN1:
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 64-1
KDPMC.MAC    14-JUN-79 07:11		INCIN/INCINH/IC2IN - EIGHTEEN BIT ADD TO INPUT ADDRESS

  3363	003666'				40$:	BRWRTE	IBUS,NPR	;READ THE NPR CONTROL REGISTER
  3364	003670'					BR0	40$		;WAIT FOR THE NPR TO FINISH
  3365	003672'					RTNSUB	SP.SUB,P3	;RETURN TO CALLER
  3366					 
  3367	003674'				50$:	BRWRTE	IMM,4		;VALUE TO ADD TO INCREMENT EXTENDED MEMORY
  3368	003676'					SP	BR,ADD,SP0	;ADD TO PREVIOUS EXTENDED MEM BITS
  3369	003700'					ALWAYS	30$		;BRANCH TO COMMON CODE
  3370						.DSABL	LSB
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 65
KDPMC.MAC    14-JUN-79 07:11		INCIN/INCINH/IC2IN - EIGHTEEN BIT ADD TO INPUT ADDRESS

  3372
  3373						.SBTTL	INCMEM - EIGHTEEN BIT ADD TO ADDRESS POINT TO BY MAR
  3374					;+
  3375					; **INCMEM-18 BIT ADD TO RAM**
  3376					;
  3377					; CALLED BY: (INCMEM):	RCVEXT, NXBUF
  3378					;             (INCMM):	XMTDON
  3379					;
  3380					; CALLING SEQUENCE:
  3381					;	CALLSB	SP.SUB,INCMEM,ADDEND
  3382					;		OR
  3383					;	CALLSB	SP.SUB,INCMM	;TO INCREMENT MEMORY BY STATE OF "C" BIT
  3384					;
  3385					; INPUTS:
  3386					;	MAR = ADDRESS IN RAM OF LOW BYTE TO DO ADD
  3387					;	BRG = ADDEND
  3388					; INPUTS TO INCMM:
  3389					;	MAR = SAME AS ABOVE
  3390					;	"C" BIT SET OR CLEAR
  3391					; OUTPUTS:
  3392					;	RESULT IS IN RAM
  3393					;	MAR = ORIGINAL MAR + 2
  3394					;
  3395					;	USES SCRATCH PAD 0
  3396					;-
  3397
  3398	003702'				INCMEM:	SP	BR,SELB,SP0	;MOVE ADDEND TO SP 0
  3399	003704'					MEMINC	MEMX,ADD,SP0	;ADD TO LOW BYTE OF RAM
  3400	003706'				INCMM:
  3401	003706'					SP	MEMX,SELB,SP0	;MOVE HIGH BYTE FROM RAM TO SP0
  3402	003710'					MEMINC	BR,APLUSC,SP0	;ADD CARRY FROM LOW BYTE
  3403	003712'					C	10$		;LAST ADD CAUSE CARRY TO EXTENTED MEMORY BITS
  3404	003714'					RTNSUB	SP.SUB,P1	;ALL DONE
  3405	003716'				10$:	SP	MEMX,SELB,SP0	;READ EXTENDED MEMORY BITS
  3406									;IN POSITIONS 2 & 3
  3407	003720'					BRWRTE	IMM,4		;INCREMENT EXTENDED MEMORY BITS
  3408	003722'					MEM	BR,ADD,SP0	;ADD "ONE" OF HIGH ORDER BITS
  3409	003724'					RTNSUB	SP.SUB,P1	;RETURN TO CALLER
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 66
KDPMC.MAC    14-JUN-79 07:11		INCMEM - EIGHTEEN BIT ADD TO ADDRESS POINT TO BY MAR

  3411
  3412						.SBTTL	NXMERR - NONEXISTENT MEMORY ERROR
  3413					;+
  3414					; **NXMERR-MICROPROCESSOR HAS DETECTED A NONEXISTENT MEMORY ERROR**
  3415					;
  3416					; CALLED BY:	RDICLR, TIMER
  3417					;
  3418					; OUTPUTS:
  3419					;	CONTROL OUT IS GENERATED
  3420					;	N.B. THE NXM ERROR IS CHECKED ONLY AFTER SERVICING A USER
  3421					;	REQUEST  (RQI) AND AFTER SERVICING A DUP NOT AFTER EACH
  3422					;	NPR. THUS THE ONLY RELEVANT INFORMATION IS THE LINE NUMBER.
  3423					;-
  3424
  3425	003726'				NXMERR:
  3426	003726'					BRWRTE	IMM,100		;MASK TO PRESERVE STATE OF XX4 BIT
  3427	003730'					OUT	BR,AANDB,OBR	;CLEAR NXM ERROR BIT
  3428	003732'					CALLSB	SP.SUB,COUTX,ER.NXM	;POST THE ERROR
  3429	003742'					ALWAYS	IDLE		;BACK TO IDLE LOOP
  3430
  3431
  3432
  3433
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 67
KDPMC.MAC    14-JUN-79 07:11		NXMERR - NONEXISTENT MEMORY ERROR

  3435
  3436						.SBTTL	PATCH - PATCH AREA
  3437					;+
  3438					; **PATCHA - PATCH MSGIN
  3439					; ENTERED FROM:	MSGIN
  3440					; INPUTS:
  3441					;	BRG	= SP.STS SHIFTED LEFT ONE
  3442					; OUTPUTS:
  3443					;	GOTO RSNCRT IF Q-SYNC SET (LS.QSC)
  3444					;	GOTO TIMRTN IF NOT
  3445					;-
  3446
  3447	003744'				PATCHA:	BR7	RSNCRT		;RESYNC RECEIVER AND RETURN TO TIMER
  3448	003746'					ALWAYS	TIMRTN		;RETURN TO TIMER
  3449
  3450		000040				$KDPML==.-$KDPMC+63./64.		;NUMBER OF 32 WORD BLOCKS
  3451		000001				.END
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 68
KDPMC.MAC    14-JUN-79 07:11		CROSS REFERENCE TABLE -- USER SYMBOLS

AANDB = 000260        	  557	  715	  808	  931	 1004	 1025	 1027	 1072	 1360	 1456	 1460	 1464	 1956
			 2015	 2078	 2242	 2442	 2445	 2794	 2805	 2875	 2895	 2922	 3036	 3084	 3087
			 3220	 3226	 3261	 3358	 3427
ABORT   003326R       	 2955#
ADD   = 000000        	  267	  286	  412	  497	  583	  639	  847	  899	  917	  953	  986	 1008	 1012
			 1086	 1157	 1356	 1418	 1454	 1462	 1578	 1716	 1829	 1885	 1906	 1970	 2017
			 2050	 2104	 2171	 2309	 2339	 2398	 2450	 2454	 2586	 2695	 2749	 2809	 2880
			 3145	 3206	 3218	 3256	 3293	 3294	 3352	 3368	 3399	 3408
ADRCSR  003564R       	 2911	 3038	 3254#
ALCOND= 000400        	  269	  289	  322	  364	  418	  426	  431	  449	  455	  459	  482	  520	  532
			  564	  632	  651	  679	  683	  687	  727	  764	  795	  809	  819	  852	  895
			  942	  954	  984	  994	 1020	 1029	 1043	 1053	 1093	 1103	 1104	 1110	 1130
			 1170	 1201	 1225	 1286	 1308	 1379	 1387	 1423	 1469	 1499	 1528	 1564	 1581
			 1608	 1640	 1651	 1675	 1681	 1693	 1718	 1742	 1762	 1786	 1821	 1851	 1890
			 1895	 1902	 1911	 1919	 1922	 1925	 1957	 1971	 2008	 2027	 2082	 2092	 2106
			 2117	 2145	 2180	 2188	 2202	 2205	 2218	 2250	 2261	 2278	 2313	 2346	 2353
			 2467	 2504	 2531	 2641	 2696	 2700	 2706	 2714	 2757	 2796	 2856	 2866	 2911
			 2914	 2925	 2958	 2967	 2975	 2989	 3038	 3060	 3089	 3112	 3150	 3155	 3190
			 3213	 3234	 3266	 3274	 3298	 3305	 3365	 3369	 3404	 3409	 3428	 3429	 3448
AORB  = 000300        	  719	  827	  950	 1006	 1386	 1465	 1580	 1888	 2079	 2446	 2649	 2713	 2847
			 2876	 2909	 3044	 3088	 3227	 3263
APLUSC= 000500        	 3211	 3300	 3354	 3402
AXORB = 000320        	  615	 1783
BAALT   001066R       	  920	  947#
BAIN    000750R       	  520	  879#
BAIN0   001012R       	  913#	 1910
BAIN1   000774R       	  895	  898#
BAIN2   001030R       	  926#	  954
BAORC   002630R       	 2218	 2490#
BAORE   002530R       	 2346	 2382#
BAOX    002662R       	 2008	 2549#
BARCV   000772R       	  891	  897#
BASEIN  000530R       	  521	  710#
BASEI1  000550R       	  722#
BIT0  = 000001        	   32#	   59	   90	  113	  120	  162	  169	  190	  195
BIT1  = 000002        	   33#	   58	  112	  121	  157	  163	  170	  179	  196
BIT2  = 000004        	   34#	   57	   89	  111	  158	  171	  197	  885	 2894
BIT3  = 000010        	   35#	   56	   88	  110	  185	  885	 2894
BIT4  = 000020        	   36#	   55	  109	  120	  159	  172	  180	  186
BIT5  = 000040        	   37#	   54	   87
BIT6  = 000100        	   38#	   53	   86	  173
BIT7  = 000200        	   39#	   51	   52	   85	  160	  174	  181	  187
BOUT    002546R       	 2432#
BOUTR0  000522R       	  679#	 2462
BR    = 060000        	  260	  261	  262	  263	  264	  267	  275	  278	  279	  286	  362	  409	  412
			  430	  494	  496	  497	  505	  528	  557	  561	  562	  563	  575	  577	  581
			  582	  583	  586	  593	  601	  609	  615	  630	  639	  645	  650	  715	  719
			  726	  727	  772	  781	  808	  809	  826	  830	  842	  847	  852	  886	  899
			  900	  917	  924	  931	  936	  939	  942	  950	  953	  986	  989	 1004	 1006
			 1008	 1012	 1025	 1027	 1028	 1053	 1069	 1072	 1075	 1086	 1090	 1104	 1107
			 1129	 1157	 1163	 1200	 1224	 1253	 1308	 1356	 1360	 1366	 1370	 1374	 1386
			 1418	 1454	 1456	 1460	 1462	 1464	 1465	 1578	 1580	 1675	 1716	 1786	 1821
			 1829	 1885	 1888	 1895	 1899	 1901	 1902	 1906	 1953	 1956	 1961	 1963	 1970
			 2005	 2008	 2015	 2017	 2019	 2050	 2078	 2079	 2091	 2092	 2104	 2116	 2117
			 2144	 2171	 2179	 2180	 2188	 2205	 2206	 2208	 2212	 2215	 2242	 2261	 2265
			 2267	 2291	 2309	 2313	 2339	 2353	 2356	 2359	 2387	 2395	 2398	 2399	 2442
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 68-1
KDPMC.MAC    14-JUN-79 07:11		CROSS REFERENCE TABLE -- USER SYMBOLS

			 2445	 2446	 2450	 2454	 2457	 2463	 2495	 2500	 2523	 2525	 2526	 2530	 2554
			 2579	 2586	 2587	 2616	 2643	 2649	 2683	 2692	 2695	 2749	 2757	 2794	 2805
			 2809	 2846	 2856	 2866	 2875	 2876	 2880	 2882	 2891	 2893	 2895	 2909	 2910
			 2911	 2922	 2988	 2989	 3008	 3036	 3037	 3038	 3044	 3045	 3047	 3084	 3086
			 3088	 3145	 3206	 3211	 3218	 3220	 3226	 3227	 3228	 3256	 3261	 3263	 3265
			 3293	 3294	 3303	 3352	 3358	 3359	 3368	 3398	 3402	 3408	 3427	 3428
BR0CON= 002000        	  453	  485	  519	  521	  530	  574	  612	  647	  761	  783	  902	  991	 1019
			 1052	 1061	 1077	 1092	 1646	 1761	 2026	 2196	 2217	 2225	 2272	 2341	 2361
			 2639	 2853	 2888	 2898	 3059	 3233	 3364
BR1CON= 002400        	  518	  616	  624	  792	  891	 1038	 1248	 1560	 1879	 2006	 2047	 2906
BR4CON= 003000        	  319	  424	  481	  488	  802	  815	  908	  920	  983	 1010	 1015	 1036	 1119
			 1126	 1639	 1689	 1741	 1817	 1910	 1951	 2020	 2053	 2174	 2466	 2949	 3056
BR7CON= 003400        	  268	  354	  360	  448	  619	  631	  777	  787	  837	  940	  993	 1048	 1121
			 1164	 1281	 2004	 2752	 2789	 2951	 3447
CCOND = 001000        	  595	 1101	 1677	 1967	 1999	 2191	 3212	 3295	 3356	 3403
CHKODD  002410R       	 2191	 2221#
CONIN   000564R       	  519	  759#
CONIN2  000630R       	  785#
CONIN3  000674R       	  812#
COUT    002546R       	 1902	 2433#
COUTX   002644R       	 1786	 2180	 2522#	 3428
COUX    002670R       	 2117	 2578#
C.BAOR= 000204        	  221#	 2391	 2499
C.BAOX= 000200        	  220#	 2558
C.CLOR= 000205        	  223#	 1896	 2989
C.CLOX= 000201        	  222#	 1889	 2117	 2529
DATI  = 000001        	  607	  643	  885	  987
DATO  = 000021        	  202#	  780	 1087	 2277
DATOB = 000221        	  203#	 2081	 2209	 2289	 2358	 3046	 3264
DECA  = 000560        	  593	  763	 1123	 1966	 2142	 2206	 2354	 2887	 3147	 3154
DECDCC  003456R       	 1675	 3108#
DECNT   003464R       	 1053	 3112	 3144#
DECP2   002076R       	 1675	 1925#
DISP  = 000355        	  809#	 1104#	 1895#	 1902#	 2008#	 2188#	 2205#	 2261#	 2353#	 2856#	 2866#	 2911#	 3038#
			 3428#
DLE   = 000220        	  211#	 1373
DRCNT   003462R       	 2188	 3134#
DR.ABA= 000100        	   86#	  107	  949	 2804	 2874	 2920
DR.CBA= 000040        	   87#	  108	  922	 2793	 2874	 2920
DR.FST= 000001        	   90#	 2240	 2923
DR.LST= 000200        	   85#	  106	 2920
DR.16 = 000004        	   89#	 2920
DR.17 = 000010        	   88#	 2920
DSRCHG  001720R       	  616	 1780#
DS.CRI= 000200        	   51#	  791
DS.DEC= 000040        	   54#	  801	  803
DS.DSR= 000002        	   58#	 1781	 1782
DS.HDX= 000010        	   56#	  824	 2077
DS.IGN= 000020        	   55#	 1359	 1579
DS.NUM= 000001        	   59#	 1359	 1385
DS.QSC= 000100        	   53#	 1359
DS.SEC= 000004        	   57#	  801
DS.SLT= 000200        	   52#	 1359
DT.ABT= 000021        	  120#	 1887	 2105
DT.AB1= 000002        	  121#	 1887	 2105
DUPCPE= 000020        	  172#
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 68-2
KDPMC.MAC    14-JUN-79 07:11		CROSS REFERENCE TABLE -- USER SYMBOLS

DUPCRI= 000002        	  179#	  794
DUPDEC= 000200        	  181#	  804
DUPDR = 000001        	  190#	  725
DUPDSR= 000002        	  163#
DUPDTR= 000002        	  157#	  768
DUPHDX= 000010        	  185#	  824	  825
DUPOVR= 000100        	  173#
DUPRAB= 000004        	  171#
DUPRDN= 000200        	  160#
DUPRE = 000200        	  174#
DUPREM= 000002        	  170#
DUPREN= 000020        	  159#	  768	 3035	 3043
DUPRER  003320R       	 1164	 2945#
DUPRSM= 000001        	  169#
DUPRTS= 000004        	  158#	 1026	 2908
DUPSAM= 000020        	  180#	  794
DUPSND= 000020        	  186#	 1042
DUPSSY= 000001        	  162#	  775
DUPTAB= 000004        	  197#	 2143
DUPTEM= 000002        	  196#	 1954	 2090
DUPTSM= 000001        	  195#	 1128	 1954	 1962
DUPTXD= 000200        	  187#
DX.ABA= 000100        	  107#
DX.CBA= 000040        	  108#
DX.EOM= 000002        	  112#	 1907
DX.LST= 000200        	  106#	 1907
DX.SOM= 000001        	  113#	 1122
DX.SYN= 000020        	  109#	 1955
DX.16 = 000004        	  111#
DX.17 = 000010        	  110#
D.ARLP= 000014        	   74#	   76	  952	 2808
D.AXLP= 000035        	   96#	   98
D.CSR = 000002        	   48#	   50	 3255
D.DCC1= 000007        	   65#	   67	   70	 1417	 3111
D.DCC2= 000010        	   67#	   72	 1453
D.DUMM= 000042        	  100#	  102
D.ERC = 000031        	   92#	   94
D.LNG = 000060        	  123#	 3292
D.ORBA= 000021        	   78#	   80
D.ORBC= 000017        	   76#	   78	 1828	 2449
D.OXBC= 000040        	   98#	  100
D.OXC = 000052        	  115#	  117
D.RBD = 000024        	   80#	   81	   92
D.RBDA= 000026        	   83#	   84	 2308	 2338
D.RBDC= 000024        	   81#	   83	 2453	 3137
D.RBDF= 000030        	   84#	  916	 1905	 2170	 2748
D.RDP = 000011        	   72#	   74	  897	  916	  952	 1905	 2397	 2449	 2453	 2503	 2748	 2808	 2879
D.RPTR= 000005        	   61#	   63	 1715
D.RSTR= 000000        	   44#	   46
D.SADR= 000006        	   63#	   65
D.SILO= 000007        	   70#
D.STS = 000004        	   50#	   61	 1156	 1355	 1461	 1577
D.SYNC= 000053        	  117#	  119
D.TIME= 000001        	   46#	   48
D.XBD = 000045        	  102#	  103	  115
D.XBDA= 000047        	  104#	  105
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 68-3
KDPMC.MAC    14-JUN-79 07:11		CROSS REFERENCE TABLE -- USER SYMBOLS

D.XBDC= 000045        	  103#	  104	 1053
D.XBDF= 000051        	  105#	 1011	 1969	 2016	 2049
D.XDP = 000032        	   94#	   96	  894	 2582
D.XSTS= 000054        	  119#	  846	 1007	 1884	 2103
ENQ   = 000005        	  210#	 1369
ENTRY1  002674R       	 2504	 2585#
ENTRY2  002536R       	 2394#	 2989
EOFBUF  002350R       	 2194#
EOFMSG  002472R       	 1308	 1821	 2334#
EOM   = 000020        	  225#	 2386
ERREXT  003356R       	 1922	 2990#
ERR10   003332R       	 1640	 2964#
ERR12   003336R       	 1742	 2949	 2972#
ER.ABO= 000006        	  229#	 2957
ER.CRC= 000012        	  231#	 2974
ER.DSR= 000016        	  233#	 1786
ER.HBC= 000010        	  230#	 2966
ER.KIL= 000026        	  237#	 1900
ER.NBA= 000014        	  232#	 2180
ER.NXM= 000020        	  234#	 3428
ER.OVR= 000024        	  236#	 2982
ER.UNR= 000022        	  235#	 2115
HLDBUS= 000002        	  204#
IBA1  = 002004        	  602	  639	  883	  986	 1069	 2843	 2891	 3352
IBA2  = 002005        	  605	  884	 1070	 2844	 2893	 3354
IBUS  = 020000        	  266	  317	  353	  359	  423	  447	  480	  484	  487	  495	  515	  529	  573
			  611	  613	  617	  618	  646	  648	  649	  713	  717	  760	  766	  767	  773
			  782	  786	  790	  813	  836	  845	  883	  884	  889	  901	  903	  907	  927
			  928	  929	  990	  992	 1000	 1001	 1002	 1023	 1035	 1037	 1076	 1078	 1080
			 1084	 1091	 1120	 1760	 1877	 1908	 2003	 2014	 2216	 2360	 2440	 2852	 2854
			 2855	 2857	 2858	 2860	 2861	 2867	 2868	 2897	 2901	 3058	 3082	 3205	 3210
			 3216	 3224	 3232	 3259	 3351	 3353	 3355	 3363
IC2IN   003642R       	 2856	 2866	 3343#
IC2OUT  003512R       	  809	  852	 2092	 2466	 3194#
IDLE    000070R       	  317#	  360	  364	  384	  426	  431	  455	  488	  532	 3429
IDLE1   000074R       	  320#	  578
IIBA1 = 020100        	  617	 1000	 3351
IIBA2 = 020120        	 1001	 3353
IMM   = 000000        	  265	  274	  282	  283	  292	  293	  295	  296	  320	  321	  361	  382	  404
			  407	  408	  411	  419	  421	  429	  451	  458	  493	  504	  527	  553	  560
			  576	  579	  607	  637	  643	  714	  718	  725	  727	  762	  768	  775	  778
			  780	  791	  793	  794	  798	  801	  803	  804	  809	  818	  825	  841	  846
			  848	  885	  894	  897	  916	  922	  930	  949	  952	  985	  987	 1003	 1005
			 1007	 1011	 1024	 1026	 1042	 1053	 1071	 1074	 1085	 1087	 1102	 1104	 1106
			 1128	 1156	 1355	 1359	 1365	 1369	 1373	 1385	 1417	 1453	 1455	 1461	 1463
			 1577	 1579	 1715	 1782	 1786	 1828	 1884	 1887	 1889	 1895	 1896	 1900	 1902
			 1905	 1907	 1952	 1954	 1955	 1960	 1962	 1969	 2008	 2013	 2016	 2048	 2049
			 2055	 2077	 2081	 2090	 2103	 2105	 2115	 2117	 2143	 2170	 2180	 2188	 2205
			 2209	 2240	 2261	 2277	 2289	 2308	 2313	 2338	 2353	 2358	 2386	 2391	 2397
			 2441	 2444	 2449	 2453	 2494	 2499	 2503	 2524	 2529	 2553	 2558	 2582	 2628
			 2629	 2640	 2642	 2679	 2690	 2691	 2694	 2699	 2712	 2748	 2757	 2793	 2804
			 2808	 2845	 2856	 2866	 2874	 2879	 2894	 2902	 2907	 2908	 2911	 2920	 2957
			 2966	 2974	 2982	 2989	 3035	 3038	 3043	 3046	 3083	 3085	 3111	 3137	 3189
			 3195	 3200	 3217	 3219	 3225	 3255	 3260	 3262	 3264	 3292	 3302	 3343	 3357
			 3367	 3407	 3426	 3428
INCA  = 000460        	  281	  575	 1060	 1073	 2896	 2924	 3359
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 68-4
KDPMC.MAC    14-JUN-79 07:11		CROSS REFERENCE TABLE -- USER SYMBOLS

INCIN   003644R       	 3345#
INCIN1  003666R       	 3266	 3362#
INCMAR= 014000        	  265	  277	  287	  294	  295	  504	  505	  601	  713	  714	  762	  763	  766
			  767	  772	  773	  830	  842	  845	  927	  928	 1060	 1078	 1102	 1107	 1200
			 1224	 1253	 1279	 1283	 1558	 1840	 1841	 1842	 1843	 1844	 1961	 1963	 2209
			 2237	 2240	 2242	 2265	 2354	 2457	 2463	 2634	 2635	 2636	 2645	 2649	 2650
			 2814	 2815	 2854	 2855	 2857	 2860	 2861	 2862	 2863	 2868	 2869	 2870	 2871
			 2872	 2887	 2901	 2902	 3050	 3147	 3149	 3154	 3399	 3402
INCMEM  003702R       	 2313	 2757	 3398#
INCMM   003706R       	 1104	 3400#
INCOB   003506R       	  727	 3188#
INCON = 120000        	  423	  447	  484
INCOT1  003516R       	 3190	 3202#
INCOUT  003514R       	 3199#
INDAT1= 020000        	  618	  648	  903	  992	 1035	 1078	 2854	 2857	 2860
INDAT2= 020020        	  613	  649	 1037	 1080	 1120	 2003	 2855	 2858	 2861	 2867	 2868	 2901
INIT    000000R       	  260#
INIT1   000030R       	  276#	 3298	 3305
IOBA1 = 020140        	  883	 1023	 1084	 2014	 3205
IOBA2 = 020160        	  884	 3210
JUMP  = 100000        	  268	  269	  280	  289	  319	  322	  354	  360	  364	  384	  410	  417	  418
			  424	  426	  431	  448	  449	  453	  455	  459	  481	  482	  485	  488	  518
			  519	  520	  521	  530	  532	  564	  574	  578	  592	  595	  612	  616	  619
			  624	  631	  632	  647	  651	  679	  683	  687	  727	  761	  764	  777	  783
			  787	  792	  795	  802	  809	  815	  819	  837	  852	  891	  895	  902	  908
			  920	  940	  942	  954	  983	  984	  991	  993	  994	 1010	 1015	 1019	 1020
			 1029	 1036	 1038	 1043	 1048	 1052	 1053	 1061	 1077	 1092	 1093	 1101	 1103
			 1104	 1110	 1119	 1121	 1126	 1130	 1164	 1170	 1201	 1225	 1248	 1281	 1286
			 1308	 1367	 1371	 1375	 1379	 1387	 1423	 1469	 1499	 1528	 1560	 1564	 1572
			 1581	 1608	 1639	 1640	 1646	 1651	 1675	 1677	 1681	 1689	 1693	 1718	 1741
			 1742	 1761	 1762	 1786	 1817	 1821	 1851	 1879	 1890	 1895	 1902	 1910	 1911
			 1919	 1922	 1925	 1951	 1957	 1967	 1971	 1999	 2004	 2006	 2008	 2020	 2026
			 2027	 2047	 2053	 2082	 2092	 2106	 2117	 2145	 2174	 2180	 2188	 2191	 2196
			 2202	 2205	 2217	 2218	 2225	 2250	 2261	 2272	 2278	 2313	 2341	 2346	 2353
			 2361	 2466	 2467	 2504	 2531	 2639	 2641	 2682	 2684	 2693	 2696	 2700	 2706
			 2714	 2752	 2757	 2789	 2796	 2853	 2856	 2866	 2883	 2888	 2898	 2906	 2911
			 2914	 2925	 2949	 2951	 2958	 2967	 2975	 2989	 3038	 3056	 3059	 3060	 3089
			 3112	 3148	 3150	 3155	 3190	 3212	 3213	 3233	 3234	 3266	 3274	 3295	 3298
			 3305	 3356	 3364	 3365	 3369	 3403	 3404	 3409	 3428	 3429	 3447	 3448
KILCOM  002040R       	 1890	 1898#
KILLAL  002004R       	  908	 1873#
KILLC1  002054R       	 1904#
KILLRC  002030R       	 1879	 1894#
KILLXM  002012R       	 1883#
LDMAPG= 004000        	  283	  292	  321	  500	  563	  579	  585	 1158	 2629	 2750	 3034	 3297	 3300
LDMAR = 010000        	  286	  293	  320	  382	  383	  404	  421	  497	  502	  508	  562	  583	  586
			  847	  917	  924	  953	 1008	 1012	 1157	 1356	 1418	 1454	 1462	 1578	 1716
			 1829	 1885	 1906	 1970	 2017	 2050	 2104	 2171	 2309	 2339	 2437	 2450	 2454
			 2620	 2628	 2630	 2679	 2690	 2711	 2749	 2756	 2809	 2813	 2842	 3145	 3256
			 3293	 3303
LINENM= 120060        	  495
LSILO   001440R       	 1201	 1225	 1277#
MAXDEV= 000020        	  136	  240#	  274	  576
MEMI  = 054000        	  388	  392	  393	  397	  398	  400	  405	  498	  506	  507	  584	  588	  602
			  605	  716	 1070	 1159	 1832	 1833	 1834	 1835	 1836	 2438	 2439	 2451	 2455
			 2456	 2621	 2622	 2680	 2810	 2811	 2812	 2843	 2844	 2847	 3080	 3081	 3257
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 68-5
KDPMC.MAC    14-JUN-79 07:11		CROSS REFERENCE TABLE -- USER SYMBOLS

			 3258
MEMX  = 040000        	  322	  383	  406	  416	  500	  585	  591	  610	  720	  779	  800	  827	  918
			  951	 1009	 1013	 1051	 1058	 1109	 1170	 1282	 1284	 1361	 1571	 1783	 1886
			 1965	 2018	 2051	 2172	 2195	 2211	 2223	 2268	 2271	 2340	 2357	 2443	 2452
			 2464	 2623	 2630	 2681	 2713	 2751	 2873	 2921	 3050	 3087	 3146	 3153	 3399
			 3401	 3405
MOVE  = 000000        	  260	  261	  262	  263	  264	  265	  266	  267	  274	  275	  277	  278	  281
			  282	  283	  286	  287	  288	  292	  293	  294	  295	  296	  317	  320	  321
			  353	  359	  361	  362	  363	  381	  382	  383	  388	  392	  393	  397	  398
			  400	  404	  405	  406	  407	  408	  411	  412	  419	  421	  423	  425	  428
			  429	  430	  447	  451	  452	  454	  457	  458	  480	  484	  487	  489	  493
			  494	  495	  496	  497	  498	  500	  502	  504	  505	  506	  507	  508	  515
			  527	  528	  529	  553	  557	  560	  561	  562	  563	  573	  575	  576	  579
			  581	  582	  583	  584	  585	  586	  588	  591	  593	  601	  602	  605	  607
			  609	  610	  611	  613	  615	  617	  618	  623	  630	  637	  639	  643	  645
			  646	  648	  649	  650	  713	  714	  715	  716	  717	  718	  719	  720	  725
			  726	  727	  760	  762	  763	  766	  767	  768	  772	  773	  775	  778	  779
			  780	  781	  782	  786	  790	  791	  793	  794	  798	  800	  801	  803	  804
			  808	  809	  813	  814	  818	  825	  826	  827	  830	  835	  836	  838	  841
			  842	  845	  846	  847	  848	  852	  883	  884	  885	  886	  889	  890	  894
			  897	  899	  900	  901	  903	  907	  916	  917	  918	  919	  922	  924	  927
			  928	  929	  930	  931	  932	  933	  934	  935	  936	  939	  942	  949	  950
			  951	  952	  953	  981	  982	  985	  986	  987	  989	  990	  992	 1000	 1001
			 1002	 1003	 1004	 1005	 1006	 1007	 1008	 1009	 1011	 1012	 1013	 1014	 1023
			 1024	 1025	 1026	 1027	 1028	 1035	 1037	 1042	 1051	 1053	 1058	 1060	 1069
			 1070	 1071	 1072	 1073	 1074	 1075	 1076	 1078	 1080	 1084	 1085	 1086	 1087
			 1090	 1091	 1102	 1104	 1106	 1107	 1109	 1120	 1123	 1124	 1125	 1128	 1129
			 1156	 1157	 1158	 1159	 1163	 1197	 1199	 1200	 1222	 1223	 1224	 1252	 1253
			 1279	 1282	 1283	 1284	 1285	 1307	 1308	 1351	 1355	 1356	 1359	 1360	 1361
			 1365	 1369	 1373	 1385	 1386	 1413	 1417	 1418	 1419	 1449	 1453	 1454	 1455
			 1456	 1460	 1461	 1462	 1463	 1464	 1465	 1495	 1524	 1554	 1558	 1559	 1577
			 1578	 1579	 1580	 1604	 1635	 1645	 1675	 1688	 1715	 1716	 1717	 1760	 1782
			 1783	 1786	 1813	 1816	 1821	 1828	 1829	 1832	 1833	 1834	 1835	 1836	 1840
			 1841	 1842	 1843	 1844	 1850	 1877	 1878	 1884	 1885	 1886	 1887	 1888	 1889
			 1895	 1896	 1899	 1900	 1901	 1902	 1905	 1906	 1907	 1908	 1909	 1949	 1950
			 1952	 1953	 1954	 1955	 1956	 1960	 1961	 1962	 1963	 1965	 1966	 1969	 1970
			 2003	 2005	 2008	 2013	 2014	 2015	 2016	 2017	 2018	 2019	 2048	 2049	 2050
			 2051	 2052	 2055	 2077	 2078	 2079	 2081	 2090	 2091	 2092	 2103	 2104	 2105
			 2115	 2116	 2117	 2142	 2143	 2144	 2170	 2171	 2172	 2173	 2178	 2179	 2180
			 2188	 2195	 2205	 2206	 2208	 2209	 2211	 2212	 2214	 2215	 2216	 2223	 2240
			 2242	 2247	 2261	 2265	 2267	 2268	 2271	 2277	 2289	 2291	 2308	 2309	 2313
			 2338	 2339	 2340	 2353	 2354	 2356	 2357	 2358	 2359	 2360	 2386	 2387	 2391
			 2395	 2397	 2398	 2399	 2437	 2438	 2439	 2440	 2441	 2442	 2443	 2444	 2445
			 2446	 2449	 2450	 2451	 2452	 2453	 2454	 2455	 2456	 2457	 2462	 2463	 2464
			 2465	 2494	 2495	 2499	 2500	 2503	 2523	 2524	 2525	 2526	 2529	 2530	 2553
			 2554	 2558	 2579	 2582	 2586	 2587	 2615	 2616	 2620	 2621	 2622	 2623	 2628
			 2629	 2630	 2634	 2635	 2636	 2637	 2638	 2640	 2642	 2643	 2645	 2646	 2647
			 2648	 2649	 2650	 2679	 2680	 2681	 2690	 2691	 2694	 2695	 2699	 2705	 2711
			 2712	 2713	 2748	 2749	 2750	 2751	 2756	 2757	 2788	 2793	 2794	 2804	 2805
			 2808	 2809	 2810	 2811	 2812	 2813	 2814	 2815	 2816	 2842	 2843	 2844	 2845
			 2846	 2847	 2852	 2854	 2855	 2856	 2857	 2858	 2860	 2861	 2862	 2863	 2866
			 2867	 2868	 2869	 2870	 2871	 2872	 2873	 2874	 2875	 2876	 2879	 2880	 2887
			 2891	 2892	 2893	 2894	 2895	 2896	 2897	 2901	 2902	 2904	 2905	 2907	 2908
			 2909	 2910	 2911	 2920	 2921	 2922	 2924	 2950	 2957	 2966	 2974	 2982	 2988
			 2989	 3007	 3008	 3034	 3035	 3036	 3037	 3038	 3043	 3044	 3045	 3046	 3047
			 3050	 3054	 3055	 3057	 3058	 3080	 3081	 3082	 3083	 3084	 3085	 3086	 3087
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 68-6
KDPMC.MAC    14-JUN-79 07:11		CROSS REFERENCE TABLE -- USER SYMBOLS

			 3088	 3111	 3137	 3145	 3146	 3147	 3153	 3154	 3189	 3195	 3200	 3205	 3206
			 3210	 3211	 3216	 3217	 3218	 3219	 3220	 3224	 3225	 3226	 3227	 3228	 3232
			 3255	 3256	 3257	 3258	 3259	 3260	 3261	 3262	 3263	 3264	 3265	 3292	 3293
			 3297	 3300	 3302	 3303	 3343	 3351	 3352	 3353	 3354	 3355	 3357	 3358	 3359
			 3363	 3367	 3368	 3398	 3399	 3401	 3402	 3405	 3407	 3408	 3426	 3427	 3428
MSGIN   001734R       	 1651	 1741	 1810#
MSGIN1  002000R       	 1821	 1848	 1849#
NMSENT= 000035        	  133#	  134
NPR   = 120200        	  266	  611	  646	  782	  901	  990	 1076	 1091	 1760	 2216	 2360	 2852	 2897
			 3058	 3224	 3232	 3355	 3363
NPRWP1  001712R       	 1758	 1759#	 1761	 2313
NXBEXT  003304R       	 2906	 2914#
NXBUF   003034R       	 2615	 2744#
NXDP1 = 001064R       	  944#	 2757
NXDSCP  003120R       	  942	 2839#
NXLST   003060R       	 2752	 2783#
NXMERR  003726R       	  530	  574	 3425#
NXRBUF  003306R       	 2883	 2919#
NXTTBL  003616R       	  289	 3291#
OBA1  = 002006        	  506	  716	 1000	 1025	 1086	 2015	 2208	 2356	 2438	 3080	 3206	 3257
OBA2  = 002007        	  507	  720	 1001	 2439	 3081	 3211	 3258
OBR   = 001011        	  430	  505	  557	 1006	 2446	 3088	 3220	 3263	 3427
OCON  = 120040        	  353	  359	  480	  487	  515	  889	 1877
OINCON= 001000        	  260
OLINEN= 001003        	  388
ONPR  = 001010        	  609	  645	  781	  886	  989	 1073	 1090	 2212	 2291	 2359	 2847	 2896	 3047
			 3228	 3265	 3359
OOCON = 001002        	  261	  362	  400	  452	  528
OPORT1= 001004        	  392
OPORT2= 001005        	  393
OPORT3= 001006        	  397
OPORT4= 001007        	  398
OUTDA1= 002002        	  772	  790	  800	  830	 1028	 1078	 1109	 1953	 1961	 2079	 2211	 2268	 2357
			 2455	 2910	 3037	 3045
OUTDA2= 002003        	  726	  779	  808	  842	 1075	 1107	 1129	 1954	 1963	 2091	 2144	 2267	 2457
OVRUN   003342R       	 2951	 2980#
PATCHA  003744R       	 1851	 3447#
PORT1 = 120100        	  766	  767	  927
PORT2 = 120120        	  928
PORT3 = 120140        	  713	  790	  845
PORT4 = 120160        	  717	  760	  773	  786	  813	  836	  907	  929	 1908
P.LADR= 001457        	  136#	  283	  493	  579
P.MSTA= 002000        	  127#	  128
P.NPR = 001517        	  134#	  136	  295	  407	 2699
P.PLST= 001775        	  131#	  134	  135
P.PORT= 001775        	  130#	  131	  292	  293	  320	  321	  421
P.SLIN= 001776        	  129#	  130	  404	 2628	 2629	 2679	 2690
P.SLOT= 001777        	  128#	  129	  382
P0    = 000000        	 1286	 3234
P1    = 004000        	 3404	 3409
P2    = 010000        	 2796	 2914	 2925	 3060	 3089	 3150	 3155
P3    = 014000        	 2696	 2700	 2714	 3365
QPDATA  002700R       	  679	 2467	 2614#
QPDAT1  002714R       	 2531	 2627#
RBDONE  001456R       	 1248	 1306#
RB1     001412R       	  838	 1196#	 1307	 3057
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 68-7
KDPMC.MAC    14-JUN-79 07:11		CROSS REFERENCE TABLE -- USER SYMBOLS

RB2     001422R       	 1197	 1221#
RB3     001432R       	 1222	 1244#
RB3P0   000526R       	  687#	 1252
RCVDON  001374R       	  631	 1155#
RCVEXT  002456R       	 2250	 2302#
RDATA1  001664R       	 1676#	 1925
RDCRC1  001676R       	 1681	 1711#
RDCRC2  001706R       	 1717	 1737#
RDDATA  001656R       	 1635	 1671#
RDH1    001466R       	  835	 1349#	 1813	 3054
RDH2    001534R       	 1351	 1409#
RDH3    001546R       	 1413	 1445#
RDH4    001576R       	 1449	 1491#
RDH5    001602R       	 1495	 1520#
RDH6    001606R       	 1524	 1550#
RDICLR  000250R       	  454	  479#
RDICL1  000262R       	  457	  486#
RDOCLR  000102R       	  352#	  425
RDOCL1  000106R       	  358#	  428
RDOSET  000122R       	  294	  380#	  449	  489
RDOST1  000202R       	  354	  422#
RDOST2  000212R       	  424	  428#
RDOST3  000216R       	  430#	  459
RERROR  003344R       	 2958	 2967	 2975	 2986#
RERRP2  002074R       	 1922#	 2989
RESYNC  003362R       	 1895	 2180	 3031#
RHCRC1  001636R       	 1554	 1600#
RHCRC2  001642R       	 1604	 1631#
RP    = 004000        	 1170	 1178#
RQICL2  000334R       	  527#	  727	  852	  940	 1911
RQICR2  002070R       	  942	 1911#
RQISET  000222R       	  363	  381	  447#
RQIST1  000242R       	  453	  457#	  485
RSNCRT  003356R       	 1379	 3006#	 3447
SELA  = 000600        	  287	  288	  452	  502	  508	  586	  630	  650	  924	  981	 1124	 1158	 1163
			 1279	 1283	 1285	 1286	 1419	 1558	 1645	 1688	 1816	 1840	 1841	 1842	 1843
			 1844	 1949	 2005	 2247	 2265	 2271	 2437	 2620	 2634	 2635	 2636	 2637	 2638
			 2650	 2696	 2700	 2705	 2711	 2714	 2750	 2756	 2796	 2813	 2814	 2815	 2816
			 2842	 2862	 2863	 2869	 2870	 2871	 2872	 2892	 2904	 2914	 2925	 3034	 3060
			 3089	 3150	 3155	 3234	 3297	 3365	 3404	 3409
SELB  = 000220        	  260	  261	  262	  263	  264	  275	  278	  322	  362	  383	  388	  392	  393
			  397	  398	  400	  405	  406	  430	  494	  498	  500	  505	  506	  507	  528
			  561	  562	  563	  581	  584	  585	  588	  591	  601	  602	  605	  609	  610
			  645	  716	  720	  726	  727	  772	  779	  781	  800	  809	  826	  830	  842
			  852	  886	  900	  918	  936	  942	  951	  989	 1009	 1013	 1028	 1051	 1053
			 1058	 1069	 1070	 1075	 1090	 1104	 1107	 1109	 1129	 1159	 1170	 1200	 1224
			 1253	 1282	 1284	 1308	 1361	 1675	 1786	 1821	 1832	 1833	 1834	 1835	 1836
			 1886	 1895	 1899	 1901	 1902	 1953	 1961	 1963	 1965	 2008	 2018	 2019	 2051
			 2091	 2092	 2116	 2117	 2144	 2172	 2179	 2180	 2188	 2195	 2205	 2208	 2211
			 2212	 2215	 2223	 2261	 2267	 2268	 2291	 2313	 2340	 2353	 2356	 2357	 2359
			 2387	 2395	 2399	 2438	 2439	 2443	 2451	 2452	 2457	 2463	 2464	 2495	 2500
			 2523	 2525	 2526	 2530	 2554	 2579	 2587	 2616	 2621	 2622	 2623	 2630	 2643
			 2680	 2681	 2751	 2757	 2810	 2811	 2812	 2843	 2844	 2846	 2856	 2866	 2873
			 2891	 2893	 2910	 2911	 2921	 2988	 2989	 3008	 3037	 3038	 3045	 3047	 3050
			 3080	 3081	 3086	 3146	 3153	 3228	 3257	 3258	 3265	 3303	 3398	 3401	 3405
			 3428
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 68-8
KDPMC.MAC    14-JUN-79 07:11		CROSS REFERENCE TABLE -- USER SYMBOLS

SENTRY= 000006        	  132#	  134	  135	  411	 2694
SETRBA  003432R       	 2205	 2261	 2353	 3078#
SHFTBR= 001400        	  623	  814	  890	  919	  932	  933	  934	  935	  982	 1014	 1125	 1559	 1878
			 1909	 1950	 2019	 2052	 2173	 2465	 2905	 3055
SILOED= 001767        	  135#	  408	 2691
SOH   = 000201        	  209#	 1365
SPBRX = 003400        	  266	  317	  423	  529	  573	  613	  618	  762	  786	  918	 1009	 1027	 1051
			 1058	 2018	 2172	 2195	 2340	 2524	 2648	 2751	 2909	 3036	 3044
SPX   = 003000        	  262	  263	  264	  275	  278	  281	  405	  406	  451	  494	  495	  498	  500
			  561	  562	  563	  575	  581	  584	  585	  591	  610	  617	  648	  649	  713
			  717	  727	  809	  826	  852	  900	  903	  929	  942	  951	 1002	 1004	 1023
			 1042	 1053	 1072	 1084	 1104	 1159	 1200	 1224	 1253	 1282	 1284	 1308	 1361
			 1460	 1675	 1782	 1786	 1821	 1832	 1833	 1834	 1835	 1836	 1886	 1895	 1899
			 1901	 1902	 1965	 2008	 2014	 2055	 2092	 2116	 2117	 2179	 2180	 2188	 2205
			 2215	 2261	 2313	 2353	 2387	 2395	 2399	 2440	 2442	 2443	 2451	 2452	 2463
			 2495	 2500	 2523	 2525	 2526	 2530	 2554	 2579	 2587	 2616	 2621	 2622	 2623
			 2643	 2645	 2646	 2647	 2680	 2712	 2757	 2810	 2811	 2812	 2846	 2854	 2855
			 2856	 2857	 2858	 2866	 2867	 2873	 2895	 2911	 2921	 2922	 2988	 2989	 3008
			 3038	 3082	 3084	 3086	 3146	 3153	 3189	 3200	 3205	 3210	 3216	 3218	 3224
			 3259	 3261	 3293	 3300	 3303	 3351	 3353	 3355	 3358	 3368	 3398	 3401	 3405
			 3428
SP.CHR= 000007        	  142#	  648	 1283	 1284	 1366	 1370	 1374	 1419	 1456	 1464	 1571	 2247	 2265
SP.CS0= 000017        	  150#	  618	  630	  650	  903	 1027	 2904	 2909	 3036	 3044
SP.LN = 000012        	  145#	  495	  496	  561	  575	  577	  582	 2634
SP.RM0= 000013        	  146#	  263	  287	  498	  502	  508	  562	  584	  586	  847	  899	 1008	 1012
			 1157	 1356	 1418	 1454	 1462	 1578	 1716	 1829	 1885	 1970	 2017	 2050	 2104
			 2171	 2309	 2339	 2398	 2586	 2880	 3145	 3256	 3293	 3294	 3303
SP.RM1= 000014        	  147#	  262	  288	  500	  563	  585	 1158	 2750	 3034	 3297	 3300
SP.RST= 000010        	  143#	  649	 1163	 2950
SP.SB1= 000015        	  148#	  942	 1308	 1821	 1895	 1902	 2008	 2117	 2179	 2215	 2796	 2914	 2925
			 2989	 3008	 3060
SP.STS= 000011        	  144#	  610	  615	 1124	 1159	 1279	 1360	 1361	 1386	 1460	 1465	 1558	 1580
			 1645	 1688	 1816	 1850	 1949	 2078
SP.SUB= 000016        	  149#	  727	  809	  852	 1053	 1104	 1200	 1224	 1253	 1286	 1675	 1786	 2092
			 2180	 2188	 2205	 2261	 2313	 2353	 2463	 2616	 2696	 2700	 2714	 2757	 2856
			 2866	 2911	 3038	 3089	 3150	 3155	 3234	 3365	 3404	 3409	 3428
SP0   = 000000        	  266	  267	  278	  286	  317	  406	  409	  412	  423	  451	  529	  573	  581
			  583	  591	  593	  617	  713	  715	  717	  719	  762	  763	  786	  826	  827
			  929	  931	 1002	 1004	 1009	 1023	 1042	 1051	 1072	 1084	 1123	 1282	 1285
			 1836	 1844	 1886	 1888	 1956	 2005	 2014	 2018	 2055	 2142	 2440	 2442	 2451
			 2524	 2621	 2635	 2680	 2683	 2692	 2695	 2705	 2711	 2712	 2713	 2751	 2788
			 2794	 2805	 2810	 2814	 2846	 2867	 2876	 2895	 2921	 2922	 2924	 3082	 3084
			 3205	 3210	 3216	 3218	 3224	 3226	 3259	 3261	 3351	 3353	 3355	 3358	 3368
			 3398	 3399	 3401	 3402	 3405	 3408
SP1   = 000001        	  405	  416	  613	  981	 1058	 1060	 1835	 1843	 1965	 1966	 2443	 2445	 2452
			 2456	 2525	 2622	 2636	 2811	 2815	 3086	 3087	 3146	 3147	 3153	 3154	 3189
			 3200	 3227
SP10  = 000010        	  143
SP11  = 000011        	  144
SP12  = 000012        	  145
SP13  = 000013        	  146
SP14  = 000014        	  147
SP15  = 000015        	  148
SP16  = 000016        	  149
SP17  = 000017        	  150
SP2   = 000002        	 1781	 1782	 1783	 1834	 1842	 1899	 2172	 2195	 2206	 2242	 2271	 2340	 2354
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 68-9
KDPMC.MAC    14-JUN-79 07:11		CROSS REFERENCE TABLE -- USER SYMBOLS

			 2395	 2500	 2530	 2579	 2638	 2650	 2812	 2816	 2857	 2869	 2873	 2875
SP3   = 000003        	 1833	 1841	 1901	 2116	 2387	 2495	 2523	 2554	 2637	 2643	 2649	 2858	 2870
			 2988
SP4   = 000004        	  264	  277	  281	 1832	 1840	 2526	 2623	 2645	 2646	 2647	 2648	 2854	 2862
			 2871	 2887
SP5   = 000005        	  275	  279	  494	  497	  918	  939	  950	  951	 2855	 2863	 2872	 2892
SP6   = 000006        	  900	  917	  924	  953	 1906	 2399	 2437	 2450	 2454	 2587	 2620	 2749	 2756
			 2809	 2813	 2842	 2882
SP7   = 000007        	  142
START   000000R       	  268	  269	  280	  289	  294	  319	  354	  360	  363	  364	  381	  384	  410
			  417	  418	  424	  425	  426	  428	  431	  448	  449	  453	  454	  455	  457
			  459	  481	  482	  485	  488	  489	  518	  519	  520	  521	  530	  532	  564
			  574	  578	  592	  595	  612	  616	  619	  624	  631	  632	  647	  651	  679
			  683	  687	  727	  761	  764	  777	  783	  787	  792	  795	  802	  809	  815
			  819	  835	  837	  838	  852	  891	  895	  902	  908	  920	  940	  942	  954
			  983	  984	  991	  993	  994	 1010	 1015	 1019	 1020	 1029	 1036	 1038	 1043
			 1048	 1052	 1053	 1061	 1077	 1092	 1093	 1101	 1103	 1104	 1110	 1119	 1121
			 1126	 1130	 1164	 1178	 1197	 1199	 1201	 1222	 1223	 1225	 1248	 1252	 1281
			 1307	 1308	 1351	 1367	 1371	 1375	 1379	 1387	 1413	 1423	 1449	 1469	 1495
			 1499	 1524	 1528	 1554	 1560	 1564	 1572	 1581	 1604	 1608	 1609	 1635	 1639
			 1640	 1646	 1651	 1675	 1677	 1681	 1689	 1693	 1717	 1718	 1741	 1742	 1758
			 1761	 1762	 1786	 1813	 1817	 1821	 1848	 1851	 1879	 1890	 1895	 1902	 1910
			 1911	 1915	 1919	 1922	 1925	 1927	 1951	 1957	 1967	 1971	 1996	 1999	 2004
			 2006	 2008	 2020	 2026	 2027	 2047	 2053	 2082	 2092	 2106	 2117	 2145	 2174
			 2178	 2180	 2188	 2191	 2196	 2202	 2205	 2214	 2217	 2218	 2225	 2250	 2261
			 2272	 2278	 2313	 2341	 2346	 2353	 2361	 2462	 2466	 2467	 2504	 2531	 2615
			 2639	 2641	 2682	 2684	 2693	 2706	 2752	 2757	 2789	 2853	 2856	 2866	 2883
			 2888	 2898	 2906	 2911	 2949	 2951	 2958	 2967	 2975	 2989	 3007	 3038	 3054
			 3056	 3057	 3059	 3112	 3148	 3190	 3212	 3213	 3233	 3266	 3273	 3274	 3295
			 3298	 3305	 3356	 3364	 3369	 3403	 3428	 3429	 3447	 3448
STFSLO  002762R       	 2675#
STORE   002312R       	  687	 1281	 1371	 1387	 1423	 1469	 1499	 1528	 1564	 1572	 1581	 1693	 2167#
			 2214
STREVN  002414R       	 2231#
STRODD  002426R       	 2225	 2256#
SUB   = 000340        	 2455
SUBC  = 000040        	 2456
SUBOC = 000360        	  279	  409	  416	  577	 1366	 1370	 1374	 1571	 2683	 2692	 2882
SYNC  = 000226        	  212#	  798	 1960
SYNCNT= 000007        	  214#	 2902
TIMER   000346R       	  319	  553#
TIMRP1  001640R       	 1608#	 1609
TIMRP2  002072R       	 1308	 1919#	 2178	 3007
TIMRP3  003614R       	 1786	 3273	 3274#
TIMRTN  000364R       	  570#	 1199	 1223	 1608	 1646	 1689	 1718	 1762	 1919	 3274	 3448
TIMRT1  000416R       	  564	  587#
TIMRT3  000470R       	  628#	  984	  994	 1020	 1038	 1048	 1093	 2027	 2106
TWOA  = 000520        	  277	  496	  582	  939	 1850	 2645	 2646	 2647	 2648	 2788	 2950
UBBR  = 120220        	  317	  529	  573	 1002	 2440	 3082	 3216	 3259
WAIT    003556R       	 3231#
WRMEM = 002400        	  265	  282	  287	  288	  294	  295	  296	  363	  381	  407	  412	  419	  425
			  428	  454	  457	  489	  593	  601	  715	  719	  763	  766	  767	  775	  778
			  791	  793	  798	  801	  803	  827	  835	  838	  845	  848	  922	  927	  928
			  936	  950	 1060	 1080	 1123	 1197	 1222	 1283	 1285	 1307	 1351	 1360	 1386
			 1413	 1419	 1449	 1456	 1465	 1495	 1524	 1554	 1580	 1604	 1635	 1717	 1783
			 1813	 1840	 1841	 1842	 1843	 1844	 1888	 1907	 1956	 1966	 2048	 2105	 2142
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 68-10
KDPMC.MAC    14-JUN-79 07:11		CROSS REFERENCE TABLE -- USER SYMBOLS

			 2242	 2247	 2634	 2635	 2636	 2637	 2640	 2649	 2650	 2695	 2699	 2705	 2713
			 2794	 2805	 2814	 2815	 2816	 2860	 2861	 2862	 2863	 2868	 2869	 2870	 2871
			 2872	 2876	 2901	 2902	 2907	 2924	 3054	 3057	 3147	 3154	 3399	 3402	 3408
WRTEBR= 000400        	  267	  274	  277	  283	  353	  359	  361	  408	  411	  429	  447	  458	  480
			  484	  487	  493	  496	  504	  515	  527	  553	  560	  576	  579	  582	  588
			  607	  611	  615	  630	  637	  643	  646	  650	  714	  718	  725	  727	  760
			  768	  773	  780	  782	  794	  804	  809	  813	  818	  825	  836	  841	  846
			  852	  885	  889	  894	  897	  899	  901	  907	  916	  930	  931	  939	  942
			  949	  952	  981	  985	  987	  990	  992	 1003	 1005	 1007	 1011	 1013	 1024
			 1026	 1035	 1037	 1053	 1071	 1074	 1076	 1085	 1087	 1091	 1102	 1104	 1106
			 1120	 1124	 1128	 1156	 1163	 1199	 1223	 1252	 1279	 1308	 1355	 1359	 1365
			 1369	 1373	 1385	 1417	 1453	 1455	 1461	 1463	 1464	 1558	 1577	 1579	 1645
			 1675	 1688	 1715	 1760	 1786	 1816	 1821	 1828	 1850	 1877	 1884	 1887	 1889
			 1895	 1896	 1900	 1902	 1905	 1908	 1949	 1952	 1955	 1960	 1962	 1969	 2003
			 2005	 2008	 2013	 2016	 2049	 2051	 2077	 2078	 2081	 2090	 2092	 2103	 2115
			 2117	 2143	 2170	 2178	 2180	 2188	 2205	 2206	 2209	 2214	 2216	 2223	 2240
			 2261	 2265	 2271	 2277	 2289	 2308	 2313	 2338	 2353	 2354	 2358	 2360	 2386
			 2391	 2397	 2398	 2441	 2444	 2445	 2449	 2453	 2456	 2462	 2464	 2494	 2499
			 2503	 2529	 2553	 2558	 2582	 2586	 2615	 2638	 2642	 2681	 2691	 2694	 2748
			 2757	 2788	 2793	 2804	 2808	 2845	 2852	 2856	 2866	 2874	 2875	 2879	 2880
			 2887	 2892	 2894	 2897	 2904	 2908	 2911	 2920	 2950	 2957	 2966	 2974	 2982
			 2989	 3007	 3035	 3038	 3043	 3046	 3050	 3058	 3083	 3085	 3087	 3111	 3137
			 3195	 3217	 3219	 3225	 3226	 3227	 3232	 3255	 3260	 3262	 3264	 3292	 3302
			 3343	 3357	 3363	 3367	 3407	 3426	 3428
WRTRT   001304R       	 1083#	 1110	 1130	 1957	 1967	 2145
XMTABT  002212R       	 1010	 2046#
XMTAB1  002302R       	 2047	 2141#
XMTBCZ  002150R       	 2002#
XMTBC0  002160R       	  683	 2007#
XMTBC1  002166R       	 2012#	 2117
XMTCNT  002146R       	 1053	 1996	 1999#
XMTDN1  001134R       	  993	  999#
XMTDN2  001250R       	 1058#	 1999
XMTDN3  001216R       	 1033#	 2053
XMTDN4  001232R       	 1048#	 2020
XMTDN6  001314R       	 1089#	 2082
XMTDON  001102R       	  624	  980#
XMTEM0  000524R       	  683#	 2092
XMTSND  002232R       	 1043	 2076#
XMTSN0  002240R       	 1029	 2080#
XMTSYN  002100R       	 1119	 1948#
XMTUNR  002266R       	 2004	 2114#
ZCOND = 001400        	  280	  384	  410	  417	  578	  592	 1367	 1371	 1375	 1572	 2682	 2684	 2693
			 2883	 3148
$KDPMC  000000RG      	  258#	 3450
$KDPML= 000040 G      	 3450#
.     = 003750R       	  809	  944	 1104	 1178	 1895	 1902	 1915	 1927	 2008	 2188	 2205	 2261	 2353
			 2856	 2866	 2911	 3038	 3428	 3450
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 69
KDPMC.MAC    14-JUN-79 07:11		CROSS REFERENCE TABLE -- MACRO NAMES

ALWAYS	  269	  289	  364	  418	  426	  431	  449	  455	  459	  482	  520	  532	  564	  632	  651
	  679	  683	  687	  727	  764	  795	  809	  819	  852	  895	  942	  954	  984	  994	 1020
	 1029	 1043	 1053	 1093	 1103	 1104	 1110	 1130	 1201	 1225	 1308	 1379	 1387	 1423	 1469
	 1499	 1528	 1564	 1581	 1608	 1640	 1651	 1675	 1681	 1693	 1718	 1742	 1762	 1786	 1821
	 1851	 1890	 1895	 1902	 1911	 1919	 1922	 1925	 1957	 1971	 2008	 2027	 2082	 2092	 2106
	 2117	 2145	 2180	 2188	 2202	 2205	 2218	 2250	 2261	 2278	 2313	 2346	 2353	 2467	 2504
	 2531	 2641	 2706	 2757	 2856	 2866	 2911	 2958	 2967	 2975	 2989	 3038	 3112	 3190	 3213
	 3266	 3274	 3298	 3305	 3369	 3428	 3429	 3448
BRADDR	  727	  852	  942	 1053	 1199	 1223	 1252	 1308	 1675	 1786	 1821	 2092	 2117	 2178	 2180
	 2214	 2313	 2462	 2615	 2757	 2989	 3007
BROTAT	 2019
BRSHFT	  623	  814	  890	  919	  932	  933	  934	  935	  982	 1014	 1125	 1559	 1878	 1909	 1950
	 2052	 2173	 2465	 2905	 3055
BRWRTE	  267	  274	  277	  283	  353	  359	  361	  408	  411	  429	  447	  458	  480	  484	  487
	  493	  496	  504	  515	  527	  553	  560	  576	  579	  582	  588	  607	  611	  615	  630
	  637	  643	  646	  650	  714	  718	  725	  727	  760	  768	  773	  780	  782	  794	  804
	  809	  813	  818	  825	  836	  841	  846	  885	  889	  894	  897	  899	  901	  907	  916
	  930	  931	  939	  949	  952	  981	  985	  987	  990	  992	 1003	 1005	 1007	 1011	 1013
	 1024	 1026	 1035	 1037	 1053	 1071	 1074	 1076	 1085	 1087	 1091	 1102	 1104	 1106	 1120
	 1124	 1128	 1156	 1163	 1279	 1355	 1359	 1365	 1369	 1373	 1385	 1417	 1453	 1455	 1461
	 1463	 1464	 1558	 1577	 1579	 1645	 1688	 1715	 1760	 1786	 1816	 1828	 1850	 1877	 1884
	 1887	 1889	 1895	 1896	 1900	 1902	 1905	 1908	 1949	 1952	 1955	 1960	 1962	 1969	 2003
	 2005	 2008	 2013	 2016	 2049	 2051	 2077	 2078	 2081	 2090	 2103	 2115	 2117	 2143	 2170
	 2180	 2188	 2205	 2206	 2209	 2216	 2223	 2240	 2261	 2265	 2271	 2277	 2289	 2308	 2313
	 2338	 2353	 2354	 2358	 2360	 2386	 2391	 2397	 2398	 2441	 2444	 2445	 2449	 2453	 2456
	 2464	 2494	 2499	 2503	 2529	 2553	 2558	 2582	 2586	 2638	 2642	 2681	 2691	 2694	 2748
	 2757	 2788	 2793	 2804	 2808	 2845	 2852	 2856	 2866	 2874	 2875	 2879	 2880	 2887	 2892
	 2894	 2897	 2904	 2908	 2911	 2920	 2950	 2957	 2966	 2974	 2982	 2989	 3035	 3038	 3043
	 3046	 3050	 3058	 3083	 3085	 3087	 3111	 3137	 3195	 3217	 3219	 3225	 3226	 3227	 3232
	 3255	 3260	 3262	 3264	 3292	 3302	 3343	 3357	 3363	 3367	 3407	 3426	 3428
BR0	  453	  485	  519	  521	  530	  574	  612	  647	  761	  783	  902	  991	 1019	 1052	 1061
	 1077	 1092	 1646	 1761	 2026	 2196	 2217	 2225	 2272	 2341	 2361	 2639	 2853	 2888	 2898
	 3059	 3233	 3364
BR1	  518	  616	  624	  792	  891	 1038	 1248	 1560	 1879	 2006	 2047	 2906
BR4	  319	  424	  481	  488	  802	  815	  908	  920	  983	 1010	 1015	 1036	 1119	 1126	 1639
	 1689	 1741	 1817	 1910	 1951	 2020	 2053	 2174	 2466	 2949	 3056
BR7	  268	  354	  360	  448	  619	  631	  777	  787	  837	  940	  993	 1048	 1121	 1164	 1281
	 2004	 2752	 2789	 2951	 3447
C	  595	 1101	 1677	 1967	 1999	 2191	 3212	 3295	 3356	 3403
CALLSB	  809	 1104	 1895	 1902	 2008	 2188	 2205	 2261	 2353	 2856	 2866	 2911	 3038	 3428
CALLSR	  727	  852	  942	 1053	 1308	 1675	 1786	 1821	 2092	 2117	 2180	 2313	 2757	 2989
COMP	  279	  409	  416	  577	 1366	 1370	 1374	 1571	 2683	 2692	 2882
INCMA	 2237	 3149
LDMA	  286	  293	  320	  382	  383	  404	  421	  497	  502	  508	  583	  586	  847	  917	  924
	  953	 1008	 1012	 1157	 1356	 1418	 1454	 1462	 1578	 1716	 1829	 1885	 1906	 1970	 2017
	 2050	 2104	 2171	 2309	 2339	 2437	 2450	 2454	 2620	 2628	 2630	 2679	 2690	 2711	 2749
	 2756	 2809	 2813	 2842	 3145	 3256
LDMAP	  292	  321	 1158	 2629	 2750	 3034	 3297
MEM	  282	  288	  296	  407	  412	  419	  593	  715	  719	  775	  778	  791	  793	  798	  801
	  803	  827	  848	  922	  936	  950	 1080	 1123	 1285	 1360	 1386	 1419	 1456	 1465	 1580
	 1783	 1888	 1907	 1956	 1966	 2048	 2105	 2142	 2247	 2637	 2640	 2695	 2699	 2705	 2713
	 2794	 2805	 2816	 2876	 2907	 2924	 3408
MEMADR	  294	  363	  381	  425	  428	  454	  457	  489	  835	  838	 1197	 1222	 1307	 1351	 1413
	 1449	 1495	 1524	 1554	 1604	 1635	 1717	 1813	 3054	 3057
MEMINC	  265	  287	  295	  601	  763	  766	  767	  845	  927	  928	 1060	 1283	 1840	 1841	 1842
	 1843	 1844	 2242	 2634	 2635	 2636	 2649	 2650	 2814	 2815	 2860	 2861	 2862	 2863	 2868
KDUPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  04-DEC-79  13:50  PAGE 69-1
KDPMC.MAC    14-JUN-79 07:11		CROSS REFERENCE TABLE -- MACRO NAMES

	 2869	 2870	 2871	 2872	 2901	 2902	 3147	 3154	 3399	 3402
NODST	 3294
OUT	  260	  261	  362	  388	  392	  393	  397	  398	  400	  430	  452	  505	  528	  557	  609
	  645	  781	  886	  989	 1006	 1073	 1090	 2212	 2291	 2359	 2446	 2847	 2896	 3047	 3088
	 3220	 3228	 3263	 3265	 3359	 3427
OUTPUT	  506	  507	  602	  605	  639	  716	  720	  726	  772	  779	  790	  800	  808	  830	  842
	  883	  884	  986	 1000	 1001	 1025	 1028	 1069	 1070	 1075	 1078	 1086	 1107	 1109	 1129
	 1953	 1954	 1961	 1963	 2015	 2079	 2091	 2144	 2208	 2211	 2267	 2268	 2356	 2357	 2438
	 2439	 2455	 2457	 2843	 2844	 2891	 2893	 2910	 3037	 3045	 3080	 3081	 3206	 3211	 3257
	 3258	 3352	 3354
RSTATE	  835	  838	 1197	 1222	 1307	 1351	 1413	 1449	 1495	 1524	 1554	 1604	 1635	 1717	 1813
	 3054	 3057
RTNSUB	 1286	 2696	 2700	 2714	 2796	 2914	 2925	 3060	 3089	 3150	 3155	 3234	 3365	 3404	 3409
SP	  262	  263	  264	  275	  278	  281	  405	  406	  451	  494	  495	  498	  500	  561	  562
	  563	  575	  581	  584	  585	  591	  610	  617	  648	  649	  713	  717	  727	  809	  826
	  852	  900	  903	  929	  942	  951	 1002	 1004	 1023	 1042	 1053	 1072	 1084	 1104	 1159
	 1200	 1224	 1253	 1282	 1284	 1308	 1361	 1460	 1675	 1782	 1786	 1821	 1832	 1833	 1834
	 1835	 1836	 1886	 1895	 1899	 1901	 1902	 1965	 2008	 2014	 2055	 2092	 2116	 2117	 2179
	 2180	 2188	 2205	 2215	 2261	 2313	 2353	 2387	 2395	 2399	 2440	 2442	 2443	 2451	 2452
	 2463	 2495	 2500	 2523	 2525	 2526	 2530	 2554	 2579	 2587	 2616	 2621	 2622	 2623	 2643
	 2645	 2646	 2647	 2680	 2712	 2757	 2810	 2811	 2812	 2846	 2854	 2855	 2856	 2857	 2858
	 2866	 2867	 2873	 2895	 2911	 2921	 2922	 2988	 2989	 3008	 3038	 3082	 3084	 3086	 3146
	 3153	 3189	 3200	 3205	 3210	 3216	 3218	 3224	 3259	 3261	 3293	 3300	 3303	 3351	 3353
	 3355	 3358	 3368	 3398	 3401	 3405	 3428
SPBR	  266	  317	  423	  529	  573	  613	  618	  762	  786	  918	 1009	 1027	 1051	 1058	 2018
	 2172	 2195	 2340	 2524	 2648	 2751	 2909	 3036	 3044
Z	  280	  384	  410	  417	  578	  592	 1367	 1371	 1375	 1572	 2682	 2684	 2693	 2883	 3148
.ALWAY	  322	 1170	 1286	 2696	 2700	 2714	 2796	 2914	 2925	 3060	 3089	 3150	 3155	 3234	 3365
	 3404	 3409


. ABS.  000000     000	   CON   RW    ABS   LCL   I  
        003750     001	   CON   RW    REL   GBL   D  


 ERRORS DETECTED:  0
 DEFAULT GLOBALS GENERATED:  0

 KDPMC,KDPMC/CRF=KMCMAC/PA:1,KDPMC
 RUN-TIME: 13 16 1 SECONDS
 RUN-TIME RATIO: 199/31=6.3
 CORE USED:  11K  (21 PAGES)