# TADS 2 Character Mapping Table
# Windows code page 1252 <-> ISO Latin-1
#
# To use this file, you must first compile it with MKCHRTAB (also known
# as MKCHRTAB32 for Windows 95/NT users).
#
# To compile a game using this character set mapping, prepare the game's
# source code using Windows code page 1252, then compile the game using
# this command:
#
#    tc -ctab win_la1.tcp mygame.t
#
# To play a game using ISO Latin 1 with HTML TADS on Windows, simply run
# the game normally.  The HTML TADS run-time should automatically load
# the compiled version of this mapping file.
#
# NOTE: this mapping is for use with TADS 2 only.  TADS 3 uses a
# different mapping system.


# Internal Character Set Identifier - this is a string of no more than
# four characters that uniquely and universally identifies the character
# set.  For a given character set, this ID must be the same on every
# platform.  The reason the ID must be the same everywhere is that the
# run-time uses the ID, which the compiler stores in the .GAM file, to
# choose the character set mapping file when a player loads the game.
# In order to allow you to compile your game on one system, and have
# players run the game on different systems, every system must use the
# same character set identifier for the internal character set, so that
# every platform can choose the correct character set mapping to the
# native character set.
#
# IMPORTANT - to ensure that character set identifiers are universal
# and unique, character set identifiers MUST be registered.  Currently,
# Mike Roberts (mjr_@hotmail.com) maintains the list of registered
# character set identifiers; please contact him by email if you would
# like the current list or add a new character set to the list.
#
# You do NOT need to register *native* character sets.  The native
# character set used to compile a game is not stored with the game,
# because it is irrelevant once the game is compiled -- the game is
# entirely translated to the internal character set during compilation.
# Note, however, that the TADS run-time varies by operating system in
# how it determines the native character set, and how it chooses a
# character set mapping file based on the native character set.
#
# Members of the ISO Latin-X series of character sets are all registered,
# and are assigned identifiers such of the form "LaX", where X is the
# numeric suffix to the ISO Latin name.  For example, ISO Latin-1 (ISO
# 8859-1) has identifier "La1", ISO Latin-2 has identifier "La2", and
# so on.
#
id = La1


# Full name of the internal character set - this name is stored in a
# game compiled with this internal character set, so that the run-time
# can display a sensible error message if a suitable mapping file is
# not available when a player loads the game.  The full name isn't used
# for choosing the mapping file, but is meant for the player to see.
#
# Each registered character set has an official full name, which should
# be used here to ensure that players encountering character mapping
# problems can more easily determine what file they need.  The ISO
# Latin series names should be of the form "ISO Latin-X (ISO 8859-Y)".
#
ldesc = ISO Latin-1 (ISO 8859-1)


# Extra System-specific information - this can be any string of
# characters; the meaning is system-dependent.  For DOS, this extra
# information is ignored.  Other systems use it for varying purposes.
#
# On Windows, this string contains a code page number, which the TADS
# run-time will use as the system code page when this character set is
# selected by a game.
#
# ISO Latin-1 maps well to Windows code page 1252, so use 1252 for
# games written for ISO Latin-1.
#
EXTRA_SYSTEM_INFO = 1252


# ---------------------------------------------------------------------------
# The ASCII subset 1-127 is the same in both character sets and therefore
# doesn't need to be mapped

# ISO Latin-1 and Windows code page 1252 are identical for characters
# 0xA0 through 0xFF.

160 <-> 160
161 <-> 161
162 <-> 162
163 <-> 163
164 <-> 164
165 <-> 165
166 <-> 166
167 <-> 167
168 <-> 168
169 <-> 169
170 <-> 170
171 <-> 171
172 <-> 172
173 <-> 173
174 <-> 174
175 <-> 175
176 <-> 176
177 <-> 177
178 <-> 178
179 <-> 179
180 <-> 180
181 <-> 181
182 <-> 182
183 <-> 183
184 <-> 184
185 <-> 185
186 <-> 186
187 <-> 187
188 <-> 188
189 <-> 189
190 <-> 190
191 <-> 191
192 <-> 192
193 <-> 193
194 <-> 194
195 <-> 195
196 <-> 196
197 <-> 197
198 <-> 198
199 <-> 199
200 <-> 200
201 <-> 201
202 <-> 202
203 <-> 203
204 <-> 204
205 <-> 205
206 <-> 206
207 <-> 207
208 <-> 208
209 <-> 209
210 <-> 210
211 <-> 211
212 <-> 212
213 <-> 213
214 <-> 214
215 <-> 215
216 <-> 216
217 <-> 217
218 <-> 218
219 <-> 219
220 <-> 220
221 <-> 221
222 <-> 222
223 <-> 223
224 <-> 224
225 <-> 225
226 <-> 226
227 <-> 227
228 <-> 228
229 <-> 229
230 <-> 230
231 <-> 231
232 <-> 232
233 <-> 233
234 <-> 234
235 <-> 235
236 <-> 236
237 <-> 237
238 <-> 238
239 <-> 239
240 <-> 240
241 <-> 241
242 <-> 242
243 <-> 243
244 <-> 244
245 <-> 245
246 <-> 246
247 <-> 247
248 <-> 248
249 <-> 249
250 <-> 250
251 <-> 251
252 <-> 252
253 <-> 253
254 <-> 254
255 <-> 255

#
# Windows code page 1252 has characters at code points 0x80 through
# 0x9F; these values are not used by ISO Latin-1.  Choose 0x80 as the
# invalid character in ISO Latin-1, since it's not used, and map
# all of the Windows 1252 characters in this range to this invalid
# character.  Map the invalid character back to character 0x9E in
# the Windows 1252 code page, since this is an unused and invalid
# character in that code page.
#

128 -> 128 -> 158
129 -> 128
130 -> 128
131 -> 128
132 -> 128
133 -> 128
134 -> 128
135 -> 128
136 -> 128
137 -> 128
138 -> 128
139 -> 128
140 -> 128
141 -> 128
142 -> 128
143 -> 128
144 -> 128
145 -> 128
146 -> 128
147 -> 128
148 -> 128
149 -> 128
150 -> 128
151 -> 128
152 -> 128
153 -> 128
154 -> 128
155 -> 128
156 -> 128
157 -> 128
158 -> 128
159 -> 128

#
# The remaining internal code points (0x81 through 0x9F) are not used.
# Map all of them to our code page 1252 invalid character, in case some
# game should incorrectly use one of these codes.
#

158 <- 129
158 <- 130
158 <- 131
158 <- 132
158 <- 133
158 <- 134
158 <- 135
158 <- 136
158 <- 137
158 <- 138
158 <- 139
158 <- 140
158 <- 141
158 <- 142
158 <- 143
158 <- 144
158 <- 145
158 <- 146
158 <- 147
158 <- 148
158 <- 149
158 <- 150
158 <- 151
158 <- 152
158 <- 153
158 <- 154
158 <- 155
158 <- 156
158 <- 157
158 <- 158
158 <- 159

#
# Note that you can also specify entity mappings for this character set.
# The entity mappings provide the local character set expansions for
# the HTML named entities using the standard TADS run-time.
#
# Note that the entity mappings apply *only* to the standard TADS.
# HTML TADS does *not* use any HTML entity mappings defined in a character
# mapping table file, but instead provides its own mapping mechanism.
# Therefore, we do not provide any mappings for the Windows version.

