Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!swrinde!sdd.hp.com!zaphod.mps.ohio-state.edu!cis.ohio-state.edu!ucbvax!bloom-beacon!eru!kth.se!sunic!isgate!krafla!frisk From: frisk@rhi.hi.is (Fridrik Skulason) Newsgroups: comp.binaries.ibm.pc.d Subject: Re: ALED goes to the wastebasket here in Iceland Message-ID: <3256@krafla.rhi.hi.is> Date: 16 Jun 91 11:22:32 GMT References: <3245@krafla.rhi.hi.is> <1991Jun15.124052.17827@cbfsb.att.com> <1991Jun15.220717.20911@klaava.Helsinki.FI> Reply-To: frisk@rhi.hi.is (Fridrik Skulason) Organization: University of Iceland (RHI) Lines: 135 In article <1991Jun15.124052.17827@cbfsb.att.com> mbb@cbnewsb.cb.att.com (martin.brilliant) writes: >We have a large world here, and Iceland is a small country. If we all >knew how Icelandic characters are normally entered in an Icelandic >editor, more editors would provide for the entry of Icelandic characters. Huh ? What do you mean ? There is nothing special required to allow the entry of our characters. We have a special driver which translates the scan codes into the correct 8-bit codes. All that is needed is that the software stops assuming that alphabetic characters in the upper half of the character set must be an input error, and stops taking a special action to prevent the entry of our characters. I have had to patch an incredible number of programs, which assume this, and they are not $10 shareware programs - some of them are quite well known. A few examples: IBM LOGO: I spent two days on patching this program before I found the problem which prevented the entry of characters above 127. I only had to change one bit to make it work - the author had written something which went like this: CALL get_character_from_keyboard CMP AL,20H ; is it a control character ? JL check_if_cr ; yes, check if it is a CR CALL normal_char See the problem ? JL is a signed compare-and-branch instruction, which means that characters above 127 are treated as negative numbers. Changing it to JB (a one-bit change) solved this. PC/TCP from FTP software: The authors of this program were aware of problems regarding other languages than English, and other character sets than CP 437. They attempted to provide solutions, but unfortunately they did not work. I patched the program to make it usable, and have contacted the authors, so maybe the situation will improve in the future. One of the problem was that the program takes over the keyboard, disabling any installed keyboard driver. This is generally an absolute no-no if the program is to work anywhere but in the US, but PC/TCP provided a way to redefine individual keys. Unfortunately, their solution was useless to us - our language contains a number of accented wovels, where you first hit the accent key, and then a,e,i,o,u or y. This is generally not a problem - our keyboard driver handles this - generating the correct 8-bit scan code when the second character is pressed. Two scan codes - one character. They were not aware of this (I was even asked what I meant by "dead accent mark") and the program could not handle it. The second problem was when incoming characters were translated from one character set to another. They knew that PC users did not all use the same character set, so they provided a user-definable 256 byte table for mapping the characters. Problem solved ? No - as it was implemented, the mapping was totally useless. You see, before the user-definable table was used, the program would use an internal table which mapped the characters from Dec Multinational to CP 437. (Even if we assume that everybody uses Dec Multinational, which is almost, but not quite identical to ISO 8859/1, this presents a serious problem.) Assume for examle that I want to send the character 0xa1, (Upper case acute A). This character does not exist in CP 437, so it is mapped (by the internal table) to its closest equivalent - the 'A' character. Then the user-defined table can be used to map it to the right character in my character set. But this is now impossible. Even though the two character sets in use here (CP 861 and CP 850) contain "Upper case acute A", the information has been lost - the character is now just a plain 'A'. The problems were easy to solve - only took a few hours of patching, but this is a typical example of what we have to face. SUN Telnet: Two problems - the program would strip the 8th bit off characters. I think the code went something like this: INT 16H ; get character AND AL,7FH ; let's get rid of the 8th bit - we don't ; use it, so nobody else could possibly ; have any use for it. Second problem - no character set translation - solved by patching in a translation routine, to convert between ISO 8859/1 and CP 861. This is not an isolated Icelandic problem - users in the other Nordic countries and much of Europe have the same problem, if they are trying to use this program to communicate with 8-bit Unix machines, for example. I could go on listing American programs which range from being totally useless (I remember something called XYwrite which took over the keyboard interrupt, disabling our keyboard drivers) to programs which are almost usable, like dBASE (which allows us to use 19 out of 20 of our special characters, but the examples above should give you an idea. The Icelandic market is small - very small indeed - the best selling program here has only sold 1500 copies, but any program which does not work here because of character set problems will not work in Denmark, Norway, Sweden, Finland, Germany, France or practically nowhere but in the US (well, maybe in a few other English speaking countries). Any programmer which excludes him/her from a large segment of the world is (IMHO) nuts! We are getting tired of American programs (as I have said before, nobody else makes this mistake) which put in extra code to make their programs useless to us, such as masking the 8th bit). However, there are companies which have never given us any problems. The folks at Word Perfect, Microsoft, Borland and many other companies know what they are doing - well, at least in this respect :-) I have said it before, and I will say it again - "This is an 8-bit world". -frisk (sitting in front of an 8-bit PC, connected to an 8-bit Unix machine, using an 8-bit terminal emulator, and using an 8-bit editor to write this message in an 8-bit News program).