Postbag

MULTI-TASKING BASIC

I have read elsewhere that multi-tasking programs running under RISC OS cannot be written in Basic - instead they must be written in C or assembler. Surely this is very limiting? I have also heard that some of the Welcome disc utilities are written in Basic. Can you please explain this apparent anomaly.
Paul Roberts

Mr. Roberts is not alone in being confused over this matter. What he has read is that Basic cannot multi-task, i.e. that it is not possible to enter, edit, and test a Basic program in one window, while, say, using a word processor in another. But a multi-tasking application can be written in Basic, and as you say, some of the Welcome disc programs are. The RISC User Notepad elsewhere in this issue shows how this can be done.

CONFIGURING MEMORY ALLOCATIONS

I heartily condone the thoughts of Barbara Wilson (Postbag, Volume 2 Issue 2). For people like us, manuals are a little short of baffling. "Bad DIM at line 440" it said, as I tried to access the Desktop; "No room in RMA" is another of its tricks, or "No room" which is even worse. No room where? I consult the manuals - no mention of these barbaric statements, least of all how to remedy them. What is RMA anyway, and Screensize? Where is the information about the way to control them? The CONFIG. command is an unexplained maze to me.
Laura Blackburn

To operate both effectively and efficiently, the Archimedes allocates areas of memory to different tasks at different times. Changing the memory allocation normally requires a complete reset (this is why Ctrl-Break has always been required in the past following the use of *CONFIG.).

RMA refers to memory allocated for relocatable modules, and much applications software is supplied in this form. The simplest solution to the RMA size problem is to QUIT from Basic (type *QUIT), and then load any relocatable module, before returning to Basic (*BA.). At this point, the Operating System can dynamically allocate memory as required.

Alternatively, sufficient memory can be allocated in advance using *CONFIG. Remember that on a 300 series memory is allocated for most purposes in pages of 8K, and under Arthur it is the number of pages which is defined. Thus to specify a screen size of 80K (sufficient for mode 12 for example), you should type:
*CONFIG. Screensize 10
and press Ctrl-Break, to allocate ten 8K pages. Under RISC OS, memory allocations can be specified in pages or 'K', and are shown as 'K' in a *STATUS display. Further, a Task Manager allows the mouse to alter dynamically a visual display of memory allocations on screen. See RISC User Volume 1 Issue 2 for more information on reconfiguring your Archimedes.

COPYING FILES

I am having great fun with my Archimedes 310, with a 90% success rate for programs typed in. However, there's one problem I can't overcome, the transfer of data between discs in different drives. I have read the section on file transfer in the User Guide, but I still can't sort it out.
G.Drywood

The most direct way to transfer an individual file is by using *COPY. For example, to copy file PROG1 in the current directory on drive 0 to a directory $.MyProgs on drive 1 just type:
*COPY PROG1 :1.MyProgs.PROG1
The entire content of a directory can be copied in the same way. Thus:
*COPY $.Letters :1.Pipedream.Letters R
will copy the directory Letters on the current drive to be a sub-directory of Pipedream on drive 1. The 'R' at the end of the command stands for 'Recurse', and is what causes the *COPY command to repeat the process with all the files in the specified directory.

Under the RISC OS Desktop, the task is simplicity itself. Use the mouse to open and display the two directories. Dragging an image of a file from one to the other will produce a copy of the relevant file. Alternatively, select the directories or files to be copied, click on the directory to which they are to be copied, and then press the menu button to reveal a short menu from which COPY can be selected. The RISC OS Desktop really does make this and many other tasks very simple.