Unix SPITBOL 13.05 Released, With Support for Unicode

The SPITBOL project is pleased to announce that Unix SPITBOL 13.05 is now available.

It can be downloaded from http://spitbol.googlecode.com/files/spitbol-13.05.tar.gz.

This release includes versions of SPITBOL for both ASCII (8-bit characters) and Unicode (32-bit characters).

The Unicode version of SPITBOL (uspitbol) uses 32-bit characters internally. Character strings are converted from UTF-8 encoding to 32-bit characters when input from the command line, the operating system environment, a pipe, or a file opened in line mode. Character strings are converted from 32-bit characters to 8-bit characters in UTF-8 format when written to a file opened in line mode, a pipe, or when passed as an argument to an operating system procedure.

Program source files, which are read by SPITBOL in line mode, may thus contain UTF-8 format Unicode characters in strings and comments. Identifiers are still restricted to ASCII.

About these ads

6 Comments

  1. paul
    Posted June 1, 2013 at 02:52 | Permalink

    Wow, neat, I had wondered if this project was still active.

    Why the move to google code?

    Do you think of using savannah.gnu.org or savannah.nongnu.org as the case may be? I bet Spitbol could be accepted as a GNU project if you wanted for it to be one.

  2. Posted August 1, 2013 at 05:10 | Permalink

    Dear Dave,

    great progess – thank you. However, some errors may have crept in between the 3.8.21 and the 13.05 versions. While the 3.8.21 version compiles the following program correctly, the new one signals I/O-errors (cannot open files), where there should be none. This is true if the program writes a .spx runtime module or is executed directly.n Thus, something must have gone wrong with file I/O somwehere.

    The longish program is (version without .spx creation):
    *******************************************************************************
    * *
    * BETAUTF8.SNO *
    * *
    * SNOBOL4/SPITBOL program to convert beta code texts to UTF8 *
    * Prototypical implementation to check the algorithm *
    * The program is heavily annotated to facilitate translation to JAVA or C *
    * *
    * (c) Burkhard Meissner, 2005-2013 *
    * *
    *******************************************************************************
    *
    * Set version information and compilation date/time.
    *
    * Variable which holds the version information; later this variable
    * will refer to the program parameters as sollicited from the command
    * line:
    *
    parms = “Version 2.20 ” date()
    *
    *
    *
    *******************************************************************************
    * *
    * The program has been written specifically for the *
    * *
    * Papyrus Project Halle-Jena-Leipzig *
    * under the direction of Professors Mehl, Scholl, Thiel *
    * *
    * and for Burkhard Meissner’s View & Find System for beta code texts (now *
    * in the public domain). *
    * *
    * It has been successfully tested with a variety of beta code texts: *
    * *
    * Thesaurus Linguae Graecae (TLG) CD-ROM E *
    * Packard Humanities Institute (PHI) CD-ROM 5.3 (Latin texts) *
    * Packard Humanities Institute (PHI) CD-ROM 7 (Greek and Latin documentary *
    * texts) *
    * Miscellaneous beta code texts from the Oxford and Eichstaett (Prof. Dr. J. *
    * Malitz) collections *
    * Beta Code versions of texts from the Frankfurt inscription data base *
    * (Prof. Clauss) *
    * *
    *******************************************************************************
    * *
    * Nearly all signs which can be reproduced in unicode have been implemented. *
    * All Greek and diacritic symbols are rendered correctly. *
    * The program notes erroneous letter-accent-combinations which are present in *
    * input text files (TLG; PHI 7; PHI53 and other text collections) and issues *
    * appropriate error and warning messages. *
    * *
    * Yudit, Mined, GVim or OpenOffice are recommended as editors for the *
    * resulting UTF8 (unicode) text files. *
    * These files can equally well be read into some lower-quality text editors. *
    * *
    * To “normalize” the text with precomposed and/or decomposed accents, use the *
    * uconv program of the unistring library or our compose/decompose filters. *
    * *
    * To use the files with editors as strange as MS-Word(R), it may be useful to *
    * translate them into UTF16 first. Under Linux, use the program recode: *
    * recode UTF-8..UTF-16 file.utf *
    * *
    * BETAUTF8 is distributed under an open source license (GPL). *
    * It may be copied and distributed freely, provided a copy of the GPL *
    * (General Public License) is made available together with the program *
    * itself, and provided a copy of this source code accompanies the program. *
    * *
    *******************************************************************************
    * *
    * *
    * *
    * The author kindly asks for suggestions of improvements and additions to be *
    * sent to him at: *
    * *
    * Prof. Dr. Burkhard Meissner *
    * Helmut Schmidt-Universitaet *
    * University of the Federal Armed Forces *
    * Chair of Ancient History *
    * Holstenhofweg 85 *
    * D-22043 Hamburg *
    * Germany *
    * Tel.: (49)-40-6541-3396 *
    * Fax.: (49)-40-6541-2098 *
    * e-mail: bmeissne@hsu-hamburg.de *
    * *
    *******************************************************************************
    * *
    * *
    * Programming language: SNOBOL4/MacroSPITBOL *
    * *
    * *
    *******************************************************************************
    *
    * Set statement limit to unlimited, speed-up processing:
    *
    &STLIMIT = -1
    *
    * For older SNOBOL4 systems to be SPITBOL-compatible:
    *
    -PLUSOPS 1
    *
    *******************************************************************************
    * *
    * The program has been successfully tested under the following systems: *
    * *
    * Marc Emmer’s SPITBOL386 (Intel extended version) under DOS, MS Windows-32 *
    * (Win-32 compatible extender), both real DOS and MS Windows systems *
    * as well as emulated systems under control of the the Linux operating *
    * system *
    * Dave Shield’s Linux-SPITBOL 386 under Linux *
    * Phil Budne’s CSNOBOL4: under DOS, Linux, Mac OS X (Darwin) with PPC *
    * and MS Windows-32 *
    * Marc Emmer’s Snobol4+ under MS-DOS and emulated DOS under Linux *
    * *
    * In principle, it should work with Mark Emmer’s MaxSPITBOL for the Apple *
    * Macintosh Computer, too, but this system could not be tested. *
    * *
    *******************************************************************************
    * *
    * There are a few small 16-bit MacroSPITBOL compilers around: *
    * *
    * Mark Emmer’s SPITPC16 (16-bit integers) and SPITPC32 (32-bit integers) *
    * as well as Robert B.K. Dewar’s older MacroSPITBOL.COM compiler (16 bit *
    * integers). These three systems provide work spaces of 64 KBytes or less. *
    * It is absolutely impossible to compile and/or run betautf8 with these three *
    * systems. *
    * *
    * Victors’ Berstis’ MinnesotaSNOBOL4.2 lacks some of the functionality *
    * required to run betautf8.sno. Betautf8.sno should, however, principally be *
    * be capable of being adapted to this system. However, the I/O functions of *
    * of MinnesotaSNOBOL4.2 seem less efficient, and we have not yet been able *
    * to use betautf8 successfully together with MinnesotaSNOBOL4.2 *
    * *
    * *
    *******************************************************************************
    * *
    * SPITBOL386 writes a stand-alone program module betautf8.exe; this version *
    * is by far the fastest *
    * Snobol4+ writes a save file betautf8.sav which runs faster, because it does *
    * not have to go through the initialization section every time it is *
    * used. Even though, this version is the slowest one. *
    * LinuxSPITBOL writes a .spx run file which contains all the program’s rou- *
    * tines in the form of indirectly-threaded code snippets. *
    * CSNOBOL4 runs about 3-4 times slower than SPITBOL386, but twice as fast as *
    * Snobol4+ *
    * *
    * CSNOBOL4 can be compiled natively for any operating system for which there *
    * is a decent C compiler. *
    * SPITBOL386 is a 32-bit application. *
    * Snobol4+ is a 16-bit DOS program. *
    * *
    *******************************************************************************
    * *
    * Compilation/Execution: *
    * *
    * SPITBOL -b -i2048k -s512k betautf8.sno *
    * SNOBOL4+ /NH betautf8.sno *
    * CSnobol4 -b -d 2048k -P 32k -S 16k betautf8.sno *
    * *
    *******************************************************************************
    * *
    * Note on the algorithm: *
    * *
    * In order to facilitate the translation to other programming languages, *
    * many of the powerful and flexible constructions of the SNOBOL4 language *
    * are not used. Instead of, for example, approaching the problem with *
    * complex string patterns (a strength of the language), we will use a *
    * “byte-by-byte-eating” approach, which is much slower and less elegant, but *
    * can be re-programmed in any language at will. Furthermore, we do not use *
    * function recursion. Our programmable beta-code converter *
    * XLATE, which is part of the V&F system, uses pattern matching and recursive *
    * functions heavily in order to provide a flexible, programmable translation *
    * environment which can be made to translate any beta code into any coding *
    * whatsoever. XLATE is intrinsically slower than BETAUTF8, though. *
    * *
    * We do, however, use the TABLE. A table is effectively a two-way associative *
    * array, which is indexed by hash values and works as a kind of look-up *
    * table. *
    * *
    * For example: *
    * X = TABLE() creates such a table *
    * X = “B” makes “A” point to “B” in the table *
    * X = “XYZ” makes “X” point to “XYZ” in the table *
    * *
    * Set up thus, the table can be referenced like this: *
    * new_letter = X new_letter points to “B” *
    * new_string = X new_string points to “XYZ” *
    * null_string = X null_string points to the null string, *
    * because X was not initialized with a *
    * value for the “aha” string. *
    * *
    *******************************************************************************
    * *
    * Limitations: *
    * *
    * – Hebrew and Coptic characters are left to later implementation. *
    * – The program assumes that the reference tags present in TLG/PHI *
    * files have been decoded already. At some stage we might modify *
    * the progran so as to allow for the decoding of entire .txt files *
    * – As yet, the main focus of the program is to guarantee that the *
    * main function (beta_convert) works properly; the program itself *
    * is more of an exercise for this function *
    * – Use V&F to produce beta code text files. Any other beta code *
    * text retrieval program might do. Betautf8 assumes that lines starting *
    * with ~ can be left as they are. If in doubt, modify your file *
    * (manually) as appropriate *
    * – With inscriptions, the program produces lots of warning messages *
    * about lower case letters in Greek. These are normally due to *
    * letters present in the text as comments or very long reference *
    * sections. You can safely ignore most of these warnings. *
    * – As yet, the program does not distinguish between lower case and *
    * upper case special letters: koppa, stigma, sampi *
    * – The program uses precombined letter/accent combinations for Greek *
    * as much as possible; it does not do so for Latin umlauts etc., *
    * given that these occur only rarely in ancient texts; therefore, *
    * umlauts may look ugly with certain fonts, especially if they are *
    * upper case. *
    * *
    *******************************************************************************
    * *
    * Bugs: *
    * *
    * All those errors which we knew about have been removed and replaced by *
    * completely new ones. *
    * *
    * *
    *******************************************************************************
    * *
    * Suggestions for improvements: *
    * *
    * – Improve umlauts: Implement a sophisticated switch construct for Latin *
    * script (similar to the Greek conversion routines) *
    * – Under CSnobol4/Snobol4+: FREEZE() all the tables prior to actually *
    * processing the files. This may lead to a speed increase. Preliminary *
    * testing, however, shows this speed increase to be significantly lower *
    * than 4%. Perhaps, this is not worth the while. *
    * – Coptic, Hebrew *
    * *
    *******************************************************************************
    *
    * Maximum line length 8 KB
    * Trim trailing blanks from input lines
    * Anchored pattern matching: No backing-up at positions 1,2,3…
    *
    &maxlngth = 8 * 1024
    &trim = 1
    &anchor = 1
    *
    *
    * Systemwide variables guiding the translation process:
    *
    *
    language_latin = “L”
    language_greek = “G”
    language_hebrew = “H”
    default_language = language_greek
    actual_language = default_language
    uppercase = “”
    *
    * Set up vital variables:
    * numbers = set of digits
    * lows = set of lower case letters
    * upps = set of uppercase letters
    * space = char(32) – space symbol
    *
    *
    *
    numbers = “0123456789”
    lows = &lcase
    upps = &ucase
    space = ” ”
    *
    * ByteOrder (BOM) marker – unnecessary, but safer
    *
    bom = char(239) char(187) char(191)
    *
    * This defines the end-of-line-conventions:
    *
    crlf = char(13) char(10)
    beta_latin = “&”
    beta_greek = “$”
    beta_add = “+”
    beta_uppercase = “*”
    beta_brackets = “[]{}”
    beta_quotation = ‘”‘
    beta_special = “%”
    beta_text_modifier = “@^”
    beta_sign = “#”
    beta_question_mark = “?”
    beta_zeichen = “,;.:-_!’`”
    beta_dihaeresis = “+”
    beta_laccents = “/\=”
    markers = beta_latin beta_greek beta_uppercase beta_brackets
    + beta_quotation beta_special beta_text_modifier beta_sign beta_question_mark
    + beta_zeichen beta_dihaeresis beta_laccents
    beta_iota_sub = “|”
    beta_greek_accents = “()/\=+” beta_iota_sub
    final_sigma_continue = numbers beta_latin beta_greek beta_uppercase
    + beta_brackets beta_special beta_text_modifier beta_sign
    + beta_question_mark
    final_sigma_stop = space “,;.:_`” ‘”‘
    languages = table()
    languages = language_latin
    languages = language_greek
    brackets = table(111)
    brackets = “["
    brackets = "]”
    brackets = “(”
    brackets = “)”
    brackets = “<"
    brackets = “>”
    brackets = “{”
    brackets = “}”
    brackets = char(226) char(159) char(166)
    brackets = char(226) char(159) char(167)
    brackets = char(226) char(140) char(138)
    brackets = char(226) char(140) char(139)
    brackets = char(226) char(140) char(136)
    brackets = char(226) char(140) char(137)
    brackets = char(226) char(140) char(136)
    brackets = char(226) char(140) char(139)
    brackets = char(226) char(140) char(138)
    brackets = char(226) char(140) char(137)
    brackets = char(206) char(135)
    brackets = char(206) char(135)
    brackets = “["
    brackets = "]”
    brackets = char(226) char(130) char(141)
    brackets = char(226) char(130) char(142)
    brackets = char(226) char(134) char(146)
    brackets = char(226) char(134) char(144)

    brackets = “["
    brackets = "]”
    brackets = “|:”
    brackets = “:|”
    brackets = char(226) char(159) char(166)
    brackets = char(226) char(159) char(167)
    brackets = char(226) char(140) char(138) char(226) char(140) char(138)
    brackets = char(226) char(140) char(139) char(226) char(140) char(139)
    brackets = char(226) char(159) char(170)
    brackets = char(226) char(159) char(171)
    brackets = char(226) char(142) char(167)
    brackets = char(226) char(142) char(171)
    brackets = char(226) char(142) char(170)
    brackets = char(226) char(142) char(170)
    brackets = char(226) char(142) char(168)
    brackets = char(226) char(142) char(172)
    brackets = char(226) char(142) char(169)
    brackets = char(226) char(142) char(173)
    brackets = char(226) char(142) char(155)
    brackets = char(226) char(142) char(158)
    brackets = char(226) char(142) char(156)
    brackets = char(226) char(142) char(159)
    brackets = char(226) char(142) char(157)
    brackets = char(226) char(142) char(160)
    *
    * The intermediate values have been reserved for special purposes
    *
    brackets = char(226) char(184) char(130)
    brackets = char(226) char(184) char(131)
    brackets = char(226) char(184) char(132)
    brackets = char(226) char(184) char(133)
    brackets = char(226) char(184) char(137)
    brackets = char(226) char(184) char(138)
    brackets = char(226) char(184) char(139)
    brackets = char(226) char(184) char(140)
    brackets = “/”
    brackets = “/”
    brackets = “//”
    brackets = “//”
    *
    * pointed brackets:
    *
    brackets<" = char(226) char(128) char(181)
    brackets2″> = char(226) char(128) char(178)
    brackets<" = “\”
    brackets6″> = “/”
    brackets<" = “\”
    brackets11″> = “/”
    brackets<" = char(226) char(128) char(181)
    *
    * Error corrected 5-7-2009 B.M.
    *
    * V this was 116 – probably an error
    brackets16″> = char(226) char(128) char(178)
    brackets<" = char(226) char(128) char(181)
    brackets19″> = char(226) char(128) char(178)
    *
    * Tables for special symbols:
    *
    quote = table(11)
    quote = ‘”‘
    quote = char(226) char(128) char(158)
    quote = ‘”‘
    quote = “‘”
    quote = “,”
    quote = “‘”
    quote = ‘”‘
    quote = “‘”
    quote = char(226) char(128) char(158)
    *
    greek_zeichen = table(11)
    latin_zeichen = table(11)
    *
    greek_zeichen = “,”
    greek_zeichen = “;”
    greek_zeichen = “.”
    greek_zeichen = char(206) char(135)
    greek_zeichen = “-”
    greek_zeichen = char(32) char(204) char(163)
    greek_zeichen = “‘”
    *
    latin_zeichen = “,”
    latin_zeichen = “;”
    latin_zeichen = “.”
    latin_zeichen = “:”
    latin_zeichen = “-”
    latin_zeichen = “!”
    latin_zeichen = “‘”
    *
    * Tables for % and # (non-alphabetic signs/symbolic signs)
    *
    percent = table(250)
    hash = table(900)
    *
    * Values – initialization of the tables:
    *
    percent = char(226) char(128) char(160)
    percent = “%1″
    percent = “*”
    percent = “/”
    percent = “%4″
    percent = “|”
    percent = “=”
    percent = “+”
    percent = “%”
    percent = “&”
    percent = “:”
    percent = char(226) char(128) char(162)
    percent = “*”
    percent = char(226) char(128) char(161)
    percent = char(194) char(167)
    percent = char(203) char(136)
    percent = char(194) char(166)
    percent = char(226) char(128) char(150)
    percent = “‘”
    percent = char(226) char(128) char(147)
    percent = char(204) char(129)
    percent = char(204) char(128)
    percent = char(204) char(130)
    percent = char(204) char(136)
    percent = char(204) char(131)
    percent = char(204) char(167)
    percent = char(204) char(132)
    percent = char(204) char(134)
    percent = char(204) char(136)
    percent = char(204) char(164)
    percent = char(32) char(204) char(147)
    percent = char(225) char(191) char(190)
    percent = char(32) char(204) char(129)
    percent = char(32) char(204) char(128)
    percent = char(32) char(204) char(130)
    percent = char(32) char(225) char(191) char(142)
    percent = char(32) char(225) char(191) char(158)
    percent = char(32) char(225) char(191) char(157)
    percent = char(32) char(225) char(191) char(159)
    percent = char(32) char(204) char(136)
    percent = char(32) char(204) char(134)
    percent = char(32) char(204) char(133)
    percent = char(226) char(143) char(149)
    percent = char(195) char(151)
    percent = char(32) char(204) char(174) char(204) char(133)
    percent = char(32) char(204) char(178) char(204) char(134)
    percent = char(32) char(204) char(171) char(204) char(133)
    percent = char(32) char(204) char(178) char(204) char(133)
    percent = char(32) char(204) char(174) char(204) char(134)
    percent =
    percent = “1/2″
    percent = “1/4″
    percent = “1/8″
    percent = “1/16″
    percent = “1/32″
    percent = “1/64″
    percent = “1/128″
    percent =
    percent =
    percent = “3/4″
    percent = “1/3″
    percent = “1/6″
    percent = “1/12″
    percent = “1/24″
    percent = “1/48″
    percent = “1/96″
    percent =
    percent =
    percent =
    percent = “2/3″
    percent = “1/50″
    percent = “1/100″
    percent = “1/15″
    percent = “1/30″
    percent =
    percent =
    percent =
    percent =
    percent =
    percent =
    percent = “v”
    percent = “vac.”
    percent = char(226) char(138) char(162)
    percent = char(226) char(138) char(163)
    percent = char(204) char(128) char(204) char(137)
    percent = char(204) char(135)
    percent = char(204) char(146)
    percent = char(204) char(136)
    percent = char(204) char(142)
    percent = “;”
    percent = “#”
    percent = “`”
    percent = “\”
    percent = “^”
    percent = “|||”
    percent = char(226) char(137) char(133)
    percent = “~”
    percent = char(194) char(177)
    percent = char(226) char(128) char(162)
    percent = char(226) char(151) char(139)
    percent = char(204) char(175)
    percent = char(204) char(140)
    percent = char(226) char(128) char(160)
    percent = char(204) char(135)
    percent = char(206) char(133)
    percent = char(225) char(191) char(141)
    percent = char(225) char(191) char(143)
    percent = char(226) char(143) char(145) char(204) char(129)
    percent = char(226) char(143) char(150)
    percent = char(226) char(148) char(144)
    percent = char(226) char(143) char(145) char(204) char(182)
    percent = char(226) char(128) char(147) char(204) char(129)
    percent = char(194) char(183)
    percent = char(204) char(138)
    percent = char(204) char(140)
    percent = char(204) char(168)
    percent = char(124)
    percent = char(226) char(136) char(180)
    percent = char(226) char(136) char(181)
    percent = char(226) char(129) char(130)
    percent = char(195) char(151)
    percent = char(45)
    percent = char(195) char(183)
    percent = char(194) char(182)
    percent = char(205) char(153)
    percent = “//”
    percent = char(202) char(188)
    percent = char(202) char(189)
    percent = char(194) char(180)
    percent = char(96)
    percent = char(225) char(191) char(128)
    percent = char(204) char(147)
    percent = char(204) char(148)
    percent = char(204) char(163)
    *
    *
    greek_percent = table(7)
    greek_percent = “?”
    greek_percent = “!”
    latin_percent = table(7)
    latin_percent = char(204) char(163)
    latin_percent = char(32) char(204) char(163)
    *
    hash = “‘”
    hash = char(207) char(159)
    hash = char(207) char(154)
    hash = char(207) char(158)
    hash = “Q”
    hash = char(207) char(160)
    hash = char(226) char(184) char(143)
    hash = char(32) char(204) char(163)
    hash = char(226) char(184) char(144)
    hash = char(204) char(129)
    hash = char(207) char(189)
    hash = char(207) char(191)
    hash = char(226) char(128) char(148)
    hash = char(226) char(128) char(187)
    hash = char(226) char(184) char(150)
    hash = “>”
    hash = char(207) char(190)
    hash = “/”
    hash = “<"
    hash = char(204) char(128)
    hash = char(226) char(151) char(161)
    hash = char(226) char(136) char(189) char(204) char(136)
    hash = char(205) char(181)
    hash = char(207) char(152)
    hash = char(226) char(136) char(189) char(204) char(136)
    hash = char(226) char(136) char(189) char(204) char(136)
    hash = char(226) char(184) char(143)
    hash = char(226) char(136) char(154)
    hash = “Deleted ”
    hash = char(194) char(183)
    hash = char(194) char(183)
    hash = char(226) char(129) char(154)
    hash = char(226) char(129) char(157)
    hash = “center of line ”
    hash = char(226) char(129) char(153)
    hash = “Dividers of other forms ”
    hash = char(207) char(189)
    hash = char(206) char(153)
    hash = “1 drachma ”
    hash = “5 drachmas ”
    hash = char(206) char(148)
    hash = “50 drachmas ”
    hash = char(206) char(151)
    hash = “500 drachmas ”
    hash = char(206) char(167)
    hash = “5 000 drachmas ”
    hash = char(206) char(156)
    hash = “.”
    hash = char(194) char(183)
    hash = char(203) char(153)
    hash = char(226) char(129) char(154)
    hash = char(226) char(129) char(157)
    hash = “.”
    hash = char(204) char(136)
    hash = “‘”
    hash = char(203) char(138)
    hash = char(203) char(139)
    hash = char(225) char(191) char(128)
    hash = char(202) char(189)
    hash = char(202) char(188)
    hash = char(206) char(148) char(205) char(133)
    hash = char(226) char(128) char(148)
    hash = char(32) char(204) char(163)
    hash = char(206) char(155) char(204) char(184)
    hash = char(206) char(187) char(204) char(184)
    hash = char(206) char(190) char(204) char(184)
    hash = char(206) char(187) char(205) char(133)
    hash = char(207) char(188)
    hash = char(206) char(155) char(204) char(165)
    hash = char(206) char(178) char(204) char(184)
    hash = char(203) char(153)
    hash = char(206) char(163)
    hash = char(226) char(136) char(158)
    hash = char(226) char(128) char(148)
    hash = char(226) char(129) char(154) char(226) char(128) char(148)
    hash = char(226) char(128) char(166) char(204) char(133)
    hash = char(226) char(178) char(128)
    hash = char(226) char(128) char(148) char(204) char(163)
    hash = char(226) char(140) char(144)
    hash = char(226) char(136) char(183) char(204) char(182)
    hash = char(226) char(136) char(183) char(204) char(180)
    hash = char(126) char(204) char(163)
    hash = char(226) char(150) char(161)
    hash = char(205) char(181)
    hash = char(32) char(204) char(189)
    hash = char(226) char(169) char(154)
    hash = “II”
    hash = char(226) char(153) char(131)
    hash = char(226) char(152) char(141)
    hash = char(226) char(153) char(143)
    hash = char(226) char(153) char(141)
    hash = char(226) char(153) char(128)
    hash = char(226) char(153) char(144)
    hash = char(226) char(153) char(132)
    hash = char(226) char(152) char(137)
    hash = char(226) char(152) char(191)
    hash = char(226) char(152) char(190)
    hash = char(226) char(153) char(130)
    hash = char(226) char(153) char(145)
    hash = char(226) char(152) char(138)
    hash = char(226) char(153) char(136)
    hash = char(226) char(153) char(142)
    hash = char(226) char(153) char(138)
    hash = char(226) char(153) char(139)
    hash = char(226) char(153) char(133)
    hash = char(226) char(153) char(146)
    hash = char(226) char(153) char(137)
    hash = char(226) char(152) char(141)
    hash = char(226) char(152) char(189)
    hash = char(226) char(152) char(140)
    hash = char(226) char(152) char(139)
    hash = char(226) char(153) char(145)
    hash = char(226) char(153) char(140)
    hash = char(226) char(153) char(142) char(204) char(189)
    hash = char(207) char(128) char(226) char(152) char(190)
    *
    * 2006-01-27:
    *

    hash = char(226) char(135) char(131)
    hash = “>”
    hash = char(226) char(184) char(142)
    hash = char(226) char(137) char(144)
    *
    * 2006-01-27:
    *
    hash = char(226) char(134) char(190)
    *
    hash = char(226) char(134) char(189)
    hash = char(226) char(184) char(142)
    hash = char(226) char(184) char(142)
    hash = char(226) char(136) char(146) char(226) char(136) char(152)
    hash = char(226) char(184) char(142)
    hash = “/”
    hash = char(226) char(151) char(143)
    hash = char(226) char(152) char(169)
    hash = “>”
    hash = char(226) char(152) char(169)
    hash = char(226) char(152) char(167)
    hash = char(226) char(128) char(148)
    hash = “{Drawing}”
    hash = char(213) char(143)
    hash = char(202) char(131)
    hash = char(226) char(184) char(144)
    hash = char(226) char(184) char(145)
    hash = char(226) char(184) char(144)
    hash = char(226) char(184) char(145)
    hash = char(206) char(167)
    hash = char(194) char(183)
    hash = char(226) char(128) char(148)
    hash = “|”
    hash = char(226) char(152) char(167)
    hash = char(226) char(184) char(142)
    hash = char(202) char(131)
    hash = char(226) char(184) char(142)
    hash = char(226) char(129) char(156)
    hash = char(226) char(184) char(148)
    hash = char(226) char(184) char(149)
    hash = char(226) char(128) char(187)
    hash = char(204) char(133) char(204) char(145)
    hash = char(207) char(189)
    hash = char(206) char(148) char(205) char(133)
    hash = char(226) char(134) char(145)
    hash = char(226) char(152) char(169)
    hash = char(226) char(184) char(147)
    hash = char(226) char(138) char(151)
    hash = char(226) char(156) char(155)
    hash = char(226) char(134) char(144)
    hash = char(203) char(134)
    hash = char(206) char(187) char(204) char(173)
    hash = char(226) char(129) char(139)
    hash = char(205) char(156)
    hash = char(226) char(184) char(146)
    hash = char(207) char(154)
    hash = char(204) char(130)
    hash = char(206) char(161) char(204) char(182)
    hash = char(226) char(129) char(152)
    hash = char(226) char(128) char(150) char(204) char(180)
    hash = “::”
    hash = char(226) char(151) char(140)
    hash = char(226) char(152) char(169)
    hash = char(226) char(134) char(145)
    hash = char(204) char(133)
    hash = char(207) char(188)
    hash = char(206) char(147)
    hash = char(206) char(166)
    hash = char(206) char(161)
    hash = char(206) char(156)
    hash = char(206) char(153)
    hash = char(206) char(152)
    hash = char(206) char(157)
    hash = char(226) char(132) char(167)
    hash = char(206) char(150)
    hash = char(206) char(149)
    hash = char(206) char(155)
    hash = char(206) char(148)
    hash = char(206) char(160)
    hash = char(206) char(169)
    hash = char(206) char(187)
    hash = char(226) char(132) char(167)
    hash = char(207) char(189)
    hash = char(206) char(159)
    hash = char(206) char(158)
    hash = char(206) char(148)
    *
    hash = char(206) char(154)
    hash = char(206) char(169)
    hash = char(206) char(151)
    hash = char(206) char(167)
    hash = char(206) char(164)
    hash = char(206) char(145)
    hash = char(206) char(146)
    hash = char(206) char(165)
    hash = char(206) char(168)
    hash = char(206) char(188)
    hash = char(226) char(156) char(179)
    hash = char(206) char(188) char(204) char(138)
    hash = char(226) char(151) char(161)
    hash = char(226) char(159) char(152)
    hash = char(226) char(159) char(128)
    hash = char(226) char(159) char(129)
    hash = char(206) char(150)
    hash = char(226) char(128) char(148)
    hash = char(226) char(129) char(158)
    hash = char(226) char(151) char(139) char(226) char(151)
    + char(139) char(226) char(151) char(139)
    hash = char(226) char(128) char(148) char(204) char(135)
    hash = char(226) char(136) char(187)
    hash = char(206) char(154) char(204) char(182)
    hash = char(207) char(187)
    hash = char(226) char(184) char(128)
    hash = char(226) char(184) char(129)
    hash = char(226) char(184) char(134)
    hash = char(226) char(184) char(135)
    hash = char(226) char(132) char(181)
    hash = char(226) char(132) char(140)
    hash = char(226) char(128) char(148)
    hash = char(226) char(143) char(151)
    hash = char(226) char(143) char(152)
    hash = char(226) char(143) char(153)
    hash = char(217) char(161)
    hash = char(217) char(162)
    hash = char(217) char(163)
    hash = char(217) char(164)
    hash = char(217) char(165)
    hash = char(217) char(166)
    hash = char(217) char(167)
    hash = char(217) char(168)
    hash = char(217) char(169)
    hash = char(217) char(160)
    hash = char(203) char(153)
    hash = char(226) char(156) char(179)
    *
    hash = “1/2 obol. ”
    hash = “1/4 obol. ”
    hash = char(206) char(167)
    hash = “/”
    hash = char(206) char(164)
    hash = char(206) char(154)
    hash = “5 obols ”
    hash = “5/4 obol ”
    hash = char(206) char(164)
    hash = “5 talents ”
    hash = “10 talents ”
    hash = “50 talents ”
    hash = “100 talents ”
    hash = “500 talents ”
    hash = “1,000 talents ”
    hash = “5,000 talents ”
    hash = “10,000 talents ”
    hash = char(206) char(163)
    hash = “5 staters ”
    hash = “10 staters ”
    hash = “50 staters ”
    hash = “100 staters ”
    hash = “500 staters ”
    hash = “1,000 staters ”
    hash = “5,000 staters ”
    hash = “10,000 staters ”
    hash = “50,000 drachmas ”
    hash = “50,000 talents ”
    hash = “50,000 staters ”
    hash = char(206) char(156)
    hash = “10 minae ”
    hash = char(206) char(167)
    hash = char(206) char(163)
    hash = char(206) char(164)
    hash = “5 chalkeioi ”
    hash = “6 chalkeioi ”
    hash = “||”
    hash = “|||”
    hash = char(194) char(183)
    hash = “2 drachmas ”
    hash = char(226) char(129) char(157)
    hash = “5 drachmas ”
    hash = “10 drachmas ”
    hash = “20 drachmas ”
    hash = “30 drachmas ”
    hash = “100,000 drachmas ”
    hash = char(206) char(153)
    hash = char(206) char(148)
    hash = “50 ”
    hash = “500 ”
    hash = char(206) char(167)
    hash = “5,000 ”
    hash = char(226) char(153) char(164)
    hash = char(226) char(156) char(135)
    hash = “W”
    hash = char(226) char(156) char(179)
    hash = char(198) char(167)
    hash = “~”
    hash = “1 obol ”
    hash = “2 obols ”
    hash = “3 obols ”
    hash = “4 obols ”
    hash = “5 obols ”
    hash = char(206) char(167)
    hash = “1 chalkus ”
    hash = “2 chalkoi ”
    hash = “3 chalkoi ”
    hash = “4 chalkoi ”
    hash = “5 chalkoi ”
    hash = “6 chalkoi ”
    hash = “7 chalkoi ”
    hash = “1/2 chalkus ”
    hash = “<"
    hash = char(206) char(148) char(205) char(180)
    hash = char(206) char(151) char(205) char(180)
    hash = char(206) char(153) char(205) char(180)
    hash = char(206) char(155) char(206) char(146)
    hash = char(226) char(134) char(131)
    hash = char(204) char(163) char(204) char(147)
    hash = char(77) char(204) char(138)
    hash = char(83) char(204) char(181) char(83) char(204) char(182)
    hash = char(88) char(204) char(182)
    hash = “=”
    hash = “-”
    hash = char(194) char(176)
    hash = “|”
    hash = char(198) char(167)
    hash = “Z”
    hash = char(196) char(144)
    hash = “Z”
    hash = char(226) char(132) char(158)
    hash = “O”
    hash = char(118) char(204) char(184)
    hash = char(73) char(204) char(182) char(73) char(204)
    + char(182) char(73) char(204) char(182)
    hash = char(90) char(204) char(182)
    hash = “\”
    hash = “\\”
    hash = char(92) char(204) char(182)
    hash = char(92) char(204) char(182) char(92) char(204) char(182)
    hash = “9”
    hash = char(226) char(132) char(146)
    hash = char(194) char(162)
    hash = char(226) char(128) char(161)
    hash = char(226) char(130) char(164)
    hash = char(195) char(159)
    hash = char(194) char(176)
    hash = char(196) char(167)
    hash = char(68) char(204) char(182)
    hash = char(197) char(146)
    hash = char(197) char(147)
    hash = char(195) char(134)
    hash = char(195) char(166)
    hash = “$”
    hash = “@”
    hash = char(196) char(177)
    hash = char(196) char(176)
    hash = char(105) char(204) char(182)
    hash = char(226) char(138) char(149)
    hash = char(194) char(169)
    hash = char(226) char(156) char(177)
    hash = char(226) char(128) char(161)
    hash = char(226) char(150) char(173)
    hash = char(77) char(226) char(128) char(153)
    hash = char(226) char(136) char(189)
    hash = char(119) char(204) char(138)
    hash = char(202) char(146)
    hash = char(203) char(153) char(47) char(47) char(46)
    hash = char(226) char(136) char(187)
    hash = char(205) char(181) char(204) char(145)
    hash = char(226) char(153) char(132)
    hash = char(206) char(182) char(204) char(183)
    + char(207) char(130) char(204) char(128)
    hash = char(206) char(184) char(207) char(130) char(204) char(130)
    hash = “//”
    hash = “>”
    hash = char(206) char(179) char(204) char(138)
    hash = char(206) char(167) char(205) char(180)
    hash = char(204) char(128) char(204) char(140)
    hash = “<"
    hash = char(226) char(151) char(161)
    hash = char(195) char(183)
    hash = char(200) char(162)
    hash = char(226) char(129) char(155)
    *
    *
    * Special tables for UNICODE diacritic letters (combining):
    *
    *
    greek_diacritics = table()
    greek_diacritics = char(204) char(163)
    *
    * Letter-accent tables
    *
    *
    greek_upper_tab = table(200)
    greek_lower_tab = table(200)
    *
    *
    *******************************************************************************
    * *
    * *
    * Uppercase Greek table: *
    * semi-automatically generated – do not touch! *
    * *
    * *
    *******************************************************************************
    *
    *
    * “Α” – 206:145 = CE 91
    greek_upper_tab = char(206) char(145)
    * “Β” – 206:146 = CE 92
    greek_upper_tab = char(206) char(146)
    * “Γ” – 206:147 = CE 93
    greek_upper_tab = char(206) char(147)
    * “Δ” – 206:148 = CE 94
    greek_upper_tab = char(206) char(148)
    * “Ε” – 206:149 = CE 95
    greek_upper_tab = char(206) char(149)
    * “Ζ” – 206:150 = CE 96
    greek_upper_tab = char(206) char(150)
    * “Η” – 206:151 = CE 97
    greek_upper_tab = char(206) char(151)
    * “Θ” – 206:152 = CE 98
    greek_upper_tab = char(206) char(152)
    * “Ι” – 206:153 = CE 99
    greek_upper_tab = char(206) char(153)
    * Attic aspiration
    greek_upper_tab = “H”
    * “Κ” – 206:154 = CE 9A
    greek_upper_tab = char(206) char(154)
    * “Λ” – 206:155 = CE 9B
    greek_upper_tab = char(206) char(155)
    * “Μ” – 206:156 = CE 9C
    greek_upper_tab = char(206) char(156)
    * “Ν” – 206:157 = CE 9D
    greek_upper_tab = char(206) char(157)
    * “Ξ” – 206:158 = CE 9E
    greek_upper_tab = char(206) char(158)
    * “Ο” – 206:159 = CE 9F
    greek_upper_tab = char(206) char(159)
    * “Π” – 206:160 = CE A0
    greek_upper_tab = char(206) char(160)
    * “Ρ” – 206:161 = CE A1
    greek_upper_tab = char(206) char(161)
    * “Σ” – 206:163 = CE A3
    greek_upper_tab = char(206) char(163)
    * “Τ” – 206:164 = CE A4
    greek_upper_tab = char(206) char(164)
    * “Î¥” – 206:165 = CE A5
    greek_upper_tab = char(206) char(165)
    * “Φ” – 206:166 = CE A6
    greek_upper_tab = char(206) char(166)
    * “Χ” – 206:167 = CE A7
    greek_upper_tab = char(206) char(167)
    * “Ψ” – 206:168 = CE A8
    greek_upper_tab = char(206) char(168)
    * “Ω” – 206:169 = CE A9
    greek_upper_tab = char(206) char(169)
    * Ἀ – 225:188:136 = E1 BC 88
    greek_upper_tab = char(225) char(188) char(136)
    * Ἁ – 225:188:137 = E1 BC 89
    greek_upper_tab = char(225) char(188) char(137)
    * Ἂ – 225:188:138 = E1 BC 8A
    greek_upper_tab = char(225) char(188) char(138)
    * Ἃ – 225:188:139 = E1 BC 8B
    greek_upper_tab = char(225) char(188) char(139)
    * Ἄ – 225:188:140 = E1 BC 8C
    greek_upper_tab = char(225) char(188) char(140)
    * Ἅ – 225:188:141 = E1 BC 8D
    greek_upper_tab = char(225) char(188) char(141)
    * Ἆ – 225:188:142 = E1 BC 8E
    greek_upper_tab = char(225) char(188) char(142)
    * Ἇ – 225:188:143 = E1 BC 8F
    greek_upper_tab = char(225) char(188) char(143)
    * Ἐ – 225:188:152 = E1 BC 98
    greek_upper_tab = char(225) char(188) char(152)
    * Ἑ – 225:188:153 = E1 BC 99
    greek_upper_tab = char(225) char(188) char(153)
    * Ἒ – 225:188:154 = E1 BC 9A
    greek_upper_tab = char(225) char(188) char(154)
    * Ἓ – 225:188:155 = E1 BC 9B
    greek_upper_tab = char(225) char(188) char(155)
    * Ἔ – 225:188:156 = E1 BC 9C
    greek_upper_tab = char(225) char(188) char(156)
    * Ἕ – 225:188:157 = E1 BC 9D
    greek_upper_tab = char(225) char(188) char(157)
    * Ἠ – 225:188:168 = E1 BC A8
    greek_upper_tab = char(225) char(188) char(168)
    * Ἡ – 225:188:169 = E1 BC A9
    greek_upper_tab = char(225) char(188) char(169)
    * Ἢ – 225:188:170 = E1 BC AA
    greek_upper_tab = char(225) char(188) char(170)
    * Ἣ – 225:188:171 = E1 BC AB
    greek_upper_tab = char(225) char(188) char(171)
    * Ἤ – 225:188:172 = E1 BC AC
    greek_upper_tab = char(225) char(188) char(172)
    * á¼­ – 225:188:173 = E1 BC AD
    greek_upper_tab = char(225) char(188) char(173)
    * á¼® – 225:188:174 = E1 BC AE
    greek_upper_tab = char(225) char(188) char(174)
    * Ἧ – 225:188:175 = E1 BC AF
    greek_upper_tab = char(225) char(188) char(175)
    * Ἰ – 225:188:184 = E1 BC B8
    greek_upper_tab = char(225) char(188) char(184)
    * á¼¹ – 225:188:185 = E1 BC B9
    greek_upper_tab = char(225) char(188) char(185)
    * Ἲ – 225:188:186 = E1 BC BA
    greek_upper_tab = char(225) char(188) char(186)
    * á¼» – 225:188:187 = E1 BC BB
    greek_upper_tab = char(225) char(188) char(187)
    * á¼¼ – 225:188:188 = E1 BC BC
    greek_upper_tab = char(225) char(188) char(188)
    * á¼½ – 225:188:189 = E1 BC BD
    greek_upper_tab = char(225) char(188) char(189)
    * á¼¾ – 225:188:190 = E1 BC BE
    greek_upper_tab = char(225) char(188) char(190)
    * Ἷ – 225:188:191 = E1 BC BF
    greek_upper_tab = char(225) char(188) char(191)
    * Ὀ – 225:189:136 = E1 BD 88
    greek_upper_tab = char(225) char(189) char(136)
    * Ὁ – 225:189:137 = E1 BD 89
    greek_upper_tab = char(225) char(189) char(137)
    * Ὂ – 225:189:138 = E1 BD 8A
    greek_upper_tab = char(225) char(189) char(138)
    * Ὃ – 225:189:139 = E1 BD 8B
    greek_upper_tab = char(225) char(189) char(139)
    * Ὄ – 225:189:140 = E1 BD 8C
    greek_upper_tab = char(225) char(189) char(140)
    * Ὅ – 225:189:141 = E1 BD 8D
    greek_upper_tab = char(225) char(189) char(141)
    * ὎ – 225:189:142 = E1 BD 8E
    greek_upper_tab = char(225) char(189) char(142)
    * ὏ – 225:189:143 = E1 BD 8F
    greek_upper_tab = char(225) char(189) char(143)
    * ὘ – 225:189:152 = E1 BD 98
    ***
    *** Diese Form wird von den meisten fonts noch nicht unterstuetzt:
    ***
    *** greek_upper_tab = char(225) char(189) char(152)
    ***
    *** Statt dessen verwenden wir ) plus normales Y:
    ***
    greek_upper_tab = char(225) char(190) char(191) char(206) char(165)
    * Ὑ – 225:189:153 = E1 BD 99
    greek_upper_tab = char(225) char(189) char(153)
    * ὚ – 225:189:154 = E1 BD 9A
    greek_upper_tab = char(225) char(189) char(154)
    * Ὓ – 225:189:155 = E1 BD 9B
    greek_upper_tab = char(225) char(189) char(155)
    * ὜ – 225:189:156 = E1 BD 9C
    greek_upper_tab = char(225) char(189) char(156)
    * Ὕ – 225:189:157 = E1 BD 9D
    greek_upper_tab = char(225) char(189) char(157)
    * ὞ – 225:189:158 = E1 BD 9E
    greek_upper_tab = char(225) char(189) char(158)
    * Ὗ – 225:189:159 = E1 BD 9F
    greek_upper_tab = char(225) char(189) char(159)
    * Ὠ – 225:189:168 = E1 BD A8
    greek_upper_tab = char(225) char(189) char(168)
    * Ὡ – 225:189:169 = E1 BD A9
    greek_upper_tab = char(225) char(189) char(169)
    * Ὢ – 225:189:170 = E1 BD AA
    greek_upper_tab = char(225) char(189) char(170)
    * Ὣ – 225:189:171 = E1 BD AB
    greek_upper_tab = char(225) char(189) char(171)
    * Ὤ – 225:189:172 = E1 BD AC
    greek_upper_tab = char(225) char(189) char(172)
    * á½­ – 225:189:173 = E1 BD AD
    greek_upper_tab = char(225) char(189) char(173)
    * á½® – 225:189:174 = E1 BD AE
    greek_upper_tab = char(225) char(189) char(174)
    * Ὧ – 225:189:175 = E1 BD AF
    greek_upper_tab = char(225) char(189) char(175)
    * ᾈ – 225:190:136 = E1 BE 88
    greek_upper_tab = char(225) char(190) char(136)
    * ᾉ – 225:190:137 = E1 BE 89
    greek_upper_tab = char(225) char(190) char(137)
    * ᾊ – 225:190:138 = E1 BE 8A
    greek_upper_tab = char(225) char(190) char(138)
    * ᾋ – 225:190:139 = E1 BE 8B
    greek_upper_tab = char(225) char(190) char(139)
    * ᾌ – 225:190:140 = E1 BE 8C
    greek_upper_tab = char(225) char(190) char(140)
    * ᾍ – 225:190:141 = E1 BE 8D
    greek_upper_tab = char(225) char(190) char(141)
    * ᾎ – 225:190:142 = E1 BE 8E
    greek_upper_tab = char(225) char(190) char(142)
    * ᾏ – 225:190:143 = E1 BE 8F
    greek_upper_tab = char(225) char(190) char(143)
    * ᾘ – 225:190:152 = E1 BE 98
    greek_upper_tab = char(225) char(190) char(152)
    * ᾙ – 225:190:153 = E1 BE 99
    greek_upper_tab = char(225) char(190) char(153)
    * ᾚ – 225:190:154 = E1 BE 9A
    greek_upper_tab = char(225) char(190) char(154)
    * ᾛ – 225:190:155 = E1 BE 9B
    greek_upper_tab = char(225) char(190) char(155)
    * ᾜ – 225:190:156 = E1 BE 9C
    greek_upper_tab = char(225) char(190) char(156)
    * ᾝ – 225:190:157 = E1 BE 9D
    greek_upper_tab = char(225) char(190) char(157)
    * ᾞ – 225:190:158 = E1 BE 9E
    greek_upper_tab = char(225) char(190) char(158)
    * ᾟ – 225:190:159 = E1 BE 9F
    greek_upper_tab = char(225) char(190) char(159)
    * ᾨ – 225:190:168 = E1 BE A8
    greek_upper_tab = char(225) char(190) char(168)
    * ᾩ – 225:190:169 = E1 BE A9
    greek_upper_tab = char(225) char(190) char(169)
    * ᾪ – 225:190:170 = E1 BE AA
    greek_upper_tab = char(225) char(190) char(170)
    * ᾫ – 225:190:171 = E1 BE AB
    greek_upper_tab = char(225) char(190) char(171)
    * ᾬ – 225:190:172 = E1 BE AC
    greek_upper_tab = char(225) char(190) char(172)
    * á¾­ – 225:190:173 = E1 BE AD
    greek_upper_tab = char(225) char(190) char(173)
    * á¾® – 225:190:174 = E1 BE AE
    greek_upper_tab = char(225) char(190) char(174)
    * ᾯ – 225:190:175 = E1 BE AF
    greek_upper_tab = char(225) char(190) char(175)
    * Ὰ – 225:190:186 = E1 BE BA
    greek_upper_tab = char(225) char(190) char(186)
    * á¾» – 225:190:187 = E1 BE BB
    greek_upper_tab = char(225) char(190) char(187)
    * á¾¼ – 225:190:188 = E1 BE BC
    greek_upper_tab = char(225) char(190) char(188)
    * Ὲ – 225:191:136 = E1 BF 88
    greek_upper_tab = char(225) char(191) char(136)
    * Έ – 225:191:137 = E1 BF 89
    greek_upper_tab = char(225) char(191) char(137)
    * Ὴ – 225:191:138 = E1 BF 8A
    greek_upper_tab = char(225) char(191) char(138)
    * Ή – 225:191:139 = E1 BF 8B
    greek_upper_tab = char(225) char(191) char(139)
    * ῌ – 225:191:140 = E1 BF 8C gross
    greek_upper_tab = char(225) char(191) char(140)
    * Ὶ – 225:191:154 = E1 BF 9A
    greek_upper_tab = char(225) char(191) char(154)
    * Ί – 225:191:155 = E1 BF 9B
    greek_upper_tab = char(225) char(191) char(155)
    * Ὺ – 225:191:170 = E1 BF AA
    greek_upper_tab = char(225) char(191) char(170)
    * á¿« – 225:191:171 = E1 BF AB
    greek_upper_tab = char(225) char(191) char(171)
    * Ῥ – 225:191:172 = E1 BF AC
    greek_upper_tab = char(225) char(191) char(172)
    * Ὸ – 225:191:184 = E1 BF B8
    greek_upper_tab = char(225) char(191) char(184)
    * Ό – 225:191:185 = E1 BF B9
    greek_upper_tab = char(225) char(191) char(185)
    * Ὼ – 225:191:186 = E1 BF BA
    greek_upper_tab = char(225) char(191) char(186)
    * á¿» – 225:191:187 = E1 BF BB
    greek_upper_tab = char(225) char(191) char(187)
    * ῼ – 225:191:188 = E1 BF BC
    greek_upper_tab = char(225) char(191) char(188)
    * alpha iota sub á¾¼
    greek_upper_tab = char(225) char(190) char(188)
    * upsilon and dihaeresis Ϋ
    greek_upper_tab = char(206) char(171)
    * iota dihaeresis Ϊ
    greek_upper_tab = char(206) char(170)
    * spiritus lenis: ῾
    greek_upper_tab = char(225) char(191) char(190)
    * digamma capital: Ϝ
    greek_upper_tab = char(207) char(156)
    *
    *
    *******************************************************************************
    * *
    * *
    * Lower Greek table: *
    * *
    * *
    *******************************************************************************
    *
    * “α” – 206:177 = CE B1
    greek_lower_tab = char(206) char(177)
    * “β” – 206:178 = CE B2
    greek_lower_tab = char(206) char(178)
    * “γ” – 206:179 = CE B3
    greek_lower_tab = char(206) char(179)
    * “δ” – 206:180 = CE B4
    greek_lower_tab = char(206) char(180)
    * “δ'” – 206:180 = CE B4 27 erroneous d’, present in some texts on the TLG CD E
    greek_lower_tab = char(206) char(180) char(39)
    * “ε” – 206:181 = CE B5
    greek_lower_tab = char(206) char(181)
    * “ζ” – 206:182 = CE B6
    greek_lower_tab = char(206) char(182)
    * “η” – 206:183 = CE B7
    greek_lower_tab = char(206) char(183)
    * “θ” – 206:184 = CE B8
    greek_lower_tab = char(206) char(184)
    * “ι” – 206:185 = CE B9
    greek_lower_tab = char(206) char(185)
    * Attic aspiration:
    greek_lower_tab = “h”
    * “κ” – 206:186 = CE BA
    greek_lower_tab = char(206) char(186)
    * “λ” – 206:187 = CE BB
    greek_lower_tab = char(206) char(187)
    * “μ” – 206:188 = CE BC
    greek_lower_tab = char(206) char(188)
    * “ν” – 206:189 = CE BD
    greek_lower_tab = char(206) char(189)
    * “ξ” – 206:190 = CE BE
    greek_lower_tab = char(206) char(190)
    * “ο” – 206:191 = CE BF
    greek_lower_tab = char(206) char(191)
    * “π” – 207:128 = CF 80
    greek_lower_tab = char(207) char(128)
    * “ρ” – 207:129 = CF 81
    greek_lower_tab = char(207) char(129)
    * “ς” – 207:130 = CF 82 – final sigma
    greek_lower_tab = char(207) char(130)
    * “σ” – 207:131 = CF 83
    greek_lower_tab = char(207) char(131)
    * “τ” – 207:132 = CF 84
    greek_lower_tab = char(207) char(132)
    * “υ” – 207:133 = CF 85
    greek_lower_tab = char(207) char(133)
    * “φ” – 207:134 = CF 86
    greek_lower_tab = char(207) char(134)
    * “χ” – 207:135 = CF 87
    greek_lower_tab = char(207) char(135)
    * “ψ” – 207:136 = CF 88
    greek_lower_tab = char(207) char(136)
    * “ω” – 207:137 = CF 89
    greek_lower_tab = char(207) char(137)
    * “ά” – 206:172 = CE AC

  3. Posted August 1, 2013 at 05:18 | Permalink

    Dear Dave,

    great progess – thank you. However, some errors may have crept in between the 3.8.21 and the 13.05 versions. While the 3.8.21 version compiles the following program correctly, the new one signals I/O-errors (cannot open files), where there should be none. This is true if the program writes a .spx runtime module or is executed directly.n Thus, something must have gone wrong with file I/O somwehere.

    The longish program is (version with .spx creation):

    http://www2.hsu-hh.de/hisalt/projects/downloads/betautf8.sno

    It should write an .spx file:

    spitbol -b -i512k -s512k betautf8.sno

    and used like this:

    spitbol -u “test.bet test.utf” betautf8.spx

    on files like this:

    ~ Author: Polybius Hist.
    ~ File/No.: TLG0543
    ~ Work: Testimonium
    3.1.1.1.2b,173,T.1.1 $@&POLYB. X 21, 2%10 $TOU= DE\ KAIROU= TOU= KATA\ TH\N DIH/GHSIN
    3.1.1.1.2b,173,T.1.2 $E)FESTAKO/TOS H(MA=S E)PI\ TH\N A)RXH\N TW=N *FILOPOI/MENOS PRA/CEWN, KAQH/KEIN
    3.1.1.1.2b,173,T.1.3 $H(GOU/MEQA, KAQA/PER KAI\ PERI\ TW=N A)/LLWN TW=N A)CIOLO/GWN A)NDRW=N TA\S
    3.1.1.1.2b,173,T.1.4 $E(KA/STWN A)GWGA\S KAI\ FU/SEIS E)PEIRA/QHMEN U(PODEIKNU/NAI, KAI\ PERI\ TOU/TOU
    3.1.1.1.2b,173,T.1.5 $POIH=SAI TO\ PARAPLH/SION. …. &[1`5]1 $EI) ME\N OU)=N MH\ KAT’ I)DI/AN E)PEPOIH/MEQA
    3.1.1.1.2b,173,T.1.6 $TH\N PERI\ AU)TOU= SU/NTACIN, E)N H(=I DIESAFOU=MEN KAI\ TI/S H)=N KAI\ TI/NWN KAI\
    3.1.1.1.2b,173,T.1.7 $TI/SIN A)GWGAI=S E)XRH/SATO NE/OS W)/N, A)NAGKAI=ON H)=N U(PE\R E(KA/STOU TW=N PROEIRH-
    3.1.1.1.2b,173,T.1.8 $ME/NWN FE/REIN A)POLOGISMO/N. &[1`6]1 $E)PEI\ DE\ PRO/TERON E)N TRISI\N BIBLI/OIS E)KTO\S
    3.1.1.1.2b,173,T.1.9 $TAU/THS TH=S SUNTA/CEWS TO\N U(PE\R AU)TOU= PEPOIH/MEQA LO/GON, TH/N TE PAIDIKH\N
    3.1.1.1.2b,173,T.1.10 $A)GWGH\N DIASAFOU=NTES KAI\ TA\S E)PIFANESTA/TAS PRA/CEIS, &[1`7]1 $DH=LON W(S E)N
    3.1.1.1.2b,173,T.1.11 $TH=I NU=N E)CHGH/SEI PRE/PON A)\N EI)/H TH=S ME\N NEWTERIKH=S A)GWGH=S KAI\ TW=N NEW-
    3.1.1.1.2b,173,T.1.12 $TERIKW=N ZH/LWN KATA\ ME/ROS A)FELEI=N, TOI=S DE\ KATA\ TH\N A)KMH\N AU)TOU= KEFA-
    3.1.1.1.2b,173,T.1.13 $LAIWDW=S E)KEI= DEDHLWME/NOIS E)/RGOIS PROSQEI=NAI KAI\ KATA\ ME/ROS, I(/NA TO\
    3.1.1.1.2b,173,T.1.14 $PRE/PON E(KATE/RAI TW=N SUNTA/CEWN THRW=MEN. &[1`8]1 $W(/SPER GA\R E)KEI=NOS O( TO/POS
    3.1.1.1.2b,173,T.1.15 $U(PA/RXWN E)GKWMIASTIKO\S A)PH/ITEI TO\N KEFALAIW/DH KAI\ MET’ AU)CH/SEWS TW=N
    3.1.1.1.2b,173,T.1.16 $PRA/CEWN A)POLOGISMO/N, OU(/TWS O( TH=S I(STORI/AS, KOINO\S W)\N E)PAI/NOU KAI\
    3.1.1.1.2b,173,T.1.17 $YO/GOU, ZHTEI= TO\N A)LHQH= KAI\ TO\N MET’ A)PODEI/CEWS KAI\ TW=N E(KA/STOIS PARE-
    3.1.1.1.2b,173,T.1.18 $POME/NWN SULLOGISMW=N.
    3.1.1.1.2b,173,T.2.1 $@&CIC. Epp. ad. fam. V 12, 2%10 &3….. ut multi Graeci fecerunt,
    3.1.1.1.2b,173,T.2.2 $&3Callisthenes &[1`124 T 25]1 &3Phocicum bellum, Timaeus &[1III]1 &3Pyrrhi, Polybius
    3.1.1.1.2b,173,T.2.3 $&3Numantinum, qui omnes a perpetuis suis historiis ea quae dixi bella
    3.1.1.1.2b,173,T.2.4 $&3separaverunt. @1

    ##########################################

    end of data
    ##########################################

    Instead, it signals incapacity to open files. This is not so with the older compiler.
    If in line 2081, you comment out the writing of an .spx file and use the program as such, the result
    remains the same.

    Something must have crept in which interferes with the opening of files, I guess.

    Nevertheless: Spitbol is as such already a very fast and reliable implementation (3.8.21). What has to be done to add external functions? I would very much like to have loading of external functions, I admit.

    Thank you for your devotion to SPITBOL and for your work on it!

    Best wishes

    Burkhard Meissner

  4. Burkhard Meißner
    Posted October 12, 2013 at 04:18 | Permalink

    Dear Dave,

    one of the reasons for file I/O going wrong is that the -m and -n parameters to the INPUT() and OUTPU() functions have disappeared. [e.d.: INPUT(.in,1,”textfile.txt [ -m13 -n10 -l8000]“).

    Will they be re-ontroduced?

    Could you, at some stage, sketch a callextfun aseembly function to call external functions?

    Thank you very much

    Keep up good work

    Burkhard

  5. Burkhard Meißner
    Posted October 12, 2013 at 05:36 | Permalink

    Dear Dave,
    the second reason for file I/O to go wrong with the new system as opposed to older versions is that opening files for I/O in save files (.spx) seems to work differently from opening them in programs running directly as spitbol programs (.spt files). I/O which works when the program is run without writing an .spx file does not work once an .spx file has been written. Of course, in both cases the files are opened at a position AFTER writing the .spx file. That is: In save files file I/O seems to have errors.

  6. Burkhard Meißner
    Posted October 13, 2013 at 14:21 | Permalink

    Dear Dave,
    the error with save files must have crept in with version 13.01, because there it is manifest. In 13.05 there is also something wrong with the i/o of not-saved programs.

    Burkhard


Post a Comment

Required fields are marked *
*
*

  • Pages

  • May 2013
    M T W T F S S
    « Jan   Jan »
     12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
  • RSS The Wayward Word Press

  • Recent Comments

    daveshields on SNOBOL4 for Linux
    Walter Rutherford on SNOBOL4 for Linux
    David Plummer on SNOBOL4 for Linux
    David Plummer on SNOBOL4 for Linux
    Thomas A Naegele on SNOBOL4 for Linux
  • Archives

  • Blog Stats

  • Top Posts

  • Top Rated

  • Recent Posts

  • Archives

  • Top Rated

  • %d bloggers like this: