Сортировка строк в "MF 09"
по русскому алфавиту
---------------------------------
(C) Сергей Бандура, г.Николаев.
Известно, что большим недос-
татком русифицированных версий
системы управления базой данных
(СУБД) "Мастерфайл 09" является
сортировка строк не в алфавитном
порядке, а в соответствии с по-
рядком следования букв в таблице
КОИ-7. Однако, при более внима-
тельном рассмотрении оказалось,
что "Мастерфайл 09" использует
собственную подпрограмму сравне-
ния строк ("а" строчная равна "А"
заглавной). Эта подпрограмма рас-
положена с адреса #FDE0, и не
составляет труда внести в нее не-
обходимые изменения.
Предлагаемый вариант доработки
основан на методе перекодировки,
предложенном Вадимом Пыльцовым в
ZX-РЕВЮ-93, N5-6, стр.116. С ад-
реса #FDE0 следует занести:
CD B0 DF 00 00 00 E6 7F ...
а сама подпрограмма расположена
перед кодовым блоком "Мастерфай-
ла" с адреса #DFB0. Символьный
набор (КОИ-7) располагается с ад-
реса #DCB0, и, соответственно,
изменяется RAMTOP. Текст подпрог-
раммы перекодировки:
ORG #DFB0
LD A,(HL)
CALL L1
LD B,A
LD A,(DE)
LD C,A
CALL L1
RET
L1 PUSH HL
PUSH DE
AND #7F
CP #60
JR C,L2
LD D,#00
SUB #60
LD HL,TABL
LD E,A
ADD HL,DE
LD A,(HL)
L2 POP DE
POP HL
RET
TABL DEFM "abwgdevzijklmnop"
DEFM "rstufhc~{}yx| q"
DEFM #7F
У этого метода сортировки есть
один недостаток - последний в
таблице КОИ-7 "твердый знак" дол-
жен оставаться с наибольшим ко-
дом, иначе, следующие за ним по
алфавиту буквы не будут выводить-
ся на экран (их код будет больше
разрешенного для печати, это про-
веряется той же подпрограммой).
Другим недостатком известных
мне русифицированных версий явля-
ется некрасивый вид букв в режиме
микропечати, поскольку авторы ру-
сификаций, сменив символьный на-
бор, оставляют без изменения
"таблицу вычеркиваний" - о ней
можно подробно узнать из описания
редактора "THE LAST WORD TWO"
(ИНФОРКОМ). В "Мастерфайле 09"
такая таблица расположена с адре-
са #F490 по адрес #F4EF, и при
подмене символьного набора должна
быть скорректирована.
(С) Сергей Лукиных,
г. Первоуральск, 1995.
Предлагаю способ решения проб-
лемы сортировки по русскому алфа-
виту. Все решается просто, нужно
немного переделать обычную проце-
дуру сортировки и ввести таблицу.
Исходное
соотношение: Таблица:
@ - Ю NN+00 - 31
A - А NN+01 - 1
B - Б ... - 2
C - Ц - 23
D - Д - 5
E - Е - 6
F - Ф - 21
G - Г - 4
H - Х - 22
I - И - 9
J - Й - 10
K - К - 11
L - Л - 12
M - М - 13
N - Н - 14
O - О - 15
P - П - 16
Q - Я - 32
R - Р - 17
S - С - 18
T - Т - 19
U - У - 20
V - Ж - 7
W - В - 3
X - Ь - 29
Y - Ы - 28
Z - З - 8
[ - Ш - 25
- Э - 30
] - Щ - 26
^ - Ч NN+30 - 24
Чтобы работать с этой табли-
цей, вставьте в программу сорти-
ровки такие строчки:
LD DE,NN ;Адрес начала таблицы.
LD HL,aa ;Адрес первого символа
; слова.
LD A,(HL) ;Код - в аккумулятор.
SUB 64 ;Нашли смещение.
LD C,A ;Перевели
LD B,0 ; в 16-число.
ADD HL,BC ;Нашли адрес
; псевдо-кода.
LD A,(HL) ;Загрузили его в А.
...
Дальше уже понятно, что срав-
ниваться будут псевдо-коды.