Thing implementation of the AV and other protocols             January 1996
===========================================================================

Copyright (c) Joe Connor 1995
Copyright (c) Arno Welzel 1995

This English documentation was loosely translated by Joe Connor who 
translates and supports Thing and many German programs in the UK via the 
InterActive shareware scheme. Some information about Thing is included 
following the end of the translation, for more details contact:

Post:  InterActive, 65 Mill Road, Colchester, Essex, CO4 5LJ, England
Email: jconnor@cix.compulink.co.uk

The text is an edited extract of the Thing documentation and is not a 
complete (or necessarily accurate) description of the protocols covered.
The Thing v1.x distribution contains all the information in this document 
along with lots of other useful information in ST-Guide hypetext format so 
grab a copy today!

This document may be freely distributed so long as this header remains 
intact and complete but must under no circumstances be reproduced either 
electronically or in printed form without the express written permission 
of the copyright holders.

We accept no liability or responsibility for any direct or indirect damage 
that may arise, either financial, material or any other kind from either 
the use or misuse of this document. All trademarks used are recognised and 
acknowledged.
---------------------------------------------------------------------------

Protocols covered:
 - AV protocol
 - Font protocol
 - Drag&Drop


AV Protocol
===========================================================================
The AV protocol was developed for use with the Gemini replacement desktop. 
Gemini comprises a desktop, Venus, and a command line called Mupfel. In 
order for Venus to communicate with desktop accessories the AV protocol 
was developed and is widely supported today:

AV ~ Accessory <-> Venus

Thing supports most of the AV protocol defined up to 26th June 1995 and as 
a consequence is an excellent 'AV Server' which improves the functionality 
of your desktop accessories and operation under a multitasking OS. 

In the following description Thing acts as the 'Server' and accessories 
and applications are 'Clients'.

In order to use Thing as an AV Server under a multitasking environment you 
must set an environmental variable for Thing called AVSERVER. This is done 
as follows:

MagiC
-----
Entry '#_ENV AVSERVER=THING' in the file MAGX.INF (must be added before 
'#_CTR'!)

MultiTOS
--------
Entry 'setenv AVSERVER=THING' in the file MINT.CNF

The following AV functions are supported by Thing:

  AV_PROTOKOLL        AV_SENDKEY             VA_PATH_UPDATE
  AV_ASKFILEFONT      AV_ASKCONFONT          VA_FONTCHANGED
  AV_OPENWIND         AV_STARTPROG
  AV_ACCWINDOPEN      AV_ACCWINDCLOSED
  AV_STATUS           AV_GETSTATUS
  AV_COPY_DRAGGED     AV_PATH_UPDATE
  AV_WHAT_IZIT        AV_DRAG_ON_WINDOW
  AV_EXIT             AV_STARTED
  AV_XWIND            AV_VIEW
  AV_FILEINFO         AV_COPYFILE
  AV_DELFILE          AV_SETWINDPOS

Some tips for implementation of the AV protocol in your own programs:
---------------------------------------------------------------------------
- Under Single TOS only the (main-)application 0 can act as AV server.
  In a multitasking environment, like MagiC or MultiTOS, you have to check 
  the presence of an AV server by checking the environmental variable 
  AVSERVER.

- Once a program uses the AV_PROTOKOLL, it must use AV_EXIT before 
  terminating!

- A program should always wait for the return of VA_PROTOSTATUS before 
  using any other AV_... messages! It may be, that the current server does 
  not provide all messages of the AV protocol!

- All memory blocks, which are used to pass file names, parameters etc. 
  MUST be allocated 'global' when running under MultiTOS!!!
  Tip! Mxalloc(<size>,0x42)). Otherwise memory violations will occur!

- All file names and folder names must be with complete path names.
  (e.g. 'i:\test.txt').

- If the server supports file name 'quoting' they can be enclosed in 
  quotation marks. If a quotation mark is part of the file name, it has to 
  be repeated once:

   d:\letter to moni    becomes   'd:\letter to moni'
   d:\peter's picture   becomes   'd:\peter''s picture'

- If there is more than one file/folder name, the names should be 
  separated using a single space (ASCII character 32).

- Folder names must be terminated with a backslash ('\' - ASCII 92)
  e.g. 'i:\letters\' (even Gemini 1.a doens't seem to do this)!

- To provide 'global' 'window cycling', AV clients should send [Control]+W 
  to the server via the AV_SENDKEY message.


AV Protocol, AV_PROTOKOLL
---------------------------------------------------------------------------
AV_PROTOKOLL (0x4700) Server <- Client (26th June 1995)

A client asks the server which functions of the AV protocol it supports. 
The server replies by sending a VA_PROTOSTATUS message.

  Word 3:   Bit 0: VA_SETSTATUS
            Bit 1: VA_START
            Bit 2: AV_STARTED
            Bit 3: VA_FONTCHANGED
            Bit 4: Provides and uses file name quoting
            Bit 5: VA_PATH_UPDATE
            Bit 6-15: Reserved, always 0
  Word 4:   Reserved, always 0
  Word 5:   Reserved, always 0
  Word 6+7: Pointer to the name, which has to be used for appl_find()
            to get the AES ID of the client. (8 characters long and
            null terminated).


AV Protocol, VA_PROTOSTATUS
---------------------------------------------------------------------------

VA_PROTOSTATUS (0x4701) Server -> Client (26th June 1995)

Reply sent in answer to an AV_PROTOKOLL enquiry from the client. The 
reply, in the form of a status word, reports which functions of the AV 
protocol Thing supports. Greyed out entries will never be supported by 
Thing.

  Word 3:   Bit 0:  AV_SENDKEY
            Bit 1:  AV_ASKFILEFONT
            Bit 2:  AV_ASKCONFONT, AV_OPENCONSOLE
            Bit 3:  AV_ASKOBJECT
            Bit 4:  AV_OPENWIND
            Bit 5:  AV_STARTPROG
            Bit 6:  AV_ACCWINDOPEN, AV_ACCWINDCLOSED
            Bit 7:  AV_STATUS, AV_GETSTATUS
            Bit 8:  AV_COPY_DRAGGED
            Bit 9:  AV_PATH_UPDATE, AV_WHAT_IZIT, AV_DRAG_ON_WINDOW
            Bit 10: AV_EXIT
            Bit 11: AV_XWIND
            Bit 12: VA_FONTCHANGED
            Bit 13: AV_STARTED
            Bit 14: Provides and uses file name quoting
            Bit 15: AV_FILEINFO, VA_FILECHANGED
  Word 4:   Bit 0:  AV_COPYFILE, VA_FILECOPIED
            Bit 1:  AV_DELFILE, VA_FILEDELETED
            Bit 2:  AV_VIEW, VA_VIEWED
            Bit 3:  AV_SETWINDPOS
            Bit 4-15: Reserved, always 0
  Word 5:   Reserved, always 0
  Word 6+7: Pointer to the program names of the servers, prepared for
            appl_find() (8 characters long and null terminated).


AV Protocol, AV_GETSTATUS
---------------------------------------------------------------------------

AV_GETSTATUS (0x4703) Server <- Client (11th November 1994)

Requests the status information saved using AV_STATUS. A VA_SETSTATUS 
message is sent as a reply.

  No parameters


AV Protocol, AV_STATUS
---------------------------------------------------------------------------

AV_STATUS (0x4704) Server <- Client (11th November 1994)

Using this message a client can tell the server any status information 
(presets etc) it might need again. Thing saves this information as a 
component of its setup in THING.INF.

This function is primarily useful for desktop accessories because single 
TOS is (at best) equipped with ustable buffers!

  Word 3+4: Pointer to a string up to 256 characters long which may not
            contain any control characters.


AV Protocol, AV_SETSTATUS
---------------------------------------------------------------------------

VA_SETSTATUS (0x4705) Server -> Client (11th November 1994)

Reply to a AV_GETSTATUS message. Thing shares the previously saved status 
information with the client.

  Word 3+4: Pointer to the saved string or NULL if no information is
            available.


AV Protocol, AV_SENDKEY
---------------------------------------------------------------------------

AV_SENDKEY (0x4710) Server <- Client (11th Nov 1994)

Using this message a client can send Thing any keys it doesn't use for 
itself.

Note: Thing and Gemini accept [Control]+W to perform 'global' window 
cycling, which takes into account the open windows of any AV clients. The 
key state (ev_mmokstate) is 0x0004, the scan code (ev_mkreturn) is 0x1107.

  Word 3: Key state (ev_mmokstate)
  Word 4: Scan code of the pressed key (ev_mkreturn)


AV Protocol, VA_START
---------------------------------------------------------------------------

VA_START (0x4711) Server -> Client (11th November 1994)

Using this message a server pass parameters to desktop accessories or 
parallel running applications.

An exceptional feature: Thing can receive VA_START messages too. In the 
command line an individual program or file can be passed. Installed 
applications are also taken into account.

Command lines beginning with the ':' character must not be used because 
they are interpreted as internal commands!

  Word 3+4: Pointer to the command line. Objects dragged to icons using
            Drag&Drop require the entire filename, i.e. path, filename
            and trailing backslash '\' character.


AV Protocol, AV_ASKFILEFONT
---------------------------------------------------------------------------

AV_ASKFILEFONT (0x4712) Server <- Client (11th November 1994)

Using this message the client can request the current font used for 
filenames in directory windows. The server the ID and size (in points) of 
the font with a VA_FILEFONT message.

Also refer to VA_FONTCHANGED for more details.

  No parameters

AV Protocol, VA_FILEFONT
---------------------------------------------------------------------------

VA_FILEFONT (0x4713) Server -> Client (11th November 1994)

Reply to AV_ASKFILEFONT. The server returns the ID and size (in points) of 
the current font used for filenames in directory windows.

Also refer to VA_FONTCHANGED for more details.

  Word 3: ID of font (vst_font)
  Word 4: Size in points (vst_point)


AV Protocol, AV_ASKCONFONT
---------------------------------------------------------------------------

AV_ASKCONFONT (0x4714) Server <- Client (11. Nov 1994)

A client can request the current font used in the console window. The 
server replies using a VA_CONFONT message the ID and size (in points) of 
the font.

Also refer to VA_FONTCHANGED for more details.

  No parameters


AV Protocol, VA_CONFONT
---------------------------------------------------------------------------

VA_CONFONT (0x4715) Server -> Client (11. Nov 1994)

Thing uses this message to answer AV_ASKCONFONT. Thing reports the font ID 
and size (in points) of the current font used in the Console window.

Also refer to VA_FONTCHANGED for more details.

  Word 3: ID of font (vst_font)
  Word 4: Size in points (vst_point)


AV Protocol, AV_OPENWIND
---------------------------------------------------------------------------

AV_OPENWIND (0x4720) Server <- Client (11th November 1994)

Thing opens a new directory window.

  Word 3+4: Pointer to the path of the to open directories
  Word 5+6: Pointer to the file mask. '*.*' is intrepreted as '*' (all
            files) by Thing.


AV Protocol, VA_WINDOPEN
---------------------------------------------------------------------------

VA_WINDOPEN (0x4721) Server -> Client (11th November 1994)

Thing answers client to AV_OPENWIND.

  Word 3: 0   = Error
          !=0 = Window opened and directory updated


AV Protocol, AV_STARTPROG
---------------------------------------------------------------------------

AV_STARTPROG (0x4722) Server <- Client (11th November 1994)

Thing starts a program at the request of a client.

  Word 3+4: Program name with complete path - optionally including the
            filename. If the filename is included Thing searches for
            the application and the filename then passes the filename,
            as a parameter, to the application.
  Word 5+6: Command line or NULL, if no command line is passed.
  Word 7:   Any 16 Bit value, which VA_PROGSTART passes back


AV Protocol, VA_PROGSTART
---------------------------------------------------------------------------

VA_PROGSTART (0x4723) Server -> Client (11th November 1994)

Reply to AV_STARTPROG enquiry. Thing always sends an answer immediately, 
i.e. after the end of programs started under single TOS which are not 
handled as accessories. Currently the Return code for started programs is 
always 0.

If Thing ends before starting the program (e.g. Overlay mode under single 
TOS or starting an application in single mode under MagiC) no answer 
message is sent.

A client will always receive an error message if the program couldn't be 
started.

  Word 3: 0   = Error
          !=0 = Program started
  Word 4: Return code of the program (where available)
  Word 7: 16 Bit word from AV_STARTPROG


AV Protocol, AV_ACCWINDOPEN
---------------------------------------------------------------------------

AV_ACCWINDOPEN (0x4724)  Server <- Client (11th November 1994)

A client uses this message to share with Thing the information that it has 
opened a window. Thing can then extend Drag&drop and cycle window support 
to cover this window.

  Word 3: AES handle for window


AV Protocol, VA_DRAGACCWIND
---------------------------------------------------------------------------

VA_DRAGACCWIND (0x4725) Server -> Client (11th November 1994)

Thing sends an AV_ACCWINDOPEN message to the client sharing the 
information that one or more object/s have been dragged to its window.

Refer to AV_COPY_DRAGGED for more details.

Note: Should the keyboard status for a further answer of the client (e.g. 
AV_COPY_DRAGGED) become neccessary, it should, on receipt of 
VA_DRAGACCWIND, check the value returned from evnt_multi().

i.e. the EVENT-structure should be ascertained using EvntMulti() and NOT 
by sending the answer using graf_mkstate()!

  Word 3:   AES window handle
  Word 4:   X position of mouse
  Word 5:   Y position of mouse
  Word 6+7: Pointer to the string including the object names


AV Protocol, AV_ACCWINDCLOSED
---------------------------------------------------------------------------

AV_ACCWINDCLOSED (0x4726) Server <- Client (11th November 1994)

A client shares information with Thing that it has closed one of its 
windows. This only occurs if a client shuts its own window. Under single 
TOS accessory windows are automatically closed on starting applications 
and this message is not neccessary.

  Word 3: AES window handle


AV Protocol, AV_COPY_DRAGGED
---------------------------------------------------------------------------

AV_COPY_DRAGGED (0x4728) Server <- Client (11th November 1994)

A client informs Thing an object, or objects, have been delivered via 
VA_DRAGACCWIND ready for copying. Thing send the client a VA_COPY_COMPLETE 
reply.

  Word 3:   Keyboard status on receipt of VA_DRAGACCWIND
  Word 4+5: Pointer to the destination path


AV Protocol, VA_COPY_COMPLETE
---------------------------------------------------------------------------

VA_COPY_COMPLETE (0x4729) Server -> Client (11th November 1994)

Reply to AV_COPY_DRAGGED from Thing to client.

  Word 3: 0   = Error or user initiated cancel
          !=0 = Objects are copied and the directory window is updated if
                neccessary.


AV Protocol, AV_PATH_UPDATE
---------------------------------------------------------------------------

AV_PATH_UPDATE (0x4730) Server <- Client (11th November 1994)

A client informs Thing the contents of a directory have changed. Thing 
then re-reads the appropriate directories, and any sub directories, in the 
given path.

  Word 3+4: Pointer to the absolute path (e.g. C:\AUTO\).


AV Protocol, AV_WHAT_IZIT
---------------------------------------------------------------------------

AV_WHAT_IZIT (0x4732) Server <- Client (11th November 1994)

A client requests details about what is located at a certain part of
the screen. Thing replies with a VA_THAT_IZIT message.

  Word 3: X coordinate
  Word 4: Y coordinate


AV Protocol, VA_THAT_IZIT
---------------------------------------------------------------------------

VA_THAT_IZIT (0x4733) Server -> Client (11th November 1994)

Reply to a AV_WHAT_IZIT enquiry.

  Word 3:   AES ID for the appropriate application
  Word 4:   Object type
  Word 5+6: Pointer to the object names or NULL, if no names are
            available

The types are as follows:

  VA_OB_UNKNOWN   (0)  Unknown (Console window, desktop etc)
  VA_OB_TRASHCAN  (1)  Gemini 'Trash Can' - not available using Thing
  VA_OB_SHREDDER  (2)  Trash Can (Gemini 'Shredder')
  VA_OB_CLIPBOARD (3)  Clipboard
  VA_OB_FILE      (4)  File
  VA_OB_FOLDER    (5)  Folder or directory window background
  VA_OB_DRIVE     (6)  Drive
  VA_OB_WINDOW    (7)  Window belonging to another application


AV Protocol, AV_DRAG_ON_WINDOW
---------------------------------------------------------------------------

AV_DRAG_ON_WINDOW (0x4734) Server <- Client (11th November 1994)

A client informs Thing objects have been dropped somewhere. Thing sorts 
out what's happening at the location supplied, then sends a 
VA_DRAG_COMPLETE message.

  Word 3:   X mouse position
  Word 4:   Y mouse position
  Word 5:   Keyboard status
  Word 6+7: Pointer to the string containing the names of the objects


AV Protocol, VA_DRAG_COMPLETE
---------------------------------------------------------------------------

VA_DRAG_COMPLETE (0x4735)  Server -> Client (11th November 1994)

Reply to AV_DRAG_ON_WINDOW message.

  Word 3: 0=Nothing changed after the Drag&drop
          1=The given objects were processed (copied, deleted etc.)


AV Protocol, AV_EXIT
---------------------------------------------------------------------------

AV_EXIT (0x4736) Server <- Client (11. Nov 1994)

A client informs Thing it no longer observing the AV protocol. This 
cancels all AV_ACCWINDOPEN messages too.

This message must be used, before terminating a program if the program did 
use AV_PROTOKOLL!

  Word 3: AES ID of the client


AV Protocol, AV_STARTED
---------------------------------------------------------------------------

AV_STARTED (0x4738) Server <- Client (11th November 1994)

A client informs Thing it has received and understood the VA_START message 
and the reserved memory for the command line can be released.

At the moment, this message is ignored because Thing does not reserve any 
extra memory for VA_START messages.

  Word 3+4: Pointer to the command line, received by VA_START


AV Protocol, VA_FONTCHANGED
---------------------------------------------------------------------------

VA_FONTCHANGED (0x4739) Server -> Client (11th November 1994)

If one of the fonts in Thing is changed all clients, which have already 
requested the font via the AV_PROTOKOLL, are informed.

Note! Unfortunately TreeView 2.4, programmed by Stephan Gerle, does not 
react to this message so Thing explicitly sends TreeView (Applications 
named 'TREEVIEW') a VA_FILEFONT message. This is not the ideal solution 
but is a practical workaround.

  Word 3: ID of the font used for directories (vst_font)
  Word 4: Size in points for font used in directories (vst_point)
  Word 5: ID of the font used in the console window (vst_font)
  Word 6: Size in points for font used in the console window (vst_point)


AV Protocol, AV_XWIND
---------------------------------------------------------------------------

AV_XWIND (0x4740) Server <- Client (11th November 1994)

Thing opens a directory window, similar to AV_OPENWIND except additional 
options are available:

  Word 3+4: Pointer to the path for opening directories
  Word 5+6: Pointer to the mask (Wildcard) for the available files
  Word 7:   Bit 0:    Use current top window, if available
            Bit 1:    Use wildcard for object selection
            Bit 2-15: Reserved, always 0


AV Protocol, VA_XOPEN
---------------------------------------------------------------------------

VA_XOPEN (0x4741) Server -> Client (11th November 1994)

Reply to AV_XWIND, similar to VA_WINDOPEN.

 Word 3: 0   = Error
         !=0 = Window opened and the directory completely read
               i.e. a available window could be topped.


AV Protocol, AV_VIEW
---------------------------------------------------------------------------

AV_VIEW (0x4751) Server <- Client (26th June 1995)

The server calls the viewer for a specific file. If no viewer is available 
an error message is returned to the user/s.

Note! In contrast to Gemini 1.a Thing knows which applications are 
installed for which filetypes. With this message Thing can start the 
relevant application (e.g. a simple IMG viewer instead of a complete image 
editing application).

  Word 3+4: Pointer to the names of the file to be displayed (only a
            single file is allowed!)
  Word 5-7: Reserved, always 0


AV Protocol, VA_VIEWED
---------------------------------------------------------------------------

VA_VIEWED (0x4752) Server -> Client (26th June 1995)

Reply to AV_VIEW. The server informs the client whether the file will be 
displayed or not. The answer is immediate and always sent out if an error 
occured. Otherwise, in a multitasking background, the answer is received 
as soon as the viewer is topped (made active), Under single TOS the answer 
is received after exiting the viewer, in the case that the server had not 
already been ended (e.g. by unloading Thing from memory before starting 
the viewer -overlay mode).

  Word 3:   0=Error, 1=All OK
  Word 4-7: Reserved, always 0


AV Protocol, AV_FILEINFO
---------------------------------------------------------------------------

AV_FILEINFO (0x4753) Server <- Client (26th June 1995)

Display file/folder info. Sent as a reply to VA_FILECHANGED.

  Word 3+4: Pointer to file or folder name. Several files/folders
            may be separated using space characters. Folders MUST
            include a trailing backslash '\' character!
  Wort 5-7: Reserved, always 0


AV Protocol, VA_FILECHANGED
---------------------------------------------------------------------------

VA_FILECHANGED (0x4754) Server -> Client (26th June 1995)

Reply to AV_FILEINFO.

  Word 3+4: Pointer to the name of a file/folder, passed via
            AV_FILEINFO, which can naturally contain a new file/folder
            name.

            Example: 'C:\ANNA.TXT C:\AUTO\' was passed.
                     The user changes 'ANNA.TXT' to 'ANNIE.TXT'.
                     As a result the message string changes to:
                     'C:\ANNIE.TXT C:\AUTO\'

  Wort 5-7: Reserved, always 0


AV Protocol, AV_COPYFILE
---------------------------------------------------------------------------

AV_COPYFILE (0x4755) Server <- Client (26th June 1995)

Copy/move files/folders. Sent as a reply to VA_FILECOPIED.

  Word 3+4: Pointer to the source file/s and folder/s separated using
            space characters. Folders must include a trailing
            backslash '\' character.
  Word 5+6: Pointer to the destination folder
  Wort 7:   Bit 0:    Delete original (move)
            Bit 1:    Rename copy
            Bit 2:    Overwrite destination without comment
            Bit 3-15: Reserved, always 0


AV Protocol, VA_FILECOPIED
---------------------------------------------------------------------------

VA_FILECOPIED (0x4756) Server -> Client (26th June 1995)

Reply to AV_COPYFILE.

  Word 3:   0=Error, 1=All OK
  Word 4-7: Reserved, always 0


AV Protocol, AV_DELFILE
---------------------------------------------------------------------------

AV_DELFILE (0x4757) Server <- Client (26th June 1995)

Delete files/folders. Send as reply to VA_FILEDELETED.

  Word 3+4: Pointer to the files/folders to be deleted separated using
            space characters. Folders must include a trailing
            backslash '\' character.
  Word 5-7: reserved, always 0


AV Protocol, VA_FILEDELETED
---------------------------------------------------------------------------

VA_FILEDELETED (0x4758) Server -> Client (26th June 1995)

Reply to AV_DELFILE.

  Word 3:   0=Error, 1=All OK
  Word 4-7: Reserved, always 0


AV Protocol, AV_SETWINDPOS
---------------------------------------------------------------------------

AV_SETWINDPOS (0x4759) Server <- Client (26th June 1995)

An extension to AV_XWIND i.e. AV_OPENWIND remembered. With this the client 
can be informed of the position and size of the next directory window 
(with AV_XWIND or AV_OPENWIND) to be opened. The coordinates are given in 
absolute coordinates.

Because via AV_XWIND an existing window is topped instead of a new window 
being opened this message has no affect!

  Word 3:  Position X
  Word 4:  Position Y
  Word 5:  width
  Word 6:  Height
  Word 7:  Reserved, always 0


AV Protocol, VA_PATH_UPDATE
---------------------------------------------------------------------------

VA_PATH_UPDATE (0x4760) Server -> Client (26th June 1995)

If the client has established via the AV_PROTOKOLL the Server supports 
this message it informs the server whenever it changes the contents of a 
directory or sub directory. The client should then re-read all affected 
directories and sub directories, if necessary closing any sub directories 
which no longer exist.

 Word 3+4: Pointer to the directory, which must always include a
           trailing 'backslash' character.
 Word 5-7: Reserved, always 0



Font Protocol - Originally defined by Christian Grunenberg
===========================================================================
Since v0.4 Thing supports the most important functions of the Font 
protocols, as defined by Christian Grunenberg.

Thing can also be installed as a font selector for other applications 
although at present only ST-Guide (30/04/95 or later) supports this 
option. For successful operation the following criteria must be fulfilled:

 - Thing must be running in parallel to the application - either as a
   desktop accesory under single TOS or in a multitasking environment

 - The environmental variable 'FONTSELECT' must be set to 'THING'

The following is a description of the messages supported by Thing. For a 
complete definition of the protocol (in German) contact Christian 
Grunenberg:

Email: Christian_Grunenberg@LB.maus.de


Font Protocol, FONT_SELECT
---------------------------------------------------------------------------

FONT_SELECT (0x7A19)  Application -> Thing

An application calls the font selector and successfully receives a 
selection of fonts and sends the FONT_CHANGED reply.

  Word 3: Handle of the affected window, or negative value if the font
          for all windows should be changed.
  Word 4: Font ID or 0
  Word 5: Font size in points
  Word 6: Font colour
  Word 7: Effects - Bit 0:    Bold
                    Bit 1:    Light
                    Bit 2:    Italics
                    Bit 3:    Underlined
                    Bit 4:    Outline
                    Bit 5:    Shadowed
                    Bit 6:    Inverse
                    Bit 7-15: Reserved, always 0


Font Protocol, FONT_CHANGED
---------------------------------------------------------------------------

FONT_CHANGED (0x7A18)  Application <- Thing

Reply to FONT_SELECT. Thing informs the application of the new values.
Word 1 of the message contains the Thing application ID.

This message is also sent out by Thing if a font is Drag&Dropped onto
the window of another application.


      Install WINX under single TOS so that Thing can determine the
      owner of all windows.


Thing also accepts this message as a receiver and updates the window
display as required.



Drag&Drop protocol - Originally introduced by Atari for MultiTOS
===========================================================================
This protocol was introduced by Atari for MultiTOS and seems to be 
supported by MagiC.

Thing as sender
---------------
Thing automatically operates this protocol if one or more objects in a 
window are Drag&Dropped onto a window belonging to another application 
which doesn't belong to an AV client and wasn't opened using 
AV_ACCWINDOPEN.

Thing can even 'convert' AV Drag&Drop messages (AV_DRAG_ON_WINDOW) to 
Drag&Drop protocol messages! This makes it possible to search for files 
using ParaFin and send the result to CoNnect via Drag&Drop...

If the receiver does not understand the Dra&Drop protocol or the system 
(e.g. MagiC! v2/single TOS) does not support it then Thing tries sending a 
VA_START message with the names of the Drag&Dropped objects via the 
command line which so long as the system knows who owns which desktop 
windows usually works. Tip! Single TOS users can use WINX.


Thing as a receiver
-------------------
Due to a lack of supporting applications I haven't been able to test this 
extensively. So far I have tested CAT (Maus net OLR) which can export 
'.TXT'.

If a '.xxx' block is Drag&Dropped on the desktop Thing requests a path to 
save the file to. If a drive etc is selected as the destination a path is 
displayed as a guideline. If the block is Drag&Dropped onto the Clipboard 
Thing automatically saves the data as 'SCRAP.xxx' in the Clipboard.

If a text block is dropped onto an application dialog window and the 
application supports Drag&Dropped '.TXT' then the text in inserted into 
the current editable field. This will only work with a few applications.

'ARGS' blocks are handled as VA_START messages, i.e. they are passed via 
the command line and simply executed.

'PATH' blocks are still currently not supported and rejected with DD_NAK.


About the Thing alternative desktop
===========================================================================
Programmed and Copyright (c) 1994-95 Arno Welzel

Post:  Arno Welzel
       Georgenstrasse 55
       86152 Augsburg
       Germany
             
Email:       aw@zaphot.augusta.de


Overview of the main features Thing offers over to the standard desktop
---------------------------------------------------------------------------
- 'Object groups' to hold several files, folders and programs in common 
   windows, effectively 'mini desktops' in windows.
- Full support for alternative file systems: Thing supports long and 
  case-sensitive file names.
- Any IMG format file can be used as background pictures on the desktop, 
  either centred or 'tiled'.
- 'Modern' dialog boxes in windows, many non-modal with keyboard 
  shortcuts, 'Tabs', 'Drop Down Listboxes' 3D-buttons etc.
- Icons at any size in a normal GEM resource file.
- Support for colour and 'animated' icons.
- Console window using TOS2GEM, programmed by Thomas Binder. All features 
  of TOS2GEM are fully supported.
- Support for TOSWIN under MiNT -so you can run TOS/TTP programs parallel 
  to the desktop even under single TOS.
- Support for GDOS: Bitmap and proportional fonts including all variants 
  of TrueType and Speedo fonts can be used in directory windows.
- Support for Let'em Fly, WINX and Freedom -including eCPX's.
- Support for Kobold: Kobold 2 can be used for copying/moving/deleting 
  files and formatting disks. Kobold may be called as an accessory or an 
  external program. The minimum number of files or the amount of data 
  before Kobold is called is user definable.
- Context sensitive help using the ST-Guide hypertext system: Help is 
  available at any time by pressing the [Help] key or from within dialogs 
  by selecting the 'Help' button.
  Help for menu entries is also available by holding down the [Control] 
  key when selecting the desired menu entry.
- Support for the Font protocol (as specified by Christian Grunenberg): 
  Thing can be used as a 'font selector' by using the FONT_SELECT message 
  or via Drag&Drop (Thing sends FONT_CHANGED to the owner of the window).
- Drag&Drop protocol under MultiTOS or MagiC.
- Full support for the AV protocol which offers unrivalled performance 
  from supporting applications. Most of the tools designed for use with 
  Gemini can also be used with Thing (e.g. ParaFin, PacShell, TreeView 
  etc).

If you'd like to the real Thing send 13 Sterling along with the 
registration form to:

Post:  InterActive, 65 Mill Road, Colchester, Essex, CO4 5LJ, England
Email: jconnor@cix.compulink.co.uk

In return you'll receive a Master disk containing the latest version of 
Thing and associated utilities along with a registration letter and 
personal key to remove the Shareware reminder.

-----------------------------8<--- Cut ---8<-------------------------------

Thing Registration for v1.x
---------------------------

Name ............... :
Address ............ :

Country ............ :

The following questions are not compulsory but will help us ensure future 
versions of Thing meet your needs...

Email .............. :

Hardware ........... :      [ ] ST/e/Mega ST/e
                            [ ] TT
                            [ ] Falcon
                            [ ] Other -please specify

Operating system ... :      [ ] SingleTOS (e.g. TOS 1.04, TOS 2.06)
                            [ ] SingleTOS & MiNT
                            [ ] MultiTOS
                            [ ] MagiC -please specify version
                            [ ] Atari emulation -please specify
                            [ ] Other -please specify

Where did you obtain your copy of Thing?

 Internet  ......... :      [ ] Please specify
 BBS/Mailbox etc ... :      [ ] Please specify
 PD/Shareware library:      [ ] Please specify
 Other ............. :      [ ] Please specify

Thanks in advance!

-----------------------------8<--- Cut ---8<-------------------------------
EOF