кошкин ёж, не тот код запостил во втором варианте, там должно быть

	ld de,$XX20☺
	add hl,de
	ld e,h
	ld a,(de)
	ld h,a

Хотя уже неважно, ведь оказалось, можно еще быстрее. Я как-то проглядел, что там же в аккумуляторе хранится исходный младший байт адреса! В связи с этим можно переписать:

		...
		ld a,l
		jp _loop3

_xrow1		ld b,8
_xrow2		add 32
		ld l,h
		ld h,$XX
		ld h,(hl)
		jp nc,_loop2
		ld h,l

_loop1		inc h
_loop2		ld l,a
_loop3		DUP...EDUP
		djnz _loop1

		dec c
		jp p,_xrow1
		ld l,a
		exa
		ld b,a
		ld a,l
		jr nz,_xrow2

		ld sp,0
		ret

«чистый» код down_hl (с _xrow2 по _loop1 включительно) на всю высоту экрана сожрёт 1493 такта
если жаба не задушит продублировать кусок _loop2...djnz — можно сократить заменой jp на jr до 1398
это с маленькой таблицей, а без таблиц у меня теперь получилось 1556 «чистых» тактов:

		...
_xrow2		add 32
		jr c,_loop1
		ld l,a
		ld a,h
		sub b
		ld h,a
		ld a,l

_loop1		inc h
		...
Магнитные полоски — это огонь!
  • avatar bfox
  • 1
очень круто! как всегда:)
  • avatar VBI
  • 3
Крутой чёрт! :)
Картинка очень хорошая получилась! Автор наверняка лукавит, что это первая работа на ZX :) Интересно сколько времени потрачено на неё?
Да, обзоры легче писать, чем графику рисовать ))) Хотелось бы еще от кого-нибудь почитать обзор графики.
Мой топ:
1. void. Камбэк OMEGA на платформу
2. Dark Transit. Такого забористого бипера я давно не слышал, аж пробрало.
3. Возвращение tayle в графике.
  • avatar nyuk
  • 4
Саня, спасибо за обзор! Прочитал с огромным удовольствием.
Спасибо! Исправил!
K5hO City? Я таких городов нинаю, наю тока KEMO City.

А за обзор спасибо огромное.
Конечно не заметил; смотрел применительно к своему коду, а не к твоему. Забавная идея про 2 точки входа!
За прошедший год я немного улучшил оба декомпрессора. Компактный распаковщик удалось сократить до 88 байт (если у кого-то будут мысли, как его можно ещё сократить — буду очень благодарен, так как
у меня там уже начались реально неприятные оптимизации). Быстрый распаковщик тоже удалось ускорить на несколько процентов, ещё и сократив его до 229 байт, в т.ч. благодаря идеям uniabis.
Последний компактный распаковщик (88 байт): unmegalz_small.asm
Последний быстрый распаковщик (229 байт): unmegalz_fast.asm

Внимание, я немного поменял систему нумерования версий, теперь версия указана внутри файла. Поэтому по этим ссылкам всегда можно будет взять самые последние версии распаковщиков.
Спасибо! Отличный обзор!
Отличный обзор, Саша. Спасибо!
  • avatar aa-dav
  • 1
В процессе обсуждения на другом ресурсе родилась забавная, имхо, идея.
Единственный формат инструкции Simpleton (2.0) содержит трёхбитовое поле условности инструкции COND:

И сама инструкция в процессе середины выполнения его в схемотехнических кишках должна отвлечься на его проверку и откинуть результат если условие не сработало.
Но как мы знаем побеждают всё-таки архитектуры где не каждая инструкция может быть условной, а всё-таки небольшое подмножество JMP, а всё остальное как правило работает плотнее если условности нет.
Но идеологическим примативом Simpleton является единственный формат инструкции «взять SRC (и возможно DST), поместить их в АЛУ с кодом операции INSTR и результат записать в DST. Это единственное что этот процессор умеет по своей идеологии и делать отдельный формат инструкций для него ну прям то не ради чего он придумывался.

И вот тут и рождается идея — а что если условность выполнения перенести в АЛУ?
Сделать код инструкции который делает следующее — воспринимает SRC как составную величину — 3 бита код условия и 13 бит знакового данного с расширением до 16 бит. И если код условия срабатывает, то складывает SRC с DST и выдаёт результат наружу — иначе наружу выдаётся неизменённый DST.
Тогда код такой операции „conditional 13-bit addition“ в случае если в качестве DST будет подставлен PC сработает как „relative conditional jump“!
Итого за счёт введения новой такой инструкции мы полностью освобождаем 3 бита COND в инструкции и можем, например, увеличить количество регистров с 8 до 16! И всё равно еще остаётся 1 бит. И при этом главное кредо Simpleton остаётся неизменным — правда АЛУ набухает и набухает, т.к. вся сложность и вариативность заметается в него. :)
Но это уже будет Simleton 3.0 пожалуй, ибо я всё еще в раздумьях как поэффективнее воспользоваться возникшими тремя битами (16 регистров, имхо, процессору в духе 8 бит только вредят).
Что интересно — не встречал ранее такого нигде — что код условия в операции становится частью операнда где хранится смещение условного перехода.
Это довольно необычно для меня и даже странновато. Но получается, что можно, например извлекая смещения переходов из таблицы динамически формировать и условность перехода где то в ключевой точке типа switch. Это даже что-то новенькое для меня и явно чувствуется, что может послужить источником каких то интересных полухаков. :)
  • avatar ShaMAN
  • 2
Мой топ:
— Pussy Lovers by zeebr^demarche
— Witch from Hell by shuran33 (от этой работы ваще в полнейшем восторге)
— Void by Invaders
«Rain by Mikael ^ Pretzel Logic» просто невероятно крутая…
  • avatar tsl
  • 1
Мой топчик:
1. [so sad that] covfefe is outta here! by scalesmann/march[ing]_cats
2. -ViKi ViKa- by Slash ^ AtD/RPSG
3. Rain by Mikael ^ Pretzel Logic
Зачёт, хотим есчо!
  • avatar nodeus
  • 1
Добавил!
Вот бы в 2021 было больше фоток, чем в 2020.