The frustrating thing for me, besides not being able to figure it out, is the sneaky suspicion that it's due to something fairly simple that would jump out at me if I were on the scene looking at it.
OK, how's about using tcpdump to see what's going on? If you don't have tcpdump already installed, it should be in a package on your distro CDs. Otherwise, I'm sure it can be found on the Web.
Run tcpdump on your Linux box. I'm pretty sure you'll need to be root to do this, or even to find it with which or whereis. Because you only have the two computers on the network, there shouldn't be any need for you to apply filters; just run tcpdump with no arguments.
Then try to ping the Linux box from the Win98 box. Here is a capture of when I pinged my Linux box from my Win98SE box:
[root@pc10593 /root]# tcpdump icmp
Kernel filter, protocol ALL, datagram packet socket
tcpdump: listening on all devices
11:33:52.797643 eth0 < pc14402 > pc10593: icmp: echo request
11:33:52.797778 eth0 > pc10593 > pc14402: icmp: echo reply
11:33:53.800172 eth0 < pc14402 > pc10593: icmp: echo request
11:33:53.800272 eth0 > pc10593 > pc14402: icmp: echo reply
11:33:54.805115 eth0 < pc14402 > pc10593: icmp: echo request
11:33:54.805198 eth0 > pc10593 > pc14402: icmp: echo reply
11:33:55.810058 eth0 < pc14402 > pc10593: icmp: echo request
11:33:55.810150 eth0 > pc10593 > pc14402: icmp: echo reply
8 packets received by filter
[root@pc10593 /root]#
My Win98SE box is pc14402 and my Linux box (RH7.0) is pc10593. Because I'm on a big network, I applied a filter to only look at the icmp protocol, which ping uses, and then did a ^C when my Win98SE completed its ping. You will want to apply tcpdump without the "icmp" after it, because you want to know if ANYthing makes it across.
Similarly, when I had my Linux box ping its own IP address, I got:
[root@pc10593 /root]# tcpdump icmp
Kernel filter, protocol ALL, datagram packet socket
tcpdump: listening on all devices
11:49:28.145811 lo > pc10593 > pc10593: icmp: echo request
11:49:28.145811 lo < pc10593 > pc10593: icmp: echo request
11:49:28.145955 lo > pc10593 > pc10593: icmp: echo reply
11:49:28.145955 lo < pc10593 > pc10593: icmp: echo reply
11:49:29.141927 lo > pc10593 > pc10593: icmp: echo request
11:49:29.141927 lo < pc10593 > pc10593: icmp: echo request
11:49:29.142027 lo > pc10593 > pc10593: icmp: echo reply
11:49:29.142027 lo < pc10593 > pc10593: icmp: echo reply
11:49:30.141902 lo > pc10593 > pc10593: icmp: echo request
11:49:30.141902 lo < pc10593 > pc10593: icmp: echo request
11:49:30.141997 lo > pc10593 > pc10593: icmp: echo reply
11:49:30.141997 lo < pc10593 > pc10593: icmp: echo reply
12 packets received by filter
So you can use that to verify tcpdump's operation and/or other tests you can think of.
tcpdump has also been ported to Windows as WinDump, as has a packet-sniffer front-end, Ethereal. For the time being, tcpdump would probably be easier to get set up.
BTW, you could also use tcpdump to capture the packets as you ping from your Linux box to the Win98SE and/or try other networking operations.
One that comes immediately to mind that you should look at are the ARP messages. The sender will broadcast an ARP request in order to get the MAC address of the destination NIC, but only if it's in the same network and it's not already in its ARP table (run arp from the command line to view manipulate the ARP table). If the IP address is on a different network, then the sender will not attempt an ARP, but rather will send the outgoing packet to the gateway router.
Now THAT could be a worthwhile test. See if the sender of the ping does an ARP or sends it to the gateway instead. Be sure to check the ARP table before you try. You may have to clear the ARP table in order to do the test. Come to think of it, if the other box is already in the ARP table, then you know it had been able to do it before. The arp command exists on both Linux and Windows.
BTW, what is the address of the gateway router? Common practice is to make it host 1 -- eg, 192.168.0.1 -- , but that's the IP address you gave to the Linux box. If the two got set to the same IP address, I don't know what would happen. Ditto the DNS server addresses.