51

Re: Изготовление универсального (А7/А9) контроллера дисковода 140 К

Сравнил по таймингам длительности импульсов чтения стандартного Apple DISK II  и эмулятора, получилось что:

Очевидно, что растянуто все в 1,2 раза в случае эмулятора.

- длительность единицы в случае эмулятора - 1,2 мс, в случае дисковода - 1 мс...
- длительность нуля (или промежутка между импульсами) в случае эмулятора - 4,2 мс, в случае дисковода - 3 мс...

Это же может быть причиной того что на выходе секвенсера ничего нет?

52

Re: Изготовление универсального (А7/А9) контроллера дисковода 140 К

Да, наверное это оно, с агаткомп:

"дорожка - 200 мс, каждый бит пишется 4 мкс. Если бит имеет единичное значение, уровень на линии записи дисковода должен изменить своё значение. Если бит имеет нулевое значение, уровень на линии записи должен оставаться неизменным. Изменения уровней должны происходить не чаще одного раза в 4 мкс и не реже чем раз в 12 мкс - т.е. между одной единицей допускается не более двух нулей. "

Эпловский дисковод (возьмем за эталон) имеет длительность 3,75 мс .... 4.125 мс.. И это прямо таки четко. В случае с эмулем, длительность 5,375 мс .... 5.5 мс..  На сколько я понимаю, этого более чем достаточно для того чтобы просто не понимать то что приходит с дисковода.

Но как такое может быть? Атмеги то одинаковые.... Стабилизированы кварцеыми генераторами... Как так?

53

Re: Изготовление универсального (А7/А9) контроллера дисковода 140 К

electroscat пишет:

во время чтения на D15 приходят сигналы сдвига, но при этом информация не поступает, и по этому на выходе постоянный "0" по всем разрядам

В исправном контроллере при чтении постоянного нуля в регистре данных быть не может. Контроллер при чтении очередного байта сбрасывает D15 и сразу записывает единицу в младший разряд. Потом эта единица движется до старшего разряда.

Сначала убедитесь, что у вас точно режим чтения (на 5 ноге D12 ноль). А потом проверьте, что 13 нога D15 не висит в нуле и что схема синхронного сброса (D13.3, D20) работает правильно

54 Отредактировано electroscat (24-11-2021 02:56)

Re: Изготовление универсального (А7/А9) контроллера дисковода 140 К

Доброго времени ! Благодарю за вашу отзывчивость и желание помочь !!!

avivanov76 пишет:

Сначала убедитесь, что у вас точно режим чтения (на 5 ноге D12 ноль).

Да, там ноль точно. И до запуска С600G и после.


avivanov76 пишет:

А потом проверьте, что 13 нога D15 не висит в нуле...

На 13 ноге единичка. И до запуска С600G и после.

avivanov76 пишет:

...и что схема синхронного сброса (D13.3, D20) работает правильно

На 2 выв D20 - "1" и до запуска С600G и после.

На 3 выв D20 до запуска С600G  - постоянная "1", после запуска С600G - такт 2мГц.

Вроде по уровням все правильно, но если при чтении каждого байта должен быть сброс, этого не происходит. Картина статическая...

55

Re: Изготовление универсального (А7/А9) контроллера дисковода 140 К

То есть, контроллер пишет 1 в младший разряд, а когда она доходит до старшего - понимает, что байт прочитан ? И получается, что сброс должен быть после чтения каждого байта ?

56

Re: Изготовление универсального (А7/А9) контроллера дисковода 140 К

Получается, что адресс D12 не соответствует необходимму для сброса? (сама по себе D12 проверена, первый раз после записи, а второй раз вчера выпаивал, код в норме).

57

Re: Изготовление универсального (А7/А9) контроллера дисковода 140 К

Может ли это происходить, потому что подача информации из эмулятора на 20% быстрее по скорости, или это не важно, и в любом случае должен происходить сброс, и в младший разряд должна помещаться единица, которая перемещается по направлению к старшему разряду ?

58

Re: Изготовление универсального (А7/А9) контроллера дисковода 140 К

Вот что происходит на адрессных пинах D12 - cоответственно D0...D7.  в течении 2,5 сек после запуска C600G, и пол секунды ранее.

Понятно, что нет ничего на A1 - в старший разряд не приходит единица, и в младший она не записывается.
Защелки  D5.1 (разряд A2) и D5.2 (разряд A3) - тоже в постоянном нуле.
Далее на А4 данные, прошедшие диф. цепочку.
А5 - тоже странный какой то сигнал, не похоже на периодический, что то случайное чтоли...
Ну и А6 и А7 тоже вполне себе норм.

https://i.ibb.co/DKL0Z73/D12.jpg https://i.ibb.co/qkx8P2J/D12.jpg

На втором снимке фрагмент, чтобы понятнее было, вид сигнала.

59

Re: Изготовление универсального (А7/А9) контроллера дисковода 140 К

Можно предположить, что импульсы на А5 - это дребезг контакта зажима лог. анализатора.

60 Отредактировано Voldemar0 (24-11-2021 10:15)

Re: Изготовление универсального (А7/А9) контроллера дисковода 140 К

Секвенсор описан тут:
http://agatcomp.ru/agat/Hardware/DZU/fl140k_.shtml
Внизу страницы ссылки на подробности разных его частей и режимов.

Если коротко: при чтении задача секвенсора в побитной синхронизации и в выделении байта по признаку D7=1. Т.е. если секвенсор считает, что сейчас начнётся новый байт, а получает только нули - он будет ждать. Когда пойдёт единица - он начнёт приём. Так что если отправить ему поток единиц - он будет собирать в аккумуляторе единицы. Если отправить 0 - аккумулятор не должен изменяться. Поток 101010101 или 010101010 будет принят как $AA.

При записи всё проще: секвенсор просто сдвигает байт из аккумулятора.

При запросе флага Write Protect аккумулятор заполняется значением Write Protect, получаемого от дисковода (флаг последовательно записывается во все биты).

==

Я не уверен: назначения бит адресного входа и биты выхода данных ПЗУ и агата и эпла вродее бы различается? (в смысле их номера по другому разложены)
Если вы объединяете две прошивки - это надо учитывать.

61

Re: Изготовление универсального (А7/А9) контроллера дисковода 140 К

electroscat пишет:

Вот что происходит на адрессных пинах D12

Ну вот, что-то проясняется. У секвенсора программа имеет длину 16 инструкций, поэтому нужно 4 линии адреса. Адреса идут с выходов D7, D6, D5, D4  и попадают на входы A7, A0, A6, A5 ПЗУ. Разряд A5 ПЗУ - это самый старший разряд адреса инструкций. Единица в A5 обеспечивает выборку адресов 8-F. Все инструкции по сбросу регистра и записи данных находятся в этой половине программы секвенсора. Но у вас этот разряд все время в нуле, поэтому ничего не сбрасывается и не пишется.

Проверьте, что нет замыканий на землю вывода 14 D12 и вывода 4 D16. Посмотрите, есть ли данные на выходе 14 D12 и что они проходят через D16.

62

Re: Изготовление универсального (А7/А9) контроллера дисковода 140 К

Voldemar0 пишет:

Я не уверен: назначения бит адресного входа и биты выхода данных ПЗУ и агата и эпла вродее бы различается? (в смысле их номера по другому разложены)
Если вы объединяете две прошивки - это надо учитывать.

Да, все правильно, как раз из за этого все не работало, потому что я пытался все это запустить на прошивке от Apple. Сейчас, переключил на участок Агатовской прошивки, и аккумулятор ожил.
Вот диаграмма его работы, короткий участок:

https://i.ibb.co/wr23Jch/image.jpg

Не смотря на то, что теперь Агат видит еще один дисковод на слоте 6  (как и должно быть) - тем не менее, чтение не происходит. Например, копировщик при попытке прочесть каталог говорит - ошибка обмена, бейсик AppleSoft уже не говорит Syntaх Error как раньше, а просто вываливается в приглашение с бипом, или io-error говорит... но чтение не происходит, а точнее, читается не то что нужно.

63

Re: Изготовление универсального (А7/А9) контроллера дисковода 140 К

Что вы можете сказать по этому графику ? Правильно ли секвенсер распознает информацию приходяшюю от эмулятора ?

первый сверху трек - это тактирующий сигнал.

со 2 по 9й - разряды секвенсера со старшего по младший.

10 и 11 треки это входяший сигнал, 11й - не дифференцированный, 10й - дифференцированный.

64

Re: Изготовление универсального (А7/А9) контроллера дисковода 140 К

avivanov76 пишет:

Проверьте, что нет замыканий на землю вывода 14 D12 и вывода 4 D16. Посмотрите, есть ли данные на выходе 14 D12 и что они проходят через D16.

Получается, что то что происходило на адресных пинах на том графике - это было все не правильно, потому что там в ПЗУ секвенсера была прошивка от AppleII. Я думал она прямо таки 1 в 1, а оказыается, еще нужно поработать..... Сейчас переключил на прошивку Агата, и все заработало, дисковод стал виден системе, но чтения по прежнему нет. Только ошибки...

65 Отредактировано electroscat (25-11-2021 00:11)

Re: Изготовление универсального (А7/А9) контроллера дисковода 140 К

Voldemar0 пишет:

при чтении задача секвенсора в побитной синхронизации и в выделении байта по признаку D7=1. Т.е. если секвенсор считает, что сейчас начнётся новый байт, а получает только нули - он будет ждать. Когда пойдёт единица - он начнёт приём. Так что если отправить ему поток единиц - он будет собирать в аккумуляторе единицы. Если отправить 0 - аккумулятор не должен изменяться. Поток 101010101 или 010101010 будет принят как $AA.

При записи всё проще: секвенсор просто сдвигает байт из аккумулятора.

При запросе флага Write Protect аккумулятор заполняется значением Write Protect, получаемого от дисковода (флаг последовательно записывается во все биты).

avivanov76 пишет:

У секвенсора программа имеет длину 16 инструкций, поэтому нужно 4 линии адреса. Адреса идут с выходов D7, D6, D5, D4  и попадают на входы A7, A0, A6, A5 ПЗУ. Разряд A5 ПЗУ - это самый старший разряд адреса инструкций. Единица в A5 обеспечивает выборку адресов 8-F. Все инструкции по сбросу регистра и записи данных находятся в этой половине программы секвенсора.

Спасибо огромное ! Это очень важно, благодарю за эту ценнейшую информацию !

По большому счету это минимальный набор предложений, который дает понять в общих чертах работу секвенсора...

66

Re: Изготовление универсального (А7/А9) контроллера дисковода 140 К

Теперь более менее понятно.

https://i.ibb.co/g4PFWpK/image.jpg

Тут адресные входы D12. D0 - D7 (названия треков на графике) соответствует A0 ... A7 ПЗУ. Переставил их для понимания, А0 поставил между А6 и А7. Теперт понятно, что первые 4 пина сверху вниз - входные данные, А1 - старший бит аккумулятора, А2 и А3 - защелки, А4 - дифференцированный входной сигнал. И далее - последние 4 трека - это адресс следующей команды получается... Гениально !!!

67

Re: Изготовление универсального (А7/А9) контроллера дисковода 140 К

НЕ понятно только одно, почему информация получаемая ЦПУ из аккумулятора секвенсора не удовлетворяет П.О. и оно заявляет о IO Error ?!?

68

Re: Изготовление универсального (А7/А9) контроллера дисковода 140 К

electroscat пишет:

А4 - дифференцированный входной сигнал

Такое ощущение, что сигналы чтения идут вдвое медленнее, чем должны. Тут интервалы 6, 10 и 16 мкс. А контроллер ждет 4, 6 и 8.

Сигнал чтения идет с реального дисковода или с эмулятора?

69

Re: Изготовление универсального (А7/А9) контроллера дисковода 140 К

По прошивкам, В прошивке Apple - A5->D4,A0->D5,A6->D6,A7-D7; В прошивке Агата  - A5->Q4,A0->Q6,A6-Q5,A7->Q7;
Все остальное в целом идентично.
То есть, чтобы заработала прошивка секвенсера с Apple - Достаточно написать скрипт, который пройдется по дампу, и поменяет местами биты 5 и 6 во всех значениях. Ну или можно в ручную, чтобы не аморачиваться сильно со скриптами.

Займусь этим, когда заработает чтение.

70

Re: Изготовление универсального (А7/А9) контроллера дисковода 140 К

avivanov76 пишет:
electroscat пишет:

А4 - дифференцированный входной сигнал

Такое ощущение, что сигналы чтения идут вдвое медленнее, чем должны. Тут интервалы 6, 10 и 16 мкс. А контроллер ждет 4, 6 и 8.

Сигнал чтения идет с реального дисковода или с эмулятора?

Да, так и есть, длительность импульса примерно 5.4 мс. Единица 1.2 мс. Это эмулятор. У меня их три, точнее две версии эмулятора, одна работает от 5 вольт, все кроме SD, а вторая работает полностью от 3.3в. К ним у меня 3 шт атмеги, прошитые одинаковой прошивкой.. И все три они выдают такие вот выходные сигналы. ВОзможно кварцы старые советские что то не то выделяют. Ожидаю современные китайские, но они в москве гда то застряли.

Ну и просил в телеграммовском чате чтоб кто нибудь снял диаграммы 100% рабочего эмулятора. Обещали, ожидаю.

71

Re: Изготовление универсального (А7/А9) контроллера дисковода 140 К

То есть, вполне возможно что проблема в кварцах эмуляторов. Не думаю, что проблема в атмегах потому что две я заказывал из китая, а третью купил тут в чипидип, хотя это микросхемы похоже с одного завода, у них в серийнике (у тех что из китая и у той что из чипа и дипа) разница в миллион... и они не могут одинаково проглючивать...

72 Отредактировано electroscat (25-11-2021 00:48)

Re: Изготовление универсального (А7/А9) контроллера дисковода 140 К

Атмегу можно научить работать от внешнего генератора, для этого какой то бит нужно в фьюзах поменять, еще не разбирался какой. Как вариант, заказать чипы генераторов на 27 мГц для атмеги, потому что генератор атмеги по докам рассчитан на 20 мГц максимум. А сама атмега от внешнего генератора работает без вопросов на частоте 30 мгц.

73

Re: Изготовление универсального (А7/А9) контроллера дисковода 140 К

Это на столько критично, такая разница в периодах данных, поступающих с "дисковода" ? Из за этого может быть IO Error ?

74

Re: Изготовление универсального (А7/А9) контроллера дисковода 140 К

Да, вижу, местами 8 я единица попадает уже за сброс контроллера.. Совершенно верно. От сюда и ошибки.

75

Re: Изготовление универсального (А7/А9) контроллера дисковода 140 К

В том то и дело, что интервалы могут отклоняться максимум процентов на 20-25. Причем отклонение интервала в сторону уменьшения переносится контроллером лучше, чем в сторону увеличения.