12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #include <u.h>
- #include <libc.h>
- #include <bio.h>
- #include "pci.h"
- #include "vga.h"
- /*
- * IBM 8514/A Graphics Coprocessor.
- */
- enum {
- Subsys = 0x42E8, /* Subsystem Status (R), Control (W) */
- Advfunc = 0x4AE8, /* Advanced Function Control */
- CurY = 0x82E8, /* Current Y Position */
- CurX = 0x86E8, /* Current X Position */
- DestyAxstp = 0x8AE8, /* Destination Y Position/Axial Step Constant */
- DestxDiastp = 0x8EE8, /* Destination X Position/Diagonal Step Constant */
- ErrTerm = 0x92E8, /* Error Term */
- MajAxisPcnt = 0x96E8, /* Major Axis Pixel Count */
- GPstat = 0x9AE8, /* Graphics Processor Status (R) */
- Cmd = 0x9AE8, /* Drawing Command (W) */
- ShortStroke = 0x9EE8, /* Short Stroke Vector (W) */
- BkgdColor = 0xA2E8, /* Background Colour */
- FrgdColor = 0xA6E8, /* Foreground Colour */
- WrtMask = 0xAAE8, /* Bitplane Write Mask */
- RdMask = 0xAEE8, /* Bitplane Read Mask */
- ColorCmp = 0xB2E8, /* Colour Compare */
- BkgdMix = 0xB6E8, /* Background Mix */
- FrgdMix = 0xBAE8, /* Foreground Mix */
- Multifunc = 0xBEE8, /* Multifunction Control */
- PixTrans = 0xE2E8, /* Pixel Data Transfer */
- };
- enum { /* Multifunc Index */
- MinAxisPcnt = 0x0000, /* Minor Axis Pixel Count */
- ScissorsT = 0x1000, /* Top Scissors */
- ScissorsL = 0x2000, /* Left Scissors */
- ScissorsB = 0x3000, /* Bottom Scissors */
- ScissorsR = 0x4000, /* Right Scissors */
- MemCntl = 0x5000, /* Memory Control */
- PixCntl = 0xA000, /* Pixel Control */
- MultMisc = 0xE000, /* Miscellaneous Multifunction Control (S3) */
- ReadSel = 0xF000, /* Read Register Select (S3) */
- };
- static void
- load(Vga* vga, Ctlr*)
- {
- outportw(Pixmask, 0x00);
- outportw(Subsys, 0x8000|0x1000);
- outportw(Subsys, 0x4000|0x1000);
- outportw(Pixmask, 0xFF);
- outportw(FrgdMix, 0x47);
- outportw(BkgdMix, 0x07);
- outportw(Multifunc, ScissorsT|0x000);
- outportw(Multifunc, ScissorsL|0x000);
- outportw(Multifunc, ScissorsB|(vga->vmz/vga->mode->x-1));
- outportw(Multifunc, ScissorsR|(vga->mode->x-1));
- outportw(WrtMask, 0xFFFF);
- outportw(Multifunc, PixCntl|0x0000);
- }
- static void
- dump(Vga*, Ctlr* ctlr)
- {
- printitem(ctlr->name, "Advfunc");
- Bprint(&stdout, "%9.4uX\n", inportw(Advfunc));
- printitem(ctlr->name, "Subsys");
- Bprint(&stdout, "%9.4uX\n", inportw(Subsys));
- }
- Ctlr ibm8514 = {
- "ibm8514", /* name */
- 0, /* snarf */
- 0, /* options */
- 0, /* init */
- load, /* load */
- dump, /* dump */
- };
|