Интересует архитектурное решение увеличения памяти на различных клонах ZX. На сколько знаю, общепринято испоьзовать порт 32765d для переключения страниц. Как там с теневым ОЗУ, адресуемом на 00000d..16383d, и на каких машинах. Какие еще порты используются?
У меня был Quorum 128+. Классня тачка. Жаль, сдохла.
Там 2 порта было. Первый 32765 как у всех. Другой 00000. С него можно было включать 0-ую траницу вместо ПЗУ. Использовалось для CP/M.
Порты памяти
Модератор: Spectre
32765d = #7ffd
Порт 0 при спектрумской архитектуре использоваться не может, потому что при попытке в него что-нибудь записать число попадет во все существующие порты. Правда при этом это число попадет и в порт памяти
, но такая адресация будет глючить на других клонах, так что лучше обращаться только так:
LD BC,#7FFD
LD A,#10
OUT (C),A
Порт 0 при спектрумской архитектуре использоваться не может, потому что при попытке в него что-нибудь записать число попадет во все существующие порты. Правда при этом это число попадет и в порт памяти

LD BC,#7FFD
LD A,#10
OUT (C),A
Код: Выделить всё
Вот описание всех получивших распространение стандартов:
----------------------------
----- Стандарты памяти -----
----------------------------
Для переключения памяти в Scorpion, KAY, Profi и ATM1 используется 2
порта - это #7ffd (0, 1 и 2-ой биты) + биты дополнительного порта.
Для Pentagon и ATM2 используется один порт (только #7ffd).
--------- Pentagon ---------
256K - используется 6-ой бит #7FFD
512K - используются 6 и 7 биты #7FFD
1024K - используются 5, 6 и 7 биты #7FFD
4096K - используются 5, 6, 7 биты #7FFD + 0,1 биты #AFF7
Примечание насчет последних двух: 5-ый бит в оригинальном спектруме
служит для отключения порта #7FFD, посему есть вероятность оказаться в
48-ом режиме.
------------ Scorpion/KAY ------------
256К - используется 4-ый бит #1FFD (Scorpion и KAY)
512K - не бывает
1024K Scorpion - используются 4, 6 и 7-ой биты #1FFD
1024K KAY - используются 4 и 6 биты #1FFD + 6-ой бит #7FFD
----- Profi -----
256К-1024К - используются 0, 1 и 2 биты #DFFD
Примечание: На Profi физически присутствует 4 линейки памяти (значения
0,1 2,3 4,5 и 6,7 в порту #DFFD). Линейки могут быть запаяны как РУ5
(64Кб), так и РУ7 (256Кб). Если памяти 1Мб, то все просто - стоит 4
линейки по 256Кб. Но большое количество Profi имеет 256К, 512К, 768К и
576К(!) памяти. Например, в Profi 576K используется 0,1,2,3 банки и четверть
7-ой банки памяти.
----- ATM-1 -----
256К - не бывает
512K - используются 0 и 1 биты #FDFD
1024К - используются 0, 1 и 2-ой биты #FDFD
Насчет 1024K: на оригинальном ATM-1 всегда было только 512Кб. 2-ой бит
порта #FDFD использовался при подключении ПЗУ объемом не 64Кб (27512)
как обычно, а 128Кб (271000). Он выбирал дополнительные 4 странички.
Но этот наворот практически никогда и нигде не использовался, даже в
ATM-2 (хотя сейчас разрабатывается новое ПЗУ на все 128Кб для ATM-2,
но не для ATM-1). Так что этот бит практически являлся неиспользуемым,
что и позволило народным умельцам его задействовать. То есть стандарт
неофициальный.
----- ATM-2 -----
256К и 512К - может и были, но я никогда не слышал
1024K: есть 2 способа адресации страниц: с использованием #7ffd+#fff7 и
только через #fff7. В #fff7 биты записываются инвертированные!
Раскладка битов порта #FFF7 такая:
0-5 - номер страницы (0-63).
6 - определяет, что это за страница: 0 - ROM, 1 - RAM
7 - Определяет сочетание #FFF7 и #7FFD. А именно: 0 - определяет
страницы только порт #FFF7, а 1 - инвертированные D0-D2 порта #FFF7
заменяются на неинвертированные D0-D2 из порта #7FFD. Биты старше них
продолжают браться из порта #FFF7.
Сам порт #FFF7 доступен только из TR-DOS ПЗУ. Биты в него записываются
инвертированные! Пример работы:
LD BC,#FFF7
LD A,n
CPL
CALL OUTC
...
OUTC LD HL,#2A53 ;здесь OUT (C),A:RET
PUSH HL
JP #3D2F
Спасибо за инфу!
По поводу 0-го порта. В Quorum он работает именно так, как я и сказал. А еще там порты дисковода другие. В общем клон, не совсем совместимый со спекки. И клава там расширенная. В общем, проблемы я имел с запуском некоторых программ. Сдох и ладно.
У всех машин 2-ая и 5-ая страницы отображаются по адресам 32768..49151 и 16384..32767 соответственно? Имеется в виду постоянное отображение в указанные адреса. В то же время их можо включить в верхней области (49152..65535).
По поводу 0-го порта. В Quorum он работает именно так, как я и сказал. А еще там порты дисковода другие. В общем клон, не совсем совместимый со спекки. И клава там расширенная. В общем, проблемы я имел с запуском некоторых программ. Сдох и ладно.
У всех машин 2-ая и 5-ая страницы отображаются по адресам 32768..49151 и 16384..32767 соответственно? Имеется в виду постоянное отображение в указанные адреса. В то же время их можо включить в верхней области (49152..65535).
Да, 128Кб на всех клонах реализованы одинаково, поскольку это стандарт Spectrum 128K. Фирменного спектрума с памятью больше 128К не было, поэтому каждый производитель придумал свой стандарт.У всех машин 2-ая и 5-ая страницы отображаются по адресам 32768..49151 и 16384..32767 соответственно? Имеется в виду постоянное отображение в указанные адреса. В то же время их можо включить в верхней области (49152..65535).
В оригинальном 128К спектруме:
#4000-7fff (16384-32767) - 5-я страница
#8000-#bfff (32768-49151) - 2-я страница
#c000-ffff (49152-65535) - 0-я страница (или любая 0-7)
Вместо ПЗУ на многих клонах можно включить 0-ю страницу ОЗУ, на каждом клоне способ разный. Это: Profi, KAY, Scorpion, ATM1, ATM2.
Также вместо ПЗУ можно включить теневое ОЗУ (или cache). Оно бывает 16Кб или 32Кб (тогда половинки переключаются так же как ПЗУ 48/128 через порт #7ffd). Теневое ОЗУ можно припаять к любому спектруму и много где это сделано. Особенно удобно завести обработку кнопки Magic в теневое ОЗУ, тогда если туда предварительно загрузить STS можно легко ломать программы. Включение: IN A,(#FB), выключение: IN A,(#7B).
Историческая справкаSpectre писал(а): ----- ATM-1 -----
256К - не бывает
512K - используются 0 и 1 биты #FDFD
1024К - используются 0, 1 и 2-ой биты #FDFD

Была такая шняга как Инфотон. По портам расширеной памяти совпадал с АТМ-1. Соответственно можно было там помимо дефолтных 128Кб заиметь 256, 384, 512Кб и по идее 1024Кб, но это уже не гарантирую, давно было - не помню. Но варианты с 256, 384 и 512 я у себя ставил. Так что в принципе могут быть и такие варианты. Хотя я думаю Инфотон широкого распространения не получил, да и вряд ли он у кого-то сейчас есть, так что можно все это не учитывать. Разве что, как я и сказал в качестве истории

ужас 

Очень интересно.eXe.EG писал(а):Была такая шняга как Инфотон. По портам расширеной памяти совпадал с АТМ-1. Соответственно можно было там помимо дефолтных 128Кб заиметь 256, 384, 512Кб и по идее 1024Кб, но это уже не гарантирую, давно было - не помню. Но варианты с 256, 384 и 512 я у себя ставил. Так что в принципе могут быть и такие варианты. Хотя я думаю Инфотон широкого распространения не получил, да и вряд ли он у кого-то сейчас есть, так что можно все это не учитывать. Разве что, как я и сказал в качестве истории

Но мой драйвер памяти (который в QC) все равно проверяет все доступные банки и отбраковывает недоступные. Так что будет работать и на 144Кб по стандарту АТМ1.

Это при условии, что порты сделаны в железе с "кривой" выборкой по битам, т.е. при их выборке используется нулевое значение одного или нескольких битов. Обычно совместно с нулевыми используют единичные значения определенных битов, тогда при адресации нулевого порта ничего страшного не произойдет.Spectre писал(а):Порт 0 при спектрумской архитектуре использоваться не может, потому что при попытке в него что-нибудь записать число попадет во все существующие порты.
В каком-то тесте была запись в нулевой порт, может это была проверка компа "на вшивость", но мой комп глюкал на этом тесте, пока не сделал нормальную адресацию портов расширения.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость