вот что родилось, пока пыхтел:
Код:
new_r
call random;x=random(x-1)+1
ld l,a
call random
ld h,a
find_r
push hl
ld de,319
or a
sbc hl,de
pop hl
jr c,got_r
or a
sbc hl,de
jr find_r
got_r
ex de,hl
Вид для печати
вот что родилось, пока пыхтел:
Код:
new_r
call random;x=random(x-1)+1
ld l,a
call random
ld h,a
find_r
push hl
ld de,319
or a
sbc hl,de
pop hl
jr c,got_r
or a
sbc hl,de
jr find_r
got_r
ex de,hl
Оптимизирую твою идею :)
Код:new_r
call random;x=random(x-1)+1
ld l,a
call random
OR #f0 ; Это чтобы быстрее приехать
ld h,a
ld de,320
find_r
ADD HL,DE
JP NC,find_r
ex de,hl
хехе, как допилю основу, придется тест алгоритмов проводить..
---------- Post added at 20:15 ---------- Previous post was at 20:13 ----------
алгоритм старый, не могу найти, где я сравнивал с алгоритмом introspec'a. этот получше:)
Код:random:
push bc
R1: LD C,#18
R2: LD A,#70
ADD A,C
LD C,A
LD (R1+1),A
R3: LD A,#FD
SUB C
LD C,A
LD(R2+1),A
RRCA
LD (R3+1),A
pop bc
RET
---------- Post added at 20:21 ---------- Previous post was at 20:15 ----------
вроде это:
http://zx-pk.ru/showpost.php?p=701098&postcount=36
Мне одинаково подошли варианты krt17 и Reobne.
Спасибо за помощь.
ну если интересно как в асме - инкбинишь кодовый блок, потом инкбинишь или инклюдишь или прописываешь напрямую кусок которым пропатчиваешь, потом также записываешь бинарник\хобету\снапшот....
sjasmplus по моему с этим удачно справится!
глянул на процедуру умножения baze/au
http://baze.au.com/misc/z80bits.html#1.4
интересно, что умножение с учетом знака. А вот резульаьы теста просто странные:
ld bc,#FEFF; (-2)*(-1)=2
ld bc,#FE02;2*(-2)=$FC
ld bc,#7070; ?$70*$70=$3100
ld bc,$0F10;$F0
откуда выползло такое?