PDA

Просмотр полной версии : Вариант расширения памяти Spectrum



AzAtom
02.08.2016, 12:44
Добрый день.

Обзор: Есть процессор Z80 с АП (адресным пространством) 64 КБ, есть стандартное, фирменное расширение памяти до 128 КБ методом отображения 8 страниц по 16 КБ в окно 48-64 КБ АП процессора. Есть не фирменные, но тоже в своём роде стандартные расширения на 256 КБ, 512 КБ и 1024 КБ.
Далее, здесь, на форуме, просматривал темы, в которых уже были идеи подключить 4096 КБ в 16 КБ окно, используя один порт целиком.

Моя идея в следующем: Сделать 2 дополнительных порта и 2 окна в АП: 32-48 и 48-64 КБ, в которые через указанные порты можно подключить любую страницу из тех 256 по 16 КБ (4096 КБ).
Что это даёт и как можно использовать?
1. Программа пишет в неизменяемые 8 КБ (24-32 КБ) некий менеджер памяти, который будет переключать страницы как нужно. В 0 окне (32-48 КБ) может находится страница с кодом программы, а в 1 окне (48-64 КБ) может находится страница с данными. Например, если движок игры помещается в 1 страницу, то данные могут занимать несколько страниц. Для каждого уровня своя страница, для главного меню и настроек своя страница, для заставок тоже свои страницы. Если произошло событие, то его звуковое сопровождение может находится в отдельной странице. Если это большая прикладная программа, то разные исполняемые модули могут находится в разных страницах. Например, код текстового редактора может уместиться в 1 страницу, а данные могут спокойно занять много страниц.

2. Можно в те 8 КБ записать драйвер, управляющий выделением страниц и запуском программ, и программа из одной страницы может вызвать функцию из другой страницы. Тогда в памяти может находится драйвер виртуального диска и загружать данные в нужные страницы для другой программы и конфликтовать они не будут. Плюс - все программы можно писать для работы с одного адреса: 32768. В принципе, можно и оба окна одновременно использовать под код и данные, как обычно.

3. Можно в добавок к менеджеру памяти сделать что-то типа планировщика задач и система получится многозадачной. Даже если одновременная работа будет затруднена, то можно будет хотя бы переключаться между ними.

Конечно, первые 0-16 КБ с торчащим ПЗУ мозолит глаза и уменьшает непрерывную область. Можно будет и там подумать, как работать. Если отключить ПЗУ и перенести экран в 0-16 КБ, то можно будет там разместить менеджер, в 16-32 разместить страницу с кодом программы, а в 32-64 разместить страницу данных. Только тогда страницы будут разного размера, что вызовет сложности в дальнейшем.

Предлагаю обсудить эту идею. Какие достоинства и недостатки вы видите? Вопрос к программистам: Насколько это будет удобно лично вам?

s_kosorev
02.08.2016, 14:47
Схема?

null_device
02.08.2016, 16:49
Какие достоинства и недостатки вы видите?

Насколько все это совместимо со "старой" адресацией памяти 128К машины? На уровне портов, скорости страниц памяти и включением "банок" в нижних 48 К.

http://ecat.emuverse.ru/w/images/9/9b/RL_1994_02_01.png

bigral
03.08.2016, 00:33
Предлагаю обсудить эту идею. Какие достоинства и недостатки вы видите? Вопрос к программистам: Насколько это будет удобно лично вам?

Был тут такой, спекки-супер-стандартизатор BlackCat, слава богу он тебе не ответит уже. Вот от него за такие посты люди отгребали так что некоторые потом на форуме токо в readonly жили а некоторых более никто не видел. Но есть все шансы - у него есть свой форум где он уединился, если не страшно иди там предложи свою идею.

А по вопросу коротко: есть уже некоторые модели (ATM2) где такая гибкость и даже больше доступна. Проблема в том что писать софт только под такие "финты" (сильно непохожие на оригинал) значит не получить внимания владельцев обычных zx-ов. Приживаются только вещи которые дают "ощутимую разницу" (типа GS, Ts-conf) либо которые обратно совместимые и старый софт не видит разницы (trdos переделки).

AzAtom
03.08.2016, 10:36
Насколько все это совместимо со "старой" адресацией памяти 128К машины?
(Ерунду убрал) Я не предлагаю убирать порт 7ffd - он по прежнему понадобится для переключения ПЗУ, экранов и блокировки записи в порты, включая те 2 новых. А один из старших неиспользуемых битов можно пустить на флаг - сброшен - память 128 КБ и расширенные порты не используются, установлен - вместо порта 7ffd схема переключает страницы в соответствии со значениями из новых портов.

Насчёт использования АП 0-16 КБ - можно при отключении ПЗУ в эти адреса встраивать какое-либо внешнее устройство для обмена с ним данными, тогда все страницы будут по 16 КБ и будет возможно копирование из своей большой памяти в память внешнего устройства. Например, это будет полезно, если захочется подключить ISA'шную VGA видеокарту.
Даже, можно завести ещё один порт, который будет выбирать устройство, которое будет подключено в 0-16 КБ. При значении 0, например, ПЗУ самого компа, 1 и т.д. будут активировать разные устройства, например, по очереди можно подключать контроллер жёсткого диска, внешнюю видеокарту и т.д.

А какие проблемы могут быть со скоростью памяти? Она же вся с одной скоростью работает.

- - - Добавлено - - -


BlackCat, слава богу он тебе не ответит уже. Вот от него за такие посты люди отгребали
Не застал его. Он был модератор и против новых расширений?

Вообще, как-то расширяться нужно. IBM PC выехал только за счёт обновления, расширения и обратной совместимости. У спектрума, к сожалению, пока всё не так. В первую очередь, это процессор. Тут что-то видел про Z380, надо бы почитать подробнее.

Другая проблема в том, что с развитием технологий всякие схемки на коленке из рассыпухи не соберёшь как раньше. Нужно использовать что-то готовое, а что-то готовое уже есть на PC. Дилемма, в общем.

- - - Добавлено - - -


Схема?
Сначала нужно всё обдумать.

- - - Добавлено - - -


писать софт только под такие "финты" (сильно непохожие на оригинал) значит не получить внимания владельцев обычных zx-ов. Приживаются только вещи которые дают "ощутимую разницу" (типа GS, Ts-conf)
GS это звук? Так и эти вещи не для "обычного" zx. На моём экземпляре, например, нет звукового сопроцессора и все эти штуки не для меня. Единственное, звучащая программа может и у меня играть без проблем и без звука.

В целом ты прав, конечно, если нужна доработка, то люди её сделают, если она даёт хорошее преимущество. Основное - наличие программ, использующих это преимущество. Программы будут, если программисту будет удобно и интересно писать программу под данное расширение. Поэтому я и спросил программистов "будет ли удобно и эффективно работать с такой конфигурацией?"

null_device
03.08.2016, 10:49
Я не предлагаю убирать порт 7ffd

один из старших неиспользуемых битов можно пустить на флаг

А как насчет совместимости с расширением памяти pentgon 512K (http://zx-pk.ru/threads/11490-paging-ports-of-zx-clones.html)?!


А какие проблемы могут быть со скоростью памяти? Она же вся с одной скоростью работает.

Зависит от того, какую модель спектрума вы собрались "расширять" (http://zx-pk.ru/threads/16519-v-chem-otlichie-spektrumov-().html) и как будет устроен контроллер управления памятью.


это будет полезно, если захочется подключить ISA'шную VGA видеокарту

Есть ли на данный момент софт для этого, или - так, задел на будущее?


можно завести ещё один порт, который будет выбирать устройство,

например, по очереди можно подключать контроллер жёсткого диска

Что за контроллер: SMUC, NEMO или какой-то еще? Зачем для этого "отключать" ПЗУ из нижних 16К?
....
Лично для меня, пока - вопросов, больше, чем ответов.

Hacker VBI
03.08.2016, 13:18
AzAtom, готово (http://hype.retroscene.org/blog/dev/181.html)
очень удобно.