Lines Matching refs:scr
323 egavga_getfont(struct vga_config *vc, struct vgascreen *scr, const char *name,
332 8, scr->pcs.type->fontheight, 0, WSFONT_FIND_BITMAP) &&
335 if (scr != &vga_console_screen || vga_console_attached)
343 cookie = wsfont_find(name, 8, scr->pcs.type->fontheight, 0,
348 if (scr != &vga_console_screen || vga_console_attached)
359 if (scr == &vga_console_screen)
373 if (scr != &vga_console_screen || vga_console_attached)
402 vga_selectfont(struct vga_config *vc, struct vgascreen *scr, const char *name1,
405 const struct wsscreen_descr *type = scr->pcs.type;
408 f1 = egavga_getfont(vc, scr, name1, 1);
413 f2 = egavga_getfont(vc, scr, name2, 0);
422 if (scr != &vga_console_screen || vga_console_attached) {
431 if (scr->fontset1)
432 egavga_unreffont(vc, scr->fontset1);
433 scr->fontset1 = f1;
434 if (scr->fontset2)
435 egavga_unreffont(vc, scr->fontset2);
436 scr->fontset2 = f2;
441 vga_init_screen(struct vga_config *vc, struct vgascreen *scr,
447 scr->cfg = vc;
448 scr->pcs.hdl = (struct pcdisplay_handle *)&vc->hdl;
449 scr->pcs.type = type;
450 scr->pcs.active = existing;
451 scr->mindispoffset = 0;
453 scr->maxdispoffset = 0;
455 scr->maxdispoffset = 0x8000 - type->nrows * type->ncols * 2;
458 vc->active = scr;
467 scr->pcs.dispoffset = vga_6845_read(&vc->hdl, startadrh) << 9;
468 scr->pcs.dispoffset |= vga_6845_read(&vc->hdl, startadrl) << 1;
471 if (scr->pcs.dispoffset < scr->mindispoffset ||
472 scr->pcs.dispoffset > scr->maxdispoffset)
473 scr->pcs.dispoffset = scr->mindispoffset;
481 scr->pcs.dispoffset = scr->mindispoffset;
484 scr->pcs.visibleoffset = scr->pcs.dispoffset;
485 scr->vga_rollover = 0;
487 scr->pcs.cursorrow = cpos / type->ncols;
488 scr->pcs.cursorcol = cpos % type->ncols;
489 pcdisplay_cursor_init(&scr->pcs, existing);
500 res = vga_allocattr(scr, WSCOL_WHITE, WSCOL_BLUE,
504 res = vga_allocattr(scr, 0, 0, 0, attrp);
510 scr->pcs.mem = NULL;
512 scr->fontset1 = scr->fontset2 = 0;
513 if (vga_selectfont(vc, scr, 0, 0)) {
514 if (scr == &vga_console_screen)
520 vga_setfont(vc, scr);
523 LIST_INSERT_HEAD(&vc->screens, scr, next);
668 const struct wsscreen_descr *scr;
676 scr = wsdisplay_screentype_pick(vga_console_vc.hdl.vh_mono ?
678 if (!scr)
681 scr = vga_console_vc.currenttype;
701 vga_init_screen(&vga_console_vc, &vga_console_screen, scr, 1, &defattr);
703 wsdisplay_cnattach(scr, &vga_console_screen,
783 struct vgascreen *scr = vs;
810 KASSERT(scr != NULL);
811 return pcdisplay_getwschar(&scr->pcs,
815 KASSERT(scr != NULL);
816 return pcdisplay_putwschar(&scr->pcs,
867 struct vgascreen *scr;
881 scr = malloc(sizeof(struct vgascreen), M_DEVBUF, M_WAITOK);
882 vga_init_screen(vc, scr, type, vc->nscreens == 0, defattrp);
885 scr->pcs.mem = malloc(type->ncols * type->nrows * 2,
887 pcdisplay_eraserows(&scr->pcs, 0, type->nrows, *defattrp);
890 *cookiep = scr;
891 *curxp = scr->pcs.cursorcol;
892 *curyp = scr->pcs.cursorrow;
958 vga_setfont(struct vga_config *vc, struct vgascreen *scr)
962 if (scr->fontset1)
963 vga_usefont(vc, scr->fontset1);
964 if (scr->fontset2)
965 vga_usefont(vc, scr->fontset2);
967 fontslot1 = (scr->fontset1 ? scr->fontset1->slot : 0);
968 fontslot2 = (scr->fontset2 ? scr->fontset2->slot : fontslot1);
981 struct vgascreen *scr = cookie, *oldscr;
982 struct vga_config *vc = scr->cfg;
985 if (scr == oldscr) {
1005 struct vgascreen *scr, *oldscr;
1009 scr = vc->wantedscreen;
1010 if (!scr) {
1015 type = scr->pcs.type;
1025 if (scr == oldscr) {
1029 if (scr->pcs.active)
1047 vga_setfont(vc, scr);
1050 scr->pcs.visibleoffset = scr->pcs.dispoffset = scr->mindispoffset;
1051 if (!oldscr || (scr->pcs.dispoffset != oldscr->pcs.dispoffset)) {
1052 vga_6845_write(vh, startadrh, scr->pcs.dispoffset >> 9);
1053 vga_6845_write(vh, startadrl, scr->pcs.dispoffset >> 1);
1057 scr->pcs.dispoffset, scr->pcs.mem, type->ncols * type->nrows);
1058 scr->pcs.active = 1;
1060 vc->active = scr;
1062 pcdisplay_cursor(&scr->pcs, scr->pcs.cursoron,
1063 scr->pcs.cursorrow, scr->pcs.cursorcol);
1074 struct vgascreen *scr = cookie;
1078 if (scr) {
1085 res = vga_selectfont(vc, scr, data->name, name2);
1086 if (!res && scr->pcs.active)
1087 vga_setfont(vc, scr);
1097 struct vgascreen *scr = id;
1098 struct vga_config *vc = scr->cfg;
1133 struct vgascreen *scr = id;
1134 bus_space_tag_t memt = scr->pcs.hdl->ph_memt;
1135 bus_space_handle_t memh = scr->pcs.hdl->ph_memh;
1136 int ncols = scr->pcs.type->ncols;
1142 if (scr->pcs.active) {
1143 if (dstrow == 0 && (srcrow + nrows == scr->pcs.type->nrows)) {
1145 int cursoron = scr->pcs.cursoron;
1148 pcdisplay_cursor(&scr->pcs, 0,
1149 scr->pcs.cursorrow, scr->pcs.cursorcol);
1152 if ((scr->pcs.dispoffset + srcrow * ncols * 2)
1153 <= scr->maxdispoffset) {
1154 scr->pcs.dispoffset += srcrow * ncols * 2;
1157 scr->pcs.dispoffset + srcoff * 2,
1158 memh, scr->mindispoffset, nrows * ncols);
1159 scr->pcs.dispoffset = scr->mindispoffset;
1161 vga_6845_write(&scr->cfg->hdl, startadrh,
1162 scr->pcs.dispoffset >> 9);
1163 vga_6845_write(&scr->cfg->hdl, startadrl,
1164 scr->pcs.dispoffset >> 1);
1167 pcdisplay_cursor(&scr->pcs, 1,
1168 scr->pcs.cursorrow, scr->pcs.cursorcol);
1172 scr->pcs.dispoffset + srcoff * 2,
1173 memh, scr->pcs.dispoffset + dstoff * 2,
1177 memcpy(&scr->pcs.mem[dstoff], &scr->pcs.mem[srcoff],
1434 struct vgascreen *scr = id;
1440 if (scr->fontset1)
1441 res1 = _vga_mapchar(id, scr->fontset1, uni, &idx1);
1443 if (scr->fontset2) {
1444 KASSERT(VGA_SCREEN_CANTWOFONTS(scr->pcs.type));
1445 res2 = _vga_mapchar(id, scr->fontset2, uni, &idx2);
1460 struct vgascreen *scr = cookie;
1464 if (scr->pcs.visibleoffset == scr->pcs.dispoffset)
1467 scr->pcs.visibleoffset = scr->pcs.dispoffset;
1471 int margin = scr->pcs.type->ncols * 2;
1474 vga_scr_end = (scr->pcs.dispoffset + scr->pcs.type->ncols *
1475 scr->pcs.type->nrows * 2);
1476 if (scr->vga_rollover > vga_scr_end + margin) {
1478 we = scr->vga_rollover + scr->pcs.type->ncols * 2;
1483 p = (scr->pcs.visibleoffset - ul + we) % we + lines *
1484 (scr->pcs.type->ncols * 2);
1485 st = (scr->pcs.dispoffset - ul + we) % we;
1490 scr->pcs.visibleoffset = (p + ul) % we;
1493 vga_6845_write(vh, startadrh, scr->pcs.visibleoffset >> 9);
1494 vga_6845_write(vh, startadrl, scr->pcs.visibleoffset >> 1);