Netlink ROM dumps

I dumped my netlink ROMs, leaving them here for anyone wishing to dig deeper.

First one is MX27C1000, 128Kx8 EEPROM connected to L39 MCU. Surprisinly it contains a lot of strings from different x86 motherboard BIOSes, this is either Rockwell being lazy, or chip being used elsewhere and not completely erased before manufacturing. There is something modem-related at 0x3D00-0x7F00, but i couldn't disasm it as a 6502 code (which L39 CPU is presumably compatible with). There are strings at the beginning, so execution starts at a non-zero address, if starts at all.

Second is NM24C02, 2Kbit (256 byte) serial EEPROM, connected to L39 as well. It contains some kind of a configuration, 8 byte header, 2 almost exact 36-byte sequences (1 byte is different), and some magic sequence at the end of the ROM. Maybe there is a execution start address for the 1st ROM somewhere.
 

Attachments

Last edited:
Nice! Sadly even though I have a netlink and most of the games that support it, I think I've only ever used it once or twice back in the day. By that point the Saturn was very much considered dead, so finding other people to play with was pretty tough. I'm glad people are interested in this again!

There's been some discussion about what to do with online play on the Saturn lately. I was inspired by the recent discussion on the Shiro show - I've been looking for inexpensive modules that could convert the Saturn's serial connection either to USB or even Wifi.. there's a lot of scope though, and the Saturn's com port uses a non-standard SPI signal. Basically that there's no master/slave select pin - but I'm thinking that can be ignored, since most of these modules can be flashed with custom firmware and obviously any software hacks would be custom anyway.
 
Yes, recent Shiro show started another wave of "new netlink" (or should i say "Novalink"? ) talks. There are many opinions and visions, i have mine as well, but i suppose it's a bit off-topic here. In a few words, serial ports can provide speed up to 2.2 MBit/s (that's the channel speed, actual throughput will be smaller), and a simple serial-to-wifi bridge can be done with something like ESP32.
 
The point of that portion of the show was to find out where time should be invested. As Jameson pointed out, an inexpensive bridge/dongle could be made for the serial port, but the problem with going this route is it is an additional expense that perhaps many will not purchase.

Then you have the other crowd that thinks the Netlink will be an easier adoption since the hardware already exists. The problem with that route is we have no idea on the number of people actually capable of setting it up in tandum with a dream pi and/or a VOIP.
 
Personally I'd like to just see Netlink be usable for doing webapp stuff with it. So for example using Dreampi or even Dial up internet to get online, and then have utilities for doing things like uploading and downloading Save Game data to a database without the hassle of using the Planetweb email method. As that method really is limited in it's usage these days.
 
what's the hardware used by the netlink ? i mean which cpu runs that ROM, it doesn't seem to be the saturn SH2s
 
what's the hardware used by the netlink ? i mean which cpu runs that ROM, it doesn't seem to be the saturn SH2s
Got a microcontroller based on R6500, I asume is for emulate xband, because modem data pumps are diferent in xband and netlink, with diferent register configurations.
 
  • Like
Reactions: vbt
A microcontroller is needed for interpreting the Hayes (AT) command set. I would have assumed that hardware differences were handled by the SDKs. Since the modems were region-specific, using different libraries wouldn't have been an issue. Going by the info in the Yabause wiki, both modems look like 8250-style UARTs to the Saturn, just at different addresses.
 
  • Like
Reactions: vbt
There is something modem-related at 0x3D00-0x7F00, but i couldn't disasm it as a 6502 code (which L39 CPU is presumably compatible with). There are strings at the beginning, so execution starts at a non-zero address, if starts at all.
According to what I could dig up, the L39 uses an enhanced R6502 core with many instructions not found in the base 6502. CCS65 may have support for it. It also looks like MAME can emulate the core.

There's a technical reference manual available on the web for the C29/C39, which are earlier, similar models from the same series. According to that, the MCU's internal address space is divided into eight 8K banks, which can be mapped to any 8K region of external memory. The top 8K is normally occupied by an internal mask ROM, but it can be disabled by a test pin. The ROM addresses $FFF0-$FFFF look like reasonable vectors to me, so that might be a thing worth checking (the 6502 reset vector is at $FFFE, the NMI vector at $FFFC, and Rockwell have added six interrupt vectors starting at $FFF0).
 
A microcontroller is needed for interpreting the Hayes (AT) command set. I would have assumed that hardware differences were handled by the SDKs. Since the modems were region-specific, using different libraries wouldn't have been an issue. Going by the info in the Yabause wiki, both modems look like 8250-style UARTs to the Saturn, just at different addresses.
To interface with xband modem ive used same addres set used by netlink and works the same, the registers in yabause wiki are not original registers from rc288dpi used in netlink (which got more registers an diferent maped),those register are from rcv144acfw from xband wich dont use external microcontroller, for that reason ive suposed microcontroler is for simulate the behaviour of an xband modem.
 
The RCV144ACF chipset includes some kind of embedded microcontroller, guaranteed. The datasheet even talks about customizable firmware.

There's no behaviour to emulate, serial port + AT commands has been the universal modem interface since the mid-80s. Different chipsets do have different custom commands, but the basic hardware interface and command set stays the same. One interesting question is if the Xband's smart card interface and on-board flash memory were accessed through the AT interface, or if they were directly mapped to the cartridge port.

The readme for the Xband head-to-head library found on the 1996/11 DTS CD says
- The software has been built to run on US modem hardware, rather than Japenese modem hardware (this is different than the 7/3/96 release of the software).
which suggests that they did indeed provide hardware-specific libraries.
 
Last edited:
There's no behaviour to emulate, serial port + AT commands has been the universal modem interface since the mid-80s. Different chipsets do have different custom commands, but the basic hardware interface and command set stays the same.
Surely you are right and AT interface is managed also by microcontroller, but hardware or electrical Interface with modem is accesing modem registers, if you take a look to two modem datasheets you will see netlink moden registers are not the same published in yabause wiki. So must be implemented in firmware to work the same way. At diference of XBand wich registers are exactly the same.
One interesting question is if the Xband's smart card interface and on-board flash memory were accessed through the AT interface, or if they were directly mapped to the cartridge port.
Rom and flash connects to some kind of memory mapper and also to modem ic and cartridge bus, ive supposed to update firmware if necesary, Ive dont look so deep, neither the smart card interface.
The readme for the Xband head-to-head library found on the 1996/11 DTS CD says

which suggests that they did indeed provide hardware-specific libraries.
Ive used the DTS library with XBand modem, and works the same.
 

Attachments

  • RC288DPi registers.jpg
    RC288DPi registers.jpg
    405.8 KB · Views: 182
  • RCV144ACF registers.jpg
    RCV144ACF registers.jpg
    287.8 KB · Views: 167
Last edited:
So must be implemented in firmware to work the same way.
Well yes, that's the AT command set, as I've been saying. The whole point of it is to act as a hardware abstraction layer, and there's nothing Saturn-specific about any of it. The RC288 is an internal implementation detail of that particular modem chipset, as is the internal structure of the RCV144 chipset. The external interface is an 16550 serial port, and the AT commands. The host never touches any modem registers directly, whether it's a Saturn or a PC. Where the RC288 data sheet block diagram says "host processor", that's the L39.
 
The external interface is an 16550 serial port, and the AT commands.
Both RC288 and RCV144 can be interfaced with host as a serial device or parallel device, I cant say how netlink is interfaced, but in XBand, looking at IC routings I can say its interfaced as a parallel device with is host data and address lines conected, the addres lines are used to interface modem registers, hence to send AT comands and read responses you must read and write the register 0 or addres 0x25895001 seen from saturn memory map, and this must be done after set some of other registers to configure modem.
The host never touches any modem registers directly, whether it's a Saturn or a PC. Where the RC288 data sheet block diagram says "host processor", that's the L39.
That can be true for netlink, but not for xband where the HOST PARALLEL BUS INTERFACE is the saturn cart bus.
The whole point of it is to act as a hardware abstraction layer, and there's nothing Saturn-specific about any of it.
Yes, can be called hardware abstraction layer, wich turns a newer device interface (Netlink) into an older device interface (XBand) to keep compatibility.

EDIT: In RCV144 datasheet can see, the last P after dash means parallel host interface
 
Last edited:
In the Netlink, the RC288's host port is connected to the L39's extension port, and the L39's host port (i.e. the 16550 serial port) is connected to the cartridge interface.

Yes, can be called hardware abstraction layer, wich turns a newer device interface (Netlink) into an older device interface (XBand) to keep compatibility.
They're just modems, implementing the same interface as every other modem. There's no special backwards compatibility to implement. The only special feature about either is that apparently you have to separately enable the serial port via the SPMC.

Edit: There's probably customizations in the bus interface, e.g. how interrupts are signalled compared to the ISA bus where these chips would usually be used, but that's completely transparent to the programmer.
 
Last edited:
In the Netlink, the RC288's host port is connected to the L39's extension port, and the L39's host port (i.e. the 16550 serial port) is connected to the cartridge interface.
Cartridge interface dont have DTR DSR RTS CTS RI DCD i/o signals of a serial port, to acces this data you must read diferent modem registers.
They're just modems, implementing the same interface as every other modem. There's no special backwards compatibility to implement. The only special feature about either is that apparently you have to separately enable the serial port via the SPMC.
If the interface is based in registers, and both data pumps dont share the same registers, you need the "abstraction layer" to make two devices compatibles.

If you got DCD in two diferent registers mapped in diferent bits in diferent addres, you cant know where to search to see if you got carrier, the same for RI you cant know where to search to see if there is an incoming call, you can say, "you just need to wait for RING string in input bufer" but two data pumps neither share the same addres for input output registers, and netlink driver search in registers, and sets configuration writing in registers. XBand RCV144 registers listed in datasheet are the same listed in yabause wiki, and RC288 registers are not the same listed in yabause wiki, but got a microcontroller wich surely "emulates" those registers in saturn cartridge bus, so when you read 0x25895001 you will be reading register 0 in RCV144 and RC288, and when you write you will write in 0 for 144 and 10 for 288.

And more complex for RI wich is not in same register and neither in same bit.

EDIT: If you do (address&0x1C)>>2 to addres in yabause wiki you directly get RCV144 register addres, same cant be said for RC288
 
Last edited:
Cartridge interface dont have DTR DSR RTS CTS RI DCD i/o signals of a serial port, to acces this data you must read diferent modem registers.
I don't understand what you're trying to say. The modem cartridges have a 16550-style USART that is mapped into the Saturn's cartridge area.

If the interface is based in registers, and both data pumps dont share the same registers, you need the "abstraction layer" to make two devices compatibles.
I don't understand why you keep going on about the data pump. It is a complete black box, as far as the application developer is concerned, and you have no access to it. Unless you're implementing the chipset yourself, you don't even know it exists.
 
Last edited:
Back
Top