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.
|