вот может кому пригодится для оформления
чего нибудь
-------------
я не стал заниматься оптимизацией цель немного другая
-------------
Uses Crt;
Var
sss : Byte;
Procedure OS(S : String);
Var
ls : Byte;
begin
asm
push ds
mov ax,ss
mov ds,ax
shl bh,8 {load zero this register t/k/ bx poor enter Procedure}
mov ah,09h {DOS function out string}
lea dx,S {load area adres}
inc dx {+1}
lea si,S {}
mov bl,[si] {Load values length string}
mov ls,bl {save adres S to variable ls}
add si,bx {si+bx}
inc si {correctly for first symbol key lenght string}
mov bl,24h (*24h this code ASCII symbol $ end string*)
mov [si],bl
int 21h
pop ds
mov ah,ls
end;
end;
procedure PC_XY(nvs,x,y : Byte);assembler;
asm
push ds
mov ah,02h
mov bh,nvs
mov dh,y
mov dl,x
int 10h
pop ds
end;
Procedure FlyS(S : String;xx,yy : Byte; wt : Integer);{0..79 0..49}
Var
str : array [0..255] of Char;
x,ls : byte;
x_c : Byte;
begin
x_c:=0;
asm
push ds
mov ax,ss
mov ds,ax
lea si,S {--------------------------------------}
lea di,str
mov cl,[si]
mov ls,cl {len string}
inc si
@a:
mov bl,[si]
mov [di],bl
inc si
inc di
dec cx
cmp cx,0
jnz @a
pop ds
end;
x_c:=xx;
while ls <> 0 do
begin
dec(ls);
for xx:=0 to x_c do
begin
PC_XY(0,xx,yy);
Write(str[ls]);
Delay(wt);
PC_XY(0,xx-1,yy);
Write(' ');
end;
dec(x_c);
end;
end;
Procedure WK;Assembler;
asm
mov ax,0
int 16h
xor ax,ax
end;
Begin
ClrScr;
WK;
PC_XY(0,10,10);
OS('Veeeetttt');
FlyS('..::This CopyRight [c] Lonely_Raven 2004::..',57,15,400);
{The FlyS = String, x - last symbol out,y - pos symbol,wt wait symbool out}
WK;
end.