home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_disks / 300-399 / ff330.lzh / Vt100 / Src.lzh / Src / vt100.h < prev    next >
C/C++ Source or Header  |  1990-03-01  |  12KB  |  353 lines

  1. #define HRCSID "$RCSfile: vt100.h,v $ $Revision: 1.4 $"
  2.  
  3. /*********************************************************************
  4.  *  a terminal program that has ascii and xmodem transfer capability
  5.  *            :ts=8
  6.  *
  7.  * $Log:    vt100.h,v $
  8.  * Revision 1.4  90/02/12  20:23:52  acs
  9.  * 1) Update date stamp in VERSION for the release of 2.9A.
  10.  * 2) define HRCSID instead of declaring it static char.
  11.  * 
  12.  * Revision 1.3  89/12/19  20:39:14  acs
  13.  * Updated version and date stamp.
  14.  * 
  15.  * Revision 1.2  89/11/06  20:58:52  acs
  16.  * 1) Support for new STRIP command and menu option.
  17.  * 2) New window title (date change).
  18.  * 3) Add RCS id and change log.
  19.  * 
  20.  *    v2.9 ACS - See change summary.
  21.  *    v2.8a 880331 ACS - Update title to 2.8A.
  22.  *    v2.7 870825 ACS - See README.
  23.  *    v2.6 870227 DBW - bug fixes for all the stuff in v2.5
  24.  *    v2.5 870214 DBW - more additions (see readme file)
  25.  *    v2.4 861214 DBW - lots of fixes/additions (see readme file)
  26.  *    v2.3 861101 DBW - minor bug fixes
  27.  *    v2.2 861012 DBW - more of the same
  28.  *    v2.1 860915 DBW - new features (see README)
  29.  *         860823 DBW - Integrated and rewrote lots of code
  30.  *    v2.0 860809 DBW    - Major release.. LOTS of changes
  31.  *    v1.1 860720 DBW    - Switches, 80 cols, colors, bug fixes
  32.  *    v1.0 860712 DBW    - First version released
  33.  *
  34.  *  use esc to abort xmodem transfer
  35.  *
  36.  *  written by Michael Mounier
  37.  *  new version by Dave Wecker 860621
  38.  ********************************************************************/
  39.  
  40. /********* major version (used for title of terminal window) *********/
  41. #define    VERSION    "VT100 (V2.9A ACS 900212) Terminal Window"
  42.  
  43. /*********** ########  define the compiler type here ######## ********/
  44. #define    LATTICE    0
  45. #define MANX    1
  46.  
  47. /*  compiler directives to fetch the necessary header files */
  48. #include <exec/types.h>
  49. #include <exec/exec.h>
  50. #include <intuition/intuition.h>
  51. #include <intuition/intuitionbase.h>
  52. #include <graphics/gfxbase.h>
  53. #include <graphics/gfx.h>
  54. #include <graphics/text.h>
  55. #include <graphics/regions.h>
  56. #include <graphics/copper.h>
  57. #include <graphics/gels.h>
  58. #include <devices/serial.h>
  59. #include <devices/keymap.h>
  60. #include <devices/inputevent.h>
  61. #include <devices/audio.h>
  62. #include <hardware/blit.h>
  63.  
  64.             /* for Lattice you may have to change these with: */
  65. #include <stdio.h>    /* #include <lattice/stdio.h> and */
  66. #include <ctype.h>    /* #include <lattice/ctype.h>     */
  67.  
  68. #include <libraries/dos.h>
  69. #include <libraries/dosextens.h>
  70. #include <devices/timer.h>
  71.  
  72. #if LATTICE
  73. #include <stdlib.h>
  74. #include <string.h>
  75. #include <proto/exec.h>
  76. #include <proto/graphics.h>
  77. #include <proto/intuition.h>
  78. #include <proto/dos.h>
  79. #include <proto/timer.h>
  80. #endif
  81.  
  82. #if AREXX
  83. #include <rexx/rxslib.h>
  84. #include <rexx/storage.h>
  85. #endif /* AREXX */
  86.  
  87. #if MANX
  88. #include <functions.h>
  89. #undef NULL
  90. #define   NULL   ((void *)0)
  91. #endif /* MANX */
  92.  
  93. #define INTUITION_REV 1L
  94. #define GRAPHICS_REV  1L
  95.  
  96. /* things for xmodem send and recieve */
  97. #define GOODREAD    0
  98. #define TIMEOUT        1
  99. #define USERABORT   2
  100. #define SECSIZ   0x80
  101. #define TTIME_SHORT 5        /* number of seconds for short timeout */
  102. #define TTIME_LONG  50        /* number of seconds for long  timeout */
  103. #define TTIME_KERMIT 10        /* number of seconds for KERMIT timeout*/
  104. #define MAXLONGPKS 1000        /* Maximum long msgpkt size */
  105. #define BufSize  0x1080        /* Text buffer for XMODEM */
  106. #define ERRORMAX 10        /* Max errors before abort */
  107. #define RETRYMAX 10        /* Maximum retrys before abort */
  108. #define SOH      1        /* Start of sector char */
  109. #define EOT      4        /* end of transmission char */
  110. #define ACK      6        /* acknowledge sector transmission */
  111. #define NAK      21        /* error in transmission detected */
  112.  
  113. #define FILEMAX 6    /* number of file menu items */
  114. #define MODEMAX 4    /* number of mode menu items */
  115. #define EXTMAX 10    /* number of external xfer pgms allowed */
  116. #define COMMAX 4    /* number of communication sub menus */
  117. #define RSMAX 5        /* speed menu items */
  118. #define PARMAX 7    /* parity items */
  119. #define XFMAX 4        /* transfer mode items */
  120. #define SCRIPTMAX 3    /* script menu items */
  121. #define UTILMAX 12    /* utility menu */
  122. #define MAXMENU 4    /* total number of menu entries */
  123.  
  124. #define MAXGADSTR 80    /* Max size of prompts and inputs */
  125.  
  126. #define FSF_REVERSE 256    /* fake font style to flag INVERSVID mode */
  127.  
  128. #define FONTNAMESIZE    40
  129. #define FONTSUFFIX    ".font"
  130. #define MAXFONTVARLEN    34    /* 40 minus sizeof(".font") */
  131.  
  132. extern char myfontname[];
  133.  
  134. #define SERNAMESIZE    80
  135.  
  136. extern char mysername[];
  137.  
  138.  
  139. /*   Structure to hold the external xfer program names and command strings */
  140. struct ExternalXfer {
  141.     char *dispname;        /* Display name - shown on menu */
  142.     char *downname;        /* downcased name for cmd_short() */
  143.     char *send;            /* Command string to use for send */
  144.     char *receive;        /* Command string to use for receive */
  145.     char cmdkey;        /* Command key equivalent */
  146. };
  147.  
  148. extern struct ExternalXfer *(ExtXfer[EXTMAX]);    /* Defined in vt100.c */
  149. extern int NumExts;                /* Number of ExtXfers */
  150.  
  151. /* things for script support */
  152.  
  153. #define GOTOLABEL   1
  154. #define    NEXTCOMMAND 0
  155. #define ONCOMMAND   2
  156.  
  157. #define    WAIT_TIMER  2
  158. #define WAIT_STRING 1
  159.  
  160. /* exe_cmd return values */
  161. #define CMDOK        0    /* Command OK                */
  162. #define CMDWARN        5    /* Command issued WARNING msg        */
  163. #define CMDNF        10    /* Command Not Found            */
  164. #define CMDBS        11    /* Bad State (e.g. INIT only)        */
  165. #define CMDFAIL        13    /* Command failed            */
  166.  
  167. /* things for 'beep' support */
  168. #define BEEPSIZE    10L
  169. #define BEEPFREQ    1000L
  170. #define COLORCLOCK  3579545L
  171.  
  172. /* things for MENUPICK support */
  173. #define REDOFILE    1
  174. #define REDOCOMM    2
  175. #define REDOUTIL    4
  176.  
  177. extern struct    MsgPort *CreatePort();
  178.  
  179. extern int        CmdFromRexx;    /* Command came from the AREXX port    */
  180.  
  181. #if AREXX
  182. extern struct RexxMsg *CreateRexxMsg();
  183. extern STRPTR    *CreateArgstring();
  184. extern struct MsgPort    *FromRexxPort;    /* Port we receive AREXX msgs on    */
  185.  
  186. #define HOSTNAMEROOT "VT100-"
  187.  
  188. /*   Indices into rexxerrmsgs[] in init.c  */
  189.  
  190. #define NORXLIB        1        /* No AREXX library        */
  191. #define NORXPORT    2        /* No AREXX port        */
  192. #define NORXMSG        3        /* Can't create AREXX message    */
  193. #define NOHOSTMEM    4        /* Can't get memory for HostName*/
  194. #define HAVEVT100PORT    5        /* VT100 port already exists    */
  195. #define NOPORTMEM    6        /* Can't get mem for a port    */
  196.  
  197. extern char *rexxerrmsgs[];        /* in init.c            */
  198. extern int makerexxport();        /* in init.c            */
  199.  
  200. extern char        *HostName;    /* Our host port name for AREXX        */
  201. extern char        *ForwardPortName; /* Port to which to forward data    */
  202. extern int        forwarding;    /* Flag to indicate if we should fwd    */
  203. #endif /* AREXX */
  204.  
  205. #if MANX
  206. extern char    *malloc(),*strcpy(),*fgets();
  207. #endif /* MANX */
  208.  
  209. extern long    ftell();
  210.  
  211. extern int    multi;            /* flags multi file transfers */
  212. extern int    server;
  213. extern char     *bufr;            /* Buffer that XMODEM uses */
  214. extern int    fd, timeout, ttime;
  215. extern long    bytes_xferred;
  216. extern char    MyDir[60];
  217. extern BPTR    StartLock;
  218. extern struct    IntuitionBase *IntuitionBase;
  219. extern struct    GfxBase *GfxBase;
  220. extern struct    Library *DiskfontBase;
  221.  
  222. #if AREXX
  223. extern struct RxsLib *RexxSysBase;
  224. #endif /* AREXX */
  225.  
  226. extern struct    TextAttr myattr;
  227. extern struct    TextFont *myfont;
  228. extern struct    NewScreen NewScreen;
  229. extern struct    NewWindow NewWindow;
  230. extern struct    NewWindow NewReqWindow;
  231. extern struct    Screen *myscreen;
  232. extern struct    Window *mywindow;
  233. extern struct    Window *reqwindow;
  234. extern struct    ViewPort *myviewport;
  235. extern struct    RastPort *myrastport;
  236. extern struct    IntuiMessage *NewMessage;
  237. extern struct    Preferences  *Prefs;
  238. extern char    InpBuf[80],UndoBuf[80],Prompt[80];
  239. extern struct    StringInfo mystrinfo;
  240. extern struct    Gadget     mystrgad;
  241. extern struct    IntuiText  donetxt;
  242. extern struct    Gadget       mydonegad;
  243. extern struct    IntuiText  mystrtxt;
  244. extern struct    Requester  myrequest;
  245. extern int    numreqs;
  246. extern int    reqwinup;
  247. extern struct    MenuItem FileItem[FILEMAX];
  248. extern struct    IntuiText FileText[FILEMAX];
  249. extern struct    MenuItem ModeItem[MODEMAX+EXTMAX];
  250. extern struct    IntuiText ModeText[MODEMAX+EXTMAX];
  251. extern struct    MenuItem CommItem[COMMAX];
  252. extern struct    IntuiText CommText[COMMAX];
  253. extern struct    MenuItem RSItem[RSMAX];
  254. extern struct    IntuiText RSText[RSMAX];
  255. extern struct    MenuItem ParItem[PARMAX];
  256. extern struct    IntuiText ParText[PARMAX];
  257. extern struct    MenuItem XFItem[XFMAX];
  258. extern struct    IntuiText XFText[XFMAX];
  259. extern struct    MenuItem ScriptItem[SCRIPTMAX];
  260. extern struct    IntuiText ScriptText[SCRIPTMAX];
  261. extern struct    MenuItem UtilItem[UTILMAX];
  262. extern struct    IntuiText UtilText[UTILMAX];
  263. extern struct    Menu menu[MAXMENU];
  264. extern struct    timerequest Timer, Script_Timer;
  265. extern struct    MsgPort *Timer_Port, *Script_Timer_Port;
  266. extern struct    IOExtSer *Read_Request;
  267. extern char    *rs_in;
  268. extern struct    IOExtSer *Write_Request;
  269. extern char    rs_out[2];
  270. extern int    x,y,curmode;
  271. extern int    Xsize, MINX,MAXX,Ysize,MINY,MAXY,BaseLine,top,bot,savx,savy;
  272. extern int    savmode,nlmode,alt,savalt,a[2],sa[2];
  273. extern int    inesc,inctrl,private,badseq,maxcol;
  274. extern struct    IOAudio Audio_Request;
  275. extern struct    MsgPort *Audio_Port;
  276. extern UBYTE    *BeepWave;
  277. extern UBYTE    Audio_AllocMap[4];
  278. extern int    p_baud,p_screen,p_interlace,p_depth,p_buffer,p_wbcolors;
  279. extern int    p_foreground,p_background,p_bold,p_cursor,p_lines,p_mode;
  280. extern int    p_parity,p_volume,p_wrap,p_echo,p_keyapp,p_curapp,p_bs_del;
  281. extern int    p_xbeep, p_xproto, p_convert,p_autochop, p_kmaxpack, p_unit;
  282. extern int      p_fontsize, p_shared, p_mouse_up, p_mouse_down, p_strip;
  283. extern char    p_keyscript;
  284. extern long    p_break;
  285. extern char    *p_font, *p_device, *p_f[11],*p_F[10];
  286. extern int    script_on;
  287. extern int    script_wait;
  288. extern int    doing_init;
  289.  
  290. /* vt100.c */
  291. extern int  do_send(),do_capture();
  292. extern void cleanup();
  293. extern ULONG handle_menupick();
  294. extern void setserpar(), setserbaud(), setparams(), redoutil(), redofile(),
  295.         redocomm();
  296.  
  297. /* init.c */
  298. extern void InitDevs(),InitFileItems(),InitCommItems(),
  299.      InitScriptItems(),InitUtilItems(),InitMenu();
  300. extern char *InitDefaults();
  301. extern int maxrows;    /* number of scan lines available */
  302.  
  303. /* window.c */
  304. extern    void    swap_bs_del(),req(),emits(),emit(),emitbatch(),cursorflip();
  305. extern    int    toasc();
  306. extern void    ScrollInfoMsg(), InfoMsgNoScroll(), InfoMsg1Line(),
  307.         InfoMsg2Line();
  308.  
  309. /* xmodem.c */
  310. extern    void sendchar(),sendstring(),sendbreak(),multi_xfer(),
  311.     No_XON(),Do_XON();
  312. extern    int  readchar(),XMODEM_Read_File(),XMODEM_Send_File();
  313.  
  314. /* remote.c */
  315. extern    void doremote(),doindex(),doctrl(),doesc(),doerase();
  316.  
  317. /* kermit.c */
  318. extern    int    doksend(), dokreceive();
  319. extern    void    encode(), decode(), rpar(), spar(), saybye();
  320.  
  321. /* script.c */
  322. extern int    script_start(), chk_script(),
  323.         do_script_cmd();
  324. extern char    *next_wrd(), *tostring();
  325. extern int    exit_script(), do_ext();
  326.  
  327.         /* init commands */
  328. extern int    cmd_bkg(), cmd_bold(), cmd_buf(), cmd_cursor(), cmd_depth(),
  329.         cmd_device(), cmd_display(), cmd_fore(), cmd_font(),
  330.         cmd_fonts(), cmd_inter(), cmd_lines(), cmd_screen(),
  331.         cmd_unit(), cmd_volume(), cmd_wb(), cmd_null(),
  332.  
  333.         /* script commands */
  334.         cmd_as(), cmd_beep(), cmd_cap(), cmd_cd(), cmd_delay(),
  335.         cmd_goto(), cmd_goto(), cmd_kb(), cmd_kg(), cmd_kr(),
  336.         cmd_ks(), cmd_msg(), cmd_on(), cmd_recf(), cmd_sb(),
  337.         cmd_send(), cmd_sendf(), cmd_wait(), cmd_xr(), cmd_xs(),
  338.  
  339.         /* init and script commands */
  340.         cmd_ac(), cmd_appcur(), cmd_baud(), cmd_bt(), cmd_conv(),
  341.         cmd_echo(), cmd_exit(), cmd_ext(), cmd_fnc(), cmd_key(),
  342.         cmd_kmode(), cmd_kmaxpk(), cmd_mode(), cmd_mouse(),
  343.         cmd_numkey(), cmd_parity(), cmd_strip(), cmd_share(),
  344.         cmd_short(), cmd_swap(), cmd_wrap(), cmd_xbeep(),
  345.         cmd_xproto();
  346.  
  347.         /* rexx-only commands */
  348. extern int    cmd_rx(), cmd_fwd();
  349.  
  350. /* expand.c */
  351. extern char **expand();
  352. extern void set_dir(), free_expand();
  353.