Video RAM in the ZX Spectrum
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я страница).