|
|
1.1 root 1: /*++
2:
3: Copyright (c) 1992 Microsoft Corporation
4:
5: Module Name:
6:
7: cmdcnst.h
8:
9: Abstract:
10:
11: This is the command string interpreter definitions
12:
13: Environment:
14:
15: kernel mode only
16:
17: Notes:
18:
19: Revision History:
20:
21: --*/
22:
23: //--------------------------------------------------------------------------
24: // Definition of the set/clear mode command language.
25: //
26: // Each command is composed of a major portion and a minor portion.
27: // The major portion of a command can be found in the most significant
28: // nibble of a command byte, while the minor portion is in the least
29: // significant portion of a command byte.
30: //
31: // maj minor Description
32: // ---- ----- --------------------------------------------
33: // 00 End of data
34: //
35: // 10 in and out type commands as described by flags
36: // flags:
37: //
38: // xxxx
39: // ||||
40: // |||+-------- unused
41: // ||+--------- 0/1 single/multiple values to output
42: // |+---------- 0/1 8/16 bit operation
43: // +----------- 0/1 out/in instruction
44: //
45: // Outs
46: // ----------------------------------------------
47: // 0 reg:W val:B
48: // 2 reg:W cnt:W val1:B val2:B...valN:B
49: // 4 reg:W val:W
50: // 6 reg:W cnt:W val1:W val2:W...valN:W
51: //
52: // Ins
53: // ----------------------------------------------
54: // 8 reg:W
55: // a reg:W cnt:W
56: // c reg:W
57: // e reg:W cnt:W
58: //
59: // 20 Special purpose outs
60: // 00 do indexed outs for seq, crtc, and gdc
61: // indexreg:W cnt:B startindex:B val1:B val2:B...valN:B
62: // 01 do indexed outs for atc
63: // index-data_reg:W cnt:B startindex:B val1:B val2:B...valN:B
64: // 02 do masked outs
65: // indexreg:W andmask:B xormask:B
66: //
67: // 40 Select Access Range
68: // 00 Registers is range 3c0-3cf
69: // 01 Registers in range 3d4-3df
70: // 02 Registers in range 4ae8-4ae9
71: //
72: // F0 Nop
73: //
74: //---------------------------------------------------------------------------
75:
76: // some useful equates - major commands
77:
78: #define EOD 0x000 // end of data
79: #define INOUT 0x010 // do ins or outs
80: #define METAOUT 0x020 // do special types of outs
81: #define SELECTACCESSRANGE 0x040 // select access range
82: #define NCMD 0x0f0 // Nop command
83:
84:
85: // flags for INOUT major command
86:
87: //#define UNUSED 0x01 // reserved
88: #define MULTI 0x02 // multiple or single ins/outs
89: #define BW 0x04 // byte/word size of operation
90: #define IO 0x08 // out/in instruction
91:
92: // minor commands for metout
93:
94: #define INDXOUT 0x00 // do indexed outs
95: #define ATCOUT 0x01 // do indexed outs for atc
96: #define MASKOUT 0x02 // do masked outs using and-xor masks
97: #define VBLANK 0x03 // Wait for Vertical Blank Interval
98: #define SETCLK 0x04 // Set the OEM Clock.
99: #define SETCRTC 0x05 // Set the OEM CRTC values.
100: #define BUSTEST 0x06 // 928 bus test
101: #define DELAY 0x07 // delay in microseconds
102: #define BT485RESET 0x08 // Reset the Bt485 for VGA
103:
104: // Register ranges for the select access range command
105:
106: #define VARIOUSVGA 0x00 // registers in range 3c0-3cf
107: #define SYSTEMCONTROL 0x01 // registers in range 3d4-3df
108: #define ADVANCEDFUNCTIONCONTROL 0x02 // registers in range 4ae8-4ae9
109:
110: // composite inout type commands
111:
112: #define OB (INOUT) // output 8 bit value
113: #define OBM (INOUT+MULTI) // output multiple bytes
114: #define OW (INOUT+BW) // output single word value
115: #define OWM (INOUT+BW+MULTI) // output multiple words
116:
117: #define IB (INOUT+IO) // input byte
118: #define IBM (INOUT+IO+MULTI) // input multiple bytes
119: #define IW (INOUT+IO+BW) // input word
120: #define IWM (INOUT+IO+BW+MULTI) // input multiple words
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.