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.htmlSome of the older versions to convert from:
older CMM2 manuals:
https://geoffg.net/Downloads/Maximite/CMM2_Archive/original Colour Maximite:
https://geoffg.net/OriginalColourMaximite.htmlMonochrome Maximite:
https://geoffg.net/MonoMaximite.htmlDifferent 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#152617MODE
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#151593about converting font files.
and here:
https://www.thebackshed.com/forum/ViewTopic.php?TID=12433&P=2#151603you 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