Важная информация

User Tag List

Страница 5 из 7 ПерваяПервая 1234567 ПоследняяПоследняя
Показано с 41 по 50 из 61

Тема: Коммандер.

  1. #41
    Veteran Аватар для Grand
    Регистрация
    10.04.2005
    Адрес
    Сибирь
    Сообщений
    1,152
    Спасибо Благодарностей отдано 
    214
    Спасибо Благодарностей получено 
    331
    Поблагодарили
    146 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CPLx
    1. Сразу после загрузки коммандера (как только он загружается в память), происходит ли загрузка каталога?
    Каталог зогружается как ни в чем не бывало. А вот дальше дисковод не работает, как будто из него вытащили интерфейсный кабель.

    Цитата Сообщение от CPLx
    2. Если отключить процедуру останова дисковода, глюки пропадают?
    Не пробовал еще; многие байты попробовал, а этот - нет. Сегодня попробую.
    Если в каком-либо моем посте перестала работать гиперссылка или показываться картинка, напишите мне об этом в личном сообщении,чтобы я смог это исправить.

    Grand's - сайт об электронно-вычислительной технике (зеркало)

  2. #42
    Member
    Регистрация
    23.11.2007
    Адрес
    Ростов-на-Дону
    Сообщений
    171
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    108
    Поблагодарили
    58 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Grand Посмотреть сообщение
    Каталог зогружается как ни в чем не бывало. А вот дальше дисковод не работает, как будто из него вытащили интерфейсный кабель.
    Ага, ну это после того как процедура выключения дисковода первый раз отработает, сразу после загрузки каталога, так всё и вырубается начисто.

    Добавлено через 10 минут
    По-моему её вообще удалить надо, от греха подальше.
    Последний раз редактировалось CPLx; 17.04.2008 в 10:59. Причина: Добавлено сообщение

  3. #43
    Veteran Аватар для Grand
    Регистрация
    10.04.2005
    Адрес
    Сибирь
    Сообщений
    1,152
    Спасибо Благодарностей отдано 
    214
    Спасибо Благодарностей получено 
    331
    Поблагодарили
    146 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Попробовал. Всё стало работать нормально. Таким образом, верно: "процедура останова дисковода" глушит его намертво. :-O

    Цитата Сообщение от CPLx Посмотреть сообщение
    По-моему её вообще удалить надо, от греха подальше.
    Я уже не против.
    Если в каком-либо моем посте перестала работать гиперссылка или показываться картинка, напишите мне об этом в личном сообщении,чтобы я смог это исправить.

    Grand's - сайт об электронно-вычислительной технике (зеркало)

  4. #44
    Member
    Регистрация
    23.11.2007
    Адрес
    Ростов-на-Дону
    Сообщений
    171
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    108
    Поблагодарили
    58 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Grand Посмотреть сообщение
    Я уже не против.
    Есть шанс её оставить.
    Я тут посмотрел исходники. Ваша процедура останова дисковода использует байт из ячейки 23830. Там по идее хранится копия системного регистра. Так вот, загрузчик коммандера затирает часть байта этой ячейки (делается команда: LD A,(23830): AND 3: LD (23830),A). Так что наверное здесь причина. Мой загрузчик оказался несовместимым с Вашей процедурой останова дисковода.

    Изменил загрузчик. Теперь он не меняет ячейку 23830, используемую процедурой выключения дисковода. Версию 0.5 выложил в первый пост этой ветки.

    Добавлено через 52 минуты
    Еще вопрос появился по Вашей процедуре останова дисковода.
    Код такой (я немного ужал по объему):

    Код:
           LD     DE,12225
           CALL   DOS
           LD     A,(23830)
           PUSH   AF
           XOR    1
           LD     DE,697
           CALL   DOS
           POP    AF
    DOS    PUSH   DE
           JP     #3D2F
    Мне не понятно, зачем использовать ячейку 23830. Например, у меня в коммандере она не меняется при смене дисковода (она вообще коммандером не меняется). Может это какие-то левые глюки за собой повлечь может?
    И особенно мне не ясна команда XOR 1. Выполняет роль переключения дисковода с текущего на другой, потом обратно. В моём случае ячейка не будет указывать на текущий дисковод (в общем случае), поэтому иногда это будет работать, возможно, не так как задумывалось. Могут ли в связи с этим быть какие-то глюки?
    Последний раз редактировалось CPLx; 17.04.2008 в 22:59. Причина: Добавлено сообщение

  5. #45
    Veteran Аватар для Grand
    Регистрация
    10.04.2005
    Адрес
    Сибирь
    Сообщений
    1,152
    Спасибо Благодарностей отдано 
    214
    Спасибо Благодарностей получено 
    331
    Поблагодарили
    146 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CPLx
    Ваша процедура останова дисковода использует байт из ячейки 23830. Там по идее хранится копия системного регистра. Так вот, загрузчик коммандера затирает часть байта этой ячейки (делается команда: LD A,(23830): AND 3: LD (23830),A). Так что наверное здесь причина.
    Да, это и явилась причиной. Но в собственной программе можно использовать и собственную ячейку, где хранится копия системного регистра.
    А системные переменные (системы Спектрум-BASIC и TR-DOS) портить всё же нежелательно: командер ведь предназначен ещё и для запуска других программ, которые должны будут работать в системе.

    Цитата Сообщение от CPLx
    Еще вопрос появился по Вашей процедуре останова дисковода.
    Отвечу подробно в следующем своём посте.
    Последний раз редактировалось Grand; 21.04.2008 в 03:53. Причина: Добавлено сообщение
    Если в каком-либо моем посте перестала работать гиперссылка или показываться картинка, напишите мне об этом в личном сообщении,чтобы я смог это исправить.

    Grand's - сайт об электронно-вычислительной технике (зеркало)

  6. #46
    Veteran Аватар для Grand
    Регистрация
    10.04.2005
    Адрес
    Сибирь
    Сообщений
    1,152
    Спасибо Благодарностей отдано 
    214
    Спасибо Благодарностей получено 
    331
    Поблагодарили
    146 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Попробую подробно рассказать о методе снятия выбора дисковода эмуляцией индексных импульсов.

    Как известно, микроконтроллер КР1818ВГ93 (и его "западные оригиналы"), завершив выполнение команды, снимает выбор дисковода после поступления определённого количества индексных импульсов. Однако, если дискеты нет, то и индексных импульсов не будет. Авторы Beta Disk Interface не стали добавлять аппаратное снятие выбора (очевидно, ради удешевления схемы), но предусмотрели программную эмуляцию индексных импульсов. Это делается с помощью переключения 3-го бита системного регистра. Про эту возможность написано не во всяком описании по программированию контроллера; обычно сказано, что этот бит отвечает за "загрузку головки". Если мы посмотрим на схему любого нашего клона Beta Disk Interface, то увидим, что соответствующий выход триггера (обычно TM9 или TM8), отвечающий за 3-й бит системного регистра, соединён еще и через диод или логический элемент И с 35-м выводом ВГ93; это и призвано обеспечить программную эмуляцию индексных импульсов.
    Однако, мало сэмулировать индексные импульсы, надо еще и переключиться на "противоположный" дисковод. В ПЗУ TR-DOS V5.03, процедура снятия выбора дисковода находится с адреса 727. Однако там есть ошибка: по адресу 730 вместо команды OR 3 должно быть XOR 3; из-за этой ошибки не остановится дисковод B: в интерфейсе, где аппаратно реализовано два дисковода, или дисковод D:, - где реализовано четыре дисковода.

    В процедуре, модифицированной мной:
    Код:
    {1}	PUSH	AF
    {2}	LD	HL,12225;Для V5.01 адрес: 12151.
    {3}	CALL	{12}	;Прерывания работы микроконтроллера.
    {4}	LD	A,(23830);Копия системного регистра.
    {5}	XOR	1	;Выбор "противоположного" дисковода и
    {6}	CALL	{11}	;эмуляция его индексных импульсов.
    {7}	LD	A,(23830);Выбор текущего дисковода и
    {8}	CALL	{11}	;эмуляция его индексных импульсов.
    {9}	POP	AF
    {10}	RET
    {11}	LD	HL,697	;Для V5.01 адрес: 683
    {12}	PUSH	HL
    {13}	JP	15663
    команда XOR 1 в строке 5 гарантированно переключает дисковод на "противоположный", и это обеспечивает снятие выбора. "Упрощение" этого алгоритма я не рекомендую: возможно он перестанет выполнять свою функцию для каких-то типов дисководов. Но сейчас в TFC версии 5 останов [мойх] дисководов работает наконец-то нормально.

    По поводу использования ячейки "копия системного регистра": адрес для этой самой копии системного регистра, конечно же, может быть и другим. Но значение должно быть действительно копией, поскольку оно отправляется непосредственно в порт #FF подпрограммой ПЗУ TR-DOS по адресу 697. После того, как отработает
    предложенная мной процедура, в порте #FF окажется точно такое же значение, как и до её вызова (только дисковод будет остановлен).


    P.S. Извиняюсь за десятичные адреса - я изучал TR-DOS по книге П.Федина "Полное описание и полный дизассемблер TR-DOS", а там все адреса десятичные.
    Если в каком-либо моем посте перестала работать гиперссылка или показываться картинка, напишите мне об этом в личном сообщении,чтобы я смог это исправить.

    Grand's - сайт об электронно-вычислительной технике (зеркало)

  7. #46
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #47
    Member
    Регистрация
    23.11.2007
    Адрес
    Ростов-на-Дону
    Сообщений
    171
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    108
    Поблагодарили
    58 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ясно. Значит там еще поменять надо кое-что.

    Я обнаружил пару глюков в докторе. Будет время - исправлю и выложу.

  9. #48
    Member
    Регистрация
    23.11.2007
    Адрес
    Ростов-на-Дону
    Сообщений
    171
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    108
    Поблагодарили
    58 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Исправил процедуру снятия выбора дисковода, убрал глюки в докторе (один опасный глючок был). Выложил версию 0.6 в первый пост ветки.

  10. #49
    Veteran Аватар для Grand
    Регистрация
    10.04.2005
    Адрес
    Сибирь
    Сообщений
    1,152
    Спасибо Благодарностей отдано 
    214
    Спасибо Благодарностей получено 
    331
    Поблагодарили
    146 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Exclamation

    Я тут на некоторое время исчезал...

    Повнимательнее протестировал дисковые операции, и вот что могу сообщить.
    В режиме TURBO дисковые операции не работают - выдаётся NO DISK; всё можно делать только в обычнном режиме.
    Запись на 3,5"-дисковод по-видимому происходит нормально, а вот при записи на 5,25"-дисковод иногда происходять ошибки: первый сектор на некоторых дорожках перестаёт читаться.
    В общем-то, такая картина для меня не нова: еще в конце 1990-х годов, когда стали появляться первые командеры с "turbosaver'ами", я получал аналогичные результаты. Еще тогда у меня сложилось мнение, что "turboloader'ы" вероятно могут иметь практическое применение, а вот "turbosaver'ы" - никогда. У меня установлен индикатор записи на дисковод, так вот: скорость записи на 5,25" такая, что даже во время перехода с дорожки на дорожку, он гаснуть не успевает. Надо разобраться с таймингом процедур записи, и сделать величины задержек такие как в ПЗУ TR-DOS.
    Одним словом, я солидарен с теми, кто предлагает использовать только точку входа 15635: там такие проблемы никогда не возникают.
    Если в каком-либо моем посте перестала работать гиперссылка или показываться картинка, напишите мне об этом в личном сообщении,чтобы я смог это исправить.

    Grand's - сайт об электронно-вычислительной технике (зеркало)

  11. #50
    Member
    Регистрация
    23.11.2007
    Адрес
    Ростов-на-Дону
    Сообщений
    171
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    108
    Поблагодарили
    58 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    - Увеличил время проверки наличия диска. Теоретически должно работать на 11 МГц.

    - Поставил задержку после команды "шаг вперед". 5 halt'ов. Получается в районе 0.1 сек, что по моим расчетам составляет 50% длины трека и должно привести к пропуску одного оборота диска.
    Вложения Вложения
    • Тип файла: rar TFC07.rar (16.1 Кб, Просмотров: 141)

Страница 5 из 7 ПерваяПервая 1234567 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. ищу коммандер Luxe Copy 3.0
    от drbars в разделе Софт
    Ответов: 7
    Последнее: 06.03.2008, 22:57
  2. Ответов: 5
    Последнее: 31.03.2007, 23:42

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •