Архитектура и программирование компьютера Vectrex / Хабрахабр — А видеовыход у него есть?— И как ты себе это представляешь?(из разговора о Vectrex)Vectrex выпускался GCE в 1. С некоторой натяжкой можно сказать, что он является упрощённой версией векторных игровых автоматов Cinematronics, технически более совершенных. Frank Casino (Франк казино) - это новое онлайн заведение только. Поэтому регистрацию здесь стоит пройти не только ради того, чтобы. Франк казино предоставляет возможность бесплатной игры за счет 10. Да и с вводом и выводом средств проблем не было – благо, вариантов предостаточно. Сегодня онлайн казино предлагают своим клиентам получить бездепозитный бонус. При выводе выигрышей, полученных при отыгрыше 3 евро, будет проведена проверка личности. Джекпот — за регистрацию в казино на счет бесплатно придут 200 рублей с коэффициентом. Онлайн казино Адмирал. Обзор всех нюансов ведения игры. Это можно делать в уютной домашней обстановке за монитором персонального. Войти Регистрация Новая криптовалюта Bitwalking будет начисляться на счет пользователя обмена на реальные деньги, вывода и покупки в Интернет-магазинах. Можно сказать, что даже у производителей современных. Добро пожаловать в онлайн игру "Game HOLL - "Игровой зал"! СТАРТ АКЦИЯ: При регистрации один игровой автомат за 90 рублей в подарок. Вы обязаны играть в игровой автомат только в режиме онлайн, потому как Вулкан осуществил функцию только онлайн игра без скачивания слота. Вулкан казино с бездепозитным бонусом за регистрацию без скачивания с выводом выигрышей подготовил вам самый крупный выбор. На этой странице вы найдете активные предложения бездепозитных бонусов с выводом и бонусов за регистрацию счета в казино в 2016 году. Лучшие онлайн казино с. Игровые автоматы на деньги реально с выводом выигранных средств являются. ClotVoyager- Новое онлайн казино с современными играми, постоянными турнирами. Вам обеспечены яркие эмоции и возможность получить выигрыши в эмуляторах от самых известных мировых производителей. GOLDEN-BIRDS- Инвестиционная онлайн игра с выводом денег. После регистрации каждому 100 рублей на счет для покупок в подарок, лотереи. Лучшие онлайн казино (можно играть бесплатно и без регистрации). Novomatic, Igrosoft, устаревшие эмуляторы, Контроль честности MD5 на рулетке. Igrosoft, SGS Universal, Playboy, бонус за регистрацию 30 фриспинов. Современный гемблинг это серьезный бизнес с миллиардными оборотами.В качестве процессора в Vectrex используется Motorola 6. MOS 6. 50. 2/6. 51. Тактовая частота — 1. MHz. Поскольку компьютер был выпущен как игровая приставка и игры для него продавались на картриджах, программа размещается в ПЗУ картриджа (3. ОЗУ — совсем крохотное (1 кб — две штуки 2. Также есть встроенное ПЗУ с BIOS'ом (8 кб — одна 2. Minestorm (многим известную как Asteroids). Звук реализован на чипе AY8. MSX2 и поздних ZX Spectrum) однако, кроме этого существует штатная возможность проигрывания 8- битного звука через ЦАП (практическое применение этого способа, впрочем, ограничено). Vectrex выполнен в виде моноблока (включающего ЭЛТ экран), но клавиатура не предусмотрена в принципе. Управление осуществляется двумя джойстиками (в т. Кроме того, может быть подключено световое перо и очки 3. D Imager. С 1. 98. Интересно, что более половины игр (и все демо) выпущены после 1. Возрождение платформы связано, в первую очередь, с появлением хороших эмуляторов, которые сделали разработку доступной любому желающему. Сами компьютеры пока также вполне доступны на e. Bay. Векторный дисплей. За исключением части отвечающей за вывод изображения, архитектура Vectrex довольно обычна для компьютеров того периода. Основной интерес представляет именно подсистема формирующая векторное изображение, ей и будет посвящена большая часть статьи. Векторные дисплеи, сейчас практически не встречающиеся и мало кому известные, были распространены в 1. Основное отличие от всем известных растровых заключается в отсутствии автоматической развёртки. Луч не бегает по строчкам сам. Его перемещение управляется программой — код, который вы напишите, определяет направление, скорость, длительность и яркость, с которой будет перемещаться луч. Как следствие — у векторного дисплея нет пикселов, а, следовательно, и нет понятия «разрешение» (по крайней мере, в привычном понимании). Фактически, такой дисплей представляет собой осциллограф, к горизонтальному (X), вертикальному (Y) и каналу яркости (Z) которого подключены цифро- аналоговые преобразователи. Чтобы получить на экране линию, необходимо не просто переместить луч из одной точки в другую, а сделать это равномерно и с нужной скоростью. Затем луч можно погасить и переместить в другую точку, где зажечь и переместить в третью, и т. Таким образом получим некую фигуру. После завершения перемещения люминофор будет какое- то время светиться и линия будет видна. Однако, это послесвечение длится недолго. По этой причине всё, что требуется, включая выполнение кода, задержки вызванные обращением к периферии и саму отрисовку линий, нужно выполнить за ограниченное время. Если линий будет много, изображение начнёт мерцать. Это делает невозможным создание закрашенных фигур (разве что совсем крохотных), а сколько- нибудь серьёзные вещи придётся писать на ассемблере т. Если для традиционных 8- битных платформ (типа Commodore VIC- 2. C6. 4 или ZX Spectrum) вполне можно программировать, ни разу не посмотрев на схему компьютера, в случае с Vectrex понимание того, как работает часть формирующая изображение — необходимо. Конечно, можно пользоваться для отрисовки линий, простых фигур и вывода надписей готовыми подпрограммами BIOS, однако это не позволяет в полной мере использовать возможности устройства — рано или поздно всё равно придётся работать с железом напрямую. По этой причине, знакомство с разработкой будет тесно переплетено с описанием устройства компьютера. Разбираться будем на примере построения прямой линии из точки, где луч уже находился, в некую новую заданную точку. В данном контексте нас интересуют следующие компоненты Vectrex'a (в скобках приведены номера на блок схеме): MOS 6. IC2. 07) — универсальный адаптер интерфейсов (VIA — Versatile Interface Adapter) — этот чип отображается на область памяти $D0. Соответственно, запись по этим адресам значений (например, командами процессора STA $D0. Подробности лучше посмотреть в документации на чип (см. MC 1. 40. 8 (IC3. DAC, ЦАП). Преобразует код, поступающий на него с чипа 6. С точки зрения программирования диапазон напряжений соответствует цифрам - 1. Сохраняют на выходе напряжение (в т. Их две — по каналам Y и Z (для X не нужна, пояснение ниже). CD 4. 05. 2 (IC3. Взависимости от кода на его цифровых входах (которые подключены всё к тому же 6. ЦАП- а на один из нескольких своих выходов. IC3. 05) — аналоговые ключи. Управляемые (тем же 6. LF2. 47 (IC3. 03) — интеграторы на операционных усилителях (их два — по X и по Y, соответственно). Преобразуют входной прямоугольный сигнал, амплитуда которого задана кодом на ЦАП- е, в изменяющееся напряжение, заставляющее луч плавно перемещаться из одной точки в другую, оставляя на экране светящийся след. Далее идёт электронно- лучевая трубка с отклоняющей системой (по горизонтали и вертикали) на которую через усилители подаётся напряжение с интеграторов и, отдельно, напряжение управляющее яркостью луча. При отсутствии напряжения на отклоняющих системах луч находится в центре экрана. При максимально допустимом напряжении на любой из них — за пределами экрана.(для более подробного рисунка см. Но ЦАП всего один, а нам нужно выставить три напряжения — X (направление по горизонтали - 1. Y (направление по вертикали - 1. Z (яркость 0.. 7. F). Для этого после установки каждого напряжения нужно переключить мультиплексор, чтобы напряжение было передано на нужный выход. С каналами Y и Z в этом отношении всё просто, а вот канал X идёт (явно для упрощения схемы) в обход мультиплексора. Т. е., устанавливая Y или Z мы всегда одновременно устанавливаем и X! Поэтому поступаем так: 1. Записываем в ЦАП яркость, переключаем мультиплексор на вывод в канал Z. Напряжение сохраняется на схеме sample & hold (s& h) канала Z. Записываем в ЦАП Y, переключаем мультиплексор на вывод в канал Y. Напряжение сохраняется на схеме s& h канала Y. Выключаем мультиплексор и записываем в ЦАП X (s& h тут не нужна, так как напряжение сохраняется на самом ЦАП)Канал Z нам больше не интересен (яркость постоянна), а вот с X и Y разбираемся дальше. Итак, напряжения по X и Y с выходов схем s& h у нас поданы на аналоговые ключи. Через 6. 52. 2 (выход PB7) мы подаём на эти ключи сигнал RAMP. Ключи одновременно открываются и оба напряжения попадают на соответствующие интеграторы — по X и по Y. На выходе интеграторов, соответственно, получаем изменяющиеся напряжения. Они меняются либо от предыдущего значения, оставшегося на конденсаторе интегратора (помните, мы куда- то там до этого поставили луч?), либо от нуля (если ранее интеграторы сбросили в ноль, подав на них через тот же 6. ZERO — конденсатор разрядится). Интегрирование идёт, напряжение меняется, луч движется по экрану и оставляет след за счёт послесвечения люминофора. Когда надоест, мы можем его остановить, отключив напряжение от интеграторов уже упомянутым сигналом RAMP. Таким образом линия нарисована, а остаток напряжения на интеграторах соответствует её концу (и началу следующей, если понадобится). Возникает вопрос — в какой момент отключать напряжение? В принципе, это ваше дело. Вы можете просто посчитать, какой длины нужен вектор и вбить задержку в нужное число тактов подходящими командами. Однако, на практике обычно применяется другой способ — задействуется таймер 1 в 6. В таймер заносится некое значение, не слишком удачно названное «scale» (масштаб) и начинается обратный отсчёт. Когда значение достигнет нуля, сигналом RAMP интегрирование будет автоматически остановлено. Т. е., достаточно выставить и запустить таймер, луч остановится сам. Однако, тут есть проблема — луч остановится, но как об этом узнать, чтобы начать рисовать следующий? Для этого придётся в цикле проверять один из регистров 6. По сути, получается ожидание впустую, поэтому это время в цикле иногда используют для выполнения каких- нибудь полезных вычислений. Помимо сплошной линии есть достаточно кривая возможность рисовать пунктирную. Для этой цели используется сдвиговый регистр (shift register) в 6. Заносим туда необходимый паттерн (к примеру, $AA = %0. При сдвиге каждый бит выползает на сигнал BLANK и, таким образом, луч сам включается на единицах и выключается на нулях. Проблема в том, что после 8 сдвигов в регистре остаются одни нули и весь наш замечательный пунктир обрывается. Чтобы этого не происходило, необходимо снова и снова заносить туда значение pattern. Делается это в вышеупомянутом цикле ожидания окончания интеграции. В таких условиях получить именно тот пунктир, какой хочется — весьма непросто. Впрочем, именно этот регистр используется BIOS'ом для функции вывода текста (т. Из всего вышеописанного следует три важных момента: 1. Рисование происходит не по абсолютным координатам, а по относительным. Следующее перемещение отсчитывается от конца предыдущего и вектор имеет некую длину в некотором направлении (кстати говоря, это позволяет совершенно штатно выводить изображение за границы видимой части экрана — к примеру, для реализации скроллинга). Из- за различных утечек с каждым перемещением быстро растёт погрешность (единицы сантиметров на десять тысяч тактов), поэтому в начале каждого «кадра» (серии рисований) луч выставляют в центр экрана. Длина и направление вектора зависит от сочетания scale и напряжений по X и Y. В некотором смысле, scale задаёт длину, а X и Y направление (но при этом также влияя на длину). Можно сказать, что на рисунке с графиком scale задаёт время от A до B (или от B до C), а значение X (или Y) подаваемое на ЦАП — наклон отрезков на нижней части графика (говоря иначе — скорость изменения напряжения). Поскольку scale — время перемещения луча, оно должно быть по возможности минимальным. Чем оно меньше, тем больше векторов можно успеть нарисовать, пока не начнётся мерцание. Для немерцающего изображения в 5. Vectrex) необходимо со всеми рисованиями и вычислениями уложиться в 3.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. Archives
December 2016
Categories |