]> git.sur5r.net Git - c128-kasse/blob - src/general.c
use nice drawing characters and two-column layout
[c128-kasse] / src / general.c
1 /* 
2  * RGB2R-C128-Kassenprogramm
3  * © 2007-2009 phil_fry, sECuRE, sur5r
4  * See LICENSE for license information
5  *
6  */
7 #include <stdlib.h>
8 #include <stdio.h>
9 #include <string.h>
10 #include <conio.h>
11
12 #include "general.h"
13
14 /*
15  * Liest (maximal 31) Zeichen ein, bis Enter gedrückt wird.
16  * Vorsicht: Es wird ein statischer Buffer benutzt, sodass man
17  * das Ergebnis via strdup() retten muss, bevor man get_input()
18  * erneut aufruft
19  *
20  */
21 char *get_input() {
22         BYTE i = 0;
23         static char output[32];
24         BYTE c;
25         memset(output, '\0', 32);
26         while (1) {
27                 if (i == 31)
28                         break;
29                 c = cgetc();
30                 if (c == 13)
31                         break;
32                 cputc(c);
33                 output[i++] = c;
34         }
35         return output;
36 }
37
38 char retry_or_quit() {
39         char *c;
40         do {
41                 cprintf("\r\nr)etry or q)uit?\r\n");
42                 c = get_input();
43         } while ((*c != 'r') && (*c != 'q'));
44         return *c;
45 }
46
47 char *format_euro(char *s, int maxlen, int cent){
48         int tmp = cent;
49         int len = strlen(",EUR");
50         while ((tmp /= 10) > 0)
51                 ++len;
52         if (len >= maxlen)
53                 return NULL;
54         // workaround to produce a leading zero for cents.. %0.2d won't work 
55         sprintf(s, "%3d,%s%dEUR", cent / 100, ((cent%100)<10?"0":""), cent % 100);
56         return s;
57 }
58
59 void c128_perror(BYTE c, char *msg) {
60         cprintf("\r\nError (Code %d) while: %s\r\nOS Error = %d\r\n", c, msg, _oserror);
61 }