Добрый день,
возможна ли модернизация использующая картриджи, как для денди, но для спектрума?
С меню, выбрал программу, нажал ентер и никаких тебе проблем..
Добрый день,
возможна ли модернизация использующая картриджи, как для денди, но для спектрума?
С меню, выбрал программу, нажал ентер и никаких тебе проблем..
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Возможна. Картриджи даже производились серийно. Для фирменного ZX.
Для клонов - возможно. В союзе производилась игровая приставка на базе спектрума.
С ограничением: занимали 16кб нижней памяти, замещая ПЗУ с барсиком. И больше размером их сделать было низзя.
Ессно в эти 16кб нужно было еще положить знакогенератор, калькулятор и кучу других подпрограмм из стандартного ПЗУ. Под игру места оставалось мизер.
Который год ищу упоминание, о нашем девайсе. Щупал руками в 1995м.
Суровый НЕзаводской клон, 48к. Ужасный на вид, совсем.
НО!
Со слотом под карик. и с кариком в наличии.
На карике было емнип пять толстых 48к игр, Cybernoid там точно был.
Сам карик тоже кустарной пайки, ППЗУ с пластырями на окошках.
Запускалось меню карика какой-то хитровывернутой командой, в упор её не помню. Появлялся нумерованный список игр и реклама производителя, опять не помню чья.
У меня тогда уже был Пентагон128+5,25 флопик - потому меня это не впечатлило.
А сейчас обидно, особенно что этот раритет потом мной же был тупо разобран на запчасти. ПЦ.
Больше никогда не встречал ничего подобного.
Искал в сети уже в это время, тишина. Кариковые системы делали еще в Новосибирске, но не то.
Про приставку "Эльф! ессно в курсе - тоже не то. Такие дела.
З.Ы. Помню что игры загружались не мгновенно. а секунд за пять. Причем на экране были короткие цветные полоски по бордюру. Немного похоже на работу микродрайва, хотя я его только в эмуле видел.
«Земля - слишком маленькая и хрупкая корзина, для того чтобы человечество держало в ней все свои яйца…» - Роберт Энсон Хайнлайн.
Электроника МК-61, Psion series 5mx.
Всем умеющим читать советую http://www.skeptik.net/conspir/moonhoax.htm http://lurkmore.to/Лунный_заговор
В ZX-Ревю 1-2 1996 была интересная статья:
© Пирогов А.В., Нижний Новгород, 1995.
ROM-Drive
Ни для кого не секрет, что в последнее время "Спектрумы" испытывают сильную конкуренцию со стороны всевозможных видеоприставок. Одно из несомненных преимуществ последних - "мгновенная" загрузка игр из ПЗУ картриджа. Высокая стоимость картриджей, судя по всему, не является препятствием для любителей игр на приставках.
Разработанная, мной система "ROM-Drive", которую я хочу предложить Вашему вниманию, основана на применении микросхем ПЗУ D2764-D27512 с записанными в них программами пользователя (ПП). Она позволит Вам:
а). Имея ROM-версии любимых игр, загружать их нажатием одной кнопки за несколько миллисекунд;
б). Иметь под рукой "запас" системных и прикладных программ, которые не только "мгновенно" загружаются, но и не подвержены ошибкам при загрузке (по этому пути пошли и разработчики одного из самых популярных компьютеров "Скорпион" при разработке профессионального ПЗУ). Долговечность таких программ на несколько порядков выше, чем у кассет или дискет;
в). Будучи применённой в школах (учебные программы, "зашитые" в ПЗУ) или в игровых автоматах, позволит сэкономить массу времени.
При всем этом система нисколько не ухудшает совместимости компьютера с программным обеспечением на кассетах и дискетах.
Аппаратная часть системы очень проста и может быть собрана радиолюбителем за 1 час. Доработка компьютера заключается в установке 3-х дополнительных микросхем: D1, D2-К555ЛЛ1, D3-К555ТМ2 и панельки под ПЗУ пользователя D4. Вся схема может быть подключена через системный разъём или смонтирована внутри компьютера - в этом случае панелька под ПЗУ устанавливается на корпусе компьютера. Принципиальная схема приведена на рис.1.
Система работает по принципу "теневого ПЗУ". В ПЗУ пользователя (ПЗУ-П) D04 записывается программа пользователя (ПП) по приведённым ниже правилам. Система начинает работу, если при замкнутом S1 нажать кнопку "сброс". При этом происходит следующее:
а). системное ПЗУ (ПЗУ-С) отключается (/CSSYS=1), вместо него включается ПЗУ-П (/CSUSR=0) объёмом от 8 до 64 Кб. С адреса 0000H в нём находится ROM-загрузчик ПП, который сразу начинает делать своё дело.
б). запрещается чтение данных из ОЗУ (сигналом /CSSYS), и мы получаем как бы два адресных пространства: первое-ПЗУ-П с 0000H до FFFFH (при объёме ПЗУ 64 Кб), работающее только на чтение, и второе-ОЗУ, работающее только на запись.
в). ROM-загрузчик ПП с помощью одной или нескольких команд LDIR перемещает блоки кодов из ПЗУ-П в необходимые места ОЗУ. В частности, Вы можете загрузить что-нибудь в любую страницу дополнительного ОЗУ 128-х машин, т.к. работа портов не нарушается.
г). как только размещение программы в ОЗУ закончено, ей передается управление с помощью команды JP ADDR, где ADDR - стартовый адрес программы (в диапазоне 4000H-FFFFH), При этом вырабатывается импульс /SET=0 и триггер D3 отключает ПЗУ-П, подключает ПЗУ-С, разрешает чтение ОЗУ (в общем, почти как в контроллере дисководов). Программа пользователя начинает работать как ни в чём не бывало.
Обратите внимание, что если S1 остается замкнутым, новое нажатие кнопки "сброс" не приведёт к очистке памяти, а снова запустится ROM-загрузчик, который, если его написать соответствующим образом, может, например, подгрузить уровень блочной игры или выполнить другие задачи (скажем, POKES).
Последний раз редактировалось creator; 24.09.2015 в 11:56.
В правильно заданном вопросе содержится половина ответа
Правила написания ROM-версий программ.
Программа для ROM-Drive представляет собой файл или несколько файлов, которые будут записываться в ПЗУ пользователя.
В принципе, программу писать не надо, а надо написать простейший загрузчик в кодах, стартующий с адреса 0000Н и расположит в ПЗУ блок (блоки) кодов с какого-то адреса (адресов) "Обязанности" загрузчика заключаются в том, что обычно делает BASIC: устанавливает цвет бордюра, системные переменные, делает POKES и т.п.; а также в том, чтобы перебросить командами LDIR блоки кодов на свои места (с адресов в ПЗУ - по адресам, которые известны из BASICa.) Причём не нужно заботиться о неперекрытии областей блока-источника и блока-назначения: всё равно данные считываются только из ПЗУ, а записываются в "другое адресное пространство" - ОЗУ, даже если их адреса одинаковы.
При написании загрузчика необходимо учитывать следующие правила:
а). Во время работы загрузчика системное ПЗУ недоступно. Например, если Вам очень нужно вывести сообщение, Вы должны либо иметь в ПЗУ-П подпрограмму вывода символов и символьный набор, либо "не мудрить" и нарисовать сообщение в ART-STUDIO. Вывод картинки с сообщением на экран сведётся к одной команде LDIR.
б). Во время работы загрузчика нельзя ничего прочитать из ОЗУ (туда можно только записать): в частности, нельзя пользоваться стеком и командами CALL, RST. Поэтому подпрограммы загрузчика не должны хранить что-либо в ОЗУ: сохранить-то сохранишь, но не прочитаешь, пока не передашь управление в ОЗУ.
в). Во время работы загрузчика прерывания должны быть запрещены, в противном случае Вы должны будете разместить с адреса 0038Н программу обработки прерываний (простейшая программа состоит из одного оператора RET).
Приведу для примера целый загрузчик игровой программы, очень простой для понимания основной идеи.
Пусть мы имеем "игрушку", состоящую из бейсиковского загрузчика, заставки длиной 6912 байт и блока кодов длиной 38000 байт, причём в бейсике сказано:
Подсчитав сумму длин 2-х блоков кодов (6912+38000= 44912), приходим к выводу, что нам нужно ПЗУ типа D27512 объёмом 64К. В свободном месте ПЗУ (около 20К) можно разместить ещё одну небольшую программу, но об этом пока говорить не будем. Недолго думая, пишем ROM-загрузчик, основываясь на тексте бейсика:Код:10 BORDER 0: PAPER 0: INK 0: CLEAR 25999 20 LOAD "SCREEN"CODE 16384 30 LOAD "codeHCODE 26000 40 POKE 32550,201 50 RANDOMIZE USR 60000
г) Обратите внимание на то, чтобы передача управления в ОЗУ была сделана ОДНИМ оператором JP. Например, если загрузчик исходной кассетной версии заканчивался словами:Код:00000 DI ; прерывания лучше запретить XOR А ; А=0 LD (23624),А ; установка чёрного цвета бордюра OUT (#FE),A LD SP,25999 ; примерно то же, что и CLEAR (цвета чернил и бумаги менять не будем) LD HL,00256 ; с этого адреса в ПЗУ будет блок SCREEN LD DE,16384 ; на этот адрес он будет переброшен LD ВС,06912 ; это его длина LDIR ; заставка уже на экране! LD ВС,#7FFE ; ждём нажатия "пробела", иначе картинка сразу пропадет IN А,(С) LOOP BIT 0,А JR NZ,LOOP LD HL,(256+6912) ; сразу за заставкой в ПЗУ расположим блок code, поэтому его адрес-такой. LD DE,26000 ; адрес назначения блока code LD ВС,38000 ; длина блока code LDIR ; кодовый блок загружен! LD А,201 ; число для РОКЕ LD (32550),А ; РОКЕ готово! JP 60000 ; 3апуск!!! ………………………………………………………………………………………………………………………………………………………………………………………… 00056 RET ; это "программа обработки прерываний". ………………………………………………………………………………………………………………………………………………………………………………………… 00256 <здесь находится блок SCREEN>. ………………………………………………………………………………………………………………………………………………………………………………………… 07168 <а здесь - блок code (07168=256+6912)> …………………………………………………………………………………………………………………………………………………………………………………………
LOAD "ABC" CODE 25000: RANDOMIZE USR 25000: RANDOMIZE USR 43560
т.е. два вызова подпрограмм, то в ROM-загрузчике Вы должны разместить, эти вызовы (запускающий модуль) в ОЗУ и передать управление на первый из них. У Вас должно получиться что-то вроде:
Можно сделать и по другому - иметь готовый запускающий модуль в ПЗУ, перебросить его в ОЗУ и передать на него управление.Код:LD HL,<адрес начала блока ABC в ПЗУ> LD DE,25000 LD ВС,<длина блока АВС> LDIR ; загрузили блок в ОЗУ LD HL,16384 ; здесь в ОЗУ будет запускающий модуль LD A,#CD ; код инструкции CALL LD (HL),A ; в ОЗУ его ! INC H ; следующий адрес LD ВС,25000 ; операнд для CALL LD (HL),С ; младший байт - в ОЗУ! INC HL LD (HL),В ; старший байт - в ОЗУ! INC HL LD А,#С3 ; код инструкции JP LD (HL),А ; в ОЗУ! INC HL LD ВС,43560 ; операнд для JP LD (HL),С ; младший байт - в ОЗУ! INC HL LD (HL),В ; Теперь с адреса 16384 у нас есть модуль: ; CALL 25000 ; JP 43560 JP 16384 ; Выход из ПЗУ пользователя и запуск программы
В общем, адаптация программ под ROM-Drive не сложнее, чем адаптация кассетных версий под TR-DOS. Однако, к каждой программе нужен индивидуальный подход.Код:LD HL,<адрес начала блока ABC в ПЗУ> LD DE,25000 LD ВС,<длина блока АВС> LDIR ; загрузили блок в ОЗУ LD HL,ROMADR ; адрес запускающего модуля в ПЗУ LD DE,16384 ; сюда будет переброшен запускающий модуль, LD ВС,00006 ; длина которого 6 байт LDIR ; загрузили запускающий модуль JP 16384 ; и - вперёд! ………………………………………………………………………………………………………………………………………………………………………………………… ROMADR CALL 25000 ; Это и есть JP 43560 ; наш запускающий модуль. *****
Если кто-то знает способ запуска Magic-файлов в TR-DOSe, может попытаться написать ROM-загрузчик таких файлов из ПЗУ. Преимущества очевидны: этот загрузчик может быть универсальным (или почти универсальным) для всех ПП и производство ROM-версий можно "поставить на поток".
В конечном результате у Вас должен получиться файл длиной 8, 16, 32 или 64Кб. В последнем случае проще сделать 2 файла по 32Кб. Неиспользованную часть ПЗУ лучше заполнить кодами #FF - это облегчит внесение изменений.
Полученный файл должен быть записан в ПЗУ соответствующей ёмкости:
8Кб - D2764 или К573РФ4(РФ6)
16Кб - D27128
32Кб - D27256 или К573РФ8
64K6 - D27512
Если в Вашей местности нет программаторов к "Спектруму", перенесите файл на IBM-овский диск (например, через iS-DOS). Возможно, у кого-то найдется IBM с программатором.
Наиболее оправданным (по соотношению цена/ёмкость) я считаю D27512. (Её цена на рынках разных городов составляет 2-3$). В случае записи нескольких ПП в одно ЦЗУ, нужно ввести в ROM-загрузчик программу, позволяющую пользователю выбрать необходимую ПП (например, из меню).
Что ещё не сделано?
Недостатки системы очевидны:
а). малая ёмкость ПЗУ-картриджа - 64К при использовании D27512;
б). невозможность поочередной "подгрузки" уровней в блочных играх и других программах (без применения кнопки "сброс").
Возможные пути их устранения:
а). Можно применить страничную организацию ПЗУ-П и устанавливать либо несколько микросхем D27512, либо микросхему D271000 (128Кб при цене 5-6$) или D274000 (512Кб при цене 12-15$). Для управления страницами вполне возможно использовать порт FEH.
б). Посмотрите на схему контроллера дисководов Beta Disk Interface. Схема селектора адресов, применённая для входа в ПЗУ TR-DOS'a (обычно делается на микросхеме К555ЛА2), вполне подойдёт для входа в ПЗУ-П, только диапазон адресов для входа должен быть иным. Не исключена возможность использования общего селектора TR-DOSом и ROM-Drive, однако тогда будет нужен коммутатор "диск"-"ПЗУ".
Мной сделана ROM-версия игры TETRIS-2 фирмы Golden Triangle, записанная в ПЗУ D27256. Работа игры проверена на компьютере "Ленинград-1", оборудованом ROM-Drive. При замкнутом переключателе S1 (см. рис. 1) игра начинается сразу после включения компьютера, однако хочу предупредить, что лучше в общем случае сначала произвести обычный сброс, а потом включать ROM-Drive.
Последний раз редактировалось creator; 24.09.2015 в 11:49.
В правильно заданном вопросе содержится половина ответа
В фирменном 48/16к нельзя - нельзя было перекрыть ОЗУ, да и в наших клонах доработка нужна - см ниже.
Хм. Я в 1995м уже играл с карика, на котором было несколько "толстых" 48к игр.
И точно помню, что бутменю запускалось командой из 48к Бейсика. Но в упор не помню какой.
---------- Post added at 13:40 ---------- Previous post was at 13:35 ----------
З.Ы. Зарубежный ресурс по картриджам для фирменных ZX. Много инфы.
http://www.fruitcake.plus.com/Sincla...urceCentre.htm
Почему на оригинале нельзя было больше 16к, дядя Клайв на контакте сэкономил.Since the Spectrum does not provide a /RAMCS (RAM Chip Select) line on its edge connector (unlike the ZX81), there is no way to page into the memory map more than 16K of ROM at a time.
Последний раз редактировалось Бука; 24.09.2015 в 13:42.
«Земля - слишком маленькая и хрупкая корзина, для того чтобы человечество держало в ней все свои яйца…» - Роберт Энсон Хайнлайн.
Электроника МК-61, Psion series 5mx.
Всем умеющим читать советую http://www.skeptik.net/conspir/moonhoax.htm http://lurkmore.to/Лунный_заговор
для "Компаньон-1" были ром-картриджи.
от производителя.
дорогие были, поэтому ни одного приобрести не удалось.
подключались сбоку в свой системный разъем.
работало всё это через 580ВВ55.
в ПЗУ была поддержка всего этого дела.
сзади компа была кнопка "Старт" (по сути NMI).
при нажатии на неё появлялась менюшка.
ну и дальше выбиралось из списка нужное.
Хороший.. Плохой.. Главное - у кого ружьё !!
Опять не то... У буржуев на сайте куча вариантов, http://www.fruitcake.plus.com/Sincla..._RC_Custom.htm
http://www.fruitcake.plus.com/Sincla...Cartridges.htm
С разными мапперами, и вроде аж до 4х мегов докачали.
Даже веселые испанцы сваяли свой вариант, на 512кб РОМ с 10*48к SNA
«Земля - слишком маленькая и хрупкая корзина, для того чтобы человечество держало в ней все свои яйца…» - Роберт Энсон Хайнлайн.
Электроника МК-61, Psion series 5mx.
Всем умеющим читать советую http://www.skeptik.net/conspir/moonhoax.htm http://lurkmore.to/Лунный_заговор
http://www.fruitcake.plus.com/Sincla...Cartridges.htm
а вот это уже интересно. есть у меня микрухи 29С020.
по какой схеме мне картридж собрать что-бы несколько игрух размером больше 16кб залить? как он вообще работает?
---------- Post added at 11:34 ---------- Previous post was at 10:28 ----------
допустим вот в этой схеме если использовать микру 29С020 как она себя будет вести?
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)