/* Copyright (c) 1990,1991,1992,1993 Chris and John Downey */

/***

* program name:
    xvi
* function:
    Portable version of UNIX "vi" editor, with extensions.
* module name:
    tos.h
* module function:
    Definitions for TOS system interface module.
* history:
    STEVIE - ST Editor for VI Enthusiasts, Version 3.10
    Originally by Tim Thompson (twitch!tjt)
    Extensive modifications by Tony Andrews (onecom!wldrdg!tony)
    Heavily modified by Chris & John Downey
    Last modified by Martin Guy

***/

#ifndef	HELPFILE
#   define  HELPFILE	"c:\\bin\\help.xvi"
#endif

/*
 * System-dependent constants
 */

/*
 * These numbers may not be right for TOS; who knows?
 */
#define	MAXPATHLEN	79	/* maximum length of full path name */
#define	MAXNAMLEN	12	/* maximum length of file name */
#define	DIRSEPS		"\\"

extern	int		Rows;			/* size of screen */
extern	int		Columns;

/*
 * Default file format.
 */
#define DEF_TFF		fmt_TOS

/*
 * No need to flush output - it has already happened.
 */
#define	flush_output()

/*
 * Terminal driving functions.
 */
#define	erase_line()	outstr("\033K")	/* erase to end of line */
#define	insert_a_line()	outstr("\033L")	/* insert one line */
#define	delete_a_line()	outstr("\033M")	/* delete one line */
#define	erase_display()	outstr("\033E")	/* erase display */
#define	invis_cursor()	outstr("\033f")	/* invisible cursor */
#define	vis_cursor()	outstr("\033e")	/* visible cursor */
#define	scroll_up(x, y, z)	st_scroll((x),(y),(z))	/* scroll up area */
#define	scroll_down(x, y, z)	st_scroll((x),(y),-(z))	/* scroll down area */

#define	cost_goto	8			/* cost of using tty_goto() */
#define	can_ins_line	TRUE
#define	can_del_line	TRUE
/*
 * tty_linefeed() isn't needed if can_del_line is TRUE.
 */
#define tty_linefeed()

#define	can_scroll_area	TRUE

#define	can_inschar	FALSE
#define	inschar(c)

/*
 * Colour handling: just b/w on Ataris at the moment.
 */
#define	DEF_COLOUR	"0"
#define	DEF_STCOLOUR	"1"
#define	DEF_SYSCOLOUR	"0"

/*
 * Macros to open files in binary mode,
 * and to expand filenames.
 */
#define fopenrb(f)	fopen((f), "rb")
#define fopenwb(f)	fopen((f), "wb")
#define	fexpand(f, c)	(f)

#define	subshells	TRUE
#define call_system(s)	system(s)
#define call_shell(s)	forkl((s), (char *) NULL)

/*
 * Declarations for system interface routines in tos.c.
 */
extern	int		inchar(long);
extern	void		outchar(char);
extern	void		outstr(char *);
extern	void		alert(void);
#ifndef LATTICE
    extern  bool_t	remove(char *);
#endif
extern	bool_t		can_write(char *);
extern	void		sys_init(void);
extern	void		sys_startv(void);
extern	void		sys_endv(void);
extern	void		sys_exit(int);
extern	void		tty_goto(int, int);
extern	void		Wait200ms(void);
extern  void		sleep(unsigned);
extern  void		set_colour(int);
extern  char		*tempfname(char *);
