Soviet Union ZX Spectrum CommunityПятница, 23.06.2017, 06:24
Вы вошли как Гость | Группа "Гости" | RSS
 [ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 5 из 5«12345
Soviet Union ZX Spectrum Community » ZX-строительство » Железо » Разработка схемы видео-адаптера для ZX-Spectrum
Разработка схемы видео-адаптера для ZX-Spectrum
HazarДата: Четверг, 24.11.2016, 23:19 | Сообщение # 81
80h
Группа: Пользователи
Сообщений: 227
Статус: Offline


Можно режим редакции включить на все последние сообщения
Прикрепления: 6421135.gif(42Kb)


Spectrum жив в нашей душе навсегда

Сообщение отредактировал Hazar - Четверг, 24.11.2016, 23:21
 
HazarДата: Воскресенье, 11.12.2016, 22:12 | Сообщение # 82
80h
Группа: Пользователи
Сообщений: 227
Статус: Offline
Знакогенератор часть4

Эта переменчивая “CHARS” или как определить текстовой режим.

Как уже упоминалось в теме переменная “CHARS” используется для указания
Программным процедурам выполняющих печать на экран где искать набор символов.

В ZX Spectrum 48 она находится по адресам 23606, 23607

В ячейку 23607 программа инициализации заносит старший разряд (16 bit числа)
hex 3C / dec 60 . А в 23606 младшая часть содержит 0 ,так как Hex 3C00 = Dec 15360.

адрес 15360 +256 соответствует стандартному положению набора символов
который расположен в ПЗУ ZX Specrum 48. Однако Пользователь может в любой
момент изменить содержимое ячеек системной переменной CHARS и указать
другое расположение таблицы изображений символов, при этом если на месте
новой таблицы окажется посторонняя информация не имеющая отношения к
символам, то на экране будет отображаться неизвестно что.

Некоторые сложные прикладные программы могут формировать сразу несколько символьных таблиц и оперативно
менять шрифт в соответствии с требуемыми условиями. Поэтому требуется более сложное устройство
(чем было предложено ранее) для отслеживания местоположения таблицы символов. Что мы и попробуем сделать.

Схема определения переменной Chars состоит из набора логики, 2 параллельных регистров и сумматора ,развернутая схема
сумматора не приводится из за большого количества элементов .



Создать любой требуемый сумматор можно с помощью встроенного в Квартус мастера “ Mega Wizard Plug In “

Прикрепления: 1083388.gif(22Kb) · 6339411.gif(26Kb)


Spectrum жив в нашей душе навсегда
 
HazarДата: Пятница, 16.12.2016, 16:36 | Сообщение # 83
80h
Группа: Пользователи
Сообщений: 227
Статус: Offline
Знакогенератор файлы для Fpga
Прикрепления: _Rom_file.zip(47Kb)


Spectrum жив в нашей душе навсегда
 
HazarДата: Суббота, 17.12.2016, 21:01 | Сообщение # 84
80h
Группа: Пользователи
Сообщений: 227
Статус: Offline
Обновление схемы формирователя Border
По сравнению с прошлой схемой добавлен блок синхронизации процессора (элементы: триггер inst28, счетчик inst4 /асинхронный сброс/, вспомогательная логика) .

Увеличена рабочая частота формирователя до 100 Hz с целью увеличить количество совпадений (при операции сравнения строк и колонок) .
А также добавлен узел “подстройки” длительности бордерной линии (элементы: inst10, inst33, логика).

Установлен дополнительный 6 разрядный компаратор для синхронизации выводимых колонок (относительно сигнала INT_CPU 50Hz).
Прикрепления: _Border_02.zip(43Kb)


Spectrum жив в нашей душе навсегда

Сообщение отредактировал Hazar - Понедельник, 19.12.2016, 18:53
 
Black_CatДата: Воскресенье, 18.12.2016, 16:10 | Сообщение # 85
Координатор
Группа: Координаторы
Сообщений: 516
Статус: Offline
Цитата Hazar ()
Символьная Графика пользователя (UDG) .

В верхних областях памяти компьютера, начиная с адреса 65368 и по адрес 65535 находится область UDG-графики (графики пользователя). Она занимает 168 байт, каждый символ занимает 8 байтов, таким образом можно задать только 21 символ.

На клавиатуре компьютера эти символы "привязаны" к клавишам от A до U в алфавитном порядке и выдаются на экран когда компьютер находится в графическом режиме, Этот режим обычно применяют когда нужно печатать на экране не стандартные символы или используют для добавления национальных
шрифтов.

Обращение процессора к этой области можно интерпретировать с некоторыми оговорками как символьный режим для печати текста на экране.

И соответственно сформировать управляющий сигнал для манипуляций
С символьными данными с которыми в текущий момент времени работает процессор.


Имхо, спорный способ включения аппаратного текстового режима или знакогенератора. Область UDG является таковой только для BASIC, а игры и пользовательские программы могут использовать её как хотят. То же можно сказать и о CHARS.

Касательно текстовых режимов для Спектрума, то я этот вопрос изучал. Текстовые видеорежимы 32х24, 64х24 реализуются на клонах Спектрума сравнительно просто. Например на Фениксе, не считая дешифратора и управляющего триггера, требуется всего пару микрух для реализации 32х24 http://zx.clan.su/forum/8-66-867-16-1399210558 . 80ти колоночный текстовый режим, я считаю правильнее реализовывать на внешней видеокарте в адресном пространстве #2000-#3FFF, при этом знакогенератор будет располагаться в стандартных адресах ПЗУ Спектрума.

Что касательно размещения знакогенератора в FPGA, то моё мнение - это довольно расточительно.


"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!".
"Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло."
Гарри Трумэн
 
HazarДата: Воскресенье, 18.12.2016, 20:23 | Сообщение # 86
80h
Группа: Пользователи
Сообщений: 227
Статус: Offline
Цитата Black_Cat ()
Имхо, спорный способ включения аппаратного текстового режима или знакогенератора. Область UDG является таковой только для BASIC, а игры и пользовательские программы могут использовать её как хотят. То же можно сказать и о CHARS.


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

Цитата Black_Cat ()
Текстовые видеорежимы 32х24, 64х24 реализуются на клонах Спектрума сравнительно просто. Например на Фениксе, не считая дешифратора и управляющего триггера, требуется всего пару микрух для реализации 32х24 http://zx.clan.su/forum/8-66-867-16-1399210558 . 80ти колоночный текстовый режим, я считаю правильнее реализовывать на внешней видеокарте в адресном пространстве #2000-#3FFF, при этом знакогенератор будет располагаться в стандартных адресах ПЗУ Спектрума.


Я бы не сказал что просто нужна реальная схема идентификации символьного режима (хотя бы для бейсика )

Знакогенератор 32x24 не вместится в стандартное ПЗУ там всего 768 байт отведено (только для символов 8х8)


Spectrum жив в нашей душе навсегда
 
Black_CatДата: Воскресенье, 18.12.2016, 20:48 | Сообщение # 87
Координатор
Группа: Координаторы
Сообщений: 516
Статус: Offline
Текстовому режиму не нужно привязываться к BASIC, как и любой другой видеорежим он может быть включен через свой порт.

Цитата Hazar ()
Знакогенератор 32x24 не вместится в стандартное ПЗУ там всего 768 байт отведено (только для символов 8х8)

А что мешает разместить 2кб знакогенератор? :)


"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!".
"Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло."
Гарри Трумэн
 
HazarДата: Понедельник, 19.12.2016, 19:10 | Сообщение # 88
80h
Группа: Пользователи
Сообщений: 227
Статус: Offline
Цитата Black_Cat ()
Текстовому режиму не нужно привязываться к BASIC, как и любой другой видеорежим он может быть включен через свой порт.


Basic он сам по себе работает вполне самодостаточная система , порты при этом нужны только для общего управления (например изменить
размер символов, добавить (убрать) дополнительные колонки строки для знакоместа).

Цитата Black_Cat ()
А что мешает разместить 2кб знакогенератор? :)


Стандартная адресация системного ПЗУ и фиксированное положение набора символов 15616 dec
*************************************************************************************

Знакогенератор часть 5

Идентификация текстового режима методом определения обращений CPU
К стандартным процедурам печати .

В системном ПЗУ ZX Spectrum 48 содержится несколько подпрограмм которые
Производят печать символов на экран монитора или управляют выводом символов на принтер. Процедуры являются общими для экрана и принтера,
поэтому перед вызовом процедуры пользователь должен установить канал ввода (вывода), для правильной передачи информации по назначению.

Стандартные каналы ZX Spectrum 48.

Стандартными каналами для ввода вывода информации являются:

"К" - Канал (I/O) обслуживает клавиатуру, нижние две строки экрана (системное окно)
"S" - Канал вывода, основная часть экрана .
"P" - стандартный "ZX-принтер".
"R" - используется для записи байта в рабочую область памяти, адресуемую переменной, последний канал недоступен из среды “zx бейсика”.

Для надежного определения текстового режима требуется динамически определять
Состояние каналов "К" и "S" . Что возможно если проверить состояние системного
Флага находящегося по адресу 23611 (5СЗВ hex) флаг модифицируется по мере необходимости системными процедурами .

Первый бит системной переменной FLAGS (5C3B). Должен быть выключен для каналов "S" и "К", и включен для канала "P" (ZX-принтер).

Список стандартных процедур печати:

09F4 - 0A10 - PRINTOUT - выполняет функции диспетчера.

0A09 - 0ADB PRINTABLE CHARACTER CODES - выполняет печать (ASCII) символов.

0B24 - 0B7E PRINT ANY CHARACTERS - печать символов, токенов, псевдо-графика и UDG.

0B7F - 0BDA PRINT ALL CHARACTERS – печать всех символов (основная процедура печати)

0C0A - 0C3A MESSAGE PRINTING -печать токенов ключевых слов и системных сообщений.

0D6B - 0DFD CLS COMMAND - выполняет очистку экрана.

2DE3 - 2F9A PRINT_FP . Печать преобр. чисел в 10-й системе с плавающей тчк. (5 Bytes) .
Прикрепления: Proc-Print_All.zip(81Kb)


Spectrum жив в нашей душе навсегда

Сообщение отредактировал Hazar - Среда, 21.12.2016, 00:21
 
HazarДата: Пятница, 23.12.2016, 23:11 | Сообщение # 89
80h
Группа: Пользователи
Сообщений: 227
Статус: Offline
Исправление и доработка схемы детектора обращений к стандартному Знакогенератору

В выложенной прошлой схеме дешифрация адресного пространства
Производилась в завышенном диапазоне >768

Добавлено (23.12.2016, 23:11)
---------------------------------------------
Знакогенератор часть 5

203С PR-STRING Программа печати символов в виде строки
Эта процедура при своей работе использует обращения к RST 16, как к подпрограмме .

Поэтому нет нужды делать отдельный детектор (hex 203C) достаточно с детектировать
Выполнение кода команды RST 16 (код D7 HEX)



Кодировка символов ASCII ( American Standard)

Процессоры не умеют работать напрямую с символами поэтому каждому символу был назначен свой
Уникальный числовой код для символов используются кода с 32 по 127. Коды с 0 по 31 используются компьютером в качестве
управляющих при операциях ввода/вывода например для перемещения курсора и других вспомогательных операциях
В ZX Spectrum как и во всех компьютерах есть процедуры для работы с ASCII кодами.

Например программа расположенная по адресу.

15EF-15F1 OUT-CODE переводит целые числа от 0 до 9 в значение кода ASCII.

Эта процедура в виде подпрограммы обычно входит в состав программ которые производят вывод символов на экран или принтер.
Прикрепления: 9190176.zip(140Kb) · 3362645.gif(4Kb)


Spectrum жив в нашей душе навсегда

Сообщение отредактировал Hazar - Пятница, 23.12.2016, 23:43
 
HazarДата: Вторник, 27.12.2016, 17:44 | Сообщение # 90
80h
Группа: Пользователи
Сообщений: 227
Статус: Offline
Динамический цветовой секвенсор (устройство расширения цвета).
Данное устройство является чисто любительской доработкой
(разработано в честь предст. праздника нового года ).

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

Для того чтобы получить более-менее осмысленную раскраску объектов используется подпрограммы (коды операций CALL .RET ) которые производят вывод информации на экран (при активном сигнале детектора экрана). Таким образом для каждой подпрограммы цветовой
Секвенсор будет воспроизводить неповторимую последовательность цветов которая будет выводится по разному, для каждой вновь запущенной программы.
Пример последовательности команд:

CALL 35000 – (1000 1000 1011 1000) активация 1 палитры -- RET запрет
CALL 35228 – (1000 1001 1001 1100) активация 2 палитры -- RET и.т.д.

Полученная цветовая палитра временно сохраняется в регистрах секвенсора и выводится через выходной буфер при использовании PLIS (эл. “LCELL” “TRI” ) и далее на вход Ц.А.П. (R8,G8,B8) или упрощенный вариант (R6,G5,B5) , Подробности по буферным элементам можно почитать в теме “ Буфер шины данных”.

Прикрепления: 1632566.gif(30Kb)


Spectrum жив в нашей душе навсегда

Сообщение отредактировал Hazar - Среда, 28.12.2016, 13:02
 
HazarДата: Вторник, 03.01.2017, 19:30 | Сообщение # 91
80h
Группа: Пользователи
Сообщений: 227
Статус: Offline
Знакогенератор часть 6

Символы псевдографики и текстуры при использовании результатов вычислений.

Псевдографику часто использовали для оформления текстовых доков ,
При этом рисунок делали исходя из приблизительной оценки ур. яркости
cимволов кода ASCII.

интенсивность ____ код ASCII

0 - 0 __________32
1 - 10 _________ 176
11 - 20 _________ 177
21 - 31 _________ 178
32 - 32 _________ 219

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



Используя современные средства проектирования можно значительно расширить
возможности псевдографики при использовании математических приемов,
например расширить кол-во и разнообразие символов до 65535 и более.
При этом не потребуется большой объем ROM для хранения образов символов.
****************************************************************
В основах математики разные виды чисел образуют разные подмножества систем счисления. Числа описывающие совершенные квадраты (1, 4, 9, 16…) являются подмножеством целых чисел (1, 2, 3, 4…), которые, в свою очередь, являются подмножеством вещественных чисел.

Другими словами вещественные числа обладают большой информационной “емкостью”
Например при делении чисел с высокой точностью можно получить повторяющиеся
Массивы чисел как с малым так и с большим периодом повторения (что сильно напоминает обычные электрические сигналы с разной частотой повторов или различных наборов импульсов).

Обратите внимание результат математической операции можно использовать
как управляющую последовательность (ну например для счетчика или мультиплексора).

Также часто при делении возникают бесконечные последовательности чисел.

0.987654321 / 8 = 0.12345679012345679… = 10 / 9^2
1 / 27 = 0,037037037037037037…;
1 / 37 = 0,027027027027027027…;

(полученный ряд можно применить в качестве графических текстур при моделировании различных поверхностей . А также при наложении цветовых градиентов с изменением яркости цвета.)

А вот примеры выражения с очень сложным «порядком» следования
(чередованием) чисел:

987654321000 / 123456789 = 8000,0000729000006633900060368491,
1 / 89 = 0,011235955056179775280898876404494

Чем не генератор случайных чисел? Который можно использовать при выводе
случайных пейзажей (например при построении береговой линии и др) .
Прикрепления: 7973114.gif(43Kb) · 4444.zip(145Kb) · 55555.zip(244Kb) · 7777.zip(117Kb)


Spectrum жив в нашей душе навсегда

Сообщение отредактировал Hazar - Вторник, 03.01.2017, 19:57
 
HazarДата: Вторник, 03.01.2017, 20:47 | Сообщение # 92
80h
Группа: Пользователи
Сообщений: 227
Статус: Offline
Знакогенератор часть 6

Символы псевдографики полученные при вычислении



Составной символ 16Х16
Прикрепления: 5757834.gif(73Kb) · 6572795.gif(24Kb) · 4447727.zip(64Kb)


Spectrum жив в нашей душе навсегда

Сообщение отредактировал Hazar - Четверг, 05.01.2017, 11:32
 
HazarДата: Воскресенье, 12.02.2017, 19:23 | Сообщение # 93
80h
Группа: Пользователи
Сообщений: 227
Статус: Offline
Применение сигнала RFSH для расширения возможностей видео-адаптера.

В обычных стандартных схемах ZX-Spectrum, Сигнал RFSH (CPU Z80). используется для регенерации динамической памяти, производится эта операция в конце машинного цикла после
декодирования и выполнения извлеченной команды внутри процессора при этом активизируется также сигнал /MREQ, адрес регенерации памяти выдается на шину A0-A6. Сам процесс регенерации производится процессором методом перебора 128 адресов.
Как только заканчивается чтение памяти в очередном цикле на A0-A6 выдается содержимое счетчика регистра регенерации ® (CPU Z80) , этот адрес остается на шине до окончания последнего такта T4. Поскольку регенерация является операцией доступа к памяти сигнал /MREQ переводится в состояние низкого уровня, а сигнал /RD устанавливается в состояние высокого уровня.


Формирование сигнала RAS (Row Access Strobe -Выборка строки DRAM).
С помощью сигналов процессора RFSH и MREQ формируется сигнал RAS. Таким образом, при каждом выполнении цикла M1 производится регенерация одной строки. После выполнения каждой команды производится увеличение регистра ® процессора на единицу.
********************************************************************************
Когда микропроцессор Z80 создавался, 7-разрядный адрес регенерации всех устраивал, поскольку самыми распространёнными микросхемами DRAM были кристаллы ёмкостью 128×128 разрядов (16 Кбит), для регенерации которых требовались 7-разрядные адреса. Позднее появились кристаллы с организацией 256×256 разрядов (64 Кбита); для их регенерации требовались уже 8-разрядные адреса (и более).
********************************************************************************
В связи с появлением самостоятельных методов регенерации больших объемов памяти (независимых от процессора), а также удешевлением микросхем SRAM . Появляется
возможность применения сигнала RFSH для других целей (например для организации
дополнительного доступа к видео-памяти и др.) При каждом появлении сигнала RFSH
адресную шину процессора и шину данных, можно без каких либо особых проблем использовать для нужд видео-вывода, например для расширения цвета или даже для объединения области атрибутов и пикселов в один массив.



Также в оригинальном Спектруме регенерация видео-памяти производилась отдельно от процессора благодаря непрерывным обращениям микросхемы “ULA” для поддержания и постоянного обновления видеосигнала.
Прикрепления: 4188151.gif(23Kb) · 1063660.gif(36Kb)


Spectrum жив в нашей душе навсегда

Сообщение отредактировал Hazar - Воскресенье, 12.02.2017, 19:25
 
HazarДата: Среда, 22.02.2017, 06:20 | Сообщение # 94
80h
Группа: Пользователи
Сообщений: 227
Статус: Offline
Графические преобразования при масштабировании изображений.

При проведении графических преобразований существуют разные возможности.
Одним из методов масштабирования основан на математических вычислениях
(при использовании процессоров) для оптимизации скорости вычислений
Берется минимальный графический объект например [4x4]



При более меньшем Размере затруднительно провести идентификацию объекта, а при большем размере
неограниченно возрастает количество этих самых объектов что приводит К невозможности обработать все
нужные объекты за требуемый промежуток времени.
При размере объекта [4x4] и обработке экрана 256x192, наибольшее расчетное
количество объектов равно 384.
Преобразование объекта [4x4] до [8x8] можно выполнить простым умножением
исходного числа , но в связи с низкой скоростью подобных операций лучше использовать
операции простого копирования исходных чисел со сдвигом в лево и вставкой дополнительных байтов (см. рис) .
При этом операции сдвига производятся не с отдельными битами а сразу с байтами.



*******************************************
Прикрепления: 0293078.gif(25Kb) · 4129695.gif(36Kb) · 4172055.gif(20Kb)


Spectrum жив в нашей душе навсегда

Сообщение отредактировал Hazar - Среда, 22.02.2017, 09:00
 
Soviet Union ZX Spectrum Community » ZX-строительство » Железо » Разработка схемы видео-адаптера для ZX-Spectrum
Страница 5 из 5«12345
Поиск:

Copyright MyCorp © 2006Сайт управляется системой uCoz