
/*
 * DEFS.H
 *
 *	(C)Copyright 1987 by Matthew Dillon, All Rights Reserved
 *
 *	ARexx support added 03/19/88  -  Kim DeVaughn
 *
 */

#define AREXX 1

#include <exec/types.h>
#include <exec/memory.h>
#include <exec/ports.h>
#include <libraries/dos.h>
#include <libraries/dosextens.h>
#include <intuition/intuition.h>
#include <intuition/intuitionbase.h>
#include <devices/keymap.h>
#include <devices/console.h>

/*
 *  Need the prototypes for inline library call pragmas so we don't
 *  need to reference amiga.lib which has absolute references to
 *  various variables (can't have absolutes for a residentable program)
 */

#include <proto/all.h>

#ifdef LATTICE
#include <string.h>
#include <stdlib.h>
#endif

/*#include <workbench/icon.h>*/
#include <workbench/startup.h>
#include <workbench/workbench.h>

#if AREXX
#include "rexx/storage.h"
#include "rexx/rxslib.h"
#include "rexx/rexxio.h"
#include "rexx/errors.h"
#endif

#define MAXTOGGLE   256
#define QMOVE	    (0x6B|0x80)

#define COLT(n)  (XTbase + (n) * Xsize)
#define ROWT(n)  (YTbase + (n) * Ysize)
#define COL(n)   (Xbase  + (n) * Xsize)
#define ROW(n)   (Ybase  + (n) * Ysize)

#ifdef LATTICE
#define ARGS(args)  args        /*  ANSI-C                  */
#define reg			/*  let lattice pick regs   */
#else
#define ARGS(args)  ()          /*  no prototypes           */
#define __stdargs		/*  no lattice keywords     */
#define __saveds
#define reg register		/*  req program pick regs   */
#endif

typedef unsigned char	ubyte;
typedef unsigned short	uword;
typedef unsigned long	ulong;
typedef struct MinNode	MNODE;
typedef struct Node	NODE;
typedef struct MinList	MLIST;
typedef struct List	LIST;
typedef struct MsgPort	PORT;
typedef struct Window	WIN;
typedef struct Message	MSG;
typedef struct TextAttr 	TA;
typedef struct TextFont 	FONT;
typedef struct RastPort RP;
typedef struct FileInfoBlock FIB;
typedef struct Process PROC;
typedef struct IntuiMessage IMESS;
typedef struct IntuitionBase	IBASE;
typedef struct Menu	MENU;
typedef struct MenuItem ITEM;
typedef struct IntuiText	ITEXT;


typedef struct WBStartup  WBS;
typedef struct DiskObject DISKOBJ;


extern WBS	*Wbs;

extern short Xsize, Ysize;
extern short XTbase, YTbase;
extern short Rows, Columns;
extern short Xbase, Ybase;
extern short Xpixs, Ypixs;
extern ubyte *av[];
extern char Wdisable;

typedef struct _ED {
    MNODE Node;
    WIN *Win;
    FONT *Font; 	    /*	da font, da font!		    */
    long Topline, Topcolumn;
    long Line, Column;
    long Lines, Maxlines;
    ubyte **List;
    ubyte Name[64];
    ubyte Wtitle[130];
    char Modified;
    ubyte Tabstop;
    ubyte Margin;
    char Insertmode;
    char IgnoreCase;
    char Wordwrap;
    char iconmode;	    /*	window in icon mode		    */
    short Winx; 	    /*	save state of non-icon window	    */
    short Winy;
    short Winwidth;
    short Winheight;
    short IWinx, IWiny;     /*	save state of icon window	    */
    long  dirlock;	    /* directory lock			    */
} ED;

extern long  BSline, BEline;
extern short BSchar, BEchar;
extern ED    *BEp;


#ifndef NULL
#define NULL 0
#endif
#ifdef E
#undef E
#endif

extern MLIST DBase;
extern MLIST PBase;
extern ED    *Ep;

extern char	Overide;
extern char	Savetabs;
extern char	memoryfail, Nsu, Msgchk;
extern ubyte	CtlC;
extern ubyte	Current[256];
extern ubyte	Space[32];
extern short	Clen;
extern char	Abortcommand, MShowTitle;
extern char	Comlinemode;
extern RP	*Rp;
extern WIN	*Win;
extern char	*Partial;
extern char	*String;

extern long	Dirlock;

extern PORT	*IPCPort;
extern long	DResBase;

/*
 *  PROTOTYPES
 */

/* external protos  */

extern void	*xfopen ARGS((char *, char *, long));

/* Prototypes for functions defined in cmd1.c */

void escapecomlinemode ARGS((void));
void setpen ARGS((int));
void text_cursor ARGS((int));
int text_init ARGS((void));
int text_switch ARGS((struct Window *));
int text_sync ARGS((void));
int text_load ARGS((void));
int text_colno ARGS((void));
int text_lineno ARGS((void));
int text_lines ARGS((void));
int text_cols ARGS((void));
int text_imode ARGS((void));
int text_tabsize ARGS((void));
unsigned char *text_name ARGS((void));
void text_uninit ARGS((void));
void inversemode ARGS((int));
void text_position ARGS((int, int));
void displayblock ARGS((int));
void text_redrawblock ARGS((int));
void text_redisplaycurrline ARGS((void));
void text_redisplay ARGS((void));
void text_write ARGS((unsigned char *));
void text_displayseg ARGS((int, int));
void movetocursor ARGS((void));
void do_up ARGS((void));
void do_scrolldown ARGS((void));
void do_scrollup ARGS((void));
void do_down ARGS((void));
void do_page ARGS((void));
void do_downadd ARGS((void));
void do_left ARGS((void));
void do_right ARGS((void));
void do_col ARGS((void));
void do_tab ARGS((void));
void do_backtab ARGS((void));
void do_return ARGS((void));
void do_bs ARGS((void));
void do_recall ARGS((void));
void do_esc ARGS((void));
void do_del ARGS((void));
void do_top ARGS((void));
void do_bottom ARGS((void));
void do_firstcolumn ARGS((void));
void do_firstnb ARGS((void));
void do_lastcolumn ARGS((void));
void do_goto ARGS((void));
void do_screentop ARGS((void));
void do_screenbottom ARGS((void));
void do_findstr ARGS((void));
void do_findr ARGS((void));
void do_find ARGS((void));
void search_operation ARGS((void));
int case_strncmp ARGS((char *, char *, int));

/* Prototypes for functions defined in cmd2.c */

struct _ED *uninit_init ARGS((struct _ED *));
void do_remeol ARGS((void));
void do_wleft ARGS((void));
void do_wright ARGS((void));
void do_split ARGS((void));
int do_join ARGS((void));
void do_margin ARGS((void));
void do_wordwrap ARGS((void));
void do_reformat ARGS((int));
void do_tabstop ARGS((void));
void do_insertmode ARGS((void));
void do_insline ARGS((void));
void do_deline ARGS((void));
void do_chfilename ARGS((void));
void do_edit ARGS((void));
void do_bsave ARGS((void));
void do_save ARGS((void));
void do_saveas ARGS((void));
void do_savetabs ARGS((void));
void do_block ARGS((void));
int blockok ARGS((void));
void do_bdelete ARGS((void));
void do_bcopy ARGS((void));
void do_bmove ARGS((void));
void do_if ARGS((void));
int do_toggle ARGS((int));
void do_tlate ARGS((void));
void do_bsource ARGS((void));
void do_scanf ARGS((void));
int extend ARGS((struct _ED *, int));
int makeroom ARGS((int));
void freelist ARGS((char **, int));

/* Prototypes for functions defined in cmd3.c */

void do_setfont ARGS((void));
void do_ignorecase ARGS((void));
void do_cd ARGS((void));
void do_set ARGS((void));
void do_setenv ARGS((void));
void do_unset ARGS((void));
void do_unsetenv ARGS((void));
char *getvar ARGS((char *));

/* Prototypes for functions defined in command.c */
void init_command ARGS((void));
int do_command ARGS((char *));
void do_null ARGS((void));
void do_source ARGS((void));
void do_quit ARGS((void));
void do_execute ARGS((void));
void do_repeat ARGS((void));
char *breakout ARGS((char **, char *, char **));

/* Prototypes for functions defined in filereq.c */

void do_arpinsfile ARGS((void));
void do_arpload ARGS((void));
void do_arpsave ARGS((void));
void fixfile ARGS((char *, char *));
void splitpath ARGS((char *, char *, char *));

/* Prototypes for functions defined in globals.c */

/* Prototypes for functions defined in keyboard.c */
void keyctl ARGS((struct IntuiMessage *, int, unsigned short));
void dealloc_hash ARGS((void));
void resethash ARGS((void));
int returnoveride ARGS((int));
void addhash ARGS((ubyte, ubyte, ubyte, ubyte, ubyte *));
int remhash ARGS((ubyte, ubyte, ubyte));
char *keyspectomacro ARGS((char *));
void do_map ARGS((void));
void do_unmap ARGS((void));
void do_clearmap ARGS((void));
void do_savemap ARGS((void));
void keyboard_init ARGS((void));
unsigned char *cqtoa ARGS((int, int));
int get_codequal ARGS((ubyte *, ubyte *, ubyte *));

/* Prototypes for functions defined in main.c */

void ipchandler ARGS((void));
void initipc ARGS((void));
void do_ipc ARGS((void));
void do_iconify ARGS((void));
void do_tomouse ARGS((void));
void iconify ARGS((void));
void uniconify ARGS((void));
void do_newwindow ARGS((int, int));
struct Window *TOpenWindow ARGS((struct NewWindow *));
struct Window *opensharedwindow ARGS((struct NewWindow *));
void closesharedwindow ARGS((struct Window *));
int getyn ARGS((char *));
void title ARGS((char *));
void window_title ARGS((void));
void set_window_params ARGS((void));
void exiterr ARGS((char *));
int breakcheck ARGS((void));
void breakreset ARGS((void));
void do_windowparm ARGS((void));
void do_resize ARGS((void));
int ops ARGS((char **, int));

/* Prototypes for functions defined in menu.c */

void menu_strip ARGS((struct Window *));
void menu_off ARGS((void));
void menu_on ARGS((void));
void do_menuoff ARGS((void));
void do_menuon ARGS((void));
char *menutomacro ARGS((char *));
char *menu_cmd ARGS((struct IntuiMessage *));
void fixmenu ARGS((void));
void do_menuclear ARGS((void));
void do_menuadd ARGS((void));
void do_menudelhdr ARGS((void));
int do_menudel ARGS((void));

/* Prototypes for functions defined in mods.c */
void PMAdd ARGS((void));
void PMRem ARGS((void));
void PMKill ARGS((struct _ED *));
int do_pushmark ARGS((void));
void do_popmark ARGS((void));
void do_swapmark ARGS((void));
void do_purgemark ARGS((void));
void do_ping ARGS((void));
void do_pong ARGS((void));
void do_undo ARGS((void));

/* Prototypes for functions defined in refs.c */
void do_addpath ARGS((void));
void do_rempath ARGS((void));
void do_ctags ARGS((void));
void do_refs ARGS((void));
int searchref ARGS((char *, char *, char **, char **, int *, char **));
int dirpart ARGS((char *));

/* Prototypes for functions defined in rexx.c */
void openrexx ARGS((void));
void closerexx ARGS((void));
void do_rx ARGS((void));
void do_rx1 ARGS((void));
void do_rx2 ARGS((void));
void do_rxImplied ARGS((char *, char *));
int do_rexx ARGS((char *));

/* Prototypes for functions defined in subs.c */
void makemygadget ARGS((struct Gadget *));
int firstns ARGS((char *));
int lastns ARGS((char *));
int wordlen ARGS((char *));
int getpathto ARGS((char *, char *));
void *allocb ARGS((int));
void *allocl ARGS((int));
void bmovl ARGS((void *, void *, long));
int detab ARGS((char *, char *, int));
int xefgets ARGS((void *, char *, int));
int ncstrcmp ARGS((unsigned char *, unsigned char *));
struct _ED *finded ARGS((char *, int));

extern __stdargs int arpreq ARGS((char *, char *, char *, WIN *));

