.TITLE CDPREF ; ; PREFIX FILE FOR THE CDDRIVER ; ; CONTAINS MACROS, OFFSETS, STATE AND STATUS VALUES AND BIT ; DEFINITIONS AS WELL AS CONDITIONAL ASSEMBLY PARAMETERS ; ; VERSION 1.X ; ; CREATED: JULY 22 1982 VICKY WHITE ; MODIFIED: ; OCT1882 VW - MULTIPLE CONTROLLER - TAKE OUT CONDITIONALS INTO CDC.MAC ; ; ; ;----------------------------------------------------------------------- ; ; DR11W HARDWARE REGISTERS ; ------------------------ ; .ASECT ;DEFINE REGISTER OFFSETS FROM CSR . = 177774 ;(-4^D) CDWORD: .BLKW 1 ;OFFSET FROM CSR FOR WORD COUNT REGISTER CDBUFA: .BLKW 1 ;OFFSET FROM CSR FOR BUFFER ADDRESS REGISTER CDCSR: .BLKW 1 ;CSR OFFSET ZERO CDDATA: .BLKW 1 ;OFFSET FROM CSR FOR DATA BUFFER REGISTER .PSECT ; ; FUNCTION BIT MASKS FOR THE CSR BITS ; ------------------------------------ ; ; GO = 1 ;GO BIT FNCT1 = 2 ;FUNCTION 1 BIT FNCT2 = 4 ;INTERRUPT PARTNER FNCT3 = 10 ;IF SET CAUSES ONE DMA CYCLE IE = 100 ;INTERRUPT ENABLE CYCLE = 400 ;CYCLE BIT STATA = 4000 ;STATUS A BIT (MAPS PARTNERS FNCT3) STATB = 2000 ;STATUS B BIT (MAPS PARTNERS FNCT2) STATC = 1000 ;STATUS C BIT (MAPS PARTNERS FNCT1) MAINT = 10000 ;MAINTENANCE MODE BIT ATTN = 20000 ;ATTENTION BIT ERROR = 100000 ;ERROR BIT ; ;----------------------------------------------------------------------- ; ; DRIVER STATE CODES (U.CW2) ; -------------------------- ; ; IDLE = 1 ;DRIVER IDLE, NO OPERATION IN PROGRESS ASTQUE = 2 ;AST QUEUED, RECEIVED PACKET AWAITING DELIVERY RECPEN = 4 ;RECEIVE PENDING, PACKET DELIVERY IN PROGRESS WTLACK = 10 ;LINK BID INITIATED. WAIT-LINK-ACKNOWLEDGE DISCON = 20 ;DISCONNECTED, DRIVER ASLEEP WTPTC = 40 ;HAVE ACKNOWLEDGED LINK. WAIT-PACKET-TYPETNER ;CODE WTPTAK = 100 ;HAVE SENT PACKET TYPE CODE. WAIT-PTC-ACK. WTSGAK = 200 ;HAVE SENT SIGNAL. WAIT-SIGNAL-ACK. WTRCWC = 400 ;HAVE SENT WORD COUNT. WAIT-RECEIVERS-WC TRANSF = 1000 ;TRANSFER IN PROGRESS WTXMWC = 2000 ;HAVE SENT PTC ACK. WAIT-TRANSMITTERS-WC DOWN = 4000 ;LINK DOWN STWAIT = 10000 ;WAITING FOR START ACKNOWLEDGE WAITEM = 40000 ;END OF DMA INTERRUPT PROCESSED, WAITING FOR ; END OF MESSAGE STATUS. FORKED = 60000 ;WAITING TO EXECUTE OR EXECUTING FORK ;LEVEL CODE, AFTER AN INTERRUPT NONE = 0 ;NO STATE - FOR DISPATCH TABLES ;- NO STATE WILL SATISFY ;BIT TEST CONDITIONS ANY = 177777 ;ANY STATE - FOR DISPATCH OF I/O FN ;AND INTERRUPT LEVEL DISPATCHING ; ;--------------------------------------------------------------------- ; ; DEFINE PTC DESCRIPTOR BLOCK (PDB) ; ; NOTE: THIS BLOCK IS NOT USED AS AN AST BLOCK! THE AST BLOCK IS ; ALLOCATED OUT OF POOL AS NEEDED. ; .ASECT . = 0 PT.LNK: .BLKW 1 ;LINK TO NEXT PDB PT.PTC: .BLKW 1 ;PACKET TYPE CODE PT.TCB: .BLKW 1 ;TCB OF OWNER PT.AST: .BLKW 1 ;AST TRAP ADDRESS PT.IOQ: .BLKW 2 ;PDB RECEIVE I/O QUEUE LISTHEAD PT.LEN: .BLKW 1 ;LENGTH OF ALLOCATED POOL BLOCK PTLENG = . .PSECT ;--------------------------------------------------------------------- ; ; ; TIME-OUT CONSTANTS: ; .IF NDF DBUG XMTTMO = 3. ;THREE SECOND TRANSMIT TIMER RCVTMO = 2. ;TWO SECOND RECEIVE TIMER DELTIM = 6 ;DELAY .1 SEC FOR EOM DELAY STKWAI = 6 ;DELAY .1 SEC FOR START ACK TIMER DELMSK = 177400 ;MASK FOR RANDOM DELAY TIMER .IFF XMTTMO = 300 RCVTMO = 200 DELTIM = 600 STKWAI = 60. DELMSK = 170000 .ENDC ;------------------------------------------------------------------------ ; ; ; LINK FUNCTION CODES - SENT TO PARTNER MACHINE IN OUTPUT DATA REGISTER ; ; FUNCTION CODE CONTROL BIT MASKS: ; NOTWC = 100000 ;IF CLEAR DATA WORD IS A WORD COUNT PTC = 40000 ;IF SET, DATA BYTE IS A PACKET TYPE CODE ACK = 20000 ;IF SET, DATA BYTE IS AN ACK OR NACK OF A ; PTC,SIGNAL, WC, OR LINK REQUEST. EOM = 10000 ;IF SET, DATA BYTE IS AN EOM STATUS REQLK = 4000 ;IF SET, SENDER IS REQUESTING THE LINK START = 2000 ;IF SET, SENDERIS REQUESTING TO START OR ; RE-START THE PROTOCOL SIGNAL = 1000 ;IF SET, DATA BYTE IS A SIGNAL DELAY = 400 ;PLEASE DELAY BEFORE INITIATING LINK BID, ; REQUESTING UNIT HAS WORK QUEUED. ; ; FUNCTION CODES: ; ACKNCD = NOTWC!ACK!5 ;LINK ACKNOWLEDGE CODE RECLCD = NOTWC!REQLK ;REQUEST LINK CODE (GLOBAL) PTCACD = NOTWC!ACK!1 ;PTC ACKNOWLEDGE CODE PTCNCD = NOTWC!ACK!2 ;PTC NACK CODE SIGACD = NOTWC!EOM!EM.SUC ;SIGNAL ACKNOWLEDGE CODE WCNACD = NOTWC!ACK!4 ;WORD COUNT NACK CODE (TRANSFER REJECTED) STRTCD = NOTWC!START ;PROTOCOL START CODE STAKCD = NOTWC!ACK!3 ;PROTOCOL START ACKNOWLEDGE EOMSCD = NOTWC!EOM ;END OF MESSAGE STATUS CODE MASK EM.SUC = 32. ;SUCCESSFUL END OF MESSAGE SUBFUNCTION EM.ABO = 9. ;I/O KILLED WHILE IN PROGRESS EM.FHE = 8. ;FATAL HARDWARE ERROR SUBFUNCTION PTCDCD = NOTWC!PTC ;PACKET TYPE CODE MASK SIGNCD = NOTWC!SIGNAL ;SIGNAL MASK ; ;------------------------------------------------------------------------ ; ; LINK OWNERSHIP CODES: ; FREE = 0 ;NEITHER MASTER NOR SLAVE MASTER = 1 ;UNIT IS LINK MASTER SLAVE = 2 ;UNIT IS LINK SLAVE ; ;------------------------------------------------------------------------ ; ; FORK REASON CODE MASKS(U.FFL) ; IODONE = 1 ;FORKING FOR I/O CLEANUP ASTQ = 10 ;FORKING TO QUE AST ; ;------------------------------------------------------------------- ; ; ; UCB OFFSETS USED BY THIS DRIVER ; U.STA = U.CW2 ;DRIVER STATUS U.SCT = U.CW3 ;COUNT OF NUMBER OF RE-STARTS U.PTC = U.VCB+2 ;LISTHEAD FOR CHAIN OF PDB'S U.CPT = U.VCB+4 ;CURRENT PDB WHEN READ IN PROGRESS U.ITB = U.VCB+6 ;ADDRESS OF INTERRUPT TRANSFER BLOCK U.MSS = U.VCB+10 ;LINK MASTER/SLAVE FLAG U.IDR = U.VCB+12 ;IDR CONTENTS AT LAST INTERRUPT U.IOS = U.VCB+14 ;I/O STATUS OF CURRENT TRANSFER QIO U.PRW = U.VCB+16 ;PREVIOUS EOM STATUS OR'D WITH ;REQUEST LINK OR DELAY POSSIBLY U.WDC = U.VCB+20 ;WORD COUNT FOR LAST TRANSFER QIO U.FLG = U.VCB+22 ;FLAG SET IF REQUEST LINK IS WAITING ;TO BE PROCESSED U.IO2 = U.VCB+24 ;2ND WORD OF THE I/O STATUS OF ;THE LAST TRANSFER QIO U.DAT = U.VCB+26 ;LAST WORD RECEIVED ON DMA U.FFL = U.VCB+30 ;FORK REASONS BIT MASK U.FST = U.VCB+32 ;STATE TO GO INTO AT END OF FORK CODE U.TIM = U.VCB+34 ;ADDRESS OF TIMER CLOCK QUEUE PACKET U.PKT = U.VCB+36 ;ADDRESS OF PENDING WRITE I/O PACKET U.ACK = U.VCB+40 ;FLAG FOR PENDING LINK ACKNOWLEDGE U.ERR = U.VCB+42 ;TO SAVE ERROR REGISTER U.QWC = U.VCB+44 ;TO SAVE CURRENT PACKET WC ; ; ;------------------------------------------------------------------- ; ; QIO FUNCTION CODES AND ERROR STATUS CODES ; ----------------------------------------- ; ; IS.MAS = 2. ;MASTER STATUS RETURN ON SLEEP IS.SLV = 4. ;SLAVE STATUS RETURN ON SLEEP IE.DNE = -103. ;PTC DOES NOT EXIST IE.NDS = -89. ;UNIT NOT DISCONNECTED IE.NEX = -102. ;NON-EXISTANT STATE IE.NRP = -104. ;NO READ PENDING IE.PTO = -100. ;PACKET TYPE OWNED IE.SNA = -93. ;SIGNAL NOT ACKNOWLEDGED IE.VIU = -94. ;VECTOR IN USE ON AWAKE IE.IOQ = -95. ;I/O STILL QUEUED TO PDB ON IO.CLN OR IO.RPA IE.LDN = -101. ;LINK DOWN, AND RESOURCE WAIT NOT SPECIFIED IE.EME = -110. ;END OF MESSAGE ERROR CODE IE.BUG = -111. ;CD DRIVER BUG CHECK IE.IPT = -112. ;ILLEGAL PTC VALUE (MUST BE 0-255) IO.SPA = 25.*^O400 ;SET PACKET TYPE CODE AFFINITY IO.RPA = 26.*^O400 ;REMOVE PACKET TYPE CODE IO.AWA = 29.*^O400 ;AWAKE DRIVER IO.SIG = 30.*^O400 ;SEND SIGNAL IO.REJ = 31.*^O400 ;REJECT MESSAGE IO.STU = 24.*^O400 ;RETURN DRIVER STATUS SF.SLP = 1 ;SLEEP SUBFUNCTION SF.RSW = 2 ;QUEUE PACKET EVEN IF RESOURCE UNAVAILABLE SF.RDQ = 4 ;QUEUE READ EVEN IF NO READ PENDING ; ----------------------------------------------------------------------- ; ; ; DEFINE OFFSETS FOR TRACE FEATURE ; TR.SIZ=8. ;SIZE OF EACH TRACE TABLE ENTRY .IIF LT