Просмотр полной версии : НМЛ Контроллеры
Andrey_Ak
07.04.2016, 12:06
Разыскивается владелец рабочего, стандартного НМЛ контроллера СМ5300.01 для МПИ
Сколько ищу, ни разу не встречал тут владельца стандартного, рабочего НМЛ контроллера.
Очень хочется иметь стандартный рабочий контроллер, а так как такого нет,
то хотелось бы сделать его копию. Но увы, нет образца со схемой и с образами ПЗУ.
Вот образец стандартного контроллера:
http://tis.kz/temp/172520/P9020380.jpg
На него даже есть схема и документация:
http://tis.kz/temp/172520/Drv5300.rar
Есть у кого-нибудь такой контроллер? Нужны образы ПЗУ.
Купить, выменять такой контроллер даже не надеюсь..
.
Сейчас как раз занимаюсь эмуляцией работы такого контроллера и столкнулся с тем, что в сети нет ни одного нормального описания его работы.
Например - ни в одном из документов DEC нет полноценного описания алгоритма рассчёта контрольной суммы, не описано, что делает контроллер, когда для 9-дорожечного привода задаётся режим 7-дорожечного и т.п.
- - - Добавлено - - -
С алогоритмом генерации CRC, похоже - удалось разобраться:
http://pic.pdp-11.ru/images/crc800.png
рассчёта контрольной суммы
А зачем собственно? Или хочется еще один формат образа ленты сделать - с црцами? :)
А зачем собственно? Или хочется еще один формат образа ленты сделать - с црцами?Главная причина в том, что контроллеры приводов TS03 и TU10 ( TMB11 и TMA11 ) позволяют дампить ленту посимвольно, а при нормальной работе показывают в регистрах : 1) 9-битные символы; 2) CRC; 3) LPC.
Поэтому можно написать программу, которая будет дампить ленты в двоичном формате и анализировать вертикальный, горизонтальный и циклический контрольные коды. При такой толпе независимых контрольных кодов должны исправляться достаточно сложные ошибки.
Разыскивается владелец рабочего, стандартного НМЛ контроллера СМ5300.01 для МПИКто тебе сказал, что он стандартный? Это явно чей-то самопал, какого-нибудь СКБ. У стандартного контроллера, прежде всего, ножки в МПИ должны быть золочёными, а здесь - не пойми что. Да и не делали, ни Зеленоград, ни Воронеж контроллеров на 1804, а вот то же новосибирское СКБ НП - в полный рост. Правда тот их контроллер МТ, который был у меня, был сделан на двух 4-битных секциях 1804 и размещался на "половинке". У меня их была парочка, один я продал, еще тогда, второй через полгода сдох и реанимировать его я не смог (не очень-то и хотелось...)
Да и не припомню я вообще ни зеленоградских, ни воронежских МТ. И, если они бы были, зачем, спрашивается, этим СКБ было клепать свои?
А сейчас, если нужно контроллер МТ, а не "поднять вот эту конкретную железку", то надо брать какой-нибудь многоногий микроконтроллер и клепать на нем. Какая там скорость передачи данных? Если что, у МТ 32 импульса на миллиметр. Умножаем на скорость ленты в мм/с и получаем скорость передачи. И даже у больших НМЛ, с вакуумными карманами для старт-стопа ленты скорость ленты была всего 2 м/с и, соответственно, 64кбайт/с, хватит любого современного МК. Сейчас Патрон разберется с контрольными суммами, и вперед!
С алогоритмом генерации CRC, похоже - удалось разобраться: Можно еще попробовать заглянуть в книжки по системе-360, лента из-под МТ 100% совместима с лентами из-под IBM-360.
стандартный?
Стандартнго Q-Bus контроллера вроде по определению не существует. Можно говорить о совместимом. При том помним про 18 бит которые на UNIBUS не представляли проблемы, а на Q-Bus являются огранчением...
Какая там скорость передачи данных?У приводов TS03 и СМ5300 скорость ленты = 10000 символов в секунду, у приводов TU10 и ( какой советский аналог TU10 с вакуумными карманами? ) скорость ленты 36000 символов в секунду.
лента из-под МТ 100% совместима с лентами из-под IBM-360.Любопытно, что если контроллер хочет быть совместимым - он должен допускать промежуток перед CRC и LPC = как 2, так и 3 символа (что даёт в метке EOF промежуток между символом EOF и символом LPC от 5 до 7 символов).
У приводов TS03 и СМ5300 скорость ленты = 10000 символов в секунду То есть любая АВР-ка с достаточным количеством ног справится.
( какой советский аналог TU10 с вакуумными карманами? ) Ни разу не видел. Видел какой-то СМ-овский механизм с двумя большими катушками (не помню, как его зовут, катушки вертикально друг над другом), но он тоже тихоходный, как и 5300. А вакуумные, ИМХО, были только в номенклатуре ЕС ЭВМ (клон системы-360/370).
Любопытно, что если контроллер хочет быть совместимым - он должен допускать промежуток перед CRC и LPC = как 2, так и 3 символа (что даёт в метке EOF промежуток между символом EOF и символом LPC от 5 до 7 символов). Вероятно, это соблюдалось - мы молча читали СМ-овские ленты на ЕС-ках и наоборот. На ЕС-ках, конечно, приходилось писать специфически - блоками по 512 байт, а не так, как это принято на ЕС-ках, а физических проблем считывания никаких не было.
какой советский аналог TU10 с вакуумными карманами?
Если имеется ввиду с вертикальным расположением катушек, то такой у ЭВМ М-220 (М-222). Но на счет аналога не в курсе.
http://www.uic.vsu.ru/ccmuseum/comp/m222/images/04.jpg
мы молча читали СМ-овские ленты на ЕС-ках и наоборот
По характеристикам (http://itteach.ru/avtomatizirovannie-sistemi-upravleniya/osnovnie-charakteristiki-ustroystv-es-evm/nakopitel-na-magnitnoy-lente-es-5012) ЕС-50** что-то не видно чтоб читали/писали на скорости 36000 символов в секунду. Может конечно максимальная скорость не в счет.
не видно чтоб читали/писали на скорости 36000 символов в секундуДля совместимости ленты и привода важны только число дорожек, плотность записи и тип модуляции.
9-дорожечную ленту с плотностью записи 32 бит/мм ( 800 dpi ) и модуляцией NRZI можно записать на приводе СМ-5300 с контроллером TMB11 на скорости 10000 символов в секунду, а прочитать на приводе TU10 с контроллером TMA11 на скорости 36000 символов в секунду.
а прочитать на приводе TU10 с контроллером TMA11 на скорости 36000 символов в секунду. и на НМЛ-67 (2м/с) со скоростью 64000 с/с.
- - - Добавлено - - -
Если имеется ввиду с вертикальным расположением катушек, то такой у ЭВМ М-220 (М-222). Но на счет аналога не в курсе. Нет, не такие. То было что-то СЭВовское, не то Болгария, не то Польша, и, вроде-бы, стоял СМ-овский индекс (СМ 53хх), но точно не помню, имел дело всего один раз.
Andrey_Ak
10.04.2016, 05:56
Ну вообще под стандартным, я имел ввиду адрес на шине стандартный, 172520
чтоб родной драйвер от любой системы подходил. А кто этот контроллер сделал,
мне как-то все-равно, главное чтоб работал..
А на счет стандартного, то были такие для МПИ, один в виде платы назывался И17:
http://tis.kz/temp/172520/I17.jpg
А другой был в виде отдельного блока с двухэтажной МПИ корзиной, и назывался 15ВВМЛ-10-001
фото его пока не сделал, а в сети нет..
- - - Добавлено - - -
Кстати, на И17 есть не полная документация, без схем:
http://tis.kz/temp/172520/ms_2707_tu.zip
И образы ПЗУ:
http://tis.kz/temp/172520/I17roms.tar
А на счет стандартного, то были такие для МПИ, один в виде платы назывался И17: Не-а, это, опять же какой-то самопал МС 2707, как на нем написано. Про И17 см ниже.
А другой был в виде отдельного блока с двухэтажной МПИ корзиной, и назывался 15ВВМЛ-10-001
фото его пока не сделал, а в сети нет.. Это из комплекта Э-100/25? Да, такие были, и в СМ-ках, и в Э-100, и, скорее всего, именно для него была плата И17 в корзинку Э-60.
- - - Добавлено - - -
Кстати, на И17 есть не полная документация, без схем:И где ты там нашел литеры И17? Судя по документу, это ни разу не Воронеж и ни Зеленоград, опять же какое-то отдельное СКБ или ОКБ, по скану не разобрать.
Andrey_Ak
10.04.2016, 06:30
Не-а, это, опять же какой-то самопал МС 2707, как на нем написано. Про И17 см ниже.
- Нет, это стандартный, из Эл.60, на нем написано даже И17 альтернативное название МС 2707, и технология платы 1:1 как на процессоре М2.
Это из комплекта Э-100/25? Да, такие были, и в СМ-ках, и в Э-100, и, скорее всего, именно для него была плата И17 в корзинку Э-60.
- Нет, это из комплекта генератора сигналов на базе Э.60, сам блок 15ВВМЛ-10-001 соединяется с корзиной Эл.60 через просто кабель и две полу платы К5.
Вот тут подробнее, только в этой статье, адрес контроллера НМЛ не правильный, должно быть 172520 вместо 177520:
http://www.electriz.ru/mikro-evm-elektronika/ustroistva-upravleniya-vneshnei-pamyatyu-chast-2.html
- - - Добавлено - - -
Нашел старые фото своего 15ВВМЛ-10-001 с Эл.60:
http://tis.kz/temp/GI/03.JPG
http://tis.kz/temp/GI/07.JPG
http://tis.kz/temp/GI/15.JPG
http://tis.kz/temp/GI/19.JPG
http://tis.kz/temp/GI/20.JPG
- Нет, это стандартный, из Эл.60, на нем написано даже И17 альтернативное название МС 2707, и технология платы 1:1 как на процессоре М2. Увы, этого я не знал. Впрочем, по-любому, это "убыточное изделие Китежградского завода маготехники" (с)АБС. В смысле, корявая короткоживущая поделка. Для того, чтобы в Э-60 ставить платы на секциях 1804, надо коренным образом реорганизовывать систему вентиляции. С родной вентиляцией Э-60 они банально перегреваются и дохнут. Причем дохнут не столько сами секции, сколько их окружение. Особенно в Э-60, с её 12.5-мм шагом плат. В ДВК-шных корзинах шаг 15 мм, там чуть получше, но таким контроллерам шаг нужен по крайней мере 20 мм и вентиляторы намного суровее...
- Нет, это из комплекта генератора сигналов на базе Э.60, сам блок 15ВВМЛ-10-001 соединяется с корзиной Эл.60 через просто кабель и две полу платы К2. Жуть! Интересно, блок сопряжения хоть на одной плате, или размазан по нескольким?
- - - Добавлено - - -
А какой контроллер НМЛ в Э-100/25?
Andrey_Ak
10.04.2016, 08:27
Жуть! Интересно, блок сопряжения хоть на одной плате, или размазан по нескольким?
Какой именно блок сопряжения? Идет стандартная Эл.60 с процессором М2, памятью П2 или П3,
далее из корзины идет полуплата К5 от нее два шлейфа на такую-же плату К5, которая уже
вставляется в 15ВВМЛ-10-001, в самом 15ВВМЛ-10-001 куча плат на рассыпухе только для НМЛ.
А какой контроллер НМЛ в Э-100/25?
Там свой контроллер для ОШ..
http://tis.kz/temp/100-25/DSC03019.JPG
http://tis.kz/temp/100-25/DSC03016.JPG
Какой именно блок сопряжения? Идет стандартная Эл.60 с процессором М2, памятью П2 или П3,
далее из корзины идет полуплата К5 от нее два шлейфа на такую-же плату К5, которая уже
вставляется в 15ВВМЛ-10-001Угу, только в корзине Э-60 распаян МПИ, а в корзине контроллера МЛ - черт знает что, МПИ там только на том разъеме, куда воткнут соединитель К5.
Там свой контроллер для ОШ.. Какое у него обозначение? В номенклатуре Э-100, вроде-бы, периферия тоже обзывалась 15ххх
- - - Добавлено - - -
http://tis.kz/temp/100-25/DSC03016.JPG Доглядел. На вот этой фотке видно: 15ВВМЛ-6-002. И все это, по всей видимости, (почти) цельнотянутое с DEC. А МС 2707 - явная более поздняя самодеятельность...
Кстати, на И17 есть не полная документация, без схемТам тоже нет описания работы контроллера.
Например - известно, что в зоне данных не может быть нулевых символов, поэтому если установлен паритет по чётности, то при записи нулевого байта он преднамеренно искажается контроллером на не нулевой. Но на какой - хотелось бы прочитать в выложенном в сеть нормальном описании работы контроллера НМЛ.
Там тоже нет описания работы контроллера. Может в книжках про 15ВВМЛ-6-002 есть? При реализации контроллеров на ИС малой и средней степени интеграции, сведения о подобном действии, обычно, подробно расписывают.
Andrey_Ak, эти книги оцифрованы?
.
Разобрался с предыскажением нулевых символов при записи - у них просто устанавливается бит паритета.
.
Интересная история с минимальным размером записи. В каждом документе на эту тему написано что-то своё, но на самом деле минимального размера для записываемого блока нет, а для читаемого без ошибок блока минимальный размер - три байта. Причём, между первыми тремя читаемыми символами все пустые промежутки игнорируются. Причина этого в том, что чтение в обе стороны выполняет единый алгоритм, а при чтении назад - перед первым символом блока данных надо пропустить символ LPC, несколько промежутков, символ CRC и ещё несколько промежутков.
Поэтому, если записать на ленту блок из одного символа, то при обычном чтении сначала будут прочитаны в качестве данных: 1) символ данных, 2) символ CRC, 3) символ LPC, после чего активируется реакция контроллера на промежутки, считанный промежуток активирует поиск CRC, будет отсчитан промежуток до CRC, считан ноль в качестве CRC, потом будет отсчитан промежуток до LPC, считан ноль в качестве LPC и чтение завершится с сообщением об ошибках CRC и LPC.
Так что, уже можно брать микроконтроллер с достаточным количеством ног и сочинять свой МТ ? Замечательно!
- - - Добавлено - - -
но на самом деле минимального размера для записываемого блока нет Не считая того, что блок, длиной 0 байт - это TM. Или мой склероз врет?
Andrey_Ak
15.04.2016, 09:55
Может в книжках про 15ВВМЛ-6-002 есть? При реализации контроллеров на ИС малой и средней степени интеграции, сведения о подобном действии, обычно, подробно расписывают.
Andrey_Ak, эти книги оцифрованы?
Возможно там и есть, книги если и есть, то не оцифрованы.. Но разве это поможет созданию реплики для МПИ?
- - - Добавлено - - -
Поэтому, если записать на ленту блок из одного символа, то при обычном чтении сначала будут прочитаны в качестве данных: 1) символ данных, 2) символ CRC, 3) символ LPC, после чего активируется реакция контроллера на промежутки, считанный промежуток активирует поиск CRC, будет отсчитан промежуток до CRC, считан ноль в качестве CRC, потом будет отсчитан промежуток до LPC, считан ноль в качестве LPC и чтение завершится с сообщением об ошибках CRC и LPC.
Может подключить машину с этим контроллером:
http://zx-pk.ru/threads/26064-kontroller-nml-io-170002-amp-elektronnye-diski-dm-io-175000-175006-i-dp-io-176470-17647.html
Или с этим:
http://zx-pk.ru/threads/15363-kontroller-nml-sm5300-01.html
И выставить машину в сеть, и Вы сможете удаленно все моменты протестировать на запись и чтение?
сможете удаленно все моменты протестировать на запись и чтение?Сделаю эмулятор того контроллера, на котором идут тесты XXDP для контроллера TM-11, а потом напишу тесты для проверки возможности посимвольного дампа лент с такого контроллера.
- - - Добавлено - - -
Не считая того, что блок, длиной 0 байт - это TM.Для записи EOF есть отдельная команда контроллера, а ноль в счётчике байтов пишет блок длиной 64К байтов.
Но разве это поможет созданию реплики для МПИ? ИМХО, реплика, как таковая, народу не нужна вообще. Народу нужен контроллер, выполняющий в точности те же функции, но попроще и поменьше. Это и воронежцы поняли, результатом чего явилась плата И17. Но она была сделана на доступной в те времена элементной базе, которая сейчас, во-первых, не особенно доступна, во-вторых, цены на это хозяйство далеки от привлекательных и, наконец, электричество оно жрёт, как свинья помои, и греется соответственно. И это в наши суровые времена, когда с этими функциями справится любой микроконтроллер с достаточным числом ножек, потреблением менее 100мА и ценой не более 5 убитых енотов. В общем, делать такую плату, как минимум, нецелесообразно.
А для изготовления подобного контроллера на современной элементной базе нужно решить две задачи: (1) отработать взаимодействие с магнитофоном и (2) отработать пассивного абонента МПИ с DMA. Первая требует умеренного быстродействия МК и досконального знания функций контроллера и их деталей, с чем Патрон почти (а может и совсем) разобрался, второе - достаточно сложная задача, решить ее "на рассыпухе", конечно, можно, но желания никакого. Вариантов два - или делать это на ПЛИС, или делать на достаточно шустром МК общего назначения с достаточным числом ног, причем программа должна быть синхронной и очень короткой, поскольку ни один современный МК из доступных не сможет осмысленно работать с частотой прерываний 2МГц (официальное быстродействие Q-bus - 2 млн транзакций в секунду). Но если программа будет короткой и синхронной, какой-нибудь STM32 с этим справится, пример тому - небезызвестный РЕмулятор. А между контроллерами МЛ и МПИ организовать какой-нибудь простенький самодельный интерфейс, вне зависимости от того, на чем реализован контроллер МПИ.
В каждом документе на эту тему написано что-то своё
Может Гост (http://docs.cntd.ru/document/gost-20731-86) поможет.
а при чтении назад - перед первым символом блока данных надо пропустить символ LPC, несколько промежутков, символ CRC и ещё несколько промежутков.
При чтении назад данные должны сначала записаться в буфер, а при чтении из буфера должны считываться в обратном направлении т.к. записаны они там задом наперед.
Может Гост поможет. Ух ты, как шикарно! Только это для метода записи 1600PE (Phase Encoding). А изучаемый контроллер использует метод записи 800NRZ (Non-Return-to-Zero) с плотностью записи 32 имп/мм.
И, если не путаю, Патрон уже давно пользует оригинал (исходник) для этих ГОСТов - соответствующий ANSI.
При чтении назад данные должны сначала записаться в буфер, а при чтении из буфера должны считываться в обратном направлении т.к. записаны они там задом наперед. При чтении назад данные пишутся в память с с конца отведенной области и с уменьшением адреса.
Только это для метода записи 1600PE (Phase Encoding).
Гост (http://docs.cntd.ru/document/gost-25764-83) с 32 имп/мм.
При чтении назад данные пишутся в память с конца отведенной области и с уменьшением адреса.
Можно и так.
При чтении назад данные пишутся в память с с конца отведенной области и с уменьшением адреса.Данные пишутся в память только в операции чтения.
Контроллер ленты устроен так, что чтение происходит во всех операциях, кроме перемотки, поэтому в приводе есть отдельные головки записи и чтения, которые при записи работают одновременно. Операция записи завершается не после того, как весь блок будет записан головкой записи, а после того, как находящейся позади головкой чтения будет прочитан символ LPC только что записанного блока.
Обратное чтение происходит в операции обратного поиска, при которой ничего в памяти не сохраняется и не проверяются контрольные суммы.
кроме перемотки
Но ведь при перемотки головки не отводятся (или отводятся?). Как тогда контроллер найдет нужное место где надо остановится?
а после того, как находящейся позади головкой чтения будет прочитан символ LPC только что записанного блока.
Только LPC? Я думаю что логичнее проверять всю запись со сверкой по "И". Где в случае несовпадения контроллер будет знать что запись прошла с ошибкой.
Обратное чтение происходит в операции обратного поиска
Не про то. Когда для ускорения считывания сделано так, чтоб плёнку не надо было перематывать назад, считывают её в обратном направлении. Соответственно и записывают в ОЗУ (как слепок) с конца адреса. Зато потом считывают с ОЗУ её правильно, как будто прочитали ленту в прямом направлении.
Данные пишутся в память только в операции чтения Понятно. Это я спутал с системой-360, у нее, в числе прочих, есть команда "обратное чтение", которой дают адрес конца блока памяти, и она читает ленту в обратном направлении, располагая считанное с уменьшением адресов.
Но ведь при перемотки головки не отводятся (или отводятся?). Маркер начала ленты - отражательная полоска (полоска зеркального скотча), наклеенная на ленту через 1 м (для вакуумных НМЛ - через 2-3 м) от физического начала ленты. Там отражательный фотодатчик, по нему оно и позиционируется. Наклейка смещена к краю ленты, к другому краю ленты смещена наклейка физического конца ленты, ее выискивает другой фотодатчик. Наклейку лепят, опять же, за 2-3 метра до физического конца ленты. На ЭВМ без дисков, но с лентами (например, Минск-32) широко применялись рабочие ленты. У них, обычно, через некоторое время эксплуатации портилось начало. Стандартная процедура в этом случае - отмотать, отрезать и выкинуть 10-15 м ленты, затем приклеить новый маркер начала.
Но ведь при перемотки головки не отводятся (или отводятся?). Как тогда контроллер найдет нужное место где надо остановится?Перемотка на высокой скорости всегда идёт до начала ленты. Перемотка на низкой скорости не до начала ленты - это обратный поиск.
Только LPC? Я думаю что логичнее проверять всю запись со сверкой по "И".LPC - это контрольная сумма всех символов блока и символа CRC по XOR, CRC - контрольная сумма блока по CRC. При записи канал чтения работает так же, как при чтении ( только в память не пишет ), поэтому если запись прошла с какой-то ошибкой ( PARITY, CRC, LPC ), то к моменту завершения чтения символа LPC об этом уже будет известно.
Когда для ускорения считывания сделано так, чтоб плёнку не надо было перематывать назад, считывают её в обратном направлении. Соответственно и записывают в ОЗУ (как слепок) с конца адреса.Такое невозможно потому, что при чтении задаётся не точное количество читаемых байтов, а максимальное. Можно в каждой операции чтения передавать в счётчике байтов 000000 - и тогда блок любой длины будет прочитан с ленты полностью.
- - - Добавлено - - -
Ещё одна интересная особенность контроллера, о которой мало кто знает - что если после записи блока отмотать его назад и записать снова, то новая запись на ленте окажется сдвинутой вперёд относительно старой примерно на 100 символов. За счёт этого 5 повторов неудавшейся операции записи блока из 512 байтов сместят позицию начала записи данных на то место, где закончилась запись данных в первой попытке.
Чтобы головка записи при второй попытке оказалась на том же месте, где и при первой - надо отмотать на два блока назад и на один вперёд.
по XOR
Точно!
По "И" получается при 2х нулях такая же комбинация как и при "1" в одном из разрядов. Исключающая ИЛИ полностью исключает несовпадения. :)
тогда блок любой длины будет прочитан с ленты полностью
Так и надо сделать. :)
Маркер начала ленты - отражательная полоска (полоска зеркального скотча), наклеенная на ленту через 1 м (для вакуумных НМЛ - через 2-3 м) от физического начала ленты.
Про маркер знаю. Я думал что поиск имеется ввиду.
Однако как же при перемотки, лента с вакуумных карманов сматывается (идет в натяг)?
Так и надо сделать.При чтении вперёд - без проблем.
Но чтобы начать заполнять буфер данных в ОЗУ с конца - надо знать, где конкретно этот конец. При передаче нулевого счётчика байтов это невозможно.
- - - Добавлено - - -
Однако как же при перемотки, лента с вакуумных карманов сматывается (идет в натяг)?Вакуумный карман превращает воздух в обыкновенный вращающийся ролик, на который опирается лента. При перемотке этот воздушный ролик ведёт себя так же, как и любой другой ролик - он вертится.
- - - Добавлено - - -
Чтобы при начале перемотки воздушный ролик не выскочил из кармана - скорость перемотки увеличивается постепенно.
скорость перемотки увеличивается постепенно.
И достигает значительных значений - так, что номер с маркером посреди ленты в качестве помощи для чтения подпорченных лент проходит этак с 3-4 раза :)
Однако как же при перемотки, лента с вакуумных карманов сматывается (идет в натяг)?Где как. Обычные накопители просто мотают, и все, какой-то из накопителей (кажется ЕС-5017, ГДР-овский) при обратной перемотке вытягивал ленту из правого кармана, в левом оставлял.
Там, кстати, всё вакуумное - и прижим ленты к ведущему валу, и тормоз остановки ленты. Гремят они, клапанами, люто!..
Ещё одна интересная особенность контроллера, о которой мало кто знает - что если после записи блока отмотать его назад и записать снова, то новая запись на ленте окажется сдвинутой вперёд относительно старой примерно на 100 символов. За счёт этого 5 повторов неудавшейся операции записи блока из 512 байтов сместят позицию начала записи данных на то место, где закончилась запись данных в первой попытке. У Системы-360 есть специальная команда "стереть участок", которая стирает 3.5 дюйма ленты (место, куда бы влезло около 2800 байт), применяется при неудачной записи для пропуска дефектного участка.
И достигает значительных значений - так, что номер с маркером посреди ленты в качестве помощи для чтения подпорченных лент проходит этак с 3-4 разаВ принципе - есть возможность написать утилиту, позволяющую с довольно высокой точностью выставить головку чтения на интересующий символ ленты ( как от начала/конца ленты, так и от начала/конца любого блока ).
Удивительно, что при наличии документации о работе ленточного контроллера вся самодеятельность программистов СМ-ЭВМ ограничилась программой SUPER/COPIER.
- - - Добавлено - - -
У Системы-360 есть специальная команда "стереть участок", которая стирает 3.5 дюйма ленты (место, куда бы влезло около 2800 байт)Здесь тоже такое есть, но смысл в том, что при обычной записи блока через драйвер - контроллер специально обеспечивает, чтобы повторные попытки записи шли с небольшим сдвигом.
с довольно высокой точностью выставить головку чтения на интересующий символ ленты
Сейчас не так актуально, тем более, что в наличии в основном СМ5300 или как их там, а там даже приклеивать на такие ленты ничего не надо - достаточно положить и пустить штатную загрузку ленты с любого места :)
Просто в свое время была у меня такая, там был RSX-11M V4.1, испорченный UNIX неизвестной версии (в него как раз влепили логический конец ленты), а после шел единственный поблизости дистриб RT-11 V5.0, вот его и приходилось доставать хитрым образом, а потом когда появились гробы здоровые - пришлось повоевать с ними немного :)
Сейчас не так актуальноЕсли обращаться напрямую к регистрам контроллера, то утилиту для позиционирования ленты за её логический конец можно написать довольно быстро.
У меня получилось так: EOT_v0.1 (http://emulator.pdp-11.org.ru/misc/EOT_v0.1.zip)
На чистой ( и позже проинициализированной ) ленте результат такой:
.RU EOT
EOT v0.1 - Skip TM-11 tape past EOT.
<<< BOT >>>
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
<<< EOT >>>
.INI/NOQ MT:
.RU EOT
EOT v0.1 - Skip TM-11 tape past EOT.
<<< BOT >>>
2
<<< MARK >>>
<<< MARK >>>
1
<<< MARK >>>
<<< MARK >>>
<<< MARK >>>
.RU EOT
EOT v0.1 - Skip TM-11 tape past EOT.
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
<<< EOT >>>
.
написать довольно быстро
Еще быстрее можно было делать так как и делали: нажать пару кнопок и штатным образом прочитать. Настолько проще, что даже не возникало идеи скопировать вплоть до момента появления громадных автоматизированных шкафов, но и тогда несложно было просто приклеить бумажку посреди ленты и с 3-4 попытки прочитать, а потом записать на новую ленту :)
- - - Добавлено - - -
обращаться напрямую к регистрам контроллера
Да вроде и через драйвер можно.
Да вроде и через драйвер можно.Если драйвер умеет читать после логического конца ленты.
В любом случае - через регистры должно быть и проще, и компактнее.
.
Хотелось бы знать, что написано в описании советских контроллеров НМЛ про поведение поиска вперёд при появлении сигнала EOT.
Больше всего интересует следующее. После нахождения конца блока операция прямого поиска инкрементирует счётчик байтов и если он не стал нулевым - ищется начало следующего блока. Если следующего блока на ленте нет - контроллер в ходе поиска проматывает 750 см ленты от последнего конца блока, после чего операция завершается. Но что будет, если в этот момент активизируется сигнал маркера EOT.. Будет ли контроллер мотать ленту дальше или остановится сразу после EOT ?
Patron, Не знаю поможет или нет, есть описание контроллера в МПСС за 1988№1 на 83-84 страницах.
Здесь. (http://www.wdigest.ru/mpss_pdf/1988/mpss-1988-01.pdf)
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot