ZX-Ревю 1995 №2 1994 г.

Возвращаясь к напечатанному - Сортировка строк в "MF 09" по русскому алфавиту.


   Сортировка строк в "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) ;Загрузили его в А.    
    ...                            
                                   
    Дальше уже понятно,  что срав- 
 ниваться будут псевдо-коды.       



СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Новости - Принимаются поздравления для 10-й известной в Минске новой ежедневной познавательной газетенки.
Music - у Alone Coder'a нет слуха.
Сандулов - Французкий журналист Морис Мошино посетил церковь сатаны в Сан-Франциско, где встретилься с ее верховным жрецом Антоне Лавеем. Вот что он рассказал об этом человеке...
Экспертиза - прохождение игры Mercenary.
Docs - Декомпрессор Медноногова основанный на LZ сжатие.

В этот день...   21 ноября