• Please review our updated Terms and Rules here

Feeling lucky, is the 3c509B compatible with 8088 using NE1000 drivers?

JT64

Experienced Member
Joined
Oct 21, 2008
Messages
402
Location
Sweden
This probably been discussed many times, the 3c509B will work in a 286 8-bit ISA slot however the driver require 286.
I did try it with NE1000.com driver and it will load i have no idea if it connects with the actual board though, it even will load brutmans? tcpdrv.exe, ipxodi.com and lsl.com.

But i do not manage to connect and ping my D-link router unfortunatly i lack twisted pair to try connect another computer directly.
So i was thinking maybe someone more knowledgable can try a 3c509b in a 8088 and see if the driver actually connect with card.

There is many of us 8088, 8086 owners who lack a NIC and a 3c509b in NE1000 mode maybe an easy way to get them up on internet.
But does it really work, the drivers loaded and configured for sure, but i can not reach the router.
I use NE1000.COM version 11.5.3
JT
 
This probably been discussed many times, the 3c509B will work in a 286 8-bit ISA slot however the driver require 286.
I did try it with NE1000.com driver and it will load i have no idea if it connects with the actual board though, it even will load brutmans? tcpdrv.exe, ipxodi.com and lsl.com.

But i do not manage to connect and ping my D-link router unfortunatly i lack twisted pair to try connect another computer directly.
So i was thinking maybe someone more knowledgable can try a 3c509b in a 8088 and see if the driver actually connect with card.

There is many of us 8088, 8086 owners who lack a NIC and a 3c509b in NE1000 mode maybe an easy way to get them up on internet.
But does it really work, the drivers loaded and configured for sure, but i can not reach the router.
I use NE1000.COM version 11.5.3
JT

Can a packet driver load without a compatible NIC in the computer?
 
Tried the NE1000.COM version 11.5.3 packet driver with a 3c509B. It loads but reports a wrong MAC address and mTCP can't access to the network.
 
It's not going to work.

Think of a packet driver as the device driver for the Ethernet card. It has to match the Ethernet card, or at least be in the same "family" of chipset that the Ethernet card uses to have a chance. You don't expect a Tseng Labs VGA card to use the driver from an S9 video card, do you?

The 3Com 3C509B (Etherlink III) is a good card, but it is not an NE1000 or an NE2000.

If a packet driver loads it might find some piece of hardware willing to talk to it at the I/O ports it is using. Most Ethernet cards for older machines just use I/O ports and an IRQ. Just because you got a MAC address doesn't mean it worked, or that it is even talking to an Ethernet card.

Compare the MAC address reported by the packet driver to the MAC address printed on the card. If you can't find a sticker on the card with the MAC address then the MAC address reported by the packet driver should at least match the range assigned to the manufacturer of the card. All Ethernet cards have unique addresses, assigned by a central entity. Here is a link to a web site that allows you to look them up:

http://standards.ieee.org/develop/regauth/oui/public.html

The key is the first three octets of the MAC address. Those should match in the manufacturer database. For example, a card that starts with "00-01-01" belongs to 3Com. (If you search for 3Com you will find they have many different assignments, as they have sold a boatload of cards over the years.)

Even with the correct I/O ports selected you have to ensure that the IRQ is chosen correctly, or you will be able to send but not receive packets.
 
I know this is a little off topic, but will the ne2000 work in an 8 bit slot and a v20?
 
So if I understand, we must use the 3c509.com packet driver but it only works in 286+ machines. Why this requirement? Does it use protected mode?
 
I see that the driver has different input routines for 286 and 386:

Code:
	cmp	is_386,0
	jne	io_input_386
io_input_286:
	push	cx
	shr	cx,1
	rep	insw
	pop	cx
	jnc	io_input_286_1		;go if the count was even.
	insb				;get that last byte.
	in	al,dx			;and get the pad byte.
	test	cx,2			;even number of words?
	jne	io_input_done		;no.
	in	ax,dx			;yes, get the pad word.
	jmp	short io_input_done
io_input_286_1:
	test	cx,2			;odd number of words?
	je	io_input_done		;no.
	in	ax,dx			;yes, get the pad word.
	jmp	short io_input_done

io_input_386:
	.386
	push	eax
	push	cx			;first, get all the full words.
	shr	cx,2
	rep	insd
	pop	cx
	test	cx,3			;even number of dwords?
	je	io_input_386_one_byte	;yes.
	in	eax,dx			;no, get the partial word.
	test	cx,2			;a full word to be stored?
	je	io_input_386_one_word
	stosw				;yes, store it,
	shr	eax,16			;and move over by a word.
io_input_386_one_word:

	test	cx,1			;a full byte to be stored?
	je	io_input_386_one_byte
	stosb				;yes, store it.
io_input_386_one_byte:
	pop	eax
	.286

io_input_done:

Maybe if someone implements a specific 8088 input routine...
 
It's not going to work.

Think of a packet driver as the device driver for the Ethernet card. It has to match the Ethernet card, or at least be in the same "family" of chipset that the Ethernet card uses to have a chance. You don't expect a Tseng Labs VGA card to use the driver from an S9 video card, do you?

The 3Com 3C509B (Etherlink III) is a good card, but it is not an NE1000 or an NE2000.

If a packet driver loads it might find some piece of hardware willing to talk to it at the I/O ports it is using. Most Ethernet cards for older machines just use I/O ports and an IRQ. Just because you got a MAC address doesn't mean it worked, or that it is even talking to an Ethernet card.

Compare the MAC address reported by the packet driver to the MAC address printed on the card. If you can't find a sticker on the card with the MAC address then the MAC address reported by the packet driver should at least match the range assigned to the manufacturer of the card. All Ethernet cards have unique addresses, assigned by a central entity. Here is a link to a web site that allows you to look them up:

http://standards.ieee.org/develop/regauth/oui/public.html

The key is the first three octets of the MAC address. Those should match in the manufacturer database. For example, a card that starts with "00-01-01" belongs to 3Com. (If you search for 3Com you will find they have many different assignments, as they have sold a boatload of cards over the years.)

Even with the correct I/O ports selected you have to ensure that the IRQ is chosen correctly, or you will be able to send but not receive packets.

As you said i can not find the given macadress in the lists i find on internet, FE:FF:FF:FF:FF:FF does not seem to appear for any card.
Time to start look for a NE1000 compatible card, problem will be to find a one with TP connection i guess.

Who knows maybe some assembler guru make the 3c509B driver work.
 
Last edited:
If your card has an AUI port on it (that looks like a 15 pin D-shell style connector) you can use an external "transceiver" to get on a modern, twisted pair network. Look up the Centrecom 210 series on Google - they work great.

(In the beginning, all Ethernet cards had AUI ports and the transceiver was connected by a cable. The transceiver was known as a "vampire" tap, as it would have a pin that would pierce the thick-net Ethernet cable. Using the same AUI port other transceivers are possible, making it easy to update an ancient card to use a modern network.)
 
JT64, I can keep an eye open for you on the domestic market as well. From personal experience, I think Realtek based cards might be easier to get going in 8-bit mode, but I could be wrong.
 
If your card has an AUI port on it (that looks like a 15 pin D-shell style connector) you can use an external "transceiver" to get on a modern, twisted pair network. Look up the Centrecom 210 series on Google - they work great.

(In the beginning, all Ethernet cards had AUI ports and the transceiver was connected by a cable. The transceiver was known as a "vampire" tap, as it would have a pin that would pierce the thick-net Ethernet cable. Using the same AUI port other transceivers are possible, making it easy to update an ancient card to use a modern network.)

That seem like a good way to do it, without an oldfashion switch, was there switches that had a connection for AUI ports? I think i had an 8-port(or 10 port) TP switch with a single AUI connection at some point in time.

But first i must get a NIC.
 
Last edited:
As you said i can not find the given macadress in the lists i find on internet, FE:FF:FF:FF:FF:FF does not seem to appear for any card.
Time to start look for a NE1000 compatible card, problem will be to find a one with TP connection i guess.

Who knows maybe some assembler guru make the 3c509B driver work.

With all bits set (FF:FF...) I don't think it's actually reading anything as FF:FF... is not a valid ethernet address. Which means that the ne1000 driver isn't talking to it correctly.
 
Good news! I managed to replace all the 286 specific asm instructions with generic 8086 asm instructions and now the packet driver seems to work in a 8088 based XT machine.
Please test it, you will find the files attached to this post.
 

Attachments

  • 3c509.zip
    44.2 KB · Views: 11
Good news! I managed to replace all the 286 specific asm instructions with generic 8086 asm instructions and now the packet driver seems to work in a 8088 based XT machine.
Please test it, you will find the files attached to this post.

The packetdriver loading like a charm, tcpdrv likewise. Now i just need to connect it to a router or computer to see if it really works, using ping.
Thank you, i think many people will put this to good use with their 3c509b cards, you assembler guys rather incredible i would not even now where to start.
What tools did you use todo such a thing and how do you know which instructions is 286, do you just keep their equivalent 8086 instruction in the head?

How many (instructions) lines of code did you need to change, how long time?
Would this be viable to put a AWE32 soundcard in an 8088, or does it use the full 16-bit on card for audio?

Thank you (hope it work full way)
 
Forget the AWE32, it requieres a lot of CPU power to manage the wavetable synth. If you want wavetable MIDI in a 8088 look for a non PnP Sound Blaster 16 (for the MPU401 port) and a real synth like the Roland MT32 or the SCC-55. As a cheaper option, a waveboard like the Yamaha DB50XG / NEC XR385 sounds pretty well.
 
Forget the AWE32, it requieres a lot of CPU power to manage the wavetable synth. If you want wavetable MIDI in a 8088 look for a non PnP Sound Blaster 16 (for the MPU401 port) and a real synth like the Roland MT32 or the SCC-55. As a cheaper option, a waveboard like the Yamaha DB50XG / NEC XR385 sounds pretty well.

I have a CT1350 inside now terribly noisy, and as midi device the OPL pretty much sucks at least for me. It does have midi out port though, and i have a Roland SC-7 (soundcanvas) laying around here but i do not think i can route the CT1350 midi to both record midievents and play the SC-7.

I guess i can use midi thru to get SC-7 sound while i record and play from sequenser, but it is doubtful games will play over the midi OUT->synth->midi thru->SC-7.
 
Back
Top