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



СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Authors - Авторы журнала.
Новости - нoвocтей cегoдня не тaк уж и мнoгo.
Юмор - Армянское радио.
Обратная связь - контакты редакции.
Sofтинка - описание нового текстового редактора ZX-WinWord V3.0.

В этот день...   1 января

SibNews #08, Woot! #01, Spectrum Magazine #01, ACNews #25, Psychoz #14, ACNews #14, Last 128 #08, Last 128 #06, Last 128 #05, Last 128 #04, Last 128 #03, Last 128 #02, Last 128 #09, Last 128 #3.5, Last 128 #8.025, Sinclair Club #05, Last 128 #M!R 01, Fantadrom #01, Buzz #20, Last 128 #01, DonNews #13, Nicron #120, Promised Land #01, Inferno #01, Marazm #25, Ultimathum #01, Marazm #21, Hooy Mag #02, KrNews #11, Marazm #22, Marazm #23, ZX Football 2000 #01, Codemania #01, Always #03, Bugs #02, IzhNews #08, Virtual Worlds #01, Listok #04, Scenergy #02, Flash Info #18, Marazm #16, Marazm #17, Zed #01, Balagan #02, ZX Format #08, ZX Power #03, Shock #01, Impulse #02, Deja Vu #03, ZX Club #08, ZX Club #06, Numberology #01, Marazm #13, Marazm #12, Marazm #14, Gorodok #02, Zodiac #01, Marazm #15, Deja Vu #07, Marazm #11, Deja Vu #07, Playboy #03, Crazy News #2, Crazy News #4, ZX Light #01, Crazy News #5, Playboy #02, ZX News #03, ZX Review #1-2, Read Me #02, Crazy News #3, Nicron #13, Read Me #01, Public Spirit #01, Faultless #06, Faultless #05, ZX Software #01, Stump #04, Speccy #07, Возраждение #0, Speccy #03, On-Line #17, Scene+ #01, Welcome Press #01, ZX Konig #04, Adventurer #01, Faultless #05, Faultless #04, Di Halt #01, Faultless #01, Playboy #01, Crazy News #1, Faultless #03, Pioneer #03, Sinclair Town #02, ZX Magazine #01, Eldorado #01, ZX Magazine #02, Spectron #01, ZX News #01, ZX Konig #02, 200 #W, Welcome Press #00, Dune #07, Subliminal Extacy #01, Subliminal Extacy #02, ZX Konig #01, Subliminal Extacy #00, Muchomor #01, Spectrofon #01, ZX Revija #02, Outlet #01, Outlet #1-3