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);