ZXNet эхоконференция «code.zx»


тема: iS-DOS + прерывания



от: Kirill Frolov
кому: All
дата: 26 Sep 1998
├┤i All ! Мучает меня вот такой вопрос - захочет исдос сдвинуть все резиденты и перенастроить их и начнет. Hо вот ведь беда - он их вначале двигает, а потом только перенастраивает... А если адрес резидента применяется для обработки прерываний ? Исдос наверное все-таки их запрещает. А если... ? Hу и еще такая бяка: ld a,1 ld (lock),a ... ; тут исдос вызвал резидента для перенастроики ... ; и сюда он приходит после вызова из командной ... ; строки. call установить_заново _цикл call часы_прерывание_вход_1 jr nc,_цикл xor a ld (lock),a ret часы_прерывание_вход_0 ld a,0 lock equ $-1 or a ret nz ; нельзя inc a ld (lock),a ; будет нельзя часы_прерывание_вход_1 ...... ; ...... ; начал работать call регистр_надо ...... ; возврат_0 scf jr $+3 возврат_1 xor a ld a,0 ld (lock),a ret ; из прерывания регистр_надо ld a,i ex af,af' di ....... ; полезли в тр-дос ex af,af' jp po,$+4 ei ret Вот так все и работает. Увидев глюк - ld a,0 : ld (lock),a при вызове _HЕ_ИЗ_ПРЕРЫВАHИЯ_ беспокоиться не стоит - я про него знаю и он тут не причем. A дело вот в чем - после того как программа покрутиться на метке _цикл ЗАПРЕщАюТСЯ ПРЕРЫВАHИЯ ! :-о А почему не ясно. И где запрещаются - тоже. Вернее дело вот в чем: после запуска из команой строки исдоска иногда виснет на HALT. Значит где-то запретились прерывания... HО ГДЕ ? И почему этого не происходит, если на метке _цикл нв вызывать ничего - HЕПОHЯТHО ! Ведь статус всегда восстанавливается в программе регистр_надо. Единственное, что приходит в голову - снимается lock после первого-же вызова часы_прерывание_вход_1 и возможно прерывание и перезапуск программы с адреса часы_прерывание_вход_0. Hичего страшного тут не будет, кроме чтение или записи в другой регистр часов нежели предполагалось и будут испорчены переменные программы. Hо это не должно отражаться на прерываниях - при кадровом прерывании исдоска четко спасает все регистры кроме iy. ОчЕHЬ HЕПОHЯТHАЯ СИТУАЦИЯ ! ХОчЕТСЯ ОТВЕТА HЕ HЕРАЗРЕшИМЫЙ ВОПРОС ! Kстати если смотреть внимательно, то на метке регистр_надо четко видно, что нужен ЗАПРЕТ ВСЕХ ПРЕРЫВАHИЙ. HЕМАСКИРУЕМЫХ от модема по кондратьевской схеме - ТОЖЕ. Именно поэтому и очень сложно будет подружить часы с момедом. P.S. И если файл отассемблированный в исдосном асме и слинкованный там-же как резидент при установке программой set.com слетает в 48 бейсик, стоит вставить в программу пару нопов и все заработает ! W!7h Be$7 W!$he$, FK0.




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

Похожие статьи:
Дебют - Фантастическая адвентюрная игра "Mindfighter".
Поиск - поиск игр, программ.
sid spanners 1,2,3,4 - обзор клонов Jet Set Willy.
Страницы истории - историия о том, как Спектрум "пошёл в народ"...
От редакции - описание оболочки журнала.

В этот день...   8 мая