rott/rottcom/ROTTSER/SERSETUP.C
2002-12-25 00:00:00 +00:00

213 lines
4.2 KiB
C

/*
Copyright (C) 1994-1995 Apogee Software, Ltd.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
// sersetup.c
#include "global.h"
#include "sersetup.h"
#include "sermodem.h"
#include "sercom.h"
#include "port.h"
#include "..\rottnet.h"
#include "st_cfg.h"
#include <time.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <process.h>
#include <stdarg.h>
#include <bios.h>
#include <ctype.h>
#define VERSION "1.3"
boolean usemodem=false;
boolean showstats=false;
void ShutDown( void )
{
if (usemodem==true)
hangup_modem ();
ShutdownROTTCOM();
ShutdownPort ();
}
void talk (void)
{
int c;
clrscr ();
printf ("Talk mode - You might want to decide which type of COMM-BAT (tm)\n");
printf (" game you would like to play. Both players must\n");
printf (" press the <ESC> key to continue into the game.\n\n");
while (TRUE)
{
/* Check for keypress */
if (bioskey (1))
{
if ((c = bioskey (0) & 0xff) == ESC)
{
/* ESC key -- Exit talk mode -- Flush both sides */
// write_buffer (&(char)c, 1);
while (read_byte () != -1)
;
while (bioskey (1))
bioskey (0);
printf ("\n\n");
return;
}
if (c == 0x0D) /* Change cr to crlf */
c = 0x0A;
write_buffer (&(char)c, 1);
printf ("%c", c);
}
/* Check for received byte */
if ((c = read_byte ()) != -1)
{
#if 0
if (c==ESC)
{
while (read_byte () != -1)
;
while (bioskey (1))
bioskey (0);
printf ("\n\n");
return;
}
#endif
printf ("%c", c);
}
}
}
/*
=================
=
= main
=
=================
*/
void main( void )
{
boolean answer=false;
clrscr ();
printf(" ----------------------------------\n");
printf(" ROTT SERIAL DEVICE DRIVER V%s \n",VERSION);
printf(" ----------------------------------\n");
//
// set network characteristics
//
rottcom.numplayers = 2;
pause=false;
rottcom.gametype = MODEM_GAME;
rottcom.consoleplayer = 0; /* Default - may be overridden later. */
usemodem=false;
// Check for auto answer
if (CheckParm("-answer"))
{
usemodem=true;
answer=true;
}
// Check for dial
if (CheckParm("-dial"))
{
usemodem=true;
answer=false;
}
if (CheckParm ("-pause"))
pause=true;
// Check for showstats
if (CheckParm("-stats"))
{
showstats=true;
}
printf("\n\n ------------\n");
if (usemodem==true)
{
if (answer==false)
{
printf(" DIALING MODE\n");
}
else
{
printf(" ANSWER MODE\n");
}
}
else
{
printf(" SERIAL MODE\n");
}
printf(" ------------\n");
ReadSetup ();
GetUart ();
InitPort ();
while ( 0 <= read_byte() ); /* Flush any old stuff from uart buffer */
if (usemodem==true)
{
if (answer==false)
{
if (Dial()==FALSE)
{
Error("Dialing failed\n");
}
}
else
{
if (Answer()==FALSE)
{
Error("Answering failed\n");
}
}
}
if (Connect ())
{
reset_counters ();
talk();
StartTime();
LaunchROTT ();
EndTime();
}
if (showstats==true)
{
stats();
}
ShutDown();
exit(0);
}