~kris/9p

9hist

379025b99598875130fb5a375c337b6106500a00 — David du Colombier 28 years ago 099e689
Plan 9 from Bell Labs 1998-02-09
6 files changed, 66 insertions(+), 47 deletions(-)

M carrera/screen.c
M carrera/screen.h
M pc/screen.c
M pc/screen.h
M pc/vgacyber938x.c
M port/devmouse.c
M carrera/screen.c => carrera/screen.c +14 -0
@@ 143,6 143,20 @@ Memimage	xback =
};
Memimage *back = &xback;

Cursor	arrow = {
	{ -1, -1 },
	{ 0xFF, 0xFF, 0x80, 0x01, 0x80, 0x02, 0x80, 0x0C, 
	  0x80, 0x10, 0x80, 0x10, 0x80, 0x08, 0x80, 0x04, 
	  0x80, 0x02, 0x80, 0x01, 0x80, 0x02, 0x8C, 0x04, 
	  0x92, 0x08, 0x91, 0x10, 0xA0, 0xA0, 0xC0, 0x40, 
	},
	{ 0x00, 0x00, 0x7F, 0xFE, 0x7F, 0xFC, 0x7F, 0xF0, 
	  0x7F, 0xE0, 0x7F, 0xE0, 0x7F, 0xF0, 0x7F, 0xF8, 
	  0x7F, 0xFC, 0x7F, 0xFE, 0x7F, 0xFC, 0x73, 0xF8, 
	  0x61, 0xF0, 0x60, 0xE0, 0x40, 0x40, 0x00, 0x00, 
	},
};

static Rectangle window;
static Point curpos;
static int h, w;

M carrera/screen.h => carrera/screen.h +1 -0
@@ 7,6 7,7 @@ struct Cursorinfo
};

extern Cursorinfo	cursor;
extern Cursor		arrow;

extern int	cursoron(int);
#define		cursoroff(x)

M pc/screen.c => pc/screen.c +14 -0
@@ 35,6 35,20 @@ Memimage gscreen;

VGAscr vgascreen[1];

Cursor	arrow = {
	{ -1, -1 },
	{ 0xFF, 0xFF, 0x80, 0x01, 0x80, 0x02, 0x80, 0x0C, 
	  0x80, 0x10, 0x80, 0x10, 0x80, 0x08, 0x80, 0x04, 
	  0x80, 0x02, 0x80, 0x01, 0x80, 0x02, 0x8C, 0x04, 
	  0x92, 0x08, 0x91, 0x10, 0xA0, 0xA0, 0xC0, 0x40, 
	},
	{ 0x00, 0x00, 0x7F, 0xFE, 0x7F, 0xFC, 0x7F, 0xF0, 
	  0x7F, 0xE0, 0x7F, 0xE0, 0x7F, 0xF0, 0x7F, 0xF8, 
	  0x7F, 0xFC, 0x7F, 0xFE, 0x7F, 0xFC, 0x73, 0xF8, 
	  0x61, 0xF0, 0x60, 0xE0, 0x40, 0x40, 0x00, 0x00, 
	},
};

int
screensize(int x, int y, int z)
{

M pc/screen.h => pc/screen.h +2 -0
@@ 24,6 24,8 @@ extern int cursoron(int);
extern void cursoroff(int);
extern void setcursor(Cursor*);

extern Cursor arrow;

/*
 * Generic VGA registers.
 */

M pc/vgacyber938x.c => pc/vgacyber938x.c +35 -33
@@ 71,39 71,6 @@ cyber938xcurdisable(VGAscr*)
}

static void
cyber938xcurenable(VGAscr* scr)
{
	int i;
	ulong storage;

	cyber938xcurdisable(scr);

	/*
	 * Cursor colours.
	 */
	for(i = 0x48; i < 0x4C; i++)
		vgaxo(Crtx, i, Pwhite);
	for(i = 0x4C; i < 0x50; i++)
		vgaxo(Crtx, i, Pblack);

	/*
	 * Find a place for the cursor data in display memory.
	 */
	storage = ((scr->gscreen->width*BY2WD*scr->gscreen->r.max.y+1023)/1024)*2;
	vgaxo(Crtx, 0x44, storage & 0xFF);
	vgaxo(Crtx, 0x45, (storage>>8) & 0xFF);
	storage *= 512;
	scr->storage = storage;

	/*
	 * Enable the 32x32 cursor.
	 * (64x64 is bit 0, X11 format is bit 6 and
	 * cursor enable is bit 7).
	 */
	vgaxo(Crtx, 0x50, 0xC0);
}

static void
cyber938xcurload(VGAscr* scr, Cursor* curs)
{
	uchar *p;


@@ 209,6 176,41 @@ cyber938xcurmove(VGAscr* scr, Point p)
	return 0;
}

static void
cyber938xcurenable(VGAscr* scr)
{
	int i;
	ulong storage;

	cyber938xcurdisable(scr);

	/*
	 * Cursor colours.
	 */
	for(i = 0x48; i < 0x4C; i++)
		vgaxo(Crtx, i, Pwhite);
	for(i = 0x4C; i < 0x50; i++)
		vgaxo(Crtx, i, Pblack);

	/*
	 * Find a place for the cursor data in display memory.
	 */
	storage = ((scr->gscreen->width*BY2WD*scr->gscreen->r.max.y+1023)/1024)*2;
	vgaxo(Crtx, 0x44, storage & 0xFF);
	vgaxo(Crtx, 0x45, (storage>>8) & 0xFF);
	storage *= 512;
	scr->storage = storage;

	/*
	 * Load, locate and enable the 32x32 cursor.
	 * (64x64 is bit 0, X11 format is bit 6 and cursor
	 * enable is bit 7).
	 */
	cyber938xcurload(scr, &arrow);
	cyber938xcurmove(scr, ZP);
	vgaxo(Crtx, 0x50, 0xC0);
}

VGAdev vgacyber938xdev = {
	"cyber938x",


M port/devmouse.c => port/devmouse.c +0 -14
@@ 37,20 37,6 @@ int		mouseshifted;
int		mouseswap;
Cursor		curs;

Cursor	arrow = {
	{ -1, -1 },
	{ 0xFF, 0xFF, 0x80, 0x01, 0x80, 0x02, 0x80, 0x0C, 
	  0x80, 0x10, 0x80, 0x10, 0x80, 0x08, 0x80, 0x04, 
	  0x80, 0x02, 0x80, 0x01, 0x80, 0x02, 0x8C, 0x04, 
	  0x92, 0x08, 0x91, 0x10, 0xA0, 0xA0, 0xC0, 0x40, 
	},
	{ 0x00, 0x00, 0x7F, 0xFE, 0x7F, 0xFC, 0x7F, 0xF0, 
	  0x7F, 0xE0, 0x7F, 0xE0, 0x7F, 0xF0, 0x7F, 0xF8, 
	  0x7F, 0xFC, 0x7F, 0xFE, 0x7F, 0xFC, 0x73, 0xF8, 
	  0x61, 0xF0, 0x60, 0xE0, 0x40, 0x40, 0x00, 0x00, 
	},
};

void	Cursortocursor(Cursor*);
int	mousechanged(void*);
static void mouseclock(void);