+16.72
20 читателей, 59 топиков

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: Sprites

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

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


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

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

TSconf: Tiles

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


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

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

TSconf: DMA

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

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

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

TSconf: Memory

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

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

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

Дао конфы


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

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

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

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

GO WEST, часть 1

Я хочу попробовать собрать в максимально компактной форме более-менее всё, что нужно для того, чтобы либо портировать вашу программу на один из классических спектрумов, либо написать её с нуля сразу совместимой с классикой. Когда я говорю «классика», я имею в виду любую из следующих машин: ZX Spectrum 48K, 128K, +2, +2A, +2B или +3. На практике, многие из этих моделей очень похожи друг на друга с т.зр. программиста и реально важно отличать следующие три вида классических спектрумов: 48К или 128К/+2(«серый») или +2A/+2B/+3.

В целом, отечественные клоны обладают довольно высокой степенью совместимости с оригиналами и переделка вашей программы для Leningrad 48К на 48K классику или переделка вашей программы для Pentagon 128K на любую 128К классику скорее всего окажется возможной, зачастую даже необременительной. Тем не менее, различия есть, и если не принять их во внимание, можно очень легко получить спектрумовский софт, который ни на одном настоящем спектруме не заработает.
Как этого избежать?

Captain Drexx изнутри. End part: full source


Все интересные моменты в игре, по моему скромному мнению, рассмотрены. Много чего опущено, но это всё — технические моменты.
Содержание цикла «Captain Drexx изнутри»

Осталось сладкое — исходники.

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