home *** CD-ROM | disk | FTP | other *** search
- { DANIEL SCHLENZIG }
-
- Program stars;
-
- Const
- maxstars = 200;
-
- Var
- star : Array[0..maxstars] of Word;
- speed : Array[0..maxstars] of Byte;
- i : Word;
-
- Procedure create;
- begin
- For i := 0 to maxstars do
- begin
- star[i] := random(320) + random(200) * 320;
- speed[i] := random(3) + 1;
- if mem[$a000 : star[i]] = 0 then
- mem[$a000 : star[i]] := 100;
- end;
- end;
-
- Procedure moveit; Assembler;
- Asm
- xor bp,bp
- mov ax,0a000h
- mov es,ax
- lea bx,star
- lea si,speed
- mov cx,320
-
- @l1:
- mov di,[bx]
- mov al,es:[di]
- cmp al,100
- jne @j1
- xor al,al
- stosb
- @j1:
- mov al,[si]
- xor ah,ah
- add [bx],ax
- mov ax,bx
- xor dx,dx
- div cx
- mul cx
- mov dx,bx
- sub dx,ax
- cmp dx,319
- jle @j3
- sub [bx],cx
- @j3:
- mov di,[bx]
- mov al,es:[di]
- or al,al
- jnz @j2
- mov al,100
- stosb
- @j2:
- add bx,2
- inc si
- inc bp
- cmp bp,maxstars
- jle @l1
- end;
-
- begin
- Asm
- mov ax,13h
- int 10h
- call create
-
- @l1:
- mov dx,3dah
- @r1:
- in al,dx
- test al,8
- je @r1
-
- call moveit
- in al,60h
- cmp al,1
- jne @l1;
- end;
- end.