xref: /plan9/sys/src/cmd/samterm/samterm.h (revision 73e742d79f6b0cfc24f3b01d7ade790955db63c2)
13e12c5d1SDavid du Colombier #define	SAMTERM
23e12c5d1SDavid du Colombier 
33e12c5d1SDavid du Colombier #define	RUNESIZE	sizeof(Rune)
43e12c5d1SDavid du Colombier #define	MAXFILES	256
57dd7cddfSDavid du Colombier #define	READBUFSIZE 8192
63e12c5d1SDavid du Colombier #define	NL	5
73e12c5d1SDavid du Colombier 
83e12c5d1SDavid du Colombier enum{
93e12c5d1SDavid du Colombier 	Up,
103e12c5d1SDavid du Colombier 	Down
113e12c5d1SDavid du Colombier };
123e12c5d1SDavid du Colombier 
133e12c5d1SDavid du Colombier typedef struct Text	Text;
143e12c5d1SDavid du Colombier typedef struct Section	Section;
153e12c5d1SDavid du Colombier typedef struct Rasp	Rasp;
167dd7cddfSDavid du Colombier typedef struct Readbuf Readbuf;
173e12c5d1SDavid du Colombier 
183e12c5d1SDavid du Colombier struct Section
193e12c5d1SDavid du Colombier {
203e12c5d1SDavid du Colombier 	long	nrunes;
213e12c5d1SDavid du Colombier 	Rune	*text;		/* if null, we haven't got it */
223e12c5d1SDavid du Colombier 	Section	*next;
233e12c5d1SDavid du Colombier };
243e12c5d1SDavid du Colombier 
253e12c5d1SDavid du Colombier struct Rasp
263e12c5d1SDavid du Colombier {
273e12c5d1SDavid du Colombier 	long	nrunes;
283e12c5d1SDavid du Colombier 	Section	*sect;
293e12c5d1SDavid du Colombier };
303e12c5d1SDavid du Colombier 
313e12c5d1SDavid du Colombier #define	Untagged	((ushort)65535)
323e12c5d1SDavid du Colombier 
333e12c5d1SDavid du Colombier struct Text
343e12c5d1SDavid du Colombier {
353e12c5d1SDavid du Colombier 	Rasp	rasp;
363e12c5d1SDavid du Colombier 	short	nwin;
373e12c5d1SDavid du Colombier 	short	front;		/* input window */
383e12c5d1SDavid du Colombier 	ushort	tag;
393e12c5d1SDavid du Colombier 	char	lock;
403e12c5d1SDavid du Colombier 	Flayer	l[NL];		/* screen storage */
413e12c5d1SDavid du Colombier };
423e12c5d1SDavid du Colombier 
437dd7cddfSDavid du Colombier struct Readbuf
447dd7cddfSDavid du Colombier {
457dd7cddfSDavid du Colombier 	short	n;					/* # bytes in buf */
467dd7cddfSDavid du Colombier 	uchar	data[READBUFSIZE];		/* data bytes */
477dd7cddfSDavid du Colombier };
487dd7cddfSDavid du Colombier 
493e12c5d1SDavid du Colombier enum Resource
503e12c5d1SDavid du Colombier {
517dd7cddfSDavid du Colombier 	RHost,
527dd7cddfSDavid du Colombier 	RKeyboard,
537dd7cddfSDavid du Colombier 	RMouse,
547dd7cddfSDavid du Colombier 	RPlumb,
557dd7cddfSDavid du Colombier 	RResize,
567dd7cddfSDavid du Colombier 	NRes,
573e12c5d1SDavid du Colombier };
583e12c5d1SDavid du Colombier 
596b6b9ac8SDavid du Colombier extern Text	**text;
606b6b9ac8SDavid du Colombier extern uchar	**name;
616b6b9ac8SDavid du Colombier extern ushort	*tag;
623e12c5d1SDavid du Colombier extern int	nname;
636b6b9ac8SDavid du Colombier extern int	mname;
643e12c5d1SDavid du Colombier extern Cursor	bullseye;
653e12c5d1SDavid du Colombier extern Cursor	deadmouse;
663e12c5d1SDavid du Colombier extern Cursor	lockarrow;
673e12c5d1SDavid du Colombier extern Cursor	*cursor;
683e12c5d1SDavid du Colombier extern Flayer	*which;
693e12c5d1SDavid du Colombier extern Flayer	*work;
703e12c5d1SDavid du Colombier extern Text	cmd;
713e12c5d1SDavid du Colombier extern Rune	*scratch;
723e12c5d1SDavid du Colombier extern long	nscralloc;
737dd7cddfSDavid du Colombier extern char	hostlock;
743e12c5d1SDavid du Colombier extern char	hasunlocked;
753e12c5d1SDavid du Colombier extern long	snarflen;
767dd7cddfSDavid du Colombier extern Mousectl* mousectl;
777dd7cddfSDavid du Colombier extern Keyboardctl* keyboardctl;
787dd7cddfSDavid du Colombier extern Mouse*	mousep;
793e12c5d1SDavid du Colombier extern long	modified;
807dd7cddfSDavid du Colombier extern int	maxtab;
817dd7cddfSDavid du Colombier extern Readbuf	hostbuf[2];	/* double buffer; it's synchronous communication */
827dd7cddfSDavid du Colombier extern Readbuf	plumbbuf[2];	/* double buffer; it's synchronous communication */
837dd7cddfSDavid du Colombier extern Channel *plumbc;
847dd7cddfSDavid du Colombier extern Channel *hostc;
857dd7cddfSDavid du Colombier extern int	hversion;
867dd7cddfSDavid du Colombier extern int	plumbfd;
87cc81b63cSDavid du Colombier extern int	exiting;
88e7d29567SDavid du Colombier extern int	autoindent;
893e12c5d1SDavid du Colombier 
903e12c5d1SDavid du Colombier Rune	*gettext(Flayer*, long, ulong*);
913e12c5d1SDavid du Colombier void	*alloc(ulong n);
923e12c5d1SDavid du Colombier 
933e12c5d1SDavid du Colombier void	iconinit(void);
943e12c5d1SDavid du Colombier void	getscreen(int, char**);
953e12c5d1SDavid du Colombier void	initio(void);
963e12c5d1SDavid du Colombier void	setlock(void);
973e12c5d1SDavid du Colombier void	outcmd(void);
983e12c5d1SDavid du Colombier void	rinit(Rasp*);
993e12c5d1SDavid du Colombier void	startnewfile(int, Text*);
1003e12c5d1SDavid du Colombier void	getmouse(void);
1013e12c5d1SDavid du Colombier void	mouseunblock(void);
1023e12c5d1SDavid du Colombier void	kbdblock(void);
103bd389b36SDavid du Colombier void	extstart(void);
1047dd7cddfSDavid du Colombier void	hoststart(void);
1057dd7cddfSDavid du Colombier int	plumbstart(void);
1063e12c5d1SDavid du Colombier int	button(int but);
1073e12c5d1SDavid du Colombier int	load(char*, int);
1083e12c5d1SDavid du Colombier int	waitforio(void);
1093e12c5d1SDavid du Colombier int	rcvchar(void);
1103e12c5d1SDavid du Colombier int	getch(void);
1113e12c5d1SDavid du Colombier int	kbdchar(void);
1123e12c5d1SDavid du Colombier int	qpeekc(void);
1133e12c5d1SDavid du Colombier void	cut(Text*, int, int, int);
1143e12c5d1SDavid du Colombier void	paste(Text*, int);
1153e12c5d1SDavid du Colombier void	snarf(Text*, int);
1163e12c5d1SDavid du Colombier int	center(Flayer*, long);
1173e12c5d1SDavid du Colombier int	xmenuhit(int, Menu*);
1183e12c5d1SDavid du Colombier void	buttons(int);
1193e12c5d1SDavid du Colombier int	getr(Rectangle*);
1203e12c5d1SDavid du Colombier void	current(Flayer*);
1213e12c5d1SDavid du Colombier void	duplicate(Flayer*, Rectangle, Font*, int);
1223e12c5d1SDavid du Colombier void	startfile(Text*);
1233e12c5d1SDavid du Colombier void	panic(char*);
1247dd7cddfSDavid du Colombier void	panic1(Display*, char*);
1253e12c5d1SDavid du Colombier void	closeup(Flayer*);
1263e12c5d1SDavid du Colombier void	Strgrow(Rune**, long*, int);
1277dd7cddfSDavid du Colombier int	RESIZED(void);
1287dd7cddfSDavid du Colombier void	resize(void);
1293e12c5d1SDavid du Colombier void	rcv(void);
130bd389b36SDavid du Colombier void	type(Flayer*, int);
1313e12c5d1SDavid du Colombier void	menu2hit(void);
1323e12c5d1SDavid du Colombier void	menu3hit(void);
1333e12c5d1SDavid du Colombier void	scroll(Flayer*, int);
1343e12c5d1SDavid du Colombier void	hcheck(int);
1353e12c5d1SDavid du Colombier void	rclear(Rasp*);
1363e12c5d1SDavid du Colombier int	whichmenu(int);
1373e12c5d1SDavid du Colombier void	hcut(int, long, long);
1383e12c5d1SDavid du Colombier void	horigin(int, long);
1393e12c5d1SDavid du Colombier void	hgrow(int, long, long, int);
1403e12c5d1SDavid du Colombier int	hdata(int, long, uchar*, int);
1413e12c5d1SDavid du Colombier int	hdatarune(int, long, Rune*, int);
1423e12c5d1SDavid du Colombier Rune	*rload(Rasp*, ulong, ulong, ulong*);
1433e12c5d1SDavid du Colombier void	menuins(int, uchar*, Text*, int, int);
1443e12c5d1SDavid du Colombier void	menudel(int);
1453e12c5d1SDavid du Colombier Text	*sweeptext(int, int);
1463e12c5d1SDavid du Colombier void	setpat(char*);
1473e12c5d1SDavid du Colombier void	scrdraw(Flayer*, long tot);
1483e12c5d1SDavid du Colombier int	rcontig(Rasp*, ulong, ulong, int);
1493e12c5d1SDavid du Colombier int	rmissing(Rasp*, ulong, ulong);
1503e12c5d1SDavid du Colombier void	rresize(Rasp *, long, long, long);
1513e12c5d1SDavid du Colombier void	rdata(Rasp*, long, long, Rune*);
1523e12c5d1SDavid du Colombier void	rclean(Rasp*);
1533e12c5d1SDavid du Colombier void	scrorigin(Flayer*, int, long);
1543e12c5d1SDavid du Colombier long	scrtotal(Flayer*);
1553e12c5d1SDavid du Colombier void	flnewlyvisible(Flayer*);
1563e12c5d1SDavid du Colombier char	*rcvstring(void);
1573e12c5d1SDavid du Colombier void	Strcpy(Rune*, Rune*);
1583e12c5d1SDavid du Colombier void	Strncpy(Rune*, Rune*, long);
1593e12c5d1SDavid du Colombier void	flushtyping(int);
1603e12c5d1SDavid du Colombier void	dumperrmsg(int, int, int, int);
161219b2ee8SDavid du Colombier int	screensize(int*,int*);
1627dd7cddfSDavid du Colombier void	getmouse(void);
1633e12c5d1SDavid du Colombier 
1647dd7cddfSDavid du Colombier #include "mesg.h"
1653e12c5d1SDavid du Colombier 
1663e12c5d1SDavid du Colombier void	outTs(Tmesg, int);
1673e12c5d1SDavid du Colombier void	outT0(Tmesg);
1683e12c5d1SDavid du Colombier void	outTl(Tmesg, long);
1693e12c5d1SDavid du Colombier void	outTslS(Tmesg, int, long, Rune*);
1703e12c5d1SDavid du Colombier void	outTsll(Tmesg, int, long, long);
1713e12c5d1SDavid du Colombier void	outTsl(Tmesg, int, long);
172*73e742d7SDavid du Colombier void	outTsv(Tmesg, int, vlong);
173*73e742d7SDavid du Colombier void	outTv(Tmesg, vlong);
1743e12c5d1SDavid du Colombier void	outstart(Tmesg);
1753e12c5d1SDavid du Colombier void	outcopy(int, uchar*);
1763e12c5d1SDavid du Colombier void	outshort(int);
1773e12c5d1SDavid du Colombier void	outlong(long);
178*73e742d7SDavid du Colombier void	outvlong(vlong);
1793e12c5d1SDavid du Colombier void	outsend(void);
180