Difference between revisions of "M4 Board"
Line 36: | Line 36: | ||
[[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 | [[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 | ||
+ | |||
+ | |||
+ | == Technical information == | ||
+ | Structure for romslots.bin & romconfig.bin under m4 directory are:<br /> | ||
+ | romslots.bin<br /> | ||
+ | Contains 32x raw rom data (no headers). To locate a rom in the file, use:<br /> | ||
+ | offset = slot * &4000<br /> | ||
+ | |||
+ | romconfig.bin<br /> | ||
+ | Header:<br /> | ||
+ | <code> | ||
+ | int totalRoms; // 32 (early versions of the firmware had only 16)<br /> | ||
+ | int m4RomNum; // M4 rom to map rom number 0-255<br /> | ||
+ | int m4RomEnable; // M4 rom enabled<br /> | ||
+ | int romRangeStart; // start mapping roms from<br /> | ||
+ | int lowerEnable; // lower rom replacement enabled<br /> | ||
+ | int lowerSlot; // which slot maps lowerrom (0-31)<br /> | ||
+ | unsigned int reserved[2]; // set to zero for now | ||
+ | </code><br /> | ||
+ | Then for each rom (repeated 32 times):<br /> | ||
+ | <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<br /> | ||
+ | char name[32]; // name of rom to be displayed in webinterface<br /> | ||
+ | </code> | ||
+ | <br /> |
Revision as of 03:49, 31 July 2016
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
Version | File |
---|---|
1.01 | M4FIRM_v101.zip |
1.02 | M4FIRM_v102.zip |
1.03 | M4FIRM_v103.zip |
1.04 | M4FIRM_v104.zip |
1.05 | M4FIRM_v105.zip |
1.06 | M4FIRM_v106.zip |
1.07 | M4FIRM_v107.zip |
1.08 beta | M4FIRM_v108b.zip |
Various files
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.
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
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