add serial driver for Atari, still contains much debug code
This commit is contained in:
@@ -17,14 +17,19 @@
|
||||
#define DRIVERNAME "a2e.ssc.ser"
|
||||
#elif defined(__APPLE2__)
|
||||
#define DRIVERNAME "a2.ssc.ser"
|
||||
#elif defined(__ATARIXL__)
|
||||
#define DRIVERNAME "atrxrdev.ser"
|
||||
#elif defined(__ATARI__)
|
||||
#define DRIVERNAME "atrrdev.ser"
|
||||
#else
|
||||
#define DRIVERNAME "unknown"
|
||||
#error "Unknown target system"
|
||||
#endif
|
||||
|
||||
extern unsigned int getsp(void);
|
||||
|
||||
static const struct ser_params Params = {
|
||||
SER_BAUD_19200, /* Baudrate */
|
||||
SER_BAUD_9600, /* Baudrate */
|
||||
SER_BITS_8, /* Number of data bits */
|
||||
SER_STOP_1, /* Number of stop bits */
|
||||
SER_PAR_NONE, /* Parity setting */
|
||||
@@ -37,6 +42,7 @@ static void CheckError (const char* Name, unsigned char Error)
|
||||
{
|
||||
if (Error != SER_ERR_OK) {
|
||||
fprintf (stderr, "%s: %d\n", Name, Error);
|
||||
cgetc();
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
@@ -46,25 +52,42 @@ int main (void)
|
||||
{
|
||||
char Res;
|
||||
char C;
|
||||
printf("SP: $%04x\n", getsp());
|
||||
printf ("A\n");
|
||||
//cgetc();
|
||||
CheckError ("ser_load_driver", ser_load_driver (DRIVERNAME));
|
||||
printf ("B\n");
|
||||
//cgetc();
|
||||
printf("params at %p\n", &Params);
|
||||
CheckError ("ser_open", ser_open (&Params));
|
||||
printf ("C\n");
|
||||
//cgetc();
|
||||
printf("SP 2: $%04x\n", getsp());
|
||||
while (1) {
|
||||
if (kbhit ()) {
|
||||
printf("loop 1 SP: $%04x\n", getsp());
|
||||
C = cgetc ();
|
||||
if (C == '1') {
|
||||
break;
|
||||
} else {
|
||||
CheckError ("ser_put", ser_put (C));
|
||||
printf ("%c", C);
|
||||
//printf ("%c", C);
|
||||
}
|
||||
}
|
||||
Res = ser_get (&C);
|
||||
if (Res != SER_ERR_NO_DATA) {
|
||||
printf("loop 2 SP: $%04x\n", getsp());
|
||||
CheckError ("ser_get", Res);
|
||||
printf ("%c", C);
|
||||
}
|
||||
}
|
||||
printf ("D\n");
|
||||
printf("after loop SP: $%04x\n", getsp());
|
||||
//cgetc();
|
||||
CheckError ("ser_unload", ser_unload ());
|
||||
printf ("E\n");
|
||||
|
||||
cgetc();
|
||||
printf("final SP: $%04x\n", getsp());
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user