diff options
author | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
---|---|---|
committer | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
commit | e5888a1ffdae813d7575f5fb02275c6bb07e5199 (patch) | |
tree | d8d51eac403f07814b9e936eed0c9a79195e2450 /sys/src/cmd/aux/vga/ibm8514.c |
Import sources from 2011-03-30 iso image
Diffstat (limited to 'sys/src/cmd/aux/vga/ibm8514.c')
-rwxr-xr-x | sys/src/cmd/aux/vga/ibm8514.c | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/sys/src/cmd/aux/vga/ibm8514.c b/sys/src/cmd/aux/vga/ibm8514.c new file mode 100755 index 000000000..f7d504aca --- /dev/null +++ b/sys/src/cmd/aux/vga/ibm8514.c @@ -0,0 +1,82 @@ +#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 */ +}; |