User Tag List

Страница 7 из 26 ПерваяПервая ... 34567891011 ... ПоследняяПоследняя
Показано с 61 по 70 из 399

Тема: Контроллер псевдо КМД+дисковод для УКНЦ (на SD карте)

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    В эмуляции дисковода есть ещё одна небольшая проблема, на которую я лично просто забил.
    После записи на дорожку, в любой из секторов, я только меняю данные в памяти и отмечаю себе что была запись.
    Реальная запись всей дорожки происходит только при следующей смене стороны/дорожки, либо при отключении образа диска.
    Я предлагаю держать в памяти не дорожку, а цилиндр. Это на писюке запись быстрая. Писать, когда процессор - МК с ограниченными ресурсами, а носитель - микро-SD, это миллисекунды. УКНЦовина же будет ожидать (почти) мгновенного переключения стороны диска (головки).

    И еще я бы в "железном" эмуляторе добавил сброс записанного материала после тайм-аута секунды в три - мы же не в состоянии отловить макрокоманду .CLOSE, отрабатываемую на ЦП. Закрыла программа выходной файл и успокоилась, а машинку возьмут, да и выключат. Да и светодиод красный приделать: мол, запись идет, пока не погаснет, не выключай! Ну в самом деле, не цеплять же туда еще и батарейку...

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Т.е. обработка ошибок в этом месте не на высоте, к сожалению. И я тут как бы не понимаю как можно было бы в принципе сделать лучше.
    Конечно, надёжность современных носителей такова что подобные проблемы это очень редкий случай.
    Ну да, тут, фактически, кэширование с отложенной записью. Причем для программы и ОС ничего об этом кэшировании не знающими. И ОС, и программа, давно получили уведомления, что все ОК и так же давно забыли, что вообще что-то писали, а тут, вдруг, вылезает такая радость. ИМХО, если что-то делать, то это надо делать на надсистемном уровне, т.е ругаться должна не эмулируемая программа или ОСь, а сам эмулятор. Неважно, программный он на писюке, или программно-аппаратный на МК.
    Последний раз редактировалось AFZ; 15.06.2020 в 16:42.
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

    Эти 2 пользователя(ей) поблагодарили AFZ за это полезное сообщение:

    hobot(15.06.2020), nzeemin(15.06.2020)

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

  3. #2

    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Так читать SD надо во время "шагов" "головки" Поступила команда "Шаг вперед" (или назад), читаем в ОЗУ все 20 секторов этого цилиндра с файл-образа на SD-шке, а далее в цикле проигрываем их через регистры эмулируемой ВП1-128. Попросили записать, изменяем информацию в соответствующих местах буфера и ставим метку "была запись". Пришел новый "шаг", смотрим метку "была запись", если была, сбрасываем нужные места на файл-образ, затем читаем следующий цилиндр. Один шаг минимально составляет 3 мс, если за это время выйдет записать старый цилиндр и прочитать следующий, то все ОК. То есть, разделить во времени обмен с SD и обмен с УКНЦ. Тем более, что программа обслуживания дисков, считая, что она через 128-й работает с обычным дисководом, все равно будет тупо ждать 3хN мс, пока дисковод переместит головку на следу.щую дорожку. (N здесь - set-параметр STEP драйвера MZ, 1-6. Или 3-18, если у этого драйвера шаги задаются в мс, а не в условных единицах, есть и такие драйверы).

    - - - Добавлено - - -

    Да, и еще, поставив метку "была запись", следует взвести таймер секунды на три, если за это время не поступит сигнал "шаг", надо будет сбросить на SD-шку измененное состояние дорожек эмулируемого диска.
    Последний раз редактировалось AFZ; 15.07.2020 в 17:17.
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

    Этот пользователь поблагодарил AFZ за это полезное сообщение:

    hobot(15.07.2020)

  4. #3

    Регистрация
    10.04.2019
    Адрес
    г. Фокино, Брянская обл.
    Сообщений
    401
    Спасибо Благодарностей отдано 
    52
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    65 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AFZ Посмотреть сообщение
    Так читать SD надо во время "шагов" "головки" Поступила команда "Шаг вперед" (или назад), читаем в ОЗУ все 20 секторов этого цилиндра с файл-образа на SD-шке, а далее в цикле проигрываем их через регистры эмулируемой ВП1-128.
    Я почти так и делаю, только читаю 10 секторов одной стороны. Правда я не сразу при перемещении дороги читаю, тк иногда драйвер ФДД УКНЦ просто пробегает по дорожкам не читая их, по этому жду когда чтение на дороге перевалит 1й маркер и начинаю читать, корости СДшки вполне хватает прочитать 512 байт до начала чтения участка данных. Номера секторов всегда стандартны, я при перемещении головы в буфере только № дорожки меняю.

    - - - Добавлено - - -

    Цитата Сообщение от Arseny Посмотреть сообщение
    Тут есть как минимум 2 решения - разобраться чтением с SD (если это возможно) или работать дальше с образом в ОЗУ STM. Только добавить возможность скидывать образ из ОЗУ на SD при отключении питания (тот же ионистор прикрутить).
    Увы, памяти (ОЗУ) всего 128кБ.

    Этот пользователь поблагодарил ZPilot за это полезное сообщение:

    hobot(15.07.2020)

  5. #4

    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZPilot Посмотреть сообщение
    читаю 10 секторов одной стороны.
    Так переключение стороны диска в оригинале, практически, мгновенное. В отличие от перемещения головки. Поэтому, если за время шага прочитать обе стороны дорожки, то потом, пока идет их передача в УКНЦ, ничего читать с СД-шки не надо. То есть, пока ПП ждет, когда дисковод сделает шаг, он не смотрит, что там поступает с головки - оттуда же, при ее (головки) перемещении, ничего внятного поступить не может. Потом же, когда ПП приступит к анализу читаемой дорожки, она уже целиком будет в ОЗУ МК, и, пока все эти 20 секторов не будут обработаны, информация с СД-шки понадобиться не может и все прерывания и прочие дела, связанные с СД-шкой можно просто отключить. А на время шага отключить всё, связанное с передачей данных в УКНЦ. То есть, пока читаем СД-шку, нам не будет мешать всё, связанное с эмуляцией ВП1-128, а когда эмулируем эту 128-ю, нам не будет мешать обмен с SD, и можно будет полностью исключить влияние этих процессов друг на друга.
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

    Эти 3 пользователя(ей) поблагодарили AFZ за это полезное сообщение:

    hobot(15.07.2020), nzeemin(15.07.2020), Titus(15.07.2020)

  6. #5

    Регистрация
    10.04.2019
    Адрес
    г. Фокино, Брянская обл.
    Сообщений
    401
    Спасибо Благодарностей отдано 
    52
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    65 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Всё страньше и страньше! Всё чудесатее и чудесатее! Всё любопытственнее и любопытственнее! Всё страннее и страннее! Всё чудесится и чудесится!@Алиса

    Скрытый текст


    Это минимальный образ системы от уважаемого nzeemin


    А это загрузочный образ с бейсиком:

    [свернуть]


    - - - Добавлено - - -

    Судя по тексту 22 цилиндра прочитал.

    Эти 2 пользователя(ей) поблагодарили ZPilot за это полезное сообщение:

    hobot(16.07.2020), nzeemin(16.07.2020)

  7. #6

    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    7,161
    Спасибо Благодарностей отдано 
    2,979
    Спасибо Благодарностей получено 
    374
    Поблагодарили
    311 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZPilot Посмотреть сообщение
    А это загрузочный образ с бейсиком:
    ну там надо копать на какой конкретно строке стартового файла вылет ?
    Архив программ для УК-НЦ, ДВК и БК.

    Ищу игру "СТРАНА МОНСТРОВ" [monstr.sav] для ДВК.

  8. #7

    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZPilot Посмотреть сообщение
    Вот если вы не ответите на эту константу вовремя, получите трап4.
    То есть?
    Код:
            BIS     #200,2(R3)      ; Установить бит шага в копии РСН
            MOV     2(R3),@R4       ; Сделать шаг
            MOV     24(R3),R0       ; R0 = время шага
            BIC     #200,2(R3)      ; Сбросить бит шага в копии РСН
    7566$:  SOB     R0,7566$        ; Цикл ожидания
    Вот, пересылаем в R0 константу (вернее не константу, а заранее рассчитанное число) и ждем командой SOB самой на себя. На что здесь отвечать?

    Это из MY. В УКНЦ посложнее, там, кроме обслуживания ВП1-128 нужно заниматься еще кучкой оборудования, например, видеоконтроллером, поэтому у УКНЦ ожидание не такое тупое - они выходят по RTI, а ожидание делается, похоже, аппаратным таймером (не вникал). Но, по-любому, пока головка движется, принимать с нее информацию нет смысла, а сигналов, свидетельствующих об окончании движения головки в интерфейсе флопиков НЕТ! Поэтому, только ждать, смотреть в регистры 177130/132 бесполезно.

    Цитата Сообщение от ZPilot Посмотреть сообщение
    Всё страньше и страньше! Всё чудесатее и чудесатее!
    Мне это дело больше нравится в редакции Высоцкого: "Все чудесатее и страньше. Нет, чудестраньше. Ах, я заблуждаюсь!.."

    - - - Добавлено - - -

    Я вижу еще пару "подводных камней".

    Во-первых, запись. При записи надо будет просто заменить информацию нужных секторов в буфере и пометить этот факт флажком, а при шаге на другую дорожку, перед считыванием нового цилиндра, сбросить по этому флажку измененный цилиндр (или измененные сектора цилиндра) на СД-шку. Вопрос, успеет ли пройти запись этого цилиндра и считывание нового за время одного шага?

    И, во-вторых. КМД-УК может обслуживать 4 накопителя. Вопрос: будет ли время на считывание цилиндра при смене накопителей? Он же может стоять уже на нужной дорожке, так, что шаги не потребуются. Впрочем, буфер цилиндра всего 10К, а оперативки у МК 128К, да? Так, что, вероятно, можно выделить каждому накопителю свои 10К на индивидуальный буфер...

    Да, кстати, напоминаю. Хоть у ВП1-128 сделаны 4 бита "выбор накопителя", по одному на каждый из доступных накопителей на интерфейсе Shugart, в КМД-УК на два (младших?) бита поставили дешифратор и передают номер накопителя двоичным числом в этих двух битах, а два других бита заняли управлением прекомпенсацией
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

  9. #8

    Регистрация
    10.04.2019
    Адрес
    г. Фокино, Брянская обл.
    Сообщений
    401
    Спасибо Благодарностей отдано 
    52
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    65 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AFZ Посмотреть сообщение
    Вот, пересылаем в R0 константу (вернее не константу, а заранее рассчитанное число) и ждем командой SOB самой на себя. На что здесь отвечать?
    Когда УКНЦ пишет в порт 177130 значение, чтобы, например, передвинуть головку, она делает следующее: SYNC-DOUT и ждет RPLY, если RPLY не ответит, то трап4. А чтобы сделать RPLY СТМка должна прижать соответствующий пин к земле. Тк это обязательные по времени операции, то они сделаны в прерываниях с максимальным приоритетом. Для этого мне даже пришлось все системные приоритеты понизить.

    Цитата Сообщение от AFZ Посмотреть сообщение
    И, во-вторых. КМД-УК может обслуживать 4 накопителя. Вопрос: будет ли время на считывание цилиндра при смене накопителей?
    Ммм.. тут УКНЦ ведет себя так, при переключении на другой привод она заново читает нужную ей дорожку. Таким образом времени нужно столько же, сколько и просто на текущее считывание, а времени у СТМ на выбор из какого файла читать, нужно тактов 10.
    Цитата Сообщение от AFZ Посмотреть сообщение
    бита поставили дешифратор и передают номер накопителя двоичным числом в этих двух битах,
    С 3-мя накопителями именно так.. 4-й вроде, на 10 бите. Тк 3 у меня работали, а 4 нет.. но мне было не до него.

    Сейчас у меня 1 большая проблема, которую я не знаю пока как решить:

    Скрытый текст

    [свернуть]

    Те УКНЦ думает, что считала 65 дорогу, а в реальности считалась 57, а может считаться и любая другая и не обязательно на 65 дорожке.
    Это происходит после чтения некоторого кол-ва дорожек.
    Последний раз редактировалось ZPilot; 17.07.2020 в 11:31.

  10. #9

    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZPilot Посмотреть сообщение
    Когда УКНЦ пишет в порт 177130 значение, чтобы, например, передвинуть головку, она делает следующее: SYNC-DOUT и ждет RPLY, если RPLY не ответит, то трап4.
    Естественно. Но, выдав этот бит "Шаг" (вторая строчка в приведенном фрагменте, MOV 2(R3),@R4, в R4 в это время 177130), программа на 3 мс минимум забывает о существовании оборудования по адресу 177130/132. То есть, она считает, что ШД головки стартовал и до окончания его шага смотреть на ВП1-128 бесполезно. Вот, в течение этих 3 мс и можно делать все, что угодно - нового обращения не будет. То есть, увидев, что ПП УКНЦ записывает единичку по маске 0200 в CSR (130), можно спокойно забыть об отслеживании МПИ и вспоминать об этом только через 2.8 мс (0.2 мс оставим про запас).

    Цитата Сообщение от ZPilot Посмотреть сообщение
    Ммм.. тут УКНЦ ведет себя так, при переключении на другой привод она заново читает нужную ей дорожку. Таким образом времени нужно столько же, сколько и просто на текущее считывание, а времени у СТМ на выбор из какого файла читать, нужно тактов 10.
    Мы же, вроде-бы, договорились, что читать-писать SD-шку следует только во время шагов, когда ПП на 3 мс забывает о ВП1-128. А при переключении накопителей головка запросто может оказаться на нужной дорожке, и ПП сразу захочет ее читать, а ее еще нет в памяти...

    Цитата Сообщение от ZPilot Посмотреть сообщение
    С 3-мя накопителями именно так.. 4-й вроде, на 10 бите. Тк 3 у меня работали, а 4 нет.. но мне было не до него.
    Посмотрел схему, биты DS0 и DS1 (ноги 41 и 40 ВП1-128) идут прямо на А0 и А1 м/с 555ИД7. Ей же на А3 приходит сигнал REZ (30 нога 128-й). Вообще-то, этот REZ в MY используется для включения прекомпенсации, но в УКНЦ ее повесили прямо на ноги DS2 и DS3 - не помню, но у них там не то 2, не то 4 уровня прекомпенсации, сейчас вспоминать не хочу. А REZ, как свободный триггер, управляемый с ПП, здесь задействован, как сигнал "не выбран ни один накопитель".

    Цитата Сообщение от ZPilot Посмотреть сообщение
    Те УКНЦ думает, что считала 65 дорогу, а в реальности считалась 57
    Где-то кто-то сбился. И, может быть, из-за попыток читать карточку во время обмена с УКНЦ. Я бы, все-таки, читал СД-шку СТРОГО во время шагов.

    - - - Добавлено - - -

    Цитата Сообщение от ZPilot Посмотреть сообщение
    UP: Ускорил загрузку с диска, раз в 5. Для этого исключил чтение с СД-карты когда УКНЦ просто передвигает головки не читая цилиндр.
    Что-то не так, шаг должен выполняться 3 мс, независимо от того, что там на дорожках. Или чтение идет слишком долго (может быть нужно читать сразу блоком в 20 секторов), или еще что-то некорректно работает.
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

  11. #10

    Регистрация
    10.04.2019
    Адрес
    г. Фокино, Брянская обл.
    Сообщений
    401
    Спасибо Благодарностей отдано 
    52
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    65 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AFZ Посмотреть сообщение
    , программа на 3 мс минимум забывает о существовании оборудования по адресу
    Я всегда путаюсь в размерах, 3 мс это 3 микросекунды или мили?

    Цитата Сообщение от AFZ Посмотреть сообщение
    Мы же, вроде-бы, договорились, что читать-писать SD-шку следует только во время шагов
    Посмотрите мое предыдущее сообщение, особенно видео, и вы поймете в чем разница при чтении во время перемещения и когда УКНЦ реально начинает читать диск.

    Цитата Сообщение от AFZ Посмотреть сообщение
    из-за попыток читать карточку во время обмена с УКНЦ.
    Да, так и есть.. потому.. с читил..

    - - - Добавлено - - -

    Даже за 3 миллисекунды я не успею считать 10240 байт, тк за это время надо вычислить номер цилиндра, высчитать смещение в файле, сделать f_lseek и выполнить чтение в буфер, а потом раскидать этот буфер в трек. Что самое обидное, так это то, что f_lseek выполняется почти с такой же скоростью, что и чтение.

    - - - Добавлено - - -

    Alex_K, ошибок в testmz нет ни при последовательном чтении, ни при случайном чтении секторов.

    Этот пользователь поблагодарил ZPilot за это полезное сообщение:

    hobot(17.07.2020)

Страница 7 из 26 ПерваяПервая ... 34567891011 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 713
    Последнее: 13.05.2025, 11:42
  2. Ответов: 327
    Последнее: 03.12.2019, 22:49
  3. Куплю КМД для УКНЦ
    от Feral в разделе Барахолка (архив)
    Ответов: 32
    Последнее: 07.06.2012, 13:31
  4. Продам МС5310 блок дисководов к УКНЦ+КМД УКНЦ
    от Mad Killer/PG в разделе Барахолка (архив)
    Ответов: 7
    Последнее: 19.03.2012, 11:27
  5. Контроллер КМД-УКНЦ, АУКЦИОН
    от tntpro в разделе Барахолка (архив)
    Ответов: 9
    Последнее: 23.06.2011, 16:32

Ваши права

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