| plan 9 kernel history: overview | file list | diff list |
1997/1101/pc/vgaark2000pv.c (diff list | history)
| 1997/0327/sys/src/9/pc/vgaark2000pv.c:5,48 – 1997/1101/sys/src/9/pc/vgaark2000pv.c:5,50 (short | long | prev | next) | ||
| 1995/0512 | #include "fns.h" #include "../port/error.h" | |
| 1997/1101 | #define Image IMAGE #include <draw.h> #include <memdraw.h> | |
| 1995/0512 | #include "screen.h" | |
| 1995/0516 |
| |
| 1997/1101 | static int ark2000pvpageset(VGAscr*, int page) { uchar seq15; | |
| 1995/0516 |
| |
| 1997/1101 | seq15 = vgaxi(Seqx, 0x15); vgaxo(Seqx, 0x15, page); vgaxo(Seqx, 0x16, page); | |
| 1995/0516 | ||
| 1997/1101 | return seq15; } | |
| 1995/0512 | static void | |
| 1995/0516 |
| |
| 1997/1101 | ark2000pvpage(VGAscr* scr, int page) | |
| 1995/0512 | { | |
| 1997/1101 | lock(&scr->devlock); ark2000pvpageset(scr, page); unlock(&scr->devlock); | |
| 1995/0512 | } | |
| 1995/0516 | static void | |
| 1997/1101 | ark2000pvdisable(VGAscr*) | |
| 1995/0516 | { uchar seq20; | |
| 1997/0327 |
| |
| 1995/0516 | seq20 = vgaxi(Seqx, 0x20) & ~0x08; vgaxo(Seqx, 0x20, seq20); | |
| 1997/0327 |
| |
| 1995/0516 | } static void | |
| 1997/1101 | ark2000pvenable(VGAscr* scr) | |
| 1995/0516 | { uchar seq20; | |
| 1997/1101 | ulong storage; | |
| 1995/0516 | ||
| 1997/0327 |
| |
| 1995/0516 | /* * Disable the cursor then configure for X-Windows style, | |
| 1996/0216 | * 32x32 and 4/8-bit colour depth. | |
| 1997/0327/sys/src/9/pc/vgaark2000pv.c:66,71 – 1997/1101/sys/src/9/pc/vgaark2000pv.c:68,74 | ||
| 1995/0516 | storage = (vgaxi(Seqx, 0x10)>>6) & 0x03; storage = (1024*1024)<<storage; | |
| 1996/0216 | storage -= 256; | |
| 1997/1101 | scr->storage = storage; | |
| 1996/0216 | vgaxo(Seqx, 0x25, 0x3F); | |
| 1995/0516 | /* | |
| 1997/0327/sys/src/9/pc/vgaark2000pv.c:72,111 – 1997/1101/sys/src/9/pc/vgaark2000pv.c:75,101 | ||
| 1995/0516 | * Enable the cursor. */ vgaxo(Seqx, 0x20, seq20); | |
| 1997/0327 |
| |
| 1995/0516 | } static void | |
| 1997/1101 | ark2000pvload(VGAscr* scr, Cursor* curs) | |
| 1995/0516 | { | |
| 1996/0216 |
| |
| 1995/0516 |
| |
| 1997/1101 | uchar *p, seq10; int opage, x, y; | |
| 1995/0516 | /* | |
| 1996/0216 |
| |
| 1995/0516 |
| |
| 1997/1101 | seq10 = vgaxi(Seqx, 0x10); opage = 0; p = KADDR(scr->aperture); if(!(seq10 & 0x10)){ opage = ark2000pvpageset(scr, scr->storage>>16); p += (scr->storage & 0xFFFF); | |
| 1995/0516 | } | |
| 1997/1101 | else p += scr->storage; | |
| 1995/0516 | /* * The cursor is set in X11 mode which gives the following | |
| 1997/0327/sys/src/9/pc/vgaark2000pv.c:122,129 – 1997/1101/sys/src/9/pc/vgaark2000pv.c:112,119 | ||
| 1996/0216 | for(y = 0; y < 32; y++){ for(x = 0; x < 32/8; x++){ | |
| 1995/0516 | if(x < 16/8 && y < 16){ | |
| 1997/1101 | *p++ = curs->clr[2*y + x]|curs->set[2*y + x]; *p++ = curs->set[2*y + x]; | |
| 1995/0516 | } else { | |
| 1995/0808 | *p++ = 0x00; | |
| 1997/0327/sys/src/9/pc/vgaark2000pv.c:132,165 – 1997/1101/sys/src/9/pc/vgaark2000pv.c:122,155 | ||
| 1995/0516 | } } | |
| 1997/1101 | if(!(seq10 & 0x10)){ ark2000pvpageset(scr, opage); unlock(&scr->devlock); } | |
| 1995/0516 | /* | |
| 1997/1101 | * Save the cursor hotpoint. | |
| 1995/0516 | */ | |
| 1997/1101 | scr->offset = curs->offset; | |
| 1995/0516 | } static int | |
| 1997/1101 | ark2000pvmove(VGAscr* scr, Point p) | |
| 1995/0516 | { int x, xo, y, yo; | |
| 1997/1101 | if((x = p.x+scr->offset.x) < 0){ | |
| 1995/0516 | xo = -x; | |
| 1995/0822 | x = 0; | |
| 1995/0516 | } else | |
| 1995/0822 | xo = 0; | |
| 1995/0516 |
| |
| 1997/1101 | if((y = p.y+scr->offset.y) < 0){ | |
| 1995/0516 | yo = -y; | |
| 1995/0822 | y = 0; | |
| 1995/0516 | } | |
| 1997/0327/sys/src/9/pc/vgaark2000pv.c:176,213 – 1997/1101/sys/src/9/pc/vgaark2000pv.c:166,188 | ||
| 1995/0516 | vgaxo(Seqx, 0x23, (y>>8) & 0x0F); vgaxo(Seqx, 0x24, y & 0xFF); | |
| 1996/0215 |
| |
| 1995/0516 |
| |
| 1997/1101 | VGAdev vgaark2000pvdev = { "ark2000pv", | |
| 1995/0516 | 0, | |
| 1997/0327 |
| |
| 1995/0516 |
| |
| 1995/0512 |
| |
| 1997/1101 | 0, | |
| 1995/0512 | ark2000pvpage, | |
| 1995/0516 |
| |
| 1995/0512 |
| |
| 1997/1101 | VGAcur vgaark2000pvcur = { "ark2000pvhwgc", ark2000pvenable, ark2000pvdisable, ark2000pvload, ark2000pvmove, }; | |