]> git.sur5r.net Git - cc65/blob - testcode/lib/ser-test.c
79a40e5451c56fae39bc41ce27f9c87114f9cb38
[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(__APPLE2ENH__)
17 #define DRIVERNAME      "a2e.ssc.ser"
18 #elif defined(__APPLE2__)
19 #define DRIVERNAME      "a2.ssc.ser"
20 #elif defined(__ATARIXL__)
21 #define DRIVERNAME      "atrxrdev.ser"
22 #elif defined(__ATARI__)
23 #define DRIVERNAME      "atrrdev.ser"
24 #else
25 #define DRIVERNAME      "unknown"
26 #error "Unknown target system"
27 #endif
28
29 extern unsigned int getsp(void);
30
31 static const struct ser_params Params = {
32     SER_BAUD_9600,      /* Baudrate */
33     SER_BITS_8,         /* Number of data bits */
34     SER_STOP_1,         /* Number of stop bits */
35     SER_PAR_NONE,       /* Parity setting */
36     SER_HS_HW           /* Type of handshake to use */
37 };
38
39
40
41 static void CheckError (const char* Name, unsigned char Error)
42 {
43     if (Error != SER_ERR_OK) {
44         fprintf (stderr, "%s: %d\n", Name, Error);
45     cgetc();
46         exit (EXIT_FAILURE);
47     }
48 }
49
50
51 int main (void)
52 {
53     char Res;
54     char C;
55     printf("SP: $%04x\n", getsp());
56     printf ("A\n");
57     //cgetc();
58     CheckError ("ser_load_driver", ser_load_driver (DRIVERNAME));
59     printf ("B\n");
60     //cgetc();
61     printf("params at %p\n", &Params);
62     CheckError ("ser_open", ser_open (&Params));
63     printf ("C\n");
64     //cgetc();
65     printf("SP 2: $%04x\n", getsp());
66     while (1) {
67         if (kbhit ()) {
68             printf("loop 1 SP: $%04x\n", getsp());
69             C = cgetc ();
70             if (C == '1') {
71                 break;
72             } else {
73                 CheckError ("ser_put", ser_put (C));
74                 //printf ("%c", C);
75             }
76         }
77         Res = ser_get (&C);
78         if (Res != SER_ERR_NO_DATA) {
79             printf("loop 2 SP: $%04x\n", getsp());
80             CheckError ("ser_get", Res);
81             printf ("%c", C);
82         }
83     }
84     printf ("D\n");
85     printf("after loop SP: $%04x\n", getsp());
86     //cgetc();
87     CheckError ("ser_unload", ser_unload ());
88     printf ("E\n");
89
90     cgetc();
91     printf("final SP: $%04x\n", getsp());
92     return EXIT_SUCCESS;
93 }