Google
 

Trailing-Edge - PDP-10 Archives - BB-P363B-SM_1985 - mcb/drivers/kdpmc.lst
There are no other files named kdpmc.lst in the archive.
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE	DNMAC X24.07-563  25-JAN-83  10:02
KMCMAC.MAC    30-DEC-82 03:48		TABLE OF CONTENTS

    41		MICRO-INSTRUCTION FIELD DEFINITIONS
    83		MICROPROCESSOR REGISTER DEFINITIONS
   231		MICRO INSTRUCTION DEFINITIONS
   232			BRANCH INSTRUCTIONS
   270			INDEXED BRANCH INSTRUCTIONS
   371			MOVE INSTRUCTIONS
   762		TABLE OFFSET DEFINITIONS
   976		INIT - INITIALIZATION
  1034		IDLE - IDLE LOOP
  1066		DATA PORT PROCESSING ROUTINES
  1269		TIMER - TIMER SERVICE
  1424		BASEIN-BASE IN SERVICE ROUTINE
  1467		CONIN-CONTROL IN PROCESS ROUTINE
  1591		BAIN-BUFFER ADDRESS IN SERVICE ROUTINE
  1692		XMTDON - TRANSMIT DONE
  1885		RCVDON-RECEIVED CHARACTER PROCESSOR
  1925		BIT-STUFF PROTOCOL RECEIVE PROCESSORS
  1931		RB1-BIT STUFF RECEIVE STATE ONE
  1954		RB2-BIT STUFF RECEIVE STATE TWO
  1978		RB3-BIT STUFF RECEIVE STATE THREE
  2011		LSILO-PUSH CHARACTER INTO LOCAL TWO CHARACTER SILO
  2044		RBDONE - END OF BIT STUFF MESSAGE RECEIVED
  2066		DDCMP RECEIVE STATE PROCESSORS
  2078		RDH1-RECEIVING FIRST DDCMP HEADER CHARACTER
  2145		RDH2-RECEIVING SECOND DDCMP HEADER CHARACTER
  2181		RDH3-RECEIVING THIRD DDCMP HEADER CHARACTER
  2229		RDH4-RECEIVING FOURTH DDCMP HEADER CHARACTER
  2258		RDH5-RECEIVING FIFTH DDCMP HEADER CHARACTER
  2287		RDH6-RECEIVING SIXTH DDCMP HEADER CHARACTER
  2344		RHCRC1-RECEIVING FIRST DDCMP HEADER CRC
  2372		RHCRC2-RECEIVING SECOND DDCMP HEADER CRC
  2414		RDDATA-RECEIVING DDCMP DATA CHARACTERS
  2457		RDCRC1-RECEIVING FIRST DDCMP DATA CRC
  2482		RDCRC2-RECEIVING SECOND DATA CRC
  2525		DSRCHG-DATA SET READY CHANGE
  2550		MSGIN-DDCMP MESSAGE PROCESSOR
  2615		KILLAL-KILL XMT OT RCV OPERATION
  2690		XMTSYN - TRANSMIT SYNC'S OR ZERO BITS
  2734		XMTCNT - DECREMENT TRANSMIT BYTE COUNT
  2796		XMTABT - TRANSMIT ABORT PENDING
  2825		XMTSND - SET OR CLEAR DUP SEND
  2888		XMTAB1 - TRANSMIT ABORT STAGE ONE
  2921		STORE-STORE RECEIVED CHARACTER IN CORE
  3091		EOFMSG-END OF MESSAGE
  3140		BAORE-BA OUT FOR END OF RECEIVED MESSAGE
  3179		BOUT/COUT-BA OR CONTROL OUT (WITH DESCRIPTOR UPDATED)
  3248		BAORC-BA OUT FOR RECEIVE BUFFER COMPLETION
  3281		COUTX-CONTROL OUT FOR TRANSMIT OPERATION
  3308		BAOX/COUX-BA/CONTROL OUT FOR TRANSMIT BUFFER COMPLETION
  3367		QPDATA-QUEUE PORT DATA
  3429		STFSLO-STUFF COMPLETION SILO SUBROUTINE
  3491		NXBUF-GET NEXT  BUFFER
  3536		NXLST-GET NEXT BUFFER LIST
  3594		NXDSCP - GET NEXT DESCRIPTOR
  3707		ERROR PROCESSING ROUTINES
  3772		RSNCRT - RESYNC AND RETURN TO TIMER
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02
KDPMCX.MAC    30-DEC-82 03:47		TABLE OF CONTENTS

  3791		RESYNC-RESYNC DUP-11 RECEIVER
  3841		SETRBA-SET OUTBA TO CURRENT INPUT ADDRESS IN USER RECEIVE BUFFER
  3870		DECDCC-DECREMENT DDCMP DATA CHARACTER COUNT
  3893		DRCNT/DECNT-DECREMENT BUFFER COUNT
  3936		INCOUT/IC2OUT/INCOB-OUT NPR TO CURRENT ADDRESS+OFFSET
  4015		ADRCSR-SET OUTBA=DUP'S CSR ADDRESS
  4055		NXTTBL - ROUTINE TO CALCULATE THE ADDRESS OF THE NEXT TABLE
  4086		INCIN/INCINH/IC2IN - EIGHTEEN BIT ADD TO INPUT ADDRESS
  4151		INCMEM - EIGHTEEN BIT ADD TO ADDRESS POINT TO BY MAR
  4190		NXMERR - NONEXISTENT MEMORY ERROR
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 1
KMCMAC.MAC    30-DEC-82 03:48

     1						.TITLE	KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE
     2						.IDENT	/V2.0/
     3					;
     4					;                    COPYRIGHT (C) 1980, 1981, 1982
     5					;                    DIGITAL EQUIPMENT CORPORATION
     6					;                        MAYNARD, MASSACHUSETTS
     7					;
     8					;     THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY  BE  USED
     9					;     AND COPIED ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE
    10					;     AND WITH THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE.   THIS
    11					;     SOFTWARE  OR ANY OTHER COPIES THEREOF MAY NOT BE PROVIDED OR
    12					;     OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.  NO  TITLE  TO
    13					;     AND OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
    14					;
    15					;     THE INFORMATION  IN  THIS  SOFTWARE  IS  SUBJECT  TO  CHANGE
    16					;     WITHOUT  NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT
    17					;     BY DIGITAL EQUIPMENT CORPORATION.
    18					;
    19					;     DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY
    20					;     OF  ITS  SOFTWARE  ON  EQUIPMENT  WHICH  IS  NOT SUPPLIED BY
    21					;     DIGITAL.
    22					;         
    23					; DATE: 14-FEB-78
    24					;
    25					; VERSION: 2	KMC11-B
    26					;
    27					; DISTRIBUTED SYSTEMS SOFTWARE ENGINEERING
    28					;
    29					; LAST MODIFICATION:
    30					; 8-MAR-78	FIX TYPO'S AND 4K CALL
    31					;20-MAR-81	ASSEMBLE INTO $$MIC$ PSECT
    32					;
    33
    34						.LIST	MEB
    35						.NLIST	ME
    36		000000'				.PSECT	$$MIC$,D,RO 
    37	000000'				START:
    38					 
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 2
KMCMAC.MAC    30-DEC-82 03:48

    40
    41						.SBTTL	MICRO-INSTRUCTION FIELD DEFINITIONS
    42					 
    43					;	SOURCE FIELDS
    44
    45		000000			IMM=0		;IMMEDIATE
    46		020000			IBUS=20000	;INPUT BUS
    47		040000			MEMX=40000	;MEMORY
    48		060000			BR=60000	;BRG
    49
    50
    51					;	DESTINATION FIELDS
    52					 
    53		000400			WRTEBR=400	;WRITE THE BRG
    54		001000			WROUTX=1000	;EXTENDED OUTPUT BUS
    55		001400			SHFTBR=1400	;SHIFT THE BRG
    56		002000			WROUT=2000	;OUTPUT BUS
    57		002400			WRMEM=2400	;MEMORY
    58		003000			SPX=3000	;SCRATCH PAD
    59		003400			SPBRX=3400	;SRATCH PAD AND BRG
    60
    61
    62					;	JUMP CONDITIONS
    63
    64		000000			BRECON=0	;JUMP EXTENDED
    65		000400			ALCOND=400	;JUMP ALWAYS
    66		001000			CCOND=1000	;JUMP IF ALU CARRY = 1
    67		001400			ZCOND=1400	;JUMP IF ALU ZERO = 1
    68		002000			BR0CON=2000	;JUMP IF BRG BIT 0 = 1
    69		002400			BR1CON=2400	;JUMP IF BRG BIT 1 = 1
    70		003000			BR4CON=3000	;JUMP IF BRG BIT 4 = 1
    71		003400			BR7CON=3400	;JUMP IF BRG BIT 7 = 1
    72
    73
    74					;	MAR FIELDS
    75					 
    76		004000			LDMAPG=4000	;LOAD THE 4 MOST SIGNIFICANT BITS OF MAR
    77		010000			LDMAR=10000	;LOAD THE 8 LEAST SIGNIFICANT BITS OF MAR
    78		014000			INCMAR=14000	;INCREMENT MAR
    79					;
    80		054000			MEMI=MEMX!INCMAR	;READ FROM MEMORY AND INCREMENT THE MAR
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 3
KMCMAC.MAC    30-DEC-82 03:48		MICRO-INSTRUCTION FIELD DEFINITIONS

    82
    83						.SBTTL	MICROPROCESSOR REGISTER DEFINITIONS
    84
    85					;
    86					; INBUS* ASSIGNMENTS
    87					;
    88		120000				INCON=	0!120000	;IN CONTROL CSR
    89		120020				MAIN=	20!120000	;MAINTAINANCE REGISTER
    90		120040				OCON=	40!120000	;OUT CONTROL CSR
    91		120060				LINENM=	60!120000	;LINE NUMBER
    92		120100				PORT1=	100!120000	;CSR 4
    93		120120				PORT2=	120!120000	;CSR 5
    94		120140				PORT3=	140!120000	;CSR 6
    95		120160				PORT4=	160!120000	;CSR 7
    96		120200				NPR=	200!120000	;NPR CONTROL REGISTER
    97		120220				UBBR=	220!120000	;MISC CONTROL REGISTER
    98		120240				PCLOW=	240!120000	;PC LATCH REGISTER LOW BYTE
    99		120260				PCHGH=	260!120000	;PC LATCH REGISTER HIGH 4 BITS
   100		120300				MARL=	300!120000	;MAR LATCH REGISTER LOW BYTE
   101		120320				MARH=	320!120000	;MAR LATCH REGISTER HIGH 5 BITS
   102
   103		120000				BSEL0=	0!120000	;BSEL0
   104		120020				BSEL1=	20!120000	;BSEL1
   105		120040				BSEL2=	40!120000	;BSEL2
   106		120060				BSEL3=	60!120000	;BSEL3
   107		120100				BSEL4=	100!120000	;BSEL4
   108		120120				BSEL5=	120!120000	;BSEL5
   109		120140				BSEL6=	140!120000	;BSEL6
   110		120160				BSEL7=	160!120000	;BSEL7
   111
   112					; INBUS ASSIGNMENTS
   113
   114		020000				INDAT1=	0!20000		;INPUT DATA LOW BYTE
   115		020020				INDAT2=	20!20000	;INPUT DATA HIGH BYTE
   116		020040				IODAT1=	40!20000	;OUTPUT DATA LOW BYTE
   117		020060				IODAT2=	60!20000	;OUTPUT DATA HIGH BYTE
   118		020100				IIBA1=	100!20000	;INPUT BA LOW BYTE
   119		020120				IIBA2=	120!20000	;INPUT BA HIGH BYTE
   120		020140				IOBA1=	140!20000	;OUTPUT BA LOW BYTE
   121		020160				IOBA2=	160!20000	;OUTPUT BA HIGH BYTE
   122		020200				XREG0=	200!20000	;EXTERNAL DEVICE REGISTER 0
   123		020220				XREG1=	220!20000	;EXTERNAL DEVICE REGISTER 1
   124		020240				XREG2=	240!20000	;EXTERNAL DEVICE REGISTER 2
   125		020260				XREG3=	260!20000	;EXTERNAL DEVICE REGISTER 3
   126		020300				XREG4=	300!20000	;EXTERNAL DEVICE REGISTER 4
   127		020320				XREG5=	320!20000	;EXTERNAL DEVICE REGISTER 5
   128		020340				XREG6=	340!20000	;EXTERNAL DEVICE REGISTER 6
   129		020360				XREG7=	360!20000	;EXTERNAL DEVICE REGISTER 7
   130
   131					; OUTBUS* ASSIGNMENTS
   132
   133		001000				OINCON=	0!1000		;IN CONTROL CSR
   134		001001				OMAIN=	1!1000		;MAINTAINTANCE REGISTER
   135		001002				OOCON=	2!1000		;OUT CONTROL CSR
   136		001003				OLINEN=	3!1000		;LINE NUMBER
   137		001004				OPORT1=	4!1000		;CSR 4
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 3-1
KMCMAC.MAC    30-DEC-82 03:48		MICROPROCESSOR REGISTER DEFINITIONS

   138		001005				OPORT2=	5!1000		;CSR 5
   139		001006				OPORT3=	6!1000		;CSR 6
   140		001007				OPORT4=	7!1000		;CSR 7
   141		001010				ONPR=	10!1000		;NPR CONTROL
   142		001011				OBR=	11!1000		;MISC CONTROL
   143		001012				OPCLOW=	12!1000		;PC LATCH LOW BYTE
   144		001013				OPCHGH=	13!1000		;PC LATCH HIGH
   145		001014				OMARL=	14!1000		;MAR LATCH LOW
   146		001015				OMARH=	15!1000		;MAR LATCH HIGH
   147
   148		001000				OBSEL0=	0!1000		;BSEL0
   149		001001				OBSEL1=	1!1000		;BSEL1
   150		001002				OBSEL2=	2!1000		;BSEL2
   151		001003				OBSEL3=	3!1000		;BSEL3
   152		001004				OBSEL4=	4!1000		;BSEL4
   153		001005				OBSEL5=	5!1000		;BSEL5
   154		001006				OBSEL6=	6!1000		;BSEL6
   155		001007				OBSEL7=	7!1000		;BSEL7
   156
   157					; OUTBUS ASSIGNMENTS
   158
   159		002000				OIDAT1=	0!2000		;INPUT DATA LOW BYTE
   160		002001				OIDAT2=	1!2000		;INPUT DATA HIGH BYTE
   161		002002				OUTDA1=	2!2000		;OUTPUT DATA LOW BYTE
   162		002003				OUTDA2=	3!2000		;OUTPUT DATA HIGH BYTE
   163		002004				IBA1=	4!2000		;INPUT BA LOW BYTE
   164		002005				IBA2=	5!2000		;INPUT BA HIGH BYTE
   165		002006				OBA1=	6!2000		;OUTPUT BA LOW BYTE
   166		002007				OBA2=	7!2000		;OUTPUT BA HIGH BYTE
   167		002010				OXREG0=	10!2000		;EXTERNAL DEVICE REGISTER 0
   168		002011				OXREG1=	11!2000		;EXTERNAL DEVICE REGISTER 1
   169		002012				OXREG2=	12!2000		;EXTERNAL DEVICE REGISTER 2
   170		002013				OXREG3=	13!2000		;EXTERNAL DEVICE REGISTER 3
   171		002014				OXREG4=	14!2000		;EXTERNAL DEVICE REGISTER 4
   172		002015				OXREG5=	15!2000		;EXTERNAL DEVICE REGISTER 5
   173		002016				OXREG6=	16!2000		;EXTERNAL DEVICE REGISTER 6
   174		002017				OXREG7=	17!2000		;EXTERNAL DEVICE REGISTER 7
   175
   176					; ALU FUNCTIONS
   177
   178		000000				ADD=	0		;ADD A+B
   179		000020				ADDC=	20		;ADD WITH CARRY -> A+B+C
   180		000040				SUBC=	40		;SUBTRACT WITH CARRY -> A-B-C
   181		060060				INCA=	60!BR		;INCREMENT A -> A+1 (DEFAULT SOURCE IS BRG)
   182		060100				APLUSC=	100!BR		;A PLUS CARRY -> A+C
   183		060120				TWOA=	120!BR		;A PLUS A -> A+A
   184		060140				TWOAC=	140!BR		;2*A PLUS CARRY -> A+A+C
   185		060160				DECA=	160!BR		;DECREMENT A -> A-1
   186		060200				SELA=	200!BR		;SELECT A
   187		000220				SELB=	220		;SELECT B
   188		000240				AORNB=	240		;A OR NOT B -> A!-B
   189		000260				AANDB=	260		;A AND B -> A&B
   190		000300				AORB=	300		;A OR B -> A!B
   191		000320				AXORB=	320		;A XOR B
   192		000340				SUB=	340		;SUBTRACT -> A-B
   193		000360				SUBOC=	360		;SUBTRACT ONE'S COMPLEMENT -> A-B-1
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 3-2
KMCMAC.MAC    30-DEC-82 03:48		MICROPROCESSOR REGISTER DEFINITIONS

   194
   195					; SCRATCH PAD DEFINITIONS
   196
   197		000000			SP0=0
   198		000001			SP1=1
   199		000002			SP2=2
   200		000003			SP3=3
   201		000004			SP4=4
   202		000005			SP5=5
   203		000006			SP6=6
   204		000007			SP7=7
   205		000010			SP10=10
   206		000011			SP11=11
   207		000012			SP12=12
   208		000013			SP13=13
   209		000014			SP14=14
   210		000015			SP15=15
   211		000016			SP16=16
   212		000017			SP17=17
   213
   214					; INSTRUCTION PAGE DEFINITIONS
   215					  
   216		000000			P0=0*4000	;PAGE 0
   217		004000			P1=1*4000	;PAGE 1
   218		010000			P2=2*4000	;PAGE 2
   219		014000			P3=3*4000	;PAGE 3
   220					 
   221					; NPR BIT DEFINITIONS
   222					 
   223		000001			DATI=1		;WORD INPUT NPR
   224		000003			DATIH=3		;WORD INPUT NPR WITH BUS HOLD
   225		000021			DATO=21		;WORD OUTPUT NPR
   226		000023			DATOH=23	;WORD OUTPUT NPR WITH BUS HOLD
   227		000221			DATOB=221	;BYTE OUTPUT NPR
   228		000223			DATOBH=223	;BYTE OUTPUT NPR WITH BUS HOLD
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 4
KMCMAC.MAC    30-DEC-82 03:48		MICROPROCESSOR REGISTER DEFINITIONS

   230
   231						.SBTTL	MICRO INSTRUCTION DEFINITIONS
   232						.SBTTL		BRANCH INSTRUCTIONS
   233					;
   234		100000			JUMP=100000		;JUMP OP CODE
   235					;
   236					;
   237						.MACRO	BREXT ADDRES	;JUMP ALWAYS EXTENDED
   238						<JUMP!BRECON!<ADDRES-START&777/2>>
   239						.ENDM
   240					;
   241						.MACRO	ALWAYS ADDRES	;JUMP ALWAYS
   242						<JUMP!ALCOND!<ADDRES-START&3000*4>!<ADDRES-START&777/2>>
   243						.ENDM
   244					;
   245						.MACRO	BR0 ADDRES	;JUMP IF BR0 SET
   246						<JUMP!BR0CON!<ADDRES-START&3000*4>!<ADDRES-START&777/2>>
   247						.ENDM
   248					;
   249						.MACRO	BR1 ADDRES	;JUMP IF BR1 SET
   250						<JUMP!BR1CON!<ADDRES-START&3000*4>!<ADDRES-START&777/2>>
   251						.ENDM
   252					;
   253						.MACRO	BR4 ADDRES	;JUMP IF BR4 SET
   254						<JUMP!BR4CON!<ADDRES-START&3000*4>!<ADDRES-START&777/2>>
   255						.ENDM
   256					;
   257						.MACRO	BR7 ADDRES	;JUMP IF BR7 SET
   258						<JUMP!BR7CON!<ADDRES-START&3000*4>!<ADDRES-START&777/2>>
   259						.ENDM
   260					;
   261						.MACRO	Z ADDRES	;JUMP IF Z BIT SET
   262						<JUMP!ZCOND!<ADDRES-START&3000*4>!<ADDRES-START&777/2>>
   263						.ENDM
   264					;
   265						.MACRO	C ADDRES	;JUMP IF C BIT SET
   266						<JUMP!CCOND!<ADDRES-START&3000*4>!<ADDRES-START&777/2>>
   267						.ENDM
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 5
KMCMAC.MAC    30-DEC-82 03:48			BRANCH INSTRUCTIONS

   269
   270						.SBTTL		INDEXED BRANCH INSTRUCTIONS
   271					;
   272					;	             ! [IBUS,] ADRI       !
   273					;	.<BRANCH> !--! [SRC,] FUNC [,SPN] !-- ,PN
   274					;		     ! IMM, DATA          !
   275					;
   276					;	NOTE: BREXT DOES NOT USE THE PAGE FIELD
   277					;
   278						.MACRO	.BREXT SRC,FUNC,SPLOC	 ;INDEXED JUMP ALWAYS EXTENDED
   279						.IF NB,SPLOC
   280						<JUMP!BRECON!SRC!FUNC!SPLOC>
   281						.MEXIT
   282						.ENDC
   283						<JUMP!BRECON!SRC!FUNC>
   284						.ENDM
   285					;
   286						.MACRO	.ALWAY SRC,FUNC,SPLOC,OPARG1 ;INDEXED JUMP ALWAYS
   287						.IF NB,OPARG1
   288						<JUMP!ALCOND!SRC!FUNC!SPLOC!OPARG1>
   289						.MEXIT
   290						.ENDC
   291						.IF NB,SPLOC
   292						<JUMP!ALCOND!SRC!FUNC!SPLOC>
   293						.MEXIT
   294						.ENDC
   295						<JUMP!ALCOND!SRC!FUNC>
   296						.ENDM
   297					;
   298						.MACRO	.BR0 SRC,FUNC,SPLOC,OPARG1 ;INDEXED JUMP ON BR0 SET
   299						.IF NB,OPARG1
   300						<JUMP!BR0CON!SRC!FUNC!SPLOC!OPARG1>
   301						.MEXIT
   302						.ENDC
   303						.IF NB,SPLOC
   304						<JUMP!BR0CON!SRC!FUNC!SPLOC>
   305						.MEXIT
   306						.ENDC
   307						<JUMP!BR0CON!SRC!FUNC>
   308						.ENDM
   309					;
   310						.MACRO	.BR1 SRC,FUNC,SPLOC,OPARG1 ;INDEXED JUMP ON BR1 SET
   311						.IF NB,OPARG1
   312						<JUMP!BR1CON!SRC!FUNC!SPLOC!OPARG1>
   313						.MEXIT
   314						.ENDC
   315						.IF NB,SPLOC
   316						<JUMP!BR1CON!SRC!FUNC!SPLOC>
   317						.MEXIT
   318						.ENDC
   319						<JUMP!BR1CON!SRC!FUNC>
   320						.ENDM
   321					;
   322						.MACRO	.BR4 SRC,FUNC,SPLOC,OPARG1 ;INDEXED JUMP ON BR4 SET
   323						.IF NB,OPARG1
   324						<JUMP!BR4CON!SRC!FUNC!SPLOC!OPARG1>
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 5-1
KMCMAC.MAC    30-DEC-82 03:48			INDEXED BRANCH INSTRUCTIONS

   325						.MEXIT
   326						.ENDC
   327						.IF NB,SPLOC
   328						<JUMP!BR4CON!SRC!FUNC!SPLOC>
   329						.MEXIT
   330						.ENDC
   331						<JUMP!BR4CON!SRC!FUNC>
   332						.ENDM
   333					;
   334						.MACRO	.BR7 SRC,FUNC,SPLOC,OPARG1 ;INDEXED JUMP ON BR7 SET
   335						.IF NB,OPARG1
   336						<JUMP!BR7CON!SRC!FUNC!SPLOC!OPARG1>
   337						.MEXIT
   338						.ENDC
   339						.IF NB,SPLOC
   340						<JUMP!BR7CON!SRC!FUNC!SPLOC>
   341						.MEXIT
   342						.ENDC
   343						<JUMP!BR7CON!SRC!FUNC>
   344						.ENDM
   345					;
   346						.MACRO	.Z SRC,FUNC,SPLOC,OPARG1 ;INDEXED JUMP ON Z BIT SET
   347						.IF NB,OPARG1
   348						<JUMP!ZCOND!SRC!FUNC!SPLOC!OPARG1>
   349						.MEXIT
   350						.ENDC
   351						.IF NB,SPLOC
   352						<JUMP!ZCOND!SRC!FUNC!SPLOC>
   353						.MEXIT
   354						.ENDC
   355						<JUMP!ZCOND!SRC!FUNC>
   356						.ENDM
   357					;
   358						.MACRO	.C SRC,FUNC,SPLOC,OPARG1 ;INDEXED JUMP ON C BIT SET
   359						.IF NB,OPARG1
   360						<JUMP!CCOND!SRC!FUNC!SPLOC!OPARG1>
   361						.MEXIT
   362						.ENDC
   363						.IF NB,SPLOC
   364						<JUMP!CCOND!SRC!FUNC!SPLOC>
   365						.MEXIT
   366						.ENDC
   367						<JUMP!CCOND!SRC!FUNC>
   368						.ENDM
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 6
KMCMAC.MAC    30-DEC-82 03:48			INDEXED BRANCH INSTRUCTIONS

   370
   371						.SBTTL		MOVE INSTRUCTIONS
   372					;
   373		000000			MOVE=0		;MOVE OPCODE
   374					;
   375					;	B SIDE DESTINATION GROUP
   376					;	NODST  !  ! [IBUS,] ADRI        !
   377					;	BRWRTE !--! [SRC,] FUNC [,SPN]  !--[,MAR]
   378					;	BRSHFT !  ! IMM,DATA		!
   379					;	MEM    !
   380					;
   381					;	NOTE: NODST AND BRSHFT HAVE ZERO OPERAND FORMS EQUIVALENT TO IMM,0
   382					;
   383						.MACRO	NODST	SRC,FUNC,SPADDR,OPARG1	;NO DESTINATION
   384						.IF NB,OPARG1
   385						<SRC!FUNC!SPADDR!OPARG1>
   386						.MEXIT
   387						.ENDC
   388						.IF NB,SPADDR
   389						.IIF IDN,SRC,IMM,<IMM!<FUNC&377>!SPADDR>
   390						.IIF DIF,SRC,IMM,<SRC!FUNC!SPADDR>
   391						.MEXIT
   392						.ENDC
   393						.IF NB,FUNC
   394						.IIF IDN,SRC,IMM,<IMM!<FUNC&377>>
   395						.IIF DIF,SRC,IMM,<SRC!FUNC>
   396						.MEXIT
   397						.ENDC
   398						.IF NB,SRC
   399						<SRC>
   400						.MEXIT
   401						.ENDC
   402						<0>
   403						.ENDM
   404					;
   405						.MACRO	BRWRTE	SRC,DATA,OPARG1,OPARG2	;MOVE TO BR
   406						.IF NB,OPARG2
   407						<MOVE!WRTEBR!SRC!DATA!OPARG1!OPARG2>
   408						.MEXIT
   409						.ENDC
   410						.IF NB,OPARG1
   411						.IIF IDN,SRC,IMM,<MOVE!WRTEBR!IMM!<DATA&377>!OPARG1>
   412						.IIF DIF,SRC,IMM,<MOVE!WRTEBR!SRC!DATA!OPARG1>
   413						.MEXIT
   414						.ENDC
   415						.IIF IDN,SRC,IMM,<MOVE!WRTEBR!IMM!<DATA&377>>
   416						.IIF DIF,SRC,IMM,<MOVE!WRTEBR!SRC!DATA>
   417						.ENDM
   418					;
   419						.MACRO	BRSHFT	SRC,DATA,OPARG1,OPARG2	;BR SHIFT RIGHT
   420						.IF NB,OPARG2
   421						<MOVE!SHFTBR!SRC!DATA!OPARG1!OPARG2>
   422						.MEXIT
   423						.ENDC
   424						.IF NB,OPARG1
   425						.IIF IDN,SRC,IMM,<MOVE!SHFTBR!IMM!<DATA&377>!OPARG1>
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 6-1
KMCMAC.MAC    30-DEC-82 03:48			MOVE INSTRUCTIONS

   426						.IIF DIF,SRC,IMM,<MOVE!SHFTBR!SRC!DATA!OPARG1>
   427						.MEXIT
   428						.ENDC
   429						.IF NB,DATA
   430						.IIF IDN,SRC,IMM,<MOVE!SHFTBR!IMM!<DATA&377>>
   431						.IIF DIF,SRC,IMM,<MOVE!SHFTBR!SRC!DATA>
   432						.MEXIT
   433						.ENDC
   434						.IF NB,SRC
   435						<MOVE!SHFTBR!SRC>
   436						.MEXIT
   437						.ENDC
   438						<MOVE!SHFTBR>
   439						.ENDM
   440					;
   441						.MACRO	MEM	SRC,DATA,OPARG1,OPARG2	;MOVE TO MEMORY
   442						.IF NB,OPARG2
   443						<MOVE!WRMEM!SRC!DATA!OPARG1!OPARG2>
   444						.MEXIT
   445						.ENDC
   446						.IF NB,OPARG1
   447						.IIF IDN,SRC,IMM,<MOVE!WRMEM!IMM!<DATA&377>!OPARG1>
   448						.IIF DIF,SRC,IMM,<MOVE!WRMEM!SRC!DATA!OPARG1>
   449						.MEXIT
   450						.ENDC
   451						.IIF IDN,SRC,IMM,<MOVE!WRMEM!IMM!<DATA&377>>
   452						.IIF DIF,SRC,IMM,<MOVE!WRMEM!SRC!DATA>
   453						.ENDM
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 7
KMCMAC.MAC    30-DEC-82 03:48			MOVE INSTRUCTIONS

   455
   456					;
   457					;	SP DESTINATION GROUP
   458					;	SP   !  ! [IBUS,] ADRI !
   459					;	SPBR !--! [SRC,] FUNC  !--,SPN [,MAR]
   460					;	        ! IMM, DATA    !
   461					;
   462						.MACRO	SP	SRC,FUNC,SPLOC,OPARG1	;LOAD SCRATCH-PAD
   463						.IF IDN,SRC,IMM
   464						.IIF NE,<FUNC&17>-SPLOC	.ERROR ;ILLEGAL USE OF IMMEDIATE MODE
   465						.ENDC
   466						.IF NB,OPARG1
   467						.IIF IDN,SRC,IMM,<MOVE!SPX!IMM!<FUNC&377>!SPLOC!OPARG1>
   468						.IIF DIF,SRC,IMM,<MOVE!SPX!SRC!FUNC!SPLOC!OPARG1>
   469						.MEXIT
   470						.ENDC
   471						.IF NB,SPLOC
   472						.IIF IDN,SRC,IMM,<MOVE!SPX!IMM!<FUNC&377>!SPLOC>
   473						.IIF DIF,SRC,IMM,<MOVE!SPX!SRC!FUNC!SPLOC>
   474						.MEXIT
   475						.ENDC
   476						<MOVE!SPX!SRC!FUNC>
   477						.ENDM
   478					;
   479						.MACRO	SPBR	SRC,FUNC,SPLOC,OPARG1	;LOAD SP AND BR
   480						.IF IDN,SRC,IMM
   481						.IIF NE,<FUNC&17>-SPLOC	.ERROR ;ILLEGAL USE OF IMMEDIATE MODE
   482						.ENDC
   483						.IF NB,OPARG1
   484						.IIF IDN,SRC,IMM,<MOVE!SPBRX!IMM!<FUNC&377>!SPLOC!OPARG1>
   485						.IIF DIF,SRC,IMM,<MOVE!SPBRX!SRC!FUNC!SPLOC!OPARG1>
   486						.MEXIT
   487						.ENDC
   488						.IF NB,SPLOC
   489						.IIF IDN,SRC,IMM,<MOVE!SPBRX!IMM!<FUNC&377>!SPLOC>
   490						.IIF DIF,SRC,IMM,<MOVE!SPBRX!SRC!FUNC!SPLOC>
   491						.MEXIT
   492						.ENDC
   493						<MOVE!SPBRX!SRC!FUNC>
   494						.ENDM
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 8
KMCMAC.MAC    30-DEC-82 03:48			MOVE INSTRUCTIONS

   496
   497					;
   498					;	OUTBUS/OUTBUS* DESTINATION 
   499					;		! [IBUS,] ADRI !
   500					;	OUT  !--! [SRC,] FUNC  !--,ADRO [,MAR]
   501					;		! IMM, DATA    !
   502					;
   503						.MACRO	OUT	SRC,DATA,ADRO,OPARG1	;WRITE TO OUTBUS/OUTBUS*
   504						.IF IDN,SRC,IMM
   505						.IIF NE,<DATA&17>-<ADRO&17> .ERROR	;ILLEGAL USE OF IMMEDIATE MODE
   506						.ENDC
   507						.IF NB,OPARG1
   508						.IIF IDN,SRC,IMM,<MOVE!IMM!<DATA&377>!ADRO!OPARG1>
   509						.IIF DIF,SRC,IMM,<MOVE!SRC!DATA!ADRO!OPARG1>
   510						.MEXIT
   511						.ENDC
   512						.IF NB,ADRO
   513						.IIF IDN,SRC,IMM,<MOVE!IMM!<DATA&377>!ADRO>
   514						.IIF DIF,SRC,IMM,<MOVE!SRC!DATA!ADRO>
   515						.MEXIT
   516						.ENDC
   517						<MOVE!SRC!DATA>
   518						.ENDM
   519					;
   520						.MACRO	OUTPUT	SRC,DATA,ADRO,OPARG1	;WRITE TO OUTBUS/OUTBUS*
   521						.IF IDN,SRC,IMM
   522						.IIF NE,<DATA&17>-<ADRO&17> .ERROR	;ILLEGAL USE OF IMMEDIATE MODE
   523						.ENDC
   524						.IF NB,OPARG1
   525						.IIF IDN,SRC,IMM,<MOVE!IMM!<DATA&377>!ADRO!OPARG1>
   526						.IIF DIF,SRC,IMM,<MOVE!SRC!DATA!ADRO!OPARG1>
   527						.MEXIT
   528						.ENDC
   529						.IF NB,ADRO
   530						.IIF IDN,SRC,IMM,<MOVE!IMM!<DATA&377>!ADRO>
   531						.IIF DIF,SRC,IMM,<MOVE!SRC!DATA!ADRO>
   532						.MEXIT
   533						.ENDC
   534						<MOVE!SRC!DATA>
   535						.ENDM
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 9
KMCMAC.MAC    30-DEC-82 03:48			MOVE INSTRUCTIONS

   537
   538					;
   539					;	IMPLICIT MAR FUNCTION GROUP
   540					;	MEMINC !  ! [IBUS,] ADRI
   541					;	LDMA   !--! [SRC,] FUNC [,SPN]
   542					;	LDMAP  !  ! IMM, DATA
   543					;
   544						.MACRO	MEMINC	SRC,DATA,OPARG1	;MOVE TO MEM, INCR MAR
   545						.IF NB,OPARG1
   546						<MOVE!WRMEM!INCMAR!SRC!DATA!OPARG1>
   547						.MEXIT
   548						.ENDC
   549						.IIF IDN,SRC,IMM,<MOVE!WRMEM!INCMAR!IMM!<DATA&377>>
   550						.IIF DIF,SRC,IMM,<MOVE!WRMEM!INCMAR!SRC!DATA>
   551						.ENDM
   552					;
   553						.MACRO	LDMA	SRC,DATA,OPARG1	;LOAD MEMORY ADDRESS REG
   554						.IF NB,OPARG1
   555						<MOVE!LDMAR!SRC!DATA!OPARG1>
   556						.MEXIT
   557						.ENDC
   558						.IIF IDN,SRC,IMM,<MOVE!LDMAR!IMM!<DATA&377>>
   559						.IIF DIF,SRC,IMM,<MOVE!LDMAR!SRC!DATA>
   560						.ENDM
   561					;
   562						.MACRO	LDMAP	SRC,DATA,OPARG1	;LOAD MEMORY PAGE NUMBER
   563						.IF NB,OPARG1
   564						<MOVE!LDMAPG!SRC!DATA!OPARG1>
   565						.MEXIT
   566						.ENDC
   567						.IIF IDN,SRC,IMM,<MOVE!LDMAPG!IMM!<DATA/400>>
   568						.IIF DIF,SRC,IMM,<MOVE!LDMAPG!SRC!DATA>
   569						.ENDM
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 10
KMCMAC.MAC    30-DEC-82 03:48			MOVE INSTRUCTIONS

   571
   572					;
   573					;	GET ADDRESS GROUP
   574					;	BRADDR !
   575					;	BRADRE !--! LABEL [,MAR]
   576					;	MEMADR !
   577					;	MEMADE !
   578					;
   579					;
   580						.MACRO	BRADDR	ADDRES,OPARG1	;PUT ADDR (1 BYTE) IN BR
   581						.IF NB,OPARG1
   582						<MOVE!WRTEBR!<ADDRES-START&777/2>!OPARG1>
   583						.IFF
   584						<MOVE!WRTEBR!<ADDRES-START&777/2>>
   585						.ENDC
   586						.ENDM
   587					;
   588						.MACRO	BRADRE	ADDRES,OPARG1	;PUT EXT ADDRES (UPPER 4 BITS) IN BR
   589						.IF NB,OPARG1
   590						<MOVE!WRTEBR!<ADDRES-START/1000&17>!OPARG1>
   591						.IFF
   592						<MOVE!WRTEBR!<ADDRES-START/1000&17>>
   593						.ENDC
   594						.ENDM
   595					;
   596						.MACRO	MEMADR	ADDRES,OPARG1	;WRITE ADDRESS TO MEMORY
   597						.IF NB,OPARG1
   598						<MOVE!WRMEM!<ADDRES-START&777/2>!OPARG1>
   599						.IFF
   600						<MOVE!WRMEM!<ADDRES-START&777/2>>
   601						.ENDC
   602						.ENDM
   603					;
   604						.MACRO	MEMADE	ADDRES,OPARG1	;WRITE EXTENDED ADDRESS TO MEMORY
   605						.IF NB,OPARG1
   606						<MOVE!WRMEM!<ADDRES-START/1000&17>!OPARG1>
   607						.IFF
   608						<MOVE!WRMEM!<ADDRES-START/1000&17>>
   609						.ENDC
   610						.ENDM
   611					;
   612					;
   613					;	OTHER MISC HANDY COMBINATIONS
   614					;
   615					;
   616						.MACRO	COMP	SRC,SPADDR	;COMPARE SOURCE AND SP
   617						<SUBOC!SRC!SPADDR>
   618						.ENDM
   619					;
   620						.MACRO	JMPEXT	ADDRES		;LOAD PC PAGE AND BRANCH EXTENDED
   621						BRADRE	ADDRES
   622						OUT	BR,SELB,OPCHGH
   623						BREXT	ADDRES
   624						.ENDM
   625					;
   626						.MACRO	INCMA			;INCREMENT THE MAR
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 10-1
KMCMAC.MAC    30-DEC-82 03:48			MOVE INSTRUCTIONS

   627						<INCMAR>
   628						.ENDM
   629					;
   630						.MACRO	BROTAT			;BR ROTATE
   631						<MOVE!SHFTBR!SELB!BR>
   632						.ENDM
   633					;
   634						.MACRO RSTATE	ADDRES		;UPDATE RECIEVER STATE
   635						MEMADR	ADDRES
   636						.ENDM
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 11
KMCMAC.MAC    30-DEC-82 03:48			MOVE INSTRUCTIONS

   638
   639					;
   640					;	SUBROUTINE CALLS
   641					;
   642						.MACRO	CALLSB	REG,ADDRES,BRGVAL	;SUBROUTINE CALL
   643						DISP=<.-START>/2&377
   644						.IF B	BRGVAL
   645						BRWRTE	IMM,DISP+3
   646						.IFF
   647						BRWRTE	IMM,DISP+4
   648						.ENDC
   649						SP	BR,SELB,REG
   650						.IIF NB,BRGVAL,BRWRTE	IMM,BRGVAL
   651						ALWAYS	ADDRES
   652						.ENDM
   653					;
   654					;
   655						.MACRO	CALLSR	REG,ADDRES,RADDR,BRGVAL	;SUBROUTINE CALL WITH SPECIAL RETURN ADD
   656						BRADDR	RADDR
   657						SP	BR,SELB,REG
   658						.IIF NB,BRGVAL,BRWRTE	IMM,BRGVAL
   659						ALWAYS	ADDRES
   660						.ENDM
   661					;
   662					;
   663						.MACRO	RTNSUB	REG,PAGE	;SUBROUTINE RETURN
   664						.ALWAY	SELA,REG,PAGE
   665						.ENDM
   666
   667					;
   668					;	4K SUBROUTINE CALL
   669					;	NOTE: TWO (2)!!! SP'S ARE USED IN THIS CALL (IE. REG,REG+1)
   670					;
   671						.MACRO	CALLEX	REG,ADDRES,BRGVAL	;SUBRTN CALL ACROSS 4K
   672						DISP=<.-START>/2+6
   673						.IIF NB,BRGVAL,DISP=DISP+1
   674						RPAGE=DISP/400&17
   675						SPAGE=<ADDRES-START>/1000&17
   676						.IIF NE,<RPAGE/4>-<SPAGE/4>,DISP=DISP+2
   677
   678						BRWRTE	IMM,<DISP/400&17>
   679						SP	BR,SELB,REG
   680						BRWRTE	IMM,<DISP&377>
   681						SP	BR,SELB,REG'+1
   682
   683						.IF EQ,<RPAGE/4>-<SPAGE/4>
   684						   .IIF NB,BRGVAL,BRWRTE	IMM,BRGVAL
   685						   ALWAYS	ADDRES
   686						.IFF
   687						   BRWRTE	IMM,SPAGE
   688						   OUT		BR,SELB,OPCHGH
   689						   .IIF NB,BRGVAL,BRWRTE	IMM,BRGVAL
   690						   BREXT	ADDRES
   691						.ENDC
   692						.ENDM
   693					;
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 11-1
KMCMAC.MAC    30-DEC-82 03:48			MOVE INSTRUCTIONS

   694					;
   695						.MACRO	CALREX	REG,ADDRES,RADDR,BRGVAL	;CALL W/RETURN ADR EXTENDED
   696						BRADRE	RADDR
   697						SP	BR,SELB,REG
   698						BRADDR	RADDR
   699						SP	BR,SELB,REG'+1
   700
   701						.IF EQ,<<.-START>&6000>-<<ADDRES-START>&6000>
   702						  .IIF NB,BRGVAL,BRWRTE	IMM,BRGVAL
   703						  ALWAYS	ADDRES
   704						.IFF
   705						  BRADRP	ADDRES
   706						  OUT		BR,SELB,OPCHGH
   707						  .IIF NB,BRGVAL,BRWRTE	IMM,BRGVAL
   708						  BREXT		ADDRES
   709						.ENDC
   710						.ENDM
   711					;
   712					;
   713						.MACRO	RTNEX	REG		;4K CALL RETURN
   714						BRWRTE	SELA,REG
   715						OUT	BR,SELB,OPCHGH
   716						.BREXT	SELA,REG'+1
   717						.ENDM
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 12
KDPMCX.MAC    30-DEC-82 03:47			MOVE INSTRUCTIONS

   719						.TITLE	KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11
   720						.IDENT	/X1.4/
   721					;	FILE	DUPEQU.MAC
   722					;
   723					;                    COPYRIGHT (C) 1980, 1981, 1982
   724					;                    DIGITAL EQUIPMENT CORPORATION
   725					;                        MAYNARD, MASSACHUSETTS
   726					;
   727					;     THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY  BE  USED
   728					;     AND COPIED ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE
   729					;     AND WITH THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE.   THIS
   730					;     SOFTWARE  OR ANY OTHER COPIES THEREOF MAY NOT BE PROVIDED OR
   731					;     OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.  NO  TITLE  TO
   732					;     AND OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
   733					;
   734					;     THE INFORMATION  IN  THIS  SOFTWARE  IS  SUBJECT  TO  CHANGE
   735					;     WITHOUT  NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT
   736					;     BY DIGITAL EQUIPMENT CORPORATION.
   737					;
   738					;     DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY
   739					;     OF  ITS  SOFTWARE  ON  EQUIPMENT  WHICH  IS  NOT SUPPLIED BY
   740					;     DIGITAL.
   741					;
   742					; DISTRIBUTED SYSTEMS SOFTWARE ENGINEERING
   743					;
   744					; MODIFIED BY:
   745					;
   746					;	SCOTT G. ROBINSON, 17-MAR-81 : VERSION X1.2
   747					;	- FIX HUNG DUP PROBLEMS IN XMTDON AND XMTABT
   748					;	- ENSURE PROPER HANDLING OF RTS FOR FULL DUPLEX MODE.
   749					;	- ENSURE BIT-STUFF MODE IDLE FLAGS (X.25 REQUIREMENT)
   750					;	ALAN D. PECKHAM, 4-MAR-82 : VARSION X1.3
   751					;	- MARK CHANGES MADE BY LAST FIX.
   752					;	- CHANGE HANDLING OF RTS INSTITUTED IN LAST FIX:
   753					;	  AVOID TOGGLING RTS ONLY FOR NON-DEC MODE.
   754					;	ALAN D. PECKHAM, 4-MAY-82 : VARSION X1.4
   755					;	- FIX CONTROL-IN TO ACCEPT DUP MAINTENANCE MODE BITS A AND B
   756					;	  IN BSEL7 BITS 2 AND 3.  ISOLATE THESE BITS AND PLACE THEM
   757					;	  IN DUP REGISTER XX5 INSTEAD OF CLEARING IT.
   758					;
   759					 
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 13
KDPMCX.MAC    30-DEC-82 03:47			MOVE INSTRUCTIONS

   761
   762						.SBTTL	TABLE OFFSET DEFINITIONS
   763						.NLIST	CND
   764					 
   765					 
   766		000001			BIT0=1
   767		000002			BIT1=2
   768		000004			BIT2=4
   769		000010			BIT3=10
   770		000020			BIT4=20
   771		000040			BIT5=40
   772		000100			BIT6=100
   773		000200			BIT7=200
   774					 
   775					 
   776					; RAM TABLE OFFSETS PER DDCMP/SDLC LINE
   777					 
   778		000000			D.RSTR=0		;TIMER RESTART VALUE
   779					 
   780		000001			D.TIME=D.RSTR+1		;TIMER VALUE
   781					 
   782		000002			D.CSR=D.TIME+1		;CSR ADDRESS (2 BYTES)
   783					 
   784		000004			D.STS=D.CSR+2		;STATUS
   785		000200				DS.CRI=BIT7		;BIT STUFF CRC INHIBIT
   786		000200				DS.SLT=BIT7		;DDCMP SELECT ON CURRENT MESSAGE
   787		000100				DS.QSC=BIT6		;Q-SYNC BIT
   788		000040				DS.DEC=BIT5		;DEC MODE
   789		000020				DS.IGN=BIT4		;IGNORE CURRENT MESSAGE
   790		000010				DS.HDX=BIT3		;HALF DUPLEX LINE
   791		000004				DS.SEC=BIT2		;SECONDARY STATION
   792		000002				DS.DSR=BIT1		;LAST STATE OF DATA SET READY
   793		000001				DS.NUM=BIT0		;RECEIVING NUMBERED MESSAGE
   794					 
   795		000005			D.RPTR=D.STS+1		;RECEIVE STATE POINTER
   796					 
   797		000006			D.SADR=D.RPTR+1		;SECONDARY ADDRESS
   798					 
   799		000007			D.DCC1=D.SADR+1		;DDCMP DATA CHARACTER COUNT(LOW BYTE)
   800					 
   801		000010			D.DCC2=D.DCC1+1		;DDCMP DATA CHARACTER COUNT(HIGH BYTE)
   802					; THE ABOVE TWO BYTES WILL BE USED AS THE LOCAL DELAY BUFFER FOR SDLC.
   803					 
   804		000007			D.SILO=D.DCC1		;TWO CHARACTER SDLC SILO
   805					 
   806		000011			D.RDP=D.DCC2+1		;CURRENT RECEIVE DESCRIPTOR POINTER (3 BYTES)
   807					 
   808		000014			D.ARLP=D.RDP+3		;ALTERNATE LINK POINTER (3 BYTES)
   809					 
   810		000017			D.ORBC=D.ARLP+3		;ORIGINAL RECEIVE BYTE COUNT (2 BYTES)
   811					 
   812		000021			D.ORBA=D.ORBC+2		;ORIGINAL RECEIVE CURRENT BUFFER ADDRESS (3 BYTES)
   813					 
   814		000024			D.RBD=D.ORBA+3		;CURRENT RECEIVE BUFFER DESCRIPTOR(5 BYTES)
   815		000024			 D.RBDC=D.RBD		;CURRENT RECEIVE COUNTER
   816
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 13-1
KDPMCX.MAC    30-DEC-82 03:47		TABLE OFFSET DEFINITIONS

   817		000026			 D.RBDA=D.RBDC+2	;CURRENT RECEIVE BUFFER ADDRESS
   818		000030			 D.RBDF=D.RBDA+2	;FLAG BIT BYTE
   819		000200				DR.LST=BIT7		;DESCRIPTOR IS LAST IN LIST 
   820		000100				DR.ABA=BIT6		;ALTERNATE BUFFER IS ASSIGNED
   821		000040				DR.CBA=BIT5		;CURRENT BUFFER IS ASSIGNED
   822		000010				DR.17=BIT3		;RCV ADDRESS BIT 17
   823		000004				DR.16=BIT2		;RCV ADDRESS BIT 16
   824		000001				DR.FST=BIT0		;FIRST CHARACTER IN CURRENT BUFFER
   825					 
   826		000031			D.ERC=D.RBD+5		;EVEN RECEIVE CHARACTER
   827					 
   828		000032			D.XDP=D.ERC+1		;CURRENT TRANSMIT DESCRIPTOR POINTER (3 BYTES)
   829					 
   830		000035			D.AXLP=D.XDP+3		;ALTERNATE TRANSMIT LINK POINTER (3 BYTES)
   831					 
   832		000040			D.OXBC=D.AXLP+3		;ORIGINAL TRANSMIT BYTE COUNT (2 BYTES)
   833					 
   834		000042			D.DUMMY=D.OXBC+2	;3 BYTES OF DUMMY DATA
   835					 
   836		000045			D.XBD=D.DUMMY+3		;CURRENT TRANSMIT BUFFER DESCRIPTOR (5 BYTES)
   837		000045			 D.XBDC=D.XBD		;COUNT (LOW BYTE)
   838		000047			 D.XBDA=D.XBDC+2	;ADDRESS (LOW BYTE)
   839		000051			 D.XBDF=D.XBDA+2	;FLAG BITS BYTE
   840		000200				DX.LST=DR.LST		;DISCRIPTOR IS LAST IN LIST
   841		000100				DX.ABA=DR.ABA		;ALTERNATE XMT BUFFER ASSIGNED
   842		000040				DX.CBA=DR.CBA		;CURRENT XMT BUFFER ASSIGNED
   843		000020				DX.SYN=BIT4		;SEND SYNCS
   844		000010				DX.17=BIT3				;XMT ADDRESS BIT 17
   845		000004				DX.16=BIT2				;XMT ADDRESS BIT 16
   846		000002				DX.EOM=BIT1				;END OF MESSAGE
   847		000001				DX.SOM=BIT0				;START OF MESSAGE
   848					 
   849		000052			D.OXC=D.XBD+5		;ODD TRANSMIT CHARACTER
   850					 
   851		000053			D.SYNC=D.OXC+1		;TRANSMIT SYNC COUNT
   852					 
   853		000054			D.XSTS=D.SYNC+1		;TRANSMIT STATUS FLAGS
   854		000021				DT.ABT=BIT0!BIT4  ;TRANSMIT ABORT PENDING
   855		000002				DT.AB1=BIT1	;TRANSMIT ABORT STAGE 1 PENDING
   856					 
   857		000060			D.LNG=60			;LENGTH OF TABLE
   858					 
   859					; RAM OFFSET PER COMM IOP
   860					 
   861		002000			P.MSTA=2000		;LAST RAM LOCATION + 1
   862		001777			P.SLOT=P.MSTA-1		;COMPLETION SILO NEXT OUT POINTER
   863		001776			P.SLIN=P.SLOT-1		;COMPLETION SILO NEXT IN POINTER
   864		001775			P.PORT=P.SLIN-1		;PORT SERVICE ROUTINE
   865		001775			P.PLST=P.PORT
   866		000006				SENTRY=6	;SIZE OF A SILO ENTRY
   867		000035				NMSENT=29.	;NUMBER OF SILO ENTRIES
   868		001517			P.NPR=P.PLST-<SENTRY*NMSENT>	;COMPLETION SILO
   869		001767				SILOED=P.PLST-SENTRY	;LAST ENTRY IN SILO
   870		001457			P.LADR=P.NPR-<MAXDEV*2>	;TABLE OF LINE TABLE ADDRESSES
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 14
KDPMCX.MAC    30-DEC-82 03:47		TABLE OFFSET DEFINITIONS

   872
   873					;
   874					; SCRATCH PAD DEFINITIONS
   875					;
   876		000007				SP.CHR=SP7		;LOW BYTE OF DUP'S CSR2 (RECEIVE CHARACTER)
   877		000010				SP.RST=SP10		;HIGH BYTE OF DUP'S CSR2 (RECEIVE CHARACTER STATUS)
   878		000011				SP.STS=SP11		;COMM IOP STATUS REGISTER
   879		000012				SP.LN=SP12		;COMM IOP LINE # CURRENTLY SELECTED
   880		000013				SP.RM0=SP13		;RAM TABLE ADDRESS FOR CURRENT LINE - BITS 0-7
   881		000014				SP.RM1=SP14		;RAM TABLE ADDRESS FOR CURRENT LINE - BITS 8&9
   882		000015				SP.SB1=SP15		;SUBROUTINE RETURN ADDRESS (LEVEL B SUBROUTINES)
   883		000016				SP.SUB=SP16		;SUBROUTINE RETURN ADDRESS (LEVEL A SUBROUTINES
   884		000017				SP.CS0=SP17		;IMAGE OF CSR0 (LOW BYTE)
   885
   886
   887					; DUP-11 INTERFACE RELATED EQUATES
   888					;	RECEIVE CONTROL AND STATUS REGISTERS (XX0)
   889					 
   890					;		LOW BYTE
   891		000002			DUPDTR=BIT1		;DATA TERMINAL READY
   892		000004			DUPRTS=BIT2		;REQUEST TO SEND
   893		000020			DUPREN=BIT4		;ENABLE RECEIVER
   894		000200			DUPRDN=BIT7		;RECEIVE DONE
   895					;		HIGH BYTE
   896		000001			DUPSSY=BIT0		;STRIP SYNC
   897		000002			DUPDSR=BIT1		;DATA SET READY
   898					 
   899					 
   900					;RECEIVE DATA BUFFER REGISTER -RXDBUF (XX2)
   901					 
   902					;		HIGH BYTE
   903		000001			DUPRSM=BIT0		;RECEIVE START OF MESSAGE
   904		000002			DUPREM=BIT1		;RECEIVE END OF MESSAGE
   905		000004			DUPRAB=BIT2		;RECEIVE ABORT
   906		000020			DUPCPE=BIT4		;CRC/PARITY ERROR
   907		000100			DUPOVR=BIT6		;OVERUN ERROR
   908		000200			DUPRE=BIT7		;RECEIVE ERROR
   909					 
   910					;PARAMETER CONTROL AND STATUS REGISTER -PARCSR (XX2)
   911					 
   912					;		HIGH BYTE
   913		000002			DUPCRI=BIT1		;CRC INHIBIT
   914		000020			DUPSAM=BIT4		;SECONDARY ADDRESS MODE
   915		000200			DUPDEC=BIT7		;DEC MODE
   916					 
   917					;TRANSMIT CONTROL AND STAUS REGISTER-TXCSR (XX4)
   918					;		LOW BYTE
   919		000010			DUPHDX=BIT3		;HALF DUPLEX MODE
   920		000020			DUPSND=BIT4		;SEND
   921		000200			DUPTXD=BIT7		;TRANSMIT DONE
   922					 
   923					;		HIGH BYTE
   924		000001			DUPDR=BIT0			;DEVICE RESET
   925					 
   926					;TRANSMIT DATA BUFFER REGISTER - TXDBUF (XX6)
   927					 
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 14-1
KDPMCX.MAC    30-DEC-82 03:47		TABLE OFFSET DEFINITIONS

   928					;		HIGH BYTE
   929		000001			DUPTSM=BIT0		;TRANSMIT START OF MESSAGE
   930		000002			DUPTEM=BIT1		;TRANSMIT END OF MESSAGE
   931		000004			DUPTAB=BIT2		;TRANSMIT ABORT
   932					 
   933					 
   934					;NPR CONTROL EQUATES
   935					 
   936		000021			DATO=021			;WORD OUT NPR
   937		000221			DATOB=221			;BYTE OUT NPR
   938		000002			HLDBUS=002			;HOLD BUS
   939					 
   940					 
   941					;DDCMP EQUATES
   942					 
   943		000201			SOH=201			;START OF HEADER-NUMBERED MESSAGE
   944		000005			ENQ=005			;ENQUIRY
   945		000220			DLE=220			;DELETE-MAINTAINANCE MESSAGE
   946		000226			SYNC=226		;SYNC CHARACTER
   947					 
   948		000007			SYNCNT=7		;NUMBER OF SYNC'S TO TRANSMIT
   949					 
   950					 
   951					 
   952					;CONTROL/BUFFER ADDRESS OUT PARAMETERS
   953					 
   954		000200			C.BAOX=200		;BA OUT FOR TRANSMIT OPERATION
   955		000204			C.BAOR=204		;BA OUT FOR RECEIVE OPERATION
   956		000201			C.CLOX=201		;CONTROL OUT  FOR TRANSMIT OPERATION
   957		000205			C.CLOR=205		;CONTROL OUT FOR RECEIVE OPERATION
   958					 
   959		000020			EOM=20			;END OF MESSAGE
   960					 
   961					;ERROR CODES
   962					 
   963		000006			ER.ABO=6		;RECEIVE ABORT (BIT STUFF)
   964		000010			ER.HBC=10		;DDCMP HEADER BCC ERROR
   965		000012			ER.CRC=12		;RECEIVE CRC ERROR
   966		000014			ER.NBA=14		;NO BUFFER AVAILABLE (RECEIVE)
   967		000016			ER.DSR=16		;DATA SET READY TRANSITION
   968		000020			ER.NXM=20		;NON-EXISTENT MEMORY
   969		000022			ER.UNR=22		;TRANSMIT UNDERRUN
   970		000024			ER.OVR=24		;RECEIVE OVERRUN
   971		000026			ER.KIL=26		;USER KILL
   972					 
   973					 
   974		000020				MAXDEV=16.	;MAXIMUM NUMBER OF DUP'S GEN'ED FOR
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 14-2
KDPMCX.MAC    30-DEC-82 03:47		INIT - INITIALIZATION

   976						.SBTTL	INIT - INITIALIZATION
   977					;	FILE	IDLE.DUP
   978
   979					;+
   980					; **INIT-INITIALIZATION ROUTINE**
   981					;
   982					; INPUTS:
   983					;	BRG = 0 (MASTER CLEAR)
   984					;	MAR = 0 (MASTER CLEAR)
   985					; OUTPUTS:
   986					;	RAM IS CLEARED EXCEPT FOR THE COUNTERS IN THE POLLING LIST
   987					;	WHICH ARE SET TO MINUS ONE TO INDICATE NO ACTIVE DEVICES.
   988					;	THE ADDRESSES OF EACH LINE TABLE IS PUT IN A TABLE AT P.LADR
   989					;	THE CSR'S ARE ALSO CLEARED
   990					;-
   991
   992	000000'				$KDPMC::			;START OF CODE GLOBAL LABEL
   993
   994	000000'				INIT:	OUT	BR,SELB,OINCON	;ZERO THE INPUT CONTROL CSR
   995	000002'					OUT	BR,SELB,OOCON	;ZERO THE OUTPUT CONTROL CSR
   996	000004'					SP	BR,SELB,SP.RM1	;CLEAR OUT RAM ADDRESS HIGH SCRATCH PAD
   997	000006'					SP	BR,SELB,SP.RM0	;CLEAR LOW BYTE OF ADDRESS
   998	000010'					SP	BR,SELB,SP4	;ZERO SP4
   999	000012'				10$:	MEMINC	IMM,0		;ZERO THE NEXT MEMORY LOCATION
  1000	000014'					SPBR	IBUS,NPR,SP0	;READ THE NPR CONTROL REGISTER
  1001	000016'					BRWRTE	BR,ADD,SP0	;SHIFT IT LEFT
  1002	000020'					BR7	20$		;OVERFLOWED MAR TO 10 BITS - ALL DONE
  1003	000022'					ALWAYS	10$		;KEEP ZEROING RAM
  1004					 
  1005					; MAR = 0 FROM OVERFLOW
  1006					 
  1007	000024'				20$:
  1008	000024'					BRWRTE	IMM,MAXDEV*2	;MAXIMUM NUMBER OF DEVICES GENED FOR TIMES 2
  1009	000026'					SP	BR,SELB,SP5	;SAVE IT IN A SCRATCH PAD
  1010	000030'				INIT1:
  1011	000030'					BRWRTE	TWOA,SP4,INCMAR	;GET CURRENT LINE TIMES 2
  1012	000032'					SP	BR,SELB,SP0		;SAVE IT IN SP0
  1013	000034'					COMP	BR,SP5		;ARE WE FINISHED WITH ALL LINES
  1014	000036'					Z	40$		;ALL DONE
  1015	000040'					SP	INCA,SP4	;ONE MORE LINE INITIALIZED
  1016	000042'					MEM	IMM,377		;INITIALIZE POLLING COUNTER TO MINUS ONE
  1017	000044'					BRWRTE	IMM,P.LADR,LDMAPG	;LOAD THE BRG WITH THE ADDRESS OF
  1018									;THE LINE TABLE ADDRESS TABLE AND SET THE
  1019									;MAR HI TO THAT ADDRESS
  1020	000046'					LDMA	BR,ADD,SP0	;POINT TO THIS LINES ENTRY IN THE TABLE
  1021	000050'					MEMINC	SELA,SP.RM0	;SAVE THE LINE TABLE ADDRESS
  1022	000052'					MEM	SELA,SP.RM1	;LOW AND HI
  1023	000054'					ALWAYS	NXTTBL		;"CALL" ROUTINE TO CALCULATE ADDRESS OF
  1024									;NEXT LINE'S TABLE (OFFSET BY D.TIME)
  1025									;RETURN MADE TO INIT1 WITH MAR&SP.RM0,1 SET
  1026	000056'				40$:	LDMAP	IMM,P.PORT	;LOAD MAR HIGH WITH ADDRESS OF PORT STATUS BYTE
  1027	000060'					LDMA	IMM,P.PORT	;LOAD MAR LOW
  1028	000062'					MEMADR	RDOSET,INCMAR	;ADDRESS OF ROUTINE TO CHECK FOR OUTPUT COMPLETIONS
  1029	000064'					MEMINC	IMM,P.NPR	;INITIALIZE COMPLETION SILO IN POINTER
  1030	000066'					MEM	IMM,377		;INITIALIZE COMPLETION SILO OUT POINTER (LOGICAL ZERO)
  1031									;FALL INTO IDLE LOOP
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 15
KDPMCX.MAC    30-DEC-82 03:47		INIT - INITIALIZATION

  1033
  1034						.SBTTL	IDLE - IDLE LOOP
  1035
  1036					;+
  1037					; **IDLE-LOOP BETWEEN PORT AND DEVICE SERVICE
  1038					;
  1039					; INPUTS:
  1040					;	P.PORT = ADDRESS OF NEXT PORT SERVICE ROUTINE
  1041					;
  1042					; OUTPUTS:
  1043					;	IF THE PGMCLK BIT IN THE MISC REG HAS EXPIRED,
  1044					;	THE DEVICES ARE POLLED AND SERVICED BY THE TIMER ROUTINE
  1045					;	IN ANY CASE, THE NEXT PORT ROUTINE IS BRANCHED TO.
  1046					;
  1047					;	MAR  = P.PORT
  1048					;	ALL PORT ROUTINES RETURN TO IDLE
  1049					;-
  1050
  1051	000070'				IDLE:	SPBR	IBUS,UBBR,SP0	;READ THE BUS REQUEST REGISTER AND
  1052									;STORE THE IMAGE IN SP0 AND THE BRG
  1053	000072'					BR4	TIMER		;BRANCH IF THE TIMER HAS EXPIRED
  1054	000074'				IDLE1:	LDMA	IMM,P.PORT	;LOAD MAR TO POINT TO PORT STATUS
  1055	000076'					LDMAP	IMM,P.PORT	;LOAD MAR HIGH
  1056	000100'					.ALWAY	MEMX,SELB,0	;TIMER HAS NOT EXPIRED YET, CHECK THE
  1057									;DATA PORT TO SEE IF ANY PROCESSING IS REQUIRED
  1058									;RAM CONTAINS THE ADDRESS OF THE APPROPRIATE
  1059									;SERVICE ROUTINE
  1060									; RQISET --> WAITING FOR RQI TO SET
  1061									; RDICLR --> WAITING FOR RDYI TO CLEAR
  1062									; RDOSET --> WAITING FOR A COMPLETION
  1063									; RDOCLR --> WAITING FOR RDYO TO CLEAR
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 16
KDPMCX.MAC    30-DEC-82 03:47		IDLE - IDLE LOOP

  1065
  1066						.SBTTL	DATA PORT PROCESSING ROUTINES
  1067					;+
  1068					; **RDOCLR-WAITING FOR READY OUT TO BE CLEARED BY THE PDP-11**
  1069					;
  1070					; INPUTS:
  1071					;	MAR = PORT SERVICE ROUTINE (P.PORT)
  1072					; OUTPUTS:
  1073					;	THIS ROUTINE WAITS FOR READY OUT TO BE CLEARED BY THE PDP-11
  1074					;	THUS SIGNALING IT IS DONE.  IT ALSO CHECKS IF OUTPUT INTERRUPTS
  1075					;	ARE REQUESTED IN THE MEANTIME AND WILL GENERATE ONE IF THEY WERE
  1076					;	NOT REQUESTED WHEN RDYO WAS SET.
  1077					;
  1078					;	WHEN RDYO IS CLEARED, CONTROL IS PASSED TO RQISET TO CHECK
  1079					;	FOR PENDING PORT REQUESTS
  1080					;
  1081					;	NOTE: THERE EXISTS THE POSSIBILITY OF AN INTERRUPT BEING GENERATED
  1082					;	IF IEO IS CLEARED AT ANY TIME AFTER IT IS TESTED BY THE MICROPROCESSOR
  1083					;	(APPROX A 1.5US WINDOW)
  1084					;-
  1085
  1086	000102'				RDOCLR:
  1087	000102'					BRWRTE	IBUS,OCON		;READ CONTROL CSR BSEL2
  1088	000104'					BR7	RDOST1			;READY OUT STILL SET, CHECK INTERRUPTS
  1089					;
  1090					; ENTER HERE IF AN OUTPUT INTERRUPT HAS ALREADY BEEN GENERATED
  1091					;
  1092	000106'				RDOCL1:
  1093	000106'					BRWRTE	IBUS,OCON		;READ OUTPUT CONTROL CSR
  1094	000110'					BR7	IDLE			;READY OUT STILL SET
  1095	000112'					BRWRTE	IMM,0			;CLEAR OUTPT CONTROL CSR
  1096	000114'					OUT	BR,SELB,OOCON		;..
  1097	000116'					MEMADR	RQISET			;LOOK FOR RQI NEXT
  1098	000120'					ALWAYS	IDLE			;BACK TO IDLE LOOP
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 17
KDPMCX.MAC    30-DEC-82 03:47		DATA PORT PROCESSING ROUTINES

  1100
  1101					;+
  1102					; **RDOSET-MICROPROCESSOR COMPLETION POSTING**
  1103					;
  1104					; INPUTS:
  1105					;	MAR = PORT SERVICE ROUTINE (P.PORT)
  1106					; OUTPUTS:
  1107					;	CHECK THE COMPLETION SILO TO SEE IF ANY COMPLETIONS ARE PENDING.
  1108					;	IF THERE ARE POST THE COMPLETION TO THE PDP-11 
  1109					;	SILO POINTERS (P.SLOT,P.SLIN) ARE UPDATED
  1110					;	AND WAIT FOR RDYO TO CLEAR (RDOCLR)
  1111					;	OTHERWISE CHECK TO SEE IF THE PDP-11 HAS ANY INPUT DATA (RQISET)
  1112					;-
  1113
  1114	000122'				RDOSET:
  1115	000122'					MEMADR	RQISET			;LOOK FOR RQI NEXT
  1116	000124'					LDMA	IMM,P.SLOT	;SET MAR TO COMPLETION SILO NEXT OUT POINTER
  1117	000126'					LDMA	MEMX,SELB	;POINT COMPLETION TO NEXT OUT ENTRY
  1118	000130'					Z	IDLE		;THE POINTER IS ZERO THEREFORE THE SILO IS EMPTY
  1119					 
  1120					; A COMPLETION OUTPUT IS PENDING IN THE COMPLETION SILO. MAR POINTS TO THE
  1121					; NEXT ENTRY
  1122	000132'					OUT	MEMI,SELB,OLINEN ;WRITE THE LINE NUMBER BYTE
  1123					 
  1124					; READ THE SECOND WORD OF THE COMPLETION SILO AND SET UP CSR 4
  1125					 
  1126	000134'					OUT	MEMI,SELB,OPORT1 ;WRITE PORT BYTE 1
  1127	000136'					OUT	MEMI,SELB,OPORT2 ;AND PORT BYTE 2
  1128					 
  1129					; READ THE THIRD WORD OF THE COMPLETION SILO AND SET UP CSR 6
  1130					 
  1131	000140'					OUT	MEMI,SELB,OPORT3 ;WRITE PORT BYTE 3
  1132	000142'					OUT	MEMI,SELB,OPORT4 ;AND PORT BYTE 4
  1133					 
  1134	000144'					OUT	MEMI,SELB,OOCON	;WRITE THE NEW OUTPUT CNTRL CSR
  1135					 
  1136					; INCREMENT THE SILO NEXT OUT POINTER
  1137					 
  1138	000146'					LDMA	IMM,P.SLIN	;SET MAR TO POINT TO COMPLETION SILO NEXT IN OFFSET
  1139	000150'					SP	MEMI,SELB,SP1	;SAVE THE NEXT IN POINTER IN SP1
  1140	000152'					SP	MEMX,SELB,SP0	;SAVE THE NEXT OUT POINTER IN SP0
  1141	000154'					MEM	IMM,P.NPR	;ASSUME THE SILO IS GOING TO WRAP AROUND
  1142	000156'					BRWRTE	IMM,SILOED	;OFFSET TO LAST SILO ENTRY
  1143	000160'					COMP	BR,SP0		;COMPARE CURRENT OUT POINTER WITH END OF SILO
  1144	000162'					Z	50$		;IT WRAPPED AROUND - ALREADY SET UP
  1145	000164'					BRWRTE	IMM,SENTRY	;GET THE SIZE OF A SILO ENTRY
  1146	000166'					MEM	BR,ADD,SP0	;INCREMENT NEXT OUT POINTER AND SAVE IT
  1147					 
  1148					; IF SILO IS NOW EMPTY "ZERO" THE NEXT OUT POINTER
  1149					 
  1150	000170'				50$:	COMP	MEMX,SP1		;COMPARE OUT POINTER TO IN POINTER
  1151	000172'					Z	70$		;THEY ARE THE SAME
  1152	000174'					ALWAYS	80$		;THEY ARE DIFFERENT
  1153	000176'				70$:	MEM	IMM,377		;THE SILO IS EMPTY - SET NEXT OUT POINTER
  1154									;TO A LOGICAL ZERO (-1)
  1155	000200'				80$:	LDMA	IMM,P.PORT	;SET MAR TO POINT TO PORT STATUS
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 17-1
KDPMCX.MAC    30-DEC-82 03:47		DATA PORT PROCESSING ROUTINES

  1156	000202'				RDOST1:
  1157	000202'					SPBR	IBUS,INCON,SP0		;READ INPUT CONTROL CSR
  1158	000204'					BR4	RDOST2			;OUTPUT INTERRUPT REQUESTED
  1159	000206'					MEMADR	RDOCLR			;STATE TO WAITING FOR READY OUT CLEARING
  1160	000210'					ALWAYS	IDLE			;BACK TO IDLE LOOP
  1161
  1162	000212'				RDOST2:	MEMADR	RDOCL1			;STATE TO WAITING FOR READY OUT CLEARING
  1163	000214'					BRWRTE	IMM,300			;MASK FOR BUS REQUEST AND XX4
  1164	000216'				RDOST3:	OUT	BR,SELB,OBR		;GENERATE AN INTERRUPT
  1165	000220'					ALWAYS	IDLE			;BACK TO IDLE LOOP
  1166					 
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 18
KDPMCX.MAC    30-DEC-82 03:47		DATA PORT PROCESSING ROUTINES

  1168
  1169					;+
  1170					; **RQISET-REQUEST IN SET, THE PDP-11 HAS REQUESTED THE DATA PORTS
  1171					;
  1172					; INPUTS:
  1173					;	MAR = PORT SERVICE ROUTINE (P.PORT) 
  1174					; OUTPUTS:
  1175					;	CHECK TO SEE IF REQUEST IN HAS BEEN SET BY THE PDP-11. IF SO,
  1176					;	SET READY IN AND LET THE PDP-11 SET UP A COMMAND IN THE DATA PORTS
  1177					;	IF INPUT INTERRUPTS ARE REQUESTED, GENERATE ONE
  1178					;	TRANSFER CONTROL TO RDICLR TO WAIT UNTIL THE PDP-11 IS DONE
  1179					;-
  1180
  1181	000222'				RQISET:	BRWRTE	IBUS,INCON		;READ INPUT CONTROL CSR
  1182	000224'					BR7	10$			;REQUEST IN SET
  1183	000226'					ALWAYS	RDOSET			;SEE IF ANY COMPLETIONS TO POST
  1184
  1185	000230'				10$:	SP	IMM,20,SP0		;MASK TO SET READY IN
  1186	000232'					OUT	SELA,OOCON		;SET IN OUPUT CONTROL CSR
  1187	000234'					BR0	RQIST1			;INTERRUPT ENABLE IS SET
  1188	000236'					MEMADR	RDICLR			;STATE TO WAITING FOR RDYI TO CLEAR
  1189	000240'					ALWAYS	IDLE			;BACK TO IDLE LOOP
  1190
  1191	000242'				RQIST1:	MEMADR	RDICL1			;STATE TO WAITING FOR RDYI TO CLEAR
  1192	000244'					BRWRTE	IMM,200			;MASK FOR BUS REQUEST AND XX0
  1193	000246'					ALWAYS	RDOST3			;GENERATE AN INTERRUPT
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 19
KDPMCX.MAC    30-DEC-82 03:47		DATA PORT PROCESSING ROUTINES

  1195
  1196					;+
  1197					; **RDICLR-WAIT FOR READY IN TO CLEAR (DATA PORTS HAVE BEEN SET UP)**
  1198					;
  1199					; INPUTS:
  1200					;	MAR = PORT SERVICE ROUTINE (P.PORT)
  1201					; OUTPUTS:
  1202					;	CHECK TO SEE IF THE PDP-11 HAS CLEARED READY IN SIGNIFYING
  1203					;	THAT IT HAS SET UP THE DATA PORTS.  IF SO THEN DISPATCH TO THE
  1204					;	PROPER ROUTINE TO HANDLE THE REQUEST BASED ON
  1205					;	BIT 0&1 OF THE  CONTROL CSR BSEL2
  1206					;-
  1207					 
  1208					; RDYI CLEAR ROUTINE IS ENTERED HERE IF INTERRUPT ENABLE WAS NOT
  1209					; SET WHEN THE COMMIOP SET READY IN. IF IN THE  MEANTIME INTERRUPT ENABLE
  1210					; WAS SET, IT WILL BE SEEN HERE AND AN INTERRUPT WILL BE GENERATED
  1211					 
  1212						.ENABL	LSB
  1213	000250'				RDICLR:
  1214	000250'					BRWRTE	IBUS,OCON		;READ OUTPUT CONTROL CSR
  1215	000252'					BR4	5$			;READY IN STILL SET
  1216	000254'					ALWAYS	10$			;PDP-11 CLEARED RDYI. DONT BOTHER
  1217										;CHECKING FOR IEI JUST PROCESS THE DATA
  1218	000256'				5$:	BRWRTE	IBUS,INCON		;READ CONTROL CSR
  1219	000260'					BR0	RQIST1			;INTERRUPT REQUESTED
  1220	000262'				RDICL1:
  1221	000262'					BRWRTE	IBUS,OCON		;READ OUTPUT CONTROL CSR
  1222	000264'					BR4	IDLE			;RDYI STILL SET
  1223	000266'				10$:	MEMADR	RDOSET			;STATE TO WAIT FOR COMPLETIONS
  1224					 
  1225					; READY IN CLEAR
  1226					 
  1227	000270'					BRWRTE	IMM,P.LADR	;GET ADDRESS OF LINE TABLE ADDR TABLE
  1228	000272'					SP	BR,SELB,SP5	;SAVE IT IN SP5
  1229	000274'					SP	IBUS,LINENM,SP.LN	;READ THE LINE NUMBER
  1230	000276'					BRWRTE	BR,TWOA,SP.LN	;MULTIPY IT BY TWO
  1231	000300'					LDMA	BR,ADD,SP5	;POINT TO ENTRY IN TABLE FOR THIS LINE
  1232	000302'					SP	MEMI,SELB,SP.RM0	;GET THE ADDRESS OF THIS LINE'S TABLE
  1233									;(LOW) AND SAVE IT IN SP.RM0
  1234	000304'					SP	MEMX,SELB,SP.RM1,LDMAPG	;GET THE ADDRESS (HIGH) AND POINT
  1235									;THE MAR HI TO THIS ADDRESS
  1236	000306'					LDMA	SELA,SP.RM0	;SET MAR LOW
  1237	000310'				15$:
  1238	000310'					BRWRTE	IMM,14,INCMAR	;SET UP DUP CSR BY SETTING ADDR BITS 16-17
  1239	000312'					OUT	BR,SELB,OBR,INCMAR ;WRITE EXTENDED MEM BITS FOR OUT NPR
  1240	000314'					OUTPUT	MEMI,SELB,OBA1	;WRITE OUT LOW BYTE OF CSR ADDRESS
  1241	000316'					OUTPUT	MEMI,SELB,OBA2	;WRITE OUT HIGH BYTE
  1242	000320'					LDMA	SELA,SP.RM0	;POINT BACK TO START OF LINE TABLE
  1243
  1244									;REGISTERS FOR COMMAND ROUTINES
  1245									; MAR=LINE TABLE  SP.LN=LINE NUMBER
  1246									; SP.RM0,1=LINE TABLE ADDR
  1247									; NPR OUTPUT ADDR=DEVICE CSR 0
  1248
  1249	000322'					BRWRTE	IBUS,OCON	;GET ORIGINAL IMAGE OF INPUT CONTROL CSR
  1250									;READ FROM BSEL2 TO AVOID RAM BIT SET PROBLEM
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 19-1
KDPMCX.MAC    30-DEC-82 03:47		DATA PORT PROCESSING ROUTINES

  1251									;BY THIS TIME ALL BITS WILL HAVE SETTLED
  1252	000324'					BR1	20$		;BIT 1 SET
  1253	000326'					BR0	CONIN		;BIT 1=0 AND BIT 0=1 -> CONTROL IN REQUEST
  1254	000330'					ALWAYS	BAIN		;BIT 0&1=0 -> BUFFER ADDRESS IN REQUEST
  1255	000332'				20$:	BR0	BASEIN		;BIT 1=1 BIT 0=1 -> BASE IN REQUEST
  1256									;BIT 1=1 BIT 0=0 -> ILLEGAL REQUEST
  1257						.DSABL	LSB
  1258					 
  1259					; ABOVE THREE ROUTINES RETURN HERE AFTER REQUEST HAS BEEN PROCESSED
  1260					 
  1261	000334'				RQICL2:	BRWRTE	IMM,0		;CLEAR OUT CONTROL CSR
  1262	000336'					OUT	BR,SELB,OOCON	;..
  1263	000340'					SPBR	IBUS,UBBR,SP0	;READ THE MISC REGISTER
  1264	000342'					BR0	NXMERR		;IF BIT 0 SET, THEN A NON-EXISTENT MEMORY
  1265									;ERROR OCCURRED, REPORT IT.
  1266	000344'					ALWAYS	IDLE		;OTHERWISE, BACK TO IDLE LOOP
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 20
KDPMCX.MAC    30-DEC-82 03:47		DATA PORT PROCESSING ROUTINES

  1268
  1269						.SBTTL	TIMER - TIMER SERVICE
  1270					;+
  1271					; **TIMER-TIMER SERVICE ROUTINE**
  1272					;
  1273					; INPUTS:
  1274					;	BRG & SP0 = IMAGE OF BUS REQUEST REGISTER
  1275					;
  1276					; OUTPUTS:
  1277					;	EACH DEVICES TIMER COUNTER IS DECREMENTED AND TESTED FOR
  1278					;	AN EXPIRATION.  IF THE COUNTER WENT TO ZERO THE DEVICE
  1279					;	IS POLLED TO SEE IF IT HAS A TRANSMIT DONE OR A RECEIVE DONE
  1280					;	AND IF SO IT IS SERVICED.  IF NONE OF THE DEVICES REQUIRES
  1281					;	SERVICING THE MODEM TIMER IS DECREMENTED AND IF IT EXPIRED
  1282					;	MODEM CHANGES ARE CHECKED.
  1283					;	WHEN A DEVICE DONE SERVICE ROUTINE IS FINISHED THIS ROUTINE
  1284					;	CONTINUES WITH THE NEXT DEVICE.
  1285					;-
  1286						.ENABL	LSB
  1287	000346'				TIMER:	BRWRTE	IMM,121		;MASK TO CLEAR ALL BUT TIMER, XX4 AND NXM
  1288									;N.B. THE TIMER WILL ALREADY BE SET TO ONE
  1289									;FROM IT EXPIRING SO THE MASK IS GUARANTEED
  1290									;TO LEAVE IT A ONE FOR RESETTING
  1291	000350'					OUT	BR,AANDB,OBR	;AND THE MASK WITH THE PREVIOUS CONTENTS OF
  1292									;THE BUS REQUEST REGISTER RESETING THE
  1293									;TIMER
  1294	000352'					BRWRTE	IMM,0		;ZERO THE BRG
  1295	000354'					SP	BR,SELB,SP.LN	;START WITH LINE ZERO
  1296	000356'					SP	BR,SELB,SP.RM0,LDMAR	;SAVE THE ADDRESS IN RAM ADDRESS SCRATCH PAD
  1297	000360'					SP	BR,SELB,SP.RM1,LDMAPG	;INITIALIZE SCRATCH PAD WITH THE HIGH BITS
  1298	000362'					ALWAYS	TIMRT1		;START POLLING
  1299					 
  1300					 
  1301					; MAIN POLLING LOOP
  1302					; RECEIVE DONE  ROUTINES RETURN HERE
  1303
  1304	000364'				TIMRTN:
  1305					 
  1306	000364'				10$:
  1307	000364'					SPBR	IBUS,UBBR,SP0	;READ THE MISC.  REGISTER
  1308	000366'					BR0	NXMERR		;NXM ERROR OCCURRED DURING LAST POLL
  1309	000370'					SP	BR,INCA,SP.LN	;ONE LESS DEVICE TO POLL
  1310	000372'					BRWRTE	IMM,MAXDEV	;CHECK TO SEE IF LAST DEVICE
  1311	000374'					COMP	BR,SP.LN	;HAS BEEN POLLED
  1312	000376'					Z	IDLE1		;ALL DONE - BACK TO IDLE LOOP
  1313	000400'					BRWRTE	IMM,P.LADR,LDMAPG	;GET STARTING ADDRESS FOR TABLE
  1314									;OF LINE TABLE ADDRESSES AND SET MAR HI
  1315	000402'					SP	BR,SELB,SP0	;SAVE IT IN SP0
  1316	000404'					BRWRTE	BR,TWOA,SP.LN	;MAKE LINE NUMBER A DOUBLE BYTE INDEX
  1317	000406'					LDMA	BR,ADD,SP0	;SET ADDRESS FOR ENTRY OF THIS LINE
  1318	000410'					SP	MEMI,SELB,SP.RM0	;SAVE ADDRESS FOR THIS LINE
  1319	000412'					SP	MEMX,SELB,SP.RM1,LDMAPG	;HIGH 2 BITS AND LOAD MAR HI
  1320	000414'					LDMA	BR,SELA,SP.RM0	;LOAD MAR LOW
  1321	000416'				TIMRT1:
  1322	000416'					BRWRTE	MEMI,SELB	;SAVE THE RESTART VALUE IN THE BRG
  1323									;AND INCREMENT THE MAR
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 20-1
KDPMCX.MAC    30-DEC-82 03:47		TIMER - TIMER SERVICE

  1324									;IN CASE THE TIMER EXPIRED
  1325	000420'					SP	MEMX,SELB,SP0	;READ THE COUNTER FOR THIS DEVICE
  1326	000422'					Z	10$		;THE DEVICE IS NOT ACTIVE
  1327	000424'					MEM	BR,DECA,SP0	;DECREMENT THE COUNTER AND WRITE IT
  1328									;BACK TO MEMORY
  1329	000426'					C	10$		;LOOK AT THE NEXT DEVICE'S COUNTER
  1330
  1331					; TIMER HAS EXPIRED - SEE IF THERE ARE ANY "DONES" PENDING
  1332					; INPUTS:
  1333					;	BRG = RESET VALUE
  1334
  1335	000430'				30$:	MEMINC	BR,SELB		;RESET THE COUNTER TO THE INITIAL VALUE
  1336	000432'					OUTPUT	MEMI,SELB,IBA1 ;STORE THE LOW BYTE OF THE DEVICES
  1337									;CSR INTO THE LOW BYTE OF THE INPUT BUFFER
  1338									;ADDRESS REGISTER
  1339	000434'					OUTPUT	MEMI,SELB,IBA2 ;DO THE SAME WITH THE HIGH BYTE
  1340									;AND INCRMENT THE MAR TO STATUS BYTE
  1341	000436'					BRWRTE	IMM,14!DATI		;MASK TO SET EXTENDED MEMORY BITS
  1342									; DO AN INPUT NPR
  1343	000440'					OUT	BR,SELB,ONPR	;START THE NPR
  1344	000442'					SP	MEMX,SELB,SP.STS	;SAVE THE STATUS BYTE IN SP.STS
  1345	000444'				40$:	BRWRTE	IBUS,NPR	;READ THE NPR REQUEST REGISTER
  1346	000446'					BR0	40$		;WAIT FOR THE NPR TO COMPLETE
  1347	000450'					SPBR	IBUS,INDAT2,SP1	;READ THE HIGH BYTE OF CSR 0
  1348									;SAVE IT IN SP1 FOR XMTDON
  1349	000452'					BRWRTE	BR,AXORB,SP.STS	;SEE IF ANY CHANGE IN THE DSR STATE
  1350	000454'					BR1	DSRCHG		;DATA SET READY HAS CHANGED STATES
  1351	000456'					SP	IBUS,IIBA1,SP0		;READ LOW BYTE OF CSR0'S ADDRESS
  1352	000460'					SPBR	IBUS,INDAT1,SP.CS0	;READ THE LOW BYTE OF THE DEVICES CSR
  1353	000462'					BR7	60$			;RECEIVE DONE SET
  1354					;
  1355					; SEE IF TRANSMIT DONE SET
  1356					;
  1357	000464'				45$:	BRSHFT			;SHIFT THE CSR IMAGE
  1358	000466'					BR1	XMTDON		;REQUEST TO SEND SET
  1359					;
  1360					; RETURN HERE AFTER FINISHED PROCESSING THE TRANSMITTER
  1361					;
  1362	000470'				TIMRT3:
  1363	000470'				50$:
  1364	000470'					BRWRTE	BR,SELA,SP.CS0	;RE-READ IMAGE OF CSR0
  1365	000472'					BR7	RCVDON		;RECEIVE DONE WAS SET
  1366	000474'					ALWAYS	10$		;NOT SET - RETURN
  1367					;
  1368					; RECEIVE DONE FOUND SET
  1369					;
  1370	000476'				60$:
  1371	000476'					BRWRTE	IMM,2		;PREPARE TO ADD TWO TO THIS ADDRESS
  1372					 
  1373	000500'					OUTPUT	BR,ADD,IBA1	;ADD TWO TO THE ADDRESS IN SP0 GETTING THE ADDRESS
  1374									; OF CSR2 WHICH CONTAINS THE RECEIVE
  1375									;CHARACTER IN THE LOW BYTE AND THE
  1376									;STATUS IN THE HIGH BYTE
  1377	000502'					BRWRTE	IMM,14!DATI		;MASK TO SET EXTENDED MEMORY BITS
  1378									;AND TO START THE NPR
  1379	000504'					OUT	BR,SELB,ONPR	;START THE NPR TO READ CSR2
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 20-2
KDPMCX.MAC    30-DEC-82 03:47		TIMER - TIMER SERVICE

  1380	000506'				70$:	BRWRTE	IBUS,NPR	;READ THE NPR STATUS REGISTER
  1381	000510'					BR0	70$		;NPR IS NOT DONE YET
  1382	000512'					SP	IBUS,INDAT1,SP.CHR	;SAVE THE CHARACTER IN A SCRATCH PAD
  1383	000514'					SP	IBUS,INDAT2,SP.RST	;SAVE THE CHARACTER'S STATUS
  1384	000516'					BRWRTE	BR,SELA,SP.CS0		;RESTORE THE BRG FOR XMIT DONE TESTING
  1385	000520'					ALWAYS	45$			;SEE IF ANY XMIT DONES
  1386					 
  1387										;UPON TRANSFER TO XMTDON OR RCVDON
  1388									;THE FOLLOWING LOCATIONS HAVE BEEN SET UP
  1389									;FOR ENTRY TO THE "DONE" PROCESSOR:
  1390									; SP.RM1 -> BITS 8&9 OF RAM TABLE ADDRESS
  1391									; SP.RM0 -> BITS 0-7 OF RAM TABLE ADDRESS
  1392									; MAR --> STATUS (D.STS) IN LINE TABLE
  1393									; SP.LN --> LINE NUMBER
  1394									; SP.CS0 --> IMAGE OF LOW BYTE OF CSR 0
  1395									; SP.STS --> IMAGE OF D.STS
  1396									; SP0 --> LOW BYTE OF CSR 0 ADDRESS
  1397									; SP1 --> HIGH BYTE OF CONTENTS OF CSR 0
  1398									; NPR INPUT ADDR -> DEVICE CSR 0
  1399									;IF RECV DONE, 
  1400									; SP.CHR --> RECEIVED CHARACTER
  1401									; SP.RST --> RCV CHAR STATUS (CSR2 MSB)
  1402						.DSABL	LSB
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 21
KDPMCX.MAC    30-DEC-82 03:47		TIMER - TIMER SERVICE

  1404
  1405					;%	FILE	DUPUSER.MAC
  1406
  1407					;INDIRECT RETURNS THROUGH PAGE ZERO
  1408					 
  1409					;******FOLLOWING INSTRUCTIONS MUST RESIDE IN MICRO PAGE ZERO******
  1410					 
  1411					 
  1412					;RETURN FROM INCOUT DUE TO A CALL FROM BOUT ROUTINE
  1413	000522'				BOUTR0:	ALWAYS	QPDATA	;GO TO QPDATA ON RETURN
  1414					 
  1415					 
  1416					;RETURN FROM INCOUT DUE TO A CALL FROM XMTSND
  1417	000524'				XMTEM0:	ALWAYS	XMTBC0
  1418
  1419
  1420					;RETURN FROM LSILO DUE TO A CALL FROM RB3
  1421	000526'				RB3P0:	ALWAYS	STORE	;GO TO STORE ROUTINE ON RETURN
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 22
KDPMCX.MAC    30-DEC-82 03:47		TIMER - TIMER SERVICE

  1423
  1424						.SBTTL	BASEIN-BASE IN SERVICE ROUTINE
  1425					 
  1426					;+
  1427					;
  1428					;			B A S E  I N
  1429					;
  1430					;
  1431					;
  1432					;CALLED BY:	RDICLR
  1433					;
  1434					;INPUTS:
  1435					;	KMC BSEL3		=LINE NUMBER
  1436					;	KMC SEL6 <3:12>		=CSR ADDR FOR CURRENT DUP
  1437					;	SP.RM0,SP.RM1		=LINE TABLE ADDRESSES
  1438					;	MAR 			=LINE TABLE 
  1439					;OUTPUTS:
  1440					;	DUP CSR ADDR IS SAVED IN THE LINE TABLE (D.CSR)
  1441					;	DUP IS RESET
  1442					;-
  1443					 
  1444	000530'				BASEIN:
  1445					;SAVE CURRENT DUP CSR ADDR IN RAM
  1446					 
  1447	000530'					SP	IBUS,PORT3,SP0,INCMAR	;GET CSR ADDR INTO SP0
  1448	000532'					BRWRTE	IMM,370,INCMAR		;MASK TO STRIP 3 LSB'S OF CSR ADDR
  1449	000534'					MEM	BR,AANDB,SP0	;STRIP THEM AND STORE IN RAM
  1450	000536'					OUTPUT	MEMI,SELB,OBA1	;SAVE CSR IN OUT ADDRESS REGISTERS
  1451	000540'					SP	IBUS,PORT4,SP0	;GET HIGH BYTE INTO SP0
  1452	000542'					BRWRTE	IMM,340		;MASK TO SET 3 MSB'S
  1453	000544'					MEM	BR,AORB,SP0	;SAVE IT IN RAM WITH 3 HIGH BITS SET TO ONES
  1454	000546'					OUTPUT	MEMX,SELB,OBA2	;SAVE HIGH BYTE OF CSR ADDRESS
  1455					 
  1456	000550'				BASEI1:
  1457					;DEVICE RESET THE DUP
  1458					 
  1459	000550'					BRWRTE	IMM,DUPDR	;SET PROPER BIT (BIT 0) IN OUTDATA HB
  1460	000552'					OUTPUT	BR,SELB,OUTDA2
  1461	000554'					CALLSR	SP.SUB,INCOB,RQICL2,5	;DO THE NPR TO MASTER CLEAR THE DUP
  1462									;AND RETURN TO CLEAR READY IN
  1463					; RESET IS A 2 MICRO-SECOND ONE SHOT.IT IS ASSUMED THAT BEFORE THE DUP
  1464					;IS ACCESSED AGAIN, THIS PERIOD WILL HAVE ELAPSED.
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 23
KDPMCX.MAC    30-DEC-82 03:47		BASEIN-BASE IN SERVICE ROUTINE

  1466
  1467						.SBTTL	CONIN-CONTROL IN PROCESS ROUTINE
  1468					 
  1469					;+
  1470					;
  1471					;			C O N T R O L  I N
  1472					;
  1473					;
  1474					;
  1475					;CALLED BY:	RDICLR
  1476					;
  1477					;INPUTS:
  1478					;	BSEL4 (PORT1)	=POLLING COUNT
  1479					;	BSEL6 (PORT3)	=SECONDARY ADDRESS
  1480					;	BSEL7 (PORT4)	=CONTROL FLAGS
  1481					;	SP.RM0,SP.RM1	=LINE TABLE ADDRESS
  1482					;	MAR		=LINE TABLE ADDRESS
  1483					;	OUT BA		=DUP'S CSR 0
  1484					;OUTPUTS:
  1485					;	VARIOUS LINE TABLE LOCATIONS AND DUP FUNCTIONS ARE INITIALIZED ACCORDING TO
  1486					;	THE CONTROL IN PARAMETERS.THESE INCLUDE:
  1487					;		DUP CSR XX0-STRIP SYNC FOR DEC MODE
  1488					;		DUP CSR XX2-DEC MODE&SYNC CHARACTER FOR DDCMP OR SEC MODE,
  1489					;		  SEC ADDRESS FOR BITSTUFF MODE
  1490					;		DUP CSR XX4-HALFDUPLEX
  1491					;-
  1492					 
  1493	000564'				CONIN:
  1494	000564'					BRWRTE	IBUS,PORT4	;READ BSEL 7
  1495	000566'					BR0	10$		;ENABLE LINE IS SET
  1496	000570'					SPBR	IMM,0,SP0,INCMAR	;CLEAR SP0
  1497	000572'					MEMINC	DECA,SP0	;WRITE A 377 TO D.TIME DISABLING THIS LINE
  1498	000574'					ALWAYS	20$
  1499					 
  1500	000576'				10$:	MEMINC	IBUS,PORT1	;SET TIMER RESTART VALUE
  1501	000600'					MEMINC	IBUS,PORT1	;AND TIMER ENABLING THE LINE
  1502	000602'					BRWRTE	IMM,DUPDTR!DUPREN	;VALUE TO SET  DTR AND RECEIVE ENABLE
  1503					 
  1504					; BRG = DUPDTR!DUPREN IF ENABLE WAS REQUEST OR 0 IF DISABLE
  1505					 
  1506	000604'				20$:	OUTPUT	BR,SELB,OUTDA1,INCMAR	;VALUE TO SET OR CLEAR DTR,RCV ENABLE
  1507	000606'					BRWRTE	IBUS,PORT4,INCMAR	;REREAD BSEL7
  1508										;MAR = D.STS
  1509	000610'					MEM	IMM,DUPSSY	;ASSUME DEC MODE BY STORING STRIP SYNC
  1510									;BIT TEMPORARILY IN MEMORY
  1511	000612'					BR7	30$		;IT IS DEC MODE
  1512	000614'					MEM	IMM,0		;BIT STUFF MODE - DON'T SET STRIP SYNC
  1513	000616'				30$:	OUTPUT	MEMX,SELB,OUTDA2	;STORE STRIP SYNC SETTING
  1514	000620'					BRWRTE	IMM,DATO	;DO AN OUTPUT NPR 
  1515	000622'					OUT	BR,SELB,ONPR	;REQUEST THE NPR
  1516	000624'				40$:	BRWRTE	IBUS,NPR	;SEE IF NPR DONE YET
  1517	000626'					BR0	40$		;WAIT FOR IT
  1518					 
  1519	000630'				CONIN2:
  1520	000630'					SPBR	IBUS,PORT4,SP0	;REREAD BSEL7
  1521	000632'					BR7	10$		;DEC MODE?
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 23-1
KDPMCX.MAC    30-DEC-82 03:47		CONIN-CONTROL IN PROCESS ROUTINE

  1522					; LOAD SYNC CHARACTER/SECONDARY ADDRESS INTI XX2 LOW BYTE
  1523					 
  1524	000634'					OUTPUT	IBUS,PORT3,OUTDA1 ;NO,SO LOAD SEC ADDRESS FIELD
  1525	000636'					MEM	IMM,DS.CRI	;ASSUME CRC INHIBIT
  1526	000640'					BR1	5$		;BRANCH IF IT IS CRC INHIBIT
  1527	000642'					MEM	IMM,0		;CLEAR D.STS
  1528	000644'				5$:	BRWRTE	IMM,DUPSAM!DUPCRI ;SET SECONDARY ADDRESS MODE,CRC INHIBIT
  1529	000646'					ALWAYS	20$
  1530					; UPDATE XX3
  1531	000650'				10$:
  1532	000650'					MEM	IMM,SYNC	;MOVE SYNC CHARACTER TO MEMORY IN ORDER
  1533									;TO SAVE THE BRG
  1534	000652'					OUTPUT	MEMX,SELB,OUTDA1 ;MOVE IT TO OUT DATA REGISTER
  1535	000654'					MEM	IMM,DS.SEC!DS.DEC	;ASSUME DEC AND SEC MODE
  1536	000656'					BR4	15$			;BRANCH IF SEC MODE
  1537	000660'					MEM	IMM,DS.DEC		;NO,JUST DEC MODE
  1538	000662'				15$:	BRWRTE	IMM,DUPDEC	 ;ISOLATE DEC MODE,CRC INHIBIT
  1539					;NOTE: DUP SOULD NOT BE SET TO SECONDARY ADDRESS MODE WHILE IN DEC MODE.THIS
  1540					;WILL INHIBIT RECEIVE DONES.
  1541	000664'				20$:
  1542	000664'					OUTPUT	BR,AANDB,OUTDA2 	;MODE CRC INHIBIT&AND LOAD INTO OUTADA2
  1543	000666'					CALLSB	SP.SUB,IC2OUT		;WRITE IT OUT TO XX3,XX2
  1544					; UPDATE DUP XX5,XX4
  1545					 
  1546	000674'				CONIN3:
  1547	000674'					BRWRTE	IBUS,PORT4
  1548	000676'					BRSHFT
  1549	000700'					BR4	30$			;HALF DUPLEX MODE
  1550					;FULL DUPLEX MODE,CLEAR XX4
  1551					 
  1552	000702'					BRWRTE	IMM,0
  1553	000704'					ALWAYS 	40$
  1554					 
  1555					;HALF DUPLEX MODE, SET HALF DUPLEX BIT IN XX4
  1556					 
  1557	000706'				30$:
  1559	000706'					BRWRTE	IMM,DUPHDX	;HALF DUPLEX MASK (SAME AS DX.HDX)
  1560	000710'					SP	BR,SELB,SP0	;SAVE IT IN SP0
  1561	000712'					MEM	MEMX,AORB,SP0	;SET HALF DUPLEX IN D.STS
  1562	000714'				40$:
  1563					 
  1564	000714'					OUTPUT	BR,SELB,OUTDA1,INCMAR	;WRITE HALF DUPLEX MASK
  1565									;MAR = D.RPTR (RECV STATE POINTER)
  1566					 
  1567					; SET RECEIVE STATE POINTER
  1568					 
  1569	000716'					RSTATE	RDH1		;ASSUME DEC MODE
  1570	000720'					SPBR	IBUS,PORT4,SP0	;REREAD BSEL7			**X1.4**
  1571	000722'					BR7	50$		;IT IS
  1572	000724'					RSTATE	RB1		;BIT STUFF MODE
  1573					 
  1574					;CLEAR XX5
  1575	000726'				50$:	SP	BR,TWOA,SP0	;SHIFT BSEL7 BITS 2 AND 3	**X1.4**
  1576	000730'					BRWRTE	IMM,30		;TO XX5 BITS 3 AND 4		**X1.4**
  1577	000732'					OUTPUT	BR,AANDB,OUTDA2,INCMAR ;FOR MAINTENANCE MODE	**X1.4**
  1578									;MAR = D.SADR (SECONDARY ADDRESS)
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 23-2
KDPMCX.MAC    30-DEC-82 03:47		CONIN-CONTROL IN PROCESS ROUTINE

  1579					 
  1580	000734'					MEMINC	IBUS,PORT3	;SAVE SECONDARY ADDRESS
  1581	000736'					BRWRTE	IMM,D.XSTS	;OFFSET OF TRANSMIT ABORT STATUS
  1582	000740'					LDMA	BR,ADD,SP.RM0	;SET MAR
  1583	000742'					MEM	IMM,0		;CLEAR ANY PENDING STATUS
  1584					 
  1585					;WRITE TWO BYTES INTO XX4/XX5
  1586					 
  1587	000744'					CALLSR	SP.SUB,IC2OUT,RQICL2	;SHIP IT AND RETURN TO CALLER
  1588					  
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 24
KDPMCX.MAC    30-DEC-82 03:47		CONIN-CONTROL IN PROCESS ROUTINE

  1590
  1591						.SBTTL	BAIN-BUFFER ADDRESS IN SERVICE ROUTINE
  1592					 
  1593					;+
  1594					;		B U F F E R  A D D R E S S  I N
  1595					; 
  1596					;CALLED BY:	RDICLR
  1597					;
  1598					;INPUTS:
  1599					;	SEL4,BSEL7 <7:6>	=BUFFER DESCRPTR LIST ADDR
  1600					;	BSEL7<5:4>	=KILL ASSIGN AND KILL BITS
  1601					;	SP.RM0,SP.RM1	=LINE TABLE ADDRESS
  1602					;	MAR 		=LINE TABLE
  1603					;	OUT BA		=DUP'S CSR ADDRESS
  1604					;OUTPUTS:
  1605					;	BUFFER DESCRIPTOR ADDRESS DEFINED BY THE BA IN IS LOADED INTO
  1606					;	THE APPROPRIATE (RECEIVE/TRANSMIT) DESCRIPTOR POINTER.
  1607					;	IF THE CURRENT BUFFER IS THE ONE JUST ASSIGNED,LINE TABLE LOCATIONS
  1608					;	(BUFFER ADDRESS,BYTE COUNT) ARE UPDATED. OTHERWISE DR.ABA IS SET (ALT ASGNED)
  1609					;	IF THE CURRENT BUFFER FOR TRANSMISSION IS BEING ASSIGNED,FIRST ODD
  1610					;	CHARACTER IN THE TRANSMIT BUFFER IS SAVED IN D.OXC
  1611					;	IF THE CURRENT BUFFER FOR RECEPTION IS BEING ASSIGNED,DR.FST IS SET
  1612					;-
  1613
  1614	000752'				BAIN:
  1615					 
  1616					;LOAD RECEIVE CONTROL AND STATUS REGISTER INTO SP.CS0
  1617					 
  1618	000752'					OUTPUT	IBUS,IOBA1,IBA1	;SET INBA 7:0
  1619	000754'					OUTPUT	IBUS,IOBA2,IBA2	;SET INBA 15:8
  1620	000756'					BRWRTE	IMM,<BIT3!BIT2!DATI>	;SET EXT BITS AND 
  1621	000760'					OUT	BR,SELB,ONPR	;DO IN NPR
  1622					;DETERMINE TYPE OF IO REQUIRED (RECEIVE OR TRANSMIT)
  1623					 
  1624	000762'					BRWRTE	IBUS,OCON	;GET OUTPUT CONTROL REGISTER
  1625	000764'					BRSHFT
  1626	000766'					BR1	BARCV		;BAIN FOR RECEIVE
  1627					 
  1628					;BAIN FOR TRANSMIT OPERATION
  1629	000770'					BRWRTE	IMM,D.XDP	;ADDRESS D.XDP
  1630	000772'					ALWAYS	BAIN1
  1631					;BAIN FOR RECEIVE OPERATION
  1632	000774'				BARCV:	BRWRTE	IMM,D.RDP	;ADDRESS D.RDP
  1633	000776'				BAIN1:
  1634	000776'					BRWRTE	BR,ADD,SP.RM0	;BR=ADDRESS OF D.RDP OR D.XDP
  1635	001000'					SP	BR,SELB,SP6	;SET SP6=THAT ADDRESS
  1636	001002'				10$:	BRWRTE	IBUS,NPR	;WAIT FOR NPR COMPLETION
  1637	001004'					BR0	10$
  1638	001006'					SP	IBUS,INDAT1,SP.CS0	;LOAD RCV CSR (XX0) INTO SP.CS0
  1639					 
  1640					;CHECK IF THERE IS A KILL
  1641					 
  1642	001010'					BRWRTE	IBUS,PORT4		;GET PORT 4 INTO BR
  1643	001012'					BR4	KILLAL			;BRANCH TO KILL ROUTINE
  1644					 
  1645					 
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 24-1
KDPMCX.MAC    30-DEC-82 03:47		BAIN-BUFFER ADDRESS IN SERVICE ROUTINE

  1646					; THIS IS A VALID BUFFER ASSIGNMENT
  1647					;(ALSO ENTRY POINT AFTER A KILL IF A NEW BUFFER IS ASSIGNED)
  1648	001014'				BAIN0:
  1649					 
  1650					;CHECK IF CURRENT OR ALTERNATE OPERATION
  1651	001014'					BRWRTE	IMM,<D.RBDF-D.RDP>	;OFFSET TO FLAG BYTE FOR CURRENT OPERATION
  1652	001016'					LDMA	BR,ADD,SP6	;ADDRESS FLAG BYTE
  1653	001020'					SPBR	MEMX,SELB,SP5	;GET FLAGS INTO BR,SP5
  1654	001022'					BRSHFT
  1655	001024'					BR4	BAALT		;CURRENT BUFFER ALREADY ASSIGNED
  1656					;CURRENT BUFFER NOT ASSIGNED,ASSIGN CURRENT BUFFER
  1657	001026'					MEM	IMM,DR.CBA	;SET CURRENT BUFFER ASSIGNED & CLEAR
  1658									;ALL OTHER BITS IN FLAG BYTE
  1659	001030'					LDMA	BR,SELA,SP6	;ADDRESS D.RDP/D.XDP
  1660					;SAVE LIST ADDRESS AT CURRENT MEMORY LOCATION
  1661	001032'				BAIN2:
  1662	001032'					MEMINC	IBUS,PORT1	;ADDRESS 7:0
  1663	001034'					MEMINC	IBUS,PORT2	;ADDRESS 15:8
  1664	001036'					SP	IBUS,PORT4,SP0	;GET EXT ADDRESS
  1665	001040'					BRWRTE	IMM,300		;BR=MASK TO ISOLATE EXT ADDRESS
  1666	001042'					BRWRTE	BR,AANDB,SP0	;BR=JUST EXT ADDRESS BITS
  1667	001044'					BRSHFT			;SHIFT IT INTO PROPER POSITION
  1668	001046'					BRSHFT
  1669	001050'					BRSHFT
  1670	001052'					BRSHFT
  1671	001054'					MEM	BR,SELB		;SAVE EXT ADDRESS
  1672					 
  1673					;IF THE CURRENT BUFFER IS BEING ASSIGNED,DO SPECIAL THINGS
  1674	001056'					BRWRTE	BR,TWOA,SP5	;SP5 HAS FLG BITS
  1675	001060'					BR7	RQICL2		;ALTERNATE BUFFER ASSIGNED,EXIT
  1676					;CURRENT BUFFER BEING ASSIGNED,MOVE DESCRIPTOR PARAMETRS INTO RAM
  1677	001062'					CALLSR	SP.SB1,NXDSCP,RQICR2	;RETURN TO IDLE THROUGH PAGE 2
  1678					;LABEL TO USE "ALWAYS NXDSCP" IN THE ABOVE MACRO AS AN INTER PAGE RETURRN
  1679		001066'			NXDP1=.-2
  1680					 
  1681					;ASIGNING ALTERNATE BUFFER
  1682	001070'				BAALT:
  1683					 
  1684	001070'					BRWRTE	IMM,DR.ABA	;SET DR.ALT(=DX.ALT)BIT
  1685	001072'					MEM	BR,AORB,SP5
  1686	001074'					SP	MEMX,SELB,SP5	;SET SP5=NEW FLAGS
  1687	001076'					BRWRTE	IMM,<D.ARLP-D.RDP>	;ADDRESS ALTERNATE POINTER
  1688	001100'					LDMA	BR,ADD,SP6
  1689	001102'					ALWAYS	BAIN2		;SAVE LIST POINTER IN RAM
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 25
KDPMCX.MAC    30-DEC-82 03:47		BAIN-BUFFER ADDRESS IN SERVICE ROUTINE

  1691
  1692						.SBTTL	XMTDON - TRANSMIT DONE
  1693					;	FILE	DUXMIT.MAC
  1694					 
  1695					;+
  1696					; **-XMTDON-ROUTINE TO LOOK FOR AND HANDLE A DUP TRANSMIT DONE**
  1697					;
  1698					; CALLED BY:	TIMER
  1699					;
  1700					; INPUTS:
  1701					;	SP0	= LOW BYTE OF DUP'S CSR0 ADDRESS
  1702					;	SP1	= HIGH BYTE OF DUP'S CSR0 (CTS STATUS)
  1703					;	SP.RM0-RM1	= RAM TABLE ADDRESS
  1704					;	SP.CS0	= LOW BYTE OF CSR0 (CONTAINS STATE OF RTS & RECV. ENABLE)
  1705					;	SP.LN	= LINE NUMBER
  1706					;	MAR AND SP.STS	= STATUS BYTE IN LINE'S TABLE
  1707					;	IN DATA ADDRESS	= DUP'S CSR 0
  1708					;
  1709					; OUTPUTS:
  1710					;	IN THE NORMAL CASE THE NEXT CHARACTER IS TRANSMITTED.  SPECIAL
  1711					;	CASES INCLUDE HANDLING SYNC TRANSMISSION, CRC TRANSMISSION
  1712					;	AND ERROR CONDITIONS.
  1713					;-
  1714					 
  1715	001104'				XMTDON:
  1716	001104'					BRWRTE	SELA,SP1	;READ THE HIGH BYTE OF CSR 0
  1717	001106'					BRSHFT
  1718	001110'					BR4	10$		;CLEAR TO SEND IS SET
  1719	001112'					ALWAYS	TIMRT3		;NO, SET CHECK FOR RECEIVE DONES
  1720	001114'				10$:	BRWRTE	IMM,4		;PREPARE TO POINT TO CSR4
  1721	001116'					OUTPUT	BR,ADD,IBA1	;SET IT UP
  1722	001120'					BRWRTE	IMM,14!DATI		;MASK TO SET EXTENDED MEMORY BITS
  1723									;AND START NPR
  1724	001122'					OUT	BR,SELB,ONPR	;START THE NPR
  1725	001124'				20$:	BRWRTE	IBUS,NPR	;IS THE NPR DONE YET
  1726	001126'					BR0	20$		;NO, WAIT FOR IT
  1727	001130'					OUTPUT	IBUS,IIBA1,OBA1	;COPY INPUT ADDRESS TO OUTPUT	**X1.2**
  1728	001132'					OUTPUT	IBUS,IIBA2,OBA2	;ADDRESS			**X1.2**
  1729	001134'					BRWRTE	IBUS,INDAT1	;READ THE TRANSMIT CNTROL REGISTER
  1730					;
  1731					; THE FOLLOWING TRIES TO DETERMINE WHEN A DUP IS HUNG AND ALLOW PROCESSING
  1732					; TO CONTINUE. THE DUP WILL BE UNHUNG WHEN DUPTSM AND DUPSND ARE BOTH SET
  1733					; WHEN THE MODEM IS CLOCKING. THE CASE BEING LOOKED FOR HERE IS:
  1734					; 		(-TXACT)(-TXDONE)(-TXSEND)
  1735
  1736									;(1 LINE REPLACED)	**X1.2**
  1737	001136'					BR7	XMTDN1		;TRANSMIT DONE SET	**X1.2**
  1738	001140'					BR4	TIMRT3		;SEND IS SET		**X1.2**
  1739	001142'					BRWRTE	IBUS,INDAT2	;LOOK AT TXACT		**X1.2**
  1740	001144'					BR1	TIMRT3		;TXACT IS SET		**X1.2**
  1741					;	FALL INTO XMTDN1
  1742					 
  1743					; TRANSMIT DONE FOUND
  1744					 
  1745						.ENABL	LSB
  1746	001146'				XMTDN1:
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 25-1
KDPMCX.MAC    30-DEC-82 03:47		XMTDON - TRANSMIT DONE

  1747									;(2 LINES REMOVED)	**X1.2**
  1748	001146'					SP	IBUS,UBBR,SP0	;READ THE CONTENTS OF THE BUS REQ REG
  1749	001150'					BRWRTE	IMM,101		;MASK TO CLEAR ALL BUT NXM AND XX4 BITS
  1750	001152'					SP	BR,AANDB,SP0	;CLEAR THEM
  1751	001154'					BRWRTE	IMM,14		;EXTENDED MEMORY BITS
  1752	001156'					OUT	BR,AORB,OBR	;SET THEM UP
  1753	001160'					BRWRTE	IMM,D.XSTS	;LOOK AT TRANSMIT STATUS BYTE
  1754	001162'					LDMA	BR,ADD,SP.RM0	; LOAD THE MAR
  1755	001164'					SPBR	MEMX,SELB,SP0	;READ THE BYTE
  1756	001166'					BR4	XMTABT		;TRANSMIT ABORT PENDING
  1757	001170'					BRWRTE	IMM,D.XBDF	;LOOK AT TRANSMITTER FLAGS WORD
  1758	001172'					LDMA	BR,ADD,SP.RM0	; (LOAD MAR)
  1759	001174'					BRWRTE	MEMX,SELB	;READ THE FLAGS WORD
  1760	001176'					BRSHFT			;SHIFT IT RIGHT
  1761	001200'					BR4	50$		;BUFFER IS ASSIGNED
  1762					 
  1763					; THIS DONE IS THE RESULT OF A BUFFER TERMINATING AND NO SUBSEQUENT BUFFERS ASSIGNED
  1764					 
  1765	001202'					BR0	10$		;LAST BUFFER HAD END OF MESSAGE SET
  1766	001204'					ALWAYS	TIMRT3		;PREVIOUS BUFFER WAS NOT THE END OF
  1767									;MESSAGE - WAIT FOR THE NEXT BUFFER
  1768									;OR AN UNDERRUN ERROR
  1769	001206'				10$:	BRWRTE	SELA,SP.STS	;POSITION DEC-MODE BIT		**X1.3**
  1770	001210'					BRSHFT			;				**X1.3**
  1771	001212'					BR4	15$		;IF SET, CLEAR RTS		**X1.2**
  1772	001214'					ALWAYS	TIMRT3		;IF CLEAR, DON'T CLEAR RTS	**X1.2**
  1773	001216'				15$:	SP	IBUS,IOBA1,SP0	;READ THE LOW BYTE OF OUT ADDRESS (CSR 4)
  1774	001220'					BRWRTE	IMM,370		;MASK TO CHANGE IT TO CSR 0
  1775	001222'					OUTPUT	BR,AANDB,OBA1	;MAKE IT CSR 0
  1776	001224'					BRWRTE	IMM,377-DUPRTS	;MASK TO CLEAR RTS
  1777	001226'					SPBR	BR,AANDB,SP.CS0	;AND IMAGE OF CSR 0
  1778	001230'					OUTPUT	BR,SELB,OUTDA1	;IMAGE OF CSR 0 WITH RTS CLEAR
  1779	001232'					ALWAYS	XMTSN0		;START THE NPR THEN RETURN TO TIMER LOOP
  1780					 
  1781					; BUFFER IS ASSIGNED
  1782					 
  1783	001234'				XMTDN3:
  1784	001234'				50$:
  1785	001234'					BRWRTE	IBUS,INDAT1	;READ THE TRANSMIT CNTROL REGISTER
  1786	001236'					BR4	55$		;SEND SET
  1787	001240'					BRWRTE	IBUS,INDAT2	;GET THE BYTE CONTAINING TX ACTIVE
  1788	001242'					BR1	TIMRT3		;IF SET, DON'T SET SEND YET.
  1789									;NOTE THAT THE DUP MAY GET IN AN ILLEGAL
  1790									;SET IF SEND IS DROPPED AND REASSERTED BEFORE
  1791									;TX ACTIVE CLEARS
  1792	001244'					SP	IMM,DUPSND,SP0	;MASK TO SET SEND
  1793	001246'					ALWAYS	XMTSND		;"CALL" SEND ROUTINE AND RETURN TO TIMER LOOP
  1794					;
  1795					; ENTER HERE AFTER COMPLETING ONE BUFFER AND FIND ANOTHER ASSIGNED
  1796					; THE BRG CURRENTLY CONTAINS THE TRANSMIT FLAGS BYTE ROTATED
  1797					;
  1798	001250'				XMTDN4:	BR7	TIMRT3		;START OF MESSAGE SET - INDICATES PREVIOUS
  1799									;MESSAGE ENDED WITH AN EOF HENCE A TEOM
  1800									;HAS JUST BEEN SENT SO WAIT FOR NEXT TDONE
  1801	001252'				55$:	SPBR	MEMX,SELB,SP0	;READ THE FLAGS AGAIN
  1802	001254'					BR0	120$		;START OF MESSAGE FLAG SET
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 25-2
KDPMCX.MAC    30-DEC-82 03:47		XMTDON - TRANSMIT DONE

  1803	001256'				60$:	CALLSR	SP.SUB,DECNT,XMTCNT,D.XBDC ;DECREMENT THE BYTE COUNT
  1804					 
  1805					; ABOVE SUBROUTINE RETURNS HERE IF THE BYTE COUNT WAS NOT ZERO
  1806					; IF BYTE COUNT WAS ZERO, END OF BUFFER CONDITIONS ARE CHECKED IN XMTCNT
  1807					 
  1808	001266'				XMTDN2:	SPBR	MEMX,SELB,SP1	;READ THE LOW BYTE OF THE ADDRESS
  1809									;AND SAVE IT IN THE BRG
  1810	001270'					MEMINC	INCA,SP1	;INCREMENT ADDRESS AND STORE IT BACK
  1811	001272'					BR0	110$		;ODD CHARACTER (ALREADY BEEN READ)
  1812									;OTHERWISE ITS AN EVEN CHARACTER
  1813
  1814					; TRANSMIT EVEN CHARACTER
  1815					;  MUST READ A WORD FROM MEMORY
  1816					;
  1817									;NO NEED TO WORRY ABOUT CARRY SINCE THERE
  1818									;CAN'T BE ON AN EVEN TO ODD INCREMENT
  1819	001274'					OUTPUT	BR,SELB,IBA1	;BUFFER ADDRESS TO IN ADDRESS FIELD
  1820	001276'					OUTPUT	MEMI,SELB,IBA2	;..
  1821	001300'					BRWRTE	IMM,14		;MASK TO ISOLATE EXTENDED MEMORY BITS
  1822									;(3 LINES REPLACED)				**X1.2**
  1823	001302'					SPBR	BR,AANDB,SP0	;MASK FLAGS WORD LEAVING BR == SP0		**X1.2**
  1824	001304'					OUT	INCA,ONPR	;SET EXTENDED MEM BITS AND NPR REQUEST BIT	**X1.2**
  1825	001306'					OUTPUT	BR,AXORB,SP0,OUTDA2 ;CLEAR ALL DUP CONTROL BITS			**X1.2**
  1826	001310'				80$:	BRWRTE	IBUS,NPR	;READ THE NPR STATUS REGISTER			**X1.2**
  1827	001312'					BR0	80$		;NPR NOT DONE YET
  1828	001314'					OUTPUT	IBUS,INDAT1,OUTDA1,INCMAR ;MOVE CHARACTER TO OUTDATA FIELD
  1829									;AND MOVE THE MAR TO ODD CHARACTER SAVE BYTE
  1830	001316'					MEM	IBUS,INDAT2	;SAVE THE ODD CHARACTER IN RAM
  1831
  1832					; "RETURN" POINT FROM XMTSYN
  1833	001320'				WRTRT:
  1834	001320'					SP	IBUS,IOBA1,SP0	;READ CURRENT OUTPUT ADDRESS (CSR4)
  1835	001322'					BRWRTE	IMM,2		;VALUE TO ADD
  1836	001324'					OUTPUT	BR,ADD,OBA1	;POINT TO CSR6
  1837	001326'					BRWRTE	IMM,DATO	;MASK TO DO OUT NPR
  1838					; THIS IS THE "RETURN" POINT FROM XMTSND AND XMTSN0
  1839	001330'				XMTDN6:
  1840	001330'					OUT	BR,SELB,ONPR	;DO THE NPR
  1841	001332'				90$:	BRWRTE	IBUS,NPR	;WAIT FOR IT TO COMPLETE
  1842	001334'					BR0	90$		;NOT YET
  1843	001336'					ALWAYS	TIMRT3		;RETURN TO TIMER LOOP
  1844					 
  1845					; TRANSMIT ODD DATA CHARACTER
  1846					;
  1847					; INPUTS:
  1848					;	"C" BIT IS SET OR CLEAR DEPENDING ON CARRY FROM INCREMENT OF LOW BYTE
  1849					;	MAR	= D.XBDA+1
  1850					 
  1851	001340'				110$:	C	113$		;IF CARRY SET THEN MUST INCRMENT HIGH 10 BITS OF ADDR
  1852	001342'					BRWRTE	IMM,0,INCMAR	;ZERO THE BRG AND POINT MAR TO D.XBDF
  1853	001344'					ALWAYS	116$		;OTHERWISE NO NEED TO
  1854	001346'				113$:	CALLSB	SP.SUB,INCMM	;INCREMENT THE BUFFER ADDRESS (HIGH 10 BITS)
  1855									;RETURNS WITH MAR POINTING TO D.XBDF
  1856	001354'					BRWRTE	IMM,0		;ZERO THE BRG 
  1857	001356'				116$:	OUTPUT	BR,SELB,OUTDA2,INCMAR	;CLEAR ALL DUP CONTROL BITS
  1858									;AND POINT MAR TO ODD TRANSMIT CHARACTER
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 25-3
KDPMCX.MAC    30-DEC-82 03:47		XMTDON - TRANSMIT DONE

  1859	001360'					OUTPUT	MEMX,SELB,OUTDA1	;MOVE THE CHARACTER TO THE OUTDATA FIELD
  1860	001362'					ALWAYS	WRTRT		;INCREMENT OUT ADDR BY 2 (CSR6) AND DO AN
  1861									;NPR TO WRITE OUT THE CHARACTER
  1862									;RETURN TO THE TIMER LOOP
  1863					 
  1864					; START OF MESSAGE SET
  1865					;
  1866					; BRG AND SP0 = (D.XBDF)
  1867					 
  1868	001364'				120$:
  1869	001364'					BR4	XMTSYN		;RESYNC REQUESTED
  1870	001366'					BRWRTE	IBUS,INDAT2	;READ HIGH BYTE OF CSR4
  1871	001370'					BR7	130$		;UNDERRUN OCCURRED, SEND 2 SOM'S
  1873	001372'					MEM	DECA,SP0	;CLEAR IT
  1874	001374'					BRWRTE	SELA,SP.STS	;GET THE STATUS BYTE
  1875	001376'					BRSHFT
  1876	001400'					BR4	60$		;DEC MODE (DDCMP)
  1877	001402'				130$:
  1878	001402'					BRWRTE	IMM,DUPTSM	;START OF MESSAGE BIT
  1879	001404'					OUTPUT	BR,SELB,OUTDA2	;SET START OF MESSAGE
  1880	001406'					ALWAYS	WRTRT		;COMMON CODE TO INCR OUT ADDR BY 2
  1881									;DO AN NPR AND RETURN TO TIMER LOOP
  1882						.DSABL	LSB
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 26
KDPMCX.MAC    30-DEC-82 03:47		XMTDON - TRANSMIT DONE

  1884
  1885						.SBTTL	RCVDON-RECEIVED CHARACTER PROCESSOR
  1886					;	FILE	DUPRCV.MAC
  1887					 
  1888					;+
  1889					;	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
  1890					; 
  1891					; 
  1892					;CALLED BY:	TIMER
  1893					;
  1894					;INPUTS:
  1895					;	SP.RM0,SP.RM1	=ADDRESS OF CURRENT LINE TABLE
  1896					;	SP.CS0   =DUP RECEIVE STATUS REGISTER
  1897					;	SP.CHR   =RECEIVED CHARACTER
  1898					;	SP.RST   =STATUS OF CHARACTER
  1899					;OUTPUTS:
  1900					;	CHECKS FOR RECEIVE ERRORS, THEN BRANCHES TO A RECEIVE STATE PROCESSOR
  1901					;	USING D.RPTR FROM LINE TABLE.  RSTATE MACRO CHANGES STATE SETTINGS.
  1902					;	RECIEVE STATE INITIALIZED BY CONTROL IN.
  1903					;-
  1904					 
  1905	001410'				RCVDON:
  1906	001410'					BRWRTE	IMM,D.STS		;OFFSET TO STATUS BYTE
  1907	001412'					LDMA	BR,ADD,SP.RM0		;SET UP MAR
  1908	001414'					LDMAP	SELA,SP.RM1		;LOAD MAR HI
  1909	001416'					SP	MEMI,SELB,SP.STS	;SAVE STATUS BYTE IN SP
  1910					 
  1911					; CHECK IF ANY ERROR ON RECEIVED CHARACTER
  1912					 
  1913	001420'					BRWRTE	BR,SELA,SP.RST		;GET HIGH BYTE OF RECEIVE BUFFER
  1914	001422'					BR7	DUPRER			;RECEIVE ERROR ***
  1915					 
  1916					;CHARACTER IS ERROR FREE
  1917					 
  1918					;DISPATCH TO THE CURRENT RECEIVE STATE PROCESSOR.
  1919					 
  1920	001424'					.ALWAY	MEMX,SELB,RP		;DISPATCH VIA STATE POINTER
  1921
  1922					; ***NOTE: ALL STATE PROCESSORS MUST BE IN PAGE RP
  1923					 
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 26-1
KDPMCX.MAC    30-DEC-82 03:47		BIT-STUFF PROTOCOL RECEIVE PROCESSORS

  1925						.SBTTL	BIT-STUFF PROTOCOL RECEIVE PROCESSORS
  1926					;	FILE	DUPSDLC.MAC
  1927					 
  1928		004000			RP=<.-START>&3000*4	;PAGE ADDRESS OF RECEIVE STATE PROCESSORES
  1929
  1930
  1931						.SBTTL	RB1-BIT STUFF RECEIVE STATE ONE
  1932					 
  1933					;+ 
  1934					; 
  1935					;	B I T  S T U F F  R E C E I V E  S T A T E  O N E
  1936					; 
  1937					;ENTERED FROM:	RCVDON 
  1938					;
  1939					;INPUTS: 
  1940					;	MAR	=RECEIVER STATE POINTER (D.RPTR)
  1941					;
  1942					;OUTPUTS:
  1943					;	RECEIVE STATE POINTER IS SET TO STATE TWO
  1944					;-
  1945					 
  1946						.ENABL	LSB			;			**X1.2**
  1947	001426'				RB1:
  1948	001426'					RSTATE	RB2			;SET TO STATE 2
  1949										;(3 LINES REPLACED)		**X1.2**
  1950	001430'					ALWAYS	10$			;JOIN COMMON CODE CHAIN		**X1.2**
  1951										; TO SILO AND RETURN TO TIMER
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 27
KDPMCX.MAC    30-DEC-82 03:47		RB1-BIT STUFF RECEIVE STATE ONE

  1953
  1954						.SBTTL	RB2-BIT STUFF RECEIVE STATE TWO
  1955					 
  1956					;+ 
  1957					; 
  1958					;	B I T  S T U F F  R E C E I V E  S T A T E  T W O
  1959					; 
  1960					;ENTERED FROM:	RCVDON 
  1961					; 
  1962					;INPUTS:
  1963					;	MAR	=RECEIVE STATE POINTER (D.RPTR)
  1964					;
  1965					;OUTPUTS:
  1966					;	STATE POINTER IS SET TO STATE THREE
  1967					;	CURRENT RECEIVED CHARACTER IS PUSHED INTO THE LOCAL TWO CHARACTER SILO
  1968					;-
  1969
  1970	001432'				RB2:
  1971	001432'					RSTATE	RB3		;SET STATE THREE
  1972									;(2 LINES REPLACED)			**X1.2**
  1973	001434'				10$:	BRADDR	TIMRTN		;RETURN ADDRESS TO POLLING LOOP		**X1.2**
  1974	001436'					ALWAYS	20$		;CONTINUE DOWN COMMON RETURN CHAIN TO	**X1.2**
  1975									; SILO AND TIMER
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 28
KDPMCX.MAC    30-DEC-82 03:47		RB2-BIT STUFF RECEIVE STATE TWO

  1977
  1978						.SBTTL	RB3-BIT STUFF RECEIVE STATE THREE
  1979					 
  1980					;+ 
  1981					; 
  1982					;	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
  1983					; 
  1984					; ENTERED FROM:	RCVDON 
  1985					; 
  1986					; INPUTS:
  1987					;	MAR = RECEIVE STATE POINTER (D.RPTR)
  1988					;	BR = HIGH BYTE OF CSR0 (SP.RST - RECEIVE CHARACTER STATUS)
  1989					; OUTPUTS:
  1990					;	CHECK FOR END OF MESSAGE, IF END GOTO RBDONE
  1991					;	ELSE STORE THE CHARACTER AND STAY IN THIS STATE
  1992					;-
  1993					 
  1994	001440'				RB3:
  1995					 
  1996					; CHECK IF END OF MESSAGE
  1997					 
  1998	001440'					BR1	RBDONE			;END OF RECEIVED MESSAGE
  1999					 
  2000					;NOT END OF RECEIVED MESSAGE
  2001					 
  2002	001442'					BRADDR	RB3P0			;RETURN ADDRESS TO STORE
  2003
  2004					; COMMON CODE PATHS FOR RB STATES ENTER HERE
  2005
  2006	001444'				20$:	SP	BR,SELB,SP.SUB,INCMAR	;SAVE RETURN ADDRESS
  2007										;FALL INTO LSILO
  2008						.DSABL	LSB			;		**X1.2**
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 29
KDPMCX.MAC    30-DEC-82 03:47		RB3-BIT STUFF RECEIVE STATE THREE

  2010
  2011						.SBTTL	LSILO-PUSH CHARACTER INTO LOCAL TWO CHARACTER SILO
  2012					 
  2013					;+
  2014					; 
  2015					; 	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
  2016					; 
  2017					; CALLED BY:	BIT STUFF RECEIVE STATES; RB1,RB2,RB3
  2018					; 
  2019					; INPUTS:
  2020					;	SP.SUB=RETURN ADDRESS
  2021					;	SP.CHR=CHARACTER TO BE PUSHED INTO LOCAL TWO CHARACTER SILO
  2022					;	MAR = D.SADR
  2023					;
  2024					; OUTPUTS:
  2025					;	CHARACTER IN SP.CHR IS PUSHED INTO SILO
  2026					;	UNDERFLOW CHARACTER FROM THE SILO IS LOADED INTO SP.CHR
  2027					;	IF IN CRC INHIBIT MODE,INPUT CHARACTER IS DIRECTLY STORED
  2028					;	IN MEMORY.
  2029					;-
  2030					 
  2031	001446'				LSILO:
  2032					 
  2033	001446'					BRWRTE	SELA,SP.STS,INCMAR	;GET STATUS BYTE
  2034										;MAR NOW POINTS TO D.SILO
  2035	001450'					BR7	STORE		;STORE CHARACTER IF CRC INHIBIT
  2036	001452'					SP	MEMX,SELB,SP0	;TEMPORARILY STORE TOP SILO CHR IN SP0
  2037	001454'					MEMINC	SELA,SP.CHR	;LOAD NEW CHARACTER INTO TOP SILO POSITION
  2038	001456'					SP	MEMX,SELB,SP.CHR	;LOAD UNDERFLOW CHR. INTO SP.CHR
  2039	001460'					MEM	SELA,SP0	;STORE OLD TOP CHR INTO BOTTOM POSITION IN SILO
  2040	001462'					RTNSUB	SP.SUB,P0	;RETURN
  2041					 
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 30
KDPMCX.MAC    30-DEC-82 03:47		LSILO-PUSH CHARACTER INTO LOCAL TWO CHARACTER SILO

  2043
  2044						.SBTTL	RBDONE - END OF BIT STUFF MESSAGE RECEIVED
  2045
  2046					;+
  2047					;
  2048					;	END OF BIT STUFF MESSAGE RECEIVED
  2049					;
  2050					; ENTERED BY:	RB3
  2051					;
  2052					; INPUTS:
  2053					;	MAR	=RECEIVE STATE POINTER (D.RPTR)
  2054					;
  2055					; OUTPUTS:
  2056					;	RECEIVE STATE POINTER RESET TO ONE
  2057					;	GENERAL END OF RECEIVE MESSAGE ROUTINE CALLED
  2058					;-
  2059					 
  2060	001464'				RBDONE:
  2061	001464'					RSTATE	RB1		;SET RECEIVE STATE 1
  2062	001466'					CALLSR	SP.SB1,EOFMSG,TIMRP2 ;CALL END OF MESSAGE ROUTINE AND 
  2063									; RETURN TO TIMER'S POLLING LOOP
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 31
KDPMCX.MAC    30-DEC-82 03:47		RBDONE - END OF BIT STUFF MESSAGE RECEIVED

  2065
  2066						.SBTTL	DDCMP RECEIVE STATE PROCESSORS
  2067					;	FILE	DUPDDCMP.MAC
  2068					 
  2069					;+ 
  2070					; 
  2071					;	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
  2072					; 
  2073					; 
  2074					; DDCMP RECEIVE STATE PROCESSORS FOR THE COMIOP-DUP FOLLOW.
  2075					;- 
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 32
KDPMCX.MAC    30-DEC-82 03:47		DDCMP RECEIVE STATE PROCESSORS

  2077
  2078						.SBTTL	RDH1-RECEIVING FIRST DDCMP HEADER CHARACTER
  2079					 
  2080					 
  2081					;+
  2082					;	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
  2083					; 
  2084					; ENTERED FROM:	RCVDON
  2085					;
  2086					; INPUTS:
  2087					;	MAR    = RECEIVE STATE POINTER (D.RPTR)
  2088					;	SP.CHR = CURRENT RECEIVE CHARACTER
  2089					;	SP.LN  = CURRENT LINE NUMBER
  2090					;	SP.CS0 = IMAGE OF LOW BYTE OF DUP'S CSR0
  2091					;
  2092					; OUTPUTS:
  2093					;	RECEIVE STATE POINTER IS SET TO THE SECOND DDCMP RECEIVE STATE.
  2094					;	RECEIVE STATUS BYTE D.STS IS UPDATED TO INDICATE WHETHER A
  2095					;	NUMBERED MESSAGE (SOH OR DLE) OR AN UNNUMBERED MESSAGE (ENQ) IS RECEIVED.
  2096					;	A CONTROL OUT IS GENERATED IF AN ILLEGAL HEADER CHARACTER IS RECEIVED.
  2097					;IF THE CHARACTER IS LEGAL, STORE ROUTINE IS CALLED TO SAVE IT IN THE USER
  2098					;RECEIVE BUFFER.
  2099					;IF THE CHARACTER IS SYNC OR PAD,RESYNC THE RECEIVER
  2100					;-
  2101					 
  2102					 
  2103	001474'				RDH1:
  2104					; SET RECEIVE STATE TWO
  2105	001474'					RSTATE	RDH2		;SET RECEIVE STATE TWO
  2106					 
  2107					; SET RAM ADDRESS TO RECEIVE STATUS BYTE
  2108					 
  2109	001476'					BRWRTE	IMM,D.STS	;OFFSET INTO BR
  2110	001500'					LDMA	BR,ADD,SP.RM0
  2111					;RESET SELECT,Q-SYNC,IGNORE AND NUMBERED MESSAGE BITS
  2112					 
  2113	001502'					BRWRTE	IMM,<377-DS.SLT-DS.QSC-DS.IGN-DS.NUM> ;MASK TO CLEAR THOSE BITS
  2114	001504'					MEM	BR,AANDB,SP.STS	;CLEAR THOSE BITS AND SAVE
  2115	001506'					SP	MEMX,SELB,SP.STS	;GET NEW STATUS
  2116					 
  2117					; DETERMINE TYPE OF MESSAGE.INPUT CHARACTER IS AVAILABLE IN SP.CHR
  2118					 
  2119	001510'					BRWRTE	IMM,SOH		;IS IT AN SOH?
  2120	001512'					COMP	BR,SP.CHR
  2121	001514'					Z	10$		;YES,NUMBERED MESSAGE
  2122					 
  2123	001516'					BRWRTE	IMM,ENQ		;IS IT AN ENQ?
  2124	001520'					COMP	BR,SP.CHR
  2125	001522'					Z	STORE		;YES,UNNUMBERED MESSAGE
  2126					 
  2127	001524'					BRWRTE	IMM,DLE		;IS IT A DLE?
  2128	001526'					COMP	BR,SP.CHR
  2129	001530'					Z	10$		;YES,MAINTAINANCE (NUMBERED) MESSAGE
  2130					 
  2131					; UNRECOGNIZED START OF HEADER CHARACTER - JUST RESYNC
  2132					 
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 32-1
KDPMCX.MAC    30-DEC-82 03:47		RDH1-RECEIVING FIRST DDCMP HEADER CHARACTER

  2133	001532'					ALWAYS	RSNCRT		;RESYNC AND RETURN TO TIMER
  2134					 
  2135					;A NUMBERED MESSAGE IS BEING RECEIVED(SOH OR DLE). SET 'NUMBERED MESSAGE
  2136					;BEING RECEIVED' IN D.STS
  2137					 
  2138	001534'				10$:
  2139	001534'					BRWRTE	IMM,DS.NUM	;MASK TO SET IT
  2140									;(2 LINES REPLACED)			**X1.2**
  2141	001536'					ALWAYS	RDH6A		;JOIN COMMON CODE TO OR IT INTO D.STS	**X1.2**
  2142									; AND STORE CURRENT CHARACTER		**X1.2**
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 33
KDPMCX.MAC    30-DEC-82 03:47		RDH1-RECEIVING FIRST DDCMP HEADER CHARACTER

  2144
  2145						.SBTTL	RDH2-RECEIVING SECOND DDCMP HEADER CHARACTER
  2146					 
  2147					;+ 
  2148					; 
  2149					;	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
  2150					; 
  2151					; ENTERED FROM:	RCVDON
  2152					; 
  2153					; INPUTS:
  2154					;	MAR	= RECEIVE STATE POINTER (D.RPTR)
  2155					;	SP.CHR	= RECEIVED CHARACTER
  2156					; 
  2157					; OUTPUTS:
  2158					;	RECEIVE STATE POINTER IS CHANGED TO RECEIVE STATE THREE.  CURRENT
  2159					; RECEIVED CHARACTER (LOW ORDER BYTE COUNT IN THE CASE OF A NUMBERED
  2160					; MESSAGE) IS SAVED IN D.DCC1. STORE ROUTINE IS CALLED TO STORE THE CURRENT
  2161					; RECEIVED CHARACTER IN THE USER RECEIVE BUFFER
  2162					;- 
  2163					 
  2164	001540'				RDH2:
  2165					 
  2166					; UPDATE RECEIVE STATE POINTER TO STATE THREE
  2167					 
  2168	001540'					RSTATE	RDH3
  2169					 
  2170					; SAVE CHARACTER COUNT (TYPE IF UNNUMBERED MESSAGE) IN D.DCC1
  2171					 
  2172	001542'					BRWRTE	IMM,D.DCC1	;ADDRESS D.DCC1
  2173	001544'					LDMA	BR,ADD,SP.RM0
  2174	001546'					MEM	SELA,SP.CHR	;CURRENT CHARACTER AVAILABLE IN SP.CHR
  2175					 
  2176					; STORE CURRENT RECEIVED CHARACTER IN USER BUFFER
  2177					 
  2178	001550'					ALWAYS	STORE
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 34
KDPMCX.MAC    30-DEC-82 03:47		RDH2-RECEIVING SECOND DDCMP HEADER CHARACTER

  2180
  2181						.SBTTL	RDH3-RECEIVING THIRD DDCMP HEADER CHARACTER
  2182					 
  2183					;+ 
  2184					; 
  2185					;	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
  2186					; 
  2187					; ENTERED FROM:	RCVDON
  2188					; 
  2189					; INPUTS:
  2190					;	MAR	= RECEIVE STATE POINTER (D.RPTR)
  2191					;	SP.CHR	= RECEIVED CHARACTER
  2192					; 
  2193					; OUTPUTS:
  2194					;	RECEIVE STATE POINTER IS CHANGED TO STATE FOUR OF DDCMP RECEIVE PROCESSOR.
  2195					; HIGH ORDER SIX BITS OF THE CHARACTER COUNT (MEANINGFUL ONLY TO
  2196					; NUMBERED MESSAGES) ARE STORED IN D.DCC2. Q-SYNC AND SELECT BITS ARE UPDATED
  2197					; IN D.STS.
  2198					;- 
  2199					 
  2200	001552'				RDH3:
  2201					 
  2202					; SET RECEIVE STATE POINTER TO STATE FOUR
  2203					 
  2204	001552'					RSTATE	RDH4
  2205					 
  2206					; SAVE HIGH ORDER SIX BITS OF BYTE COUNT (NOT MEANINGFUL FOR UNNUMBERED MESSAGE)
  2207					 
  2208	001554'					BRWRTE	IMM,D.DCC2	;ADDRESS D.DCC2
  2209	001556'					LDMA	BR,ADD,SP.RM0
  2210	001560'					BRWRTE	IMM,77		;MASK TO STRIP HIGH ORDER 2 BITS
  2211	001562'					MEM	BR,AANDB,SP.CHR	;STRIP THEM FROM CURRENT CHR AND STORE IN RAM
  2212					 
  2213					; UPDATE SELECT AND Q-SYNC BITS IN D.STS
  2214					 
  2215	001564'					SP	BR,AANDB,SP.STS	;STRIP OLD SEL. Q-SYNC BITS IN SP.STS
  2216	001566'					BRWRTE	IMM,D.STS	;ADDRESS D.STS
  2217	001570'					LDMA	BR,ADD,SP.RM0
  2218	001572'					BRWRTE	IMM,300		;MASK TO ISOLATE NEW SELECT,Q-SYNC BITS
  2219	001574'					BRWRTE	BR,AANDB,SP.CHR	;GET NEW BITS INTO BR
  2220									;(2 LINES REPLACED)		**X1.2**
  2221
  2222					; STORE CURRENT RECEIVED CHARACTER IN USER RECEIVE BUFFER AND	**X1.2**
  2223					;  UPDATE STATUS.						**X1.2**
  2224					 
  2225	001576'					ALWAYS	RDH6A		;				**X1.2**
  2226					 
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 35
KDPMCX.MAC    30-DEC-82 03:47		RDH3-RECEIVING THIRD DDCMP HEADER CHARACTER

  2228
  2229						.SBTTL	RDH4-RECEIVING FOURTH DDCMP HEADER CHARACTER
  2230					 
  2231					;+ 
  2232					; 
  2233					;	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
  2234					;			(RESPONSE FIELD)
  2235					; 
  2236					; ENTERED FROM:	RCVDON
  2237					; 
  2238					; INPUTS:
  2239					;	MAR	= RECEIVE STATE POINTER (D.RPTR)
  2240					;	SP.CHR	= RECEIVED CHARACTER
  2241					; 
  2242					; OUTPUTS:
  2243					;	RECEIVE STATE POINTER IS CHANGED TO STATE FIVE OF RECEIVE PROCESSOR.
  2244					; THE CURRENT CHARACTER (RESPONSE FIELD) IS STORED IN USER RECEIVE BUFFER.
  2245					;- 
  2246					 
  2247	001600'				RDH4:
  2248					 
  2249					; SET RECEIVE STATE POINTER TO STATE FIVE
  2250					 
  2251	001600'					RSTATE	RDH5
  2252					 
  2253					; STORE CURRENT CHARACTER (RESPONSE FIELD) IN USER RECEIVE BUFFER
  2254					 
  2255	001602'					ALWAYS STORE
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 36
KDPMCX.MAC    30-DEC-82 03:47		RDH4-RECEIVING FOURTH DDCMP HEADER CHARACTER

  2257
  2258						.SBTTL	RDH5-RECEIVING FIFTH DDCMP HEADER CHARACTER
  2259					 
  2260					;+ 
  2261					; 
  2262					;	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
  2263					;			(MESSAGE NUMBER FIELD)
  2264					; 
  2265					; ENTERED FROM:	RCVDON
  2266					; 
  2267					; INPUTS:
  2268					;	MAR	= RECEIVE STATE POINTER (D.RPTR)
  2269					;	SP.CHR	= RECEIVED CHARACTER
  2270					; 
  2271					; OUTPUTS:
  2272					;	RECEIVE STATE POINTER IS SET TO STATE SIX.  CURRENT CHARACTER (MESSAGE
  2273					; NUMBER FIELD) IS STORED IN THE USER RECEIVE BUFFER.
  2274					;- 
  2275
  2276	001604'				RDH5:
  2277					 
  2278					; SET RECEIVE STATE POINTER TO STATE SIX
  2279					 
  2280	001604'					RSTATE	RDH6
  2281					 
  2282					;STORE CURRENT CHARACTER (MESSAGE NUMBER) IN USER BUFFER
  2283					 
  2284	001606'					ALWAYS	STORE
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 37
KDPMCX.MAC    30-DEC-82 03:47		RDH5-RECEIVING FIFTH DDCMP HEADER CHARACTER

  2286
  2287						.SBTTL	RDH6-RECEIVING SIXTH DDCMP HEADER CHARACTER
  2288					 
  2289					;+ 
  2290					; 
  2291					;	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
  2292					;			(STATION ADDRESS FIELD)
  2293					; 
  2294					; ENTERED FROM:	RCVDON
  2295					;
  2296					; INPUTS:
  2297					;	MAR	= RECEIVE STATE POINTER (D.RPTR)
  2298					;	SP,CHR	= RECEIVES CHARACTER
  2299					; 
  2300					; OUTPUTS:
  2301					;	RECEIVE STATE POINTER IS SET TO PROCESS FIRST HEADER CRC CHARACTER.
  2302					; IF THE USER STATION IS A SECONDARY STATION AND THERE IS AN ADDRESS MISMATCH,
  2303					; THE IGNORE BIT IS SET IN D.STS.
  2304					;- 
  2305
  2306	001610'				RDH6:
  2307					 
  2308					;SET RECEIVE STATE POINTER TO PROCESS FIRST HEADER CRC
  2309					 
  2310	001610'					RSTATE	RHCRC1
  2311					 
  2312					;CHECK IF SECONDARY STATION
  2313					 
  2314	001612'					BRWRTE	SELA,SP.STS,INCMAR	;LOAD D.STS INTO BR AND ADDRESS D.SADR
  2315	001614'					BRSHFT			;SHIFT IT RIGHT
  2316	001616'					BR1	10$		;BRANCH IF SECONDARY STATION
  2317					 
  2318					; CURRENT STATION IS NOT A SECONDARY STATION, NO ADDRESS CHECKING NECESSARY
  2319					 
  2320	001620'					ALWAYS	STORE		;STORE CHARACTER IN REC BUFFER
  2321					 
  2322					; CURRENT STATION IS A SECONDARY STATION.
  2323					 
  2324	001622'				10$:
  2325					 
  2326					;CHECK IF ADDRESS MATCH (MAR MUST NOW BE POINTING AT D.SADR)
  2327	001622'					COMP	MEMX,SP.CHR	;ADDRESS MATCH?
  2328	001624'					Z	STORE		;YES,STORE THE CHARACTER
  2329					 
  2330					; STATION IS A SECONDARY STATION, BUT IS NOT ADDRESSED 
  2331					; SET IGNORE MODE
  2332					 
  2333	001626'					BRWRTE	IMM,D.STS	;ADDRESS  STATUS BYTE
  2334	001630'					LDMA	BR,ADD,SP.RM0
  2335	001632'					BRWRTE	IMM,DS.IGN	;MASK TO SET IGNORE MODE
  2336									;(1 LINE REPLACED)	**X1.2**
  2337
  2338					; COMMON PATH TO UPDATE SP.STS AND STORE CHARACTER	**X1.2**
  2339
  2340	001634'				RDH6A:	MEM	BR,AORB,SP.STS	;WRITE IT BACK INTO RAM	**X1.2**
  2341	001636'					ALWAYS	STORE		;STORE CURRENT CHARACTER
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 38
KDPMCX.MAC    30-DEC-82 03:47		RDH6-RECEIVING SIXTH DDCMP HEADER CHARACTER

  2343
  2344						.SBTTL	RHCRC1-RECEIVING FIRST DDCMP HEADER CRC
  2345					 
  2346					;+ 
  2347					; 
  2348					;	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
  2349					; 
  2350					; ENTERED FROM:	RCVDON
  2351					; 
  2352					; INPUTS:
  2353					;	MAR	= RECEIVE STATE POINTER (D.RPTR)
  2354					; 
  2355					; OUTPUTS:
  2356					;	RECEIVE STATE POINTER IS SET TO PROCESS SECOND DDCMP HEADER
  2357					; CRC CHARACTER.
  2358					;-
  2359
  2360	001640'				RHCRC1:
  2361					 
  2362					;SET RECEIVE STATE POINTER TO RECEIVE SECOND DDCMP HEADER CRC
  2363					 
  2364	001640'					RSTATE	RHCRC2
  2365
  2366					; ** PAGE ONE RETURN TO TIMER FOR RECEIVE ROUTINES **
  2367
  2368	001642'				TIMRP1:	ALWAYS	TIMRTN		;RETURN TO THE TIMER LOOP
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 39
KDPMCX.MAC    30-DEC-82 03:47		RHCRC1-RECEIVING FIRST DDCMP HEADER CRC

  2371
  2372						.SBTTL	RHCRC2-RECEIVING SECOND DDCMP HEADER CRC
  2373					 
  2374					;+ 
  2375					;
  2376					;	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
  2377					; 
  2378					; ENTERED FROM:	RCVDON
  2379					; 
  2380					; INPUTS:
  2381					;	MAR	= RECEIVE STATE POINTER (D.RPTR)
  2382					;	BR = HIGH BYTE OF CSR 2 (SP.RST - RECEIVE CHARACTER STATUS)
  2383					;
  2384					; OUTPUTS:
  2385					;	DUP HAS RECEIVED SECOND HEADER CRC CHAR.
  2386					;	CHECK IF HEADER CRC IS VALID, IF NOT POST ERROR CNTRL OUT.
  2387					;	IF THIS IS AN UNNUMBERED MESG, PROCESS NOW.
  2388					;	ELSE (NUMBERED OR MAINT), STATE IS SET TO RECEIVE DATA.
  2389					;-
  2390					 
  2391	001644'				RHCRC2:
  2392					 
  2393					; SET RECEIVE STATE POINTER TO RECEIVE DDCMP DATA
  2394					 
  2395	001644'					RSTATE	RDDATA
  2396					 
  2397					; CHECK IF THERE IS A CRC ERROR
  2398					 
  2399	001646'					BR4	10$		;CRC=0,MESSAGE IS OK
  2400	001650'					ALWAYS	ERR10		;***CRC ERROR***
  2401					 
  2402					;CHECK IF THE CURRENT MESSAGE IS A NUMBERED MESSAGE
  2403					 
  2404	001652'				10$:
  2405	001652'					BRWRTE	SELA,SP.STS	;LEFT SHIFT D.STS AND LOAD INTO BR
  2406	001654'					BR0	TIMRTN		;RECEIVING NUMBERED MESSAGE
  2407									;RETURN TO TIMER
  2408					 
  2409					;RECEIVING UNNUMBERED MESSAGE
  2410					 
  2411	001656'					ALWAYS	MSGIN		;PROCESS ONE MESSAGE
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 40
KDPMCX.MAC    30-DEC-82 03:47		RHCRC2-RECEIVING SECOND DDCMP HEADER CRC

  2413
  2414						.SBTTL	RDDATA-RECEIVING DDCMP DATA CHARACTERS
  2415					 
  2416					;+ 
  2417					; 
  2418					;	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
  2419					; 
  2420					; ENTERED FROM:	RCVDON
  2421					; 
  2422					; INPUTS:
  2423					;	MAR	= RECEIVE STATE POINTER (D.RPTR)
  2424					; 
  2425					; OUTPUTS:
  2426					;	THE DATA BYTE COUNT IS DECREMENTED.
  2427					;	IF ALL DATA IS RECEIVED, THIS IS THE FIRST CRC CHAR.
  2428					;	OTHERWISE, STORE THE DATA IN BUFFER IF FOR THIS STATION.
  2429					;-
  2430					 
  2431	001660'				RDDATA:
  2432					 
  2433					;CHECK IF LAST DDCMP DATA CHARACTER
  2434					 
  2435	001660'					CALLSR	SP.SUB,DECDCC,DECP2	;DECREMENT DDCMP DATA CHARACTER COUNT
  2436	001666'				RDATA1:
  2437	001666'					C	10$		;BRANCH IF COUNT NOT -1
  2438					 
  2439					;CURRENT CHARACTER IS THE FIRST DDCMP DATA CRC CHARACTER
  2440					 
  2441	001670'					ALWAYS	RDCRC1
  2442					 
  2443					 
  2444					; STORE CURRENT DATA CHARACTER IN USER RECEIVE BUFFER IF THE CURRENT MESSAGE
  2445					;IS ADDRESSED TO THIS STATION.
  2446					 
  2447	001672'				10$:
  2448	001672'					BRWRTE	SELA,SP.STS	;GET SP.STS(=D.STS)
  2449	001674'					BR4	TIMRTN		;MESSAGE NOT FOR THIS STATION
  2450					 
  2451					; DATA CHARACTER IS PART OF A NUMBERED MESSAGE ADDRESSED TO THIS STATION,SAVE IT
  2452					 
  2453	001676'					ALWAYS	STORE
  2454					 
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 41
KDPMCX.MAC    30-DEC-82 03:47		RDDATA-RECEIVING DDCMP DATA CHARACTERS

  2456
  2457						.SBTTL	RDCRC1-RECEIVING FIRST DDCMP DATA CRC
  2458					 
  2459					;+ 
  2460					; 
  2461					;	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
  2462					; 
  2463					; ENTERED FROM:	RDDATA
  2464					; 
  2465					; INPUTS:
  2466					; 
  2467					; OUTPUTS:
  2468					;	RECEIVE STATE POINTER IS SET TO PROCESS SECOND DATA CRC
  2469					;- 
  2470
  2471	001700'				RDCRC1:
  2472					 
  2473					;SET RECEIVE STATE POINTER TO SECOND DATA CRC PROCESSOR
  2474					 
  2475	001700'					BRWRTE	IMM,D.RPTR	;ADDRESS D.RPTR (SINCE IT WAS CHANGED IN
  2476	001702'					LDMA	BR,ADD,SP.RM0	;THE PREVIOUS STATE)
  2477	001704'					RSTATE	RDCRC2
  2478	001706'					ALWAYS	TIMRTN		;RETURN TO TIMER
  2479					 
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 42
KDPMCX.MAC    30-DEC-82 03:47		RDCRC1-RECEIVING FIRST DDCMP DATA CRC

  2481
  2482						.SBTTL	RDCRC2-RECEIVING SECOND DATA CRC
  2483					 
  2484					;+ 
  2485					;
  2486					;	R E C E I V I N G  S E C O N D  D A T A  C R C
  2487					; 
  2488					; ENTERED FROM:	RCVDON
  2489					; 
  2490					; INPUTS:
  2491					;	BR = HIGH BYTE OF CSR2 (SP.RST - RECEIVE CHARACTER STATUS)
  2492					; OUTPUTS:
  2493					; IF A CRC ERROR IS DETECTED ON THE CURRENT MESSAGE,A CONTROL OUT IS GENERATED.
  2494					; IF THE MESSAGE IS GOOD, MSGIN ROUTINE IS EXECUTED TO PROCESS IT
  2495					;-
  2496					 
  2497	001710'				RDCRC2:
  2498					 
  2499					; CHECK FOR CRC ERROR
  2500					 
  2501	001710'					BR4	MSGIN		;CRC OK,USE COMMON CODE
  2502	001712'					ALWAYS	ERR12		;***CRC ERROR ON DATA***
  2503					 
  2504					 
  2505					;+
  2506					;
  2507					;	 RETURN TO TIMER LOOP FROM RECEIVE STORE ROUTINES
  2508					;
  2509					; ENTERED FROM:	RCVEXT (SUBR RETURN)
  2510					;
  2511					; INPUTS:
  2512					;	NPR STARTED EARLIER IN STORE RECVD CHAR ROUTINES
  2513					;
  2514					; OUTPUTS:
  2515					;	WAIT FOR NPR TO COMPLETE AND RETURN TO TIMER
  2516					;-
  2517
  2519	001714'				NPRWP1:
  2520	001714'					BRWRTE	IBUS,NPR	;READ NPR CONTROL REGISTER
  2521	001716'					BR0	NPRWP1		;NOT DONE YET
  2522	001720'					ALWAYS	TIMRTN		;RETURN TO TIMER LOOP
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 43
KDPMCX.MAC    30-DEC-82 03:47		RDCRC2-RECEIVING SECOND DATA CRC

  2524
  2525						.SBTTL	DSRCHG-DATA SET READY CHANGE
  2526
  2527					;+
  2528					; **DSRCHG-ROUTINE TO GIVE A DATA SET READY CHANGE CONTROL OUT**
  2529					;
  2530					; CALLED BY:	TIMER
  2531					;
  2532					; INPUTS:
  2533					;	SP0 = IMAGE OF DUP'S CSR 1 (DSR=BIT 1)
  2534					;	MAR = D.STS
  2535					;
  2536					; OUTPUTS:
  2537					;	MAR = D.STS
  2538					;	D.STS (BIT 1) = CURRENT SETTING OF DSR
  2539					;-
  2540	001722'				DSRCHG:
  2542	001722'					SP	IMM,DS.DSR,SP2	;GET MASK FOR DSR INTO SP2
  2543	001724'					MEM	MEMX,AXORB,SP2	;RECORD THE CURRENT STATE OF DSR
  2544									;IF IT WAS SET CLEAR IT, IF IT WAS CLEAR
  2545									;SET IT
  2546	001726'					CALLSR	SP.SUB,COUTX,TIMRP3,ER.DSR	;QUEUE A CONTROL OUT AND
  2547									;RETURN TO TIMER LOOP
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 44
KDPMCX.MAC    30-DEC-82 03:47		DSRCHG-DATA SET READY CHANGE

  2549
  2550						.SBTTL	MSGIN-DDCMP MESSAGE PROCESSOR
  2551
  2552					;+
  2553					;
  2554					;		D D C M P  M E S S A G E  I N
  2555					; 
  2556					; ENTERED FROM:	RDCRC2(NUMBERED), RHCRC2(UNNUMBERED)
  2557					;
  2558					; A COMPLETE DDCMP MESSAGE (NUMBERED OR UNNUMBERED) HAS BEEN RECEIVED WITHOUT
  2559					; A CRC ERROR.PROCESS IT.
  2560					;
  2561					; INPUTS:
  2562					;	MAR	= RECEIVE STATE POINTER (D.RPTR)
  2563					;
  2564					; OUTPUTS:
  2565					;	RECEIVE STATE RESET TO FIRST HEADER CHAR.
  2566					;	IF MESG IS FOR US, POST A BA OUT.
  2567					;	ELSE, RESET BUFFER POINTERS IN LINE TABLE.
  2568					;-
  2569					 
  2570	001736'				MSGIN:
  2571					 
  2572					; INITIALIZE RECEIVE STATE POINTER
  2573	001736'					RSTATE	RDH1
  2574					 
  2575					; CHECK IF THIS MESSAGE IS TO BE IGNORED
  2576	001740'					BRWRTE	SELA,SP.STS	;SET BR=SP.STS
  2577	001742'					BR4	10$		;IGNORE CURRENT MESSAGE
  2578					 
  2579					; MESSAGE IS WITHOUT ERROR AND ADDRESSED TO THIS STATION. GENERATE A BA OUT
  2580					 
  2581	001744'					CALLSR	SP.SB1,EOFMSG,MSGIN1	;POST THE COMPLETION AND RETURN TO MSGIN1
  2582					 
  2583					;CURRENT MESSAGE IS NOT FOR THIS STATION,IGNORE IT
  2584					 
  2585	001752'				10$:
  2586					; RECEIVE BUFFER ADDRESS AND BYTE COUNT WAS ADVANCED AT THE BEGINNING OF
  2587					;THIS MESSAGE, RESET IT.
  2588	001752'					BRWRTE	IMM,D.ORBC		;ADDRESS D.ORBC
  2589	001754'					LDMA	BR,ADD,SP.RM0
  2590
  2591					;SAVE ORIGINAL PARAMETERS IN SCRATCH PADS
  2592	001756'					SP	MEMI,SELB,SP2		;SAVE ORIGINAL BYTE COUNT IN SP2,3
  2593	001760'					SP	MEMI,SELB,SP3
  2594	001762'					SP	MEMI,SELB,SP4		;SAVE ORIGINAL ADDRESS IN SP4,SP5&SP0
  2595	001764'					SP	MEMI,SELB,SP5
  2596	001766'					SP	MEMI,SELB,SP0
  2597													;*** -5 V1.1
  2598					;RESTORE THEM INTO CURRENT PARAMETERS USING NXDSCP CODE		;*** +1 V1.1
  2599	001770'					BRWRTE	IMM,D.RDP		;SET UP SP6 FOR NXDSCP	;*** +1 V1.1
  2600	001772'					BRWRTE	BR,ADD,SP.RM0		;			;*** +1 V1.1
  2601	001774'					SP	BR,SELB,SP6		;			;*** +1 V1.1
  2602	001776'					CALLSB	SP.SB1,NXDSC1		; 			;*** +1 V1.1
  2603
  2604					;CHECK IF Q-SYNC BIT SET
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 44-1
KDPMCX.MAC    30-DEC-82 03:47		MSGIN-DDCMP MESSAGE PROCESSOR

  2605					 
  2607	002004'				MSGIN1:
  2608	002004'					BRWRTE	TWOA,SP.STS	;READ STATUS REGISTER
  2609									;(2 LINES REPLACED)			**X1.2**
  2610	002006'					BR7	RSNCRT		;RESYNC RECEIVER AND RETURN TO TIMER	**X1.2**
  2611	002010'					ALWAYS	TIMRTN		;RETURN TO TIMER			**X1.2**
  2612
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 45
KDPMCX.MAC    30-DEC-82 03:47		MSGIN-DDCMP MESSAGE PROCESSOR

  2614
  2615						.SBTTL	KILLAL-KILL XMT OT RCV OPERATION
  2616					 
  2617					;+
  2618					;
  2619					;	KILL RECEIVE OR TRANSMIT BUFFERS
  2620					;
  2621					; CALLED BY:	BAIN
  2622					;
  2623					; INPUTS:
  2624					;	BSEL2<2> (OCON)	=IN I/O (1=RECV, 0=XMIT)
  2625					;	BSEL7<5> (PORT4)=KILL ASSIGN
  2626					;
  2627					; OUTPUTS:
  2628					;	DEASSIGNS EITHER TRANSMIT OF RECEIVE BUFFERS DEPENDING ON THE IN I/O BIT.
  2629					;	IF ASSIGNMENT IS REQUESTED(KILL ASSGN), BAIN IS RETURNED TO .
  2630					;	ELSE IT RETURNS DIRECTLY TO RDICLR.
  2631					;-
  2632					 
  2633	002012'				KILLAL:
  2634					 
  2635					;DETERMINE WHETHER THE TRANSMIT OR RECEIVE OPERATION IS TO BE KILLED
  2636					 
  2637	002012'					BRWRTE	IBUS,OCON	;GET BSEL2
  2638	002014'					BRSHFT
  2639	002016'					BR1	KILLRC		;KILL RECEIEV OPERATION
  2640
  2641					;KILL TRANSMIT OPERATION
  2642					 
  2643	002020'				KILLXM:
  2644	002020'					BRWRTE	IMM,D.XSTS	;POINT TO TRANSMIT STATUS BYTE
  2645	002022'					LDMA	BR,ADD,SP.RM0	; LOAD THE MAR
  2646									;(1 LINE REMOVED)		**X1.2**
  2647	002024'					MEM	IMM,DT.ABT!DT.AB1 ;SET ABORT PENDING FLAGS
  2648									;(1 LINE REMOVED)		**X1.2**
  2649	002026'					BRWRTE	IMM,C.CLOX	;SET CONTROL OUT FOR XMT
  2650	002030'					ALWAYS	KILCOM		;USE COMMON CODE
  2651					 
  2652					;KILL RECEIVE OPERATION
  2653					 
  2654	002032'				KILLRC:
  2655	002032'					CALLSB	SP.SB1,RESYNC	;RESYNC RECEIVER
  2656	002040'					BRWRTE	IMM,C.CLOR	;SET CONTROL OUT FOR RECEIVE
  2657					 
  2658	002042'				KILCOM:
  2659	002042'					SP	BR,SELB,SP2	;SAVE BSEL2 IMAGE
  2660	002044'					BRWRTE	IMM,ER.KIL	;REASON CODE 'KILL'
  2661	002046'					SP	BR,SELB,SP3	;INTO SP3
  2662	002050'					CALLSB	SP.SB1,COUT	;QUEUE CONTROL OUT
  2663					;*****FOLLWING INSTRUCTION MUST BE IN PAGE 2 DUE TO RETURN FROM COUT****
  2664	002056'				KILLC1:
  2665	002056'					BRWRTE	IMM,<D.RBDF-D.RDP> ;ADDRESS FLAGS BYTE
  2666	002060'					LDMA	BR,ADD,SP6
  2667	002062'					MEM	IMM,<DX.EOM!DX.LST>	;CLEAR ALL BUFFER ASSIGN FLAGS
  2668	002064'					BRWRTE	IBUS,PORT4	;GET NEW PORT4 BACK
  2669	002066'					BRSHFT
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 45-1
KDPMCX.MAC    30-DEC-82 03:47		KILLAL-KILL XMT OT RCV OPERATION

  2670	002070'					BR4	BAIN0		;NEW BUFFER ASSIGNED
  2671	002072'				RQICR2:	ALWAYS	RQICL2		;NO NEW BUFFER
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 46
KDPMCX.MAC    30-DEC-82 03:47		KILLAL-KILL XMT OT RCV OPERATION

  2673
  2674					;******FOLLOWING INSTRUCTIONS MUST RESIDE IN PAGE TWO SINCE IT IS USED BY
  2676					; CERTAIN SUBROUTINES TO RETURN TO THE PROPER PAGE OF CALLER******
  2677
  2678					;RETURN TO TIMER FROM RECEIVE ROUTINES
  2679	002074'				TIMRP2:	ALWAYS	TIMRTN
  2680					 
  2681					;RETURN FROM CONTROL OUT DUE TO A CALL FROM RERROR
  2682	002076'				RERRP2:	ALWAYS	ERREXT
  2683
  2684					;A RETURN FROM DECDCC DUE TO A CALL FROM RDDATA
  2685	002100'				DECP2:	ALWAYS	RDATA1
  2686					 
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 47
KDPMCX.MAC    30-DEC-82 03:47		KILLAL-KILL XMT OT RCV OPERATION

  2689
  2690						.SBTTL	XMTSYN - TRANSMIT SYNC'S OR ZERO BITS
  2691					;	FILE	XMTAUX.MAC
  2692					 
  2693					;+
  2694					; **XMTSYN-RESYNC TRANSMITTER REQUESTED**
  2695					;
  2696					; CALLED BY:	XMTDON
  2697					;
  2698					; INPUTS:
  2699					;	OUTPUT NPR ADDRESS = DUP'S CSR4
  2700					;	SP0 = FLAGS BYTE OF XMIT DESCRIPTOR
  2701					;	MAR = FLAGS BYTE OF XMIT DESCRIPTOR
  2702					;
  2703					; OUTPUTS:
  2704					;	BIT STUFF MODE - 16 ZERO BITS ARE TRANSMITTED
  2705					;	DEC MODE - SYNC CHARACTERS ARE TRANSMITTER
  2706					;-
  2707					 
  2708	002102'				XMTSYN:
  2709	002102'					BRWRTE	SELA,SP.STS	;GET THE STATUS BYTE 
  2710	002104'					BRSHFT			;SHIFT THE STATUS RIGHT
  2711	002106'					BR4	80$		;DEC MODE (DDCMP)
  2712	002110'					BRWRTE	IMM,0		;ZERO THE BRG
  2713	002112'					OUTPUT	BR,SELB,OUTDA1	;ZERO THE LOW BYTE OF OUT DATA
  2714	002114'					OUTPUT	IMM,DUPTSM!DUPTEM,OUTDA2	;SET BOTH START OF MESSAGE AND END OF ME
  2715	002116'				75$:	BRWRTE	IMM,377-DX.SYN	;MASK TO CLEAR RESYNC FLAG
  2716	002120'					MEM	BR,AANDB,SP0	;CLEAR IT AND WRITE NEW FLAGS WORD TO RAM
  2717	002122'					ALWAYS	WRTRT		;INCREMENT OUTPUT ADDRESS BY 2,
  2718									;DO AN NPR AND RETURN TO TIMER LOOP
  2719					 
  2720	002124'				80$:	BRWRTE	IMM,SYNC	;GET SYNC CHARACTER
  2721	002126'					OUTPUT	BR,SELB,OUTDA1,INCMAR	;WRITE IT TO LOW BYTE OF OUT DATA
  2722	002130'					BRWRTE	IMM,DUPTSM	;START OF MESSAGE BIT
  2723	002132'					OUTPUT	BR,SELB,OUTDA2,INCMAR	;WRITE IT TO HIGH BYTE
  2724									;MAR IS NOW AT D.SYNC (SYNC COUNTER)
  2725	002134'					SP	MEMX,SELB,SP1	;READ SYNC COUNTER INTO THE SCRATCH PAD
  2726	002136'					MEM	DECA,SP1	;DECREMENT THE COUNT
  2727	002140'					C	WRTRT		;COUNT NOT ZERO YET - DO THE NPR
  2728									;AND RETURN TO THE POLLING LOOP
  2729	002142'					BRWRTE	IMM,D.XBDF	;ADDRESS OF FLAGS BYTE IN XMIT DESCRIPTOR
  2730	002144'					LDMA	BR,ADD,SP.RM0	;RESET THE MAR TO FLAGS BYTE
  2731	002146'					ALWAYS	75$		;CLEAR RESYNC FLAG
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 48
KDPMCX.MAC    30-DEC-82 03:47		XMTSYN - TRANSMIT SYNC'S OR ZERO BITS

  2733
  2734						.SBTTL	XMTCNT - DECREMENT TRANSMIT BYTE COUNT
  2735					 
  2736					;+
  2737					;	**XMTCNT-DECREMENT XMIT COUNT RETURN
  2738					;	**XMTBCZ-ZERO BYTE COUNT**
  2739					;
  2740					; CALLED BY:	XMTDON
  2741					;
  2742					; INPUTS:
  2743					;	INPUT AND OUTPUT ADDRESS = DUP'S CSR 4
  2744					;	SP0 = D.XBDF (FLAGS BYTE)
  2745					;
  2746					; OUTPUTS:
  2747					;	RETURN TO XMTDON IF BYTE COUNT NOT ZERO.
  2748					;	ELSE: UNDERRUN CHECKED
  2749					;	EOM SENT IF SET IN BUFFER DESC
  2750					;	BUFFER ADDR OUT QUEUED.
  2751					;	IF ANOTHER BUFFER IS THERE, RETURN TO XMTDON TO XMIT
  2752					;	ELSE, RETURN TO TIMER
  2753					;-
  2754					 
  2755					; THE LABEL XMTCNT MUST RESIDE IN PAGE 2
  2757					 
  2758					; TRANSMIT DECREMENT COUNT ROUTINE RETURNS HERE
  2759	002150'				XMTCNT:	C	XMTDN2		;BYTE COUNT NOT ZERO
  2760									;BYTE COUNT ZERO - FALL INTO XMTBCZ
  2761						.ENABLE	LSB
  2762	002152'				XMTBCZ:
  2763	002152'					BRWRTE	IBUS,INDAT2	;READ HIGH BYTE OF CSR4
  2764	002154'					BR7	XMTUNR		;UNDERRUN
  2765	002156'					BRWRTE	BR,SELA!SP0	;READ THE FLAGS WORD INTO THE BRG
  2766	002160'					BR1	160$		;END OF MESSAGE SET
  2767	002162'				XMTBC0:
  2768	002162'				100$:	CALLSB	SP.SB1,BAOX	;DO A BUFFER ADDRESS OUT COMPLETION
  2769									;***NOTE*** BAOX MUST NOT DESTROY THE
  2770									;OUTPUT BUFFER ADDRESS CURRENTLY SET AT
  2771									;THE DUP'S CSR 4 OR 6
  2772	002170'				XMTBC1:
  2773	002170'					BRWRTE	IMM,374		;RESET OUT BA TO POINT TO CSR4
  2774	002172'					SP	IBUS,IOBA1,SP0	;READ OLD BA WHICH WAS CSR4 OR 6
  2775	002174'					OUTPUT	BR,AANDB,OBA1	;SET CSR4 OFFSET
  2776	002176'					BRWRTE	IMM,D.XBDF	;ADDRESS OF TRANSMIT FLAGS WORD
  2777	002200'					LDMA	BR,<ADD!SP.RM0>	;POINT TO FLAGS WORD
  2778	002202'					SPBR	MEMX,SELB,SP0	;READ THE FLAGS WORD TO THE BRG
  2779	002204'					BROTAT			;ROTATE IT RIGHT
  2780	002206'					BR4	XMTDN4		;ANOTHER BUFFER - SEND NEXT CHARACTER
  2781					 
  2782					; NO MORE BUFFER'S ASSIGNED.  IF THE PREVIOUS BUFFER HAD THE END OF MESSAGE
  2783					; FLAG SET THEN SHUT DOWN THE TRANSMITTER, OTHERWISE, WAIT FOR THE NEXT
  2784					; BUFFER OF THE MESSAGE TO BE ASSIGNED.
  2785					; IF IN BIT-STUFF MODE DON'T ABORT INSTEAD IDLE FLAGS BY NOT CLEARING
  2786					; DUPSND AND DUPTEM BITS.
  2787					 
  2788	002210'					BR0	110$		;END OF MESSAGE FLAG SET	**X1.2**
  2789	002212'					ALWAYS	TIMRT3		;NOT THE END OF MESSAGE - EXIT
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 48-1
KDPMCX.MAC    30-DEC-82 03:47		XMTCNT - DECREMENT TRANSMIT BYTE COUNT

  2790	002214'				110$:	BRWRTE	SELA,SP.STS	;DDCMP MODE?			**X1.2**
  2791	002216'					BRSHFT			;				**X1.2**
  2792	002220'					BR4	170$		;YES, PAD THE MESSAGE		**X1.2**
  2793	002222'					ALWAYS	TIMRT3		;NO, JUST IGNORE ABORTING	**X1.2**
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 49
KDPMCX.MAC    30-DEC-82 03:47		XMTCNT - DECREMENT TRANSMIT BYTE COUNT

  2795
  2796						.SBTTL	XMTABT - TRANSMIT ABORT PENDING
  2797
  2798					;+
  2799					;	**XMTABT-TRANSMIT ABORT PENDING
  2800					;
  2801					; CALLED BY:	XMTDON
  2802					;
  2803					; INPUTS:
  2804					;	BRG	= XMIT STATUS (D.XSTS)
  2805					;	MAR	= D.XSTS
  2806					; OUTPUTS:
  2807					;	IF STAGE ONE, GOTO XMTAB1 TO TRANSMIT ABORT CHARS
  2808					;	STAGE TWO, CHECKS FOR ASSIGNED BUFFERS.
  2809					;	IF NONE, DUP SEND IS CLEARED.
  2810					;-
  2811					 
  2812	002224'				XMTABT:
  2813	002224'					BR1	XMTAB1		;STAGE ONE OF ABORT PENDING
  2814	002226'					MEM	IMM,0		;CLEAR ABORT PENDING FLAG
  2815	002230'					BRWRTE	IMM,D.XBDF	;OFFSET TO TRANSMIT BUFFER FLAGS
  2816	002232'					LDMA	BR,ADD,SP.RM0	;ADDRESS IT
  2817	002234'					BRWRTE	MEMX,SELB	;READ THE FLAGS
  2818	002236'					BRSHFT			;SHIFT THEM RIGHT
  2819	002240'					BR4	XMTDN3		;BUFFER ASSIGNED, START NEXT MESSAGE
  2820									;BUFFER NOT ASSIGNED, CLEAR SEND
  2821	002242'				120$:	SP	IMM,0,SP0	;MASK TO CLEAR SEND
  2822									;FALL INTO XMTSND
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 50
KDPMCX.MAC    30-DEC-82 03:47		XMTABT - TRANSMIT ABORT PENDING

  2824
  2825						.SBTTL	XMTSND - SET OR CLEAR DUP SEND
  2826
  2827					;+
  2828					; **XMTSND-ROUTINE TO SET OR CLEAR SEND IN THE DUP
  2829					;
  2830					; CALLED BY:	XMTDON
  2831					; ENTERED FROM:	XMTABT
  2832					;
  2833					; INPUTS:
  2834					;	SP0 = MASK TO SET OR CLEAR SEND
  2835					;	SP.STS = D.STS
  2836					;
  2837					; OUTPUTS:
  2838					;	START NPR TO CHANGE SEND AND RETURN TO XMTDON
  2839					;
  2840					;-
  2841					 
  2842	002244'				XMTSND:
  2843	002244'					BRWRTE	IMM,DS.HDX	;MASK FOR HALF DUPLEX
  2844	002246'					BRWRTE	BR,AANDB,SP.STS	;ISOLATE HALF DUPLEX FLAG
  2845	002250'					OUTPUT	BR,AORB,OUTDA1	;STORE "SEND" MASK IN OUT DATA LOW BYTE
  2846	002252'				XMTSN0:
  2847	002252'					BRWRTE	IMM,DATOB	;MASK TO DO A BYTE OUT NPR
  2848	002254'					ALWAYS	XMTDN6		;START THE NPR AND RETURN TO TIMER LOOP
  2849
  2850					 
  2851					;+
  2852					; END OF MESSAGE FLAG SET - SEND A EOM
  2853					; CALLED BY:	XMTBCZ
  2854					;-
  2855					 
  2856	002256'				160$:	BRWRTE	IMM,DUPTEM	;SET TRANSMIT END OF MESSAGE
  2857	002260'					OUTPUT	BR,SELB,OUTDA2	;SAVE FLAG IN OUT DATA HIGH BYTE
  2858	002262'					CALLSR	SP.SUB,IC2OUT,XMTEM0	;WRITE IT OUT TO THE DUP
  2859									;AND RETURN TO XMTBC0
  2860					 
  2861
  2862					;+
  2863					; END OF MESSAGE SET AND NO MORE BUFFER ASSIGNED - SEND PADS
  2864					;	THIS FILLS THE DUP SILO SO THE EOM CHAR GETS TO THE LINE
  2865					;	USE ABORT SEQUENCE TO SEND TWO PAD(377) CHARS.
  2866					; ENTERED FROM:	XMTBCZ
  2867					;-
  2868					 
  2869	002270'				170$:	BRWRTE	IMM,D.XSTS	;ADDRESS TRANSMIT STATUS BYTE
  2870	002272'					LDMA	BR,ADD,SP.RM0	;SET THE MAR
  2871	002274'					MEM	IMM,DT.ABT!DT.AB1	;SET UP FOR AN ABORT
  2872	002276'					ALWAYS	TIMRT3		;RETURN TO TIMER LOOP
  2873
  2874
  2875
  2876					;+
  2877					; UNDERRUN ERROR
  2878					; CALLED FROM:	XMTBCZ
  2879					;- 
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 50-1
KDPMCX.MAC    30-DEC-82 03:47		XMTSND - SET OR CLEAR DUP SEND

  2880	002300'				XMTUNR:
  2881	002300'					BRWRTE	IMM,ER.UNR	;TRANSMIT UNDERRUN ERROR CODE
  2882	002302'					SP	BR,SELB,SP3	;SAVE IT IN SP3 FOR SUBROUTINE
  2883	002304'					CALLSR	SP.SB1,COUX,XMTBC1,C.CLOX	;DO A CONTROL OUT
  2884									;AND RETURN TO XMTBC1
  2885						.DSABL	LSB
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 51
KDPMCX.MAC    30-DEC-82 03:47		XMTSND - SET OR CLEAR DUP SEND

  2887
  2888						.SBTTL	XMTAB1 - TRANSMIT ABORT STAGE ONE
  2889					;+
  2890					; **XMTAB1-ROUTINE TO PERFORM A TRANSMIT ABORT
  2891					;
  2892					; ENTERED FROM:	XMTABT
  2893					;
  2894					; INPUTS:
  2895					;	INPUT AND OUTPUT ADDRESS = DUP'S CSR 4
  2896					;	MAR = D.XSTS
  2897					;	SP0 = (D.XSTS)
  2898					;
  2899					; OUTPUTS:
  2900					;	D.XSTS IS DECREMENTED
  2901					;	AN ABORT CHARACTER IS SENT
  2902					;
  2903					;	D.XSTS LOW ORDER BITS WERE SET TO 11, XMTABT WILL BRANCH HERE IF
  2904					;	BIT 1 IS SET. THUS TWO ABORT CHARS GET SENT.
  2905					;-
  2906
  2907	002314'				XMTAB1:
  2908	002314'					MEM	DECA,SP0	;ONE LESS ABORT TO SEND
  2909									;(2 LINES REPLACED)			**X1.2**
  2910	002316'					BRWRTE	IMM,377		;SEND PAD CHARACTER			**X1.2**
  2911	002320'					OUTPUT	BR,SELB,OUTDA1	;MOVE IT TO OUT DATA			**X1.2**
  2912	002322'					BRWRTE	SELA,SP.STS	;DDCMP MODE?				**X1.2**
  2913	002324'					BRSHFT			; POSITION BIT				**X1.2**
  2914	002326'					BR4	10$		;YES, USE PAD CHARACTER			**X1.2**
  2915	002330'					BRWRTE	IMM,DUPTAB!DUPTEM ;NO, USE DUP ABORT AND EOM BITS	**X1.2**
  2916	002332'				5$:	OUTPUT	BR,SELB,OUTDA2	; (THE EOM ENSURES IDLING FLAGS LATER)	**X1.2**
  2917	002334'					ALWAYS	WRTRT		;RETURN TO XMTDON TO DO THE NPR
  2918	002336'				10$:	BRWRTE	IMM,DUPTAB!DUPTSM;ALSO SET ABORT AND START OF MESSAGE	**X1.2**
  2919	002340'					ALWAYS	5$		;					**X1.2**
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 51-1
KDPMCX.MAC    30-DEC-82 03:47		STORE-STORE RECEIVED CHARACTER IN CORE

  2921						.SBTTL	STORE-STORE RECEIVED CHARACTER IN CORE
  2922					;	FILE	DUPSTORE.MAC
  2923					 
  2924					;+ 
  2925					;
  2926					;	S T O R E  R E C E I V E D  C H A R A C T E R
  2927					; 
  2928					; ENTERED FROM:	RECEIVE STATE ROUTINES
  2929					; 
  2930					; INPUTS:
  2931					;	 SP.CHR=CURRENT RECEIVED CHARACTER
  2932					;
  2933					; OUTPUTS:
  2934					;	A WORD TRANSFER IS MADE TO THE USER BUFFER IN PDP-11 CORE WHEN
  2935					; A PAIR OF CHARACTERS ARE RECEIVED. ANY CHARACTER DESTINED FOR AN EVEN CORE
  2936					; BUFFER ADDRESS IS LOCALLY BUFFERED UNTIL THE NEXT CHARACTER IS RECEIVED.HOWEVER,
  2937					; BYTE TRANSFERS ARE SOMETIMES MADE DURING CERTAIN MESSAGE AND BUFFER BOUNDRY
  2938					; CONDITIONS.
  2939					;- 
  2940					 
  2941	002342'				STORE:
  2942					 
  2943					;CHECK IF A RECEIVE BUFFER IS AVAILABE
  2944	002342'					BRWRTE	IMM,D.RBDF		;ADDRESS D.RBDF
  2945	002344'					LDMA	BR,ADD,SP.RM0
  2946	002346'					SPBR	MEMX,SELB,SP2		;LOAD IT INTO BR AND SP2
  2947	002350'					BRSHFT
  2948	002352'					BR4	10$			;BUFFER AVAILABLE
  2949					 
  2950					; A CHARACTER IS RECEIVED,BUT THERE IS NO RECEIVE BUFFER TO STORE IT
  2951					 
  2952	002354'					BRADDR	TIMRP2		;ULTIMATE RETURN FROM RESYNC
  2953	002356'					SP	BR,SELB,SP.SB1	;SAVE IT IN RETURN SCRATCH PAD
  2954	002360'					CALLSR	SP.SUB,COUTX,RESYNC,ER.NBA ;Q PORT DATA AND RETURN TO TIMER
  2955					;NOTE: A REGULAR CONTROL OUT IS NOT SENT BECAUSE IT MODIFIES PDP-11
  2956					;MEMORY ADDRESSED BY CURRENT DESCRIPTOR POINTER. SINCE THE DESCRIPTOR
  2957					;POINTER IS INVALID AT THIS TIME, THIS IS PROHIBITED.
  2958
  2959	002370'				10$:
  2960					; DECREMENT RECEIVE BYTE COUNT
  2961					 
  2962	002370'					CALLSB	SP.SUB,DRCNT
  2963					; NOTE: DRCNT DECREMENTS THE BYTE COUNT AND STORES IT BACK INTO RAM. 
  2964					 
  2965	002376'					C	CHKODD		;BRANCH IF COUNT NOT -1
  2966					 
  2967					;CURRENT BUFFER IS FULL,SO SEND BA OUT ETC BEFORE PROCESSING CURRENT CHARACTER
  2968	002400'				EOFBUF:
  2969	002400'					SPBR	MEMX,SELB,SP2	;GET THE LOW BYTE OF THE BUFFER ADDRESS
  2970	002402'					BR0	5$		;BUFFER ENDED ON AN ODD ADDRESS THEREFORE
  2971									;THE LAST RECEIVE CHARACTER IS STILL IN THE
  2972									;KMC RAM AND IT MUST BE WRITTEN OUT
  2973					;
  2974					; OTHERWISE ALL RECEIVE DATA HAVE BEEN WRITTEN TO THE BUFFER
  2975					;
  2976	002404'					ALWAYS	10$
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 51-2
KDPMCX.MAC    30-DEC-82 03:47		STORE-STORE RECEIVED CHARACTER IN CORE

  2977					;
  2978	002406'				5$:
  2979	002406'					CALLSB	SP.SUB,SETRBA	;SET OUTBA TO CURRENT INPUT ADDRESS IN REC BUFF
  2980	002414'					BRWRTE	BR,DECA,SP2	;BUFFER ADDRESS MUST BE DECREMENTED TO POINT
  2981									;TO EVEN BYTE ADDRESS
  2982	002416'					OUTPUT	BR,SELB,OBA1	;RESET IT
  2983	002420'					BRWRTE	IMM,DATOB,INCMAR	;MASK TO DO A BYTE TRANSFER
  2984										;MAR NOW POINT TO D.ERC
  2985	002422'					OUTPUT	MEMX,SELB,OUTDA1	;GET THE EVEN RECEIVE CHARACTER
  2986	002424'					OUT	BR,SELB,ONPR		;START THE NPR
  2987	002426'				10$:
  2988	002426'					BRADDR	STORE		;SET UP RETURN ADDRESS TO STORE
  2989	002430'					SP	BR,SELB,SP.SB1
  2990	002432'				20$:	BRWRTE	IBUS,NPR	;IN CASE AN NPR WAS STARTED WAIT FOR IT TO COMPLETE
  2991	002434'					BR0	20$		;WAIT UNTIL DONE
  2992	002436'					ALWAYS	BAORC	;SEND BAOUT FOR RECEIVE BUFFER COMPLETEION
  2993					;NOTE: ORIGINAL INPUT PARAMETERS TO STORE MUST BE INTACT AT THIS POINT
  2994					; CHECK IF CURRENT RECEIVE BUFFER ADDRESS IS ODD
  2995	002440'				CHKODD:
  2996					 
  2997	002440'					BRWRTE	MEMX,SELB	;GET LOW BYTE OF BUFFER ADDR INTO BR
  2998									;MAR NOW POINT TO HIGH ADDR BYTE
  2999	002442'					BR0	STRODD		;BRANCH IF RECEIVE BUFFER ADDRESS IS ODD
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 52
KDPMCX.MAC    30-DEC-82 03:47		STORE-STORE RECEIVED CHARACTER IN CORE

  3001
  3002					;		 CURRENT RECEIVE BUFFER ADDRESS IS EVEN
  3003					 
  3004					 
  3005	002444'				STREVN:
  3006					;
  3007					; SP2 CONTAINS THE IMAGE OF D.RBDF
  3008					; MAR POINTS TO LOW BYTE OF BUFFER ADDRESS
  3009					;
  3010					 
  3011	002444'					INCMA			;MAR NOW POINTS TO HIGH BYTE OF ADDRESS
  3012					; CLEAR "FIRST CHARACTER IN BUFFER" INDICATOR
  3013					 
  3014	002446'					BRWRTE	IMM,<377-DR.FST>,INCMAR ;MASK TO CLEAR DR.FST
  3015									;MAR POINT TO FLAGS BYTE
  3016	002450'					MEMINC	BR,AANDB,SP2	;CLEAR DR.FST
  3017									;MAR POINTS TO D.ERC
  3018					 
  3019					; STORE THE CURRENT RECEIVE CHARACTER IN LOCAL BUFFER
  3020					 
  3021	002452'					MEM	SELA,SP.CHR	;STORE REC'D CHARACTER IN D.ERC
  3022					 
  3023					 
  3024	002454'					ALWAYS	RCVEXT
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 53
KDPMCX.MAC    30-DEC-82 03:47		STORE-STORE RECEIVED CHARACTER IN CORE

  3026
  3027					;		CURRENT RECEIVE BUFFER ADDRESS IS ODD
  3028					 
  3029					 
  3030	002456'				STRODD:
  3031					;
  3032					; SP2 CONTAINS THE IMAGE OF D.RBDF
  3033					; MAR POINTS TO LOW BYTE OF RECEIVE BUFFER ADDRESS
  3034					 
  3035	002456'					CALLSB	SP.SUB,SETRBA	;SET OUTBA TO CURRENT INPUT ADDRESS IN REC BUFF
  3036					 
  3037					; LOAD ODD (CURRENT) CHARACTER INTO OUTDATA HB
  3038					 
  3039	002464'					BRWRTE	BR,SELA,SP.CHR,INCMAR	;MOVE CHARACTER INTO BR FIRST
  3040										;MAR NOW POINTS TO D.ERC
  3041	002466'					OUTPUT	BR,SELB,OUTDA2	;NOW MOVE IT INTO OUTDATA 15:8
  3042	002470'					OUTPUT	MEMX,SELB,OUTDA1	;LOAD EVEN RECEIVE CHARACTER INTO OUTDATA 7:0
  3043					; CHECK IF THE CURRENT ODD CHARACTER IS DESTINED FOR FIRST LOCATION OF BUFFER
  3044					 
  3045	002472'					BRWRTE	MEMX,SELA,SP2	;LOAD IMAGE OF D.RBDF INTO BR
  3046	002474'					BR0	10$		;BRANCH IF FIRST CHARACTER OF BUFFER
  3047					 
  3048					; CURRENT CHARACTER IS DESTINED FOR ODD CORE ADDRESS AND IS NOT THE FIRST
  3049					;CHARACTER IN THE BUFFER. THEREFORE IT IS SAFE TO DO A WORD TRANSFER.
  3050					 
  3051	002476'					BRWRTE	IMM,DATO	;MASK TO START WORD OUT NPR
  3052	002500'					ALWAYS	20$		;DO NPR AND EXIT
  3053					;NOTE: DURING THE ABOVE WORD NPR, THE CORE ADDRESS IS ODD. THE HARDWARE SHOULD
  3054					;AUTOMATICALLY IGNORE BIT0 OF CORE ADDRESS.
  3055					 
  3056					 
  3057					; CURRENT RECEIVED CHARACTER IS DESTINED FOR AN ODD CORE ADDRESS.
  3058					;BUT THIS ADDRESS HAPPENS TO BE THE FIRST LOCATION OF THE CURRENT BUFFER.
  3059					;THEREFORE DO A BYTE TRANSFER.
  3060					 
  3061	002502'				10$:
  3062					 
  3063	002502'					BRWRTE	IMM,DATOB	;MASK TO SEND ONE BYTE(ODD CHARACTER)
  3064	002504'				20$:
  3065	002504'					OUT	BR,SELB,ONPR	;START NPR
  3066									;NOTE: NPR COMPLETION IS CHECKED FOR AFTER
  3067									;RETURN FROM INCMEM
  3068					 
  3069					;FALL INTO RCVEXT
  3070					 
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 54
KDPMCX.MAC    30-DEC-82 03:47		STORE-STORE RECEIVED CHARACTER IN CORE

  3072
  3073					;		COMMON EXIT FROM STORE ROUTINE
  3074					 
  3075					 
  3076	002506'				RCVEXT:
  3077					 
  3078					;INCREMENT RECEIVE BUFFER POINTER
  3079					 
  3080					; ADDRESS D.RBDA
  3081					 
  3082	002506'					BRWRTE	IMM,D.RBDA
  3083	002510'					LDMA	BR,ADD,SP.RM0
  3084					 
  3085					; INCREMENT MEMORY LOCATIONS
  3086					 
  3087	002512'					CALLSR	SP.SUB,INCMEM,NPRWP1,1	;INCREMENT MEMORY & RETURN 
  3088										;TO WAIT FOR NPR COMPLETION
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 55
KDPMCX.MAC    30-DEC-82 03:47		STORE-STORE RECEIVED CHARACTER IN CORE

  3090
  3091						.SBTTL	EOFMSG-END OF MESSAGE
  3092					 
  3093					;+ 
  3094					; 
  3095					;		E N D  O F  R E C E I V E D  M E S S A G E
  3096					; 
  3097					; CALLED BY:	RBDONE(BIT STUFF), MSGIN(DDCMP)
  3098					; 
  3099					;INPUTS:
  3100					;	SP.SB1=RETURN ADDRESS
  3101					;	D.RBD=CURRENT INPUT ADDRESS
  3102					;OUTPUTS:
  3103					;	STORES IN RECEIVE BUFFER ANY RESIDUAL EVEN CHARACTER THAT IS SAVED
  3104					;	IN THE LOCAL BUFFER (D,ERC)
  3105					;	GENERATES A BAOUT. ULTIMATE RETURN TO LOCATION SPECIFIED BY SP.SB1
  3106					;-
  3107					 
  3108	002522'				EOFMSG:
  3109
  3110					;CHECK IF THE LAST RECEIVED CHARACTER WAS EVEN
  3111					 
  3112	002522'					BRWRTE	IMM,D.RBDA	;SET TO POINT TO BUFFER ADDRES
  3113	002524'					LDMA	BR,ADD,SP.RM0	;SET THE MAR
  3114	002526'					SPBR	MEMX,SELB,SP2	;READ THE LOW BYTE OF THE ADDRESS
  3115	002530'					BR0	10$		;BRANCH IF ODD
  3116					; CURRENT RECEIVE BUFFER IS EVEN,THAT MEANS LAST RECEIVED CHARACTER WAS
  3117					;DESTINED FOR AN ODD ADDRESS AND ALREADY BEEN TRANSFERED TO RECEIVE
  3118					;BUFFER.
  3119					 
  3120	002532'					ALWAYS	BAORE		;SEND BAOUT
  3121					 
  3122					;CURRENT RECEIVE BUFFER ADDRESS IS ODD. THEREFORE THE PREVIOUS CHARACTER
  3123					;DESTINED FOR AN EVEN ADDRESS IS STORED LOCALLY. TRANSFER IT TO CORE
  3124					 
  3125	002534'				10$:
  3126					 
  3127	002534'					CALLSB	SP.SUB,SETRBA	;SET RECEIVE BUFFER ADDRESS
  3128	002542'					BRWRTE	DECA,SP2,INCMAR	;DECREMENT ADDRESS TO GET EVEN BYTE
  3129									;MAR POINTS TO D.ERC
  3130	002544'					OUTPUT	BR,SELB,OBA1	;PUT ADDR IN THE OBA REG
  3131	002546'					OUTPUT	MEMX,SELB,OUTDA1	;LOAD EVEN CHAR INTO OUT DATA
  3132	002550'					BRWRTE	IMM,DATOB	;WRITE OUT RESIDUAL EVEN RECEIVED
  3133	002552'					OUT	BR,SELB,ONPR	;INTO CORE
  3134	002554'				20$:	BRWRTE	IBUS,NPR	;AND WAIT FOR NPR TO COMPLETE
  3135	002556'					BR0	20$
  3136					 
  3137					;FALL INTO BAORE
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 56
KDPMCX.MAC    30-DEC-82 03:47		EOFMSG-END OF MESSAGE

  3139
  3140						.SBTTL	BAORE-BA OUT FOR END OF RECEIVED MESSAGE
  3141					 
  3142					;+ 
  3143					; 
  3144					;	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
  3145					; 
  3146					; ENTERED FROM:	EOFMSG
  3147					; 
  3148					;INPUTS:
  3149					;	SP.SB1=RETURN ADDRESS
  3150					; 
  3151					;OUTPUTS:
  3152					;	INPUT PARAMETERS FOR BOUT ARE SET UP
  3153					;	BOUT IS EXECUTED
  3154					;-
  3155
  3156	002560'				BAORE:
  3157					 
  3158					;SET SP3 TO INDICATE END OF MESSAGE
  3159					 
  3160	002560'					BRWRTE	IMM,EOM
  3161	002562'					SP	BR,SELB,SP3
  3162					 
  3163					;SET SP2 TO INDICATE BAOUT FOR RECEIVE OPERATION
  3164					 
  3165	002564'					BRWRTE	IMM,C.BAOR
  3166
  3167					; FOLLOWING CODE IS SHARED WITH THE ERROR ROUTINES IN DUPERR
  3168	002566'				ENTRY2:
  3169	002566'					SP	BR,SELB,SP2
  3170					;SET SP6=ADDRESS OF D.RDP
  3171	002570'					BRWRTE	IMM,D.RDP	;BR=D.RDP
  3172	002572'					BRWRTE	BR,<ADD!SP.RM0>	;BR=ADDRESS OF D.RDP/D.XDP
  3173	002574'					SP	BR,SELB,SP6	;SP6=BR
  3174					 
  3175					;FALL INTO BOUT/COUT
  3176					 
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 57
KDPMCX.MAC    30-DEC-82 03:47		BAORE-BA OUT FOR END OF RECEIVED MESSAGE

  3178
  3179						.SBTTL	BOUT/COUT-BA OR CONTROL OUT (WITH DESCRIPTOR UPDATED)
  3180					 
  3181					;+ 
  3182					; 
  3183					;		B A  O R  C O N T R O L  O U T
  3184					;		(CURRENT DESCRIPTOR IS UPDATED)
  3185					; 
  3186					; THIS IS COMMON CODE SHARED BY THOSE BAOUT ROUTINES AND  CONTROL OUT 
  3187					;ROUTINES THAT REQUIRE AN UPDATE OF BYTE COUNT IN THE RECEIVE OR TRANSMIT 
  3188					;DESCRIPTORS.
  3189					; 
  3190					; ENTERED FROM:	BAORE
  3191					; CALLED BY:	KILLAL
  3192					; 
  3193					;INPUTS:
  3194					;	SP.SB1	-RETURN ADDRESS.
  3195					;	SP2	-CODE TO INDICATE BAOUT OR CONTROL OUT (KMC CSR2 IMAGE)
  3196					;	SP3	-ERROR CODE
  3197					;	SP6	-ADDRESS OF D.RDP(RECEIVE) OR D.XDP(TRANSMIT)
  3198					; 
  3199					;OUTPUTS:
  3200					;	BYTE COUNT IN THE CURRENT TRANSMIT OR RECEIVE DESCRIPTOR IS UPDATED
  3201					;BY SUBTRACTING THE CONTENTS OF D.RBDC OR D.XBDC FROM IT.
  3202					;SP4,SP5,SP6 ARE LOADED WITH THE CURENT DESCRIPTOR ADDRESS AND QPDATA
  3203					;ROUTINE IS EXECUTED.
  3204					;- 
  3205					 
  3206	002576'				BOUT:
  3207	002576'				COUT:
  3208					 
  3209					;SET OUBA TO CURRENT DESCRIPTOR
  3210					 
  3211	002576'					LDMA	SELA,SP6		;ADDRESS DESCRIPTOR ADDRESS POINTER
  3212	002600'					OUTPUT	MEMI,SELB,OBA1		;ADDRESS 7:0
  3213	002602'					OUTPUT	MEMI,SELB,OBA2		;ADDRESS 15:8
  3214	002604'					SP	IBUS,UBBR,SP0		;GET CURRENT BUS REQ REG
  3215	002606'					BRWRTE	IMM,101			;CLEAR ALL BUT VEC XX4,NXM
  3216	002610'					SP	BR,AANDB,SP0
  3217	002612'					SP	MEMX,SELB,SP1		;GET FLAGS BYTE (MEM EXT BITS) **V0.10**
  3218	002614'					BRWRTE	IMM,14			;EXTRACT MEM EXT BITS
  3219	002616'					BRWRTE	BR,AANDB,SP1		;MASK OFF ALL OTHER BITS
  3220	002620'					OUT	BR,AORB,OBR		;LOAD EXT ADDRESS BITS
  3221					;SUBTRACT CURRENT BYTE COUNT FROM ORIGINAL BYTE COUNT TO GET # OF CHARACTERS
  3222					;RECEIVED/TRANSMITTED IN THIS BUFFER
  3223	002622'					BRWRTE	IMM,<D.ORBC-D.RDP>	;ADDRESS ORIGINAL BUFFER COUNT
  3224	002624'					LDMA	BR,ADD,SP6
  3225	002626'					SP	MEMI,SELB,SP0		;AND SAVE IT IN SP0
  3226	002630'					SP	MEMX,SELB,SP1		;AND HIGH BYTE INTO SP1
  3227	002632'					BRWRTE	IMM,<D.RBDC-D.RDP>	;ADDRESS CURRENT COUNT
  3228	002634'					LDMA	BR,ADD,SP6
  3229	002636'					OUTPUT	MEMI,SUB,OUTDA1		;OUTDA1=ORG 7:0-CUR7:0
  3230	002640'					BRWRTE	MEMI,SUBC,SP1		;BR=ORG15:8-CUR15:8
  3231	002642'					OUTPUT	BR,SELB,OUTDA2,INCMAR	;STORE IT IN OUTDATA 1 **V0.11**
  3232					 
  3233					;OUTDATA NOW CONTAINS THE NUMBER OF CHARACTERS TRANSFERED FROM/TO
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 57-1
KDPMCX.MAC    30-DEC-82 03:47		BOUT/COUT-BA OR CONTROL OUT (WITH DESCRIPTOR UPDATED)

  3234					;THE CURRENT BUFFER
  3235					; WRITE IT INTO CURRENT DESCRIPTOR
  3236	002644'					BRADDR	BOUTR0			;RETURN ADDRESS INTO BR **V0.11**
  3237	002646'					SP	BR,SELB,SP.SUB,INCMAR	;SAVE IN SP.SUB (MAR = FLAGS)
  3238	002650'					BRWRTE	MEMX,SELB		;READ FLAGS
  3239	002652'					BRSHFT				;SHIFT RIGHT
  3240	002654'					BR4	IC2OUT			;IF BUFFER ASSIGNED, WRITE NEW BC
  3241	002656'					ALWAYS	QPDATA			;OTHERWISE DON'T (CAN GET HERE FROM
  3242										;KILL CODE WITH NO BUFFER ASSIGNED) **V0.11**
  3243					 
  3244					;CURRENT DESCRIPTOR IS NOW COMPLETELY UPDATED
  3245
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 58
KDPMCX.MAC    30-DEC-82 03:47		BOUT/COUT-BA OR CONTROL OUT (WITH DESCRIPTOR UPDATED)

  3247
  3248						.SBTTL	BAORC-BA OUT FOR RECEIVE BUFFER COMPLETION
  3249					 
  3250					;+ 
  3251					; 
  3252					;	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
  3253					; 
  3254					; CALLED BY:	STORE
  3255					;
  3256					;INPUTS:
  3257					;	SP.SB1=RETURN ADDRESS
  3258					; 
  3259					;OUTPUTS:
  3260					;	INPUT PARAMETERS FOR COUX ARE SET UP
  3261					;	COUX IS EXECUTED
  3262					;-
  3263
  3264	002660'				BAORC:
  3265					 
  3266					;SET SP3 TO INDICATE END OF MESSAGE
  3267					 
  3268	002660'					BRWRTE	IMM,0
  3269	002662'					SP	BR,SELB,SP3
  3270					 
  3271					;SET SP2 TO INDICATE BAOUT FOR RECEIVE OPERATION
  3272					 
  3273	002664'					BRWRTE	IMM,C.BAOR
  3274	002666'					SP	BR,SELB,SP2
  3275					 
  3276					; SET SP6=ADDRESS OF D.RDP
  3277	002670'					BRWRTE	IMM,D.RDP	;BR=D.RDP
  3278	002672'					ALWAYS	ENTRY1		;USE COMMON CODE IN COUX
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 59
KDPMCX.MAC    30-DEC-82 03:47		BAORC-BA OUT FOR RECEIVE BUFFER COMPLETION

  3280
  3281						.SBTTL	COUTX-CONTROL OUT FOR TRANSMIT OPERATION
  3282					 
  3283					;+ 
  3284					; 
  3285					;	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
  3286					; 
  3287					; CALLED BY:	DSRCHG,STORE,NXMERR
  3288					; 
  3289					;INPUTS:
  3290					;	SP.SUB=RETURN ADDRESS
  3291					;	BRG	=ERROR CODE
  3292					;OUTPUTS:
  3293					;	A CONTROL OUT IS QUEUED WITH THE BUFFER DESCRIPTOR ADDRESS ZEROED.
  3294					;- 
  3295					 
  3296	002674'				COUTX:
  3297	002674'					SP	BR,SELB,SP3	;SAVE ERROR CODE IN SP3
  3298	002676'					SPBR	IMM,0,SP0	;SET UP SCRATCH PADS FOR QPDATA
  3299	002700'					SP	BR,SELB,SP1	;..
  3300	002702'					SP	BR,SELB,SP4	;..
  3301
  3302					;SET SP2 TO INDICATE CONTROL OUT FOR XMT OPERATION
  3303	002704'					BRWRTE	IMM,C.CLOX	;CSR2 IMAGE INTO SP2
  3304	002706'					SP	BR,SELB,SP2
  3305	002710'					ALWAYS	QPDAT1		;QUEUE THE CONTROL OUT
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 60
KDPMCX.MAC    30-DEC-82 03:47		COUTX-CONTROL OUT FOR TRANSMIT OPERATION

  3307
  3308						.SBTTL	BAOX/COUX-BA/CONTROL OUT FOR TRANSMIT BUFFER COMPLETION
  3309					;+ 
  3310					; 
  3311					;	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
  3312					; 
  3313					;CALLED BY:	XMTBCZ
  3314					; 
  3315					;INPUTS:
  3316					;	SP.SB1=RETURN ADDRESS
  3317					; 
  3318					;OUTPUTS:
  3319					;	INPUT PARAMETERS FOR QPDATA ARE SET UP
  3320					;	A BUF ADDR OUT IS QUEUED.
  3321					;-
  3322
  3323	002712'				BAOX:
  3324					 
  3325					;SET SP3 TO INDICATE BUFFER COMPLETION
  3326					 
  3327	002712'					BRWRTE	IMM,0
  3328	002714'					SP	BR,SELB,SP3
  3329					 
  3330					;SET BRG TO INDICATE BA OUT FOR TRANSMIT OPERATION
  3331					 
  3332	002716'					BRWRTE	IMM,C.BAOX
  3333					;	FALL INTO COUX
  3334
  3335
  3336					;+
  3337					; **COUX-ROUTINE TO QUEUE A TRANSMIT CONTROL OUT WITH BUFFER ADDRESS**
  3338					;
  3339					; CALLED BY:	XMTUNR
  3340					; ENTERED FROM:	BAOX
  3341					;
  3342					; INPUTS:
  3343					;	SP.SB1 = RETURN ADDR
  3344					;	SP3 = ERROR CODE
  3345					;	BRG = BSEL2 CODE (NORMALLY C.CLOX)
  3346					;
  3347					; OUTPUTS:
  3348					;	PARAMETERS FOR QPDATA ARE SET UP
  3349					;	SO A COMPLETION WILL BE QUEUED TO THE PDP-11
  3350					;-
  3351
  3352	002720'				COUX:
  3353	002720'					SP	BR,SELB,SP2	;PUT BSEL2 CODE IN SP2
  3354					 
  3355					;SET SP6=ADDRESS OF D.XDP
  3356	002722'					BRWRTE	IMM,D.XDP	;BR=D.XDP
  3357
  3358					;COMMON CODE, USED BY BAORC ALSO
  3359	002724'				ENTRY1:
  3360	002724'					BRWRTE	BR,ADD,SP.RM0	;BR=ADDRESS OF D.RDP/D.XDP
  3361	002726'					SP	BR,SELB,SP6	;SP6=BR
  3362					 
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 60-1
KDPMCX.MAC    30-DEC-82 03:47		BAOX/COUX-BA/CONTROL OUT FOR TRANSMIT BUFFER COMPLETION

  3363					;	FALL INTO QPDATA
  3364					 
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 61
KDPMCX.MAC    30-DEC-82 03:47		BAOX/COUX-BA/CONTROL OUT FOR TRANSMIT BUFFER COMPLETION

  3366
  3367						.SBTTL	QPDATA-QUEUE PORT DATA
  3368					 
  3369					;+ 
  3370					; 
  3371					;	Q U E U E  P O R T  D A T A
  3372					; 
  3373					; ENTERED AT QPDATA FROM:	BOUT,COUX
  3374					; ENTERED AT QPDAT1 FROM:	COUTX
  3375					; 
  3376					; INPUTS:
  3377					;	SP.SB1=RETURN ADDRESS
  3378					;	SP.LN=LINE NUMBER
  3379					;	SP2=CLO(R/T) TO SEND CONTROL OUT,=BAO(R/T) TO SEND BAOUT
  3380					;	SP3	=ERROR CODE WITH THE ERROR BIT SET
  3381					;	SP6	=ADDRESS OF D.RDP/D.XDP
  3382					;OUTPUTS:
  3383					;	SIX BYTES OF CONTROL OUT DATA IS STUFFED INTO THE LOCAL COMPLETION SILO.
  3384					;	ENTRY AT QPDATA: CALLER'S RETURN IN SP.SB1, EXECUTE STFSLO AND NXBUF
  3385					;	ENTRY AT QPDAT1: CALLER'S RETURN IN SP.SUB, EXECUTE STFSLO AND RETURN
  3386					;-
  3387					 
  3388	002730'				QPDATA:
  3389	002730'					BRADDR	NXBUF		;ADDRESS FOR STUFF SILO TO RETURN TO
  3390	002732'					SP	BR,SELB,SP.SUB	;SAVE IT IN RETURN SCRATCH PAD
  3391					 
  3392					;GET CURRENT DESCRIPTOR ADDRESS INTO SCRATCH PADS
  3393					 
  3394	002734'					LDMA	SELA,SP6	;ADDRESS CURRENT DESCRIPTOR POINTER
  3395	002736'					SP	MEMI,SELB,SP0	;SP0=ADDRESS 7:0
  3396	002740'					SP	MEMI,SELB,SP1	;SP1=ADDRESS 15:8
  3397	002742'					SP	MEMX,SELB,SP4	;SP4=ADDRESS 17:16
  3398					 
  3399					; ADDRESS 'NEXT IN' LOCATION IN LOCAL SILO
  3400					 
  3401	002744'				QPDAT1:
  3402	002744'					LDMA	IMM,P.SLIN	;ADDRESS NEXT IN POINTER
  3403	002746'					LDMAP	IMM,P.SLIN
  3404	002750'					LDMA	MEMX,SELB	;ADDRESS LOCATION POINTED TO BY P.SLIN
  3405					 
  3406					;STORE BYTE 0 WORD 1 INTO SILO
  3407					 
  3408	002752'					MEMINC	SELA,SP.LN	;LOAD LINE NUMBER
  3409	002754'					MEMINC	SELA,SP0	;LOAD DESCRIPTOR ADDRESS 7:0
  3410	002756'					MEMINC	SELA,SP1	;LOAD DESCRIPTOR ADDRESS 15:0
  3411	002760'					MEM	SELA,SP3	;STORE ERROR CODE (FOR CONTROL OUT ONLY)
  3412	002762'					BRWRTE	SELA,SP2	;BUT IS THIS A CONTROL OUT?
  3413	002764'					BR0	10$		;YES
  3414	002766'					MEM	IMM,0		;NO,CLEAR ERROR CODE
  3415	002770'					ALWAYS	20$
  3416	002772'				10$:	BRWRTE	IMM,0		;CONTROL OUT,CLEAR SP3
  3417	002774'					SP	BR,SELB,SP3
  3418	002776'				20$:
  3419	002776'					SP	TWOA,SP4,INCMAR	;SHIFT EXT ADDRESS LEFT TO POSITION
  3420	003000'					SP	TWOA,SP4
  3421	003002'					SP	TWOA,SP4
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 61-1
KDPMCX.MAC    30-DEC-82 03:47		QPDATA-QUEUE PORT DATA

  3422	003004'					SPBR	TWOA,SP4
  3423	003006'					MEMINC	BR,AORB,SP3 	;STORE EOM BIT AND EXT MEM BITS IF BA OUT
  3424	003010'					MEMINC	SELA,SP2	;CONTROL OUT OR BAOUT CODE
  3425					;FALL INTO STUFF SILO ROUTINE
  3426					 
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 62
KDPMCX.MAC    30-DEC-82 03:47		QPDATA-QUEUE PORT DATA

  3428
  3429						.SBTTL	STFSLO-STUFF COMPLETION SILO SUBROUTINE
  3430					 
  3431					;+ 
  3432					;
  3433					;		S T U F F  C O M P L E T I O N  S I L O
  3434					;
  3435					; ENTERED FROM:	QPDATA
  3436					; 
  3437					; INPUTS:
  3438					;	SP.SB1=ULTIMATE RETURN ADDRESS
  3439					;	SP.SUB=RETURN FOR STUFF SILO
  3440					; 
  3441					;	THE THREE SILO WORDS MUST ALREADY BE IN RAM STARTING AT LOCATION 
  3442					;	POINTED TO BY P.SLIN.
  3443					;
  3444					; OUTPUTS:
  3445					;	SILO POINTERS ARE UPDATED. IF THERE WAS A SILO OVERFLOW,BIT 16 OF
  3446					;	THE FIRST WORD IS SET TO 1.
  3447					;-
  3448					 
  3449	003012'				STFSLO:
  3450					 
  3451					; CHECK IF SILO IS EMPTY OR FULL
  3452					 
  3453	003012'					LDMA	IMM,<P.SLIN>		;GET NEXT IN
  3454	003014'					SP	MEMI,SELB,SP0		;INTO BR,SP0
  3455	003016'					BRWRTE	MEMX,SELB		;AND NEXT OUT INTO THE BR
  3456	003020'					Z	30$			;SILO IS EMPTY
  3457	003022'					COMP	BR,SP0			;NEXTIN=NEXT OUT?
  3458	003024'					Z	40$			;YES,SILO IS FULL
  3459					 
  3460					; SILO IS NOT FULL
  3461					 
  3462					; INCREMENT NEXT IN BY ONE ENTRY LENGTH
  3463	003026'				10$:
  3464	003026'					LDMA	IMM,<P.SLIN&377>	;MAR=ADDRESS OF NEXT IN POINTER
  3465	003030'					BRWRTE	IMM,SILOED		;OFFSET OF LAST ENTRY
  3466	003032'					COMP	BR,SP0			;NEXT IN=LAST ENTRY IN SILO?
  3467	003034'					Z	20$			;YES,WRAP NEXT IN
  3468	003036'					BRWRTE	IMM,SENTRY		;BR=ONE ENTRY SIZE
  3469	003040'					MEM	BR,ADD,SP0		;INCREMENT P.SLIN BY ONE ENTRY SIZE
  3470	003042'					RTNSUB	SP.SUB,P3		;RETURN
  3471					 
  3472					; WRAP NEXT IN
  3473	003044'				20$:	MEM	IMM,P.NPR		;SET NEXT IN=P.NPR
  3474	003046'					RTNSUB	SP.SUB,P3
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 63
KDPMCX.MAC    30-DEC-82 03:47		STFSLO-STUFF COMPLETION SILO SUBROUTINE

  3476
  3477					; SILO IS EMPTY,SET NEXT OUT=NEXT IN
  3478					 
  3479	003050'				30$:	MEM	SELA,SP0		;STORE NEXT IN P.SLOT
  3480	003052'					ALWAYS	10$			;STORE ONE ENTRY
  3481					 
  3482					; SILO IS FULL, SET ERROR BIT IN CURRENT NEXT IN RAM LOCATION
  3483					 
  3484	003054'				40$:
  3485	003054'					LDMA	SELA,SP0		;LOAD MAR TO ADDRESS SILO ENTRY
  3486	003056'					SP	IMM,200,SP0		;LOAD ERROR CODE MASK
  3487	003060'					MEM	MEMX,AORB,SP0		;OR OVERRUN BIT ONTO LINE NUMBER
  3488	003062'					RTNSUB	SP.SUB,P3
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 64
KDPMCX.MAC    30-DEC-82 03:47		STFSLO-STUFF COMPLETION SILO SUBROUTINE

  3490
  3491						.SBTTL	NXBUF-GET NEXT  BUFFER
  3492					 
  3493					;+
  3494					;			N E X T  B U F F E R
  3495					;
  3496					; ENTERED FROM:	STFSLO
  3497					;
  3498					; INPUTS:
  3499					;	SP.SB1	=RETURN ADDRESS
  3500					;	SP6	=ADDRESS OF D.RDP OR D.XDP
  3501					;
  3502					; OUTPUTS:
  3503					;	1) CURRENT  DESCRIPTOR POINTER  IS MODIFIED TO POINT
  3504					;	TO THE NEXT DESCRIPTOR IN THE CURRENT LIST
  3505					;	2) IF NO MORE DESCRIPTORS ARE AVAILABLE IN THE CURRENT LIST, 
  3506					;	D.RDP/D.XDP IS SET TO POINT TO THE FIRST DESCRIPTOR IN THE ALTERNATE LIST.
  3507					;	THE "ALTERNATE LIST ASSIGNED" BIT IS CLEARED
  3508					;	3) IF THE ALTERNATE LIST IS NOT ASSIGNED IN THE ABOVE CASE,THE"CURRENT
  3509					;	LIST ASSIGNED" BIT IS CLEARED.
  3510					;	4) IF THE NEW DESCRIPTOR IS THE LAST ONE IN ITS LIST THE "LAST DESCRIPTOR
  3511					;	IN LIST" INDICATOR IS SET.
  3512					;
  3513					;	THIS ROUTINE; CHECKS IF CURRENT DESCRIPTOR IS LAST ON LIST
  3514					;	IF SO, BRANCH TO NXLST
  3515					;	OTHERWISE, ADD 6 TO LIST POINTER AND GOTO NXDSCP TO LOAD DESC
  3516					;-
  3517
  3518	003064'				NXBUF:
  3519					 
  3520					; CHECK IF THE CURRENT BUFFER DESCRIPTOR IS THE LAST ONE IN THE CURRENT LIST
  3521					 
  3522	003064'					BRWRTE	IMM,<D.RBDF-D.RDP>	;ADDRESS FLAG BYTE
  3523	003066'					LDMA	BR,ADD,SP6
  3524	003070'					LDMAP	SELA,SP.RM1		;SINCE STUFF SILO CHANGED PAGE
  3525	003072'					SPBR	MEMX,SELB,SP0		;LOAD FLAG BYTE INTO BR,SP0
  3526	003074'					BR7	NXLST			;LAST DESCRIPTOR IN LIST,GET NEXT LIST
  3527					 
  3528					;	CURRENT BUFFER DESCRIPTOR IS NOT THE LAST ONE IN THE LIST
  3529					;ADD 6 TO CURRENT DESCRIPTOR ADDRESS TO GET THE NEXT DESCRIPTOR ADDRESS
  3530	003076'					LDMA	SELA,SP6		;ADDRESS CURRENT DESCRIPTOR POINTER
  3531	003100'					CALLSR	SP.SUB,INCMEM,NXDP1,6.	;CALL TO INCRE PNTR BY 6
  3532										;RETURN TO NXDSCP
  3533
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 65
KDPMCX.MAC    30-DEC-82 03:47		NXBUF-GET NEXT  BUFFER

  3535
  3536						.SBTTL	NXLST-GET NEXT BUFFER LIST
  3537					 
  3538					;+ 
  3539					; 
  3540					;			N E X T  L I S T
  3541					; 
  3542					; ENTERED FROM:	NXBUF
  3543					; 
  3544					; INPUTS:
  3545					;	SP.SB1	=RETURN ADDRESS
  3546					;	MAR,MARP=D.RBDF OR D.XBDF
  3547					;	SP0	=CONTENTS OF D.RBDF OR D.XBDF
  3548					;	SP6	=ADDRESS OF D.RBD OR D.XBD
  3549					; 
  3550					; OUTPUTS:
  3551					;	CHECK IF ALTERNATE LIST IS ASSIGNED
  3552					;	IF NOT, CLEAR BUFFER ASSIGNED BIT AND RETURN
  3553					;	IF SO, CLEAR ALTERNATE ASSIGNED BIT AND UPDATE CURRENT LIST PNTR
  3554					;	DROP INTO NXDSCP TO LOAD NEW DESC INTO LINE TABLE.
  3555					;-
  3556
  3557	003110'				NXLST:
  3558					 
  3559					; CHECK IF THE ALTERNATE LIST IS ASSIGNED
  3560					;	(MAR=D.RBDF FOR REC OR D.XBDF FOR XMT,SP0=ITS CONTENTS
  3561					 
  3562	003110'					BRWRTE	TWOA,SP0	;LEFT SHIFT 
  3563	003112'					BR7	10$		;BRANCH IF ALTERNATE LIST IS ASSIGNED
  3564					 
  3565					; ALTERNATE LIST IS NOT ASSIGNED. CLEAR 'CURRENT BUFFER ASSIGNED BIT AND RETURN
  3566					 
  3567	003114'					BRWRTE	IMM,<377-DR.CBA> ;MASK TO CLEAR DR.CBA
  3568	003116'					MEM	BR,AANDB,SP0	;CLEAR IT AND STORE RESULT IN D.RBDF/D.XBDF/
  3569					;*************ONE OF THE RETURN POINTS FOR BA,CONTROL ETC.**********
  3570	003120'					RTNSUB	SP.SB1,P2	;RETURN
  3571					;********************************************************************
  3572					 
  3573					 
  3574					; ALTERNATE LIST IS ASSIGNED.
  3575	003122'				10$:
  3576					 
  3577					;CLEAR 'ALTERNATE LIST ASSIGNED' BIT
  3578	003122'					BRWRTE	IMM,<377-DR.ABA> ;MASK TO CLEAR DS.ABA
  3579	003124'					MEM	BR,AANDB,SP0	;STORE IT IN RAM
  3580					 
  3581					;MOVE ALTERNATE LIST POINTER INTO CURRENT DECRIPTOR POINTER
  3582	003126'					BRWRTE	IMM,<D.ARLP-D.RDP> ;OFFSET FROM CURRENT DESCRIPTOR POINTER
  3583	003130'					LDMA	BR,ADD,SP6	;ADDRESS ALTERNATE POINTER
  3584	003132'					SP	MEMI,SELB,SP0	;SP0=ADDRESS 7:0
  3585	003134'					SP	MEMI,SELB,SP1	;SP1=ADDRESS 15:8
  3586	003136'					SP	MEMI,SELB,SP2	;SP2=ADDRESS 17:16
  3587	003140'					LDMA	SELA,SP6	;ADDRESS CURRENT POINTER
  3588	003142'					MEMINC	SELA,SP0	;STORE ADDRESS 7:0
  3589	003144'					MEMINC	SELA,SP1	;STORE ADDRESS 15:8
  3590	003146'					MEM	SELA,SP2	;AND EXT ADDRESS
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 65-1
KDPMCX.MAC    30-DEC-82 03:47		NXLST-GET NEXT BUFFER LIST

  3591									;FALL INTO NXDSCP
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 66
KDPMCX.MAC    30-DEC-82 03:47		NXLST-GET NEXT BUFFER LIST

  3593
  3594						.SBTTL	NXDSCP - GET NEXT DESCRIPTOR
  3595
  3596					;+
  3597					;
  3598					;	**NXDSCP-ROUTINE TO LOAD THE NEXT DESCRIPTOR INTO LINE TABLE
  3599					;
  3600					; ENTERED FROM:	NXLST
  3601					; CALLED FROM:	BAIN
  3602					;
  3603					;INPUTS:
  3604					;	SP6=ADDRESS OF THE CURRENT DESCRIPTOR FOR CURRENT OPERATION (ADDRESS
  3605					;	OF D.RDP OR D.XDP)
  3606					;
  3607					; OUTPUTS:
  3608					;	THE NEW DESCRIPTOR IS FETCHED FROM PDP-11 MEMORY AND STORE IN THE LINE TABLE.
  3609					;	IF A TRANSMIT BUFFER, ANY ODD LEADING CHARACTER IS PREFETCHED
  3610					;	IF A RECEIVE BUFFER, THE FIRST CHARACTER FLAG(DR.FST) IS SET
  3611					;-
  3612
  3613	003150'				NXDSCP:
  3614					 
  3615					;SET INBA TO THE CURRENT DESCRIPTOR ADDRESS
  3616	003150'					LDMA	SELA,SP6	;ADDRESS CURRENT DESCRIPTOR POINTER
  3617	003152'					OUTPUT	MEMI,SELB,IBA1	;ADDRESS 7:0
  3618	003154'					OUTPUT	MEMI,SELB,IBA2	;ADDRESS 15:8
  3619	003156'					BRWRTE	IMM,1		;START NPR 
  3620	003160'					SP	BR,SELB,SP0
  3621	003162'					OUT	MEMI,AORB,ONPR	;ADRESS 17:16
  3622					 
  3623					 
  3624					;MOVE NEW BUFFER ADDRESS AND BYTE COUNT INTO ORIGINAL BUF ADDRESS AND COUNT AREA
  3625					 
  3626	003164'				5$:	BRWRTE	IBUS,NPR	;WAIT FOR BUFFER ADDRESS 15:0
  3627	003166'					BR0	5$
  3628	003170'					SP	IBUS,INDAT1,SP4,INCMAR	;TEMPORARILY SAVE ADD 7:0 IN SP4
  3629	003172'					SP	IBUS,INDAT2,SP5,INCMAR	;AND ADDRESS 15:8 IN SP5
  3630	003174'					CALLSB	SP.SUB,IC2IN	;READ BYTE COUNT FROM DESCRIPTOR
  3631	003202'					SP	IBUS,INDAT1,SP2,INCMAR	;SAVE LOW BYTE IN SP2
  3632	003204'					SP	IBUS,INDAT2,SP3	;AND HIGH COUNT IN SP3
  3633					;MAR IS NOW POINTING TO D.ORBC/D.OXBC
  3634	003206'					MEMINC	IBUS,INDAT1	;SAVE LOW BYTE OF COUNT
  3635	003210'					MEMINC	IBUS,INDAT2	;SAVE HIGH BYTE OF COUNT
  3636	003212'					MEMINC	SELA,SP4	;NOW STORE DESCP ADDRESS 7:0
  3637	003214'					MEMINC	SELA,SP5	;AND ADDRESS 15:8 IN RAM
  3638					 
  3639					; UPDATE EXTENDED ADDRESS BITS OF BUFFER & LAST DESCRIPTOR BIT
  3640	003216'					CALLSB	SP.SUB,IC2IN	;READ NEXT DESCRIPTOR WORD
  3641	003224'					SP	IBUS,INDAT2,SP0	;LOAD HIGH BYTE (FLAGS,EXT ADDR)INTO SP0
  3642	003226'					MEMINC	IBUS,INDAT2	;SAVE FLAGS BYTE
  3643
  3644					; NOW SAVE COUNT AND ADDRESS IN WORKING (CURRENT) POINTERS	;+*** V1.1
  3645					; ENTRY FROM RESET IN RECEIVE ROUTINES				;+*** V1.1
  3646	003230'				NXDSC1:								;+*** V1.1
  3647	003230'					MEMINC	SELA,SP2	;SAVE COUNT, LOW BYTE
  3648	003232'					MEMINC	SELA,SP3	;	HIGH BYTE
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 66-1
KDPMCX.MAC    30-DEC-82 03:47		NXDSCP - GET NEXT DESCRIPTOR

  3649	003234'					MEMINC	SELA,SP4	;SAVE BUFFER ADDRESS
  3650	003236'					MEMINC	SELA,SP5	;
  3651	003240'					SP	MEMX,SELB,SP2	;SAVE OLD FLAGS IN SP2
  3652	003242'					BRWRTE	IMM,<DR.CBA!DR.ABA>	;STRIP ALL BUT THESE
  3653	003244'					BRWRTE	BR,AANDB,SP2	;AND LOAD IT NTO BR
  3654	003246'					MEM	BR,AORB,SP0	;OR IN NEW FLAGS
  3655					 
  3656					;CHECK IF RECEIVE OR TRANSMIT OPERATION
  3657	003250'					BRWRTE	IMM,D.RDP	;SET BR TO
  3658	003252'					BRWRTE	BR,ADD,SP.RM0	;RAM ADDRESS OF D.RDP
  3659					;IF THIS IS A RECEIVE OPERATION,SP6 WILL BE EQUAL TO THIS VALUE
  3660	003254'					COMP	BR,SP6		;BR=SP6?
  3661	003256'					Z	NXRBUF		;SP6=ADDRESS OF D.RDP,RECEIVE OPERATION
  3662
  3663					;TRANSMIT OPERATION,DO SPECIAL THINGS FOR IT
  3664					;READ READ CHARACTER INTO D.OXC IF THE FIRST BUFFER ADDRESS IS ODD
  3665	003260'					BRWRTE	DECA,SP4,INCMAR	;SP4 HAS LOW BYTE OF BUFFER ADDRESS
  3666	003262'					BR0	30$		;ADDRESS IS EVEN
  3667					;FIRST TRANSMIT BUFFER ADDRESS IS ODD,MOVE FIRST CHARACTER INTO D.OXC
  3668	003264'				10$:
  3669	003264'					OUTPUT	BR,SELB,IBA1	;SET ADR 7:0 OF XMT BUFFER
  3670	003266'					BRWRTE	SELA,SP5	;SP5 HAS ADR 15:8
  3671	003270'					OUTPUT	BR,SELB,IBA2	;SET ADDRESS 15:8
  3672	003272'					BRWRTE	IMM,BIT3!BIT2	;MASK TO ISOLATE EXT ADDRESS
  3673	003274'					SP	BR,AANDB,SP0	;SP0=EXT ADDRESS
  3674	003276'					OUT	INCA,ONPR	;START NPR (SP0 HAS EXT ADDRESS)
  3675	003300'				20$:	BRWRTE	IBUS,NPR	;WAIT FOR NPR TO COMPLETE
  3676	003302'					BR0	20$
  3677	003304'				30$:
  3678					; MAR IS NOW POINTING TO D.OXC
  3679	003304'					MEMINC	IBUS,INDAT2		;SAVE ODD CHARACTER
  3680	003306'					MEMINC	IMM,SYNCNT		;RESET SYNC COUNT
  3681					;RAISE REQUEST TO SEND IF IT IS NOT ALREADY SET
  3682	003310'					BRWRTE	SELA,SP.CS0		;RTS SET?
  3683	003312'					BRSHFT
  3684	003314'					BR1	NXBEXT
  3685	003316'					MEM	IMM,0			;CLEAR ABORT FLAGS **V0.7**
  3686	003320'					BRWRTE	IMM,DUPRTS	;SET RTS
  3687	003322'					SPBR	BR,AORB,SP.CS0	;OR MASK WITH ORIGINAL DUP REGISTER
  3688	003324'					OUTPUT	BR,SELB,OUTDA1	;SHIP IT INTO DUP REGISTER
  3689	003326'					CALLSB	SP.SUB,ADRCSR	;ADDRESS DUP
  3690					;************ ULTIMATE RETURN FOR BA & CONTROL OUT*************
  3691					 
  3692	003334'				NXBEXT:	RTNSUB	SP.SB1,P2	;RETURN
  3693					 
  3694					;***************************************************************
  3695					 
  3696					;ASSIGNING RECEIVE BUFFER,SET FIRST CHR IN BUFFER
  3697	003336'				NXRBUF:
  3698	003336'					BRWRTE	IMM,DR.LST!DR.ABA!DR.CBA!DR.17!DR.16	;CLEAR IRRELEVANT BITS *V0.7*
  3699	003340'					SP	MEMX,SELB,SP0	;SP0=FLAGS
  3700	003342'					SP	BR,AANDB,SP0	;SAVE THE RELEVANT BITS *V0.7*
  3702	003344'					MEM	INCA,SP0	;SET FIRST CHR IN BUFFER FLAG
  3703	003346'					RTNSUB	SP.SB1,P2
  3704					;NOTE: RECEIVER WAS ENABLED AT CONTROL TIME
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 67
KDPMCX.MAC    30-DEC-82 03:47		NXDSCP - GET NEXT DESCRIPTOR

  3706
  3707						.SBTTL	ERROR PROCESSING ROUTINES
  3708
  3709					;+
  3710					; **DUPRER-ERROR DETECTED BY DUP OR MICROCODE ON THE RECEIVER
  3711					;
  3712					; ENTERED FROM:	RCVDON
  3713					;
  3714					; INPUTS:
  3715					;	MAR = RECEIVE STATE POINTER
  3716					; OUTPUTS:
  3717					;	CONTROL OUT IS GENERATED.
  3718					;	FALL INTO RESYNC AND RETURN TO TIMER ROUTINE
  3719					;-
  3720
  3721					; DUP HARDWARE DETECTED RECEIVE ERROR
  3722					 
  3723	003350'				DUPRER:
  3724					 
  3725					; DUP HARDWARE HAS DETECTED AN ERROR ON RECEIVED CHARACTER. ANALYZE IT.
  3726					 
  3727	003350'					BR4	ERR12		;CRC ERROR
  3728	003352'					BRWRTE	TWOA,SP.RST	;SHIFT RECEIVE STATUS LEFT
  3729	003354'					BR7	OVRUN		;CHARACTER OVERRUN
  3730					;
  3731					; OTHERWISE MUST BE ABORT
  3732					;
  3733	003356'				ABORT:
  3734					 
  3735	003356'					BRWRTE	IMM,ER.ABO		;ERROR CODE
  3736	003360'					ALWAYS	RERROR			;SEND A CONTROL OUT
  3737
  3738					; 
  3739					; INVALID DDCMP HEADER BCC
  3740					; ENTERED FROM:	RHCRC2
  3741					; 
  3742	003362'				ERR10:
  3743					 
  3744	003362'					BRWRTE	IMM,ER.HBC	;ERROR CODE INTO BR
  3745	003364'					ALWAYS	RERROR		;EXECUTE COMMON ERROR SUBROUTINE
  3746					 
  3747					; 
  3748					; BCC ERROR ON RECEIVED MESSAGE
  3749					; ENTERED FROM:	DUPRER,RDCRC2 
  3750	003366'				ERR12:
  3751					 
  3752	003366'					BRWRTE	IMM,ER.CRC	;ERROR CODE INTO BR
  3753	003370'					ALWAYS	RERROR		;COMMON ERROR CODE
  3754					 
  3755					 
  3756					; CHARACTER OVERRUN
  3757					 
  3758	003372'				OVRUN:
  3759					 
  3760	003372'					BRWRTE	IMM,ER.OVR	;ERROR CODE
  3761									;FALL INTO RERROR
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 67-1
KDPMCX.MAC    30-DEC-82 03:47		ERROR PROCESSING ROUTINES

  3762					;SEND CONTROL OUT
  3763					 
  3764	003374'				RERROR:
  3765					 
  3766	003374'					SP	BR,SELB,SP3	;ERROR CODE INTO SP3
  3767	003376'					CALLSR	SP.SB1,ENTRY2,RERRP2,C.CLOR ;CONTROL OUT SUB ROUTINE
  3768	003406'				ERREXT:				;RETURN HERE AFTER SUBROUTINE
  3769					;	FALL INTO RSNCRT
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 68
KDPMCX.MAC    30-DEC-82 03:47		ERROR PROCESSING ROUTINES

  3771
  3772						.SBTTL	RSNCRT - RESYNC AND RETURN TO TIMER
  3773					;+
  3774					;
  3775					;	**RSNCRT-RESYNC RECEIVER AND RETURN TO TIMER POLLING LOOP
  3776					;
  3777					; ENTERED FROM:	DUPRER,RDH1,MSGIN
  3778					;
  3779					; INPUTS:	NONE
  3780					; OUTPUTS:
  3781					;	SET UP RETURN TO TIMER THEN FALL INTO RESYNC
  3782					;-
  3783
  3784	003406'				RSNCRT:
  3785	003406'					BRADDR	TIMRP2		;RETURN TO TIMER VIA PAGE 2
  3786	003410'					SP	BR,SELB,SP.SB1
  3787					;	ALWAYS	RESYNC		;AFTER RESYNCING THE RECEIVER
  3788					; FALL INTO RESYNC
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 69
KDPMCX.MAC    30-DEC-82 03:47		RSNCRT - RESYNC AND RETURN TO TIMER

  3790
  3791						.SBTTL	RESYNC-RESYNC DUP-11 RECEIVER
  3792					 
  3793					;+
  3794					;	R E S Y N C  D U P-1 1  R E C E I V E R
  3795					;
  3796					; ENTERED FROM:	RSNCRT
  3797					; CALLED BY:	ERREXT,KILLRC,STORE
  3798					; 
  3799					;INPUTS:
  3800					;	SP.SB1=RETURN ADDRESS
  3801					;	SP.CS0=RECEIVE STATUS REGISTER LOW BYTE
  3802					;OUTPUTS:
  3803					;	CURRENT DUP-11 RECEIVER ENABLE BIT IN ITS RECEIVE STATUS REGISTER
  3804					;	IS CLEARED.IT IS THEN SET THUS INITIALIZING DUP RECEIVER LOGIC.
  3805					;	RECEIVER STATE POINTER IS RESET.
  3806					;	RETURN TO ADDRESSES IN PAGE TWO
  3807					;-
  3808					 
  3809	003412'				RESYNC:
  3810					 
  3811					;CLEAR RECEIVE ENABLE BIT
  3812	003412'					LDMAP	SELA,SP.RM1		;SET UP PAGE ADDRESS
  3813	003414'					BRWRTE	IMM,<377-DUPREN>
  3814	003416'					SPBR	BR,AANDB,SP.CS0	 	;LOAD ORIGINAL STATUS WITH RCV ENABLE
  3815	003420'					OUTPUT	BR,SELB,OUTDA1	;BIT CLEARED INTO OUTDA1
  3816	003422'					CALLSB	SP.SUB,ADRCSR	;SET UP OUT BA TO DUP'S CSR AND DO A
  3817									;BYTE NPR
  3818					 
  3819					;NOW SET RECEIVE ENABLE BIT
  3820					 
  3821	003430'					BRWRTE	IMM,DUPREN	;MASK TO SET REC ENABLE BIT
  3822	003432'					SPBR	BR,AORB,SP.CS0	;MASK IN THE ORIGINAL STATUS
  3823	003434'					OUTPUT	BR,SELB,OUTDA1	;AND RECEIVE ENABLE BIT INTO OUTDA1
  3824	003436'					BRWRTE	IMM,DATOB	;WRITE IT INTO 
  3825	003440'					OUT	BR,SELB,ONPR	;RECEIVE STATUS REGISTER
  3826					;	***NPR STARTED***
  3827					; RESET RECEIVE PARAMETERS
  3828	003442'					BRWRTE	MEMX,SELB,INCMAR	;BR=D.STS,ADDRESS D.RPTR
  3829					 
  3830					;RESET RECEIVE STATE POINTER FOR DDCMP/BITSTUFF
  3831					 
  3832	003444'					RSTATE	RDH1		;SET DDCMP INTIAL RECEIVE STATE
  3833	003446'					BRSHFT
  3834	003450'					BR4	20$		;BRANCH IF DEC MODE
  3835	003452'					RSTATE	RB1		;SET BIT STUFF INITIAL STATE
  3836	003454'				20$:	BRWRTE	IBUS,NPR	;WAIT FOR PREVIOUS NPR TO COMPLETE
  3837	003456'					BR0	20$		;NOT YET
  3838	003460'					RTNSUB	SP.SB1,P2	;RETURN TO PAGE 2
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 70
KDPMCX.MAC    30-DEC-82 03:47		RESYNC-RESYNC DUP-11 RECEIVER

  3840
  3841						.SBTTL	SETRBA-SET OUTBA TO CURRENT INPUT ADDRESS IN USER RECEIVE BUFFER
  3842					 
  3843					;+
  3844					; 	SET OUTBA TO CURRENT INPUT ADDRESS IN RECEIVE BUFFER
  3845					;
  3846					; CALLED BY:	STORE,STRODD,EOFMSG
  3847					;
  3848					; INPUTS:
  3849					;	SP.SUB = RETURN ADDRESS ON PAGE 2
  3850					;	MAR = D.RBDA
  3851					; OUTPUTS:
  3852					;	OBA,OBR	= ADDRESS POINTED TO BY MAR
  3853					;	MAR	= D.RBDF
  3854					;-
  3855					 
  3856	003462'				SETRBA:
  3857					 
  3858	003462'					OUTPUT	MEMI,SELB,OBA1	;SET OUTBA 7:0
  3859	003464'					OUTPUT	MEMI,SELB,OBA2	;SET OUTBA 15:0
  3860	003466'					SP	IBUS,UBBR,SP0	;SP0=BUS REQUEST REGISTER
  3861	003470'					BRWRTE	IMM,101		;MASK TO CLEAR ALL BUT VEC XX4,NXM BITS
  3862	003472'					SP	BR,AANDB,SP0
  3863	003474'					BRWRTE	IMM,14		;MASK TO CLEAR UNWANTED BITS IN EXT. ADDRESS
  3864	003476'					SP	BR,SELB,SP1	;SAVE THE MASK IN SP1
  3865	003500'					BRWRTE	MEMX,AANDB,SP1	;BR=JUST THE EXT ADR
  3866	003502'					OUT	BR,AORB,OBR	;OR IN THE EXT ADDRESS
  3867	003504'					RTNSUB	SP.SUB,P2	;RETURN TO PAGE 2
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 71
KDPMCX.MAC    30-DEC-82 03:47		SETRBA-SET OUTBA TO CURRENT INPUT ADDRESS IN USER RECEIVE BUFFER

  3869
  3870						.SBTTL	DECDCC-DECREMENT DDCMP DATA CHARACTER COUNT
  3871					 
  3872					;+ 
  3873					; 
  3874					;	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
  3875					; 
  3876					; CALLED BY:	RDDATA
  3877					; 
  3878					;INPUT:
  3879					;	SP.SUB=RETURN ADDRESS
  3880					;OUTPUT:
  3881					; DDCMP DATA CHARACTER COUNT FOR THE CURRENT MESSAGE IS DECREMENTED BY ONE.
  3882					;	C BIT IS SET IF AND ONLY IF THE NEW BYTE COUNT IS NOT -1
  3883					;	COMMON CODE IN DECNT IS USED.
  3884					;- 
  3885					 
  3886	003506'				DECDCC:
  3887					 
  3888					;ADDRESS DDCMP DATA CHARACTER COUNT SAVE AREA IN RAM
  3889	003506'					BRWRTE	IMM,D.DCC1
  3890	003510'					ALWAYS	DECNT		;EXECUTE COMMON CODE
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 72
KDPMCX.MAC    30-DEC-82 03:47		DECDCC-DECREMENT DDCMP DATA CHARACTER COUNT

  3892
  3893						.SBTTL	DRCNT/DECNT-DECREMENT BUFFER COUNT
  3894					 
  3895					;+ 
  3896					; 
  3897					;	D E C R E M E N T  B U F F E R  B Y T E  C O U N T
  3898					; 
  3899					; CALLED BY:	STORE
  3900					; DECNT CALLED BY:	XMTDON
  3901					; 
  3902					;INPUT:
  3903					;	SP.SUB=RETURN ADDRESS
  3904					;OUTPUT:
  3905					;	BYTE COUNT FOR THE CURRENT LINE IS DECREMENTED BY ONE
  3906					;	C BIT IS SET IF AND ONLY IF THE NEW BYTE COUNT IS NOT -1
  3907					;	MAR IS LEFT POINTING TO ADDRESS FOLLOWING BYTE COUNT
  3908					;
  3909					; SCRATCH PADS USED:	SP1,SP.RM0,SP.SUB
  3910					;-
  3911					 
  3912	003512'				DRCNT:
  3913					 
  3914					; ADDRESS RECEIVE BYTE COUNT SAVE AREA (D.RBDC)
  3915	003512'					BRWRTE	IMM,D.RBDC
  3916
  3917					;
  3918					; FOLLOWING CODE IS SHARED BY DECDCC AND DRCNT.
  3919					; INPUTS:	BRG = LINE TABLE OFFSET OF BYTE COUNT
  3920					;
  3921					 
  3922	003514'				DECNT:
  3923	003514'					LDMA	BR,ADD,SP.RM0
  3924	003516'					SP	MEMX,SELB,SP1	;GET LOW BYTE COUNT INTO SP1
  3925	003520'					MEMINC	DECA,SP1	;DECREMENT IT AND WRITE IT BACK
  3926	003522'					Z	10$		;BRANCH IF ZERO
  3927	003524'					INCMA			;INCREMENT PAST HIGH BYTE OF COUNT
  3928	003526'					RTNSUB	SP.SUB,P2	;RETURN TO CALLLER
  3929
  3930					; BORROW FROM HIGH BYTE, DECREMENT HIGH BYTE
  3931	003530'				10$:	SP	MEMX,SELB,SP1	;GET HIGH BYTE INTO SP1
  3932	003532'					MEMINC	DECA,SP1	;DECREMENT IT AND STORE IT BACK
  3933	003534'					RTNSUB	SP.SUB,P2	;RETURN
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 73
KDPMCX.MAC    30-DEC-82 03:47		DRCNT/DECNT-DECREMENT BUFFER COUNT

  3935
  3936						.SBTTL	INCOUT/IC2OUT/INCOB-OUT NPR TO CURRENT ADDRESS+OFFSET
  3937					 
  3938					;+ 
  3939					;
  3940					;		INCREMENT OUTBA AND OUTPUT  SUBROUTINE
  3941					;
  3942					; CALLED BY: (INCOB):	BAIN
  3943					;            (IC2OUT):	CONIN,XMTBCZ,COUT
  3944					; 
  3945					; INPUTS:
  3946					;	BR	=INCREMENT
  3947					;	SP.SUB	=RETURN ADDRESS
  3948					;	ENTRY POINTS INCOUT,IC2OUT,INCOB
  3949					; 
  3950					; OUTPUTS:
  3951					;	THE DEVICE ADDRESS (OUT BA 17:0) FOR AN OUT NPR OPERATION
  3952					; IS INCREMENTED BY A FACTOR EQUAL TO THE CONTENTS OF BR.
  3953					; THEN A BYTE OR WORD TRANSFER WITH OR WITHOUT BUSHOLD IS PERFORMED DEPENDING
  3954					; ON THE ENTRY POINT.
  3955					; RETURNED TO THE ADDRESS IN CURRENT PAGE SPECIFIED BY SP.SUB
  3956					; BUSHOLD ENTRYS REMOVED BECAUSE OF INTERFERENCE PROBLEMS
  3957					; 
  3958					; REGISTERS USED:
  3959					;	BR,UBBR,SP0,SP1,SP.SUB
  3960					; 
  3961					; REGISTERS DESTROYED (OR CHANGED)
  3962					;	BR,UBBR,SP0,SP1
  3963					;- 
  3964					 
  3965					; ENTRY POINT TO DO BYTE NPR WITHOUT BUS HOLD
  3966	003536'				INCOB:
  3967	003536'					SP	IMM,221,SP1	;MASK TO DO BYTE OUT NPR ***TRICKY INSTR***
  3968	003540'					ALWAYS	INCOT1		;COMMON CODE
  3969
  3970
  3971					;ENTRY TO INCREMENT BY 2 AND DO WORD TRANSFER
  3972	003542'				IC2OUT:
  3973	003542'					BRWRTE	IMM,2
  3974
  3975					 
  3976					; ENTRY TO DO WORD TRANSFER WITHOUT BUS HOLD
  3977	003544'				INCOUT:
  3978	003544'					SP	IMM,21,SP1	;MASK TO DO WORD OUT NPR ****TRICKY INSTR***
  3979					 
  3980	003546'				INCOT1:
  3981					; INCREMENT OUTBA 7:0
  3982					 
  3983	003546'					SP	IBUS,IOBA1,SP0	;READ OUTBA7:0 INTO SP0
  3984	003550'					OUTPUT	BR,ADD,OBA1	;ADD INCREMNT AND RESTORE(SP0 IS SELECTED
  3985					 
  3986					; INCREMENT OUTBA 15:0
  3987					 
  3988	003552'				10$:	SP	IBUS,IOBA2,SP0	;READ OUTBA15:8 INTO SP0
  3989	003554'					OUTPUT	BR,APLUSC,OBA2	;ADD CARRY TO OUTBA15:8(SP0 SELECTED)
  3990	003556'					C	30$		;CARRY,INCREMENT EXTENDED ADDRESS
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 73-1
KDPMCX.MAC    30-DEC-82 03:47		INCOUT/IC2OUT/INCOB-OUT NPR TO CURRENT ADDRESS+OFFSET

  3991	003560'				20$:	ALWAYS	40$		;NPR AND RETURN
  3992					 
  3993					; INCREMENT OUTBA 17:16
  3994	003562'				30$:	SP	IBUS,UBBR,SP0	;LOAD UBBR INTO DP0
  3995	003564'					BRWRTE	IMM,4		;ADD ONE TO EXT. ADDRESS
  3996	003566'					SP	BR,ADD,SP0
  3997	003570'					BRWRTE	IMM,115		;MASK TO SET CLOCK BIT=0
  3998	003572'					OUT	BR,AANDB,OBR	;STORE UPDATED VALUE INTO UBBR
  3999
  4000					;NOW DO THE NPR
  4001	003574'				40$:
  4002	003574'					SP	IBUS,NPR,SP0	;GET NPR REGISTER INTO SP0
  4003	003576'					BRWRTE	IMM,155		;STRIP NPR CONTROL BITS
  4004	003600'					BRWRTE	BR,AANDB,SP0	;SAVE RESULTS IN BR
  4005	003602'					BRWRTE	BR,AORB,SP1	;OR IN THE NEW NPR CONTROL BITS
  4006	003604'					OUT	BR,SELB,ONPR	;LOAD THE NEW BYTE INTO NPR REGISTER
  4007
  4008					; WAIT FOR NPR TO COMPLETE
  4009	003606'				WAIT:
  4010	003606'				10$:	BRWRTE	IBUS,NPR	;WAIT FOR NPR TO COMPLTE
  4011	003610'					BR0	10$
  4012	003612'					RTNSUB	SP.SUB,P0
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 74
KDPMCX.MAC    30-DEC-82 03:47		INCOUT/IC2OUT/INCOB-OUT NPR TO CURRENT ADDRESS+OFFSET

  4014
  4015						.SBTTL	ADRCSR-SET OUTBA=DUP'S CSR ADDRESS
  4016					 
  4017					;+ 
  4018					; 
  4019					;		SET OUTBA TO DUP CSR
  4020					;
  4021					; CALLED BY:	NXDSCP, RESYNC
  4022					;
  4023					;INPUTS:
  4024					;	SP.SUB	=RETURN ADDRESS
  4025					;	OUTDA1 = VALUE TO BE WRITTEN TO DUP'S CSR0
  4026					;OUTPUTS:
  4027					;	OUTBA=ADDRESS OF CURRENT DUP
  4028					;	START A BYTE NPR TO CSR0 AND WAIT FOR ITS COMPLETION
  4029					;	MAR = D.STS
  4030					;-
  4031					 
  4032	003614'				ADRCSR:
  4033	003614'					BRWRTE	IMM,D.CSR	;ADDRESS D.CSR
  4034	003616'					LDMA	BR,ADD,SP.RM0
  4035	003620'					OUTPUT	MEMI,SELB,OBA1	;SET OUTBA 7:0
  4036	003622'					OUTPUT	MEMI,SELB,OBA2	;SET OUTBA 15:8
  4037	003624'					SP	IBUS,UBBR,SP0	;GET BUS REQ REG
  4038	003626'					BRWRTE	IMM,101		;KEEP VEC XX4,NXM BITS
  4039	003630'					SP	BR,AANDB,SP0
  4040	003632'					BRWRTE	IMM,14		;SET EXT ADDRESS BITS
  4041	003634'					OUT	BR,AORB,OBR	;SP0 IMPLIED FOR B SIDE
  4042	003636'					BRWRTE	IMM,DATOB	;BYTE OUT NPR MASK
  4043	003640'					OUT	BR,SELB,ONPR	;START THE NPR
  4044	003642'					ALWAYS	INCIN1		;RETURN VIA SP.SUB,P3
  4045									;USE CODE IN INCIN
  4046					 
  4047
  4048
  4049
  4050					;*** PAGE 3 RETURN TO TIMER FOR RECEIVE ROUTINES ***
  4052	003644'				TIMRP3:	ALWAYS	TIMRTN		;RETURN TO POLLING LOOP FROM DSRCHG
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 75
KDPMCX.MAC    30-DEC-82 03:47		ADRCSR-SET OUTBA=DUP'S CSR ADDRESS

  4054
  4055						.SBTTL	NXTTBL - ROUTINE TO CALCULATE THE ADDRESS OF THE NEXT TABLE
  4056					;	FILE	SUBR.MAC
  4057					 
  4058					;+
  4059					; **-NXTTBL-CALCULATE RAM ADDRESS OF NEXT LINE'S TABLE**
  4060					;
  4061					; CALLED FROM:	INIT
  4062					;
  4063					; INPUTS:
  4064					;	SP.RM0-1 = PREVIOUS RAM TABLE ADDRESS
  4065					;
  4066					; OUTPUTS:
  4067					;	MAR AND SP.RM0-1 ARE SET TO ADDRESS OF NEXT TABLE ENTRY
  4068					;-
  4069	003646'				NXTTBL:
  4070	003646'					BRWRTE	IMM,D.LNG	;GET THE LENGTH OF A RAM TABLE ENTRY
  4071	003650'					SP	BR,ADD,SP.RM0,LDMAR	;POINT TO NEXT ENTRY AND LOAD MAR
  4072	003652'					NODST	BR,ADD,SP.RM0	;WOULD THIS LINE TABLE CROSS A PAGE BOUNDARY?
  4073	003654'					C	10$		;YES, MAKE IT START AT THE BEGINNING OF THE
  4074									;NEXT PAGE
  4075	003656'					LDMAP	SELA,SP.RM1		;LOAD MAR HIGH
  4076	003660'					ALWAYS	INIT1		;BACK TO INITIALIZE LOOP
  4077
  4078	003662'				10$:	SP	APLUSC,SP.RM1,LDMAPG	;INCREMENT THE PAGE NUMBER AND LOAD
  4079									;MAR HIGH
  4080	003664'					BRWRTE	IMM,0		;ZERO THE BRG
  4081	003666'					SP	BR,SELB,SP.RM0,LDMAR	;ZERO THE LOW 8 BITS OF THE MAR AND
  4082									;SP.RM0
  4083	003670'					ALWAYS	INIT1		;BACK TO INITIALIZE LOOP
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 76
KDPMCX.MAC    30-DEC-82 03:47		NXTTBL - ROUTINE TO CALCULATE THE ADDRESS OF THE NEXT TABLE

  4085
  4086						.SBTTL	INCIN/INCINH/IC2IN - EIGHTEEN BIT ADD TO INPUT ADDRESS
  4087					;+
  4088					; **INCIN/INCINH-ROUTINE TO DO 18 BIT TO THE INPUT ADDRESS**
  4089					;
  4090					; CALLED BY: (IC2IN):	NXDSCP
  4091					;
  4092					; CALLING SEQUENCE:
  4093					;	CALLSB	SP.SUB,INCIN,ADDEND	;ADD "ADDEND" TO IN BA AND DO
  4094					;					;AN NPR WITH BUS HOLD CLEAR
  4095					;	CALLSB	SP.SUB,INCINH,ADDEND	;ADD "ADDEND TO IN BA AND DO
  4096					;					;AN NPR WITH BUS HOLD SET
  4097					;	CALLSB	SP.SUB,IC2IN		;ADD 2 TO IN BA AND DO AN NPR
  4098					;					;WITH BUS HOLD CLEAR
  4099					;					;N.B. CALLING SEQUENCE IS ONE INSTR LESS
  4100					;
  4101					; INPUTS:
  4102					;	INPUT BUFFER ADDRESS MUST BE SET UP IN THE I/O BUS INCLUDING
  4103					;	THE EXTENDED MEMORY BITS IN THE NPR CONTROL REGISTER
  4104					;
  4105					;	BRG = ADDEND
  4106					;
  4107					; OUTPUTS:
  4108					;	THE INPUT ADDRESS IS INCREMENTED BY THE BRG CONTENTS, THE NPR IS STARTED
  4109					;	AND THE ROUTINE WAITS FOR IT TO COMPLETE.
  4110					;	NOTE: BUS HOLD OPTIONS NOT USED TO PREVENT INTERFERENCE WITH OTHER
  4111					;	 UNIBUS DEVICES.
  4112					;-
  4113						.ENABL	LSB
  4114
  4115					;*******************************
  4116					;INCINH:	SP	IMM,0,SP1	;WRITE A ONE TO SP 1 ***** TRICKY INSTRUCTION **
  4117					;	SP	BR,INCA,SP1	;MAKE IT A TWO IN ORDER TO MASK ON BUS HOLD BIT
  4118					;	ALWAYS	5$		;TO COMMON CODE
  4119					;***** ABOVE CODE NOT USED******
  4120					 
  4121	003672'				IC2IN:	BRWRTE	IMM,2		;MOST COMMON INCREMENT VALUE
  4122									;FALL INTO INCIN
  4123	003674'				INCIN:
  4124					;**************
  4125					;	SP	IMM,1,SP1	;WRITE A ONE TO SCRATCH PAD ONE **** TRICKY INSTR.****
  4126					;				;LEAVES BIT 1 A ZERO TO MASK OFF BUS HOLD
  4127					;**************
  4128
  4129	003674'				5$:	SP	IBUS,IIBA1,SP0	;GET THE CURRENT LOW BYTE OF THE INPUT ADDRESS
  4130	003676'					OUTPUT	BR,ADD,IBA1	;NEW LOW BYTE OF INPUT ADDRESS
  4131	003700'					SP	IBUS,IIBA2,SP0	;GET THE HIGH BYTE OF THE INPUT ADDRESS
  4132	003702'					OUTPUT	APLUSC,IBA2	;ADD ANY CARRY FROM PREVIOUS ADD TO HIGH BYTE
  4133	003704'					SP	IBUS,NPR,SP0	;GET THE NPR REGISTER CONTENTS
  4134	003706'					C	50$		;A PLUS C CAUSED A CARRY TO EXTENDED MEMORY BITS
  4135	003710'				30$:	BRWRTE	IMM,16		;MASK TO EXT. MEM. BIT OVERFLOW
  4136	003712'					SP	BR,AANDB,SP0	;MASK OFF UNWANTED BITS
  4137	003714'					OUT	BR,INCA,ONPR	;START THE NPR
  4138
  4139					; THE FOLLOWING CODE SHARED WITH ADRCSR
  4140	003716'				INCIN1:
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 76-1
KDPMCX.MAC    30-DEC-82 03:47		INCIN/INCINH/IC2IN - EIGHTEEN BIT ADD TO INPUT ADDRESS

  4141	003716'				40$:	BRWRTE	IBUS,NPR	;READ THE NPR CONTROL REGISTER
  4142	003720'					BR0	40$		;WAIT FOR THE NPR TO FINISH
  4143	003722'					RTNSUB	SP.SUB,P3	;RETURN TO CALLER
  4144					 
  4145	003724'				50$:	BRWRTE	IMM,4		;VALUE TO ADD TO INCREMENT EXTENDED MEMORY
  4146	003726'					SP	BR,ADD,SP0	;ADD TO PREVIOUS EXTENDED MEM BITS
  4147	003730'					ALWAYS	30$		;BRANCH TO COMMON CODE
  4148						.DSABL	LSB
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 77
KDPMCX.MAC    30-DEC-82 03:47		INCIN/INCINH/IC2IN - EIGHTEEN BIT ADD TO INPUT ADDRESS

  4150
  4151						.SBTTL	INCMEM - EIGHTEEN BIT ADD TO ADDRESS POINT TO BY MAR
  4152					;+
  4153					; **INCMEM-18 BIT ADD TO RAM**
  4154					;
  4155					; CALLED BY: (INCMEM):	RCVEXT, NXBUF
  4156					;             (INCMM):	XMTDON
  4157					;
  4158					; CALLING SEQUENCE:
  4159					;	CALLSB	SP.SUB,INCMEM,ADDEND
  4160					;		OR
  4161					;	CALLSB	SP.SUB,INCMM	;TO INCREMENT MEMORY BY STATE OF "C" BIT
  4162					;
  4163					; INPUTS:
  4164					;	MAR = ADDRESS IN RAM OF LOW BYTE TO DO ADD
  4165					;	BRG = ADDEND
  4166					; INPUTS TO INCMM:
  4167					;	MAR = SAME AS ABOVE
  4168					;	"C" BIT SET OR CLEAR
  4169					; OUTPUTS:
  4170					;	RESULT IS IN RAM
  4171					;	MAR = ORIGINAL MAR + 2
  4172					;
  4173					;	USES SCRATCH PAD 0
  4174					;-
  4175
  4176	003732'				INCMEM:	SP	BR,SELB,SP0	;MOVE ADDEND TO SP 0
  4177	003734'					MEMINC	MEMX,ADD,SP0	;ADD TO LOW BYTE OF RAM
  4178	003736'				INCMM:
  4179	003736'					SP	MEMX,SELB,SP0	;MOVE HIGH BYTE FROM RAM TO SP0
  4180	003740'					MEMINC	BR,APLUSC,SP0	;ADD CARRY FROM LOW BYTE
  4181	003742'					C	10$		;LAST ADD CAUSE CARRY TO EXTENTED MEMORY BITS
  4182	003744'					RTNSUB	SP.SUB,P1	;ALL DONE
  4183	003746'				10$:	SP	MEMX,SELB,SP0	;READ EXTENDED MEMORY BITS
  4184									;IN POSITIONS 2 & 3
  4185	003750'					BRWRTE	IMM,4		;INCREMENT EXTENDED MEMORY BITS
  4186	003752'					MEM	BR,ADD,SP0	;ADD "ONE" OF HIGH ORDER BITS
  4187	003754'					RTNSUB	SP.SUB,P1	;RETURN TO CALLER
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 78
KDPMCX.MAC    30-DEC-82 03:47		INCMEM - EIGHTEEN BIT ADD TO ADDRESS POINT TO BY MAR

  4189
  4190						.SBTTL	NXMERR - NONEXISTENT MEMORY ERROR
  4191					;+
  4192					; **NXMERR-MICROPROCESSOR HAS DETECTED A NONEXISTENT MEMORY ERROR**
  4193					;
  4194					; CALLED BY:	RDICLR, TIMER
  4195					;
  4196					; OUTPUTS:
  4197					;	CONTROL OUT IS GENERATED
  4198					;	N.B. THE NXM ERROR IS CHECKED ONLY AFTER SERVICING A USER
  4199					;	REQUEST  (RQI) AND AFTER SERVICING A DUP NOT AFTER EACH
  4200					;	NPR. THUS THE ONLY RELEVANT INFORMATION IS THE LINE NUMBER.
  4201					;-
  4202
  4203	003756'				NXMERR:
  4204	003756'					BRWRTE	IMM,100		;MASK TO PRESERVE STATE OF XX4 BIT
  4205	003760'					OUT	BR,AANDB,OBR	;CLEAR NXM ERROR BIT
  4206	003762'					CALLSB	SP.SUB,COUTX,ER.NXM	;POST THE ERROR
  4207	003772'					ALWAYS	IDLE		;BACK TO IDLE LOOP
  4208
  4209									;(LINES REMOVED)		**X1.2**
  4210
  4211
  4212		000040				$KDPML==.-$KDPMC+63./64.		;NUMBER OF 32 WORD BLOCKS
  4213		000001				.END
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 79
KDPMCX.MAC    30-DEC-82 03:47		CROSS REFERENCE TABLE -- USER SYMBOLS

AANDB = 000260        	  189#	 1291	 1449	 1542	 1577	 1666	 1750	 1775	 1777	 1823	 2114	 2211	 2215
			 2219	 2716	 2775	 2844	 3016	 3216	 3219	 3568	 3579	 3653	 3673	 3700	 3814
			 3862	 3865	 3998	 4004	 4039	 4136	 4205
ABORT   003356R    002	 3733#
ADD   = 000000        	  178#	 1001	 1020	 1146	 1231	 1317	 1373	 1582	 1634	 1652	 1688	 1721	 1754
			 1758	 1836	 1907	 2110	 2173	 2209	 2217	 2334	 2476	 2589	 2600	 2645	 2666
			 2730	 2777	 2816	 2870	 2945	 3083	 3113	 3172	 3224	 3228	 3360	 3469	 3523
			 3583	 3658	 3923	 3984	 3996	 4034	 4071	 4072	 4130	 4146	 4177	 4186
ADDC  = 000020        	  179#
ADRCSR  003614R    002	 3689	 3816	 4032#
ALCOND= 000400        	   65#	 1003	 1023	 1056	 1098	 1152	 1160	 1165	 1183	 1189	 1193	 1216	 1254
			 1266	 1298	 1366	 1385	 1413	 1417	 1421	 1461	 1498	 1529	 1543	 1553	 1587
			 1630	 1677	 1689	 1719	 1766	 1772	 1779	 1793	 1803	 1843	 1853	 1854	 1860
			 1880	 1920	 1950	 1974	 2040	 2062	 2133	 2141	 2178	 2225	 2255	 2284	 2320
			 2341	 2368	 2400	 2411	 2435	 2441	 2453	 2478	 2502	 2522	 2546	 2581	 2602
			 2611	 2650	 2655	 2662	 2671	 2679	 2682	 2685	 2717	 2731	 2768	 2789	 2793
			 2848	 2858	 2872	 2883	 2917	 2919	 2954	 2962	 2976	 2979	 2992	 3024	 3035
			 3052	 3087	 3120	 3127	 3241	 3278	 3305	 3415	 3470	 3474	 3480	 3488	 3531
			 3570	 3630	 3640	 3689	 3692	 3703	 3736	 3745	 3753	 3767	 3816	 3838	 3867
			 3890	 3928	 3933	 3968	 3991	 4012	 4044	 4052	 4076	 4083	 4143	 4147	 4182
			 4187	 4206	 4207
AORB  = 000300        	  190#	 1453	 1561	 1685	 1752	 2340	 2845	 3220	 3423	 3487	 3621	 3654	 3687
			 3822	 3866	 4005	 4041
AORNB = 000240        	  188#
APLUSC= 060100        	  182#	 3989	 4078	 4132	 4180
AXORB = 000320        	  191#	 1349	 1825	 2543
BAALT   001070R    002	 1655	 1682#
BAIN    000752R    002	 1254	 1614#
BAIN0   001014R    002	 1648#	 2670
BAIN1   000776R    002	 1630	 1633#
BAIN2   001032R    002	 1661#	 1689
BAORC   002660R    002	 2992	 3264#
BAORE   002560R    002	 3120	 3156#
BAOX    002712R    002	 2768	 3323#
BARCV   000774R    002	 1626	 1632#
BASEIN  000530R    002	 1255	 1444#
BASEI1  000550R    002	 1456#
BIT0  = 000001        	  766#	  793	  824	  847	  854	  896	  903	  924	  929
BIT1  = 000002        	  767#	  792	  846	  855	  891	  897	  904	  913	  930
BIT2  = 000004        	  768#	  791	  823	  845	  892	  905	  931	 1620	 3672
BIT3  = 000010        	  769#	  790	  822	  844	  919	 1620	 3672
BIT4  = 000020        	  770#	  789	  843	  854	  893	  906	  914	  920
BIT5  = 000040        	  771#	  788	  821
BIT6  = 000100        	  772#	  787	  820	  907
BIT7  = 000200        	  773#	  785	  786	  819	  894	  908	  915	  921
BOUT    002576R    002	 3206#
BOUTR0  000522R    002	 1413#	 3236
BR    = 060000        	   48#	  181	  182	  183	  184	  185	  186	  994	  995	  996	  997	  998	 1001
			 1009	 1012	 1013	 1020	 1096	 1143	 1146	 1164	 1228	 1230	 1231	 1239	 1262
			 1291	 1295	 1296	 1297	 1309	 1311	 1315	 1316	 1317	 1320	 1327	 1335	 1343
			 1349	 1364	 1373	 1379	 1384	 1449	 1453	 1460	 1461	 1506	 1515	 1542	 1543
			 1560	 1564	 1575	 1577	 1582	 1587	 1621	 1634	 1635	 1652	 1659	 1666	 1671
			 1674	 1677	 1685	 1688	 1721	 1724	 1750	 1752	 1754	 1758	 1775	 1777	 1778
			 1803	 1819	 1823	 1825	 1836	 1840	 1854	 1857	 1879	 1907	 1913	 2006	 2062
			 2110	 2114	 2120	 2124	 2128	 2173	 2209	 2211	 2215	 2217	 2219	 2334	 2340
			 2435	 2476	 2546	 2581	 2589	 2600	 2601	 2602	 2645	 2655	 2659	 2661	 2662
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 79-1
KDPMCX.MAC    30-DEC-82 03:47		CROSS REFERENCE TABLE -- USER SYMBOLS

			 2666	 2713	 2716	 2721	 2723	 2730	 2765	 2768	 2775	 2777	 2779	 2816	 2844
			 2845	 2857	 2858	 2870	 2882	 2883	 2911	 2916	 2945	 2953	 2954	 2962	 2979
			 2980	 2982	 2986	 2989	 3016	 3035	 3039	 3041	 3065	 3083	 3087	 3113	 3127
			 3130	 3133	 3161	 3169	 3172	 3173	 3216	 3219	 3220	 3224	 3228	 3231	 3237
			 3269	 3274	 3297	 3299	 3300	 3304	 3328	 3353	 3360	 3361	 3390	 3417	 3423
			 3457	 3466	 3469	 3523	 3531	 3568	 3579	 3583	 3620	 3630	 3640	 3653	 3654
			 3658	 3660	 3669	 3671	 3673	 3687	 3688	 3689	 3700	 3766	 3767	 3786	 3814
			 3815	 3816	 3822	 3823	 3825	 3862	 3864	 3866	 3923	 3984	 3989	 3996	 3998
			 4004	 4005	 4006	 4034	 4039	 4041	 4043	 4071	 4072	 4081	 4130	 4136	 4137
			 4146	 4176	 4180	 4186	 4205	 4206
BRECON= 000000        	   64#
BR0CON= 002000        	   68#	 1187	 1219	 1253	 1255	 1264	 1308	 1346	 1381	 1495	 1517	 1637	 1726
			 1765	 1802	 1811	 1827	 1842	 2406	 2521	 2788	 2970	 2991	 2999	 3046	 3115
			 3135	 3413	 3627	 3666	 3676	 3837	 4011	 4142
BR1CON= 002400        	   69#	 1252	 1350	 1358	 1526	 1626	 1740	 1788	 1998	 2316	 2639	 2766	 2813
			 3684
BR4CON= 003000        	   70#	 1053	 1158	 1215	 1222	 1536	 1549	 1643	 1655	 1718	 1738	 1756	 1761
			 1771	 1786	 1869	 1876	 2399	 2449	 2501	 2577	 2670	 2711	 2780	 2792	 2819
			 2914	 2948	 3240	 3727	 3834
BR7CON= 003400        	   71#	 1002	 1088	 1094	 1182	 1353	 1365	 1511	 1521	 1571	 1675	 1737	 1798
			 1871	 1914	 2035	 2610	 2764	 3526	 3563	 3729
BSEL0 = 120000        	  103#
BSEL1 = 120020        	  104#
BSEL2 = 120040        	  105#
BSEL3 = 120060        	  106#
BSEL4 = 120100        	  107#
BSEL5 = 120120        	  108#
BSEL6 = 120140        	  109#
BSEL7 = 120160        	  110#
CCOND = 001000        	   66#	 1329	 1851	 2437	 2727	 2759	 2965	 3990	 4073	 4134	 4181
CHKODD  002440R    002	 2965	 2995#
CONIN   000564R    002	 1253	 1493#
CONIN2  000630R    002	 1519#
CONIN3  000674R    002	 1546#
COUT    002576R    002	 2662	 3207#
COUTX   002674R    002	 2546	 2954	 3296#	 4206
COUX    002720R    002	 2883	 3352#
C.BAOR= 000204        	  955#	 3165	 3273
C.BAOX= 000200        	  954#	 3332
C.CLOR= 000205        	  957#	 2656	 3767
C.CLOX= 000201        	  956#	 2649	 2883	 3303
DATI  = 000001        	  223#	 1341	 1377	 1620	 1722
DATIH = 000003        	  224#
DATO  = 000021        	  225#	  936#	 1514	 1837	 3051
DATOB = 000221        	  227#	  937#	 2847	 2983	 3063	 3132	 3824	 4042
DATOBH= 000223        	  228#
DATOH = 000023        	  226#
DECA  = 060160        	  185#	 1327	 1497	 1873	 2726	 2908	 2980	 3128	 3665	 3925	 3932
DECDCC  003506R    002	 2435	 3886#
DECNT   003514R    002	 1803	 3890	 3922#
DECP2   002100R    002	 2435	 2685#
DISP  = 000371        	 1543#	 1854#	 2602#	 2655#	 2662#	 2768#	 2962#	 2979#	 3035#	 3127#	 3630#	 3640#	 3689#
			 3816#	 4206#
DLE   = 000220        	  945#	 2127
DRCNT   003512R    002	 2962	 3912#
DR.ABA= 000100        	  820#	  841	 1684	 3578	 3652	 3698
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 79-2
KDPMCX.MAC    30-DEC-82 03:47		CROSS REFERENCE TABLE -- USER SYMBOLS

DR.CBA= 000040        	  821#	  842	 1657	 3567	 3652	 3698
DR.FST= 000001        	  824#	 3014	 3701
DR.LST= 000200        	  819#	  840	 3698
DR.16 = 000004        	  823#	 3698
DR.17 = 000010        	  822#	 3698
DSRCHG  001722R    002	 1350	 2540#
DS.CRI= 000200        	  785#	 1525
DS.DEC= 000040        	  788#	 1535	 1537
DS.DSR= 000002        	  792#	 2541	 2542
DS.HDX= 000010        	  790#	 1558	 2843
DS.IGN= 000020        	  789#	 2113	 2335
DS.NUM= 000001        	  793#	 2113	 2139
DS.QSC= 000100        	  787#	 2113
DS.SEC= 000004        	  791#	 1535
DS.SLT= 000200        	  786#	 2113
DT.ABT= 000021        	  854#	 2647	 2871
DT.AB1= 000002        	  855#	 2647	 2871
DUPCPE= 000020        	  906#
DUPCRI= 000002        	  913#	 1528
DUPDEC= 000200        	  915#	 1538
DUPDR = 000001        	  924#	 1459
DUPDSR= 000002        	  897#
DUPDTR= 000002        	  891#	 1502
DUPHDX= 000010        	  919#	 1558	 1559
DUPOVR= 000100        	  907#
DUPRAB= 000004        	  905#
DUPRDN= 000200        	  894#
DUPRE = 000200        	  908#
DUPREM= 000002        	  904#
DUPREN= 000020        	  893#	 1502	 3813	 3821
DUPRER  003350R    002	 1914	 3723#
DUPRSM= 000001        	  903#
DUPRTS= 000004        	  892#	 1776	 3686
DUPSAM= 000020        	  914#	 1528
DUPSND= 000020        	  920#	 1792
DUPSSY= 000001        	  896#	 1509
DUPTAB= 000004        	  931#	 2915	 2918
DUPTEM= 000002        	  930#	 2714	 2856	 2915
DUPTSM= 000001        	  929#	 1878	 2714	 2722	 2918
DUPTXD= 000200        	  921#
DX.ABA= 000100        	  841#
DX.CBA= 000040        	  842#
DX.EOM= 000002        	  846#	 2667
DX.LST= 000200        	  840#	 2667
DX.SOM= 000001        	  847#	 1872
DX.SYN= 000020        	  843#	 2715
DX.16 = 000004        	  845#
DX.17 = 000010        	  844#
D.ARLP= 000014        	  808#	  810	 1687	 3582
D.AXLP= 000035        	  830#	  832
D.CSR = 000002        	  782#	  784	 4033
D.DCC1= 000007        	  799#	  801	  804	 2172	 3889
D.DCC2= 000010        	  801#	  806	 2208
D.DUMM= 000042        	  834#	  836
D.ERC = 000031        	  826#	  828
D.LNG = 000060        	  857#	 4070
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 79-3
KDPMCX.MAC    30-DEC-82 03:47		CROSS REFERENCE TABLE -- USER SYMBOLS

D.ORBA= 000021        	  812#	  814
D.ORBC= 000017        	  810#	  812	 2588	 3223
D.OXBC= 000040        	  832#	  834
D.OXC = 000052        	  849#	  851
D.RBD = 000024        	  814#	  815	  826
D.RBDA= 000026        	  817#	  818	 3082	 3112
D.RBDC= 000024        	  815#	  817	 3227	 3915
D.RBDF= 000030        	  818#	 1651	 2665	 2944	 3522
D.RDP = 000011        	  806#	  808	 1632	 1651	 1687	 2599	 2665	 3171	 3223	 3227	 3277	 3522	 3582
			 3657
D.RPTR= 000005        	  795#	  797	 2475
D.RSTR= 000000        	  778#	  780
D.SADR= 000006        	  797#	  799
D.SILO= 000007        	  804#
D.STS = 000004        	  784#	  795	 1906	 2109	 2216	 2333
D.SYNC= 000053        	  851#	  853
D.TIME= 000001        	  780#	  782
D.XBD = 000045        	  836#	  837	  849
D.XBDA= 000047        	  838#	  839
D.XBDC= 000045        	  837#	  838	 1803
D.XBDF= 000051        	  839#	 1757	 2729	 2776	 2815
D.XDP = 000032        	  828#	  830	 1629	 3356
D.XSTS= 000054        	  853#	 1581	 1753	 2644	 2869
ENQ   = 000005        	  944#	 2123
ENTRY1  002724R    002	 3278	 3359#
ENTRY2  002566R    002	 3168#	 3767
EOFBUF  002400R    002	 2968#
EOFMSG  002522R    002	 2062	 2581	 3108#
EOM   = 000020        	  959#	 3160
ERREXT  003406R    002	 2682	 3768#
ERR10   003362R    002	 2400	 3742#
ERR12   003366R    002	 2502	 3727	 3750#
ER.ABO= 000006        	  963#	 3735
ER.CRC= 000012        	  965#	 3752
ER.DSR= 000016        	  967#	 2546
ER.HBC= 000010        	  964#	 3744
ER.KIL= 000026        	  971#	 2660
ER.NBA= 000014        	  966#	 2954
ER.NXM= 000020        	  968#	 4206
ER.OVR= 000024        	  970#	 3760
ER.UNR= 000022        	  969#	 2881
HLDBUS= 000002        	  938#
IBA1  = 002004        	  163#	 1336	 1373	 1618	 1721	 1819	 3617	 3669	 4130
IBA2  = 002005        	  164#	 1339	 1619	 1820	 3618	 3671	 4132
IBUS  = 020000        	   46#	 1000	 1051	 1087	 1093	 1157	 1181	 1214	 1218	 1221	 1229	 1249	 1263
			 1307	 1345	 1347	 1351	 1352	 1380	 1382	 1383	 1447	 1451	 1494	 1500	 1501
			 1507	 1516	 1520	 1524	 1547	 1570	 1580	 1618	 1619	 1624	 1636	 1638	 1642
			 1662	 1663	 1664	 1725	 1727	 1728	 1729	 1739	 1748	 1773	 1785	 1787	 1826
			 1828	 1830	 1834	 1841	 1870	 2520	 2637	 2668	 2763	 2774	 2990	 3134	 3214
			 3626	 3628	 3629	 3631	 3632	 3634	 3635	 3641	 3642	 3675	 3679	 3836	 3860
			 3983	 3988	 3994	 4002	 4010	 4037	 4129	 4131	 4133	 4141
IC2IN   003672R    002	 3630	 3640	 4121#
IC2OUT  003542R    002	 1543	 1587	 2858	 3240	 3972#
IDLE    000070R    002	 1051#	 1094	 1098	 1118	 1160	 1165	 1189	 1222	 1266	 4207
IDLE1   000074R    002	 1054#	 1312
IIBA1 = 020100        	  118#	 1351	 1727	 4129
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 79-4
KDPMCX.MAC    30-DEC-82 03:47		CROSS REFERENCE TABLE -- USER SYMBOLS

IIBA2 = 020120        	  119#	 1728	 4131
IMM   = 000000        	   45#	  999	 1008	 1016	 1017	 1026	 1027	 1029	 1030	 1054	 1055	 1095	 1116
			 1138	 1141	 1142	 1145	 1153	 1155	 1163	 1185	 1192	 1227	 1238	 1261	 1287
			 1294	 1310	 1313	 1341	 1371	 1377	 1448	 1452	 1459	 1461	 1496	 1502	 1509
			 1512	 1514	 1525	 1527	 1528	 1532	 1535	 1537	 1538	 1543	 1552	 1559	 1576
			 1581	 1583	 1620	 1629	 1632	 1651	 1657	 1665	 1684	 1687	 1720	 1722	 1749
			 1751	 1753	 1757	 1774	 1776	 1792	 1803	 1821	 1835	 1837	 1852	 1854	 1856
			 1878	 1906	 2109	 2113	 2119	 2123	 2127	 2139	 2172	 2208	 2210	 2216	 2218
			 2333	 2335	 2475	 2542	 2546	 2588	 2599	 2602	 2644	 2647	 2649	 2655	 2656
			 2660	 2662	 2665	 2667	 2712	 2714	 2715	 2720	 2722	 2729	 2768	 2773	 2776
			 2814	 2815	 2821	 2843	 2847	 2856	 2869	 2871	 2881	 2883	 2910	 2915	 2918
			 2944	 2954	 2962	 2979	 2983	 3014	 3035	 3051	 3063	 3082	 3087	 3112	 3127
			 3132	 3160	 3165	 3171	 3215	 3218	 3223	 3227	 3268	 3273	 3277	 3298	 3303
			 3327	 3332	 3356	 3402	 3403	 3414	 3416	 3453	 3464	 3465	 3468	 3473	 3486
			 3522	 3531	 3567	 3578	 3582	 3619	 3630	 3640	 3652	 3657	 3672	 3680	 3685
			 3686	 3689	 3698	 3735	 3744	 3752	 3760	 3767	 3813	 3816	 3821	 3824	 3861
			 3863	 3889	 3915	 3967	 3973	 3978	 3995	 3997	 4003	 4033	 4038	 4040	 4042
			 4070	 4080	 4121	 4135	 4145	 4185	 4204	 4206
INCA  = 060060        	  181#	 1015	 1309	 1810	 1824	 3674	 3702	 4137
INCIN   003674R    002	 4123#
INCIN1  003716R    002	 4044	 4140#
INCMAR= 014000        	   78#	   80	  999	 1011	 1021	 1028	 1029	 1238	 1239	 1335	 1447	 1448	 1496
			 1497	 1500	 1501	 1506	 1507	 1564	 1577	 1580	 1662	 1663	 1810	 1828	 1852
			 1857	 2006	 2033	 2037	 2314	 2721	 2723	 2983	 3011	 3014	 3016	 3039	 3128
			 3231	 3237	 3408	 3409	 3410	 3419	 3423	 3424	 3588	 3589	 3628	 3629	 3631
			 3634	 3635	 3636	 3637	 3642	 3647	 3648	 3649	 3650	 3665	 3679	 3680	 3828
			 3925	 3927	 3932	 4177	 4180
INCMEM  003732R    002	 3087	 3531	 4176#
INCMM   003736R    002	 1854	 4178#
INCOB   003536R    002	 1461	 3966#
INCON = 120000        	   88#	 1157	 1181	 1218
INCOT1  003546R    002	 3968	 3980#
INCOUT  003544R    002	 3977#
INDAT1= 020000        	  114#	 1352	 1382	 1638	 1729	 1785	 1828	 3628	 3631	 3634
INDAT2= 020020        	  115#	 1347	 1383	 1739	 1787	 1830	 1870	 2763	 3629	 3632	 3635	 3641	 3642
			 3679
INIT    000000R    002	  994#
INIT1   000030R    002	 1010#	 4076	 4083
IOBA1 = 020140        	  120#	 1618	 1773	 1834	 2774	 3983
IOBA2 = 020160        	  121#	 1619	 3988
IODAT1= 020040        	  116#
IODAT2= 020060        	  117#
JUMP  = 100000        	  234#	 1002	 1003	 1014	 1023	 1053	 1056	 1088	 1094	 1098	 1118	 1144	 1151
			 1152	 1158	 1160	 1165	 1182	 1183	 1187	 1189	 1193	 1215	 1216	 1219	 1222
			 1252	 1253	 1254	 1255	 1264	 1266	 1298	 1308	 1312	 1326	 1329	 1346	 1350
			 1353	 1358	 1365	 1366	 1381	 1385	 1413	 1417	 1421	 1461	 1495	 1498	 1511
			 1517	 1521	 1526	 1529	 1536	 1543	 1549	 1553	 1571	 1587	 1626	 1630	 1637
			 1643	 1655	 1675	 1677	 1689	 1718	 1719	 1726	 1737	 1738	 1740	 1756	 1761
			 1765	 1766	 1771	 1772	 1779	 1786	 1788	 1793	 1798	 1802	 1803	 1811	 1827
			 1842	 1843	 1851	 1853	 1854	 1860	 1869	 1871	 1876	 1880	 1914	 1920	 1950
			 1974	 1998	 2035	 2040	 2062	 2121	 2125	 2129	 2133	 2141	 2178	 2225	 2255
			 2284	 2316	 2320	 2328	 2341	 2368	 2399	 2400	 2406	 2411	 2435	 2437	 2441
			 2449	 2453	 2478	 2501	 2502	 2521	 2522	 2546	 2577	 2581	 2602	 2610	 2611
			 2639	 2650	 2655	 2662	 2670	 2671	 2679	 2682	 2685	 2711	 2717	 2727	 2731
			 2759	 2764	 2766	 2768	 2780	 2788	 2789	 2792	 2793	 2813	 2819	 2848	 2858
			 2872	 2883	 2914	 2917	 2919	 2948	 2954	 2962	 2965	 2970	 2976	 2979	 2991
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 79-5
KDPMCX.MAC    30-DEC-82 03:47		CROSS REFERENCE TABLE -- USER SYMBOLS

			 2992	 2999	 3024	 3035	 3046	 3052	 3087	 3115	 3120	 3127	 3135	 3240	 3241
			 3278	 3305	 3413	 3415	 3456	 3458	 3467	 3470	 3474	 3480	 3488	 3526	 3531
			 3563	 3570	 3627	 3630	 3640	 3661	 3666	 3676	 3684	 3689	 3692	 3703	 3727
			 3729	 3736	 3745	 3753	 3767	 3816	 3834	 3837	 3838	 3867	 3890	 3926	 3928
			 3933	 3968	 3990	 3991	 4011	 4012	 4044	 4052	 4073	 4076	 4083	 4134	 4142
			 4143	 4147	 4181	 4182	 4187	 4206	 4207
KILCOM  002042R    002	 2650	 2658#
KILLAL  002012R    002	 1643	 2633#
KILLC1  002056R    002	 2664#
KILLRC  002032R    002	 2639	 2654#
KILLXM  002020R    002	 2643#
LDMAPG= 004000        	   76#	 1017	 1026	 1055	 1234	 1297	 1313	 1319	 1908	 3403	 3524	 3812	 4075
			 4078
LDMAR = 010000        	   77#	 1020	 1027	 1054	 1116	 1117	 1138	 1155	 1231	 1236	 1242	 1296	 1317
			 1320	 1582	 1652	 1659	 1688	 1754	 1758	 1907	 2110	 2173	 2209	 2217	 2334
			 2476	 2589	 2645	 2666	 2730	 2777	 2816	 2870	 2945	 3083	 3113	 3211	 3224
			 3228	 3394	 3402	 3404	 3453	 3464	 3485	 3523	 3530	 3583	 3587	 3616	 3923
			 4034	 4071	 4081
LINENM= 120060        	   91#	 1229
LSILO   001446R    002	 2031#
MAIN  = 120020        	   89#
MARH  = 120320        	  101#
MARL  = 120300        	  100#
MAXDEV= 000020        	  870	  974#	 1008	 1310
MEMI  = 054000        	   80#	 1122	 1126	 1127	 1131	 1132	 1134	 1139	 1232	 1240	 1241	 1318	 1322
			 1336	 1339	 1450	 1820	 1909	 2592	 2593	 2594	 2595	 2596	 3212	 3213	 3225
			 3229	 3230	 3395	 3396	 3454	 3584	 3585	 3586	 3617	 3618	 3621	 3858	 3859
			 4035	 4036
MEMX  = 040000        	   47#	   80	 1056	 1117	 1140	 1150	 1234	 1319	 1325	 1344	 1454	 1513	 1534
			 1561	 1653	 1686	 1755	 1759	 1801	 1808	 1859	 1920	 2036	 2038	 2115	 2327
			 2543	 2725	 2778	 2817	 2946	 2969	 2985	 2997	 3042	 3045	 3114	 3131	 3217
			 3226	 3238	 3397	 3404	 3455	 3487	 3525	 3651	 3699	 3828	 3865	 3924	 3931
			 4177	 4179	 4183
MOVE  = 000000        	  373#	  994	  995	  996	  997	  998	  999	 1000	 1001	 1008	 1009	 1011	 1012
			 1015	 1016	 1017	 1020	 1021	 1022	 1026	 1027	 1028	 1029	 1030	 1051	 1054
			 1055	 1087	 1093	 1095	 1096	 1097	 1115	 1116	 1117	 1122	 1126	 1127	 1131
			 1132	 1134	 1138	 1139	 1140	 1141	 1142	 1145	 1146	 1153	 1155	 1157	 1159
			 1162	 1163	 1164	 1181	 1185	 1186	 1188	 1191	 1192	 1214	 1218	 1221	 1223
			 1227	 1228	 1229	 1230	 1231	 1232	 1234	 1236	 1238	 1239	 1240	 1241	 1242
			 1249	 1261	 1262	 1263	 1287	 1291	 1294	 1295	 1296	 1297	 1307	 1309	 1310
			 1313	 1315	 1316	 1317	 1318	 1319	 1320	 1322	 1325	 1327	 1335	 1336	 1339
			 1341	 1343	 1344	 1345	 1347	 1349	 1351	 1352	 1357	 1364	 1371	 1373	 1377
			 1379	 1380	 1382	 1383	 1384	 1447	 1448	 1449	 1450	 1451	 1452	 1453	 1454
			 1459	 1460	 1461	 1494	 1496	 1497	 1500	 1501	 1502	 1506	 1507	 1509	 1512
			 1513	 1514	 1515	 1516	 1520	 1524	 1525	 1527	 1528	 1532	 1534	 1535	 1537
			 1538	 1542	 1543	 1547	 1548	 1552	 1559	 1560	 1561	 1564	 1569	 1570	 1572
			 1575	 1576	 1577	 1580	 1581	 1582	 1583	 1587	 1618	 1619	 1620	 1621	 1624
			 1625	 1629	 1632	 1634	 1635	 1636	 1638	 1642	 1651	 1652	 1653	 1654	 1657
			 1659	 1662	 1663	 1664	 1665	 1666	 1667	 1668	 1669	 1670	 1671	 1674	 1677
			 1684	 1685	 1686	 1687	 1688	 1716	 1717	 1720	 1721	 1722	 1724	 1725	 1727
			 1728	 1729	 1739	 1748	 1749	 1750	 1751	 1752	 1753	 1754	 1755	 1757	 1758
			 1759	 1760	 1769	 1770	 1773	 1774	 1775	 1776	 1777	 1778	 1785	 1787	 1792
			 1801	 1803	 1808	 1810	 1819	 1820	 1821	 1823	 1824	 1825	 1826	 1828	 1830
			 1834	 1835	 1836	 1837	 1840	 1841	 1852	 1854	 1856	 1857	 1859	 1870	 1873
			 1874	 1875	 1878	 1879	 1906	 1907	 1908	 1909	 1913	 1948	 1971	 1973	 2002
			 2006	 2033	 2036	 2037	 2038	 2039	 2061	 2062	 2105	 2109	 2110	 2113	 2114
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 79-6
KDPMCX.MAC    30-DEC-82 03:47		CROSS REFERENCE TABLE -- USER SYMBOLS

			 2115	 2119	 2123	 2127	 2139	 2168	 2172	 2173	 2174	 2204	 2208	 2209	 2210
			 2211	 2215	 2216	 2217	 2218	 2219	 2251	 2280	 2310	 2314	 2315	 2333	 2334
			 2335	 2340	 2364	 2395	 2405	 2435	 2448	 2475	 2476	 2477	 2520	 2542	 2543
			 2546	 2573	 2576	 2581	 2588	 2589	 2592	 2593	 2594	 2595	 2596	 2599	 2600
			 2601	 2602	 2608	 2637	 2638	 2644	 2645	 2647	 2649	 2655	 2656	 2659	 2660
			 2661	 2662	 2665	 2666	 2667	 2668	 2669	 2709	 2710	 2712	 2713	 2714	 2715
			 2716	 2720	 2721	 2722	 2723	 2725	 2726	 2729	 2730	 2763	 2765	 2768	 2773
			 2774	 2775	 2776	 2777	 2778	 2779	 2790	 2791	 2814	 2815	 2816	 2817	 2818
			 2821	 2843	 2844	 2845	 2847	 2856	 2857	 2858	 2869	 2870	 2871	 2881	 2882
			 2883	 2908	 2910	 2911	 2912	 2913	 2915	 2916	 2918	 2944	 2945	 2946	 2947
			 2952	 2953	 2954	 2962	 2969	 2979	 2980	 2982	 2983	 2985	 2986	 2988	 2989
			 2990	 2997	 3014	 3016	 3021	 3035	 3039	 3041	 3042	 3045	 3051	 3063	 3065
			 3082	 3083	 3087	 3112	 3113	 3114	 3127	 3128	 3130	 3131	 3132	 3133	 3134
			 3160	 3161	 3165	 3169	 3171	 3172	 3173	 3211	 3212	 3213	 3214	 3215	 3216
			 3217	 3218	 3219	 3220	 3223	 3224	 3225	 3226	 3227	 3228	 3229	 3230	 3231
			 3236	 3237	 3238	 3239	 3268	 3269	 3273	 3274	 3277	 3297	 3298	 3299	 3300
			 3303	 3304	 3327	 3328	 3332	 3353	 3356	 3360	 3361	 3389	 3390	 3394	 3395
			 3396	 3397	 3402	 3403	 3404	 3408	 3409	 3410	 3411	 3412	 3414	 3416	 3417
			 3419	 3420	 3421	 3422	 3423	 3424	 3453	 3454	 3455	 3464	 3465	 3468	 3469
			 3473	 3479	 3485	 3486	 3487	 3522	 3523	 3524	 3525	 3530	 3531	 3562	 3567
			 3568	 3578	 3579	 3582	 3583	 3584	 3585	 3586	 3587	 3588	 3589	 3590	 3616
			 3617	 3618	 3619	 3620	 3621	 3626	 3628	 3629	 3630	 3631	 3632	 3634	 3635
			 3636	 3637	 3640	 3641	 3642	 3647	 3648	 3649	 3650	 3651	 3652	 3653	 3654
			 3657	 3658	 3665	 3669	 3670	 3671	 3672	 3673	 3674	 3675	 3679	 3680	 3682
			 3683	 3685	 3686	 3687	 3688	 3689	 3698	 3699	 3700	 3702	 3728	 3735	 3744
			 3752	 3760	 3766	 3767	 3785	 3786	 3812	 3813	 3814	 3815	 3816	 3821	 3822
			 3823	 3824	 3825	 3828	 3832	 3833	 3835	 3836	 3858	 3859	 3860	 3861	 3862
			 3863	 3864	 3865	 3866	 3889	 3915	 3923	 3924	 3925	 3931	 3932	 3967	 3973
			 3978	 3983	 3984	 3988	 3989	 3994	 3995	 3996	 3997	 3998	 4002	 4003	 4004
			 4005	 4006	 4010	 4033	 4034	 4035	 4036	 4037	 4038	 4039	 4040	 4041	 4042
			 4043	 4070	 4071	 4075	 4078	 4080	 4081	 4121	 4129	 4130	 4131	 4132	 4133
			 4135	 4136	 4137	 4141	 4145	 4146	 4176	 4177	 4179	 4180	 4183	 4185	 4186
			 4204	 4205	 4206
MSGIN   001736R    002	 2411	 2501	 2570#
MSGIN1  002004R    002	 2581	 2606	 2607#
NMSENT= 000035        	  867#	  868
NPR   = 120200        	   96#	 1000	 1345	 1380	 1516	 1636	 1725	 1826	 1841	 2520	 2990	 3134	 3626
			 3675	 3836	 4002	 4010	 4133	 4141
NPRWP1  001714R    002	 2518	 2519#	 2521	 3087
NXBEXT  003334R    002	 3684	 3692#
NXBUF   003064R    002	 3389	 3518#
NXDP1 = 001066R    002	 1679#	 3531
NXDSCP  003150R    002	 1677	 3613#
NXDSC1  003230R    002	 2602	 3646#
NXLST   003110R    002	 3526	 3557#
NXMERR  003756R    002	 1264	 1308	 4203#
NXRBUF  003336R    002	 3661	 3697#
NXTTBL  003646R    002	 1023	 4069#
OBA1  = 002006        	  165#	 1240	 1450	 1727	 1775	 1836	 2775	 2982	 3130	 3212	 3858	 3984	 4035
OBA2  = 002007        	  166#	 1241	 1454	 1728	 3213	 3859	 3989	 4036
OBR   = 001011        	  142#	 1164	 1239	 1291	 1752	 3220	 3866	 3998	 4041	 4205
OBSEL0= 001000        	  148#
OBSEL1= 001001        	  149#
OBSEL2= 001002        	  150#
OBSEL3= 001003        	  151#
OBSEL4= 001004        	  152#
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 79-7
KDPMCX.MAC    30-DEC-82 03:47		CROSS REFERENCE TABLE -- USER SYMBOLS

OBSEL5= 001005        	  153#
OBSEL6= 001006        	  154#
OBSEL7= 001007        	  155#
OCON  = 120040        	   90#	 1087	 1093	 1214	 1221	 1249	 1624	 2637
OIDAT1= 002000        	  159#
OIDAT2= 002001        	  160#
OINCON= 001000        	  133#	  994
OLINEN= 001003        	  136#	 1122
OMAIN = 001001        	  134#
OMARH = 001015        	  146#
OMARL = 001014        	  145#
ONPR  = 001010        	  141#	 1343	 1379	 1515	 1621	 1724	 1824	 1840	 2986	 3065	 3133	 3621	 3674
			 3825	 4006	 4043	 4137
OOCON = 001002        	  135#	  995	 1096	 1134	 1186	 1262
OPCHGH= 001013        	  144#
OPCLOW= 001012        	  143#
OPORT1= 001004        	  137#	 1126
OPORT2= 001005        	  138#	 1127
OPORT3= 001006        	  139#	 1131
OPORT4= 001007        	  140#	 1132
OUTDA1= 002002        	  161#	 1506	 1524	 1534	 1564	 1778	 1828	 1859	 2713	 2721	 2845	 2911	 2985
			 3042	 3131	 3229	 3688	 3815	 3823
OUTDA2= 002003        	  162#	 1460	 1513	 1542	 1577	 1825	 1857	 1879	 2714	 2723	 2857	 2916	 3041
			 3231
OVRUN   003372R    002	 3729	 3758#
OXREG0= 002010        	  167#
OXREG1= 002011        	  168#
OXREG2= 002012        	  169#
OXREG3= 002013        	  170#
OXREG4= 002014        	  171#
OXREG5= 002015        	  172#
OXREG6= 002016        	  173#
OXREG7= 002017        	  174#
PCHGH = 120260        	   99#
PCLOW = 120240        	   98#
PORT1 = 120100        	   92#	 1500	 1501	 1662
PORT2 = 120120        	   93#	 1663
PORT3 = 120140        	   94#	 1447	 1524	 1580
PORT4 = 120160        	   95#	 1451	 1494	 1507	 1520	 1547	 1570	 1642	 1664	 2668
P.LADR= 001457        	  870#	 1017	 1227	 1313
P.MSTA= 002000        	  861#	  862
P.NPR = 001517        	  868#	  870	 1029	 1141	 3473
P.PLST= 001775        	  865#	  868	  869
P.PORT= 001775        	  864#	  865	 1026	 1027	 1054	 1055	 1155
P.SLIN= 001776        	  863#	  864	 1138	 3402	 3403	 3453	 3464
P.SLOT= 001777        	  862#	  863	 1116
P0    = 000000        	  216#	 2040	 4012
P1    = 004000        	  217#	 4182	 4187
P2    = 010000        	  218#	 3570	 3692	 3703	 3838	 3867	 3928	 3933
P3    = 014000        	  219#	 3470	 3474	 3488	 4143
QPDATA  002730R    002	 1413	 3241	 3388#
QPDAT1  002744R    002	 3305	 3401#
RBDONE  001464R    002	 1998	 2060#
RB1     001426R    002	 1572	 1947#	 2061	 3835
RB2     001432R    002	 1948	 1970#
RB3     001440R    002	 1971	 1994#
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 79-8
KDPMCX.MAC    30-DEC-82 03:47		CROSS REFERENCE TABLE -- USER SYMBOLS

RB3P0   000526R    002	 1421#	 2002
RCVDON  001410R    002	 1365	 1905#
RCVEXT  002506R    002	 3024	 3076#
RDATA1  001666R    002	 2436#	 2685
RDCRC1  001700R    002	 2441	 2471#
RDCRC2  001710R    002	 2477	 2497#
RDDATA  001660R    002	 2395	 2431#
RDH1    001474R    002	 1569	 2103#	 2573	 3832
RDH2    001540R    002	 2105	 2164#
RDH3    001552R    002	 2168	 2200#
RDH4    001600R    002	 2204	 2247#
RDH5    001604R    002	 2251	 2276#
RDH6    001610R    002	 2280	 2306#
RDH6A   001634R    002	 2141	 2225	 2340#
RDICLR  000250R    002	 1188	 1213#
RDICL1  000262R    002	 1191	 1220#
RDOCLR  000102R    002	 1086#	 1159
RDOCL1  000106R    002	 1092#	 1162
RDOSET  000122R    002	 1028	 1114#	 1183	 1223
RDOST1  000202R    002	 1088	 1156#
RDOST2  000212R    002	 1158	 1162#
RDOST3  000216R    002	 1164#	 1193
RERROR  003374R    002	 3736	 3745	 3753	 3764#
RERRP2  002076R    002	 2682#	 3767
RESYNC  003412R    002	 2655	 2954	 3809#
RHCRC1  001640R    002	 2310	 2360#
RHCRC2  001644R    002	 2364	 2391#
RP    = 004000        	 1920	 1928#
RQICL2  000334R    002	 1261#	 1461	 1587	 1675	 2671
RQICR2  002072R    002	 1677	 2671#
RQISET  000222R    002	 1097	 1115	 1181#
RQIST1  000242R    002	 1187	 1191#	 1219
RSNCRT  003406R    002	 2133	 2610	 3784#
SELA  = 060200        	  186#	 1021	 1022	 1186	 1236	 1242	 1320	 1364	 1384	 1659	 1716	 1769	 1874
			 1908	 1913	 2033	 2037	 2039	 2040	 2174	 2314	 2405	 2448	 2576	 2709	 2765
			 2790	 2912	 3021	 3039	 3045	 3211	 3394	 3408	 3409	 3410	 3411	 3412	 3424
			 3470	 3474	 3479	 3485	 3488	 3524	 3530	 3570	 3587	 3588	 3589	 3590	 3616
			 3636	 3637	 3647	 3648	 3649	 3650	 3670	 3682	 3692	 3703	 3812	 3838	 3867
			 3928	 3933	 4012	 4075	 4143	 4182	 4187
SELB  = 000220        	  187#	  994	  995	  996	  997	  998	 1009	 1012	 1056	 1096	 1117	 1122	 1126
			 1127	 1131	 1132	 1134	 1139	 1140	 1164	 1228	 1232	 1234	 1239	 1240	 1241
			 1262	 1295	 1296	 1297	 1315	 1318	 1319	 1322	 1325	 1335	 1336	 1339	 1343
			 1344	 1379	 1450	 1454	 1460	 1461	 1506	 1513	 1515	 1534	 1543	 1560	 1564
			 1587	 1621	 1635	 1653	 1671	 1677	 1686	 1724	 1755	 1759	 1778	 1801	 1803
			 1808	 1819	 1820	 1840	 1854	 1857	 1859	 1879	 1909	 1920	 2006	 2036	 2038
			 2062	 2115	 2435	 2546	 2581	 2592	 2593	 2594	 2595	 2596	 2601	 2602	 2655
			 2659	 2661	 2662	 2713	 2721	 2723	 2725	 2768	 2778	 2779	 2817	 2857	 2858
			 2882	 2883	 2911	 2916	 2946	 2953	 2954	 2962	 2969	 2979	 2982	 2985	 2986
			 2989	 2997	 3035	 3041	 3042	 3065	 3087	 3114	 3127	 3130	 3131	 3133	 3161
			 3169	 3173	 3212	 3213	 3217	 3225	 3226	 3231	 3237	 3238	 3269	 3274	 3297
			 3299	 3300	 3304	 3328	 3353	 3361	 3390	 3395	 3396	 3397	 3404	 3417	 3454
			 3455	 3525	 3531	 3584	 3585	 3586	 3617	 3618	 3620	 3630	 3640	 3651	 3669
			 3671	 3688	 3689	 3699	 3766	 3767	 3786	 3815	 3816	 3823	 3825	 3828	 3858
			 3859	 3864	 3924	 3931	 4006	 4035	 4036	 4043	 4081	 4176	 4179	 4183	 4206
SENTRY= 000006        	  866#	  868	  869	 1145	 3468
SETRBA  003462R    002	 2979	 3035	 3127	 3856#
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 79-9
KDPMCX.MAC    30-DEC-82 03:47		CROSS REFERENCE TABLE -- USER SYMBOLS

SHFTBR= 001400        	   55#	 1357	 1548	 1625	 1654	 1667	 1668	 1669	 1670	 1717	 1760	 1770	 1875
			 2315	 2638	 2669	 2710	 2779	 2791	 2818	 2913	 2947	 3239	 3683	 3833
SILOED= 001767        	  869#	 1142	 3465
SOH   = 000201        	  943#	 2119
SPBRX = 003400        	   59#	 1000	 1051	 1157	 1263	 1307	 1347	 1352	 1496	 1520	 1570	 1653	 1755
			 1777	 1801	 1808	 1823	 2778	 2946	 2969	 3114	 3298	 3422	 3525	 3687	 3814
			 3822
SPX   = 003000        	   58#	  996	  997	  998	 1009	 1012	 1015	 1139	 1140	 1185	 1228	 1229	 1232
			 1234	 1295	 1296	 1297	 1309	 1315	 1318	 1319	 1325	 1344	 1351	 1382	 1383
			 1447	 1451	 1461	 1543	 1560	 1575	 1587	 1635	 1638	 1664	 1677	 1686	 1748
			 1750	 1773	 1792	 1803	 1834	 1854	 1909	 2006	 2036	 2038	 2062	 2115	 2215
			 2435	 2542	 2546	 2581	 2592	 2593	 2594	 2595	 2596	 2601	 2602	 2655	 2659
			 2661	 2662	 2725	 2768	 2774	 2821	 2858	 2882	 2883	 2953	 2954	 2962	 2979
			 2989	 3035	 3087	 3127	 3161	 3169	 3173	 3214	 3216	 3217	 3225	 3226	 3237
			 3269	 3274	 3297	 3299	 3300	 3304	 3328	 3353	 3361	 3390	 3395	 3396	 3397
			 3417	 3419	 3420	 3421	 3454	 3486	 3531	 3584	 3585	 3586	 3620	 3628	 3629
			 3630	 3631	 3632	 3640	 3641	 3651	 3673	 3689	 3699	 3700	 3766	 3767	 3786
			 3816	 3860	 3862	 3864	 3924	 3931	 3967	 3978	 3983	 3988	 3994	 3996	 4002
			 4037	 4039	 4071	 4078	 4081	 4129	 4131	 4133	 4136	 4146	 4176	 4179	 4183
			 4206
SP.CHR= 000007        	  876#	 1382	 2037	 2038	 2120	 2124	 2128	 2174	 2211	 2219	 2327	 3021	 3039
SP.CS0= 000017        	  884#	 1352	 1364	 1384	 1638	 1777	 3682	 3687	 3814	 3822
SP.LN = 000012        	  879#	 1229	 1230	 1295	 1309	 1311	 1316	 3408
SP.RM0= 000013        	  880#	  997	 1021	 1232	 1236	 1242	 1296	 1318	 1320	 1582	 1634	 1754	 1758
			 1907	 2110	 2173	 2209	 2217	 2334	 2476	 2589	 2600	 2645	 2730	 2777	 2816
			 2870	 2945	 3083	 3113	 3172	 3360	 3658	 3923	 4034	 4071	 4072	 4081
SP.RM1= 000014        	  881#	  996	 1022	 1234	 1297	 1319	 1908	 3524	 3812	 4075	 4078
SP.RST= 000010        	  877#	 1383	 1913	 3728
SP.SB1= 000015        	  882#	 1677	 2062	 2581	 2602	 2655	 2662	 2768	 2883	 2953	 2989	 3570	 3692
			 3703	 3767	 3786	 3838
SP.STS= 000011        	  878#	 1344	 1349	 1769	 1874	 1909	 2033	 2114	 2115	 2215	 2314	 2340	 2405
			 2448	 2576	 2608	 2709	 2790	 2844	 2912
SP.SUB= 000016        	  883#	 1461	 1543	 1587	 1803	 1854	 2006	 2040	 2435	 2546	 2858	 2954	 2962
			 2979	 3035	 3087	 3127	 3237	 3390	 3470	 3474	 3488	 3531	 3630	 3640	 3689
			 3816	 3867	 3928	 3933	 4012	 4143	 4182	 4187	 4206
SP0   = 000000        	  197#	 1000	 1001	 1012	 1020	 1051	 1140	 1143	 1146	 1157	 1185	 1263	 1307
			 1315	 1317	 1325	 1327	 1351	 1447	 1449	 1451	 1453	 1496	 1497	 1520	 1560
			 1561	 1570	 1575	 1664	 1666	 1748	 1750	 1755	 1773	 1792	 1801	 1823	 1825
			 1834	 1873	 2036	 2039	 2596	 2716	 2765	 2774	 2778	 2821	 2908	 3214	 3216
			 3225	 3298	 3395	 3409	 3454	 3457	 3466	 3469	 3479	 3485	 3486	 3487	 3525
			 3562	 3568	 3579	 3584	 3588	 3620	 3641	 3654	 3673	 3699	 3700	 3702	 3860
			 3862	 3983	 3988	 3994	 3996	 4002	 4004	 4037	 4039	 4129	 4131	 4133	 4136
			 4146	 4176	 4177	 4179	 4180	 4183	 4186
SP1   = 000001        	  198#	 1139	 1150	 1347	 1716	 1808	 1810	 2725	 2726	 3217	 3219	 3226	 3230
			 3299	 3396	 3410	 3585	 3589	 3864	 3865	 3924	 3925	 3931	 3932	 3967	 3978
			 4005
SP10  = 000010        	  205#	  877
SP11  = 000011        	  206#	  878
SP12  = 000012        	  207#	  879
SP13  = 000013        	  208#	  880
SP14  = 000014        	  209#	  881
SP15  = 000015        	  210#	  882
SP16  = 000016        	  211#	  883
SP17  = 000017        	  212#	  884
SP2   = 000002        	  199#	 2541	 2542	 2543	 2592	 2659	 2946	 2969	 2980	 3016	 3045	 3114	 3128
			 3169	 3274	 3304	 3353	 3412	 3424	 3586	 3590	 3631	 3647	 3651	 3653
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 79-10
KDPMCX.MAC    30-DEC-82 03:47		CROSS REFERENCE TABLE -- USER SYMBOLS

SP3   = 000003        	  200#	 2593	 2661	 2882	 3161	 3269	 3297	 3328	 3411	 3417	 3423	 3632	 3648
			 3766
SP4   = 000004        	  201#	  998	 1011	 1015	 2594	 3300	 3397	 3419	 3420	 3421	 3422	 3628	 3636
			 3649	 3665
SP5   = 000005        	  202#	 1009	 1013	 1228	 1231	 1653	 1674	 1685	 1686	 2595	 3629	 3637	 3650
			 3670
SP6   = 000006        	  203#	 1635	 1652	 1659	 1688	 2601	 2666	 3173	 3211	 3224	 3228	 3361	 3394
			 3523	 3530	 3583	 3587	 3616	 3660
SP7   = 000007        	  204#	  876
START   000000R    002	   37#	 1002	 1003	 1014	 1023	 1028	 1053	 1088	 1094	 1097	 1098	 1115	 1118
			 1144	 1151	 1152	 1158	 1159	 1160	 1162	 1165	 1182	 1183	 1187	 1188	 1189
			 1191	 1193	 1215	 1216	 1219	 1222	 1223	 1252	 1253	 1254	 1255	 1264	 1266
			 1298	 1308	 1312	 1326	 1329	 1346	 1350	 1353	 1358	 1365	 1366	 1381	 1385
			 1413	 1417	 1421	 1461	 1495	 1498	 1511	 1517	 1521	 1526	 1529	 1536	 1543
			 1549	 1553	 1569	 1571	 1572	 1587	 1626	 1630	 1637	 1643	 1655	 1675	 1677
			 1689	 1718	 1719	 1726	 1737	 1738	 1740	 1756	 1761	 1765	 1766	 1771	 1772
			 1779	 1786	 1788	 1793	 1798	 1802	 1803	 1811	 1827	 1842	 1843	 1851	 1853
			 1854	 1860	 1869	 1871	 1876	 1880	 1914	 1928	 1948	 1950	 1971	 1973	 1974
			 1998	 2002	 2035	 2061	 2062	 2105	 2121	 2125	 2129	 2133	 2141	 2168	 2178
			 2204	 2225	 2251	 2255	 2280	 2284	 2310	 2316	 2320	 2328	 2341	 2364	 2368
			 2369	 2395	 2399	 2400	 2406	 2411	 2435	 2437	 2441	 2449	 2453	 2477	 2478
			 2501	 2502	 2518	 2521	 2522	 2546	 2573	 2577	 2581	 2602	 2606	 2610	 2611
			 2639	 2650	 2655	 2662	 2670	 2671	 2675	 2679	 2682	 2685	 2687	 2711	 2717
			 2727	 2731	 2756	 2759	 2764	 2766	 2768	 2780	 2788	 2789	 2792	 2793	 2813
			 2819	 2848	 2858	 2872	 2883	 2914	 2917	 2919	 2948	 2952	 2954	 2962	 2965
			 2970	 2976	 2979	 2988	 2991	 2992	 2999	 3024	 3035	 3046	 3052	 3087	 3115
			 3120	 3127	 3135	 3236	 3240	 3241	 3278	 3305	 3389	 3413	 3415	 3456	 3458
			 3467	 3480	 3526	 3531	 3563	 3627	 3630	 3640	 3661	 3666	 3676	 3684	 3689
			 3727	 3729	 3736	 3745	 3753	 3767	 3785	 3816	 3832	 3834	 3835	 3837	 3890
			 3926	 3968	 3990	 3991	 4011	 4044	 4051	 4052	 4073	 4076	 4083	 4134	 4142
			 4147	 4181	 4206	 4207
STFSLO  003012R    002	 3449#
STORE   002342R    002	 1421	 2035	 2125	 2178	 2255	 2284	 2320	 2328	 2341	 2453	 2941#	 2988
STREVN  002444R    002	 3005#
STRODD  002456R    002	 2999	 3030#
SUB   = 000340        	  192#	 3229
SUBC  = 000040        	  180#	 3230
SUBOC = 000360        	  193#	 1013	 1143	 1150	 1311	 2120	 2124	 2128	 2327	 3457	 3466	 3660
SYNC  = 000226        	  946#	 1532	 2720
SYNCNT= 000007        	  948#	 3680
TIMER   000346R    002	 1053	 1287#
TIMRP1  001642R    002	 2368#	 2369
TIMRP2  002074R    002	 2062	 2679#	 2952	 3785
TIMRP3  003644R    002	 2546	 4051	 4052#
TIMRTN  000364R    002	 1304#	 1973	 2368	 2406	 2449	 2478	 2522	 2611	 2679	 4052
TIMRT1  000416R    002	 1298	 1321#
TIMRT3  000470R    002	 1362#	 1719	 1738	 1740	 1766	 1772	 1788	 1798	 1843	 2789	 2793	 2872
TWOA  = 060120        	  183#	 1011	 1230	 1316	 1575	 1674	 2608	 3419	 3420	 3421	 3422	 3562	 3728
TWOAC = 060140        	  184#
UBBR  = 120220        	   97#	 1051	 1263	 1307	 1748	 3214	 3860	 3994	 4037
WAIT    003606R    002	 4009#
WRMEM = 002400        	   57#	  999	 1016	 1021	 1022	 1028	 1029	 1030	 1097	 1115	 1141	 1146	 1153
			 1159	 1162	 1188	 1191	 1223	 1327	 1335	 1449	 1453	 1497	 1500	 1501	 1509
			 1512	 1525	 1527	 1532	 1535	 1537	 1561	 1569	 1572	 1580	 1583	 1657	 1662
			 1663	 1671	 1685	 1810	 1830	 1873	 1948	 1971	 2037	 2039	 2061	 2105	 2114
			 2168	 2174	 2204	 2211	 2251	 2280	 2310	 2340	 2364	 2395	 2477	 2543	 2573
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 79-11
KDPMCX.MAC    30-DEC-82 03:47		CROSS REFERENCE TABLE -- USER SYMBOLS

			 2647	 2667	 2716	 2726	 2814	 2871	 2908	 3016	 3021	 3408	 3409	 3410	 3411
			 3414	 3423	 3424	 3469	 3473	 3479	 3487	 3568	 3579	 3588	 3589	 3590	 3634
			 3635	 3636	 3637	 3642	 3647	 3648	 3649	 3650	 3654	 3679	 3680	 3685	 3702
			 3832	 3835	 3925	 3932	 4177	 4180	 4186
WROUT = 002000        	   56#
WROUTX= 001000        	   54#
WRTEBR= 000400        	   53#	 1001	 1008	 1011	 1017	 1087	 1093	 1095	 1142	 1145	 1163	 1181	 1192
			 1214	 1218	 1221	 1227	 1230	 1238	 1249	 1261	 1287	 1294	 1310	 1313	 1316
			 1322	 1341	 1345	 1349	 1364	 1371	 1377	 1380	 1384	 1448	 1452	 1459	 1461
			 1494	 1502	 1507	 1514	 1516	 1528	 1538	 1543	 1547	 1552	 1559	 1576	 1581
			 1587	 1620	 1624	 1629	 1632	 1634	 1636	 1642	 1651	 1665	 1666	 1674	 1677
			 1684	 1687	 1716	 1720	 1722	 1725	 1729	 1739	 1749	 1751	 1753	 1757	 1759
			 1769	 1774	 1776	 1785	 1787	 1803	 1821	 1826	 1835	 1837	 1841	 1852	 1854
			 1856	 1870	 1874	 1878	 1906	 1913	 1973	 2002	 2033	 2062	 2109	 2113	 2119
			 2123	 2127	 2139	 2172	 2208	 2210	 2216	 2218	 2219	 2314	 2333	 2335	 2405
			 2435	 2448	 2475	 2520	 2546	 2576	 2581	 2588	 2599	 2600	 2602	 2608	 2637
			 2644	 2649	 2655	 2656	 2660	 2662	 2665	 2668	 2709	 2712	 2715	 2720	 2722
			 2729	 2763	 2765	 2768	 2773	 2776	 2790	 2815	 2817	 2843	 2844	 2847	 2856
			 2858	 2869	 2881	 2883	 2910	 2912	 2915	 2918	 2944	 2952	 2954	 2962	 2979
			 2980	 2983	 2988	 2990	 2997	 3014	 3035	 3039	 3045	 3051	 3063	 3082	 3087
			 3112	 3127	 3128	 3132	 3134	 3160	 3165	 3171	 3172	 3215	 3218	 3219	 3223
			 3227	 3230	 3236	 3238	 3268	 3273	 3277	 3303	 3327	 3332	 3356	 3360	 3389
			 3412	 3416	 3455	 3465	 3468	 3522	 3531	 3562	 3567	 3578	 3582	 3619	 3626
			 3630	 3640	 3652	 3653	 3657	 3658	 3665	 3670	 3672	 3675	 3682	 3686	 3689
			 3698	 3728	 3735	 3744	 3752	 3760	 3767	 3785	 3813	 3816	 3821	 3824	 3828
			 3836	 3861	 3863	 3865	 3889	 3915	 3973	 3995	 3997	 4003	 4004	 4005	 4010
			 4033	 4038	 4040	 4042	 4070	 4080	 4121	 4135	 4141	 4145	 4185	 4204	 4206
WRTRT   001320R    002	 1833#	 1860	 1880	 2717	 2727	 2917
XMTABT  002224R    002	 1756	 2812#
XMTAB1  002314R    002	 2813	 2907#
XMTBCZ  002152R    002	 2762#
XMTBC0  002162R    002	 1417	 2767#
XMTBC1  002170R    002	 2772#	 2883
XMTCNT  002150R    002	 1803	 2756	 2759#
XMTDN1  001146R    002	 1737	 1746#
XMTDN2  001266R    002	 1808#	 2759
XMTDN3  001234R    002	 1783#	 2819
XMTDN4  001250R    002	 1798#	 2780
XMTDN6  001330R    002	 1839#	 2848
XMTDON  001104R    002	 1358	 1715#
XMTEM0  000524R    002	 1417#	 2858
XMTSND  002244R    002	 1793	 2842#
XMTSN0  002252R    002	 1779	 2846#
XMTSYN  002102R    002	 1869	 2708#
XMTUNR  002300R    002	 2764	 2880#
XREG0 = 020200        	  122#
XREG1 = 020220        	  123#
XREG2 = 020240        	  124#
XREG3 = 020260        	  125#
XREG4 = 020300        	  126#
XREG5 = 020320        	  127#
XREG6 = 020340        	  128#
XREG7 = 020360        	  129#
ZCOND = 001400        	   67#	 1014	 1118	 1144	 1151	 1312	 1326	 2121	 2125	 2129	 2328	 3456	 3458
			 3467	 3661	 3926
$KDPMC  000000RG   002	  992#	 4212
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 79-12
KDPMCX.MAC    30-DEC-82 03:47		CROSS REFERENCE TABLE -- USER SYMBOLS

$KDPML= 000040 G      	 4212#
.     = 003774R    002	 1543	 1679	 1854	 1928	 2602	 2655	 2662	 2675	 2687	 2768	 2962	 2979	 3035
			 3127	 3630	 3640	 3689	 3816	 4206	 4212
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 80
KDPMCX.MAC    30-DEC-82 03:47		CROSS REFERENCE TABLE -- MACRO NAMES

ALWAYS	  241#	 1003	 1023	 1098	 1152	 1160	 1165	 1183	 1189	 1193	 1216	 1254	 1266	 1298	 1366
	 1385	 1413	 1417	 1421	 1461	 1498	 1529	 1543	 1553	 1587	 1630	 1677	 1689	 1719	 1766
	 1772	 1779	 1793	 1803	 1843	 1853	 1854	 1860	 1880	 1950	 1974	 2062	 2133	 2141	 2178
	 2225	 2255	 2284	 2320	 2341	 2368	 2400	 2411	 2435	 2441	 2453	 2478	 2502	 2522	 2546
	 2581	 2602	 2611	 2650	 2655	 2662	 2671	 2679	 2682	 2685	 2717	 2731	 2768	 2789	 2793
	 2848	 2858	 2872	 2883	 2917	 2919	 2954	 2962	 2976	 2979	 2992	 3024	 3035	 3052	 3087
	 3120	 3127	 3241	 3278	 3305	 3415	 3480	 3531	 3630	 3640	 3689	 3736	 3745	 3753	 3767
	 3816	 3890	 3968	 3991	 4044	 4052	 4076	 4083	 4147	 4206	 4207
BRADDR	  580#	 1461	 1587	 1677	 1803	 1973	 2002	 2062	 2435	 2546	 2581	 2858	 2883	 2952	 2954
	 2988	 3087	 3236	 3389	 3531	 3767	 3785
BRADRE	  588#
BREXT	  237#
BROTAT	  630#	 2779
BRSHFT	  419#	 1357	 1548	 1625	 1654	 1667	 1668	 1669	 1670	 1717	 1760	 1770	 1875	 2315	 2638
	 2669	 2710	 2791	 2818	 2913	 2947	 3239	 3683	 3833
BRWRTE	  405#	 1001	 1008	 1011	 1017	 1087	 1093	 1095	 1142	 1145	 1163	 1181	 1192	 1214	 1218
	 1221	 1227	 1230	 1238	 1249	 1261	 1287	 1294	 1310	 1313	 1316	 1322	 1341	 1345	 1349
	 1364	 1371	 1377	 1380	 1384	 1448	 1452	 1459	 1461	 1494	 1502	 1507	 1514	 1516	 1528
	 1538	 1543	 1547	 1552	 1559	 1576	 1581	 1620	 1624	 1629	 1632	 1634	 1636	 1642	 1651
	 1665	 1666	 1674	 1684	 1687	 1716	 1720	 1722	 1725	 1729	 1739	 1749	 1751	 1753	 1757
	 1759	 1769	 1774	 1776	 1785	 1787	 1803	 1821	 1826	 1835	 1837	 1841	 1852	 1854	 1856
	 1870	 1874	 1878	 1906	 1913	 2033	 2109	 2113	 2119	 2123	 2127	 2139	 2172	 2208	 2210
	 2216	 2218	 2219	 2314	 2333	 2335	 2405	 2448	 2475	 2520	 2546	 2576	 2588	 2599	 2600
	 2602	 2608	 2637	 2644	 2649	 2655	 2656	 2660	 2662	 2665	 2668	 2709	 2712	 2715	 2720
	 2722	 2729	 2763	 2765	 2768	 2773	 2776	 2790	 2815	 2817	 2843	 2844	 2847	 2856	 2869
	 2881	 2883	 2910	 2912	 2915	 2918	 2944	 2954	 2962	 2979	 2980	 2983	 2990	 2997	 3014
	 3035	 3039	 3045	 3051	 3063	 3082	 3087	 3112	 3127	 3128	 3132	 3134	 3160	 3165	 3171
	 3172	 3215	 3218	 3219	 3223	 3227	 3230	 3238	 3268	 3273	 3277	 3303	 3327	 3332	 3356
	 3360	 3412	 3416	 3455	 3465	 3468	 3522	 3531	 3562	 3567	 3578	 3582	 3619	 3626	 3630
	 3640	 3652	 3653	 3657	 3658	 3665	 3670	 3672	 3675	 3682	 3686	 3689	 3698	 3728	 3735
	 3744	 3752	 3760	 3767	 3813	 3816	 3821	 3824	 3828	 3836	 3861	 3863	 3865	 3889	 3915
	 3973	 3995	 3997	 4003	 4004	 4005	 4010	 4033	 4038	 4040	 4042	 4070	 4080	 4121	 4135
	 4141	 4145	 4185	 4204	 4206
BR0	  245#	 1187	 1219	 1253	 1255	 1264	 1308	 1346	 1381	 1495	 1517	 1637	 1726	 1765	 1802
	 1811	 1827	 1842	 2406	 2521	 2788	 2970	 2991	 2999	 3046	 3115	 3135	 3413	 3627	 3666
	 3676	 3837	 4011	 4142
BR1	  249#	 1252	 1350	 1358	 1526	 1626	 1740	 1788	 1998	 2316	 2639	 2766	 2813	 3684
BR4	  253#	 1053	 1158	 1215	 1222	 1536	 1549	 1643	 1655	 1718	 1738	 1756	 1761	 1771	 1786
	 1869	 1876	 2399	 2449	 2501	 2577	 2670	 2711	 2780	 2792	 2819	 2914	 2948	 3240	 3727
	 3834
BR7	  257#	 1002	 1088	 1094	 1182	 1353	 1365	 1511	 1521	 1571	 1675	 1737	 1798	 1871	 1914
	 2035	 2610	 2764	 3526	 3563	 3729
C	  265#	 1329	 1851	 2437	 2727	 2759	 2965	 3990	 4073	 4134	 4181
CALLEX	  671#
CALLSB	  642#	 1543	 1854	 2602	 2655	 2662	 2768	 2962	 2979	 3035	 3127	 3630	 3640	 3689	 3816
	 4206
CALLSR	  655#	 1461	 1587	 1677	 1803	 2062	 2435	 2546	 2581	 2858	 2883	 2954	 3087	 3531	 3767
CALREX	  695#
COMP	  616#	 1013	 1143	 1150	 1311	 2120	 2124	 2128	 2327	 3457	 3466	 3660
INCMA	  626#	 3011	 3927
JMPEXT	  620#
LDMA	  553#	 1020	 1027	 1054	 1116	 1117	 1138	 1155	 1231	 1236	 1242	 1317	 1320	 1582	 1652
	 1659	 1688	 1754	 1758	 1907	 2110	 2173	 2209	 2217	 2334	 2476	 2589	 2645	 2666	 2730
	 2777	 2816	 2870	 2945	 3083	 3113	 3211	 3224	 3228	 3394	 3402	 3404	 3453	 3464	 3485
	 3523	 3530	 3583	 3587	 3616	 3923	 4034
LDMAP	  562#	 1026	 1055	 1908	 3403	 3524	 3812	 4075
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 80-1
KDPMCX.MAC    30-DEC-82 03:47		CROSS REFERENCE TABLE -- MACRO NAMES

MEM	  441#	 1016	 1022	 1030	 1141	 1146	 1153	 1327	 1449	 1453	 1509	 1512	 1525	 1527	 1532
	 1535	 1537	 1561	 1583	 1657	 1671	 1685	 1830	 1873	 2039	 2114	 2174	 2211	 2340	 2543
	 2647	 2667	 2716	 2726	 2814	 2871	 2908	 3021	 3411	 3414	 3469	 3473	 3479	 3487	 3568
	 3579	 3590	 3654	 3685	 3702	 4186
MEMADE	  604#
MEMADR	  596#	 1028	 1097	 1115	 1159	 1162	 1188	 1191	 1223	 1569	 1572	 1948	 1971	 2061	 2105
	 2168	 2204	 2251	 2280	 2310	 2364	 2395	 2477	 2573	 3832	 3835
MEMINC	  544#	  999	 1021	 1029	 1335	 1497	 1500	 1501	 1580	 1662	 1663	 1810	 2037	 3016	 3408
	 3409	 3410	 3423	 3424	 3588	 3589	 3634	 3635	 3636	 3637	 3642	 3647	 3648	 3649	 3650
	 3679	 3680	 3925	 3932	 4177	 4180
NODST	  383#	 4072
OUT	  503#	  994	  995	 1096	 1122	 1126	 1127	 1131	 1132	 1134	 1164	 1186	 1239	 1262	 1291
	 1343	 1379	 1515	 1621	 1724	 1752	 1824	 1840	 2986	 3065	 3133	 3220	 3621	 3674	 3825
	 3866	 3998	 4006	 4041	 4043	 4137	 4205
OUTPUT	  520#	 1240	 1241	 1336	 1339	 1373	 1450	 1454	 1460	 1506	 1513	 1524	 1534	 1542	 1564
	 1577	 1618	 1619	 1721	 1727	 1728	 1775	 1778	 1819	 1820	 1825	 1828	 1836	 1857	 1859
	 1879	 2713	 2714	 2721	 2723	 2775	 2845	 2857	 2911	 2916	 2982	 2985	 3041	 3042	 3130
	 3131	 3212	 3213	 3229	 3231	 3617	 3618	 3669	 3671	 3688	 3815	 3823	 3858	 3859	 3984
	 3989	 4035	 4036	 4130	 4132
RSTATE	  634#	 1569	 1572	 1948	 1971	 2061	 2105	 2168	 2204	 2251	 2280	 2310	 2364	 2395	 2477
	 2573	 3832	 3835
RTNEX	  713#
RTNSUB	  663#	 2040	 3470	 3474	 3488	 3570	 3692	 3703	 3838	 3867	 3928	 3933	 4012	 4143	 4182
	 4187
SP	  462#	  996	  997	  998	 1009	 1012	 1015	 1139	 1140	 1185	 1228	 1229	 1232	 1234	 1295
	 1296	 1297	 1309	 1315	 1318	 1319	 1325	 1344	 1351	 1382	 1383	 1447	 1451	 1461	 1543
	 1560	 1575	 1587	 1635	 1638	 1664	 1677	 1686	 1748	 1750	 1773	 1792	 1803	 1834	 1854
	 1909	 2006	 2036	 2038	 2062	 2115	 2215	 2435	 2542	 2546	 2581	 2592	 2593	 2594	 2595
	 2596	 2601	 2602	 2655	 2659	 2661	 2662	 2725	 2768	 2774	 2821	 2858	 2882	 2883	 2953
	 2954	 2962	 2979	 2989	 3035	 3087	 3127	 3161	 3169	 3173	 3214	 3216	 3217	 3225	 3226
	 3237	 3269	 3274	 3297	 3299	 3300	 3304	 3328	 3353	 3361	 3390	 3395	 3396	 3397	 3417
	 3419	 3420	 3421	 3454	 3486	 3531	 3584	 3585	 3586	 3620	 3628	 3629	 3630	 3631	 3632
	 3640	 3641	 3651	 3673	 3689	 3699	 3700	 3766	 3767	 3786	 3816	 3860	 3862	 3864	 3924
	 3931	 3967	 3978	 3983	 3988	 3994	 3996	 4002	 4037	 4039	 4071	 4078	 4081	 4129	 4131
	 4133	 4136	 4146	 4176	 4179	 4183	 4206
SPBR	  479#	 1000	 1051	 1157	 1263	 1307	 1347	 1352	 1496	 1520	 1570	 1653	 1755	 1777	 1801
	 1808	 1823	 2778	 2946	 2969	 3114	 3298	 3422	 3525	 3687	 3814	 3822
Z	  261#	 1014	 1118	 1144	 1151	 1312	 1326	 2121	 2125	 2129	 2328	 3456	 3458	 3467	 3661
	 3926
.ALWAY	  286#	 1056	 1920	 2040	 3470	 3474	 3488	 3570	 3692	 3703	 3838	 3867	 3928	 3933	 4012
	 4143	 4182	 4187
.BREXT	  278#
.BR0	  298#
.BR1	  310#
.BR4	  322#
.BR7	  334#
.C	  358#
.Z	  346#


. ABS.  000000     000	   CON   RW    ABS   LCL   I  
        000000     001	   CON   RW    ABS   LCL   I  
$$MIC$  003774     002	   CON   RO    REL   LCL   D  


 ERRORS DETECTED:  0
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11	DNMAC X24.07-563  25-JAN-83  10:02  PAGE 80-2
KDPMCX.MAC    30-DEC-82 03:47		CROSS REFERENCE TABLE -- MACRO NAMES

 DEFAULT GLOBALS GENERATED:  0

 KDPMC,KDPMC/CR/NL:MEB=KDP:KMCMAC,KDP:KDPMCX
 RUN-TIME: 12 16 1 SECONDS
 RUN-TIME RATIO: 99/30=3.2
 CORE USED:  11K  (21 PAGES)