From 379025b99598875130fb5a375c337b6106500a00 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Mon, 9 Feb 1998 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1998-02-09 --- carrera/screen.c | 14 ++++++++++ carrera/screen.h | 1 + pc/screen.c | 14 ++++++++++ pc/screen.h | 2 ++ pc/vgacyber938x.c | 68 ++++++++++++++++++++++++----------------------- port/devmouse.c | 14 ---------- 6 files changed, 66 insertions(+), 47 deletions(-) diff --git a/carrera/screen.c b/carrera/screen.c index e314597bf68b242593e4dade1490e941c91e8809..10bb647ab8f15b72a41168cccea98b4e3767bc2f 100644 --- a/carrera/screen.c +++ b/carrera/screen.c @@ -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; diff --git a/carrera/screen.h b/carrera/screen.h index ef9a5e4a04b6215ef1f8417529661557196e5be2..a1af648a93605478afc66a9e0de08c916905e414 100644 --- a/carrera/screen.h +++ b/carrera/screen.h @@ -7,6 +7,7 @@ struct Cursorinfo }; extern Cursorinfo cursor; +extern Cursor arrow; extern int cursoron(int); #define cursoroff(x) diff --git a/pc/screen.c b/pc/screen.c index 527114f39a897131676301b4485f467d74745006..70a4b7a5e54e549eb54d7542d9d9e3a43ac4284c 100644 --- a/pc/screen.c +++ b/pc/screen.c @@ -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) { diff --git a/pc/screen.h b/pc/screen.h index f81200471ae853b627d308e33db293c466529eca..9b85bde6a2a53f39252fa2c01bb0932945f14ad8 100644 --- a/pc/screen.h +++ b/pc/screen.h @@ -24,6 +24,8 @@ extern int cursoron(int); extern void cursoroff(int); extern void setcursor(Cursor*); +extern Cursor arrow; + /* * Generic VGA registers. */ diff --git a/pc/vgacyber938x.c b/pc/vgacyber938x.c index 575c15e6d767a271997c02a0de521ba68c01f389..5562049a59342f5b9f694f50a7ca209f08bf6a3e 100644 --- a/pc/vgacyber938x.c +++ b/pc/vgacyber938x.c @@ -70,39 +70,6 @@ cyber938xcurdisable(VGAscr*) vgaxo(Crtx, 0x50, 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; - - /* - * 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) { @@ -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", diff --git a/port/devmouse.c b/port/devmouse.c index c2c76a7476c7629f716a684cadd31856601d81c0..47319dea3c8fdbca1991e67df06556cc736a1361 100644 --- a/port/devmouse.c +++ b/port/devmouse.c @@ -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);