home *** CD-ROM | disk | FTP | other *** search
/ Stars of Shareware: Programmierung / SOURCE.mdf / programm / msdos / asm / driver6s / read.me < prev    next >
Text File  |  1990-04-10  |  21KB  |  435 lines

  1.        Release 6.x of the Clarkson collection of packet drivers
  2.  
  3.  
  4. If you are a user, all you need do is locate the correct packet driver for your
  5. interface, and read DRIVERS.DOC.
  6.  
  7.  
  8. Versions:
  9.  
  10. If you already have an older packet driver, you may wish to upgrade.  You
  11. should base this decision on the contents of the "Changes..." section
  12. below.  The major version (currently 5) goes up with every release.  The
  13. minor version (.x, different for every driver) goes up with every
  14. significant change in the device dependent part.  Four drivers, the
  15. at&t, 3c523, ni5210, and ni9210, all depend on 82586.asm, so they have a
  16. subminor version number which is the version of 82586.asm.  If the minor
  17. version hasn't changed, then chances are very good that no significant
  18. bugs have been introduced.  Sometimes the file is changed without changing
  19. the version number.  This is done only when an identical change is made to
  20. all drivers to fix a bug that appears in every driver.
  21.  
  22. 3C501.ASM       version equ     1
  23. 3C503.ASM       version equ     3
  24. 3C505.ASM       version equ     1
  25. 3C523.ASM       version equ     2
  26. 82586.ASM       i82586_version  equ     1
  27. ARCNET.ASM      version equ     0
  28. AT&T.ASM        version equ     0
  29. IPXPKT.ASM      version equ     0
  30. ISOLAN.ASM      version equ     1
  31. NB.ASM  version equ     3
  32. NE1000.ASM      version equ     2
  33. NE2000.ASM      version equ     3
  34. NI5010.ASM      version equ     0
  35. NI5210.ASM      version equ     2
  36. NI6510.ASM      version equ     0
  37. NI9210.ASM      version equ     0
  38. PKTADDR.ASM     version equ     0
  39. PKTALL.ASM      version equ     0
  40. PKTCHK.ASM      version equ     0
  41. PKTMODE.ASM     version equ     0
  42. PKTMULTI.ASM    version equ     0
  43. PKTSEND.ASM     version equ     0
  44. PKTSTAT.ASM     version equ     0
  45. SLIP8250.ASM    version equ     4
  46. TESTMUL.ASM     version equ     0
  47. TRACE.ASM       version equ     0
  48. WD8003E.ASM     version equ     5
  49.  
  50.  
  51. Contents:
  52.  
  53. There are now two packet driver distributions.  The smaller one,
  54. drivers.arc, contains only the executable programs on the list below, this
  55. file, DRIVERS.DOC, and COPYING.  The larger one, driverss.arc, contains
  56. all of the files listed below.
  57.  
  58. 3C501.ASM     Device dependent 3COM 3C501 code.
  59. 3C501.COM
  60. 3C503.ASM     Device dependent 3COM 3C503 code.
  61. 3C503.COM
  62. 3C505.ASM     Device dependent 3COM 3C505 code.
  63. 3C505.COM
  64. 3C523.ASM     Device dependent 3COM 3C523 code.
  65. 3C523.COM
  66. 82586.ASM     Include file for drivers based on the 82586.
  67. ARCNET.ASM    Device dependent ARCNET code.
  68. ARCNET.COM
  69. AT&T.ASM      Device dependent AT&T Ethernet and Starlan code.
  70. AT&T.COM
  71. CHROUT.ASM    Subroutine to print a single character
  72. COPYING       The Free Software Foundation's General Public License.
  73. DECOUT.ASM    Subroutine to print a 32 bit decimal number.
  74. DEFS.ASM      Definitions and macros.
  75. DIGOUT.ASM    Subroutines to print 1, 2, 4, and 8 digit hex numbers.
  76. DRIVERS.DOC   User documentation.
  77. DUMP.C        Source of the trace dumper.
  78. DUMP.EXE
  79. EXE2COM.C     Chris Dunford's Exe2bin replacement.
  80. EXE2COM.DOC
  81. EXE2COM.EXE
  82. GENERIC.ASM   Device dependent generic code (a skeleton only).
  83. GETDIG.ASM    Subroutine to convert an ASCII character into 0..15.
  84. GETEA.ASM     Subroutine to convert an ASCII Ethernet address into six bytes.
  85. GETENV.ASM    Subroutine to get a string from the environment.
  86. GETNUM.ASM    Subroutine to convert ASCII digits into four bytes.
  87. HEAD.ASM      Resident device independent generic code.
  88. HOWTOGET.IT   Instructions on obtaining that which you already have.
  89. IBMTOKEN.ASM  Device dependent IBM Token Ring Adapter code.
  90. IBMTOKEN.COM
  91. IBMTOKEN.DOC  Supplementary documentation.
  92. IPXPKT.ASM    Device dependent Novell IPX code.
  93. IPXPKT.COM
  94. ISOLAN.ASM    Device dependent BICC Isolan 4110 code.
  95. ISOLAN.COM
  96. MAKEFILE      Makefile.  Uses tasm and tlink, but MS may work.
  97. MEMTEST.ASM   Subroutine to test for the presence of RAM.
  98. MULTICRC.ASM  Subroutine to compute a multicast hash table (not used yet).
  99. MULTIFIL.ASM  Subroutine to filter multicast packets (not used yet).
  100. NB.ASM        Device dependent NetBIOS code.
  101. NB.COM
  102. NE1000.ASM    Device dependent Novell NE1000 code.
  103. NE1000.COM
  104. NE2000.ASM    Device dependent Novell NE2000 code.
  105. NE2000.COM
  106. NE2000.DOC    Supplementary documentation
  107. NI5010.ASM    Device dependent Interlan NI5010 code.
  108. NI5010.COM
  109. NI5210.ASM    Device dependent MICOM-Interlan NI5210 code.
  110. NI5210.COM
  111. NI6510.ASM    Device dependent Racal/Interlan NI6510 code.
  112. NI6510.COM
  113. NI9210.ASM    Device dependent MICOM-Interlan NI9210 code.
  114. NI9210.COM
  115. NOVTCP.TXT    Doug Bigelow's DIY instructions for Novell && TCP/IP.
  116. OCCUPIED.ASM  Subroutine to test for occupied memory.
  117. PACKET.DOC    Joe R. Doupnik's "Packet drivers made simple"
  118. PACKETQA.TXT  Questions from R. Nelson and Answers from jbvb@vax.ftp.com
  119. PACKET_D.109  Packet driver spec version 1.09
  120. PKTADDR.ASM   Program to get/set the packet driver address.
  121. PKTADDR.COM
  122. PKTALL.ASM    Program to receive and discard all packets.
  123. PKTALL.COM
  124. PKTCHK.ASM    Source of the packet driver installation checker.
  125. PKTCHK.COM
  126. PKTERR.ASM    Subroutine to print packet driver error messages.
  127. PKTMODE.ASM   Program to get/set the packet driver receive mode.
  128. PKTMODE.COM
  129. PKTMULTI.ASM  Program to get/set the packet driver multicast list.
  130. PKTMULTI.COM
  131. PKTSEND.ASM   Program to send arbitrary packets.
  132. PKTSEND.COM
  133. PKTSTAT.ASM   Program to print the statistics.
  134. PKTSTAT.COM
  135. PRINTEA.ASM   Subroutine to print Ethernet addresses.
  136. READ.ME       This file.
  137. README.503    Bob Clements' README file for the 3c503.
  138. README.505    README file for the 3c505.
  139. README.521    Some notes on Dan Lanciani's ni5210 fix.
  140. README.NB     NetBIOS instructions.
  141. README.NE2    Dave Horne's Novell NE2000 release notes.
  142. README.NOV    Brian Meek's explanation of ECONFIG for Novell users.
  143. README.WD8    Jan Engvald's README file for the WD8003ET/A.
  144. ROMREL.COM    Release the Novell boot rom's control of an Ethernet card.
  145. ROMREL.DOC
  146. SKIPBLK.ASM   Subroutine to skip past blanks.
  147. SLIP8250.ASM  Device dependent SLIP driver using IBM-PC 8250.
  148. SLIP8250.COM
  149. STAT.C        Source of the statistics printer.
  150. STAT.EXE
  151. SUPPORT.TXT   Who supports the packet driver spec.
  152. TAIL.ASM      Non-resident device independent generic code.
  153. TERMIN.ASM    Source of the packet driver terminator.
  154. TERMIN.COM
  155. TIMEOUT.ASM   Subroutine to check for excessive time spent looping.
  156. TRACE.ASM     Source of the packet driver tracer.
  157. TRACE.COM
  158. WD8003E.ASM   Device dependent Western Digital WD-8003e code.
  159. WD8003E.COM
  160.  
  161.  
  162. Editor's note:
  163.  
  164. I created the infrastructure for the packet drivers.  All of the device
  165. dependent portions were written by other people.  The best term to
  166. describe what I do is "Editor and publisher", because I perform a function
  167. similar to that served in the literary world.
  168.  
  169. If you are planning on writing a driver, please contact me.  There is
  170. a good chance you may be able to share code with another driver.  For
  171. example, we now have three drivers that drive LANCE-based boards.
  172. There is even a better chance that someone else is already working on
  173. such a driver.  For example, we now have two NE2000 drivers, both of
  174. which have different good features.
  175.  
  176. Please direct bug reports to me.  Chances are that the bug is in my code
  177. anyway.  If not, I'll forward the bug report on to the device driver author.
  178. As with all free software, no guarantee of support is given (see COPYING).
  179.  
  180. If you use these packet drivers, please consider making a donation to
  181. Clarkson.  Material help such as donated hardware is welcome.  If you
  182. can spare an Ethernet card, send it to me, care of Educational
  183. Computing (address below).  Money, of course, is even more welcome.
  184.  
  185. If you are a manufacturer of networking cards, please consider
  186. donating hardware to Clarkson University.  Racal/Interlan and AT&T
  187. have done so (thank you), and I have been able to create two packet
  188. drivers that otherwise wouldn't have existed.
  189.  
  190. I have several drivers that I couldn't get into the 6.x release.  They
  191. are: TRW's Zenith Z-100 card, Tiara Computer Systems's card, and
  192. Xircom's Pocket Ethernet adapter.  I believe that Xircom's driver is
  193. available directly from them.  It's based on the 4.x release.
  194.  
  195. Russell Nelson, Editor of the Clarkson collection of packet drivers.
  196. nelson@clutx.clarkson.edu, nelson@clutx.bitnet
  197. Educational Computing, Clarkson University, Potsdam, NY 13699-5730
  198.  
  199.  
  200. Changes from version 5.0 to 6.0 of the drivers:
  201.  
  202. Summary:
  203.     New drivers: ni6510, at&t, arcnet, ipxpkt, nb, ne2000.
  204.     New utilities: pktmulti, pktsend, pktstat.
  205.     Bugs fixed: 3c505, 3c503, wd8003e.
  206.  
  207. Carl Beame found a bug in his National 8390 drivers which was also present
  208.     in the drivers based on the 3c503.  To wit, when the buffers
  209.     overflowed, there was a chance that there were no buffers present.
  210.     Trying to read one of these buffers would cause a crash.  This
  211.     affects the 3c503, wd8003e, and ne2000 drivers.
  212. James A. Harvey fix a problem in the first beta test release that caused
  213.     some machines to incorrectly determine the number of interrupts,
  214.     and fixed the lockup problem in the 3c503.
  215. Russell Nelson changed the skeleton to enable compliance with version 1.9
  216.     of the packet driver spec.
  217. Russell Nelson wrote the following drivers: ni6510, at&t, and arcnet.
  218. Russell Nelson wrote the following utilities pktmulti, pktsend, pktstat.
  219. The following drivers now implement promiscuous mode: 3c501, 3c523, ni9210,
  220.     ni5210, at&t, ni6510, wd8003e.
  221. Jan Engvald enhanced HEAD.ASM to properly sense the second 8259a.
  222. Denis DeLaroca fixed the 16550a support in slip8250.asm.
  223. Glen Marianko's ROMREL program is now included for Novell users.
  224. All of the programs may be assembled with Borland or Microsoft (5.1) products.
  225. Some of the programs may be assembled with Microsoft v4.0 products.
  226. The set_address function refused to change the address if there was one or
  227.     more handles open.  One handle is allowable.
  228. The 3c501 driver now sends large broadcast packets (i.e. BOOTP) correctly.
  229. The routine get_multicast_list has been obsoleted by doing the same function
  230.     totally within HEAD.ASM
  231. The terminate routine now gets called on the f_terminate calls.
  232. f_terminate now checks for any outstanding handles before terminating.
  233. The parameters are now printed separately from being parsed.  This is to let
  234.     programs determine the parameters dynamically.
  235. The 3c503 driver was enabling interrupts when it shouldn't have.
  236. Some drivers would return a parameter error if some of the parameters
  237.     weren't specified.
  238. The bus type in 82586-based drivers is now a variable rather than an equate.
  239. The 82586-based drivers now have multicast partially implemented.
  240. The 3c523 driver reads the POS registers before parsing the parameters.
  241. The 82586-based drivers disable interrupts prior to being initialized.  Some
  242.     of these drivers would generate spurious interrupt, which caused
  243.     crashes when interrupt 2 was used.  The BIOS enables interrupt 2
  244.     automatically.
  245. The 82586-based drivers now sense the amount of memory automatically, even
  246.     though they still only use 8K.  This means no problems with 386
  247.     memory mappers.
  248. The maximum number of handles was increased from 8 to 10 (MAX_HANDLE).
  249. The .286 directive was removed from DEFS.ASM so that no 286 code accidentally
  250.     slips in.
  251. The function dispatch routine in HEAD.ASM was changed for version 1.9 of the
  252.     PDS.
  253. As promised in the version 4.x notes, the unique handle creation code went
  254.     away.
  255. If a driver sets int_no to zero, the timer interrupt won't get masked off. :-)
  256. Dave Horne changed the 3c503 driver into a ne2000 driver.
  257. Dave Horne changed the way upcalls are called so that the upcall handler can
  258.     exit using either a far return, or an iret.
  259. David E. Johnson fixed the 3c505 driver.
  260. Joe Doupnik improved HEAD.ASM by adding some comments and he brought it closer
  261.     into compliance with the PDS.  He also changed access_type so that it
  262.     would let driver users ask for all packets even though other driver
  263.     users were asking for some packets.
  264. Joe Doupnik added packet driver support to PC/IP's netwatch.
  265. Many useful subroutines were split out into separate files, rather than
  266.     being duplicated in every program that used them.  These routines
  267.     are in the public domain.
  268. The various packet driver clients (pkt*.com) were changed to use these
  269.     separate files.  They also now use a macro to call the packet driver.
  270.     They also report any and all errors that may occur.  They also ask
  271.     the driver for driver_info, then uses it to access_type.
  272. The packet receive tester, pktall, test to see if the driver is writing too
  273.     much or too little, or in memory that it doesn't own.
  274. SLIP8250 now requires a command-line switch to enable hardware handshake.
  275. TAIL.ASM now prints the arcnet address, if the driver is an arcnet driver.
  276. Jan Engvald improved the wd8003e driver:
  277. The wd8003e driver now supports the E EBT EB ET/A and E/A boards.
  278. The wd8003e memory base default was 0xc400 and is now 0xd000.
  279. The wd8003e driver supports multicast modes.
  280. The wd8003e driver has a better test for occupied memory, and a switch to
  281.     disable the occupied memory test in case it loses.
  282.  
  283.  
  284. Changes from version 4.0 to 5.0 of the drivers:
  285.  
  286. Summary: New: 3c505, ne1000, ni9210, ibmtoken.  Bugs fixed: all drivers.
  287.  
  288. Krishnan Gopalan and Gregg Stefancik wrote a packet driver for the 3c505.
  289. Brian Fisher wrote an "Ethernet" packet driver for the IBM Token Ring Adapter.
  290. Eric Henderson wrote a packet driver for Novell's NE1000.
  291. Russell Nelson modified ni5210 to be a ni9210 driver.  This entailed some
  292.     changes in 82586.asm.
  293. Russell Nelson wrote pktmode, a utility to set the receive mode.
  294. Russell Nelson wrote pktaddr, a utility to set the Ethernet address.
  295. Russell Nelson wrote pktall, a utility to help debug packet reception.
  296. Trace.com is a little bit more helpful about how to run it.
  297. Vance Morrison added starlan support to the wd8003e driver.
  298. Eric Henderson improved it.
  299. Deborah Swanberg noticed that the 3c503 driver didn't timeout properly
  300.     if there was a failure to complete a transmit.
  301. The set_address routine in the device dependent files now
  302.     returns the address length as it should have.
  303. Head.asm now keeps a copy of the hardware address set by set_address.  This is
  304.     used by f_get_address to return the current address.  The device
  305.     dependent get_address routine always returns the PROM address.
  306. The set_rcv_mode routine didn't work.  Not at all.
  307. The access_type routine returns more appropriate errors.
  308. The f_get_address routine wasn't passing the right address length to
  309.     get_address.
  310. Tail.asm now checks for extra parameters on the end of the line.
  311. Dan Lanciani added changes to ni5210 version 4.2 to increase reliability.
  312.     It works for him.  Unfortunately, I have had reports from other
  313.     people that it breaks Novell.  So, these changes are in "if DAN"
  314.     conditional assembly.  If your Novell connection gets dropped,
  315.     try reassembling ni5210 after setting "DAN equ 0" in 82586.asm
  316. Packet drivers for the NE2000 and UB NIC PC/2 are in the works, but don't
  317.     hold your breath.
  318. A packet driver for the Xircom pocket Ethernet adapter is undergoing testing.
  319. Jan Engvald found and fixed a bug in the wd8003e memory presence check.
  320.  
  321.  
  322. Changes from version 3.0 to 4.0 of the drivers:
  323.  
  324. Russell Nelson added code to enable interrupts in the body of the packet
  325.     driver.
  326. Denis DeLaRoca added hardware handshake to the SLIP8250 driver.
  327. John Grover optimized the SLIP8250 driver to work at 38.4 Kbps.
  328. Russell Nelson added some sanity checking to slip8250 to warn the user about
  329.     possible incorrect parameters.
  330. Bob Clements added a switch to select thick or thin Ethernet in the 3c503.
  331. Russell Nelson found a minor bug in NI5210 that caused it to fail to
  332.     initialize sometimes.  Thanks to everyone who reported it.
  333. Dan Lanciani found a race condition in the 80586 code common to the
  334.     NI5210 and 3c523 drivers.
  335. Russell Nelson split out the 82586 code from the NI5210 and 3c523 drivers
  336.     into a single file.
  337. Russell Nelson added memory address checking to NI5210.
  338. Glen M. Marianko devised a method for determining the memory size of the
  339.     NI5210 automagically.
  340. Jan Engvald enhanced the packet driver code for Western Digital Ethernet
  341.     cards to handle the micro channel version WD8003ET/A.
  342. Jan Engvald enhanced TAIL.ASM to return error codes to DOS.
  343. Jan Engvald enhanced HEAD.ASM to be aware of running on a MicroChannel bus.
  344. Rainer Toebbicke wrote the BICC Data Networks' ISOLAN 4110 ethernet driver.
  345. Russell Nelson wrote the packet driver tracer and dumper (trace.com and
  346.     dump.exe).
  347. Russell Nelson added support for set_rcv_mode, get_rcv_mode,
  348.     set_multicast_list, and get_multicast_list to the infrastructure.  It
  349.     is up to the individuals who wrote the individual drivers to add the
  350.     device-dependent support.
  351.  
  352.  
  353. Changes from version 2.0 to 3.0 of the drivers:
  354.  
  355. GNU General Public License adopted.  The restriction on commercial usage
  356.      prevented some companies from distributing the packet drivers.  This
  357.      is entirely my idea, so send any comments to nelson@clutx.clarkson.edu.
  358. 3c523 driver added, thanks to Dan Lanciani (ddl@harvard.edu).
  359. Gregg Stefanik (wstef@eng.clemson.edu) is working on a 3c505 driver.  Don't
  360.      bug him about it unless you're willing to be a alpha tester.
  361. User documentation added (DRIVERS.DOC).
  362. Brad Clements (no relation to Bob Clements) fixed the NI5210 driver so that
  363.      it will work with a MTU of 1500.
  364. The NI5210 now checks for shorts and opens before it starts up, thanks to
  365.      Brad.
  366. All memory-mapped packet drivers now check the packet length in send_pkt to
  367.      ensure that too-long packets get trapped.  All packet drivers will
  368.      work with MTUs of 1500 (plus 14 bytes of Ethernet header).
  369. Deborah Swanberg noticed that attach_type was returning NO_CLASS
  370.      when it meant to return NO_TYPE.
  371. She also noted that packet drivers weren't returning unique handles.  This
  372.      is only a problem with Phil Karn's code, as his code directs *every*
  373.      packet driver to the same receiver routine.  With non-unique handles,
  374.      it was impossible to tell which packet driver was upcalling the
  375.      receiver.  Unique handles are now generated, based on the starting
  376.      segment of the driver.  The latest version of Karn's code uses different
  377.      receiver routines, so the code to implement this will eventually go away.
  378. Tail.asm now prints the Ethernet address of the interface (if it is an Ethernet
  379.      class device)
  380. Micom has sold Interlan, and Racal has bought it, so perhaps the NI5210 is
  381.      now the Racal-Interlan NI5210?
  382. If anyone is interested in using the Zenith Z-100 with a SLIP packet driver, please
  383.      send me (Russell Nelson) mail.  I have it partially written, but will
  384.      probably never use it myself.
  385. WD8003E and 3c503 sped up slightly -- stole movemem from NI5210.
  386.  
  387.  
  388. Changes from version 3 to 2.0 of the drivers:
  389.  
  390. Version numbering now changed.  If the skeleton changes, the major version is
  391.      incremented and all the minor versions are reset to zero.
  392.  
  393. Support for version 1.08 of the packet driver spec included.
  394. Bob Clements' 3c503 driver added.  See README.503.
  395. Some comments improved.
  396. BAD_COMMAND checking code fixed.
  397. cld instructions added to ensure that DF=0.
  398. NI5210 sped up slightly -- look at movemem in ni5210.asm for an especially
  399.      fast routine to move memory around.
  400.  
  401.  
  402. Changes from version 2 to 3 of the drivers:
  403.  
  404. SLIP8250 can now be one of three classes: SLIP, AX.25, and KISS.
  405. Tail.asm now checks for a packet driver already at the given interrupt.
  406. Tail.asm now echoes its arguments in hex and decimal.
  407. Tail.asm will close stdout so that a file handle won't be used up in
  408.      case the user redirects stdout to NUL.
  409. Head.asm now supports driver termination.
  410. Termin.com added to terminate a driver.
  411. Head.asm now does a stack swap to avoid pushing too many things when
  412.      interrupting MS-LOSS.
  413.  
  414.  
  415. Changes from version 1 to 2 of the drivers:
  416.  
  417. !!  Arguments are now in decimal by default  !!  Use a 0x prefix for hex.
  418.  
  419. DEFS.ASM created.
  420. The loadport macro improved.
  421. SLIP8250 driver added, thanks for a C version from Phil Karn.
  422.      I've tried to put some 16550 support in, but I don't have one to
  423.      test it with.  The documentation insists the TBRE goes low when
  424.      the transmit buffer is not empty, while it makes sense for it to stay
  425.      high while the buffer is not full.  I suspect the documentation is
  426.      wrong.
  427. NI5010 driver added, thanks for a C version from Bill Doster.
  428. WD8003 driver added, by Bob Clements.
  429. Loadport macro added to WD8003 driver by Russell Nelson.
  430. Numeric arguments may now be specified in octal, decimal or hex, using the
  431.      C notation.
  432. Numeric arguments can now use up to 32 bits.
  433. Source files reformatted.
  434.  
  435.