- RR-Net MK2
- RR-Net MK3
With RR-Net MK3, we're answering the calls from many C64 users who wanted Ethernet, but refused to buy a "carrier card" that features the clockport that was previously required for operating one of the predecessor models (for example Retro Replay, MMC64, MMC Replay or Chameleon). The result of this new development is that the new design can be used in two ways: You can either connect it to the clockport of a carrier-card (exactly the same way like the predecessor RR-Net MK2), or you can plug it directly to the expansion port of the C64.
One added feature of this new design is the 8k flash rom. This is used as a startup-ROM if the unit is plugged directly to a C64. The startup code will initialize the MAC address and also contains a codenet server, which solves the "chicken and egg" problem and makes transferring disks very easy.
If you plug RR-Net MK3 to the clockport of a "carrier card", only a few bytes of the ROM are available - just enough to store the MAC address of the unit, and put an end to the constant guessing that you had to do with the predecessor models.
Using the RR-Net MK3 directly as a cartridge without a carrier card does not work with SX-64 and very old C64 mainboard versions.
Both versions will also work on the Amiga with a clock-port, but it is not recommended: RR-Net does not support IRQs, and it hardly fits mechanically. If you need network for your Amiga, use an X-Surf board.
The register mapping depends on the place where RR-Net is connected. The standard location for the clockport on the C64 is $de00, which is what most software expects and what is used in the tables below. Note that on MMC64 the clockport may be relocated.
Although RR-Net is designed for the C64, we're also providing the offset addresses for the Amiga. Check the corresponding hardware documentations for the carrier cards to obtain the base addresses of the clockport.
RR-Net is based on the Cirrus logic CS8900a (Crystal LAN). The chip is used in 8-bit mode, so the 8 registers of an NE2000 are spread over 16 registers in an 8-bit system. The 8-bit mode of the chip does not support IRQs (see Cirrus logic application note AN181).
When RR-Net is connected to the clockport of a "carrier card", do not forget to enable the clockport (by setting bit 0 in $de01 on Retro Replay), see MMC64, MMC Replay or Chameleon for more information.
|RR-Net CS8900a registers|
|C64 register||Amiga offset||read/write?||meaning|
|n/a||$00/$04||read-only||interrupt status queue (*)|
|$de04/$de05||$10/$14||read/write||PacketPage Data (Port 0)|
|$de06/$de07||$18/$1c||read/write||PacketPage Data (Port 1)|
|$de08/$de09||$20/$24||read/write||Receive/Transmit Data (Port 0)|
|$de0a/$de0b||$28/$2c||read/write||Receive/Transmit Data (Port 1)|
|$de0c/$de0d||$30/$34||write-only||TxCMD (Transmit Command)|
|$de0e/$de0f||$38/$3c||write-only||TxLength (Transmit Length)|
(all 16bit register pairs appear as little endian, ie the low byte first, then the high byte)
(*) Although the Amiga makes the interrupt status queue registers available, it does not have any effect. Even if you try to activate the chip's IRQ features, it will not have any effect. The IRQ line of the chip is not wired on RR-Net at all!
If you compare this register map to the register map in AN181, you might notice that the first and the second half of the register set is swapped. This has been done because the accessory connector of the Retro Replay does not provide the full range of registers available on the Amiga clockport. The first two bytes are control registers of the freezer cartridge, and this swapping moves the unnecessary register-pair (IRQ status queue) into the "invisible" area of the cartridge.
MK3 Cartridge ROM
When the RR-Net MK3 is used in cartridge mode, the eeprom will serve as a regular 8k ROM cartridge.
|RR-Net MK3 ROM enable|
|$de80||write-only||ROM_ENABLE||write any value to enable ROM|
|$de88||write-only||ROM_DISABLE||write any value to disable ROM|
When the ROM is enabled, it is mapped to $8000 (ROML) using ultimax mode when reading. that means it works slightly different to a regular 8k game cartridge, in particular the ROM can not be disabled using $01, so to read from the RAM at the same address you will have to disable the ROM via de88.
When the flash jumper is used, the ROM will be disabled after a reset, and writing to the ROM is possible after enabling it via de80 (see datasheet) in flash mode writes go only to the ROM, not to the RAM at the same address as it happens with regular game cartridges.
NOTE THAT WRITING TO THE EEPROM MAY RENDER THE CARTRIDGE MODE UNUSEABLE.
RR-Net and RR-Net MK2 do not have an EEprom to store the MAC address, so it should be stored somewhere else: The flash rom of Retro Replay, MMC Replay, Chameleon, the disk of the Contiki operating system by Adam Dunkels, or Kickflash OS4 for the Amiga. As a valid default value 28:CD:4C:FF:FB:FF was reserved in Individual Computers range.
RR-Net MK3 comes with a unique MAC address stored on its eeprom. Also when it is used as a cartridge, the MAC address will get initialized by the startup code.
If the RR-Net MK3 is connected to a clockport, then the last 4 bytes of the eeprom are visible by reading the last 4, normally write-only, registers as in this table:
|RR-Net MK3 MAC|
|C64 register||Amiga offset||read/write?||meaning|
|$de0c||$30||read-only||MAC_HI||second last byte of MAC address|
|$de0d||$34||read-only||MAC_LO||last byte of MAC address|
|$de0e||$38||read-only||CHKSUM0||MAC_HI ^ MAC_LO ^ $55|
|$de0f||$3c||read-only||CHKSUM1||(MAC_HI + MAC_LO + CHKSUM0) ^ $aa|
When both checksums match, the CS8900a should be initialized to use the MAC Address 28:CD:4C:FF:<HI>:<LO>. Else use a user defined/saved value, you may use 28:CD:4C:FF:FB:FF as default.
Calculating the checksum
; calculate the checksum used for the MAC address ; ; in: ; A/X MAC_LO/MAC_HI (last/second last byte of MAC address) ; out: ; A = CHKSUM0 = MAC_HI ^ MAC_LO ^ $55 ; X = CHKSUM1 = (MAC_HI + MAC_LO + CHKSUM0) ^ $aa chksumtmp = $02 ; two bytes used .export rrnet_chksum rrnet_chksum: sta chksumtmp ; MAC_LO stx chksumtmp+1 ; MAC_HI eor chksumtmp+1 ; MAC_HI ^ MAC_LO eor #$55 ; ^ $55 pha ; == CHKSUM0 clc adc chksumtmp ; + MAC_LO clc adc chksumtmp+1 ; + MAC_HI eor #$aa ; ^ $aa tax ; == CHKSUM1 pla ; CHKSUM0 rts
Reset pullup modification
RR-Net MK2 needs an additional 10KOhm pullup resistor at !RESET and !IRQ to work on the Chameleon in standalone mode. (RR-Net MK3 has that already)
Networking software supporting RR-Net
The following programs are not products from Individual Computers. Please understand that we can't give any further support for this software.
- ip65 is a TCP/IP stack for 6502 based computers.
- setmac by devia - a simple tool to set the MAC address for those users that do not use a ROM that already does that (not required when using the chameleon, or the final replay ROM)
- The Final Replay by Oxyron - alternative ROM Image for Retro Replay, MMC Replay that includes a Codenet server.
- Contiki operating system by Adam Dunkels - This download page lets you configure the IP address, subnet mask, gateway and DNS server addresses before you download.
- geoLink features the IP65 TCP/IP stack for Rrnet for Geos. It also implements a small chat client.
- GuruTerm is a Telnet terminal for RR-Net. It requires The Final Replay ROM in a Retro Replay, Nordic Replay, MMC Replay or Chameleon to work.
- HTTP-Load can load files from HTTP servers.
- netboot65 is a suite of several networking tools including booting from TFTP, SID player, web application server and terminal functions (Kipperterm).
- Singular Browser - a graphical web browser for the C64/C128
- Telnet65 is a Telnet client based on ip65 (comes with source)
- Artillery Duel (source repository) by Schema - the classic game in a new network enabled version
- NetRacer (source repository for server and client) by Schema is a simple racing game for 8 players.
- Vortex (source repository) by Schema is a multiplayer space shooter (WIP)
- Codenet client
- Warpcopy64 - a lightning fast D64 transfer solution
- 0xPaint V1.2 - This paint program runs on a PC and lets you transfer files using CodeNet. This allows you to view your work on a real C64 without the need to transfer it to a disk firs.
- 64net/2 for RR-Net (German only). This new version of 64net/2 allows connecting more than one C64 to a PC fileserver for transferring files and video streaming.
- Arc64 V2.3 - This tool deals with D64, T64, LNX and ZipCode archives. You can add, extract and run files from a D64 archive and send them through Codenet to the C64.
- Diskimagery64 - This is a portable drag&drop D64 Disk Image Editod for Mac OS X, Linux and Windows. Network support: Download programs or share disk images as NetDrives with a single click to a real C64 with RR-Net and The Final Repaly ROM. This program includes full WarpCopy support.
- MWC by Jockstrap is a linux command line warpcopy client
- netmon by Hannenz is a debug stub and client implementing a couple of traditional "ml monitor" features.
- UDPSlave - UDPSlave is a transfer utility that lets you send over PRG files from a PC (or Mac, or Unix box) to a C64 with an RR-Net interface. The main features are that the program is small enough to be typed in, and doesn't require anything except a cartridge with a clockport and RR-Net.
The relative positions of the clockport, indicator LEDs and RJ45 connector are the same at the MK2 and MK3.
- RR-Net on C64 wiki (german)
- Crystal LAN CS8900A Ethernet Controller Technical Reference manual AN83
- FAQ about the LAN chip
- Application note 194: "How to program the Hash filter in the CS8900A"
- product data sheet for CS 8900A (also contains software info starting at chapter 4)
- A clockport for Chameleons minimg - includes description of the 10k pullup mod
- corei64 offers a 3D printed case for the RR-Net MK3
- Individual Computers' Shop (selected Products)
Please shop locally. Our partners are listed in alphabetical order.