home *** CD-ROM | disk | FTP | other *** search
- /*
- ** TerminalTest.c
- **
- ** Terminal emulation test routines
- **
- ** Copyright © 1990-1996 by Olaf `Olsen' Barthel
- ** All Rights Reserved
- **
- ** :ts=4
- */
-
- #ifndef _GLOBAL_H
- #include "Global.h"
- #endif
-
- STATIC BPTR TestFile;
- STATIC UBYTE TestFileName[MAX_FILENAME_LENGTH];
- STATIC struct MsgPort *MicroPort;
- STATIC struct timerequest *MicroRequest;
- STATIC BOOL UseTestDelay;
-
- STATIC VOID
- MicroCleanup(VOID)
- {
- if(MicroRequest)
- {
- if(MicroRequest->tr_node.io_Device)
- CloseDevice((struct IORequest *)MicroRequest);
-
- DeleteIORequest((struct IORequest *)MicroRequest);
- MicroRequest = NULL;
- }
-
- if(MicroPort)
- {
- DeleteMsgPort(MicroPort);
- MicroPort = NULL;
- }
-
- }
-
- STATIC BOOL
- MicroSetup(VOID)
- {
- if(MicroPort = CreateMsgPort())
- {
- if(MicroRequest = (struct timerequest *)CreateIORequest(MicroPort,sizeof(struct timerequest)))
- {
- if(!OpenDevice(TIMERNAME,UNIT_MICROHZ,(struct IORequest *)MicroRequest,NULL))
- return(TRUE);
- }
- }
-
- MicroCleanup();
-
- return(FALSE);
- }
-
- VOID
- StopTerminalTest()
- {
- MicroCleanup();
-
- if(TestFile)
- {
- Close(TestFile);
- TestFile = NULL;
- }
-
- if(MainJobQueue && TerminalTestJob)
- SuspendJob(MainJobQueue,TerminalTestJob);
- }
-
- VOID
- StartTerminalTest(ULONG Qualifier)
- {
- struct FileRequester *FileRequester;
-
- StopTerminalTest();
-
- if(FileRequester = OpenSingleFile(Window,"Open terminal test file",NULL,NULL,TestFileName,sizeof(TestFileName)))
- {
- if(TestFile = Open(TestFileName,MODE_OLDFILE))
- {
- if(MicroSetup())
- {
- if(Qualifier & IEQUALIFIER_RSHIFT)
- UseTestDelay = FALSE;
- else
- UseTestDelay = TRUE;
-
- ActivateJob(MainJobQueue,TerminalTestJob);
- }
- else
- {
- Close(TestFile);
- TestFile = NULL;
- }
- }
-
- FreeAslRequest(FileRequester);
- }
- }
-
- BOOL
- HandleTerminalTestJob(JobNode *UnusedJob)
- {
- UBYTE LocalBuffer[40];
- LONG Len;
-
- Len = Read(TestFile,LocalBuffer,sizeof(LocalBuffer));
-
- if(Len > 0)
- {
- LONG i;
-
- if(UseTestDelay)
- {
- for(i = 0 ; i < Len ; i++)
- {
- MicroRequest->tr_node.io_Command = TR_ADDREQUEST;
- MicroRequest->tr_time.tv_secs = 0;
- MicroRequest->tr_time.tv_micro = MILLION / 200;
-
- DoIO((struct IORequest *)MicroRequest);
-
- (*ConTransfer)(&LocalBuffer[i],1);
- }
- }
- else
- {
- for(i = 0 ; i < Len ; i++)
- (*ConTransfer)(&LocalBuffer[i],1);
- }
- }
- else
- StopTerminalTest();
-
- return(FALSE);
- }
-