PCA resource |
ProArtisan 24 | Schema 2 application
| Schema 2 tutorials | Schema 2 examples | Schema 2
converters | Schema 2 macro
editor | Schema 2 macros | WimpBasic application |
WimpBasic manual | WimpBasic
tutorials | WimpBasic extras | WBModules
Clares Micro Supplies was founded in 1981 and published many
of the biggest software titles for RISC
OS until 2002, when APDL and ProAction bought the
rights to publish their back catalogue.
In early 2004, I was employed to produce 32-bit
compatible versions of two Clares applications: Schema 2 and ProArtisan
24. I had to reverse-engineer the C source code for parts
that had been lost. I also updated the user interfaces,
resolved various incompatibilities with modern OS versions
and fixed some longstanding bugs. In late 2005 I did the same
for WimpBasic, with the additional
complication I had to rewrite the code to link programs with
the runtime library.
Those titles have been commercially unavailable since the
death of David Holden of ADPL in 2015. As such, they could be
reasonably described as abandonware.
In addition, being exclusive to RISC OS makes them
technologically obsolete with little commercial value.
In line with the stated desire of Aaron Timbrell and David
Bradforth "to make all of the APDL software titles
available free of charge to single users", I am making
them available here without warranty of any kind. If the
copyright holders wish to assert their rights then they
should email me at the address at the bottom of the page.
The title and icon of each program are linked to the relevant
Zip archive for download. On RISC OS computers Zip archives
may be opened using SparkPlug, SparkFS
(commercial) or Infozip.
!PCARes is a resource for the PCA system. You should place it
in a directory where it will be 'seen' by the filer before
any PCA applications are seen or run. (I suggest
Applications should not include a copy of the PCA
support module. Instead, provide a skeleton copy of !PCARes
so that there is only ever one copy of the module on the
user's system at one time.
0.35 (04 Mar 2003)
ProArtisan 24 is a 24-bit art and painting program which
features many different palettes, filters, effects and
drawing tools but only one level of undo. As a curiosity, it
also supports Kodak's proprietary Photo CD
This application requires the PCA support
Jon Warmisham & Frank Dart
— John Cartmell
Frank Dart was a full-time maths teacher at Sale Grammar
School at the time ProArtisan was being developed. We
shared a staff room for a short time when Frank was testing
aspects of the program including an intended 3D effect
module. Too many of my colleagues couldn't cross their eyes
sufficiently so that idea was dropped.
The late Jon Warmisham was the artist. He taught my
daughter at South Trafford College. I've not seen the art
term 'Frisket' used in any other painting program. All I've
encountered use 'Mask'. Jon always referred to 'Frisket' in
teaching 'wet paint' art. Jon was an excellent teacher and
an all-round great bloke. Much missed.
1.26 (Oct 2017)
Changes in version 1.20
First 32-bit compatible version, with the exception of the
'Thingi' utility used for PNG loading (don't have source
General minor syntactic changes to allow compilation with
Norcroft RISC OS ARM C version 5.54 rather than Easy C.
The !Boot file no longer defines spurious system variables
Changed the system variable
ProArt24$FSIOptions, since according to RISC OS 3
PRM appendix H only variable names starting with
App$ may be considered registered.
Rewrote the RISC OS 3.5 detection for
CompressJPEG to use a
system variable rather than 'rov' (again, this usage was
A valid system-wide choices directory is now required
before ProArt24 will run.
The PCA support module is now loaded from the shared
!PCARes resource application, rather than from inside
Likewise, the PhotoCD module (if available) is now loaded
from !System rather than from inside !ProArt24; the version
supplied with Acorn's 'Universal' RISC OS 3 !Boot is newer,
and the included version wasn't 32-bit compatible anyhow.
Tidied up the window templates, including allowance of room
for wider-than-system-font text (outline fonts) and
conformance to norms for labels and '3D' style buttons.
User choices are no longer saved inside the application
directory; instead the system-wide location for choices is
used. This should allow the application to be run from
read-only media. The internal files 'brushes', 'VMData' and
the contents of the directory 'Palettes' are now default
settings that should never be overwritten.
Created a proper low-res version of the application icon
Removed low resolution 3D 'radioon', 'radiooff', 'opton'
& 'optoff' icons from !ProArt24.Sprites, because not
needed on OS 3.5+.
Created new high resolution 'ic_proart24' iconised window
icon for !Sprites22 in a similar style to the original.
Because initialisation takes a couple of seconds even on a
StrongARM machine (presumably more on slower computers),
display the hourglass.
Various other functions that access files have been updated
to display the hourglass, with a percentage display where
Fixed defective error messages when a file cannot be
Corrected the description of our palette file format given
in !ProArt24.Palettes.Format. We had been claiming that the
description could be up to 12 characters, but in fact at
least one trailing space is required.
The startup banner is now centred on screen and the
duration for which it is shown has been reduced from 10 to
Changes in version 1.21
Widespread tidying up of window templates to conform to
stylistic norms. Pop-up menu buttons and writable fields
now set the appropriate pointer shape, option/radio buttons
are now 44 OS units high, display/writable fields are now
52 OS units high, menu buttons are now 44 by 44 OS units,
adjuster arrows are now 32 by 32 OS units...
Added a mask to a sprite used for the banner and 'About
this program' window, to allow the window texture to show
Removed the send-to-back tool from the 'Display' window
template because this window is only ever opened as
transient and/or as a menu leaf.
Removed elipsis from 'Edit brush...', 'Grid...' and
'Print...' menu entries, because clicking them doesn't
bring up any dialogue box. Also changed the keyboard
shortcut for the latter from 'Print Scrn' to 'PRINT' so
that the Wimp can recognise and right-align it. The 'Edit
brush' shortcut wasn't being aligned either because it was
run onto the elipsis!
Completely rewrote ugly & longwinded error handling
code for saving compressed files. In particular, we no
longer assume that an error pointer returned by
_kernel_last_oserror() is relevant unless we have
also received a failure indication from some shared C
Fixed a minor bug where, for the initial call to
Squash_Compress, flags bit 1 was being set if the
reported maximum output size was greater than the size of
our buffer. Yet the PRM defines this flag as 'More input
after this', which would imply we were holding back some of
the input data (untrue).
Fixed a bug where toggling the savebox's 'Squashed' option
with the ADJUST mouse button failed to update the filetype
Fixed a bug where 'Squashed' option button could be dragged
from the savebox as though it were the file icon!
Fixed a bug introduced by me which prevented the
interactive grey shift graph being drawn.
Open the brush dialogue box in persistent mode when the
'Edit brush' menu entry is clicked. Hence also reinstated
ellipsis on this menu item.
Fixed a bug introduced by me which caused a blank title for
the canvas window and mucked up the Show and Remove
submenus on the iconbar menu.
Changes in version 1.22
Linked with a version of RISCOSLib that supports solid icon
drags from saveboxes.
Allow slider positions and other draggable controls to be
set by a single click (rather than having to wait for drag
start, as before),
Allow ADJUST clicks on adjuster arrows to do the opposite
Fixed a longstanding slider bug, which was that if a slider
drag starts at the same mouse X coordinate as a previous
drag finished (even if a completely different slider) then
it will be ignored.
Increased the bounding box for slider drags so that no
longer have to use the adjuster arrows in order to reach
beyond 99 to 100.
Fixed a longstanding bug where use of the bottom set of
adjuster arrows in the 'Edit Brush' dialogue box would set
the opaqueness value dependent on the position of last
slider to be dragged (i.e. not necessarily the relevant
Fixed four longstanding bugs with HSV sliders:
If a slider drag started at the same mouse X coordinate
as a previous drag finished (even if one of the other 2
sliders) then it would be ignored.
Every time one of the adjuster arrows was clicked the
'S' label icon would be needlessly redrawn.
It became impossible to increase the 'hue' value beyond
256 using the adjuster arrows, whereas the slider goes
up to 360.
The bounding box for slider drags limited mouse
movement such that it was impossible to reach the
highest values without resorting to use of the adjuster
ADJUST click on a colour in the Grid dialogue box no longer
duplicates the action of SELECT (see style guide).
Whereas ADJUST clicks on the arrows for scale and rotation
previously changed these values in units of larger size
(undocumented), this is now accessed by holding down the
Shift key in conjunction with SELECT or ADJUST.
Reduced unnecessary redraw on repeated radio button clicks.
Fixed a very nasty longstanding bug in crop-to-window,
which had been poking a window handle through an
uninitialised pointer and then passing this pointer to
Wimp_GetWindowOutline to fill in an
indeterminate block of memory.
Added high and low resolution variants of 'ptr_menu' sprite
to !Sprites and !Sprites22, for machines that don't have
this in ROM (e.g. RISC OS 3.1).
Created '4Sprites' file containing 256 colour versions of
the iconised window sprite & application icon. These
are the same as the 16 colour versions but with subtle
shading. These icons are added to the Wimp pool instead of
'!Sprites' if the !Boot file detects RISC OS 4 or later.
Added small versions of the application icon for the hi-res
Fixed an icon validation string in the 'warp' dialogue box
template, which was previously
r5;sdown,pdoxxxxxxxxxxxxxxx. The adjuster arrow to
reduce the number of control lines did not invert properly
when clicked. Has been like this as least as far back as
version 1.11, probably earlier.
Fixed a longstanding bug where clicking ADJUST on any icon
in the 'Colour shift' filter dialogue box would apply the
Changed input focus colour of 'path' dialogue box to grey
because this window is always transient (see style guide).
Fixed a longstanding bug where any unknown wimp messages
received caused the palette window to vanish!
Ensure that caret is not positioned off the end of the
palette name when we cycle through the palettes, in place
of old code which annoyingly simply gave up the input
focus. Got rid of the irritating behaviour of forcing the
caret to the start of the text whenever the user clicked on
this writeable icon.
Avoid unnecessary redraws when already at the first/last
item in the path dialogue box.
Read the text of the path name from the dialogue box prior
to changing which path is displayed, thus preserving the
effects of any editing done by the user.
Fixed a longstanding bug where adding a path with no width
or height (for example a horizontal or vertical line) would
result in a fatal 'divide by zero' error upon the next
attempt to redraw the path dialogue box.
Preserve the effects of any user editing of the displayed
palette name, which was previously forgotten when the
window was closed or the palettes saved.
Fixed a longstanding bug in where a redraw (i.e. dragging
another window across the palette or pool window) caused
the name of the displayed palette or sprite to be restored
to what it was before any user editing took place.
Preserve the effects of any user editing of the palette
name when the user toggles between the picker and current
palette, and to ensure it is the displayed name that is
saved for any subsequent undo operation when loading a
palette or ADJUST dragging to create a colour span.
Changed icon validation strings in the palette and path
window templates so that the user can see buttons invert
upon use. Also changed button types from click/drag to
click, so that they get coloured & shaded under RISC OS
Select and don't revert before mouse button release.
Allow the palette window's undo and colour picker buttons
to work on ADJUST as well as SELECT clicks.
Standardised dimensions of the icons that make up our
custom style mini number range selectors. This means that
some dialogue boxes that used to truncate three digit
numbers due to malsized icons should be fixed.
Fixed a longstanding redraw bug in the 'Multiple Brush'
dialogue box where the contents of icon 0 could spill out
over the rest of the window if a large diameter brush were
Prevented problems where there is no valid preceeding mouse
position when editing a brush (for example at the very
start of a drag).
Open the brush dialogue box in persistent mode when the
'Edit brush' menu entry is clicked. Also reinstated
ellipsis on this menu item and added a key shortcut hint.
Changed all instances where
system() had been
used to invoke Star Commands, to instead use
system() has a lot of
side effects which are not wanted or needed.)
All slider well icons have had their 'sprite' flag set
(most already did) because this seems the only way to
defeat the imposition of rounded borders when the Wimp has
been configured to draw them.
Reduced height of 'OK' buttons in 'grey' and 'pattern'
dialogue box templates to the standard 52 OS units so that
they get coloured & shaded under RISC OS Select.
Fixed a longstanding bug where the display was not redrawn
when the last sprite in the pool was deleted.
Fixed a longstanding bug where normal mouse button clicks
on the pool window were treated as the start of a SELECT
drag (only evident with clicks on slider), when in frisket
Changes in version 1.23
Fixed a longstanding bug where changing the brush values in
the 'Path' dialogue box also causes the 'Edit Brush'
dialogue box to updated if open, but only when a redraw is
forced (e.g. by dragging a window across it).
Ameliorated a longstanding issue where successive blend
pastes (i.e. put sprite with less than 100% opacity) would
gradually darken the canvas. For example, writing a colour
component of value 255 through a blank frisket would lose
0.39% of its brightness in translation. Changing divisor to
255 slows things down unacceptably, so I instead 'fixed'
the most obvious instance of this problem by putting
special case checks for a frisket pixel being 255
(transparent) or 0 (opaque). This also speeds up any masked
operations where significant areas of the canvas are either
fully masked or not at all.
Fixed a longstanding bug where pressing the cursor up key
whilst the 'Path' dialogue box had focus caused the caret
to move to the large path display icon, whilst pressing
cursor down caused it to disappear. In either case 'Input
focus not found' errors from the Wimp followed.
Removed all instances I could find of unnecessary
capitalisation of words in a message or menu text (i.e.
should be 'Add water' rather than 'Add Water').
Changes in version 1.24
Fixed a longstanding bug where use of the 'FX' brush prior
to having opened the dialogue box for the first time would
cause unexpected effects.
Fixed an apparent problem with unresponsiveness of the the
'FX' brush dialogue box since I switched to the RISCOSLib
dialogue box functions in the previous version.
Use of the 'Generic effects' dialogue box no longer affects
the FX brush upon return to painting mode.
Changes in version 1.25
Built for RISCOS Ltd's generic C library stubs for improved
compatibility with machines that would otherwise need to
load new FPEmulator, SharedCLibrary and CallASWI modules.
Changes in version 1.26
-memaccess -L22-S22-L41 for the
ARMv6 mis-aligned data access behavioural change.
Removed a hack in code which works out the style that was
selected from a font menu, because it is nonsense without
an equivalent hack that breaks RISCOSLib for normal
applications (such as Schema 2).
Removed all user registration code.
Schema 2 is a spreadsheet application which features a macro
language and the ability to draw graphs such as pie charts,
line plots and histograms.
Andrew Colin & Robert Hawking
Changes since last release
Fixed several null pointer dereferences.
Fixed an invalid pointer dereference (address 2) when
removing or replacing a submenu.
Fixed a bug where implicitly setting the workspace
directory (by loading or saving a workspace file) could
cause an 'illegal window handle' error (returned by
Wimp_CreateMenu when called with
close the tree), corrupted menus, and/or a crash. This was
fixed by closing any current menu tree before reloading
The manual describes loading menu resources upon loading a
workspace file, but not upon saving a workspace. The latter
action has therefore been disabled to allow the savebox to
stay open in response to an ADJUST-click on the save
Canonicalization of file paths has been made more robust:
previously, simply mistyping a file path in a savebox could
terminate the application with an error like "Disc drive
A collection of Schema 2 spreadsheet files which are intended
as tutorials. Also includes a vector graphics file.
28 Jan 1994
A few Schema 2 spreadsheet files which are intended as
examples, two of which are linked into a saved workspace.
Also includes a large collection of vector graphics files.
12 Apr 1994
Schema 2 can import (and in some cases export) data in
various file formats. This requires support from external
applications which communicate with the main application
using a message protocol.
This approach of farming out file format conversions reduces
the memory requirements of the main program whilst making it
more modular and extensible.
The following converters are included:
WK1 (Lotus 1-2-3) to Schema 2 (Acorn Advance)
data) to Schema 2 (Acorn Advance)
Schema 1 to Schema 2 (Acorn Advance)
Schema 2 (Acorn Advance) to WK1 (Lotus 1-2-3)
Schema 2 (Acorn Advance) to HTML
Excel XML to Schema 2 (Acorn Advance)
CRM Ltd and APDL-ProAction
16 Jun 2012
Schema macros are stored in text files with file type SheetMc
(&aed). The Schema 2 application cannot load these files
directly; if one is dragged to its icon on the iconbar then
it will automatically invoke the Macro Editor application in
order to compile the macros before loading them.
The Macro Editor is a standalone text editor dedicated to the
purpose of editing Schema macros. It incorporates a compiler
which generates object files of type SMacro (&c0c) in the
same directory as the source files.
12 Jun 2012
Sources for the macros which produce the standard set of
graph types provided with Schema 2.
"The code is far from perfect, but these programs have two
solid merits: they work, and they define a lower level of
acceptability which you can improve on."
—'Introduction to Schema 2 Macros', Andrew Colin and
31 Mar 2000
Wimp Basic is a programming language and integrated
application development environment for RISC OS. The
authoring application incorporates window and menu editors as
well as a source code editor. Other resources such as sprites
can be associated with a project but not edited directly.
When saving a user application, its source code is compiled
either to an intermediate tokenised form or directly to
executable ARM code (when creating a so-called 'optimized'
application). In both cases the resultant object code is
loaded by a completely generic loader program which links it
to a runtime library. The loader also converts the program
from its tokenised form into ARM code, if necessary.
The runtime library must be installed on every end-user's
machine and easily locatable, so it is distributed in the
form of a relocatable module wrapped in another application
named WBModules. (This is equivalent to
programs compiled by Acorn's C compiler requiring the shared
C library module distributed in the !System application.)
Changes in version 2.13
Reduced the amount of flickery redraw in the IDE's scrolling
Better support for new-format sprite types (including CMYK
and 64 thousand colours).
Fixed handling of pop-up menu clicks in the 'Setup window
data' dialogue box.
Fixed abuse of the standard C library function memcpy by
calling it with overlapping address ranges.
Fixed the editor to allow selection of the first word on a
Fixed bugs in the editor's undo mechanism which could lead
to crashes or incorrect edits.
Fixed bug where the IDE got stuck in 'Can't rename/delete a
window which you are editing' state after closing an
Applications created via the 'Save optimized' menu entry
should now be 32-bit compatible.
Fixed several memory leaks.
Fixed a crash if the user Adjust-clicks on 'Close window'
in the 'Win Designer' menu
Fixed unpredictable behaviour after Adjust-clicking
'Update' in the 'Edit group' dialogue box and then
continuing to use it.
Fixed a bug where renaming a variable to another name in
the same group caused it to disappear (and leak) if the new
name immediately preceded the old name.
Fixed bugs where deleting a variable or renaming a group in
the scrolling list didn't update the editor's 'Variables'
Fixed a bug where renaming a variable in the scrolling list
caused both old and new names to appear in the editor's
Fixed bugs where deleting or renaming a window in the
scrolling list didn't update the editor's 'Variables' menu.
Fixed a bug where the savebox for exporting sprites never
The IDE no longer sends trailing garbage when saving a
subset of sprites to an application that supports RAM
Removed 'Wimp sprites' from the 'Iconbar sprite' menu
because there is no reliable way to enumerate the content
of the Wimp sprite pool. (Previously used SWI
Wimp_BaseOfSprites, with unpredictable results.) The
iconbar sprite name can now be entered from a dialogue box.
Saving sprites no longer marks the design as modified.
Changes in version 2.14
Updated the version of WBmodule required by the !Run file
of generated applications to 2.16.
Removed outdated an URI from the error message in the !Run
Linked with an updated RISCOSLib that doesn't include a
hack for ProArt24 in the
A user guide for the WimpBasic
application, in the form of a hyperlinked StrongHelp manual.
APDL-ProAction & H. Hermannsson
24 Apr 2003
A collection of WimpBasic project files which are intended as
tutorials. Also includes a small collection of 16-colour
10 Sep 1997
Five extra WimpBasic project files which are intended to
demonstrate some of the features that were new in WimpBasic
01 Jul 1998
This archive contains 32-bit compatible versions of the
WimpBasic module (the dynamic linker and runtime library) and
WBLinker (a loader found inside every application created
using Wimp Basic). An accompanying text file (also available online) describes the
SWI interface of the
WimpBasic module and lists changes in versions 2.10 to 2.16
of that module.
2.16 (15 Oct 2017)
Changes since last release
Fixed bugs where client programs with no sprites file
caused illegal reads from zero page in memory. If those
memory accesses did not cause a data abort then they
typically resulted in the program claiming an excessive
amount of memory.
Top of page |