-------------------------------------------------------------- "cnet.device" An Experimental Amiga PCMCIA Network Card Driver -------------------------------------------------------------- V0.7 By Bruce Abbott (bhabbott@inhb.co.nz) Introduction: Many A1200 owners have been asking the question "will a PC-CARD work on my Amiga?". The usual reply to this is "No, because there are no drivers for the Amiga". It has also been suggested that the A1200 PCMCIA port is incompatible with the PC-CARD standard. With PC-CARD Modems and Ethernet cards being so cheap, it was only a matter of time before "Only the Amiga makes it possible". Thus I now present "cnet.device", an Amiga driver for the CNet CN40BC and Accton EN2216 PC-CARD ethernet adapters! Requirements: - A CNet CN40BC or Accton EN2216 PCMCIA Ethernet card. (Some other cards have also been reported to work - see the compatibility list). - An Amiga 1200 or Amiga 600. - Network software. Tested with AmiTCP 3.0b, Miami 2.0g and Envoy 2.0 - A network :^) Usage: Simply copy the file "cnet.device" to where you want it (usually "DEVS:networks/") and set up your network software for an ethernet driver. For AmiTCP 3.0 this would involve editing the "interfaces" file and adding a line like "cnet dev = devs:networks/cnet.device". Then you would start it up with "ifconfig cnet0 192.168.0.1". Performance: My network consists of an A1200 030/40MHz conected via co-ax cable to a 486DX-33 running Windoze 95. Software on the Amiga is AmiTCP3.0b and ch_NFS, and the pecee is using MSTCP/IP and SOSNT. This gives me access to the peecee drives on the Workbench. With this setup, file transfer speeds reach about 200KBytes/Sec. FTP transfers between my A1200 and an A600 with Viper630 (030/40MHz) have acheived 300KBytes/Sec. Limitations: Some advanced SANA-II functions are not working in this version. This should not affect normal operation. The only way to remove the device from memory is to re-boot! A1200s require an internal modification to the CreditCardReset line to ensure correct card initialisation. If you haven't done this mod, you may need to wait until after powering up your A1200 before plugging the card in. If the 'Link' LED stays on but you are using co-ax cable, this indicates that the card is NOT working properly. Also, sometimes the card can appear to be OK but still doesn't work correctly. cnet.device v0.7 has more stringent testing than earlier versions, and will not go online unless the PCMCIA attributes are correct (this is required to enable hot-swapping and to be compatible with more cards). In most cases if the card passes these tests then it is OK, but for best results you should apply the reset modification! Hardware Modification Needed for A1200 PCMCIA port Cnet.device v0.5 used a config file to compensate for the Card Reset problem with A1200s. In V0.6 this was abolished, and replaced by a more reliable hardware modification. This may also help with cards that worked with v0.4, but not with v0.5. If for some reason you cannot have the hardware modification done you can now remove and re-insert the card to make sure that it is reset properly, even if the device has already been opened (however this is not recommended). Surf Squirrel Problems The Surf Squirrel SCSI/Serial adapter is not a proper PCMCIA card, and has no attribute memory. Unfortunately, its driver takes over the PCMCIA port and prevents other drivers from owning their cards. This will happen whenever squirrelscsi.device is opened, even if the Surf Squirrel card is never plugged in! Card_info Diagnostic Tool The 'card_info' program can be used to identify a PCMCIA card, and will display a summary of its attributes. It also produces a binary dump of the attribute and I/O memory, which can be analysed for more detailed information. If you have an unknown card that doesn't seem to work, run this program and send the 'card_info.bin' file to me - after examining this I might be able to solve your problem. Example Network Files Because many people seem to have trouble setting up an Ethernet network, I have included a copy of my own network configuration and startup script files, which you can use as a template for your own installation. Please change the username etc. to suit. History: V0.1 First Aminet Release - It worked, just. V0.4 Second Aminet Release - Added several SANAII commands for compatibility with Miami. - Enabled interrupts during RemoteWrite. Should no longer cause serial port overruns. - Improved error checking in case of card initialisation failure. Now doesn't GURU if device is opened twice! Also tested it with Enforcer, which did not detect any illegal memory accesses. - Relaxed hardware address verification to accept the Accton EN2216. Now it might possibly work with other 'NE2000 compatible' cards. - Unrolled loops to improve data transfer speed. Now about 20% faster on an unexpanded A600. Code size got bigger as a result :( - Hack to fix problem with missed interrupts. Now the device clears the Gayle interrupt bits instead of letting card.resource do it. V0.5 Third Aminet Release - Accepts 802.3 packets (probably, untested). - Sets BROADCAST bit in io_flags when appropriate. - Now examines PCMCIA attribute memory to determine the value to write into the Card Configuration Register. This should work with all NE2000 compatible PCMCIA network cards, even those with different CCR offsets. - If attribute memory is not found, cnet.device tries to open the file "s:cnetdev.config" and read from it the Card Configuration Register offset, Configuration ID, and ROM Station Address. This often revives a card that did not power up properly. The 'cnetconfig' program is supplied for creating this file. V0.6 Fourth Aminet Release - Removed cnet.config stuff, and replaced with a hardware mod. This mod should be done on all A1200s (not required on the A600). - Now cards are hot-swappable. As a result, only proper network cards will be accepted. Other types of cards are ignored so that other drivers can access them. - I/O addressing now supports a 64KByte range. Previously this was only 1KB, which may have prevented some cards from working. - Accepts all Card Configuration Register address sizes (previously the address was assumed to be 16bit, but some cards are 24 bit!). - Tighter data transfer loops, which are slightly faster on a machine with small CPU caches (eg. 68030). - Un-supported commands now return S2ERR_NOT_SUPPORTED. - 'card_info' program provided for viewing card attributes. v0.7 Fifth Aminet Release - fixed harmless bug in init_nic - remote DMA timeout test could not fail! - Now remembers copytobuf/copyfrombuf tags for each opener. Allows simultaneous use of eg. AmiTCP and Envoy. - OnEvent types ONLINE and OFFLINE now return immediately if the device is already in the wanted state. Legal Mush: To encourage further development in PC-CARD devices for the Amiga, I am placing the source code for this project into the Public Domain. You can freely use or abuse it as you wish. I have also included some other authors' code for reference purposes, please respect their copyrights. Please note that this driver is not a finished product, and is almost certain to harbour a few bugs. Thus I will not be held responsible for any loss or injury that you may incur while using it. I cannot guarantee compatibility with your system. All I can say is it works for me.