|
|
1.1 root 1: ;******************************Module*Header*******************************\
2: ; Module Name: driver.inc
3: ;
4: ; driver prototypes
5: ;
6: ; Copyright (c) 1992 Microsoft Corporation
7: ;**************************************************************************/
8:
9:
10: ;!!! Make this match driver.h I want to see the same include structure
11: ;!!! for assembler as for C
12:
13: DDI_DRIVER_VERSION EQU 010000h
14:
15: ;/* gflDrv */
16:
17: DRV_ENABLED_ONCE EQU 1
18: DRV_ENABLED_PDEV EQU 2
19:
20: ; Space required for working storage when working with banking on adapters
21: ; that don't support two independent read/write windows. The largest supported
22: ; bank is 64K; this constant provides for storing four 64K planes.
23: ; Mirrors DRIVER.H.
24:
25: BANK_BUFFER_SIZE equ 10000h*4
26:
27: ; Start offsets of planes within the bank buffer.
28: ; Mirrors DRIVER.H.
29:
30: BANK_BUFFER_PLANE_SIZE equ 04000h
31:
32: PLANE_0_OFFSET equ 0
33: PLANE_1_OFFSET equ BANK_BUFFER_PLANE_SIZE
34: PLANE_2_OFFSET equ BANK_BUFFER_PLANE_SIZE*2
35: PLANE_3_OFFSET equ BANK_BUFFER_PLANE_SIZE*3
36:
37:
38: ; Indicates type of bank justification within banking window. Matches
39: ; typedef enum BANK_JUST in DRIVER.H.
40:
41: JustifyTop equ 0
42: JustifyBottom equ 1
43:
44:
45: ; Specifies which window is to be mapped by two-window bank handler.
46:
47: MapSourceBank equ 0
48: MapDestBank equ 1
49:
50:
51: ; /* This device can have only one PDEV */
52: ; BUGBUG should support multiple PDEVs
53:
54: DRV_ONE_PDEV EQU 1
55:
56: ; Miscellaneous driver flags in pdev.fl
57: ;---mirrors driver.h---;
58:
59: DRIVER_USE_OFFSCREEN equ 02h ; if not set, don't use offscreen memory
60:
61: ; Maximum width and height handled by this driver (controls buffer sizes).
62: ; BUGBUG everything should be allocated to the needed size on the stack, or
63: ; should use the work buffer hanging off the DSURF
64:
65: CX_SCREEN_MAX equ 1280
66: CY_SCREEN_MAX equ 1024
67: cj_max_scan equ (CX_SCREEN_MAX/8)
68:
69: ; Macro to do a simple RET, with no stack stuff, in a proc.
70: PLAIN_RET macro
71: db 0c3h
72: endm
73:
74: ; Macro to generate BSWAP, which the assembler doesn't support.
75: M_BSWAP macro REG
76: ifidni <eax>,<®>
77: db 0fh, 0c8h + 000b
78: exitm
79: endif
80: ifidni <ecx>,<®>
81: db 0fh, 0c8h + 001b
82: exitm
83: endif
84: ifidni <edx>,<®>
85: db 0fh, 0c8h + 010b
86: exitm
87: endif
88: ifidni <ebx>,<®>
89: db 0fh, 0c8h + 011b
90: exitm
91: endif
92: ifidni <esp>,<®>
93: db 0fh, 0c8h + 100b
94: exitm
95: endif
96: ifidni <ebp>,<®>
97: db 0fh, 0c8h + 101b
98: exitm
99: endif
100: ifidni <esi>,<®>
101: db 0fh, 0c8h + 110b
102: exitm
103: endif
104: ifidni <edi>,<®>
105: db 0fh, 0c8h + 111b
106: exitm
107: endif
108: endm ;M_BSWAP
109:
110: ; Macro to generate BSWAP equivalent for 386, which doesn't support the
111: ; instruction.
112: M_BSWAP_386 macro REG
113: ifidni <eax>,<®>
114: xchg ah,al
115: ror eax,16
116: xchg ah,al
117: exitm
118: endif
119: ifidni <ecx>,<®>
120: xchg ch,cl
121: ror ecx,16
122: xchg ch,cl
123: exitm
124: endif
125: ifidni <edx>,<®>
126: xchg dh,dl
127: ror edx,16
128: xchg dh,dl
129: exitm
130: endif
131: ifidni <ebx>,<®>
132: xchg bh,bl
133: ror ebx,16
134: xchg bh,bl
135: exitm
136: endif
137: ifidni <esp>,<®>
138: ror sp,8
139: ror esp,16
140: ror sp,8
141: exitm
142: endif
143: ifidni <ebp>,<®>
144: ror bp,8
145: ror ebp,16
146: ror bp,8
147: exitm
148: endif
149: ifidni <esi>,<®>
150: ror si,8
151: ror esi,16
152: ror si,8
153: exitm
154: endif
155: ifidni <edi>,<®>
156: ror di,8
157: ror edi,16
158: ror di,8
159: exitm
160: endif
161: endm ;M_BSWAP
162:
163:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.