===CMM2 Converting older MMBASIC programs===
==Tips on converting code from older versions of MMBASIC, e.g. the version for the original Colour Maximite, to the CMM2's current version.==
===Language References===
The current CMM2 MMBASIC manual is at [[https://geoffg.net/maximite.html]]\\
Some of the older versions to convert from:
older CMM2 manuals:
[[https://geoffg.net/Downloads/Maximite/CMM2_Archive/]]\\
original Colour Maximite:
[[https://geoffg.net/OriginalColourMaximite.html]]\\
Monochrome Maximite:
[[https://geoffg.net/MonoMaximite.html]]\\
===Different variable names by type===
Many old programs re-use variables with different types. e.g. A and A$. Modern versions of MMBasic (V5 onwards) don't allow this so that is the first thing to fix. e.g they could be A and AStr$ instead.
Old:
DIM A
DIM A$
A=1.6
A$="Hello"
PRINT A$
New:
DIM A
DIM AStr$
A=1.6
AStr$="Hello"
PRINT AStr$
For porting space invaders, where there were these two variables:
Dim InvLine(5)
Dim InvLine$(5)
I (capsikin) added an S for the second one, making it Dim InvLineS$(5)
Then copied InvLineS$
and searched for InvLine$, pressed Ctrl-V to replace it, pressed Right Arrow to move to the next instance, replaced that, and so on.
===OPTION LEGACY, and PIXEL, LINE, BOX and CIRCLE===
You can use OPTION LEGACY ON at the start of a program to continue using the old syntax for the graphics commands: PIXEL, LINE, BOX and CIRCLE.
or you can change the code for the new syntax.
===LINE and BOX===
There was discussion about the LINE / Box command in this thread, along with a BASIC SUB version that used similar arguments to the old version.
[[http://www.thebackshed.com/forum/ViewTopic.php?TID=12562&PID=152617#152617]]\\
===MODE===
The MODE command has different syntax, and different modes.
Old syntax is MODE mode
(and optional argument, palette)
New syntax is MODE resolution, bits
(and 2 more optional arguments). Setting bits as 8 is the minimum, and plenty more than the old modes.
The old Colour Maximite, modes 1,2,3 have resolution 480 x 432 pixels, which you can match with mode resolution 4 in the Colour Maximite 2.
The old Colour Maximite, mode 4 has resolution 240 x 216 pixels, which you can match with mode resolution 5 in the Colour Maximite 2.
But a different mode may work better in some cases, as the new mode resolution 1 (800x600), 2 (640x400) and 3 (320x200) align properly with the the expected pixel locations of modern LCD displays.
The other modes may appear to have uneven pixel sizes.
===LOCATE===
The space invaders game port had a LOCATE SUB to be compatible with the version in older MMBASIC
sub locate x,y
print @(x,y);
end sub
===Fonts===
discussed in this thread
NEXT STEP- To start converting all the archive of programs
here:
[[https://www.thebackshed.com/forum/ViewTopic.php?TID=12433&P=2#151593]]\\
about converting font files.
and here:
[[https://www.thebackshed.com/forum/ViewTopic.php?TID=12433&P=2#151603]]\\
you can only have one font file.
===Sprites===
CMM2 has a limit of 64 sprites (maybe 63 in early firmware versions due to a bug)
===Space Invaders game port===
This is used as an example a couple of times in the page.
[[http://www.thebackshed.com/forum/ViewTopic.php?TID=12549&PID=152612#152612]]\\