home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Transactor
/
Transactor_26_1988_Transactor_Publishing.d64
/
menus.c
< prev
next >
Wrap
Text File
|
2023-02-26
|
4KB
|
235 lines
/* menus.c - menu routines */
/* W Mat Waites - Sept 1988 */
#include <stdio.h>
/* globals */
extern int done;
extern int echo;
extern int baud;
extern int bpchar;
extern int stopbits;
extern int parity;
extern int ddrive;
char *parval();
char *dupval();
/* menu() - main menu */
menu()
{SHIFT-+}
int mdone = 0;
int kbchar;
char fname[21];
/* draw menu */
erase();
while(!mdone)
{SHIFT-+}
center(1, "Cmaster Menu");
move(4, 5);
printf("(Q)uit");
move(5, 5);
printf("(B)aud %4d",
baud);
move(6, 5);
printf("Bits per (C)har %1d",
bpchar);
move(7, 5);
printf("(P)arity %10s",
parval(parity));
move(8, 5);
printf("(S)top bits %1d",
stopbits);
move(9, 5);
printf("(T)og Duplex %10s",
dupval(echo));
move(11, 5);
printf("(U)pload");
move(12, 5);
printf("(D)ownload");
move(13, 5);
printf("(N)umber of drive %1d",
ddrive);
move(15, 5);
printf("(R)eturn");
/* wait for keypress */
while(charsinq() == 0)
{SHIFT-+}
{SHIFT--}
kbchar = getkb();
/* switch on key */
switch(kbchar)
{SHIFT-+}
case 'q': /* quit */
case 'Q':
done = 1;
mdone = 1;
break;
case 'u': /* upload */
case 'U':
erase();
move(12, 5);
printf("Filename:");
if(getstring(fname, 15))
{SHIFT-+}
erase();
setserial(baud, 8, 1, 0);
sendfile(fname, ddrive);
setserial(baud, bpchar,
stopbits, parity);
printf("Press key:");
while(charsinq() == 0)
{SHIFT-+}
{SHIFT--}
kbchar = getkb();
mdone = 1;
{SHIFT--}
erase();
break;
case 'd': /* download */
case 'D':
erase();
move(12, 5);
printf("Filename:");
if(getstring(fname, 15))
{SHIFT-+}
erase();
setserial(baud, 8, 1, 0);
recvfile(fname, ddrive);
setserial(baud, bpchar,
stopbits, parity);
printf("Press key:");
while(charsinq() == 0)
{SHIFT-+}
{SHIFT--}
kbchar = getkb();
mdone = 1;
{SHIFT--}
erase();
break;
case 'n': /* change active drive */
case 'N':
if(ddrive == 8)
{SHIFT-+}
ddrive = 9;
{SHIFT--}
else
{SHIFT-+}
ddrive = 8;
{SHIFT--}
break;
case 'b': /* cycle baud */
case 'B':
switch(baud)
{SHIFT-+}
case 300:
baud = 450;
break;
case 450:
baud = 1200;
break;
case 1200:
baud = 300;
break;
default:
baud = 300;
break;
{SHIFT--}
setserial(baud, bpchar,
stopbits, parity);
break;
case 'c': /* bits per char */
case 'C':
bpchar++;
if(bpchar > 8)
{SHIFT-+}
bpchar = 7;
{SHIFT--}
setserial(baud, bpchar,
stopbits, parity);
break;
case 'p': /* parity */
case 'P':
if(parity == 0)
{SHIFT-+}
parity = 1;
{SHIFT--}
else
{SHIFT-+}
parity += 2;
if(parity > 7)
{SHIFT-+}
parity = 0;
{SHIFT--}
{SHIFT--}
setserial(baud, bpchar,
stopbits, parity);
break;
case 's': /* stopbits (1 or 2) */
case 'S':
stopbits++;
if(stopbits > 2)
{SHIFT-+}
stopbits = 1;
{SHIFT--}
setserial(baud, bpchar,
stopbits, parity);
break;
case 't': /* toggle local echo */
case 'T':
echo = !echo;
break;
case 'r': /* return to terminal */
case 'R':
mdone = 1;
break;
default:
break;
{SHIFT--}
{SHIFT--}
erase();
{SHIFT--}
/* parval() - return parity string */
char *parval(par)
int par;
{SHIFT-+}
switch(par)
{SHIFT-+}
case 0:
return("Disabled");
case 1:
return("Odd");
case 3:
return("Even");
case 5:
return("Mark");
case 7:
return("Space");
default:
return("Invalid");
{SHIFT--}
{SHIFT--}
/* dupval() - return duplex string */
char *dupval(ech)
int ech;
{SHIFT-+}
if(ech)
{SHIFT-+}
return("Half");
{SHIFT--}
else
{SHIFT-+}
return("Full");
{SHIFT--}
{SHIFT--}
/* end of file */