Ну какое там авторство - сравнить исходники для 64 и 128 и по аналогии сделать для 32 и 16... Не особенно вникая в смысл :-)
Они у меня на работе - завтра вечером (если не забуду скопировать) выложу...
Вид для печати
Отчет о проделанных действиях для TheAbcs (простите, если неудачно выразился в предыдущем обращении). Если бы у меня заработала сразу МАХ232, то я этой ерундой и не занимался бы. Итак, первые включения - и ничего на терминале. Поскольку уже читал про сброс, то прицепил к Q вход осц-фа (цифр. Rigol, старенький, 40 МГц), в ждущем режиме, по первому фронту запись. Развёртка 200 нс/дел. При напряжении питания меньше 5.1 вольт наблюдается такая фигня - при достижении уровня переключения триггер перебрасывается, а через 1.7 мкс опять возвращает Q в ноль, и так один-два раза. Эффект объясним легко, за 1,7 мкс на конденсаторе напряжение может измениться на несколько мкВольт, что недостаточно для устойчивой "идентификации" уровня. В Специалисте (курсовую ведь на нём обсчитывал!) тактовые импульсы идут по кадровому си, 20 мс, за это время напряжение на конденсаторе гарантировано проходит порог переключения. Добавление ПОС чуть ускоряет зарядку, и в моём случае этого вроде гарантировано хватает, чтобы за 1.7 мкс пройти зону неопределённости. Сброс отрабатывается и при включении, и при работе.
При напряжении 5,1-5,3 вольт дребезг не наблюдался, неисповедимы пути TTL-логики.
После запайки 36 кОм вылезли проблемы МАХ232... Эта история описана выше.
Схема аюши так удачно скомпонована, что нет свободных вентилей 2ИЛИ(-НЕ). Если добавить, и еще добавить 2 диода, то можно сделать защелку на вход D. Или ставить триггер Шмидта между конденсатором и входом D. Но это если кому интересно.
И по номиналам. Да, у меня всё как в оригинальной схеме, 13 кОм и 100 мкФ.
https://habr.com/ru/post/254869/ вот тут что-то подобное описано, что похоже на "звон" ТМ2, с названием "метастабильность"...
Конечно, если бы на тактовый вход ТМ2 подавать более низкий по частоте сигнал (как в Специалисте, а не полтора мегагерца), то подобной метастабильности и не было бы. Но нет такой част...
Такблин! Есть такая "частота" ;), 14 вывод Атмеги, содержащий ТВ-синхроимпульсы! Изврат ещё тот, конечно, да и не у всех сразу в наличии атмега есть, но попробовать можно
Кстати, завтра платы будут у меня, начну проверять ваянием тестового экземпляра.
Опять обращаюсь за помощью.
Флэш-диск трансенд в системе не увиделся, увы. Поставил HDD IDE 2GB Seagate. Форматирование отработало! Скрин консоли: https://cloud.mail.ru/public/3nve/2yLhEZ2Po
Загрузил три системных файла, выполнил G5000, вроде всё О.К!, но CP/M не запускается, после ввода Y вываливается в монитор: https://cloud.mail.ru/public/4rQm/VSyMrfh1C
Где косячу?
Точно на него питание на 20 ногу подавалось?
Проверять цепь отключения ПЗУ:
- кратковременный "0" на 4-D6;
- кратковременный "0" на 6-D8.2;
- переключение RS-триггера D14.1 ("1" на 5-D14.1 в режиме CP/М);
- постоянный "1" для режима СР/М на 8-D8.3.
У мну подозрение на Вашу ТМ2 - попробуйте входы /С и D подтянуть к плюсу. Мож поэтому она не переключается.
А, ну и порядок загрузки системных файлов в память играет роль. биос должен быть вторым, чтобы затереть нулевую таблицу оси.
Порядок действий понял, буду проверять.
А флэш-диск с отдельным проводом питания и разъёмом на 5 вольт. В Большом ПК он видится и работает.
Примерно такое же я видел и у себя, но от напряжения питания ничего особо не менялось... Мне было интересно, насколько это "микросхемозависимо". Похоже, эффект характерен для большинства ТМ2 разных серий. На Специалисте, кстати, кроме околокадровой частоты стробирование идет еще и от одной из процессорных фаз (смотрел схему стандартного Специалиста), так что эффект может проявляться и там, но вероятность его низка...
Как обещал, выкладываю поправленные файлы для 16 и 32МБ компакт-флеш под 2 и 4 диска. Поскольку я правил 128МБ версию, объем последнего диска (2-го и 4-го соответственно) получился небольшим - около 2МБ. Если аналогично поправить 64МБ версию, можно получить 5МБ. Ну или надо разбираться, почему используются именно такие циферки и какие они должны быть для 16 и 32 :-)
ФОТО и разное для 16/32 CF
Поскольку глубокого понимания работы с CF у меня нет - пользоваться можете на свой страх и риск; у меня работает :-)
Сегодня немного "поизучал" CP/M :-) Сделал для себя следующие выводы:
- проблемные (местами "нечитаемые") CF нормально не работают: на 32МБ карту у меня сама СР/М встала, но файлы большинства программ нормально копироваться не захотели - DOWNLOAD, DUMP скопировались и работали, а другие увы... еще грешил на медленную запись - поменял шнурок СОМ на полный, но не помогло;
- на 16МБ флешку скопировались все желаемые файлы (отсюда CPM211FilesPkg.txt) и работали; скачал описание на СР/М - начал разбираться с ED и ASM :-)
Но 16МБ карточка у меня тоже проблемная и похоже, в процессе столь длительных экспериментов решила уйти на пенсию - в конце после загрузки СР/М перестала реагировать на клавиатуру. Но грузится и курсором мигает как положено... :-)
Если повезет, в понедельник поэкспериментирую с винтом...
С карточками следующее наблюдение:
- длинных проводов не любит;
- использует уровни 5Вольт-КМОП.
Последнее, в отличие от ТТЛ, имеет единицу, максимально приближенную по уровню к напряжению питания. ТТЛ имеет верхний уровень немного ниже, что может не хватать для CF-карты. Поэтому и использовал подтягивающие резисторы на шине данных и на управляющих сигналах. Вполне вероятно, что адрес тоже подтянуть придётся. В схеме Сирла использованы КМОП-элементы, я же немного удешевил...
Загадка... Итак, ноги ИД4 с адресами А3, А4, А5 "поднял" и завёл на +5в через 1 кОм. Ноги 2 и 14 вывел на провод. Убедился, что сигнал CS7 вырабатывается. При вставленной ПЗУ смотрю на 5D14.1 (выход Q). По сбросу - в ноль, если вручную задаю CS7, то устанавливается "1". Вроде всё правильно, процессор при работе монитора к периферии обращается, и при статическом 0 на CS7 сигнал RAM/ROM должен рано или поздно встать в 1.
Далее (!) вынимаю ПЗУ. В этом случае процессор тупо читает с ШД код FF (RST7) и начинает загонять в стэк адреса возврата. И никаких обращений к периферии быть не должно. Но 5D14.1 встаёт в 1 !!!
Если бы вааще ничего не работало, было бы яснее - ищи кз, обрыв, мс битую. Но тут монитор работает, бэйсик 2 часа считал фигню всякую, диск форматируется. Значит сигналы IORD/WR и READ/WRITE формируются и не конфликтуют. Надо посидеть "тупо глядя на блюдо", подождать озарения... Развлекуха, одним словом.
(диски, кстати пробовал 2GB, 4.3GB, 40GB - no problem, питание от АТХ, кабель старорежимный).
На выходных займусь тестовой сборкой...
rw6hrm, если есть время, ответьте на вопрос, please!
При выполнении команды Х система ждёт ответа Y. Правильно ли я понимаю, что после Y загрузчик должен отключить ПЗУ, затем в начало памяти загрузить адреса переходов по rst и прочие, а потом передать управление CP/M? Если так, то поставлю индикатор, чтобы увидеть, был ли хоть краткий переход 5D14 в 1.
Анализ ситуации привёл к таким выводам:
1. может быть неисправен по входу 5 элемент D8. Это я сегодня проверить не успел. Но это единственно, из-за чего может не проходить сигнал установки на D14, но при этом будет работать всё остальное..
2. диск как-бы форматируется, но загрузить с него данные в режиме работы (старта оси) не получается. Если это так, то буду заказывать адаптер ide-cf и карту. Как я писал выше, я проверил на нескольких дисках форматирование (везде работает) и запуск оси. Забыл ранее написать, что после ввода Y комп или виснет, или в терминале картинка как после сброса - "Press...". По разному на разных дисках, но на 5D14 ноль.
Именно так. Форматирование диска, загрузка на него софта и загрузка оси в верхнюю часть ОЗУ происходит при включённом ПЗУ. После передачи управления оси ПЗУ должно быть отключено чтобы освободить начальные адреса передаваемой в полное управление ОЗУ.
Как протестирую, будет и раздел на Барахолке (и Полигоне). Второй я тоже собирать не буду, перекину всё из первого.
То, что диск форматируется, похоже вообще ничего не значит:-)
У меня из четырех "больных" CF карточек на 16МБ и двух на 32МБ отформатировалось пять - с одной на 16 вообще система не завелась.
На каждую из пяти CP/M якобы установилась, но запустилась только с двух - одной на 32 и одной на 16...
Как бы я ожидал нечто подобное - эти карточки перестали работать в промышленном контроллере и по разному глючат в USB ридере на компе...
Ну и потом - в дальнейшем на 16МБ карточку удалось скопировать все файлы, которые мне хотелось, и какое-то время она работала... А потом перестала реагировать после загрузки CP/M на клавиатуру - устала, наверное :-)
А та, что на 32МБ - грузится, на клавиатуру реагирует, но файлы на нее загрузить практически не получается...
В общем, надо в исходники работы с дисками лезть - смотреть, что там и как... Благо есть они, и информация выложена...
Я так понимаю, на моих карточках при обращении к каким-то ячейкам (или иногда) возникает некая ошибка (или очень большая задержка - при попытке что-то сделать с ними в USB ридере на компе под ХР конкретное зависание, а потом, если дождаться, ругается на карточку)... И с обработкой ошибок (реакцией на них) под CP/M не все хорошо :-)
Иными словами - для первоначальной проверки нужен заведомо исправный носитель без проблем, лучше всего CF карта на 128МБ :-)
Платы симпатично выглядят :-) по сравнению с моей макеткой... Но смысл перекидывания непонятен - желающего спаять на плате этот комп для ее проверки найти вполне возможно, а разбирать работающего "первенца" ради этого вроде как жалко...
В этой системе вообще нет никакого слежения за целостностью диска.., ну почти нет. Скорее всего в карточке или сама флеш дохнет, или контроллер.
По плате - это она у мну первенец по сути, последний раз разводил печатки на Пикаде аж в1993 году, хочется быть уверенным, что плата норм и подлежит выходу в свет. Поэтому, пользуясь "правом первой ночи" :), одну забираю под тестовую сборку. Будем считать, что это переезд в новую квартиру :)
Можно написать свою специальную тестовую программку, которая тупо долбит в порты 38...3F, отключая ROM...
Примерно как testport.asm, она же TESTPORT.HEX
лежит где-то здесь
Загружаем TESTPORT.HEX обычным образом, запускаем G5000 и видим, что произошло переключение ROM на RAM на соответствующей ножке ТМ2.
Поскольку обратное переключение возможно только по сбросу, эта программа зацикливается и постоянно долбит в порты 38...3F.
При этом выдает надписи на экран :-)
Это в теории - железка у меня на работе, проверить не могу...
Начал распаивать плату. И от первого же косяка стало стыдно шоппц - неправильно развёл одну половину ЛА3 :confused: Четрые реза и четыре очень коротких перемычки. Продолжаю...
TheAbcs, Вы будете смеяться, но я сейчас не представляю даже, как на ПК c i7 получить код Z80/i8080... Программу написать ваще не проблема, TASM не забыл (с 90-х, однако), но последние лет 15 только PIC и mplab. Так что распаять на ТМ2 ловушку на 0 и фронт мне сейчас проще.
TESTPORT скачал, попробую позжее. У меня тоже всё на работе.
Без проблем - лишь бы этот ПК умел выполнять х86 коды и bat-файлы :-)
Здесь раньше была примерно такая ссылка - лень искать, приведу заново:
CP/M on breadboard
там можно скачать
ROM FILES AND CP/M SYSTEM FILES
Развернув архив и заглянув в _ASSEMBLE.BAT - интуитивно понимаешь, как получить код :-)
Знание TASM особо не требуется, но представление о мнемониках Z80 желательо иметь - у меня со всем этим не очень :-)
Но для мелочей хватает копи-пасте и общего представления "а что такое программирование МК"...
TheAbcsс, еще раз спасибо за архов с TASM, т.к. тестить придёться.
Запустил Вашу прогу TESTPORT, и с одной стороны, D14.5 переключается, то есть сигнал CS7 схемой отрабатывается. Как бы. Но есть два неприятных момента. Во первых, программа TESTPORT зависает, вторую строку не пишет. Во вторых, при старте CP/M, когда отвечаю Y должен переключиться ТМ2 D14, а разблокировка у него только кнопкой сброс. А при старте CP/M триггер не переключается, значит что-то со схемой.
часть2...
Ага. Пробежал по программе Монитора, особо не вчитываясь, но главное увидел - сам Монитор ПЗУ не отключает, он должен чего-то там считать с диска и передать управление оси. И только запущенная ось отключит ПЗУ. Значит, если есть косяк в программе TESTPORT (она у меня вешает комп и не выводит строку "Out ROM/RAM port 38...3F complete") то с платой всё норм, проблема с дисками. Если не найду около себя адаптер+CF, то закажу у китайцев. Пару недель перекурю, вспомню ассемблер Z80.
- - - Добавлено - - -
А если так: не выполнять команду Х, а загрузить DOWNLOAD2.HEX ??? Ну, и gFFE8...
И грузится CP/M !!!
По команде dir выводит двоеточия.
Если писать хрень в ком.строке, то система корректно говорит: "А?"
При попытке выполнить SAVE 2 DOWNLOAD.COM, через несколько секунд сообщение [no space] и опять в промте... Не нравятся аюше мои HDD...
А у меня новости - братик ожил ;) Если бы не мой косяк с разводкой ЛА3, то собирается влёт.
Фоточки:
- в тестовом включении;
- общий вид рабочей позиции вкупе с бездыханным братиком (из него в нового ушли ПЗУ, Атмега и пик);
- вид собранной платы.
Отогнутые ножки на разъёмах будут срезаться за ненадобностью. Есть недостаток с размещением разъёма светодиода активности диска, а так вроде более и ничего...
Теперь сделаю описание доделок/сборки и 9 плат уйдут на Барахолку (пять сюда и четыре на Полигон).
UPD: подновил описание на страничке одноплатного варианта с указанием всех косяков и доделок, https://vk.cc/9jgwlJ.
UPD2: платы на Барахолке, https://zx-pk.com/forum/viewtopic.php?f=7&t=13127
Докладываюсь! Привезли с утра мне IDE флэш-диск 64 Мб. Почти как у меня был, только работает с питанием по 20-ой ноге.
1. форматировал form64 со странички Гранта.
2. загрузил CPM22 + BIOS128 + PUTSYS. Система не контролирует структуру разделов на диске, главное не лезть на диски с номером выше 7
3. сохранил DOWNLOAD.COM
CPM запускается командами из монитора X -> Y. В ПЗУ нет пока ср/м загрузчика, поэтому загрузку при включении сейчас не проверю, но, как я понял, пока нет встроенного контроллера дисплея, это и не нужно.
Так что тем, кто только решил повторять конструкцию, надо иметь в виду, что нужна флэш-карта. С HDD система работать не хочет, подозреваю, что в расчете на работу с флэшем, из биоса убрали все задержки при операциях с диском. Но HDD реально тут и не нужен, зачем лишний шум и БП совсем другого уровня.
Да, так и хочется написать для RW6HRM - отличная схема, реально работающая при условии исправных деталей (что нынче наблюдается не всегда...). Спасибо!
Теперь буду осознавать, как рабочий софт на диск перекинуть, чего-то по инструкции не очень очевидно всё.
...странно. Сигейт, 40М, спокойно работает. Тут другое может быть - не каждый девайс может поддерживать режим 8-бит IDE. А блоки ожидания готовности девайса в софте присутствуют.
Правильно, биос под 64М нужно переписывать наполовину, используя исходники Сирла. Но для теста можно и "не лезть" ;)Цитата:
Система не контролирует структуру разделов на диске, главное не лезть на диски с номером выше 7
Жду вопросы ;)
Платы в продаже (адрес в предыдущем посте, также на Полигоне), кому ещё нужно...
Вот что я делаю не так?
1 на компе с терминалом открываю (например) в блокноте BBCBASIC.HEX и "копировать"
2 на AZ-80 (в окне терминала) набираю C>A:DOWNLOAD BBCBASIC.COM [enter]
3 Нажимаю shft+INS (вставить)
Начинается передача, конкретно с бэйсиком это полторы строки точек, в других файлах существенно меньше. И виснет. Независимо от длины файла. После резета имя файла, указанное в ком. строке, на диске сохраняется. Но, разумеется, ничего не работает.
Частота UCLK = 1/4 TACT = 614 кГц.
...юзер-то не выбран ;), плюс должен загружаться файл в бинарном HEX-формате...
Отвечаю.
1. Загружаем виндовую программу подготовки файлов со странички Гранта (Windows packager), ссылка ниже.
2. Загружаем в неё нужный нам файл. Затем открываем файл пакета обычным Блокнотом, смотрим в его недра (а там куча циферок) и пересохраняем куда нам надо со своим названием с расширением .txt
3. В терминале (для примера виндовский Гипертерминал) выбираем "Передача - Отправить текстовый файл"
4. Поскольку в заголовке файла уже есть и выбранный юзер, и путь, и название, то он самостоятельно начинает загружаться в бинарном виде, показывая своё состояние точечками.
http://searle.hostei.com/grant/cpm/i...ngApplications
Не рекомендую кидать в пакет сразу кучу файлов, хотя это и возможно. Пока компик отрабатывает обсчёт целостности файла, уходит время, и начало следующего файла съедается. Поэтому накидать можно, даже целой папкой, но потом разнести всё по отдельным текстовичкам.
Хинт: поскольку путь к программе загрузки стандартный, то можно грузить файлы сразу в ту директорию, что нам нужно. К примеру, переходим в В:, и после этого загружаем текстовый файл, который останется в этой директории, не засоряя директорию А:.
Чуть позже попробую разобраться с QTERM'ом, с ним будет проще...
Ага, вот оно как! Попробовал из файла CPM211FilesPkg.txt закачать редактор ED.COM. Работает. Кстати, через shft+INS тоже грузится.
Значит, надо найти в сборниках файл для CP/M в бинарном виде и перевести его в бинарный-HEX. Придётся внимательно просмотреть форум, где-то были ссылки на репозитарии.
И поделюсь опытом (печальным) подключения HDD-шников. Наковырял по углам полтора десятка дисков разных производителей ёмкостью от 2 Gb до 40 Gb. Они все проходят форматирование и перенос системы на диск. После выкл/вкл системы (чтобы точно в памяти был мусор) по команде X-Y экран очищается, сверху появляется приветственная строка CP/M, но на А> не выходит, виснет. D14 в положение "откл ПЗУ", как и надо.
В связи с отсутствием интереса на Полигоне остатки плат переехали на Барахолку. Либо, если кто там не зареген, обращайтесь в личку или в почту.
Вот он, недостаток копи-пасте :-)
Там при выводе строки используется RST 8, обработка которого в ПЗУ, естественно. Отключаем ПЗУ - получаем непонятно что при попытке вывода строки.
Программу поправил - ради интереса, конечно, - теперь копирую ПЗУ в ОЗУ, отключаю ПЗУ и копирую из ОЗУ по адресам ПЗУ. И все работает. Заодно ОЗУ косвенно проверяется :-)
А вот почему не работает ВВ55 у меня - это выше моего понимания :-(
Пробовал наш и еще два импортных 5МГц - примитивно настраиваю все каналы на вывод и выдаю туда инкремент аккумулятора... И оно не работает...
Все линии прозвонил - никакого криминала не нашел, все правильно... Не мой день сегодня :-)
TheAbcs, даже в недоделанном виде TESTPORT у меня свою функцию выполнила - показала исправность всей цепи переключения D14.
По ВВ55 в ближайшее время подсобить нечем, он у меня пока не установлен. Буду заниматься поиском ПО, есть бестолковое желание найти комплект программ, похожий на тот, который давным-давно был на profi. На всё времени не хватает. Но с ВВ55, вспоминая 90-ые, согласен, что фигня какая-то. Ставились эти порты в Специалисте, Profi, на Ленинград расширенный даже приспосабливали, и не парились, главное - адресацию в проге не напутать.
По поводу ВВ55 позвлю себе очень ехидный вопрос: случайно выводы 8 и 9 не перепутаны местами?
Как бы первой идеей было, что я "перевернул" шину данных - проверил, нет. Потом проверил адреса. Потом все управляющие...
Потом идеи закончились, поэтому проверил все из перечисленного неоднократно - тестером и осциллом :-)
Потом "взял" второй луч осцилла и стал смотреть, что реально по каким портам приходит в ВВ55...
Потом взял другой 55, потом третий... Потом посмотрел на программку, которой я проверял 55-е на хх86 контроллере...
Размышлял над временными диаграммами, и они мне не нравились, пока не осознал, что ВВ51 работает :-)
Наконец все это меня утомило, и я решил сделать перерыв :-)
Если что - писал 80H в 33H, а потом инкремент аккумулятора в 30H, 31H и 32H в цикле...
Сейчас надеюсь, что все три разнотипных 55-х одинаково неисправны :-) , поэтому не спешу найти альтернативный способ их проверки...
Когда-то давно подключал ВВ55 к Ленинграду-1 - все работало (программатором ПЗУ, в основном...)
Ну не знаю... вот кусок проги на БиБиСиБарсике - мигает светодиодиком на ура на первой ножке первого порта (который А, 49 - второй порт В, 50 - третий порт С). 51 порт - управление.
Адресация десятичнаяКод:10 PUT 51,128
20 PUT 48,1:GOSUB 100
30 PUT 48,0:GOSUB 100
40 GOTO20
100 FOR I=0 TO 100:NEXT I
110 RETURN
Для ПЗУшного МСБ PUT заменить на OUT.
Вспомнил о "тестовой" программе на Бейсике из книги "Персональный компьютер БК-0010 - БК011м", выпуск 1'93, стр. 125-128. Набрал, запустил. С кварцем 9.8 МГц (4.9 МГц тактовой Z80) получил результат 23 секунды. Напоминаю, что Аюша-6502 с тактовой 1 МГц уложился в 44 секунды.
Пришёл с Китая Atmega328P... А шить его нечем... Раньше как то не заморачивался, 8-ую шил через "5 проводов", а 328 - нет! Пробежал по просторам интернета, и то-ли ничего не понял, то-ли правда без Ардуины не прошить. А чем его шьют те, у кого уже есть рабочая Аюша? Хотелось бы простое одноразовое чудо, прошить и выкинуть, работать с AVR не собираюсь, вполне хватает PIC-ов.
- - - Добавлено - - -
Насчёт одноразового не знаю. Обычно использую программатор USBasp. На Али стоит 1 доллар поэтому всякими самоделками не заморачиваюсь. Либо делать простой программатор Громова через Com разъем ( если он есть) Сам такой не делал поэтому тонкостей не знаю.
Как вариант прогуляться по городу, зайти в пару салонов по ремонту сотовых или по чип-тюнингу автомобилей. Однозначно там может находиться олдскульный маньяк с программатором типа TL866... ;) Только обязательно показать ему картинки с этого топика, где мы фьюзы обсуждали.
Shumadan, просмотрел на Али пару листов с UsbAsp, что смутило - в спецификациях нет (!?) 328/328P! Если UsbAsp шьёт 328, то подожду 2 недели посылки с Китая, а панелька с кварцем есть под Atmel.
Не получится, пойду "гулять по городу", хоть это и нарушит принцип "сам, всё сам"...
Всем спасибо!
Все там есть, а уж 328, которые используются в каждой второй ардуине - и подавно.
Шьёт, зависит от программы. Я через progisp 1.72 шил, только отключал проверку id чипа. Ещё можно попробовать khazama. Подписанный драйвер можно взять здесь: https://zadig.akeo.ie .