/********************************************************************* * a terminal program that has ascii and xmodem transfer capability * * v2.6 870227 DBW - bug fixes for all the stuff in v2.5 * v2.5 870214 DBW - more additions (see readme file) * v2.4 861214 DBW - lots of fixes/additions (see readme file) * v2.3 861101 DBW - minor bug fixes * v2.2 861012 DBW - more of the same * v2.1 860915 DBW - new features (see README) * 860823 DBW - Integrated and rewrote lots of code * v2.0 860809 DBW - Major release.. LOTS of changes * v1.1 860720 DBW - Switches, 80 cols, colors, bug fixes * v1.0 860712 DBW - First version released * * use esc to abort xmodem transfer * * written by Michael Mounier * new version by Dave Wecker 860621 ********************************************************************/ /********* major version (used for title of terminal window) *********/ #define VERSION "VT100 (V2.6 DBW 860227) Terminal Window" /*********** ######## define the compiler type here ######## ********/ #define LATTICE 0 #define MANX 1 /* compiler directives to fetch the necessary header files */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* for Lattice you may have to change these with: */ #include /* #include and */ #include /* #include */ #include #include #include #if MANX #include #undef NULL #define NULL ((void *)0) #endif #define INTUITION_REV 1L #define GRAPHICS_REV 1L /* things for xmodem send and recieve */ #define GOODREAD 0 #define TIMEOUT 1 #define USERABORT 2 #define SECSIZ 0x80 #define TTIME_SHORT 5 /* number of seconds for short timeout */ #define TTIME_LONG 50 /* number of seconds for long timeout */ #define TTIME_KERMIT 10 /* number of seconds for KERMIT timeout*/ #define BufSize 0x200 /* Text buffer for XMODEM */ #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 8 /* number of file menu items */ #define COMMAX 3 /* number of communication sub menus */ #define RSMAX 5 /* speed menu items */ #define PARMAX 5 /* parity items */ #define XFMAX 3 /* transfer mode items */ #define SCRIPTMAX 2 /* script menu items */ #define UTILMAX 9 /* utility menu */ #define MAXMENU 4 /* total number of menu entries */ #define FSF_REVERSE 256 /* fake font style to flag INVERSVID mode */ /* things for script support */ #define GOTOLABEL 1 #define NEXTCOMMAND 0 #define ONCOMMAND 2 #define WAIT_TIMER 2 #define WAIT_STRING 1 /* things for 'beep' support */ #define BEEPSIZE 10L #define BEEPFREQ 1000L #define COLORCLOCK 3579545L extern struct MsgPort *CreatePort(); extern char *malloc(),*strcpy(),*fgets(); extern long ftell(); extern int multi; /* flags multi file transfers */ extern int server; extern char bufr[BufSize]; extern int fd, timeout, ttime; extern long bytes_xferred; extern char MyDir[60]; extern struct FileLock *MyDirLock; extern struct FileLock *StartLock; extern struct IntuitionBase *IntuitionBase; extern struct GfxBase *GfxBase; extern struct TextAttr myattr; extern struct TextFont *myfont; extern struct NewScreen NewScreen; extern struct NewWindow NewWindow; extern struct Screen *myscreen; extern struct Window *mywindow; extern struct ViewPort *myviewport; extern struct RastPort *myrastport; extern struct IntuiMessage *NewMessage; extern struct Preferences *Prefs; extern char InpBuf[80],UndoBuf[80],Prompt[80]; extern struct StringInfo mystrinfo; extern struct Gadget mystrgad; extern struct IntuiText donetxt; extern struct Gadget mydonegad; extern struct IntuiText mystrtxt; extern struct Requester myrequest; extern int numreqs; extern struct MenuItem FileItem[FILEMAX]; extern struct IntuiText FileText[FILEMAX]; extern struct MenuItem CommItem[COMMAX]; extern struct IntuiText CommText[COMMAX]; extern struct MenuItem RSItem[RSMAX]; extern struct IntuiText RSText[RSMAX]; extern struct MenuItem ParItem[PARMAX]; extern struct IntuiText ParText[PARMAX]; extern struct MenuItem XFItem[XFMAX]; extern struct IntuiText XFText[XFMAX]; extern struct MenuItem ScriptItem[SCRIPTMAX]; extern struct IntuiText ScriptText[SCRIPTMAX]; extern struct MenuItem UtilItem[UTILMAX]; extern struct IntuiText UtilText[UTILMAX]; extern struct Menu menu[MAXMENU]; extern struct timerequest Timer, Script_Timer; extern struct MsgPort *Timer_Port, *Script_Timer_Port; extern struct IOExtSer *Read_Request; extern char *rs_in; extern struct IOExtSer *Write_Request; extern char rs_out[2]; extern int x,y,curmode; extern int MINX,MAXX,MINY,MAXY,top,bot,savx,savy; extern int savmode,nlmode,alt,savalt,a[2],sa[2]; extern int inesc,inctrl,private,badseq,maxcol; extern struct IOAudio Audio_Request; extern struct MsgPort *Audio_Port; extern UBYTE *BeepWave; extern UBYTE Audio_AllocMap[4]; extern int p_baud,p_screen,p_interlace,p_depth,p_buffer,p_wbcolors; extern int p_foreground,p_background,p_bold,p_cursor,p_lines,p_mode; extern int p_parity,p_volume,p_wrap,p_echo,p_keyapp,p_curapp,p_bs_del; extern int p_convert; extern char p_keyscript; extern long p_break; extern char *p_f[10],*p_F[10]; extern int script_on; extern int script_wait; extern int doing_init; /* vt100.c */ extern int do_send(),do_capture(),cleanup(); extern void setserpar(), setserbaud(), setparams(), redoutil(), redocomm(), handle_menupick(); /* init.c */ extern void InitDevs(),InitFileItems(),InitCommItems(), InitScriptItems(),InitUtilItems(),InitMenu(); extern char *InitDefaults(); /* window.c */ extern void swap_bs_del(),req(),emits(),emit(),emitbatch(),cursorflip(); extern int toasc(); /* xmodem.c */ extern void sendchar(),sendstring(),sendbreak(),multi_xfer(), No_XON(),Do_XON(); extern int readchar(),XMODEM_Read_File(),XMODEM_Send_File(); /* remote.c */ extern void doremote(),doindex(),doctrl(),doesc(),doerase(); /* kermit.c */ extern int doksend(), dokreceive(), saybye(); extern void encode(), decode(), rpar(), spar(); /* script.c */ extern int script_start(), chk_script(), exit_script(), do_script_cmd(); extern char *next_wrd(), *tostring(); /* init commands */ extern void cmd_bkg(), cmd_bold(), cmd_buf(), cmd_cursor(), cmd_depth(), cmd_fore(), cmd_inter(), cmd_lines(), cmd_screen(), cmd_volume(), cmd_wb(), cmd_null(), /* script commands */ cmd_as(), cmd_beep(), cmd_cap(), cmd_cd(), cmd_delay(), cmd_goto(), cmd_goto(), cmd_kb(), cmd_kg(), cmd_kr(), cmd_ks(), cmd_on(), cmd_sb(), cmd_send(), cmd_wait(), cmd_xr(), cmd_xs(), /* init and script commands */ cmd_appcur(), cmd_baud(), cmd_bt(), cmd_conv(), cmd_echo(), cmd_exit(), cmd_fnc(), cmd_key(), cmd_mode(), cmd_numkey(), cmd_parity(), cmd_swap(), cmd_wrap(); /* expand.c */ extern char **expand(); extern int set_dir(), free_expand();