diff --git a/testcode/lib/ser-test.c b/testcode/lib/ser-test.c new file mode 100644 index 000000000..d2d3a728f --- /dev/null +++ b/testcode/lib/ser-test.c @@ -0,0 +1,70 @@ +#include +#include +#include +#include +#include + + +#if defined(__C64__) +#define DRIVERNAME "c64-swlink.ser" +#elif defined(__C128__) +#define DRIVERNAME "c128-swlink.ser" +#elif defined(__PLUS4__) +#define DRIVERNAME "plus4-stdser.ser" +#elif defined(__CBM610__) +#define DRIVERNAME "cbm610-std.ser" +#else +#define DRIVERNAME "unknown" +#error "Unknown target system" +#endif + + +static const struct ser_params Params = { + SER_BAUD_19200, /* Baudrate */ + SER_BITS_8, /* Number of data bits */ + SER_STOP_1, /* Number of stop bits */ + SER_PAR_NONE, /* Parity setting */ + SER_HS_HW /* Type of handshake to use */ +}; + + + +static void CheckError (const char* Name, unsigned char Error) +{ + if (Error != SER_ERR_OK) { + fprintf (stderr, "%s: %d\n", Name, Error); + exit (EXIT_FAILURE); + } +} + + +int main (void) +{ + char Res; + char C; + CheckError ("ser_load_driver", ser_load_driver (DRIVERNAME)); + CheckError ("ser_open", ser_open (&Params)); + while (1) { + if (kbhit ()) { + C = cgetc (); + if (C == '1') { + break; + } else { + CheckError ("ser_put", ser_put (C)); + printf ("%c", C); + } + } + Res = ser_get (&C); + if (Res != SER_ERR_NO_DATA) { + CheckError ("ser_get", Res); + printf ("%c", C); + } + } + CheckError ("ser_unload", ser_unload ()); + + return EXIT_SUCCESS; +} + + + +