01 сентября 2001
  Железо  

                                         
                                         
Индикация работы c диском      
                                         
(С)Pantera                               
                                         
_________________________________________
                                         
    Опять  я  решил  показать  народу мои
очередные   фантазии,  на  тему  кодинга.
Вот как-то раз, причем не один, я увидел,
что  некоторые  умники в  своих творениях
используют так называемые  индикаторы ра-
боты с диском. Вы  скажите  это очень эф-
фектно.Только представте,вы в своей новой
ресторилке дисков, с доселе никому не из-
вестным  алгоритмом, используете  индика-
цию  работы  диска. Что  размечтались ???
Ха-ха,то то же. Вы наверное сейчас прыга-
ете и  судорожно верищите:  где ее взять,
где ее взять ???. Ну что же, я помогу вам
с этим...                                
                                         
   Далее идет алгоритм индикации работы с
диском. Конечно это просто пример,но если
у  вас есть желание, то его не трудно бу-
дет  переделать  под  любую программу.Для
любителей  халявы, сразу  хочу  отметить:
эта  программа  индицирует  в окне,только
загрузку  30  секторов, т.к.  только  при
таком количестве вы увидите движение шка-
лы. Если количество секторов превысит это
значение, то  шкала  дойдет до конца окна
и  остановится, а флоповод  будет грузить
остаток секторов.Кто умный,тот додумается
как сделать полную индикацию.            
                                         
ТЕПЕРЬ ГЛАВНЫЙ МОМЕНТ !!!      
                                         
Эта процедура написана под оболочку кото-
рую Мах поместил в приложение второго но-
мера Черной Вороны. Если у вас его нет,то
можете скачать второй номер с zx.da.ru.  
                                         
Теперь второй момент,но не главный:      
                                         
Работа  с  диском  идет на прямую с ВГ93.
Если  сделать  работу через CALL 15635,то
операции могут сильно затормозится,учтите
это при написании своих программ.        
                                         
НУ А ТЕПЕРЬ КОНКУРС !!!        
                                         
Тем  читателям которые пришлют свой вари-
ант  индикации  работы  с диском, первыми
получат следующий номер Черной Вороны.   
                                         
Но есть условия:               
                                         
1.Процедура  должна быть подвязана с обо-
лочкой из второго номера журнала.        
                                         
2.Конечно  такое нельзя контролировать,но
все  таки  не  присылайте крэки из других
программ.                                
                                         
                                         
Единственное, что не запрещается, так это
брать  за  основу  мой пример. Просто его
настолько  легко переделать для индикации
всего  диска, что  аж руки сами тянутся к
клаве, по крайней мере я так думаю :-).  
                                         
Ну, надеюсь народные таланты завалят меня
своими кодами :-).                       
                                         
                                         
Листинг программы:             
                                         
                                         
                                         
;------ Пример окна ---------------------
                                         
R_DEMO  DEFB    3,8,25,4,114,1,0,0,0,#90 
        DEFW    R_DEMO,S_UPR,J_UPR       
        DEFB    #1В,"Процесс работы",0   
Т_DEMO  DEFB    13,0                     
Т_DEMO1 DEFB    "#",0     ;Любой символ  
S_UPR   DEFB    3,8,1,1, #FF             
J_UPR   DEFW    PRN                      
                                         
                                         
;-------ПЕЧАТь---------------------------
                                         
PRN     LD      HL,Т_DEMO ;Берем код #0D 
        CALL    OS        ;для первода   
        DEFB    _PRI_С    ;строки,шкала  
        JR      М1        ;в середине    
                                         
;-------ТЕЛО ПРОЦЕДУРЫ-------------------
                                         
R_SECT  DEFB    30        ;Истинное зна- 
                          ;чение  кол-ва 
                          ;загружаемых   
                          ;секторов      
                                         
ADRES   DEFW    #С000     ;Адрес загрузки
                                         
М1      LD      HL,(ADRES)               
        PUSH    HL        ;Адрес загрузки
TRACK   LD      D,2       ;Трэк          
SECT    LD      Е,#0F     ;Сектор        
S_SCT   LD      В,1       ;Кол. секторов 
        CALL    OS        ;должно быть 1 
        DEFB    _LOADER                  
        JR      NZ,_ERROR                
        CALL    COUNT     ;На счетчик    
        РОР     HL        ;Адрес загрузки
        LD      (ADRES),HL;Ложим назад   
        EI                               
        RET                              
                                         
;-------ОПЕРАЦИИ РАСЧЕТА-----------------
                                         
COUNT   LD      A,(R_SECT) ;Сколько раз  
        PUSH    AF         ;считать      
        CALL    SECTOR1                  
        CALL    PRINTD                   
        CALL    ADR_COR                  
        РОР     AF                       
        DEC     A                        
        LD      (R_SECT),A ;Остаток      
        JR      NZ,М1      ;Догружаем    
        RET                ;Операция О.К.
                                         
;-------РАСЧЕТ СЕКТОРОВ------------------
                                         
SECTOR1 LD      A,(SECT+1) ;Какой сектор 
        СР      #0F        ;15-й?,тогда  
        JR      Z,TRACK1   ;новый трэк   
        INC     A          ;если нет,то  
        LD      (SECT+1),A ;новый сектор 
        RET                              
                                         
;-------РАСЧЕТ ТРЭКА---------------------
                                         
TRACK1  LD      A,(TRACK+1);Номер трэка  
        INC     A          ;на 1 больше  
        LD      (TRACK+1),A              
        XOR     A          ;Опять нулевой
        LD      (SECT+1),A ;сектор       
        RET                              
                                         
;-------ПОДПРОГРАММА ПЕЧАТИ--------------
                                         
PRINTD  LD      HL,Т_DEMO1 ;Печатаем про-
        CALL    OS         ;цесс работы, 
        DEFB    _PRI_С     ;в виде шкалы 
        RET                              
                                         
;-------КОРРЕКТИРОВКА АДРЕСА------------ 
                                         
ADR_COR LD      HL,(ADRES) ;Куда грузить 
        LD      DE,#0100   ;Размер сект. 
        ADD     HL,DE      ;Адрес+сектор 
        LD      (ADRES),HL ;Новый адрес  
        RET                ;загрузки     
                                         
;-------ВЫХОД ПО ОШИБКЕ------------------
                                         
_ERROR  РОР     HL         ;Здесь адрес  
        EI                 ;где останов  
        RET                              



Other articles:


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

Similar articles:
Introduction - We were struck by the brutality of the worst of its terms.
Again party 3 - Report from Izhevsk party ASCII'2002.

В этот день...   21 November