19 комментариев

avatar
чудовищно! :)
  • VBI
  • +2
avatar
www.pouet.net/prod.php?which=65316

сдается мне, что и это не предел, особенно если пожертвовать красотой лабиринта.
  • psb
  • +8
avatar
psb браво!
Придется апдейтить заголовок?
avatar
Придется апдейтить заголовок?
рано. вот вам 5 байт.
avatar
www.pouet.net/prod.php?which=65317

лабиринт не совсем рандомный, но норм! 5 байт.
  • psb
  • +4
avatar
Эта история напоминает классическую из ZX-Ревью на тему процедуры гашения экрана аттрибутами. Там тоже была гонка байтов, потеря качества работы, дикий угар. Очень одобряю! То, что меняется при этом визуальная составляющая это совершенно нормально, так как она в начале пути не была четко определена (лабиринт, например).
avatar
Прикольно, все старательно не замечают 0-байтовый (на самом деле 1-байтовый) лабиринт: www.pouet.net/prod.php?which=65319
Да, сразу скажу, что меряют длину кодового блока, не учитывают длину бейсика, длины заголовков и т.д. Так что 1-байтовый лабиринт, да. Не больший читинг, чем устанавливать все регистры и генерить половину кода в памяти бейсиком.
  • lvd
  • 0
avatar
Прикольно, все старательно не замечают 0-байтовый
Ждём смены заголовка, видимо.
avatar
Ну жди. Статья верно отражала ситуацию на момент своего написания, и в ней был явно призыв к побитию рекорда. Так что менять что-либо не вижу смысла.
avatar
его и не надо замечать, это фэйк из всех фэйков. почему? потому что во всех других вариантах есть настоящий код, который печатает (рст 10 + манипуляции с регами для вывода слешей). и именно этот код измеряется, этот код встраивается в некое более-менее стандартное окружение. и это интересно — найти минимум байт, при загрузке которых оно начнет делать то, что хочется.

0б — это фикция. там кода много байт, просто он загружается косвенно, но загружается, но нам рассказывают, что байт нет или он один.
Не больший читинг, чем устанавливать все регистры и генерить половину кода в памяти бейсиком.
да не генерится никакая половина кода бейсиком, там просто честный лоад и уср. это просто реюзание памяти. а то можно ведь сделать бейсик в который незаметно вшить код и назвать это true-0b. там будет rand usr 0 и всё.

не надо превращать соревнование по сокращению кода в соревнования по прятанию кода.
avatar
Сравнения имели бы смысл, если бы это было какое-то компо с зафксированными правилами. А так у alone прикольный хак и у psb прикольный хак, но совершенно другого плана.

А сравнивать их, это как теплое и мягкое.
avatar
Вопросов на самом деле 2:
1) на других платформах так же были хаки?
2) если не было, то какие все таки честные объемы рабочих процедур на ZX?
avatar
На комоде, например, печатать весь лабиринт заставляют ПЗУ, хитро запатчив ему область память с переменными и небольшими кусочками кодов.

Каждая из 7b, 6b и 5b требует определённых манимуляций с бейсиком, после чего в области памяти #FFxx (где стек) появляются некоторые байтики, которые, будучи исполненными, оказываются подходящими, чтобы закрутить процедуркам цикл и как-то модифицировать регистры. Вопрос — включать ли это в длину кода, или нет, и почему? Если включаем, то тогда далеко не 7 байт будет, если нет и меряемся только длиной части с данными кодового блока, то 0б (1б) — победитель, ведь трюки-то любые никто не запрещал.
avatar
Длинами кодовых блоков логично меряться, когда в них весь исполняемый код. Иначе получается мерялка — кто круче извратится, либо надо меряться длиной TAP-файла.
avatar
Сорцы-то будут?
avatar
сорцов там нет, нужна мини статья, которая в каждом случае расскажет, какие манипуляции и для чего делаются.

чур я не писец:) уломайте алона написать, заодно и повод зарегаться:)
avatar
1. Из длины комодоровских процедур надо вычитать 2. Т.е. настоящая длина 11 и 9 байт соответственно. И ещё, эти блоки грузятся в 0ую страницу по адресу $7С. Там, в основном, лежат системные переменные биоса и бейсика, но и кусочки кода тоже. Судя по всему, они хитро патчат эти кусочки. Основной цикл, кстати, крутится в ПЗУ! Глубже не копал.
2. Оказывается, чуть раньше Gasman'овского threadzx на пц появился Maze 8b. Правда, лабиринт там неклассический, если судить по скриншоту.
  • lvd
  • +2
avatar
если исключать читерство, то… а что такое читерство?:) имхо, самый чит в этих 7 6 5 байтах — команда зацикливания — она создается на стеке, когда пользователь вводит RUN . именно поэтому там нет автозапуска. ок, предположим, мы не можем юзать такой «сложный и неустойчивый» подход. но регистры-то реюзать можем? если да, то вот вариант 8 байт (работает даже на каком-то SE Basic ROM):

loop:
 org 0xd1xx
 cp (hl)    ; random byte (random CY)
 dec l      ; . . .
 sbc a,a    ; -> a=FF or 00
 and h      ; h=2d -> a=2d or 00
 sub b      ; b=d1 -> a+=2f
 rst 0x10   ; a=2f or 5c
 jr loop
  • psb
  • +4
avatar
Я просто напомню, что тег z80 делает страничку веселее:
loop:
 org 0xd1xx
 cp (hl)    ; random byte (random CY)
 dec l      ; . . .
 sbc a,a    ; -> a=FF or 00
 and h      ; h=2d -> a=2d or 00
 sub b      ; b=d1 -> a+=2f
 rst 0x10   ; a=2f or 5c
 jr loop
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.