1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
|
/* Copyright (c) 1992 AT&T - All rights reserved. */
#define SAMTERM
#define RUNESIZE sizeof(Rune)
#define MAXFILES 256
#define NL 5
enum{
Up,
Down
};
typedef struct Text Text;
typedef struct Section Section;
typedef struct Rasp Rasp;
struct Section
{
long nrunes;
Rune *text; /* if null, we haven't got it */
Section *next;
};
struct Rasp
{
long nrunes;
Section *sect;
};
#define Untagged ((ushort)65535)
struct Text
{
Rasp rasp;
short nwin;
short front; /* input window */
ushort tag;
char lock;
Flayer l[NL]; /* screen storage */
};
enum Resource
{
Eextern = 0x08,
Ehost = 0x04,
RHost = Ehost,
RExtern = Eextern,
RKeyboard = Ekeyboard,
RMouse = Emouse
};
extern Text *text[];
extern uchar *name[];
extern ushort tag[];
extern int nname;
extern Cursor bullseye;
extern Cursor deadmouse;
extern Cursor lockarrow;
extern Cursor *cursor;
extern Flayer *which;
extern Flayer *work;
extern Text cmd;
extern Rune *scratch;
extern long nscralloc;
extern char lock;
extern char hasunlocked;
extern long snarflen;
extern Mouse mouse;
extern long modified;
Rune *gettext(Flayer*, long, ulong*);
void *alloc(ulong n);
void iconinit(void);
void getscreen(int, char**);
void initio(void);
void setlock(void);
void outcmd(void);
void rinit(Rasp*);
void startnewfile(int, Text*);
void cursorset(Point);
void getmouse(void);
void mouseunblock(void);
void kbdblock(void);
void extstart(void);
int button(int but);
int load(char*, int);
int waitforio(void);
int rcvchar(void);
int getch(void);
int kbdchar(void);
int qpeekc(void);
void mouseexit(void);
void cut(Text*, int, int, int);
void paste(Text*, int);
void snarf(Text*, int);
int center(Flayer*, long);
int xmenuhit(int, Menu*);
void buttons(int);
int getr(Rectangle*);
void current(Flayer*);
void duplicate(Flayer*, Rectangle, Font*, int);
void startfile(Text*);
void panic(char*);
void closeup(Flayer*);
void Strgrow(Rune**, long*, int);
int RESHAPED(void);
void reshape(void);
void rcv(void);
void type(Flayer*, int);
void menu2hit(void);
void menu3hit(void);
void scroll(Flayer*, int, int);
void hcheck(int);
void rclear(Rasp*);
int whichmenu(int);
void hcut(int, long, long);
void horigin(int, long);
void hgrow(int, long, long, int);
int hdata(int, long, uchar*, int);
int hdatarune(int, long, Rune*, int);
Rune *rload(Rasp*, ulong, ulong, ulong*);
void menuins(int, uchar*, Text*, int, int);
void menudel(int);
Text *sweeptext(int, int);
void setpat(char*);
void scrdraw(Flayer*, long tot);
int rcontig(Rasp*, ulong, ulong, int);
int rmissing(Rasp*, ulong, ulong);
void rresize(Rasp *, long, long, long);
void rdata(Rasp*, long, long, Rune*);
void rclean(Rasp*);
void scrorigin(Flayer*, int, long);
long scrtotal(Flayer*);
void flnewlyvisible(Flayer*);
char *rcvstring(void);
void Strcpy(Rune*, Rune*);
void Strncpy(Rune*, Rune*, long);
void flushtyping(int);
void dumperrmsg(int, int, int, int);
int screensize(int*,int*);
#include "../sam/mesg.h"
void outTs(Tmesg, int);
void outT0(Tmesg);
void outTl(Tmesg, long);
void outTslS(Tmesg, int, long, Rune*);
void outTsll(Tmesg, int, long, long);
void outTsl(Tmesg, int, long);
void outTsv(Tmesg, int, void*);
void outTv(Tmesg, void*);
void outstart(Tmesg);
void outcopy(int, uchar*);
void outshort(int);
void outlong(long);
void outvlong(void*);
void outsend(void);
|