Индикация работы 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