Dos: Проблема При Работе С Файлами Из Tsr-программы

  • Автор темы Guest
  • Дата начала
G

Guest

Здравствуйте. Пишу на C и ассемблере (tcc/tasm) резидентную программу под DOS, которая должна перехватывать прерывание клавиатуры и сохранять на диске файл. На виртуальной машине Windows ntvdm всё работает, а на VMware Player (который, как я понял, ближе к реальному DOS) виснет при попытке создать файл. Пробовал работать с файлами как с помощью стандартных библиотечных функций C, так и напрямую вызывать функции DOS int 21h.

В обработчике прерываний сохраняю все регистры (pusha/popa), устанавливаю свой ds и свой стек (потом естественно возвращаю обратно). Кроме этого, устанавливаю свой ID процесса (адрес PSP) с помощью функции DOS 50h. И всё равно виснет.

Установил, что виснет при вызове функции DOS создания файла. Может быть я что-то ещё забыл инициализировать в обработчике прерывания?
 
R

rrrFer

Зойберг
руками файл создать получается?
 
L

lazybiz

Как на счет DOSBox? В ней не пробовал? Считаю что для испытания твоей программы она подойдет не хуже VMware.
 
G

Guest

r04
Совсем вручную не пробовал,но пробовал создавать таким же образом (с помощью int 21h) из основной программы, не TSR - всё работает нормально.

lazybiz
DOSBox посмотрю, о результатах отпишусь.
 
G

Guest

Попробовал DosBox - там работает нормально. Но всё же как ntvdm, так и DosBox используют по сути Windows-овскую файловую систему. А VMware - чистый досовский FAT. Значит всё-таки принципиально работа с файловой системой DOS всё же неверна.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!