Technical details about AppleTalk
     Document version 0.07
---------------------------------

This text is about technical side of the AppleTalk module.  It is not intended
to be a general user manual but rather a technical specification and
explanation of this AppleTalk implementation.  This text can be used to
make the AppleTalk user manual.  It is assumed that the reader has a basic
understanding of the AppleTalk protocol and RO FS in general.

John Tytgat / BASS.
E-mail: John.Tytgat@aaug.net
===========================================================================

1.0 Username & passwords in AppleTalk
-------------------------------------

Username : Username comparison is case-insensitive and diacritical-sensitive.
           It is minimum 1 char and maximum 31 chars long.
Password : maximum 8 characters and case-sensitive (7 bit ASCII).

In order to enumerate all available mount points on an AT server, you need to
provide an username and optionally a password.  If these are not provided in
the 'AppleTalk Login' fake server, the guest account (without password) is
used.  A server may limit the availability of some/all of its mount points
according to the presence of the username & password.

After selecting a mount point and providing username & password (possibly
making use of the guest account), an optional volume password might be
necessairy to mount that specifique mount point.  At the moment no GUI
facility is provided for this.

OmniClient's GUI doesn't allow you to enter spaces in the username and
password.  Type <Alt>+<Space> (i.e. hard space, char 160) instead.

1.1 OS_File 5 reports an existing file but enum dir doesn't show it
-------------------------------------------------------------------

Due to case insensitive filename caching (even of the top bit chars !) in
FileSwitch and the difficult top bit char translation of the Apple/Acorn
filenames, you can occasionally get incorrect indication of the presence of a
file on an AT server using calls like OS_File 5.

E.g. when the following file exist on the **AT server** :

char224        (last char is ASCII 224)

you see the file enumerated on the **RO client** as :

char224        (last char is ASCII 134)


The statement : SYS "OS_File", 5, "char224"

will correctly indictate the presence of that file on the server
but *also* the following statement :

SYS "OS_File", 5, "char224"  (last char is 133)

which only should indicate the presence of that file iff the following file
exists on the AT server :

char224        (last char is ASCII 223)

Note that this behaviour is very exceptional and will not occur in
normal daily use of the software.

1.2 How are the AppleTalk file/volume/server/zone names mapped to RISC OS
    names ?
-------------------------------------------------------------------------

Cfr. file 'CharMap' for detail explanation.

1.3 Statistics ?
--------------

Are based on entries defined in the RFC1742 spec.

1.4 AppleShare IP with only an IP number doesn't seem to work.  Why ?
-------------------------------------------------------------------

When you type an Internet address of a host you want to mount using
AppleShare IP you can only use (one of) its host names.  If you only
have an IP number, then you're stuck.  The reason is that OmniClient
has only an interface defined for the 'gethostbyname()' routine and
not for 'gethostbyaddr()'.

A workaround is to use any other means to get the host name given
its IP address, and to use this hostname to mount the AppleShare IP
server.

1.5 Maximum filename length ?
-----------------------------

Is not specified by the AT protocol but all implementation we have
seen so far have a filename length limited to 31 characters.  If you
try to save a file with a filename longer than this limit, you'll
get an error or the filename will get silently truncated.  The latter
will happen if you have specified "*Configure Truncate on" on your
client system.

