*************************************************************
*                                                           *
*    CTB Make voor GEM Spooler v2.2                         *
*                                                           *
*    (c) Steven Van Rossen, Marc Billiet, juli 1992         *
*                                                           *
*************************************************************


Doel van CTBMake:
-----------------

CTBMAKE.TTP is een TOS programma dat CTS bestanden (GEM Spooler Character
Table Source) omzet in een GEM Spooler 'karaktervertaaltabel', kortweg:
Filter (extensie CTB; Character Table). Een CTS is een tekstbestand dat
beschrijft hoe de karaktertabel is opgebouwd. De karaktertabel zelf wordt
dan door GEM Spooler gebruikt om ASCII karakters voor uw printer verstaanbaar
te maken.


Een CTS bestand aanmaken:
-------------------------

1. De CTS 'taal':
----------------

Om precies aan te geven hoe de karaktertabel er moet uitzien, maken we gebruik
van de CTS 'taal'. De syntax van deze taal is eenvoudig maar krachtig: met een
aantal woorden en symbolen kan worden aangegeven hoe elk karakter moet omgezet
worden. Daarbij moet men enkel die karakters omzetten die werkelijk vertaald
moeten worden !

Om het schrijven van een CTS te vereenvoudigen, biedt CTBMAKE de mogelijkheid
om makro's te definiren (C programmeurs kennen dit pricipe wel). Een makro
staat symbool voor een reeks printercodes die men vaak nodig heeft. Door met
een makro te werken, vermijdt men overdreven tijpwerk. De CTS taal staat
toe dat makro's  genest worden (een makro roept een reeds bestaande makro
op). CTS opdrachten die vaak gebruikt worden mag men onderbrengen in een
afzonderlijk 'include' bestand. Dit bestand wordt dan tijdens de omzetting in
het hoofdbestand opgenomen.

2. Syntax:
----------

CTS bestanden kunnen de volgende symbolen en sleutelwoorden bevatten
(optionele sleutelwoorden worden met rechte haakjes [] weergegeven):

- Symbolen:

*                    Geeft het begin van een lijn met commentaar aan, bv. :
                     * Nu volgt mijn CTS:

xxx                  x: 0, 1, ..., 9. Nummers. Bv. :
                     192, 65, 97, 127

$                    Prefix voor hexadecimale nummers, bv. :
                     $ff

%                    Prefix voor binaire nummers, bv. :
                     %10110001

=                    Is gelijk aan. Bv. :
                     139 = 105, 8, 22

'x'                  Enkele aanhalingstekens geven een ASCII teken aan:
                     '' = 'i', 8, 22

"CTS name"           De naam van de (te maken) karaktertabel wordt tussen
                     dubbele aanhalingstekens geplaatst. GEM Spooler toont
                     deze naam in de Printer dialoog (Filter). Een naam kan
                     tot 16 tekens lang zijn. Bv.

                     "HP Duits"


Sleutelwoorden:

#include "myfile"

     Include opdracht. Deze opdracht vertelt CTBMAKE dat alle informatie in
     'myfile' mee moet gecompileerd worden.

macro  MYMACRO [(myparam)] code1, code2, ... [(myparam)] ...

     Definieert een macro. Bv.:

     macro ESCAPE         27
     macro HPROMAN8       ESCAPE,40,56,85
     macro NORMAL         HPROMAN8

     macro IBM1                   ESCAPE, '7'
     macro IBM2                   ESCAPE, '6'
     macro INTERNATIONAL          ESCAPE, 'R'
     macro USA                    INTERNATIONAL, 0
     macro GERMAN(char)           INTERNATIONAL, 2, char, USA

     Een macro met parameter wordt steeds uitgevoerd met een waarde. Deze
     waarde vervangt 'myparam' in de reeks van codes waarvoor de macro sym-
     bool staat. Macro's kunnen genest worden (in een macro wordt een andere
     macro opgeroepen), maar niet recursief (een macro die zichzelf oproept,
     vormt een oneindige lus !). Een geneste macro kan geen parameters be-
     vatten. Voorbeelden:

     126 = GERMAN(126)          (met geneste macro INTERNATIONAL, zonder
                                 parameters !)


Een volledig voorbeeld van een CTS bestand vindt u aan het einde van dit
tekstbestand.


CTBMAKE opstarten
-----------------

CTBMAKE.TTP is een TOS programma dat met parameters moet gestart worden.
De syntax luidt:

     [schijf:pad]bron [[schijf:pad]doel]

Als het doelbestand niet wordt opgegeven, neemt CTBMAKE de naam van het bron-
bestand en vervangt de extentie door CTB.

Voorbeeld: start CTBMAKE.TTP (dubbelklik) vanop de desktop en een commando-
lijn verschijnt; geef het pad van het bronbestand en de naam van het bron-
bestand (c:\cts\epson.cts) in en druk return (of klik op OK). CTBMAKE conver-
teert vervolgens EPSON.CTS naar EPSON.CTB

CTBMAKE kan ook vanuit een TOS shell opgestart worden, bv. :

      ctbmake c:\cts\epson.cts

maakt een bestand aan met de naam 'epson.ctb' in c:\cts

Lees ook de handleiding van GEM Spooler voor meer informatie over karakter-
tabellen.


                            Marc Billiet,
                            Steven Van Rossen, juni 1992



Voorbeeld van een CTS bestand:

* -----------------------------------------------
*
* GEM Spooler v2.2 Character Table Source
*
* -----------------------------------------------
*

* Filter name:

"PC-8 Denmark"

* Macro's:

macro NORMAL        PC8DENM
macro HPROMAN8(x)   27,40,56,85,x,NORMAL
macro ASCII(ascii)  27,40,48,85,ascii,NORMAL
macro ECMA-94(x)    27,40,48,78,x,NORMAL
macro PC8(x)        27,40,49,48,85,x,NORMAL
macro PC850(x)      27,40,49,50,85,x,NORMAL
macro PC8DENM       27,40,49,49,85
macro ISO04(x)      27,40,49,69,x,NORMAL
macro ISO11(x)      27,40,48,83,x,NORMAL
macro ISO15(x)      27,40,48,73,x,NORMAL
macro ISO16(x)      27,40,52,83,x,NORMAL
macro ISO17(x)      27,40,50,83,x,NORMAL
macro ISO21(x)      27,40,49,71,x,NORMAL
macro ISO60(x)      27,40,48,68,x,NORMAL
macro ISO69(x)      27,40,49,70,x,NORMAL
macro LEGAL(x)      27,40,49,85,x,NORMAL

* Character translation data:

'' = 128
'' = 129
'' = 130
'' = 131
'' = 132
'' = 133
'' = 134
'' = 135
'' = 136
'' = 137
'' = 138
'' = 139
'' = 140
'' = 141
'' = 142
'' = 143
'' = 144
'' = 145
'' = 146
'' = 147
'' = 148
'' = 149
'' = 150
'' = 151
'' = 152
'' = 153
'' = 154
'' = PC8(155)
'' = 156
'' = PC8(157)
'' = PC8(225)
'' = PC8(159)
'' = 160
'' = 161
'' = 162
'' = 163
'' = 164
'' = 165
'' = PC8(166)
'' = PC8(167)
'' = 168
'' = 218
'' = 191
'' = PC8(171)
'' = PC8(172)
'' = 173
'' = PC8(174)
'' = PC8(175)
'' = 169
'' = 166
'' = 157
'' = 155
'' = HPROMAN8(161)
'' = 170
'' = 167
'' = HPROMAN8(171)
'' = HPROMAN8(168)
'' = LEGAL(125)
'' = 20
'' = LEGAL(94)
'' = LEGAL(92)
'' = LEGAL(126)
'' = 21
'' = 236
'' = 224
'' = 225
'' = 226
'' = 227
'' = 228
'' = 229
'' = 230
'' = 231
'' = 232
'' = 233
'' = 234
'' = 235
'' = 237
'' = 238
'' = 239
'' = 240
'' = 241
'' = 242
'' = 243
'' = 244
'' = 245
'' = 246
'' = 247
'' = 248
'' = 249
'' = 250
'' = 251
'' = 252
'' = 253
'' = PC-850(252)
'' = ECMA-94(175)

* End of CTS
