                  
                  
                  
                                          
(с) EraserAREAsoft 2000                  
                                          
   Существует   такая   прога  как  Global
commander  v1.31. Это очень прикольный ко-
мандир,  но  он имеет один злостный глюк -
во  время  копирования если вся информация
не  умещается в буфер, то на диск приёмник
будет  записана  только  та часть, которая
влезла в буфер. Причём в принимающем ката-
логе  будут записаны имена всех копируемых
файлов,  включая  не yместившиеся в буфер.
Аналогичная ситуация и с операцией MOVE.  
   Об  исправлении  этого  глючка и пойдёт
сегодня рассказ.                          
   Для исправления GC потребуется pacnako-
вать кодовый блок с ядром командира. Затем
внести в него такие изменения:            
                                          
1.                                        
#5F26  CALL      #6620                    
                                          
2.                                        
#6620  DI                                 
       XOR       A                        
       LD        (#707B),A                
       OR        B                        
       RET                                
                                          
3.                                        
#6627  DEFB      #31,#50                  
       DEFB      "`?` - HELP"             
4.                                        
#6576                                     
       LD        HL,#6627                 
                                          
    Затем  записать  исправленный  блок на
диск  и  упаковать. После чего упакованный
блок  можно  вставлять  обратно в командир
так же как и вытаскивали.                 
                                          
    Исправленная  таким образом версия ко-
мандира уже довольно давно гуляет по стра-
не.  Отличить её от глюкавой можно по над-
писи:                                     
                `?` - HELP                
                  вместо                  
            Press `?` to help             
                                          
    ----------------------------------    
                                          
    А  сейчас  очередная  доработка самого
крутого ассемблера Alasm v4.1. На этот раз
мы его переделаем для работы на Scorpion`е
с памятью 1024 килобайта (расширение через
6,7 бит порта #1FFD - схема этого расшире-
ния находится в разделе "Железяки".       
    Проблема  работы  Alasm`а  на  ZS-1024
заключается в том, что невозможно запихать
драйвер памяти на все 64 странички в отве-
денные  для  этого 26 байт (максимум можно
сделать драйвер на 32 странички). Тем  бо-
лее,  что  часть  этих самых байтов заняты
подпрограммой запуска ассемблера из бейси-
ка.  Но не всё так страшно как может пока-
заться на первый взгляд.  B  приложении вы
найдёте драйвер в формате Alasm`а  и гото-
вый драйвер. Но для того, что бы этот дры-
вер заработал надо внести некоторые  изме-
нения в тело Alasm`а. Вот листинг этой до-
работки.                                  
                                          
#BFE0   LD      D,А     ;сохраняем номер страницы               
        AND     #30     ;выделяем 2 бита                        
        RLA             ;переносим их в б,7 бит                 
        RLA                                                     
        LD      L,А     ;сохраняем резултaт вращения            
        LD      А,D     ;берем сохраненный номер страницы       
        AND     8       ;выделяем еще один бит                  
        RLA             ;вращаем - он пойдет в 4 бит            
        0R      L       ;объеденяеm с пред. результатом         
        LD      L,А     ;опять сохраняем                        
        LD      А,D     ;снова берем номер страницы             
        AND     7       ;выделяем три младших бита              
        0R      L       ;объединяем все в кучу                  
        JP      #803F   ;переход собственно на дрывер           
                                          
   B  результате  этих манипуляций на вход
драйвера будет приходить код страницы поч-
ти  готовый  для выдачи в порт. Надо будет
только  разделить, какие биты в какой порт
кидать.                                   
      Вот формат кода страницы:           
 :)          ABxCxPAG                      
 ABC - биты выдаваемые в порт #1FFD, соот-
ветственно  AB  -  6,7  бит,  а  С - 4 бит
(стандартный  скорпионовский) порта. Этими
только  разделить, какие биты в какой порт
кидать.                                   
      Вот формат кода страницы:           
 :)          ABxCxPAG                      
 ABC - биты выдаваемые в порт #1FFD, соот-
ветственно  AB  -  6,7  бит,  а  С - 4 бит
(стандартный  скорпионовский) порта. Этими
битами  выбирается номер сегмента метровой
памяти. 3 бита - 8 сегментов по 128 кБ    
 PAG  - биты выдаваемые в порт #7FFD - ими
выбирается  номер  странички в каждом сег-
менте.                                    
   Таким  образом  можно  переделать ALASM
под любой стандарт расширения памяти - да-
же самый извращенный.                     
                                          
 ---------------------------------------- 
                                          
            На этом позвольте откланяться.
                   До следующих "Мелочей".
