Микроша. Глава первая. Контроллер SD карты



    Многие помнят эту замечательную ПЭВМ. У меня такая появилась, когда мне было 11. Прошло 28 лет и сейчас я решил в порядке хобби сделать устройства расширения, которых мне так не хватало тогда.

    Идея


    В сети я видел несколько вариантов SD загрузчиков для подобных ПЭВМок, мне не нравилось наличие в них микроконтроллеров, хотелось сделать по «винтажной, теплой DIPовой» схемотехнике, именно поэтому я решил делать на отечественной логике «КР1533».

    В качестве доп. ОЗУ я применил UT62256. Это единственная импортная микросхема в проекте. Конечно, можно было поставить КР537РУ10 или КР537РУ25А, но во-первых, их бы пришлось ставить не одну, а две (я планировал 4 кБ доп. ОЗУ), а во-вторых UT62256 у меня была, а КР537 не было, и заказывать не хотелось. Поэтому я позволил себе вольность поставить импорт, и тогда пришла идея использовать все 32кБ доп.ОЗУ, со страничным переключением.


    Для ПЗУ выбрал КР573РФ5, как раз было две чистых.

    Блок-схема


    Посидев за чашкой чая, я нарисовал вот такую блок-схему.



    Здесь микросхема ОЗУ, микросхема ПЗУ, и блок «ПОРТ». Блок «ПОРТ» есть параллельный интерфейс, имеющий 8 входов и 8 выходов. При записи по адресу EFFF, записываемый код выставляется на выходах, а при чтении из этого же адреса, прочитанное значение соответствует состоянию входов. Три из выходов и один из входов подключены к SD карте через преобразователь уровней.

    ОЗУ представлено микросхемой UT62256 и имеет 32кБ памяти. Поскольку диапазон адресов E000-EFFE есть почти 4кБ (4095 байт), то получается 8 страниц, которые выбираются блоком «ПОРТ», битами 1,2 и 3. То есть запись по адресу EFFF приводит к установке страницы в соответствии с этими тремя битами. Также чтение из этого порта показывает какая страница сейчас выбрана (в этих же битах). Итого, мы имеем 32760 байт дополнительного ОЗУ (4095x8стр).

    Микросхема ПЗУ есть КР573РФ5. Она подключена в адресное пространство F000-F7FF, и содержит код БСВВ (BIOS), задача этого кода инициализировать SD карту, загрузить с нее OS и передать ей управление.

    Соответственно после включения ПЭВМ, набираем в Системном Мониторе GF000 и нажимаем ВК.

    В дальнейшем есть идея доработать родное ПЗУ Системного Монитора, для автоматической загрузки OS с SD карты, и ПЭВМ выходит в стандартное приглашение Монитора если загрузка не удалась или была прервана, например, нажатием какой-то клавиши.
    Об этом еще подумаю.

    Схема


    Примерно 2-3 часа за компьютером, и я нарисовал в EAGLE следующую схему.


    Увеличить

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

    Низкоуровневый разбор схемы…

    ...убрал под спойлер, думаю мало кому интересны эти дебри.
    Посмотрим на ячейку И V3/1, к ней подключены линии A14 и A15 шины адреса, значит на выводе N3 появится логическая единица, когда эти оба сигнала адреса находятся в лог.1. Через инвертор V1/2 формируется сигнал с условным названием G, который приходит на дешифратор IC2. Входы этого дешифратора A и B, подключены к линиям A12 и A13 соответственно. Значит, получается, что дешифратор активируется от наличия единиц на A14 и A15, а его выходы показывают код на линиях A12 и A13. Нас интересует только один вариант — 1110,
    то есть A15-1; A14-1; A13-1; A12-0. Такой сигнал получается на выходе дешифратора N2. Поскольку ячеек дешифратора две, то этот сигнал должен появляться на выводах 5 и 11, но из-за того, что каждая из ячеек имеет еще один вход С, то от состояния этого входа будет зависеть какая из ячеек будет активна. Вход 1С активирует выход 5, а вход 2С активирует выход 11. Эти входы спаралелены, но вход 1C прямой, а вход 2C инверсный, значит при наличии лог.1 на них активируется вывод 5, а при лог.0 — вывод 11.

    Подытожим: При наличии на шине адреса кода Exxx и С=1, формируется сигнал «PORT», а при наличии на шине адреса кода Exxx и C=0, формируется сигнал «RAM».

    Сигнал «C» образуется за счет функции логического И, из всех младших адресов (A0-A11). Когда на шине выставлен код xFFF, то С=1, а иначе С=0. Итого: сигнал «PORT» вызывается адресом EFFF, а сигнал «RAM» адресами E000-EFFE.

    Сигнал «RAM» приходит на вход CS микросхемы IC3, это микросхема ОЗУ, и значит, что запись по адресам E000-EFFE приведет к записи в эту микросхему. Также чтение по адресам E000-EFFE приведет к чтению из этой микросхемы. При записи по адресу EFFF код будет записан в регистр IC4, и защелкнется на его выходах. Сигнал записи формируется из сигналов «PORT» и «WR» c помощью элементов V1/5, V1/6 и V3/4.

    Чтение по адресу EFFF приведет к считыванию данных из буфера IC5, и код будет зависеть
    от состояния входов B0-B7.

    Микросхема ПЗУ включена в адресное пространство ПЭВМ с помощью штатного адресного дешифратора. Для этого из порта «Внутренний Интерфейс» берется сигнал CS3 и он подключен к линии CS микросхемы ПЗУ.

    Сборка макета


    Сейчас травить плату в домашних условиях у меня возможности нет, и я, взяв кусок фольгированного двухстороннего текстолита, выпилил из него необходимый прямоугольник.

    Этот прямоугольник плотно вставлялся в слот «внутренний интерфейс» ПЭВМ, не болтался и не сдвигался. Далее я процарапал контактные площадки с задней и передней сторон. Получилось неплохо. Затем грубая расстановка микросхем и сверлежка отверстий. С лицевой стороны рассверлил крупным сверлом, чтобы выводы микросхем не контактировали с лицевой фольгой. С обратной стороны отцарапал периметр каждого контактного ряда и разделил на контактные площадки.

    Следующим этапом поставил все микросхемы (и панельку) и пропаял с обратной стороны. Много времени отнял монтаж, который я вел тонким МГТФом. Вел проводки с обоих сторон, с лицевой подпаивал прямо к ножкам микросхем, с обратной к площадкам.



    Когда процесс пайки был окончен, я решил уделить внимание преобразователю уровней сигналов. Дело в том, что SD карта работает с напряжением 3,3в., а микросхемы КР1533АП6 и КР1533ИР22 ТТЛ 5в. Поэтому пришлось сделать небольшую платку переходника, на котором уровни ограничивались стабилитронами.

    Сигнал идущий от SD карты к контроллеру я просто подтянул к источнику 3,3в. резистором 10к. Как показала практика, этот сигнал в преобразовании не нуждается.



    Хотя в конечном варианте я, наверное, сделаю обратный преобразователь на основе компаратора.

    В качестве держателя карты использовал переходник microSD в SD.

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

    Тесты макета


    Первым делом я проверил работу ОЗУ, записал в область E000-EFFE с помощью директивы «F» Системного Монитора паттерны «AA», «55», «F0» и «0F» и проверил их с помощью директивы «D». Все оказалось в норме.

    Далее директивой «M» начал записывать в адрес EFFF разные значения, и смотреть мультиметром изменения на ножках регистра КР1533ИР22, состояния соответствовали записаным кодам. Также при чтении из этого порта в коде содержалась выбранная страница, в соответствии с задуманным, и еще при замыкании MISO сигнала на землю в младшем бите оказывался 0, а при размыкании 1.

    Даже было как-то подозрительно, что все микросхемы исправны и монтаж удался без ошибок.

    БСВВ


    Конечно никаких специальных инструментов для написания программ под КР580ВМ80А у меня не было. Пришлось писать программу в блокноте (notepad), затем переводить в коды вручную.
    Создал файл в редакторе под DOS «HIEW» и начал заполнять кодами. Для основы взял свой проект под AVR, в котором имелась стандартная инициализация SD карты. Проект был старый, и в нем не использовалось никакой файловой системы, просто логгер.

    Сначала написал низкоуровневую функцию программного интерфейса SPI, а потом высокоуровневую подпрограмму инициализации SD карты.

    Получился примерно такой алгоритм…

    ...который убран под спойлер, думаю, он и так всем известен.
    1. Взвести счетчик попыток (СП) на 90;
    2. Выставить CS в лог.1 и отправить 10 раз FF;
    3. Выставить CS в лог.0;
    4. Отправить CMD0;
    5. Если читается 01, тогда переход на 7;
    6. Уменьшить СП. Если СП=0, то выход с ошибкой, иначе переход на 2;
    7. Отправить CMD8;
    8. Отправить ACMD41;
    9. Если читается 00, тогда переход 11
    10. Уменьшить СП. Если СП=0, то выход с ошибкой, иначе переход на 8;
    11. Отправить CMD58.
    12. Прочитать 2й байт ответа и записать по адресу EFFE.
    13. Инициализация закончена.

    В подпрограмме инициализации также читался регистр OCR карты, и 2й байт в нем записывался по адресу EFFE. Это было нужно для определения типа карты.

    В случае SDSC — 80h, а в случае SDHC — C0h.

    Если инициализация не проходила, то выводилось сообщение «ОШИБКА SD КАРТЫ» и затем происходил выход в Монитор без сброса.

    Такую БСВВ я конвертировал в WAV и загружал в ПЭВМ через магнитофонный вход, затем отлаживал, правил исходник и снова загружал.

    Мосты


    Теперь у меня есть дополнительное ОЗУ, размером 32760 байт, разделенное на 8 страниц. Но как осуществлять переход между страницами? Как программа, выполняющаяся в первой странице, может вызвать подпрограмму, находящуюся в четвертой?

    Для решения этой задачи я предусмотрел программные мосты. Мост — это небольшая область в ПЗУ, которая является посредником при передаче управления.

    Например, выполняющийся код должен передать управление на страницу номер 3, в адрес E4B5. Тогда, выполняющийся код помещает младшие 12 бит (4B5) в регистровую пару HL процессора, а в старшие четыре бита помещает значение 3 — номер страницы. Теперь в регистровой паре HL записано значение 34B5. И код делает прыжок (JMP) в область ПЗУ, которая называется JMP-Bridge, это просто переход по фиксированному адресу в ПЗУ. Код в этой области извлекает номер страницы из старших битов регистровой пары HL и записывает их в регистр блока «ПОРТ» по адресу EFFF. Теперь в область E000-EFFE отображается третья страница ОЗУ. Программа JMP-Bridge обнуляет четыре старших бита регистровой пары HL и записывает туда «E». Теперь в регистровой паре HL находится уже физический адрес E4B5, и вот на него программа JMP-Bridge передает управление.

    Таким образом передается управление между страницами.

    Есть мост CALL-Bridge, он нужен для вызова подпрограммы с возвратом, и отличается от JMP-Bridge сохранением текущей страницы в стеке, и обратной процедуры для возврата.

    Следующие два моста STA-Bridge и LDA-Bridge. Как следует из названий, первый записывает регистр Аккумулятор по логическому адресу (в HL), а второй читает в этот регистр данные из логического адреса.

    Благодаря этим двум мостам, программа исполняющаяся из какой-то страницы, может хранить данные в другой.

    Загрузка ОS


    Если взглянуть на загрузочный сектор SD карты, то можно заметить, что по адресам 1AC-1D4 расположен текст «Disk error, press any key to restart».



    Да, так странно как на фото он выглядит, потому-что кодировка символов Микроши не совпадает с ASCII.

    Я решил использовать эту область, чтобы расположить там данные для загрузки ПЭВМ.

    Первым делом я поставил код 00 в позицию 1BA, и тем самым урезал запись. Теперь, должно выводиться просто «Disk error» и все. Остальные байты мои. Принцип простой, 6 байт сигнатура «MicrOS», и 4 байта адрес на SD карте начала файла с OS. В БСВВ я записал, после получения загрузочного сектора с SD карты, проверяется сигнатура, и если она есть, то взять 4 следующих байта и использовать в качестве адреса сектора для загрузки OS.

    Если сигнатура отсутствует, то выводится сообщение «ОШИБКА ЗАГРУЗКИ OS» и происходит выход в Системный Монитор без сброса.

    Итог


    И вот, наконец-то все, работает. БСВВ написана, но мне еще требуется записать ее в ПЗУ.



    А для этого мне нужно отредактировать все адреса вызовов подпрограмм и переходов, так-как в этом процессоре абсолютная адресация. А я писал БСВВ для области 6000-67FF, чтобы грузить в ОЗУ. Но теперь надо поменять все 6xxx на Fxxx.

    Кроме того, я в «попаданецких» условиях. Программатор ПЗУ у меня есть, но он старенький, под LPT порт. И нет ни одного компьютера с LPT. Но есть пара Atmega32A, в PDIP40 корпусе и макетная плата. Возможно придется эмулировать LPT с помощью AVR. Но может все обойдется…

    На этом, пока, все. Спасибо за внимание! Продолжение следует…

    Update: Продолжение

    Similar posts

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 61

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


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

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

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

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

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

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

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

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


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


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

                              0
                              …просто куча удовольствия, особенно когда всё запустилось )

                              Согласен! Ради этого удовольствия все и делается.
                                0

                                Змейка форева! В клубе напротив ЛЭМЗ.

                                  +1
                                  Не «Змейка», а «Удав»! :)
                                  0
                                  Какой-нибудь бы аппаратный SPI прикрутить, так программно долго его колупать ВМ80 будет
                                    +2
                                    Все 32кБ, заливаются за 11 сек. Средняя игра весит 8кБ.
                                    С «магнитофона» в 7 раз дольше.
                                    Можно сделать аппаратный SPI, но надо ли?
                                      0
                                      На родной скорости ввода/вывода на ленту получается примерно 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.
                                        0
                                        Сегодня вечером постараюсь точные бенчмарки сделать.
                                          0
                                          Итак, по утилите castool 32кБ, получается wav файл с длительностью звучания 4:24, или 264 сек. Это с учетом пилот тона вначале.
                                          Далее я запустил программу, которая в цикле считывает один и тот-же сектор (0) в одну и ту-же область ОЗУ (0000-01FF), но делает это 64 раза. Время по секундомеру, 12,3 сек. Это с учетом моей реакции для остановки секундомера.
                                          Так, что я не сильно наврал, когда говорил про 11 сек. :)
                                          И кроме того, даже если бы работало в 3 раза медленнее, все равно этого всего достаточно. Ведь во-первых чтение должно проходить без ошибок, в отличие от магнитофона, а во вторых экран не гаснет во время загрузки, и можно даже прогрессбар замутить.
                                          Кстати, если ПДП погасить на время загрузки, то скорость еще должна вырасти, но пока это мне не нужно.
                                            0
                                            Всё, что быстрее 30 секунд — годно. Так что результат отпадный. Есть желание поделиться кодом с общественностью?
                                              0
                                              Есть желание поделиться кодом с общественностью?

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

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

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

                                            Да, это такое правило я себе придумал. :)
                                            Можно было-бы еще прицепить SD карту к имеющейся внутри микросхеме КР580ВВ55, но мне захотелось сделать PnP ;)
                                              0
                                              Параллельные ПЗУ можно этим шить:

                                              dragaosemchama.com/en/2016/10/arduino-mega-eprom-programmer
                                                0
                                                Ребяты, я прочитал статью, аж прослезился.

                                                Решил внести свою лепту в рассказ про этот теплый олдскульный компьютер:

                                                Мой компьютер Микроша: продолжаем неделю ностальгии
                                                  0
                                                  Хотел узнать, а каким образом Микроша подключен к монитору? Напрямую к VGA разъему без всякого преобразователя?
                                                    0
                                                    Это, скорее всего, телевизор. Можно прямо по RCA подключать.
                                                      0
                                                      Хотел узнать, а каким образом Микроша подключен к монитору?

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

                                                            Only users with full accounts can post comments. Log in, please.