Pull to refresh

Comments 63

1. Взвести счетчик попыток (СП) на 90;
2. Выставить CS в лог.1 и отправить 10 раз FF;


Насколько мне известно, там несколько сложнее:
image

При посылке команды некоторые карты не готовы получать команды одну за другой и пропускают первую посылку по spi (что ломает команду). Уж не знаю, я так неправильно сделал или это штатная особенность карт, но сейчас я перед командой шлю 0xff.
Весь алгоритм, который Вы привели в блок схеме реализован. Именно, почти 1:1, единственное отличие, я выкинул 3ю ветку (CMD1). То есть SD карты поддерживаются любые, и ver.1 и ver.2 c байтным адресом (SDSC), и ver.2 с блочным адресом (SDHC). Единственная неподдерживаемая карта — MMC. Кстати при работе с картами, автоматически определяется тип адресации, и подпрограмма сама транслирует адрес, методом умножения на 0x200. Пользовательским программам и OS об этом думать не надо.
А ещё, можно поставить минимальную EPM7032 и тогда на плате останутся только 3 корпуса: ОЗУ, ПЗУ и CPLD. И внутри CPLD сделать уже аппаратный SPI, что дополнительно ускорит и упростит/сократит программу.
Афтор же хотел делать на православных советских DIP, о чем особо подчеркнул вначале.
Ну DIP так DIP.
image

Зачем останавливаться на полумерах то? Хотя, о чём это я, там не такие объёмы, чтобы было оправдано делать аппаратный SPI, программный ногодрыг вполне оправдан.
Это что, для Сеги? В боковой разъём для CD-привода?
Да, был такой проект лет 15 назад. Пришёл на смену проекту с диском. Нынче уже лет 10 как не актуальный.
А вот первый вариант был ногодрыгным
image

И было там всё очень печально…
О, давно это было, ностальгия. Где то в гараже еще валяются несколько штук, но гараж в Грузии, давно туда не ездил. Сгнило наверное всё.
Тогда других микросхем и не найти было. Сегодня ведь проблем нет?
Даже тогда этот девайс я переделал полностью, в том числе переписал БИОС на 4К: ОЗУ 48К, ПЗУ 4К, внешнее ОЗУ 128К, 5 дюймовый диск, операционка СРМ, программатор ПЗУ.
Принтер уже не доделал, т.к. перешел на Х86 платформу.
ПО я писал в ассемблере для данного проца. Зачем автор статьи это делает в ручную?
Правда пришлось ОЗУ до 48К увеличить, иначе с исходником БИОС памяти уже не хватало!
ПО я писал в ассемблере для данного проца. Зачем автор статьи это делает в ручную?
Это я еще не освоился. Поэтому забуксовал именно на этом этапе. Сейчас уже набил руку, использую и онлайн ассемблер, и уже свои инструменты. Через 3-4 дня будет новая «глава», статья.
Потом дело будет за операционкой.
Согласен, можно сделать. Как вариант. Но я делал из того, что у меня было. И возможно еще буду не раз переделывать, а этот макет нужен прежде всего для отработки алгоритмов и написания OS.
Ну и если посмотреть на цены, то обычная логика выходит дешевле, и ее шить не надо.
В CPLD только аппаратный SPI привлекает, но не знаю нужен ли он.
А так ли нужна эта плата стабилитронов? Для передачи сигнала на выводы SD можно использовать микросхемы с выходами ОК, подтянутыми 10к к +3,3В.
Это пока временный вариант, и поэтому он вынесен как внешняя платка.

Вариант со стабилитронами вполне нормальный для преобразования сигналов 5в в 3.3в. В обратную сторону, кстати, совершенно законно подавать сигнал с лог.1 в 3.3 вольта на вход ТТЛ-микросхемы и никаких компараторов не нужно. Пороговый уровень для лог.1 у ТТЛ-микросхемы составляет 2.4в, что меньше, чем выдаваемые карточкой 3.3 вольта.

Я тоже так думаю. Вариантов конечно много.
В дальнейшем, надо посмотреть, что надежнее.
А чего не использовали родной интерфейс SDIO?
По сравнению с ним, SPI тормозит ужасно…
Теперь просыпаемся и видим, что речь здесь идет про Радио-86РК с процом ВМ80 на частоте 1,77 МГц с 32 Килобайтами оперативы. И понимает, что хорошо, если данная конфигурация умеет хотя-бы раз в секунду текст на экране обновлять. И объемы «прокачки» данных с SD-карты редко когда превышают 32 килобайта.
Поэтому, несомненно, здесь все упирается в тормозной SPI, и надо делать обязательно SDIO.
А, точно! Слона-то я и не заметил image
тормозной SPI

Кстати, главным тормозом оказалась микроша. Программный SPI работает на частоте около 35 кГц. А из-за циклов ПДП случались глюки, но мне пришлось развернуть пару циклов, и теперь все работает.
Для SDIO надо считать CRC, 1533 серией уже не обойтись.
ПЭВМ была замечательная, но вместе с тем и заставила меня пострадать, из-за почти-несовместимости с Радио-86РК. Еще помню поразило, что в составе было 4 грамма золота…
Сочувствую Вашим страданиям :)
Но на самом деле программы весьма легко адаптировались. Для этого в комплекте были редактор, ассемблер и дисассемблер. Там надо было поправлять адреса обращения к периферии. Я писал на бейсике автоматические «адаптаторы» в то время.
На самом деле разница между ними мизерная, с аппаратной точки зрения.
Я 3 года выпускал и тот и другой. В сумме больше 600 штук! давал год гарантии.
У меня самого были мечты собрать Радио-86РК, но не было опыта будучи школьником.
а ассемблела под ВМ80 нет?
а то в кодах это жеж не удобно совсем…
ps: огромная работа, спасибо за статью )
ждём продолжения, особенно когда поднимется MicrOS =)
а ассемблела под ВМ80 нет?
Вообще есть. Но я уже буду выбирать, чем пользоваться, когда прошью ПЗУ. Сейчас заказал брату, заехать ко мне на работу и взять ноутбук IBM ThinkPad 760. На нем есть LPT. Но, пока не знаю, работает ли этот бук…
ждём продолжения, особенно когда поднимется MicrOS =)

Спасибо! Еще много запланировано.
Нашел баг в ассемблере. Можно написать STAX H. И он не будет ругаться, а установит код 0x22…
рекомендую облегчить себе жизнь на этапе отладки. В свое время я использовал микросхему статической памяти 537РУ2(если не изменяет склероз!30 лет прошло), которая по ногам абсолютно совпадает с РФ2, надо только напряжения программирования отключить, чтобы не сжечь его. Сделал небольшой переходник, с 2-мя часовыми батарейками на борту. Не надо тратить время на стирание УФ микросхемы. Я его пихал в программатор для РФ, загружал код и пробовал.
Когда охота пуще неволи называется. Посмотрел на количество проводков… респект и уважение Вам и Вашему терпению.
Жаль только, что сколько бы не пытался, из шестерки Жигулей Мерседес не сделаешь. Просто, и у меня это есть, то что в детстве не доделано, какие-то детские мечты, мозг требует их воплотить. Сделаешь и можешь жить дальше.
Сам вот вчера плёнку для лазерника купил, буду печатать на фольге трафареты, переносить на текстолит, травить, в общем ЛУТ… лет пять с этим в голове жил, теперь сдвинул с мертвой точки мечты.
Просто, и у меня это есть, то что в детстве не доделано, какие-то детские мечты, мозг требует их воплотить. Сделаешь и можешь жить дальше.
Cогласен. И это очень приятно.
Сам вот вчера плёнку для лазерника купил, буду печатать на фольге трафареты, переносить на текстолит, травить, в общем ЛУТ… лет пять с этим в голове жил, теперь сдвинул с мертвой точки мечты.
Я ЛУТить не могу, да и не хочу. Вообще все подобные работы перенес давно на работу, там есть возможность подобное делать. Но сейчас другие условия. Делаю из того, что есть и тем, что есть.
Конечно я планирую потом все переделать, и плату человеческую с зеленкой заказать, и корпус на 3d принтере сделать, но это все потом. Пока концепция.
Так же на карантине не выдержал и впервые в жизни вместо того, что бы разводить,
распаял МГТФ =) просто куча удовольствия, особенно когда всё запустилось )
ПЗУшка для Апогея топчек


ПЗУшка для Апогея батомчек


Апогеюшка с ПЗУшкой =)

Схемкой не поделитесь? Это под загрузку командой монитора?
да, это по ссылке, если будете собирать, то там несколько вариантов ROM, нужно искать тот, что под вашу схему (я несколько часов убил, пока понял, что для разных микросхем прошивки отличаются), а так, что удобно собирается за 2-3 часа при наличии инструментов.
…просто куча удовольствия, особенно когда всё запустилось )

Согласен! Ради этого удовольствия все и делается.
Какой-нибудь бы аппаратный SPI прикрутить, так программно долго его колупать ВМ80 будет
Все 32кБ, заливаются за 11 сек. Средняя игра весит 8кБ.
С «магнитофона» в 7 раз дольше.
Можно сделать аппаратный SPI, но надо ли?
На родной скорости ввода/вывода на ленту получается примерно 150 байт/с (около 1200 бит/c). 32768 байт будут перегоняться примерно 219 секунд (без учёта ракорда и имени), это 3 минуты 39 секунд. Если у вас 32КБ сливаются за 11 секунд (это примерно 2978 байт/c или 23831 кбит/c), то ускорение будет 219/11=19,9 раз, т.е. почти 20х.

11 секунд для 32КБ это очень и очень жирно! Мы на кружке для ускорения грузили в один Специалист большую игру (около 4-5 минут для почти 48 КБ), а потом специальным кросс кабелем на коаксиальных проводах через тот же магнитофонный интерфейс выгружали на другие компьютеры на константе в 4х от номинальной, быстрее уже не тянуло и были ошибки. А когда появился большой ROM-диск, так и еще 5 минут экономили. Если действительно получилась такая скорость, то нет смысла в аппаратном SPI.
Сегодня вечером постараюсь точные бенчмарки сделать.
Итак, по утилите castool 32кБ, получается wav файл с длительностью звучания 4:24, или 264 сек. Это с учетом пилот тона вначале.
Далее я запустил программу, которая в цикле считывает один и тот-же сектор (0) в одну и ту-же область ОЗУ (0000-01FF), но делает это 64 раза. Время по секундомеру, 12,3 сек. Это с учетом моей реакции для остановки секундомера.
Так, что я не сильно наврал, когда говорил про 11 сек. :)
И кроме того, даже если бы работало в 3 раза медленнее, все равно этого всего достаточно. Ведь во-первых чтение должно проходить без ошибок, в отличие от магнитофона, а во вторых экран не гаснет во время загрузки, и можно даже прогрессбар замутить.
Кстати, если ПДП погасить на время загрузки, то скорость еще должна вырасти, но пока это мне не нужно.
Всё, что быстрее 30 секунд — годно. Так что результат отпадный. Есть желание поделиться кодом с общественностью?
Есть желание поделиться кодом с общественностью?

Конечно!
Сейчас довылизываю и выложу. Весь проект открытый. Все будет опубликовано.
И, вот еще есть вопрос, который меня мучает.
В образе ПЗУ из 2кБ у меня осталось 600 байт свободного места. И вот, никак не могу определиться, что с ним делать. Оставить так? Запихнуть еще функций? Развернуть некоторые циклы — для увеличения скорости? Напихать побольше выводимых сообщений?
Не, пока лучше не трогать. Придёт время и идея для более интересного использования, нужно просто чтобы текущее состояние аффекта прошло. :)
Ок. Сегодня допишу небольшую функцию (нужна для установки OS), и завтра буду шить ПЗУ. Если проблем не возникнет (или даже если возникнет), то пишу следующую статью про БСВВ.
Честно говоря, я в Forth не в зуб…
Можно загружать с SD. И вообще можно с SD загружать что угодно.
Вот именно. При наличии SD ничего добавлять в ПЗУ не надо. Например, в ЛК Специалист, в варианте Экспресс, там под ПЗУ отведено 12КБ. 4 из них это загрузчик и монитор, а 8 — свободные. И 30 лет назад туда пихали редакторы, бейсики и прочее. А сейчас лучше доработать дешифрацию так, чтобы под этими 8КБ открылось ОЗУ, которое там всегда было (банк ОЗУ 64КБ из 8шт К565РУ5) и это при поддержке SD расширяет возможности гораздо лучше. Собственно, в варианте Специалист_МХ так и сделали (помимо добавления ещё 64КБ ОЗУ).
Так, что Вы правы аппаратный SPI не нужен.

Видел подобное устройство для "Апогея", но не помню, с какой картой: SD, или тогда ещё CF. Там был файловый менеджер и демка с названием на греческом языке. Но то устройство было на микроконтроллере, а вы сумели без него обойтись: единственный современный компонент — сама карта.

единственный современный компонент — сама карта.

Да, это такое правило я себе придумал. :)
Можно было-бы еще прицепить SD карту к имеющейся внутри микросхеме КР580ВВ55, но мне захотелось сделать PnP ;)
Хотел узнать, а каким образом Микроша подключен к монитору? Напрямую к VGA разъему без всякого преобразователя?
Это, скорее всего, телевизор. Можно прямо по RCA подключать.
Хотел узнать, а каким образом Микроша подключен к монитору?

У телевизоров есть вход AV. Это низкогчастотный вход сигнала стандарта NTSC или PAL. И NTSC и PAL это системы кодирования цвета, с помощью квадратурной модуляции поднесущих частот. 3.58 или 4.48 МГц соответственно. Микроша черно-белая и ее сигнал воспринимается как Ч/Б PAL… Уже не во всех телевизорах есть AV, но на некоторых есть и можно подключать напрямую, у тех где нет, то нужно либо модулятор ВЧ, либо скарт (тоже если есть), либо «скандаблер» чтобы получить VGA…
мне не нравилось наличие в них микроконтроллеров
Если я правильно помню, карты памяти работают на встроенном 8051 контроллере.
А не приходилось познакомиться со страничной организацией памяти в Орион-128? Там выставлялся байт в нужный регистр и основная страница оперы отключалась, а подключалась другая. Всего было до 4 страниц. Естественно, функции BIOS по обращению к страницам были прописаны в ПЗУ.
Супер! Спасибо! Моя, Микроша, увы, приказала долго жить (выкинул зачем-то, а теперь жалею… был бы повод повторить Ваш проект), но осталась программа wayp.rkm с моим голосом 1988 года. Иногда ностальгирую…
Sign up to leave a comment.

Articles