]> git.sur5r.net Git - cc65/blob - testcode/lib/ser-test.c
Added support for the Apple2 machines.
[cc65] / testcode / lib / ser-test.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <serial.h>
4 #include <conio.h>
5 #include <dbg.h>
6
7
8 #if defined(__C64__)
9 #define DRIVERNAME      "c64-swlink.ser"
10 #elif defined(__C128__)
11 #define DRIVERNAME      "c128-swlink.ser"
12 #elif defined(__PLUS4__)
13 #define DRIVERNAME      "plus4-stdser.ser"
14 #elif defined(__CBM610__)
15 #define DRIVERNAME      "cbm610-std.ser"
16 #elif defined(__APPLE2__)
17 #define DRIVERNAME      "a2.ssc.ser"
18 #elif defined(__APPLE2ENH__)
19 #define DRIVERNAME      "a2e.ssc.ser"
20 #else
21 #define DRIVERNAME      "unknown"
22 #error "Unknown target system"
23 #endif
24
25
26 static const struct ser_params Params = {
27     SER_BAUD_19200,     /* Baudrate */
28     SER_BITS_8,         /* Number of data bits */
29     SER_STOP_1,         /* Number of stop bits */
30     SER_PAR_NONE,       /* Parity setting */
31     SER_HS_HW           /* Type of handshake to use */
32 };
33
34
35
36 static void CheckError (const char* Name, unsigned char Error)
37 {
38     if (Error != SER_ERR_OK) {
39         fprintf (stderr, "%s: %d\n", Name, Error);
40         exit (EXIT_FAILURE);
41     }
42 }
43
44
45 int main (void)
46 {
47     char Res;
48     char C;
49     CheckError ("ser_load_driver", ser_load_driver (DRIVERNAME));
50     CheckError ("ser_open", ser_open (&Params));
51     while (1) {
52         if (kbhit ()) {
53             C = cgetc ();
54             if (C == '1') {
55                 break;
56             } else {
57                 CheckError ("ser_put", ser_put (C));
58                 printf ("%c", C);
59             }
60         }
61         Res = ser_get (&C);
62         if (Res != SER_ERR_NO_DATA) {
63             CheckError ("ser_get", Res);
64             printf ("%c", C);
65         }
66     }
67     CheckError ("ser_unload", ser_unload ());
68
69     return EXIT_SUCCESS;
70 }