1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
|
/*
* Copyright (c) 1995 FirePower Systems, Inc.
* DO NOT DISTRIBUTE without permission
*
* $RCSfile: pxcirrus.h $
* $Revision: 1.2 $
* $Date: 1996/01/11 07:09:18 $
* $Locker: $
*/
/*
* pxcirrus.h
*
* Defines for cirrus HAL support
*/
#define CIRRUS_VIDEO_MEMORY_BASE 0xc0000000
#define CIRRUS_VENDOR_ID 0x1013
#define CIRRUS_COMMAND_MASK 0x03
#define CIRRUS_TEXT_MEM 0xb8000
#define CIRRUS_FONT_MEM 0xa0000
#define WRITE_CIRRUS_UCHAR(port,data) \
*(volatile unsigned char *) \
((ULONG)HalpIoControlBase+(port))=(UCHAR)(data), \
KeFlushWriteBuffer()
#define WRITE_CIRRUS_VRAM(port,data) \
*((PUCHAR)((ULONG) HalpVideoMemoryBase + (port))) = (UCHAR) (data), \
KeFlushWriteBuffer()
#define WRITE_CIRRUS_USHORT(port,data) \
*(volatile unsigned short*) \
((ULONG)HalpIoControlBase+(port))=(USHORT)(data), \
KeFlushWriteBuffer()
#define READ_CIRRUS_VRAM(port) \
*(HalpVideoMemoryBase + (port))
#define READ_CIRRUS_UCHAR(port) \
*(volatile unsigned char *)((ULONG)HalpIoControlBase + (port))
#define setreg(port,index,data) \
WRITE_CIRRUS_UCHAR(port,index), \
WRITE_CIRRUS_UCHAR(port+1,data)
#define outportb(port,data) \
WRITE_CIRRUS_UCHAR(port,data)
#define outp(port,data) outportb(port,data)
#define inp(port) \
READ_CIRRUS_UCHAR(port)
#define INSTATUS_1 (PVOID) ((ULONG)((int)HalpIoControlBase + (int)0x03DA))
//
// Attributes Registers
//
static unsigned char attr3[] =
{
0x00, // AR0-ARF: Attribute Controller
0x01, // Palette Registers
0x02,
0x03,
0x04,
0x05,
0x14,
0x07,
0x38,
0x39,
0x3a,
0x3b,
0x3c,
0x3d,
0x3e,
0x3f,
0x0c, // AR10: Attribute Controller Mode
// Blink Enable
// Line Graphics Enable
0x00, // AR11: Overscan (Border) color
0x0f, // AR12: Color Plane Enable
// All planes enabled
0x08, // AR13: Pixel Panning
0x00 // AR14: Color Select
};
//
// CRT control
//
static unsigned char crtc3[] =
{
0x5f, // CR0: Horizontal Total
0x4f, // CR1: Horizontal Display End
0x50, // CR2: Start Horizontal Blinking
0x82, // CR3: End Horizontal Blanking
0x55, // CR4: Start Horizontal Retrace Pulse
0x81, // CR5: End Horizontal Retrace Pulse
0xbf, // CR6: Vertical Total
0x1f, // CR7: Overflow
0x00, // CR8: Row Scan
0x4f, // CR9: Character Cell Height (16)
0x0d, // CRa: Text Cursor Start Register
0x0e, // CRb: Text Cursor End Register
0x00, // CRc: Screen Start High
0x00, // CRd: Screen Start Low
0x00, // CRe: Text Cursor Location High
0x00, // CRf: Text Cursor Location Low
0x9c, // CR10: Vertical Sync Start
0xae, // CR11: Vertical Sync End
0x8f, // CR12: Vertical Display End
0x28, // CR13: Offset
0x1f, // CR14: Underline Row Scanline
0x96, // CR15: Vertical Blank Start
0xb9, // CR16: Vertical Blank End
0xa3, // CR17: Mode Control
0xff, // CR18: Line Compare
0x00, // CR19: Interlace End
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
};
//
// Graphics Registers
//
static unsigned char graph3[] =
{
0x00, // GR0: Set/Reset Register
0x00, // GR1: Set/Reset Enable Register
0x00, // GR2: Color Compare
0x00, // GR3: Data Rotate Register
0x00, // GR4: Read Map Select Register
0x10, // GR5: Mode Register (Odd/Even On)
0x0e, // GR6: Miscellaneous Register
// Memory Map b800:0
// Chain Odd Maps to Even
0x00, // GR7: Color Don't Care register
0xff // GR8: Bit Mask Register
};
//
// Sequencer Registers
//
static unsigned char seq3[] =
{
0x03, // SR0: Reset Register
// Asynchronous and Synchronous reset
0x00, // SR1: Clocking Mode
0x03, // SR2: Plane Mask Register
// Map 0 and 1 Enable
0x00, // SR3: Character Map Select Register
0x02, // SR4: Memory Mode
// Extended Memory
};
//
// Extended Sequencer Registers
//
static unsigned char eseq3[] =
{
0x6,0x12, // SR6: Unlock All Extensions
0x7,0x00, // SR7: Extended Sequencer Mode
0x8,0x40, // SR8: EEPROM Control
// tsa 0x8,0x00, // SR8: EEPROM Control
0xb,0x4a, // SRb: VCLK 0 Numerator Register
0xc,0x5b, // SRc: VCLK 1 Numerator Register
0xd,0x42, // SRd: VCLK 2 Numerator Register
0xe,0x6e, // SRe: VCLK 3 Numerator Register
//tsa x 0xe,0x7e, // SRe: VCLK 3 Numerator Register
0xf,0x1d, // SRf: DRAM control
0x12,0x00, // SR12: Cursor Attributes
0x16,0x71, // SR16: Performance Tuning
0x18,0x00, // SR18: Signature Generator Control
0x1b,0x2b, // SR1b: VCLK Denominator and Post-Scalar
0x1c,0x2f,
0x1d,0x1f,
0x1e,0x2a,
//tsa x 0x1e,0x33,
0x1f,0x1c,
0xff
};
//
// Extended CRTC Registers
//
static unsigned char ecrtc3[] =
{
0x19,0x00, // CR19: Inerlace End
0x1a,0x00, // CR1a: Miscellaneous
0x1b,0x00, // CR1b: Extended Display Controlls
0xff
};
//
// Extended Graphics Registers
//
static unsigned char egraph3[] =
{
0x9,0x00, // GR9: Offset Register 0
0xa,0x00, // GRa: Offset Register 1
0xb,0x00, // GRb: Graphics Controller Mode Extnsions
0xc,0xff, // GRc: Color Key Compare
0xd,0x00, // GRd: Color Key Compare Mask
0x10,0x00, // GR10: Background Color Byte 1
0x11,0x00, // GR11: Foreground Color Byte 1
0xff
};
//
// Extended Attribute Registers
//
static unsigned char eattr3[] =
{
0xff
};
|