RISCOS.com

Design Goals
Release Components
Support for earlier
OS versions
Softload ROM images
Softload sizes
Major changes
Changes over 
RISC OS 4
Kernel Changes
Reduced kernel size
Dynamic areas
System variables
Boot options
Internet components
ShareFS
Resolver
Firewalling
Mimemap
BootP
DHCP
System Time
Syslog
Internet speed up
File Systems
File switch
ShareFS
PipeFS
ISO9660
CDFS
Filer components
Filer
Shared directories
Filer Action
ADFS Filer
CDFS Filer
RAMFS Filer
Window Manager
Desktop components
Paint, Draw, Edit etc
Paint
Draw
ChangeFSI
Squash
Puzzle
Task Manager
Pinboard
TaskWindow
Graphics System
Font Manager
PNG Decoding
CompressJPEG
Sound system
Configuration
- Boot
- Filer
- Font
- Keyboard
- Pinboard
- Screen
- Internet
Miscellaneous
Boot Sequence
Documentation

RISC OS Select

Issue One 
Programmers Overview

Design Goals

RISC OS Select (Select) has a number of goals which it aims to meet :

Improving RISC OS, based upon the work done by the original team, to make the overall system more reliable and user friendly.
  • Fixes for known bugs wherever possible.
  • Provide a framework upon which others may continue to develop components based on the OS.
  • Integration of external components where appropriate and suitable.

The most important of these are the first and second - improving the OS, and providing a framework upon which others may build. In simpler terms, Select has more functionality for the user, but importantly provides a lot of scope for developers and enthusiasts to provide other products. It is expected that issue 2 will continue in this vein, providing more facilities for developers and encouraging development in a way that has not happened before.

Select is one of the most stable versions of RISC OS presently available, building upon RISC OS 4's already stable background. Improvements such as memory protection for major workspace areas, the greater range of bug fixes, and updates for greater functionality, have all made the system much more stable than it ever has been before.

 back to top

Release Components

Select will consist of a similar set of release components as previous versions of RISC OS, although some will be packaged differently.
The primary difference with Select is that it will provided over time. Select (issue 1) is only the first of an ongoing series of developments. Each issue of RISC OS Select will be self-contained, but base its technology on that of the previous release. Select (issue 2) will, therefore, consist of the components supplied with Select (issue 1) plus any additional components.
This does not preclude the possibility of a component being removed or replaced should problems be found. However, the short period between issues will allow for a much greater turn-around for any issues that are identified.
Unlike previous OS releases, where the period between releases was of the order of years, with Select the period will be a matter of months.
The primary difference for Select users is that they will not be required to install a new set of ROMs to use Select. Because the key parts of Select will be provided as a softloaded ROM image, this removes the necessity for the physical ROMs to be changed.

 back to top

Support for earlier OS versions

Select is taking a further bold move in that support for earlier OS versions will not be provided in any form. Cutting ties with RISC OS 3.7, and earlier, gives a much greater freedom to developers and users and paves the way for simpler and more reliable software development. This, coupled with the fact that RISCOS Ltd do not have source to earlier OS versions, makes this move much more sensible for the longer term.
Select is fully compatibile with existing software: all software that works with RISC OS 4 will continue to work with Select in unmodified form. There are no known issues with third party software and Select. Software designed for earlier versions of the OS should continue to function as before, provided it conforms to the documented interfaces. The operating system will not be compromised simply to provide support for a broken piece of legacy software. Whilst this may, on the face of it, seem like RISC OS is going to explicitly break such software, there is another facet to this.
Software which fails on the new version of the OS because of use of undefined interfaces is actually preventing further development of the OS, and promoting a broken operating system. It is expected that non-compliant legacy software will be fixed through patches or upgrades from the companies involved (assuming they are still active in the RISC OS market).
Most software will function with Select in the same manner that it did with RISC OS 4. Software which was updated for RISC OS 4 should already be compatible with Select.

 back to top

Softload ROM images

ROMs are now supplied as softload images. This means that they are able to be changed much more easily than physical ROMs. Switching between different images will be achieved through a configure plug-in.
Typically softload images will take around 5 seconds to load on a power on reset. Subsequent resets (through either the Task Manager, or by pressing Ctrl-Break) do not require softload to be performed. Total time from switching on a clean Select machine to desktop is 12 seconds.
In addition switching to a different softload image, or disabling the softload can be done entirely from software with no dismantling of the machine or laceration of fingers being required. This means that if a piece of software is incompatible (which isn't likely, but is always a possibility), or if the user wishes to reclaim the memory used by the softload for some operation, or they just want to test on baseline RISC OS 4, they can revert back easily.

 back to top

Softload sizes

In order to provide greater facilities on boot up, and take advantage of the facilities offered by softloading, the ROM size has been increased to 6MB. This makes it possible to include components which would otherwise have required separate softloading as part of the Boot sequence.
When softloaded, the memory used by the softload will not be available to the rest of the system. Consequently, a 66MB machine would, with a 6MB softload, appear to have 60MB of memory.

 back to top

Major changes

  • Wide-scale changes to system components to move toward dynamic area use for components which previously used shared memory. This improves both the efficiency of the machine and also its stability.
  • Networking components have been updated to integrate more efficiently with the system and to be more resilient. LanManFS makes inter-working with PC-systems much easier.
  • Kernel components separated to reduce the size and make the system more maintainable and more easily upgradeable.
  • First stage system-wide clipboard support. Clipboard support in the major OS-applications - Paint, Draw, Edit and ChangeFSI.
  • Improved CDFS, capable of reading RockRidge, Joliet, and VideoCD format CDs (with suitable CDdrivers). Internal CDFS driver improved to support a wider range of CD drives.
  • User-based configuration. Non-secure user support allows for much simpler configuration when there are multiple users of a system.

 back to top

Changes over RISC OS 4

RISC OS 4, the previous release of RISC OS came in a number of different forms and different versions, 4.02 to 4.04. The term RISC OS 4 is intended to encompass all these versions.
These pages look at some of the changes that have happened since the last release and the impact that this will have on users and programmers.

 back to top

Kernel changes

The Kernel has changed by a reasonable amount for Select, and it is expected to change more in future versions of the OS as it is streamlined and improvements are made.

 back to top

Reduced kernel size

A number of sections of the Kernel have been split off into separate modules. This allows them to be updated independently of the Kernel, should that be necessary, makes the job of maintaining the Kernel simpler and abstracts away from a single monolithic Kernel that everything relies on. Admittedly it makes a slightly-less monolithic Kernel and a couple of extra modules. The principle is that as individual components they can be tested more thoroughly and without an entire ROM image re-issue.

The components which have been split off at present include:-

  • Conversions (OS_Convert* SWIs)
  • SysVars (Sys$* variables)
  • OSSWIs (miscellaneous high level SWIs that have little right being in the Kernel)
  • ReadLine (separate implementation of OS_ReadLine).

 back to top

Dynamic areas

In addition to this, Dynamic Areas can now be treated as OS_Heap-like areas. The effect of this is that applications that might have just used RMA, or had to think about writing a special memory manage for Dynamic Areas can just use a couple of OS_DynamicArea calls.

 back to top

System variables

System variables implemented by modules (code variables) can now be given workspace pointers. This means that they can be used more reliably from C without large amounts of support code.

 back to top

Boot options

If Shift is held down, the Kernel will no longer drop to the configured language. Indeed, there is no configured language any longer. Instead, a 'BootMenu' is run. This is a simple set of options that allows booting from a number of alternate devices.
Many other, minor, improvements have been made to the Kernel, making it more stable, and providing better functionality than previously.

 back to top

Internet components

The Internet components have changed to allow them to interwork much more reliably. In particular, the components now correctly respond to the death or re-birth of the Internet module. This means that replacing the Internet module with a softload, should this be necessary, can be achieved more reliably.

 back to top

ShareFS

ShareFS has been split into two components - the file sharing system, and the 'Hosts' management system. This means that if ShareFS is disabled, the Hosts object is still available to users of the Freeway. Whilst very few applications use this, this divide means that future developers do not have to rely on the existence of ShareFS to provide the Hosts service.

 back to top

Resolver

Resolver is now able to be configured as a DNS server. Although this facility has actually been available for many years, it has never been publicised. Small LANs can now be set up to use a single, central DNS server running on RISC OS without any other software being necessary. This is one step toward making it possible to use a RISC OS machine as a true IP gateway.

 back to top

Firewalling

Firewalling is an issue that has provoked much interest recently and Select provides a mechanism for RISC OS machines to be firewalled. Based on the unix firewalling system, this allows advanced users to block out connections from 'outside' and potentially make their machine unreachable. Whilst RISC OS is not vulnerable to many of the attacks that are prevalent, having the ability to remove these threats completely is a great advantage.

 back to top

Mimemap

Recent developments from the W3C and others have brought forth various XML standards which are becoming more and more prevalent. In order to cope with these developments, MimeMap has been improved to accept wildcarded MIME types. At the same time, the performance of the module has been improved by up to six times. As MimeMap is used for extension translations of non-native filenames, this improvement will be beneficial across the whole system.

 back to top

BootP

Much improved support for BootP allows the system to be booted with almost no local configuration (assuming that the remote server provides necessary details). Automatically configured details include IP address, resolvers, hostname, time servers and LanMan settings.

  back to top

DHCP

Licensing issues have prevented release of DHCP support but it is expected that DHCP support will be available in a later issue of Select.

 back to top

System Time

Support for configuring the system time using a remote server is now provided. This allows the user to fetch the system time from an NTP or Time server on startup, or on demand.

 back to top

Syslog

Remote logging using the well known SysLog protocol is now provided as standard. SysLog has long been used within the Unix world to provide centralised event logging. Within the RISC OS world, the Doggysoft SysLog module provided a comprehensive and versatile interface for programmers. Their API has been used to allow both local and remote logs to be used. This ensures backward compatibility as well as allowing inter-working with Unix systems. Remote logging between unix and RISC OS systems is now not only possible, but simple and very powerful. The SysLog server and remote logger implementations are compliant with the latest drafts for SysLog format compliance.

 back to top

Internet speed up

Internally, Internet system calls are now processed faster than previously. Tests indicate approximately 25% speed increase on most common case. In a similar vein, Freeway now places a much lower load on the system than it did previously.
These changes are part of the ongoing work to improve the Internet stack. Future issues of Select can expect a similar range of changes.

 back to top

File systems

The file systems in Select are one area in which very little change will be seen by the average user. LanManFS is present in ROM, so accessing remote machines is made simpler for the user 
[Note: No front end has yet been decided for this].

 back to top

FileSwitch 

The FileSwitch module controls file systems and provides almost all developer-facing filing facilities. Various minor improvements suggested by developers, have been added to FileSwitch, as well as a few bug fixes for new file systems (including those supporting the RISC OS 4 'ioctl' interface).

 back to top

ShareFS 

ShareFS is now more reliable when accessing files over a remote share. Certain operations were incorrectly abandoned, where now they are reported correctly. This behaviour may have exhibited itself as a failure to access certain files under extreme circumstances.

 back to top

PipeFS 

PipeFS has been improved to support the internal 'GBPB' call. In addition, PipeFS data is now stored in a dynamic area rather than polluting the RMA. Whilst PipeFS is very rarely used, these changes mean that PipeFS is many orders of magnitude faster.

 back to top

ISO9660

When the CD specification ISO9660 was designed, it was with a DOS-like environment in mind. However, time moved on and extensions have been made within ISO9660 to allow extended attributes to be stored on a disc. One of these extensions was the Acorn file type information (the so-called 'ARCHIMEDES' extension) which allows the ! character to appear on CD. Joliet is a more commonly known development from Microsoft which allows the limited use of Unicode characters within filenames as well as allowing longer names than the standard disc format. In parallel with this, the 'RockRidge' standard allows potentially CD-length long filenames.

  back to top

CDFS 

CDFS has been improved to support these standards. As well as this, CDFS also supports reading mixed mode CDs (such as VideoCDs, or 'Enhanced audio CDs'). This is subject to the specific CDFS driver e.g CDFSSoftSCSI being able to read such discs with the drive fitted. The internal CDFS driver CDFSSoftATAPI has been improved to support a greater range of CD drives. It is also possible to configure booting from a CD as part of the new Boot choices.

 back to top

Filer components

Filer components, in particular the Filer itself, have been improved in little ways. Changes to the Filer have been limited due to its ubiquitous nature - modifications to the Filer are much more noticeable and more likely to cause confusion than aid use.
The iconbar Filers have all been improved to allow sharing using a centralised ShareFS dialogue. This standardisation allows for other developers to provide similar facilities from their filers. It also allows Filer itself to provide a 'Share' option for directories.

back to top

Filer

Filer now has the ability to sort files numerically as well as alphabetically. Selections within Filer windows can perform transient highlighting. The effect of this is that as you make a selection, you can see what you are selecting. Filenames which are all uppercase can be displayed as lower case. Names which are all upper case are harder to read, in general, and therefore some users may prefer to force them to lower case. A file which is selected can be renamed by clicking select on the filename. This allows renaming without the use of the alt-key. These features are all optional.
Resizes, or updates of a filer window whilst a file is being renamed now retains the rename icon. This is very useful where a group of shared machines may be modifying the directory, or an application is writing to a file in that directory.

 back to top

Shared directories

Shared directories are now indicated within Filer windows. Selecting the 'New directory' menu option now allows the user to create a directory with the name 'Directory' and then rename it immediately. File drags now use the 'DragAnObject'-style drags, displaying the filename of the object, or a count of the objects being manipulated.
In addition, Filer is now much more resilient to faults occurring in the background. Filer defaults to 'confirm on delete' when no configuration has been made. This is much safer and should prevent a misclick being the cause of much annoyance.

  back to top

FilerAction 

FilerAction is the component which provides multi-tasking file operations such as copying and counting; it can now act as a proxy for other tools. What this means is that a new component can take over FilerAction's job for certain operations. If, for example, someone were to write a 'Count' tool which displayed a graphical representation of the space used, then they would hook on to FilerAction and use its proxying to communicate with the Filer. Other examples of operations which might be replaced include the 'Find' operation, or copying. Future versions of Select may include whatever extended tools people develop (subject to agreement, obviously).

  back to top

ADFS Filer

ADFS Filer has an optional 'Quick' format. This allows the actual format part of the disc format to be skipped and just the new, empty, map and directory to be written. The disc must have already been formatted with the same format. It is not a fast format, just a quick format! Whilst floppy discs are going out of fashion in these days of multi-megabyte data files, the facilities is very useful on those occasions that a floppy disc is needed.

 back to top

CDFS Filer 

CDFS Filer has been re-written from scratch. The new Filer provides the same facilities as the original, as well as adding information about the current disc, improved Share support (as explained above) and an automatic launch of the new CDPlayer application when an Audio CD is inserted.

 back to top

RAMFS Filer 

RAMFS Filer now sports a Share option in the same way as the other filers.

  back to top

Window Manager

The WindowManager has not been updated greatly, but changes should be useful to developers. Various fixes have been made for a few minor issues. Icons can now be 'tinted' in an arbitrary manner. This may be useful to developers, but has yet to be used in any part of the OS at present.
Holding the pointer at the edge of the screen now sends a message to tasks. This might be useful for launcher type applications.

 back to top

Desktop components

The Desktop components have had some of the larger changes of the whole system. As mentioned earlier, there is a new CDPlayer application. There are many CDPlayer applications available as freeware. The application supplied is simple and plays CDs. CDPlayer communicates with AcornCD to read track and disc names.

 back to top

Paint, Draw, Edit, ChangeFSI and SciCalc 

These applications have all been updated to use the ClipboardHolder module. This provides simplified Clipboard facilities for applications that want to export a single file type using the standard Clipboard protocols. Paint, Draw and Edit have also had their menus updated to be more style-guide compliant.

 back to top

Paint 

Paint has had numerous bug fixes and should be much more stable now. As well as being provided as a disc component, rather than a ROM component, it also supports dynamic areas for its workspace. This allows it to use much larger workspace than it could previously handle. Paint will import JPEGs more reliably than before due to restructured import code, and will also import unmasked PNGs. Paint can save single sprites as JPEGs.

  back to top

Draw 

Draw has not been modified as greatly as Paint, but can export simple SVGs (W3Cs vector graphic format). The menu structure within Draw has been revised to be more styleguide compliant and to incorporate the new Clipboard operations. The structure may seem a little strange at first, but it is an improvement on the aging RISC OS 2 layout.

  back to top

ChangeFSI 

ChangeFSI can now import unmasked PNGs, and export via the clipboard. On processing files, the ChangeFSI window is no longer forced to be centred. Where ChangeFSI creates a sprite in a post-3.5 style mode, these are given useful names rather than semi-random numbers. Decoding speed of progressive JPEGs (via djpeg) significantly improved over earlier versions.

 back to top

Squash

Squash can now compress and decompress GZip files in addition to Squash files. This makes decompressing downloaded files much simpler.

  back to top

Puzzle & other diversions

Puzzle has been given a complete overhaul to make it a much more interesting application. It may be a small 'Diversion', but it's fun. MemNow has also been updated, and we expect the range of diversions to be increased over time.

  back to top

Task Manager 

TaskManager has had a few visual tweaks to allow it display memory in a 'tidier' form, similar to that of FilerAction. You can also reset the machine from the shutdown dialogue. This is reflected in the external TaskManager API which now allows shutdown and restart through a single call.

  back to top

Pinboard 

Pinboard can now use a faded background, with different colours at the top and the bottom. It is now possible to configure that double-click Adjust on icons has the same effect as Select (prevents the icon being removed afterward). In addition it is possible to 'pull' the Pinboard window to the front of the screen using a special messages. Together with the Window Manager's edge notification, this might be used to create a simple 'pinboard front' application. Or some other mechanism might be used. The facility is there for other developers to exploit as they see fit.

  back to top

TaskWindow 

is now much more efficient with its use of polling and buffering. Consequently, TaskWindow applications under Select (issue 1) should use around 1% of processor time instead of 60% under normal circumstances where they use the TaskWindow_Sleep upcall. This improvement applies to TaskWindows waiting on PipeFS and most command line-based internet utilities. In addition a number of minor problems with TaskWindow have been addressed.

 back to top

Graphics system

The graphics system has been improved slightly. SpriteExtend - the provider of JPEG rendering routines - now supports a greater range of JPEGs, in particular Exif and some of the stranger formats of JPEGs. Exif images are those produced by digital cameras, and contain a variety of different parameters about how the picture was taken and what the camera was that took it. Whilst this information isn't used by the rendering routines, the format is now recognised and such images can be displayed using the internal renderers. The internal routines still do not support progressive JPEGs. This might be addressed in a later issue of Select.

  back to top

Font Manager

FontManager's path handling code has been re-written from scratch. Consequently, long paths of fonts should now be reliable.

 back to top

PNG decoding

PNG decoding is now provided as part of the ROM. Although this does not, as yet, include support for conversion directly to sprites, or rendering, the library is made available to all for their use. This library is the defacto standard 'libpng' library and can be used as a shared library between multiple clients. This library gives Paint and ChangeFSI their ability to import PNGs.

 back to top

CompressJPEG

CompressJPEG, the module used by ChangeFSI to create JPEGs, has been improved to take any form of data that may exist in a sprite as input, including paletted input. CompressJPEG is also able to embed comments in the JPEG it creates. This allows creators to 'mark' their JPEGs if necessary. It is this that gives Paint the ability to export sprites as JPEGs.

 back to top

Sound system

The sound system has been left idle for a long time. Select (issue 1) is no exception to this, unfortunately. Actually, work has been done on the sound system to make it more resilient to parts being replaced 'on the fly'. Any component of the sound system (SharedSound, SoundScheduler, SoundDMA, SoundChannels, WaveSynth, StringLib or Percussion) may be replaced at any point with minimal effect on the rest of the system. In addition, SharedSound is now considered a vital part of the sound system, providing a layer above SoundDMA, notionally parallel to SoundChannels.
In addition, a 'Sound service' is issued whenever a sound occurs. Developers may use this to provide a form of visual beep, or to re-route sound to an external source should they wish to.

 back to top

Configuration

The plugin configuration system in RISC OS 4 is pretty much unchanged, but has the new configuration options where appropriate.

Boot configuration is unchanged, but for the removal of the 'greyed' options from the 'Apps', 'Look at', and 'Run' sections. These were unselectable because they did not apply to that section. Most of the time they just cluttered the display and made it more difficult to see what was actually happening. The new plugins are much cleaner and clearer.

Filer configuration includes the new options for Filer windows - Active selections, Lower casing, and Select to rename

Font configuration is now categorised, using a Filer-like display similar to that of the top level Configure application.

Keyboard configuration includes the option to configure NumLock on or off. This may not be useful to most users, but anyone with an infrared keyboard will find it very useful as these invariably default to num lock active.

Pinboard configuration has the option to configure the faded background and to disable 'Filer-like' clicks (Adjust removing the icon afterward).

Screen configuration is now categorised in a similar manner to that of Font setup, dividing the configuration into Monitor and Screen saver sections. A new screen saver 'Galaxy' is included with those previously provided.

Internet configuration is very similar to the original InetSetup, but options are provided for configuring time servers, configuring SysLog serving, and enabling the Resolver server. In addition, the firewall script can be edited from here.

  back to top

Miscellaneous

In addition to the areas above, there are many other changes that have been made to the various parts of the system.
ZLib 
Addition of the ZLib shared library means that any application can now use 'standard' ZLib compression or decompression. This facility is used in the PNG module described previously, and in the Zipper module.
Zipper
The new Zipper module provides facilities for creating and decoding Zip files. It is not a file system, but a simple SWI-based API to creating Zip archives and extracting information from them. It is expected that this would be used to extract distributions of files associated with applications, or as a simple mechanism for creating new archives.
PathUtils
A new PathUtils module provides facilities for manipulating Path variables. This may not be useful to most developers, but the handy 'AppPath' and 'PrepPath' commands are simpler and less error prone than manually setting up such paths. FontManager uses PathUtils to provide reliable path manipulation.
Obey files
Obey files are now always cached. This speeds up all obey files by a factor of about 4 times on local filesystems, and on remote filesystems the improvement can be as high as 15-20 times.
Basic
BASIC assembler has been updated very slightly to support some frustrating omissions.

 back to top

Boot sequence

The boot sequence has been restructured since RISC OS 4. Although the general structure remains the same, the usage is slightly different. Initially, there is support for multiple users [Note: No selector plugin yet]. This selects a different set of choices for that user. Choices are actually structured as a three tiered path variable. This allows hardware configuration, 'default' configuration and user configuration.

 back to top

Documentation

Documentation on the changes made in Select (issue 1) will be issued as soon as possible after the first release. Documentation, and updates, will be distributed through the RISC OS Select website.

 
 
      back to top

 RISC OS Select is a trademark of RISCOS Ltd.

This page Copyright © 2001 RISCOS Ltd. All rights reserved.
RISC OS is a trademark of Pace Micro Technology plc.
All other trademarks are the property of their respective owners.
Website comments: webmaster@riscos.com
Page updated 30-08-2001

 


Return to section Index

 
© 3QD Developments Ltd 2013