i, status.status[i].item_name, status.status[i].price, status.status[i].times_sold);
cprintf("\r\nBefehle: s) Daten sichern d) Drucken umschalten\r\
g) Guthabenverwaltung z) Zeit setzen\r\
-n) Neues Getraenk\r\n");
+n) Neues Getraenk q) Beenden\r\n");
}
static void log_file(const char *s) {
cbm_close((BYTE)8);
}
+static char retry_or_quit() {
+ char *c;
+ do {
+ cprintf("\r\nr)etry or q)uit?\r\n");
+ c = get_input();
+ } while ((*c != 'r') && (*c != 'q'));
+ return *c;
+}
+
/* Druckt eine entsprechende Zeile aus */
static void print_log(BYTE n, int einheiten, char *nickname) {
BYTE c;
exit(1);
}
+ RETRY:;
sprintf(print_buffer, "[%lu] %s - %s - %s - %d - an %s\r\n",
- items_sold, time, status.status[n].item_name, price,
- einheiten, (nickname != NULL ? nickname : "Unbekannt"));
+ items_sold, time, status.status[n].item_name, price,
+ einheiten, (*nickname != '\0' ? nickname : "Unbekannt"));
c = cbm_open((BYTE)4, (BYTE)4, (BYTE)0, NULL);
if (c != 0) {
c128_perror(c, "cbm_open(printer)");
- save_items();
- save_credits();
- exit(1);
+ if (retry_or_quit() == 'q') {
+ save_items();
+ save_credits();
+ exit(1);
+ }
+ goto RETRY;
}
c = cbm_write((BYTE)4, print_buffer, strlen(print_buffer));
if (c != strlen(print_buffer)) {
c128_perror(c, "write(printer)");
- save_items();
- save_credits();
- exit(1);
+ if (retry_or_quit() == 'q') {
+ save_items();
+ save_credits();
+ exit(1);
+ }
+ goto RETRY;
}
cbm_close((BYTE)4);
log_file(print_buffer);
BYTE i = 0, matches = 0;
BYTE c, nickname_len;
int einheiten;
- char *nickname;
+ char *input;
+ char nickname[11];
struct credits_t *credit;
if (status.status[n].item_name == NULL) {
toggle_videomode();
cprintf("\r\nAuf ein Guthaben kaufen? Wenn ja, Nickname eingeben:\r\n");
- nickname = get_input();
+ input = get_input();
+ strncpy(nickname, input, 11);
toggle_videomode();
cprintf("%s\r\n", nickname);
toggle_videomode();
}
} else {
/* Ensure that nickname is NULL if it's empty because it's used in print_log */
- nickname = NULL;
+ *nickname = '\0';
}
status.status[n].times_sold += einheiten;
int main() {
char *c;
- toggle_videomode();
+ if (VIDEOMODE == 40)
+ toggle_videomode();
/* Zeit erstmalig setzen */
set_time_interactive();
POKE(216, 255);