IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

 
 Ответить  Открыть новую тему 
> Проблеммы с резидентом., резидента на прерывание 9 вешаю.
сообщение
Сообщение #1


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


У меня такая проблемма:
я написал резидента, обработчик $9 прерывания, он у меня
к прерыванию 10h часто обращается (для работы с экраном) и 15h(для задержки)
И все это у меня зависает!
Что может вызывать зависание?


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 419
Пол: Мужской

Репутация: -  6  +


может быть 15h и 10h какимто образом вызывают 9h?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Не могут они вызывать никакие прерывания!
Во-первых 9h прерывание вызывается только когда нажимается клавища,
во-вторых ни одно прерывание не вызывает другого!


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Знаток
****

Группа: Пользователи
Сообщений: 419
Пол: Мужской

Репутация: -  6  +


а ты регистры перед вызовом сохраняешь?
и после выхода восстанавливаешь?
может сохраняешь n байт в стеке ,а восстанавливаешь m<>n?

Сообщение отредактировано: virt -


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Цитата
а ты регистры перед вызовом сохраняешь?

Ага, вот где собака зарыта!
А я уже разобрался - это только с задержкой проблеммы!
Может подскажите какую - нибудь процедуру для задержки (можно что-то посчитать)


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Знаток
****

Группа: Пользователи
Сообщений: 419
Пол: Мужской

Репутация: -  6  +


а задержка на сколько нужна?

если на 1/18 секунду то можно так :
var timer:longint absolute $0:$046c;
   brtime:longint;

begin
  brtime:=timer+1;
  while timer<brtime do
end.


timer -- обновляется 18.2 раза в сек.
как сделать задержку в реальном режиме поменьше есть только одно предположение :
заводим переменную большую :longint например ,и в цикле выполнения чего-то там увеличиваем её значение. В начале узнаем тактовую частоту как-нить ,и потом берем коэффициент во сколько раз эта частота больше эталонной.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Ну я так и делаю - цикл с 10000 повторениями присваиваниями.
Кстати и таймер можно ускорить!
Здесь обсуждалось как.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Не забудь всё "обрамить" CLI/STI
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Цитата
Не забудь всё "обрамить" CLI/STI

Не забуду.
Я этого резидента сейчас уже дописал, и теперь перевожу на АСМ.
А странно, почему возникает эта проблемма, если пользоватся прерыванием 15h, а со всеми остальными нормально.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Возможно потому, что войдя в твой обработчик вызывается CLI, что закрывает INT 08h. Может INT 15h от него и работает?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Цитата
Возможно потому, что войдя в твой обработчик вызывается CLI, что закрывает INT 08h. Может INT 15h от него и работает?

Нет и без CLI не работает!


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Знаток
****

Группа: Пользователи
Сообщений: 419
Пол: Мужской

Репутация: -  6  +


Цитата
Возможно потому, что войдя в твой обработчик вызывается CLI, что закрывает INT 08h. Может INT 15h от него и работает?


cli не закрывает прерывание ,оно запрещает вызов новых прерываний.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Цитата
cli не закрывает прерывание ,оно запрещает вызов новых прерываний.

Да, и тогда тем-более зависание не от этого.

Я вот думаю, что это как -то связанно с видео функциями.
Где-то (не помню где), я прочитал, что написанный в пасе резидент, не может обращатся к видеосервису.
Может такое быть?


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






Ага. А старушка, переходящая дорогу не может нести сумку.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Если старушка однозадачная, или работает в реальном режиме, то не может, а если работает в защищенном режиме или многозадачная, то может!


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Гость






В защищённом режиме она ещё и за содержимое сумки может не беспокоиться, если положит её в память с ограниченными правами доступа smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


А если серьезно, то какой, "жизенный цикл" TSR ?
В "MS-DOS для разработчика", все на асме, а как выглядит "скелет" TSR на пасе?
Тот, что в справке к BP7, глюченый.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 25.11.2020 1:24
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name