

Dolphin's S S I L Drivers for Hal 95


Contents

1. INTRODUCTION	2
2. GENERAL	2
3. AUTOMATIC CONFIGURATION DETECTION	2
3.1 LOCATION OF SYNTHESISER	2
3.2 LANGUAGES	3
4. PARAMETERS SUPPORTED	3
4.1 PRESET VOICES	4
5. START-UP OPERATION	4
5.1 SERIAL SYNTHESISER DRIVER,  DOLSER2.DLL	4
5.2 PC2 CARD SYNTHESISER DRIVER,  DOLCRD2.DLL	4
6. SERIAL COMMUNICATIONS	5
6.1 SAFE-MODE	5
7. COMPATIBILITY WITH OLDER SYNTHESISER ROMS	6
8. PROGRAMMING INFORMATION	7
8.1 STRUCTURE	7
8.2 SERIAL.C	8




1. Introduction 
A need to improve the efficiency of the S S I L driver and to update it to take 
care of new synthesiser features has been recognised for some time.  In 
addition it was decided that new screen reader for Windows 95 from Dolphin, 
Hal 95,  should be able drive different synthesisers through a generic 
synthesiser interface.  The only one currently available is the S S I L driver.
This version of the S S I L driver is for Hal 95 only.  The next release will 
incorporate numbers and exceptions processing which are desirable for use in 
wider applications, e.g. OpenBook.

2. General
Two new dynamically loadable libraries or DLLs;   DolSer2.dll,  which drives 
the serial synthesisers,  and DolCrd2.dll,  which drives the PC2 Card,  replace 
the older Apollo2.dll.
A third,  alternative driver,  DolAlt2.dll drives the serial synthesiser in 
Windows 95 safe-mode only.
These drivers support the S S I L interface as Specified in "the Arkenstone 
Speech Synthesiser Interface Library, version 1.0 1992".

3. Automatic Configuration Detection
DolSer2 and DolCrd2 automatically detect your particular synthesiser 
configuration.  The calling application just needs to be told whether you are 
using the PC2 card or the serial Apollo in order to load the correct driver for 
the hardware.

3.1 Location of synthesiser
DolSer2 and DolCrd2 have a search facility to seek and select the synthesiser 
to use.  They then create an "ini" file to store the information.  If on subsequent 
use,  this information is found to be incorrect,  the drivers search again and 
update the recorded information.  So,  if you want to plug your synthesiser into 
another port,  just do so and when you next run the application which uses it,  
the drivers detect the change,  update  the "ini" file and continue to talk.
DolAlt2 needs the information in the "ini" file as it is unable (and it is perhaps 
dangerous for it) to search in safe-mode.  This means that you cannot use 
safe-mode until you have successfully installed and used the application in 
normal mode.

3.2 Languages
The languages available are no longer read from the "ini" file but obtained 
using the "@L" command directly from the synthesiser.  For this reason the 
drivers are intended for version 2 ROMs only.
DolSer2 and DolCrd2 read the language lists each time they load,  so if you 
receive any language ROM updates your application can automatically be told 
about them when it is next run.

4. Parameters Supported
The Following table defines the S S I L listed parameters supported and the 
valid ranges.

Parameter
Range (S S I L)
Implemented by Driver or @ command

Context Switch
0 to 15
Driver

Preset Voice
0 to 6
Driver

Output Mode
0 or 1
Driver

Language
0 to 6
@=1 to @=7

Gender
0(male) or 1(female)
@$0(male) or @$1(female)

Rate
1 to 9
@W1 to @W9

Volume
0 to 15
@A0 to @AF

Pitch
0 to 15
@F1 to @FF

Intonation (prosody)
0 to 7
@R0 to @R7

Head Size
0(large) or (small)
@k0(large) or @k1(small)

Voiced Gain
0 to 8
@Bn (breathiness)

Punctuation
0 to 1
@P0 to @P1

Word Pause
0 to 9
@Q0 to @Q9

Phrase Pause
0 to 15
@D0 to @DF

Spell Mode
0 to 1
@S0 to @S1






4.1 Preset Voices
The drivers support 7 preset voices,  defined by the driver and not the "ini" 
file.

5. Start-up Operation

5.1 Serial Synthesiser Driver,  DolSer2.dll
On start-up the driver first checks that serial communications ports are 
available, and if none seems to be it loads DolAlt2 and redirects all calls to the 
driver to it.  If communications ports are available it then either:
Searches for a synthesiser on any of the 9 ports allowed to Windows if no "ini" 
file exists.
Or, if an "ini" file exists it tests for a synthesiser on the specified port at the 
specified baud rate,  but if the test fails it searches for the synthesiser again and 
updates the "ini" file.
The driver return to the calling program with a start-up error if no synthesiser 
can be found.

5.2 PC2 Card Synthesiser Driver,  DolCrd2.dll
If no "ini" file exists on start-up,  the driver searches for a synthesiser at the 2 
default addresses.  If it finds a PC2 Card it creates the ini file  and enters the 
card address in decimal, e.g.
	CardPort=792
If the "ini" file exists the driver tests for a synthesiser at the specified address,  
but if the test fails it searches for the synthesiser again.  If it finds one it then 
updates the "ini" file.
The driver returns to the calling program with a start-up error if no synthesiser 
is found.
To use a non-standard address,  the address links on the PC2 card must be 
altered as described in the Apollo 2 manual.  DolCrd2.ini must either be 
created if non exists already and edited to give the new card address.  The line 
in the ini file is:
	CardPort=<address in decimal>

6. Serial Communications
When working with version 2.02 synthesiser ROM engines,  DolSer2 uses the 
more efficient,  full-duplex, communications mode.  With older ROMS is has 
to use a slightly slower half duplex.

6.1 Safe-Mode
Support for safe-mode operation is provided,  but the responsiveness and 
functionality of the serial driver are limited.  However enough speech should 
be obtained to allow the user to get back to normal mode.
In safe-mode none of the standard windows' communications functions 
operate,  (so Hyperterminal does not work and files cannot be printed). 
DolSer2 tests for available communications ports and if none is available it 
loads DolAlt2.dll,  a modified version of the older S S I L driver which writes 
to the communications port hardware (UARTs) directly.  This is not normally 
recommended for Windows 95.  All actions requested of the new driver are 
then passed to DolAlt2.dll.  DolAlt2.dll is copied by the install program to the 
same path as DolSer2.dll.
This is not as responsive as the new driver.
Language switching will not work.  You will have only one (default) language 
in Slot 1. 
We recommend the user returns to normal  mode operation as soon as they are 
able to.

7. Compatibility with Older Synthesiser ROMs
The S S I L driver's synthesiser search routine detects synthesisers with older 
ROMs.  The drivers will still work with them if no synthesiser is found with a 
version 2.02 or above ROM.
However there will be a number of restrictions.
With all earlier ROMs the serial communications performance is impaired as 
the communication is more inefficient (half-duplex and not full duplex).
With ROM engines earlier than 2.01 no language information is produced in 
response to the @L command.  In this case the driver assumes one language in 
Slot 1 assumed to be English.
As a temporary measure it is possible for the user to edit their "ini" file to 
include language information in the same way as for the old S S I L drivers.  
For each ROM slot used the ini file has two lines,  e.g. for UK English in slot 
1:
	rom1id=0044
	rom1string=UK English
for French in slot 5:
	rom5id=0033
	rom5string=French
The version 1 ROMs for the Apollo 2 do not support some of the parameters 
available to the newer ROMs which are used by the driver.  For this reason 
users with old ROMs MUST upgrade them as soon as possible as otherwise 
the speech quality and screen reader performance will be impaired.

