1 /*****************************************************************************
2  * �ϥ��쥾 (640x400x1)
3  *****************************************************************************/
4 
5 /* ��TEXT�Τ������ */
6 
7 #define MASK_8DOT()	for (m = 0; m < 4; m++) { dst[m] = tcol; }
8 #define MASK_16DOT()	for (m = 0; m < 8; m++) { dst[m] = tcol; }
9 
10 
11 /* ��VRAM�Τ������ */
12 
13 #undef		UPPER_SCREEN
14 #if	(ROWS == 20)
15 #define		UPPER_SCREEN	(i<10)
16 #elif	(ROWS == 25)
17 #define		UPPER_SCREEN	((i < 12) || (i == 12 && k < 8))
18 #endif
19 
20 #define TRANS_8DOT()					\
21     if (UPPER_SCREEN) {					\
22 	vram  = *(src + k * 80);			\
23 	for (l = 0; l < 4; l++, vram <<= 2) {		\
24 	    dst[l] = get_pixel_400_B( vram, tcol );	\
25 	}						\
26     } else {						\
27 	vram  = *(src + k * 80 - 80*200);		\
28 	for (l = 0; l < 4; l++, vram <<= 2) {		\
29 	    dst[l] = get_pixel_400_R( vram, tcol );	\
30 	}						\
31     }
32 
33 #define TRANS_16DOT()					\
34     if (UPPER_SCREEN) {					\
35 	vram = *(src + k * 80);				\
36 	for (l = 0; l < 4; l++, vram <<= 2) {		\
37 	    dst[l] = get_pixel_400_B( vram, tcol );	\
38 	}						\
39 	vram = *(src + k * 80 + 1);			\
40 	for (	  ; l < 8; l++, vram <<= 2) {		\
41 	    dst[l] = get_pixel_400_B( vram, tcol );	\
42 	}						\
43     } else {						\
44 	vram = *(src + k * 80 - 80*200);		\
45 	for (l = 0; l < 4; l++, vram <<= 2) {		\
46 	    dst[l] = get_pixel_400_R( vram, tcol );	\
47 	}						\
48 	vram = *(src + k * 80 + 1 - 80*200);		\
49 	for (	  ; l < 8; l++, vram <<= 2) {		\
50 	    dst[l] = get_pixel_400_R( vram, tcol );	\
51 	}						\
52     }
53 
54 /* ��TEXT/VRAM�Ť͹�碌����� */
55 
56 #define STORE_8DOT()							\
57     if (UPPER_SCREEN) {							\
58 	vram  = *(src + k * 80);					\
59 	for (m = 0xc0, l = 0; l < 4; l++, m >>= 2, vram <<= 2) {	\
60 	    if (style & m) { dst[l] = tcol;			     }	\
61 	    else	   { dst[l] = get_pixel_400_B( vram, tcol ); }	\
62 	}								\
63     } else {								\
64 	vram  = *(src + k * 80 - 80*200);				\
65 	for (m = 0xc0, l = 0; l < 4; l++, m >>= 2, vram <<= 2) {	\
66 	    if (style & m) { dst[l] = tcol;			     }	\
67 	    else	   { dst[l] = get_pixel_400_R( vram, tcol ); }	\
68 	}								\
69     }
70 
71 #define STORE_16DOT()							\
72     if (UPPER_SCREEN) {							\
73 	vram = *(src + k * 80);						\
74 	for (m = 0x80, l = 0; l < 4; l++, m >>= 1, vram <<= 2) {	\
75 	    if (style & m) { dst[l] = tcol;			     }	\
76 	    else	   { dst[l] = get_pixel_400_B( vram, tcol ); }	\
77 	}								\
78 	vram = *(src + k * 80 + 1);					\
79 	for (		    ; l < 8; l++, m >>= 1, vram <<= 2) {	\
80 	    if (style & m) { dst[l] = tcol;			     }	\
81 	    else	   { dst[l] = get_pixel_400_B( vram, tcol ); }	\
82 	}								\
83     } else {								\
84 	vram = *(src + k * 80 - 80*200);				\
85 	for (m = 0x80, l = 0; l < 4; l++, m >>= 1, vram <<= 2) {	\
86 	    if (style & m) { dst[l] = tcol;			     }	\
87 	    else	   { dst[l] = get_pixel_400_R( vram, tcol ); }	\
88 	}								\
89 	vram = *(src + k * 80 + 1 - 80*200);				\
90 	for (		    ; l < 8; l++, m >>= 1, vram <<= 2) {	\
91 	    if (style & m) { dst[l] = tcol;			     }	\
92 	    else	   { dst[l] = get_pixel_400_R( vram, tcol ); }	\
93 	}								\
94     }
95