Path: utzoo!attcan!uunet!lll-winken!lll-tis!helios.ee.lbl.gov!pasteur!ucbvax!agate!bionet!apple!rutgers!elbereth.rutgers.edu!dorm.rutgers.edu!dpz From: dpz@dorm.rutgers.edu (David P. Zimmerman) Newsgroups: comp.protocols.tcp-ip.ibmpc Subject: Re: CMU PC/IP WD8003 driver Message-ID: Date: 26 Nov 88 02:14:11 GMT References: <686@husc6.harvard.edu> Organization: Rutgers University Lines: 103 OK - my NCSA FTP problem was that I was using 1.02 instead of 1.04. I've got the 7/5/88 versions of both TELNET and FTP now, which work fine with my WD8003. Yes, I did use CUSTOM.EXE to set the card's base memory address in NETDEV.SYS. I set the base I/O address to 0x0360, the base memory address to 0xD0000 (which shows up as 0,D), the xmit and recv DMA channels to 0, and the interrupt vector to 5. Every jumper I could find on the card is set correctly. Theoretically, the PC/IP WD8003 library should be delving into the hardware to set the base memory address on its own - i.e., you don't muck with jumpers for that. I got the new NETDEV.SYS to work - but you guys may want to note something. I was using device=d:\pcip\obj.4d\netdev.sys in my CONFIG.SYS and nothing worked. CUSTOM.EXE spat out Error opening netcust.sys: No such file or directory and all the network programs said Error: open failed for netcust Check for improper NETDEV.SYS installation When I put device=d:\pcip\obj.4d\netdev.sys 1 in my CONFIG.SYS, suddenly birds are singing and flowers are blooming. Well, mostly. Anyway, I can play with the NETCUST1: (but not the NETCUST: !) device via CUSTOM.EXE, have the software find it, etc. I end up having to set NETCUST=NETCUST1 in my AUTOEXEC.BAT. What really blows my mind is the minuscule differences between the old NETDEV.ASM and the new one. I've come to the preliminary conclusion that what you guys think you are getting isn't really what you're getting. The only significant difference between the old and new versions is in the parsing of the command line ([si]*). I stared at the code for a while (learning 8088 assembly along the way) and followed the logic. The differences in the parsing start when you hit a space. The old version will skip all the characters until a space, skip that space, and take the character after it as the network device number if the character was 0x20 or greater. Otherwise it will return a space as the interface number. The new version will skip all the characters until a space, skip all the spaces, then take the next character unconditionally. Additionally, and most importantly, both versions will return a space as the interface number if they didn't find a space on the command line (i.e., you had "device=foo"). Both algorithms *should* work if MSDOS is doing the expected thing with the command line. I claim that I _shouldn't_ be seeing the effects that I'm seeing, and that MSDOS is slapping one or more spaces onto the end of the device=d:\pcip\obj.4d\netdev.sys line. Then, the new version of NETDEV.SYS would skip the space(s) and unconditionally return the CR as the interface number, *not* a space! The old version would do the "right" thing, which is to end up returning a space. My bugfix would be to just keep using the old version of NETDEV.ASM, unless someone has an emotional attachment to the new version. I don't see any technical reason to have mucked with it. What setup do you guys have your WD8003 stuff running successfully on? I'm bashing on a 5M Compaq 386/20, 360M disk in 12 partitions, a WD8003 (of course :-), and a VGA card/monitor. I'm using MSDOS 3.3x, MSC 5.0 and MASM 5.0. Incidentally, I had to hack both versions of NETDEV.SYS, new and old, due to what I think is an OBOB in MASM 5.0. Both instances of mov es:status[bx],00100H became mov WORD PTR es:status[bx],00100H If I tried using 00101H as a test, it compiled fine, but using 00100H made it complain and die bitterly. 00099H to the assembler is, understandably, not obvious whether it should be a byte or a word, but 00100H is most certainly a word. Also, MSC 5.0 made me put some /NOE flags into the link phases of some of the makefiles, specifically monitor.4d, custom.4d, netwatch.4d, term.4d, and tn.4d. The linker says: d:\pcip\lib\[argle].LIB(_wbyte.c) : error L2044: __wbyte : symbol multiply defined, use /NOE So I did :-). [argle] is different libraries at different time - for TERM it is H194D, for CUSTOM it is NET4D. I'm not sure if this would have anything to do with my WD8003 problems. Also also, \srccmd\monitor\monitor.c needed a ; on line 642 for MSC 5.0. David -- David P. Zimmerman, the Dorm Networking Pilot Project, the UUCP Project, etc dpz@dorm.rutgers.edu rutgers!dpz dpzimmerman@zodiac.bitnet