#define THR 0x3F8 #define RBR 0x3F8 #define IER 0x3F9 #define LCR 0x3F8 #define MCR 0x3FC #define LSR 0x3FD #define MSR 0x3FE #define B110 0x00 #define B150 0x20 #define B300 0x40 #define B600 0x60 #define B1200 0x80 #define B2400 0xA0 #define B4800 0xC0 #define B9600 0xE0 #define NO_PARITY 0x00 #define ODD_PARITY 0x08 #define EVEN_PARITY 0x18 #define STOP1 0x00 #define STOP2 0x04 #define DATA7 0x02 #define DATA8 0x03 #define COM1 0 #define salloc(x) malloc(x) + (x) - 2 #define BUFSIZE 256 #define REC_LEN 84 #define ESC 0x1B #define STDIN 0 #define STDOUT 1 #define STDERR 2 #define LINE_LENGTH 21 #define TRUE 1 #define FALSE 0 #define COLUMNS 80 #define ROWS 25 #define BELL_RINGS 30 #define ORIGIN_X 2 #define ORIGIN_Y 2 #define MPS2KNOT 1.968 #define ELLIPSE_71A 978031.85 #define ELLIPSE_71B 0.0053024 #define ELLIPSE_71C 0.0000359 #define DEG2RAD 0.0174532 #define FREE_AIR 0.3086 #define DISK_SIZE 20 #define FILE_SIZE 1110000.0 #define MAX_FILTER_LENGTH 512 #define BUFFER_SIZE 2048 #define DAY_LENGTH_SEC 86400 #define CENTURY 1900 #define CUR_MV(x,y) fprintf(stderr,"\33[%d;%dH",y,x) #define CUR_UP(num) fprintf(stderr,"\33[%dA",num) #define CUR_DN(num) fprintf(stderr,"\33[%dB",num) #define CUR_RT(num) fprintf(stderr,"\33[%dC",num) #define CUR_LT(num) fprintf(stderr,"\33[%dD",num) #define CLR_SCRN fputs("\33[2J",stderr) #define BELL fputc('\7',stderr) int initialize_input(); int get_screen_input(); int do_commands(); struct GRAV *get_grav(); int reduce_gravity(); long int log_data(); int on_grav(); int off_grav(); int on_plot(); int off_plot(); int on_log(); int off_log(); int read_grav_flag(); void command_error_message(); void plot_data(); void open_new_file(); int gravity_buffer_check(); void print_message(); void ISR(); void rs232_out(); void rs232_init(); void set_int(); void clear_interrupt(); long int time_get(); void write_header(); int date_get(); int day_of_year(); void write_status_string(); void write_header_string(); void calculate_filter_coefficients(); struct GRAV { char raw_grav[13]; long int counts; long int end_count_time; int flag; int num; double gravity; struct GRAV *next; } grav_1,grav_2; struct GRAV *begin_g,*end_g; struct PLOT { double grav; double wrap; int row; long int time; struct PLOT *next; } *first_point; struct PLOT *last_point; FILE *log_file; char meter_ID[25] ={ "Bell BGM-3 # 115" };