Setting up 3COM Etherlink 16 ISA network card

4.50 avg. rating (89% score) - 2 votes

With some free time during the weekend and being a bit nostalgic, I pulled out a bunch of old ISA network cards from my junk box, planning to get my vintage 80386 computer on the Internet. After a visual check of the cards’ physical condition, I selected the 3COM Etherlink 16 (3C503-TP) card from the lot and use it for my experiment. This card has an RJ45 and an AUI port:

3c503

The first step is to install a packet driver for the card under MS-DOS 6.22, available from crynwr. After that, take note of the jumper settings on the card and execute the following command:

3c503.com 0x60 3 0x2e0 1

where

  • 0x60 is the address of the packet driver, which should be left as default,
  • 3 is the IRQ settings of the card (which should be a free IRQ and match the card jumper settings on the card)
  • 0x2e0 is the base address of the card – this should again match the jumper settings
  • 1 (the last parameter) tells the packet driver to use the RJ45 port. Without this, it will default to the AUI port, and will report a connection error unless you have the card connected to an AUI router.

If everything is fine, you will see the card MAC address, reported under “My Ethernet address” after executing the above command.  Now it’s time to run DOS Internet apps (wget, minuet, doslynx, etc) to surf the web the vintage way!

3c503 setup

If your network card does not come with a packet driver ready, another method is to convert its ODI/NDIS driver to a compatible packet driver, known as shimming. More information is available here.

Unfortunately, things did not seem to go smoothly for me. Repeated attempts to use various DOS Internet apps either failed with timeout errors or hang the entire system. Two most popular DOS TCP/IP stacks, MTCP and WATTCP, also failed to get an IP address via DHCP. Thinking that this might be due to an IRQ conflict, I ran CheckIt only to confirm that the IRQ settings were correct (IRQ 3 selected by the card was available):

checkit_irq

Next I tried to run the 3COM diagnostic tool, available on the setup disk. The tool correctly detected the card MAC address, IRQ and DMA setings:

3c503_setup_irq

Running the internal tests presented me with the following results:

3c503_test_failed1

The error message read – “program tested DMA channels 1, 2, and 3 which failed”. As this failure is usually due to conflict with existing cards or DOS device drivers, I tried to run the tool again on a clean DOS boot disk, only to be presented with a different error:

3c503_test_failed2

The error now changed to “ASIC test failed”. Here ASIC stands for “application-specific integrated circuit“, which, in layman terms, meant that the chips on the card had failed. Since there were no other things that may cause incompatibilities, I concluded that my card was faulty and replaced it with another 3C503 card also from my junk box.

One point to add is that the tests under “Group 2″ and “Group 3″ (network testing and echo user testing) will always fail unless you have the necessary loopback cable installed. There is no need to attempt these tests unless you have a good reason to do so.

Running the diagnostic tool again and the card passed the test!

3c503_setup_success

mTCP now successfully negotiated the IP address with my router’s DHCP server:

3c503_packet_driver

wget also worked properly, albeit at only 8-9KB/s, a very slow speed given that the 3C503 card is 10Mbps. This might be due to some bottleneck in the TSR implementation of the packet driver.

wget_download

Under Windows 3.1 with Microsoft TCP/IP v3.11b, I could download at a much faster speed (40KB/s) under Internet Explorer 3.0:

ie_download

With the connection properly set up, the next step is try to browse the modern web under Windows 3.1. This is a challenge due to the introduction of new web technologies (HTML5, CSS, Javascript) that were not known at the time these vintage browsers (Internet Explorer 3.0, Netscape, etc.) were built.

To overcome this issue, I ran Macproxy, a simple Python-based web proxy that filters out incompatible HTML content and returns the simplified page to the browser, and specified the address of the proxy under the browser proxy settings. With this, Netscape managed to display a readable version of Reuters home page:

IMG_20171105_143233

However, to my disappointment, Wikipedia still failed to render, saying HTTP 405 Method Not Allowed:

IMG_20171105_181349

The issue is due to the browser’s attempt to create a HTTP tunnel for HTTPS URLs that are accessed through a proxy server by using CONNECT (instead of POST or GET) as the HTTP method. The request will fail because our simple proxy server was never programmed to handle CONNECT, only POST and GET:

app = Flask(__name__)
session = requests.Session()

@app.route('/', defaults={'path': ''}, methods=['GET'])
@app.route('/<path:path>', methods=['GET'])
def get(path):
url = request.url
resp = session.get(url, params=request.args)
return macify(resp.content), resp.status_code

@app.route('/', defaults={'path': ''}, methods=['POST'])
@app.route('/<path:path>', methods=['POST'])
def post(path):
url = request.url
resp = session.post(url, data=request.form, allow_redirects=True)
return macify(resp.content), resp.status_code

if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)

Obviously accessing Wikipedia directly without the proxy server will also fail, since this old version of Netscape cannot handle modern SSL encryption:

netscape_https_error

I do not have the time to improve the Python script to support HTTPS, so I will have to be happy with reading news via HTTP for now, unless someone can provide a HTTPS-ready version of the Macproxy script.

The 3C503 setup disk and the packet driver can be download here for those who are interested.

4.50 avg. rating (89% score) - 2 votes
ToughDev

ToughDev

A tough developer who likes to work on just about anything, from software development to electronics, and share his knowledge with the rest of the world.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>