;PREFIX FILE FOR DRDRV - DR-11K LOADABLE DRIVER .MCALL FILIO$,IOERR$,HWDDF$,PKTDF$,DEVDF$ FILIO$ ;DEFINE I/O FUNCTION CODES IOERR$ ;DEFINE I/O ERROR CODES HWDDF$ ;DEFINE HARDWARE REGISTERS PKTDF$ ;DEFINE I/O PACKET OFFSETS DEVDF$ ;DEFINE DEVICE TABLE OFFSETS LD$DR=1 ;*** NECESSARY FOR LOADABLE DRIVERS ATBLIM=200 ;*** ABSOLUTE MAXIMUM ATB BUFFER SIZE ; (BUFFER SIZE SHARES ATBSTS WITH FLAG BITS....SEE BELOW) SIZMSK=177400 ;*** BITS TO MASK OFF ATB BUFFER SIZE ; (MUST BE COMPLEMENT OF HIGH ORDER ZEROES OF ATBLIM) DEFMAX=16. ;DEFAULT MAXIMUM....INITIAL MAXATB VALUE IN UCB RQSIZ=I.PRM+4 ; I/O PACKET OFFSET TO TRANSFER REQUEST SIZE INTIN=100 ; DR11-K CSR INPUT INTERRUPT ENABLE BIT NDR11S=1 ;*** NUMBER OF DR11-Ks THAT THIS DRIVER HANDLES DR0VEC=360 ;INTERRUPT VECTOR OF DR0: DR0CSR=167770 ;CSR ADDRESS OF DR0: ; UCB OFFSET SYNONYMS ATBSTS=U.CW2 ; ATB STATUS WORD (SEE BIT DEFINITIONS BELOW) ATBPTR=U.CW3 ; ATB POOL BUFFER PTR (ATB RING BUFFER FORMAT:) ; ------------------- ; DQ - DEQUEUE PTR ; Q - QUEUE PTR ; ATBPTR-> START OF RING BUFFER ; Q-> DQ-> .......... ; END OF RING BUFFER ; ------------------ MAXATB=U.CW4 ; MAXIMUM ATB BUFFER SIZE (in bytes), EXCLUDING PTRS (4 bytes) ;* THIS IS ACCESSIBLE BY: SET /BUF=DR0:128. ;* IF MAXATB > ATBLIM, THEN ATBLIM IS THE UPPER LIMIT ANYWAY ; ATBSTS STATUS BITS ; ** LOW BYTE OF ATBSTS IS CURRENT ATB BUFFER SIZE (MINUS 4) IN BYTES ; ** (that is why ATBLIM is 255. -- some coding changes could expand this, but ; ** if 255. isn't enough, probably nothing is) INFORK=100000 ; LOCKS OUT QUEUEING OF ATB FORK ROUTINE FROM INTERRUPT LEVEL CLRATB=40000 ; FLAGS ATB FORK ROUTINE TO FLUSH ATB BUFFER ATBOVR=20000 ; FLAGS ATB BUFFER OVERFLOW ; I/O SUB-FUNCTION BITS: DR.NTM=4 ; I/O WITH NO TIMEOUT DR.RIB=2 ; DON'T PURGE INPUT BUFFER BEFORE READ DR.ATB=1 ; ENABLE INPUT BUFFER ON ATTACH