Страница 1 из 1
Добавлено: Вс июл 02, 2006 14:27
darkSAM
Интересует архитектурное решение увеличения памяти на различных клонах ZX. На сколько знаю, общепринято испоьзовать порт 32765d для переключения страниц. Как там с теневым ОЗУ, адресуемом на 00000d..16383d, и на каких машинах. Какие еще порты используются?
У меня был Quorum 128+. Классня тачка. Жаль, сдохла.
Там 2 порта было. Первый 32765 как у всех. Другой 00000. С него можно было включать 0-ую траницу вместо ПЗУ. Использовалось для CP/M.
Добавлено: Вс июл 02, 2006 16:03
Spectre
32765d = #7ffd
Порт 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
Добавлено: Вс июл 02, 2006 17:11
darkSAM
Спасибо за инфу!
По поводу 0-го порта. В Quorum он работает именно так, как я и сказал. А еще там порты дисковода другие. В общем клон, не совсем совместимый со спекки. И клава там расширенная. В общем, проблемы я имел с запуском некоторых программ. Сдох и ладно.
У всех машин 2-ая и 5-ая страницы отображаются по адресам 32768..49151 и 16384..32767 соответственно? Имеется в виду постоянное отображение в указанные адреса. В то же время их можо включить в верхней области (49152..65535).
Добавлено: Вс июл 02, 2006 23:51
Spectre
У всех машин 2-ая и 5-ая страницы отображаются по адресам 32768..49151 и 16384..32767 соответственно? Имеется в виду постоянное отображение в указанные адреса. В то же время их можо включить в верхней области (49152..65535).
Да, 128Кб на всех клонах реализованы одинаково, поскольку это стандарт Spectrum 128K. Фирменного спектрума с памятью больше 128К не было, поэтому каждый производитель придумал свой стандарт.
В оригинальном 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).
Добавлено: Ср июл 05, 2006 19:23
eXe.EG
Spectre писал(а): ----- ATM-1 -----
256К - не бывает
512K - используются 0 и 1 биты #FDFD
1024К - используются 0, 1 и 2-ой биты #FDFD
Историческая справка
Была такая шняга как Инфотон. По портам расширеной памяти совпадал с АТМ-1. Соответственно можно было там помимо дефолтных 128Кб заиметь 256, 384, 512Кб и по идее 1024Кб, но это уже не гарантирую, давно было - не помню. Но варианты с 256, 384 и 512 я у себя ставил. Так что в принципе могут быть и такие варианты. Хотя я думаю Инфотон широкого распространения не получил, да и вряд ли он у кого-то сейчас есть, так что можно все это не учитывать. Разве что, как я и сказал в качестве истории
Добавлено: Ср июл 05, 2006 22:12
Spectre
eXe.EG писал(а):Была такая шняга как Инфотон. По портам расширеной памяти совпадал с АТМ-1. Соответственно можно было там помимо дефолтных 128Кб заиметь 256, 384, 512Кб и по идее 1024Кб, но это уже не гарантирую, давно было - не помню. Но варианты с 256, 384 и 512 я у себя ставил. Так что в принципе могут быть и такие варианты. Хотя я думаю Инфотон широкого распространения не получил, да и вряд ли он у кого-то сейчас есть, так что можно все это не учитывать. Разве что, как я и сказал в качестве истории
Очень интересно.
Но мой драйвер памяти (который в QC) все равно проверяет все доступные банки и отбраковывает недоступные. Так что будет работать и на 144Кб по стандарту АТМ1.
Добавлено: Чт июл 06, 2006 9:52
Prusak
Spectre писал(а):Порт 0 при спектрумской архитектуре использоваться не может, потому что при попытке в него что-нибудь записать число попадет во все существующие порты.
Это при условии, что порты сделаны в железе с "кривой" выборкой по битам, т.е. при их выборке используется нулевое значение одного или нескольких битов. Обычно совместно с нулевыми используют единичные значения определенных битов, тогда при адресации нулевого порта ничего страшного не произойдет.
В каком-то тесте была запись в нулевой порт, может это была проверка компа "на вшивость", но мой комп глюкал на этом тесте, пока не сделал нормальную адресацию портов расширения.