Хорошая статья, спасибо.
В этом плане, пожалуй, вспомню мою первую Амигу - Amiga A600, на которую я "пересел" в 1995м году и начал знакомиться с её внутренностями. Ощущение, которое я испытал, нельзя сравнить с оргазмом, поскольку оргазм бледнеет и курит беломор по сравнению с пониманием ЧТО я могу сделать на этой машинке. Вот хотя бы несколько фактов. Сам компьютер собран в виде симбиоза сопроцессоров, которые живут в одном корпусе, разделяют то же самое ОЗУ, но занимаются разными делами. - Музыкальный сопроцессор состоит из 4х независимых 14-битных COVOX'ов (в терминологии спектрума), которые самостоятельно без участия центрального процессора выбирают данные из ОЗУ из того места, которое укажешь и с той скоростью, которую укажешь. В результате проигрывание сэмплированной 4х-канальной музыки обходилось центральному процессору в 0 тактов. - Видеопроцессор выбирает данные для отображения из разных областей ОЗУ (можно указать разный начальный адрес для каждого битплана!) и выводит их в виде 8 независимых битпланов, причём для того, чтобы скроллировать экран не нужно было перекидывать данные физически - достаточно было просто поменять начальный адрес отображаемой зоны ОЗУ. Всё ОЗУ было доступно для видео! - Контроллер дисковода и HDD - тоже абсолютно независимые от ЦП устройства, складывающие читаемые данные в указанную область памяти, при этом не грузящие ЦП всякой ненужной инфой вроде "я тут прочитал один бит, скажи, что мне делать дальше?". Многие демки на Амиге одновременно крутили на экране сложнейшие видеоэффекты, играли 4х канальную сэмплированную музыку и при этом подгружали с дискеты следующую часть. Например, демка "9 Fingers" состояла из набора коротких видеороликов - когда показывается один, с дискеты при этом считывается следующий. Посмотрите ЭТО хотя бы на youtube. - Центральный процессор при всей своей 7-мегагерцовой немощности (всего в 2 раза выше, чем ZX!) умел проделывать математические операции сложения, вычитания, умножения и деления 32-чисел за 4 такта. Посчитайте, для примера, сколько памяти и времени нужно ZX, чтобы сложить два 32-разрядных числа. Кроме того, у него в комплекте 8 регистров данных (D0-D7) и 8 регистров адреса (A0-A7), каждый 32-разрядный и заменяемый, т.е. можно без ограничений использовать ЛЮБОЙ из них. Также порвала мозг возможность записывать в стек и считывать из стека сразу несколько регистров за одну команду. Например, команда сохранения на стек выглядела вот так MOVEM D0-D3/D5/D6/A0/A3-A5, -(A7) Причём, это одна команда! Можно ещё прибавить аппаратную реализацию спрайтов, блит-сопроцессор, который играючи мог переносить с места на место огромные массивы данных (типа как LDIR на ZX, только в разы быстрее), при этом производя операции XOR/OR/AND с ними, возможность вызывать прерывание в момент отрисовки видеопроцессором конкретного указанного пикселя на экране (!) и многое-многое другое, про что я уже забыл. Ребята, это просто был пипец. В своё время Amiga была тем компом, который будучи распространённым в России как ZX мог бы произвести настоящую революцию. Но как-то не сложилось.
Всё равно это очередное решение "через задницу". Лучше как следует подумать и сделать нормально, чем сделать быстро и потом трахаться с кодом.
[QUOTE=Epsilon;bt347]Для 7 кГц буфера в 16 байт маловато. Пришлось бы как минимум 9 раз за один INT обновлять весь буфер, а значит - опять реализовывать программный таймер, что на корню убивает центральный процессор.[/QUOTE] Только у этого программного таймера большая точность не нужна. Можно после вывода каждого спрайта проверять, есть ли место в буфере и догружать. Мы можем записывать значения каждые 1000~2000 тактов. Когда как получится, а звук будет ровный.
[QUOTE=Epsilon;bt347]Для 7 кГц буфера в 16 байт маловато. Пришлось бы как минимум 9 раз за один INT обновлять весь буфер, а значит - опять реализовывать программный таймер, что на корню убивает центральный процессор.[/QUOTE] Да, разрабатывалось то под PC, где есть программируемый таймер. Для спектрума небольшая проблема в том, что К555РУ10 обьемом всего 16 полубайт. То есть надо ставить аж 18 штук для полной буферизации.
А у меня был компьютер "Юнга" - тоже на базе КР580ВМ80А и тоже не совместимый с оригинальным Радио-86РК и "Микрошей". С Микрошей по большей части несовместим потому, что у "Юнги" не было текстового режима, который в играх на "Микроше" использовался везде. Кстати этому компьютеру я очень благодарен - на нём начался мой гейм-девелоперский путь. Есть даже с десяток игр, валяются где-то. Может быть, когда-нибудь обязательно выложу.
Для 7 кГц буфера в 16 байт маловато. Пришлось бы как минимум 9 раз за один INT обновлять весь буфер, а значит - опять реализовывать программный таймер, что на корню убивает центральный процессор.
Кстати для CD-качества достаточно было бы буфера размером 882 байта, ну ладно, 1024. При этом пакет байтов нужно было бы писать 1 раз в INT, и куча времени оставалась бы для графики и математики. Для стерео-качества нужно было бы 2048 байтов. Сейчас это кажется таким простым, но в 1990 годы было реальной проблемой.
Прикольная штука. Только её надо было в году так 1990м прицепить к ZX повсеместно, вместо COVOX.
Не знаю зачем это мне было нужно, но посмотреть было интересно
С огромным удовольствием смотрю ваши видео. Как обычно, жду продолжения по этой теме.
Как всегда интересно было послушать.
* Felix *, да, vinxru обладает способностью, в свойственной ему спокойной манере, весьма интересно преподносить материал. Рекомендую ознакомиться и с другими его видео.
Хотя я старый спектрумист, и вектора в глаза не видел, но обзор хорош, спокойно рассказано про разные версии компа. Было интересно посмотреть.