-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathZMOGUS.PAS
74 lines (64 loc) · 1.42 KB
/
ZMOGUS.PAS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
program zmogus;
uses
graph;
const
cx = 319;
cy = 219;
lin : array [1 .. 16, 1 .. 2] of byte =
((1,2),(1,3),(2,3),(3,4),(3,5),(4,6),(6,8),(5,7),(7,9),
(4,10),(5,11),(10,11),(10,12),(12,14),(11,13),(13,15));
virs : array [1 .. 15, 1 .. 3] of integer =
((15,100,0),(25,100,0),(20,86,0),(5,80,0),(35,80,0),(0,53,0),(40,53,0),
(0,33,0),(40,33,0),(15,43,0),(25,43,0),(15,22,0),(25,22,0),(15,0,0),(25,0,0));
var
gd, gm : integer;
alfa : word;
procedure delay (ms : Word); Assembler;
asm
mov ax, 1000;
mul ms;
mov cx, dx;
mov dx, ax;
mov ah, $86;
Int $15;
end;
Procedure waitRetrace; Assembler;
asm
mov dx,3DAh
@@1:
in al,dx
and al,08h
jnz @@1
@@2:
in al,dx
and al,08h
jz @@2
end;
procedure Piesk (sp : byte);
var
ck : byte;
begin
setcolor (sp);
for ck := 1 to 16 do
line (cx + virs [lin [ck,1],1], cy - virs [lin [ck,1],2], cx + virs [lin [ck, 2],1], cy - virs [lin [ck, 2],2])
end;
procedure ranka_suk (var x, y : integer; alfa : word);
var
pg : real;
begin
pg := abs (180 - alfa) * pi / 180;
x := virs [6, 1] + round (cos (pg) * 20);
y := virs [7, 2] + round (sin (pg) * 20)
end;
begin
initgraph (gd, gm, '');
repeat
alfa := (alfa + 30) mod 360;
piesk (0);
RANKA_suk (virs [8, 1], virs [8, 2], alfa);
piesk (8);
waitretrace;
delay (100)
until port [$60] = 1;
closegraph
end.