Compatible with:
DOS Maximite
CMM MM150 MM170 MM+ MMX Picromite ArmiteL4
Armite F4 ArmiteH7 Picomite CMM2
Syntax:
MODE r, bits [, bg [, int]]
MODE mode [, palette]
Description:
For the CMM2:
MODE r, bits [, bg [, int]]
Set the format for the VGA video output.
'r' is the screen resolution. It is a number from 1 to 13 as follows:
1 = 800 x 600 pixels Monitor sees 800 x 600 60Hz
2 = 640 x 400 pixels Monitor sees 640 x 480 75Hz
3 = 320 x 200 pixels Monitor sees 640 x 480 75Hz
4 = 480 x 432 pixels Monitor sees 640 x 480 75Hz
5 = 240 x 216 pixels Monitor sees 640 x 480 75Hz
6 = 256 x 240 pixels Monitor sees 640 x 480 75Hz
7 = 320 x 240 pixels Monitor sees 640 x 480 75Hz
8 = 640 x 480 pixels Monitor sees 640 x 480 75Hz
9 = 1024 x 768 pixels (12-bit mode not available) Monitor sees 1024 x 768 60Hz
10 = 848 x 480 pixels (widescreen format) Monitor sees 848 x 480 60Hz
11 = 1280 x 720 pixels (widescreen format 12-bit mode not available) Monitor
sees 1280 x 720 60Hz
12 = 960 x 540 pixels (widescreen format 12-bit mode not available) Monitor sees
1920 x 1080 60Hz
13 = 400 x 300 pixels Monitor sees 800 x 600 60Hz
14 = 960 x 540 pixels (widescreen format 12-bit mode not available) Monitor sees
960 x 540 60Hz
15 = 1280 x 1024 pixels. Monitor sees 1280 x 1024 60Hz
16 = 1920 x 1080 pixels Monitor sees 1920 x 1080 60Hz (G2 only)
17 = 384 x 240 pixels Monitor sees 640 x 480 75Hz
‘bits' is the colour depth and can be 8, 12, or 16 – see the table below.
‘bg’ is the background colour and can be used in the 12-bit mode.
If pixels in layer 0 are not set to solid (transparency = 15) then the
background will show through as determined by the transparency value of the
pixel.
This parameter is ignored in 8 and 16-bit modes.
‘int’ is a subroutine that will be called at the start of frame blanking.
The specifications of the colour depth ('bits') are:
16-bit
12-bit 8-bit 32 bit (G2
only)
H/W Pixel Format RGB565
ARGB4444 RGB332 ARGB8888
Colours
65536
4096 256
256*256*256
Transparency
None 16-levels None
None - set to FF
Pages
Used
1
2 1
1
Layers
1 2+backgnd
1 1
The numbers of pages available in the various modes are:
Mode
Pixels
G1 Pages G2 pages
bits
8 12 16 8
12 16 32
Mode 1 800 x
600 7 3
3 16 7 7
3
Mode 2 640 x
400 14 7
7 30 15 15 7
Mode 3 320 x
200 55
26 27 61 57 58
28
Mode 4 480 x
432 16 8
8 36 18 18 8
Mode 5 240 x
216 62
31 32 61 61 61
34
Mode 6 256 x
240 55
27 28 61 60 61
29
Mode 7 320 x
240 43
21 22 61 46 47
21
Mode 8 640 x
480 11 5
5 24 11 11 5
Mode 9 1024 x
768 4 -
2 9 - 4 -
Mode 10 848 x
480 8 3
3 18 8 8
4
Mode 11 1280 x
720 3 -
1 7 - 3 -
Mode 12 960 x
540 5 -
2 12 - 5
-
Mode 13 400 x
300 28
12 13 61 28 29
13
Mode 14 960 x
540 7
3 3
Mode 15
1280 x1024 3
- - 5
- - -
Mode 16 1920 x1080
- - - 3 - - -
Mode 17 384 x
240 35 15 16
68 38 39 16
All modes other than 10,11, 12 and 14 work perfectly with monitors that have an aspect ratio
of 4:3 or widescreen monitors that can switch to that ratio (most widescreen
monitors will do this automatically).
Modes 10,11,12, 14 and 16 are in widescreen formats. Mode 16 is G2 only
The display always shows the contents of page 0 (32-bit, 16-bit and 8-bit) and pages 0
and 1 (12-bit). Use PAGE WRITE and PAGE COPY to avoid flashing and tearing
artefacts.
For 12-bit colour depth page 0 is the lower level and page 1 the upper so the
stack is: background, page 0, page 1 with each one overwriting the previous in
turn as defined by the transparency values of each individual pixel.
MM.INFO(MAX PAGES) and MM.INFO(PAGE ADDRESS n) are useful if you wish to PEEK or
POKE the video memory.
In all cases the memory is arranged as a two dimensional array x,y so, to get
the address of a specific pixel on a specific page n,:
With an 8-bit colour depth you would use:
add% =MM.INFO(page address n)+ y* mm.hres +x
For 12 or 16-bit colour depth you would use
add% =MM.INFO(page address n)+ (y* mm.hres +x) * 2
For modes 3 and 5 each line is duplicated to get square pixels so Y needs to be
multiplied by 2 for PEEK and both lines y*2 and Y*2+1 need to be POKEd.
Eg, for an 8-bit colour depth:
add1% = MM.INFO(page address n)+ (y * 2) * MM.HRES + x
add2% = MM.INFO(page address n)+ (y * 2 + 1) * MM.HRES + x
For the 12 and 16-bit modes you can use POKE SHORT and PEEK(SHORT) which are
designed for this purpose.
The current mode can be determined by MM.INFO(MODE)
LIST PAGES will list all the pages and memory address for the current mode.
For the CMM1:
MODE mode [, palette]
Sets the number of colours that can be displayed on the screen. 'mode' can be:
1 Monochrome mode. 'palette' will select the colour to use and can be 0 to 7
representing the colours black to white. This mode provides complete
compatibility with programs written for the monochrome Maximite
2 Four colour mode. 'palette' can be a number from 1 to 6 and will select the range of colours available (see table below).
3 Eight colour mode. In this mode all eight colours (including black and white) can be used. 'palette' can be supplied but will be ignored.
4 240x216 pixel resolution with all eight colours (including black and white) available. 'palette' can be supplied but will be ignored.
In mode 2 the colours available in each palette are:
palette = 1 Black, Red, Green, Yellow
palette = 2 Black, Red, Blue, Purple
palette = 3 Black, Red, Cyan, White
palette = 4 Black, Green, Blue, Cyan
palette = 5 Black, Green, Purple, White
palette = 6 Black, Blue, Yellow, White
The MODE command allows the programmer to trade the number of colours used
and resolution against the amount of memory required by the video driver.
Modes 1 and 4 use the least amount of memory while mode 3 uses the most.
A useful test card program to se all the modes in action.
Last edited: 04 July, 2021