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

Digger: Изучение. часть 1

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

«Digger (рус. Ди́ггер — «землекоп») — компьютерная игра, выпущенная канадской компанией Windmill Software в 1983 году для компьютеров IBM PC. Игра была весьма популярна во времена широкого использования мониторов и видеокарт стандарта CGA.
Игра создана основным разработчиком компании Windmill games Робом Слетом в 1983 году. В 1984 году программа была переписана для IBM PCjr. Последняя оригинальная версия была выпущена для канадского компьютера Hyperion, работающего на 6 МГц.
Во время игры в качестве фоновой музыки используется тема Гершона Кингсли «Воздушная кукуруза».


… Как оказалось, 8-ми битной версии этой игры под спектрум нет. Есть вариации на тему, местами довольно неплохие, но – «Это не Диггер!» ;)

Копнувши сеть, я обнаружил… The original source code to Digger.

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

Дао конфы


Тайлово-спрайтовая конфигурация (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К классику скорее всего окажется возможной, зачастую даже необременительной. Тем не менее, различия есть, и если не принять их во внимание, можно очень легко получить спектрумовский софт, который ни на одном настоящем спектруме не заработает.
Как этого избежать?

ZiFi is released!

Итак, случилось. Версия 0.61, с автообновлением из сети.

Что нового?
+ скорость кабельной версии приросла в два… нет, в ДЖВА РАЗА, КАРЛ!. 11,5 кбпс онлайн, без СМС. (From mighty DDp!)
+ куча новостей с разных наших сайтов
+ IRC Logs. Вы знаете что здесь делать ;)
Новенькие разделы разработаны и поддерживаются DMlog!

Что сейчас нужно для использования?
Для версии с esp8266 — ускорилась и устабилилась прошивка, здесь можно обновить прошивку ZX Evolution от DDp.
А вообще — мы уже полностью самостоятельны и независимы, МЫ — СПЕКТРУМ ОНЛАЙН.
Для версии RS 232 — ускорился сервер, ускорилась прошивка, необходимо скачать socket-сервер от PSB и обновить прошивку ZX Evolution от DDp с ускоренным до 115200 UART.

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

TSconf: DMA

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

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

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

TSconf: Gfx layer

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

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

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

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

TSconf: Tiles

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


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

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

Архитектура и программирование уникального компьютера Vectrex

На CC'2015 была представлена работа «Electric Force» под один из самых необычных компьютеров, с векторым дисплеем и AY8912 на борту — «Vectrex». Пётр Соболев, автор работы, рассказал об этом компьютере подробнее в презентации на пати:



Саму презентацию можно почитать в pdf. А для тех, кого заинтересует данная тема, есть подробная статья — «Архитектура и программирование Vectrex».

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 — разрешен.
В случае прихода нескольких событий одновременно, сначала обработается прерывание с меньшим номером.

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