Доброго времени дорогие друзья !
Поковырялся сегодня в версии ASC которая адекватно реагирует на команду 9, а теперь еще и 8 (добавил еще одну проверку),... Там все просто, с адреса 4100H (смещение 4000 в HEX редакторе) дописан следующий код :
Адресс ссылки на эту подпрограмму вписан вместо адреса системного вызова CALL 0005H по смещению 395F в HEX редакторе.Код:org 04100H ; di lxi h, 00080H mov a, m cpi 039H jz GO cpi 038H jz GO jmp L4149 GO: lxi d, 04181H L410D: mov a, m stax d inx h inx d ana a jnz L410D xchg mvi m, 00DH dcx h mvi m, 00DH inx h inx h mvi m, 000H mvi a, 004H sta 4180h mvi a, 085H sta 4200h lxi h, 4180h shld 4201h mvi c, 032H lxi d, 4200h call 0005h ei hlt lxi d, 04280H mvi c, 00AH call 0005h mvi a, 002H sta 297Ch jmp 0100h L4149: jmp 0005h ;
Но, под mdos3.1 и FH51 - это прекрасно работает, а вот под T72 выполняет последний в коде CALL 0005h и уже не возвращается на строчку mvi a, 002H. При этом, набранная в командной строке команда выполняется, то есть переданная системе команда сформированная в системном буфере по адр. 4180H вполне передается и воспринимается системой, но после выполнения иногда на экране наблюдается какой то кратковременный выброс пискелей, иногда не наблюдается, и после появляется курсор ">_" без буквы диска, знак подчеркивания мигает, нет управления клавишами, но реакция системы в виде звуков на нажатие есть. И вернуть ситему к жизни может только "блк+сбр", после нажатия "блк+сбр" в следующей строке появляется курсор с текущим диском "A>_" и система продолжает работать с штатном режиме.... А в mdos3.1 и FH51 подпрограмма в итоге после выполнения команды 9 A:X или 8 - запускается заново с 100H. На вскидку определить в чем проблема у меня не получилось, знания системных вызовов мои оставляют желать лучшего. По идее, это же не должно сильно отличаться в разных системах... Я пытался это все пролистать в отладчике эмулятора, но толку от этого немного, несколько миллионнов операций просмотреть и понять что там происходит для меня пока сложно .. ))) Я продолжу в целом, но думаю, наверняка среди вас все гораздо лучше меня разбираются в системных вызовах микродоса... Может глянете, почему такой эффект ?
Еще, не могу понять, что за запрос с параметром 32H в регистре C? По крайей мере в стандартном описании системных функций CP\M я такой функции не нашел, 28H последняя... Может это какая то специальная функция, имеющая место быть только в microdos3.1 и FH51, которая делает возможным такой финт... Хотя эта функция выполняется и в T72...
Вариант в целом кривоватый,... но, позволяет, не выходя и заходя из менеджера файлов перемонтировать диск,.. и тестировать и форматировать квазидиск, в целом, на данном этапе это более чем достаточно.




Ответить с цитированием