Thank you, Bratan. At least I now know its possible to get "CD Card" & "1284p" & "Mighty Optiboot" all working together. I just have to figure out how.
Your "working" link above is broken. I'm hoping you'll fix it, and it will lead to a sketch that solves my problem!
It makes sense what you said about "pin definitions" having no standard. So I wrote this little program, allowing me to enter data pin numbers one-at-a-time into Arduino's "Serial Monitor", and use an LED to see which physical pin started flashing in response.
// *** PIN TESTER ***
char c;
byte n = 0;
void setup()
{
Serial.begin(9600);
for (byte i=0; i<32; i++)
pinMode(i, OUTPUT);
}
void loop()
{
if (Serial.available())
{
c = Serial.read();
n = (c - 48) * 10;
delay(2);
c = Serial.read();
n += c - 48;
Serial.println(n);
}
//for (byte i= 0; i<32; i++)
digitalWrite(n,HIGH);
delay(1000);
//for (byte i= 0; i<32; i++)
digitalWrite(n,LOW);
delay(1000);
}
The result: All 32 data pins -- D0 through D31 -- are as shown on this diagram for Mighty Optiboot:

I also checked the four SPI constants with:
Serial.print("SS:");
Serial.print(SS);
Serial.print(" MOSI:");
Serial.print(MOSI);
Serial.print(" MISO:");
Serial.print(MISO);
Serial.print(" SCK:");
Serial.println(SCK);
which correctly reported:
"SS:4 MOSI:5 MISO:6 SCK:7"
Then I made sure Mighty Optiboot's patched copy of "SD.h" (along with the other patched libraries) are running in my user "Arduino/hardware" folder.
So I think all the above rules out a pin-numbering mismatch being my problem.
So, next, I'm wondering if the SPI clock speed could be too fast for my SD Card?
On the AVRFREAKS forum, I found:
Everything works alright when SPI clock is 1MHz....
But when I turn to SPI clock = 2MHz or higher the SD card won't even initialize,
...
...stray/input capacitance might case it to fail at higher speeds.
And then I found in an Application Note:
SD cards require a specific initialization sequence....
Card initialization starts by setting the SPI clock to 400kHz....
Finally, the SPI clock is set to the maximum rate allowed.
I assume SPI.begin() is doing all the above, but what is this "maximum rate allowed"? I should drop that to the 1MHz mentioned above and try my SD Card again.
So I went to Arduino's SPISettings page, and read that I should be able to set the SPI clock speed with either
SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0))
or
SPI.SPISettings mySettting(1000000, MSBFIRST, SPI_MODE0)
But the compiler couldn't find either of those functions, giving the messages,
'class SPIClass' has no member named 'beginTransaction'
and
'class SPIClass' has no member named 'SPISettings'
So I'm still stuck.
Can someone tell me how to successfully change the SPI clock maximum speed, so I can see if this is what will allow my SD Card to work?