Difference between revisions of "M4 Board"

From CPCWiki - THE Amstrad CPC encyclopedia!
Jump to: navigation, search
(38 intermediate revisions by 5 users not shown)
Line 2: Line 2:
  
 
You can read more about it at http://www.spinpoint.org/cpc/m4info.txt.
 
You can read more about it at http://www.spinpoint.org/cpc/m4info.txt.
A
+
 
 
<gallery>
 
<gallery>
 
M4board_front.png|M4 Front View
 
M4board_front.png|M4 Front View
Line 9: Line 9:
  
 
== Firmware ==
 
== Firmware ==
 +
Updating (or downgrading) a firmware is done by unpacking the update zip file to the root directory of the microSD card (from a PC). Then insert to the M4 and powercycle the CPC/M4 board, after about 20 seconds it should be updated. Verify with |version command.
 +
Latest firmware version can always be obtained via |upgrade command (no need to use PC, as long as CPC is setup to the internet).
 +
 +
 +
'''Please notice, on M4 boards shipped after 2016-10-01:'''
 +
 +
Due to a new flashchip on the wifi-board, do not use firmware versions lower than v1.0.9. If done by accident, use v1.0.9 or higher to restore it.
  
 
{| class="wikitable" style="margin-left: auto; margin-right: auto; border: none;"
 
{| class="wikitable" style="margin-left: auto; margin-right: auto; border: none;"
 
! Version
 
! Version
! File
+
!Changes
 +
!File
 
|- style="text-align: center;"
 
|- style="text-align: center;"
|| 1.01 || [[Media:M4FIRM_v101.zip | M4FIRM_v101.zip]]
+
|| 1.00 || Initial Version || M4FIRM_v100.zip
 
|- style="text-align: center;"
 
|- style="text-align: center;"
|| 1.02 || [[Media:M4FIRM_v102.zip | M4FIRM_v102.zip]]
+
|| 1.01 || M4 rom defaults to Rom 6, Fix for GA 40007 || [[Media:M4FIRM_v101.zip | M4FIRM_v101.zip]]
 
|- style="text-align: center;"
 
|- style="text-align: center;"
|| 1.03 || [[Media:M4FIRM_v103.zip | M4FIRM_v103.zip]]
+
|| 1.02 || <nowiki>|</nowiki>CD command now accepts no paramters and will prompt with cursor,<br /> so Basic 1.0 users can use SHIFT+CURSORKEYS+COPY. || [[Media:M4FIRM_v102.zip | M4FIRM_v102.zip]]
 
|- style="text-align: center;"
 
|- style="text-align: center;"
|| 1.04 || [[Media:M4FIRM_v104.zip | M4FIRM_v104.zip]]
+
|| 1.03 || Allow to remap entire romboard for compatiblity with XMEM. Now supporting 32 romslots. || [[Media:M4FIRM_v103.zip | M4FIRM_v103.zip]]
 
|- style="text-align: center;"
 
|- style="text-align: center;"
|| 1.05 || [[Media:M4FIRM_v105.zip | M4FIRM_v105.zip]]
+
|| 1.04 || Ability to replace lowerrom. || [[Media:M4FIRM_v104.zip | M4FIRM_v104.zip]]
 
|- style="text-align: center;"
 
|- style="text-align: center;"
|| 1.06 || [[Media:M4FIRM_v106.zip | M4FIRM_v106.zip]]
+
|| 1.05 || FTELL, FSIZE commands implemented and <br/> new RSX commands <nowiki>|</nowiki>ROMUP, <nowiki>|</nowiki>ROMSET, <nowiki>|</nowiki>ROMUPD || [[Media:M4FIRM_v105.zip | M4FIRM_v105.zip]]
 
|- style="text-align: center;"
 
|- style="text-align: center;"
|| 1.07 || [[Media:M4FIRM_v107.zip | M4FIRM_v107.zip]]
+
|| 1.06 || Fix WEB UI instability issue. <br/>Fix romupload for roms with or without AMSDOS header, and related bugs. || [[Media:M4FIRM_v106.zip | M4FIRM_v106.zip]]
 
|- style="text-align: center;"
 
|- style="text-align: center;"
|| 1.08 || [[Media:M4FIRM_v108.zip | M4FIRM_v108.zip]]
+
|| 1.07 || Fixes and buffering for cas_in_char, <br/> fix <nowiki>|</nowiki>ROMUP to work from .dsk files, fix cat/dir loop, <br/>fix httpget to work with IP addresses aswell as hostnames. || [[Media:M4FIRM_v107.zip | M4FIRM_v107.zip]]
 +
|- style="text-align: center;"
 +
|| 1.08 || FIX IP addresses for httpget (again). Fix <br /> <nowiki>|</nowiki>dir bug. Fix hardreset. <br/>Added C_GETPATH command (requested). <br/> Added ability to load your own build of M4ROM from root of microSD, should be named M4ROM.BIN || [[Media:M4FIRM_v108.zip | M4FIRM_v108.zip]]
 +
|- style="text-align: center;"
 +
|| 1.09 || Added nonblocking host & client NETAPI.<br /> Added ESC check to cat/<nowiki>|</nowiki>dir.<br />M4 board now looks for autoexec.bas at bootup, similar to old dos machines, autoexec.bat. Make your own startup script in basic. <br/>Direct SD card sector access.<br/>Various minor fixes || [[Media:M4FIRM_v109.zip | M4FIRM_v109.zip]]
 +
|- style="text-align: center;"
 +
|| 2.00 || Stability fixes for netapi.<br/>Added RSX commands |GETPATH, |UDIR, |LONGNAME by SOS<br/>Added C_GETNETWORK command.<br/>Added status byte after response string to C_NETSTAT<br/>Fix |cd,"/" to go to root if inside a DSK image.<br/>Fix SD hotswapping.<br/>Remove KM_RESET from cat/dir when pressing ESC.<br/>Display current path when using cat/dir.<br/>Increased AMSDOS readspeed (using bigger buffer).<br/>Faster network speed when using netapi.<br/>Keep CPC in reset until init. done. (Fixes issue with C4CPC and M4 at the same time).<br/>Many amsdos compatiblity fixes.<br/>DSK images, handle ASCII art with cat.<br/>Fix multiple network connections.<br/>Added |LS command for long filenames (15 mode 0, 35 mode 1, 75 mode 2).<br/>|cd can use long names too.<br/>autoexec.bas method changed, should no longer give problems with certain basic games.<br/>Remote run - run remote files from WEB interface (control)<br/>|TAPE support, use |SD to switch back to M4<br/>|DISC supported if AMSDOS present, use |SD to switch back to M4<br/>Fix |era long filenames.<br/>|ren fix for long filenames<br/>Added support for ROMDOS dsk images (D1/D2/D10/D20/D40) and PARADOS 80.||
 +
[[Media:M4FIRM_v200.zip | M4FIRM_v200.zip]]
 +
|- style="text-align: center;"
 +
|| 2.01 || More fixes to <nowiki>|</nowiki>era & <nowiki>|</nowiki>ren<br /> Added <nowiki>|</nowiki>FCP command to copy between floppies and microSD.<br />|| [[Media:M4FIRM_v201.zip | M4FIRM_v201.zip]]
 +
|- style="text-align: center;"
 +
|| 2.02 || Fix carry flag of CAS OUT CHAR<br />Added tiny <nowiki>|</nowiki>M4HELP<br />Fixes for <nowiki>|</nowiki>FCP  when using wildcard on Drive B, system protected files, excessive 1 byte on <2KB files, display of filename while copying & basic protected files.<br />Fix C_WRITESECTOR for DSK images<br />Fix DSK images not having entries ordered<br />Added support for cpr dsk images<br />Added <nowiki>|</nowiki>SNA command to load snapshots from microSD card.<br />|| [[Media:M4FIRM_v202.zip | M4FIRM_v202.zip]]
 +
|- style="text-align: center;"
 +
|| 2.03 || Added javascript/html5 based navigation to the webinterface, with multifile upload, download, remote run, delete & make directory.<br />Added ability to CD into DSK & CPR DSK images from the Web UI and use remote run too.<br />Fixes with running binary files with remote run and improved by changing directory to actual remote folder aswell.<br /><nowiki>|</nowiki>FCP Fix dodgy filenames, removing system attributes.<br /><nowiki>|</nowiki>M4HELP now lists the first 32 roms. Use <nowiki>|</nowiki>M4HELP,romnumber to display commands for a specific rom.<br />Full amsdos header read into amsdos buffer area  (will let you retain unused part of header when copying/opening).<br />Fix autoexec.bas launching when soft-resetting inside a .DSK<br />Fix <nowiki>|</nowiki>cd into .dsk's with write protection attribute set<br />Fix web remote run for filenames using html encoded characters<br />Fix <nowiki>|</nowiki>M4help, using all screen modes<br /> || [[Media:M4FIRM_v203.zip | M4FIRM_v203.zip]]
 +
|- style="text-align: center;"
 +
|| 2.04b6 || Added |ctrup and |ctr RSX for CPC plus owner, giving the ability to launch cartridge images.<br />Fix parsing bug when file not found<br />Many DSK fixes, now games like Chibi Akumas show loading screen (again), games with fragmented blocks work (ie. Ninja Grannies)<br />WEB UI, now you can pick "CD ON CPC" when using file browser or from Control, to change the directory on CPC itself<br />Besides using the webui a http req (ie. wget) can also change directory like this: http://ipnum/config.cgi?cd2=/DEMOS or even into a DSK file.<br /> [..] in the file browser was changed to [BACK] and [.] to [REFRESH] to make it more obvious.<br />|ls now supports DSK images too (will probably garbage up if using ascii art tho).<br /> |httpget will use attachment filename, rather than url if present.<br />New command |dskx. With this you can extract dsk images to files.    Usage |dskx,"somedisk.dsk","/mypath" and all files are extracted to given path.<br /> CPC+ init. no longer clears screen.<br /> ||
 +
|- style="text-align: center;"
 +
|| 2.04b7 || Fix downloading files from the WEB UI ||
 
|}
 
|}
  
 
== Various files ==
 
== Various files ==
 +
'''Modified lower rom for CPC6128''' users, who cannot override amsdos (rom 7) with M4 rom, using this patched lower rom, M4 rom must be in rom slot 6.
 +
It will be initialized instead of rom 7 and provide better compatiblity with games and higher himem.
 +
It's recommended to upload the original AMSDOS (or Parados) rom to rom slot 6, then it will be available when typing |M4ROMOFF.
  
[[Media: Xfer 1.0.1.zip | xfer (v1.0.1) ]] : Command-line tool that allow to send files and receive from a M4 Board. Possibility to add a AMSDOS header too.
+
English version: [[Media: Lower6128_mod.zip | 6128 lower rom English]]  
  
[[Media: M4 Board relay rom.zip | M4 Board relay rom ]] : When moving M4rom out of position 1-7 / 1-16 it will no longer be initialized, therefore this rom should be placed at rom7 or lower. This is if you want to use 32 roms of XMEM and map M4 romboard after it. You should program the XMEM or other romboard with M4 bootrom in pos 1-7, it will look for M4 rom from 1-127 and initialize it + pass commands through to it
+
Spanish version: [[Media: Os6128_mod_spanish.zip | 6128 lower rom Spanish]]
  
 +
French version by dxs : [[Media: Lower6128_mod-fr.zip | 6128 lower rom French]]
 +
 +
Danish version: [[Media: Os6128_mod_danish.zip | 6128 lower rom Danish]]
 +
<gallery>
 +
M4config6128.jpg|Example config 6128
 +
</gallery>
 +
 +
[[CPC M4 xfer tool]] : Command-line tool that allow to send files and receive from an M4 Board. Possibility to add an AMSDOS header too.
 +
 +
[[Media: M4 Board relay rom.zip | M4 Board relay rom ]] : When moving M4rom out of position 1-7 / 1-16 it will no longer be initialized, therefore this rom should be placed at rom7 or lower. This is if you want to use 32 roms of XMEM and map M4 romboard after it. You should program the XMEM or other romboard with M4 bootrom in pos 1-7, it will look for M4 rom from 1-127 and initialize it + pass commands through to it. '''NOTE THIS IS OUTDATED, only use for early versions of the M4 firmware (v1.0.1)'''
  
 
== Technical information ==
 
== Technical information ==
Line 46: Line 84:
 
romconfig.bin<br />
 
romconfig.bin<br />
 
Header:<br />
 
Header:<br />
<code>
+
 
int    totalRoms; // 32 (early versions of the firmware had only 16)<br />
+
<code>int    totalRoms; // 32 (early versions of the firmware had only 16)</code><br />
int    m4RomNum;  // M4 rom to map rom number 0-255<br />
+
<code>int    m4RomNum;  // M4 rom to map rom number 0-255</code><br />
int    m4RomEnable; // M4 rom enabled<br />
+
<code>int    m4RomEnable; // M4 rom enabled</code><br />
int    romRangeStart;    // start mapping roms from<br />
+
<code>int    romRangeStart;    // start mapping roms from</code><br />
int    lowerEnable; // lower rom replacement enabled<br />
+
<code>int    lowerEnable; // lower rom replacement enabled</code><br />
int    lowerSlot;  // which slot maps lowerrom (0-31)<br />
+
<code>int    lowerSlot;  // which slot maps lowerrom (0-31)</code><br />
unsigned int reserved[2]; // set to zero for now
+
<code>unsigned int reserved[2]; // set to zero for now</code><br />
</code><br />
+
<br />
 
Then for each rom (repeated 32 times):<br />
 
Then for each rom (repeated 32 times):<br />
<code>
+
<code>char updateflag;    // 0 = no rom present (or disabled), 1 = rom present (enabled), 2 = New rom will be flashed into M4 internal flash, 3 = remove rom</code><br/>
char updateflag;    // 0 = no rom present (or disabled), 1 = rom present (enabled), 2 = New rom will be flashed into M4 internal flash, 3 = remove rom<br />
+
<code>char    name[32];  // name of rom to be displayed in webinterface</code>
char    name[32];  // name of rom to be displayed in webinterface<br />
+
 
</code>  
+
== Links ==
 +
 
 +
Make your own M4 ROM or add additions to the existing, source code can be found here:<br />
 +
https://github.com/M4Duke/m4rom<br />
 +
It's compiled (assembled) with sdasz80 (part of [[SDCC]] package).<br />
 
<br />
 
<br />
 +
Various source code examples for M4 board<br />
 +
https://github.com/M4Duke/M4examples<br />
 +
<br />
 +
CPC xfer, pc commandline tool to transfer files back and forth to M4 board:<br />
 +
Source code here: https://github.com/M4Duke/cpcxfer<br />
 +
More info here: http://cpcwiki.eu/index.php/CPC_M4_xfer_tool
 +
<br />
 +
Command documention and other infos:<br />
 +
http://www.spinpoint.org/cpc/m4info.txt<br /><br /><br />
 +
Disk menu by Joe Halstead, modified by Takis Kalatzis for M4:<br />
 +
http://www.cpcwiki.eu/forum/amstrad-cpc-hardware/amstrad-cpc-wifi/msg134659/#msg134659<br /><br />
 +
YANCC - Norton Commander Clone by SOS, compatible with M4:<br />
 +
http://www.cpcwiki.eu/forum/applications/yet-another-norton-commander-clone
 +
<br /><br />
 +
 +
File Launcher by SOS, compatible with M4:<br />
 +
http://www.cpcwiki.eu/forum/applications/filelauncher-(acmedosm4dos)
 +
<br /><br />
 +
 +
Menu program for M4 (with program & games download direct from the internet) by rafa32gr:<br />
 +
http://amstrad.esy.es/
 +
<br /><br />
 +
 +
Cases/Enclosures for M4 board:<br />
 +
3D printer case for MX4/IDC version:<br />
 +
http://www.cpcwiki.eu/forum/amstrad-cpc-hardware/amstrad-cpc-wifi/msg131442/#msg131442<br /><br />
 +
3D printer case for EDGE connector "straight" version:<br />
 +
http://www.cpcwiki.eu/forum/amstrad-cpc-hardware/amstrad-cpc-wifi/msg142416/#msg142416<br /><br />
 +
Premade case that can be cut to fit:<br />
 +
http://www.cpcwiki.eu/forum/amstrad-cpc-hardware/amstrad-cpc-wifi/msg142773/#msg142773<br />
 +
[[Category:Hardware]]

Revision as of 13:31, 20 September 2017

The M4 Board is a 2016 expansion card which enables WIFI access to and from CPC, Romboard and using SD-Card as mass storage.

You can read more about it at http://www.spinpoint.org/cpc/m4info.txt.

Firmware

Updating (or downgrading) a firmware is done by unpacking the update zip file to the root directory of the microSD card (from a PC). Then insert to the M4 and powercycle the CPC/M4 board, after about 20 seconds it should be updated. Verify with |version command. Latest firmware version can always be obtained via |upgrade command (no need to use PC, as long as CPC is setup to the internet).


Please notice, on M4 boards shipped after 2016-10-01:

Due to a new flashchip on the wifi-board, do not use firmware versions lower than v1.0.9. If done by accident, use v1.0.9 or higher to restore it.

Version Changes File
1.00 Initial Version M4FIRM_v100.zip
1.01 M4 rom defaults to Rom 6, Fix for GA 40007 M4FIRM_v101.zip
1.02 |CD command now accepts no paramters and will prompt with cursor,
so Basic 1.0 users can use SHIFT+CURSORKEYS+COPY.
M4FIRM_v102.zip
1.03 Allow to remap entire romboard for compatiblity with XMEM. Now supporting 32 romslots. M4FIRM_v103.zip
1.04 Ability to replace lowerrom. M4FIRM_v104.zip
1.05 FTELL, FSIZE commands implemented and
new RSX commands |ROMUP, |ROMSET, |ROMUPD
M4FIRM_v105.zip
1.06 Fix WEB UI instability issue.
Fix romupload for roms with or without AMSDOS header, and related bugs.
M4FIRM_v106.zip
1.07 Fixes and buffering for cas_in_char,
fix |ROMUP to work from .dsk files, fix cat/dir loop,
fix httpget to work with IP addresses aswell as hostnames.
M4FIRM_v107.zip
1.08 FIX IP addresses for httpget (again). Fix
|dir bug. Fix hardreset.
Added C_GETPATH command (requested).
Added ability to load your own build of M4ROM from root of microSD, should be named M4ROM.BIN
M4FIRM_v108.zip
1.09 Added nonblocking host & client NETAPI.
Added ESC check to cat/|dir.
M4 board now looks for autoexec.bas at bootup, similar to old dos machines, autoexec.bat. Make your own startup script in basic.
Direct SD card sector access.
Various minor fixes
M4FIRM_v109.zip
2.00 GETPATH, |UDIR, |LONGNAME by SOS
Added C_GETNETWORK command.
Added status byte after response string to C_NETSTAT
Fix |cd,"/" to go to root if inside a DSK image.
Fix SD hotswapping.
Remove KM_RESET from cat/dir when pressing ESC.
Display current path when using cat/dir.
Increased AMSDOS readspeed (using bigger buffer).
Faster network speed when using netapi.
Keep CPC in reset until init. done. (Fixes issue with C4CPC and M4 at the same time).
Many amsdos compatiblity fixes.
DSK images, handle ASCII art with cat.
Fix multiple network connections.
Added |LS command for long filenames (15 mode 0, 35 mode 1, 75 mode 2).
|cd can use long names too.
autoexec.bas method changed, should no longer give problems with certain basic games.
Remote run - run remote files from WEB interface (control)
|TAPE support, use |SD to switch back to M4
|DISC supported if AMSDOS present, use |SD to switch back to M4
Fix |era long filenames.
|ren fix for long filenames
Added support for ROMDOS dsk images (D1/D2/D10/D20/D40) and PARADOS 80.

M4FIRM_v200.zip

2.01 More fixes to |era & |ren
Added |FCP command to copy between floppies and microSD.
M4FIRM_v201.zip
2.02 Fix carry flag of CAS OUT CHAR
Added tiny |M4HELP
Fixes for |FCP when using wildcard on Drive B, system protected files, excessive 1 byte on <2KB files, display of filename while copying & basic protected files.
Fix C_WRITESECTOR for DSK images
Fix DSK images not having entries ordered
Added support for cpr dsk images
Added |SNA command to load snapshots from microSD card.
M4FIRM_v202.zip
2.03 Added javascript/html5 based navigation to the webinterface, with multifile upload, download, remote run, delete & make directory.
Added ability to CD into DSK & CPR DSK images from the Web UI and use remote run too.
Fixes with running binary files with remote run and improved by changing directory to actual remote folder aswell.
|FCP Fix dodgy filenames, removing system attributes.
|M4HELP now lists the first 32 roms. Use |M4HELP,romnumber to display commands for a specific rom.
Full amsdos header read into amsdos buffer area (will let you retain unused part of header when copying/opening).
Fix autoexec.bas launching when soft-resetting inside a .DSK
Fix |cd into .dsk's with write protection attribute set
Fix web remote run for filenames using html encoded characters
Fix |M4help, using all screen modes
M4FIRM_v203.zip
2.04b6 ctrup and |ctr RSX for CPC plus owner, giving the ability to launch cartridge images.
Fix parsing bug when file not found
Many DSK fixes, now games like Chibi Akumas show loading screen (again), games with fragmented blocks work (ie. Ninja Grannies)
WEB UI, now you can pick "CD ON CPC" when using file browser or from Control, to change the directory on CPC itself
Besides using the webui a http req (ie. wget) can also change directory like this: http://ipnum/config.cgi?cd2=/DEMOS or even into a DSK file.
[..] in the file browser was changed to [BACK] and [.] to [REFRESH] to make it more obvious.
|ls now supports DSK images too (will probably garbage up if using ascii art tho).
|httpget will use attachment filename, rather than url if present.
New command |dskx. With this you can extract dsk images to files. Usage |dskx,"somedisk.dsk","/mypath" and all files are extracted to given path.
CPC+ init. no longer clears screen.
2.04b7 Fix downloading files from the WEB UI

Various files

Modified lower rom for CPC6128 users, who cannot override amsdos (rom 7) with M4 rom, using this patched lower rom, M4 rom must be in rom slot 6. It will be initialized instead of rom 7 and provide better compatiblity with games and higher himem. It's recommended to upload the original AMSDOS (or Parados) rom to rom slot 6, then it will be available when typing |M4ROMOFF.

English version: 6128 lower rom English

Spanish version: 6128 lower rom Spanish

French version by dxs : 6128 lower rom French

Danish version: 6128 lower rom Danish

CPC M4 xfer tool : Command-line tool that allow to send files and receive from an M4 Board. Possibility to add an AMSDOS header too.

M4 Board relay rom  : When moving M4rom out of position 1-7 / 1-16 it will no longer be initialized, therefore this rom should be placed at rom7 or lower. This is if you want to use 32 roms of XMEM and map M4 romboard after it. You should program the XMEM or other romboard with M4 bootrom in pos 1-7, it will look for M4 rom from 1-127 and initialize it + pass commands through to it. NOTE THIS IS OUTDATED, only use for early versions of the M4 firmware (v1.0.1)

Technical information

Structure for romslots.bin & romconfig.bin under m4 directory are:
romslots.bin
Contains 32x raw rom data (no headers). To locate a rom in the file, use:
offset = slot * &4000

romconfig.bin
Header:

int totalRoms; // 32 (early versions of the firmware had only 16)
int m4RomNum; // M4 rom to map rom number 0-255
int m4RomEnable; // M4 rom enabled
int romRangeStart; // start mapping roms from
int lowerEnable; // lower rom replacement enabled
int lowerSlot; // which slot maps lowerrom (0-31)
unsigned int reserved[2]; // set to zero for now

Then for each rom (repeated 32 times):
char updateflag; // 0 = no rom present (or disabled), 1 = rom present (enabled), 2 = New rom will be flashed into M4 internal flash, 3 = remove rom
char name[32]; // name of rom to be displayed in webinterface

Links

Make your own M4 ROM or add additions to the existing, source code can be found here:
https://github.com/M4Duke/m4rom
It's compiled (assembled) with sdasz80 (part of SDCC package).

Various source code examples for M4 board
https://github.com/M4Duke/M4examples

CPC xfer, pc commandline tool to transfer files back and forth to M4 board:
Source code here: https://github.com/M4Duke/cpcxfer
More info here: http://cpcwiki.eu/index.php/CPC_M4_xfer_tool
Command documention and other infos:
http://www.spinpoint.org/cpc/m4info.txt


Disk menu by Joe Halstead, modified by Takis Kalatzis for M4:
http://www.cpcwiki.eu/forum/amstrad-cpc-hardware/amstrad-cpc-wifi/msg134659/#msg134659

YANCC - Norton Commander Clone by SOS, compatible with M4:
http://www.cpcwiki.eu/forum/applications/yet-another-norton-commander-clone

File Launcher by SOS, compatible with M4:
http://www.cpcwiki.eu/forum/applications/filelauncher-(acmedosm4dos)

Menu program for M4 (with program & games download direct from the internet) by rafa32gr:
http://amstrad.esy.es/

Cases/Enclosures for M4 board:
3D printer case for MX4/IDC version:
http://www.cpcwiki.eu/forum/amstrad-cpc-hardware/amstrad-cpc-wifi/msg131442/#msg131442

3D printer case for EDGE connector "straight" version:
http://www.cpcwiki.eu/forum/amstrad-cpc-hardware/amstrad-cpc-wifi/msg142416/#msg142416

Premade case that can be cut to fit:
http://www.cpcwiki.eu/forum/amstrad-cpc-hardware/amstrad-cpc-wifi/msg142773/#msg142773