молодец :)
Вид для печати
молодец :)
Киньте ссылку на коллекцию математических процедур
Я тут побаловаться решил... Написал такую штуку... (64 битный ГПСЧ на LFSR) не знаю зачем понадобилось бы такое, но оно вроде работает даже...
Код:SEED1 LD HL,#1234
SRL H
RR L
LD (SEED1+1),HL
SEED2 LD HL,#5678
RR H
RR L
LD (SEED2+1),HL
SEED3 LD HL,#90AB
RR H
RR L
LD (SEED3+1),HL
SEED4 LD HL,#CDEF
RR H
RR L
LD (SEED4+1),HL
RET NC
LD A,(SEED1+2)
XOR #D8
LD (SEED1+2),A
RET
Нет, это именно 64 битный, сдвигаются все 4 пары сообща (не три их а 4, и из первого младший идёт в старший ко второму итд) и XOR-ятся нужные биты...
http://en.wikipedia.org/wiki/LFSR#Galois_LFSRs
Но, с тем что это извращение, я не спорю =)
---------- Post added at 05:40 ---------- Previous post was at 05:38 ----------
Начальное значение может быть любым (главное не 0)
А биты которые хорить надо разные для разных разрядностей 0xB400u это для 16-ти вроде бит, у меня их 64 (там 64-й 63-й 61-й и 60-й биты хорить надо, т.е %11011000 т.е #D8 в самом старшем если сдвиг в самом младшем дал перенос)
---------- Post added at 05:48 ---------- Previous post was at 05:40 ----------
собственно вот 16 бит с теми самыми константами (использовал BC а не HL чтоб можно было в BASIC писать типа PRINT USR xxx)
Код:LFSR16 LD BC,#0001
SRL B
RR C
JR NC,_SKIP
LD A,#B4
XOR B
LD B,A
_SKIP
LD (LFSR16+1),BC
RET
Моя процедура расчета адреса атрибутов или атрибутной карты из полных экранных координат (Х,Y):
Итого: 77 тактов. Кто быстрее? :v2_dizzy_roll:Код:; вх: L=X (0..255), H=Y (0..191)
; вых: HL=ATTR_ADR (адрес в области атрибутов)
LD A,H ; 4
RLCA ; 4
RLCA ; 4
LD H,A ; 4
AND #E0 ; 7
SRL L ; 8
SRL L ; 8
SRL L ; 8
OR L ; 4
LD L,A ; 4
LD A,H ; 4
AND #03 ; 7
OR #58 ; 7
LD H,A ; 4