The ZX-Spectrum ZXMMC Interface's page
Programming the CPLD requires a JTAG cable and software. Xilinx parallel cable is probably the cheapest choice and the picture on the left shows it's standard pin assignment. A very cheap passive implementation is shown in the right picture, coming from http://warmcat.com/milksop/cheaptag.html
The Cable:

Unfortunately, due to the initial use of a nonstandard JTAG cable, the current version of the zxmmc pcb does not match the 6-pin Xilinx JTAG layout described above. TCK, TDO and TDI pins should be arranged in a different way (please see the assembly drawings). You can choose to build a standard cable then add an adapter for zxmmc, or rearrange these 3 pins on the cable (making it specific for zxmmc).
The Software:
Xilinx provides a complete (and free) set of software tools, called "ISE Webpack"; the current version is as big as 1,4GB (!!). Fortunately, they also provide previous releases on their website.
WinXP users can download and install ISE Webpack v4.2 (112MB) http://direct.xilinx.com/direct/webpack/42wp3/WebPACK_42wp30_full_installer.exe
If you're running low on disk space you may download the older v3.3 programming module (6,5MB), which has been successfully tested on Win98 (but WON'T WORK on WinXP): http://direct.xilinx.com/direct/webpack/33wp81/webpack_9500_prog.exe
If you have any problem downloading these files, please contact me.
ISE 4.2 for Windows XP:
After software installation, connect your cable to the parallel port of the PC and to the zxmmc pcb, then turn on your Spectrum and click on "Device Programming" under the "Xilinx WebPACK 4.2" program group:

When the program starts, click the Next button leaving the default selections on any dialog, as follows:



If you connected the zxmmc through the parallel cable, then the XC9572XL device is found:

(If the browse dialog does not appear, doubleclick the device).
If the zxmmc was not connected or not powered, you will receive an error. Connect it then click "Initialize Chain" from the "File" menu`, or restart the program.
Select the X9572_IO.JED file downloaded from the CPLD section and click "Open".
Choose the "Program" command from the "Operations" menu`. The following dialog will appear:

Click on the OK button: the programming phase will start


After programming, you can check if the OUT 31,254 command lights up the SLOT0 select led on the zxmmc interface.
DEVICE PROGRAMMING Module v3.3 for Windows 98:
After software installation, connect your cable to the parallel port of the PC and to the zxmmc pcb, then turn on your Spectrum and click on "Device Programming" under the "Xilinx WebPACK" program group:

From the "File" menu, select "Initialize Chain":

If the device is correctly connected and powered, it will we detected and shown as in the next picture. Note that in this case, a XC9536XL zxmmc version was used.
Doubleclick the device; a browsing window will appear:

If the zxmmc was not connected or not powered, you will receive an error. Connect it then click "Initialize Chain" from the "File" menu`, or restart the program.
Select the X9536_io.JED file downloaded from the CPLD section and click "Open".
Choose the "Program" command from the "Operations" menu`. The following dialog will appear:

Click on the OK button. If everything works, you will get the following result:

After programming, you can check if the OUT 31,254 command lights up the SLOT0 select led on the zxmmc interface.