SD and MMC cards work about the same after initialization, but they have different initialization sequences. The SD initialization is something like sending a series of 0x41/0x55 characters until the card responds with a ready signal. The code you have is probably almost ready to work, so if you modify it with the correct SD initialization sequence it would probably work.