From the NUp !Help file…


The copyright to this application, NUp, is retained by the author, Simon Melhuish. NUp may be copied freely for non-commercial use. Copies may be passed to a third party, for non-commercial use, so long as no charge is made, all files, including this one, are included, and the software and documentation are not altered in any way. You may not upload NUp to any kind of bulletin board system, or similar, without the express permission of the author, although you are free to distribute copies on a one-to-one basis by electronic mail systems. ‘Public domain’ libraries are not permitted to distribute NUp without the express permission of the author. Anyone wishing to include NUp in a CD compilation, or similar, is required to contact me for permission. Newer versions of the software and/or the documentation may be made available at a future date.

I reserve the right to change the above conditions, or to withdraw or revoke this licence in relation to any or all users at any time and for any reason.

NUp comes with absolutely no warranty. I accept no responsibilty for any problems you might think are related to the use of this software. You use it entirely at your own risk.


NUp stands for N-Up printing. It is a utility application that allows several drawfiles to be printed on a single page. Other file types may be loaded using a system of helper applications.

Minimum requirements

NUp should run on a 1 MB machine, with RISC OS 3.1 or later. NUp itself takes only 48 kB of memory. The toolbox modules are quite big though. You will need enough free memory in addition to allow for the size of your drawfiles, plus some for helper applications for other file types.

NUp main window

NUp main window

Running NUp

Run NUp by double clicking its icon in a filer window. The NUp icon should now appear on the iconbar. If it doesn't you'll probably see an error box telling you to run the !Printers application first. NUp needs to ask Printers about page sizes, etc, so you must have it running.

NUp will refuse to run if another copy is already running.

The text under the iconbar icon shows two numbers. The first is the number of panels on the page currently filled by drawfiles. At the start this will of course read '0'. The second number is the number of panels per page. The value depends upon how you have NUp set up.

Interactive help

NUp fully supports interactive help. Run a help application (e.g the RISC OS 3 !Help application). You will now be provided with help on the NUp iconbar icon, all the NUp windows and the NUp menu.

Loading drawfiles

To load a drawfile into NUp drag its icon onto the NUp icon on the iconbar. The NUp main window will now open, with your drawfile loaded into one of the panels on the page. Should you close the main window you can re-open it at any time by select-clicking the NUp iconbar icon. You may drag more than one file to NUp (the iconbar icon or the main window if it is open). For each drawfile loaded the loaded panel count will increment by one. Note that you can have more panels loaded than fit one one page. For files not currently displayed only the filename is kept by NUp, to reduce memory requirements. Be sure not to delete files dragged onto NUp but not yet displayed.

Loading other file types

NUp loads drawfiles only. However, it can automatically convert certain file types to draw format (the converted files will be held in the !Scrap application - the original files are preserved). This works by using "helper" applications. Currently these can handle text, sprites and most of the formats acceptable to ChangeFSI. For the latter, you must ensure that ChangeFSI has been booted (or "seen" by the filer). Some of these conversions require several steps, and so are not especially fast.

Loading directories

When a directory is dropped onto NUp it will iterate through its contents. Subdirectories will be scanned recursively. If there are files not handled by NUp or its helpers they will be ignored without any error message. Image filing systems (e.g SparkFS archives, x-files, etc) are treated as if they were normal directories.

The NUp menu

Clicking the menu button over the NUp iconbar icon or the main window pops up the NUp menu. This has entries for program info, options, scaling, flushing, printing and quiting NUp.

NUp menu

NUP menu

Changing the setup

To change NUp's setup select the "Options..." entry on the NUp menu. The "Layout Options" dialogue box thus revealed allows you to set the page orientation (landscape or portrait), the page size, the number of panels across and down, and automatic page printing and flushing.

NUp setup window

NUp Setup window

Normally you would leave the page size set to "Printer size". However, if you have special requirements, e.g to fit the NUp panels to a sheet of sticky labels, you might want to define a "Custom size". Click the radio button, and the custom dimension entries will become writeable. The values are all in mm. The width and height are the page size _including_ margins. The margins are all _inwards_ from the edge of the page. However, negative margin values are allowed.

When you are happy with the setup click "Set". If you want to revert to the old setup click "Cancel". If you want to preserve the setup for the next time NUp is run click "Save".


When you want to print the page displayed in the main window, even if it is not full, select "Print..." from the NUp menu. This will pop up a dialogue box showing the currently selected printer and the number of copies the print. You may change the latter by entering a number or clicking the up or down bump icons.

When you are satisfied click "Print". Click "Cancel" to cancel the print operation.

You you want to set the number of copies only, for a future (automatic) print operation, set the number and click "Print" with no files loaded.

Flushing Panels

There are two menu entries for flushing (clearing) panels. "Flush all" clears all currently loaded drawfiles from NUp. "Flush page" clears only the panels displayed in the main window. If there were more than a pageful of drawfiles loaded the next pageful will now be displayed in the main window.

"Auto print" and "Auto flush"

These two options in the setup dialogue govern the automatic printing and flushing of the main window. With "Auto print" selected the page will be printed automatically as soon as it is filled. With "Auto flush" selected the page will be flushed automatically after it is printed. If you have a large number of files to print you can select both these options, so that when you drag them to NUp pages will be filled and printed automatically. There might be an unfilled page left at the end, in which case you will have to select "Print..." manually.


The "Scale" menu entry leads to a "Scale view" dialogue box. This has buttons to set the scaling to any of various preset values, or you can enter your desired value directly. There is a "Scale to fit" button, which will select the best scaling to fit the window to the current screen mode. Click on "Scale" when you are happy with the setting, or "Cancel" to use the old value.

Note that the size of the printed version is not affected by this scale factor.

Advanced use

If you are familiar with the operation of system aliases you might like to use your boot sequence, etc, to redefine the way that NUp calls its helper applications. If you look at !NUp.!Run you will see lines defining aliases of the form Alias$NUpHelper_xxx, where xxx is the filetype. Redefining any of these after NUp has loaded will affect the conversion of any files of that type subsequently loaded.

For instance, you might enter the line:

Set Alias$NUpHelper_fff <NUp$Dir>.helpers.Txt2NUp %%0 Trinity.Medium 20

This would change the font used for text files.

If you like, you can change the aliases completely, to point to your own helper applications.

Helper applications

The supplied helper applications can be found in !NUp.helpers These support the conversion of text to draw, sprite to draw, and other bitmap types to draw, via sprites.

The operation is fairly simple. When a non-draw file is dragged onto NUp, it checks to see if an alias is defined. If it is, it executes the alias. It is then the responsibility of the helper application, run by the alias, to load the file, convert it to draw format and save it to the NUp application. NUp sees this just as another draw file and loads it through the normal mechanism. However, NUp has to keep track of which file has a helper running. It will queue demands for helpers until the previous one has completed. This is because some filetypes (i.e sprite and text) can result in more than one output file (one per sprite image or one per page). To tell NUp when it has finished with a file the helper application must send a NUpHelperDyingMessage (0x4f441 - registered) message to NUp. The data part of this message is the name of the input file. In fact this is optional, but if not present the first byte of the data part must be 0. A trivial application in the helpers directory (!NUp.helpers.nupobit) performs this task.

Controlling NUp remotely

The task for which I originally wrote NUp was to handle draw files produced automatically by another application. To fully automate everything it became apparent that I should add a facility for this application (or any other) to take control of NUp's setup, etc. This is done using the wimp message NUpControlMessage (0x4f440 - registered). The format of the data block is non-trivial, and possibly subject to change; so I won't describe it here. However, I have provided an application in the helpers directory called "nupcont". Running this will send control messages to NUp (make sure NUp is running first).

The switches to nupcont to set the type of control message are:

f flush page

F flush all

p print – c N after 'p' sets number of copies to N e.g nupcont -pc 4 prints 4 copies

o set options parameters (compulsary) are: x y landscape auto_print auto_flush – e.g. nupcont -o 2 2 1 0 1 2 by 2, landscape, auto print off, auto flush on

c custom page size parameters (compulsary) are (unit is 0.1 mm): lmarg bmarg rmrg tmarg width height

d use default page size


If NUp gets stuck waiting for a helper that failed (e.g a JPEG that ChangeFSI didn't understand) you can get it going again by doing a "flush".

If a file does not load due to lack of memory (i.e if you get this message: "Memory could not be allocated for the new diagram") once you have freed enough memory (by closing other applications, etc) NUp can be forced to have another go at loading the file by either clicking on a printer icon, or clicking "Set" in the "Layout Options" dialogue.


At present I am not aware of any bugs. Please see below for contact details if you find any.

Be sure to have !Printers running before trying to run NUp.

If any of Acorn's toolbox modules (toolbox, window, drwafile, etc) were not supplied with this distribution you will find them on Acorn's FTP site.

My software page can now be access from the ProgInfo box off the iconbar menu. With your web browser loaded, click on "Web site".

Return to projects page
Return to projects page.