diff options
author | nyan <nyan@FreeBSD.org> | 2001-12-14 15:27:15 +0000 |
---|---|---|
committer | nyan <nyan@FreeBSD.org> | 2001-12-14 15:27:15 +0000 |
commit | 8b664dd49d5ecab19f8c50b6da1d7ec6b03b1331 (patch) | |
tree | 2086d40e539ed86593d28a6a2f50e1dde4a0a38d /sys/pc98 | |
parent | 538db93281133bc7efa58a3750c50b5533cb0589 (diff) | |
download | FreeBSD-src-8b664dd49d5ecab19f8c50b6da1d7ec6b03b1331.zip FreeBSD-src-8b664dd49d5ecab19f8c50b6da1d7ec6b03b1331.tar.gz |
Fixed to draw mouse cursor. The syscons driver for PC98 uses different
attributes from i386.
Submitted by: chi@bd.mbn.or.jp (Chiharu Shibata)
MFC after: 3 days
Diffstat (limited to 'sys/pc98')
-rw-r--r-- | sys/pc98/cbus/scgdcrndr.c | 6 | ||||
-rw-r--r-- | sys/pc98/cbus/scvtb.c | 8 | ||||
-rw-r--r-- | sys/pc98/pc98/scgdcrndr.c | 6 | ||||
-rw-r--r-- | sys/pc98/pc98/scvtbpc98.c | 8 |
4 files changed, 10 insertions, 18 deletions
diff --git a/sys/pc98/cbus/scgdcrndr.c b/sys/pc98/cbus/scgdcrndr.c index 523a3f5..3b863e2 100644 --- a/sys/pc98/cbus/scgdcrndr.c +++ b/sys/pc98/cbus/scgdcrndr.c @@ -120,8 +120,8 @@ gdc_txtdraw(scr_stat *scp, int from, int count, int flip) p = sc_vtb_pointer(&scp->scr, from); for (; count-- > 0; ++from) { c = sc_vtb_getc(&scp->vtb, from); - a = sc_vtb_geta(&scp->vtb, from) ^ 0x4; - sc_vtb_putchar(&scp->scr, p, c, a); + a = sc_vtb_geta(&scp->vtb, from) ^ 0x0800; + p = sc_vtb_putchar(&scp->scr, p, c, a); } } else { sc_vtb_copy(&scp->vtb, from, &scp->scr, from, count); @@ -164,7 +164,7 @@ draw_txtmouse(scr_stat *scp, int x, int y) at = (y/scp->font_size - scp->yoff)*scp->xsize + x/8 - scp->xoff; sc_vtb_putc(&scp->scr, at, sc_vtb_getc(&scp->scr, at), - sc_vtb_geta(&scp->scr, at) ^ 0x4); + sc_vtb_geta(&scp->vtb, at) ^ 0x0800); } static void diff --git a/sys/pc98/cbus/scvtb.c b/sys/pc98/cbus/scvtb.c index 0bad8d0..48ad3f1 100644 --- a/sys/pc98/cbus/scvtb.c +++ b/sys/pc98/cbus/scvtb.c @@ -83,11 +83,7 @@ static u_int8_t ibmpc_to_pc98[256] = { 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, }; -#if 0 #define at2pc98(attr) ((attr) | ibmpc_to_pc98[(unsigned)(attr) >> 8]) -#else -#define at2pc98(attr) ibmpc_to_pc98[(unsigned)(attr) >> 8] -#endif void sc_vtb_init(sc_vtb_t *vtb, int type, int cols, int rows, void *buf, int wait) @@ -173,9 +169,9 @@ sc_vtb_geta(sc_vtb_t *vtb, int at) vm_offset_t p = vtb_pointer(vtb, at); if (vtb->vtb_type == VTB_FRAMEBUFFER) - return (readw(p + ATTR_OFFSET_FB) & 0x00ff); + return (readw(p + ATTR_OFFSET_FB) & 0xff00); else - return (*(u_int16_t *)(p + attr_offset(vtb)) & 0x00ff); + return (*(u_int16_t *)(p + attr_offset(vtb)) & 0xff00); } __inline static void diff --git a/sys/pc98/pc98/scgdcrndr.c b/sys/pc98/pc98/scgdcrndr.c index 523a3f5..3b863e2 100644 --- a/sys/pc98/pc98/scgdcrndr.c +++ b/sys/pc98/pc98/scgdcrndr.c @@ -120,8 +120,8 @@ gdc_txtdraw(scr_stat *scp, int from, int count, int flip) p = sc_vtb_pointer(&scp->scr, from); for (; count-- > 0; ++from) { c = sc_vtb_getc(&scp->vtb, from); - a = sc_vtb_geta(&scp->vtb, from) ^ 0x4; - sc_vtb_putchar(&scp->scr, p, c, a); + a = sc_vtb_geta(&scp->vtb, from) ^ 0x0800; + p = sc_vtb_putchar(&scp->scr, p, c, a); } } else { sc_vtb_copy(&scp->vtb, from, &scp->scr, from, count); @@ -164,7 +164,7 @@ draw_txtmouse(scr_stat *scp, int x, int y) at = (y/scp->font_size - scp->yoff)*scp->xsize + x/8 - scp->xoff; sc_vtb_putc(&scp->scr, at, sc_vtb_getc(&scp->scr, at), - sc_vtb_geta(&scp->scr, at) ^ 0x4); + sc_vtb_geta(&scp->vtb, at) ^ 0x0800); } static void diff --git a/sys/pc98/pc98/scvtbpc98.c b/sys/pc98/pc98/scvtbpc98.c index 0bad8d0..48ad3f1 100644 --- a/sys/pc98/pc98/scvtbpc98.c +++ b/sys/pc98/pc98/scvtbpc98.c @@ -83,11 +83,7 @@ static u_int8_t ibmpc_to_pc98[256] = { 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, }; -#if 0 #define at2pc98(attr) ((attr) | ibmpc_to_pc98[(unsigned)(attr) >> 8]) -#else -#define at2pc98(attr) ibmpc_to_pc98[(unsigned)(attr) >> 8] -#endif void sc_vtb_init(sc_vtb_t *vtb, int type, int cols, int rows, void *buf, int wait) @@ -173,9 +169,9 @@ sc_vtb_geta(sc_vtb_t *vtb, int at) vm_offset_t p = vtb_pointer(vtb, at); if (vtb->vtb_type == VTB_FRAMEBUFFER) - return (readw(p + ATTR_OFFSET_FB) & 0x00ff); + return (readw(p + ATTR_OFFSET_FB) & 0xff00); else - return (*(u_int16_t *)(p + attr_offset(vtb)) & 0x00ff); + return (*(u_int16_t *)(p + attr_offset(vtb)) & 0xff00); } __inline static void |