PDA

Просмотр полной версии : А вдруг кому надо (треугольник Серпинского)



Vladson
27.03.2010, 02:04
Как-то от нечего делать написал такую фигнюшку, хотелось бы узнать у профессионалов, я дурак или псих ?

ORG #8000
LD DE,#4000
RAND
LD HL,#0103
LD A,H
ADD L
RLCA
LD H,A
ADD L
RLCA
LD L,A
LD (RAND+1),HL
POS
LD BC,#0000
AND 3
CP 1
JR Z,R1
CP 2
JR Z,R2
CP 3
JR Z,R3
DEC DE
LD A,D
OR E
CP 0
RET Z
JR RAND
OK_
LD (POS+1),BC
LD A,#BF
SUB B
RET C
CALL #22B0
LD B,A
INC B
LD A,#01
RRCA
DJNZ ($-1)
LD B,A
LD A,(HL)
OR B
LD (HL),A
LD A,#7F
IN A,(#FE)
BIT 0,A
JR NZ,RAND
RET
R1
LD A,B
ADD 192
RRA
LD B,A
LD A,C
ADD 127
RRA
LD C,A
JR OK_
R2
SRL B
SRL C
JR OK_
R3
SRL B
LD A,C
ADD 255
RRA
LD C,A
JR OK_

Sergey
28.03.2010, 21:11
Еще парочку эффектов и будет демка ;)

Vladson
28.03.2010, 23:36
Sergey, не, вот тут мимо, демки должны быть или "супер" или "никак", так как по превому я не умею, лучше буду делать их по второму...

Я кстати и под x86 её переписал, так что если кому интересно...

.model tiny
.code
.startup
.8086
start:
mov ax,0013h
int 10h
mov ax,0A000h
mov es,ax
mov ax,0001h
mov bx,0003h
mov cx,0000h
mov dx,0000h
rand_ax_bx:
add ax,bx
rol ax,01h
add bx,ax
rol bx,01h
go_sub:
push ax
and ax,3
cmp ax,1
je sub1
cmp ax,2
je sub2
cmp ax,3
je sub3
pop ax
jmp rand_ax_bx
sub1:
add dx,00A0h
shr dx,01h
shr cx,01h
jmp draw
sub2:
add dx,0140h
shr dx,01h
add cx,00C8h
shr cx,01h
jmp draw
sub3:
shr dx,01h
add cx,00C8h
shr cx,01h
draw:
push dx
mov ax,0140h
mov di,cx
mul di
mov di,ax
pop dx
add di,dx
pop ax
mov es:[di],ah
jmp rand_ax_bx
.data
end