|
|
1.1 root 1: /* $Header: apa8c.h,v 10.1 86/11/19 10:45:18 jg Exp $ */
2: /* apa8c.h - Definitions and macros required to access APA8C
3: *
4: * Defines required to support APA8C
5: *
6: * Author:
7: * Scott Bates
8: * Brown University
9: * IRIS, Box 1946
10: * Providence, RI 02912
11: *
12: *
13: * Copyright (c) 1986 Brown University
14: *
15: * Permission to use, copy, modify and distribute this software and its
16: * documentation for any purpose and without fee is hereby granted, provided
17: * that the above copyright notice appear in all copies, and that both
18: * that copyright notice and this permission notice appear in supporting
19: * documentation, and that the name of Brown University not be used in
20: * advertising or publicity pertaining to distribution of the software
21: * without specific, written prior permission. Brown University makes no
22: * representations about the suitability of this software for any purpose.
23: * It is provided "as-is" without express or implied warranty.
24: */
25:
26: #define SCREEN_BASE (0xF4D20000) /* base address for screen bitmap */
27: #define XDEV_ID XDEV_IBMAPA8C /* device id for info structure */
28:
29: #define REAL_SCREEN_WIDTH 1024 /* number of bits/line for apa8c */
30: #define REAL_SCREEN_HEIGHT 512 /* Number of lines on apa8c */
31:
32: #define X_SCREEN_WIDTH 720 /* number of bits/line for apa8c display */
33: #define X_SCREEN_HEIGHT 512 /* visible lines on the screen */
34:
35: #define SCREEN_DEVICE "/dev/apa8c" /* device name */
36: #define MOUSE_DEVICE "/dev/msapa8c" /* device name of mouse for display */
37:
38: #define CURSOR_TYPE SOFT_CURSOR /* apa8c uses software cursor */
39:
40: #define DISPLAY_INIT() apa8c_init() /* display initialization routine */
41:
42: /*
43: * Control register (short)
44: */
45:
46: #define APA8C_FC 0xF0000150
47:
48: /*
49: * Data mask registers (2 each 8 bits)
50: */
51:
52: #define APA8C_DM 0xF0000152
53:
54: /*
55: * Color Plane Select register.
56: */
57:
58: #define CPS_REG 0xF0000154
59:
60: /*
61: * Foreground/ Background register.
62: */
63:
64: #define FGBG_REG 0xF0000156
65:
66: /*
67: * Video Look-up Table register.
68: */
69:
70: #define VLT_REG 0xF0000158
71:
72: /*
73: * bits 0-2 rotate count
74: */
75:
76: #define DCR_ROTMASK 0x0007
77:
78: /*
79: * bits 3-5 logic unit function control
80: */
81:
82: #define DCR_FCMASK 0x0038
83: #define DCR_FCOR 0x0028
84: #define DCR_FCNOR 0x0038
85: #define DCR_FCPA 0x0010
86: #define DCR_FCPB 0x0000
87: #define DCR_FCPNA 0x0030
88: #define DCR_FCPNB 0x0020
89:
90: #define DEFAULT_FUNC DCR_FCPNB
91: #define HIDDEN_FUNC DCR_FCPA
92: #define RDWR_FUNC DCR_FCPA
93:
94: /*
95: * 6-7 reserved
96: */
97:
98: /*
99: * 8-9 memory mode
100: */
101:
102: #define DCR_MEMMODE 0x0300
103: #define DCR_SWR 0x0000
104: #define DCR_ISWR 0x0100
105: #define DCR_ADWR 0x0200
106: #define DCR_AURW 0x0300
107:
108: /*
109: * 10 inc/dec of the address counter
110: */
111:
112: #define DCR_DEC 0x0400
113: #define DCR_INC ~0x0400
114:
115: /*
116: * 11 x/y stepping
117: */
118:
119: #define DCR_X 0x0800
120: #define DCR_Y ~0x0800
121:
122: /*
123: * 12 1 means block transfer
124: */
125:
126: #define DCR_BT 0x1000
127:
128: /*
129: * 13 1 means interrupt enable
130: */
131:
132: #define DCR_IEN 0x2000
133:
134: /*
135: * 14 1 means Sync enable
136: */
137:
138: #define DCR_SEN 0x4000
139:
140: /*
141: * 15 1 means Video enable
142: */
143:
144: #define DCR_VEN 0x8000
145:
146: /*
147: * Data Mask Register masks (typically are the
148: * inverse of each other)
149: */
150:
151: #define DM_A 0xFF00
152: #define DM_B 0x00FF
153:
154: #define CLEAR_DM 0x0000
155: #define DEFAULT_DM DM_B
156: #define HIDDEN_DM DM_A
157: #define RDWR_DM DM_A
158:
159: /*
160: * Values for the writemask.
161: */
162:
163: #define NOMASK 0x0000
164: #define MASKBYTE2 0x00FF
165: #define MASKBYTE1 0xFF00
166:
167: /*
168: * Values for the color plane select register.
169: */
170:
171: #define DEFAULT_CPS 0x001F;
172:
173: /*
174: * Values for the foreground/background register.
175: */
176:
177: #define DEFAULT_FGBG 0x00F0;
178:
179: /*
180: * Color definitions (not all colors are defined)
181: */
182:
183: #define DARK_RED 0x0100
184: #define DARK_GREEN 0x0400
185: #define DARK_BLUE 0x1000
186: #define RED 0x0200
187: #define GREEN 0x0800
188: #define BLUE 0x2000
189: #define LIGHT_RED 0x0300
190: #define LIGHT_GREEN 0x0C00
191: #define LIGHT_BLUE 0x3000
192: #define BLACK 0x0000
193: #define WHITE 0x3F00
194:
195: /*
196: * Defines to work with the Video Look-up table.
197: * foreground = 1 bits background = 0 bits
198: * (Note: In "X" zero bits are black and one bits are white)
199: */
200:
201: #define VLT_SIZE 16
202: #define FG_COLOR WHITE
203: #define BG_COLOR DARK_GREEN
204:
205: /*
206: * Bitmap to BUS address offsets. All address offsets in the bitmap area
207: * must be multiplied by 2 before being used as BUS offsets.
208: */
209:
210: #define BM_TO_BUS(n) ((n) << 1)
211:
212: /*
213: * The physical bitmap addresses on the apa8C adaptor card
214: * go from 0000 to 0xFFFF. (the size of a short or word, 16 bits addresses
215: * these spots.
216: */
217:
218: #define MAXOFFSET 0xFFFF
219:
220: /*
221: * This is defined to be the last scan line in the hidden area.
222: * It is needed because the side affect of setting the writemask registers
223: * is the mask is also written to the bitmap.
224: */
225:
226: #define WRMASK_SCREEN_BASE \
227: (*(u_short *)(SCREEN_BASE + BM_TO_BUS(MAXOFFSET - 1)))
228:
229: #define SET_APA8C_FC(control_info) { \
230: *(u_short *) APA8C_FC = (u_short)(control_info); \
231: }
232:
233: #define SET_APA8C_WRITEMASK(mask) { \
234: SET_APA8C_FC(DCR_SEN | DCR_VEN | DCR_ISWR | DCR_X | DCR_FCOR); \
235: WRMASK_SCREEN_BASE = (u_short) mask; \
236: }
237:
238: #define SET_APA8C_DATAMASK(mask) { \
239: *(u_short *)APA8C_DM = (u_short) mask; \
240: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.