/********************************************************************* * a terminal program that has ascii and xmodem transfer capability * * use esc to abort xmodem transfer * * written by Michael Mounier * new version by Dave Wecker 860621 ************************************************************************/ /* compiler directives to fetch the necessary header files */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #undef NULL #define NULL ((void *)0) #define INTUITION_REV 1L #define GRAPHICS_REV 1L /* things for xmodem send and recieve */ #define SECSIZ 0x80 #define TTIME 10 /* number of seconds for timeout */ #define BufSize 0x1000 /* Text buffer */ #define ERRORMAX 10 /* Max errors before abort */ #define RETRYMAX 10 /* Maximum retrys before abort */ #define SOH 1 /* Start of sector char */ #define EOT 4 /* end of transmission char */ #define ACK 6 /* acknowledge sector transmission */ #define NAK 21 /* error in transmission detected */ #define FILEMAX 6 /* number of file menu items */ #define RSMAX 5 /* speed menu items */ #define XFMAX 2 /* transfer mode items */ #define MAXMENU 3 /* total number of menu entries */ #define MINX 3L #define MAXX 627L #define MINY 18L #define MAXY 202L extern struct MsgPort *CreatePort(); #ifdef MODULE_MAIN char bufr[BufSize]; int fd, timeout = FALSE; long bytes_xferred; int imagemode = TRUE; struct IntuitionBase *IntuitionBase; struct GfxBase *GfxBase; struct NewScreen NewScreen = { 0,0,640,400,1, /* left, top, width, height, depth */ 0,1,(HIRES|LACE), /* DetailPen, BlockPen, ViewModes */ CUSTOMSCREEN,NULL, /* Type, Font */ (UBYTE *)"VT100 Terminal Screen", /* Title */ NULL,NULL }; /* Gadgets, Bitmap */ struct NewWindow NewWindow = { 0,100,640,212, /* left, top, width, height */ 0,1, /* detailpen, blockpen */ CLOSEWINDOW | RAWKEY | MENUPICK | NEWSIZE, WINDOWCLOSE | SMART_REFRESH | ACTIVATE | WINDOWDRAG | WINDOWDEPTH | WINDOWSIZING | REPORTMOUSE, /* Flags */ NULL,NULL, /* FirstGadget, CheckMark */ (UBYTE *) "VT100 Terminal Window ", NULL, /* set screen after open screen */ NULL, /* bitmap */ 640, 212, 640, 212,/* minw, minh, maxw, maxh */ CUSTOMSCREEN /* Type */ }; struct Screen *myscreen; /* ptr to applications screen */ struct Window *mywindow; /* ptr to applications window */ struct ViewPort *myviewport; struct ColorMap *mycolormap; USHORT *mycolortable; struct IntuiMessage *NewMessage; /* msg structure for GetMsg() */ struct MenuItem FileItem[FILEMAX]; struct IntuiText FileText[FILEMAX]; struct MenuItem RSItem[RSMAX]; struct IntuiText RSText[RSMAX]; struct MenuItem XFItem[XFMAX]; struct IntuiText XFText[XFMAX]; struct Menu menu[MAXMENU]; struct IOExtSer *Read_Request; char rs_in[2]; struct IOExtSer *Write_Request; char rs_out[2]; short x,y,curmode; #else /* not MODULE_MAIN */ extern char bufr[BufSize]; extern int fd, timeout; extern long bytes_xferred; extern int imagemode; extern struct IntuitionBase *IntuitionBase; extern struct GfxBase *GfxBase; extern struct NewScreen NewScreen; extern struct NewWindow NewWindow; extern struct Screen *myscreen; extern struct Window *mywindow; extern struct ViewPort *myviewport; extern struct ColorMap *mycolormap; extern USHORT *mycolortable; extern struct IntuiMessage *NewMessage; extern struct MenuItem FileItem[FILEMAX]; extern struct IntuiText FileText[FILEMAX]; extern struct MenuItem RSItem[RSMAX]; extern struct IntuiText RSText[RSMAX]; extern struct MenuItem XFItem[XFMAX]; extern struct IntuiText XFText[XFMAX]; extern struct Menu menu[MAXMENU]; extern struct IOExtSer *Read_Request; extern char rs_in[2]; extern struct IOExtSer *Write_Request; extern char rs_out[2]; extern short x,y,curmode; #endif /* not MODULE_MAIN */ #ifndef MODULE_INIT extern InitDevs(),InitFileItems(),InitRSItems(),InitXFItems(),InitMenu(); #endif #ifndef MODULE_WINDOW extern filename(),emits(),emit(),cursoroff(),cursoron(),toasc(); #endif #ifndef MODULE_XMODEM extern sendchar(), sendstring(), readchar(), XMODEM_Read_File(), XMODEM_Send_File(); #endif #ifndef MODULE_REMOTE extern doremote(); #endif #ifndef MODULE_KERMIT extern doksend(),dokreceive(); #endif