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!)
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.
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
Introduction
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.
Overview
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 ...
file_format:1 monitor_title:Acorn AKF60 DPMS_state:1 # 320 x 250 (70Hz) startmode mode_name:320 x 250 x_res:320 y_res:250 pixel_rate:12587 h_timings:36,14,12,320,12,6 v_timings:2,109,0,250,0,88 sync_pol:2 endmode # 800 x 600 (75Hz) startmode mode_name:800 x 600 x_res:800 y_res:600 pixel_rate:49500 h_timings:80,46,42,800,42,46 v_timings:3,21,0,600,0,1 sync_pol:0 endmode # 1024 x 768 (60Hz) # High band startmode mode_name:1024 x 768 x_res:1024 y_res:768 pixel_rate:65000 h_timings:128,36,60,1024,60,36 # VESA:136,160,0,1024,0,24 v_timings:6,29,0,768,0,3 sync_pol:0 endmode
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) startmode 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 endmode
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
screen.
y-resolution: is the number of rasters displayed vertically
(pixels).
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
(pixels).
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.
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 phophor 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
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
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 calulated from:
Frame Rate = pixel_rate / (sum(h_timings) * sum(v_timings))
The Line rate is calculated from:
Line Rate = sum(v_timings) * frame_rate
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
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.