The ObsoNET is the first network card created for the MSX. In 2004, the hardware designer Daniel Berdugo and software developer Nestor Soriano joined forces to create the board that is the object of today’s post.

The cartridge is based on the Realtek RTL8019AS chip and uses a flash memory to implement a BIOS that allows the use of network commands from the Nextor operating system (compatible with MSXDOS). An EPROM stores basic configuration data for the RTL8019AS chip and a side connector is used to plug a network cable to your MSX. A GAL16VB is used to implement the logic required to activate and expose the cartridge to the computer.

In this article I’m documenting the steps I took to build one of the ObsoNET cartridges to be used with my MSX computers. I have the intention to use software to load ROMs from a network storage in the future, and this network card will be used to support the effort.

PCB

The files required to build the original version of the Obsonet are available here. You can download the gerber files and order from any PCB manufacturer.

I have created another version of the PCB that I called Obsonet Reloaded. The goal was to have the board fitting the standard Patola cartridge cases available in Brazil as well as the standard Konami cases available from multiple vendors.

All files required to build and program the new version are available on GitHub at https://github.com/cristianoag/obsonet/

Components

The Obsonet has a combination of SMD and PTH components listed on the table below. I found out that is pretty hard to find the 20Mhz oscillator in its jacketed form and adapted the conventional HC-49U (bigger version) to fit the oscillator spot on the board.

ReferenceValueDescriptionPackageQtdLink
C1-C4100nFC-EUC1206KC12064Ali Express
C6100 uFCPOL-EUE2.5-5E2.5-51Ali Express
C7-C1010nFC-EU050-030X075C050-030X0754Ali Express
CON2RJ45_F555153-1555153-11Ali Express
IC1M29F400MM29F400MSO441Ali Express
IC293C46_SOICAT93CX6SOIC08SOIC8 (you only need
one DIP8 or SOIC8)
1*Ali Express
IC374HC13374HC133DIP161Ali Express
IC4RTL8019ASRTL8019ASRTL8019AS1Ali Express
IC593C46_DILAT93CX6DIP8DIP8 (you only need
one DIP8 or SOIC8)
1*
IC6GAL16V8DGAL16V8DDIP201Ali Express
LED1GreenLed 3mmLED3MM1Ali Express
LED2OrangeLed 3mmLED3MM1Ali Express
Q120MHzHC49GW/HC49UHC49GW/J (or you can adapt
the conventional HC49U)
1Ali Express
R1,R4,R511KR-EU_R1206R12063Ali Express
R2,R3300RR-EU_R1206R12062Ali Express
R627KR-EU_R1206R12061Ali Express
R7200RR-EU_R1206R12061Ali Express
SW1SWITCHMicroswitch 6×66×6 microswitch SMD1Ali Express
TF120F001N20F001NDIL16/121Ali Express

Be aware that the standard PCB for the ObsoNET project doesn’t provide the appropriate through role footprint for the 74HC133 chip. You will need to bend the legs and cut them a bit so you can fit the DIP IC into the SMD footprint on the board. I tried with the SOIC16 variations, but the footprint is too big for them.

Before soldering all components to the board you need to program at least the 93C46B eprom so the network chip can get a MAC address correctly when the board is activated. You can do that following the instructions documented on the following sections.

93C46B EPROM

To program the EPROM I used a TL866II universal programmer with a SOP8 to DIP8 adapter like the one shown below. I inserted the IC into the adapter and then the set into the programmer.

You will need a new unique MAC address for your obsonet and I decided to create a random one using the tools available at MAC Address Generator (miniwebtool.com). Then I opened the obsonet_93c46b.BIN file on the Xgpro (software that comes with the TL866II programmer) and changed the last 6 bytes of the content to the address I created using the tool.

Please note that you need to invert the order of each pair when programming the EPROM. So if you want the MAC address ec:1a:59:82:79:20 for example, you need to type 1A EC 82 59 20 79, inverting each pair.

Then I programmed the EPROM with the content.

GAL16V8

The GAL16VB can be directly programmed using the TL866II and the obsomap.jed file. You just need to select the appropriate IC on Xgpro and select the correct jed file. Then click program.

Soldering

The soldering is relatively easy and the ObsoNET is a great project for someone trying to develop the SMD soldering skills. The harder chip is of course the RTL but the challenge is not even close to soldering very tiny-spaced legs FPGAs.

Be aware of the adaptations you need to perform for the 74HC133 and the oscillator, of course if you can’t find the components like me.

Make sure you programmed the EPROM and use a socket for the GAL if possible. If not, also remember you need to program it with the obsomap.jed file as I explained before.

I soldered the electrolytic capacitor bended on the PCB so I can fit the cartridge in a box later. Of course it will be impossible to fit the RJ-45 connector in it, but at least the rest of the PCB will have appropriate coverage.

Here is my PCB after the soldering job:

Programming the M29F400 Flash Memory

Now that we have the PCB soldered, we need to program the flash. You will need to insert the card into the first cartridge slot and boot your MSX with Nextor/MSXDOS. Then use the ONETFRL.COM tool to load the code into the flash memory. All the tools and files required to program the cartridge can be found on Konaniman’s page at Konamiman’s MSX Page.

You also need to download the ROM that will be loaded into the flash memory and save it into the same folder you will be using to execute the ONETFRL.COM tool. You can find those files in Konamiman’s page as well. We will be installing the ObsoNET BIOS 1.3.

You just need to execute ONETFRL.COM BIOS.ROM and wait a few seconds. After flashing the BIOS, boot your MSX again with the card inserted and you will see the message stating that the BIOS v1.3 was loaded.

TCP/IP stack

InterNestor Lite is a TCP/IP stack that works on MSX2/2+/TR with at least 128K RAM. It supports two kinds of hardware: serial port (RS232) with modem, and the Ethernet UNAPI.

InterNestor Lite implements the TCP/IP UNAPI specification, so you can run TCP/IP applications with the obsoNET.

Note: InterNestor Lite requires the UNAPI RAM helper in order to be installed, and as of version 2.1, it requires mapper support routines too. If you run MSX-DOS 2 or Nextor, mapper support routines are built-in and you just need to install the RAM helper using RAMHELPR.COM before installing InterNestor. If you run MSX-DOS 1, you can install both the mapper support routines and the RAM helper using MSR.COM.

We will be using the InterNestor Lite 2.2 for the Ethernet UNAPI that allows the use an Ethernet UNAPI compatible BIOS.

Now it is time to connect your MSX to the network. Wire a cable from the card RJ-45 connector to your closest network connection. Then boot your MSX with the wired card inserted.

You will see a message showing the ObsoNET card BIOS 1.3 was loaded correctly. Then the MSXDOS/Nextor prompt will be shown. Go ahead and execute the following commands:

RAMHELPR.COM i
INL.COM i

I noticed some issues with the current INL.COM that ware preventing my card to get IP information via DHCP. Even configuring static values, the card wasn’t able to access any hosts outside the current network.

After some analysis, I figured out that the issue was that the card was not able to ping/access the default gateway IP address. After a lot of troubleshooting I figured out a few issues with the DHCP and ARP frames that were making my ASUS router to drop those while performing bridging operations.

The INL issue

I have a RT-AC5300 with Merlin firmware. Standard configuration done by the web interface. vlan1 with 4 interfaces and br0 a bridge created with vlan1. Other vlans are for WAN. No hosts outside vlan1.

The MSX with ObsoNET can ping any machine on vlan1, except for the ip assigned to br0 (bridge). Which is the router IP. So that machine can’t communicate with anything outside the local network.

When pinging it from the router, I get the following using tcpdump:

No response from the host, at least not on the bridge interface (br0).

The bridge is defined with one interface vlan1. But if we check vlan1 with tcpdump we can see ARP requests and responses for the host normally.

Then it looks like the bridge is dropping ARP responses when the destination is to the IP assigned to the bridge interface.

A friend of mine also discovered that the DHCP response frames were also missing FF in the options area, making some routers to fail during DHCP negotiation.

I ended up including using a Mikrotik switch/router to connect the MSX with the Obsonet to the network and Wagner (my friend) fixed the issue with DHCP on INL. You can get more information about those issues on the following links:

https://www.snbforums.com/threads/rt-ac5300-bridge-vlan-and-arp-trouble-running-wrt-merlin-386-7_2.81441/

Pull requests · Konamiman/MSX (github.com)

Network Software

After running RAMHELPR.COM (you only need to run it if you are not using Nextor) and INL2.COM (the fixed version) my MSX with the ObsoNET managed to access the Internet without any issues.

And now the fun begins.

If you run “INL2.COM s” you can check the IP address your computer obtained from the DHCP server and a few other TCP/IP configurations. If you want to check your ARP table, use “INL2.COM ARP S”. You can check all commands to check if the TCPIP stack is running ok on the Konamiman site here MSX/SRC at master · Konamiman/MSX (github.com)

PING.COM can be used to test your network and check if you can reach hosts on your local network as well as external hosts.

But the coolest thing with Obsonet is that you can now use MSXHUB. Check MSXHub website to get more information. It is basically a framework (and tool) you can use to download and “install” software on your MSX.

To setup hub.com use:

MD HUB
CD HUB
HGET HTTP://MSXHUB.COM/HUB.COM

Now, go ahead and install VI!!! 🙂 hub.com install vi

What about installing TELNET and using it to access an MSX BBS? just run hub install telnet and then use TELNET bbs.hispamsx.org

End your day running XRACING, just run hub install xracing

Enjoy!

Resources

Leave a Reply

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