/* * MAIN for ASPI EXERCISOR */ #include #include #include #include #include #include "global.h" #include "script.h" #include "kbd.h" #include "aspi_rw.h" void main(int,char *[]); static FLAG parse_cmd_line(int,char *[]); static int ctrlbrk_hdr(void); static void shut_down(void); unsigned long amt_mem_start, amt_mem_end; /*************************************************************************** * * main(...) * ***************************************************************************/ void main(argc,argv) int argc; char *argv[]; { _setcursortype(_NOCURSOR); printf("\n\n\n\n\nALWAYS TECHNOLOGY CORPORATION\n"); printf("ASPI EXERCISOR, VCN:806-2\n\n\n"); amt_mem_start = farcoreleft(); printf("System Far Heap=%ldbytes\n",amt_mem_start); amt_mem_start = coreleft(); printf("System Near Heap=%ldbytes\n",amt_mem_start); do { if (!parse_cmd_line(argc,argv)) break; if (!diag_here(DIAG_NO_CTRL_BRK)) { ctrlbrk(ctrlbrk_hdr); printf("Ctrl-break handler installed.\n"); } script_parse(); printf("Program terminated normally.\n\n"); } while (FALSE); shut_down(); } /*************************************************************************** * * parse_cmd_line(...) * * * Parse command line arguments * * Command Line Arguments: * * [-option] [-option] * * Options: * * -d[value] Enable diagnostics. The "value" parameter * specifies a diagnostics for each bit; refer to * DIAG.H * ***************************************************************************/ static FLAG parse_cmd_line(argc,argv) int argc; char *argv[]; { printf("Parsing DOS command line arguments...\n"); do { if (argc <= 1) /* No args? */ {error("No arguments specified"); return (FALSE); } if (argc > 1) {printf("Using %s as script input file.\n",argv[1]); script_file(argv[1]); } if (argc > 2) { if (!diag_set(argv[2])) return (FALSE); break; } } while (FALSE); return (TRUE); } /*************************************************************************** * * ctrlbrk_hdr(...) * ***************************************************************************/ static int ctrlbrk_hdr(void) { if (kbd_get_yn("Ctrl-break pressed, abort")) { aspi_stats('d'); // Display ASPI stats shut_down(); return (0); } aspi_stats('d'); // Display ASPI stats return (1); // Continue } /*************************************************************************** * * shut_down(...) * ***************************************************************************/ static void shut_down(void) { // script_file(NULL); fcloseall(); amt_mem_end = coreleft(); if (amt_mem_end != amt_mem_end) {printf("WARNING: Amount of memory exiting not the same as entering.\n"); printf( "\tAmount entering = %lu, Amount exiting = %lu\n", amt_mem_start,amt_mem_end); } _setcursortype(_NORMALCURSOR); exit(0); }