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 создания файла. Может быть я что-то ещё забыл инициализировать в обработчике прерывания?
 
Зойберг
руками файл создать получается?
 
Как на счет DOSBox? В ней не пробовал? Считаю что для испытания твоей программы она подойдет не хуже VMware.
 
r04
Совсем вручную не пробовал,но пробовал создавать таким же образом (с помощью int 21h) из основной программы, не TSR - всё работает нормально.

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

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