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

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

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

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

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

rrrFer

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

lazybiz

Well-Known Member
03.11.2010
1 339
0
#3
Как на счет DOSBox? В ней не пробовал? Считаю что для испытания твоей программы она подойдет не хуже VMware.
 

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

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

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