Оберон-клуб «ВЄДАsoft»

Твердыня модульных языков
Текущее время: 22 май 2024, 00:54

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: ZXDev + кириллица
СообщениеДобавлено: 21 май 2014, 04:37 
Не в сети
Аватара пользователя

Сообщения: 1019
Откуда: Днепропетровская обл.
Способ №1. Отзвуки UDG и первой половины таблицы символов

Шрифтами у нас ведает модуль GrFonts. Массив символов прописан в файле ZXDev/Lib/GrFonts.c, добавим туда русский шрифт. Подключить легко:
Код: "OBERON"
  1. MODULE DemoRus; (*$MAIN*)
  2. IMPORT Basic, GrFonts;
  3.  
  4. BEGIN
  5. Basic.FONT(GrFonts.ZxSpecRus8x8);
  6. Basic.PRSTR("priwet mir!");
  7. END DemoRus.
Из неудобств: хочется писать "ПРИВЕТ МИР", а не "priwet mir".


Вложения:
DemoRus.tap [969 байт]
Скачиваний: 730
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: ZXDev + кириллица
СообщениеДобавлено: 21 май 2014, 04:49 
Не в сети
Аватара пользователя

Сообщения: 1019
Откуда: Днепропетровская обл.
Способ №2. Портабельный

Это примерно то же самое, но зато портабельно:
Код: "OBERON"
  1. MODULE ConsoleRus; (*$MAIN*)
  2. IMPORT IO := Console, GrFonts;
  3.  
  4. BEGIN
  5. IO.SetFont(GrFonts.ZxSpecRus8x8);
  6. IO.WriteStr("priwet mir!");
  7. IO.SetFont(GrFonts.ZxSpecRom8x8);
  8. IO.WriteStrLn("HELLO WORLD!");
  9. END ConsoleRus.

Оба эти способа работают с выводом как с помощью ПЗУ (RST 8), так и кастомно (для модуля Console это OUTPUT_COMPACT или OUTPUT_FAST, что прописывается в конфигураторе ConsoleCfg.h).


Вложения:
HelloRus.png
HelloRus.png [ 7.81 КБ | Просмотров: 20478 ]
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: ZXDev + кириллица
СообщениеДобавлено: 21 май 2014, 04:53 
Не в сети
Аватара пользователя

Сообщения: 1019
Откуда: Днепропетровская обл.
Способ №3. Самый правильный, но пока не реализован

Это чтобы писать WriteStr("ПРИВЕТ МИР") и не переключаться между шрифтами для вывода русского и латинского. Трудность в реализации — это кодировки. В планах есть поддержка кодировок DOS 866 и Windows 1251, выбирать же нужную наверное будет наиболее правильно с помощью директивы, зашитой в комменты, типа:

Код: "OBERON"
  1. (*$CP866*) и (*$CP1251*)
Но, повторюсь, это ещё не реализованная возможность. Идеи приветствуются.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: А можно ещё и так:
СообщениеДобавлено: 01 июн 2014, 00:23 
Не в сети
Аватара пользователя

Сообщения: 1019
Откуда: Днепропетровская обл.
Адаптировал для ZXDev процедуру LITERY из пакета подпрограмм New Supercode.


Вложения:
PriwetMir.png
PriwetMir.png [ 24.04 КБ | Просмотров: 20444 ]
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: ZXDev + кириллица
СообщениеДобавлено: 25 июн 2014, 18:20 
Не в сети
Администратор
Аватара пользователя

Сообщения: 273
Откуда: Россия
Когда-то очень давно у меня была идея объединить в одном знакогенераторе русские и английские буквы, воспользовавшись сходством по внешнему виду. Например, русские быквы «А,В,С,К,О» похожи на «Эй,Би,Си, Кей,Оу».
Но можно пойти и дальше. Если мы можем задать свой знакогенератор, то можно чуть изменить начертание буквы, получив "нечто среднее" между русской и английской, которое можно использовать вместо и той и другой. Например, "D" и "g" можно считать специальными "рукописными" формами буквы "Д" (ну может чуть завитушек у D слева добавить). Английская "r" похожа на "г", "b" на заглавный мягкий знак. Если чуть укоротить палочку у "k", то она станет и русской и английской одновременно. Из "Ш" и "W" можно сделать нечто среднее.
Можно объединить не только буквы, но и цифры: букву О и ноль, четыре и Ч, тройку и З, шесть и "бэ". Не помню соединял ли я "в" и восемь или обошелся.
Эта идея возникла у меня после прочтения статьи в журнале "Радио" об одноименном компьютере. Там объяснялось, что по техническим причинам невозможно иметь в знакогенераторе более 128 символов, поэтому там и есть только заглавные английские и русские буквы.
Но, по моим прикидкам, вот таким объединением удалось впихнуть в 128 символов все 64 русские буквы (заглавные и строчные) и .... вот не буду врать, уже не помню, то ли все английские, то ли только заглавные. Правда пришлось выкинуть всю псевдографику.
Все символы должны иметь уникальные 8-битовые коды (КОИ8), которые вводились бы с клавиатуры и хранились в текстовых переменных. Но драйвер вывода должен бы в текстовую экранную память помещать некоторые коды не напрямую, а преобразовав в другой, как показано выше.
Ни у меня, ни у кого поблизости не было тогда никакого компьютера, писать статью в журнал я поленился (или постеснялся). Так что идея была чисто теоретическая:я просто прикинул на бумаге какие буквы на какие похожи. Я даже поленился рисовать их в клеточках знакогенератора, вполне возможно, что "стилизованные русанглийские" символы выглядели бы неразборчиво в знакоместах 6х8.
Конечно идея использовать сходство начертаний не нова, в любой более-менее приличной русскоязычной книге про Спектрум можно прочесть про использование графики UDG, цифры 3 и сходных по начертанию английских букв для получения на экране всего русского алфавита (включая Ё), правда только в заглавном варианте. Однако, используя изложенные в начале поста соображения, можно "форсировать сходство" и создать специальный алфавит, содержащий и русские и английские символы одновременно без необходимости переключения. Русские и английские буквы в текстовых строках будут иметь уникальные коды в какой-то кодировке, а замену кодов будут производить процедуры вывода. Так что эта старая идея, возможно, кому-то пригодится и сейчас.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: ZXDev + кириллица
СообщениеДобавлено: 27 июн 2014, 13:56 
Не в сети
Аватара пользователя

Сообщения: 1019
Откуда: Днепропетровская обл.
Для облегчения реализации этой идеи с укладыванием всего множества символов в 128 кодов (и возможности использовать различные кодировки) есть такое предложение: реализовать в XDev/Ofront самостоятельное приведение всех строк в исходнике при компиляции к нужной кодировке, указанной, например, в комментарии специального вида. Притом чтобы можно было использовать и готовые таблицы кодировок, и пользовательские. Последнее открывает массу возможностей по автоматизации криптования текстовых строк, чтобы их труднее было искать в бинарном коде, и тому подобных задач. Например, перекодировать похожие по начертанию русские буквы в коды их латинских аналогов, притом в исходнике они останутся русскими.

Для этого планирую создать таблицы перекодировки 128 верхних или всех 256 символов. С возможностью добавлять пользовательские таблицы в виде обычных файлов, как это было реализовано, например, в DOS Navigator'е.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: ZXDev + кириллица
СообщениеДобавлено: 27 июн 2014, 16:31 
Не в сети
Администратор
Аватара пользователя

Сообщения: 273
Откуда: Россия
Zorko писал(а):
Для облегчения реализации этой идеи с укладыванием всего множества символов в 128 кодов
...
Для этого планирую создать таблицы перекодировки 128 верхних или всех 256 символов. С возможностью добавлять пользовательские таблицы в виде обычных файлов, как это было реализовано, например, в DOS Navigator'е.
Но стандартный знакогенератор Спектрума начинается с пробела (код 32), поэтому содержит меньше 128 символов.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: ZXDev + кириллица
СообщениеДобавлено: 27 июн 2014, 22:10 
Не в сети
Аватара пользователя

Сообщения: 1019
Откуда: Днепропетровская обл.
Ну так пусть там будут нули. :) Просто 128 и 256 символов — как бы прижившийся стандарт кодовой таблицы, хватает для кириллицы и латиницы. Символы занимают мало, один байт.


Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
© VEDAsoft Oberon Club