Интересно,а почему последовательность пикселов сделали нелинейно.Изза упрощения схемо техники чтоли или что то типа защиты ULA от копирования?
Вид для печати
Интересно,а почему последовательность пикселов сделали нелинейно.Изза упрощения схемо техники чтоли или что то типа защиты ULA от копирования?
с точки зрения программирования скорее всего... просто такая последовательность очень удобна - особо если работать только с спрайтами кратными 8х8
Существует версия, что такая нелепая последовательность пикселов произошла из-за ошибки при проектировании или изготовлении микросхем ULA (БМК) на заводе компании Ferranti и спешки Синклера.
Микросхема ULA содержит в себе большую часть схемы Спектрума, а не только схему видео. Своеобразный "чипсет", едрен батон.
Было решено применять микросхему ULA Ferranti в целях снижения себестоимости компьютера. Такие микросхемы заказывались и изготавливались партиями в тысячи, а то и в десятки тысяч штук.
Вкратце:
В компании Ferranti мистер Синклер и Ко заказал партию микросхем, хотя сам компьютер и программное обеспечение ПЗУ Спектрума еще не было готово. Работа над доводкой схемы и программой ПЗУ велась параллельно с штамповкой ULA.
Было официально обьявлено, что выпуск ZX Spectrum начнется в апреле 1982 года, но, как выяснилось позже, что и к маю 1982 года Синклер не успевал создать законченный продукт. Выпуску мешали многочисленные несостыковки.
Например, несколько десятков тысяч выпущенных микросхем ULA Ferranti содержали в себе несколько ошибок. В их числе и перепутанный бит адресации экрана. Переделывать микросхемы было поздно - поджимали сроки, было решено править программное обеспечение в ПЗУ, благо оно все еще находилось в процессе разработки.
Вот и имеем мы такую кривую адресацию экрана. Не ясно, ругать Ferranti и Синклера с Компанией или хвалить за это...
Оченно познавательно.
Второй экран в в MSX весьма похож на ZX: те же три трети. Только адресация линейная: в пределах трети - как в знакогенераторе: по 8 байт сверху вниз.
А я себе такую штуку придумал для удобства расчёта адреса:
H L
010SGPIX STRSTOLB
Регистровая пара HL. 010 Это в регистре H. Это просто код #40. Адрес начала экрана. SG - это номер сегмента. Их три. 00, 01 и 10. Есть ещё "виртуальный", четвёртый, но он не виден. Потом PIX. Это текущая пиксельная линия...
Регистр L: STR - строка. Приращение = 32. Или #20. Что удобнее... Ну и STOLB. Столбец. Номер напрямую.
Только к сожалению такая здоровская формула ну блин никому не понятно... Наверное объяснять не умею... Но если кто разберётся, то никаких проблем с адресацией не будет... Можно влёт называть ЛЮБОЙ адрес на экране... Честно! Бывалый синклерюга поймёт, остальные - пожалуйста! Учитесь! Только с BIN, HEX и DEC системами потрудитесь разобратся...