I'm out of memory? Is the next thing up the Mega644P?

You can figure it out for yourself. Look in the libraries and various include files, and see if
they say this:

#if defined(AVR_ATmega1280) || defined(AVR_ATmega2560)

or this:

#if defined(AVR_ATmega1280) || defined(AVR_ATmega2560) || defined(AVR_ATmega1284P)

Then you'll know. What you're gonna find is sometimes fixed, sometimes not.

Here's a clue, in the very latest of version of the IDE, the Arduino.h file [hidden many
levels deep in the IDE directory] says:

#if defined(AVR_ATmega1280) || defined(AVR_ATmega2560) || defined(AVR_ATmega1284) || defined(AVR_ATmega1284P) || defined(AVR_ATmega644) || defined(AVR_ATmega644A) || defined(AVR_ATmega644P) || defined(AVR_ATmega644PA)

whereas it previously said:

#if defined(AVR_ATmega1280) || defined(AVR_ATmega2560) || defined(AVR_ATmega1284P) || defined(AVR_ATmega644P)

and before that:

#if defined(AVR_ATmega1280) || defined(AVR_ATmega2560)

However, in w500.h in the standard Ethernet library in the very latest version of the
IDE, it still says

#if defined(AVR_ATmega1280) || defined(AVR_ATmega2560)

so your Ethernet board won't work with 1284 chips.

The point is, 1284 support has only recently been started to be included in the IDE
AT ALL, and still hasn't been completely wrung out. The reason I know this is because
I've had to fix these things myself to get my 1284 boards to work.

If you really want an education, go read some of those interminable threads, where people
were scratching their heads for weeks, trying to get this stuff to work,
http://forum.arduino.cc/index.php?topic=139671.0
http://forum.arduino.cc/index.php/topic,146773.msg1102743.html
http://forum.arduino.cc/index.php/topic,144165.msg1082609.html
http://forum.arduino.cc/index.php?topic=80483.0
http://forum.arduino.cc/index.php/topic,109550.msg822612.html