-int main() {
- char *c;
- toggle_videomode();
- /* Zeit erstmalig setzen */
- set_time_interactive();
- POKE(216, 255);
- /* Variablen zurechtbiegen */
- credits.num_items = 0;
- status.num_items = 0;
- /* Konfigurationsdatei laden */
- load_config();
- /* Einträge (=Getränke) und Zustand laden */
- load_items();
- /* Guthaben laden */
- load_credits();
- while (1) {
- /* Bildschirm anzeigen */
- print_screen();
- /* Tastatureingaben abfragen */
- c = get_input();
- /* und eventuell weitere Dialoge anzeigen */
- if (*c > 47 && *c < 58)
- buy((*c) - 48);
- else if (*c == 's') {
- /* Zustandsdatei schreiben */
- save_items();
- save_credits();
- cprintf("Statefile/Creditfile gesichert, druecke RETURN...\r\n");
- get_input();
- } else if (*c == 'd') {
- /* Drucken an- oder ausschalten */
- printing = (printing == 1 ? 0 : 1);
- cprintf("Drucken ist nun %s, druecke RETURN...\r\n",
- (printing == 1 ? "eingeschaltet" : "ausgeschaltet"));
- get_input();
- } else if (*c == 'g') {
- /* Guthabenverwalter aufrufen */
- credit_manager();
- } else if (*c == 'z') {
- /* Zeit setzen */
- set_time_interactive();
- } else if (*c == 'n') {
- strcpy(status.status[status.num_items].item_name, "mate");
- status.status[status.num_items].price = 23;
- status.status[status.num_items].times_sold = 5;
- status.num_items++;
- } else if (*c == 'q')
- break;
- }
- cprintf("BYEBYE\r\n");
+void set_time_interactive(void) {
+ BYTE part[3] = {'0', '0', '\0'};
+ BYTE tp1, tp2, tp3;
+ char *time_input, *time;
+ cprintf("Gib die aktuelle Uhrzeit ein (Format HHMMSS):\r\n");
+ time_input = get_input();
+ part[0] = time_input[0];
+ part[1] = time_input[1];
+ tp1 = atoi(part);
+ part[0] = time_input[2];
+ part[1] = time_input[3];
+ tp2 = atoi(part);
+ part[0] = time_input[4];
+ part[1] = time_input[5];
+ tp3 = atoi(part);
+ set_time(tp1, tp2, tp3);
+
+ time = get_time();
+ cprintf("\r\nZeit gesetzt: %s\r\n", time);
+}
+
+int main(void) {
+ char *c;
+ char *time;
+
+ init_globals();
+
+ videomode(VIDEOMODE_80x25);
+
+ /* clock CPU at double the speed (a whopping 2 Mhz!) */
+ fast();
+
+ /* Manipulate the VDC with IRQs turned off.
+ * KERNALs default IRQ handler will also try to read the VDC status
+ * register, which could interfere with our code trying to read it.
+ */
+ SEI();
+ vdc_patch_charset();
+ CLI();
+
+ clrscr();
+
+ /* Allocate logging buffer memory */
+ init_log();
+
+ /* Set time initially, c128 doesn't know it */
+ set_time_interactive();
+
+ /* disable interrupt driven VIC screen editor */
+ POKE(0xD8, 255);
+
+ /* Load configuration */
+ load_config();
+
+ /* Load items (= drinks) */
+ load_items();
+ /* Load credits */
+ load_credits();
+
+ time = get_time();
+ sprintf(print_buffer, "%c----------------------------------------------------"
+ "----------------------------\r",
+ 17);
+ print_the_buffer();
+ sprintf(print_buffer, "%cC128-Kasse Version " GV "\r", 17);
+ print_the_buffer();
+
+ sprintf(print_buffer,
+ "%cKasse gestartet um %s. Nutze logfile log-%u, offset %d.\r", 17,
+ time, log_num, log_heap_offset);
+ print_the_buffer();
+
+ print_header();
+
+ while (1) {
+ print_screen();
+ c = get_input();
+ /* ...display dialogs eventually */
+ if (*c >= PETSCII_0 && *c <= PETSCII_9) {
+ /* if the input starts with a digit, we will interpret it as a number
+ * for the item to be sold */
+ buy_stock(atoi(c));
+ } else if (*c == 'f') {
+ buy_custom();
+ } else if (*c == 's') {
+ cprintf("\r\nsaving items.. ");
+ save_items();
+ cprintf("ok\r\nsaving credits.. ");
+ save_credits();
+ cprintf("ok\r\nflushing log.. ");
+ log_flush();
+ cprintf("ok\r\nStatefile/Creditfile/Log gesichert, dr" uUML
+ "cke RETURN...\r\n");
+ cget_return();
+ } else if (*c == 'g') {
+ credit_manager();
+ } else if (*c == 'z') {
+ set_time_interactive();
+ } else if (*c == 'q')
+ break;
+ }
+ clrscr();
+ cprintf("\r\nBYEBYE\r\n");
+
+ return 0;