Просмотр полной версии : РОМ картридж
Привет, на авито увидел человека который продаёт ром картридж. Подскажите кто в курсе, на него самому можно делать сборку?
https://www.avito.ru/moskva/kollektsionirovanie/kartridzh_i_kassety_dlya_kompyutera_vektor_06ts_20 07367295 Может быть кто в курсе чья это разработка?
Автор/продавец тут (http://raregame.ru/text/vector.html), в принципе он бывает и на форуме.
Следует обратить внимание на наклейки названия компьютера, другие более надежные, хоть и емкостные кнопки, а также на колпачки клавиатуры состоящие из двойного пластика, где обозначения сделаны вторым нижним пластиком, они не стираются!
Интересно, я впервые о таком слышу. Как о надежных ёмкостных кнопках, так и о double-shot колпачках.
Improver
14.07.2021, 17:47
Интересно, я впервые о таком слышу. Как о надежных ёмкостных кнопках, так и о double-shot колпачках.Кнопки, кстати, там очень похожи на вторую версию ёмкостной клавиатуры (https://zx-pk.ru/threads/29532-vektor-06ts-vidy-klaviatur.html?p=979292&viewfull=1#post979292), не знаю правда, насколько она была надёжнее...
Кнопки, кстати, там очень похожи на вторую версию ёмкостной клавиатуры (https://zx-pk.ru/threads/29532-vektor-06ts-vidy-klaviatur.html?p=979292&viewfull=1#post979292), не знаю правда, насколько она была надёжнее...
Крупных планов колпачков версии два с лицевой стороны там нет, но на даблшот они не похожи.
- - - Добавлено - - -
P.S. на следующей странице нашел ссылку на фотографии лицевой стороны "второстепенных" клавиш. Совершенно обычные они.
Improver
14.07.2021, 23:07
svofski, я имел в виду сами механизмы клавиш, а крышки да, тут обычные, с простым нанесением символов. У того продавца, видимо, Вектор из какой-то особенной партии астраханского завода.
И мегабайтных ПЗУ-шек просто ещё не встречал.
Да, это я погорячился, скорее всего 512 Кбайт, типа такой (https://www.digchip.com/datasheets/parts/datasheet/000/274001-pdf.php), там много небольших игрушек.
Да, это я погорячился, скорее всего 512 Кбайт, типа такой (https://www.digchip.com/datasheets/parts/datasheet/000/274001-pdf.php), там много небольших игрушек.
Тут согласен.
Не совсем понятно, почему программа из ПЗУ загружается, но не стартует.
Если загружается, значит начальный загрузчик увидел в нужных адресах идентификатор "АА 55".
И по фотке не понятно, кроме ПЗУ только одна микросхема, а известная схема картриджа содержит как минимум 3 разные доп микросхемы. Хотя может мелкую ПЛИС поставили. :)
Не совсем понятно, почему программа из ПЗУ загружается, но не стартует.
Как может не стартовать программа на исправном векторе? Программа загружается и стартует, но скорее всего со штатным загрузчиком .02 загружается не совсем то, что нужно и результат старта этого "нечто" не такой, как ожидается. Есть как минимум одно принципиальное отличие штатного загрузчика от Tim0xиного в плане работы с внешним пзу - штатный всегда перед загрузкой из ПЗУ пытается проверить LAN, а в Tim0xином можно отдельно пробовать грузить только из внешнего ПЗУ. Могу предположить, что попытка проверки LAN приводит к переключению областей ПЗУ (надо же там как-то выбирать текущую активную область из общего объема), что и приводит к загрузке не того, что нужно. Если я угадал, то это немного печально.
... в плане работы с внешним пзу - штатный всегда перед загрузкой из ПЗУ пытается проверить LAN, а в Tim0xином можно отдельно пробовать грузить только из внешнего ПЗУ. Могу предположить, что попытка проверки LAN приводит к переключению областей ПЗУ (надо же там как-то выбирать текущую активную область из общего объема), что и приводит к загрузке не того, что нужно. Если я угадал, то это немного печально.
Сейчас нет под рукой текста штатного загрузчика, а разве для загрузки из ПЗУ нет "горячей клавиши" ?
Для загрузки из не правильной ПЗУ "Ф5" - вроде.
Клавиша F2, но дело не в клавише, а скорее всего в том, о чем я написал в предыдущем сообщении.
завтра проверю опытным путем)))
Improver
23.07.2021, 17:44
Как вариант, можно попробовать слить содержимое ПЗУ с картриджа в файл и посмотреть его содержимое, подключить образ в эмуляторе... Ну и схемку бы срисовать и сравнить со стандартной, это многое бы прояснило.
Клавиша F2, но дело не в клавише, а скорее всего в том, о чем я написал в предыдущем сообщении.
Так и есть.
Глянул. Даже по Ф2, в штатном загрузчике сначала проверяется наличие адаптера ЛВС, а потом наличие внешней ПЗУ.
Но, если схема аналогична этой http://sensi.org/scalar/ware/675/ , то в описании сказано, что первоначально начальный загрузчик читает служебную ПЗУ, т.к. видит только её. И это логично, т.к. для чтения доп. ПЗУ нужно активировать таймер, а он выключается при перезапуске Вектора.
Ещё прикол, что 2-ух килобайтная ПЗУ, воспринимается начальным загрузчиком как 32-ух килобайтная :) и считывается 16 раз при загрузке... :)
Нужно эмулировать отсутствие доп.микросхем.
Возможно программа запускается, но не видит микросхем, и нет адекватной реакции на эту ситуацию, программа просто зависает.
Хотя это маловероятно, должна хотя-бы сначала экран очистить...
ps Так и есть, при запуске в эмуляторе приложенной (к описанию картриджа) программы, на экран выводится информация о клавишах управления.
В общем и целом на моем векторе 06Ц.02 этот картридж не взлетел даже после замены ПЗУ на загрузчик Тимошенко....
В общем и целом на моем векторе 06Ц.02 этот картридж не взлетел даже после замены ПЗУ на загрузчик Тимошенко....
Не понятно, что это вообще за картридж.
Сколько на нём вообще микросхем, какие это микросхемы ?
Если только те две, которые видно на фото, и с обратной стороны ни чего нет, то это что-то, о чём раньше не было инфы.
В любом случае, нужно отрисовать схему и считать содержимое, тогда может быть будет возможность разобраться.
Гуглил разные схемы расширителей памяти для ретро...
Пришел к выводу, что скорее всего картридж на фото может быть реализован простым расширением адресного пространства.
Установлена ТМ9 - это грубо говоря расширение адресного пространства на 6 бит.
Если 9 нога этой микросхемы подключена к С02 - единственному выводу порта ПУ, который "не используется" в штатном картридже, то получим общее адресное пространство 64 раза по 32КБ.
Конечно, штатный загрузчик видит только первые 32КБ, но сервисная программа запросто сможет получить доступ к 2МБ (если не ошибся в подсчётах).
добрался наконец до программатора, слил прошивку, сфотал картридж. Одна ТМ9 и метровая ПЗУ - 27с801.
Фото:
https://pic.maxiol.com/thumbs2/1627189707.1845264823.img2394j.jpg (https://pic.maxiol.com/?v=1627189707.1845264823.img2394j.jpg&dp=2)https://pic.maxiol.com/thumbs2/1627189800.1845264823.img2395j.jpg (https://pic.maxiol.com/?v=1627189800.1845264823.img2395j.jpg&dp=2)
Прошивка здесь (https://yadi.sk/d/WXbVMTHCrMLfEg)
добрался наконец до программатора, слил прошивку, сфотал картридж. Одна ТМ9 и метровая ПЗУ - 27с801.
...
А вот и МегаБайтная ПЗУ :)
Может ПЗУ была случайно наоборот воткнута. Помнится когда-то УФ-ПЗУ страшно переполюсовки боялись.
- - - Добавлено - - -
... и метровая ПЗУ - 27с801.
...
А почему мёртвая, если она красиво считалась?
там в последнем секторе судя по всему сервисная программа.
И структура интересная, каждые 32КБ заканчиваются кодами 55АА - видимо разметка, для идентификации размера ПЗУ.
Грузиться из ПЗУ загрузчик, он уже включает нужную страницу и загружает данные с одновременной декомпрессией.
Нужно знать разводку ТМ9, что-бы понять нумерацию страниц ПЗУ.
Мне удалось загрузить меню в эмуляторе... :v2_dizzy_punk:
Загрузчик-декомпрессор натыкан в ПЗУ кругом, в том числе с адреса 0000h.
С адреса 0100h в ПЗУ начинается меню.
С декомпрессором не разобрался, у меня в таких делах почти нет опыта... только эксперименты в 90-ых... :(
И ещё 220-230 КБ в ПЗУ свободно.
Немного не успел, но все же напишу свой вариант.
Насколько я понял при старшем бите адреса (порты 5 и 7)=1 задается адрес внутри 32 Кб блока, при старшем бите=0 задается номер 32 Кб блока. Просто и со вкусом, респект alemorf и serge, в начале-середине 90х и даже наверно в 2000х это было бы супер, но сейчас, как уже писал, на мой взгляд SD сильно удобнее для вектора, у которого все имеющиеся программы не влезают в пзушку и даже иногда появляются новые программы.
Загрузчик в "автономном" режиме (без собственно запуска) работает, можно послушать музыку, посмотреть на птичек и полистать перечень программ. В загрузчике есть таблица (адрес 2 байта + номер блока) по которой можно найти и распаковать любую программу. Упаковщик MegaLZ. Для пробы вытащил бейсик, работает. Думаю второе мое предположение про влияние разницы загрузчиков .02 и Tim0xи скорее всего неверно и это радует. Стоит проверить соединения между периферийной ВВ55 и контактами ПУ.
А почему мёртвая, если она красиво считалась?
Не мёртвая, а метровая)))) Метровая = размером 1Мб))))
Картридж рабочий, и прекрасно загружается на обычном векторе. Проблемы с загрузкой у него только на 06Ц.02... грузится первые 4 строки кубиков и все... замена прошивки не помогла... кстати на обычном векторе тоже 4 строки загружаются
Не мёртвая, а метровая)))) Метровая = размером 1Мб))))
Картридж рабочий, и прекрасно загружается на обычном векторе. Проблемы с загрузкой у него только на 06Ц.02... грузится первые 4 строки кубиков и все... замена прошивки не помогла... кстати на обычном векторе тоже 4 строки загружаются
Прошу прощения...
Зрение подводит, а раз "не загружается" - мозгу удобнее было прочитать, не размер, а состояние ПЗУ :/
Если Вектор однозначно рабочий (другие программы грузятся и работают), сложно представить неисправность...
ПЗУ находит по сигнатуре 55АА - значит ВВ55 делает вид, что работает.
Нет там в картридже ни чего особенного, что могло бы повлиять на качество загрузки.
Если контакты ПУ в нормальном состоянии, остается грешить на ВВ55 - где-то "плывут уровни"... я сталкивался с полуживыми ВВ55...
Накопипастил конфиг с картриджем для emu (https://disk.yandex.ru/d/RJnrsq5mORDhJA), все же это версия картриджа alemorf для Апогея. Не забудьте скопировать vector_romcart.BIN в каталог Vector06c или измените путь в конфиге.
... грузится первые 4 строки кубиков и все... замена прошивки не помогла... кстати на обычном векторе тоже 4 строки загружаются
Ну а как иначе... на границе 32КБ стоит сигнатура 55АА, указатель для начального загрузчика Вектора, что грузить нужно 32КБ - это 4 строки.
Прикинул, что грешить на порт "В" ВВ55-ой нет смысла, т.к. 55АА видит... а вот если есть разряды на портах адреса "А" или "С" , которые всегда в "1", то грузиться будет "не правильная программа", которая и работать не будет...
Так что нужно брать осциллограф и смотреть состояние выводов ПУ во время загрузки из ПЗУ-картриджа, ну или тест ПУ какой-то запускать.
- - - Добавлено - - -
А по названиям игр на картридже уже пробежались?
На нём уже есть "Бинорум" :)
И ещё игры, которые я не видел, или основательно о них забыл.
Improver
25.07.2021, 21:17
Так что нужно брать осциллограф и смотреть состояние выводов ПУ во время загрузки из ПЗУ-картриджа, ну или тест ПУ какой-то запускать.Проверить ВВ55 можно через стандартный Тест Устройств, только нужна заглушка, сделать её можно даже проводками в разъём, соединять, как описано в документации (Порт А <--> Порт В, Порт С 7-4 <--> Порт С 3-0).
Уже писал (https://zx-pk.ru/threads/33511-rom-kartridzh.html?p=1125162&viewfull=1#post1125162), но на всякий случай озвучу с полной уверенностью, что штатный загрузчик .02 должен правильно работать с картриджем и если есть еще владельцы девственных .02 с картриджем - не торопитесь менять ПЗУ. Владельцы "обычных" 06Ц и 6128 тоже могут не менять пзу (тем более для 6128 соответствующего пзу нет), достаточно подгрузить через магнитофонный вход 256 байтный (1 блок) загрузчик (первые 256 байт из любого 32 Кб блока картриджа, проще всего из начала).
Уже писал (https://zx-pk.ru/threads/33511-rom-kartridzh.html?p=1125162&viewfull=1#post1125162), но на всякий случай озвучу с полной уверенностью, что штатный загрузчик .02 должен правильно работать с картриджем ... достаточно подгрузить через магнитофонный вход 256 байтный (1 блок) загрузчик (первые 256 байт из любого 32 Кб блока картриджа, проще всего из начала).
В том и фокус, что если картридж читается правильно, то начальный загрузчик сам загрузит эти 256 Байт с самого картриджа, а если есть проблемы с портами, то и загрузка с магнитофона первого блока картриджа - кардинально не изменит ситуацию, т.к. этот загрузчик не сможет считать (если уж и первый блок не прочитал) сервисную программу (меню). Хотя она и не большая, вроде меньше 8КБ в запакованном виде, а после загрузки около30Кб (а может мне показалось).
Про 256 байтный загрузчик подгружаемый с магнитофонного входа я написал для двух случаев:
1. Оригинальный Вектор 06Ц с 512 байтным загрузчиком
2. ПК-6128Ц
достаточно подгрузить через магнитофонный вход 256 байтный (1 блок) загрузчик (первые 256 байт из любого 32 Кб блока картриджа, проще всего из начала).
А как его получить? Отрезать первые 256 байт от ПЗУ, сохранить как ROM, а затем конвертировать с помощью ROM2WAV?
Отрезать первые 256 байт от ПЗУ, сохранить как ROM, а затем конвертировать с помощью ROM2WAV?
Да, только отрезанный фрагмент надо сохранить с расширением r0m (в середине ноль вместо буквы O), чтобы результат грузился с 0го блока.
Когда стала понятна схема картриджа, первая мысль была - попробовать эмулировать его на Альтере :)
Но потом возникли сомнения, что Альтера с 6К ячеек сможет потянуть эмуляцию ПЗУ с 1МБ памяти... :/
Serg6845
30.07.2021, 09:00
Когда стала понятна схема картриджа, первая мысль была - попробовать эмулировать его на Альтере :)
Но потом возникли сомнения, что Альтера с 6К ячеек сможет потянуть эмуляцию ПЗУ с 1МБ памяти... :/
такая альтера скорее всего будет SRAM, ее саму грузить с чего-то надо. ну и по стоимости - сама альтера, конфиг. девайс, плата...
а так - https://zx-pk.ru/threads/9342-plis-i-vsjo-chto-s-nimi-svyazano.html?p=1098100&viewfull=1#post1098100
хотя мегабайт... наверно все равно не потянет...
Когда стала понятна схема картриджа, первая мысль была - попробовать эмулировать его на Альтере
Для девборды? Там же наверняка есть SRAM или DRAM для самого картриджа (или даже прошить во флэш, если очень хочется). Кроме того не обязательно брать именно оригинальный образ, это ведь удобный стандарт расширения внешнего ПЗУ для любого размера >32 Кб, можно собрать свой образ, который влезет куда нужно.
Для девборды? Там же наверняка есть SRAM или DRAM для самого картриджа (или даже прошить во флэш, если очень хочется).
Девборда простая, кроме самой Альтеры на ней ни чего нет (та девборда, на которой есть, пока занята).
Кроме того не обязательно брать именно оригинальный образ, это ведь удобный стандарт расширения внешнего ПЗУ для любого размера >32 Кб, можно собрать свой образ, который влезет куда нужно.
Мне вот не очень нравится компрессия/декомпрессия, я бы предпочел простую последовательность файлов. Чтобы образ собирать без заморочек.
Но если собирать картридж на доступных МегаБитных ПЗУ, это аж 7-8 штук соединять в параллель...
Мне вот не очень нравится компрессия/декомпрессия, я бы предпочел простую последовательность файлов. Чтобы образ собирать без заморочек.
Для маленького картриджа целесообразно сделать свою простую (без графики и музыки) и компактную сервисную программу, и использовать или нет компрессию можно решить самому.
Заморочка с картриджем одна - в начале каждого 32 килобайтного блока нужно вставить начальный загрузчик, все остальное опять же можно решить самому.
...
Заморочка с картриджем одна - в начале каждого 32 килобайтного блока нужно вставить начальный загрузчик, все остальное опять же можно решить самому.
Вот этого я тоже не очень понял, для чего загрузчик в каждом блоке... в голову приходит только один вариант, что при включении ТМ9 может не сброситься на 0-ой блок, но для этого можно было RC-цепочку посадить на сброс микросхемы... не понятно...
Вот этого я тоже не очень понял, для чего загрузчик в каждом блоке... в голову приходит только один вариант, что при включении ТМ9 может не сброситься на 0-ой блок, но для этого можно было RC-цепочку посадить на сброс микросхемы
Да, дело в этом, но сброс не решит все потенциальные проблемы. alemorf придумал, как победить то, в чем я сомневался - произвольное программирование старшей части адреса в загрузчике (который, как мы знаем, может быть разным). Т.е. при старте сбросили, а потом загрузчик, который ничего не знает о картридже, но знает о всяких других устройствах на ПУ, что-то пытается напрограммировать.
- - - Добавлено - - -
Возможно упомянутая перестраховка на векторе не нужна. ВВ55 при записи управляющего слова устанавливает все буферные регистры портов в 0, что приведет к сбросу картриджа на 0й блок. Вроде бы некоторые древние экземпляры ВВ55 вели себя иначе, но в векторе их не бывает.
...
Возможно упомянутая перестраховка на векторе не нужна. ВВ55 при записи управляющего слова устанавливает все буферные регистры портов в 0, ...
Сам же писал, что начальный загрузчик до проверки наличия картриджа, имеет обращения к ВВ55. И при проверке наличия ЛВС вроде этот старший бит выставляется в "0" - как раз запись банка... и отключение штатного картриджа (на 32КБ).
Изначально я не знал, как организован картридж и как задается старшая часть адреса, тогда и появилось предположение, что дергание ЛВС может повлиять на чтение картриджа. Но после ознакомления с загрузчиком картриджа я отказался от этой идеи (1 (https://zx-pk.ru/threads/33511-rom-kartridzh.html?p=1125162&viewfull=1#post1125162), 2 (https://zx-pk.ru/threads/33511-rom-kartridzh.html?p=1125299&viewfull=1#post1125299)).
Что касается моего последнего предположения - там речь о задании в начале процедуры чтения из внешнего пзу управляющего слова ВВ55 (mvi a,82h\ out 4). Это скорее всего сбросит регистр старшей части адреса картриджа в 0, что и требуется. Возможно я еще что-то не учел, но реальщики могут попробовать.
...
Что касается моего последнего предположения - там речь о задании в начале процедуры чтения из внешнего пзу управляющего слова ВВ55 (mvi a,82h\ out 4). Это скорее всего сбросит регистр старшей части адреса картриджа в 0, что и требуется. Возможно я еще что-то не учел, но реальщики могут попробовать.
Теория это хорошо.
Подтвердить или опровергнуть логические выводы сможет только практическое логирование выводов ПУ при поиске и чтении картриджа.
добрался наконец до программатора, слил прошивку, сфотал картридж. Одна ТМ9 и метровая ПЗУ - 27с801.
...
А какая ПЗУ в картридже: с УФ стиранием, флешь или одноразовая ?
Судя по даташиту (https://pdf1.alldatasheet.com/datasheet-pdf/view/22943/STMICROELECTRONICS/27C801.html) 27С801 бывает или одноразовая или с ультрафиолетовым стиранием. На сайте serge фото микросхемы с окошком, там ультафиолетовая, вероятно и в продаваемые картриджи такие ставит.
Судя по даташиту (https://pdf1.alldatasheet.com/datasheet-pdf/view/22943/STMICROELECTRONICS/27C801.html) 27С801 бывает или одноразовая или с ультрафиолетовым стиранием. На сайте serge фото микросхемы с окошком, там ультафиолетовая, вероятно и в продаваемые картриджи такие ставит.
Вопрос был из чисто спортивного интересу.
На фото на авито ПЗУ с окошком, но в даташитах видел, что бывают одноразовые, а на фото картриджа без ПЗУ видно, что есть перемычки EPROM/FLASH.
Вот и спросил, какой вариант реально установлен.
Вот и спросил, какой вариант реально установлен.
surinm написал конкретно, что у него 27С801, флеша с таким обозначением не бывает.
Что касается моего последнего предположения - там речь о задании в начале процедуры чтения из внешнего пзу управляющего слова ВВ55 (mvi a,82h\ out 4). Это скорее всего сбросит регистр старшей части адреса картриджа в 0, что и требуется. Возможно я еще что-то не учел, но реальщики могут попробовать.
из того что я увидел в кода загрузчика в начале по любому проверяется адаптер локальной сети, далее модуля пзу:
M0084H: CALL M00D9H ; проверка локальной сети
JNZ M0148H ; переход на адаптер локальной сети
CALL M0138H ; проверка наличия дисковода
JNZ M02E7H ; переход на дискету
M0090H: CALL M00D9H
JNZ M044BH ; переход на кассету
CALL M0107H ; проверка наличия модуля ППЗУ
...
; проверка наличия модуля ППЗУ
M0107H: MVI A,82H ; код управления порта
OUT 04 ; записать в РУС
MVI B,0FFH ;
M010DH: MOV A,B ;
OUT 05 ;
MVI A,0FEH ;
OUT 07 ;
IN 06 ;
CPI 55H ; проверка ключевого кода 55
JNZ M012EH ; код не совпал
MVI A,0FFH ;
OUT 07 ;
IN 06 ;
CPI 0AAH ; проверка ключевого кода AA
JNZ M012EH ;
MOV A,B ;
ANI 7FH ;
INR A ;
MOV D,A ;
JMP M0136H ; МППЗУ подключен - на выход
..
; чтение программы из внешнего ППЗУ
M0274H: LXI H,M07DEH ; рисунок ПЗУ
MVI A,87H ; высота рисунка
PUSH D ; сохранить DE
CALL M06B2H ; вывод рисунка на экран
POP D ; восстановить DE
LXI B,0000 ;
LXI H,8000H ;
M0284H: MOV A,L ;
OUT 07 ;
MOV A,H ;
OUT 05 ;
IN 06 ;
M0107H: MVI A,82H ; код управления порта
OUT 04 ; записать в РУС
Я про это написал в цитируемом фрагменте.
Я про это написал в цитируемом фрагменте.
это на этапе инициализации, далее я выделил фрагменты в коде, где в регистры портов пишутся значения, которые гарантировано перетрут результаты инициализации:
MVI B,0FFH ;
MOV A,B ;
OUT 05 ;
MVI A,0FEH ;
OUT 07 ;
и
LXI H,8000H ;
MOV A,L ;
OUT 07 ;
MOV A,H ;
OUT 05 ;
Или вы о другом?
P.S. схему так никто не срисовал?
Не перетрут (https://zx-pk.ru/threads/33511-rom-kartridzh.html?p=1125162&viewfull=1#post1125162)
Я правильно понял - картридж для "Вектора" сделан по тому же принципу, что и для "Апогея", с той разницей, что у 555ТМ9 использованы 5 разрядов для адресов ПЗУ А15-А19?
Пока что схему представляю так:
Порт А - адреса А0-А7 ПЗУ
Порт В - данные ПЗУ
Порт С - А0-А6 - адреса А8-А14 ПЗУ, А7 - тактирование (защёлкивание) 555ТМ9
Входы D0-D4 ТМ9 подключены к адресам А0-А4 ПЗУ, выходы Q0-Q4 подключены к адресам А15-А19 АЗУ
Из сообщения https://zx-pk.ru/threads/33511-rom-kartridzh.html?p=1125162&viewfull=1#post1125162 непонятно "при старшем бите адреса (порты 5 и 7)=1 задается адрес внутри 32 Кб блока, при старшем бите=0 задается номер 32 Кб блока.". - вот это не очень понял. Возможно, потому, что неправильно представляю схему картриджа. Поясните, пожалуйста.
И правильно ли я понял, что в картридже программы находятся в том же сжатом формате, что и в картридже "Апогея"? Т.е. можно использовать упаковщик от "Апогея"?
Картридж "Апогея":
77432
Я правильно понял - картридж для "Вектора" сделан по тому же принципу, что и для "Апогея", с той разницей, что у 555ТМ9 использованы 5 разрядов для адресов ПЗУ А15-А19?
Пока что схему представляю так:
Порт А - адреса А0-А7 ПЗУ
Порт В - данные ПЗУ
Порт С - А0-А6 - адреса А8-А14 ПЗУ, А7 - тактирование (защёлкивание) 555ТМ9
Входы D0-D4 ТМ9 подключены к адресам А0-А4 ПЗУ, выходы Q0-Q4 подключены к адресам А15-А19 АЗУ
Из сообщения https://zx-pk.ru/threads/33511-rom-kartridzh.html?p=1125162&viewfull=1#post1125162 непонятно "при старшем бите адреса (порты 5 и 7)=1 задается адрес внутри 32 Кб блока, при старшем бите=0 задается номер 32 Кб блока.". - вот это не очень понял. Возможно, потому, что неправильно представляю схему картриджа. Поясните, пожалуйста.
И правильно ли я понял, что в картридже программы находятся в том же сжатом формате, что и в картридже "Апогея"? Т.е. можно использовать упаковщик от "Апогея"?
Картридж "Апогея":
77432
Разряды портов А и С формируют шину адреса А0-А14 - это (условно) блок 32Кб.
При переключении старшего разряда порта С в "0" через ТМ9 на шину адреса ПЗУ попадают дополнительные разряды, которые условно "задают номер 32Кб блока" - т.е. эти дополнительные разряды указывают к какому из 32Кб блоков будет обращение при чтении из ПЗУ.
По другому, при помощи разрядов портов А и С можно прочитать только 32КБ, соответственно ПЗУ условно разбита на блоки по 32КБ, а записав в ТМ9 некое значение, можно указать, какой из этих условных блоков собираемся читать.
"при старшем бите адреса (порты 5 и 7)=1 задается адрес внутри 32 Кб блока, при старшем бите=0 задается номер 32 Кб блока.". - вот это не очень понял.
Могу только сказать, как это выглядит с программной стороны.
При задании номера блока (0-7F) он дублируется в порты 5 и 7, старший бит при этом=0.
При задании адреса внутри блока (8000-FFFF) порты 5 и 7 образуют как бы регистровую пару, порт 5 - старший байт, порт 7 - младший. Старший бит порта 5=1 (поэтому вместо 0000-7FFF получается 8000-FFFF).
И правильно ли я понял, что в картридже программы находятся в том же сжатом формате, что и в картридже "Апогея"? Т.е. можно использовать упаковщик от "Апогея"?
Упаковщик MegaLZ, вряд ли его можно назвать апогеевским, он был разработан для спека. Возможно vinxru/alemorf еще выкладывал утилиту для сборки образа пзу, но я такой утилиты не видел.
Особенности сборки (по крайней мере для вектора). В каждом 32 Кб блоке первые 256 байт - загрузчик/распаковщик. Он грузит "оболочку" (блок 0, начальный адрес 8100h (если сбросить старший бит, то 100h) ). Последние 2 байта каждого 32 Кб блока - 55 AA, по ним начальный загрузчик (в пзу вектора) определяет границу внешнего пзу. Распаковщик обходит эти блоки из 256 и 2 байт в каждом блоке. В оболочке, насколько помню, для каждой программы из списка указаны блок и начальный адрес.
Могу только сказать, как это выглядит с программной стороны.
При задании номера блока (0-7F) он дублируется в порты 5 и 7, старший бит при этом=0.
При задании адреса внутри блока (8000-FFFF) порты 5 и 7 образуют как бы регистровую пару, порт 5 - старший байт, порт 7 - младший. Старший бит порта 5=1 (поэтому вместо 0000-7FFF получается 8000-FFFF).
Что такое, в данном случае, порты 5 и 7? Портов, как я понимаю, три: А, В и С у 580ВВ55. Можно, наверное, ещё назвать портом регистр ТМ9. Но где порты 5 и 7 - не пойму...
Сейчас подумал - может, речь про адреса портов ВВ55? У меня под рукой сейчас нет описания архитектуры "Вектора", проверить себя не могу...
Что такое, в данном случае, порты 5 и 7? Портов, как я понимаю, три: А, В и С у 580ВВ55.
...
Сейчас подумал - может, речь про адреса портов ВВ55?
...
Именно. Это адреса портов ВВ55 в Векторе для С и А соответственно 05h и 07h.
Из описания Вектора:
04H РУС (регистр управляющего слова трехканального порта ВВ55)
05H порт PС параллельного интерфейса (разъем "ПУ")
06H порт PB параллельного интерфейса (разъем "ПУ")
07H порт PA параллельного интерфейса (разъем "ПУ")
Сейчас схема картриджа мне представляется так:
77435
Правильно ли я понял - входы ТМ9 подключены к порту А (А0-А4)?
На фотографии картриджа резисторов (насколько я могу разглядеть - 10к) больше, чем на моей схеме. Пока что не представляю, где они ещё могут стоять. Один - в цепи начального сброса регистра, второй тянет вниз сигнал защёлки, чтобы случайно не захватила мусор до инициализации порта. наверное, и то и другое не нужно, но я старался придумать применение резисторам :) С конденсаторами, вроде бы, понятно. Один - в цепи сброса, два - по питанию ПЗУ и триггера...
Загрузчик от TimSoft (ПЗУ 2к, http://sensi.org/scalar/ware/540/) запускает этот картридж?
...
Загрузчик от TimSoft ... запускает этот картридж?
Обсуждали ведь по ходу дела, что этот картридж имеет стандартный протокол для загрузки с него модуля (загрузчика картриджа), который потом уже сам загружает с картриджа (выбранную в меню) программу.
Любой начальный загрузчик Вектора, имеющий функционал загрузки с обычного "внешнего ПЗУ", должен позволить пользоваться этим картриджем.
Правильно ли я понял - входы ТМ9 подключены к порту А (А0-А4)?
да
- - - Добавлено - - -
Строго говоря я не совсем корректно описал (https://zx-pk.ru/threads/33511-rom-kartridzh.html?p=1155170&viewfull=1#post1155170) программирование картриджа, учитывая запись в ТМ9 по фронту, но думаю уже все разобрались.
Я, пока что, хочу просто собрать картридж и, желательно, чтобы он заработал :) Поэтому особенности его программирования, в данном случае, не очень важны. А вот схема - важна. Если картридж не заработает и правильность схемы будет под сомнением, то поиск проблемы будет сложнее - ошибка сборки, неисправность компьютера, компонентов картриджа или изначальная ошибка в схеме? Хотелось бы исключить, хотя бы, последнее...
Кто о чем, а я опять хочу упомянуть SD. Насколько понимаю, схема подключения SD (без микроконтроллера) была бы не намного сложнее, а пользоваться удобнее, если не смущает интерфейс с использованием командной строки (предполагается использовать слегка доработанный xsd b2ma). Закидываем на SD romы и вперед. Надо только определиться с конкретным интерфейсом подключения SD. Если выбранный интерфейс поддерживается в Emu то с отладкой никаких проблем. Правда я так и не удосужился написать компактный bios, но в качестве biosa можно использовать монитор-отладчик. Это приводит к ограничению размера загружаемого rom-файла в районе 40 Кб, что не очень приятно, но не смертельно и потом можно поработать над этим моментом.
Кто о чем, а я опять хочу упомянуть SD. Насколько понимаю, схема подключения SD (без микроконтроллера) была бы не намного сложнее, а пользоваться удобнее, если не смущает интерфейс с использованием командной строки (предполагается использовать слегка доработанный xsd b2ma). Закидываем на SD romы и вперед. Надо только определиться с конкретным интерфейсом подключения SD. Если выбранный интерфейс поддерживается в Emu то с отладкой никаких проблем. Правда я так и не удосужился написать компактный bios, но в качестве biosa можно использовать монитор-отладчик. Это приводит к ограничению размера загружаемого rom-файла в районе 40 Кб, что не очень приятно, но не смертельно и потом можно поработать над этим моментом.
Я думаю, оффтоп - классная штука! Не оффтоп, как таковой, конечно, а его содержание в данном случае :)
Сборка картриджа - первый шаг, просто побаловаться, поиграться и получить начальную площадку для экспериментов. Далее - подключение SD-карты. Варианты:
1. Контроллер. Без примеров - вариантов дофига, да и новый, очередной, сделать - не проблема. Подходящих для этого контроллеров хватает и, даже сейчас, они достаточно недороги. Лично мне нравится STM8 - без проблем работает на напряжении от 3 до 5 Вольт, весьма солидная, для 8-битных контроллеров, начинка.
2. SPI-интерфейс на рассыпухе. Лично от себя - не мой путь. Паять, как говорится, умею, но не люблю. Каждый припаянный кусок МГТФ - подвиг. Схема получается не очень крупная, но - всё же, как в анекдоте про жену Рабиновича. Наверное, самая популярная (или единственная?) используемая схема - от Erik van Son, разработавшего MSX MMC-drive (https://hansotten.file-hunter.com/special-msx-hardware/sd-mmc-drive/)
3. SPI-интерфейс на CPLD. Просто, компактно. И недорого, так как вполне хватит небольшой микрухи, типа 3032 или 3064. Начинка - какая угодно. Можно засунуть схему из пункта 2, можно использовать готовые, типа SPI65 (http://www.6502.org/users/andre/spi65b/index.html)
Получается небольшая платка, на которой установлены коннектор, CPLD, слот карты и ПЗУ с начальным загрузчиком. И всё. Работа с картой и FAT выполняется софтово. Да, это медленнее, чем в пункте 1, но разве нужно куда-то спешить? Если уж есть терпение на загрузку с магнитофона... А здесь, не думаю, что скорость будет ниже, чем у дисковода. Тот же SPI65, подключенный к компьютеру на 6502 (1-2МГц) и работающий через порт 6522 (это такой очень продвинутый ВВ55), судя по разным видео в тырнете, гоняет весьма шустро.
Лично от себя я бы ещё добавил UART, правда, пользовать его через ВВ55 - удовольствие из средних, но ведь очень полезная штука!
Насчёт программной части - ещё особо об этом не думал. Я для Z80 пишу, заглядывая в словарик, а мнемоника 8080 для меня вообще, пока что, сплошная непонятка. Но разбираться, всё равно, придётся.
На этом оффтоп заканчиваю, если продолжать, то, наверное, в другой, или новой, теме :)
А, да, что за xsd от b2m?
Кстати, отлаживать можно и на vector06cc на DE1. Можно проект облегчить до обычного "Вектора", без наворотов. Если автор не против такого вандализма :)
что за xsd от b2m?
FAT16 для 8080
Кстати, отлаживать можно и на vector06cc на DE1
Собственно я и использовал доработанный xsd на девбордах и не только с v06cc но и с реализациями других компов на 8080.
Вариант с микроконтроллером мне совсем не близок, тут я пас.
- - - Добавлено - - -
Возможно я недопонял и микроконтроллер предлагается использовать только для интерфейса с sd-картой, без реализации в нем FAT. Тогда другое дело, если использовать интерфейс поддерживаемый Emu.
Было дело, использовал на девборде интерфейс Z-контроллера от спека, который не поддерживается в emu, но там сначала все отладил с другим интерфейсом и только потом заменил. В данном случае, когда вектора у меня нет, без отладки в Emu не получится.
FAT16 для 8080
Собственно я и использовал доработанный xsd на девбордах и не только с v06cc но и с реализациями других компов на 8080.
- - - Добавлено - - -
Возможно я недопонял и микроконтроллер предлагается использовать только для интерфейса с sd-картой, без реализации в нем FAT. Тогда другое дело, если использовать интерфейс поддерживаемый Emu.
Было дело, использовал на девборде интерфейс Z-контроллера от спека, который не поддерживается в emu, но там сначала все отладил с другим интерфейсом и только потом заменил. В данном случае, когда вектора у меня нет, без отладки в Emu не получится.
Оффтопить - так оффтопить :)
А где можно познакомиться с xsd поближе? Ну, чтобы совсем близко :)
А контроллер - можно и с поддержкой FAT и просто в качестве преобразователя SPI в параллельные данные. Как нравится. Но, думаю, лучший вариант - SPI в CPLD. И компактно и железно.
Даже не буду пытаться сейчас найти архив xsd, это было где-то в теме связанной с РК86. Если b2m захочет, то подскажет. PVV развивает xsd под брендом SDOS (https://zx-pk.ru/threads/29892-sd-karta-i-sdos-dlya-8i-bitnykh-pk.html?highlight=sdos) (я у него позаимствовал работу с SDHC).
В общем и целом на моем векторе 06Ц.02 этот картридж не взлетел даже после замены ПЗУ на загрузчик Тимошенко....
Загрузчик тут вообще ни при делах.
Сейчас пробовал этот картридж (имитацию на макетной плате) на штатном заводском загрузчике.
Всё на 02-ом работает нормально. Игры запускаются.
Не в картридже дело. Нужно проверять ВВ55, разъём "ПУ", дорожки от ВВ55 до разъёма, на крайний случай управление ВВ55-ой.
В данном случае, чудес не бывает.
Между простым Вектором и 02-ым нет разницы в схеме подключения разъёма "ПУ". Если на простом Векторе картридж работает, то и на 02-ом будет работать.
Если Картридж не работает, по идее, можно написать не большой тест (запускать его, загрузив через магнитофонный вход, при подключенном картридже), который читает из Картриджа 32КБ и кидает их в экранную область.
Если запрограммировать все цвета разными, то можно идентифицировать потенциальную проблему с шиной данных ил адреса Картриджа (портов разъёма "ПУ").
Так как полученную картинку можно сравнить с результатом на эмуляторе.
Если картинки будут отличаться, то анализировать проблему. Если картинки совпадут... ломать голову дальше...
Для более четкой идентификации стоит прикрепить к тесту эталонный фрагмент, который должен быть считан (можно выбрать например 8 Кб), считать его же с картриджа и вывести на экран xor этих значений. При исправном картридже и векторе экран очистится, при неисправностях на экране будет мусор.
На своём реале этот тест не проверял, так как успел разобрать макетку на которой был собран картридж.
На эмуляторе тест картриджа: https://disk.yandex.ru/d/SuyBFh0vB4VjwA
даёт вот такую картинку: https://disk.yandex.ru/i/o3H_Rf96VL41Lw
Думаю, что при наличии проблем с портами, будут видны полосы или повторяющиеся блоки.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot