Страница 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 я у себя ставил. Так что в принципе могут быть и такие варианты. Хотя я думаю Инфотон широкого распространения не получил, да и вряд ли он у кого-то сейчас есть, так что можно все это не учитывать. Разве что, как я и сказал в качестве истории
Очень интересно. :idea:

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

Добавлено: Чт июл 06, 2006 9:52
Prusak
Spectre писал(а):Порт 0 при спектрумской архитектуре использоваться не может, потому что при попытке в него что-нибудь записать число попадет во все существующие порты.
Это при условии, что порты сделаны в железе с "кривой" выборкой по битам, т.е. при их выборке используется нулевое значение одного или нескольких битов. Обычно совместно с нулевыми используют единичные значения определенных битов, тогда при адресации нулевого порта ничего страшного не произойдет.

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