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

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: Ищу процедуру выключения мотора дисковода.

  1. #1
    Guru
    Регистрация
    16.11.2005
    Адрес
    Санкт-Петербург
    Сообщений
    2,893
    Спасибо Благодарностей отдано 
    1,125
    Спасибо Благодарностей получено 
    343
    Поблагодарили
    190 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Ищу процедуру выключения мотора дисковода.

    У меня следующая ситуация: есть процедурка (почти идентичная оригинальной TR-DOS'ной - нету только проверки на кнопку Break) по определению наличия диска в дисководе.

    Так вот. Как корректно отключить мотор дисковода, если диска в дисководе нету?

    Буду весьма признателен за куслчек кода

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

  3. #2
    Master
    Регистрация
    27.04.2005
    Адрес
    Москва
    Сообщений
    886
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Посмотри дизассемблер ПЗУ, я сейчас не помню адрес, она там есть. Загружаешь номер дисковода кажется в A и вызываешь ее через #3D2F.
    Она там вызывается при входе в командный процессор (#3D00).

  4. #3
    Guru Аватар для caro
    Регистрация
    14.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,721
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    134
    Поблагодарили
    87 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sonic Посмотреть сообщение
    Посмотри дизассемблер ПЗУ, я сейчас не помню адрес, она там есть. Загружаешь номер дисковода кажется в A и вызываешь ее через #3D2F.
    Вот она:
    Код:
    ; ПРОЦЕДУРА из TRDOS 5.03 и выше
    ; ИММИТАЦИЯ УСТАНОВКИ ДИСКА ДЛЯ ОТКЛЮЧЕНИЯ
    ; МОТОРА ДИСКОВОДА
    ; В (A) код определяющий номер дисковода:
    ; 0 - A:, 1 - B:, 2 - C:, 3 - D: 
    L02B9:	LD	B,32		;32/2 ИМПУЛЬСА ПО INDEX
    L02BB:	PUSH	BC
    	XOR	1000B		;ИНВЕРСИЯ INDEX
    	OUT	(FDCUP),A
    	PUSH	AF
    	LD	A,5
    	CALL	DELA		;ПАУЗА DT*5
    	POP	AF
    	POP	BC
    	DJNZ	L02BB		;ПОВТОРЯТЬ 32 РАЗА
    	RET

  5. #4
    Guru
    Регистрация
    16.11.2005
    Адрес
    Санкт-Петербург
    Сообщений
    2,893
    Спасибо Благодарностей отдано 
    1,125
    Спасибо Благодарностей получено 
    343
    Поблагодарили
    190 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    То что нужно! Спасибо, уважаемые коллеги!

  6. #5
    Master
    Регистрация
    27.04.2005
    Адрес
    Москва
    Сообщений
    886
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Кстати, интересно...
    Во-первых, вижу комментарий "5.03 и выше". Разве в 5.01 не было? Она не останавливала дисковод?
    Во-вторых, ВГ93 использовалась кроме Спека практически во всех бытовых машинах. А как там с этим поступали? В схемах их контроллеров нет имитации IP.

  7. #6
    Guru Аватар для caro
    Регистрация
    14.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,721
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    134
    Поблагодарили
    87 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sonic Посмотреть сообщение
    Кстати, интересно...
    Во-первых, вижу комментарий "5.03 и выше". Разве в 5.01 не было? Она не останавливала дисковод?
    В версии 5.01 эта же процедура расположена с адреса 02ABh.

    Цитата Сообщение от Sonic Посмотреть сообщение
    Во-вторых, ВГ93 использовалась кроме Спека практически во всех бытовых машинах. А как там с этим поступали? В схемах их контроллеров нет имитации IP.
    Например в контроллере Корвета, для управления мотором есть отдельный бит в управляющем регистре.
    Этим битом и включается/выключается мотор.

  8. #7
    Guru
    Регистрация
    16.11.2005
    Адрес
    Санкт-Петербург
    Сообщений
    2,893
    Спасибо Благодарностей отдано 
    1,125
    Спасибо Благодарностей получено 
    343
    Поблагодарили
    190 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Еще у меня вопросец образовался.

    Ситуация такая:
    В дисководах A и B стоят диски. В портах TR-DOS и FF записаны значения касающиеся дисковода A. Теперь нужно перенастроиться на дисковод B - выставить регистры дорожки и сектора в правильные значения для B.
    Как это сделать не используя команду Восстановление?

  9. #8
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Странный код честно говоря. Помню что когда мне надо было остановить привод я смотрел как это было сделано в BestView. Изза чего кстати он и не работает на R80 под которым я пишу преимущественно - он использует команду восстановления вслед за которой сразу же (!) без всяких пауз идёт команда экстренного безусловного останова. Почему не работает в эмулях - да всё просто - эмулятор в отличие от реала успевает выполнить эту команду %) восстановления. Помню что в своей View для гашения привода я использовал немного другой алгоритм - любой из реалов и эмулей отрабатывал это корректней чем алгоритм из BestView - вначале восстановление и сброс, затем позиционирование на ту дорожку, где головка находилась до команды восстановления и так же принудительный сброс. На самом деле мотор остановится ещё на первой команде, вторая нужна чтобы дурные эмуляторы не глючили.
    Пауза же в BestView была, но только в процедуре определения диска в флопике - там так же даётся команда восстановления, вслед за которой - после паузы - запускается подпрограмма IN_1F, опять же лучше почитать статьи Ивана Рощина, как он это делал и из каких соображений задавалась пауза.


    Ага, вот счас специально посмотрел в своей п/п чтения дисков, завершалась она так:
    LD A,(#5CF5)
    AND A
    RRA ; задаётся номер физической дорожки
    LD C,#7F
    CALL OUTCA
    LD A,#18 ; команда позиционирования с загрузкой - бит h=1
    LD C,#1F
    CALL OUTCA
    LD A,#D0 ; команда принудительного прерывания
    JP OUTCA

    и
    OUTCA LD IX,OUTC
    JP TO_DOS
    ; OUTC есть
    OUTC EQU #2A53

    Ага, я похоже изменил алгоритм - вместо того чтобы два раза позиционироваться - вначале на нулевую потом на основную дорожку, сразу ставил позиционирование на основную дорожку.
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  10. #9
    Master
    Регистрация
    27.04.2005
    Адрес
    Москва
    Сообщений
    886
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ничего странного. Команда прерывания отключает мотор только при присутствии диска. Это багофича у ВГ93 такая - останов мотора происходит после прошествия скольких-то индексных импульсов.
    Указанный код гарантированно формирует пачку импульсов на выводе IP. Для этого в контроллере диод стоит между каким-то из битов порта #FF и IP.

  11. #10
    Guru
    Регистрация
    16.11.2005
    Адрес
    Санкт-Петербург
    Сообщений
    2,893
    Спасибо Благодарностей отдано 
    1,125
    Спасибо Благодарностей получено 
    343
    Поблагодарили
    190 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А я как же я?

Страница 1 из 2 12 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Посоветуйте процедуру...
    от Orionsoft в разделе Программирование
    Ответов: 2
    Последнее: 05.04.2007, 10:38
  2. Эмулятор дисковода - ?
    от Sonic в разделе Внешние накопители
    Ответов: 32
    Последнее: 17.11.2006, 15:16
  3. Чтение с 5.25 дисковода
    от Nut в разделе Эмуляторы
    Ответов: 0
    Последнее: 13.06.2006, 19:13
  4. Распиновка дисковода
    от Dut_Norshi в разделе Внешние накопители
    Ответов: 4
    Последнее: 07.06.2006, 03:38
  5. Распиновка дисковода
    от Dut_Norshi в разделе Разный софт
    Ответов: 4
    Последнее: 07.06.2006, 03:38

Ваши права

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