TSconf: Ports

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

Итак, порты системы можно разделить на следующие группы:
  • порты управления выполнения кода процессором. Сюда отнесём такие порты как: SysConfig, CacheConfig
  • порты управления памятью: MemConfig, Page0 — Page3, FMAddr
  • порты страниц графики TSU: VPage, T0GPage, T1GPage,TMPage, SGPage
  • порты управления графическими режимами / цветом: VConfig, PalSel, Border
  • порты управления отображением: TSConfig, GXOffs/GYOffs, T0XOffs/T0YOffs, T1XOffs/T1YOffs
  • порты управления DMA: DMASAddr, DMADAddr, DMALen, DMANum, DMACtrl
  • порты управления приходом INT: INTMask, HSINT, VSINT
  • порт управления виртуальным FDD: FDDVirt

Читать дальше →

TSconf: INTs


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

Дао говорит: Система имеет три типа маскируемого прерывания, которые могут быть вызваны по адресу, который имеет старшим байтом — адрес в регистре I, а младшим — свой тип:
  1. #FF — кадровый (Frame)
  2. #FD — строчный (Line)
  3. #FB — DMA.
Обработку этих прерываний можно переключать портом INTMask (#2Aaf), изменяя состояние битов:
0 — Frame, 1 — Line, 2 — DMA, что приводит к on/off вызову обработчиков. Состояние битов: 0 — запрещен / 1 — разрешен.
В случае прихода нескольких событий одновременно, сначала обработается прерывание с меньшим номером.

Читать дальше →

TSconf: Gfx layer

Спрайты, тайлы… Возможно, этого нам и хватило-бы…
Но под этими слоями находится базовый слой графики.

Дао говорит: Слой графики отображает данные, которые находятся в страницах памяти. Первая страница для отображения (её адрес обязательно кратен 8 для 16цветов, 16 — для 256 цветного режима, общая длина — 8/16 страниц) указана портом VPage (#01af). Способ отображения данной памяти задаётся битами порта VConfig, который задаёт разрешение и цветовую глубину.
Окно отображения памяти представляет собою блок размерами заданного разрешения и отображается по позициям X (0-511) и Y (0-511), которые указаны парами портов GXOffs и GYOffs. Окно зациклено по краям в отображении.
Цвета отображения заданы палитрой, номер выбирается первой тетрадой регистра PalSel (#06af).

Итак, у нас есть экран со своим внутренним скроллом.

Читать дальше →

TSconf: Memory

Рассмотрим расположение памяти в системе.

ZX Evolution имеет 4Мб памяти.
Организация этой памяти подобна zx spectrum 128 — используется страничная организация.
В переложении на страницы памяти, мы имеем 256 страниц по 16 кб каждая.

Читать дальше →

TSconf: DMA

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

Дао говорит: Скорость пересылки составляет 7 Мгц, копирование происходит по два байта (16 бит) при условии что в этот такт к памяти нет обращения от ЦПУ, видео или ТСУ.
В среднем: 4 байта — 2 такта, дма обращается к озу за 1 такт 7 мгц, 16 бит, для пересылки надо 2 обращения
Получаем: скорость DMA 7 МБ/с
DMA может копировать данные из следующих источников:

Читать дальше →

TSconf: Tiles

Да, Мультиматограф близок, нужно поднажать!
Итак, тайлы.


Для построения тайлов нам необходимо сделать следующее:
— подготовить графику (разместить её в странице для графики тайлов)
— построить карту тайлов (с размещением в странице карты)
— запрограммировать порты (указать, какие страницы используются для графики, для карты, и включить отображение нужных слоёв)

Читать дальше →

Дао конфы


Тайлово-спрайтовая конфигурация (TSconf). Вступление
По моему мнению, TSconf является очень современной надстройкой над любимым ZX Spectrum, которая вносит давно ожидаемые и необходимые элементы в виде цвет на точку, аппаратные спрайты и прочее. Об этом и пойдёт речь в этой статье.

Тайлово-спрайтовую конфигурацию (TSconf) можно разделить на следующие логические группы:
1. Графический акселератор
— Использование тайлов
— Вывод и управление спрайтами
2. Менеджер памяти
3. Блок прямого доступа к памяти (DMA)
4. Система прерываний
5. Кеш
6. Порты управления

Давайте постепенно рассмотрим все эти пункты по порядку.

Читать дальше →

TSconf: Sprites

А вот чё бы и не навалить поверх графики спрайтов-то, а?
Они-то у нас искаропки.

Дао говорит: Спрайт — это графический тайл размером от 8 до 64 точек, который может быть выведен в координаты 0-511 по X и Y, с возможностью отражения отображения по вертикали / горизонтали, и имеющий прозрачность.
Всего доступно 85 спрайтов для одного спрайтового слоя.


В общем, отработка спрайтов выглядит следующим образом:
  • Спрайт нужно разместить в памяти точно таким-же образом, как для тайлов (или на экране в режиме 16 цветов).
  • Палитра спрайта так-же должна быть загружена в общую палитру системы.
  • После этого — загружаем описание спрайта в систему и включаем отображение.
Спрайт становится виден.

Читать дальше →