/*************************************************************** * vt100 - terminal emulator - initialization. * Use the preferences baud rate if it is given, use the defaut x-on/x-off * characters. * DO NOT set then 0 which caused a lot of hangs!!!!! * * 860823 DBW - Integrated and rewrote lots of code * v2.0 860809 DBW - Major rewrite * v1.1 860720 DBW - Switches, 80 cols, colors, bug fixes * v1.0 860712 DBW - First version released * ***************************************************************/ #include "vt100.h" extern char *malloc(); void InitDevs() { IntuitionBase = (struct IntuitionBase *)OpenLibrary("intuition.library", 0); if( IntuitionBase == NULL ) { puts("can't open intuition\n"); exit(TRUE); } GfxBase = (struct GfxBase *)OpenLibrary("graphics.library", 0); if( GfxBase == NULL ) { puts("can't open graphics library\n"); exit(TRUE); } if(( mywindow = (struct Window *)OpenWindow(&NewWindow) ) == NULL) { puts("cant open window\n"); if (p_screen != 0) CloseScreen( myscreen ); exit(TRUE); } myviewport = (struct ViewPort *)ViewPortAddress(mywindow); Read_Request = (struct IOExtSer *) AllocMem((long)sizeof(*Read_Request),MEMF_PUBLIC|MEMF_CLEAR); Read_Request->io_SerFlags = SERF_SHARED; Read_Request->IOSer.io_Message.mn_ReplyPort = CreatePort("Read_RS",0); if(OpenDevice(SERIALNAME,NULL,Read_Request,NULL)) { puts("Cant open Read device\n"); CloseWindow( mywindow ); if (p_screen != 0) CloseScreen( myscreen ); DeletePort(Read_Request->IOSer.io_Message.mn_ReplyPort); FreeMem(Read_Request,(long)sizeof(*Read_Request)); exit(TRUE); } Read_Request->IOSer.io_Command = CMD_READ; Read_Request->IOSer.io_Length = 1; Read_Request->IOSer.io_Data = (APTR) &rs_in[0]; Write_Request = (struct IOExtSer *) AllocMem((long)sizeof(*Write_Request),MEMF_PUBLIC|MEMF_CLEAR); Write_Request->io_SerFlags = SERF_SHARED; Write_Request->IOSer.io_Message.mn_ReplyPort = CreatePort("Write_RS",0); if(OpenDevice(SERIALNAME,NULL,Write_Request,NULL)) { puts("Cant open Write device\n"); CloseDevice(Read_Request); DeletePort(Read_Request->IOSer.io_Message.mn_ReplyPort); FreeMem(Read_Request,(long)sizeof(*Read_Request)); DeletePort(Write_Request->IOSer.io_Message.mn_ReplyPort); FreeMem(Write_Request,(long)sizeof(*Write_Request)); CloseWindow( mywindow ); if (p_screen != 0) CloseScreen( myscreen ); exit(TRUE); } Write_Request->IOSer.io_Command = CMD_WRITE; Write_Request->IOSer.io_Length = 1; Write_Request->IOSer.io_Data = (APTR) &rs_out[0]; Read_Request->io_SerFlags = SERF_SHARED; /* this is where we do the baud rate stuff, TW */ if (p_baud != 0) Read_Request->io_Baud = p_baud; else p_baud = Read_Request->io_Baud; Read_Request->io_ReadLen = 8; Read_Request->io_WriteLen = 8; Read_Request->io_RBufLen = 2048; Read_Request->IOSer.io_Command = SDCMD_SETPARAMS; DoIO(Read_Request); Read_Request->IOSer.io_Command = CMD_READ; Timer_Port = CreatePort("Timer Port",0); Script_Timer_Port = CreatePort("Timer Port",0); if (OpenDevice(TIMERNAME, UNIT_VBLANK, (char *) &Timer, 0) || OpenDevice(TIMERNAME, UNIT_VBLANK, (char *) &Script_Timer, 0)) { puts("can't open timer device"); DeletePort(Timer_Port); DeletePort(Script_Timer_Port); CloseDevice(Read_Request); DeletePort(Read_Request->IOSer.io_Message.mn_ReplyPort); FreeMem(Read_Request,(long)sizeof(*Read_Request)); CloseDevice(Write_Request); DeletePort(Write_Request->IOSer.io_Message.mn_ReplyPort); FreeMem(Write_Request,(long)sizeof(*Write_Request)); CloseWindow( mywindow ); if (p_screen != 0) CloseScreen( myscreen ); exit(TRUE); } Timer.tr_node.io_Message.mn_ReplyPort = Timer_Port; Timer.tr_node.io_Command = TR_ADDREQUEST; Timer.tr_node.io_Flags = 0; Timer.tr_node.io_Error = 0; Script_Timer.tr_node.io_Message.mn_ReplyPort = Script_Timer_Port; Script_Timer.tr_node.io_Command = TR_ADDREQUEST; Script_Timer.tr_node.io_Flags = 0; Script_Timer.tr_node.io_Error = 0; }