









                           Daves Data LINK
                               (DDLINK)





                                  A
                            Small & Simple

                                  PC
                        File Transfer Program

                              supporting
                        COM, LPT and Ethernet
                             connections















                             Version 1.6










                            Dave Dunfield

                      Last revised: Apr 17, 2012



                                DDLINK

                          TABLE OF CONTENTS


                                                                    Page

1. INTRODUCTION                                                        1


2. COMMAND FUNCTION KEYS                                               2

   2.1 Main (split) screen                                             2
   2.2 A)ttr function                                                  2
   2.3 D)rive function                                                 2
   2.4 M)ulti-file function                                            2
   2.5 O)ption function                                                2
   2.6 V)iew function (ASCII mode)                                     3
   2.7 V)iew function (Hexidecimal mode)                               3
   2.8 String input                                                    3
   2.9 Yes/No prompts                                                  3
   2.10 Server mode                                                    3

3. INTERFACING TO ANOTHER PC                                           4

   3.1 Serial                                                          4
   3.2 Parallel                                                        5
   3.3 Network                                                         5

4. MISC. NOTES                                                         6

   4.1 Startup                                                         6
   4.2 Local operation                                                 6
   4.3 File attribute display                                          6
   4.4 Filename matching                                               6
   4.5 Switching directories                                           6
   4.6 Copying directories                                             7

5. DDLINK and WINDOWS                                                  7


6. COMMUNICATIONS INTERFACE                                            8

   6.1 Serial interface                                                8
   6.2 Parallel interface                                              8
   6.3 Network interface                                               9
   6.4 Link protocol                                                   9
   6.5 Command protocol                                               11
DDLINK                                                           Page: 1


1. INTRODUCTION

   Daves Data Link  (DDLINK)  is a utility which allows  you  to  easily
   transfer files  between  PCs  having  only  a  COM,  LPT  or  network
   connection.  It presents a menu interface showing a working directory
   on both PCs,  and provides simple commands to perform  the  following
   functions on either PC:

      Copy files or entire directory subtrees
      Delete files or entire directory subtrees
      Rename files or directories
      Set attribute/timestamp of files
      Create new directories
      Change to another directory
      View files in ASCII or HEX


    Use: DDLINK options

    opts:   /B              = Bootstrap remote (via com)
            /M              = force Monochrome video
            /S[!]           = Server mode
            B=128-4096      = specify Blocksize             [1024]
            C=1-4[,speed]   = specify Com port              [none,115200]
            L=1-3|addr      = specify Lpt port              [none]
            P=[ii][,tttt]   = specify Packet int,type       [60-80,DD11]
            T=factor        = specify Timeout factor        [5]

   DDLINK can communicate over a COM (serial), LPT (parallel) or network
   (ethernet)  interfaces.  (ethernet requires a "packet driver"  - see:
   www.crynwar.com)

   DDLINK operates in two parts - the SERVER which runs on the  "remote"
   PC,  and the CLIENT which runs on the  "local"  PC.  All  interactive
   functions are performed from the  "local"  PC.  You should start  the
   server (/S)  on the remote PC before starting the client on the local
   PC (no /S).

   You can use  '/S!'  to cause the server to terminate  (with DOS  exit
   code 100)  when the client breaks the connection.  This can be useful
   if you are running it from automated scripts and wish DDLINK to  stay
   active for only a single session.
DDLINK                                                           Page: 2


2. COMMAND FUNCTION KEYS

   2.1 Main (split) screen

        Up/Down     - Move selection by 1 item
      PgUp/PgDn     - Move selection by 22 items
     ^PgUp/^PgDn    - Move selection by 100 items
      Home/End      - Move selection to first/last item
      Left/Right    - Switch to other computer/screen
          A         - set hilighted file Attributes/timestamp
          C         - Copy hilighted file or directory to other system
          D         - select another disk Drive
          E         - Erase (delete) hilighted file or directory
          M         - Multi-file menu
          N         - create a New directory
          O         - set DDLINK Options
          R         - Rename hilighted file or directory
          V         - View hilighted file
        Enter       - Move to hilighted directory
         Esc        - Exit DDLINK

   2.2 A)ttr function

        Up/Left     - Move to preceeding selection
      Down/Right    - Move to next selection
      PgUp/PgDn     - Adjust setting
        Enter       - Accept and enter new values
         Esc        - Quit and discard changes

   2.3 D)rive function

      Left/Right    - Move selection
        Enter       - Accept and enter new drive
         Esc        - Quit and discard drive

   2.4 M)ulti-file function

        Up/Down     - Move selection by 1 item
      PgUp/PgDn     - Move selection by 22 items
     ^PgUp/^PgDn    - Move selection by 100 items
      Home/End      - Move selection to first/last item
         C          - Copy selected items
         D          - select all Directories
         E          - Erase selected items
         F          - select all Files
         N          - select by Name            ('*' and '?' allowed)
         R          - Refine selection by name  ('*' and '?' allowed)
         T          - Toggle selection
         U          - Unselect by name          ('*' and '?' allowed)
        ESC         - Exit multi-file menu

   2.5 O)ption function

        Up/Dn       - Move selection
      PgUp/PgDn     - Toggle selection On(+)/Off(-)
        Enter       - Accept and enter new options
         Esc        - Quit and discard changes
DDLINK                                                           Page: 3


   2.6 V)iew function (ASCII mode)

        Up/Down     - Move display by one line
      PgUp/PgDn     - Move display by 24 lines (one screen)
      Home/End      - Move to first/last line
      Left/Right    - Move display by one column
        ^Home       - Reset to column 0
         F1         - Switch to hexidecimal view
         Tab        - Adjust tab stops (8-4-2)
       Esc/F10      - Exit viewer

   2.7 V)iew function (Hexidecimal mode)

        Up/Down     - Move display by 16 bytes
      PgUp/PgDn     - Move display by 384 bytes (one screen)
      Home/End      - Move to first/last line
      Left/Right    - Move display by one column
        ^Home       - Align column to 16 byte boundary
         F1         - Switch to ASCII view
       Esc/F10      - Exit viewer

   2.8 String input

      Left/Right    - Move cursor by 1 position
      Home/End      - Move to first/last position
      Backspace     - Backup and delete character before cursor
         Del        - Delete character under cursor
         Ins        - Toggle insert mode
        PgUp        - Clear entire field
        PgDn        - Clear from cursor to end of field
       Enter        - Accept and enter input
        Esc         - Quit and discard input

   2.9 Yes/No prompts

      Enter/Y       - Accept and proceed
        Esc/N       - Quit and stop

   2.10 Server mode

        Esc         - Stop server and exit
DDLINK                                                           Page: 4


3. INTERFACING TO ANOTHER PC

   3.1 Serial

     The required serial port connection are:

        2-3 , 3-2    (RXD <> TXD)
           5-5       (DB9  only .. Ground)
           7-7       (DB25 only .. Ground)

     For /B (only) DOS also requires:

        7-8 , 8-7    (DB9  only .. RTS<>CTS)
        4-5 , 5-4    (DB25 only .. RTS<>CTS)
        4-6 , 6-4    (DB9  only .. DTR<>DSR)
       20-6 , 6-20   (DB25 only .. DTR<>DSR)

     DDLINK uses the HARDWARE assignments for COM1-COM4:
         COM#    Addr     IRQ
           1     03F8      4
           2     02F8      3
           3     03E8      4
           4     02E8      3

      DOS uses mapping provided by BIOS,  which are the same  as  above,
      except that any uninstalled ports  "bump  up"  what  follows,  for
      example, in a system not having a physical COM2, The COM3 hardware
      device would be called COM2 by DOS.  When using  C=1-4,  you  must
      provide the hardware COM port number.  When  using  /B,  you  must
      select the DOS mapped COM port when prompted for the device to  be
      used on the other system.

      3.1.1 Bootstrapping via serial port

         To accomodate situations where you don't have an  easy  way  to
         put DDLINK onto another PC  (no floppy drive etc.),  DDLINK can
         bootstrap via a serial port,  use:  DDLINK /B c=1-4 on the host
         PC and follow the on-screen instructions.

         To use /B,  the only software (other than DOS)  required on the
         target system is the MODE command to configure the serial  port
         - If this is not available,  you may still be able to bootstrap
         - I don't know if it  is  standard,  however  most  of  my  PCs
         initialize the serial ports to 2400,n,8,1 which happens  to  be
         just what  DDLINK  needs  to  bootstrap.  You  can  also  force
         different bootstrap speeds by specifying the speed with the  C=
         operand, eg: DDLINK /B C=1,1200 The important thing is that the
         port be configured for 8-bits, no parity.

         I have included DDMODE.COM,  a little utility that can be  used
         to configure the serial ports,  and also to view their  current
         configuration.  The  '/H'  option can be used to configure/view
         via the hardware assignments, otherwise the BIOS/DOS mapping is
         used.
DDLINK                                                           Page: 5


   3.2 Parallel

    The required parallel port connections are:

       2-15 , 15-2   (D0 <> ERROR)
       3-13 , 13-3   (D1 <> SLCT)
       4-12 , 12-4   (D2 <> PE)
       5-10 , 10-5   (D3 <> ACK)
       6-11 , 11-6   (D4 <> BUSY)
          25-25      (Ground)

      For L=1-3,  DDLINK uses the BIOS provided  LPT  mappings.  For  L=
      values greater then 4,  DDLINK uses the supplied address  directly
      (allowing you to use non-standard parallel ports). The standard PC
      parallel port addresses are:
         LPT1: 03BC
         LPT2: 0378
         LPT3: 0278

      You can use the included DDMODE.COM to view the addresses assigned
      to the LPT ports on your system if you wish.

   3.3 Network

      The network interface is activated when the 'P='  option is used -
      if you do not specify a packet driver interrupt,  then DDLINK will
      scan the standard packet interrupts 60-80 and use  the  first  one
      which contains a packet driver. eg: DDLINK P=

      The network protocol uses raw ethernet packets (not IP) and is not
      routable.

      If you wish to have multiple concurrent  DDLINK  sessions  on  the
      same network,  you must start the SERVER/CLIENTs  in  pairs.  Once
      connected,  a client and server communicate only with  each  other
      until the client closes.

      Ethernet has a maximum packet payload size of 1500  bytes.  DDLINK
      has an overhead of 6 bytes per packet, so the maximum B= blocksize
      you can use over such a network is 1494 bytes - some networks  may
      enforce smaller packets.
DDLINK                                                           Page: 6


4. MISC. NOTES

   4.1 Startup

      The DDLINK client expects to  be  able  to  communicate  with  the
      server as soon as it starts - you should always start  the  server
      BEFORE starting the client and stop the server AFTER  exiting  the
      client.

   4.2 Local operation

      DDLINK can be used without a  remote  server  (no  C=,  L=  or  P=
      option),  in which case it acts between two directory locations on
      the local machine.

   4.3 File attribute display

      File attributes are shown  in  the  DDLINK  directory  display  by
      hilighting parts of the display line:

         Hilighted-Size = READ-ONLY
         Hilighted-Date = HIDDEN
         Hilighted-Time = SYSTEM

   4.4 Filename matching

      Filename matching uses "unix" pattern matching rules:

         * matches any string or substring
         ? matches any single character
         Any other characters must exactly match

      Note:  *.* only matches files which contain a '.' in the filename!
      To match ALL files, use: *

   4.5 Switching directories

      DDLINK starts in the current directories of both  PCs.  Note  that
      DOS does not allow you to delete the  current  directory,  so  you
      will not be able to delete the directory from  which  you  started
      (or any  directories  containing  it).  The  "Switch  directories"
      option causes DDLINK to 'CD' to directories as you move around, so
      that you can always delete things contained therein  (this is also
      a nice way to use DDLINK to  navigate  to  a  directory  and  stay
      there).

      NOTE that  "Switch directories"  can be a little weird when DDLINK
      is operating in LOCAL mode on the same drive  -  the  DOS  current
      directory will be one you selected LAST (in either window).
DDLINK                                                           Page: 7


   4.6 Copying directories

      When  copying  a  directory  tree,  DDLINK  normally  creates  the
      subdirectories BEFORE copying the files in a given directory - the
      "Create dirs at end"  option can be used to cause DDLINK to create
      the subdirectories AFTER copying the files  (thereby  placing  the
      subdirectories at the end).

      When performing long operations,  such as copying large files  (or
      large sets of files),  deleting a large tree,  or indexing a large
      file to view  ...  you  can  use  ^C  (control-C)  to  cancel  the
      operation.

5. DDLINK and WINDOWS

   DDLINK is a 16-bit DOS program and will NOT run under 64-bit windows.

   DDLINK does NOT understand windows "Long" filenames.

   DDLINK uses DOS compatible directly accessable  serial  and  parallel
   ports - USB ports and other non-standard devices will not work.

   Windows versions >9x prevent access to the parallel port - you may be
   able to use programs such as DIRECTIO or USERPORT to enable access to
   the parallel port  (I've had mixed results),  however be  aware  that
   windows seems to like to  "twiddle"  the LPT pins  randomly  (perhaps
   checking to see if a printer has been connected)  ...  DDLINK doesn't
   like this...  I don't recommend using the  parallel  connection  mode
   under windows.

   Note that Win2K,  WinXP and newer versions of Windows have very  poor
   DOS serial port emulation which loses data at higher speeds.  You may
   need to select a lower COM speed and a smaller  transfer  block.  For
   best results configure a DOS shortcut to open FULL SCREEN,  and never
   let it go "windowed".

   There is a driver available for Win32 that emulates a  packet  driver
   for the DOS box - I've tried it and it works - search for "SWSVPKT".

   Another way to run DDLINK under windows is with  "DOSBOX"  a free DOS
   emulator.  This is your *only*  option  if  you  are  running  64-bit
   windows.  Although the official DOSBOX does not support packet driver
   networking,  there is a forked development which does so by emulating
   an NE2000  NIC.  Search  for  "DOSBOX  with  "NE2000",  "HAL9000"  or
   "MEGABUILD".
DDLINK                                                           Page: 8


6. COMMUNICATIONS INTERFACE

   This section describes details of the  communications  interface  and
   protocols used by DDLINK - knowlege of this material is NOT  required
   for normal use of the program, however it has been provided to assist
   others who may wish to write software that interfaces with DDLINK.

   6.1 Serial interface

      DDLINK transmits data with 8 data bits,  no parity  and  one  stop
      bit.  The default serial baud rate is 115200,  however this can be
      changed with a command line option.

      The  serial  interface  must  be   wired   in   a   "Null   Modem"
      configuration,  with RXD and TXD crossed.  For  normal  operation,
      only three wires are required (RXD, TXD and GND).  For /Bootstrap,
      the interface to DOS requires that the connection be extended to a
      7-wire configuration,  which also  includes  RTS/CTS  and  DTR/DSR
      (these must also be crossed).

   6.2 Parallel interface

      The parallel interface consists of 5 data bits,  which are  driven
      by the lower 5 bits of the parallel data output  port.  These  are
      cross wired between the two ports  (see  wiring  diagram)  meaning
      there are 10 physical data paths (5 in each direction). These bits
      are assigned the following meanings:

         D4 = Data ready strobe
         D3 = Data bit 7+3
         D2 = Data bit 6+2
         D1 = Data bit 5+1
         D0 = Data bit 4+0 / acknowlege

      When contact is initiated, all bits are set HIGH.

      When reading the parallel port,  it is always read at least twice,
      until the data is stable  -  this  prevents  errors  due  to  race
      conditions when multiple signals are changing together.

      When transferring a data byte,  the sending PC writes bits 7-4  to
      D3-D0 with D4 low to initiate the transfer.

      The receiving PC see D4 drop,  and saves bits 7-4 of the  incoming
      data. Then toggles B0 to acknowlege that it has read the data.

      The sending PC then writes bits 3-0 to D3-D0 with D4 high.

      The receiving PC see D4  go  high,  and  saves  bits  3-0  of  the
      incoming data. Then toggles D0 to acknowlege.
DDLINK                                                           Page: 9


      When sending a byte,  the sending PC always reads the port  first,
      both to note the state of D0  (for acknowlege),  and to see if the
      receiving PC is also trying to send a byte - if it is, it receives
      and buffers that byte, then proceeds with sending.

      There is a "race" condition which can occur if both PCs attempt to
      send data at *exactly* the same time, both will check and see that
      the other is NOT sending, then proceed to send.  This condition is
      very rare,  and does not normally occur with DDLINK  due  to  it's
      request/response nature,  however the software does handle  it  as
      follows:

      The condition is detected by noticing that after dropping  D4  and
      waiting for the other PC to toggle D0, the other PC drops D4. This
      indicates that the other PC has initiated  a  send  while  we  are
      sending - we also know this the other PC will notice  our  D4  low
      and realize the same thing.

      To resolve the condition,  we take advantage of the fact that  the
      other PC must also be in it's  send  routine.  In  this  case,  we
      perform as follows:
         - Save bits 7-4 of the other PC's data.
         - Wait 10 IO cycles : insure other PC has time to do same.
         - Write bits 3-0 with D4 high
         - Wait for D4 high, and save bits 3-0 of the incoming data.
         - Wait 10 IO cycles : insure other PC has time to do same.

   6.3 Network interface

      DDLINK interfaces to the  network  using  a  standard  DOS  packet
      driver, and has no knowlege of the physical network interface.  By
      default it will scan for a packet interrupt between 60-80 and  use
      a packet type of DD11,  however both of these  parameters  can  be
      changed via command line option.

      Details  of  available  packet  drivers   and   their   associated
      interfaces are  available  in  the  packet  driver  documentation:
      www.crynwar.com

   6.4 Link protocol

      Each message transmitted by DDLINK is framed in a packet with this
      format:

        <start>             <>  indicates 8-bit BYTE value
        {length}            {}  indicates 16-bit WORD value
        <data ...>          ... indicates variable number
        {crc}

      NOTE:  multi-byte values in the link frame are encoded in standard
      network BIG-ENDIAN (MSB first) format.
DDLINK                                                           Page: 10


      <start>  is a byte indicating the start of a  frame.  This  has  a
      value of 0x90 for the first  packet  transmitted,  and  alternates
      0x91 / 0x90 for subsequent packets.

      {length} is the length  in  bytes  of  the  <data>  block.  <data>
      contains the data to be transmitted.  Note that  {length}  is  NOT
      included in network frames since the  network  interface  provides
      the data block length.

      {crc} is a 16-bit cyclic redundancy check calculated over the data
      block using the CCITT polynomial (x^16 + x^12 + x^5 + x^1) with an
      initial value of all 1's.  NOTE that  {crc}  is  NOT  included  in
      network frames since the network interface provides a  32-bit  CRC
      over the entire frame.

      6.4.1 {crc} calculation

         An efficient way to calculate {crc} is using  a  lookup  table,
         here is 'C' code to generate the table:

                for(i=0; i < 256; ++i) {
                    c = i << 8;
                    for(j=0; j < 8; ++j)
                        c = ((c & 0x8000) ? 0x1021 : 0) ^ (c << 1);
                    CrcTable[i] = c; }

         Then, for each data block, begin with crc=0xFFFF,  and for each
         byte of data processed:


                crc = CrcTable[crc >> 8] ^ (crc << 8) ^ c;

         Note: All variables (i, j, c, crc & CrcTable[256]) are unsigned
         16-bit.

      Each frame received is immediately acknowleged with a single  byte
      <ack>.  <ack> is 0x92 for frames begining with 0x90,  and 0x93 for
      frames beginning with  0x91.  To  negatively  acknowlege  (NAK)  a
      frame,  the receiver sends  the  opposite  <ack>  than  should  be
      expected (ie: 0x93 for a 0x90 frame).

      Network packets have a minimum size of 64 bytes - so the <ack>  is
      carried in a 64 byte packet, however only the <ack> byte itself is
      significant in this case.

      If a negative acknowlege is received, or no acknowlege is received
      within 1/2 second,  the frame is re-transmitted.  A maximum  of  4
      retransmissions are performed  (total of  5  transmits)  at  which
      point the link session is aborted if successful  transmission  can
      not occur.
DDLINK                                                           Page: 11


      Note that the alternating 0x90/0x91 - 0x92/0x93  <start>  -  <ack>
      sequences  provide  automatic  recovery  in  the  event  of   lost
      acknowlege:

         Packet 0x90 is transmitted & received
         Acknowlege is lost, receiver now expects 0x91
         Packet 0x90 is re-transmitted
         Receiver expects 0x91, sends negative-acknowlege (0x92)
         Sender sees 0x92 as ack and proceeds to send 0x91 packet
         Receiver expects 0x91, sends positive-acknowlege (0x93)
         Communication progresses

      Note that a special case exists in the handling  of  <start>/<ack>
      if the first byte of <data> is 0x00 (LINK_INIT command)  - in this
      case,  the receiver accepts either type of  <start>  and resets it
      expectations to toggle with the sender - this allows a link to  be
      initiated at any time without knowlege of  the  receivers  current
      <start>/<ack> state.

   6.5 Command protocol

      All DDLINK communication  is  initiated  as  a  REQUEST  from  the
      client, and in most cases generates a RESPONSE from the server.

      NOTE:  multi-byte values in  command  structures  are  encoded  in
      Intel/8086 compatible LITTLE-ENDIAN (LSB first) format.

      6.5.1 LINK_INIT

         Request : <0x00>{protocol-version}{Blocksize}
         Response: <0x00>{protocol-version}{Blocksize}

         Establishes  or  resets  the   link   with   the   server.   If
         {protocol-version} does not  match  that  of  the  server,  the
         connection is NOT accepted  (the sender will  figure  this  out
         from mismatched {protocol-version} in  the  response).  At  the
         time of this writing, {protocol-version} has a value of 3.

      6.5.2 FIND_FIRST

         Request : <0x01><search-attribute><path/pattern...><0x00>
         Response: <0x03>{#files}[file-info...]

         Begins search for a file matching the specified attributes  and
         name pattern.

         file-info: {Size-H}{Size-L}{Time}{Date}<attributes><Name-13>
         repeated until no more files are found, or Blocksize is filled.
         Name always contains a zero-terminator.
DDLINK                                                           Page: 12


      6.5.3 FIND_NEXT

         Request : <0x02>
         Response: <0x03>{#files}[file-info...]

         Continues a file search.

      6.5.4 OPEN

         Request : <0x04>{mode}{attr}{time}{date}<pathname...><0x00>
         Response: <0x05>{handle}

         Opens a file:

            {mode}: xxxxxxxxxxxx0001 = Open for READ
                    xxxxxxxxxxxx0010 = Open for WRITE
                    xxxxxxxxxxxx0011 = Open for READ/WRITE update
                    xxxxxxxxxxxx0110 = Open for WRITE/APPEND
            {attr}: 1xxxxxxxxxxxxxxx = Update attribute on close
                    x1xxxxxxxxxxxxxx = Update date/time on close
                    xxxxxxxxxxADVSHR = New attributes
            {time}: HHHHHMMMMMMSSSSS = New time (Seconds = S*2)
            {date}: YYYYYYYMMMMDDDDD = New date (Year = Y+1980)

      6.5.5 CLOSE

         Request : <0x06>{handle}
         Response: <0x07>{error-code}

         Closes an open file.

      6.5.6 READ

         Request : <0x08>{handle}{#bytes-requested}
         Response: <0x09>{handle}{#bytes-read}<data...>

         Reads data from an open file.

      6.5.7 WRITE

         Request : <0x0A>{handle}{#bytes}<data...>
         Response: <0x0B>{error-code}

         Writes data to an open file.

      6.5.8 CD

         Request : <0x0C><path...><0x00>
         Response: <0x0D>{error-code}

         Changes the current directory.
DDLINK                                                           Page: 13


      6.5.9 GETD

         Request : <0x0E>
         Response: <0x0F><drive:\path...><0x00>

         Get the current drive and directory.

      6.5.10 DELETE

         Request : <0x10><path...><0x00>
         Response: <0x11>{error-code}

         Delete (erase) a file.

      6.5.11 RENAME

         Request : <0x12><oldpath...><0x00><newpath...><0x00>
         Response: <0x13>{error-code}

         Renames a file.

      6.5.12 RMDIR

         Request : <0x14><path...><0x00>
         Response: <0x15>{error-code}

         Removes a directory.

      6.5.13 MKDIR

         Request : <0x16><path...><0x00>
         Response: <0x17>{error-code}

         Creates a directory.

      6.5.14 SEEK

         Request : <0x18>{handle}{offset-H}{offset-L}{mode}
         Response: <0x19>{error-code}

         Seeks to an offset within a file:

            {mode}: 0 = Absolute from start of file
                    1 = Signed offset from current position
                    2 = Signed offset from end of file

      6.5.15 DRIVE_LIST

         Request : <0x20>
         Response: <0x21>{error-code}<drive letters...><0x00>

         Obtains a list of available drive letters.
DDLINK                                                           Page: 14


      6.5.16 SELECT_DRIVE

         Request : <0x22>{drive}
         Response: <0x23>{error}

         Selects a drive.

        {error}:    0 = Ok
                    1 = Drive not available

      6.5.17 LINK_CLOSE

         Request : <0x24>
         Response: none

         Closes the link session and releases the server.
