|
|
1.1 ! root 1: /* ! 2: * Model 5620 DMD ! 3: */ ! 4: #ifndef JERQ_H ! 5: #define JERQ_H ! 6: #include <sys/2681.h> ! 7: #line 31416 ! 8: ! 9: #define DUART ((struct duart *)0x200000) ! 10: #define TVIDEO (DUART->scc_sopbc = 0x02) ! 11: #define RVIDEO (DUART->scc_ropbc = 0x02) ! 12: #define BonW() RVIDEO ! 13: #define WonB() TVIDEO ! 14: #define DADDR ((unsigned short *)(0x500000)) /* display base address/4 */ ! 15: #define YMOUSE ((short *)(0x400000)) ! 16: #define XMOUSE ((short *)(0x400002)) ! 17: #define WORDSHIFT 5 ! 18: #define WORDSIZE 32 ! 19: #define WORDMASK (WORDSIZE-1) ! 20: #define ONES 0xFFFFFFFF ! 21: #define FIRSTBIT ((unsigned)0x80000000) ! 22: #define LASTBIT ((unsigned)0x1) ! 23: #define XMAX 800 ! 24: #define YMAX 1024 ! 25: ! 26: /* ! 27: * Graphics definitions ! 28: */ ! 29: ! 30: typedef int Word; /* 32 bits */ ! 31: ! 32: typedef unsigned int UWord; /* 32 bits */ ! 33: ! 34: class Rectangle; ! 35: ! 36: class Point { ! 37: public: ! 38: short x,y; ! 39: Point(){} ! 40: Point(int u, int v) {x=u; y=v;} ! 41: Point operator-() {return Point(-x,-y);} ! 42: Point operator+(Point p) {return Point(x+p.x,y+p.y);} ! 43: Point operator-(Point p) {return Point(x-p.x,y-p.y);} ! 44: Point operator*(int i) {return Point(x*i,y*i);} ! 45: Point operator/(int i) {return Point(x/i,y/i);} ! 46: Point operator%(int i) {return Point(x%i,y%i);} ! 47: Point operator&(int i) {return Point(x&i,y&i);} ! 48: Point operator+=(Point p) {return Point(x+=p.x,y+=p.y);} ! 49: Point operator-=(Point p) {return Point(x-=p.x,y-=p.y);} ! 50: int operator==(Point p) {return x==p.x && y==p.y;} ! 51: int operator!=(Point p) {return x!=p.x || y!=p.y;} ! 52: int operator>=(Point p) {return x>=p.x && y>=p.y;} ! 53: int operator<=(Point p) {return x<=p.x && y<=p.y;} ! 54: int operator>(Point p) {return x>p.x && y>p.y;} ! 55: int operator<(Point p) {return x<p.x && y<p.y;} ! 56: inline int operator<(Rectangle); ! 57: inline int operator<=(Rectangle); ! 58: inline int operator>(Rectangle); ! 59: }; ! 60: ! 61: class Rectangle { ! 62: public: ! 63: Point o,c; /* origin, corner */ ! 64: Rectangle(){} ! 65: Rectangle(Point p, Point q) {o=p; c=q;} ! 66: Rectangle(int x, int y, int u, int v) {o.x=x; o.y=y; c.x=u; c.y=v;} ! 67: Rectangle operator+(Point p) {return Rectangle(o+p,c+p);} ! 68: Rectangle operator-(Point p) {return Rectangle(o-p,c-p);} ! 69: Rectangle translate(Point p) {return Rectangle(p,c+(p-o));} ! 70: int operator<(Rectangle); ! 71: int operator<=(Rectangle); ! 72: Point center() {return (o+c)/2;} ! 73: Rectangle mbb(Point); /* assumes a sorted Rectangle */ ! 74: Rectangle mbb(Rectangle); /* ditto for argument */ ! 75: }; ! 76: inline int Point.operator<(Rectangle r) {return *this>r.o && *this<r.c;} ! 77: inline int Point.operator<=(Rectangle r) {return *this>=r.o && *this<=r.c;} ! 78: inline int Point.operator>(Rectangle r) {return !(*this<=r);} ! 79: inline int Rectangle.operator<(Rectangle r) {return o<r && c<r;} ! 80: inline int Rectangle.operator<=(Rectangle r) {return o<=r && c<=r;} ! 81: ! 82: class Bitmap { ! 83: public: ! 84: Word *base; /* Pointer to start of data */ ! 85: unsigned width; /* width in 32 bit words of total data area */ ! 86: Rectangle rect; /* Rectangle in data area, local coords */ ! 87: char *_null; /* unused, always zero */ ! 88: Bitmap(Word *b, int w, Rectangle r) {base=b; width=w; rect=r;} ! 89: Bitmap(Rectangle r) {rect = r;} ! 90: }; ! 91: ! 92: class Menu { ! 93: public: ! 94: char **item; /* string array, ending with 0 */ ! 95: char *(*generator)(int); /* used if item == 0 */ ! 96: short prevhit; /* private to menuhit() */ ! 97: short prevtop; /* private to menuhit() */ ! 98: }; ! 99: ! 100: class Texture32 { ! 101: public: ! 102: short bits[64]; ! 103: }; ! 104: ! 105: class Texture { ! 106: public: ! 107: short bits[16]; ! 108: }; ! 109: ! 110: class Layer; ! 111: class Font; ! 112: ! 113: extern struct Mouse { ! 114: Mouse() {} ! 115: Point xy; ! 116: short buttons; ! 117: } mouse; ! 118: ! 119: #define button(i) (mouse.buttons&(8>>i)) ! 120: #define button1() (mouse.buttons&4) ! 121: #define button2() (mouse.buttons&2) ! 122: #define button3() (mouse.buttons&1) ! 123: #define button12() (mouse.buttons&6) ! 124: #define button13() (mouse.buttons&5) ! 125: #define button23() (mouse.buttons&3) ! 126: #define button123() (mouse.buttons&7) ! 127: ! 128: Rectangle getrectb(), getrect(); ! 129: #define getrect1() getrectb(4) ! 130: #define getrect2() getrectb(2) ! 131: #define getrect3() getrectb(1) ! 132: #define getrect12() getrectb(6) ! 133: #define getrect13() getrectb(5) ! 134: #define getrect23() getrectb(3) ! 135: #define getrect123() getrectb(7) ! 136: ! 137: #define Pt(x,y) Point(x,y) ! 138: #define Rect(x,y,u,v) Rectangle(x,y,u,v) ! 139: #define Rpt(p,q) Rectangle(p,q) ! 140: #define muldiv(a,b,c) ((long)((a)*((long)b)/(c))) ! 141: ! 142: extern Word topbits[], botbits[]; /* now full 32 bit words */ ! 143: extern Rectangle Jrect; ! 144: extern Bitmap display; ! 145: ! 146: /* ! 147: * Function Codes ! 148: */ ! 149: typedef int Code; ! 150: #define F_STORE ((Code) 0) /* target = source */ ! 151: #define F_OR ((Code) 1) /* target |= source */ ! 152: #define F_CLR ((Code) 2) /* target &= ~source */ ! 153: #define F_XOR ((Code) 3) /* target ^= source */ ! 154: #define NULL ((char *)0) ! 155: #define KBD 1 ! 156: #define SEND 2 ! 157: #define MOUSE 4 ! 158: #define RCV 8 ! 159: #define CPU 16 ! 160: #define ALARM 32 ! 161: ! 162: #define ringbell() DUART->b_data=0x08,nap(3),DUART->b_data=0 ! 163: ! 164: #ifdef MUX ! 165: #include <CC/mux.h> ! 166: extern Rectangle Drect; ! 167: #endif ! 168: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.