RISC World

MakeModes Application Note

Acorn Computers 1994

Application Note - Modified

Original: 5th September 1994
Support Group Application Note
Number: 254
Issue: 1.02
Author: DM
Modified: Frank Watkinson - 9th June 2003

Risc PC monitor definition files explained

The original documents from which the attached modified versions were developed, were produced and copyrighted by Acorn Computers Limited in 1994. Whoever now holds the copyright, there does not appear to be any maintenance of the original documents or the application to which they refer, i.e. !MakeModes. Please note the the changes to these documents were made with good intentions and if anyone is aggrieved at the action taken in making these modifications, they should contact the under-mentioned so that appropriate action can be taken.
Frank Watkinson
This application note describes in detail Risc PC monitor definition files. It should be read in conjunction with the !MakeModes revised Manual, which should (hopefully) be found in the same location as this document.
!MakeModes is an application which assists in the creation and editing of Risc PC monitor definition files.

The !MakeModes application and this application note assume a degree of technical knowledge concerning video display generation and is not intended for use by those unfamiliar with display technology. (User BEWARE!)

Applicable Hardware:
Risc PC range
Understood to apply also to the Iyonix PC.

Related Application Files:
!MakeModes v:0.25
Also available as version 0.26, but both versions have the same date in the 'Info' panel: "14th December 1994".
Revised Manuals are available in HTML, Ovation Pro, EasiWriter and Impression formats (and as raw text and image files for the do-it-yourselfers), dated 8th June 2003. Original Copyright (C) 1994 Acorn Computers Limited

Every effort has been made to ensure that the information in this leaflet is true and correct at the time of printing. However, the products described in this leaflet are subject to continuous development and improvements and Acorn Computers Limited reserves the right to change its specifications at any time. Acorn Computers Limited cannot accept liability for any loss or damage arising from the use of any information or particulars in this leaflet. ACORN, ECONET and ARCHIMEDES are trademarks of Acorn Computers Limited.
The above aims are reflected in this modified version, in respect of trying to make explanations clearer.

The same aims were in view when making the latest modifications ... FW, 8 Jun 03



The Acorn Risc PC, unlike any previous Acorn machine, does not have information on screen modes built into the operating system. Screen modes are instead defined in a Monitor Definition File (MDF) which is loaded when the machine boots up. This provides the user of a Risc PC with a much greater degree of flexibility when it comes to choosing a monitor as screen modes can now be individually tailored to suit the facilities offered by the monitor.


A Monitor Definition File which normally resides in the !Boot.Resources.Configure.Monitors directory is a plain text file which defines all of the parameters necessary for the Risc PC to generate and display RISC OS screen modes. An example segment of an MDF follows ...

monitor_title:Acorn AKF60

# 320 x 250 (70Hz)
mode_name:320 x 250

# 800 x 600 (75Hz)
mode_name:800 x 600

# 1024 x 768 (60Hz)
# High band
mode_name:1024 x 768
#    VESA:136,160,0,1024,0,24

Each screen mode that you wish to use should be defined as above within the monitor definition file. The application !MakeModes can be used to generate monitor definition files from data supplied by the user. It should be available from your Acorn Dealer and maybe your local I.T. Centre (if there is one!) The application originally consisted of a disc containing !MakeModes, a ReadMe file and an accompanying manual. Otherwise you may have to seek !MakeModes on a website where such antiquities are stored. (Version 0.26 of !MakeModes is currently available on The Acorn legacy FTP Site in a zip file which also contains the original 1994 version of this Application Note, as Text and Images!)

You are advised not to edit monitor definition files directly. One possible exception which should not cause a problem is changing the number alongside "DPMS_state:" which is 2 lines below "file_format:1". Even so, it is recommended to make a backup copy of the original before attempting the change.

The parameters "file_format", "monitor_title" and "DPMS_state" are set only once at the beginning of an MDF. The command "startmode" tells the machine that a mode definition follows. All lines beginning with "#" are treated as Comments and not acted upon. Below is a summary of all of the commands used in an MDF.

file_format:    format
monitor_title:  title
DPMS_state:     state

# A comment, usually the mode resolution and frame rate (Hz)
mode_name:     mode_name
x_res:         x-resolution
y_res:         y-resolution
pixel_rate:    pixel_rate
h_timings:     hsync, hbpch, hlbdr,hdisp,hrbdr,hfpch
v_timings:     vsync, vbpch, vtbdr, vdisp. vbbdr, vfpch
sync_pol:      sync_polarities 

The spacing shown, immediately above and below, between ":" and the designation or abbreviation is normally absent in real mode definitions. (See the first example nearer the start of this note.)

The following explain the abbreviated terms above:

mode_name:      is a textual name for the mode that will be
                used in the Iconbar's Display Manager's mode
                menu. It is possible to prevent defined screen
                modes from appearing in the modes menu by
                simply leaving this field blank. Mode names
                are limited to 19 characters in length and may
                contain space characters.

x-resolution:   is the number of pixels displayed across the
y-resolution:   is the number of rasters displayed vertically

hsync:          is the width of the horizontal sync pulse.
hbpch:          is the width of the horizontal back porch.
hlbdr:          is the width of the left border.
hdisp:          is the number of pixels displayed horizontally
                (which is normally the same as the x-resolution). 
hrbdr:          is the width of the right border. 
hfpch:          is the width of the horizontal front porch.

vsync:          is the width of the vertical sync pulse.
vbpch:          is the width of the vertical back porch.
vtbdr:          is the width of the top border.
vdisp:          is the number of rasters displayed vertically
vbbdr:          is the width of the bottom border.
vfpch:          is the width of the vertical front porch.

pixel_rate:     is the pixel rate in kHz.
sync_polarities:is a number indicating what kind of sync
                signals are required. The kinds of sync
                signal are as follows:

        0       hsync normal, vsync normal
        1       hsync inverted, vsync normal
        2       hsync normal, vsync inverted
        3       hsync inverted, vsync inverted

All values on the h_timings line are in units of pixels, and all values on the v_timings line are in units of raster lines.

Note: VIDC20 imposes restrictions on these parameters. In particular, all the horizontal timing values must be in multiples of 2, and the horizontal total (hsync + hbpch + hlbdr + hdisp + hrbdr + hfpch) must be a multiple of 4.

The diagram below gives a graphical representation of the above information.


Figure 1


Glossary of terms

Before describing in detail how these parameters can be used to define a new screen mode, it is necessary to understand some of the conventions that will be used in this application note.

Video Bandwidth:
Video Bandwidth is the term used to describe the amount of video information that a Risc PC can process over a specified time period. Typically, video bandwidth will be specified as megabytes per second e.g. a Risc PC fitted with 2MB VRAM has a maximum video bandwidth of 156MB/sec.

Dot Pitch:
The dot pitch is the physical spacing of the phosphor dots that a monitor uses to generate a screen display. The smaller the dot pitch, the clearer the picture. Some high resolution screen modes may appear blurred if the dot pitch is not small enough to cope with the size of the pixels being generated by the computer.

Line Rate (Horizontal frequency):
A monitor's line rate defines the speed at which a monitor can scan one horizontal line. The line rate is normally specified as a range in kHz, i.e. the AKF60 has a line rate range of 30-50kHz.

Frame Rate (Vertical frequency):
The frame rate is the speed at which the monitor can refresh the screen. The frame rate is normally specified as a range in Hz, e.g. the AKF60 has a frame rate range of 40-90Hz.

The frame rate has a significant effect on the usability of any given mode formulated for use with a given cathode ray tube (CRT) monitor. If the frequency is too low, the screen will appear to flicker and this can have a profound effect on the person viewing the screen over a period of time. A general guide would be to aim to use not less than 75Hz. The minimum apparently varies from one person to another and also depends on the persistence of the phosphor used in the CRT. Some people claim to be able to work satisfactorily at a frequency as low as 60Hz, whereas some others claim to need at least 80 or 85 Hz.

The problem of flicker does not affect LCD/TFT display monitors and modes are usually more constrained by the need to follow the internally programmed modes in respective monitors.

Pixel Depth:
Pixel depth dictates the number of colours that can be displayed on the screen. Pixel depth is measured in bits per pixel (bpp). The following table describes how bits per pixel relates to the number of colours that will be displayed;

      Bits per pixel      Number of colours

      1   bpp             2
      2   bpp             4
      4   bpp             16
      8   bpp             256
      16  bpp             32000
      32  bpp             16 Million

Limiting Factors

Before creating a new screen mode or a new monitor definition file using the !MakeModes application, you should be fully aware of the factors limiting the display of a screen mode and the inter-relationship of the variable parameters.

The following describes these interrelationships and offers guidance on the limits for the screen mode definition. As values are changed, the MakeModes application automatically checks that the mode will be displayable, if it is not, MakeModes will inform you. However, much time will be saved when attempting to create new modes if you understand and work within the limits imposed rather than using a 'trial and error' method.

Listed below are the three main limiting factors which are discussed in this document.

                 Monitor Limitations
                 Memory Limitations
                 Bandwidth Limitations

Monitor Limitations

The screen mode must not exceed the monitor's line rate (horizontal frequency), frame rate (vertical frequency) or its maximum pixel rate. A monitors line and frame rate ranges can normally be found in its accompanying documentation. Please see the MakeModes manual for information on how to enter this information.

The Pixel rate is one of the principal variables that you will use in the MakeModes application. It can be used to increase or decrease a modes Frame rate. Because a modes Line rate is directly affected by its Frame rate, altering the Pixel rate will change this value as well.

The Pixel rate is calculated from:

     Pixel Rate = sum(h_timings) * sum(v_timings) * proposed
                                                     frame rate

The Frame rate can be calculated from:

     Frame Rate = pixel_rate / (sum(h_timings) * sum(v_timings))

The Line rate is calculated from:

     Line Rate = sum(v_timings) * frame_rate

Memory / Bandwidth Limitations

The Risc PC can have up to three different screen memory configurations, no VRAM (DRAM only), 1MB VRAM or 2MB VRAM.

With no VRAM fitted the Risc PC will be forced to use DRAM which has a slower access time than dedicated Video RAM. This greatly increases the amount of time spent by the processor updating the screen and therefore limits the amount of memory that can be used as screen RAM. This limitation in turn limits the maximum resolution and pixel depth that can be used. On a machine with 1MB VRAM, the maximum amount of screen memory that the system can process is 80MB/sec, with 2MB of VRAM, this figure doubles giving a maximum video bandwidth of 160MB/sec. Without VRAM the maximum video bandwidth is 40MB/sec. In order to provide a safety margin, the bandwidth limit file stored in the !Boot directory on the Risc PC hard disc (and in !MakeModes.Limits) sets the maximum bandwidths to 38MB/sec, 76MB/sec and 152MB/sec respectively.

Is is important to be aware of both the memory and bandwidth calculations as it is possible to define a mode that fits within the available video RAM but exceeds the machines maximum video bandwidth. The MakeModes application will warn you if a proposed screen mode will exceed either of these limitations.


Calculating required bandwidth for a screen mode

The bandwidth used by a screen mode increases according to the number of colours being used. The calculations necessary to find the bandwidth for each bits per pixel (bpp) mode are listed below;
     bpp          Calculation used

   1   bpp        Video Bandwidth = (pixel_rate / 1000000) / 8
   2   bpp        Video Bandwidth = (pixel_rate / 1000000) / 4
   4   bpp        Video Bandwidth = (pixel_rate / 1000000) / 2
   8   bpp        Video Bandwidth = (pixel_rate / 1000000)
   16  bpp        Video Bandwidth = (pixel_rate / 1000000) * 2
   32  bpp        Video Bandwidth = (pixel_rate / 1000000) * 4

These calculations will give results in MB/sec.


Calculating memory requirements for a screen mode

Besides bandwidth limitations, another factor that one must also consider when creating a new mode is the amount of screen memory that will be needed. To work out how much memory a screen mode will need you must first find out how many pixels will be displayed in total. Multiplying the x_resolution by the y_resolution will give this figure.
        pixel_total = x_resolution * y_resolution

This total is then used in conjunction with the number of bits per pixel (bpp) to calculate the amount of memory required.
            bpp           Calculation used

          1   bpp         VRAM = pixel_total / 8
          2   bpp         VRAM = pixel_total / 4
          4   bpp         VRAM = pixel_total / 2
          8   bpp         VRAM = pixel_total
          16  bpp         VRAM = pixel_total * 2
          32  bpp         VRAM = pixel_total * 4


The following table gives an example of how much memory is required for some standard screen modes at various colour depths (bpp).

Colour & Resolutions

As can be seen from the table above, not all screen modes can be displayed at every pixel depth, e.g. only machines with 2MB VRAM would be able to display 800 x 600 at 16 Million colours. Machines fitted with only 1MB VRAM could only display those modes that require 1024KB or less.


What the horizontal and vertical timings mean

The horizontal sync width (hsync) value is the time, in units of pixels of the horizontal sync pulse. If the hsync pulse is not wide enough the monitor will be unable to sync correctly.

The horizontal back porch (hbpch) and and horizontal front porch (hfpch) values define the time, in units of pixels, from the end of the hsync pulse to the start of the horizontal left border (hlbdr) and the end of the horizontal right border to the end of the horizontal scan line, respectively. Amongst other things the hsync+hbpch time period is used by the VIDC20 to switch between cursor and video data. If the combined time period is not long enough, the screen display will be corrupted as the VIDC20 will be unable to fetch video data before the screen display starts.

The horizontal left border and horizontal right border values define the time period, in units of pixels, for the left and right screen borders.

NOTE: The horizontal left border and horizontal back porch values can be altered to position the picture correctly in the horizontal sense.

The horizontal display (hdisp) value is the horizontal screen resolution, i.e the number of pixels displayed across the screen.

The vertical sync (vsync) value is the width, in units of raster, of the sync width pulse. If this pulse is not wide enough, the monitor will be unable to sync to the signal.

The vertical porches (vbpch, vfpch), vertical borders (vtbdr, vbbdr) are the vertical equivalents of the horizontal values but are all measured in units of raster, not pixels.

Acorn Computers 1994