O uses a system where up to 20 virtual dials can be used at any one time. The first eight of these, inputs 1-8, are reserved for use with controlling the view on the screen and so never get changed. The other 12, are allocated and de-allocated as commands are activated. Because the dial boxes on both E&S and SGI use 8 physical dials, we map the 20 logical inputs to 4 so-called dialboxes. In the distributed startup file, this mapping ensures that the first 4 logical inputs (controlling rotations and zooming) are always available. The mapping groups together:
box 1 : 1 2 3 4 5 6 7 8 box 2 : 1 2 3 4 9 10 11 12 box 3 : 1 2 3 4 13 14 15 16 box 4 : 1 2 3 4 17 18 19 20
The mapping is actually controlled by entries in the database ( .box1 to .box4) that control the assignments. These can be changed by the user. The commands Dial_previous/ Dial_next cycle through these 4 boxes. The user is not limited to 4 sets of boxes, but O internally uses only 4. The user can make entries in the database ( .box5 upwards) for special assignments. For example, it may be preferable to have all 6 degrees of freedom on the dial box when manipulating a Move_zone.
This mechanism also has the advantage of deciding which sets of dials to associate with the screen rotations (a source of problems for some people who have got used to a particular way of working on other programs).