Initial git release
[ZeXOS.git] / apps / edit / main.c
blob0e0d4692659c00c2c9919a4ceffce5d8d444ba7d
1 /*
2 * ZeX/OS
3 * Copyright (C) 2007 Tomas 'ZeXx86' Jedrzejek (zexx86@gmail.com)
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
20 #define ESC 1
22 void *memcpy (void *dst_ptr, const void *src_ptr, unsigned count)
24 void *ret_val = dst_ptr;
25 const char *src = (const char *)src_ptr;
26 char *dst = (char *)dst_ptr;
28 /* copy up */
29 for(; count != 0; count--)
30 *dst++ = *src++;
31 return ret_val;
34 void putch (char c)
36 asm volatile ("movl $4, %%eax;"
37 "movl %0, %%ebx;"
38 "int $0x80;" :: "g" (c));
41 void sleep (int s)
43 asm volatile ("movl $3, %%eax;"
44 "movl %0, %%ebx;"
45 "int $0x80;" :: "g" (s));
48 void settextcolor (int t, int f)
50 asm volatile ("movl $5, %%eax;"
51 "movl %0, %%ebx;"
52 "movl %1, %%ecx;"
53 "int $0x80;" :: "g" (t), "g" (f));
56 void gotoxy (unsigned x, unsigned y)
58 asm volatile ("movl $7, %%eax;"
59 "movl %0, %%ebx;"
60 "movl %1, %%ecx;"
61 "int $0x80;" :: "g" (x), "g" (y));
64 unsigned char getkey ()
66 asm volatile ("movl $7, %eax;");
67 asm volatile ("int $0x80;");
69 unsigned short *memptr = (unsigned short *) 0x9000;
70 unsigned short *where = memptr;
72 return *where;
75 unsigned char getch ()
77 asm volatile ("movl $2, %eax;");
78 asm volatile ("int $0x80;");
79 //asm volatile ("movl %%edx, %0;" : "=g" (c) :: "%edx");
81 unsigned short *memptr = (unsigned short *) 0x9000;
82 unsigned short *where = memptr;
84 return *where;
87 void cls ()
89 asm volatile ("movl $6, %eax;"
90 "int $0x80;");
93 void putstr (char *str)
95 //int i;
96 //for (i = 0; i != 4; i++)
97 putch (str[0]);
98 putch (str[1]);
99 putch (str[2]);
100 putch (str[3]);
103 unsigned key_pressed (int keycode)
105 int scancode = getkey ();
107 if (scancode == keycode)
108 return 1;
110 if (scancode == keycode+128)
111 return 2;
112 else
113 return 0;
116 int main () // like main in a normal C program
118 //acls ();
119 //k_clear_screen();
121 cls ();
123 settextcolor (7, 1);
125 putch (201);
127 putch (205);
128 putch (205);
129 putch (205);
130 putch (205);
131 putch (205);
132 putch (205);
133 putch (205);
134 putch (205);
135 putch (205);
136 putch (205);
137 putch (205);
138 putch (205);
139 putch (205);
140 putch (205);
141 putch (205);
142 putch (205);
143 putch (205);
144 putch (205);
145 putch (205);
146 putch (205);
147 putch (205);
148 putch (205);
149 putch (205);
150 putch (205);
151 putch (205);
152 putch (205);
153 putch (205);
154 putch (205);
155 putch (205);
156 putch (205);
157 putch (205);
158 putch (205);
159 putch (205);
160 putch (205);
161 putch (205);
162 putch (205);
163 putch (205);
164 putch (205);
165 putch (205);
166 putch (205);
167 putch (205);
168 putch (205);
169 putch (205);
170 putch (205);
171 putch (205);
172 putch (205);
173 putch (205);
174 putch (205);
175 putch (205);
176 putch (205);
177 putch (205);
178 putch (205);
179 putch (205);
180 putch (205);
181 putch (205);
182 putch (205);
183 putch (205);
184 putch (205);
185 putch (205);
186 putch (205);
187 putch (205);
188 putch (205);
189 putch (205);
190 putch (205);
191 putch (205);
192 putch (205);
193 putch (205);
194 putch (205);
195 putch (205);
196 putch (205);
197 putch (205);
198 putch (205);
199 putch (205);
200 putch (205);
201 putch (205);
202 putch (205);
203 putch (205);
204 putch (205);
206 putch (187);
209 putch (186);
210 settextcolor (15, 1);
211 putch (' ');
212 putch (' ');
213 putch (' ');
214 putch (' ');
215 putch (' ');
216 putch (' ');
217 putch (' ');
218 putch (' ');
219 putch (' ');
220 putch (' ');
221 putch (' ');
222 putch (' ');
223 putch (' ');
224 putch (' ');
225 putch (' ');
226 putch (' ');
227 putch (' ');
228 putch ('T');
229 putch ('e');
230 putch ('x');
231 putch ('t');
232 putch (' ');
233 putch ('e');
234 putch ('d');
235 putch ('i');
236 putch ('t');
237 putch ('o');
238 putch ('r');
239 putch (' ');
240 putch ('v');
241 putch ('0');
242 putch ('.');
243 putch ('0');
244 putch ('.');
245 putch ('1');
246 putch (' ');
247 putch (' ');
248 putch (' ');
249 putch (' ');
250 putch (' ');
251 putch (' ');
252 putch (' ');
253 putch (' ');
254 putch (' ');
255 putch (' ');
256 putch (' ');
257 putch (' ');
258 putch (' ');
259 putch (' ');
260 putch (' ');
261 putch (' ');
262 putch (' ');
263 putch (' ');
264 putch (' ');
265 putch (' ');
266 putch (' ');
267 putch (' ');
268 putch (' ');
269 putch (' ');
270 putch (' ');
271 putch (' ');
272 putch (' ');
273 putch (' ');
274 putch (' ');
275 putch (' ');
276 putch (' ');
277 putch (' ');
278 putch (' ');
279 putch (' ');
280 putch (' ');
281 putch (' ');
282 putch (' ');
283 putch (' ');
284 putch (' ');
285 putch (' ');
286 putch (' ');
287 putch (' ');
288 putch (' ');
289 settextcolor (7, 1);
290 putch (186);
293 putch (200);
295 putch (205);
296 putch (205);
297 putch (205);
298 putch (205);
299 putch (205);
300 putch (205);
301 putch (205);
302 putch (205);
303 putch (205);
304 putch (205);
305 putch (205);
306 putch (205);
307 putch (205);
308 putch (205);
309 putch (205);
310 putch (205);
311 putch (205);
312 putch (205);
313 putch (205);
314 putch (205);
315 putch (205);
316 putch (205);
317 putch (205);
318 putch (205);
319 putch (205);
320 putch (205);
321 putch (205);
322 putch (205);
323 putch (205);
324 putch (205);
325 putch (205);
326 putch (205);
327 putch (205);
328 putch (205);
329 putch (205);
330 putch (205);
331 putch (205);
332 putch (205);
333 putch (205);
334 putch (205);
335 putch (205);
336 putch (205);
337 putch (205);
338 putch (205);
339 putch (205);
340 putch (205);
341 putch (205);
342 putch (205);
343 putch (205);
344 putch (205);
345 putch (205);
346 putch (205);
347 putch (205);
348 putch (205);
349 putch (205);
350 putch (205);
351 putch (205);
352 putch (205);
353 putch (205);
354 putch (205);
355 putch (205);
356 putch (205);
357 putch (205);
358 putch (205);
359 putch (205);
360 putch (205);
361 putch (205);
362 putch (205);
363 putch (205);
364 putch (205);
365 putch (205);
366 putch (205);
367 putch (205);
368 putch (205);
369 putch (205);
370 putch (205);
371 putch (205);
372 putch (205);
374 putch (188);
376 settextcolor (10, 0);
378 unsigned char key = 0;
379 while (1) {
380 if (key_pressed (ESC))
381 return 1;
383 key = getch ();
385 putch (key);
388 return 0;