```Contributor: JONAS EMIL M. ENRIQUEZ

program Macarena;
{
Programmed by: Jonas Emil M. Enriquez (jeme@gsilink.com)
Based from the text graphics of Buhrnheim (buhrn@DADOSNET.COM.BR)
}
uses crt,dos;
type STR03 = STRING[3];
const Dance : array[1..3,1..16] of STR03 =
((' o ', ' o ', ' o ', ' o ', ' o ', ' o ', '', ' o>', ' o ', ' o ', ' o ', ' o ', ' o ', ' o ', ' o '),
('^|\', '^|^', 'v|^', 'v|v', '|/v', '|X|', ' \|', ' | ', ' \ ', ' x ', '', '', '<\>', '<)>', ' |\'),
(' /\', ' >\', '/< ', ' >\', '/< ', ' >\', '/< ', ' >\', '/< ', ' >\', '/< ', ' >\', '/< ', ' >\', ' >>', ' L '));

var x : byte;
Reg : registers;

procedure Norm_Cursor;
begin
Reg.AH := \$01;
Reg.CH := \$06;
Reg.CL := \$07;
intr(\$10, Dos.registers(Reg));
end;

procedure Cursor_Off;
begin
Reg.AH := \$01;
Reg.CH := \$0F;
Reg.CL := \$00;
intr(\$10, Dos.registers(Reg));
end;

begin
Clrscr;
Cursor_Off;
GotoXY(27,14); Write('Mr. Ascii dancing Macarena...');
repeat
x := 1;
repeat
GotoXY(39,10); Write(Dance[1,x]);
GotoXY(39,11); Write(Dance[2,x]);
GotoXY(39,12); Write(Dance[3,x]);
Delay(500);
x := x + 1;
until keypressed or (x>16);
until keypressed;
Norm_Cursor;
end.

```