Да вроде да, исправленную. Правда, с тех пор я ее еще доделал. Оптимизировал операции ввода-вывода блоков, как мы делали со стороны корвета, и добавил индикацию ошибок вымаргиванием светодиода.
Прикладываю в аттаче последнюю на данный момент версию.
Да, блин, точно. Ошибка сидит в моей доработанной версии эмулятора - диск создавался по mount /c, а эмулятор по ошибке не дописывал последний байт инфосектора формируемого диска.В архиве у mount.kdi - неправильное crc инф. сектора
Cооветсвенно он не открывается ни xkorvet ни эмулятором.
скопировал из стандартного - заработал.
В процедуре emu_creatikdi, в массиве infosector[], надо дописать в конце еще один байт 0x10. Это полный дамп всех значимых полей инфосектора, а последний байт я где-то потерял. А не заметил я этого потому, что диск все время был A:, а там работает режим подстановки системных дорожек - этот инфосектор никогда никем не читался
В прошивке контроллера такой ошибки нет, хотя подпрограммы в контроллере и эмуляторе почти одинаковые.
Насчет about - я придерживался минимализма, свойственного всем утилитам CP/M. Всякие там PIP, STAT, SUBMIT и прочие тоже не имеют ни ABOUT, ни хелпа. Хотя хелп (/H), может быть, и надо бы добавить. Но я старался, чтобы COM файл получился как можно меньше.В mount надо бы проверку вставить на наличие интерфейса.
About вывести в самом начале ?
И проверять что PPI2С.7=IRQ0=1 - упасьб если это не так.
А насчет проверки наличия интерфейса и активности сигнала Control - ты абсолютно прав. Надо доделать, иначе программа будет виснуть намертво при запуске без интерфейса.






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