Rev 6830 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6830 | Rev 7433 | ||
---|---|---|---|
Line 35... | Line 35... | ||
35 | dd StrLen ;24 |
35 | dd StrLen ;24 |
36 | dd Color ;28 |
36 | dd Color ;28 |
37 | dd Align ;32 |
37 | dd Align ;32 |
38 | } |
38 | } |
Line 39... | Line -... | ||
39 | - | ||
40 | ; font options structure |
- | |
41 | struc BGIrec FontName,CharsCount,FirstChar,UpperMargin,LowerMargin,\ |
- | |
42 | Widths,FirstData,EOF,font_data |
- | |
43 | { |
- | |
44 | .FontName dd ? ; 0 |
- | |
45 | .CharsCount db ? ; 4 |
- | |
46 | .FirstChar db ? ; 5 |
- | |
47 | .UpperMargin db ? ; 6 |
- | |
48 | .LowerMargin db ? ; 7 |
- | |
49 | .Widths dd ? ; 8 |
- | |
50 | .FirstData dd ? ; 12 |
- | |
51 | .EOF dd ? ; 16 |
- | |
52 | .font_data dd ? ; 20 follows (Offsets) |
- | |
53 | } |
- | |
54 | 39 | ||
55 | macro BGIfont_GetID |
40 | macro BGIfont_GetID |
56 | { |
41 | { |
57 | call _BGIfont_GetID |
42 | call _BGIfont_GetID |
Line 78... | Line 63... | ||
78 | if BGI_LEVEL eq KERNEL |
63 | if BGI_LEVEL eq KERNEL |
79 | dw _size |
64 | dw _size |
80 | end if |
65 | end if |
81 | } |
66 | } |
Line 82... | Line -... | ||
82 | - | ||
83 | BGIfont_names: |
- | |
84 | _FI 'LCOM',11485 ;7 |
- | |
85 | _FI 'EURO',8117 ;5 |
- | |
86 | _FI 'GOTH',13816 ;6 |
- | |
87 | _FI 'LITT',3596 ;8 |
- | |
88 | _FI 'TRIP',11932 ;14 |
- | |
89 | _FI 'SCRI',8490 ;11 |
- | |
90 | _FI 'SMAL',4162 ;13 |
- | |
91 | _FI 'TSCR',12134 ;15 |
- | |
92 | _FI 'SANS',8453 ;10 |
- | |
93 | _FI 'SIMP',9522 ;12 |
- | |
94 | BGIfont_names_end: |
- | |
95 | - | ||
96 | macro BGIfont_Init |
- | |
97 | { |
- | |
98 | ; in: ecx - number of fonts to load; |
- | |
99 | ; esi-> _FI structure |
- | |
100 | ; edi-> where to load |
- | |
101 | push edi |
- | |
102 | if BGI_LEVEL eq KERNEL |
- | |
103 | mov edi,0x40000 |
- | |
104 | end if |
- | |
105 | .nfont: |
- | |
106 | mov edx,[esi] |
- | |
107 | if BGI_LEVEL eq KERNEL |
- | |
108 | movzx ebx,word[esi+4] |
- | |
109 | mov [BGIfont_Prepare.okflag],'N' |
- | |
110 | end if |
- | |
111 | call _BGIfont_Prepare |
- | |
112 | if ~ BGI_LEVEL eq KERNEL |
- | |
113 | add esi,4 |
- | |
114 | else |
- | |
115 | push esi |
- | |
116 | test eax,eax |
- | |
117 | jz .fail |
- | |
118 | mov [BGIfont_Prepare.okflag],'*' |
- | |
119 | .fail: |
- | |
120 | mov esi,BGIfont_Prepare.font |
- | |
121 | call boot_log |
- | |
122 | pop esi |
- | |
123 | add esi,6 |
- | |
124 | end if |
- | |
125 | loop .nfont |
- | |
126 | dph2 _BGI_BOLD,300,550 |
- | |
127 | ; movzx edi,byte[0x40000] |
- | |
128 | pop edi |
- | |
129 | } |
- | |
130 | 67 | ||
131 | BGIfont_get2head: |
68 | BGIfont_get2head: |
132 | shr ecx,28 ; font # |
69 | shr ecx,28 ; font # |
133 | sub ecx,4 |
70 | sub ecx,4 |
134 | jb .exit2 ; invalid # |
71 | jb .exit2 ; invalid # |
Line 144... | Line 81... | ||
144 | .exit2: |
81 | .exit2: |
145 | xor edi,edi |
82 | xor edi,edi |
146 | .ex: |
83 | .ex: |
147 | ret |
84 | ret |
Line 148... | Line -... | ||
148 | - | ||
149 | BGIfont_GetName: |
- | |
150 | ; in: ecx-fontID; |
- | |
151 | ; out: edx-font name. |
- | |
152 | call BGIfont_get2head |
- | |
153 | xor edx,edx |
- | |
154 | test edi,edi |
- | |
155 | jz .ex |
- | |
156 | mov edx,[edi] |
- | |
157 | .ex: |
- | |
158 | ret |
- | |
159 | 85 | ||
160 | macro dps2 _str |
86 | macro dps2 _str |
161 | { |
- | |
162 | if ~ BGI_LEVEL eq KERNEL |
87 | { |
163 | if LOAD_MSG eq 1 |
88 | if LOAD_MSG eq 1 |
164 | dps _str |
89 | dps _str |
165 | end if |
- | |
166 | else |
- | |
167 | pusha |
- | |
168 | mov esi,BGIfont_Prepare.okflag |
- | |
169 | mov byte[esi], _str |
- | |
170 | call boot_log |
- | |
171 | popa |
- | |
172 | end if |
90 | end if |
Line 173... | Line 91... | ||
173 | } |
91 | } |
174 | 92 | ||
175 | macro dph2 num,x,y |
93 | macro dph2 num,x,y |
Line 234... | Line 152... | ||
234 | loop .fnext |
152 | loop .fnext |
235 | .fload: |
153 | .fload: |
236 | mov dword[.font],edx ; filename |
154 | mov dword[.font],edx ; filename |
237 | mov esi,edi ; esi->FontName |
155 | mov esi,edi ; esi->FontName |
238 | mov [.dest],edi ; ptr to load font |
156 | mov [.dest],edi ; ptr to load font |
239 | if ~ BGI_LEVEL eq KERNEL |
- | |
240 | mov eax, 70 |
157 | mov eax, 70 |
241 | mov ebx, .fontattr |
158 | mov ebx, .fontattr |
242 | mcall |
159 | mcall |
243 | test eax, eax |
160 | test eax, eax |
244 | jnz .fail |
161 | ;jnz .fail |
245 | dps2 '1' |
162 | dps2 '1' |
246 | mov eax, [.fileattr+32] |
163 | mov eax, [.fileattr+32] |
247 | mov [.fsize], eax |
164 | mov [.fsize], litt_end-litt_file |
248 | mov ebx,.fontinfo |
165 | mov ebx,.fontinfo |
249 | mov eax,70 |
166 | mov eax,70 |
250 | mcall ; ebx - file size |
167 | mcall ; ebx - file size |
251 | else |
- | |
252 | push edi esi edx |
- | |
253 | mov eax,.font |
168 | ;mov ebx, litt_end-litt_file |
254 | xor ebx,ebx |
- | |
255 | mov esi,12 |
- | |
256 | mov ecx,ebx |
- | |
257 | mov edx,edi |
169 | ;mov edi, litt_file |
258 | call fileread |
170 | ;mov [.dest],litt_file ; ptr to load font |
259 | pop edx esi edi |
- | |
260 | mov ebp,edi |
- | |
261 | add ebp,ebx |
- | |
262 | cmp ebp,0x50000 |
- | |
263 | ja .fail |
- | |
264 | end if |
171 | |
265 | cmp dword[edi],0x08084b50 ; 'PK',8,8 |
172 | cmp dword[edi],0x08084b50 ; 'PK',8,8 |
266 | jne .fail |
173 | jne .fail |
267 | dps2 '2' |
174 | dps2 '2' |
268 | inc edi |
175 | inc edi |
269 | mov eax,26 ; #EOF |
176 | mov eax,26 ; #EOF |
Line 332... | Line 239... | ||
332 | .exit: |
239 | .exit: |
333 | mov [esp+28],eax |
240 | mov [esp+28],eax |
334 | popa |
241 | popa |
335 | ret |
242 | ret |
Line 336... | Line -... | ||
336 | - | ||
337 | if ~ BGI_LEVEL eq KERNEL |
243 | |
338 | .fontinfo: |
244 | .fontinfo: |
339 | dd 0 |
245 | dd 0 |
340 | dd 0 |
246 | dd 0 |
341 | dd 0 |
247 | dd 0 |
342 | .fsize dd 0 |
248 | .fsize dd 0 |
343 | .dest dd 0 |
249 | .dest dd 0 |
344 | .fontfullname: |
250 | .fontfullname: |
345 | db BGIFONT_PATH |
251 | db BGIFONT_PATH |
Line 346... | Line 252... | ||
346 | .font db 'FONT.CHR',0 |
252 | .font db 'LITT.CHR',0 |
347 | 253 | ||
348 | .fontattr: |
254 | .fontattr: |
349 | dd 5 |
255 | dd 5 |
350 | dd 0 |
256 | dd 0 |
351 | dd 0 |
257 | dd 0 |
352 | dd 0 |
258 | dd 0 |
353 | dd .fileattr |
259 | dd .fileattr |
354 | db 0 |
260 | db 0 |
355 | dd .fontfullname |
261 | dd .fontfullname |
356 | .fileattr rd 40/4 |
- | |
357 | else |
- | |
358 | .dest dd 0 |
- | |
359 | .font db 'FONT CHR' |
- | |
Line 360... | Line 262... | ||
360 | .okflag db ' ',0 |
262 | .fileattr rd 40/4 |
361 | end if |
263 | |
362 | 264 | ||
363 | BGIfont_Coo: |
265 | BGIfont_Coo: |