static int cmd_load(char *file_name) { char *decoded; if (file_name == NULL) { if (last_file_name == NULL) { g_critical("Please specify file name."); return (-1); } file_name = strdup(last_file_name); } else { file_name = strdup(file_name); } selected_track = NULL; selected_event = NULL; if (smf != NULL) { smf_delete(smf); smf = NULL; } if (last_file_name != NULL) free(last_file_name); last_file_name = strdup(file_name); smf = smf_load(file_name); if (smf == NULL) { g_critical("Couldn't load '%s'.", file_name); smf = smf_new(); if (smf == NULL) { g_critical("Cannot initialize smf_t."); return (-1); } return (-2); } g_message("File '%s' loaded.", file_name); decoded = smf_decode(smf); g_message("%s.", decoded); free(decoded); cmd_track("1"); free(file_name); return (0); }
void cmd_parse(u08 len, const u08 *buf, u08 *result_len, u08 *res_buf) { in = buf; in_size = len; out = res_buf; out_size = 0; while(in_size > 0) { u08 cmd = get_char(); switch(cmd) { // f) floppy commands case 'f': cmd_floppy(); break; // t) track commands case 't': cmd_track(); break; // m) memory commands case 'm': cmd_memory(); break; // i) io commands case 'i': cmd_io(); break; // r) sampler commands case 'r': cmd_sampler(); break; // d) diagnose commands case 'd': cmd_diagnose(); break; // c) clock commands case 'c': cmd_clock(); break; // n) wiznet commands case 'n': cmd_wiznet(); break; // ----- TASKS ----- // R) read disk case 'R': cmd_read(); break; } } *result_len = out_size; }