PDA

Просмотр полной версии : Альтернативный ZX Spectrum 1982г для игрового применения



_Andrey
08.04.2010, 18:53
Какие изменения фирменного ZX Spectrum 1982 года нужны были бы для улучшения игрового применения, при условии:
1) Аппаратные ресурсы те же.
2) Разработчики те же. Виккерс и Альтвассер
3) Возможно изменения в ПЗУ

Интересует, насколько полно реализовали потенциал аппаратной части ZX Spectrum

Из высказываний на форуме, прессы, своих наблюдений знаю несколько:
Аппаратное
1) Организация экрана по столбцам. Предложил Lethargeek. Даёт быстрое перемещение по строкам по всему экрану, а не по третям. 2 атрибута на знакоместо. Минус 768 байт ОЗУ под атрибуты.
2) Атрибуты 16 цветов без мерцания. RGBIrgbi. На перспективу т.к. реально в 1-2 версии были
проблемы с качеством отображением цвета.
3) Бордюр 16 цветов.
4) Сигнал прерывание на бит порта FEH. Более надежная и стандартная замена порта FFH
5) На краевой разъем добавить сигнал блокировки ОЗУ для наращивания ОЗУ более 48К
Программное
1) Хедер с адресами подпрограмм
2) ПП работы с магнитофоном с настройками скорости (как в Амстрад СРС) и кодом Манчестер 2. (+ возможно совместимость с ZX80/81) Дает большую надежность и скорость загрузки игр.
3) Программная подстройка уровня чувствительности, регулируемая битом MAG_OUT.

Какие еще возможности остаются?

P.S. Раздел Концепции. Знание о возможных направлениях развития в прошлом показывает влияние концепции на реализацию. Потенциал и векторы движения для современных концепций и реализаций.

Conan
08.04.2010, 20:32
Какие изменения фирменного ZX Spectrum 1982 года нужны были бы для улучшения игрового применения, при условии:
1) Аппаратные ресурсы те же.
2) Разработчики те же. Виккерс и Альтвассер
3) Возможно изменения в ПЗУ
Вопрос поставлен некорректно по двум причинам:
1. Аппаратные ресурсы, код в ПЗУ и другие особенности сами по себе не определяют "игровое применение". Многие компьютеры, конкуренты ZX Spectrum превосходили его программно или аппаратно (тот же BBC Micro), но столь же массового "игрового применения" не получили. Ибо были еще: цена, доступность, простота использования, дизайн, целевая аудитория потребителей, время выхода на рынок и т.д.

2. Пункт "2)" накладывает ограничение по ресурсам и времени. А значит реализация любого дополнительного функционала могла быть только в ущерб чему-то.


Интересует, насколько полно реализовали потенциал аппаратной части ZX SpectrumРеализовали кто? Разработчкики доп. периферии? Или программисты? В общем и тот и другой потенциалы очень полно. И железом ZX Spectrum обвешен, так что не выдерживал и программы на любой вкус.


P.S. Раздел Концепции. Знание о возможных направлениях развития в прошлом показывает влияние концепции на реализацию. Потенциал и векторы движения для современных концепций и реализаций.Это как надо понимать: мы посмотрели в "хрустальный шар" прошлого, увидели, что там не доделали Альтвассер с Виккерсом и прямиком по их "замыслам" доделали?
Тогда ответ такой: не реализован код, ZX Interface I (позволявший упростить железо). Судя по всему железо этого контроллера изначально планировалось более простым (как у ZX Printer), а его поддержка должна была оказаться интегрированной во встроенной ПО.
Только что это дает нам сейчас?

Black_Cat
08.04.2010, 21:14
1) Аппаратные ресурсы те же.
2) Разработчики те же. Виккерс и Альтвассер
3) Возможно изменения в ПЗУ

Интересует, насколько полно реализовали потенциал аппаратной части ZX SpectrumВсе твои предположения мимо. Насамделе действительно при Альтвассере с Виккерсом Спек мог бы быть несколько другим, но не в том, что ты предположил.


3) Программная подстройка уровня чувствительности, регулируемая битом MAG_OUT.дык это же реализовано в Спеке..

_Andrey
09.04.2010, 05:43
Не так выразился.
Как нужно было бы изменить фирменный ZX Spectrum для улучшения графики.
Условия те же ресурсы и мало времени. Примеры привел: другая адресация экрана, атрибуты и тд.
Еще что нибудь подобное есть?

Vadim
09.04.2010, 07:29
Жаль, что ПЗУ спектрума не содержит ни BIOS ни чего-то подобного. Всё ПЗУ занимает интерпретатор бейсика. В конструкцию не заложена модульность, нет возможности расширения того же ПЗУ (кроме добавленных страничек в 128-м, а это не то). В MSX куда как лучше сделано было. Если бы ПЗУ спектрума содержало BIOS и программу начального запуска, а во второй странице (по аналогии с 128) был бы интерпретатор, или была бы возможность подключать блоки ПЗУ по желанию в любой окно (по 16К) - было бы гораздо лучше. А так авторы сделали простенький игровой компьютер практически неспособный к расширению.

Segfault
09.04.2010, 08:07
по теме ничего не скажу, но поскольку понимаю откуда настроения создавать такие треды подкидываю пищу для размышлений http://ru.wikipedia.org/wiki/SAM_Coup%C3%A9

Raydac
09.04.2010, 09:13
ну сделали бы 4 бита на пиксель и что? и в четыре раза уронили бы производительность и половина спековских игр просто никогда бы не заработалаб, пошел бы ЧВ на такой тачке? угу, в четыре раза упрощенный что бы графика не тормозила.. "на правах рекламы" -> лучще zx-poly никто ничего не придумал, а он мог быть действительно собран года с 1986 го думаю

psb
09.04.2010, 09:58
а он мог быть действительно собран года с 1986 го
и был бы в 3 раза дороже? ;)

Raydac
09.04.2010, 10:00
и был бы в 3 раза дороже? ;)
как видишь, вопрос о стоимости среди технических не поднимается :)

Vadim
09.04.2010, 10:23
ну сделали бы 4 бита на пиксель и что? и в четыре раза уронили бы производительность и половина спековских игр просто никогда бы не заработалаб,

Отчего ж? Как в Sam Coupe разве нельзя было сделать? Т.е. несколько видеорежимов. В 3 раза больше комп бы не стал стоить. Самое главное - расширяемость была не предусмотрена. Ни дисковая система ни что-либо ещё. Вся периферия на спеке делается в виде заплаток или подмены ПЗУ, перехвата каких-либо точек. Это гланды через анал лечить, как вы понимаете. В этом и была основная проблема. Аффтары изначально заложили в него грабли. И с 1985г, собственно, он уже и не был среди первых продаваемых. Лучше машинки уже появились.

Raydac
09.04.2010, 10:29
если у нас надо выставить один бит что бы точка загорелась то это берет X ресурсов процессора, что бы выставить 4 бита возьмет Y, Y>X как ни выкручивайся, значит заливка того же экрана или сдвиг его средствами проца будет медленнее и половина игр начнет или безбожно тормозить или вообще не выйдет так как авторы не удовлетворятся результатом тестов

Black_Cat
09.04.2010, 11:54
Аффтары изначально заложили в него граблиты не учитываешь, что Спектрум насамделе делался не с нуля, а был в определённой степени развитием предыдущей модели. Это обусловлено тем, что Синклер хотел сэкономить на разработке фирмваре, использовав с минимальными изменениями код из ПЗУ предыдущей модели. Так что особо там Виккерсу было не размахнуться, он был довольно жёстко ограничен. Аналогично и Альтвассер был вынужден надстраивать новую архитектуру поверх особенностей, на которые было завязано старое ПЗУ.

Vadim
09.04.2010, 12:36
если у нас надо выставить один бит что бы точка загорелась то это берет X ресурсов процессора, что бы выставить 4 бита возьмет Y, Y>X как ни выкручивайся, значит заливка того же экрана или сдвиг его средствами проца будет медленнее и половина игр

Читать умеем? Какая половина? У нас несколько режимов. Не только 4 бита на точку. Хочешь быстрее юзай монохром, хочешь цветастее - соответственно x бит на точку. Где я написал что всё будет в 16-ать цветов на точку? А в реальном спектруме нет никаких альтернатив. 6912 байт на экран с атрибутами и кривой раскладкой. Ведь нигде не сказано что можно было в след модели поставить и проц пошустрее и аппаратный LDIR сделать, который бы за 4 такта копию байтов делал бы. Есть игры динамичные, есть не очень. Те, которые не очень и могли бы использовать другие режимы это раз. При битплановой графике мы можем иметь очень цветастый фон и монохромные спрайты это два и при том гораздо быстрее чем на спектруме, т.к. фон сохранять не надо. То что спектрум был одним из первых не причина что бы не говорить о тупостях в него заложенных. Тот же ПыЦы был сделан и представлен публике в 1981г. Да, тоже был уродец, но ведь сделан был так, что они плавно его улучшали. Я очень внимательно читал сайтик где расписана без прикрас история появления спектрума. Клайв Синклер просто хотел много бабла, но был жадным и недальновидным. Цели сделать хороший комп не было. Всего 2 разработчика сделали примитивную машинку и только волей неведомых сил он не был забыл ещё в 1984г и пришёл потом в СССР. Просто парадоксальная ситуация. Многие лучше машины не дошли.

---------- Post added at 14:36 ---------- Previous post was at 14:35 ----------


ты не учитываешь, что Спектрум насамделе делался не с нуля,

Я и говорю, жадный до бабок хозяин бизнеса.

Black_Cat
09.04.2010, 13:04
Тот же ПыЦы был сделан и представлен публике в 1981г. Да, тоже был уродец, но ведь сделан был так, что они плавно его улучшали.:) да, и стоил он тогда раз в 50!!! дороже Спектрума :) . В том и состоит гениальность Альтвассера, что он из ничего смог сделать конфетку, а с деньгами и дурак смог бы :) . Более того, половину возможностей Альтвассеру пришлось выкинуть чтоб влезть в бюджет, но эти возможности должны были быть задействованы в следующих моделях.. если бы конечно Синклер не кинул на деньги основных разработчиков..

Vadim
09.04.2010, 13:34
да, и стоил он тогда раз в 50!!! дороже Спектрума

Потому-как шёл с монитором и внешней клавой и т.д. и т.п. Реально был сделать комп лучше и не дороже в 3-5 раз.

Black_Cat
09.04.2010, 14:16
Реально был сделать комп лучше и не дороже в 3-5 раз.
для Синклера - нереально! У него просто небыло на это денег, у него и на Спектрум денег не хватало

psb
09.04.2010, 14:43
и кривой раскладкой.
эх вы! а ведь раньше все этой раскладкой восхищались! делаешь INC L - увеличиваешь X, INC H - Y. а теперь стало неудобно... аяяй;) для дем так еще вопрос, что было бы удобнее.

Raydac
09.04.2010, 15:44
ну вобщем выходит что основная проблема Спектрам был Синклер который должен был поддержать Писи так как в ней был заложен потенциал развития который досих пор и разгребаем :)

Raydac
09.04.2010, 20:38
ходил тут на семинар по одному языку с коорого компания проводившая компилятор пишет по зарубежным требованиям и вот там мечта у директора что бы язык заморозили.. вот основной плюс спектрума перед писишкой имхо как раз и есть что он сделан так что "сильно заморожен" на концептуальном уровне и в него особо не потыкаешь расширений.. как меня достали все эти расширяемые мегагибкие вещи которые нонче модны, не успеешь одно освоить, как уже оно в помойке и тащут новое, как результат - никто не умеет полноценно делать что то под данные вещи, никто ими полноценно не владеет и кпд использования не выше 20%, а у Спека имхо 80% КПД использования архитектуры как минимум

andrews
10.04.2010, 11:32
Это реализация вековой мечты человечества :) чтобы железо превращалось во что угодно по желанию владельца.

основной плюс спектрума перед писишкой имхо как раз и есть что он сделан так что "сильно заморожен"
Сто раз обсуждали, что способствовало успеху Спектрума в России.
1) простота;
2) открытость документации;
3) обилие халявного софта;
4) особенности архитектуры CPU.
А "замороженность" это на самом деле отсутствие интереса к развитию архитектуры Спектрума крупными современными игроками на этом рынке.

У него просто небыло на это денегу него было слишком много идей, и компьютеры никогда не были для него стабильно приоритетом, что мы все и видели в известном фильме.

Conan
10.04.2010, 16:06
Сто раз обсуждали, что способствовало успеху Спектрума в России.
1) простота;
2) открытость документации;
3) обилие халявного софта;
4) особенности архитектуры CPU.

1) согласен.
2) открытой документации на сам ZX было в СССР совсем немного. Отечественные компьютеры были документированы как минимум не хуже. 3) это самое главное.
4) Z80 использовался не только в ZX-ах и был очень труднодоступным в СССР.

_Andrey
10.04.2010, 19:44
Дополнительные видеорежимы подобные Таймекс
256*192 аппаратный мультиколор
512*192 с выбором цвета бумаги/фона
Только похоже в фирменную ULA первых версий не влезет

Как может повлиять на написание программ, исправление аппаратной ошибки фирменного спектрума. Нарушение регенерации экрана при некоторых значениях регистра I.

Какие предложения по прерываниям. В SAMcoupe сложно. Есть простое решение?

Еще простые технические решения для графики, звука

e2e4
23.05.2010, 20:26
По поводу графики вопрос интересный. Действительно, если принять спектрумовское техническое решение организации экранной памяти, что было бы можно в нем улучшить не пожертвовав ни процессорным временем, ни дополнительными драгоценными байтами?

Для начала следующие соображения:
1. Пожертвовав 6-ю дополнительными битами где-нибудь в памяти, можно было бы сделать "сдвиг" всех знакомест по горизонтали на 0...7 точек (3 бита) и по вертикали на 0...7 точек (3 бита). Это дало бы возможность плавно передвигать объекты (напрямер, статичную картинку, разноцветный текст и т.п.) без конфликта атрибутов.
2. Если уж есть режим мигания, прочему бы не сделать его немного полезней, введя возможность изменения его длительности? По-минимуму можно обойтись 4-мя вариантами длительности (2 бита), которые записать в байт из п.1 (таким образом, все 8 битов этого дополнительного байта будут осмысленны).

Но это все пожелания. А вот с базовыми атрибутами ИМХО можно было бы и получше заморочиться. Давайте посчитаем кол-во возможных вариантов раскраски знакоместа: 8(вариантов INK)*8(вариантов PAPER)*2(BRIGHT)*2(FLASH) = 256 (2^8, естественно). Без учета BRIGHT и FLASH всего 8*8 = 64 варианта раскраски. НО! Из них уникальных всего... 28! Дело в том, что INK и PAPER абсолютно равнозначны, и вариант, когда например INK-зеленый, а PAPER - голубой равносилен (с точностью до инверсии бита конкретной точки) варианту INK-голубой, PAPER - зеленый!

Очевидно, что оставшимся 64 - 28 = 36 вариантам сочетаний INK и PAPER можно поставить в соответствие другие палитры. Да, простота и ясность могут пострадать. Хотя, как закодировать... Можно так: если численное значение цвета INK < численного значения цвета PAPER, то цвета нормальные. Если наоборот, то повышенной яркости (пока забудем про бит BRIGHT). Таким образом имеем 28 стандартных палитр, 28 палитр повышенной яркости и 8 вариантов (это когда цвет INK = цвету PAPER) еще на что-нибудь. Например, на коричневый цвет INK на 8-ми различных цветах PAPER (коричневого спектруму не хватает).
Как-то так...

Бит яркости - ИМХО идея удачная. С учетом вышесказанного, может еще больше повышать яркость (тогда имеем уже 4 градации яркости). Атрибут мигания конечно не очень нужен. Вместо него можно ввести еще одну градацию яркости, а можно сделать вообще вот так:

Битов BRIGHT и FLASH нет. По 4 бита на INK и на PAPER. 120 вариантов сочетаний INK и PAPER обычной яркости (INK < PAPER) + 120 вариантов сочетаний повышенной яркости (INK > PAPER) + коричневый на 16 различных цветах (8 обычной, 8 повышенной яркости). Сравните все это с базовыми 28 вариантами уникальных сочетаний обычной яркости + 28 вариантов уникальных сочетаний повышенной яркости с малофункциональоным атрибутом мигания и без коричневого цвета.

Такие мысли родились... Конечно, предстваленные варианты не претендуют на оптимальность с точки зрения организации цветов, но претендуют на полноту использования памяти. Чего, как я надеюсь показал, в базовой кодировке нет (она недоиспользует память, причем очень сильно).

bigral
25.05.2010, 17:26
1) по поводу какой бы комп получился если бы Альтвассер и Викерс делали его сами? Вот такой: http://en.wikipedia.org/wiki/Jupiter_Ace

2) по поводу улучшения графики путем введения палитры и выброса flash/bright - идея не новая и вероятно скоро будет сделана в железе http://sites.google.com/site/ulaplus/

вот мнение по этому режиму того самого Криса Смита который раскопал ULA:
Could Sinclair have done this back in the day?
Yes, but more than one ULA would have been required and it would have been much more complicated and therefore expensive. It would take "...gazillions of gates and flip-flops. 64 * 8 Flip-Flop/latches for the palette storage = 512, plus a 640 2-input-nor gates for the multiplexing (4*16*8 + 16*8 ). That would take 832 matrix cells of the ULA, plus the other necessary circuitry. The 5C000 ULA had 440 matrix cells in total, so you'd need at least two ULAs of that size. This is so impractical that external memory would have been required for the palette. Propagation delay will have been the major issue, leading to other colour effects similar to the two-levels-of-intensity effect and the edge-artifact with flashing cells. As devices are much larger and efficient these days, it is likely to fit into a reasonably cheap CPLD. Worse case, a small amount of external memory may be required, or FPGA is used instead, as this will have the internal memory required. The design has been proven, but not synthesized, so I don't know how big a CPLD/FPGA is required." -- Chris Smith.

Conan
25.05.2010, 19:51
вот мнение по этому режиму того самого Криса Смита который раскопал ULA:Крис смотрит на вопрос "со своей колокольни" считая, что все что было в схемотехнике осталось без изменений, а можно только менять содержимое ULA. При том зачем-то пытаясь сделать из нее ОЗУ (типа в одну ULA не влезет, тогда нужно две).
Наш ответ "Турецкому султану" будет таков: нужно было не экономить на спичках (в надежде собрать денег на элекромопед), а рассчитывать, что после удачной обкатки схемы на ULA (неважно двух или трех) она будет перенесена в заказной чип или более совершенную ULA.
Другое дело, что Синклер после провала с заказухой в "Черных часах" болялся связываться с разработкой микросхем (с нуля). А после калькуляторов мыслил категорией "жизни" 2-3-х лет для выпускаемого компьютера. А следовательно не видел смысла делать его расширяемым (в области графики). К тому же выжать что-либо по разрешению из телевизионного экрана не просто. А кол-во цветов для учебного компьютера (он ведь не для игр его делал) было достаточным.

Впрочем, судя по длящемуся до настоящего времени упрямству дедушки Клайва, это был бы уже ZX Spectrum без Синклера.

bigral
26.05.2010, 10:46
Так или иначе приходим к мысли что zx-spectrum появился в следствии удачного стечения обстоятельств а не потому что хотели сделать "хороший продукт для людей на долго". Клайв похоже так ничего до сих пор и не понял что касается компьютеров и до сих пор считает что софт это дешевая прибавка к аппарату, которую спокойно напишут за пол года энтузиасты для тех кто купит себе это дешевое железо. Многие, особенно железячники у нас тоже так думали и в непопулярности советских компов винили К580ВМ80. Кроме того, судя по тому каким выпустили jupiter ace ихние железячники были "далеки от народа" как в прочем в свое время и Иван Мак со своим спринтером. Совсем другое дело atari 8-bit, c-64, apple-2, nes конечно при разработке этих компов были потраченны суммы на порядки большие, но разработчики четко представляли место будущего компа на рынке и в общих чертах его будущий софт.

Conan
26.05.2010, 12:49
ZX Spectrum появился в результате жесткой конкуренции SRL с Acorn, как продукт призванный завоевать рынок школьных компьютеров. Следствием чего были его характеристики и цена.
Массовость, которую получил ZX Spectrum действительно стала следствием его низкой цены, а вот столь быстрое появление софта действительно было связано во многом с удачным моментом появления. По телевизору в прайм-тайм гоняли передачи о программировании, журналы пестрели статьями о вундеркиндах заработавших состояиния написанием игр, учереждались разные премии и все это подогревалось массовым спросом. Программисты становились живыми легендами (или легендочками).
Безусловно C-64 более совершенный и произвели их раз в 10 больше чем ZX-ов. Но при этом кол-во софта примерно одинаково.
Безусловно Apple ][ куда более совершенен с точки зрения архитектуры и расширяемости, да и выпускался в течение десяти лет, но стоил при этом в пять раз дороже ZX-а.
Безусловно Клайв Синклер вел себя самонадеяно и видел в ZX Spectrum всего лишь еще одну ступеньку на пути к своим амбициозным идеям. И расстался то он со всеми ZX-ами без особого сожаления. Продал, как свой подержаный авто.
Но дальше спеки словно пережил вторую жизнь, у нас в странах бывшего СССР. Выжил вопреки запрету на торговлю и невозможности легально купить детали, вопреки дороговизне производимых клонов, проломив все преграды, перетянув производства и прессу на свой лад. И став частью судеб целого поколения.
А ведь всего два инженера и один дизайнер над ним работали. Если разумеется не считать вложения в разработку и производство, рекламу, информационный фон, бренд и направляющую роль Клайва Синклера ;).

Jukov
31.05.2010, 19:59
Мои предложения были бы такие:
аппаратные: 1) ввести пару портов - в один вводишь координату X, в другой координату Y; в третьем порту определяется нужно нарисовать точку или её стереть (может быть еще режим OVER). Реализовать подобное было бы очень просто, а скорость векторных игр возросла бы существенно.
2) Динамиком управлять с помощью простейшего 8-битного АЦП R-2R
Программные улучшения: 1) заменить стандартную процедуру рисования окружности на быструю с клиппировкой 2) у оператора PLOT снять тупое ограничение на количество точек по вертикали 176 и поставить 192
3) исправить ошибку NMI

Strunov
14.07.2010, 20:15
Динамиком управлять с помощью простейшего 8-битного АЦП R-2R

Видимо имелся ввиду ЦАП

Lethargeek
17.12.2010, 16:16
Мои предложения были бы такие:
аппаратные: 1) ввести пару портов - в один вводишь координату X, в другой координату Y; в третьем порту определяется нужно нарисовать точку или её стереть (может быть еще режим OVER). Реализовать подобное было бы очень просто, а скорость векторных игр возросла бы существенно.
Ставить точки через тормозные Z80 порты? :rolleyes:
У тебя неверные в корне представления о нуждах векторной графики.


Программные улучшения: 1) заменить стандартную процедуру рисования окружности на быструю с клиппировкой 2) у оператора PLOT снять тупое ограничение на количество точек по вертикали 176 и поставить 192
Мертвому бейсику припарки...

garlands
17.12.2010, 18:04
та да уж. просто гениальнейшая идея - вместо одной записи (для 8 точек) _В_ПАМЯТЬ_ сделать _ТРИ_ЗАПИСИ_В ПОРТ_ (на 1 точку). просто нет слов.
хотя протелепатируем исходя из упомянутых "векторных игр", что речь идет об отрисовке линии. т.е. читать надо так:

аппаратные: 1) ввести пару портов - в один вводишь координату X1Y1, в другой координату X2Y2; в третьем порту определяется нужно нарисовать точку или её стереть (может быть еще режим OVER). Реализовать подобное было бы очень просто, а скорость векторных игр возросла бы существенно.
(болдом выделено мной для отображения изменений)
хотя с другой стороны, разрядности порта недостаточно для задания координат... в общем, весьма и весьма противоречивое сообщение... хз что хотел ввести автор.... %)

---------- Post added at 17:04 ---------- Previous post was at 17:01 ----------

ну и соображения насчет "простоты реализации" новых гениальнейших идей половины (ну, трети) высказавшихся заставляют очень широко улыбаться.

Lethargeek
17.12.2010, 18:20
) ввести пару портов - в один вводишь координату X1Y1, в другой координату X2Y2; в третьем порту определяется нужно нарисовать точку или её стереть
Только к этой "паре портов" еще понадобится отдельный "векторный проц" :D

garlands
17.12.2010, 18:27
ну а моя приписка чуть спустя о чем? авось не о плисине со свободными ресурсами речь, а о дискретной логике со всеми вткающими и вытекающими...

zx-kit
09.08.2011, 20:23
Интересует, насколько полно реализовали потенциал аппаратной части ZX Spectrum
...
2) ПП работы с магнитофоном с настройками скорости (как в Амстрад СРС) и кодом Манчестер 2. (+ возможно совместимость с ZX80/81) Дает большую надежность и скорость загрузки игр.
3) Программная подстройка уровня чувствительности, регулируемая битом MAG_OUT.

Процедура загрузки с магнитофона была сделана великолепно. На моем первом компьютере "СПАРК-128" узел чтения с магнитофона был на К561ЛН2. Игры загружались без ошибок. Время загрузки 5 минут тоже не долго для того времени. Тем более, раз загрузка шла без ошибок, можно было отойти на время загрузки.

А на отечественном компьютере "Радио-86РК" на том же магнитофоне с трудом читались записи длительностью несколько десятков секунд. Разбирался с процедурой загрузки в нем. Способ кодирования был похож на Манчестер 2. Нулевой бит кодировался отрицательной полуволной, а потом положительной. Единичный бит кодировался положительной полуволной, а потом отрицательной. Или наоборот.

Так что для того времени процедуры загрузки с магнитофона в Спектруме были очень хорошо реализованы. Может сам узел чтения был плоховат, но наши умельцы это исправили, придумав схему на K561ЛН2.

А вот адресация экрана странноватая и не очень удобная. Конечно красиво смотреть на загрузку картинки в виде жалюзи. Но для программирования было бы удобнее сделать, как было сделано, по-моему в отечественном компьютере "Специалист". Увеличение старшего байта адреса на единицу приводило к переходу на байт вправо. Увеличение младшего байта адреса на единицу приводило к переходу на строку вниз. При этом по-вертикали было 256 точек. На мой взгляд, это очень удобно для копирования спрайтов, особенно при движении на одну точку вверх-вниз. Конечно, при такой адресации картинка загружалась бы по-другому. Сначала заполнялся бы левый столбик сверху-вниз, потом следующий, и так далее...

VNN_KCS
18.08.2011, 13:48
зел чтения с магнитофона был на К561ЛН2
Делал подобный девайс на разных клонах. Работа безупречная.

John North
18.08.2011, 22:34
Поделитесь ссылкой плиз на этот узел ..

zx-kit
29.08.2011, 16:27
Поделитесь ссылкой плиз на этот узел ..
http://www.zx.pk.ru/showpost.php?p=411560&postcount=18

Soplik
19.09.2011, 23:35
Мысли ламера.
Если нужно заточить под игрушки, я бы сделал так:
1. Адресация картинки -- как на Векторе и Специалисте. Строки 0-191 на экран выводятся, 192-255 служат для хранения чего-либо.
2. Аппаратный скролл, как минимум вертикальный. Не в курсе, сложно ли сделать аппаратный горизонтальный скролл.
3. Атрибуты в теневой памяти. При чтении попадают в защелку, при записи пишутся оттуда. Атрибутную защелку можно можно менять программным путем.
4. Две палитры по 16 цветов из 256 или из 64 -- одна для чернил, вторая для бумаги.
5. Цепочка LDI и цепочка PUSH BC в ПЗУ :-)
6. Работа со звуком и магнитофоном по таймеру с буфером в 1 байт.

Ну и хватит для 1982 года.

---------- Post added at 22:35 ---------- Previous post was at 22:30 ----------

Хотя даже это не Спектрум, а придуманный с нуля компьютер со сравнимыми возможностями.

Titus
20.09.2011, 00:58
3. Атрибуты в теневой памяти. При чтении попадают в защелку, при записи пишутся оттуда. Атрибутную защелку можно можно менять программным путем.

Про защелку с атрибутами не понял.

Soplik
20.09.2011, 01:07
Процессор видит монохромный экран, но когда он читает байт, в специальный регистр записывается байт атрибутов из 8к дополнительной памяти, лежащий по тому же адресу.
А когда мы пишем куда-то на экран, то этот байтик параллельно пишется в атрибутную память.
Если мы прочитаемм один байт и запишем 100, все 100 будут с одними атрибутами.

Titus
20.09.2011, 02:35
Процессор видит монохромный экран, но когда он читает байт, в специальный регистр записывается байт атрибутов из 8к дополнительной памяти, лежащий по тому же адресу.
А когда мы пишем куда-то на экран, то этот байтик параллельно пишется в атрибутную память.
Если мы прочитаемм один байт и запишем 100, все 100 будут с одними атрибутами.
Совершенно непонятно зачем. На экран обычно пишется информация из других участков памяти, содержащих, скажем спрайты. А читать байт с экрана, чтобы его опять записать в экран - это применительно разве что для скроллинга. Да и то, обычно идет чтение пачкой, и запись пачкой, для скорости.
В случае, когда всем записываем байтам дается текущий атрибут, находящийся в защелке - более подходящ.

Soplik
20.09.2011, 02:41
А если три режима -- копирование с атрибутами, с одним атрибутом и совсем без?

Titus
20.09.2011, 02:43
А если три режима -- копирование с атрибутами, с одним атрибутом и совсем без?
Да пожалуйста)

Soplik
20.09.2011, 02:45
Хотя три разных режима -- это не Спектрум.

Titus
20.09.2011, 02:54
Хотя три разных режима -- это не Спектрум.
Да и все остальные пункты - это тоже не спектрум)

Soplik
20.09.2011, 03:17
Адресацию могли сделать, а цепочку LDI -- забыть в коде.

---------- Post added at 02:17 ---------- Previous post was at 01:58 ----------

А вообще получается, что игровой спектрум -- это денди.

Alex Clap
18.10.2011, 12:38
Можно ли турбировать оригинальный 128-й Спек?

Killer
18.10.2011, 17:12
Теоретически можно. Только надо знать что куда вешать.

_Andrey
19.10.2011, 07:17
Процедура загрузки с магнитофона была сделана великолепно. На моем первом компьютере "СПАРК-128" узел чтения с магнитофона был на К561ЛН2. Игры загружались без ошибок. Время загрузки 5 минут тоже не долго для того времени. Тем более, раз загрузка шла без ошибок, можно было отойти на время загрузки.

А на отечественном компьютере "Радио-86РК" на том же магнитофоне с трудом читались записи длительностью несколько десятков секунд. Разбирался с процедурой загрузки в нем. Способ кодирования был похож на Манчестер 2. Нулевой бит кодировался отрицательной полуволной, а потом положительной. Единичный бит кодировался положительной полуволной, а потом отрицательной. Или наоборот.

Так что для того времени процедуры загрузки с магнитофона в Спектруме были очень хорошо реализованы. Может сам узел чтения был плоховат, но наши умельцы это исправили, придумав схему на K561ЛН2.

Дело скорее в реализации. РК ограничен ПЗУ и скоростью процессора. Возможно влияла старая элементная база. Читал кажется в Открытых письмах Вектрист эксперементировал с кодированием на ленту в Манчестере и удивлялся почему на спектруме так не сделали

predatoralpha
09.01.2012, 01:25
Позволю себе маленький постик.
Как по мне, на той же конфигурации железа стоило бы сделать 3 вещи:
1. Сигнал прерывания надо подавать не во время вертикального хода луча, а сразу после отрисовки области экрана. Так никакого 0хFF не надо.
2. Стандартизировать или (лучше) вывести (хотя бы один) джойстик, причём желательно с двумя кнопками.
3. Горизонтальное разрешение увеличить до 320.
4. Доп графрежим. Горизонтальное разрешение в 2 раза меньше. Но 4 цвета на знакоместо, пусть оно и в 2 раза шире. Тогда хоть частично конфликт атрибутов снимется, в простых играх.

Добавлено.
5. Как по мне, схема отрубания тактирования проца - перебор. Лучше читать данные в регенерационный цикл, а также в просветы между чтением данных МП. В крайнем случае, если мы начали читать и тут процессор припекло - давать сигнал WAIT.

alone
09.01.2012, 01:29
Вы прямо ATM Turbo описали :) Только там вместо джойстика мышь, а вместо прерывания в конце экрана - две экранных области.

HardWareMan
20.01.2012, 11:42
5. Как по мне, схема отрубания тактирования проца - перебор. Лучше читать данные в регенерационный цикл, а также в просветы между чтением данных МП. В крайнем случае, если мы начали читать и тут процессор припекло - давать сигнал WAIT.
Когда я делал свой Специалист (http://zx.pk.ru/showthread.php?t=12316) на дискретах, я плотно изучил временные эпюры как ВМ80 так и Z80. Я из тех, кто хочет сделать грамотно и без костылей и ненавижу тормозить процессор без крайней необходимости. Скажу, что у обоих процессоров просто куча времени, когда можно спи... :3 украсть память, не нарушая процесс исполнения команды, причем у ВМ80 этого времени больше: он требует данные только по одному перепаду Ф2, а у Z80 по обоим (так уж сделали: М1 по одному и R/W по другому). Заметьте, что по Спец собран и работает, т.е., все выкладки, которые я реализовал в нем после изучения процессоров, верны. Так что это можно применить в этом вашем Спектруме. ;)

predatoralpha
22.01.2012, 02:54
Когда я делал свой Специалист (http://zx.pk.ru/showthread.php?t=12316) на дискретах, я плотно изучил временные эпюры как ВМ80 так и Z80. Я из тех, кто хочет сделать грамотно и без костылей и ненавижу тормозить процессор без крайней необходимости. Скажу, что у обоих процессоров просто куча времени, когда можно спи... :3 украсть память, не нарушая процесс исполнения команды, причем у ВМ80 этого времени больше: он требует данные только по одному перепаду Ф2, а у Z80 по обоим (так уж сделали: М1 по одному и R/W по другому). Заметьте, что по Спец собран и работает, т.е., все выкладки, которые я реализовал в нем после изучения процессоров, верны. Так что это можно применить в этом вашем Спектруме. ;)

Я Вас понимаю... Но Вам проще. У вас только пиксели, без цвета.. Вам достаточно одного такта.
Но я могу понять и конструктора Спектрума. Всё делалось на УЛА с весьма ограниченными ресурсами. Спектруму надо 2 такта - пикселы и цвет. Фифо там вроде нет. Значет, нужен максимально простой автомат - один такт - защёлкивается пиксель, второй такт - цвет.
Вы думаете, почему экран сделан так специфично, что сначала идёт первая строка, потом 8-я и т.п.? А соседние строки разнесены на 256 байт. Только что бы на 1 строку смещаться инкрементом старшего байтика? Это тоже, но есть одно "железное" но. Всё байта знакоместа лежат в одной строке RАМ. Причём в одной же строке лежат не только пикселы одного знакоместа, но и их атрибут. Цикл обращения к видеопамяти специфичен - сначала падает RAS, с защёлкиванием строки, а потом 2 раза CAS защёлкивает адреса столбцов пикселей и атрибутов, причём отсчёлкивается так, что бы данные появлялись как раз в конце такта. Потом уже освобождается RAS.
Я не думаю, что если бы Вам надо было читать 2 байта подряд - Вы бы мягко въехали в процессор. А если не подряд - то это надо фифо и более сложный автомат. Для которого у разработчиков Спека врядли бы было место на УЛА.

ПС. Насчёт цвета погорячился - Ваш клон цветной, как я увидел опосля. Но я не думаю, что у Вас идут 2 чтения поподряд, и без фифо, так что основной посыл поста - в силе.

Valen
22.01.2012, 16:14
Позволю себе маленький постик.
Как по мне, на той же конфигурации железа стоило бы сделать 3 вещи:


На ULA+ (http://sites.google.com/site/ulaplus/) смотрели ?

predatoralpha
22.01.2012, 20:54
На ULA+ (http://sites.google.com/site/ulaplus/) смотрели ? А смысл смотреть? Мы ж говорим про 83-й? Там нормально основные цвета не выводились, картинка плыла - а вы про какие-то палитры говорите.

Lethargeek
23.01.2012, 04:08
Я Вас понимаю... Но Вам проще. У вас только пиксели, без цвета.. Вам достаточно одного такта.
Но я могу понять и конструктора Спектрума. Всё делалось на УЛА с весьма ограниченными ресурсами. Спектруму надо 2 такта - пикселы и цвет. Фифо там вроде нет. Значет, нужен максимально простой автомат - один такт - защёлкивается пиксель, второй такт - цвет.
Вы думаете, почему экран сделан так специфично, что сначала идёт первая строка, потом 8-я и т.п.? А соседние строки разнесены на 256 байт. Только что бы на 1 строку смещаться инкрементом старшего байтика? Это тоже, но есть одно "железное" но. Всё байта знакоместа лежат в одной строке RАМ. Причём в одной же строке лежат не только пикселы одного знакоместа, но и их атрибут. Цикл обращения к видеопамяти специфичен - сначала падает RAS, с защёлкиванием строки, а потом 2 раза CAS защёлкивает адреса столбцов пикселей и атрибутов, причём отсчёлкивается так, что бы данные появлялись как раз в конце такта. Потом уже освобождается RAS
Синклер хотел ставить самую дешевую память :)

Но чередовать строки именно таким образом вовсе необязательно. Подойдет любая раскладка при единственном условии равенства любых семи битов адреса растрового байта и соответствующего атрибутного (в том числе похожая на раскладку Специалиста, растр и атрибуты в одном столбце).

predatoralpha
23.01.2012, 17:41
Но чередовать строки именно таким образом вовсе необязательно. Подойдет любая раскладка при единственном условии равенства любых семи битов адреса растрового байта ...

В целом сводится к "именно таким образом - не обязательно, а подобным образом - да." Впрочем, можно ещё "перепутать" адресные линии от процессора, тогда байты могут лежать и даже поподряд... для процессора, конечно. Всё равно регенерирует УЛА.

Lethargeek
24.01.2012, 07:00
нет, не сводится, любая значит любая (при единственном условии для быстрого чтения)
из условия должно быть понятно, что потребоваться может и перепутывание
быструю раскладку в духе специалиста иначе и не сделать

Barmaley_m
24.01.2012, 13:18
Я не думаю, что если бы Вам надо было читать 2 байта подряд - Вы бы мягко въехали в процессор. А если не подряд - то это надо фифо и более сложный автомат.
Зачем же фифо, вон в некоторых клонах, таких как Пентагон и Орель БК-08, память читается без замедления процессора. На одном триггере и некотором кол-ве мелкой логики реализован арбитр доступа к памяти.

predatoralpha
24.01.2012, 13:26
2 Lethargeek
Останемся каждый при своём мнении. Байт и атрибут должны лежать в одной строке. Остальное - ньюансы.
Меня больше интересует, как Вы в своём специалисте это решили. Самая критическая операция от процессора Z80 - вычитка первого кода операции, которая занимает 2 такта. Остальные чтения/записи берут 3 такта, и в них вклиниться легко.
У Вас сколько тактов берёт вычитка байта и атрибута видеопамяти? Вы их поподряд читаете, или можно и прервать? А доступ к памяти для процессора сколько тактов берёт?

---------- Post added at 13:26 ---------- Previous post was at 13:21 ----------


Зачем же фифо, вон в некоторых клонах, таких как Пентагон и Орель БК-08, память читается без замедления процессора. На одном триггере и некотором кол-ве мелкой логики реализован арбитр доступа к памяти.
А память с каким временем доступа применяется? Те же 150 наносекунд что и в оригинале или более быстрая?

ZEK
24.01.2012, 14:21
Байт и атрибут должны лежать в одной строке.
зачем?
прозрачный доступ делается очень просто, такты процессора делятся пополам, даже при выборке копа 1 такт можно использовать для целей формирования картинки, видеогенератору надо поток данных в 1.75мгц что ровно в половину меньше частоты процессора. Итого если начинать читать данные в буфер на 1 такт раньше чем надо - получтся, что либо в текущем, либо в предыдущем такте будут данные для видеогенератора. Что бы совместить атрибуты и пиксели хватает 4х битного сдвигового регистра.

---------- Post added at 13:21 ---------- Previous post was at 13:21 ----------


Те же 150 наносекунд что и в оригинале или более быстрая?
Обычная тормозная РУ5Г

Lethargeek
24.01.2012, 16:23
в своём специалисте (...) сколько тактов берёт вычитка байта и атрибута видеопамяти? Вы их поподряд читаете, или можно и прервать?
Там же атрибуты в отдельной памяти, напрямую процессору недоступной

Barmaley_m
24.01.2012, 21:57
Самая критическая операция от процессора Z80 - вычитка первого кода операции, которая занимает 2 такта. Остальные чтения/записи берут 3 такта, и в них вклиниться легко.
Идея в том, что процессор никогда не допускается на шину памяти дольше, чем на 1 такт. В цикле M1 обращение к памяти длится полтора такта, из них во время одного процессор будет допущен на шину. В остальных циклах обращения к памяти процессор активирует MREQ на 2 такта, и из них опять же, во время одного ему будет предоставлен доступ к памяти.

Процессор обращается к памяти гарантированно не чаще, чем 1 раз за 2 такта, поэтому из каждых двух идущих подряд тактов один можно предоставить видеоконтроллеру, чего как раз достаточно для его нужд. Одно знакоместо по горизонтали занимает 4 такта, для него надо считать 2 байта (пиксели и атрибут).

В советских клонах не используется доступ к памяти в пределах одной строки без активации RAS. Это было бы слишком сложно в реализации.

У Вас сколько тактов берёт вычитка байта и атрибута видеопамяти?
По 1 такту на то и другое.

Вы их поподряд читаете, или можно и прервать?
Можно прервать. Схема арбитра "Орель БК" позволяет иметь максимум 2 такта между считыванием байта пикселей и атрибута, но на практике больше одного такта не бывает, т.к. процессор никогда не обращается к памяти 2 такта подряд.

А доступ к памяти для процессора сколько тактов берёт?[COLOR="Silver"]
1 такт.
[QUOTE=predatoralpha;458699]А память с каким временем доступа применяется? Те же 150 наносекунд что и в оригинале или более быстрая?
Память работает с постоянной частотой RAS и CAS 3.5МГц. Период составляет 285нс - этого достаточно для РУ5В и может быть даже для РУ5Г. Во всяком случае, в большинстве клонов ставится РУ5Г.

predatoralpha
25.01.2012, 01:26
Гм..
Как я понимаю, для Спектрума был выбран максимально простой автомат. Два такта чтения (байт и атрибут) и два байта пропуска. Что бы не конфликтовать с процессором - проц просто отрубался.

Barmaley_m
25.01.2012, 09:51
Не факт, что использование задержек - это самая простая реализация арбитража. В конце концов, им все равно нужно было где-то иметь сигнал конфликта процессора и памяти, нужно было иметь какую-то логику прекращения подачи тактовых импульсов и т.д. В совокупности это может быть ничем не проще, чем реализация "Пентагона" и "Орели" без задержек. Но чтобы предметно говорить, надо рассмотреть оба варианта схемы в пределе их упрощения.

predatoralpha
26.01.2012, 00:56
Не факт, что использование задержек - это самая простая реализация арбитража. В конце концов, им все равно нужно было где-то иметь сигнал конфликта процессора и памяти, нужно было иметь какую-то логику прекращения подачи тактовых импульсов и т.д. В совокупности это может быть ничем не проще, чем реализация "Пентагона" и "Орели" без задержек. Но чтобы предметно говорить, надо рассмотреть оба варианта схемы в пределе их упрощения.

Как по мне, то в оригинальном самая примитивная схема арбитража. Если идет запрос в память/порт, то тупо вырубать. Только для памяти проверяются А14 и А15.
Вырубается, похоже, на все эти 32 пары чтения, по 4 такта на пару. Какое-либо вклинивание в паузы вообще не предусмотрено. Так что примитивно до ужаса.

Если бы не было 3-х тактового чтения/записи, то возможно что как-то вклинивали бы на 2 такта. А так - сэкономили на тригерах.

Barmaley_m
26.01.2012, 09:30
Как по мне, то в оригинальном самая примитивная схема арбитража.
Ну вот на каком основании ты так считаешь? Ты сравнивал схему арбитража синклера и советских клонов? Может быть схемы советских клонов с "прозрачным" доступом к памяти даже проще, чем блокирующая синклерская. Схему синклерского арбитража - в студию. Без этого говорить не о чем.

predatoralpha
26.01.2012, 13:47
Ну вот на каком основании ты так считаешь? Ты сравнивал схему арбитража синклера и советских клонов? Может быть схемы советских клонов с "прозрачным" доступом к памяти даже проще, чем блокирующая синклерская. Схему синклерского арбитража - в студию. Без этого говорить не о чем.
Можешь глянуть, что раскопал Крис Смит:
http://www.zxdesign.info/docs/waitGen-1.17.pdf
Схема вроде не предполагает вклинивания.

Кроме того есть разные "проще". Есть проще в количестве логических элементов/тригерров. Есть проще в разработке/отладке на макете. Это разные проще.

Barmaley_m
26.01.2012, 22:23
Можешь глянуть, что раскопал Крис Смит:
Спасибо, понятно. Схема довольно сложная. Для сравнения прилагаю схему арбитра памяти Орель БК-08. Как говорится, почувствуйте разницу.

В реальном компьютере вместо IC3A стоит более сложная схема, предназначенная для реализации теневого ОЗУ и других дополнительных возможностей "Орели" по сравнению с оригинальным ZX, а если бы требовалась только функциональность ZX, то достаточно было бы только элемента, который я показал как IC3A. Остальные элементы, показанные на моей схеме, соответствуют реальным элементам схемы "Орели", и я указал их обозначения на схеме DD7.1, DD9.2, DD15.1.

Логика работы этой схемы следующая. Если обнаружено обращение процессора в память по адресам 4000-FFFF - то формируется активный низкий уровень сигнала /CSM - запрос обращения к ОЗУ. Далее, если процессору в этом цикле обращения к памяти доступ к ОЗУ еще не был предоставлен - то с триггера DD15.1 формируется низкий уровень сигнала /HM - это выход арбитра. Он там формируется не более чем на 1 такт, после чего снова возвращается в исходное состояние лог. 1.

Так как циклы обращения к памяти Z80 не длятся более 2 тактов, то за каждое обращение к памяти на сигнале /HM будет сформирован один импульс отрицательной полярности длительностью в 1 такт.

Кроме того есть разные "проще". Есть проще в количестве логических элементов/тригерров. Есть проще в разработке/отладке на макете. Это разные проще.
Ну вот, теперь у тебя появилась возможность сравнить обе схемы и проанализировать их. Какая из них, с твоей точки зрения, проще для понимания и наладки?

predatoralpha
27.01.2012, 00:43
Ну вот, теперь у тебя появилась возможность сравнить обе схемы и проанализировать их. Какая из них, с твоей точки зрения, проще для понимания и наладки?
Сразу видна неприменимость для оригинального Спектрума - на Синклере микросхема УЛА обрабатывала не только память, но и порты. Соответственно, нужен дополнительный арбитраж для портов. А цикл чтения-записи портов уже не 2, а 3 такта. Со всеми вытекающими отсюда последствиями.
Во-вторых, наличие такого арбитра, что Вы привели, предполагает
а) что УЛА может подождать 1 такт
б) что вычитка байта и атрибута могут быть не поподряд.
Т.е. что упрощение схемы здесь может усложнить схему "там".

Barmaley_m
27.01.2012, 02:38
на Синклере микросхема УЛА обрабатывала не только память, но и порты.
А при чем здесь вообще порты? При обращении процессора к портам нет конфликта между процессором и видеоконтроллером, потому что адресное пространство их не пересекается. Как я понял, шина адреса у процессора и видеоконтроллера в оригинальном спеке тоже раздельная, иначе верхняя память тоже бы тормозила.

Соответственно, нужен дополнительный арбитраж для портов.
Мне трудно с этим согласиться. Обоснуйте, зачем нужен арбитраж для портов?

А цикл чтения-записи портов уже не 2, а 3 такта. Со всеми вытекающими отсюда последствиями.
Какими последствиями?

Во-вторых, наличие такого арбитра, что Вы привели, предполагает
а) что УЛА может подождать 1 такт
А почему она не может подождать, обоснуйте.

б) что вычитка байта и атрибута могут быть не поподряд.
Зачем она должна быть подряд? В этом нет никаких упрощающих схему факторов. Шина адреса у видеоконтроллера отдельная. Он выставил туда адрес байта пикселя или атрибута, и ждет, когда ему будет предоставлен доступ к памяти. Если процессор занял память на 1 такт - то в следующем такте видеоконтроллер получит то, что ему нужно. Если процессор память не занял - то видеоконтроллер считает свой байт из памяти дважды.

Т.е. что упрощение схемы здесь может усложнить схему "там".
Где "там"? Покажите конкретно, что в схеме упрощается из-за того, что процессор тормозит при обращении к памяти.

Lethargeek
27.01.2012, 04:51
А при чем здесь вообще порты?
http://scratchpad.wikia.com/wiki/Contended_IO

Barmaley_m
27.01.2012, 10:07
http://scratchpad.wikia.com/wiki/Contended_IO[/url]
Да уж, как все запущено. Подобные схемотехнические решения вызывают у меня глубокое недоумение. Если кто-нибудь сможет объяснить, что упрощается в схеме благодаря медленной работе портов ввода вывода (по большому счету, единственного порта - FE - так как других не было) - буду премного благодарен.

Blade
27.01.2012, 10:45
Barmaley_m, Вот схема (ftp://ftp.worldofspectrum.org/pub/sinclair/technical-docs/ZXSpectrumIssue1+2-Schematics.pdf). У ULA мало ножек, поэтому шина данных медленной памяти и шина данных порта FE совмещены.

Barmaley_m
27.01.2012, 11:51
Blade, спасибо. Теперь, по изучении схемы, понятно насчет необходимости арбитража портов. Также понятно, что без регистра на выходной шине данных памяти реализовать "прозрачный" арбитраж доступа к памяти невозможно. Память должна держать данные на выходе в течение всего цикла обращения процессора к ней, а не только один такт, как это сделано в "Орели" и в "Пентагоне". Потому что авторы советских клонов решили не ставить резисторы между ШД процессора и памяти, а поставили регистры. Но советские авторы тоже вынуждены были это сделать, так как у синклера, судя по всему, сигналы RAS и CAS на память формируются довольно сложным образом (чтобы память держала данные на выходе более двух тактов). Сэкономив регистр, авторы советских клонов вынуждены были бы поставить несколько корпусов логики, что ни по цене, ни по площади платы выигрыша не давало никакого. А у синклера вся логика в УЛА.

Бука
28.02.2014, 21:23
Давным-давно курю эту идею. Буду рад любым тапкам. Итак, техзадание:
Читерским способом за год до офф.выхода Спектрума разрабы имеют его уже готовым.
В смысле классический 48й с 1,2кб пустой дыры в ПЗУ и кучей ошибок.

Производить его в 81м негде, и только-только пошел ZX81й. Зато у них есть год на курение мануалов, в смысле на разработку. Задача та же - максимально дешевый уберкомп.

Прежде нужно посмотреть на ближайших конкурентов, уже имеющихся или перспективных.

Commodore VIC 20, в продаже с 81го до 85го. Базово 5кб.
22*23 символа, 16 цветов по знакоместам, пиксельно макс 88*184*4цвета.

Commodore 64, в продаже с 83го по 93й.
40*25 символов, 16 цветов по знакоместам - 320*200 точек.
160*200 точек, на знакоместо 4*8 идет 3цвета+1фон.
И до кучи куча спрайтов,ага.

Атари... У них дико извращенные цветовые режимы, без поллитры не разобрать - и спрайты, опять же.
Делают с 1979 и до 90го, примерно. На момент выхода "Спека" Atari 400 идет по 160&#163;, с 4мя килобайтами памяти на борту.

В 84м выйдет Амстрад СРС.
Абсолютно без спрайтов, 64кило базово.
160*200*16цветов, 320*200*4цвета и 640*200.

В процессе вылезет Орик, Дракон, и Энтерпрайз. Который самый крутой и у него 256*160*16цветов и 180*80*аж256.

Есть еще Акорновские ВВС и Электрон - 160*256*16цветов, 320*256*4, 640*256.

Из основных конкурентов всё.

В реале Спек был с обычным 256*192*атрибуты = 6912б.

Timex покурил немного травы, и добавил 256*192*мультиколор = 12288, 2 стандартных экрана (как в +128к)=13824 и 512*192*2цв=12288 байт.

===================

А вот теперь вопросы. Если еще подумать, то в 12288б впихуется 4х цветный 256*192, это раз.

В два стандартных (в Timex они рядом в ОЗУ) 13824 байт лезет 512*192 с атрибутами 8*8, а это уже круто для работы.

И в эти же 13824 байта можно вместить 192*144 на 16 цветов. На пиксель.

Если у Амстрада в 84м году 160*200*16ц пошли "на ура", то как такой режим сказался бы на истории ZX в самом начале?
Авиасимы под него были бы красивы...

Кстати, отношение сторон классическое, 4:3.

Ессно это просто гимнастика для ума, но на фоне агрегатов тех лет такой Спек смотрелся бы намного круче...

_Andrey
01.03.2014, 07:00
Спасибо. Хорошо излагаете.
512*192*атрибуты посимвольно 8*8 подходит для НЕ динамичной игры. Был в Profi и с турбой 7-15 Мгц.
Моя мысль наоборот еще ускорить и увеличить качество графики на оригинале. За счет
Другой адресации экрана по столбцам. Предложено и описано Lethargeek В оригинале процедура вычисления адреса минимум 5,5 тактов + таблица 384 байта. в измененной 4 такта 1 команда INC/DEC +768 байт дополнительных атрибутов
Возможен режим как в MSX 64*48 точек каждая точка своим цветом.
И другие аппаратные решения упрощающие жизнь программеру.
P.S. Почитайте тему. Теория: почему 128к игры такие убогие. Пример как сделали в ущерб графике.

jerri
01.03.2014, 09:43
Бука, вы забыли еще Apple II с реально извращенным экраном
но при этом 2 областями видеопамяти (идеально для игр)

Бука
01.03.2014, 10:47
Спасибо. Хорошо излагаете.
512*192*атрибуты посимвольно 8*8 подходит для НЕ динамичной игры.

Этот режим больше для работы с текстом, с CP/M.


Почитайте тему. Теория: почему 128к игры такие убогие. Пример как сделали в ущерб графике.

Читал. Про память я забыл добавить - изначально взять схему банкования от Timex 2068: свободное переключение 8кб банок РОМ и РАМ, не прибитых криво, как в 128к оригинале.
Итого до двух мег штатно адресуемой памяти - выше крыши для 8битки.

Да, и первый спек выпускать без разделения на 16-48к.

16к Спек был колоссальной ошибкой!
Туева хуча покупателей увидела рекламу - "16кб памяти, красивая цветная графика, цена 125 фунтиков".
Толпа сложила 2+2, цену ч/б ZX-81го и 16кб к нему - получилось 120ф. И, естественно все потенциальные покупатели zх81 заказали 16к спек.
Результат - продажи ZX81 были провалены, производство завалено заказами на 16к спеки.
Результат 2 - получив вожделенное, пользователи убедились что свободно лишь 9 из обещанных 16ти килобайт. Нормальные игры туда не лезут, значит нужен апгрейд до 48к - а его можно сделать лишь на заводе SRL. И снова был завал из присланных на доработку машин - и это на фоне проблем с ULA и завалом производства.

За год, к маю 1983го было выпущено всего около 300к Спеков. И тогда же пришлось снижать цену до 129ф за 48 и 99 за 16к. Идиотизм...

=========

По уму надо было (как Джек Тремиел с комодом) сразу сделать Спектрум 64к, и если интерполировать цену - то по 199 фунтов толкать.
Команды для RАМ-диска вставить в Барсик сразу же. Кстати, в нем дофига ненужных токенов.

Например LINE - нужна лишь для автостарта загруженной проги, который можно организовать по другому - например SAVE "Prog" GO TO хх, и т.д.

Но это если бы у Синклера были мозги... А он посрался с разрабами, и в ПЗУ навечно осталось почти полкило свободного места.

AzAtom
18.05.2017, 10:03
Организация экрана могла быть более вменяема. Тут предлагали по столбцам, это неплохо для рисования всяких линий, но тогда надо делать либо 256 строк на экране, итого экранная область будет 9 КБ, либо оставить 192 строки и вычисление адреса обратно усложнится.

Есть ещё комбинированный вариант. На экране в одной строке идут байты 16384, 16392 и т.д, на следующей строке идут байты 16385, 16393 и т.д. Т.е., идущие подряд 8 байт относятся к одному знакоместу.
Преимущества:
- при печати текста можно использовать быстрые команды копирования,
- после копирования последнего байта адрес автоматически указывает на первый байт следующего знакоместа,
- автоматический перенос строк, т.к. после вывода последнего символа в строке адрес указывает на начало первого символа в следующей строке.
- одна символьная строка на экране занимает 256 байт, отсюда, чтобы перейти на следующую строку надо увеличить старший байт адреса, чтобы вернуться на начало строки нужно обнулить младший байт адреса,
- вывод спрайтов тоже облегчается. Можно выводить спрайты 16х8 пикселей, просто копируя 16 байт подряд,
- даже при выводе линий и точек вычисления упрощаются и получаются единообразные для всего экрана.

Это дало бы заметное ускорение вывода спрайтов в играх, и даже текста в стандартном бейсике, плюс облегчение программирования. А надо всего лишь несколько линий адреса переставить.

Lethargeek
18.05.2017, 14:44
Организация экрана могла быть более вменяема. Тут предлагали по столбцам, это неплохо для рисования всяких линий,
это "лучше не придумаешь" для всего


но тогда надо делать либо 256 строк на экране,
не надо


итого экранная область будет 9 КБ,
только 8кб при той же площади


либо оставить 192 строки и вычисление адреса обратно усложнится.
ничего не усложнится, ты не въезжаешь
атрибуты тоже лежат "в столбце"


Есть ещё комбинированный вариант. На экране в одной строке идут байты 16384, 16392 и т.д, на следующей строке идут байты 16385, 16393 и т.д. Т.е., идущие подряд 8 байт относятся к одному знакоместу.
...
Это дало бы заметное ускорение вывода спрайтов в играх, и даже текста в стандартном бейсике, плюс облегчение программирования. А надо всего лишь несколько линий адреса переставить.
это на комоде вроде так сделано, и хуже для всего, кроме вывода в строчку букавок фиксированного размера

NEO SPECTRUMAN
18.05.2017, 21:57
ничего не усложнится, ты не въезжаешь
атрибуты тоже лежат "в столбце"
хорошая идея
конечно атрибуты при этом должны лежать за столбцом а не каждые 8 байт



при этом в столбце остается 64 байта для атрибутов
можно запилить атрибуты для 8х4


адреса атрибутов легко находятся
x xxxx yyyy yyyy

(0000 00)00 - (1011 11)11 адреса строк
11(00 0000) - 11(101111) адреса атрибутов

перемещение по атрибутам с таким же удобством как и по экрану
inc h, inc l


при этом у нас 512 байт (16*32) не используются

а глядя на дырку в ПЗУ
и учитывая тот чо их можно тоже использовать по делу

то не велика потеря

AzAtom
23.05.2017, 20:03
Тогда ещё вариант.
Можно было использовать бит порта для переключения режима раскладки экрана. Первый режим как я предложил, подряд идут байты одного знакоместа, хорош для текста и спрайтовых игр, которых немало, а второй как предложил Lethargeek, подряд идут байты одного столбца 8х192 на экране. Думаю, там потребуется не так много логики, чтобы реализовать переключение нескольких адресных линий.

Lethargeek
23.05.2017, 20:25
Можно было использовать бит порта для переключения режима раскладки экрана. Первый режим как я предложил, подряд идут байты одного знакоместа, хорош для текста и спрайтовых игр, которых немало,
да ничем он не хорош для "спрайтовых игр", а для текста удобен только лишь при ограниченном его размере и положении
следственно, нет смысла переключаться, лучше логику потратить на что другое, или ни на что не тратить, не усложнять