The device handlers provide support for the following hardware controllers: 1. DEQNA/DELQA (EQ and NQ Drivers) 2. DEUNA/DELUA (EU and NU Drivers) 3. DECNA (NC Driver) The Ethernet handlers provide support for one controller and a maximum of 8 units numbered 0 through 7. These unit numbers are used as a logical connection between a user program and an address/protocol pair to be recognized by the Ethernet hardware. The NC/NQ/NU device handlers are the DEC handlers modified to include special functions 206 (enable/disable frame bufferring), 207 (get physical address) and 210 (get handler status block). These handlers support only RT11XM V5.6 (and later), NU is coded to use the UB.SYS pseudo handler for UNIBUS systems with greater than 256K bytes. The NC/NQ/NU handlers perform all interrupt processing at IRQ level (FORK level is never entered), and do not internally support device timeout. The EQ/EU device handlers are logically equivalent to the NQ/NU device handlers but were designed with special functions 206 (enable/disable frame bufferring), 207 (get physical ad- dress), 210 (get handler status block), and 211 (abort job i/o, for SJ monitors only). These handlers may be conditionally as- sembled to support the RT11 SJ, SB, FB, and XM monitors (ver- sions 5.3 and later) not supported by the NQ/NU device handlers. Also the EQ and EU handlers may be conditionally assembled for the TSX-Plus operating system. The 22-bit EU handler requires a change in the TSX sysgen file TSGEN.MAC to allocate 4 UMR regis- ters to EU handler.
Summary of prebuilt EQ/EU/NC/NQ/NU device drivers and supported systems: RT-11 VERSION [5.3] [5.4] [5.5] [5.6 ...] TSX ----- ----- ----- --------- --- eqsjms.sys SJ/FB SJ/FB SJ/FB - - eusjms.sys SJ/FB SJ/FB SJ/FB - - eqsjps.sys SJ/FB SJ/FB SJ/FB - - eusjps.sys SJ/FB SJ/FB SJ/FB - - eqsbms.sys - - - SB/FB - eusbms.sys - - - SB/FB - eqsbps.sys - - - SB/FB - eusbps.sys - - - SB/FB - eq18xm.sys XM XM XM XB/XM/ZB/ZM - eq22xm.sys XM XM XM XB/XM/ZB/ZM - eu18xm.sys XM XM XM XB/XM/ZB/ZM - ncxv56.sys - ? ? XB/XM/ZB/ZM - nqxv56.sys - ? ? XB/XM/ZB/ZM - nuxv56.sys - ? ? XB/XM/ZB/ZM - eq18.v62 - - - - <= V6.2 eq22.v62 - - - - <= V6.2 eu18.v62 - - - - <= V6.2 eu22.v62 - - - - <= V6.2 eq18.tsx - - - - >= V6.4 eq22.tsx - - - - >= V6.4 eu18.tsx - - - - >= V6.4 eu22.tsx - - - - >= V6.4 ____ms.sys Drivers are for LSI/11 processors not having a processor status word (PSW == @#177776). ____ps.sys Drivers are for all processors with a processor status word (PSW == @#177776). __sj__.sys Drivers contain special function 211 (abort job i/o) for RT11SJ monitors.Go to Ethernet Driver Index
Summary of prebuilt EQ/EU/NC/NQ/NU device driver features: SPFUNS DEVICE 206 207 210 211 EIS PSW UMR FORK TIMEOUT --- --- --- --- --- --- --- ---- ------- eqsjms.sys X - - X - - - X X eusjms.sys X - - X - - - X X eqsjps.sys X - - X - X - X X eusjps.sys X - - X - X - X X eqsbms.sys X - - - - - - X X eusbms.sys X - - - - - - X X eqsbps.sys X - - - - X - X X eusbps.sys X - - - - X - X X eq18xm.sys X X X - X X - X X eq22xm.sys X X X - X X - X X eu18xm.sys X X X - X X - X X ncxv56.sys X X X - X X - - - nqxv56.sys X X X - X X - - - nuxv56.sys X X X - X X X - - eq18.v62 X X X - X X - X X eq22.v62 X X X - X X - X X eu18.v62 X X X - X X - X X eu22.v62 X X X - X X X X X eq18.tsx X X X - X X - X X eq22.tsx X X X - X X - X X eu18.tsx X X X - X X - X X eu22.tsx X X X - X X X X X ____ms.sys Drivers are for LSI/11 processors not having a processor status word (PSW == @#177776). ____ps.sys Drivers are for all processors with a processor status word (PSW == @#177776). __sj__.sys Drivers contain special function 211 (abort job i/o) for RT11SJ monitors.
Programs that call the Ethernet handler must follow a certain order. Write such programs with the following elements in the order indicated. 1. Use the .LOOKUP programmed request to open a channel to the device unit. 2. Allocate the unit using SPFUN 200. 3. Perform the Ethernet operation(s). 4. Deallocate the unit using SPFUN 200. 5. Use the .CLOSE programmed request to close the channel to the specified device unit. NOTE Special functions 207 (get physical address), 210 (get handler status block), and 211 (abort job i/o) do not require device allocation.Go to Ethernet Driver Index
The EQ/EU Ethernet handlers operate the Ethernet controllers using the .SPFUN programmed request with the following functions:. . . . . Allocate Unit
Successful completion of a .SPFUN request clears the carry bit. Completion with an error sets the carry bit, and the status word in the buffer contains an error code. The EQ/EU handlers are functionally identical to the RT-11 NQ/NU Ethernet handlers with the addition of receive/transmit device timeout support and special functions 206, 207 and 210.Go to Ethernet Driver Index
The allocate unit special function allocates a unit for a job's exclusive use. The following is the form of the special function allocate unit (.SPFUN 200): Macro Call: .SPFUN area,chan,func,buf,wcnt,blkn,[crtn] where: area is address of 6-word EMT argument block chan is a channel number in the range 0 to 376 (octal) func is 200 buf is the address of a 4-word buffer containing the status word and space for the station's physical address. The buffer contents are returned by the allocate unit special function. The high byte of the status word contains a 0. Allocate unit returns one of the following octal status codes in the low byte of the status word: 0 Success 2 Controller error while attempting to initialize the network interface 3 No resources (unit in use) 11 Reserved wcnt is 0 blkn is 1 crtn is the entry point of a completion routine=> Section Index
The deallocate unit special function deallocates a unit so it can be used by another job. The following is the form of the special function deallocate unit (.SPFUN 200): Macro Call: .SPFUN area,chan,func,buf,wcnt,blkn,[crtn] where: area is address of 6-word EMT argument block chan is a channel number in the range 0 to 376 (octal) func is 200 buf is the address of a 1-word buffer containing the status word. The high byte of the status word contains a 0. Deallocate unit returns one of the following octal status codes in the low byte of the status word: 0 Success 1 Unknown unit. The specified unit was not opened by the job issueing the request. 2 Controller error while attempting to initialize the network interface 11 Unit still active wcnt is 0 blkn is 0 crtn is the entry point of a completion routine=> Section Index
The enable promiscuous mode special function enables the Ethernet hardware to receive all network traffic regardless of address or protocol. Any read request to the handler will re- turn the first available packet received by the controller in- terface. The following is the form of the special function enable promiscuous mode (.SPFUN 201): Macro Call: .SPFUN area,chan,func,buf,wcnt,blkn,[crtn] where: area is address of 6-word EMT argument block chan is a channel number in the range 0 to 376 (octal) func is 201 buf is the address of a 1-word buffer containing the status word. The high byte of the status word contains a 0. Enable promiscuous mode returns one of the following octal status codes in the low byte of the status word: 0 Success 6 address/protocol active wcnt is 0 blkn is 1 crtn is the entry point of a completion routine=> Section Index
The disable promiscuous mode special function enables the ad- dress/protocol filtering provided by the Ethernet hardware and enables the specified protocol. The following is the form of the special function disable promiscuous mode (which performs an enable protocol type) (.SPFUN 201): Macro Call: .SPFUN area,chan,func,buf,wcnt,blkn,[crtn] where: area is address of 6-word EMT argument block chan is a channel number in the range 0 to 376 (octal) func is 201 buf is the address of a 2-word buffer that contains the status word, followed by the 1-word protocol type that is to be enabled when the promiscuous mode is disabled. The high byte of the status word contains a 0. The disable promiscuous mode returns one of the following octal status codes in the low byte of the status word: 0 Success 1 Unknown unit. The specified unit was not opened by the job issueing the request. 2 Controller error while attempting to initialize the network interface 3 Reserved 6 Reserved 10 Protocol type in use wcnt is 0 blkn is 0 crtn is the entry point of a completion routine=> Section Index
The enable protocol type special function adds a protocol type to those to be recognized by the Ethernet controller. Only one protocol type can be specified for each unit. At least one protocol type must be enabled to receive Ethernet frames. The following is the form of the special function enable pro- tocol type (.SPFUN 202): Macro Call: .SPFUN area,chan,func,buf,wcnt,blkn,[crtn] where: area is address of 6-word EMT argument block chan is a channel number in the range 0 to 376 (octal) func is 202 buf is the address of a 2-word buffer that contains the status word followed by the protocol type word. The high byte of the status word contains a 0. Enable protocol type returns one of the following octal status codes in the low byte of the status word: 0 Success 1 Unknown unit. The specified unit was not opened by the job issuing the request 2 Controller error while attempting to initialize the network interface 3 No resources (unit's protocol table full) 6 Reserved 10 Protocol type in use The protocol type is specified by the user wcnt is 0 blkn is 1 crtn is the entry point of a completion routine=> Section Index
The disable protocol type special function removes the pro- tocol type from the list of those recognized by the Ethernet controller. The following is the form of the special function disable protocol type (.SPFUN 202): Macro Call: .SPFUN area,chan,func,buf,wcnt,blkn,[crtn] where: area is address of 6-word EMT argument block chan is a channel number in the range 0 to 376 (octal) func is 202 buf is the address of a 2-word buffer that contains the status word followed by the protocol type word. The high byte of the status word contains a 0. Disable protocol type returns one of the following octal status codes in the low byte of the status word: 0 Success 1 Unknown unit. The specified unit was not opened by the job issuing the request 2 Controller error while attempting to initialize the network interface If the disabled protocol type is not the same as the enabled protocol type for this unit then 'success' is returned. wcnt is 0 blkn is 0 crtn is the entry point of a completion routine=> Section Index
The enable multicast address special function adds the multi- cast address to those recognized by the Ethernet controller. Ypu need not specify the unit's physical or broadcast address. Only one multicast address is allowed per handler unit. The following is the form of the special function enable mul- ticast address (.SPFUN 203): Macro Call: .SPFUN area,chan,func,buf,wcnt,blkn,[crtn] where: area is address of 6-word EMT argument block chan is a channel number in the range 0 to 376 (octal) func is 203 buf is the address of a 4-word buffer that contains the status word, followed by the 3-word multicast address. The low order bit of the first address word should be a 1. The high byte of the status word contains a 0. Enable multicast address returns one of the following octal status codes in the low byte of the status word: 0 Success 1 Unknown unit. The specified unit was not opened by the job issueing the request. 2 Controller error while attempting to initialize the network interface 3 No resources (unit's address table is full, or hardware address table full) wcnt is 0 blkn is 1 crtn is the entry point of a completion routine=> Section Index
The disable multicast address special function removes the multicast address from those to be recognized by the Ethernet controller. The following is the form of the special function disable multicast address (.SPFUN 203): Macro Call: .SPFUN area,chan,func,buf,wcnt,blkn,[crtn] where: area is address of 6-word EMT argument block chan is a channel number in the range 0 to 376 (octal) func is 203 buf is the address of a 4-word buffer that contains the status word, followed by the 3-word multicast address. The low order bit of the first address word should be a 1. The high byte of the status word contains a 0. Disable multicast address returns one of the following octal status codes in the low byte of the status word: 0 Success 1 Unknown unit. The specified unit was not opened by the job issueing the request. 2 Controller error while attempting to initialize the network interface If the disabled multicast address is not the same as the enabled multicast address for this unit then 'success' is returned. wcnt is 0 blkn is 0 crtn is the entry point of a completion routine=> Section Index
The special function transmit Ethernet frame transmits the Ethernet frame pointed to in the buf argument. If the source field of the frame is not zero, it is kept and used. If the source field of the frame is zero, the controllers physical ad- dress is inserted in the source field before transmission. The following is the form of the special function transmit Ethernet frame (.SPFUN 204): Macro Call: .SPFUN area,chan,func,buf,wcnt,blkn,[crtn] where: area is address of 6-word EMT argument block chan is a channel number in the range 0 to 376 (octal) func is 204 buf is the address of a variable size buffer containing the status word, followed by the Ethernet packet to be transmitted. The first word following the status word is reserved. Next is the 3-word destination address field followed by the 3-word source address field. The next word is the packet protocol type. Following this is the variable length packet containing from 23 to 750 words. The transmit Ethernet frame returns one of the following octal status codes in the low byte of the status word: 0 Success 1 Unknown unit. The specified unit was not opened by the job issueing the request. 2 Controller error while attempting to initialize the network interface 13 Transmit failed When status code 13 is returned in the low byte of the status word, transmit Ethernet frame returns one of the following octal status codes in the high byte of the status word: 1 Invalid frame length 2 Excessive collisions 3 Carrier check failed wcnt is determined by the variable size of the user buffer (including the status word and reserved word). The packet size (including the status word and reserved word) can vary between 32 and 759 words. blkn is 0 crtn is the entry point of a completion routine=> Section Index
The receive Ethernet frame special function returns the next Ethernet packet with the desired unit address and protocol type to the buffer. The function does not return Ethernet frames that are received with errors. The following is the form of the special function receive Ethernet frame (.SPFUN 205): Macro Call: .SPFUN area,chan,func,buf,wcnt,blkn,[crtn] where: area is address of 6-word EMT argument block chan is a channel number in the range 0 to 376 (octal) func is 205 buf is the address of a variable size buffer containing the status word, a word containing the frame size, and followed by upto 757 words to receive the Ethernet frame. The buffer contents are returned by the receive Ethernet frame function. The high byte of the status word contains a 0. The receive Ethernet frame special function returns one of the following octal status codes in the low byte of the status word: 0 Success 1 Unknown unit. The specified unit was not opened by the job issueing the request. 2 Controller error while attempting to initialize the network interface wcnt is the size of the user buffer including the status and frame size words blkn is 0 crtn is the entry point of a completion routine=> Section Index
The Enable frame queueing special function allows the EQ/EU handler to internally queue received packets that match any enabled address/protocol even though a receive request has not been issued for that address/protocol or a previous packet has not been processed. The EQ handler normally allocates space for internally queueing upto 20 packets (this may be changed by mod- ifying 'rbcnt' in EQ.MAC and rebuilding the EQ handler). The 22-bit EU handler normally allocates space for internally queue- ing 10 packets and the 18-bit EU handler allocates space for 2 packets (this may be changed by modifying 'rbcnt' in EU.MAC and rebuilding the EU handlers). The following is the form of the special function enable frame queueing (.SPFUN 206): Macro Call: .SPFUN area,chan,func,buf,wcnt,blkn,[crtn] where: area is address of 6-word EMT argument block chan is a channel number in the range 0 to 376 (octal) func is 206 buf is the address of a 1-word buffer for the returned status word which is always 0 wcnt is 0 blkn is 1 crtn is the entry point of a completion routine=> Section Index
The disable frame queueing special function disables the in- ternal queueing of packets. This function may only be issued if all address/protocol pairs have been disabled. The following is the form of the special function disable frame queueing (.SPFUN 206): Macro Call: .SPFUN area,chan,func,buf,wcnt,blkn,[crtn] where: area is address of 6-word EMT argument block chan is a channel number in the range 0 to 376 (octal) func is 206 buf is the address of a 1-word buffer containing the status word. The high byte of the status word contains a 0. Disable frame queueing returns one of the following octal status codes in the low byte of the status word: 0 Success 6 address/protocol active wcnt is 0 blkn is 0 crtn is the entry point of a completion routine=> Section Index
The get Ethernet address special function returns the physi- cal address of the Ethernet controller card. The following is the form of the special function get Ethernet address (.SPFUN 207): Macro Call: .SPFUN area,chan,func,buf,wcnt,blkn,[crtn] where: area is address of 6-word EMT argument block chan is a channel number in the range 0 to 376 (octal) func is 207 buf is the address of a 4-word buffer in which the status word, which is always 0, and the six byte physical Ethernet address are returned. wcnt is 0 blkn is 0 crtn is the entry point of a completion routine=> Section Index
The get handler status block special function returns the EQ/EU handler's internal parameter block. The information con- tained in the parameter block includes the number of packets re- ceived and transmitted for each EQ/EU unit as well as timeout information. The following is the form of the special function get Ethernet status block (.SPFUN 210): Macro Call: .SPFUN area,chan,func,buf,wcnt,blkn,[crtn] where: area is address of 6-word EMT argument block chan is a channel number in the range 0 to 376 (octal) func is 210 buf is the address of a buffer into which wcnt words are written from the EQ/EU handlers status block. wcnt is the number of words to return to the buffer. The status word must be included in the word count. blkn is 0 crtn is the entry point of a completion routine The complete list of parameters in the status block may be found in the EQ/EU Ethernet handler files EQ.MAC, EU.MAC, and EI.MAC. The first word is always a status word of value 0, the following 4-byte (long integer) parameters are: eiipkt total receiver interrupts eiopkt total transmitter interrupts eirtmo total receive timeouts eixtmo total transmit timeouts eirun[8] received packets for each unit eixun[8] transmitted packets for each unit These are the only parameters used by any program in the 'TCP/IP Package for TSX-Plus' or 'TCP/IP Package for RT-11'.=> Section Index
The abort job i/o special function is conditionally assembled into drivers for the RT11SJ monitors. The SJ monitor never calls the abort entry point in the device handler (either from a .ABTIO request or at job termination) this means that the inter- nally queued i/o requests will never complete and the monitor will lock waiting for the i/o to complete. This special func- tion calls the abort entry point clearing all internally queued elements associated with the current job. The following is the form of the special function Abort Job I/O (.SPFUN 211): Macro Call: .SPFUN area,chan,func,buf,wcnt,blkn,[crtn] where: area is address of 6-word EMT argument block chan is a channel number in the range 0 to 376 (octal) func is 211 buf is not used wcnt is not used blkn is not used crtn is the entry point of a completion routine=> Section Index
The EQ and EU Ethernet handlers configured for TSX-Plus ver- sions 6.0 through 6.2 have these additional .SPFUN programmed requests: Function Code -------- ---- Get PLAS Allocation Size 300 Initialize Handler 301 Successful completion of a .SPFUN request clears the carry bit. Completion with an error sets the carry bit without any error code.
The following is the form of the special function Get PLAS Alocation Size (.SPFUN 300): Macro Call: .SPFUN area,chan,func,buf,wcnt,blkn,[crtn] where: area is address of 6-word EMT argument block chan is a channel number in the range 0 to 376 (octal) func is 300 buf handler returns the requested allocation size, in 32. word increments, in the first word of the buffer wcnt is not used blkn is not used crtn is the entry point of a completion routine
The following is the form of the special function Initialize Handler (.SPFUN 301): Macro Call: .SPFUN area,chan,func,buf,wcnt,blkn,[crtn] where: area is address of 6-word EMT argument block chan is a channel number in the range 0 to 376 (octal) func is 301 buf the address of buf is the PLAS base address wcnt is not used blkn is not used crtn is the entry point of a completion routine Attempting to reinitialize the handler or to initialize the handler with a PLAS base address of 0 will be reported as an er- ror by setting the carry bit.
The program ENPLAS.SAV is a support program which creates the PLAS buffer required by the TSX-Plus V6.0 through V6.2 EQ and EU device handlers. The program uses .spfun 300 to get the buffer size, creates the PLAS region, uses .spfun 301 to handoff the PLAS region's Base Address to the device handler and to initial- ize the handler. This program must run before the EQ or EU device handler can be used. The device EN0: must be assigned before running ENPLAS.SAV. ASSIGN EU0: EN0: or ASSIGN EQ0: EN0: R ENPLAS.SAV The device handler requires only a single initialization to be used by the TCPIP.SAV server or the small system client pro- grams.Go to Ethernet Driver Index