0
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
1 { Display and input routines. }
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
2
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
3 UNIT Console;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
4
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
5 INTERFACE
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
6
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
7 USES Porting;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
8
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
9 CONST MSGCOL:BYTE=6; { Default messages color. }
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
10
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
11 PROCEDURE Msg(m:STRING); { Displays string as a message on the right of the screen. }
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
12 PROCEDURE Txt(m:STRING); { Displays string as a text on the left of the screen. }
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
13 PROCEDURE Stat(m:STRING); { Displays string in the upper right part of the screen. }
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
14 PROCEDURE PrepScr; { Prepares screen (actually does nothing) }
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
15 PROCEDURE ResetScr; { Brings the screen to previous condition. }
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
16 PROCEDURE ClrMsg; { Clears the messages window. }
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
17 PROCEDURE ClrTxt; { Clears the text/map window. }
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
18 PROCEDURE PutChr(x,y: INTEGER; c:CHAR; a:BYTE); { Displays a character on the screen. }
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
19 PROCEDURE Cursor(x,y: INTEGER); { Changes cursor position. }
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
20
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
21 FUNCTION GetKey:CHAR; { Reads a character from keyboard. }
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
22 FUNCTION GetString(l:BYTE):STRING; { Allows to input a string. L sets maximum string length. }
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
23
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
24 FUNCTION Number(n: INTEGER):STRING; { Converts number into a string, three characters long. }
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
25 FUNCTION Num(n: INTEGER):STRING; { Converts number into a string. }
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
26 FUNCTION Replace(s,a,b:STRING):STRING; { Replaces the first occurance of A in string S with B. }
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
27 FUNCTION Capitalize(s:STRING): STRING; { Changes the first letter in the string to upper case. }
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
28 FUNCTION Plural(s:STRING):STRING; { Replaces '@s' and makes proper plural form. }
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
29
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
30 IMPLEMENTATION
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
31
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
32 VAR nnl: BOOLEAN; { No new line -- should next msg change line? }
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
33 line,txtline: INTEGER;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
34
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
35 FUNCTION Capitalize(s:STRING):STRING;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
36 VAR t: STRING;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
37 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
38 IF s='' THEN Exit;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
39 t:=s;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
40 t[1]:=UpCase(t[1]);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
41 Capitalize:=t;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
42 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
43
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
44 FUNCTION Plural(s:STRING):STRING;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
45 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
46 s:=Replace(s, 'y@s' , 'ies' );
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
47 s:=Replace(s, 'fe@s', 'ves' );
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
48 s:=Replace(s, 'ff@s', 'ves' );
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
49 s:=Replace(s, 'ex@s', 'icies');
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
50 s:=Replace(s, 'va@s', 'vae' );
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
51 s:=Replace(s, 's@s' , 'ses' );
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
52 s:=Replace(s, '@s' , 's' );
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
53
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
54 Plural:=s;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
55 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
56
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
57 FUNCTION Replace(s,a,b:STRING):STRING;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
58 VAR d: INTEGER;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
59 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
60 d:=Pos(a,s);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
61 Replace:=s;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
62 IF d<=0 THEN Exit;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
63 Delete(s,d,Length(a));
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
64 Insert(b,s,d);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
65 Replace:=s;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
66 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
67
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
68
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
69 PROCEDURE PutChr(x,y: INTEGER;c: CHAR; a:BYTE);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
70 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
71 IF (NOT pal_changed) THEN BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
72 IF (a=14) THEN a:=6;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
73 IF (a=13) THEN a:=14;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
74 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
75 PutChar(x,y,c,a);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
76 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
77
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
78 PROCEDURE Cursor(x,y: INTEGER);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
79 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
80 GotoXY(x,y);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
81 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
82
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
83 PROCEDURE ClrMsg;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
84 VAR x,y: INTEGER;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
85 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
86 FOR y:=5 TO 24 DO
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
87 FOR x:=50 TO 79 DO PutChar(x,y,' ',$07);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
88 line:=0;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
89 nnl:=TRUE;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
90 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
91
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
92 PROCEDURE Msg(m:STRING);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
93 VAR i,p: INTEGER;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
94 a,l: BYTE;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
95
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
96 PROCEDURE NewLine;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
97 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
98 IF line>=19 THEN ScrollWin(50,5,79,24)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
99 ELSE Inc(line);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
100 i:=0;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
101 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
102
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
103 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
104 IF NOT nnl THEN NewLine ELSE BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
105 FOR i:=50 TO 79 DO PutChar(i,line+5,' ',MSGCOL);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
106 i:=0;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
107 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
108 nnl:=FALSE;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
109 p:=1;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
110 a:=MSGCOL;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
111 l:=Length(m);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
112 REPEAT
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
113 WHILE m[p]='@' DO BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
114 Inc(p);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
115 CASE m[p] OF
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
116 'd': a:=0;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
117 'b': a:=1;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
118 'g': a:=2;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
119 'c': a:=3;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
120 'r': a:=4;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
121 'p': a:=5;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
122 'o': a:=6;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
123 'w': a:=7;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
124 'D': a:=8;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
125 'B': a:=9;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
126 'G': a:=10;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
127 'C': a:=11;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
128 'R': a:=12;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
129 'P': a:=13;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
130 'O': a:=14;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
131 'W': a:=15;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
132 'm': a:=MSGCOL;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
133 'M': a:=MSGCOL XOR $08;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
134 'n': NewLine;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
135 'N': nnl:=TRUE;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
136 '@': Break;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
137 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
138 Inc(p);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
139 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
140 IF p>l THEN Exit;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
141 IF i>29 THEN NewLine;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
142 PutChar(50+i,line+5,m[p],a);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
143 Inc(i);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
144 Inc(p);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
145 UNTIL FALSE;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
146 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
147
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
148 PROCEDURE ClrTxt;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
149 VAR x,y: INTEGER;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
150 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
151 FOR y:=0 TO 24 DO
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
152 FOR x:=0 TO 49 DO PutChar(x,y,' ',$07);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
153 txtline:=-1;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
154 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
155
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
156
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
157 PROCEDURE Txt(m:STRING);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
158 VAR i,p: INTEGER;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
159 a,l: BYTE;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
160
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
161 PROCEDURE NewLine;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
162 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
163 IF txtline>=24 THEN ScrollWin(0,0,49,24)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
164 ELSE Inc(txtline);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
165 i:=0;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
166 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
167
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
168 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
169 NewLine;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
170 p:=1;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
171 a:=MSGCOL;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
172 l:=Length(m);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
173 REPEAT
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
174 WHILE m[p]='@' DO BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
175 Inc(p);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
176 CASE m[p] OF
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
177 'd': a:=0;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
178 'b': a:=1;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
179 'g': a:=2;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
180 'c': a:=3;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
181 'r': a:=4;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
182 'p': a:=5;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
183 'o': a:=6;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
184 'w': a:=7;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
185 'D': a:=8;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
186 'B': a:=9;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
187 'G': a:=10;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
188 'C': a:=11;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
189 'R': a:=12;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
190 'P': a:=13;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
191 'O': a:=14;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
192 'W': a:=15;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
193 'm': a:=MSGCOL;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
194 'M': a:=MSGCOL XOR $08;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
195 'n': NewLine;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
196 '@': Break;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
197 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
198 Inc(p);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
199 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
200 IF p>l THEN Exit;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
201 IF i>49 THEN NewLine;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
202 PutChar(i,txtline,m[p],a);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
203 Inc(i);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
204 Inc(p);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
205 UNTIL FALSE;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
206 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
207
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
208 FUNCTION GetString(l:BYTE):STRING;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
209 VAR c: CHAR;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
210 s: STRING;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
211 i: INTEGER;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
212 a: BYTE;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
213
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
214 PROCEDURE NewLine;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
215 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
216 IF line>=19 THEN ScrollWin(50,5,79,24)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
217 ELSE Inc(line);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
218 i:=0;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
219 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
220
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
221 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
222 IF l=0 THEN Exit;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
223 IF l>30 THEN l:=30;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
224
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
225 IF NOT nnl THEN NewLine ELSE BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
226 FOR i:=50 TO 79 DO PutChar(i,line+5,' ',MSGCOL);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
227 i:=0;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
228 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
229
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
230
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
231 a:=MSGCOL XOR $08;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
232 nnl:=TRUE;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
233
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
234 s:='';
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
235 i:=0;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
236 REPEAT
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
237 GotoXY(50+i,line+5);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
238 c:=GetKey;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
239 IF (i<l) AND (c>=' ') AND (c<#127) THEN BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
240 s:=Concat(s,c);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
241 PutChar(50+i,line+5,c,a);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
242 Inc(i);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
243 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
244 IF c=KEYCHR_BS THEN BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
245 IF i>0 THEN Dec(i);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
246 PutChar(50+i,line+5,' ',a);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
247 s:=Copy(s,1,length(s)-1);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
248 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
249 UNTIL (c=KEYCHR_CR);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
250 GetString:=s;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
251 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
252
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
253 PROCEDURE Stat(m:STRING);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
254 VAR a: BYTE;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
255 i,p: INTEGER;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
256
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
257 PROCEDURE NewLine;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
258 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
259 ScrollWin(50,0,79,4);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
260 i:=0;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
261 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
262
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
263 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
264 NewLine;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
265 p:=1;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
266 a:=MSGCOL;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
267 REPEAT
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
268 WHILE m[p]='@' DO BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
269 Inc(p);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
270 CASE m[p] OF
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
271 'd': a:=0;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
272 'b': a:=1;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
273 'g': a:=2;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
274 'c': a:=3;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
275 'r': a:=4;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
276 'p': a:=5;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
277 'o': a:=6;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
278 'w': a:=7;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
279 'D': a:=8;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
280 'B': a:=9;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
281 'G': a:=10;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
282 'C': a:=11;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
283 'R': a:=12;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
284 'P': a:=13;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
285 'O': a:=14;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
286 'W': a:=15;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
287 'm': a:=MSGCOL;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
288 'M': a:=MSGCOL XOR $08;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
289 'n': NewLine;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
290 'v': ;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
291 '@': Break;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
292 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
293 Inc(p);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
294 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
295 IF i>29 THEN NewLine;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
296 PutChar(50+i,4,m[p],a);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
297 Inc(p);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
298 Inc(i);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
299 UNTIL (p>Length(m));
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
300 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
301
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
302 FUNCTION Number(n: INTEGER):STRING;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
303 VAR s: STRING[3];
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
304 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
305 Str(n:3,s);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
306 Number:=s;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
307 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
308
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
309 FUNCTION Num(n: INTEGER):STRING;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
310 VAR s: STRING;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
311 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
312 Str(n,s);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
313 Num:=s;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
314 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
315
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
316 PROCEDURE PrepScr;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
317 VAR x,y: INTEGER;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
318 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
319 { FOR y:=0 TO 24 DO
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
320 FOR x:=0 TO 79 DO PutChar(x,y,' ',$07);}
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
321 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
322
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
323 PROCEDURE ResetScr;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
324 VAR i,x,y:BYTE;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
325 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
326 FOR y:=0 TO 24 DO FOR x:=0 TO 79 DO PutChar(x,y,' ',$07);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
327 GotoXY(0,0);
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
328 ResetPal;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
329 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
330
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
331 FUNCTION GetKey:CHAR;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
332 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
333 GetKey:=GetChr;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
334 END;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
335
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
336 BEGIN
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
337 line:=0;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
338 nnl:=TRUE;
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
339 END.
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
340
|