• avatar VBI
  • 0
9 авторов всего
  • avatar VBI
  • 1
shinilb0g Вы Мастер Загадок!
ты моего кода не видел(:


;-----------------output sprite
outspr:
 ld (backsp+1),sp
 ld sp,hl

n=0
 dup 4

 dup 8
 ld de,(sq+n),bc,(sq+2+n)

 dup 2
 dup 8
 push bc,de
edup

 ld hl,0-16*6
 add hl,sp
 ld sp,hl

edup

n=n+4
edup
;-------------------8 линий дубль 2
 ld hl,$7E0
 add hl,sp
 ld sp,hl

edup


backsp:ld sp,0
 ret
  • avatar VBI
  • 0
добавлю ещё такую фишку, подсмотренную в коде у Грачёва — переменные компилятора:

x=#e0
	dup 16
		_poke sinpage_start+2,x
x=x+1
	edup
  • avatar VBI
  • 1
kowalski, Следите за нашим журналом!
В следующем выпуске!
Только у нас!
Всего неделя!
По одной в руки!
  • avatar VBI
  • 1
кстати-кстати. сложные места лучше описать в каменте — что именно делается.
это популярно скорее всего на комодоре. Видел я подобный код распаковки LZ4. пришлось просить помощи разработчика, код просто собирался неправильно.

Кстати, еще одно правило: не пишите бгомерзкий код на Alasm.
  • avatar Shiru
  • 1
Интересная фишка, реализованная во многих ассемблерах для 6502 — безымянные метки. То есть просто :, а переходить к ним можно по :- или :+. Если надо через одну-две-три — можно менять количество минусов и плюсов. Это очень удобная альтернатива нашим привычным $+N для коротких прыжков типа обхода одной-двух команд, позволяет легко вставлять команды и не думать об их размере. Почему-то в ассемблерах для Z80 я подобную возможность не встречал.
интрига-интрига: дядя Леша против дядьки Леши: кто кого?
-for whom how
— MGIMO fininshed?
= ask!
high или [ есть не во всех ассемблерах.
в курсе. мало интересного там.
  • avatar sq
  • 3
Писал в строку, пишу и буду писать, и в лицо всех знавал своею пылкостью молодецкой, кто мне будет говорить, что так не надо! И вообще, дядь вов, банальные вещи тулишь!
Суров! Там кстати INC HL тоже не был нужен; INC L вполне прокатил бы.

Но меня заинтересовало другое. Умножение. У тебя что, тоже есть такая дрянь раскрянченая? Или ты вообще?

И, в любом случае, было бы здорово, если бы ты поделился, даже не самими процедурами своими, но примерно порядком — сколько, как ты считаешь, должно занимать знаковое умножение 8*8->8 и 8*8->16?
  • avatar Robus
  • 1
Ах учись читать .?. Значит когда мы изучаем скорость исполнения умножателе-делителей, то позволять себе тестировать не оптимизированный код типа вот такого:
MULTI   LD   H,MULTAB/512
        ADD  HL,HL
        LD   C,(HL)
        INC  HL
        LD   B,(HL)

это нормально? Это я так понимаю всё ради компилятора не способного дать возможность построить таблицу чисел не подряд байтик за байтиком, а +256. И самое главное проводятся тесты, да ещё и плакать начинаем, что лишние 512 байт памяти в дырки ноликов превратились. А тестировать надо только оптимизированный код, вот такой:
MULTI   LD   H,HIGH(MULTAB)
        LD   C,(HL)
        INC  H
        LD   B,(HL)
...
        ALIGN 256
MULTAB
DEFW_XX MUL0
DEFW__X MUL10
DEFW__X MUL11
DEFW___ MUL120
DEFW___ MUL121
DEFW___ MUL122
DEFW___ MUL123
DEFW___ MUL124
DEFW___ MUL125
DEFW___ MUL126
DEFW___ MUL127
DEFW___ NEG128
DEFW___ NEG127
DEFW___ NEG126
DEFW___ NEG125
DEFW___ NEG124
DEFW___ NEG123
DEFW___ NEG122
DEFW___ NEG121
DEFW___ NEG120
DEFW_SX NEG11
DEFW_SX NEG10
DEFW_SX NEG09
DEFW_SX NEG08
DEFW_SX NEG07
DEFW_SX NEG06
DEFW_SX NEG05
DEFW_SX NEG04
DEFW_SX NEG03
DEFW_SX NEG02
DEFW_SX NEG01
DEFW___ NEG009
DEFW___ NEG008
DEFW___ NEG007
DEFW___ NEG006
DEFW___ NEG005
DEFW___ NEG004
DEFW___ NEG003
DEFW___ NEG002
DEFW___ NEG001

Вот это читаемо LD H,HIGH(MULTAB), а так тестируют только мудаки LD H,MULTAB/512, тратящие место и главное такты на ограниченность компилятора. Слово мудаки я использовал только по отношению к тому кто его написал.
У меня было смешнее даже. Я впервые увидел их в исходниках биперных движков Shiru, и долго психовал, зачем он это наворотил там. А потом, в процессе работы над Rain, мне пришлось в какой-то момент разложить внутренний цикл биперного движка и там было такое кол-во самомодифицирующего кода, что мне вначале думалось что я повешусь. Именно в этот момент до меня дошло зачем нужны метки с точечками, просто реально спасло там. Поэтому, не очень даже любя их, знаю что вещь иногда совершенно незаменимая.
Неистово плюсую. Дядя Вова, вот очень бы хотелось код взаимодействия с зифой в отдельный модуль, например!
Глядишь, поборол бы наконец лень и написал себе синхрилку папки с PC, а то слот SD скоро в ноль сотрётся ;)
Ага, есть такое дело. Но мне вот как-то сразу они зашли, и потребность прыгнуть выше головы не деморализует обычно ) Скорее, воспринимаю как намёк на то, что, возможно, надо бы для себя чуток по-другому реструктурировать данные или иначе разбить на процедуры.