mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
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:
parent
e237860a3c
commit
9cc62fb3d8
6 changed files with 20 additions and 18 deletions
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue