Home » Archimedes archive » Archimedes World » archimedes_world_volume_15_issue_2_scp.adf » !ARMEdit_ARMEdit » Docs/Code

Docs/Code

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Archimedes World » archimedes_world_volume_15_issue_2_scp.adf » !ARMEdit_ARMEdit
Filename: Docs/Code
Read OK:
File size: 405E bytes
Load address: 0000
Exec address: 0000
File contents
File        : Code
Date        : 07-Dec-97
Author      : � A.Thoukydides, 1995, 1996, 1997
Description : Description of the support for writing extra PC side utilities
              using the supplied files.


INTRODUCTION

The ARMEdit suite has been designed to allow other software to developers to
add extra utilities to those supplied; all of the necessary files are
included in the standard distribution.

The PC side files were prepared using Borland Turbo C++ version 3.0 for DOS,
but they use C linkage and should be compatible with other compilers. The
source code is available on request if required for use with an incompatible
compiler. Veneers to allow the ARMEdit SWIs to be called from C/C++ were
assembled using Acorn ObjAsm version 3.06, and should be used in conjunction
with Jonathan Coxhead's OSLib.


FILES INCLUDED

The following header files are included in this distribution for use on the
PC side:

    ARMFILE.H   High level routines for copying individual files between
                DOS and RISC OS. These perform the core of the GETFILE and
                PUTFILE utilities. They provide an easy way of transferring
                large amounts of data between the two environments.

    CLI.H       Functions to call RISC OS *commands with different levels of
                input and output redirection.

    HPC.H       An interface to Aleph One's High-level Procedure Call (HPC)
                system. This allows the routines described in the Docs.HPC
                file to be called directly.

    SVC.H       A low level interface to the SVC calls supported by Acorn's
                software emulator. These are used by the HPC module but may
                be useful to other users.
                
    SWI.H       This provides a single function to call a RISC OS SWI by name
                from the PC. This should not normally be used, because it is
                very inefficient, but is useful when prototyping code.
    
    TALK.H      This is the main interface to the RISC OS services. It
                provides routines for performing generally useful functions,
                e.g. allocating and deallocating memory.

    UTIL.H      A collection of useful utility functions that are used by the
                supplied utilities. These are also used internally by the
                WIMP module to handle error conditions.

    VDU.H       Processing of VDU codes under DOS. This emulates the normal
                RISC OS treatment of a common subset of control codes.

    WIMP.H      Functions to communicate with the "!ARMEdit" front-end using
                the messages described in the Docs.Talk file.

All of the required object files to be linked with are included in a single
library file:

    ARMEDIT.LIB

The following header files are included for use under RISC OS:

    h.armeditswi    C interface functions to all of the SWIs provided by the
                    ARMEdit module. See Docs.Module for details of all the
                    SWIs.

A single object file is included containing the assembled veneers:

    o.armeditswi


FUNCTIONS PROVIDED

The following sections give brief descriptions of the functions provided in
each header file. For more details read the comments in the header files
themselves.

The provided services should allow almost any operation to be performed.
However, please get in touch if extra features would be useful - if they are
sufficiently general they may get added in a future release of the ARMEdit
module.


ARMFILE.H

armfile_copy_dos_riscos

    Copy a file from RISC OS to DOS.
    

armfile_copy_riscos_dos

    Copy a file from DOS to RISC OS.
    

armfile_translate_dos_riscos

    Convert a DOS filename into a RISC OS equivalent. This performs
    substitutions similar to those performed by DOSFS.


armfile_translate_riscos_dos

    Convert a RISC OS filename into a DOS equivalent. This performs the
    opposite operation to armfile_translate_dos_riscos.

armfile_temporary

    Generate the filename for a temporary RISC OS file, and ensure it is
    deleted before the program exits.

armfile_create_dir

    Create a RISC OS directory.


CLI.H

cli_simple

    A simple *command interface. If output redirection is required then it
    is performed via a file.
    

cli_redir

    A more comprehensive *command interface. Both input and ouput can be
    redirected to/from any DOS stream or file. Special action is taken if
    the streams correspond to the keyboard or screen.
    

HPC.H

hpc_message

    Execute a general HPC call. If HPC support is not provided by the PC
    front-end software then one of several substitute mechanisms is used,
    but they only work with the ARMEdit module.


SVC.H

svc_address

    Translate an 8086 address to an ARM address using SVC257 if Acorn's
    software emulator is being used. This must not be called on any other
    system.
    

svc_swi

    Call a RISC OS SWI using SVC258 if Acorn's software emulator is being
    used. This must not be called on any other system.


SWI.H

swi_swi

    Call a specified RISC OS SWI by its name. As mentioned above this is a
    very inefficient operation to perform, so should normally only be used
    during development stages of new software.


TALK.H

talk_swi

    Call a RISC OS SWI by number. It should be remembered that the SWI can
    not read PC memory directly; the required data must be copied using the
    other functions provided in the talk module.


talk_read

    Read a block of RISC OS memory.


talk_write

    Write a block of RISC OS memory.


talk_malloc

    Claimed the specified amount of RISC OS memory. The memory should be
    released using talk_free. However, it will automatically be freed when
    the PC card is either reset or quit; ensuring that all claimed memory
    is eventually deallocated even if the PC software terminates abnormally.


talk_free

    Free a block of memory previously claimed using talk_malloc.


talk_ext_to_filetype

    Convert a DOS file extension into a RISC OS filetype. This uses the
    list of mappings set by the DOSMap command. See Docs.Module for more
    details.


talk_filetype_to_ext

    Convert a RISC OS filetype into a DOS file extension. This uses the
    list of mappings set by the DOSMap command. See Docs.Module for more
    details.


talk_file_open

    Open a RISC OS file. It is possible to specify that the file should
    automatically be deleted when it is closed; useful for temporary files.
    The file should be closed using talk_file_close. However, it will
    automatically be closed when the PC card is either reset or quit;
    ensuring that all files are eventually closed (and deleted if required)
    even if the PC software terminates abnormally.


talk_file_close

    Close a RISC OS file previously opened using talk_file_open.


talk_file_read

    Read a block of memory from a RISC OS file.
    

talk_file_write

    Write a block of memory to a RISC OS file.


talk_comms_start

    Register a communications client.


talk_comms_end

    Deregister a communications client.
    

talk_comms_tx

    Transmit a message to another client.
    

talk_comms_rx

    Receive a message from another client.


talk_date_to_dos

    Convert a date and time from RISC OS to DOS format.
    

talk_date_to_riscos

    Convert a date and time from DOS to RISC OS format.


talk_oscli_start

    Start executing a RISC OS *command with both input and output redirected.
    

talk_oscli_poll

    Continue the execution of a RISC OS *command.
    

talk_oscli_end

    Terminate the execution of a RISC OS *command.


talk_comms_reply

    Reply to a message from another client.

talk_faster

    Disable multitasking for faster operations.

talk_temporary

    Generate a unique filename for a temporary RISC OS file.


UTIL.H

util_arm_split

    Split a RISC OS path into a directory and leafname.


util_wildcard

    Call a function for all DOS files that match a wildcarded specification.


util_arm_wildcard

    Call a function for all RISC OS files that match a wildcarded
    specification.


util_status

    Display a message replacing any previous one. A spinning activity
    indicator may also be shown.


util_error

    Exit with an error message. This replaces any previously displayed
    message.


util_retry

    Prompt the user to either Abort, Retry, or optionally Cancel an
    operation.
    

util_prompt

    Prompt for a Y or N answer and return the result.


VDU.H

vdu_output_filter

    An output stream prefilter. This emulates RISC OS treatment of a common
    subset of control codes.


WIMP.H

wimp_find

    Send a message to obtain the current client handle of the "!ARMEdit"
    front-end application if it is running.
    

wimp_find_receive

    Attempt to receive the reply to a wimp_find message.
    

wimp_start

    Send the message to start an external edit.


wimp_start_receive

    Attempt to receive the reply to a wimp_start message.


wimp_poll

    Send the message to poll the status of an external edit.


wimp_poll_receive

    Attempt to receive the reply to a wimp_poll message.


wimp_saveas

    Send the message to save a file.


wimp_saveas_receive

    Attempt to receive the reply to a wimp_saveas message.


wimp_oscli_start

    Start executing a specified *command in a TaskWindow.


wimp_oscli_start_receive

    Attempt to receive the reply to a wimp_oscli_start message.


wimp_oscli_poll

    Continue execution of a *command in a TaskWindow.


wimp_oscli_poll_receive

    Attempt to receive the reply to a wimp_oscli_poll message.


wimp_oscli_end

    Terminate execution of a *command in a TaskWindow.


wimp_oscli_end_receive

    Attempt to receive the reply to a wimp_oscli_end message.


MESSAGE PASSING

The ARMEdit module provides a general method for PC software to communicate
with RISC OS applications or modules. The system is intentionally left
simple; many aspects are left to users of the protocol to implement as
required, e.g. detection and handling of problems, and the format and useage
of different messages.

The system allows multiple simultaneous clients, both under RISC OS and on
the PC. This makes it suitable for use in multi-tasking (or task
switching) environments such as Windows. Each client has a 4 byte ID which is
preallocated (by me, on request) and a 4 byte dynamically allocated (by the
ARMEdit module) handle. There are two special IDs: ID 0 is always used by PC
software, and ID 1 is used to broadcast messages to all clients (this is
explained in more detail below). Other IDs are allocated to different
services being provided. If a program provides a number of distinct services,
or if required for some other reason, it may have more than one ID. The range
of IDs 2 to 255 may be freely used for development purposes, but must not be
used by distributed software.

When messages are sent to ID 1 they are passed to all clients which accept
messages from the ARMEdit module (as specified when the clients register).
This is normally only used for a few specific messages (described in the
next section) which are useful to many clients. Other clients should not use
this facility except under special circumstances.

It is intended that each client provides a number of related services for a
particular ID, but it is up to the authors of clients to decide how the
message contents should be used. However, it is recommended that a service
selector field is placed at the start of all messages.

Each client has a message buffer (allocated by the ARMEdit module) used to
transmit messages. This buffer is of a fixed size (1kB) and can only contain
a single message. Attempting to send a message with one already in the buffer
overwrites the earlier message, regardless of how many clients it has been
delivered to.

To enable easy implementation of servers supporting multiple clients, it is
possible to place the message in the destination client's buffer. This should
normally only be used by the server to reply to a message, otherwise a
message could be overwritten.

Large blocks of data should be transferred via files. This reduces the
required memory usage and should speed up operations; to send a message from
the PC to a WIMP task requires the PC front-end to be paged in and then the
WIMP task to be subsequently paged in. However, transferring data to or from
a file can all be done while the PC front-end is paged in.

When a message is sent it is necessary to detect and handle non-delivery.
Unfortunately it is not easy to detect problems since the sender and receiver
cannot (generally) be active at the same time, and it is necessary for the PC
front-end to be multi-tasking in a window for communication to be possible
between PC and RISC OS tasks.

The suggested approach is that after the message is sent, the program waits
for a short time for a reply. If no reply is received then a message is
displayed to the user prompting for the PC to be placed in multi-tasking mode
and the relevant application to be started. The program should continue to
poll for a reply until either successful or aborted by the user.

This can be simplified in many situations to simply waiting for a reply or
for the user to abort the operation, especially after one successful
communication has occurred.

If the PC front-end is either reset or quit then all registered PC clients
are automatically deregistered, and any pending messages to or from them are
discarded.


STANDARD MESSAGES

The following messages are sent by the ARMEdit module to clients which
request them. All of the messages are sent from client ID 1. Any unrecognised
messages should be ignored.

    Reset
    
        Equivalent of power-on reset. This should normally be used to reset
        any state.
    
        Offset  Size    Description
        
        0       4       Reason code = 0.
    
    
    Shutdown
    
        The PC front-end is being quit (normal or error exit).
        
        Offset  Size    Description
        
        0       4       Reason code = 1.


LEGAL MATTERS

The "ARMEdit" header files, object files and documentation are supplied "as
is"; no warranty, express or implied, of the merchantability of this software
or its fitness for any particular purpose is given. In no circumstances shall
the author, or any provider or distributor of this software, be liable for
any damage, loss of profits, or any indirect or consequential loss arising
out of the use of this software or inability to use this software.

These files are FreeWare. Permission is granted for anyone to use them for
the sole purpose of developing software for use with the ARMEdit suite. Any
such software may be freely distributed, providing that use of the supplied
files is acknowledged in the documentation.

However, the ARMEdit module may only be distibuted in accordance with the
conditions contained in the ReadMe file enclosed in this distribution.


THINGS TO DO

The following are changes that may be made to the externally available
services sometime in the future.

    None at the moment!


VERSION HISTORY

0.00 (12-Nov-95)    Original development version.

0.04 (16-Dec-95)    First public development release.

0.05 (17-Dec-95)    Improved filename translation.

0.07 (28-Dec-95)    Added message passing protocol.

1.00 (12-Jan-96)    First official release version.

1.01 (11-Mar-96)    Version number updated to match the module.

1.02 (06-Aug-96)    Linkage corrected for ARMFILE.H/.OBJ.
                    Added date and time conversion routines.
                    Placed the individual obect files in a library.
                    Support for Acorn's software PC emulator included.
                    Include *command interface.
                    Provided mechanism for checking delivery of messages.

1.03 (21-Feb-97)    Extended message passing to support replies.
                    Included control over multitasking.
                    Added ability to generate temporary filenames.
                    Operation under Windows made more reliable.
                    Included veneers to the ARMEdit SWIs.
                    Added function to create a RISC OS directory.
                    Header files reformatted to use spaces instead of tabs.

1.04 (07-Dec-97)    Added ability to filter output from OSCLI functions.
                    Included extra header files from the standard utilities.
00000000  46 69 6c 65 20 20 20 20  20 20 20 20 3a 20 43 6f  |File        : Co|
00000010  64 65 0a 44 61 74 65 20  20 20 20 20 20 20 20 3a  |de.Date        :|
00000020  20 30 37 2d 44 65 63 2d  39 37 0a 41 75 74 68 6f  | 07-Dec-97.Autho|
00000030  72 20 20 20 20 20 20 3a  20 a9 20 41 2e 54 68 6f  |r      : . A.Tho|
00000040  75 6b 79 64 69 64 65 73  2c 20 31 39 39 35 2c 20  |ukydides, 1995, |
00000050  31 39 39 36 2c 20 31 39  39 37 0a 44 65 73 63 72  |1996, 1997.Descr|
00000060  69 70 74 69 6f 6e 20 3a  20 44 65 73 63 72 69 70  |iption : Descrip|
00000070  74 69 6f 6e 20 6f 66 20  74 68 65 20 73 75 70 70  |tion of the supp|
00000080  6f 72 74 20 66 6f 72 20  77 72 69 74 69 6e 67 20  |ort for writing |
00000090  65 78 74 72 61 20 50 43  20 73 69 64 65 20 75 74  |extra PC side ut|
000000a0  69 6c 69 74 69 65 73 0a  20 20 20 20 20 20 20 20  |ilities.        |
000000b0  20 20 20 20 20 20 75 73  69 6e 67 20 74 68 65 20  |      using the |
000000c0  73 75 70 70 6c 69 65 64  20 66 69 6c 65 73 2e 0a  |supplied files..|
000000d0  0a 0a 49 4e 54 52 4f 44  55 43 54 49 4f 4e 0a 0a  |..INTRODUCTION..|
000000e0  54 68 65 20 41 52 4d 45  64 69 74 20 73 75 69 74  |The ARMEdit suit|
000000f0  65 20 68 61 73 20 62 65  65 6e 20 64 65 73 69 67  |e has been desig|
00000100  6e 65 64 20 74 6f 20 61  6c 6c 6f 77 20 6f 74 68  |ned to allow oth|
00000110  65 72 20 73 6f 66 74 77  61 72 65 20 74 6f 20 64  |er software to d|
00000120  65 76 65 6c 6f 70 65 72  73 20 74 6f 0a 61 64 64  |evelopers to.add|
00000130  20 65 78 74 72 61 20 75  74 69 6c 69 74 69 65 73  | extra utilities|
00000140  20 74 6f 20 74 68 6f 73  65 20 73 75 70 70 6c 69  | to those suppli|
00000150  65 64 3b 20 61 6c 6c 20  6f 66 20 74 68 65 20 6e  |ed; all of the n|
00000160  65 63 65 73 73 61 72 79  20 66 69 6c 65 73 20 61  |ecessary files a|
00000170  72 65 0a 69 6e 63 6c 75  64 65 64 20 69 6e 20 74  |re.included in t|
00000180  68 65 20 73 74 61 6e 64  61 72 64 20 64 69 73 74  |he standard dist|
00000190  72 69 62 75 74 69 6f 6e  2e 0a 0a 54 68 65 20 50  |ribution...The P|
000001a0  43 20 73 69 64 65 20 66  69 6c 65 73 20 77 65 72  |C side files wer|
000001b0  65 20 70 72 65 70 61 72  65 64 20 75 73 69 6e 67  |e prepared using|
000001c0  20 42 6f 72 6c 61 6e 64  20 54 75 72 62 6f 20 43  | Borland Turbo C|
000001d0  2b 2b 20 76 65 72 73 69  6f 6e 20 33 2e 30 20 66  |++ version 3.0 f|
000001e0  6f 72 20 44 4f 53 2c 0a  62 75 74 20 74 68 65 79  |or DOS,.but they|
000001f0  20 75 73 65 20 43 20 6c  69 6e 6b 61 67 65 20 61  | use C linkage a|
00000200  6e 64 20 73 68 6f 75 6c  64 20 62 65 20 63 6f 6d  |nd should be com|
00000210  70 61 74 69 62 6c 65 20  77 69 74 68 20 6f 74 68  |patible with oth|
00000220  65 72 20 63 6f 6d 70 69  6c 65 72 73 2e 20 54 68  |er compilers. Th|
00000230  65 0a 73 6f 75 72 63 65  20 63 6f 64 65 20 69 73  |e.source code is|
00000240  20 61 76 61 69 6c 61 62  6c 65 20 6f 6e 20 72 65  | available on re|
00000250  71 75 65 73 74 20 69 66  20 72 65 71 75 69 72 65  |quest if require|
00000260  64 20 66 6f 72 20 75 73  65 20 77 69 74 68 20 61  |d for use with a|
00000270  6e 20 69 6e 63 6f 6d 70  61 74 69 62 6c 65 0a 63  |n incompatible.c|
00000280  6f 6d 70 69 6c 65 72 2e  20 56 65 6e 65 65 72 73  |ompiler. Veneers|
00000290  20 74 6f 20 61 6c 6c 6f  77 20 74 68 65 20 41 52  | to allow the AR|
000002a0  4d 45 64 69 74 20 53 57  49 73 20 74 6f 20 62 65  |MEdit SWIs to be|
000002b0  20 63 61 6c 6c 65 64 20  66 72 6f 6d 20 43 2f 43  | called from C/C|
000002c0  2b 2b 20 77 65 72 65 0a  61 73 73 65 6d 62 6c 65  |++ were.assemble|
000002d0  64 20 75 73 69 6e 67 20  41 63 6f 72 6e 20 4f 62  |d using Acorn Ob|
000002e0  6a 41 73 6d 20 76 65 72  73 69 6f 6e 20 33 2e 30  |jAsm version 3.0|
000002f0  36 2c 20 61 6e 64 20 73  68 6f 75 6c 64 20 62 65  |6, and should be|
00000300  20 75 73 65 64 20 69 6e  20 63 6f 6e 6a 75 6e 63  | used in conjunc|
00000310  74 69 6f 6e 0a 77 69 74  68 20 4a 6f 6e 61 74 68  |tion.with Jonath|
00000320  61 6e 20 43 6f 78 68 65  61 64 27 73 20 4f 53 4c  |an Coxhead's OSL|
00000330  69 62 2e 0a 0a 0a 46 49  4c 45 53 20 49 4e 43 4c  |ib....FILES INCL|
00000340  55 44 45 44 0a 0a 54 68  65 20 66 6f 6c 6c 6f 77  |UDED..The follow|
00000350  69 6e 67 20 68 65 61 64  65 72 20 66 69 6c 65 73  |ing header files|
00000360  20 61 72 65 20 69 6e 63  6c 75 64 65 64 20 69 6e  | are included in|
00000370  20 74 68 69 73 20 64 69  73 74 72 69 62 75 74 69  | this distributi|
00000380  6f 6e 20 66 6f 72 20 75  73 65 20 6f 6e 20 74 68  |on for use on th|
00000390  65 0a 50 43 20 73 69 64  65 3a 0a 0a 20 20 20 20  |e.PC side:..    |
000003a0  41 52 4d 46 49 4c 45 2e  48 20 20 20 48 69 67 68  |ARMFILE.H   High|
000003b0  20 6c 65 76 65 6c 20 72  6f 75 74 69 6e 65 73 20  | level routines |
000003c0  66 6f 72 20 63 6f 70 79  69 6e 67 20 69 6e 64 69  |for copying indi|
000003d0  76 69 64 75 61 6c 20 66  69 6c 65 73 20 62 65 74  |vidual files bet|
000003e0  77 65 65 6e 0a 20 20 20  20 20 20 20 20 20 20 20  |ween.           |
000003f0  20 20 20 20 20 44 4f 53  20 61 6e 64 20 52 49 53  |     DOS and RIS|
00000400  43 20 4f 53 2e 20 54 68  65 73 65 20 70 65 72 66  |C OS. These perf|
00000410  6f 72 6d 20 74 68 65 20  63 6f 72 65 20 6f 66 20  |orm the core of |
00000420  74 68 65 20 47 45 54 46  49 4c 45 20 61 6e 64 0a  |the GETFILE and.|
00000430  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000440  50 55 54 46 49 4c 45 20  75 74 69 6c 69 74 69 65  |PUTFILE utilitie|
00000450  73 2e 20 54 68 65 79 20  70 72 6f 76 69 64 65 20  |s. They provide |
00000460  61 6e 20 65 61 73 79 20  77 61 79 20 6f 66 20 74  |an easy way of t|
00000470  72 61 6e 73 66 65 72 72  69 6e 67 0a 20 20 20 20  |ransferring.    |
00000480  20 20 20 20 20 20 20 20  20 20 20 20 6c 61 72 67  |            larg|
00000490  65 20 61 6d 6f 75 6e 74  73 20 6f 66 20 64 61 74  |e amounts of dat|
000004a0  61 20 62 65 74 77 65 65  6e 20 74 68 65 20 74 77  |a between the tw|
000004b0  6f 20 65 6e 76 69 72 6f  6e 6d 65 6e 74 73 2e 0a  |o environments..|
000004c0  0a 20 20 20 20 43 4c 49  2e 48 20 20 20 20 20 20  |.    CLI.H      |
000004d0  20 46 75 6e 63 74 69 6f  6e 73 20 74 6f 20 63 61  | Functions to ca|
000004e0  6c 6c 20 52 49 53 43 20  4f 53 20 2a 63 6f 6d 6d  |ll RISC OS *comm|
000004f0  61 6e 64 73 20 77 69 74  68 20 64 69 66 66 65 72  |ands with differ|
00000500  65 6e 74 20 6c 65 76 65  6c 73 20 6f 66 0a 20 20  |ent levels of.  |
00000510  20 20 20 20 20 20 20 20  20 20 20 20 20 20 69 6e  |              in|
00000520  70 75 74 20 61 6e 64 20  6f 75 74 70 75 74 20 72  |put and output r|
00000530  65 64 69 72 65 63 74 69  6f 6e 2e 0a 0a 20 20 20  |edirection...   |
00000540  20 48 50 43 2e 48 20 20  20 20 20 20 20 41 6e 20  | HPC.H       An |
00000550  69 6e 74 65 72 66 61 63  65 20 74 6f 20 41 6c 65  |interface to Ale|
00000560  70 68 20 4f 6e 65 27 73  20 48 69 67 68 2d 6c 65  |ph One's High-le|
00000570  76 65 6c 20 50 72 6f 63  65 64 75 72 65 20 43 61  |vel Procedure Ca|
00000580  6c 6c 20 28 48 50 43 29  0a 20 20 20 20 20 20 20  |ll (HPC).       |
00000590  20 20 20 20 20 20 20 20  20 73 79 73 74 65 6d 2e  |         system.|
000005a0  20 54 68 69 73 20 61 6c  6c 6f 77 73 20 74 68 65  | This allows the|
000005b0  20 72 6f 75 74 69 6e 65  73 20 64 65 73 63 72 69  | routines descri|
000005c0  62 65 64 20 69 6e 20 74  68 65 20 44 6f 63 73 2e  |bed in the Docs.|
000005d0  48 50 43 0a 20 20 20 20  20 20 20 20 20 20 20 20  |HPC.            |
000005e0  20 20 20 20 66 69 6c 65  20 74 6f 20 62 65 20 63  |    file to be c|
000005f0  61 6c 6c 65 64 20 64 69  72 65 63 74 6c 79 2e 0a  |alled directly..|
00000600  0a 20 20 20 20 53 56 43  2e 48 20 20 20 20 20 20  |.    SVC.H      |
00000610  20 41 20 6c 6f 77 20 6c  65 76 65 6c 20 69 6e 74  | A low level int|
00000620  65 72 66 61 63 65 20 74  6f 20 74 68 65 20 53 56  |erface to the SV|
00000630  43 20 63 61 6c 6c 73 20  73 75 70 70 6f 72 74 65  |C calls supporte|
00000640  64 20 62 79 20 41 63 6f  72 6e 27 73 0a 20 20 20  |d by Acorn's.   |
00000650  20 20 20 20 20 20 20 20  20 20 20 20 20 73 6f 66  |             sof|
00000660  74 77 61 72 65 20 65 6d  75 6c 61 74 6f 72 2e 20  |tware emulator. |
00000670  54 68 65 73 65 20 61 72  65 20 75 73 65 64 20 62  |These are used b|
00000680  79 20 74 68 65 20 48 50  43 20 6d 6f 64 75 6c 65  |y the HPC module|
00000690  20 62 75 74 20 6d 61 79  0a 20 20 20 20 20 20 20  | but may.       |
000006a0  20 20 20 20 20 20 20 20  20 62 65 20 75 73 65 66  |         be usef|
000006b0  75 6c 20 74 6f 20 6f 74  68 65 72 20 75 73 65 72  |ul to other user|
000006c0  73 2e 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |s..             |
000006d0  20 20 20 0a 20 20 20 20  53 57 49 2e 48 20 20 20  |   .    SWI.H   |
000006e0  20 20 20 20 54 68 69 73  20 70 72 6f 76 69 64 65  |    This provide|
000006f0  73 20 61 20 73 69 6e 67  6c 65 20 66 75 6e 63 74  |s a single funct|
00000700  69 6f 6e 20 74 6f 20 63  61 6c 6c 20 61 20 52 49  |ion to call a RI|
00000710  53 43 20 4f 53 20 53 57  49 20 62 79 20 6e 61 6d  |SC OS SWI by nam|
00000720  65 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |e.              |
00000730  20 20 66 72 6f 6d 20 74  68 65 20 50 43 2e 20 54  |  from the PC. T|
00000740  68 69 73 20 73 68 6f 75  6c 64 20 6e 6f 74 20 6e  |his should not n|
00000750  6f 72 6d 61 6c 6c 79 20  62 65 20 75 73 65 64 2c  |ormally be used,|
00000760  20 62 65 63 61 75 73 65  20 69 74 20 69 73 0a 20  | because it is. |
00000770  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 76  |               v|
00000780  65 72 79 20 69 6e 65 66  66 69 63 69 65 6e 74 2c  |ery inefficient,|
00000790  20 62 75 74 20 69 73 20  75 73 65 66 75 6c 20 77  | but is useful w|
000007a0  68 65 6e 20 70 72 6f 74  6f 74 79 70 69 6e 67 20  |hen prototyping |
000007b0  63 6f 64 65 2e 0a 20 20  20 20 0a 20 20 20 20 54  |code..    .    T|
000007c0  41 4c 4b 2e 48 20 20 20  20 20 20 54 68 69 73 20  |ALK.H      This |
000007d0  69 73 20 74 68 65 20 6d  61 69 6e 20 69 6e 74 65  |is the main inte|
000007e0  72 66 61 63 65 20 74 6f  20 74 68 65 20 52 49 53  |rface to the RIS|
000007f0  43 20 4f 53 20 73 65 72  76 69 63 65 73 2e 20 49  |C OS services. I|
00000800  74 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |t.              |
00000810  20 20 70 72 6f 76 69 64  65 73 20 72 6f 75 74 69  |  provides routi|
00000820  6e 65 73 20 66 6f 72 20  70 65 72 66 6f 72 6d 69  |nes for performi|
00000830  6e 67 20 67 65 6e 65 72  61 6c 6c 79 20 75 73 65  |ng generally use|
00000840  66 75 6c 20 66 75 6e 63  74 69 6f 6e 73 2c 0a 20  |ful functions,. |
00000850  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 65  |               e|
00000860  2e 67 2e 20 61 6c 6c 6f  63 61 74 69 6e 67 20 61  |.g. allocating a|
00000870  6e 64 20 64 65 61 6c 6c  6f 63 61 74 69 6e 67 20  |nd deallocating |
00000880  6d 65 6d 6f 72 79 2e 0a  0a 20 20 20 20 55 54 49  |memory...    UTI|
00000890  4c 2e 48 20 20 20 20 20  20 41 20 63 6f 6c 6c 65  |L.H      A colle|
000008a0  63 74 69 6f 6e 20 6f 66  20 75 73 65 66 75 6c 20  |ction of useful |
000008b0  75 74 69 6c 69 74 79 20  66 75 6e 63 74 69 6f 6e  |utility function|
000008c0  73 20 74 68 61 74 20 61  72 65 20 75 73 65 64 20  |s that are used |
000008d0  62 79 20 74 68 65 0a 20  20 20 20 20 20 20 20 20  |by the.         |
000008e0  20 20 20 20 20 20 20 73  75 70 70 6c 69 65 64 20  |       supplied |
000008f0  75 74 69 6c 69 74 69 65  73 2e 20 54 68 65 73 65  |utilities. These|
00000900  20 61 72 65 20 61 6c 73  6f 20 75 73 65 64 20 69  | are also used i|
00000910  6e 74 65 72 6e 61 6c 6c  79 20 62 79 20 74 68 65  |nternally by the|
00000920  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00000930  20 57 49 4d 50 20 6d 6f  64 75 6c 65 20 74 6f 20  | WIMP module to |
00000940  68 61 6e 64 6c 65 20 65  72 72 6f 72 20 63 6f 6e  |handle error con|
00000950  64 69 74 69 6f 6e 73 2e  0a 0a 20 20 20 20 56 44  |ditions...    VD|
00000960  55 2e 48 20 20 20 20 20  20 20 50 72 6f 63 65 73  |U.H       Proces|
00000970  73 69 6e 67 20 6f 66 20  56 44 55 20 63 6f 64 65  |sing of VDU code|
00000980  73 20 75 6e 64 65 72 20  44 4f 53 2e 20 54 68 69  |s under DOS. Thi|
00000990  73 20 65 6d 75 6c 61 74  65 73 20 74 68 65 20 6e  |s emulates the n|
000009a0  6f 72 6d 61 6c 0a 20 20  20 20 20 20 20 20 20 20  |ormal.          |
000009b0  20 20 20 20 20 20 52 49  53 43 20 4f 53 20 74 72  |      RISC OS tr|
000009c0  65 61 74 6d 65 6e 74 20  6f 66 20 61 20 63 6f 6d  |eatment of a com|
000009d0  6d 6f 6e 20 73 75 62 73  65 74 20 6f 66 20 63 6f  |mon subset of co|
000009e0  6e 74 72 6f 6c 20 63 6f  64 65 73 2e 0a 0a 20 20  |ntrol codes...  |
000009f0  20 20 57 49 4d 50 2e 48  20 20 20 20 20 20 46 75  |  WIMP.H      Fu|
00000a00  6e 63 74 69 6f 6e 73 20  74 6f 20 63 6f 6d 6d 75  |nctions to commu|
00000a10  6e 69 63 61 74 65 20 77  69 74 68 20 74 68 65 20  |nicate with the |
00000a20  22 21 41 52 4d 45 64 69  74 22 20 66 72 6f 6e 74  |"!ARMEdit" front|
00000a30  2d 65 6e 64 20 75 73 69  6e 67 0a 20 20 20 20 20  |-end using.     |
00000a40  20 20 20 20 20 20 20 20  20 20 20 74 68 65 20 6d  |           the m|
00000a50  65 73 73 61 67 65 73 20  64 65 73 63 72 69 62 65  |essages describe|
00000a60  64 20 69 6e 20 74 68 65  20 44 6f 63 73 2e 54 61  |d in the Docs.Ta|
00000a70  6c 6b 20 66 69 6c 65 2e  0a 0a 41 6c 6c 20 6f 66  |lk file...All of|
00000a80  20 74 68 65 20 72 65 71  75 69 72 65 64 20 6f 62  | the required ob|
00000a90  6a 65 63 74 20 66 69 6c  65 73 20 74 6f 20 62 65  |ject files to be|
00000aa0  20 6c 69 6e 6b 65 64 20  77 69 74 68 20 61 72 65  | linked with are|
00000ab0  20 69 6e 63 6c 75 64 65  64 20 69 6e 20 61 20 73  | included in a s|
00000ac0  69 6e 67 6c 65 0a 6c 69  62 72 61 72 79 20 66 69  |ingle.library fi|
00000ad0  6c 65 3a 0a 0a 20 20 20  20 41 52 4d 45 44 49 54  |le:..    ARMEDIT|
00000ae0  2e 4c 49 42 0a 0a 54 68  65 20 66 6f 6c 6c 6f 77  |.LIB..The follow|
00000af0  69 6e 67 20 68 65 61 64  65 72 20 66 69 6c 65 73  |ing header files|
00000b00  20 61 72 65 20 69 6e 63  6c 75 64 65 64 20 66 6f  | are included fo|
00000b10  72 20 75 73 65 20 75 6e  64 65 72 20 52 49 53 43  |r use under RISC|
00000b20  20 4f 53 3a 0a 0a 20 20  20 20 68 2e 61 72 6d 65  | OS:..    h.arme|
00000b30  64 69 74 73 77 69 20 20  20 20 43 20 69 6e 74 65  |ditswi    C inte|
00000b40  72 66 61 63 65 20 66 75  6e 63 74 69 6f 6e 73 20  |rface functions |
00000b50  74 6f 20 61 6c 6c 20 6f  66 20 74 68 65 20 53 57  |to all of the SW|
00000b60  49 73 20 70 72 6f 76 69  64 65 64 20 62 79 20 74  |Is provided by t|
00000b70  68 65 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |he.             |
00000b80  20 20 20 20 20 20 20 41  52 4d 45 64 69 74 20 6d  |       ARMEdit m|
00000b90  6f 64 75 6c 65 2e 20 53  65 65 20 44 6f 63 73 2e  |odule. See Docs.|
00000ba0  4d 6f 64 75 6c 65 20 66  6f 72 20 64 65 74 61 69  |Module for detai|
00000bb0  6c 73 20 6f 66 20 61 6c  6c 20 74 68 65 0a 20 20  |ls of all the.  |
00000bc0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000bd0  20 20 53 57 49 73 2e 0a  0a 41 20 73 69 6e 67 6c  |  SWIs...A singl|
00000be0  65 20 6f 62 6a 65 63 74  20 66 69 6c 65 20 69 73  |e object file is|
00000bf0  20 69 6e 63 6c 75 64 65  64 20 63 6f 6e 74 61 69  | included contai|
00000c00  6e 69 6e 67 20 74 68 65  20 61 73 73 65 6d 62 6c  |ning the assembl|
00000c10  65 64 20 76 65 6e 65 65  72 73 3a 0a 0a 20 20 20  |ed veneers:..   |
00000c20  20 6f 2e 61 72 6d 65 64  69 74 73 77 69 0a 0a 0a  | o.armeditswi...|
00000c30  46 55 4e 43 54 49 4f 4e  53 20 50 52 4f 56 49 44  |FUNCTIONS PROVID|
00000c40  45 44 0a 0a 54 68 65 20  66 6f 6c 6c 6f 77 69 6e  |ED..The followin|
00000c50  67 20 73 65 63 74 69 6f  6e 73 20 67 69 76 65 20  |g sections give |
00000c60  62 72 69 65 66 20 64 65  73 63 72 69 70 74 69 6f  |brief descriptio|
00000c70  6e 73 20 6f 66 20 74 68  65 20 66 75 6e 63 74 69  |ns of the functi|
00000c80  6f 6e 73 20 70 72 6f 76  69 64 65 64 20 69 6e 0a  |ons provided in.|
00000c90  65 61 63 68 20 68 65 61  64 65 72 20 66 69 6c 65  |each header file|
00000ca0  2e 20 46 6f 72 20 6d 6f  72 65 20 64 65 74 61 69  |. For more detai|
00000cb0  6c 73 20 72 65 61 64 20  74 68 65 20 63 6f 6d 6d  |ls read the comm|
00000cc0  65 6e 74 73 20 69 6e 20  74 68 65 20 68 65 61 64  |ents in the head|
00000cd0  65 72 20 66 69 6c 65 73  0a 74 68 65 6d 73 65 6c  |er files.themsel|
00000ce0  76 65 73 2e 0a 0a 54 68  65 20 70 72 6f 76 69 64  |ves...The provid|
00000cf0  65 64 20 73 65 72 76 69  63 65 73 20 73 68 6f 75  |ed services shou|
00000d00  6c 64 20 61 6c 6c 6f 77  20 61 6c 6d 6f 73 74 20  |ld allow almost |
00000d10  61 6e 79 20 6f 70 65 72  61 74 69 6f 6e 20 74 6f  |any operation to|
00000d20  20 62 65 20 70 65 72 66  6f 72 6d 65 64 2e 0a 48  | be performed..H|
00000d30  6f 77 65 76 65 72 2c 20  70 6c 65 61 73 65 20 67  |owever, please g|
00000d40  65 74 20 69 6e 20 74 6f  75 63 68 20 69 66 20 65  |et in touch if e|
00000d50  78 74 72 61 20 66 65 61  74 75 72 65 73 20 77 6f  |xtra features wo|
00000d60  75 6c 64 20 62 65 20 75  73 65 66 75 6c 20 2d 20  |uld be useful - |
00000d70  69 66 20 74 68 65 79 20  61 72 65 0a 73 75 66 66  |if they are.suff|
00000d80  69 63 69 65 6e 74 6c 79  20 67 65 6e 65 72 61 6c  |iciently general|
00000d90  20 74 68 65 79 20 6d 61  79 20 67 65 74 20 61 64  | they may get ad|
00000da0  64 65 64 20 69 6e 20 61  20 66 75 74 75 72 65 20  |ded in a future |
00000db0  72 65 6c 65 61 73 65 20  6f 66 20 74 68 65 20 41  |release of the A|
00000dc0  52 4d 45 64 69 74 0a 6d  6f 64 75 6c 65 2e 0a 0a  |RMEdit.module...|
00000dd0  0a 41 52 4d 46 49 4c 45  2e 48 0a 0a 61 72 6d 66  |.ARMFILE.H..armf|
00000de0  69 6c 65 5f 63 6f 70 79  5f 64 6f 73 5f 72 69 73  |ile_copy_dos_ris|
00000df0  63 6f 73 0a 0a 20 20 20  20 43 6f 70 79 20 61 20  |cos..    Copy a |
00000e00  66 69 6c 65 20 66 72 6f  6d 20 52 49 53 43 20 4f  |file from RISC O|
00000e10  53 20 74 6f 20 44 4f 53  2e 0a 20 20 20 20 0a 0a  |S to DOS..    ..|
00000e20  61 72 6d 66 69 6c 65 5f  63 6f 70 79 5f 72 69 73  |armfile_copy_ris|
00000e30  63 6f 73 5f 64 6f 73 0a  0a 20 20 20 20 43 6f 70  |cos_dos..    Cop|
00000e40  79 20 61 20 66 69 6c 65  20 66 72 6f 6d 20 44 4f  |y a file from DO|
00000e50  53 20 74 6f 20 52 49 53  43 20 4f 53 2e 0a 20 20  |S to RISC OS..  |
00000e60  20 20 0a 0a 61 72 6d 66  69 6c 65 5f 74 72 61 6e  |  ..armfile_tran|
00000e70  73 6c 61 74 65 5f 64 6f  73 5f 72 69 73 63 6f 73  |slate_dos_riscos|
00000e80  0a 0a 20 20 20 20 43 6f  6e 76 65 72 74 20 61 20  |..    Convert a |
00000e90  44 4f 53 20 66 69 6c 65  6e 61 6d 65 20 69 6e 74  |DOS filename int|
00000ea0  6f 20 61 20 52 49 53 43  20 4f 53 20 65 71 75 69  |o a RISC OS equi|
00000eb0  76 61 6c 65 6e 74 2e 20  54 68 69 73 20 70 65 72  |valent. This per|
00000ec0  66 6f 72 6d 73 0a 20 20  20 20 73 75 62 73 74 69  |forms.    substi|
00000ed0  74 75 74 69 6f 6e 73 20  73 69 6d 69 6c 61 72 20  |tutions similar |
00000ee0  74 6f 20 74 68 6f 73 65  20 70 65 72 66 6f 72 6d  |to those perform|
00000ef0  65 64 20 62 79 20 44 4f  53 46 53 2e 0a 0a 0a 61  |ed by DOSFS....a|
00000f00  72 6d 66 69 6c 65 5f 74  72 61 6e 73 6c 61 74 65  |rmfile_translate|
00000f10  5f 72 69 73 63 6f 73 5f  64 6f 73 0a 0a 20 20 20  |_riscos_dos..   |
00000f20  20 43 6f 6e 76 65 72 74  20 61 20 52 49 53 43 20  | Convert a RISC |
00000f30  4f 53 20 66 69 6c 65 6e  61 6d 65 20 69 6e 74 6f  |OS filename into|
00000f40  20 61 20 44 4f 53 20 65  71 75 69 76 61 6c 65 6e  | a DOS equivalen|
00000f50  74 2e 20 54 68 69 73 20  70 65 72 66 6f 72 6d 73  |t. This performs|
00000f60  20 74 68 65 0a 20 20 20  20 6f 70 70 6f 73 69 74  | the.    opposit|
00000f70  65 20 6f 70 65 72 61 74  69 6f 6e 20 74 6f 20 61  |e operation to a|
00000f80  72 6d 66 69 6c 65 5f 74  72 61 6e 73 6c 61 74 65  |rmfile_translate|
00000f90  5f 64 6f 73 5f 72 69 73  63 6f 73 2e 0a 0a 61 72  |_dos_riscos...ar|
00000fa0  6d 66 69 6c 65 5f 74 65  6d 70 6f 72 61 72 79 0a  |mfile_temporary.|
00000fb0  0a 20 20 20 20 47 65 6e  65 72 61 74 65 20 74 68  |.    Generate th|
00000fc0  65 20 66 69 6c 65 6e 61  6d 65 20 66 6f 72 20 61  |e filename for a|
00000fd0  20 74 65 6d 70 6f 72 61  72 79 20 52 49 53 43 20  | temporary RISC |
00000fe0  4f 53 20 66 69 6c 65 2c  20 61 6e 64 20 65 6e 73  |OS file, and ens|
00000ff0  75 72 65 20 69 74 20 69  73 0a 20 20 20 20 64 65  |ure it is.    de|
00001000  6c 65 74 65 64 20 62 65  66 6f 72 65 20 74 68 65  |leted before the|
00001010  20 70 72 6f 67 72 61 6d  20 65 78 69 74 73 2e 0a  | program exits..|
00001020  0a 61 72 6d 66 69 6c 65  5f 63 72 65 61 74 65 5f  |.armfile_create_|
00001030  64 69 72 0a 0a 20 20 20  20 43 72 65 61 74 65 20  |dir..    Create |
00001040  61 20 52 49 53 43 20 4f  53 20 64 69 72 65 63 74  |a RISC OS direct|
00001050  6f 72 79 2e 0a 0a 0a 43  4c 49 2e 48 0a 0a 63 6c  |ory....CLI.H..cl|
00001060  69 5f 73 69 6d 70 6c 65  0a 0a 20 20 20 20 41 20  |i_simple..    A |
00001070  73 69 6d 70 6c 65 20 2a  63 6f 6d 6d 61 6e 64 20  |simple *command |
00001080  69 6e 74 65 72 66 61 63  65 2e 20 49 66 20 6f 75  |interface. If ou|
00001090  74 70 75 74 20 72 65 64  69 72 65 63 74 69 6f 6e  |tput redirection|
000010a0  20 69 73 20 72 65 71 75  69 72 65 64 20 74 68 65  | is required the|
000010b0  6e 20 69 74 0a 20 20 20  20 69 73 20 70 65 72 66  |n it.    is perf|
000010c0  6f 72 6d 65 64 20 76 69  61 20 61 20 66 69 6c 65  |ormed via a file|
000010d0  2e 0a 20 20 20 20 0a 0a  63 6c 69 5f 72 65 64 69  |..    ..cli_redi|
000010e0  72 0a 0a 20 20 20 20 41  20 6d 6f 72 65 20 63 6f  |r..    A more co|
000010f0  6d 70 72 65 68 65 6e 73  69 76 65 20 2a 63 6f 6d  |mprehensive *com|
00001100  6d 61 6e 64 20 69 6e 74  65 72 66 61 63 65 2e 20  |mand interface. |
00001110  42 6f 74 68 20 69 6e 70  75 74 20 61 6e 64 20 6f  |Both input and o|
00001120  75 70 75 74 20 63 61 6e  20 62 65 0a 20 20 20 20  |uput can be.    |
00001130  72 65 64 69 72 65 63 74  65 64 20 74 6f 2f 66 72  |redirected to/fr|
00001140  6f 6d 20 61 6e 79 20 44  4f 53 20 73 74 72 65 61  |om any DOS strea|
00001150  6d 20 6f 72 20 66 69 6c  65 2e 20 53 70 65 63 69  |m or file. Speci|
00001160  61 6c 20 61 63 74 69 6f  6e 20 69 73 20 74 61 6b  |al action is tak|
00001170  65 6e 20 69 66 0a 20 20  20 20 74 68 65 20 73 74  |en if.    the st|
00001180  72 65 61 6d 73 20 63 6f  72 72 65 73 70 6f 6e 64  |reams correspond|
00001190  20 74 6f 20 74 68 65 20  6b 65 79 62 6f 61 72 64  | to the keyboard|
000011a0  20 6f 72 20 73 63 72 65  65 6e 2e 0a 20 20 20 20  | or screen..    |
000011b0  0a 0a 48 50 43 2e 48 0a  0a 68 70 63 5f 6d 65 73  |..HPC.H..hpc_mes|
000011c0  73 61 67 65 0a 0a 20 20  20 20 45 78 65 63 75 74  |sage..    Execut|
000011d0  65 20 61 20 67 65 6e 65  72 61 6c 20 48 50 43 20  |e a general HPC |
000011e0  63 61 6c 6c 2e 20 49 66  20 48 50 43 20 73 75 70  |call. If HPC sup|
000011f0  70 6f 72 74 20 69 73 20  6e 6f 74 20 70 72 6f 76  |port is not prov|
00001200  69 64 65 64 20 62 79 20  74 68 65 20 50 43 0a 20  |ided by the PC. |
00001210  20 20 20 66 72 6f 6e 74  2d 65 6e 64 20 73 6f 66  |   front-end sof|
00001220  74 77 61 72 65 20 74 68  65 6e 20 6f 6e 65 20 6f  |tware then one o|
00001230  66 20 73 65 76 65 72 61  6c 20 73 75 62 73 74 69  |f several substi|
00001240  74 75 74 65 20 6d 65 63  68 61 6e 69 73 6d 73 20  |tute mechanisms |
00001250  69 73 20 75 73 65 64 2c  0a 20 20 20 20 62 75 74  |is used,.    but|
00001260  20 74 68 65 79 20 6f 6e  6c 79 20 77 6f 72 6b 20  | they only work |
00001270  77 69 74 68 20 74 68 65  20 41 52 4d 45 64 69 74  |with the ARMEdit|
00001280  20 6d 6f 64 75 6c 65 2e  0a 0a 0a 53 56 43 2e 48  | module....SVC.H|
00001290  0a 0a 73 76 63 5f 61 64  64 72 65 73 73 0a 0a 20  |..svc_address.. |
000012a0  20 20 20 54 72 61 6e 73  6c 61 74 65 20 61 6e 20  |   Translate an |
000012b0  38 30 38 36 20 61 64 64  72 65 73 73 20 74 6f 20  |8086 address to |
000012c0  61 6e 20 41 52 4d 20 61  64 64 72 65 73 73 20 75  |an ARM address u|
000012d0  73 69 6e 67 20 53 56 43  32 35 37 20 69 66 20 41  |sing SVC257 if A|
000012e0  63 6f 72 6e 27 73 0a 20  20 20 20 73 6f 66 74 77  |corn's.    softw|
000012f0  61 72 65 20 65 6d 75 6c  61 74 6f 72 20 69 73 20  |are emulator is |
00001300  62 65 69 6e 67 20 75 73  65 64 2e 20 54 68 69 73  |being used. This|
00001310  20 6d 75 73 74 20 6e 6f  74 20 62 65 20 63 61 6c  | must not be cal|
00001320  6c 65 64 20 6f 6e 20 61  6e 79 20 6f 74 68 65 72  |led on any other|
00001330  0a 20 20 20 20 73 79 73  74 65 6d 2e 0a 20 20 20  |.    system..   |
00001340  20 0a 0a 73 76 63 5f 73  77 69 0a 0a 20 20 20 20  | ..svc_swi..    |
00001350  43 61 6c 6c 20 61 20 52  49 53 43 20 4f 53 20 53  |Call a RISC OS S|
00001360  57 49 20 75 73 69 6e 67  20 53 56 43 32 35 38 20  |WI using SVC258 |
00001370  69 66 20 41 63 6f 72 6e  27 73 20 73 6f 66 74 77  |if Acorn's softw|
00001380  61 72 65 20 65 6d 75 6c  61 74 6f 72 20 69 73 20  |are emulator is |
00001390  62 65 69 6e 67 0a 20 20  20 20 75 73 65 64 2e 20  |being.    used. |
000013a0  54 68 69 73 20 6d 75 73  74 20 6e 6f 74 20 62 65  |This must not be|
000013b0  20 63 61 6c 6c 65 64 20  6f 6e 20 61 6e 79 20 6f  | called on any o|
000013c0  74 68 65 72 20 73 79 73  74 65 6d 2e 0a 0a 0a 53  |ther system....S|
000013d0  57 49 2e 48 0a 0a 73 77  69 5f 73 77 69 0a 0a 20  |WI.H..swi_swi.. |
000013e0  20 20 20 43 61 6c 6c 20  61 20 73 70 65 63 69 66  |   Call a specif|
000013f0  69 65 64 20 52 49 53 43  20 4f 53 20 53 57 49 20  |ied RISC OS SWI |
00001400  62 79 20 69 74 73 20 6e  61 6d 65 2e 20 41 73 20  |by its name. As |
00001410  6d 65 6e 74 69 6f 6e 65  64 20 61 62 6f 76 65 20  |mentioned above |
00001420  74 68 69 73 20 69 73 20  61 0a 20 20 20 20 76 65  |this is a.    ve|
00001430  72 79 20 69 6e 65 66 66  69 63 69 65 6e 74 20 6f  |ry inefficient o|
00001440  70 65 72 61 74 69 6f 6e  20 74 6f 20 70 65 72 66  |peration to perf|
00001450  6f 72 6d 2c 20 73 6f 20  73 68 6f 75 6c 64 20 6e  |orm, so should n|
00001460  6f 72 6d 61 6c 6c 79 20  6f 6e 6c 79 20 62 65 20  |ormally only be |
00001470  75 73 65 64 0a 20 20 20  20 64 75 72 69 6e 67 20  |used.    during |
00001480  64 65 76 65 6c 6f 70 6d  65 6e 74 20 73 74 61 67  |development stag|
00001490  65 73 20 6f 66 20 6e 65  77 20 73 6f 66 74 77 61  |es of new softwa|
000014a0  72 65 2e 0a 0a 0a 54 41  4c 4b 2e 48 0a 0a 74 61  |re....TALK.H..ta|
000014b0  6c 6b 5f 73 77 69 0a 0a  20 20 20 20 43 61 6c 6c  |lk_swi..    Call|
000014c0  20 61 20 52 49 53 43 20  4f 53 20 53 57 49 20 62  | a RISC OS SWI b|
000014d0  79 20 6e 75 6d 62 65 72  2e 20 49 74 20 73 68 6f  |y number. It sho|
000014e0  75 6c 64 20 62 65 20 72  65 6d 65 6d 62 65 72 65  |uld be remembere|
000014f0  64 20 74 68 61 74 20 74  68 65 20 53 57 49 20 63  |d that the SWI c|
00001500  61 6e 0a 20 20 20 20 6e  6f 74 20 72 65 61 64 20  |an.    not read |
00001510  50 43 20 6d 65 6d 6f 72  79 20 64 69 72 65 63 74  |PC memory direct|
00001520  6c 79 3b 20 74 68 65 20  72 65 71 75 69 72 65 64  |ly; the required|
00001530  20 64 61 74 61 20 6d 75  73 74 20 62 65 20 63 6f  | data must be co|
00001540  70 69 65 64 20 75 73 69  6e 67 20 74 68 65 0a 20  |pied using the. |
00001550  20 20 20 6f 74 68 65 72  20 66 75 6e 63 74 69 6f  |   other functio|
00001560  6e 73 20 70 72 6f 76 69  64 65 64 20 69 6e 20 74  |ns provided in t|
00001570  68 65 20 74 61 6c 6b 20  6d 6f 64 75 6c 65 2e 0a  |he talk module..|
00001580  0a 0a 74 61 6c 6b 5f 72  65 61 64 0a 0a 20 20 20  |..talk_read..   |
00001590  20 52 65 61 64 20 61 20  62 6c 6f 63 6b 20 6f 66  | Read a block of|
000015a0  20 52 49 53 43 20 4f 53  20 6d 65 6d 6f 72 79 2e  | RISC OS memory.|
000015b0  0a 0a 0a 74 61 6c 6b 5f  77 72 69 74 65 0a 0a 20  |...talk_write.. |
000015c0  20 20 20 57 72 69 74 65  20 61 20 62 6c 6f 63 6b  |   Write a block|
000015d0  20 6f 66 20 52 49 53 43  20 4f 53 20 6d 65 6d 6f  | of RISC OS memo|
000015e0  72 79 2e 0a 0a 0a 74 61  6c 6b 5f 6d 61 6c 6c 6f  |ry....talk_mallo|
000015f0  63 0a 0a 20 20 20 20 43  6c 61 69 6d 65 64 20 74  |c..    Claimed t|
00001600  68 65 20 73 70 65 63 69  66 69 65 64 20 61 6d 6f  |he specified amo|
00001610  75 6e 74 20 6f 66 20 52  49 53 43 20 4f 53 20 6d  |unt of RISC OS m|
00001620  65 6d 6f 72 79 2e 20 54  68 65 20 6d 65 6d 6f 72  |emory. The memor|
00001630  79 20 73 68 6f 75 6c 64  20 62 65 0a 20 20 20 20  |y should be.    |
00001640  72 65 6c 65 61 73 65 64  20 75 73 69 6e 67 20 74  |released using t|
00001650  61 6c 6b 5f 66 72 65 65  2e 20 48 6f 77 65 76 65  |alk_free. Howeve|
00001660  72 2c 20 69 74 20 77 69  6c 6c 20 61 75 74 6f 6d  |r, it will autom|
00001670  61 74 69 63 61 6c 6c 79  20 62 65 20 66 72 65 65  |atically be free|
00001680  64 20 77 68 65 6e 0a 20  20 20 20 74 68 65 20 50  |d when.    the P|
00001690  43 20 63 61 72 64 20 69  73 20 65 69 74 68 65 72  |C card is either|
000016a0  20 72 65 73 65 74 20 6f  72 20 71 75 69 74 3b 20  | reset or quit; |
000016b0  65 6e 73 75 72 69 6e 67  20 74 68 61 74 20 61 6c  |ensuring that al|
000016c0  6c 20 63 6c 61 69 6d 65  64 20 6d 65 6d 6f 72 79  |l claimed memory|
000016d0  0a 20 20 20 20 69 73 20  65 76 65 6e 74 75 61 6c  |.    is eventual|
000016e0  6c 79 20 64 65 61 6c 6c  6f 63 61 74 65 64 20 65  |ly deallocated e|
000016f0  76 65 6e 20 69 66 20 74  68 65 20 50 43 20 73 6f  |ven if the PC so|
00001700  66 74 77 61 72 65 20 74  65 72 6d 69 6e 61 74 65  |ftware terminate|
00001710  73 20 61 62 6e 6f 72 6d  61 6c 6c 79 2e 0a 0a 0a  |s abnormally....|
00001720  74 61 6c 6b 5f 66 72 65  65 0a 0a 20 20 20 20 46  |talk_free..    F|
00001730  72 65 65 20 61 20 62 6c  6f 63 6b 20 6f 66 20 6d  |ree a block of m|
00001740  65 6d 6f 72 79 20 70 72  65 76 69 6f 75 73 6c 79  |emory previously|
00001750  20 63 6c 61 69 6d 65 64  20 75 73 69 6e 67 20 74  | claimed using t|
00001760  61 6c 6b 5f 6d 61 6c 6c  6f 63 2e 0a 0a 0a 74 61  |alk_malloc....ta|
00001770  6c 6b 5f 65 78 74 5f 74  6f 5f 66 69 6c 65 74 79  |lk_ext_to_filety|
00001780  70 65 0a 0a 20 20 20 20  43 6f 6e 76 65 72 74 20  |pe..    Convert |
00001790  61 20 44 4f 53 20 66 69  6c 65 20 65 78 74 65 6e  |a DOS file exten|
000017a0  73 69 6f 6e 20 69 6e 74  6f 20 61 20 52 49 53 43  |sion into a RISC|
000017b0  20 4f 53 20 66 69 6c 65  74 79 70 65 2e 20 54 68  | OS filetype. Th|
000017c0  69 73 20 75 73 65 73 20  74 68 65 0a 20 20 20 20  |is uses the.    |
000017d0  6c 69 73 74 20 6f 66 20  6d 61 70 70 69 6e 67 73  |list of mappings|
000017e0  20 73 65 74 20 62 79 20  74 68 65 20 44 4f 53 4d  | set by the DOSM|
000017f0  61 70 20 63 6f 6d 6d 61  6e 64 2e 20 53 65 65 20  |ap command. See |
00001800  44 6f 63 73 2e 4d 6f 64  75 6c 65 20 66 6f 72 20  |Docs.Module for |
00001810  6d 6f 72 65 0a 20 20 20  20 64 65 74 61 69 6c 73  |more.    details|
00001820  2e 0a 0a 0a 74 61 6c 6b  5f 66 69 6c 65 74 79 70  |....talk_filetyp|
00001830  65 5f 74 6f 5f 65 78 74  0a 0a 20 20 20 20 43 6f  |e_to_ext..    Co|
00001840  6e 76 65 72 74 20 61 20  52 49 53 43 20 4f 53 20  |nvert a RISC OS |
00001850  66 69 6c 65 74 79 70 65  20 69 6e 74 6f 20 61 20  |filetype into a |
00001860  44 4f 53 20 66 69 6c 65  20 65 78 74 65 6e 73 69  |DOS file extensi|
00001870  6f 6e 2e 20 54 68 69 73  20 75 73 65 73 20 74 68  |on. This uses th|
00001880  65 0a 20 20 20 20 6c 69  73 74 20 6f 66 20 6d 61  |e.    list of ma|
00001890  70 70 69 6e 67 73 20 73  65 74 20 62 79 20 74 68  |ppings set by th|
000018a0  65 20 44 4f 53 4d 61 70  20 63 6f 6d 6d 61 6e 64  |e DOSMap command|
000018b0  2e 20 53 65 65 20 44 6f  63 73 2e 4d 6f 64 75 6c  |. See Docs.Modul|
000018c0  65 20 66 6f 72 20 6d 6f  72 65 0a 20 20 20 20 64  |e for more.    d|
000018d0  65 74 61 69 6c 73 2e 0a  0a 0a 74 61 6c 6b 5f 66  |etails....talk_f|
000018e0  69 6c 65 5f 6f 70 65 6e  0a 0a 20 20 20 20 4f 70  |ile_open..    Op|
000018f0  65 6e 20 61 20 52 49 53  43 20 4f 53 20 66 69 6c  |en a RISC OS fil|
00001900  65 2e 20 49 74 20 69 73  20 70 6f 73 73 69 62 6c  |e. It is possibl|
00001910  65 20 74 6f 20 73 70 65  63 69 66 79 20 74 68 61  |e to specify tha|
00001920  74 20 74 68 65 20 66 69  6c 65 20 73 68 6f 75 6c  |t the file shoul|
00001930  64 0a 20 20 20 20 61 75  74 6f 6d 61 74 69 63 61  |d.    automatica|
00001940  6c 6c 79 20 62 65 20 64  65 6c 65 74 65 64 20 77  |lly be deleted w|
00001950  68 65 6e 20 69 74 20 69  73 20 63 6c 6f 73 65 64  |hen it is closed|
00001960  3b 20 75 73 65 66 75 6c  20 66 6f 72 20 74 65 6d  |; useful for tem|
00001970  70 6f 72 61 72 79 20 66  69 6c 65 73 2e 0a 20 20  |porary files..  |
00001980  20 20 54 68 65 20 66 69  6c 65 20 73 68 6f 75 6c  |  The file shoul|
00001990  64 20 62 65 20 63 6c 6f  73 65 64 20 75 73 69 6e  |d be closed usin|
000019a0  67 20 74 61 6c 6b 5f 66  69 6c 65 5f 63 6c 6f 73  |g talk_file_clos|
000019b0  65 2e 20 48 6f 77 65 76  65 72 2c 20 69 74 20 77  |e. However, it w|
000019c0  69 6c 6c 0a 20 20 20 20  61 75 74 6f 6d 61 74 69  |ill.    automati|
000019d0  63 61 6c 6c 79 20 62 65  20 63 6c 6f 73 65 64 20  |cally be closed |
000019e0  77 68 65 6e 20 74 68 65  20 50 43 20 63 61 72 64  |when the PC card|
000019f0  20 69 73 20 65 69 74 68  65 72 20 72 65 73 65 74  | is either reset|
00001a00  20 6f 72 20 71 75 69 74  3b 0a 20 20 20 20 65 6e  | or quit;.    en|
00001a10  73 75 72 69 6e 67 20 74  68 61 74 20 61 6c 6c 20  |suring that all |
00001a20  66 69 6c 65 73 20 61 72  65 20 65 76 65 6e 74 75  |files are eventu|
00001a30  61 6c 6c 79 20 63 6c 6f  73 65 64 20 28 61 6e 64  |ally closed (and|
00001a40  20 64 65 6c 65 74 65 64  20 69 66 20 72 65 71 75  | deleted if requ|
00001a50  69 72 65 64 29 0a 20 20  20 20 65 76 65 6e 20 69  |ired).    even i|
00001a60  66 20 74 68 65 20 50 43  20 73 6f 66 74 77 61 72  |f the PC softwar|
00001a70  65 20 74 65 72 6d 69 6e  61 74 65 73 20 61 62 6e  |e terminates abn|
00001a80  6f 72 6d 61 6c 6c 79 2e  0a 0a 0a 74 61 6c 6b 5f  |ormally....talk_|
00001a90  66 69 6c 65 5f 63 6c 6f  73 65 0a 0a 20 20 20 20  |file_close..    |
00001aa0  43 6c 6f 73 65 20 61 20  52 49 53 43 20 4f 53 20  |Close a RISC OS |
00001ab0  66 69 6c 65 20 70 72 65  76 69 6f 75 73 6c 79 20  |file previously |
00001ac0  6f 70 65 6e 65 64 20 75  73 69 6e 67 20 74 61 6c  |opened using tal|
00001ad0  6b 5f 66 69 6c 65 5f 6f  70 65 6e 2e 0a 0a 0a 74  |k_file_open....t|
00001ae0  61 6c 6b 5f 66 69 6c 65  5f 72 65 61 64 0a 0a 20  |alk_file_read.. |
00001af0  20 20 20 52 65 61 64 20  61 20 62 6c 6f 63 6b 20  |   Read a block |
00001b00  6f 66 20 6d 65 6d 6f 72  79 20 66 72 6f 6d 20 61  |of memory from a|
00001b10  20 52 49 53 43 20 4f 53  20 66 69 6c 65 2e 0a 20  | RISC OS file.. |
00001b20  20 20 20 0a 0a 74 61 6c  6b 5f 66 69 6c 65 5f 77  |   ..talk_file_w|
00001b30  72 69 74 65 0a 0a 20 20  20 20 57 72 69 74 65 20  |rite..    Write |
00001b40  61 20 62 6c 6f 63 6b 20  6f 66 20 6d 65 6d 6f 72  |a block of memor|
00001b50  79 20 74 6f 20 61 20 52  49 53 43 20 4f 53 20 66  |y to a RISC OS f|
00001b60  69 6c 65 2e 0a 0a 0a 74  61 6c 6b 5f 63 6f 6d 6d  |ile....talk_comm|
00001b70  73 5f 73 74 61 72 74 0a  0a 20 20 20 20 52 65 67  |s_start..    Reg|
00001b80  69 73 74 65 72 20 61 20  63 6f 6d 6d 75 6e 69 63  |ister a communic|
00001b90  61 74 69 6f 6e 73 20 63  6c 69 65 6e 74 2e 0a 0a  |ations client...|
00001ba0  0a 74 61 6c 6b 5f 63 6f  6d 6d 73 5f 65 6e 64 0a  |.talk_comms_end.|
00001bb0  0a 20 20 20 20 44 65 72  65 67 69 73 74 65 72 20  |.    Deregister |
00001bc0  61 20 63 6f 6d 6d 75 6e  69 63 61 74 69 6f 6e 73  |a communications|
00001bd0  20 63 6c 69 65 6e 74 2e  0a 20 20 20 20 0a 0a 74  | client..    ..t|
00001be0  61 6c 6b 5f 63 6f 6d 6d  73 5f 74 78 0a 0a 20 20  |alk_comms_tx..  |
00001bf0  20 20 54 72 61 6e 73 6d  69 74 20 61 20 6d 65 73  |  Transmit a mes|
00001c00  73 61 67 65 20 74 6f 20  61 6e 6f 74 68 65 72 20  |sage to another |
00001c10  63 6c 69 65 6e 74 2e 0a  20 20 20 20 0a 0a 74 61  |client..    ..ta|
00001c20  6c 6b 5f 63 6f 6d 6d 73  5f 72 78 0a 0a 20 20 20  |lk_comms_rx..   |
00001c30  20 52 65 63 65 69 76 65  20 61 20 6d 65 73 73 61  | Receive a messa|
00001c40  67 65 20 66 72 6f 6d 20  61 6e 6f 74 68 65 72 20  |ge from another |
00001c50  63 6c 69 65 6e 74 2e 0a  0a 0a 74 61 6c 6b 5f 64  |client....talk_d|
00001c60  61 74 65 5f 74 6f 5f 64  6f 73 0a 0a 20 20 20 20  |ate_to_dos..    |
00001c70  43 6f 6e 76 65 72 74 20  61 20 64 61 74 65 20 61  |Convert a date a|
00001c80  6e 64 20 74 69 6d 65 20  66 72 6f 6d 20 52 49 53  |nd time from RIS|
00001c90  43 20 4f 53 20 74 6f 20  44 4f 53 20 66 6f 72 6d  |C OS to DOS form|
00001ca0  61 74 2e 0a 20 20 20 20  0a 0a 74 61 6c 6b 5f 64  |at..    ..talk_d|
00001cb0  61 74 65 5f 74 6f 5f 72  69 73 63 6f 73 0a 0a 20  |ate_to_riscos.. |
00001cc0  20 20 20 43 6f 6e 76 65  72 74 20 61 20 64 61 74  |   Convert a dat|
00001cd0  65 20 61 6e 64 20 74 69  6d 65 20 66 72 6f 6d 20  |e and time from |
00001ce0  44 4f 53 20 74 6f 20 52  49 53 43 20 4f 53 20 66  |DOS to RISC OS f|
00001cf0  6f 72 6d 61 74 2e 0a 0a  0a 74 61 6c 6b 5f 6f 73  |ormat....talk_os|
00001d00  63 6c 69 5f 73 74 61 72  74 0a 0a 20 20 20 20 53  |cli_start..    S|
00001d10  74 61 72 74 20 65 78 65  63 75 74 69 6e 67 20 61  |tart executing a|
00001d20  20 52 49 53 43 20 4f 53  20 2a 63 6f 6d 6d 61 6e  | RISC OS *comman|
00001d30  64 20 77 69 74 68 20 62  6f 74 68 20 69 6e 70 75  |d with both inpu|
00001d40  74 20 61 6e 64 20 6f 75  74 70 75 74 20 72 65 64  |t and output red|
00001d50  69 72 65 63 74 65 64 2e  0a 20 20 20 20 0a 0a 74  |irected..    ..t|
00001d60  61 6c 6b 5f 6f 73 63 6c  69 5f 70 6f 6c 6c 0a 0a  |alk_oscli_poll..|
00001d70  20 20 20 20 43 6f 6e 74  69 6e 75 65 20 74 68 65  |    Continue the|
00001d80  20 65 78 65 63 75 74 69  6f 6e 20 6f 66 20 61 20  | execution of a |
00001d90  52 49 53 43 20 4f 53 20  2a 63 6f 6d 6d 61 6e 64  |RISC OS *command|
00001da0  2e 0a 20 20 20 20 0a 0a  74 61 6c 6b 5f 6f 73 63  |..    ..talk_osc|
00001db0  6c 69 5f 65 6e 64 0a 0a  20 20 20 20 54 65 72 6d  |li_end..    Term|
00001dc0  69 6e 61 74 65 20 74 68  65 20 65 78 65 63 75 74  |inate the execut|
00001dd0  69 6f 6e 20 6f 66 20 61  20 52 49 53 43 20 4f 53  |ion of a RISC OS|
00001de0  20 2a 63 6f 6d 6d 61 6e  64 2e 0a 0a 0a 74 61 6c  | *command....tal|
00001df0  6b 5f 63 6f 6d 6d 73 5f  72 65 70 6c 79 0a 0a 20  |k_comms_reply.. |
00001e00  20 20 20 52 65 70 6c 79  20 74 6f 20 61 20 6d 65  |   Reply to a me|
00001e10  73 73 61 67 65 20 66 72  6f 6d 20 61 6e 6f 74 68  |ssage from anoth|
00001e20  65 72 20 63 6c 69 65 6e  74 2e 0a 0a 74 61 6c 6b  |er client...talk|
00001e30  5f 66 61 73 74 65 72 0a  0a 20 20 20 20 44 69 73  |_faster..    Dis|
00001e40  61 62 6c 65 20 6d 75 6c  74 69 74 61 73 6b 69 6e  |able multitaskin|
00001e50  67 20 66 6f 72 20 66 61  73 74 65 72 20 6f 70 65  |g for faster ope|
00001e60  72 61 74 69 6f 6e 73 2e  0a 0a 74 61 6c 6b 5f 74  |rations...talk_t|
00001e70  65 6d 70 6f 72 61 72 79  0a 0a 20 20 20 20 47 65  |emporary..    Ge|
00001e80  6e 65 72 61 74 65 20 61  20 75 6e 69 71 75 65 20  |nerate a unique |
00001e90  66 69 6c 65 6e 61 6d 65  20 66 6f 72 20 61 20 74  |filename for a t|
00001ea0  65 6d 70 6f 72 61 72 79  20 52 49 53 43 20 4f 53  |emporary RISC OS|
00001eb0  20 66 69 6c 65 2e 0a 0a  0a 55 54 49 4c 2e 48 0a  | file....UTIL.H.|
00001ec0  0a 75 74 69 6c 5f 61 72  6d 5f 73 70 6c 69 74 0a  |.util_arm_split.|
00001ed0  0a 20 20 20 20 53 70 6c  69 74 20 61 20 52 49 53  |.    Split a RIS|
00001ee0  43 20 4f 53 20 70 61 74  68 20 69 6e 74 6f 20 61  |C OS path into a|
00001ef0  20 64 69 72 65 63 74 6f  72 79 20 61 6e 64 20 6c  | directory and l|
00001f00  65 61 66 6e 61 6d 65 2e  0a 0a 0a 75 74 69 6c 5f  |eafname....util_|
00001f10  77 69 6c 64 63 61 72 64  0a 0a 20 20 20 20 43 61  |wildcard..    Ca|
00001f20  6c 6c 20 61 20 66 75 6e  63 74 69 6f 6e 20 66 6f  |ll a function fo|
00001f30  72 20 61 6c 6c 20 44 4f  53 20 66 69 6c 65 73 20  |r all DOS files |
00001f40  74 68 61 74 20 6d 61 74  63 68 20 61 20 77 69 6c  |that match a wil|
00001f50  64 63 61 72 64 65 64 20  73 70 65 63 69 66 69 63  |dcarded specific|
00001f60  61 74 69 6f 6e 2e 0a 0a  0a 75 74 69 6c 5f 61 72  |ation....util_ar|
00001f70  6d 5f 77 69 6c 64 63 61  72 64 0a 0a 20 20 20 20  |m_wildcard..    |
00001f80  43 61 6c 6c 20 61 20 66  75 6e 63 74 69 6f 6e 20  |Call a function |
00001f90  66 6f 72 20 61 6c 6c 20  52 49 53 43 20 4f 53 20  |for all RISC OS |
00001fa0  66 69 6c 65 73 20 74 68  61 74 20 6d 61 74 63 68  |files that match|
00001fb0  20 61 20 77 69 6c 64 63  61 72 64 65 64 0a 20 20  | a wildcarded.  |
00001fc0  20 20 73 70 65 63 69 66  69 63 61 74 69 6f 6e 2e  |  specification.|
00001fd0  0a 0a 0a 75 74 69 6c 5f  73 74 61 74 75 73 0a 0a  |...util_status..|
00001fe0  20 20 20 20 44 69 73 70  6c 61 79 20 61 20 6d 65  |    Display a me|
00001ff0  73 73 61 67 65 20 72 65  70 6c 61 63 69 6e 67 20  |ssage replacing |
00002000  61 6e 79 20 70 72 65 76  69 6f 75 73 20 6f 6e 65  |any previous one|
00002010  2e 20 41 20 73 70 69 6e  6e 69 6e 67 20 61 63 74  |. A spinning act|
00002020  69 76 69 74 79 0a 20 20  20 20 69 6e 64 69 63 61  |ivity.    indica|
00002030  74 6f 72 20 6d 61 79 20  61 6c 73 6f 20 62 65 20  |tor may also be |
00002040  73 68 6f 77 6e 2e 0a 0a  0a 75 74 69 6c 5f 65 72  |shown....util_er|
00002050  72 6f 72 0a 0a 20 20 20  20 45 78 69 74 20 77 69  |ror..    Exit wi|
00002060  74 68 20 61 6e 20 65 72  72 6f 72 20 6d 65 73 73  |th an error mess|
00002070  61 67 65 2e 20 54 68 69  73 20 72 65 70 6c 61 63  |age. This replac|
00002080  65 73 20 61 6e 79 20 70  72 65 76 69 6f 75 73 6c  |es any previousl|
00002090  79 20 64 69 73 70 6c 61  79 65 64 0a 20 20 20 20  |y displayed.    |
000020a0  6d 65 73 73 61 67 65 2e  0a 0a 0a 75 74 69 6c 5f  |message....util_|
000020b0  72 65 74 72 79 0a 0a 20  20 20 20 50 72 6f 6d 70  |retry..    Promp|
000020c0  74 20 74 68 65 20 75 73  65 72 20 74 6f 20 65 69  |t the user to ei|
000020d0  74 68 65 72 20 41 62 6f  72 74 2c 20 52 65 74 72  |ther Abort, Retr|
000020e0  79 2c 20 6f 72 20 6f 70  74 69 6f 6e 61 6c 6c 79  |y, or optionally|
000020f0  20 43 61 6e 63 65 6c 20  61 6e 0a 20 20 20 20 6f  | Cancel an.    o|
00002100  70 65 72 61 74 69 6f 6e  2e 0a 20 20 20 20 0a 0a  |peration..    ..|
00002110  75 74 69 6c 5f 70 72 6f  6d 70 74 0a 0a 20 20 20  |util_prompt..   |
00002120  20 50 72 6f 6d 70 74 20  66 6f 72 20 61 20 59 20  | Prompt for a Y |
00002130  6f 72 20 4e 20 61 6e 73  77 65 72 20 61 6e 64 20  |or N answer and |
00002140  72 65 74 75 72 6e 20 74  68 65 20 72 65 73 75 6c  |return the resul|
00002150  74 2e 0a 0a 0a 56 44 55  2e 48 0a 0a 76 64 75 5f  |t....VDU.H..vdu_|
00002160  6f 75 74 70 75 74 5f 66  69 6c 74 65 72 0a 0a 20  |output_filter.. |
00002170  20 20 20 41 6e 20 6f 75  74 70 75 74 20 73 74 72  |   An output str|
00002180  65 61 6d 20 70 72 65 66  69 6c 74 65 72 2e 20 54  |eam prefilter. T|
00002190  68 69 73 20 65 6d 75 6c  61 74 65 73 20 52 49 53  |his emulates RIS|
000021a0  43 20 4f 53 20 74 72 65  61 74 6d 65 6e 74 20 6f  |C OS treatment o|
000021b0  66 20 61 20 63 6f 6d 6d  6f 6e 0a 20 20 20 20 73  |f a common.    s|
000021c0  75 62 73 65 74 20 6f 66  20 63 6f 6e 74 72 6f 6c  |ubset of control|
000021d0  20 63 6f 64 65 73 2e 0a  0a 0a 57 49 4d 50 2e 48  | codes....WIMP.H|
000021e0  0a 0a 77 69 6d 70 5f 66  69 6e 64 0a 0a 20 20 20  |..wimp_find..   |
000021f0  20 53 65 6e 64 20 61 20  6d 65 73 73 61 67 65 20  | Send a message |
00002200  74 6f 20 6f 62 74 61 69  6e 20 74 68 65 20 63 75  |to obtain the cu|
00002210  72 72 65 6e 74 20 63 6c  69 65 6e 74 20 68 61 6e  |rrent client han|
00002220  64 6c 65 20 6f 66 20 74  68 65 20 22 21 41 52 4d  |dle of the "!ARM|
00002230  45 64 69 74 22 0a 20 20  20 20 66 72 6f 6e 74 2d  |Edit".    front-|
00002240  65 6e 64 20 61 70 70 6c  69 63 61 74 69 6f 6e 20  |end application |
00002250  69 66 20 69 74 20 69 73  20 72 75 6e 6e 69 6e 67  |if it is running|
00002260  2e 0a 20 20 20 20 0a 0a  77 69 6d 70 5f 66 69 6e  |..    ..wimp_fin|
00002270  64 5f 72 65 63 65 69 76  65 0a 0a 20 20 20 20 41  |d_receive..    A|
00002280  74 74 65 6d 70 74 20 74  6f 20 72 65 63 65 69 76  |ttempt to receiv|
00002290  65 20 74 68 65 20 72 65  70 6c 79 20 74 6f 20 61  |e the reply to a|
000022a0  20 77 69 6d 70 5f 66 69  6e 64 20 6d 65 73 73 61  | wimp_find messa|
000022b0  67 65 2e 0a 20 20 20 20  0a 0a 77 69 6d 70 5f 73  |ge..    ..wimp_s|
000022c0  74 61 72 74 0a 0a 20 20  20 20 53 65 6e 64 20 74  |tart..    Send t|
000022d0  68 65 20 6d 65 73 73 61  67 65 20 74 6f 20 73 74  |he message to st|
000022e0  61 72 74 20 61 6e 20 65  78 74 65 72 6e 61 6c 20  |art an external |
000022f0  65 64 69 74 2e 0a 0a 0a  77 69 6d 70 5f 73 74 61  |edit....wimp_sta|
00002300  72 74 5f 72 65 63 65 69  76 65 0a 0a 20 20 20 20  |rt_receive..    |
00002310  41 74 74 65 6d 70 74 20  74 6f 20 72 65 63 65 69  |Attempt to recei|
00002320  76 65 20 74 68 65 20 72  65 70 6c 79 20 74 6f 20  |ve the reply to |
00002330  61 20 77 69 6d 70 5f 73  74 61 72 74 20 6d 65 73  |a wimp_start mes|
00002340  73 61 67 65 2e 0a 0a 0a  77 69 6d 70 5f 70 6f 6c  |sage....wimp_pol|
00002350  6c 0a 0a 20 20 20 20 53  65 6e 64 20 74 68 65 20  |l..    Send the |
00002360  6d 65 73 73 61 67 65 20  74 6f 20 70 6f 6c 6c 20  |message to poll |
00002370  74 68 65 20 73 74 61 74  75 73 20 6f 66 20 61 6e  |the status of an|
00002380  20 65 78 74 65 72 6e 61  6c 20 65 64 69 74 2e 0a  | external edit..|
00002390  0a 0a 77 69 6d 70 5f 70  6f 6c 6c 5f 72 65 63 65  |..wimp_poll_rece|
000023a0  69 76 65 0a 0a 20 20 20  20 41 74 74 65 6d 70 74  |ive..    Attempt|
000023b0  20 74 6f 20 72 65 63 65  69 76 65 20 74 68 65 20  | to receive the |
000023c0  72 65 70 6c 79 20 74 6f  20 61 20 77 69 6d 70 5f  |reply to a wimp_|
000023d0  70 6f 6c 6c 20 6d 65 73  73 61 67 65 2e 0a 0a 0a  |poll message....|
000023e0  77 69 6d 70 5f 73 61 76  65 61 73 0a 0a 20 20 20  |wimp_saveas..   |
000023f0  20 53 65 6e 64 20 74 68  65 20 6d 65 73 73 61 67  | Send the messag|
00002400  65 20 74 6f 20 73 61 76  65 20 61 20 66 69 6c 65  |e to save a file|
00002410  2e 0a 0a 0a 77 69 6d 70  5f 73 61 76 65 61 73 5f  |....wimp_saveas_|
00002420  72 65 63 65 69 76 65 0a  0a 20 20 20 20 41 74 74  |receive..    Att|
00002430  65 6d 70 74 20 74 6f 20  72 65 63 65 69 76 65 20  |empt to receive |
00002440  74 68 65 20 72 65 70 6c  79 20 74 6f 20 61 20 77  |the reply to a w|
00002450  69 6d 70 5f 73 61 76 65  61 73 20 6d 65 73 73 61  |imp_saveas messa|
00002460  67 65 2e 0a 0a 0a 77 69  6d 70 5f 6f 73 63 6c 69  |ge....wimp_oscli|
00002470  5f 73 74 61 72 74 0a 0a  20 20 20 20 53 74 61 72  |_start..    Star|
00002480  74 20 65 78 65 63 75 74  69 6e 67 20 61 20 73 70  |t executing a sp|
00002490  65 63 69 66 69 65 64 20  2a 63 6f 6d 6d 61 6e 64  |ecified *command|
000024a0  20 69 6e 20 61 20 54 61  73 6b 57 69 6e 64 6f 77  | in a TaskWindow|
000024b0  2e 0a 0a 0a 77 69 6d 70  5f 6f 73 63 6c 69 5f 73  |....wimp_oscli_s|
000024c0  74 61 72 74 5f 72 65 63  65 69 76 65 0a 0a 20 20  |tart_receive..  |
000024d0  20 20 41 74 74 65 6d 70  74 20 74 6f 20 72 65 63  |  Attempt to rec|
000024e0  65 69 76 65 20 74 68 65  20 72 65 70 6c 79 20 74  |eive the reply t|
000024f0  6f 20 61 20 77 69 6d 70  5f 6f 73 63 6c 69 5f 73  |o a wimp_oscli_s|
00002500  74 61 72 74 20 6d 65 73  73 61 67 65 2e 0a 0a 0a  |tart message....|
00002510  77 69 6d 70 5f 6f 73 63  6c 69 5f 70 6f 6c 6c 0a  |wimp_oscli_poll.|
00002520  0a 20 20 20 20 43 6f 6e  74 69 6e 75 65 20 65 78  |.    Continue ex|
00002530  65 63 75 74 69 6f 6e 20  6f 66 20 61 20 2a 63 6f  |ecution of a *co|
00002540  6d 6d 61 6e 64 20 69 6e  20 61 20 54 61 73 6b 57  |mmand in a TaskW|
00002550  69 6e 64 6f 77 2e 0a 0a  0a 77 69 6d 70 5f 6f 73  |indow....wimp_os|
00002560  63 6c 69 5f 70 6f 6c 6c  5f 72 65 63 65 69 76 65  |cli_poll_receive|
00002570  0a 0a 20 20 20 20 41 74  74 65 6d 70 74 20 74 6f  |..    Attempt to|
00002580  20 72 65 63 65 69 76 65  20 74 68 65 20 72 65 70  | receive the rep|
00002590  6c 79 20 74 6f 20 61 20  77 69 6d 70 5f 6f 73 63  |ly to a wimp_osc|
000025a0  6c 69 5f 70 6f 6c 6c 20  6d 65 73 73 61 67 65 2e  |li_poll message.|
000025b0  0a 0a 0a 77 69 6d 70 5f  6f 73 63 6c 69 5f 65 6e  |...wimp_oscli_en|
000025c0  64 0a 0a 20 20 20 20 54  65 72 6d 69 6e 61 74 65  |d..    Terminate|
000025d0  20 65 78 65 63 75 74 69  6f 6e 20 6f 66 20 61 20  | execution of a |
000025e0  2a 63 6f 6d 6d 61 6e 64  20 69 6e 20 61 20 54 61  |*command in a Ta|
000025f0  73 6b 57 69 6e 64 6f 77  2e 0a 0a 0a 77 69 6d 70  |skWindow....wimp|
00002600  5f 6f 73 63 6c 69 5f 65  6e 64 5f 72 65 63 65 69  |_oscli_end_recei|
00002610  76 65 0a 0a 20 20 20 20  41 74 74 65 6d 70 74 20  |ve..    Attempt |
00002620  74 6f 20 72 65 63 65 69  76 65 20 74 68 65 20 72  |to receive the r|
00002630  65 70 6c 79 20 74 6f 20  61 20 77 69 6d 70 5f 6f  |eply to a wimp_o|
00002640  73 63 6c 69 5f 65 6e 64  20 6d 65 73 73 61 67 65  |scli_end message|
00002650  2e 0a 0a 0a 4d 45 53 53  41 47 45 20 50 41 53 53  |....MESSAGE PASS|
00002660  49 4e 47 0a 0a 54 68 65  20 41 52 4d 45 64 69 74  |ING..The ARMEdit|
00002670  20 6d 6f 64 75 6c 65 20  70 72 6f 76 69 64 65 73  | module provides|
00002680  20 61 20 67 65 6e 65 72  61 6c 20 6d 65 74 68 6f  | a general metho|
00002690  64 20 66 6f 72 20 50 43  20 73 6f 66 74 77 61 72  |d for PC softwar|
000026a0  65 20 74 6f 20 63 6f 6d  6d 75 6e 69 63 61 74 65  |e to communicate|
000026b0  0a 77 69 74 68 20 52 49  53 43 20 4f 53 20 61 70  |.with RISC OS ap|
000026c0  70 6c 69 63 61 74 69 6f  6e 73 20 6f 72 20 6d 6f  |plications or mo|
000026d0  64 75 6c 65 73 2e 20 54  68 65 20 73 79 73 74 65  |dules. The syste|
000026e0  6d 20 69 73 20 69 6e 74  65 6e 74 69 6f 6e 61 6c  |m is intentional|
000026f0  6c 79 20 6c 65 66 74 0a  73 69 6d 70 6c 65 3b 20  |ly left.simple; |
00002700  6d 61 6e 79 20 61 73 70  65 63 74 73 20 61 72 65  |many aspects are|
00002710  20 6c 65 66 74 20 74 6f  20 75 73 65 72 73 20 6f  | left to users o|
00002720  66 20 74 68 65 20 70 72  6f 74 6f 63 6f 6c 20 74  |f the protocol t|
00002730  6f 20 69 6d 70 6c 65 6d  65 6e 74 20 61 73 0a 72  |o implement as.r|
00002740  65 71 75 69 72 65 64 2c  20 65 2e 67 2e 20 64 65  |equired, e.g. de|
00002750  74 65 63 74 69 6f 6e 20  61 6e 64 20 68 61 6e 64  |tection and hand|
00002760  6c 69 6e 67 20 6f 66 20  70 72 6f 62 6c 65 6d 73  |ling of problems|
00002770  2c 20 61 6e 64 20 74 68  65 20 66 6f 72 6d 61 74  |, and the format|
00002780  20 61 6e 64 20 75 73 65  61 67 65 0a 6f 66 20 64  | and useage.of d|
00002790  69 66 66 65 72 65 6e 74  20 6d 65 73 73 61 67 65  |ifferent message|
000027a0  73 2e 0a 0a 54 68 65 20  73 79 73 74 65 6d 20 61  |s...The system a|
000027b0  6c 6c 6f 77 73 20 6d 75  6c 74 69 70 6c 65 20 73  |llows multiple s|
000027c0  69 6d 75 6c 74 61 6e 65  6f 75 73 20 63 6c 69 65  |imultaneous clie|
000027d0  6e 74 73 2c 20 62 6f 74  68 20 75 6e 64 65 72 20  |nts, both under |
000027e0  52 49 53 43 20 4f 53 20  61 6e 64 20 6f 6e 0a 74  |RISC OS and on.t|
000027f0  68 65 20 50 43 2e 20 54  68 69 73 20 6d 61 6b 65  |he PC. This make|
00002800  73 20 69 74 20 73 75 69  74 61 62 6c 65 20 66 6f  |s it suitable fo|
00002810  72 20 75 73 65 20 69 6e  20 6d 75 6c 74 69 2d 74  |r use in multi-t|
00002820  61 73 6b 69 6e 67 20 28  6f 72 20 74 61 73 6b 0a  |asking (or task.|
00002830  73 77 69 74 63 68 69 6e  67 29 20 65 6e 76 69 72  |switching) envir|
00002840  6f 6e 6d 65 6e 74 73 20  73 75 63 68 20 61 73 20  |onments such as |
00002850  57 69 6e 64 6f 77 73 2e  20 45 61 63 68 20 63 6c  |Windows. Each cl|
00002860  69 65 6e 74 20 68 61 73  20 61 20 34 20 62 79 74  |ient has a 4 byt|
00002870  65 20 49 44 20 77 68 69  63 68 20 69 73 0a 70 72  |e ID which is.pr|
00002880  65 61 6c 6c 6f 63 61 74  65 64 20 28 62 79 20 6d  |eallocated (by m|
00002890  65 2c 20 6f 6e 20 72 65  71 75 65 73 74 29 20 61  |e, on request) a|
000028a0  6e 64 20 61 20 34 20 62  79 74 65 20 64 79 6e 61  |nd a 4 byte dyna|
000028b0  6d 69 63 61 6c 6c 79 20  61 6c 6c 6f 63 61 74 65  |mically allocate|
000028c0  64 20 28 62 79 20 74 68  65 0a 41 52 4d 45 64 69  |d (by the.ARMEdi|
000028d0  74 20 6d 6f 64 75 6c 65  29 20 68 61 6e 64 6c 65  |t module) handle|
000028e0  2e 20 54 68 65 72 65 20  61 72 65 20 74 77 6f 20  |. There are two |
000028f0  73 70 65 63 69 61 6c 20  49 44 73 3a 20 49 44 20  |special IDs: ID |
00002900  30 20 69 73 20 61 6c 77  61 79 73 20 75 73 65 64  |0 is always used|
00002910  20 62 79 20 50 43 0a 73  6f 66 74 77 61 72 65 2c  | by PC.software,|
00002920  20 61 6e 64 20 49 44 20  31 20 69 73 20 75 73 65  | and ID 1 is use|
00002930  64 20 74 6f 20 62 72 6f  61 64 63 61 73 74 20 6d  |d to broadcast m|
00002940  65 73 73 61 67 65 73 20  74 6f 20 61 6c 6c 20 63  |essages to all c|
00002950  6c 69 65 6e 74 73 20 28  74 68 69 73 20 69 73 0a  |lients (this is.|
00002960  65 78 70 6c 61 69 6e 65  64 20 69 6e 20 6d 6f 72  |explained in mor|
00002970  65 20 64 65 74 61 69 6c  20 62 65 6c 6f 77 29 2e  |e detail below).|
00002980  20 4f 74 68 65 72 20 49  44 73 20 61 72 65 20 61  | Other IDs are a|
00002990  6c 6c 6f 63 61 74 65 64  20 74 6f 20 64 69 66 66  |llocated to diff|
000029a0  65 72 65 6e 74 0a 73 65  72 76 69 63 65 73 20 62  |erent.services b|
000029b0  65 69 6e 67 20 70 72 6f  76 69 64 65 64 2e 20 49  |eing provided. I|
000029c0  66 20 61 20 70 72 6f 67  72 61 6d 20 70 72 6f 76  |f a program prov|
000029d0  69 64 65 73 20 61 20 6e  75 6d 62 65 72 20 6f 66  |ides a number of|
000029e0  20 64 69 73 74 69 6e 63  74 20 73 65 72 76 69 63  | distinct servic|
000029f0  65 73 2c 0a 6f 72 20 69  66 20 72 65 71 75 69 72  |es,.or if requir|
00002a00  65 64 20 66 6f 72 20 73  6f 6d 65 20 6f 74 68 65  |ed for some othe|
00002a10  72 20 72 65 61 73 6f 6e  2c 20 69 74 20 6d 61 79  |r reason, it may|
00002a20  20 68 61 76 65 20 6d 6f  72 65 20 74 68 61 6e 20  | have more than |
00002a30  6f 6e 65 20 49 44 2e 20  54 68 65 20 72 61 6e 67  |one ID. The rang|
00002a40  65 0a 6f 66 20 49 44 73  20 32 20 74 6f 20 32 35  |e.of IDs 2 to 25|
00002a50  35 20 6d 61 79 20 62 65  20 66 72 65 65 6c 79 20  |5 may be freely |
00002a60  75 73 65 64 20 66 6f 72  20 64 65 76 65 6c 6f 70  |used for develop|
00002a70  6d 65 6e 74 20 70 75 72  70 6f 73 65 73 2c 20 62  |ment purposes, b|
00002a80  75 74 20 6d 75 73 74 20  6e 6f 74 20 62 65 0a 75  |ut must not be.u|
00002a90  73 65 64 20 62 79 20 64  69 73 74 72 69 62 75 74  |sed by distribut|
00002aa0  65 64 20 73 6f 66 74 77  61 72 65 2e 0a 0a 57 68  |ed software...Wh|
00002ab0  65 6e 20 6d 65 73 73 61  67 65 73 20 61 72 65 20  |en messages are |
00002ac0  73 65 6e 74 20 74 6f 20  49 44 20 31 20 74 68 65  |sent to ID 1 the|
00002ad0  79 20 61 72 65 20 70 61  73 73 65 64 20 74 6f 20  |y are passed to |
00002ae0  61 6c 6c 20 63 6c 69 65  6e 74 73 20 77 68 69 63  |all clients whic|
00002af0  68 20 61 63 63 65 70 74  0a 6d 65 73 73 61 67 65  |h accept.message|
00002b00  73 20 66 72 6f 6d 20 74  68 65 20 41 52 4d 45 64  |s from the ARMEd|
00002b10  69 74 20 6d 6f 64 75 6c  65 20 28 61 73 20 73 70  |it module (as sp|
00002b20  65 63 69 66 69 65 64 20  77 68 65 6e 20 74 68 65  |ecified when the|
00002b30  20 63 6c 69 65 6e 74 73  20 72 65 67 69 73 74 65  | clients registe|
00002b40  72 29 2e 0a 54 68 69 73  20 69 73 20 6e 6f 72 6d  |r)..This is norm|
00002b50  61 6c 6c 79 20 6f 6e 6c  79 20 75 73 65 64 20 66  |ally only used f|
00002b60  6f 72 20 61 20 66 65 77  20 73 70 65 63 69 66 69  |or a few specifi|
00002b70  63 20 6d 65 73 73 61 67  65 73 20 28 64 65 73 63  |c messages (desc|
00002b80  72 69 62 65 64 20 69 6e  20 74 68 65 0a 6e 65 78  |ribed in the.nex|
00002b90  74 20 73 65 63 74 69 6f  6e 29 20 77 68 69 63 68  |t section) which|
00002ba0  20 61 72 65 20 75 73 65  66 75 6c 20 74 6f 20 6d  | are useful to m|
00002bb0  61 6e 79 20 63 6c 69 65  6e 74 73 2e 20 4f 74 68  |any clients. Oth|
00002bc0  65 72 20 63 6c 69 65 6e  74 73 20 73 68 6f 75 6c  |er clients shoul|
00002bd0  64 20 6e 6f 74 20 75 73  65 0a 74 68 69 73 20 66  |d not use.this f|
00002be0  61 63 69 6c 69 74 79 20  65 78 63 65 70 74 20 75  |acility except u|
00002bf0  6e 64 65 72 20 73 70 65  63 69 61 6c 20 63 69 72  |nder special cir|
00002c00  63 75 6d 73 74 61 6e 63  65 73 2e 0a 0a 49 74 20  |cumstances...It |
00002c10  69 73 20 69 6e 74 65 6e  64 65 64 20 74 68 61 74  |is intended that|
00002c20  20 65 61 63 68 20 63 6c  69 65 6e 74 20 70 72 6f  | each client pro|
00002c30  76 69 64 65 73 20 61 20  6e 75 6d 62 65 72 20 6f  |vides a number o|
00002c40  66 20 72 65 6c 61 74 65  64 20 73 65 72 76 69 63  |f related servic|
00002c50  65 73 20 66 6f 72 20 61  0a 70 61 72 74 69 63 75  |es for a.particu|
00002c60  6c 61 72 20 49 44 2c 20  62 75 74 20 69 74 20 69  |lar ID, but it i|
00002c70  73 20 75 70 20 74 6f 20  74 68 65 20 61 75 74 68  |s up to the auth|
00002c80  6f 72 73 20 6f 66 20 63  6c 69 65 6e 74 73 20 74  |ors of clients t|
00002c90  6f 20 64 65 63 69 64 65  20 68 6f 77 20 74 68 65  |o decide how the|
00002ca0  0a 6d 65 73 73 61 67 65  20 63 6f 6e 74 65 6e 74  |.message content|
00002cb0  73 20 73 68 6f 75 6c 64  20 62 65 20 75 73 65 64  |s should be used|
00002cc0  2e 20 48 6f 77 65 76 65  72 2c 20 69 74 20 69 73  |. However, it is|
00002cd0  20 72 65 63 6f 6d 6d 65  6e 64 65 64 20 74 68 61  | recommended tha|
00002ce0  74 20 61 20 73 65 72 76  69 63 65 0a 73 65 6c 65  |t a service.sele|
00002cf0  63 74 6f 72 20 66 69 65  6c 64 20 69 73 20 70 6c  |ctor field is pl|
00002d00  61 63 65 64 20 61 74 20  74 68 65 20 73 74 61 72  |aced at the star|
00002d10  74 20 6f 66 20 61 6c 6c  20 6d 65 73 73 61 67 65  |t of all message|
00002d20  73 2e 0a 0a 45 61 63 68  20 63 6c 69 65 6e 74 20  |s...Each client |
00002d30  68 61 73 20 61 20 6d 65  73 73 61 67 65 20 62 75  |has a message bu|
00002d40  66 66 65 72 20 28 61 6c  6c 6f 63 61 74 65 64 20  |ffer (allocated |
00002d50  62 79 20 74 68 65 20 41  52 4d 45 64 69 74 20 6d  |by the ARMEdit m|
00002d60  6f 64 75 6c 65 29 20 75  73 65 64 20 74 6f 0a 74  |odule) used to.t|
00002d70  72 61 6e 73 6d 69 74 20  6d 65 73 73 61 67 65 73  |ransmit messages|
00002d80  2e 20 54 68 69 73 20 62  75 66 66 65 72 20 69 73  |. This buffer is|
00002d90  20 6f 66 20 61 20 66 69  78 65 64 20 73 69 7a 65  | of a fixed size|
00002da0  20 28 31 6b 42 29 20 61  6e 64 20 63 61 6e 20 6f  | (1kB) and can o|
00002db0  6e 6c 79 20 63 6f 6e 74  61 69 6e 0a 61 20 73 69  |nly contain.a si|
00002dc0  6e 67 6c 65 20 6d 65 73  73 61 67 65 2e 20 41 74  |ngle message. At|
00002dd0  74 65 6d 70 74 69 6e 67  20 74 6f 20 73 65 6e 64  |tempting to send|
00002de0  20 61 20 6d 65 73 73 61  67 65 20 77 69 74 68 20  | a message with |
00002df0  6f 6e 65 20 61 6c 72 65  61 64 79 20 69 6e 20 74  |one already in t|
00002e00  68 65 20 62 75 66 66 65  72 0a 6f 76 65 72 77 72  |he buffer.overwr|
00002e10  69 74 65 73 20 74 68 65  20 65 61 72 6c 69 65 72  |ites the earlier|
00002e20  20 6d 65 73 73 61 67 65  2c 20 72 65 67 61 72 64  | message, regard|
00002e30  6c 65 73 73 20 6f 66 20  68 6f 77 20 6d 61 6e 79  |less of how many|
00002e40  20 63 6c 69 65 6e 74 73  20 69 74 20 68 61 73 20  | clients it has |
00002e50  62 65 65 6e 0a 64 65 6c  69 76 65 72 65 64 20 74  |been.delivered t|
00002e60  6f 2e 0a 0a 54 6f 20 65  6e 61 62 6c 65 20 65 61  |o...To enable ea|
00002e70  73 79 20 69 6d 70 6c 65  6d 65 6e 74 61 74 69 6f  |sy implementatio|
00002e80  6e 20 6f 66 20 73 65 72  76 65 72 73 20 73 75 70  |n of servers sup|
00002e90  70 6f 72 74 69 6e 67 20  6d 75 6c 74 69 70 6c 65  |porting multiple|
00002ea0  20 63 6c 69 65 6e 74 73  2c 20 69 74 20 69 73 0a  | clients, it is.|
00002eb0  70 6f 73 73 69 62 6c 65  20 74 6f 20 70 6c 61 63  |possible to plac|
00002ec0  65 20 74 68 65 20 6d 65  73 73 61 67 65 20 69 6e  |e the message in|
00002ed0  20 74 68 65 20 64 65 73  74 69 6e 61 74 69 6f 6e  | the destination|
00002ee0  20 63 6c 69 65 6e 74 27  73 20 62 75 66 66 65 72  | client's buffer|
00002ef0  2e 20 54 68 69 73 20 73  68 6f 75 6c 64 0a 6e 6f  |. This should.no|
00002f00  72 6d 61 6c 6c 79 20 6f  6e 6c 79 20 62 65 20 75  |rmally only be u|
00002f10  73 65 64 20 62 79 20 74  68 65 20 73 65 72 76 65  |sed by the serve|
00002f20  72 20 74 6f 20 72 65 70  6c 79 20 74 6f 20 61 20  |r to reply to a |
00002f30  6d 65 73 73 61 67 65 2c  20 6f 74 68 65 72 77 69  |message, otherwi|
00002f40  73 65 20 61 0a 6d 65 73  73 61 67 65 20 63 6f 75  |se a.message cou|
00002f50  6c 64 20 62 65 20 6f 76  65 72 77 72 69 74 74 65  |ld be overwritte|
00002f60  6e 2e 0a 0a 4c 61 72 67  65 20 62 6c 6f 63 6b 73  |n...Large blocks|
00002f70  20 6f 66 20 64 61 74 61  20 73 68 6f 75 6c 64 20  | of data should |
00002f80  62 65 20 74 72 61 6e 73  66 65 72 72 65 64 20 76  |be transferred v|
00002f90  69 61 20 66 69 6c 65 73  2e 20 54 68 69 73 20 72  |ia files. This r|
00002fa0  65 64 75 63 65 73 20 74  68 65 0a 72 65 71 75 69  |educes the.requi|
00002fb0  72 65 64 20 6d 65 6d 6f  72 79 20 75 73 61 67 65  |red memory usage|
00002fc0  20 61 6e 64 20 73 68 6f  75 6c 64 20 73 70 65 65  | and should spee|
00002fd0  64 20 75 70 20 6f 70 65  72 61 74 69 6f 6e 73 3b  |d up operations;|
00002fe0  20 74 6f 20 73 65 6e 64  20 61 20 6d 65 73 73 61  | to send a messa|
00002ff0  67 65 20 66 72 6f 6d 0a  74 68 65 20 50 43 20 74  |ge from.the PC t|
00003000  6f 20 61 20 57 49 4d 50  20 74 61 73 6b 20 72 65  |o a WIMP task re|
00003010  71 75 69 72 65 73 20 74  68 65 20 50 43 20 66 72  |quires the PC fr|
00003020  6f 6e 74 2d 65 6e 64 20  74 6f 20 62 65 20 70 61  |ont-end to be pa|
00003030  67 65 64 20 69 6e 20 61  6e 64 20 74 68 65 6e 20  |ged in and then |
00003040  74 68 65 0a 57 49 4d 50  20 74 61 73 6b 20 74 6f  |the.WIMP task to|
00003050  20 62 65 20 73 75 62 73  65 71 75 65 6e 74 6c 79  | be subsequently|
00003060  20 70 61 67 65 64 20 69  6e 2e 20 48 6f 77 65 76  | paged in. Howev|
00003070  65 72 2c 20 74 72 61 6e  73 66 65 72 72 69 6e 67  |er, transferring|
00003080  20 64 61 74 61 20 74 6f  20 6f 72 20 66 72 6f 6d  | data to or from|
00003090  0a 61 20 66 69 6c 65 20  63 61 6e 20 61 6c 6c 20  |.a file can all |
000030a0  62 65 20 64 6f 6e 65 20  77 68 69 6c 65 20 74 68  |be done while th|
000030b0  65 20 50 43 20 66 72 6f  6e 74 2d 65 6e 64 20 69  |e PC front-end i|
000030c0  73 20 70 61 67 65 64 20  69 6e 2e 0a 0a 57 68 65  |s paged in...Whe|
000030d0  6e 20 61 20 6d 65 73 73  61 67 65 20 69 73 20 73  |n a message is s|
000030e0  65 6e 74 20 69 74 20 69  73 20 6e 65 63 65 73 73  |ent it is necess|
000030f0  61 72 79 20 74 6f 20 64  65 74 65 63 74 20 61 6e  |ary to detect an|
00003100  64 20 68 61 6e 64 6c 65  20 6e 6f 6e 2d 64 65 6c  |d handle non-del|
00003110  69 76 65 72 79 2e 0a 55  6e 66 6f 72 74 75 6e 61  |ivery..Unfortuna|
00003120  74 65 6c 79 20 69 74 20  69 73 20 6e 6f 74 20 65  |tely it is not e|
00003130  61 73 79 20 74 6f 20 64  65 74 65 63 74 20 70 72  |asy to detect pr|
00003140  6f 62 6c 65 6d 73 20 73  69 6e 63 65 20 74 68 65  |oblems since the|
00003150  20 73 65 6e 64 65 72 20  61 6e 64 20 72 65 63 65  | sender and rece|
00003160  69 76 65 72 0a 63 61 6e  6e 6f 74 20 28 67 65 6e  |iver.cannot (gen|
00003170  65 72 61 6c 6c 79 29 20  62 65 20 61 63 74 69 76  |erally) be activ|
00003180  65 20 61 74 20 74 68 65  20 73 61 6d 65 20 74 69  |e at the same ti|
00003190  6d 65 2c 20 61 6e 64 20  69 74 20 69 73 20 6e 65  |me, and it is ne|
000031a0  63 65 73 73 61 72 79 20  66 6f 72 20 74 68 65 20  |cessary for the |
000031b0  50 43 0a 66 72 6f 6e 74  2d 65 6e 64 20 74 6f 20  |PC.front-end to |
000031c0  62 65 20 6d 75 6c 74 69  2d 74 61 73 6b 69 6e 67  |be multi-tasking|
000031d0  20 69 6e 20 61 20 77 69  6e 64 6f 77 20 66 6f 72  | in a window for|
000031e0  20 63 6f 6d 6d 75 6e 69  63 61 74 69 6f 6e 20 74  | communication t|
000031f0  6f 20 62 65 20 70 6f 73  73 69 62 6c 65 0a 62 65  |o be possible.be|
00003200  74 77 65 65 6e 20 50 43  20 61 6e 64 20 52 49 53  |tween PC and RIS|
00003210  43 20 4f 53 20 74 61 73  6b 73 2e 0a 0a 54 68 65  |C OS tasks...The|
00003220  20 73 75 67 67 65 73 74  65 64 20 61 70 70 72 6f  | suggested appro|
00003230  61 63 68 20 69 73 20 74  68 61 74 20 61 66 74 65  |ach is that afte|
00003240  72 20 74 68 65 20 6d 65  73 73 61 67 65 20 69 73  |r the message is|
00003250  20 73 65 6e 74 2c 20 74  68 65 20 70 72 6f 67 72  | sent, the progr|
00003260  61 6d 20 77 61 69 74 73  0a 66 6f 72 20 61 20 73  |am waits.for a s|
00003270  68 6f 72 74 20 74 69 6d  65 20 66 6f 72 20 61 20  |hort time for a |
00003280  72 65 70 6c 79 2e 20 49  66 20 6e 6f 20 72 65 70  |reply. If no rep|
00003290  6c 79 20 69 73 20 72 65  63 65 69 76 65 64 20 74  |ly is received t|
000032a0  68 65 6e 20 61 20 6d 65  73 73 61 67 65 20 69 73  |hen a message is|
000032b0  0a 64 69 73 70 6c 61 79  65 64 20 74 6f 20 74 68  |.displayed to th|
000032c0  65 20 75 73 65 72 20 70  72 6f 6d 70 74 69 6e 67  |e user prompting|
000032d0  20 66 6f 72 20 74 68 65  20 50 43 20 74 6f 20 62  | for the PC to b|
000032e0  65 20 70 6c 61 63 65 64  20 69 6e 20 6d 75 6c 74  |e placed in mult|
000032f0  69 2d 74 61 73 6b 69 6e  67 20 6d 6f 64 65 0a 61  |i-tasking mode.a|
00003300  6e 64 20 74 68 65 20 72  65 6c 65 76 61 6e 74 20  |nd the relevant |
00003310  61 70 70 6c 69 63 61 74  69 6f 6e 20 74 6f 20 62  |application to b|
00003320  65 20 73 74 61 72 74 65  64 2e 20 54 68 65 20 70  |e started. The p|
00003330  72 6f 67 72 61 6d 20 73  68 6f 75 6c 64 20 63 6f  |rogram should co|
00003340  6e 74 69 6e 75 65 20 74  6f 0a 70 6f 6c 6c 20 66  |ntinue to.poll f|
00003350  6f 72 20 61 20 72 65 70  6c 79 20 75 6e 74 69 6c  |or a reply until|
00003360  20 65 69 74 68 65 72 20  73 75 63 63 65 73 73 66  | either successf|
00003370  75 6c 20 6f 72 20 61 62  6f 72 74 65 64 20 62 79  |ul or aborted by|
00003380  20 74 68 65 20 75 73 65  72 2e 0a 0a 54 68 69 73  | the user...This|
00003390  20 63 61 6e 20 62 65 20  73 69 6d 70 6c 69 66 69  | can be simplifi|
000033a0  65 64 20 69 6e 20 6d 61  6e 79 20 73 69 74 75 61  |ed in many situa|
000033b0  74 69 6f 6e 73 20 74 6f  20 73 69 6d 70 6c 79 20  |tions to simply |
000033c0  77 61 69 74 69 6e 67 20  66 6f 72 20 61 20 72 65  |waiting for a re|
000033d0  70 6c 79 20 6f 72 0a 66  6f 72 20 74 68 65 20 75  |ply or.for the u|
000033e0  73 65 72 20 74 6f 20 61  62 6f 72 74 20 74 68 65  |ser to abort the|
000033f0  20 6f 70 65 72 61 74 69  6f 6e 2c 20 65 73 70 65  | operation, espe|
00003400  63 69 61 6c 6c 79 20 61  66 74 65 72 20 6f 6e 65  |cially after one|
00003410  20 73 75 63 63 65 73 73  66 75 6c 0a 63 6f 6d 6d  | successful.comm|
00003420  75 6e 69 63 61 74 69 6f  6e 20 68 61 73 20 6f 63  |unication has oc|
00003430  63 75 72 72 65 64 2e 0a  0a 49 66 20 74 68 65 20  |curred...If the |
00003440  50 43 20 66 72 6f 6e 74  2d 65 6e 64 20 69 73 20  |PC front-end is |
00003450  65 69 74 68 65 72 20 72  65 73 65 74 20 6f 72 20  |either reset or |
00003460  71 75 69 74 20 74 68 65  6e 20 61 6c 6c 20 72 65  |quit then all re|
00003470  67 69 73 74 65 72 65 64  20 50 43 20 63 6c 69 65  |gistered PC clie|
00003480  6e 74 73 0a 61 72 65 20  61 75 74 6f 6d 61 74 69  |nts.are automati|
00003490  63 61 6c 6c 79 20 64 65  72 65 67 69 73 74 65 72  |cally deregister|
000034a0  65 64 2c 20 61 6e 64 20  61 6e 79 20 70 65 6e 64  |ed, and any pend|
000034b0  69 6e 67 20 6d 65 73 73  61 67 65 73 20 74 6f 20  |ing messages to |
000034c0  6f 72 20 66 72 6f 6d 20  74 68 65 6d 20 61 72 65  |or from them are|
000034d0  0a 64 69 73 63 61 72 64  65 64 2e 0a 0a 0a 53 54  |.discarded....ST|
000034e0  41 4e 44 41 52 44 20 4d  45 53 53 41 47 45 53 0a  |ANDARD MESSAGES.|
000034f0  0a 54 68 65 20 66 6f 6c  6c 6f 77 69 6e 67 20 6d  |.The following m|
00003500  65 73 73 61 67 65 73 20  61 72 65 20 73 65 6e 74  |essages are sent|
00003510  20 62 79 20 74 68 65 20  41 52 4d 45 64 69 74 20  | by the ARMEdit |
00003520  6d 6f 64 75 6c 65 20 74  6f 20 63 6c 69 65 6e 74  |module to client|
00003530  73 20 77 68 69 63 68 0a  72 65 71 75 65 73 74 20  |s which.request |
00003540  74 68 65 6d 2e 20 41 6c  6c 20 6f 66 20 74 68 65  |them. All of the|
00003550  20 6d 65 73 73 61 67 65  73 20 61 72 65 20 73 65  | messages are se|
00003560  6e 74 20 66 72 6f 6d 20  63 6c 69 65 6e 74 20 49  |nt from client I|
00003570  44 20 31 2e 20 41 6e 79  20 75 6e 72 65 63 6f 67  |D 1. Any unrecog|
00003580  6e 69 73 65 64 0a 6d 65  73 73 61 67 65 73 20 73  |nised.messages s|
00003590  68 6f 75 6c 64 20 62 65  20 69 67 6e 6f 72 65 64  |hould be ignored|
000035a0  2e 0a 0a 20 20 20 20 52  65 73 65 74 0a 20 20 20  |...    Reset.   |
000035b0  20 0a 20 20 20 20 20 20  20 20 45 71 75 69 76 61  | .        Equiva|
000035c0  6c 65 6e 74 20 6f 66 20  70 6f 77 65 72 2d 6f 6e  |lent of power-on|
000035d0  20 72 65 73 65 74 2e 20  54 68 69 73 20 73 68 6f  | reset. This sho|
000035e0  75 6c 64 20 6e 6f 72 6d  61 6c 6c 79 20 62 65 20  |uld normally be |
000035f0  75 73 65 64 20 74 6f 20  72 65 73 65 74 0a 20 20  |used to reset.  |
00003600  20 20 20 20 20 20 61 6e  79 20 73 74 61 74 65 2e  |      any state.|
00003610  0a 20 20 20 20 0a 20 20  20 20 20 20 20 20 4f 66  |.    .        Of|
00003620  66 73 65 74 20 20 53 69  7a 65 20 20 20 20 44 65  |fset  Size    De|
00003630  73 63 72 69 70 74 69 6f  6e 0a 20 20 20 20 20 20  |scription.      |
00003640  20 20 0a 20 20 20 20 20  20 20 20 30 20 20 20 20  |  .        0    |
00003650  20 20 20 34 20 20 20 20  20 20 20 52 65 61 73 6f  |   4       Reaso|
00003660  6e 20 63 6f 64 65 20 3d  20 30 2e 0a 20 20 20 20  |n code = 0..    |
00003670  0a 20 20 20 20 0a 20 20  20 20 53 68 75 74 64 6f  |.    .    Shutdo|
00003680  77 6e 0a 20 20 20 20 0a  20 20 20 20 20 20 20 20  |wn.    .        |
00003690  54 68 65 20 50 43 20 66  72 6f 6e 74 2d 65 6e 64  |The PC front-end|
000036a0  20 69 73 20 62 65 69 6e  67 20 71 75 69 74 20 28  | is being quit (|
000036b0  6e 6f 72 6d 61 6c 20 6f  72 20 65 72 72 6f 72 20  |normal or error |
000036c0  65 78 69 74 29 2e 0a 20  20 20 20 20 20 20 20 0a  |exit)..        .|
000036d0  20 20 20 20 20 20 20 20  4f 66 66 73 65 74 20 20  |        Offset  |
000036e0  53 69 7a 65 20 20 20 20  44 65 73 63 72 69 70 74  |Size    Descript|
000036f0  69 6f 6e 0a 20 20 20 20  20 20 20 20 0a 20 20 20  |ion.        .   |
00003700  20 20 20 20 20 30 20 20  20 20 20 20 20 34 20 20  |     0       4  |
00003710  20 20 20 20 20 52 65 61  73 6f 6e 20 63 6f 64 65  |     Reason code|
00003720  20 3d 20 31 2e 0a 0a 0a  4c 45 47 41 4c 20 4d 41  | = 1....LEGAL MA|
00003730  54 54 45 52 53 0a 0a 54  68 65 20 22 41 52 4d 45  |TTERS..The "ARME|
00003740  64 69 74 22 20 68 65 61  64 65 72 20 66 69 6c 65  |dit" header file|
00003750  73 2c 20 6f 62 6a 65 63  74 20 66 69 6c 65 73 20  |s, object files |
00003760  61 6e 64 20 64 6f 63 75  6d 65 6e 74 61 74 69 6f  |and documentatio|
00003770  6e 20 61 72 65 20 73 75  70 70 6c 69 65 64 20 22  |n are supplied "|
00003780  61 73 0a 69 73 22 3b 20  6e 6f 20 77 61 72 72 61  |as.is"; no warra|
00003790  6e 74 79 2c 20 65 78 70  72 65 73 73 20 6f 72 20  |nty, express or |
000037a0  69 6d 70 6c 69 65 64 2c  20 6f 66 20 74 68 65 20  |implied, of the |
000037b0  6d 65 72 63 68 61 6e 74  61 62 69 6c 69 74 79 20  |merchantability |
000037c0  6f 66 20 74 68 69 73 20  73 6f 66 74 77 61 72 65  |of this software|
000037d0  0a 6f 72 20 69 74 73 20  66 69 74 6e 65 73 73 20  |.or its fitness |
000037e0  66 6f 72 20 61 6e 79 20  70 61 72 74 69 63 75 6c  |for any particul|
000037f0  61 72 20 70 75 72 70 6f  73 65 20 69 73 20 67 69  |ar purpose is gi|
00003800  76 65 6e 2e 20 49 6e 20  6e 6f 20 63 69 72 63 75  |ven. In no circu|
00003810  6d 73 74 61 6e 63 65 73  20 73 68 61 6c 6c 0a 74  |mstances shall.t|
00003820  68 65 20 61 75 74 68 6f  72 2c 20 6f 72 20 61 6e  |he author, or an|
00003830  79 20 70 72 6f 76 69 64  65 72 20 6f 72 20 64 69  |y provider or di|
00003840  73 74 72 69 62 75 74 6f  72 20 6f 66 20 74 68 69  |stributor of thi|
00003850  73 20 73 6f 66 74 77 61  72 65 2c 20 62 65 20 6c  |s software, be l|
00003860  69 61 62 6c 65 20 66 6f  72 0a 61 6e 79 20 64 61  |iable for.any da|
00003870  6d 61 67 65 2c 20 6c 6f  73 73 20 6f 66 20 70 72  |mage, loss of pr|
00003880  6f 66 69 74 73 2c 20 6f  72 20 61 6e 79 20 69 6e  |ofits, or any in|
00003890  64 69 72 65 63 74 20 6f  72 20 63 6f 6e 73 65 71  |direct or conseq|
000038a0  75 65 6e 74 69 61 6c 20  6c 6f 73 73 20 61 72 69  |uential loss ari|
000038b0  73 69 6e 67 0a 6f 75 74  20 6f 66 20 74 68 65 20  |sing.out of the |
000038c0  75 73 65 20 6f 66 20 74  68 69 73 20 73 6f 66 74  |use of this soft|
000038d0  77 61 72 65 20 6f 72 20  69 6e 61 62 69 6c 69 74  |ware or inabilit|
000038e0  79 20 74 6f 20 75 73 65  20 74 68 69 73 20 73 6f  |y to use this so|
000038f0  66 74 77 61 72 65 2e 0a  0a 54 68 65 73 65 20 66  |ftware...These f|
00003900  69 6c 65 73 20 61 72 65  20 46 72 65 65 57 61 72  |iles are FreeWar|
00003910  65 2e 20 50 65 72 6d 69  73 73 69 6f 6e 20 69 73  |e. Permission is|
00003920  20 67 72 61 6e 74 65 64  20 66 6f 72 20 61 6e 79  | granted for any|
00003930  6f 6e 65 20 74 6f 20 75  73 65 20 74 68 65 6d 20  |one to use them |
00003940  66 6f 72 0a 74 68 65 20  73 6f 6c 65 20 70 75 72  |for.the sole pur|
00003950  70 6f 73 65 20 6f 66 20  64 65 76 65 6c 6f 70 69  |pose of developi|
00003960  6e 67 20 73 6f 66 74 77  61 72 65 20 66 6f 72 20  |ng software for |
00003970  75 73 65 20 77 69 74 68  20 74 68 65 20 41 52 4d  |use with the ARM|
00003980  45 64 69 74 20 73 75 69  74 65 2e 20 41 6e 79 0a  |Edit suite. Any.|
00003990  73 75 63 68 20 73 6f 66  74 77 61 72 65 20 6d 61  |such software ma|
000039a0  79 20 62 65 20 66 72 65  65 6c 79 20 64 69 73 74  |y be freely dist|
000039b0  72 69 62 75 74 65 64 2c  20 70 72 6f 76 69 64 69  |ributed, providi|
000039c0  6e 67 20 74 68 61 74 20  75 73 65 20 6f 66 20 74  |ng that use of t|
000039d0  68 65 20 73 75 70 70 6c  69 65 64 0a 66 69 6c 65  |he supplied.file|
000039e0  73 20 69 73 20 61 63 6b  6e 6f 77 6c 65 64 67 65  |s is acknowledge|
000039f0  64 20 69 6e 20 74 68 65  20 64 6f 63 75 6d 65 6e  |d in the documen|
00003a00  74 61 74 69 6f 6e 2e 0a  0a 48 6f 77 65 76 65 72  |tation...However|
00003a10  2c 20 74 68 65 20 41 52  4d 45 64 69 74 20 6d 6f  |, the ARMEdit mo|
00003a20  64 75 6c 65 20 6d 61 79  20 6f 6e 6c 79 20 62 65  |dule may only be|
00003a30  20 64 69 73 74 69 62 75  74 65 64 20 69 6e 20 61  | distibuted in a|
00003a40  63 63 6f 72 64 61 6e 63  65 20 77 69 74 68 20 74  |ccordance with t|
00003a50  68 65 0a 63 6f 6e 64 69  74 69 6f 6e 73 20 63 6f  |he.conditions co|
00003a60  6e 74 61 69 6e 65 64 20  69 6e 20 74 68 65 20 52  |ntained in the R|
00003a70  65 61 64 4d 65 20 66 69  6c 65 20 65 6e 63 6c 6f  |eadMe file enclo|
00003a80  73 65 64 20 69 6e 20 74  68 69 73 20 64 69 73 74  |sed in this dist|
00003a90  72 69 62 75 74 69 6f 6e  2e 0a 0a 0a 54 48 49 4e  |ribution....THIN|
00003aa0  47 53 20 54 4f 20 44 4f  0a 0a 54 68 65 20 66 6f  |GS TO DO..The fo|
00003ab0  6c 6c 6f 77 69 6e 67 20  61 72 65 20 63 68 61 6e  |llowing are chan|
00003ac0  67 65 73 20 74 68 61 74  20 6d 61 79 20 62 65 20  |ges that may be |
00003ad0  6d 61 64 65 20 74 6f 20  74 68 65 20 65 78 74 65  |made to the exte|
00003ae0  72 6e 61 6c 6c 79 20 61  76 61 69 6c 61 62 6c 65  |rnally available|
00003af0  0a 73 65 72 76 69 63 65  73 20 73 6f 6d 65 74 69  |.services someti|
00003b00  6d 65 20 69 6e 20 74 68  65 20 66 75 74 75 72 65  |me in the future|
00003b10  2e 0a 0a 20 20 20 20 4e  6f 6e 65 20 61 74 20 74  |...    None at t|
00003b20  68 65 20 6d 6f 6d 65 6e  74 21 0a 0a 0a 56 45 52  |he moment!...VER|
00003b30  53 49 4f 4e 20 48 49 53  54 4f 52 59 0a 0a 30 2e  |SION HISTORY..0.|
00003b40  30 30 20 28 31 32 2d 4e  6f 76 2d 39 35 29 20 20  |00 (12-Nov-95)  |
00003b50  20 20 4f 72 69 67 69 6e  61 6c 20 64 65 76 65 6c  |  Original devel|
00003b60  6f 70 6d 65 6e 74 20 76  65 72 73 69 6f 6e 2e 0a  |opment version..|
00003b70  0a 30 2e 30 34 20 28 31  36 2d 44 65 63 2d 39 35  |.0.04 (16-Dec-95|
00003b80  29 20 20 20 20 46 69 72  73 74 20 70 75 62 6c 69  |)    First publi|
00003b90  63 20 64 65 76 65 6c 6f  70 6d 65 6e 74 20 72 65  |c development re|
00003ba0  6c 65 61 73 65 2e 0a 0a  30 2e 30 35 20 28 31 37  |lease...0.05 (17|
00003bb0  2d 44 65 63 2d 39 35 29  20 20 20 20 49 6d 70 72  |-Dec-95)    Impr|
00003bc0  6f 76 65 64 20 66 69 6c  65 6e 61 6d 65 20 74 72  |oved filename tr|
00003bd0  61 6e 73 6c 61 74 69 6f  6e 2e 0a 0a 30 2e 30 37  |anslation...0.07|
00003be0  20 28 32 38 2d 44 65 63  2d 39 35 29 20 20 20 20  | (28-Dec-95)    |
00003bf0  41 64 64 65 64 20 6d 65  73 73 61 67 65 20 70 61  |Added message pa|
00003c00  73 73 69 6e 67 20 70 72  6f 74 6f 63 6f 6c 2e 0a  |ssing protocol..|
00003c10  0a 31 2e 30 30 20 28 31  32 2d 4a 61 6e 2d 39 36  |.1.00 (12-Jan-96|
00003c20  29 20 20 20 20 46 69 72  73 74 20 6f 66 66 69 63  |)    First offic|
00003c30  69 61 6c 20 72 65 6c 65  61 73 65 20 76 65 72 73  |ial release vers|
00003c40  69 6f 6e 2e 0a 0a 31 2e  30 31 20 28 31 31 2d 4d  |ion...1.01 (11-M|
00003c50  61 72 2d 39 36 29 20 20  20 20 56 65 72 73 69 6f  |ar-96)    Versio|
00003c60  6e 20 6e 75 6d 62 65 72  20 75 70 64 61 74 65 64  |n number updated|
00003c70  20 74 6f 20 6d 61 74 63  68 20 74 68 65 20 6d 6f  | to match the mo|
00003c80  64 75 6c 65 2e 0a 0a 31  2e 30 32 20 28 30 36 2d  |dule...1.02 (06-|
00003c90  41 75 67 2d 39 36 29 20  20 20 20 4c 69 6e 6b 61  |Aug-96)    Linka|
00003ca0  67 65 20 63 6f 72 72 65  63 74 65 64 20 66 6f 72  |ge corrected for|
00003cb0  20 41 52 4d 46 49 4c 45  2e 48 2f 2e 4f 42 4a 2e  | ARMFILE.H/.OBJ.|
00003cc0  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00003cd0  20 20 20 20 20 41 64 64  65 64 20 64 61 74 65 20  |     Added date |
00003ce0  61 6e 64 20 74 69 6d 65  20 63 6f 6e 76 65 72 73  |and time convers|
00003cf0  69 6f 6e 20 72 6f 75 74  69 6e 65 73 2e 0a 20 20  |ion routines..  |
00003d00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003d10  20 20 50 6c 61 63 65 64  20 74 68 65 20 69 6e 64  |  Placed the ind|
00003d20  69 76 69 64 75 61 6c 20  6f 62 65 63 74 20 66 69  |ividual obect fi|
00003d30  6c 65 73 20 69 6e 20 61  20 6c 69 62 72 61 72 79  |les in a library|
00003d40  2e 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |..              |
00003d50  20 20 20 20 20 20 53 75  70 70 6f 72 74 20 66 6f  |      Support fo|
00003d60  72 20 41 63 6f 72 6e 27  73 20 73 6f 66 74 77 61  |r Acorn's softwa|
00003d70  72 65 20 50 43 20 65 6d  75 6c 61 74 6f 72 20 69  |re PC emulator i|
00003d80  6e 63 6c 75 64 65 64 2e  0a 20 20 20 20 20 20 20  |ncluded..       |
00003d90  20 20 20 20 20 20 20 20  20 20 20 20 20 49 6e 63  |             Inc|
00003da0  6c 75 64 65 20 2a 63 6f  6d 6d 61 6e 64 20 69 6e  |lude *command in|
00003db0  74 65 72 66 61 63 65 2e  0a 20 20 20 20 20 20 20  |terface..       |
00003dc0  20 20 20 20 20 20 20 20  20 20 20 20 20 50 72 6f  |             Pro|
00003dd0  76 69 64 65 64 20 6d 65  63 68 61 6e 69 73 6d 20  |vided mechanism |
00003de0  66 6f 72 20 63 68 65 63  6b 69 6e 67 20 64 65 6c  |for checking del|
00003df0  69 76 65 72 79 20 6f 66  20 6d 65 73 73 61 67 65  |ivery of message|
00003e00  73 2e 0a 0a 31 2e 30 33  20 28 32 31 2d 46 65 62  |s...1.03 (21-Feb|
00003e10  2d 39 37 29 20 20 20 20  45 78 74 65 6e 64 65 64  |-97)    Extended|
00003e20  20 6d 65 73 73 61 67 65  20 70 61 73 73 69 6e 67  | message passing|
00003e30  20 74 6f 20 73 75 70 70  6f 72 74 20 72 65 70 6c  | to support repl|
00003e40  69 65 73 2e 0a 20 20 20  20 20 20 20 20 20 20 20  |ies..           |
00003e50  20 20 20 20 20 20 20 20  20 49 6e 63 6c 75 64 65  |         Include|
00003e60  64 20 63 6f 6e 74 72 6f  6c 20 6f 76 65 72 20 6d  |d control over m|
00003e70  75 6c 74 69 74 61 73 6b  69 6e 67 2e 0a 20 20 20  |ultitasking..   |
00003e80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003e90  20 41 64 64 65 64 20 61  62 69 6c 69 74 79 20 74  | Added ability t|
00003ea0  6f 20 67 65 6e 65 72 61  74 65 20 74 65 6d 70 6f  |o generate tempo|
00003eb0  72 61 72 79 20 66 69 6c  65 6e 61 6d 65 73 2e 0a  |rary filenames..|
00003ec0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003ed0  20 20 20 20 4f 70 65 72  61 74 69 6f 6e 20 75 6e  |    Operation un|
00003ee0  64 65 72 20 57 69 6e 64  6f 77 73 20 6d 61 64 65  |der Windows made|
00003ef0  20 6d 6f 72 65 20 72 65  6c 69 61 62 6c 65 2e 0a  | more reliable..|
00003f00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003f10  20 20 20 20 49 6e 63 6c  75 64 65 64 20 76 65 6e  |    Included ven|
00003f20  65 65 72 73 20 74 6f 20  74 68 65 20 41 52 4d 45  |eers to the ARME|
00003f30  64 69 74 20 53 57 49 73  2e 0a 20 20 20 20 20 20  |dit SWIs..      |
00003f40  20 20 20 20 20 20 20 20  20 20 20 20 20 20 41 64  |              Ad|
00003f50  64 65 64 20 66 75 6e 63  74 69 6f 6e 20 74 6f 20  |ded function to |
00003f60  63 72 65 61 74 65 20 61  20 52 49 53 43 20 4f 53  |create a RISC OS|
00003f70  20 64 69 72 65 63 74 6f  72 79 2e 0a 20 20 20 20  | directory..    |
00003f80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003f90  48 65 61 64 65 72 20 66  69 6c 65 73 20 72 65 66  |Header files ref|
00003fa0  6f 72 6d 61 74 74 65 64  20 74 6f 20 75 73 65 20  |ormatted to use |
00003fb0  73 70 61 63 65 73 20 69  6e 73 74 65 61 64 20 6f  |spaces instead o|
00003fc0  66 20 74 61 62 73 2e 0a  0a 31 2e 30 34 20 28 30  |f tabs...1.04 (0|
00003fd0  37 2d 44 65 63 2d 39 37  29 20 20 20 20 41 64 64  |7-Dec-97)    Add|
00003fe0  65 64 20 61 62 69 6c 69  74 79 20 74 6f 20 66 69  |ed ability to fi|
00003ff0  6c 74 65 72 20 6f 75 74  70 75 74 20 66 72 6f 6d  |lter output from|
00004000  20 4f 53 43 4c 49 20 66  75 6e 63 74 69 6f 6e 73  | OSCLI functions|
00004010  2e 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |..              |
00004020  20 20 20 20 20 20 49 6e  63 6c 75 64 65 64 20 65  |      Included e|
00004030  78 74 72 61 20 68 65 61  64 65 72 20 66 69 6c 65  |xtra header file|
00004040  73 20 66 72 6f 6d 20 74  68 65 20 73 74 61 6e 64  |s from the stand|
00004050  61 72 64 20 75 74 69 6c  69 74 69 65 73 2e        |ard utilities.|
0000405e