home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d6xx
/
d658
/
view.lha
/
View
/
Source
/
Console.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-05-15
|
4KB
|
131 lines
/*-- AutoRev header do NOT edit!
*
* Program : Console.c
* Copyright : Copyright © 1991-92 Jaba Development
* Author : Jan van den Baard
* Creation Date : 04-Apr-92
* Current version : 2.0
* Translator : Dice v2.06.40
*
* REVISION HISTORY
*
* Date Version Comment
* --------- ------- ------------------------------------------
* 04-Apr-92 2.0 Console routine (rewrite)
*
*-- REV_END --*/
#include "View.h"
Prototype long OpenConsole( void );
Prototype void CloseConsole( void );
Prototype void ConvertKeyTab( void );
Prototype void Inform( UBYTE * );
Prototype void Display( struct Line * );
extern struct Window *vwWindow;
static struct MsgPort *CPort = NULL;
struct IOStdReq *CMsg = NULL;
APTR ConsoleDevice = NULL;
UBYTE KeyTable[ 64 ];
UBYTE SKeyTable[ 64 ];
UBYTE MoveStr[] = { CSI, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x48, 0x00 };
UBYTE ClearStr[] = { 0x0c, 0x00 };
UBYTE ScrUpStr[] = { CSI, 0x53, 0x00 };
UBYTE ScrDnStr[] = { CSI, 0x54, 0x00 };
UBYTE StdStr[] = { ESC, 0x63, CSI, 0x30, 0x20, 0x70, CSI, 0x00, 0x38, 0x79, 0x00 };
UBYTE NoScrStr[] = { CSI, 0x3e, 0x31, 0x6c };
UBYTE *ResStr = "\033[0m";
UBYTE *FFStr = "\033[7mF\033[0m";
long OpenConsole( void )
{
if ( CPort = CreateMsgPort()) {
if ( CMsg = ( struct IOStdReq * )CreateIORequest( CPort, (long)sizeof( struct IOStdReq ))) {
CMsg->io_Data = (APTR) vwWindow;
CMsg->io_Length = (LONG) sizeof( struct Window );
if ( ! OpenDevice( "console.device", NULL, ( struct IORequest * )CMsg, NULL )) {
ConsoleDevice = CMsg->io_Device;
ConvertKeyTab();
Inform( StdStr );
return( TRUE );
}
}
}
CloseConsole();
return( FALSE );
}
void CloseConsole( void )
{
if ( ConsoleDevice ) {
CloseDevice(( struct IORequest * )CMsg );
ConsoleDevice = NULL;
}
if ( CMsg ) {
DeleteIORequest(( struct IORequest * )CMsg );
CMsg = NULL;
}
if ( CPort ) {
DeleteMsgPort( CPort );
CPort = NULL;
}
}
void ConvertKeyTab( void )
{
struct InputEvent ievent;
UWORD i;
setmem( &ievent, sizeof( struct InputEvent ), NULL );
ievent.ie_Class = IECLASS_RAWKEY;
for ( i = 0; i < 64; i++ ) {
ievent.ie_Code = i;
RawKeyConvert( &ievent, &KeyTable[ i ], 1, NULL );
}
ievent.ie_Qualifier = IEQUALIFIER_LSHIFT;
for ( i = 0; i < 64; i++ ) {
ievent.ie_Code = i;
RawKeyConvert( &ievent, &SKeyTable[ i ], 1, NULL );
}
}
void Inform( UBYTE *text )
{
CMsg->io_Command = CMD_WRITE;
CMsg->io_Data = (APTR) text;
CMsg->io_Length = (LONG) strlen( text );
DoIO(( struct IORequest * )CMsg );
}
void Display( struct Line *line )
{
Inform( ResStr );
Inform( NoScrStr );
CMsg->io_Command = CMD_WRITE;
CMsg->io_Data = (APTR) line->Text;
CMsg->io_Length = (LONG) line->Size - 1;
if ( line->Text[ 0 ] == FF ) {
Inform( FFStr );
CMsg->io_Data = (APTR) &line->Text[ 1 ];
CMsg->io_Length = (LONG) line->Size - 2;
}
DoIO(( struct IORequest * )CMsg );
}