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
This commit is contained in:
Yoshihiro Takahashi 2001-12-14 15:27:15 +00:00
parent e237860a3c
commit 9cc62fb3d8
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=87886
6 changed files with 20 additions and 18 deletions

View File

@ -37,7 +37,12 @@
/* Monochrome attributes for foreground text */
#ifdef PC98
/* PC-98 attributes for foreground text */
#define FG_UNDERLINE 0x08
#else
#define FG_UNDERLINE 0x01
#endif
#define FG_INTENSE 0x08
/* Monochrome attributes for text background */

View File

@ -37,7 +37,12 @@
/* Monochrome attributes for foreground text */
#ifdef PC98
/* PC-98 attributes for foreground text */
#define FG_UNDERLINE 0x08
#else
#define FG_UNDERLINE 0x01
#endif
#define FG_INTENSE 0x08
/* Monochrome attributes for text background */

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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