|
|
1.1 ! root 1: /***************************************************************************** ! 2: ! 3: SVGACustom.c for TsengLabsET4000 ! 4: ! 5: ******************************************************************************/ ! 6: ! 7: #import "SVGAConstants.h" ! 8: #import <driverkit/svgaPSExtension.h> ! 9: #import <driverkit/i386/displayRegisters.h> ! 10: ! 11: ! 12: void SetReadSegment(unsigned char num) ! 13: // Description: Select which 64K segment we intend to read from. ! 14: { ! 15: char tmp; ! 16: tmp = inb(EIDR_GCR_SEGS); ! 17: tmp &= GCR_TS_GWR; ! 18: tmp |= ((num << 4) & GCR_TS_GRD); ! 19: outb(EIDR_GCR_SEGS, tmp); ! 20: } ! 21: ! 22: ! 23: void SetWriteSegment(unsigned char num) ! 24: // Description: Select which 64K segment we intend to write to. ! 25: { ! 26: char tmp; ! 27: tmp = inb(EIDR_GCR_SEGS); ! 28: tmp &= GCR_TS_GRD; ! 29: tmp |= (num & GCR_TS_GWR); ! 30: outb(EIDR_GCR_SEGS, tmp); ! 31: } ! 32: ! 33: ! 34: void SetReadPlane(unsigned char num) ! 35: // Description: Select which of 4 bit planes to read from in planar ! 36: // modes - only one plane can be active at a time. ! 37: { ! 38: char tmp; ! 39: ! 40: // ! 41: // Select plane we are reading from ! 42: // ! 43: tmp = IOReadRegister(EIDR_GCR_ADDR, GCR_AT_READ_MAPS); ! 44: tmp &= ~GCR_AT_RMS; ! 45: tmp |= (num & GCR_AT_RMS); ! 46: IOWriteRegister(EIDR_GCR_ADDR, GCR_AT_READ_MAPS, tmp); ! 47: } ! 48: ! 49: ! 50: void SetWritePlane(unsigned char num) ! 51: // Description: Select one of 4 bit planes to write to in planar modes. ! 52: // Although more than one plane can be active at a time, ! 53: // this routine only allows access to 1 plane at a time. ! 54: { ! 55: char tmp, plane = 0x01; ! 56: ! 57: // ! 58: // Convert plane num to bit enable. ! 59: // ! 60: plane = plane << (num & 0x03); ! 61: ! 62: // ! 63: // Select plane we are writing to ! 64: // ! 65: tmp = IOReadRegister(EIDR_SEQ_ADDR, SEQ_AT_MPK); ! 66: tmp &= ~(SEQ_AT_EM3 | SEQ_AT_EM2 | SEQ_AT_EM1 | SEQ_AT_EM0); ! 67: tmp |= plane; ! 68: IOWriteRegister(EIDR_SEQ_ADDR, SEQ_AT_MPK, tmp); ! 69: } ! 70: ! 71: ! 72: int IOSetSVGAFunctions(IOSVGAFunctions *functs) ! 73: { ! 74: functs->setReadSegment = SetReadSegment; ! 75: functs->setWriteSegment = SetWriteSegment; ! 76: functs->setReadPlane = SetReadPlane; ! 77: functs->setWritePlane = SetWritePlane; ! 78: ! 79: return 0; ! 80: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.