|
|
1.1 root 1:
2: /******************************Module*Header*******************************\
3: * Module Name: s3mem.h
4: *
5: * contains definitions for S3's off-screen memory usage.
6: *
7: * Copyright (c) 1993 Microsoft Corporation
8: \**************************************************************************/
9:
10: // Basic Memory definitions.
11:
12: #define MEMORY_APERTURE_SIZE 0x10000
13:
14: #define DRIVERS_MAX_CX 0x500
15:
16: #define S3_MAX_RAM_WIDTH ppdev->cxMaxRam
17: #define S3_MAX_RAM_HEIGHT ppdev->cyMaxRam
18:
19: #define S3BM_WIDTH ppdev->cxScreen
20: #define S3BM_HEIGHT ppdev->cyScreen
21:
22: #define S3BM_WIDTH_HARD_VAL 1024
23:
24: #define OFF_SCREEN_Y S3BM_HEIGHT
25:
26: //#define OFF_SCREEN_Y 512
27:
28: #define OFF_SCREEN_CX (S3BM_WIDTH)
29: #define OFF_SCREEN_CY (S3_MAX_RAM_HEIGHT - S3BM_HEIGHT)
30:
31: // Glyph cache memory definitions
32:
33: #define GLYPH_CACHE_Y OFF_SCREEN_Y
34: #define GLYPH_CACHE_CX 32
35: #define GLYPH_CACHE_CY 32
36:
37: #define CACHED_GLYPHS_ROWS 2
38: #define GLYPHS_PER_ROW ((S3BM_WIDTH_HARD_VAL/2) / GLYPH_CACHE_CX)
39:
40: // Color pointer definitions.
41:
42: #define COLOR_POINTER_Y ((GLYPH_CACHE_CY * CACHED_GLYPHS_ROWS) + GLYPH_CACHE_Y)
43: #define COLOR_POINTER_CX 64
44: #define COLOR_POINTER_CY 64
45:
46: #define COLOR_POINTER_AND_PLANE 0x01
47: #define COLOR_POINTER_XOR_PLANE 0x02
48:
49: #define COLOR_POINTER_COLOR_DATA_X (COLOR_POINTER_CX)
50: #define COLOR_POINTER_WORK_X (COLOR_POINTER_CX * 2)
51: #define COLOR_POINTER_SAVE_X (COLOR_POINTER_CX * 3)
52:
53: // Double wide, double high pattern definitions.
54:
55: #define OFF_SCREEN_EXPANSION_CX 512
56: #define OFF_SCREEN_EXPANSION_CY 176
57:
58: #define MAX_DOUBLE_PATTERN_CX 16
59: #define MAX_DOUBLE_PATTERN_CY 16
60:
61: #define COLOR_PATTERN_CACHE_X 0
62: #define COLOR_PATTERN_CACHE_Y (COLOR_POINTER_Y + COLOR_POINTER_CY)
63: #define COLOR_PATTERN_CACHE_CX 480
64: #define COLOR_PATTERN_CACHE_CY 64
65:
66: #define MAX_COLOR_PATTERNS ((COLOR_PATTERN_CACHE_CX / 16) * (COLOR_PATTERN_CACHE_CY / 16))
67:
68: #define MONO_PATTERN_CACHE_X 0
69: #define MONO_PATTERN_CACHE_Y (COLOR_PATTERN_CACHE_Y + COLOR_PATTERN_CACHE_CY)
70: #define MONO_PATTERN_CACHE_CX 480
71: #define MONO_PATTERN_CACHE_CY 16
72:
73: #define MAX_MONO_PATTERNS ((MONO_PATTERN_CACHE_CX / 16) * (MONO_PATTERN_CACHE_CY / 16) * 8)
74:
75: #define COLOR_HORZ_EXPANSION_CACHE_X 0
76: #define COLOR_HORZ_EXPANSION_CACHE_Y (MONO_PATTERN_CACHE_Y + MONO_PATTERN_CACHE_CY)
77: #define COLOR_HORZ_EXPANSION_CACHE_CX (OFF_SCREEN_EXPANSION_CX - MONO_VERT_EXPANSION_CACHE_CX)
78: #define COLOR_HORZ_EXPANSION_CACHE_CY 16
79:
80: #define COLOR_VERT_EXPANSION_CACHE_X 480
81: #define COLOR_VERT_EXPANSION_CACHE_Y COLOR_POINTER_Y
82: #define COLOR_VERT_EXPANSION_CACHE_CX 16
83: #define COLOR_VERT_EXPANSION_CACHE_CY (OFF_SCREEN_EXPANSION_CY - MONO_HORZ_EXPANSION_CACHE_CY)
84:
85: #define MONO_HORZ_EXPANSION_CACHE_X 0
86: #define MONO_HORZ_EXPANSION_CACHE_Y (COLOR_HORZ_EXPANSION_CACHE_Y + COLOR_HORZ_EXPANSION_CACHE_CY)
87: #define MONO_HORZ_EXPANSION_CACHE_CX OFF_SCREEN_EXPANSION_CX
88: #define MONO_HORZ_EXPANSION_CACHE_CY 16
89:
90: #define MONO_VERT_EXPANSION_CACHE_X 496
91: #define MONO_VERT_EXPANSION_CACHE_Y COLOR_POINTER_Y
92: #define MONO_VERT_EXPANSION_CACHE_CX 16
93: #define MONO_VERT_EXPANSION_CACHE_CY OFF_SCREEN_EXPANSION_CY
94:
95: // Offscreen bitmap cache
96:
97: #define OFF_SCREEN_BITMAP_X 512
98: #define OFF_SCREEN_BITMAP_Y OFF_SCREEN_Y
99: #define OFF_SCREEN_BITMAP_CX 512
100: #define OFF_SCREEN_BITMAP_CY 254
101:
102: // Storage for HW monochrome pointer data
103: // Note that we ping-pong between two storage areas for the pointer, one on
104: // the bottom scan of memory and one on the second to bottom scan. However,
105: // we arrive at the two scans by subtracting either 0 or 1 from PTR_DATA_Y,
106: // so PTR_DATA_Y just points to the last scan of display memory.
107:
108: #define PTR_DATA_X 0
109: #define PTR_DATA_Y (S3_MAX_RAM_HEIGHT - 1)
110:
111:
112:
113:
114:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.