Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.218.127.141] |
|
Страницы: (3) 1 [2] 3 все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
Цитата Jin X @ если резидент используется int 21h, то какой при этом используется PSP? Надо думать, что программы, которая исполняется в данный момент, не иначе. Именно так. Поэтому обработчик, отдавая управление (неважно, обратно или вниз), не должен оставлять открытый файл. |
Сообщ.
#17
,
|
|
|
Повторяюсь, PSP в TSR (или даже его часть) мне не нужен. Каждый байт на счету.
Тема выяснена на 90% . Спасибо за советы. |
Сообщ.
#18
,
|
|
|
andr00
А в чём тогда суть и вообще смысл создания темы-то? |
Сообщ.
#19
,
|
|
|
Цитата Akina @ ...без переключения PSP (ah=50h/int 21h) не должен оставлять открытый файл. |
Сообщ.
#20
,
|
|
|
Akina, ты знаешь, то предыдущего поста не держал. Так ты попробовал? Только пробуй на ненужных файлах.
Добавлено Цитата Jin X @ Именно. И где тогда твои открытые ранее хендлы? А если ты каждый раз будешь всплывать под разными приложениями, включая других резидентов? А если у прерываемого приложения кончатся его 20 дефолтных хендлов? Кстати, если резидент используется int 21h, то какой при этом используется PSP? Надо думать, что программы, которая исполняется в данный момент, не иначе. Добавлено И в конце концов: кто-нибудь знает, что именно лежит в reserved-областях PSP и для чего ей это нужно там хранить? И какие ещё структуры данных в DOS и её драйверах завязаны на этот PID, каковым адрес PSP является? |
Сообщ.
#21
,
|
|
|
Цитата Qraizer @ Ну, так переключай PSP на свой, когда это нужно, а потом возвращай обратно.Именно. И где тогда твои открытые ранее хендлы? А если ты каждый раз будешь всплывать под разными приложениями, включая других резидентов? А если у прерываемого приложения кончатся его 20 дефолтных хендлов? В этих байтах хранится Job File Table |
Сообщ.
#22
,
|
|
|
Цитата Qraizer @ И где тогда твои открытые ранее хендлы? Какие это "ранее открытые"??? ты читаешь, что я пишу? Цитата Akina @ Если нужна работа с файлом из TSR, то открытие-работа-закрытие выполняются в одном потоке по выставленному флагу в обработчике DOS Idle. Так что какая мне в пень разница, где тот хэндл, который я давным-давно закрыл? |
Сообщ.
#23
,
|
|
|
Попробовал тупо скопировать старый PSP в нужное место. Отлично работает и дешевле
обходится (не надо применять функцию INT 21H AH=55H или AH=26H), так же не надо никаких корректировок нового PSP. Добавлено Попробовал запустить программу TSR в DOS окне WINDOWS-XP. Вроде работает. MEM.EXE указывает, что TSR существует. Но, просматривая DEBUG, обнаружил в этом сегменте одни нули ? |
Сообщ.
#24
,
|
|
|
Цитата Jin X @ Ну а я что сказал вначале? Ну, так переключай PSP на свой, когда это нужно, а потом возвращай обратно. |
Сообщ.
#25
,
|
|
|
Цитата andr00 @ просматривая DEBUG, обнаружил в этом сегменте одни нули ? Правильно. Ты же ничего не сделал, чтобы именно этот блок использовался под твоим кодом в качестве PSP. |
Сообщ.
#26
,
|
|
|
Цитата andr00 @ А там, в общем-то, и нет никаких абсолютных адресов, указывающих на область самой программы, поэтому и корректировки не нужны Попробовал тупо скопировать старый PSP в нужное место. Отлично работает и дешевле обходится (не надо применять функцию INT 21H AH=55H или AH=26H), так же не надо никаких корректировок нового PSP. Главное, чтобы не было утечки памяти при всех этих манипуляциях с перемещением, выделением памяти и пр. Цитата Qraizer @ Так, никто ж и не спорит, коллега! Ну а я что сказал вначале? |
Сообщ.
#27
,
|
|
|
Akina, все таки непонятки. Программа TSR (в окне DOS, WINDOWS-XP) работает, MEM.EXE указывает правильный размер и сегмент в памяти, а DEBUG в этом сегменте видит нули. Даже в MCB нули ?
Добавлено Опа ! Оказывается DEBUG.EXE (а так-же TD.EXE) в окне DOS, под WINDOWS-XP вообще ничего не видит (т.е. видит какой то мусор) Может кто посоветует, какой программой мне просмотреть память ? |
Сообщ.
#28
,
|
|
|
Цитата andr00 @ Программа TSR (в окне DOS, WINDOWS-XP) работает, MEM.EXE указывает правильный размер и сегмент в памяти, а DEBUG в этом сегменте видит нули. Даже в MCB нули ? MCB вообще-то на 16 байт ниже... Цитата andr00 @ Оказывается DEBUG.EXE (а так-же TD.EXE) в окне DOS, под WINDOWS-XP вообще ничего не видит (т.е. видит какой то мусор) Да ладно! у меня TD нормально всё показывает... |
Сообщ.
#29
,
|
|
|
Akina, Предлагаю посмотреть скрины. Программка Выводит на экран в верхнюю строку (по прерыванию 09h) строку "ABCDEFGHIJKLMNOP"
Это видно на всех скринах. TD.EXE (1992 год) то же самое ) Добавлено Не могу отправить скрин. |
Сообщ.
#30
,
|
|
|
Последний скрин.
Прикреплённый файлDEBUG.EXE.rar (58,21 Кбайт, скачиваний: 93) |