Video RAM in the ZX Spectrum.
Предистория вопроса такова: в доисторические времена видеорежимов было только два - стандартный и гигаскрин, и никто не задумывался о том, что в Спектруме есть две разных памяти – процессорная и видеопамять. Западные декаденты ещё слышали о том, что память бывает быстрая и медленная, хотя почему она медленная им в голову не приходило. Спустя двадцать лет, и после энного количества лет случайного замыкания ножек микросхем, AlСo наконец практически повторил 16 цветный видеорежим SamCoupe (да здравствует теория Дарвина! ). Так на Пентагоне появился видеорежим 16color, требующий под себя 64кб ОЗУ, т.е. половину от 128кб. Но даже после того как память 128го Пента была разделена пополам по A16’, никто и не задумался о существовании двух разных видов памяти. Но изобретательская мысля на месте не стояла, и появилась концепция линейного расширения видеорежимов, а с ними и линейного расширения видеопамяти. Т.е. видеопамять могла бы быть и полметра, и метр, и т.д...
К сожалению, создатели как firmware, так и software на Спектруме, до сих пор не учитывают тот момент, что память Спектрума – это не однородная память, а две разных памяти. На других компах никому не придёт в голову размещать базовый системный софт или постоянный рамдиск в ОЗУ видеокарты, такое было токо на Спектуме, и обуславливалось жутким дефицитом памяти в его древних моделях. В современных моделях такого дефицита уже нет, но о том, что память Спектрума неоднородная, по прежнему, никто не задумывается.
В этой связи предлагается:
1) учитывать на современных Спектрумах с большим ОЗУ разделение памяти по A16’ на видео ОЗУ(A16’=1) и процессорное ОЗУ(A16’=0). Поэтому, по крайней мере при создании firmware работающего с рамдиском, предлагается постоянный рамдиск размещать только по адресам с A16’=0.
2) кроме того при создании рамдиска в компьютерах с ОЗУ от 512k учитывать следующий порядок следования старших адресов ОЗУ:
- для архитектуры SKAY (Scorpion & KAY):
A17’=D7 #7FFD
A18’=D4 #1FFD
A19’=D7 #1FFD
A20’=D6 #7FFD
A21’=D5 #7FFD
- для архитектуры Pentagon:
A17’=D7 #7FFD
A18’=D6 #7FFD
A19’=D5 #7FFD
A20’=D4 #1FFD
A21’=D7 #1FFD
3) при написании программ для архитектуры SKAY (Scorpion & KAY) не использовать 16ю страницу ОЗУ (в Scorpion256 это была 8я страница).