do_some_stuff
ld a, b
or a: jr z, .leave
.loop
add hl, hl
djnz .loop
.leave
dec hl
ret
do_other_stuff
ld b, a
.loop
sbc hl, de
djnz .loop
ret
Код, само собой, от балды и смысла не несёт, оптимизировать не надо )
Штука в том, что метки с точкой «видны» только внутри блока, до следующей «обыкновенной» метки. Внутри второй процедуры я спокойно могу использовать имя .loop повторно, и ничего мне за это не будет )
Однако к такой метке можно при желании доступиться и извне, указав полный путь типа jp do_some_stuff.leave.
Т. е. такая себе более удобная / приятная для понимания альтернатива вот этим вот всем 1b / 2f.
И я :)
Про метки — я бы ещё локальные, с точкой которые, упомянул бы. Нравятся они мне, не засоряют неймспейс )
сравни время набора такого кода
Мне кажется, дешевле всё же набрать по-человечески, чем потом сушить мозги.
Хотя я тоже люблю пхать в строку короткие смысловые блоки типа or a: jr z, milf.
вкусовщина.
приемлемо только по началу — одноразовое исполнение, но что делать потом?
с кучей ссылок на ссылки и данными оттуда, которые ссылаются на данные.
либо же — быстрый но рабочий набросок за один вечер, который абсолютно был не описан но сегодня для тебя имеет значение как особенная реализация стандартной процедуры
парни, я вижу противостояние кода в линию против кода в строку.
и считаю что оба этих метода — удобны. и знаю последователей — вас, psndcj.
но мне просто удобнее мой, привычый :)
о портах — офигенное замечание, даже не задумывался никогда о таком.
но всё таки — это всё связано удобством для себя, в прошлом и будующем, а так-же для остальных.
с кратким кодом не согласен, но я знаю — это вкусовщина.
Номер 3.1 — вкусовщина. Раньше я всегда писал (ololo+1), сейчас мне кажется, что это путает. Чаще ввожу специально явную ссылку. Но вообще, обычно у меня в одном исходнике обычно можно найти и так и эдак. Когда-нибудь преодолею…
Номер 4 — вкусовщина.
Номер 6 требует в качестве подпункта ссылку на макро-библиотеку Flying, которая не содержит ни одного компилируемого байта: zxpress.ru/article.php?id=3614
Реальный дзен и, если чуть серьёзнее, там и правда есть несколько хороших идей.
Про 1. — резко нет. Чем дальше пишу, тем больше кода мне хочется иметь на экране.
Так вот. Проблема не коде в строчку. Проблема в неудобных мнемониках и каше из разных частей кода в строке.
Т.е., твои примеры «неправильные». К коду в строку отношения не имеющие.
Задумайся сам, зачем тратить на это 7 строк:
ShortLine: ld a,e : sub l : jr nc,Left2Right
ld a,l : sub e : ex de,hl
Left2Right: ld e,a ; l=X0, e=DX (always draw left-to-right)
вообще я не любитель веб-сервисов. Такты — вещь полезная, но значения выучишь наизусть — на atariage есть посты о таймингах. в Stella такты отображаются, хотя при разработке это вряд ли поможет.
Я специально выделил этот момент, чтобы не перегружать пост лишней детальной информацией. 'Штатно' ПЗУ в картридже может быть максимум 4 килобайта. На слот картриджа выходят только линии A0-A12 (других у процессора просто нет, в середине 1970-х решили, что 8192 адресов должно быть достаточно для каждого), причём A12 выбирает ПЗУ, иначе работают порты TIA и RIOT. С помощью переключателя банков ПЗУ (маппера) на плате картриджа можно сделать больше. Но это не так просто, как, скажем, на NES, потому что на слот не выведен сигнал записи, из картриджа можно только читать, а в нижней половине адресного пространства свободных адресов просто нет. Мапперы делают полную дешифрацию узкого диапазона адресов в самом конце области ПЗУ (типа $1ff4..$1ffb), при чтении оттуда по младшим битам адреса выбирается нужный банк. Это применялось редко, так как полная дешифрация требует много логики (обычно на PAL/GAL). Были мапперы на 8, 12, 16, 32 и 64 килобайта. Самый популярный сейчас на 32К.
Код, само собой, от балды и смысла не несёт, оптимизировать не надо )
Штука в том, что метки с точкой «видны» только внутри блока, до следующей «обыкновенной» метки. Внутри второй процедуры я спокойно могу использовать имя .loop повторно, и ничего мне за это не будет )
Однако к такой метке можно при желании доступиться и извне, указав полный путь типа jp do_some_stuff.leave.
Т. е. такая себе более удобная / приятная для понимания альтернатива вот этим вот всем 1b / 2f.
расскажи плиз, о .1
Про метки — я бы ещё локальные, с точкой которые, упомянул бы. Нравятся они мне, не засоряют неймспейс )
Мне кажется, дешевле всё же набрать по-человечески, чем потом сушить мозги.
Хотя я тоже люблю пхать в строку короткие смысловые блоки типа or a: jr z, milf.
приемлемо только по началу — одноразовое исполнение, но что делать потом?
с кучей ссылок на ссылки и данными оттуда, которые ссылаются на данные.
либо же — быстрый но рабочий набросок за один вечер, который абсолютно был не описан но сегодня для тебя имеет значение как особенная реализация стандартной процедуры
и считаю что оба этих метода — удобны. и знаю последователей — вас, psndcj.
но мне просто удобнее мой, привычый :)
но всё таки — это всё связано удобством для себя, в прошлом и будующем, а так-же для остальных.
с кратким кодом не согласен, но я знаю — это вкусовщина.
Так пишут только мудаки!
ага и zeus отменили, да? Помести см себя на место другого, который будет использовать твой код на другом ассемблере.
а теперь сравни время набора такого кода и форматированного сырка. Учись читать, короче.
фак сам себе написал короче.
Скачать работы одним архивом с парой бонусных файлов.
Номер 3.1 — вкусовщина. Раньше я всегда писал (ololo+1), сейчас мне кажется, что это путает. Чаще ввожу специально явную ссылку. Но вообще, обычно у меня в одном исходнике обычно можно найти и так и эдак. Когда-нибудь преодолею…
Номер 4 — вкусовщина.
Номер 6 требует в качестве подпункта ссылку на макро-библиотеку Flying, которая не содержит ни одного компилируемого байта:
zxpress.ru/article.php?id=3614
Реальный дзен и, если чуть серьёзнее, там и правда есть несколько хороших идей.
Хотя у меня всё не так! :)
Так вот. Проблема не коде в строчку. Проблема в неудобных мнемониках и каше из разных частей кода в строке.
Т.е., твои примеры «неправильные». К коду в строку отношения не имеющие.
Задумайся сам, зачем тратить на это 7 строк: