the 3Com Etherlink III ISA (aka 3C509/3C509B) cards supports up to 10 MHz ISA bus operation so ideally you would want an EEPROM with a speed rating of 100 ns or faster but you would probably be OK with a 120 ns part as well since most machines run the ISA bus at 8-8.33 MHz. It needs to be at least 8 KB but 16 KB would be preferable so you can use the Large builds of the BIOS. You could use an EPROM but you will want an EEPROM for easier reprogramming (as there's no need for an UV eraser with EEPROMs). Makes it easier to do upgrades or configuration changes. As for programming the ROM, basically any programmer should be able to do it - the MiniPro TL866CS USB programmer seems to be popular and is fairly cheap. Depending on where you live there might be a friendly forum member with a suitable ROM programmer that could help you as well. (Hint: put your location in the forum profile settings). The BIOS to use would be one of the AT-builds since your machine seems to be a 386. Use the latest version available from www.xtideuniversalbios.org/binaries (currently r591). "AT-builds" means either ide_at.bin (small build - no boot menu), ide_atl.bin (large build - with boot menu) or ide_386.bin (small build - no boot menu). Note that there are other differences between small and large builds, not just the lack/presence of the boot menu (see www.xtideuniversalbios.org for more, albeit slightly out-of-date info). If you feel adventurous you can also checkout the sources and do a custom build yourself. Either way you do it, remember to configure the BIOS-file using the configurator (XTIDECFG.COM) before flashing it. The simplest way is usually to load the file and select "Configure XTIDE Universal BIOS" | "Auto Configure" options on the intended machine (a drive must be connected to the IDE interface you're going to use for the autodetection to work). You will also need to run 3C5X9CFG.EXE (supplied on the driver disks from 3Com) to reconfigure the network card to enable the BOOT ROM socket and select the proper ROM size option.