PDA

Просмотр полной версии : Новый старый квазидиск



Improver
18.07.2018, 13:54
Нашёл тут в форуме интересную тему: Квазидиск | Контроллер дисковода (Кишинев): 2016 (http://zx-pk.ru/threads/26139-kvazidisk-kontroller-diskovoda-(kishinev)-2016.html), там artyr_n воссоздал кишенёвскую схему/плату квазидиска (за что ему отдельное спасибо), и меня это сподвигло сделать тот же квазидиск, но на современных чипах памяти. По работе он не должен отличатся от классического кишенёвского квазидиска. Вот что получилось в первом приближении:
65769

Архив со схемой: 65770
Всё сделано чисто на логике, никаких ПЛИСов, никакой прошивки или наладки, по идее, не требуется. Ориентируясь на схему квазидиска из Вектор-Юзера №18, заменил триггеры ТМ2 на ТМ9, что сократило число микросхем. Также получилось избавится от ПЗУ-хи, немного сократить число чипов в обвязке. Но нужно ещё тщательно проверить схему, в том числе на задержки в чипах, поэтому прошу знающих людей посмотреть/покритиковать/предложить... :)

Комбодевайс, конечно, хорошая разработка, но такой вариант квазидиска, мне кажется, тоже будет интересен. И, кстати, его можно будет развить до "RAM-картриджа" -- микросхемки памяти потребляют немного, достаточно будет дать им питание через диодную развязку от старого телефонного аккумулятора и данные при отключении они терять не будут. Можно ещё его разделить на две платы -- контроллер и память с батарейкой, горячей замены, конечно, не будет, но менять память после выключения это позволит более просто.

------------------------------------------------------
Последний вариант схемы + разводка платы (проверено -- всё работает). (https://zx-pk.ru/threads/29342-novyj-staryj-kvazidisk.html?p=1136928&viewfull=1#post1136928)
UPD: Схема на два КД (https://zx-pk.ru/threads/29342-novyj-staryj-kvazidisk.html?p=1065678&viewfull=1#post1065678).

svofski
18.07.2018, 17:44
ЗПВВ и ЧТВВ точно не перепутаны?
БЛК кажется висит в воздухе?

Improver
18.07.2018, 18:23
ЗПВВ и ЧТВВ точно не перепутаны?Да, это я явно перепутал, линию надо к ЗПВВ провести, спасибо.

БЛК кажется висит в воздухе?Ещё один этот косяк не заметил... :) Оттуда должна линия идти на вывод 6 Д2 и выводы 2 и 14 дешифратора U2.

Меня ещё вот озадачил такой момент: в исходной схеме квазидиска на линии CAS в качестве буфера стоят последовательно два элемента микросхемы ЛА3, время задержки на ней по даташиту на включение 15 нс, на выключение 22 нс, итого будет 37 нс. По адресным линиям ШАП стоят элементы ЛП5 с задержкой 30 нс, соответственно получается, что сигнал CAS задерживается на 7 нс относительно ШАП. Я же, в погоне за сокращением корпусов ИМС, заменил буфер на линии CAS, и теперь там задержка такая же, как и на ШАП. Насколько это будет критично для работы? Есть ли на реальном Векторе задержка подачи CAS после ШАП? И может лучше заменить и буферы в ШАП, например на К555АП6, там задержка всего 10 нс, но разница тогда составит 20 нс?

svofski
18.07.2018, 19:04
Я могу только сказать, что мне пришлось подвигать туда-сюда моменты захвата ШАП, причем для RAS и CAS отдельно. Поскольку часть из этого — издержки синхронизации (тут сигнал захватили на два такта позже, поэтому у этой шины возьмем состояние с трех тактов назад итд), мой опыт вряд ли можно напрямую перевести в дискретную схему. Лучше пусть кто-нибудь более искушенный в задержках на ЛА3 и RC-цепочках выскажется.

Еще не знаю, насколько это существенный для твоей схемы момент, для меня он был заметным. ЧТЗУ может прийти как после CAS, так и до него. Вот моя недавняя картинка (http://zx-pk.ru/threads/29311-leshadok-pompe-plata-rasshireniya-dlya-vektora-06ts.html?p=970932&viewfull=1#post970932). В оригинале, как я понимаю, чтение — это "действие по умолчанию", а ЧТЗУ просто пропускает данные с выхода ОЗУ, так что это работает без проблем.


наладки, по идее, не требуется
Правильно, надо начинать с лошадиной (лешадковой) дозы оптимизма в таких делах :v2_biggr:

dk_spb
18.07.2018, 20:18
Всё сделано чисто на логике, никаких ПЛИСов, никакой прошивки или наладки, по идее, не требуется.
Я в своё время уже хвастался своим вариантом: КД Баркаря + IDE. Потом стал добавлять FDC, но вышел Комбодевайс, и острота вопроса спала.
http://oldpc.su/0/vec.jpg
Ну и эта схема еще не оптимизирована. ВА86 там вполне может быть лишней, ну и логику может можно в РТху спрятать. Ставилась задача чтобы вся элементная база (кроме памяти) была тех лет.

Syntal
18.07.2018, 20:53
На схеме у всех ОЗУшек запараллелены и к тому же константны CE1 и CE2 - такое работать не будет.

Improver
20.07.2018, 10:32
Я в своё время уже хвастался своим вариантом: КД Баркаря + IDE.А можно про схему Баркаря по-подробнее? Я попытался воссоздать то, что было в журнале "Радио-Любитель №11/1995", но без прошивки ПЗУ-хи логику изменений не понял...


На схеме у всех ОЗУшек запараллеленыЧто запараллелены? Адресные входы и линии данных? Так это ж вроде не страшно -- на них по даташиту должно быть состояние "High Z" при отсутствии управляющих сигналов...

и к тому же константны CE1 и CE2 - такое работать не будет.А это интересное замечание. Вроде бы криминала в том нет, но долгий гуглёж дал скудные комментарии, что при постоянном включении по СЕ1 и СЕ2 эти микрухи памяти перегреваются и сгорают, поэтому немного поменял схему.
Наиболее оптимальным, как мне показалось после разглядывания эпюр работы КД из документации, а также картинки svofski, их следует подключить к сигналу "БЛК", что и было сделано... Кроме того, я всё-таки поменял логические элементы на линии ШАП на буфер 74HC244, у которого задержка передачи около 20нс -- пусть лучше адрес будет получен немного раньше сигнала CAS.

Новая схема со всеми (надеюсь) исправлениями и дополнениями:
65794

Архив: 65795

И ещё один момент: случайно в библиотеке нашёл упоминание (http://www.sensi.org/scalar/ware/803/), что, оказывается, к Вектору можно было подключить до восьми квази-дисков. Не вижу особой проблемы в том, чтобы расширить этот контролёр до эмуляции двух-трёх, или даже всех восьми дисков, но вопрос -- а поддерживается ли это какими-либо ДОСами или программами?

UPD: В схеме обнаружена ошибка -- сингал RAS для буфера следует инвертировать, для этого необходимо вывод 2 микросхемы Д5:А подключить через сопротивление к +5В вместо массы.

Syntal
20.07.2018, 12:27
А это интересное замечание. Вроде бы криминала в том нет, но долгий гуглёж дал скудные комментарии, что при постоянном включении по СЕ1 и СЕ2 эти микрухи памяти перегреваются и сгорают, поэтому немного поменял схему.
Ничего не сгорает, хоть оба CE все время держать притянутыми к земле. Насчет логики работы я ошибся, Вы банки разруливаете с помощью разных WE и OE. Мне кажется более оптимальным было бы, WE и OE подавать одинаковыми на все ОЗУшки, а с помощью CE1 и CE2 выбирать банк.

svofski
20.07.2018, 12:41
Improver, вот тут сразу две ветки (http://zx-pk.ru/threads/29311-leshadok-pompe-plata-rasshireniya-dlya-vektora-06ts.html?p=971625&viewfull=1#post971625), в которых обсуждается множественный квазидисказм у Векторов. tl;dr это химера.

Improver
20.07.2018, 13:59
Мне кажется более оптимальным было бы, WE и OE подавать одинаковыми на все ОЗУшки, а с помощью CE1 и CE2 выбирать банк.В принципе да, оба эти способа работы памяти допустимы. И можно также объединить и все линии WE (тогда половина дешифратора ИД4 будет незадействована)... Попробую прикинуть это на схеме.

dk_spb
20.07.2018, 14:35
А можно про схему Баркаря по-подробнее? Я попытался воссоздать то, что было в журнале "Радио-Любитель №11/1995", но без прошивки ПЗУ-хи логику изменений не понял...
Если я правильно помню там еще две области памяти выделены под окна и в 10h для этого задействованы два старших бита.

Improver
23.07.2018, 11:28
В прошедшие выходные посмотрел в инете доступность в продаже микросхем памяти, и оказалось, что те, которые я планировал вначале можно либо купить в китае либо задёшево б/у с ~10% вероятностью брака, либо дороже, чем в России (в том же "Чипе и Дипе") аналогичные, но с ёмкостью в два раза больше... В общем, на этой волне перерисовал схему:
65815

Архив: 65816
Изменения:
- заменил микросхемы памяти на другие, что позволило избавится от дешифратора.
- откатил назад схему генерации сигнала БЛК.
- управление памятью сделал по CE, как рекомендовал Syntal.
- исправил некоторые ошибки, добавил новые... :)

Syntal
23.07.2018, 13:22
- исправил некоторые ошибки, добавил новые... :)

OE постоянно на землю не прокатит - забьешь шину данных.

Хотя может и прокатит, но мне кажется Вы ориентируетесь только на таблицу истинности режимов работы SRAM в даташите. Нужно еще учитывать временные характеристики подачи сигналов. Везде в даташитах указано, что сперва должен поступать CE, а потом OE. Что будет при обратном поступлении сигналов не указано. Возможно все будет и нормально, а может и сбоить в одном из тысячи случаев, замучаетесь искать потом.

Improver
23.07.2018, 14:19
OE постоянно на землю не прокатит - забьешь шину данных.Не уверен... Смотрим страницу 8 даташита (https://html.alldatasheet.com/html-pdf/115232/UMC/UM621024C-70LL/664/10/UM621024C-70LL.html) на память, первый график там -- цикл записи с управлением по WE, и внизу примечание №6 к нему: "OE is continuously low", т.е. при записи этот вывод постоянно на нуле. И в том же даташите на циклах чтения при управлении по СЕ (см. "Read Cycle 2 (https://html.alldatasheet.com/html-pdf/115232/UMC/UM621024C-70LL/396/6/UM621024C-70LL.html)" и "Read Cycle 3 (https://html.alldatasheet.com/html-pdf/115232/UMC/UM621024C-70LL/597/9/UM621024C-70LL.html)") тоже указано в примечании №4: "OE = Vil", так что, думаю, работать должно...

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

Дополнение к дополнению... :)

Везде в даташитах указано, что сперва должен поступать CE, а потом OE. Что будет при обратном поступлении сигналов не указано.Указано -- см. те же графики с управлением по СЕ.

Syntal
23.07.2018, 14:46
Указано -- см. те же графики с управлением по СЕ.
Тогда сорри

KTSerg
23.07.2018, 19:16
В прошедшие выходные посмотрел в инете доступность в продаже микросхем памяти, и оказалось, что те, которые я планировал вначале можно либо купить в китае либо задёшево б/у с ~10% вероятностью брака, либо дороже, чем в России (в том же "Чипе и Дипе") аналогичные, но с ёмкостью в два раза больше... ...
А что, на али сообщают когда б/у товар продают?
Сколько выбранная память в "Чип и Дип" стоит, 230руб. за штуку?
Была ссылка на али, там около 380р за 10 штук, или это они и есть б/у ?

Improver
24.07.2018, 09:19
А что, на али сообщают когда б/у товар продают?Как обычно, "Бесплатная доставка новое поступление крутые бинты удовлетворитель женщин" :D


Сколько выбранная память в "Чип и Дип" стоит, 230руб. за штуку?Да... И пока я склоняюсь к тому, что при близкой стоимости мегабитная память всё-таки будет удобнее в применении на квази-диске, чем 512-килобитная. Ещё лучше подошла бы двухмегабитная (256к*8), тогда хватило бы одного чипа, и с мультиплексора две линии просто можно было подавать на старшие адресные, но найти такую память сложнее.


Была ссылка на али, там около 380р за 10 штук, или это они и есть б/у ?Судя по комментариям -- да, это б/у, хотя продавец об этом не пишет... Есть ещё вариант на али -- искать по lp621024 (https://ru.aliexpress.com/wholesale?SearchText=lp621024), примерно по 600 руб./10 шт., но там тип корпуса несколько другой... А вот на ебее (https://www.ebay.com/sch/i.html?_nkw=lp621024) с нужными корпусами есть, но доставка дорогая.

dk_spb
24.07.2018, 10:30
На али бывают 512Kx8 регулярно, но на али _очень_ тупой поиск.

Например, https://www.aliexpress.com/item/Freeshipping-K6T4008C1B-DB70-K6T4008C1B/1000006372306.html
Недёшево, зато один чип, а не кучка.
И это статика, можно с регенерацией не заморачиваться. И она - low power, то есть можно и о батареечке подумать (хотя зачем - непонятно ;-) )

Improver
24.07.2018, 16:34
Обнаружил досадную ошибку в схеме... Я рисовал её на основе схемы из журнала "Радиолюбитель", а там, как оказалось, опечатка -- на триггеры был заведён сигнал "СТЕК" вместо "ШД4". Соответственно, все предыдущие мои варианты имеют эту ошибку. Исправленная схема:
65823

И архив: 65824

KTSerg
25.07.2018, 06:28
Чет не могу найти внятных характеристик РУ-шек применяемых в Векторе и Квазидиске...
Мне интересно, сопоставимо ли быстродействие микросхем статики и РУ-шек?
Не будет ли конфликтов на этой почве...

ivagor
25.07.2018, 07:33
РУ5 - Микропроцессорные средства и системы 1985-3 (https://yadi.sk/d/AaXjKjmSgxYG5) стр. 91
РУ6 - МПСиС 1986-1 (http://www.wdigest.ru/mpss_pdf/1986/mpss-1986-01.pdf) стр. 88
Но проблемы с быстродействием SRAM вряд ли возникнут, они в разы, а некоторые и на порядок быстрее РУ5/6. Некоторую проблему представляет специфическое формирование управляющих сигналов для озу вектором, но вроде все разработчики КД смогли с этим справиться.
Оффтоп. У меня создалось впечатление, что чуть ли не каждый (или каждый второй) обладатель реала разрабатывает свою версию КД.

KTSerg
25.07.2018, 07:45
РУ5 - Микропроцессорные средства и системы 1985-3 (https://yadi.sk/d/AaXjKjmSgxYG5) стр. 91
РУ6 - МПСиС 1986-1 (http://www.wdigest.ru/mpss_pdf/1986/mpss-1986-01.pdf) стр. 88
Но проблемы с быстродействием SRAM вряд ли возникнут, они в разы, а некоторые и на порядок быстрее РУ5/6. Некоторую проблему представляет специфическое формирование управляющих сигналов для озу вектором, но вроде все разработчики КД смогли с этим справиться.
Спасибо.


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

ivagor
25.07.2018, 08:24
Ну так это естественно, и думаю касается не только КД. При отсутствии оригинала устройства, каждый пытается создать его аналог, из той комплектухи, что ему доступна на данный момент.
Тут не совсем соглашусь. Есть как минимум два варианта, доступных для сборки/повторения:
1) Combodevice (http://zx-pk.ru/threads/22217-combodevice.html) (Syntal)
2) Реплика оригинального КД (http://zx-pk.ru/threads/26139-kvazidisk-kontroller-diskovoda-(kishinev)-2016.html) (artyr_n). Правда не знаю, собирал/запускал ли кто-то данный вариант.
Т.е. или других реальщиков не устраивают эти варианты, или важна радость творчества (можете подставить тут какое-нибудь менее пафосное название того же самого).

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

И, кстати, у некоторых есть даже КД из старого времени.

dk_spb
25.07.2018, 08:52
или других реальщиков не устраивают эти варианты, или важна радость творчества
Когда я делал КД была идея сделать комбо, но сделал только КД+IDE. На этапе добавления туда FDC что-то меня отвлекло (сейчас уже не помню, может на работе очередной аврал), потом этот проект как-то отложился, а потом появился девайс Syntal'а. Ну а раз проблема с внешними устройствами оказалась решена, я на свой проект окончательно забил ;-)
Про радость творчества: для меня важно было поставить одну м/с ОЗУ и это был мой первый опыт с ПЛМ.
А КД из старого времени у меня, насколько я помню, у Вас и купленный. Всем хорош, но разветвитель на две платы расширения на проводках требует регулярной подпайки отвалившихся проводков, а это бесит ;-)

KTSerg
25.07.2018, 09:01
Ещё когда в 90-ых цеплял "бутерброд" из контроллера Дисковода и двух КД, замеры показали, что каждый КД ест примерно по 0.5А. Что для тех времён было не мало... Трансы приходилось искать "зелёные" и КРЕНки садить на хорошие радиаторы...
Думаю современные реплики на статике должны быть менее прожорливы.

svofski
25.07.2018, 12:36
каждый (или каждый второй) обладатель реала разрабатывает свою версию КД
Реалов очень мало и, по крайней мере тут, владельцы реалов все такие любители поразрабатывать. Было бы реалов больше, было бы иначе.

ivagor
25.07.2018, 12:47
Пропустил вариант svofski, получается уже 3 доступных для повторения.

svofski
25.07.2018, 12:52
Шадков пока рано заносить в список готовых конструкций, хотя кваз работает, факт.

Improver
25.07.2018, 16:38
Если я правильно помню там еще две области памяти выделены под окна и в 10h для этого задействованы два старших бита.Да, так и есть, седьмым битом открывается область A000h-FFFFh, а шестым -- 8000h-9FFFh, все остальные функции полностью совпадают с кишенёвским вариантом. Медитация над схемой доработки помогла, с описанием из журнала. В общем, вот новая схема квази-диска, которая имеет доработку Баркаря:
65834

Схема в архиве: 65835
Для оптимизации пришлось серьёзно переработать схему, так что не исключено, что вылезут ещё косяки... По сути, с этом варианте будет достаточно отключить и притянуть массе выводы 13 и 4 микросхемки Д8, и тогда квазидиск будет работать без схемы Баркаря, как "стандартный" диск. Можно даже сделать это джамперами, если будет такое желание.

KTSerg
25.07.2018, 19:20
Да, так и есть, седьмым битом открывается область A000h-FFFFh, а шестым -- 8000h-9FFFh, все остальные функции полностью совпадают с кишенёвским вариантом. ...
Это вроде доработка для работы с цветным МикроДосом, который не сохранился. Или я ошибаюсь?

ivagor
25.07.2018, 19:39
Это вроде доработка для работы с цветным МикроДосом, который не сохранился.
Насчет цветного доса не знаю, знаю про кишиневские досы Филиппова FP с поддержкой такого кваза. Его версии не дошли до современной широкой общественности, но есть модификация Фролова (FPH) под hdd. И есть бейсик и граф. редактор (или редактор спрайтов, уже не помню) с поддержкой такого доса и КД. И есть еще пара игрушек, к которым я приложил руку.

KTSerg
25.07.2018, 19:46
... но есть модификация Фролова (FPH) под hdd. И есть бейсик и граф. редактор (или редактор спрайтов, уже не помню) с поддержкой такого доса и КД. И есть еще пара игрушек, к которым я приложил руку.
В смысле, все перечисленные работают и на обычном КД и на доработанном (с утерянным Досом)?
Хотя что такого, если ДОС придерживается стандарта, любая прога этого стандарта будет с ним работать...

ivagor
25.07.2018, 20:04
все перечисленные работают и на обычном КД и на доработанном (с утерянным Досом)?
Нет, все перечисленные программы работают только с КД Баркаря. Но есть их (досы, бейсик, редактор вроде тоже) версии для стандартного КД.

Improver
03.08.2018, 17:42
Разрисовал разводку платы для квази-диска... В связи с тем, что у китайцев стоимость изготовления плат резко увеличивается при размерах больше 100х100 мм, пришлось ужаться до этого размера, в результате чего часть разъёма "ВУ" висит в воздухе. Но это, мне кажется, не страшно -- там всего-то три линии "соплями" прокинуть: АС40, АС41 и АС43... Ну ещё +5В задублировать не помешает. В то же время лишние 15 мм платы поднимают стоимость изготовления почти в шесть раз (5$ против 28$). Размещать разъём по диагонали, как у "лешадок", я не стал... Кстати, вопрос к знатокам: а где сейчас можно купить разъём СНП34-90? А то в интернете их только скупают всякие золотоискатели...

В общем, вот архив со всеми файлами -- схема, два варианта разводки платы (полная и 93х100 мм) и гербер-архив для изготовления: 65900

И отдельно, дополненная схема:
https://s8.hostingkartinok.com/uploads/thumbs/2018/08/2e0855d6fd61544ed52d1f4817f9ac05.png (https://hostingkartinok.com/show-image.php?id=2e0855d6fd61544ed52d1f4817f9ac05)

Замечания по плате: дополнил схему двумя джамперами для выбора адреса квази-диска: J5 -- младший байт (х0 или х1) и J6 -- старший байт (1х или 2х), в итоге теперь ими можно настроить адрес одним из четырёх вариантов (10, 11, 20 или 21), думаю, этого будет более чем достаточно.

Кроме того, дополнил разъёмами для возможности сборки "бутерброда", почти как сделано на шилдах у ардуины. Это позволит к плате легко подключать другие контроллеры, например тот же комбодевайс, или "лешадок"... только плату свою прийдётся рисовать, под эти разъёмы. А ещё можно собрать до четырёх одинаковых квази-дисков в единый "слоёный пирог", выставив на них, соответственно, разные адреса джамперами. :v2_dizzy_punk:

И да, ещё добавил разъём для аккумулятора с диодной развязкой, но это пока чисто для экспериментов, диод Д14 можно просто заменить перемычкой, а Д13 не ставить вообще.

svofski
03.08.2018, 17:49
а где сейчас можно купить разъём СНП34-90?
Я не мудрил и купил в чиподипе. Наверное переплатил в 10 раз, конечно.

Improver
03.08.2018, 18:05
Я не мудрил и купил в чиподипе. Наверное переплатил в 10 раз, конечно.
У них только розетку (https://www.chipdip.ru/product1/8000168725) нахожу, а есть ссылка на вилку?

svofski
03.08.2018, 18:29
Improver, тоже не вижу. Видимо все съели. Могу прислать штучку.

artyr_n
03.08.2018, 21:27
Кстати, вопрос к знатокам: а где сейчас можно купить разъём СНП34-90?
http://zx-pk.ru/threads/22616-vektor-06ts-2014.html?p=669296&viewfull=1#post669296
правда прошло 4 года.

Improver
06.08.2018, 09:42
Improver, тоже не вижу. Видимо все съели. Могу прислать штучку.Спасибо, воспользуюсь предложением, но немного позже -- нашёл временное (или альтернативное) решение, вот такая гребёнка по шагу контактов полностью совпадает с разъёмом:
65922
Контакты, мне кажется, немного толстоваты, но в разъём они входят без деформаций:
65923

У китайцев есть ещё такие же контакты с шагом 1,27мм, там штырьки тоньше и короче, можно попробовать взять их и проредить (через один), тогда тоже получится разъём с шагом на 2,54мм.

Думаю, пока собрать на одном из этих вариантов, а потом, если всё заработает нормально, перепаять на родной разъём.


http://zx-pk.ru/threads/22616-vektor-06ts-2014.html?p=669296&viewfull=1#post669296
правда прошло 4 года.
Ок, тоже буду иметь в виду... На украинском сайте по ссылке оттуда, кстати, есть такое примечание: "могут сочленяться с соединителями СНО58,СНО59 (http://connector.com.ua/notes/14)", это немного расширяет зону поиска.

KTSerg
06.08.2018, 12:20
Спасибо, воспользуюсь предложением, но немного позже -- нашёл временное (или альтернативное) решение, вот такая гребёнка по шагу контактов полностью совпадает с разъёмом:
...
Я бы не рискнул использовать такие контакты.
Если решение временное, подключил-бы короткими проводами дополнительный разъём/разъёмы параллельно штатному.

Improver
06.08.2018, 12:41
Я бы не рискнул использовать такие контакты.Почему? Такую линейку можно в Китае заказать даже золочёную, в чём тут будет риск?


Если решение временное, подключил-бы короткими проводами дополнительный разъём/разъёмы параллельно штатному.Ну... Паять в Вектор дополнительный разъём в качестве временного решения -- это не комильфо как-то...:confused: Ладно, если не паять параллельно, а воткнуть в разъём одножильными проводками (сам так ранее подключал джойстик к ПУ) -- так это практически то же самое, только менее удобно.

svofski
06.08.2018, 13:37
Я как-то давно от нежелания искать и ждать сто лет совершенно недобываемый разъем из C64 делал так:
http://zx-pk.ru/threads/8266-pitanie-commodore-c64c.html?p=168092&viewfull=1#post168092
Но с 90 пинами (даже с 45) я бы наверное не стал такое повторять ;)

Syntal
06.08.2018, 13:54
Такую линейку можно в Китае заказать даже золочёную, в чём тут будет риск?

Шаг различный, у советских микрух и разъемов шаг - 2,50 мм. На 10 контактах будет норм, на 20 уже не влезет. Только если разделять на секции и подпиливать.

Improver
06.08.2018, 14:01
Я как-то давно от нежелания искать и ждать сто лет совершенно недобываемый разъем из C64 делал так:
http://zx-pk.ru/threads/8266-pitanie-commodore-c64c.html?p=168092&viewfull=1#post168092Кстати, я тоже делал что-то подобное, но только вместо бетона использовал "холодную сварку"... :)

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


Шаг различный, у советских микрух и разъемов шаг - 2,50 мм. На 10 контактах будет норм, на 20 уже не влезет. Только если разделять на секции и подпиливать.Хм... Да, 0,04х45=1,8 мм разбега на всю длину разъёма, может и не подойти. Надо будет подумать...

svofski
06.08.2018, 14:20
Импортные разъемы с метрическим шагом 2.5 в природе существуют, но мне никогда не попадалось что-то наподобие гребенки. Было бы прикольно найти замену слегка адовому СНП34-90, но я не уверен, что так просто получится. В защиту СНП34-90 могу сказать, что из него хороший хребет платы получается. Придает необходимую жесткость конструкции.

artyr_n
06.08.2018, 18:31
Почему? Такую линейку можно в Китае заказать даже золочёную, в чём тут будет риск?
родные контакты плоские, а китайские квадратные, есть риск что родной контакт потом не будет контачить.

dk_spb
06.08.2018, 19:37
какие-то у Вас тут ужасы...
Нет проблем купить вилку СНП34с-90, если не её, то -135
Или их аналоги серий УСНП34, СНП260

Improver
07.08.2018, 09:15
родные контакты плоские, а китайские квадратные, есть риск что родной контакт потом не будет контачить.Родные контакты, судя по чертежу, не плоские, а имеют квадратное сечение со стороной 0,5мм. Да, это в два раза меньше, чем на китайских "линейках" с шагом 2,54мм, но более-менее безопасно, мне кажется, можно воткнуть штырьки от линейки 1,27мм -- на них указана толщина 0,7мм максимум...


какие-то у Вас тут ужасы...
Нет проблем купить вилку СНП34с-90, если не её, то -135
Или их аналоги серий УСНП34, СНП260Ок, изначально заданный вопрос, где купить? В России все перечисленные видел только на сайте "Западприбор" (http://zapadpribor.com/snp34s/), там кто-нибудь заказывал?

dk_spb
07.08.2018, 11:01
Ок, изначально заданный вопрос, где купить?
Рассказываю: есть несколько специальных сайтов для поиска компонентов. Да, там не вся информация правдива, да, не все указанные там фирмы будут с Вами работать. Но для такого "ширпотреба" как СНП34с вообще никаких проблем. Пример:
http://www.chipfind.ru/search/?part=%D1%81%D0%BD%D0%BF34%D1%81-90%D0%B2&s=1&p=1

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

Да и вообще, кажется Вам просто лень искать:
https://meshok.net/item/88814350_%D0%A0%D0%B0%D0%B7%D1%8A%D1%91%D0%BC_%D0% A1%D0%9D%D0%9F34_135%D0%92_%D0%92

А вот и ГДРовские аналоги всего по 30 (ТРИДЦАТЬ !!!!!) рублей
https://meshok.net/item/92606149_%D0%A0%D0%90%D0%97%D0%AA%D0%81%D0%9C_%D0% A1%D0%9D%D0%9F34%D0%A1_135%D0%92_%D0%92_%D0%BF%D0% B0%D0%BF%D0%B0_%D0%B0%D0%BD%D0%B0%D0%BB%D0%BE%D0%B 3_%D0%B3%D0%B5%D1%80%D0%BC%D0%B0%D0%BD%D0%B8%D1%8F
"В наличии несколько сотен."
И есть такие же в Кирове, но уже по 130

Improver
07.08.2018, 12:43
Возвращаемся к теме... Нарисовал схему и развёл плату для подключения HDD, плата сделана, как дополнение к этому квази-диску, т.е. подключается через соответствующие разъёмы на нём вторым слоем.
Схема подключения стандартная, взял тут (http://www.sensi.org/scalar/ware/537/), единственно, в этой схеме не указаны контакты разъёма IDE для IOW и IOR, но, думаю, угадал их по названию верно. Размер платы -- 60х96мм.

Комплект (схема, плата и гербер-архив):66585
Просто схема:
https://s8.hostingkartinok.com/uploads/thumbs/2018/10/c98588832bb31365ff0a6e568d9b851b.png (https://hostingkartinok.com/show-image.php?id=c98588832bb31365ff0a6e568d9b851b)

Improver
09.08.2018, 16:17
Вот тут (http://zx-pk.ru/threads/29311-leshadok-pompe-plata-rasshireniya-dlya-vektora-06ts.html?p=974886&viewfull=1#post974886) была затронута тема и сделали предположение, что квази-диск при обращении с обоими сигналами ЧТЗУ и WE возможно производит регенерацию памяти, так это или нет -- тут надо более глубокое изучение, но так как для статической памяти регенерация не нужна, решил добавить обработку ситуаций, когда оба сигнала, ЧТЗУ и WE, равны нулю или единице. Добавление логики для этого не потребовалось, просто перекоммутировал существующие логические элементы так, чтобы сигнал CAS не подавался на память в таких ситуациях. Это изменение, кстати, добавило задержку передачи CAS примерно до 70нс.

Кроме того в схеме заменил дешифратор К155ИД4 (SN74155) на К1564ИД14 (SN74HC139). Особой необходимости в том не было, просто последний должен быть немного по-быстрее.

Новая схема, разводка, разводка для платы 92х100мм и гербер-архив: 65950
Схема отдельно:
https://s8.hostingkartinok.com/uploads/thumbs/2018/08/e3696b4ecfd83c7dbb1224143df3c47e.png (https://hostingkartinok.com/show-image.php?id=e3696b4ecfd83c7dbb1224143df3c47e)

svofski
09.08.2018, 16:50
Но все-таки, одновременно ЧТЗУ==0 и ЗПЗУ==0 я никогда не видел и очень сильно удивился бы, если б увидел. Оба они формируются из слова состояния процессора. Регенерация это по идее просто RAS без CAS, адреса строк при этом на ШАП. В случае кваза на РУ6 она происходит автоматически тем же механизмом, что регенерация основного ОЗУ.

Improver
09.08.2018, 18:19
Но все-таки, одновременно ЧТЗУ==0 и ЗПЗУ==0 я никогда не видел и очень сильно удивился бы, если б увидел.
Это не особо принципиально -- даже если такой вариант невозможен, в последней схеме "исключающее ИЛИ" отсекает оба варианта, и две единицы, и два нуля. Т.е. обращение к памяти будет разрешено только при наличии одного из сигналов, ЧТЗУ или ЗПЗУ.


Регенерация это по идее просто RAS без CAS, адреса строк при этом на ШАП. В случае кваза на РУ6 она происходит автоматически тем же механизмом, что регенерация основного ОЗУ.Да, РУ-шки умели делать только такой метод регенерации, но мне пока не известно, какую роль при регенерации играют сигналы ЧТЗУ и ЗПЗУ? Подозреваю, что они оба в этот момент установлены в "1".

svofski
09.08.2018, 20:23
какую роль при регенерации играют сигналы ЧТЗУ и ЗПЗУ? Подозреваю, что они оба в этот момент установлены в "1".
Никакого. Я сморозил, думая о содержимом ПЗУ. Сейчас я думаю, что в ПЗУ для этих входных значений что-то записано просто потому, что нельзя было не записать ничего.

Вот в этом посту (http://zx-pk.ru/threads/28207-vremennye-diagrammy-vektora.html?p=970562&viewfull=1#post970562) сняты сигналы с шины, где видно счетчик строк и RAS: $26, $27, $28, $29, $2a, $2b, $2c, $2d...

Интересней было бы поймать момент, когда счетчик добирается до адресов кваза, включенного "как ОЗУ", тогда точно будет RAS без CAS несмотря на развесившийся БЛК.

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

P.S. может быть и нет, для БЛК нужно совпадение адресов на ШАВВ.

Improver
10.08.2018, 09:26
Никакого.Не сомневаюсь, что тут Вы правы... :)


Сейчас я думаю, что в ПЗУ для этих входных значений что-то записано просто потому, что нельзя было не записать ничего.И здесь тоже. Хотя, невозможные комбинации в ПЗУ можно было просто забить нулями, или FF...


Вот в этом посту сняты сигналы с шины, где видно счетчик строк и RAS: $26, $27, $28, $29, $2a, $2b, $2c, $2d...Интересно, в приведённом графике VU_CAS_N всё время = 1, даже когда идёт обращение к памяти. Время подачи сигнала CAS настолько мало, что его не видно на графике, или я что-то не понимаю?

ivagor
10.08.2018, 10:01
в приведённом графике VU_CAS_N всё время = 1, даже когда идёт обращение к памяти.
Обращений к памяти квазидиска нет, соответственно и CAS на ВУ неактивен.

Improver
10.08.2018, 11:41
Обращений к памяти квазидиска нет, соответственно и CAS на ВУ неактивен.Т.е. на ВУ сигналы ЧТЗУ и ЗПЗУ проходят в любом случае, а CAS только когда есть обращение к КД? Хм... :confused:

ivagor
10.08.2018, 11:46
Если более полно, то CAS на ВУ будет, если БЛК=0. А квазидиск делает БЛК=0 при обнаружении обращения к себе.

Improver
10.08.2018, 12:59
Если более полно, то CAS на ВУ будет, если БЛК=0. А квазидиск делает БЛК=0 при обнаружении обращения к себе.Тогда понятно, почему на графике CAS-а нет.

svofski
10.08.2018, 13:10
Improver, вот тут (http://zx-pk.ru/threads/29311-leshadok-pompe-plata-rasshireniya-dlya-vektora-06ts.html?p=970932&viewfull=1#post970932) я пару недель назад рассуждал о процессах на шине. К текущему вопросу это только косвенно относится, но CAS на диаграмме видно.

(Для себя: уже тогда надо было сообразить захватывать слово состояния, а не пытаться вымучить чего-то полезное из инвалида-ЧТЗУ)

Improver
10.08.2018, 14:18
Improver, вот тут (http://zx-pk.ru/threads/29311-leshadok-pompe-plata-rasshireniya-dlya-vektora-06ts.html?p=970932&viewfull=1#post970932) я пару недель назад рассуждал о процессах на шине. К текущему вопросу это только косвенно относится, но CAS на диаграмме видно.Разглядывая график посчитал (как смог), что процесс чтения байта из КД длится около 0,8-0,9мкс (считал продолжительность, от получения всех трёх сигналов, ЧТЗУ, RAS и CAS, до отключения ЧТЗУ). И примерно через 0,1мкс после появления трёх сигналов в ШД должен быть выдан байт, всё верно?

svofski
10.08.2018, 14:55
Отключение ЧТЗУ вопреки предполагаемому здравому смыслу не влияет вообще ни на что.

Вот эта картинка хорошая:
https://i.imgur.com/g9QW62Q.png

The data presented to the processor must have stabilized prior to both the "ф1-data set-up" interval (tDS1), that precedes the falling edge of the ф1 pulse defining state T3, and the "ф2-data set-up" interval (tDS2), that precedes the rising edge of ф2 in state T3. This same data must remain stable during the "data hold" interval (tDH) that occurs following the rising edge of the ф2 pulse. Data placed on these lines by memory or by other external devices will be sampled during T3.

В общем если СТРОБЪ это SYNC, то у кваза ориентировочно полтора клока до выдачи данных. При 3МГц тактовой, теоретическая верхняя граница получается 0.5мкс.

ivagor
10.08.2018, 15:10
если СТРОБЪ это SYNC, то у кваза ориентировочно полтора клока до выдачи данных.
Если бы на ВУ был сразу виден весь адрес, то да, а так придется ждать ras и cas. Или вывести вторую половину адреса без мультиплексирования в дополнение к ШАВВ проводками (8 штук) и забыть про ras/cas.

svofski
10.08.2018, 15:16
Я должен был сказать "время между выдачей СТРОБ и стабильными данными на шине должно быть меньше 0.5мкс".

Improver
10.08.2018, 15:57
Ок, но вот только проблемка -- железный квазидиск не использует сигнал СТРОБ, и потому сложно вести отсчёт от этой границы... А если, допустим, принять за константу время от строба до выработки Вектором сигнала CAS, сколько останется от этих 0,5мкс на ответ? Ну или возвращаясь к изначальному вопросу (http://zx-pk.ru/threads/29311-leshadok-pompe-plata-rasshireniya-dlya-vektora-06ts.html?p=974865&viewfull=1#post974865), за какое время КД должен отдавать данные, чтобы mdos не глючил?

Improver
13.08.2018, 11:54
Для общего понимания (не для повторения) решил разрисовать схему квази-диска на РУ7 из Вектор-Юзера №18, с последующими исправлениями. Как там написали, "он использует идеи стандартного диска", но по схеме из журнала понять его работу практически невозможно -- слишком уж всё путано изображено.

Итак, перерисованная схема:
https://s8.hostingkartinok.com/uploads/thumbs/2018/08/8be42e3e3b589a601f18e6ca377959de.png (https://hostingkartinok.com/show-image.php?id=8be42e3e3b589a601f18e6ca377959de)

Что можно тут увидеть:
1. Да, обращение к квази-диску ничем не должно отличаться от стандартного, доработки Баркаря в нём нет, но сделать её можно тем же методом.
2. Сигнал WE (он же ЗПЗУ) заведён непосредственно на микросхемы памяти, на все сразу и без какой-либо промежуточной логики или буферов.
3. Сигнал ЧТЗУ управляет только работой шинных формирователей АП26 на ШД и больше ни на что не влияет.
4. Сигнал CAS попадает на микросхемы памяти через разрешающую логику при наличии сигнала БЛК.
5. Ну и всё остальное (счётчики, ещё один мультиплексор) предназначены для работы с банками памяти по RAS/CAS, и углублённо рассматривать их работу не вижу особого смысла.

Вот теперь думаю, может в очередной раз изменить схему с учётом пунктов 2-4? Т.е. просто забить на ЧТЗУ...

svofski
13.08.2018, 12:32
3. Сигнал ЧТЗУ управляет только работой шинных формирователей АП26 на ШД и больше ни на что не влияет.
4. Сигнал CAS попадает на микросхемы памяти через разрешающую логику при наличии сигнала БЛК.
3. ЧТЗУ наверное сделан таким, чтобы избежать нескольких источников на одной шине. То есть как команда не годится, а как разрешающий сигнал вполне.
4. Зачем гейтовать дополнительно CAS, если он уже перекрыт внутри Вектора?

Improver
13.08.2018, 13:28
3. ЧТЗУ наверное сделан таким, чтобы избежать нескольких источников на одной шине. То есть как команда не годится, а как разрешающий сигнал вполне.Что ещё раз подтверждает, что при отсутствии шинных формирователей он не нужен.


4. Зачем гейтовать дополнительно CAS, если он уже перекрыт внутри Вектора?Полагаю, что это нужно для совместной работы нескольких квази-дисков -- при этом на каждом будет вырабатываться свой БЛК, а CAS от Вектора будет приходить один на всех.

Кстати, это правильный вопрос: из него есть следствие, что отдавать на ВУ сигнал БЛК тоже нужно через буфер -- иначе два (и более) квази-диска будут мешать работе друг друга, и это не было учтено ни в одной из схем! :(

svofski
13.08.2018, 13:57
Вот ведь точно, несколько квазидисков.

Improver
14.08.2018, 16:48
Новая схема, без использования ЧТЗУ:

https://s8.hostingkartinok.com/uploads/thumbs/2018/08/1963dcb8700409d21e65406b63837fab.png (https://hostingkartinok.com/show-image.php?id=1963dcb8700409d21e65406b63837fab)

Архив со схемой, разводкой платы и гербер-архивом (93х100мм): 65970

Кстати, заглянул в схему ERAM, так там ЧТЗУ не использовали вообще, что ещё раз подтверждает то, что этот сигнал не очень-то и нужен для квази-диска.

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

Ахтунг... Сейчас решил посмотреть Омский вариант квази-диска, и там, в документации, увидел очевидную вещь, которая была всё время на виду и на которую я почему-то не обращал внимания... И это то, что во время всего цикла чтения/записи с КД на шине ШАВВ присутствует старший разряд адреса памяти, а при сигнале CAS на шину ШАП подаётся младший разряд. Выходит, при использовании статической памяти можно просто не обращать внимания на сигнал RAS и выкинуть микросхемы Д3 и Д4 (по последней схеме)! Как Вам такой вариант?

svofski
14.08.2018, 16:52
Адреса строк и столбцов, то есть то, что стробируется по RAS и CAS на ШАП, перемешаны хитрым образом:


RA = {a9,a10,a11,a12,a13,a1,a2,~a14}
CA = {a3,a4,a5,a6,a7,a8,a16,~a15}

(обсуждение в треде про Временные диаграммы (http://zx-pk.ru/threads/28207-vremennye-diagrammy-vektora.html?p=970562&viewfull=1#post970562))

Improver
14.08.2018, 17:11
Адреса строк и столбцов, то есть то, что стробируется по RAS и CAS на ШАП, перемешаны хитрым образом
Жаль, а такая интересная идея была... :( Но, с другой стороны, это тоже можно использовать как-то, например, запоминать по RAS не все биты, а только а1 и а2...

svofski
14.08.2018, 17:30
Вообще все нелепо, потому что на шину адреса выделено 16 проводов, то есть её всю целиком можно было вывести напрямую как есть, а вместо этого там фарш 5-й категории. А всё потому, что у Вектора экран при развертке обходится ходом коня.

Syntal
14.08.2018, 17:43
Адреса строк и столбцов, то есть то, что стробируется по RAS и CAS на ШАП, перемешаны хитрым образом
То что они перемешаны, не мешает стробированные сигналы без переконвертирования подавать на адресные линии SRAM. Только если для каких-то задач нужно знать абсолютный адрес, тогда стоит учитывать этот момент, для квазидиска на SRAM пофиг как в ОЗУ будут байты валяться.

svofski
14.08.2018, 17:51
Syntal, половину адреса все равно придется запоминать в регистре. А если было бы четко младший-старший, можно было бы брать прямо с проводов.

Improver
15.08.2018, 10:47
Для общего улучшения и для исключения ситуации, когда сигнал БЛК будет сформирован позже сигнала RAS (а такое возможно, если сигнал СТЕК будет получен вместе или позже RAS), немного поправил схему:

https://s8.hostingkartinok.com/uploads/thumbs/2018/08/a3621c6bd0bbec8778d41cae2b60ac42.png (https://hostingkartinok.com/show-image.php?id=a3621c6bd0bbec8778d41cae2b60ac42)

Теперь буфер Д4 открыт постоянно (может его вообще убрать?), а сигнал RAS получает разрешение по БЛК, также, как и CAS. Это даёт необходимую задержку для нормальной работы Д3.

Полный архив: 65975

dk_spb
18.08.2018, 00:40
Мы победили в себе склеротИк и откопали такой мы антИк

Syntal
18.08.2018, 07:51
Мы победили в себе склеротИк и откопали такой мы антИк
А с другой стороны сфоткай коробушку и что внутри.

dk_spb
18.08.2018, 11:26
С другой стороны посредине лейбла кишиневского завода с логотипом и серийником (такая же пластина как на самом векторе).
Внутри квазидиск ;-)
Попозжее постараюсь сделать фото.

Improver
25.10.2018, 15:02
Уже больше месяца прошло, как исправил схему КД, но вот только сейчас увидел, что не разметил тут те исправления: :confused:
1. Микросхема D7 заменена на 74HC273. В принципе, работать будет и в предыдущем варианте, вот только при сбросе с ней триггеры не будут обнуляться.
2. Микросхема D8 заменена на К1533ЛР13, только из соображений быстродействия. К сожалению, это потянуло за собой значительное изменение разводки платы.
3. Ну и попутно немного оптимизировал разводку...

https://s8.hostingkartinok.com/uploads/thumbs/2018/10/dd1832af9d30c3b62b4dfe4528ecde77.png (https://hostingkartinok.com/show-image.php?id=dd1832af9d30c3b62b4dfe4528ecde77)

Архив со схемой, разводкой и гербером: 66680

P.S. Диоды D13 и D14 лучше использовать какие-нибудь Шотки, например 1N5819, -- на них меньше падение напряжения. Или же просто поставить перемычку вместо D14, а D13 не ставить совсем, если использование аккумулятора не планируется.

Alex_LG
26.10.2018, 08:11
2. Микросхема D8 заменена на К1533ЛР13, только из соображений быстродействия. К сожалению, это потянуло за собой значительное изменение разводки платы.

А почему бы D1+D2+D12 и D5+D6+D8 не заменить на РТ4?

Improver
26.10.2018, 10:26
А почему бы D1+D2+D12 и D5+D6+D8 не заменить на РТ4?Наверно, по той же причине, почему бы не заменить всю конструкцию на ПЛИС и не получить при этом "Комбодевайс2"... :) А если серьёзно -- если что-то можно решить на обычной логике достаточно малым числом корпусов МС, то я не вижу особой необходимости делать это на ПЗУ. Так же, собственно, было сделано и в последующей конструкции КД (на РУ7) (http://zx-pk.ru/threads/29342-novyj-staryj-kvazidisk.html?p=975404&viewfull=1#post975404)...

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

И ещё, могу уже похвалиться собранной конструкцией по последней схеме (http://zx-pk.ru/threads/29342-novyj-staryj-kvazidisk.html?p=983801&viewfull=1#post983801):

66690

Только вот микросхем памяти пока что ещё нет, т.к. они в доставке с ибея... Но всё остальное, что возможно, протестил -- работает так, как и было задумано. :)

Может, кому пригодится, вот мои тесты для контроллера КД:
Как написано в документации к оригинальному КД, начальный тест -- это просто включение Вектора с подключённым диском. Если загрузке Вектора собранный КД не мешает, то значит всё в порядке. :)Проверка правильности работы схемы дешифратора адреса порта КД и регистра конфигурации (микросхемы D1, D2:A, D12:A,B,C и D7). Результат тестирования проверяется мультиметром, на соответствующих выводах D7 должны появляться сигналы "1". Запускать с отключённым сигналом "БЛК" (например, без установленной D8), иначе Вектор подвиснет.
Текст теста на ассемблере для запуска в любом мониторе-отладчике:

.ORG 00100h
L_0100: LDA L_DATA
RLC
STA L_DATA
OUT 010h ; отправляем в порт
LDA L_DT
INR A
STA L_DT
LXI D, L_TEXT
MVI C, 009h
CALL 5 ; вывод сообщения
MVI C,1
LXI D,2000h
CALL 5 ; ожидание нажатия клавиши
LDA L_DATA
CPI 080h ; проверка
JNZ L_0100 ; цикл
MVI A, '0'
STA L_DT
RET ; выход ---->>>>
L_TEXT: .db 0Dh, 0Ah, "OUT DATA: "
L_DT: .db "0$"
L_DATA: .db 080h
.ENDПроверка работы в режиме "стек", проверяется формирователь сигнала "БЛК" на МС D8 (и, конечно, дополнительно и то, что проверялось в тесте 1). Этим тестом производится запись данных во все четыре банка КД по адресам, совпадающим с экранной областью монитора-отладчика, и в случае сбоя на экране будут видны "артефакты".

.ORG 00100h
L_0100: LXI D, L_DATA
PUSH D ; сохраняем в стеке ссылку
L_MAIN: POP D ; считываем ссылку
LDAX D ; загружаем A по ссылке
ORA A
RZ ; выход, если там ноль ---->>>>
INX D ; DE=DE+1
PUSH D ; сохраняем в стеке новую ссылку
DI ; запрещаем прерывания
OUT 010h ; отправляем в порт
LXI H, 0000h ; заполнение памяти
DAD SP ; SP+0 в HL
SHLD L_SAVE ; сохранить указатель на стек
LXI D, 55AAh ; чем заполнять
LXI H, 1000h ; сколько/2
LXI SP,0E000h ; свой указатель на стек
L_LOOP: PUSH D ; заполняем через стек...
DCX H
MOV A, L
ORA H
JNZ L_LOOP ; зациклено
XRA A ; обнуляем аккумулятор
OUT 010h ; отправляем в порт -- отключаем КД
LHLD L_SAVE ; считать сохранённый указатель на стек в HL
SPHL ; восстанавливаем SP
EI ; разрешаем прерывания
LXI D, L_TEXT
MVI C, 009h
CALL 5 ; вывод сообщения
MVI C,1
LXI D, 2000h
CALL 5 ; ожидание нажатия клавиши
JMP L_MAIN ; цикл
;
L_SAVE: .dw 0000h
L_TEXT: .db 0Dh, 0Ah, "-- DONE --$"
L_DATA: .db 1Ch ; 00011100b -- вкл. 0 банк как стек на КД
.db 18h ; 00011000b -- вкл. 1 банк как стек на КД
.db 14h ; 00010100b -- вкл. 2 банк как стек на КД
.db 10h ; 00010000b -- вкл. 3 банк как стек на КД
.db 00h ; конец
.ENDПроверка работы КД в режиме "замена ОЗУ" по стандартной конфигурации. Дополнительно к предыдущим тестам, проверяются правильность работы МС D5 и D6. Ошибка выдаётся в случае совпадения последнего записанного в КД байта и считанного из ОЗУ после отключения КД.

.ORG 00100h
L_0100: LXI D, L_DATA
PUSH D ; сохраняем в стеке ссылку
L_MAIN: POP D ; считываем ссылку
LDAX D ; загружаем A по ссылке
ORA A
RZ ; выход, если там ноль ---->>>>
INX D ; DE=DE+1
PUSH D ; сохраняем в стеке новую ссылку
OUT 010h ; отправляем в порт
LXI H, 02000h ; заполнение памяти -- сколько
LXI B, 0C000h ; с какого адреса
L_LOOP: MVI A, 055h ; чем заполнять
STAX B ; пишем
INX B
DCX H
MOV A, L
ORA H
JNZ L_LOOP ; пока HL не обнулится
XRA A ; обнуляем аккумулятор
OUT 010h ; отправляем в порт -- отключаем КД
DCX B ; на шаг назад
LDAX B ; считываем последний байт
CPI 055h ; сравниваем с тем, что писали
LXI D, L_ERRT ; ссылка на сообщение об ошибке
JZ L_DONE ; если равны -- значит КД работает не правильно
LXI D, L_TEXT
L_DONE: MVI C, 009h
CALL 5 ; вывод сообщения
MVI C,1
LXI D, 2000h
CALL 5 ; ожидание нажатия клавиши
JMP L_MAIN ; цикл
;
L_SAVE: .dw 0000h
L_TEXT: .db 0Dh, 0Ah, "-- DONE --$"
L_ERRT: .db 0Dh, 0Ah, "-- ERROR --$"
L_DATA: .db 23h ; 00100011b -- вкл. 0 банк как ОЗУ A000h-DFFFh
.db 22h ; 00100010b -- вкл. 1 банк как ОЗУ A000h-DFFFh
.db 21h ; 00100001b -- вкл. 2 банк как ОЗУ A000h-DFFFh
.db 20h ; 00100000b -- вкл. 3 банк как ОЗУ A000h-DFFFh
.db 00h ; конец
.ENDТо же самое, что и в третьем тесте, но только для схемы доработки Баркаря

.ORG 00100h
L_0100: LXI D, L_DATA
PUSH D ; сохраняем в стеке ссылку
L_MAIN: POP D ; считываем ссылку
LDAX D ; загружаем A по ссылке
ORA A
RZ ; выход, если там ноль ---->>>>
INX D ; DE=DE+1
PUSH D ; сохраняем в стеке новую ссылку
OUT 010h ; отправляем в порт
LXI H, 02000h ; заполнение памяти -- сколько
CPI 080h
LXI B, 08000h ; с какого адреса 1
JC L_LOOP ; если A < 080h
LXI B, 0E000h ; с какого адреса 2
L_LOOP: MVI A, 055h ; чем заполнять
STAX B ; пишем
INX B
DCX H
MOV A, L
ORA H
JNZ L_LOOP ; пока HL не обнулится
XRA A ; обнуляем аккумулятор
OUT 010h ; отправляем в порт -- отключаем КД
DCX B ; на шаг назад
LDAX B ; считываем последний байт
CPI 055h ; сравниваем с тем, что писали
LXI D, L_ERRT ; ссылка на сообщение об ошибке
JZ L_DONE ; если равны -- значит КД работает не правильно
LXI D, L_TEXT
L_DONE: MVI C, 009h
CALL 5 ; вывод сообщения
MVI C,1
LXI D, 2000h
CALL 5 ; ожидание нажатия клавиши
JMP L_MAIN ; цикл
;
L_SAVE: .dw 0000h
L_TEXT: .db 0Dh, 0Ah, "-- DONE --$"
L_ERRT: .db 0Dh, 0Ah, "-- ERROR --$"
L_DATA: .db 43h ; 01000011b -- вкл. 1 банк как ОЗУ 8000h-9FFFh
.db 42h ; 01000010b -- вкл. 2 банк как ОЗУ 8000h-9FFFh
.db 41h ; 01000001b -- вкл. 3 банк как ОЗУ 8000h-9FFFh
.db 40h ; 01000000b -- вкл. 4 банк как ОЗУ 8000h-9FFFh
.db 83h ; 10000011b -- вкл. 1 банк как ОЗУ E000h-FFFFh
.db 82h ; 10000010b -- вкл. 2 банк как ОЗУ E000h-FFFFh
.db 81h ; 10000001b -- вкл. 3 банк как ОЗУ E000h-FFFFh
.db 80h ; 10000000b -- вкл. 4 банк как ОЗУ E000h-FFFFh
.db 00h ; конец
.END
А дальше, я думаю, надо ставить память и тестировать стандартными программами, типа "дождь" и т.д.

Все тесты откомпилированные для монитора-отладчика в одном архиве: 66691
Запускать можно под любым монитором-отладчиком, режим распределения памяти МО рекомендую выбирать <2>.

Improver
16.11.2018, 11:15
Пришла мне память... Поставил -- ни один из стандартных тестов не сказал "ОК". :( На основе одного из предыдущих, по-быстрому написал ещё несколько тестов:
В этом тесте будем пробовать что-то записать в память, а потом считать записанное в экранную область монитора для контроля записи. (Режим "ОЗУ")
Рекомендую после каждого запуска менять записываемый байт по адресу 113h (в "MVI A, 055h"), сделать это можно командой монитора "S113", далее новое значение и выход по точке.

.ORG 00100h
L_0100: LXI D, L_DATA
PUSH D ; сохраняем в стеке ссылку
L_MAIN: POP D ; считываем ссылку
LDAX D ; загружаем A по ссылке
ORA A
RZ ; выход, если там ноль ---->>>>
INX D ; DE=DE+1
PUSH D ; сохраняем в стеке новую ссылку
OUT 010h ; отправляем в порт
LXI H, 02000h ; заполнение памяти -- сколько
LXI B, 0C000h ; с какого адреса
L_LOOP: MVI A, 055h ; чем заполнять
STAX B ; пишем
INX B
DCX H
MOV A, L
ORA H
JNZ L_LOOP ; пока HL не обнулится
LXI H, 02000h ; считываем -- сколько
LXI B, 01000h ; куда
LXI D, 0C000h ; откуда
CALL L_MOVE
XRA A ; обнуляем аккумулятор
OUT 010h ; отправляем в порт -- отключаем КД
LXI H, 02000h ; переброска считанного в экран -- сколько
LXI B, 0C000h ; куда
LXI D, 01000h ; откуда
CALL L_MOVE ; наблюдаем и наслаждаемся...
LXI D, L_TEXT
L_DONE: MVI C, 009h
CALL 5 ; вывод сообщения
MVI C,1
LXI D, 2000h
CALL 5 ; ожидание нажатия клавиши
JMP L_MAIN ; цикл
L_MOVE: LDAX D ; пп переброски данных
STAX B
INX D
INX B
DCX H
MOV A, L
ORA H
JNZ L_MOVE
RET
;
L_TEXT: .db 0Dh, 0Ah, "-- DONE --$"
L_DATA: .db 23h ; 00100011b -- вкл. 1 банк как ОЗУ A000h-DFFFh
.db 22h ; 00100010b -- вкл. 2 банк как ОЗУ A000h-DFFFh
.db 21h ; 00100001b -- вкл. 3 банк как ОЗУ A000h-DFFFh
.db 20h ; 00100000b -- вкл. 4 банк как ОЗУ A000h-DFFFh
.db 00h ; конец
.ENDПроверка работы КД на запись/чтение данных в режиме "стек"

.ORG 00100h
L_0100: LXI D, L_DATA
PUSH D ; сохраняем в стеке ссылку
L_MAIN: POP D ; считываем ссылку
LDAX D ; загружаем A по ссылке
ORA A
RZ ; выход, если там ноль ---->>>>
INX D ; DE=DE+1
PUSH D ; сохраняем в стеке новую ссылку
DI ; запрещаем прерывания
OUT 010h ; отправляем в порт
LXI H, 0000h ; заполнение памяти
DAD SP ; SP+0 в HL
SHLD L_SAVE ; сохранить указатель на стек
LXI D, 55AAh ; чем заполнять
LXI H, 1000h ; сколько/2
LXI SP,0E000h ; свой указатель на стек
L_LOOP: PUSH D ; заполняем через стек...
DCX H
MOV A, L
ORA H
JNZ L_LOOP ; зациклено
LXI H, 0C000h ; куда
LXI B, 1000h ; сколько/2
L_LP2: POP D ; забираем из стека
MOV M, E ; записываем в экранную область
INX H
MOV M, D
INX H
DCX B ; счётчик
MOV A, C
ORA B
JNZ L_LP2 ; зациклено 2
XRA A ; обнуляем аккумулятор
OUT 010h ; отправляем в порт -- отключаем КД
LHLD L_SAVE ; считать сохранённый указатель на стек в HL
SPHL ; восстанавливаем SP
EI ; разрешаем прерывания
LXI D, L_TEXT
MVI C, 009h
CALL 5 ; вывод сообщения
MVI C,1
LXI D, 2000h
CALL 5 ; ожидание нажатия клавиши
JMP L_MAIN ; цикл
;
L_SAVE: .dw 0000h
L_TEXT: .db 0Dh, 0Ah, "-- DONE --$"
L_DATA: .db 1Ch ; 00011100b -- вкл. 3 банк как стек на КД
.db 18h ; 00011000b -- вкл. 2 банк как стек на КД
.db 14h ; 00010100b -- вкл. 1 банк как стек на КД
.db 10h ; 00010000b -- вкл. 0 банк как стек на КД
.db 00h ; конец
.ENDЭто, скорее, не тест, а заполнение всего КД в режиме "стек" с последующим частичным контролем записи чтением записанного в режиме "ОЗУ". Пригодится при запуске предыдущих тестов, поэтому стартовый адрес сделан 0200h.

.ORG 00200h
L_0200: LXI D, L_DATA
PUSH D ; сохраняем в стеке ссылку
L_MAIN: POP D ; считываем ссылку
LDAX D ; загружаем A по ссылке
ORA A
JZ L_DONE ; переход, если там ноль ---->>>>
INX D ; DE=DE+1
PUSH D ; сохраняем в стеке новую ссылку
DI ; запрещаем прерывания
OUT 010h ; отправляем в порт
LXI H, 0000h ; заполнение памяти
DAD SP ; SP+0 в HL
SHLD L_SAVE ; сохранить указатель на стек
LXI D, 0FFFFh ; чем заполнять
LXI H, 8000h ; сколько/2
LXI SP,0000h ; свой указатель на стек
L_LOOP: PUSH D ; заполняем через стек...
DCX H
MOV A, L
ORA H
JNZ L_LOOP ; зациклено
XRA A ; обнуляем аккумулятор
OUT 010h ; отправляем в порт -- отключаем КД
LHLD L_SAVE ; считать сохранённый указатель на стек в HL
SPHL ; восстанавливаем SP
EI ; разрешаем прерывания
JMP L_MAIN
;
L_DONE: MVI A, 023h ; 00100011b -- вкл. 3 банк как ОЗУ A000h-DFFFh
OUT 010h ; отправляем в порт
LXI H, 02000h ; считываем -- сколько
LXI B, 01000h ; куда
LXI D, 0C000h ; откуда
CALL L_MOVE
XRA A ; обнуляем аккумулятор
OUT 010h ; отправляем в порт -- отключаем КД
LXI H, 02000h ; переброска считанного в экран -- сколько
LXI B, 0C000h ; куда
LXI D, 01000h ; откуда
CALL L_MOVE ; наблюдаем и наслаждаемся...
LXI D, L_TEXT
MVI C, 009h
CALL 5 ; вывод сообщения
RET ; выход из программы
;
L_MOVE: LDAX D ; пп переброски данных
STAX B
INX D
INX B
DCX H
MOV A, L
ORA H
JNZ L_MOVE
RET
;
L_SAVE: .dw 0000h
L_TEXT: .db 0Dh, 0Ah, "-- DONE --$"
L_DATA: .db 1Ch ; 00011100b -- вкл. 3 банк как стек на КД
.db 18h ; 00011000b -- вкл. 2 банк как стек на КД
.db 14h ; 00010100b -- вкл. 1 банк как стек на КД
.db 10h ; 00010000b -- вкл. 0 банк как стек на КД
.db 00h ; конец
.END
Эти тесты в откомпилированном виде: 67032

Погонял тесты, поизучал тему "Временные диаграммы Вектора (https://zx-pk.ru/threads/28207-vremennye-diagrammy-vektora.html)", а также даташиты на микросхемы, результаты таковы:
- чтение данных из КД в режиме "ОЗУ" работает без проблем.
- запись данных в КД в режиме "ОЗУ" имеет некоторые проблемы -- иногда в последней четверти записываемого блока размером 2000h не проходит запись по одному-трём случайным байтам, т.е. значение в записываемой ячейке не меняется.
- запись данных в КД в режиме "стек" ни разу ошибок не показала.
- чтение данных из КД в режиме "стек" -- это практически 100% ошибок. Причина там в том, что сигнал "СТЕК" и, соответственно, вырабатываемый по его наличию сигнал "БЛК", приходит слишком поздно, в тот момент, когда на ШАП уже сформирована вторая половина адреса, в результате чего чтение происходит с неправильного адреса памяти КД.

Полагаю, что нужно два исправления:
1. Отключаем блокировку сигнала RAS: у микросхемы Д2 отрезаем от линии BLK_INT (по схеме) вывод 5 и соединяем с выводом 6. Теперь микросхема Д3 будет сохранять все адреса, даже во время регенерации памяти, но, думаю, это будет для неё нормальная нагрузка. Заодно такую же операцию делаем и с выводом 8 той же микросхемы Д2, отключив его от BLK_INT и соединив с выводом 9 -- сигнал CAS так тоже не будет блокироваться.
2. Поднять напряжение +5В (сейчас, если верить моему мультиметру, БП Вектора выдаёт 4,7-4,8В), возможно так память будет лучше работать и пропадут случайные ошибки записи в режиме "ОЗУ".

Improver
29.11.2018, 10:22
Отключение BLK_INT от Д2 дало определённо положительный эффект: теперь тест "Дождь" (http://www.sensi.org/scalar/ware/803/) даже при продолжительном тестировании не показывает ошибок, "Тест квазидиска" (http://www.sensi.org/scalar/ware/620/) тоже, но "жёлтый" тест КД (http://www.sensi.org/scalar/ware/619/) бракует все микросхемы, да и ещё стандартный "Тест устройств" (http://www.sensi.org/scalar/ware/621/) случайным образом бракует чипы. Также MDOS 2.0 (http://sensi.org/scalar/ware/754/) грузится и по "8" не показывает ошибок... но глючит на записи в КД.

Значит, исправляем схему в соответствии с последней доработкой:
https://s8.hostingkartinok.com/uploads/thumbs/2018/11/79ede8458dc17924a3555c382c1229eb.png (https://hostingkartinok.com/show-image.php?id=79ede8458dc17924a3555c382c1229eb)

Новая схема и разводка в архиве (гербер не делал): 67069

И продолжаем тестировать:
Очистка всего КД и заполнение значением 0AA55h в режиме "стек" с последующим контролем и подсчётом ошибок
.ORG 00100h
L_0100: LXI D, L_DATA
PUSH D ; сохраняем в стеке ссылку
L_MAIN: POP D ; считываем ссылку
LDAX D ; загружаем A по ссылке
ORA A
JZ L_DONE ; переход, если там ноль ---->>>>
INX D ; DE=DE+1
PUSH D ; сохраняем в стеке новую ссылку
DI ; запрещаем прерывания
OUT 010h ; отправляем в порт
LXI H, 0000h ; заполнение памяти
DAD SP ; SP+0 в HL
SHLD L_SAVE ; сохранить указатель на стек
LXI D, 0FFFFh ; чем заполнять -- предварительная очистка памяти
LXI H, 8000h ; сколько/2
LXI SP,0000h ; свой указатель на стек
L_LP0: PUSH D ; заполняем через стек...
DCX H
MOV A, L
ORA H
JNZ L_LP0 ; зациклено
LXI D, 0AA55h ; чем заполнять
LXI H, 8000h ; сколько/2
LXI SP,0000h ; свой указатель на стек
L_LP1: PUSH D ; заполняем через стек...
DCX H
MOV A, L
ORA H
JNZ L_LP1 ; зациклено
LXI H, 8000h ; сколько/2
L_LP2: POP B ; вычитываем и проверяем записанное
MOV A, B
CMP D ; если старший байт прочитанного не равен записанному
JNZ L_ERROR ; обработка ошибки
MOV A, C
CMP E ; если младший байт прочитанного не равен записанному
JNZ L_ERROR ; обработка ошибки
L_RET: DCX H
MOV A, L
ORA H
JNZ L_LP2 ; зациклено
XRA A ; обнуляем аккумулятор
OUT 010h ; отправляем в порт -- отключаем КД
LHLD L_SAVE ; считать сохранённый указатель на стек в HL
SPHL ; восстанавливаем SP
EI ; разрешаем прерывания
LXI D, L_TEXT2 ; вывод количества найденных ошибок
MVI C, 009h
CALL 5 ; вывод сообщения
LHLD L_ERRS ; считываем количество
CALL L_BHEX ; выводим H в шестнадцатиричном виде
MOV H, L
CALL L_BHEX ; выводим L в шестнадцатиричном виде
LXI H, 00000h
SHLD L_ERRS ; обнуляем счётчик ошибок
JMP L_MAIN
;
L_ERROR:SHLD L_SAVE2 ; сохранить счётчик
LHLD L_ERRS ; считываем количество ошибок
INX H
SHLD L_ERRS ; количество ошибок +1
LHLD L_SAVE2 ; восстановить счётчик
JMP L_RET ; возврат в цикл
;
L_DONE: LXI D, L_TEXT
MVI C, 009h
CALL 5 ; вывод сообщения
RET ; выход из программы
;
L_BHEX: MOV A, H ; H-входное значение для вывода
RRC
RRC
RRC
RRC ; сдвиг вправо на 4 бита
CALL L_BIT ; выводим старшие 4 бита
MOV A, H ; восстанавливаем значение
L_BIT: ANI 00Fh ; оставляем младшие 4 бита
CPI 00Ah
JM L_B10 ; если меньше 10
ADI 007h ; +7
L_B10: ADI 030h ; +30h
MVI D, 000h
MOV E, A
MVI C, 002h ; вывод символа
PUSH H ; сохраняем HL
CALL 5
POP H ; восстанавливаем HL
RET
;
L_SAVE: .dw 0000h
L_SAVE2:.dw 0000h
L_TEXT: .db 0Dh, 0Ah, "-- konec testa --$"
L_TEXT2:.db 0Dh, 0Ah, "o{ibok = $"
L_DATA: .db 1Ch ; 00011100b -- вкл. 3 банк как стек на КД
.db 18h ; 00011000b -- вкл. 2 банк как стек на КД
.db 14h ; 00010100b -- вкл. 1 банк как стек на КД
.db 10h ; 00010000b -- вкл. 0 банк как стек на КД
.db 00h ; конец
L_ERRS: .dw 0000h ; количество ошибок
.ENDТест КД в режиме "ОЗУ" с предварительной полной очисткой, в т.ч. областей по доработке Баркаря, с подсчётом ошибок записи.
.ORG 00100h
L_0100: LXI D, L_DATA ; для начала очистка КД
PUSH D ; сохраняем в стеке ссылку
L_CLEAR:POP D ; считываем ссылку
LDAX D ; загружаем A по ссылке
ORA A
INX D ; DE=DE+1
PUSH D ; сохраняем в стеке новую ссылку
JZ L_NEXT ; переход, если там ноль ---->>>>
DI ; запрещаем прерывания
OUT 010h ; отправляем в порт
LXI H, 0000h
DAD SP ; SP+0 в HL
SHLD L_SAVE ; сохранить указатель на стек
LXI D, 0FFFFh ; чем заполнять -- предварительная очистка памяти
LXI H, 8000h ; сколько/2
LXI SP,0000h ; свой указатель на стек
L_LP0: PUSH D ; заполняем КД через стек...
DCX H
MOV A, L
ORA H
JNZ L_LP0 ; зациклено
XRA A ; обнуляем аккумулятор
OUT 010h ; отправляем в порт -- отключаем КД
LHLD L_SAVE ; считать сохранённый указатель на стек в HL
SPHL ; восстанавливаем SP
EI ; разрешаем прерывания
JMP L_CLEAR ; цикл очистки
;
L_NEXT: LXI D, L_TEXT1
MVI C, 009h
CALL 5 ; вывод сообщения об окончании очистки КД
L_CHK: POP D ; считываем ссылку
LDAX D ; загружаем A по ссылке
ORA A
JZ L_DONE ; переход, если там ноль ---->>>>
INX D ; DE=DE+1
PUSH D ; сохраняем в стеке новую ссылку
DI ; запрещаем прерывания
OUT 010h ; отправляем в порт
LXI H, 08000h ; заполнение памяти -- сколько
LXI B, 08000h ; с какого адреса
L_LP1: MVI A, 055h ; чем заполнять
STAX B ; пишем
LDAX B ; читаем в A
CPI 055h ; сравниваем
JZ L_GOOD ; значения равны
PUSH H ; сохранить счётчик
LHLD L_ERRS ; считываем количество ошибок
INX H
SHLD L_ERRS ; количество ошибок +1
POP H ; восстановить счётчик
L_GOOD: INX B
DCX H
MOV A, L
ORA H
JNZ L_LP1 ; пока HL не обнулится
XRA A ; обнуляем аккумулятор
OUT 010h ; отправляем в порт -- отключаем КД
EI ; разрешаем прерывания
LXI D, L_TEXT2 ; вывод количества найденных ошибок
MVI C, 009h
CALL 5 ; вывод сообщения
LHLD L_ERRS ; считываем количество
CALL L_BHEX ; выводим H в шестнадцатиричном виде
MOV H, L
CALL L_BHEX ; выводим L в шестнадцатиричном виде
LXI H, 00000h
SHLD L_ERRS ; обнуляем счётчик ошибок
JMP L_CHK ; цикл проверки
;
L_DONE: LXI D, L_TEXT
MVI C, 009h
CALL 5 ; вывод сообщения об окончании проверки КД
RET ; выход из программы
;
L_BHEX: MOV A, H ; H-входное значение для вывода
RRC
RRC
RRC
RRC ; сдвиг вправо на 4 бита
CALL L_BIT ; выводим старшие 4 бита
MOV A, H ; восстанавливаем значение
L_BIT: ANI 00Fh ; оставляем младшие 4 бита
CPI 00Ah
JM L_B10 ; если меньше 10
ADI 007h ; +7
L_B10: ADI 030h ; +30h
MVI D, 000h
MOV E, A
MVI C, 002h ; вывод символа
PUSH H ; сохраняем HL
CALL 5
POP H ; восстанавливаем HL
RET
;
L_SAVE: .dw 0000h
L_TEXT: .db 0Dh, 0Ah, "-- konec testa --$"
L_TEXT1:.db 0Dh, 0Ah, "-- o~istka kd wypolnena --$"
L_TEXT2:.db 0Dh, 0Ah, "o{ibok = $"
L_DATA: .db 01Ch ; 00011100b -- вкл. 3 банк как стек на КД
.db 018h ; 00011000b -- вкл. 2 банк как стек на КД
.db 014h ; 00010100b -- вкл. 1 банк как стек на КД
.db 010h ; 00010000b -- вкл. 0 банк как стек на КД
.db 000h ; на второй этап
.db 0E3h ; 11100011b -- вкл. 3 банк как ОЗУ 8000h-FFFFh
.db 0E2h ; 11100010b -- вкл. 2 банк как ОЗУ 8000h-FFFFh
.db 0E1h ; 11100001b -- вкл. 1 банк как ОЗУ 8000h-FFFFh
.db 0E0h ; 11100000b -- вкл. 0 банк как ОЗУ 8000h-FFFFh
.db 000h ; конец
L_ERRS: .dw 0000h ; количество ошибок
.ENDАналогичен предыдущему тесту, только тут тестирование выполняются в два этапа -- сначала цикл записи, а потом цикл проверки. В конце также показывается количество ошибок.
.ORG 00100h
L_0100: LXI D, L_DATA ; для начала очистка КД
PUSH D ; сохраняем в стеке ссылку
L_CLEAR:POP D ; считываем ссылку
LDAX D ; загружаем A по ссылке
ORA A
INX D ; DE=DE+1
PUSH D ; сохраняем в стеке новую ссылку
JZ L_NEXT ; переход, если там ноль ---->>>>
DI ; запрещаем прерывания
OUT 010h ; отправляем в порт
LXI H, 0000h
DAD SP ; SP+0 в HL
SHLD L_SAVE ; сохранить указатель на стек
LXI D, 0FFFFh ; чем заполнять -- предварительная очистка памяти
LXI H, 8000h ; сколько/2
LXI SP,0000h ; свой указатель на стек
L_LP0: PUSH D ; заполняем КД через стек...
DCX H
MOV A, L
ORA H
JNZ L_LP0 ; зациклено
XRA A ; обнуляем аккумулятор
OUT 010h ; отправляем в порт -- отключаем КД
LHLD L_SAVE ; считать сохранённый указатель на стек в HL
SPHL ; восстанавливаем SP
EI ; разрешаем прерывания
JMP L_CLEAR ; цикл очистки
;
L_NEXT: LXI D, L_TEXT1
MVI C, 009h
CALL 5 ; вывод сообщения об окончании очистки КД
L_CHK: POP D ; считываем ссылку
LDAX D ; загружаем A по ссылке
ORA A
JZ L_DONE ; переход, если там ноль ---->>>>
INX D ; DE=DE+1
PUSH D ; сохраняем в стеке новую ссылку
DI ; запрещаем прерывания
OUT 010h ; отправляем в порт
LXI H, 08000h ; заполнение памяти -- сколько
LXI B, 08000h ; с какого адреса
L_LP1: MVI A, 055h ; чем заполнять
STAX B ; пишем
INX B
DCX H
MOV A, L
ORA H
JNZ L_LP1 ; пока HL не обнулится
LXI H, 08000h ; считываем -- сколько
LXI B, 08000h ; с какого адреса
L_LP2: LDAX B ; читаем в A
CPI 055h ; сравниваем
JZ L_GOOD ; значения равны
PUSH H ; сохранить счётчик
LHLD L_ERRS ; считываем количество ошибок
INX H
SHLD L_ERRS ; количество ошибок +1
POP H ; восстановить счётчик
L_GOOD: INX B
DCX H
MOV A, L
ORA H
JNZ L_LP2 ; пока HL не обнулится
XRA A ; обнуляем аккумулятор
OUT 010h ; отправляем в порт -- отключаем КД
EI ; разрешаем прерывания
LXI D, L_TEXT2 ; вывод количества найденных ошибок
MVI C, 009h
CALL 5 ; вывод сообщения
LHLD L_ERRS ; считываем количество
CALL L_BHEX ; выводим H в шестнадцатиричном виде
MOV H, L
CALL L_BHEX ; выводим L в шестнадцатиричном виде
LXI H, 00000h
SHLD L_ERRS ; обнуляем счётчик ошибок
JMP L_CHK ; цикл проверки
;
L_DONE: LXI D, L_TEXT
MVI C, 009h
CALL 5 ; вывод сообщения об окончании проверки КД
RET ; выход из программы
;
L_BHEX: MOV A, H ; H-входное значение для вывода
RRC
RRC
RRC
RRC ; сдвиг вправо на 4 бита
CALL L_BIT ; выводим старшие 4 бита
MOV A, H ; восстанавливаем значение
L_BIT: ANI 00Fh ; оставляем младшие 4 бита
CPI 00Ah
JM L_B10 ; если меньше 10
ADI 007h ; +7
L_B10: ADI 030h ; +30h
MVI D, 000h
MOV E, A
MVI C, 002h ; вывод символа
PUSH H ; сохраняем HL
CALL 5
POP H ; восстанавливаем HL
RET
;
L_SAVE: .dw 0000h
L_TEXT: .db 0Dh, 0Ah, "-- konec testa --$"
L_TEXT1:.db 0Dh, 0Ah, "-- o~istka kd wypolnena --$"
L_TEXT2:.db 0Dh, 0Ah, "o{ibok = $"
L_DATA: .db 01Ch ; 00011100b -- вкл. 3 банк как стек на КД
.db 018h ; 00011000b -- вкл. 2 банк как стек на КД
.db 014h ; 00010100b -- вкл. 1 банк как стек на КД
.db 010h ; 00010000b -- вкл. 0 банк как стек на КД
.db 000h ; на второй этап
.db 0E3h ; 11100011b -- вкл. 3 банк как ОЗУ 8000h-FFFFh
.db 0E2h ; 11100010b -- вкл. 2 банк как ОЗУ 8000h-FFFFh
.db 0E1h ; 11100001b -- вкл. 1 банк как ОЗУ 8000h-FFFFh
.db 0E0h ; 11100000b -- вкл. 0 банк как ОЗУ 8000h-FFFFh
.db 000h ; конец
L_ERRS: .dw 0000h ; количество ошибок
.ENDАрхив с откомпилированными тестами: 67070

Что получается:
1. Тест в режиме "стек" ни разу не показал ни одной ошибки. :)
2. Тест в режиме "ОЗУ" в один этап показывает от 0 до 10 случайных ошибок, в два этапа до 30. Это плохо... Есть подозрение на большие задержки в Д5 и Д6, но, с другой стороны, данные на ШАВВ должны появляться раньше, чем на ШАП будет сформирован полный адрес. Надо ещё подумать...

И ещё остаётся питание. Проблемы в нём точно есть, но пока у меня не готов БП на замену.

Improver
05.12.2018, 14:46
Ну что ж... Могу констатировать, что квази-диск работает! :v2_dizzy_punk:
В кратце: написал очередной супер-мега-тест, и он показал, что при ошибках записи данных в режиме ОЗУ запись происходит по неверному адресу, сбой происходит на 12 и 11 бите адреса, причём во всех случаях вместо "1" там попадает "0". Заменил микросхему Д4 с 74HC244 на 74ABT240 -- по выводам они полностью совпадают, только 240-я с инверсией выходов и быстрее (20нс против 5,5нс), ну и как результат -- теперь все тесты проходят на 100% без ошибок, МДОСы работают и не глючат, файлы на КД сохраняются... Правда, я не уверен точно, инверсия адреса на это повлияла, или скорость, но КД заработал, факт.

И да, чем тестировал и нашёл причину сбоев:Алгоритм теста такой:
1. Очищаем весь КД в режиме "стек" (заполняем 0FFh).
2. Пишем байт в режиме ОЗУ в доступной области.
3. Считываем и проверяем -- если совпало с записанным, то стираем и идём к следующему адресу и в п.2
4. Если не совпало и не равно 0FFh -- выводим ошибку, стираем и к следующему адресу и в п.2.
5. Если не совпало и равно 0FFh -- выводим ошибку.
6. Ищем по всему диску в режиме "стек" байт, не равный 0FFh и если находим, то выводим его адрес и значение, очищаем и снова в п.2.

Вот как-то так... А результаты можно интерпретировать так:
- если байты в момент сбоя не пишутся на КД вообще -- это проблема с сигналом WE (ЗПЗУ).
- если байты пишутся по неправильному адресу -- проблема с адресной шиной, микросхемами Д3 или Д4. По результатам теста можно сравнить адреса и определить сбойные биты.
- ну третий вариант -- пишется неправильный байт (такого не было). Тогда надо проверять шину данных или циклы записи...

Откомпилированный тест в архиве: 67172
Исходники теста на ассемблере:
.ORG 00100h
L_0100: LXI D, L_DTST ; для начала очистка КД
PUSH D ; сохраняем в стеке ссылку
L_CLEAR:POP D ; считываем ссылку
LDAX D ; загружаем A по ссылке
ORA A
JZ L_NEXT ; переход, если там ноль ---->>>>
INX D ; DE=DE+1
PUSH D ; сохраняем в стеке новую ссылку
DI ; запрещаем прерывания
OUT 010h ; отправляем в порт
LXI H, 0000h
DAD SP ; SP+0 в HL
SHLD L_SAVE ; сохранить указатель на стек
LXI D, 0FFFFh ; чем заполнять -- предварительная очистка памяти
LXI H, 8000h ; сколько/2
LXI SP,0000h ; свой указатель на стек
L_LP0: PUSH D ; заполняем КД через стек...
DCX H
MOV A, L
ORA H
JNZ L_LP0 ; зациклено
XRA A ; обнуляем аккумулятор
OUT 010h ; отправляем в порт -- отключаем КД
LHLD L_SAVE ; считать сохранённый указатель на стек в HL
SPHL ; восстанавливаем SP
EI ; разрешаем прерывания
JMP L_CLEAR ; цикл очистки
;
L_NEXT: LXI D, L_TEXT1
MVI C, 009h
CALL 5 ; вывод сообщения об окончании очистки КД
LXI D, L_DTOZU ; ссылка на кофигурацию КД "ОЗУ"
PUSH D ; сохраняем в стеке ссылку
L_CHK: POP D ; считываем ссылку
LDAX D ; загружаем A по ссылке
ORA A
JZ L_DONE ; переход, если там ноль ---->>>>
INX D ; DE=DE+1
PUSH D ; сохраняем в стеке новую ссылку
DI ; запрещаем прерывания
OUT 010h ; отправляем в порт
LXI H, 08000h ; заполнение памяти -- сколько
LXI B, 08000h ; с какого адреса
L_LP1: MVI A, 055h ; чем заполнять
STAX B ; пишем
MOV A, M ; читаем в A из другой ячейки (для смены адреса)
LDAX B ; читаем записанное ранее в A
CPI 055h ; сравниваем
JZ L_GOOD ; значения равны -- двигаемся дальше...
MOV D, A ; сохраняем считанное значение в D
MVI A, 0FFh ; очищаем найденную ячейку
STAX B ; пишем
STAX B ; пишем второй раз, для надёжности
XRA A ; обнуляем аккумулятор
OUT 010h ; отправляем в порт -- отключаем КД
EI ; разрешаем прерывания
PUSH H ; сохранить счётчики
PUSH B
PUSH D ; сохраняем D
LXI D, L_TEXT2 ; сообщение об ошибке по адресу
MVI C, 009h
CALL 5 ; вывод сообщения
POP D
POP H ; восстанавливаем адрес
PUSH H
PUSH D ; сохраняем D
CALL L_BHEX ; выводим старший байт адреса в шестнадцатиричном виде
MOV H, L
CALL L_BHEX ; выводим младший байт адреса в шестнадцатиричном виде
LXI D, L_TEXT3 ; сообщение о считанном байте
MVI C, 009h
CALL 5 ; вывод сообщения
POP H ; восстанавливаем плохой байт
CALL L_BHEX ; выводим считанный байт в шестнадцатиричном виде
MOV A, H
CPI 0FFh ; сравниваем c 0FFh
CZ L_FDATA ; если так, то запускаем поиск по всему КД
POP B ; восстановить счётчики
POP H
POP D ; считываем адрес на конфигурацию КД
PUSH D ; и сохраняем
DCX D
LDAX D ; загружаем A по ссылке
DI ; запрещаем прерывания
OUT 010h ; отправляем в порт -- снова включаем КД
L_GOOD: MVI A, 0FFh ; очищаем ячейку
STAX B ; пишем
STAX B ; пишем второй раз, для надёжности
INX B
DCX H
MOV A, L
ORA H
JNZ L_LP1 ; пока HL не обнулится
XRA A ; обнуляем аккумулятор
OUT 010h ; отправляем в порт -- отключаем КД
EI ; разрешаем прерывания
LXI D, L_TEXT4 ; сообщение о переходе к другому банку КД
MVI C, 009h
CALL 5 ; вывод сообщения
JMP L_CHK ; цикл проверки
;
L_DONE: LXI D, L_TEXT
MVI C, 009h
CALL 5 ; вывод сообщения об окончании проверки КД
RET ; выход из программы
;
L_BHEX: MOV A, H ; H-входное значение для вывода
RRC
RRC
RRC
RRC ; сдвиг вправо на 4 бита
CALL L_BIT ; выводим старшие 4 бита
MOV A, H ; восстанавливаем значение
L_BIT: ANI 00Fh ; оставляем младшие 4 бита
CPI 00Ah
JM L_B10 ; если меньше 10
ADI 007h ; +7
L_B10: ADI 030h ; +30h
MVI D, 000h
MOV E, A
MVI C, 002h ; вывод символа
PUSH H ; сохраняем HL
CALL 5
POP H ; восстанавливаем HL
RET
;
; ПП поиска по всему КД
L_FDATA:LXI D, L_TEXT5 ; сообщение о начале поиска на КД
MVI C, 009h
CALL 5 ; вывод сообщения
LXI D, L_DTST ; конфигурация КД
PUSH D ; сохраняем в стеке ссылку
L_FNC: POP D ; считываем ссылку
LDAX D ; загружаем A по ссылке
ORA A
JNZ L_FNXT ; если не ноль
LXI D, L_TEXT6 ; сообщение о том, что ничего не нашли
MVI C, 009h
CALL 5 ; вывод сообщения
RET ; выход из ПП ---->>>>
L_FNXT: INX D ; DE=DE+1
PUSH D ; сохраняем в стеке новую ссылку
DI ; запрещаем прерывания
OUT 010h ; отправляем в порт
LXI H, 0000h
DAD SP ; SP+0 в HL
SHLD L_SAVE ; сохранить указатель на стек
LXI H, 00000h ; нач.адрес
LXI SP,00000h ; свой указатель на стек
L_LPF: POP D ; считываем из стека два байта
MOV A, E
CPI 0FFh ; если младший байт прочитанного не равен 0FFh
JNZ L_FERR ; выход из цикла с сообщением
INX H ; адрес +1
MOV A, D
CPI 0FFh ; если старший байт прочитанного не равен 0FFh
JNZ L_FERR ; выход из цикла с сообщением
INX H ; адрес +1
MOV A, L
ORA H
JNZ L_LPF ; зациклено, пока адрес не обнулится
XRA A ; обнуляем аккумулятор
OUT 010h ; отправляем в порт -- отключаем КД
LHLD L_SAVE ; считать сохранённый указатель на стек в HL
SPHL ; восстанавливаем SP
EI ; разрешаем прерывания
LXI D, L_TEXT4 ; сообщение о переходе к другому банку КД
MVI C, 009h
CALL 5 ; вывод сообщения
JMP L_FNC ; цикл поиска
;
L_FERR: STA L_EBYT ; сохраняем найденный байт
SHLD L_EADR ; сохраняем адрес
LXI D, 0FFFFh ; очищаем ячейку
PUSH D
XRA A ; обнуляем аккумулятор
OUT 010h ; отправляем в порт -- отключаем КД
LHLD L_SAVE ; считать сохранённый указатель на стек в HL
SPHL ; восстанавливаем SP
EI ; разрешаем прерывания
POP D ; считываем ссылку (для удаления её из стека)
LXI D, L_TEXT2 ; сообщение об ошибке по адресу
MVI C, 009h
CALL 5 ; вывод сообщения
LHLD L_EADR ; читаем найденный адрес
CALL L_BHEX ; выводим старший байт адреса в шестнадцатиричном виде
MOV H, L
CALL L_BHEX ; выводим младший байт адреса в шестнадцатиричном виде
LXI D, L_TEXT3 ; сообщение о считанном байте
MVI C, 009h
CALL 5 ; вывод сообщения
LDA L_EBYT ; читаем найденный байт
MOV H, A
CALL L_BHEX ; выводим считанный байт в шестнадцатиричном виде
RET ; завершаем поиск
;
L_SAVE: .dw 0000h
L_TEXT: .db 0Dh, 0Ah, "-- konec testa --$"
L_TEXT1:.db 0Dh, 0Ah, "-- o~istka kd wypolnena --$"
L_TEXT2:.db 0Dh, 0Ah, "o{ibka po adresu $"
L_TEXT3:.db ", s~itan bajt: $"
L_TEXT4:.db 0Dh, 0Ah, "perehod k sledu`}emu"
.db " banku kd $"
L_TEXT5:.db 0Dh, 0Ah, "i}em bajt na kd...$"
L_TEXT6:.db 0Dh, 0Ah, "ni~ego ne na{li. :-)"
.db " prodolvaem test.$"
L_DTST: .db 01Ch ; 00011100b -- вкл. 3 банк как стек на КД
.db 018h ; 00011000b -- вкл. 2 банк как стек на КД
.db 014h ; 00010100b -- вкл. 1 банк как стек на КД
.db 010h ; 00010000b -- вкл. 0 банк как стек на КД
.db 000h ; конец
L_DTOZU:.db 0E3h ; 11100011b -- вкл. 3 банк как ОЗУ 8000h-FFFFh
.db 0E2h ; 11100010b -- вкл. 2 банк как ОЗУ 8000h-FFFFh
.db 0E1h ; 11100001b -- вкл. 1 банк как ОЗУ 8000h-FFFFh
.db 0E0h ; 11100000b -- вкл. 0 банк как ОЗУ 8000h-FFFFh
.db 000h ; конец
L_EADR: .dw 0000h
L_EBYT: .db 00h
.END
Окончательный вариант схемы КД сделаю и выложу тут чуть позже... Хотя, он мало отличается от предыдущего.

svofski
05.12.2018, 15:42
Поздравляю! Следующим этапом дисковод? Или дисковод уже есть?

Improver
05.12.2018, 16:26
Поздравляю! Следующим этапом дисковод? Или дисковод уже есть?Спасибо. :)
Не, не хочу что-то возиться с дискетами... Думаю о подключении жесткого диска -- у меня как раз завалялся такой вот IDE на 64 мегабайта:
ссылка на амазон (https://a.co/d/02foykV)
Где-то ещё его применить, из-за малого объёма, не получится, а для Вектора будет в самый раз.

svofski
05.12.2018, 16:41
Твердость диска это хорошо, но для Вектора есть некоторое количество программ, хотя наверное не очень большое, которые общаются с контроллером дисковода напрямую. В основном это демки, конечно.

У меня еще были тайные помыслы сделать простой адаптер SD-карт. Чтобы он был железно прост и потому легко повторим. Опять же, блаженные пуристы, не зная ничего про контроллер флеша в SD-карте, будут думать, что их дисковод не сложнее их компьютера (спойлер: все равно они будут заблуждаться). А со стороны Вектора написать для него драйвер для МикроДОС-а и, может быть, загрузчик. Но я даже не пробовал задуматься, что на самом деле потребуется для такого проекта.

Improver
06.12.2018, 11:04
Вот проверенная работающая схема КД:
67187

Изменения по отношению к предыдущей версии:
- заменена микросхема Д4 на 74АВТ240
- вернул блокировку сигнала CAS -- на ошибки КД это никак не влияет, но пригодится при совместной работе с другими дисками.

Архив со схемой, разводкой платы и гербер-архивом платы, урезанной до 100х94мм: 67188

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


Твердость диска это хорошо, но для Вектора есть некоторое количество программ, хотя наверное не очень большое, которые общаются с контроллером дисковода напрямую. В основном это демки, конечно.Меня это не сильно пугает. Понадобится дисковод -- сделаю потом... :) Кстати, появилась ещё пара идей, чем заняться в выходные: во-первых, подключить батарейку к памяти КД, чтобы не терять данные при выключении, разводка-то уже вся есть. Думаю, для начала попробовать простую CR2032. Во-вторых, попробовать подключить второй КД к первому. Можно сделать его так, чтобы работал только в режиме "стек" -- замены ОЗУ хватит и с одного диска. Естественно, надо будет что-то придумывать с ОС, или написать свою програмку-копировщик с одного КД на другой.


У меня еще были тайные помыслы сделать простой адаптер SD-карт. Чтобы он был железно прост и потому легко повторим. Опять же, блаженные пуристы, не зная ничего про контроллер флеша в SD-карте, будут думать, что их дисковод не сложнее их компьютера (спойлер: все равно они будут заблуждаться). А со стороны Вектора написать для него драйвер для МикроДОС-а и, может быть, загрузчик. Но я даже не пробовал задуматься, что на самом деле потребуется для такого проекта.Тоже интересная идея. А начать её можно с драйвера FAT для Вектора, чтобы можно было отформатированные на PC дискетки читать, а потом уже переходить к SD... Это если не делать обращение к SD аппаратным, эмулирующим ту же дискету.

Improver
11.12.2018, 11:00
Для тех, кто пока не заменил загрузчик на Векторе (как я) на более новый, сделал запуск системы с КД в виде отдельной программки:
Собственно загрузчик, стартует с адреса 7E00h, указанного в первой строке:
.ORG 07E00h
L_7E00: LXI H, 0FF00h ; проверка наличия КД
SHLD 0DED5h
XRA A
STA 0DED2h
STA 0DED3h
INR A
STA 0DED4h
CALL L_0576
CALL Lx04E8 ; проверка наличия OS.COM
JZ L_7E00 ; возврат.
; переход на загрузку с КД
L_050C: LXI H, 00100h
SHLD 0DED5h
MOV B, H
LXI H, 0FF10h ; ссылка на первую запись в директории на КД +10h
L_051E: MVI C, 010h ; <<<---- цикл
L_0520: MOV A, M
ORA A
JZ 0100h ; --------->>>>>>>>> запуск системы
PUSH PSW
PUSH H
STA 0DED3h
MVI A, 001h
L_0553: STA 0DED4h
PUSH PSW
CALL L_0576
JZ L_0562
MVI A, 0FFh
STA 0DED2h
L_0562: POP PSW
LHLD 0DED5h
LXI D, 00080h
DAD D
SHLD 0DED5h
INR A
CPI 009h
JNZ L_0553
POP H
POP PSW
MOV A, B
ADI 004h
MOV B, A
LDA 0DED2h
ORA A
JNZ L_7E00 ; что-то не так.... сброс.
INX H
DCR C
JNZ L_0520
CALL L_04E9 ; проверка наличия OS.COM
JZ 0100h ; ------>>>>>>> запуск 2
LXI D, 0010h
DAD D
JMP L_051E
;
L_0576: PUSH B
PUSH D
LXI H, 00000h
DAD SP
SHLD 0DED0h
LDA 0DED4h
LXI D, 0FF80h
LXI H, 00400h
L_05B8: DAD D
DCR A
JNZ L_05B8
XCHG
LDA 0DED3h
CMA
CPI 0FCh
JNC L_05C9
SUI 010h
L_05C9: SUI 004h
MOV L, A
RLC
RLC
ANI 0FCh
MOV H, A
MOV A, L
MVI L, 000h
DAD D
RLC
RLC
RLC
RLC
ANI 00Ch
PUSH B
MOV C, A
MVI A, 010h
ORA C
POP B
DI
OUT 010h ; подключаем КД
SPHL
LHLD 0DED5h
XRA A
MVI C, 020h
L_058C: POP D ; грузим в цикле
ADD E
ADD D
MOV M, E
INX H
MOV M, D
INX H
;
POP D
ADD E
ADD D
MOV M, E
INX H
MOV M, D
INX H
;
DCR C
JNZ L_058C
MOV C, A
MVI A, 000h ; отключаем КД
OUT 010h
LHLD 0DED0h
SPHL
EI
MOV A, C
PUSH PSW
PUSH D
LXI H, 00000h
DAD SP
SHLD 0DED0h
LDA 0DED3h
MOV L, A
MVI H, 000h
DAD H
DAD H
DAD H
DAD H
MVI A, 0F0h
ADD H
MOV H, A
LDA 0DED4h
DCR A
ADD A
ADD L
MOV L, A
MVI A, 01Ch ; подключаем КД
DI
OUT 010h
SPHL
POP D
MVI A, 000h ; отключаем КД
OUT 010h
LHLD 0DED0h
SPHL
EI
XCHG
POP D
POP PSW
CMP H
JNZ L_061D
SUB L
JZ L_061E
L_061D: MVI A, 0FFh
L_061E: POP D
POP B
RET
;
Lx04E8: MVI A, 000h
JNZ L_04FE
LXI H, 0FF00h
L_04E9: PUSH H
LXI D, L_0500 ; ссылка на строку "OS COM"
MVI C, 00Ch
L_04EF: LDAX D
CMP M
MVI A, 000h
JNZ L_04FD
INX D
INX H
DCR C
JNZ L_04EF
DCR A
L_04FD: POP H
L_04FE: ORA A
RET
;
L_0500:.db 000h ; <_>
.db 04Fh ; <O>
.db 053h ; <S>
.db 020h ; < >
.db 020h ; < >
.db 020h ; < >
.db 020h ; < >
.db 020h ; < >
.db 020h ; < >
.db 043h ; <C>
.db 04Fh ; <O>
.db 04Dh ; <M>
.END
Программка-перемещалка для возможности запуска с адреса 0100h
.ORG 00100h
L_0100: LXI H, 0038h ; адрес для ПП прерываний RST7
MVI A, 0C9h ; записываем туда код RET
LXI H, 013Ch ; сколько
LXI D, L_1000+3 ; откуда
LXI B, 07E00h ; куда
L_018C: LDAX D ; переброска данных
STAX B
INX D
INX B
DCX H
MOV A, L
ORA H
JNZ L_018C
L_1000: JMP 07E00h ; запускаем то, что перебрасывали
;
.END
Инструкция по сборке:
1. Компилируем оба фрагмента
2. Копируем бинарники в один файл, сначала модуль перемещения, а потом загрузчик, например, так:

copy /b MOVER.obj+BOOTKD.obj BOOTKD.romАрхив с откомпилированным и собранным загрузчиком: 67266
После загрузки просто запускаем по БЛК-СБРОС и если на КД записана ОС, то она сразу стартует.

Сам код взял из загрузчика BOOT45 (http://www.sensi.org/scalar/ware/541/), сильно не оптимизировал, почти всё оставил, как было, главное -- он работает. :)

ivagor
11.12.2018, 17:10
Или вот вариант сокращенный до одного блока

Improver
30.01.2019, 10:38
Нашёл небольшой косяк в своей схеме КД: если попытаться присоединить два и более КД к Вектору, то они работать не будут. Причина в D12.D, выходы этой микросхемы нельзя объединять по схеме "монтажное И", для этого требуется микросхема с открытым коллектором на выходе. Можно, конечно, заменить 74HC86 (кр1564лп5) на 74ALS136 (кр1533лп12), подтянув к плюсу все четыре её выхода, но я решил пойти другим путём, а именно для сигнала БЛК использовать одиночный буфер SN74LVC1G07DBVR (https://www.chipdip.ru/product/sn74lvc1g07dbvr-3), а микросхему D12 оставить только для выбора адреса КД. Впаял этот буфер "на соплях" с предыдущий вариант схемы диска -- всё работает. Вот обновлённая схема:

67881
https://s8.hostingkartinok.com/uploads/thumbs/2019/01/31734dd9e4764e9aa88a2eae23609a8e.png (https://hostingkartinok.com/show-image.php?id=31734dd9e4764e9aa88a2eae23609a8e)
И архив со схемой, разводкой платы и гербер-архивом для изготовления: 67882
Примечание: На втором и всех последующих подключаемых квази-дисках сопротивление R3 ставить не обязательно.

Improver
15.04.2019, 09:38
Небольшой отчёт по работе КД:
-- Подключил аккумулятор от старого МР3-плеера (ёмкостью всего 210мА/ч), с ним информация на КД сохраняется уже более трёх месяцев. Первоначально вольтаж аккумулятора был 4,07В, сейчас показывает ровно 4,00В, т.е. потребление минимально, на уровне саморазряда. С учётом того, что комбодевайсах используются аналогичные микросхемы памяти, там тоже можно сделать такое квази-постоянное хранение информации на квазидиске. :) Можно ещё добавить готовую платку для подзарядки аккумулятора при включении Вектора, хотя, думаю, с таким потреблением в выключенном режиме это становится не обязательным.

-- Собрал второй КД, на плате от 11-й версии с соответствующими исправлениями. Квазидиск заработал сразу и без ошибок, в том числе и в паре с первым. Единственная программа, которая умеет работать с несколькими дисками, это тест "Дождь", вот как это выглядит:
68780
Заметил, что при наличии нескольких квазидисков Дождь тестирует их не самым оптимальным образом, по очереди, хотя можно было бы, например, совместить запись сразу на все КД... Но это уже не принципиально, т.к. массовое производство и тестирование дисков нам не грозит.

Ну и напоследок, несколько фоток "бутерброда" из двух квазидисков:
Вид со стороны Вектора:
68781
Справа можно разглядеть платку с дополнительным буфером для линии "БЛК". Аккумулятор держится просто на двухстороннем скотче.

Вид со стороны микросхем:
68782

И вид в торец "бутерброда":
68783

KTSerg
16.04.2019, 09:10
А ему в режиме хранения 3V хватит?
Может проще "таблетку" впаять вместо аккумулятора?

Improver
16.04.2019, 11:15
А ему в режиме хранения 3V хватит?Вполне. В даташите это напряжение и указано, как необходимое для хранения данных.


Может проще "таблетку" впаять вместо аккумулятора?Пока ждал из Китая крепление для CR2032, припаял аккумулятор, да так и оставил. На втором КД попробую с таблеткой, отпишусь потом о результатах.

VadaOm
06.07.2019, 17:13
Собрал КД работает!!! автору респект. Если кто будет заказывать платы в Китае обратите внимание на маску контактов микросхем, мешает паять.

Improver
08.07.2019, 14:22
Собрал КД работает!!!Спасибо за отзыв. :)


Если кто будет заказывать платы в Китае обратите внимание на маску контактов микросхем, мешает паять.А что не так с маской? У меня пайка проблем не вызвала, хотя заказывал платы также в Китае. Вот для примера фотка платы, только сейчас паял:
69465

VadaOm
08.07.2019, 15:38
У меня получилось, что маска закрывает половину контакта, косяк получился при конвертировании в Altium Designer, это мелочи главное работает.

ivagor
08.07.2019, 20:13
Уже как минимум пара человек (Improver и KTSerg) являются обладателями двух (или более?) квазов. И есть лешадок, который гибкий и потенциально способен на очень многое. Может попробовать договориться и стандартизировать подключение нескольких квазов более рационально, чем к портам 10h, 11h и т.д. (как для теста "дождь")? Например оставить управление "текущим" квазом на 10h, а на 11h сделать выбор текущего кваза? ERAM, как я понимаю, никто собирать не планирует (тем более для оригинального еще и вектор надо переделывать), но хотелось бы иметь некий стандарт на расширенную память. И в эмуляторы добавить.

svofski
08.07.2019, 21:44
Дешифратор переделать на другой адрес просто, а сделать один глобальный регистр выбора кваза - получается нужен еще специальный квазорасширитель, который не совсем понятно куда засовывать в случае подключения к реалу.

ivagor
09.07.2019, 06:38
Сорри за оффтоп.
Если бы без оглядки на реал, то я предложил бы какой-нибудь гибкий и удобный для программиста вариант организации многокваза.
А выбор кваза имхо сделать достаточно несложно, например пускать cas только к выбранному квазу. На мой малообразованный взгляд это буквально пара дополнительных корпусов, если на мелкой логике, причем их достаточно установить только на ближайшем к вектору квазе. Ну нет так нет.

KTSerg
09.07.2019, 07:32
... Может попробовать договориться и стандартизировать подключение нескольких квазов более рационально, чем к портам 10h, 11h и т.д. (как для теста "дождь")? Например оставить управление "текущим" квазом на 10h, а на 11h сделать выбор текущего кваза? ERAM, как я понимаю, никто собирать не планирует (тем более для оригинального еще и вектор надо переделывать), но хотелось бы иметь некий стандарт на расширенную память. И в эмуляторы добавить.
А где уже встречался какой-то единый регистр переключения банков, это в ERAM ?
Подключение нескольких Квазов в любом случае требует схемной доработки, либо самих Квазов, либо коммутации ШАВВ. Организация дополнительного регистра переключения Квазов конечно схемно более сложный вариант, но при этом позволяет не лазить в сами Квазы.
Возможность программно переключать несколько Квазов не создаст проблемы МикроДосу?

ivagor
09.07.2019, 07:55
А где уже встречался какой-то единый регистр переключения банков, это в ERAM ?
Да, но там не самый удачный вариант, т.к. конфликт по номеру порта с часами.
Если ограничиваться только двумя квазами 10 и 11, то, конечно, заморачиваться регистром переключения нет смысла. Но если >2, то стоило бы подумать. Если смотреть на порты, использованные в дожде, то 4 из 8 конфликтуют с другими устройствами (2 с часами, 2 с кишиневским адаптером z80 и омским пзу-8, хотя для пзу-8 вроде была доработка).

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


Возможность программно переключать несколько Квазов не создаст проблемы МикроДосу?
Если при вызове функций доса или при выходе в дос будет включен "правильный" кваз, то проблем нет.
Опционально можно подумать о том, чтобы при записи 0 в 10h в порт выбора записывалась исходная комбинация. Но это потребует еще микросхем для реализации и при аккуратном программировании не нужно.

Improver
09.07.2019, 08:04
Может попробовать договориться и стандартизировать подключение нескольких квазов более рационально, чем к портам 10h, 11h и т.д. (как для теста "дождь")? Например оставить управление "текущим" квазом на 10h, а на 11h сделать выбор текущего кваза?Вместо 11h можно использовать 20h и получить некую совместимость с ERAM.

Другой вариант: отказаться от доработки Баркаря и использовать 7 и 8 биты порта 10h для выбора КД, это даст возможность подключать до 4 дисков.

Ну и в дополнение, третий вариант: можно все порты оставить как есть в "Дожде", и просто написать некую программу, которая будет по необходимости менять в драйверах все "OUT 10h" на адрес нужного КД. :)


ERAM, как я понимаю, никто собирать не планирует (тем более для оригинального еще и вектор надо переделывать)А почему бы и нет? Насколько я представляю, на основе моего КД или Лешадок это можно сделать даже без переделки Вектора.


А где уже встречался какой-то единый регистр переключения банков, это в ERAM ?Да, это есть в ERAM, там по порту 20h можно задать дополнительные режимы замены памяти и выбрать используемые сегменты по 256кБ (которые в свою очередь бьются на страницы по 64кБ).

ivagor
09.07.2019, 08:16
Вместо 11h можно использовать 20h и получить некую совместимость с ERAM.
На мой взгляд в частичной совместимости с ERAM смысла нет. Программы для ERAM работать не будут + конфликт с часами.


отказаться от доработки Баркаря
Тут я против, т.к. использовал дополнительные возможности Баркаря. Или Бакарь или ERAM, но что-нибудь с возможностью полного перекрытия ВОЗУ нужно.


А почему бы и нет? Насколько я представляю, на основе моего КД или Лешадок это можно сделать даже без переделки Вектора.
Было бы здорово.

Improver
09.07.2019, 08:50
ivagor, ок, попробую изобразить новую схему ERAM... Хотя это не решит проблему использования нескольких КД на Векторе, тут, наверно, придётся использовать программный метод подмены номера порта в драйверах.

ivagor
09.07.2019, 09:07
С ERAMом единственная засада - программ нет. Для COMANовских досов нужен еще и свой КНГМД. А для ERAM с кишиневским КНГМД есть скорее всего только пара моих прог - проигрыватель почти wavов (могу доделать до совсем wavов, как сделал для обычного кваза) и bad apple c повышенным разрешением (доисторический HD :D ). С другой стороны для нескольких квазов тоже программ нет кроме дождя.

Improver
09.07.2019, 09:54
С ERAMом единственная засада - программ нет.Был только СР/М с поддержкой ЕРАМ до 768 Кб (http://www.sensi.org/scalar/ware/671/), а так -- да, больше ничего нет. Ну ещё плюс ЕРАМ будет программно совместим с обычным КД (без доработки Баркаря).


С другой стороны для нескольких квазов тоже программ нет кроме дождя.В общем, кругом непаханное поле. С программной точки зрения, мне кажется, одинаково по сложности написать драйвера что для ЕРАМ, что для нескольких КД, так что можно развиваться в любую сторону.

VadaOm
09.07.2019, 15:10
в 1996 году В. Шашков разрабатывал пакет драйверов "Unidrive" для работы с расширенным электронным диском и другой периферией, но так и не сделал выпустил только бета версию.

ivagor
09.07.2019, 15:50
VadaOm, спасибо!

Improver
09.07.2019, 16:19
в 1996 году В. Шашков разрабатывал пакет драйверов "Unidrive" для работы с расширенным электронным диском и другой периферией, но так и не сделал выпустил только бета версию.В архиве драйвера только для дисплея и принтеров, я правильно понял?

ivagor
09.07.2019, 16:51
Только для принтера.

VadaOm
09.07.2019, 17:38
Идея была хорошая. Чем начинать с нуля, можно его продолжить.

Improver
11.07.2019, 09:31
Я уже тут (https://zx-pk.ru/threads/29342-novyj-staryj-kvazidisk.html?p=974779&viewfull=1#post974779) публиковал схему IDE-контроллера, и, как продолжение, не заводя новой темы, сообщаю, что собрал его. :)
Правда, есть небольшие изменения в схеме:
- Вместо КР1533ИР23 использовал КР1533ИР37. Они по функционалу и характеристикам полностью идентичны, но у ИР37 входы/выходы располагаются на разных сторонах корпуса, что существенно упрощает разводку платы.
- Немного "перетасовал" выходы микросхем, также для улучшения разводки.
- Убрал лишние сопротивления, добавил светодиод.
- На линии RESET поставил джампер и, как оказалось, не зря -- тут в форуме часто упоминалось, что эту линию иногда лучше разорвать, и мне также пришлось это сделать.

Вот итоговая схема:
https://s8.hostingkartinok.com/uploads/thumbs/2019/07/569a67d7959fe892dff0b0cca6d287f8.png (https://hostingkartinok.com/show-image.php?id=569a67d7959fe892dff0b0cca6d287f8)

И архив с исходными файлами и гербером для изготовления платы (вторая версия): 69527

Подключил плату с диском к контроллеру КД вторым слоем:

69528

В связи с тем, что схема контроллера IDE, фактически, не имеет отличий от стандарта, да и ПО используется всё то же, все глюки, озвученные тут в форуме присутствуют, тест HDD выдаёт некоторые ошибки, но система с диска грузится, диски подключаются, файлы запускаются:

69529 69530 69531

P.S. На диск уже был заранее залит образ, так что форматирование и инициализацию на Векторе не делал.

svofski
11.07.2019, 10:20
Убрал лишние сопротивления
Тебе пора в команду дизайнеров (https://www.scorpia.co.uk/2019/06/28/pi4-not-working-with-some-chargers-or-why-you-need-two-cc-resistors/) Raspberry Pi ;)

Кайфовая конструкция! Спасибо, что всё публикуешь.

ivagor
11.07.2019, 11:14
Такое конструктивное исполнение вроде впервые для вектора и скорее всего это проще и практичнее, чем EPOS (http://www.sensi.org/scalar/ware/581/), респект.

Improver
11.07.2019, 11:56
svofski, ivagor, спасибо за одобрение. :)


это проще и практичнее, чем EPOSМожет быть, но используемые тут "штырьково-дырочные" разъёмы имеют свои минусы -- необходимость центрирования штырьков при сборке, достаточно большое усилие при разборке и т.д. А если не принимать в расчёт разъёмы, то EPOS ещё имеет буферы по управляющим каналам и ШАВВ, может быть имеет смысл сделать также, хотя используемые микросхемы серий КР1564 и КР1531 потребляют на входе в десятки раз меньшие токи, чем КР155 и КР555 (https://www.rlocman.ru/shem/schematics.html?di=48945).

ivagor
11.07.2019, 12:13
Мне кажется, что между таким конструктивом и EPOS есть разделение по сфере применения. Для "старых", классических устройств - EPOS. А для новых - проще такой вариант. При этом скорее всего будут использоваться новые (если сравнивать с 155) серии микросхем и ограничением на количество подключаемых плат может стать даже не нагрузочная способность, а механическая прочность. Сложно судить по фотографии, но создается впечатление, что платы 4 такого размера скорее всего можно подключить друг за другом.

KTSerg
12.07.2019, 06:32
Я уже тут (https://zx-pk.ru/threads/29342-novyj-staryj-kvazidisk.html?p=974779&viewfull=1#post974779) публиковал схему IDE-контроллера, и, как продолжение, не заводя новой темы, сообщаю, что собрал его. ...
А через IDE-контроллер не вся шина "ВУ" передаётся на следующее устройство, чет контактов маловато, или остаток шины в верхней части платы?

Improver
12.07.2019, 09:18
А через IDE-контроллер не вся шина "ВУ" передаётся на следующее устройство, чет контактов маловато, или остаток шины в верхней части платы?Передаётся вся шина, на фото сверху один разъём на 12 контактов и снизу два таких же, плюс шестиконтактный разъём на питание. На этом фото, может, разъёмы будут виднее:

69553

Хотя линии ШАП, как я понимаю, нигде, кроме КД не задействованы, через плату контроллера IDE передаются и они.

Improver
19.08.2019, 12:20
Выполняю обещанное ранее:

ivagor, ок, попробую изобразить новую схему ERAM...
И вот такая, значит, получается схемка:

https://s8.hostingkartinok.com/uploads/thumbs/2019/08/64ae5ddb640d1f4d422fea6c6413585a.png (https://hostingkartinok.com/show-image.php?id=64ae5ddb640d1f4d422fea6c6413585a)

Сразу скажу, что переделка Вектора всё-таки потребуется в плане замены микросхемы Д36, там отличия от оригинальной прошивки в байтах 09h и 0Ah, и это влияет на формирование сигнала CAS и WE на ВУ для младших адресов памяти, если не ошибаюсь. Более сведущие люди тут подскажут точно... А в остальном получилось даже лучше оригинального ERAM -- диск в таком виде будет ещё дополнительно поддерживать КД с доработкой Баркаря. :)

И ещё, эта схема, скорее всего, не оптимальна для разводки, возможно потребуется поменять местами некоторые выводы и логические элементы...

Вот схема ESRAM в протеусе, для изучения: 69842

ivagor
19.08.2019, 13:14
Improver, это круто, но имхо необходимость замены D36 делает маловероятным повторение этого варианта другими вектористами (тем более есть .02 без D36). Наверно "2xБаркарь" на 10h и 11h более реалистичный вариант выхода за пределы 256 Кб.

Improver
19.08.2019, 13:44
Improver, это круто, но имхо необходимость замены D36 делает маловероятным повторение этого варианта другими вектористами (тем более есть .02 без D36).Тут вопрос требует дополнительного изучения схемы Вектора .02, работал ли с ним тот первый вариант ERAM, и как. Вообще, я думаю, даже без замены Д36 и на всех вариантах Вектора, ESRAM будет работать в режимах КД 256кБайт (с доработкой Баркаря), а также можно будет легко переключать банки памяти по 256 кБайт (из отведённых 2 МБ), но не будет возможности полной замены памяти в режиме ОЗУ.


Наверно "2xБаркарь" на 10h и 11h более реалистичный вариант выхода за пределы 256 Кб.Не возражаю, да и двух КД на 256кБайт для Вектора более чем достаточно, поэтому разводкой и изготовлением платы я пока заниматься не стал.

ivagor
19.08.2019, 15:06
двух КД на 256кБайт для Вектора более чем достаточно
Занять можно и 2 Мб ("кино", wavы) но там уже становится ограничением загрузка с дискет. Для 2 Мб желательно hdd или sd. Признаю, это очень специфические маловостребованные задачи, но для полноты картины их стоит упомянуть.

ivagor
20.08.2019, 08:11
микросхемы Д36, там отличия от оригинальной прошивки в байтах 09h и 0Ah, и это влияет на формирование сигнала CAS и WE на ВУ для младших адресов памяти, если не ошибаюсь.
У меня сложилось впечатление, что заменой D36 изменяются временные характеристики. Еще они меняют байты 15h-17h, как мне кажется с той же целью. Но не могу сказать, что в уме способен точно промоделировать работу связки D36+D37

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


Еще они меняют байты 15h-17h, как мне кажется с той же целью.
Прикол, если сравнивать со схемой с емкостной клавиатурой, то меняют, а если с герконовой - то так и было.

Improver
20.08.2019, 08:42
Прикол, если сравнивать со схемой с емкостной клавиатурой, то меняют, а если с герконовой - то так и было.Кстати да, я сравнивал с Кишенёвской схемой (http://www.sensi.org/scalar/ware/515/), там отличий в этих байтах нет, а в Астраханской документации (http://www.sensi.org/scalar/ware/514/) есть, нужно ещё дома глянуть свою бумажную документацию, из Волжского... С другой стороны, важнее не документация, а то, что там на самом деле было прошито. :)

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

А, понятно -- в Астраханской схеме видимо опечатка, если глянуть по единичкам в таблице, то там значения совсем не соответствуют написанным байтам, а совпадают со значениями "07", "17" и "15", как в Кишенёвской схеме.

ivagor
20.08.2019, 09:28
У меня жесткий склероз, совсем недавно я уже замечал эти опечатки (https://zx-pk.ru/threads/835-vektor-06ts-obshchie-voprosy.html?p=1002694&viewfull=1#post1002694)

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

С опечатками понятно, поэтому хочу вернуться к D36 и еще чуть расширить свое утверждение - что D36 влияет на временные характеристики, а на возможности замены озу вектора на внешнее влияет сигнал БЛК. Т.е. я клоню к тому, что аналог ERAM без замены D36 в принципе возможен (хотя не факт, что он нужен).

Improver
29.08.2019, 10:02
На досуге поразмышлял по поводу использования двух КД на Векторе, думаю, надо обсудить... Какие вообще могут быть варианты, за исключением применения во всяких единичных демо?


Пропатчить любой МДОС на использование "OUT 11h" вместо "OUT 10h" и запускать его со второго КД. В принципе, такой МДОС уже, кажется, был, но при этом не получится напрямую копировать инфу с одного КД на другой, только через дискеты и перезагрузку.
Расширение объёма КД до 512кб (минус 16-32 кб на экран, 4кб на каталоги и 8кб на контрольные суммы). Можно пропатчить МДОС так, чтобы он объединял каталоги двух КД в один, и существующие МДОСы нормально продолжали работать с первым КД. Но патч будет грандиозным.
Сделать отдельный МДОС с двумя буквами для двух КД. Или даже МДОС, который можно сконфигурировать под любое имеющееся железо. Интересно, но сложно.
Пропатчить любой МДОС на использование экранной области со второго КД. Не сложный в реализации вариант, но со своими минусами.
Написать программку, которая запускается под любым ДОСом и позволяет копировать инфу между двумя КД, запускать файлы со второго КД и т.д. Пожалуй, наиболее универсальный вариант, но менее удобный, как мне кажется.

Какое направление лучше выбрать? Может есть ещё варианты?

svofski
29.08.2019, 10:21
Если скорее сделать, то лучше просто утилиту.

Если проект века, то я за полное перелопачивание МДОС, потому что это открывает возможности для добавления других новых устройств. SD карты, консоль на компорту с полным отключением экрана итд.

crackintosh
04.09.2019, 07:17
Кстати... помоему мне попался заводской корпус от этого КД 256К:

https://i.postimg.cc/S2N1BvGp/DSCN0682.jpg (https://postimg.cc/S2N1BvGp) https://i.postimg.cc/3Wqfq94P/DSCN0683.jpg (https://postimg.cc/3Wqfq94P) https://i.postimg.cc/0M8h8QPF/DSCN0684.jpg (https://postimg.cc/0M8h8QPF) https://i.postimg.cc/9RJKzhfM/DSCN0685.jpg (https://postimg.cc/9RJKzhfM) https://i.postimg.cc/c6LP2rD8/DSCN0686.jpg (https://postimg.cc/c6LP2rD8)

ivagor
04.09.2019, 07:51
Да, у моего кваза такой корпус был, только еще был шильдик на задней части, если память не изменяет.

Improver
04.09.2019, 08:17
Кстати... помоему мне попался заводской корпус от этого КД 256К:Ну не от моего нового-старого, это точно. :D

crackintosh
04.09.2019, 09:52
А разве твой не копия с оригинального кишиневского ?!?!

KTSerg
04.09.2019, 09:57
А разве твой не копия с оригинального кишиневского ?!?!
Судя по фото, размеры у него точно другие ;)
А в твоём кто-то отверстий нарезал, явно "дорабатывал", что-то к нему подключал, или использовал не по назначению.

ivagor
04.09.2019, 10:07
А в твоём кто-то отверстий нарезал, явно "дорабатывал", что-то к нему подключал, или использовал не по назначению.
Насколько помню в моем эти "прорези" были

crackintosh
04.09.2019, 10:20
Прорези 100% заводские... литьё. Было бы кустарно я бы заметил.

KTSerg
04.09.2019, 11:48
Прорези 100% заводские... литьё. Было бы кустарно я бы заметил.
Если Ви таки шутите, ставьте смайлики. :)
Я даже на фото вижу следы обработки напильником. И снятые фаски ножом.
Из штатных на корпусе от Квазидиска только четыре зоны с отверстиями для вентиляции, и одно для разъёма для подключения к Вектору.
Остальные: внизу по всей длине, на задней стороне внизу по всей длине, вверху, вырез внизу по центру - это всё "доработка напильником".

По вырезу вверху, можно предположить, что в него вставляли "Кишинёвский" контроллер НГМД, там как раз вверху выход шлейфа к дисководу.

ivagor
04.09.2019, 11:52
внизу по всей длине, на задней стороне внизу по всей длине, вверху, вырез внизу по центру - это всё "доработка напильником".
Да, этих у меня не было

crackintosh
04.09.2019, 12:41
Упс... таки есть. :v2_dizzy_tired2: Слепым стал - старею.
Задняя по всей длине - для шлейфа - самоделка. вверху и внизу на 3 см тоже.
Корпус от этого КД: https://zx-pk.ru/threads/26139-kvazidisk-kontroller-diskovoda-(kishinev)-2016.html
Крепежные отверстия и размеры совпадают.

Improver
01.10.2019, 11:17
В продолжение этого сообщения (https://zx-pk.ru/threads/29342-novyj-staryj-kvazidisk.html?p=1025173&viewfull=1#post1025173): операционка на два КД (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1028760&viewfull=1#post1028760), по третьему пункту. Оставлю метку тут...

electroscat
25.05.2020, 19:07
Доброго времени друзья !

Не уверен что я в той теме пишу... Речь шла о том, что на квазидиск на K6T4008C1B можно поставить CR2032 и она будет хранить память в целости долго - долго... Сегодня поэкспериментировал над этим. И ... не получилось.
Если честно, не очень понимаю почему. Потребление микросхемы в дежурке по мануалу должно быть от 20 до 100 микроампер, в рабочем режиме 80 миллиампер. Может как то ее нужно переводить в рабочий режим... И вот еще, питание, по мануалу - от 4,5 до 5.5 вольт... Тут сразу не соответствует CR2032 потому что она 3 вольта. Ну и на диоде который закрывается при наличии питания напряжение батареи падает до 2,5 вольта... В целом, информация сохраняется, но при чтении появляются ошибки, граф. файлы на диске портятся. В общем, CR2032 не катит. Я балбес, надо было на проводах навесить батарею и попробовать,... понасверлил отверстий в комбодевайсе и на суперклей разьем для батареи приклеил ))))) .. Пробовал вариант с двумя CR 2016 - они в 2 раза тоньше чем 2032, их две в разьем помещается. В итоге получается напряжение 6.1 вольт на выходе, на диоде падает до 4,8 - то есть в целом должно все работать... Батареи новые покупал, не мертвые. Пробовал диод другой, не помогло, потом два в параллель поставил, чуть лучше, но все равно падение серьезное. Диод КД522, пробовал разные другие импортные. Только не работает, так же появляются ошибки, в общем, не работает и пара 2016. Похоже нужен аккумулятор, и подключать прямо к питанию без диода чтобы заряжался. Подбираю на али, подскажите, какой аккумулятор использован в вашей конструкции,... Если честно я слегка не пойму вообще, если аккум нужен от 4,5 вольта, то какой поставить, ведь все китайские на 3,7... Какой работает в схеме, сколько вольт, и какой ток ?

При работе от стационарного питания ошибок не появляется, напряжение чуть больше 5 вольт.

AlexBel
25.05.2020, 19:56
А что с сигналом памяти /CS при питании от батарей?
Вот пример резервного питания памяти с использованием специализированной микросхемы ADM691, страница 14: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwi-tvLvvc_pAhXEpYsKHdU7Bn4QFjAAegQIAhAB&url=ftp%3A%2F%2Fftp.shtrih-m.ru%2Fdownload%2FFR%2Fshtrih-fr-k%2Fdoc%2Frem_doc.pdf&usg=AOvVaw1bG2oo97FmNoJAs4-84JXk

electroscat
25.05.2020, 20:30
А что с сигналом памяти /CS при питании от батарей?
На выводе 0 вольт. На всех ногах микросхемы кроме VCC - 0V.

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


Вот пример резервного питания памяти с использованием специализированной микросхемы ADM691, страница 14: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwi-tvLvvc_pAhXEpYsKHdU7Bn4QFjAAegQIAhAB&url=ftp%3A%2F%2Fftp.shtrih-m.ru%2Fdownload%2FFR%2Fshtrih-fr-k%2Fdoc%2Frem_doc.pdf&usg=AOvVaw1bG2oo97FmNoJAs4-84JXk

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

Потребление просто сумасшедшее, две СR2016 (75mAh по мануалу) за два часа под нагрузкой показывают 5 вольт вместо 6. Что то не похоже на 100 мка потребление, и уж тем более на 20. Очень странно.

AlexBel
25.05.2020, 20:50
На выводе 0 вольт. На всех ногах микросхемы кроме VCC - 0V.

Ну, а чего удивляться тогда? Может, для разнообразия, почитать даташит на K6T4008C1B?

electroscat
25.05.2020, 22:13
Ну, а чего удивляться тогда? Может, для разнообразия, почитать даташит на K6T4008C1B?

Спасибо, буду почитать. Вселяете надежду )))

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

Standby Current(CMOS) - ISB1 - CS≥Vcc-0.2V, Other inputs=0~Vcc Вы наверняка об этом.... Да уж.. Интересно, можно ли без спец. микросхем, просто резистор подобрать от плюса микросхемы таким образом, чтобы при отсутствии нуля на CS там было напряжение питания почти... Попробую что то подобрать подобное. Если не получится, придется ADM691 лепить, или что то подобное.


Попробовал с резистором, 1,3 ком - когда combodevice не подключен к шине вектора, на CS - почти напряжение питания, то есть, при 2х CR2016 - 5,7 вольта а питание 5,8... Но когда подключаешь его к шине, что то по СS сажает напряжение до 0,8 вольта, естественно не работает ничего. Пробовал с резюком 500 ком, получше гораздо, всего одна ошибка - это в целом прогресс, но баарея садится крайне быстро, падение на диоде огромное, напряжение на VCC - 3,8 а на CS - 2,8... Какой то ужас. Что получается, при отключении питания ногу 22 нужно отключать как то от шины и подавать на нее то что с батареи приходит, только так будет работать. Похоже пахнет спец. микросхемой, она вроде как раз для этого и сделана, судя по ногам CS in и CS out ... Или тупо аккумулятором на 650 mAh ))))))

Микросхема K6T4008C1C-DB70 - по идее 20 мка должна потреблять в standby режиме.

Improver
26.05.2020, 08:51
По поводу сохранения данных... Конкретно K6T4008C1B я не использовал, в моей конструкции используются HM628128, и на них в даташите упомянуто, что в режиме сохранения данных на них нужно подавать питание 3В, и это работает, как показывает практика.

И ещё сейчас заметил одно отличие HM628128 -- там включение режима сохранения происходит при низком (нулевом) напряжении на выводе CE2, что, собственно, обеспечивается обесточиванием всей остальной схемы. Тогда, в случае с K6T4008C1B, я бы сделал ещё одну диодную развязку с батарейки для подачи напряжения на CS, сделать тоже самое с сопротивлением тут, думаю, не получится.

electroscat, по диодам хочу обратить внимание: нужно выбирать диоды с переходом Шотки, на них падение напряжения в разы меньше, попробуйте, например, 1N5819, с ними должна и батарейка обеспечивать необходимые для сохранения 3В.

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

И да, при повышении напряжения питания до 5 В память должна выходить в рабочий режим, при этом потребление, соответственно, возрастает, поэтому две батарейки лучше не ставить... Или, опять же, поставить там не сопротивление, а последовательно три обычных диода, которые дадут падение в сумме около 3В.

AlexBel
26.05.2020, 08:59
electroscat, Используемые в схеме микросхемы статической памяти имеют два входа CS - прямой и инверсный. Это значит, что для включения микросхемы нужно на прямой подать "1", а на инверсный "0". При этом, когда вся схема отключается и питание подаётся только на микросхему памяти, на прямом входе CS ноль. Микросхема деактивирована и мало потребляет. K6T4008C1B имеет только один инверсный вход CS и, при обесточивании схемы, на этот вход подаётся ноль и память активируется. Это всё есть в даташите на любую подобную микросхему.

electroscat
26.05.2020, 12:08
в случае с K6T4008C1B, я бы сделал ещё одну диодную развязку с батарейки для подачи напряжения на CS, сделать тоже самое с сопротивлением тут, думаю, не получится.

Да, это я понял. Вчера просмотрел схемы вектора и комбодевайса, в принципи на BLK выдает что то только квазидиск, в остальных местах где этот сигнал используется как входной. Этот сигнал в схеме вектора подтянут к плюсу сопротивлением 620 ом, видимо это и садит батарею. Попробую такое решение, попробую поэкспериментировать с этим. Просто продублирую выход БЛК с квазидиска, один логический элемент будет формировать сигнал БЛК для шины, а другой будет формировать сигнал для микросхемы памяти. В цепи будет только выход лог. элемента и вход микросхемы, и один из выводов диода с батареи. Надеюсь так проблема решится.


electroscat, по диодам хочу обратить внимание: нужно выбирать диоды с переходом Шотки, на них падение напряжения в разы меньше, попробуйте, например, 1N5819, с ними должна и батарейка обеспечивать необходимые для сохранения 3В.

О, это очень важно, спасибо, сегодня найду такие диоды.

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


И да, при повышении напряжения питания до 5 В память должна выходить в рабочий режим, при этом потребление, соответственно, возрастает, поэтому две батарейки лучше не ставить... Или, опять же, поставить там не сопротивление, а последовательно три обычных диода, которые дадут падение в сумме около 3В.

Спасио, буду пробовать.

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


electroscat, Используемые в схеме микросхемы статической памяти имеют два входа CS - прямой и инверсный. Это значит, что для включения микросхемы нужно на прямой подать "1", а на инверсный "0". При этом, когда вся схема отключается и питание подаётся только на микросхему памяти, на прямом входе CS ноль. Микросхема деактивирована и мало потребляет. K6T4008C1B имеет только один инверсный вход CS и, при обесточивании схемы, на этот вход подаётся ноль и память активируется. Это всё есть в даташите на любую подобную микросхему.

Да, нашел, спасибо !

shapipovo
26.05.2020, 12:15
Посмотрите здесь.
https://zx-pk.ru/threads/25367-gibridnyj-elektronnyj-disk-dlya-prk-orion.html

KTSerg
26.05.2020, 12:22
Не могу сказать с уверенностью, но мне кажется, что сигнал CS подаваемый на микросхему памяти, по логике должен быть сигналом "с открытым коллектором", т.е. он должен притягивать потенциал на ноге памяти к "0", значит диодами тут не обойтись, только доп-микросхема развязки.
Но могу ошибаться.

electroscat
26.05.2020, 15:14
Посмотрите здесь.
https://zx-pk.ru/threads/25367-gibridnyj-elektronnyj-disk-dlya-prk-orion.html

О, спасибо огромное ! Этот вариант реализую если не пройдет вариант с дублированием выхода BLK, этот вариант не так сложен для реализации, микросхема с 8 ногами в DIP корпусе мне на данный момент более приемлема. Спасибо !

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


Не могу сказать с уверенностью, но мне кажется, что сигнал CS подаваемый на микросхему памяти, по логике должен быть сигналом "с открытым коллектором"

Сейчас выход с квазидиска обеспечивает обычный логический элемент, не с открытым коллектором. То что в схеме вектора есть резистор на 620 ом к плюсу на этом сигнале - конечно настораживает, но в целом, работает сейчас это через выход без "OK"... Попробую пока развязать все без "ОК" и микросхемы, поэкспериментирую, вдруг что то получится и без дополнительных корпусов.

shapipovo
26.05.2020, 16:15
Вы смотрели 3 последний вариант? Кстати у меня есть все МС включая K6T4008C1B-GB55

electroscat
26.05.2020, 17:54
Вы смотрели 3 последний вариант? Кстати у меня есть все МС включая K6T4008C1B-GB55

Вы имеете в виду вот эту схему?

http://denn.ru/8bit/orion/128/sromd/srom1024_lite_schematic.jpg

Интересное решение, спасибо, разбираюсь. Хочется еще проще, думаю, пара или один диод и резистор, плюс, шина "БЛК" будет отдельно от входа SC микросхемы.

shapipovo
26.05.2020, 18:30
Нет.
https://zx-pk.ru/threads/25367-gibridnyj-elektronnyj-disk-dlya-prk-orion/page7.html

electroscat
26.05.2020, 19:57
Ага, понял, спасибо!!! Тут... (http://denn.ru/8bit/orion/128/e-disk/e-disk4.jpg) то есть не нужен никакой открытый коллектор", очень хорошо. То есть моя идея вполне имеет все шансы осуществиться. Получается что в схеме и WE будет с "1" при работе от батареи, это для чего? Вроде в мануале на память только про CS говорится.

electroscat
27.05.2020, 18:10
Не работает. Не пойму в чем проблема, поставил диоды шотки, теперь 3.07 питание микросхемы в режиме хранения, отделение от общей шины "БЛК" позволило при помощи резистора в 1 ком после диодной развязки формировать напряжение в те же 3,07 вольта на CS, когда все остальное отключается от питания, на всех остальных выводах, кроме Vcc - нуль, то есть, условия Vcc=3.0V, CS≥Vcc-0.2V выполняются, и потребление конкретно для этой микросхемы должно быть 15 мка... микросхема вполне себе хранит почти все что в нее записано, но после выключения и включения питания на дисках ошибки, есть от 3 до 50 "плохих" секторов, на обоих дисках, обычно на С: побольше а на D: поменьше, искаженная графика и т.д. Может какие то переходные процессы... От длительности не зависит количество плохих секторов, то есть, на пару часов выключал, все те же несколько плохих секторов. Что еще может быть? Вроде потребление не большое, батарея не садится быстро как раньше, но тем не менее, содержимое памяти меняется, почему так может происходить? Память работает прекрасно в обычном режиме, никогда не появляются плохие сектора, всегда все четко...
Кстати, после того как поставил диоды шотки, и питание поднялось с 2,8 в до 3,07 - ошибок стало гораздо больше. А меньще всего ошибок было, когда вставлял две батареи СR2016, когда питание после диодной развязки составляло 5,7 вольт. Правда в таком случае память вообще все время питалась от батареи, потому что напряжение питания от блока - 4,9 в ...
Все же можно ли в этом случае обойтись минимальным количеством элементов, не вводя еще какие либо микросхемы в схему ? Как это сделать? Добавление еще одного корпуса на плату весьма критично, проще отказаться в целом от такого варианта, максимум пару транзисторов. Хотя DS1210 в целом импонирует. Но где гарантия, что такая связка заработает, нужно экспериментировать.... Ведь реально - условия сейчас все выполняются, а результат печальный.
И все же, очень интересно, для чего в схеме из сообщения выше - WE тоже держится в "1" при выключении питания ? Это наверняка как то связано ?

KTSerg
28.05.2020, 07:04
Не работает. Не пойму в чем проблема, поставил диоды шотки, теперь 3.07 питание микросхемы в режиме хранения, отделение от общей шины "БЛК" позволило при помощи резистора ...
Что-то я так и не понял, при чём тут "БЛК" ?
Изначально это вЫходной сигнал из КД. И активен только когда происходит обращение к КД.
Или он используется как CS для памяти?
Тогда отделение диодом не поможет, т.к. диод должен позволять схеме усадить в "0" уровень на ноге CS микросхемы памяти.
Поможет отделить от схемы только транзистор и управляемый инверсным сигналом CS, т.е. открываемый "1"-ей.

electroscat
28.05.2020, 11:29
Или он используется как CS для памяти?

Да, именно так, в схеме комбодевайса CS сидит на БЛК.


Тогда отделение диодом не поможет, т.к. диод должен позволять схеме усадить в "0" уровень на ноге CS микросхемы памяти.
Поможет отделить от схемы только транзистор и управляемый инверсным сигналом CS, т.е. открываемый "1"-ей.

Да, я с этим смирился уже, причем, даже когда я отделил БЛК от CS, тоже ничего как следует не заработало минимальными (элементарными) способами. Решил таки влепить еще DS1210 в схему, вариант самый простой и самый надежный из всех, осталось только провести испытания на "соплях", и переразвести плату.


Проблема решена, распаял на плате сзади супервайзер DS1210, все идеально, питание отключается, включается, сутки стояло без питания, ошибок на диске не появляется, информация на обоих квазидисках сохраняется прекрасно, по поводу длительности хранения, теоретически - батарея CR2032 - в среднем 75 mah а потребление памяти и супервайзера по документам (K6T4008C1C-DB70) - 20 мка + (DS1210) 1 мка. То есть около 35 000 часов, приблизительно 8 лет.

Improver
29.05.2020, 10:51
По-быстрому прикинул схему КД на два диска, на K6T4008C1B, в основном с целью её дальнейшего использования в другом проекте (https://zx-pk.ru/threads/31273-graficheskaya-plata-vektora.html?p=1065407&viewfull=1#post1065407), но при желании можно попробовать и реализовать "в железе":

https://s8.hostingkartinok.com/uploads/thumbs/2020/05/db8a5cc665eada92d765012a0e494b2f.png (https://hostingkartinok.com/show-image.php?id=db8a5cc665eada92d765012a0e494b2f)

Диски должны откликаться на 10h и 11h портах, одновременная работа двух дисков невозможна, при обращении к одному диску второй будет автоматически отключатся. Для поддержания сигнала CS питание от батарейки, кроме памяти, подаётся на м/с D6 (74HC00 или К1564ЛА3).

Плату не разводил, в архиве схема в протеусе и картинка: 72750

crackintosh
30.05.2020, 19:17
Вопрос... А есть современные CMOS RAM Российского производства с объёмом 64 128 256 512 K ?

electroscat
31.05.2020, 01:59
Вопрос... А есть современные CMOS RAM Российского производства с объёмом 64 128 256 512 K ?

:)

Современные, это года этак 1996.. Я самые поздние микросхемы находил 1996 года. Чтобы мульты снимать о достижениях оборонного комплекса микросхемы делать не нужно,.. зачем ?!?
Не удивлюсь, если Белоруссия что то производит, по крайней мере советскую логику 1533 серии делает до сих пор, правда называются микросхемы по западным стандартам.

crackintosh
31.05.2020, 08:41
Нашел. Потолок это КР537РУ14 - 4K
Ужасть!

electroscat
31.05.2020, 18:14
Нашел. Потолок это КР537РУ14 - 4K
Ужасть!

4 килобита...

Как и предпологал, Белорусь производит КМОП озу статического типа, можно заказывать. До 2 килобайт обьемом. Вот ссылка на прайс (https://integral.by/ru/products/ozu-staticheskogo-tipa-kmop). И еще много чего интересного есть.
Даже КМОП аналог Z80 делают КР1858ВМ3.

ivagor
01.06.2020, 07:01
Вопрос... А есть современные CMOS RAM Российского производства с объёмом 64 128 256 512 K ?
Теоретически кое-что есть (http://www.angstrem.ru/sites/default/files/angstrem_memory_2018_web.pdf), но на практике уже сложнее. Скорее всего проще будет найти старые советские 132РУ10 или 537РУ17, хотя еще намного проще купить зарубежные более емкие микросхемы sram.

KTSerg
01.06.2020, 07:02
...
Даже КМОП аналог Z80 делают КР1858ВМ3.
Только не совсем понятно, зачем он им сейчас нужен.
Или он использовался в каких-то промышленных контроллерах?

ivagor
01.06.2020, 07:02
Тут (https://arbatex.ru/catalog/mikroskhemy1/mikroskhemy/4912/) вроде есть белорусские 537РУ17 94 года и какие-то 91 года

Improver
01.06.2020, 09:12
Со статической памятью и в годы разработки Вектора были проблемы -- статическая память была дороже и имела на порядок меньшие объёмы, чем динамическая. Но вот случайно нашёл такую инфу: 1645РУ1У -- ОЗУ статическое на 1 Мбит (128Кх8) (https://ic.milandr.ru/products/mikroskhemy_pamyati/operativnye_zapominayushchie_ustroystva/1645ru1u/), 1645РУ3У -- ОЗУ статическое на 4 Мбит (256Кх16) (https://ic.milandr.ru/products/mikroskhemy_pamyati/operativnye_zapominayushchie_ustroystva/1645ru3u/), 1645РУ4У -- ОЗУ статическое на 16 Мбит (1Mх16) (https://ic.milandr.ru/products/mikroskhemy_pamyati/operativnye_zapominayushchie_ustroystva/1645ru4u/), есть и другие варианты (https://ic.milandr.ru/products/mikroskhemy_pamyati/operativnye_zapominayushchie_ustroystva/)... И ещё, в статье "Российские микросхемы памяти" (http://cyclowiki.org/wiki/%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B9%D1%81%D0%BA%D 0%B8%D0%B5_%D0%BC%D0%B8%D0%BA%D1%80%D0%BE%D1%81%D1 %85%D0%B5%D0%BC%D1%8B_%D0%BF%D0%B0%D0%BC%D1%8F%D1% 82%D0%B8), пишут, что есть российская флеш-память на 16 Мбит.

ivagor
02.06.2020, 05:46
С модерновыми российскими микросхемами две беды - цена и доступность. Даже сравнительно умеренные 537РУ19 стоят несколько тысяч рублей, а уж сколько запросят за 1645РУ - страшно представить и их еще надо найти где купить в розницу.

electroscat
03.06.2020, 19:41
С модерновыми российскими микросхемами две беды - цена и доступность. Даже сравнительно умеренные 537РУ19 стоят несколько тысяч рублей, а уж сколько запросят за 1645РУ - страшно представить и их еще надо найти где купить в розницу.

Думаю, это и не микросхемы в общем, это скорее возможность стырить бюджетные средства. Микросхемы сейчас только китайцы делают похоже, и белорусы немного XD .. ибо у проверенного продавана на радиорынке можно приобрести микросхемы белорусского производства из новых партий, маркированных уже на западный манер... А про русские микросхемы выпускаемые сейчас он ничего не слышал.
Прошу воспринимать это как шутку, ибо детального анализа я не делал, но в СССР по товарам на радиоынке можно было отчетливо понять, что в нашей стране делается нашим радиопромом, все, что нужно, и сейчас этот анализ работает, как мне кажется... Но это мое субьективное мнение...

ivagor
04.06.2020, 07:49
Просто для околовоенных применений особого выбора и нет, а объемы выпуска маленькие.

Improver
15.08.2020, 13:12
Сегодня, можно сказать, завершился эксперимент (https://zx-pk.ru/threads/29342-novyj-staryj-kvazidisk.html?p=1007800&viewfull=1#post1007800) по сохранению инфы на квази-диске -- после более чем полутора лет хранения данных заметил, что КД стал давать около двух-трёх десятков ошибок по команде "8", хотя большая часть инфы на диске сохранилась. Напряжение на аккумуляторе, кстати, упало до всего одного вольта и при измерении падает, в общем, он полностью разряжен. С учётом того, что он изначально был не первой свежести, считаю, это неплохой результат.
И, кстати, батарейка CR2032, на втором КД, продолжает сохранять данные, напряжение на ней сейчас 2,90В, практически без изменений за последние примерно три месяца.

UPD: Это всё-таки виноват встроенный контроллер аккумулятора, после небольшого толчка он стал выдавать 3,7В, надо его тоже будет заменить на батарейку, при случае.

crackintosh
11.10.2020, 18:33
Приветствую всех!
Никому не попадалась кассета от КД Вектора с таким содержимым?

https://i.postimg.cc/mhS5kpqB/107669931.jpg (https://postimg.cc/mhS5kpqB)

Выложите плиз WAV или BIN

ivagor
11.10.2020, 19:12
Если не путаю такая кассета поставлялась с заводским квазом и ничего уникального на ней нет.

crackintosh
11.10.2020, 19:37
ага. а есть где-то копия?

ivagor
11.10.2020, 19:44
Можно эти программы собрать, перевести в форматы ROM и DOS и будет копия. Кажется у Vector-USERа эти программы даже собраны на одном из образов дисков, я не на 100% уверен но близко к тому.

KTSerg
11.10.2020, 21:48
Приветствую всех!
Никому не попадалась кассета от КД Вектора с таким содержимым?
...
Выложите плиз WAV или BIN
Есть такие файлы.
Не все названия смог рассмотреть, но очень похоже.
А что конкретно нужно?
Или вот прям именно всё в такой комплектации?

Только файл wsmsos.ovr - пока не вижу.

crackintosh
11.10.2020, 23:52
Названия файлов могут совпадать. Но содержимое может быть разное.

Improver
19.11.2021, 11:16
Без особой на то необходимости решил пересобрать свой квази-диск на новой плате, и заодно слегка улучшил схему, а именно:
- убрал ненужное сопротивление подтяжки сигнала БЛК к +5В -- это сопротивление и так есть в схемах и первого, и второго Вектора.
- переделал индикатор обращения к КД, теперь светодиод загорается только во время обращения к КД, как к стеку. До этого в МДОСе он горел практически постоянно, т.к. система работает с КД в режиме замены ОЗУ.

Была ещё идея совсем убрать буфер Д4, т.к. там, в отличие от схем на РУ5 и РУ7, на ШАП вешается всего-то два корпуса ОЗУ и один регистр, но всё-таки решил его оставить. По большому счёту, если захочется, вместо него на плате можно просто впаять восемь перемычек.

В итоге, вот актуальная схема КД:

https://s1.hostingkartinok.com/uploads/thumbs/2021/10/1ee2bd19664ac4068b23edc55c106c6a.png (https://hostingkartinok.com/show-image.php?id=1ee2bd19664ac4068b23edc55c106c6a)

Это что касается схемы... А вот изменения в разводке платы были более грандиозны:
- добавил штатное крепление для батарейки CR2032
- заменил джамперы на переключатели
- добавил конденсаторов, теперь они на каждую микросхему, для надёжности.
- разъём для ВУ перенёс в середину платы, что сделало конструкцию более компактной в присоединённом к Вектору состоянии:
76461 76462Подключённый к Вектору КД (расстояние от нижнего края платы до поверхности стола около 5 мм):
76464

Новый КД в сборе с контроллером НЖМД и старым вариантом:
76465 76463

Вид на подключённую сборку с другого ракурса:
76466
В общем, теперь убирая Вектор на полку, можно не снимать с него квази-диск. :)

Тестирование КД на первом Векторе проблем не выявило, архив со схемой и разводкой платы в протеусе, а также гербер-архивом для изготовления: 76467
Заказать новую плату меня сподвигло появление нового китайского изготовителя, который довольно агрессивно решил войти на рынок -- предлагал всем совершенно бесплатно изготовить платы размером до 100*150 мм и также бесплатно выслать их через DHL. Я поддался на эту акцию, но только доставку выбрал обычную, не DHL, за что и поплатился -- ждал посылку более 3 (трёх!) месяцев. Они, конечно, слали извинительные письма, что по ошибке отправили посылки через Индию и обещали больше так не делать, но ещё что-то у них заказывать пока что желания нет, хотя по качеству изготовления их платы на высоте. Может и закажу что-нибудь ещё, не срочное... :)

Если кому-нибудь понадобится, вот ссылка (реферальная) на их сайт (https://www.allpcb.com?Mb_InviteId=79486). Не уверен, что акция по бесплатному изготовлению плат у них ещё действует, но может кого-нибудь заинтересует, как альтернатива.

KTSerg
21.11.2021, 06:41
А я уже не помню обсуждение, на .02-ом этот вариант работает?
Я к тому, что вроде и в этом КД и в Комбодевайсе используется SRAM, может просто схемы сравнить... и получится выявить проблему Комбодевайса при использовании с .02-ым Вектором ?
Или в них принципиально разные ОЗУ используются, я что-то не сравнил даташиты...

Improver
21.11.2021, 12:50
на .02-ом этот вариант работает?Чисто теоретически, должен работать и с 02-м, как работал кишинёвский КД, но интересно было бы проверить это на практике. К сожалению, у меня нет 02-го Вектора, проверить не на чем. С другой стороны, я не помню статей в Вектор-Юзер, или в других изданиях тех лет, где бы упоминалась несовместимость КД, может надо снова пролистать подшивки... :)


Или в них принципиально разные ОЗУ используются, я что-то не сравнил даташиты...Принципиальных отличий в работе нет, немного отличается только режим сна, да и объём чипа. Если у комбодевайса есть несовместимость, то не в SRAM.

KTSerg
21.11.2021, 19:25
... С другой стороны, я не помню статей в Вектор-Юзер, или в других изданиях тех лет, где бы упоминалась несовместимость КД, может надо снова пролистать подшивки... :)
...
Не совсем понял о какой "несовместимости КД" может идти речь в Вектор-Юзере ?
Заводские КД стабильно работали и на простом Векторе и на .02-ом.
Причём заводские (кишинёвские) КД были как минимум в 3-ёх (так на вскидку) вариантах (если не брать в расчёт сторонние разработки) : две разные разводки на квадратных платах и один КД совмещенный с контроллером дисковода. И всем было без разницы к какому Вектору они подключены.

Improver
21.11.2021, 20:12
Не совсем понял о какой "несовместимости КД" может идти речь в Вектор-Юзере ?
Заводские КД стабильно работали и на простом Векторе и на .02-ом.Вот и я о том же -- тогда, вроде, не было отличий в работе КД с разными версиями Вектора.

Improver
21.12.2021, 12:43
Тут (https://zx-pk.ru/threads/29342-novyj-staryj-kvazidisk.html?p=990827&viewfull=1#post990827) и тут (https://zx-pk.ru/threads/29342-novyj-staryj-kvazidisk.html?p=990876&viewfull=1#post990876) была ранее опубликована программка-запускалка системы с КД при отсутствии данной функции в ПЗУ Вектора, сделал новую версию, вот архив (с исходниками): 76699

Изменения в BOOTKD:
- Теперь файл "OS.COM" не обязательно должен быть первым в списке файлов, программа ищет по всем записям на КД.
- Сокращён размер программы на 10 байт.
- Увеличена скорость загрузки системы примерно в 2,75 раза (хотя она и так была почти мгновенной).

Теперь думаю добавить эти улучшения в прошивку загрузчика Вектора.

ivagor
21.12.2021, 18:16
Сначала хотел только убрать самомодификацию с прицелом на пзушный вариант, но потом несколько увлекся.

megov
04.02.2022, 02:15
Здравствуйте, коллеги!

Намедни получил плату КД от Improverа, за что ему огромное спасибо, и, поскольку пока нужных SRAM нет, зато есть 64 корпуса удивительных NEC 41256L-12
в не менее удивительных 18 пиновых SOJах с 4х сторонним расположением выводов, сижу читаю доки по имеющимся КД. Но так как Вектором не занимался четверть века,
то в голове каша, посему есть вопросы, поправьте, если я где-то ошибаюсь:
- Кишиневский КД это "типа оригинальный" на 4х банках РУ5 и РЕ3 (тут то я себе Burn_RT и собрал :v2_dizzy_punk:), даже у меня такой самодельный когда-то был, но затерялся.
Поскольку в РУ5 8 бит мультиплексированного адреса, никаких телодвижений для рефреша не требуется, 8 бит и /RAS снимаются с ВУ как и для основной памяти.
Не требуются новые сигналы на ВУ и замена D36.
- Омский КД версии 2, одна банка РУ7/41256, нет РЕ3, но надо выводить на ВУ MX2 и REFRESH. Я пока не понял, требуется ли коррекция диаграмм в D36(D37?) в Векторе.
- ERAM. Дорого, богато, до 2Mb, но можно начать и с одной линейки РУ7/41246. РT4 есть, но не пугает. Но тоже надо выводить сигналы и еще и РЕ3 корректировать/менять.
Также есть упоминания о неработоспособности совместно с адаптером Z80 (а это тоже весьма мифические звери). Программная поддержка за пределами в 256K под вопросом.
- Понятно, что с SRAM сейчас и проще и дешевле, но откуплено было именно 41256 ;)

Вопрос1: Я ничего в кратком изложении не пропустил?
Вопрос2: Какая схема лучше для исполнения на одной линейке 41256? Разводка будет красивой и в "мини юбке" с TSOP/SO/SOJ и 0805.
Вопрос3: Насколько нужны и востребованы доработки Баркаря? Я в них пока не разбирался совсем.
Вопрос4: (Который давно гложет!) Во всех вариантах ОЗУ Вектора используются чипы с раздельными DI/DO. При сопряжении таких чипов с 2направленной шиной должен
ставиться буфер, отсекающий DO от общей шины, как D28 в основном ОЗУ. Для чипов с организацией >x1 как правило он и так есть, управляемый по !OE.
Почти аналогичную функцию выполняют 589АП26 в Кишиневском КД или выходной ВА86 в Омском. Но это означает, что в КД чипы памяти с совмещенными DI/DQ,
а такие почти все, начиная с организации x4, вообще не нуждаются в буферах (кроме ситуаций, где тупо нужна нагрузочная способность, как коэффициент нагрузки по выходу).
Это как раз есть в схемах коллеги Improverа, где SRAM напрямую нагружена на ШД и в ERAM, где DI/DO замкнуты, как на SIMM30 и тоже нагружены напрямую на ШД.
Но в основной схеме Вектора это не совсем так - шифтеры видео получают данные до выходных буферов, прямо с DO. Понятно, что на этом участке конфликтов
доступа не будет никогда - передача однонаправлена с DO на входы ИР13. Но есть желание заменить массив РУ6 на пару корпусов DRAM с организацией x16 и
отдельными !UCAS/!LCAS заведя как раз стробы 2х линеек на 1 чип. Но тут как раз на чипах двунаправленная ШД уже есть, и отдавать !OE на откуп !MEMRD нельзя,
тогда шифтеры не вычитают пиксели.

Если есть время и желание, прокомментируйте, пожалуйста, измышления "векториста второго призыва" :v2_dizzy_indy:

Improver
04.02.2022, 08:16
Здравствуй, megov.


Вопрос1: Я ничего в кратком изложении не пропустил?Вроде, всё верно...


Вопрос2: Какая схема лучше для исполнения на одной линейке 41256? Разводка будет красивой и в "мини юбке" с TSOP/SO/SOJ и 0805.Думаю, сама схема не столь важна, она может даже быть полностью своей, оригинальной и рисоваться в зависимости от того, какие микрухи есть в наличии, но она должна иметь такое же управление, как кишинёвская схема КД. Если будет там учтена доработка Баркаря -- только плюс. А если делать что-то отличное, например тот же ERAM, то попадёшь в ситуацию, когда есть устройство, но нет под него программ. Хотя, ERAM в минимальной конфигурации на 256кб повторяет управление кишинёвского КД, дальнейшее его расширение, фактически, теряет смысл. И ещё, по нынешним временам, в новых схемах крайне желательно избегать доработок самого Вектора под работу с КД...


Вопрос3: Насколько нужны и востребованы доработки Баркаря? Я в них пока не разбирался совсем.Не особо. Есть несколько ДОСов и программ, её использующих, возможно, некоторые демки, но она не обязательна. Хотя и не сложна, поддерживается эмуляторами, комбодевайсом и даёт некоторые преимущества для написания новых программ. В общем, если есть возможность -- лучше сделать.


Вопрос4: (Который давно гложет!) Во всех вариантах ОЗУ Вектора используются чипы с раздельными DI/DO. <...>Это, думаю, просто устаревшие технологии организации памяти, как выходы с открытым коллектором, которые в современной логике заменяются на выходы с тремя состояниями. С другой стороны, есть ситуации, когда разделение входов и выходов обязательно, например, в подключении к155ру2 Вектора.

megov
04.10.2023, 02:07
Здравствуйте, коллега Improver, отсутствовал я долго, но начал сегодня собирать Ваш кваз версии 14. Продвигается нормально, но уже есть вопросы, которые хотелось бы обсудить. Возможно я отстал и уже есть более свежая разводка, но я буду говорить про ту, что у меня. Критику, пожалуйста, примите конструктивно, это просто "заметки случайного сборщика", и они относятся только к версии 14.
1. Очень плохо разведены полигоны земли на обратной стороне. Они во многих местах обтекают выводы DIP микросхем с зазором 0.2-0.3 на глаз. Причем в тех местах, где смысла совсем нет - D10(RAM) пины 17-20 как пример. Таких мест много, и, вкупе с тонкими кольцами вокруг выводов они создают возможность замыкания в абсолютно непредсказуемых местах при неаккуратной пайке и/или повреждении маски. Я не жалуюсь на зрение и скилл, но мне было неприятно, что где-то я мог и не заметить. Хотя отмывку буду делать обязательно. Для таких вещей, например в Кикаде есть специальные посадочные места, названные с суффиксом -HandSolder-: у низ специально расширенные контакные площадки для ручной пайки.
2. Для любительской конструкции важно попытаться обеспечить вариабельность компонентов. Пример простой - нет у меня прямо сейчас низкопрофильных электролитов. Точнее есть, но SMD. А высокие 6.3x11 можно под 90 градусов уложить в позициях C12 и C13, но не C14.
3. Сейчас уже иногда сложно с through-hole компонентами. И, если блокировочников в 100n с ногами у меня сотни, то с резисторами все невесело. Это вариация пункта 2, в принципе, но можно на плате предусматривать альтернативные места под мелочевку: 0805 будут в самый раз, туда и 0603 паяется нормально.

В итоге - естественно, я девайс соберу и подниму. И всё это - мое брюзжание, так, что, не обижайтесь. Кроме пункта 1.
В любом случае получить конструктору и разработчику обратную связь всегда полезно и, иногда, приятно. :v2_dizzy_punk:

Improver
04.10.2023, 17:35
1. Очень плохо разведены полигоны земли на обратной стороне.Вполне возможно... Я могу сослаться на кривость Протеуса, но настройки заливки полигонами всё же выставлял я, и там действительно зазоры по 0,25мм и заливка площадей по максимуму. Наверно это мало для ручной пайки, но я их спаял три штуки -- пока КЗ не было. В следующий раз постараюсь учесть это и сделать лучше.


2. Для любительской конструкции важно попытаться обеспечить вариабельность компонентов.Согласен, я часто грешу тем, что проектирую платы под то, что есть у меня в наличии, а не под разные варианты исполнения деталей... А по поводу С14 -- его можно поставить меньшей ёмкости, или даже вообще не ставить, если не помещается. Три конденсатора по 100мкф там нарисовано с большим запасом.


3. Сейчас уже иногда сложно с through-hole компонентами.Да, может имеет смысл всё переделать под СМД, как были сделаны другие мои проекты после квази-диска... Если появится такая необходимость и желание.


В любом случае получить конструктору и разработчику обратную связь всегда полезно и, иногда, приятно. :v2_dizzy_punk:Согласен, и за это отдельное спасибо. :)

megov
07.10.2023, 02:32
Допаял основное. Всё серии 1533, в позиции D7 и D4 - панельки. В D7 у меня есть взятая взаймы из Пентагона 74AC273N, а вот ничего из 74ABT* точно нет. Я помню нотификацию коллеги Improverа, что там важны тайминги, ибо мы попадаем на мультиплексирование адреса для DRAM в Векторе и на повторное демультиплексирование здесь (для SRAM). Чего нет, того нет, но может тут хватит и 74F серии. И, насколько я понимаю, неважно, будет ли это инвертирующий 74*240 или такой же неинвертирующий 74*244. Они же одинаковые по цоколевке, а инверсия адресов, если она постоянна - роли не играет (*)
* - за исключением классической DRAM без собственных счетчиков авторегенерации.
ЗЫ: Отмывать буду руками с Flux-Off'ом. 100x100 не лезет в мою скромную УЗ ванну. :v2_dizzy_roll:

ЗЫ2: Кроме брюзжания по разводке в прошлом посте набрел еще на одну странность: как бы паяю всякое любительское давно, но тут столкнулся с тем, что припой (с флюсом, конечно же) очень неохотно затекает в отверстия. Как бы все нормально - припой, температура >270, флюс проверенный. Должен капиллярный эффект все это втягивать в момент. А тут как-то неохотно. Претензий, естественно, к коллеге - никаких, просто наблюдение. Пока у меня две гипотезы, возможно имеющие общее: что-то с металлизацией - плохая и припой не липнет как металл к металлу, и второе - тонкое кольцо контактной площадки vs диаметр отверстия, что, не позволяет достичь совокупного эффекта из температуры, объема припоя, смачивания и капиллярного эффекта внутри отверстия. По простому - как-то оно неохотно паяется. :/

Для примера. Это два дизайна с фронта - мое поделие и Ваш кваз:
http://ipic.su/img/img7/tn/both-front.1696631880.jpg (http://ipic.su/img/img7/fs/both-front.1696631880.jpg)

С обратной стороны:
http://ipic.su/img/img7/tn/back-both.1696632049.jpg (http://ipic.su/img/img7/fs/back-both.1696632049.jpg)

На квазе получается так:
http://ipic.su/img/img7/tn/results.1696632136.jpg (http://ipic.su/img/img7/fs/results.1696632136.jpg)

У меня были вообще грабли - от советской панельки кусками отваливалось посеребрение и оставались дикие толстые латунные ноги (отдельно запощу), которые были безжалостно зачищены надфилем и облужены. Результат:
http://ipic.su/img/img7/tn/my-bad-socket.1696632348.jpg (http://ipic.su/img/img7/fs/my-bad-socket.1696632348.jpg)

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

Но, зная хрень, которую я буду ставить в дебажные платы я делал и отверстия большего диаметра и пятаки большей площади. Пока работает, ибо куда мне два десятка таких панелек ставить. :v2_dizzy_tired2:
ЗЫ: Как я понимаю, что Вы уже поняли - не в упрёк. А в обмен мнениями, знаниями и навыками.
Спасибо, кстати за дизайн кваза на SRAM.

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

Вот такая хрень...

http://ipic.su/img/img7/tn/bad-sockets.1696635083.jpg (http://ipic.su/img/img7/fs/bad-sockets.1696635083.jpg)

Improver
07.10.2023, 08:40
megov, я уж начинаю волноваться за свою конструкцию -- фактически, я её проверял на одном единственном Векторе, вдруг на других экземплярах тайминги отличаются в худшую для схемы сторону?..


а вот ничего из 74ABT* точно нет.Тут, наверно, и F подойдёт, и даже можно вообще заменить D4 перемычками. По идее, в схеме КД это был буфер для множества чипов памяти, но тут всего-то их два, плюс защёлка адреса.