~ubuntu-branches/ubuntu/gutsy/vnc4/gutsy

« back to all changes in this revision

Viewing changes to unix/xc/extras/FreeType/pascal/test/gmain.pas

  • Committer: Bazaar Package Importer
  • Author(s): Ola Lundqvist
  • Date: 2006-05-15 20:35:17 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20060515203517-l4lre1ku942mn26k
Tags: 4.1.1+X4.3.0-10
* Correction of critical security issue. Thanks to Martin Kogler
  <e9925248@student.tuwien.ac.at> that informed me about the issue,
  and provided the patch.
  This flaw was originally found by Steve Wiseman of intelliadmin.com.
* Applied patch from Javier Kohen <jkohen@users.sourceforge.net> that
  inform the user that only 8 first characters of the password will
  actually be used when typing more than 8 characters, closes:
  #355619.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
(*******************************************************************
 
2
 *
 
3
 *  gmain     graphics utility main interface                   1.1
 
4
 *
 
5
 *  This file defines a common interface, implemented in the body
 
6
 *  file 'gmain.c'. It relies on system dependent driver files,
 
7
 *  like 'gfs_os.c', whose interface is described in 'gdriver.h'.
 
8
 *
 
9
 *  Copyright 1996 David Turner, Robert Wilhelm and Werner Lemberg.
 
10
 *
 
11
 *  This file is part of the FreeType project, and may only be used
 
12
 *  modified and distributed under the terms of the FreeType project
 
13
 *  license, LICENSE.TXT. By continuing to use, modify or distribute
 
14
 *  this file you indicate that you have read the license and
 
15
 *  understand and accept it fully.
 
16
 *
 
17
 ******************************************************************)
 
18
 
 
19
Unit GMain;
 
20
 
 
21
interface
 
22
 
 
23
const
 
24
  Graphics_Mode_Mono = 1;
 
25
  Graphics_Mode_Gray = 2;
 
26
 
 
27
type
 
28
  TVioScreenBuffer = array[0..0] of Byte;
 
29
  PVioScreenBuffer = ^TVioScreenBuffer;
 
30
 
 
31
{$IFDEF OS2}
 
32
  Int = LongInt;
 
33
{$ELSE}
 
34
  Int = Integer;
 
35
{$ENDIF}
 
36
 
 
37
var
 
38
 
 
39
  Vio : PVioScreenBuffer;
 
40
  (* pointer to VRAM or display buffer *)
 
41
 
 
42
  vio_ScanLineWidth : Int;
 
43
  vio_Width         : Int;
 
44
  vio_Height        : Int;
 
45
 
 
46
  gray_palette : array[0..4] of Byte;  (* gray palette *)
 
47
 
 
48
  gcursor_x : int;
 
49
  gcursor_y : int;
 
50
 
 
51
  gwindow_width  : int;
 
52
  gwindow_height : int;
 
53
 
 
54
  function Set_Graph_Screen( mode : int ) : boolean;
 
55
  (* Set a Graphics Mode, chosen from the Graphics_Mode_xxx list *)
 
56
 
 
57
  function Restore_Screen : boolean;
 
58
  (* Restore a previous ( or text ) video mode *)
 
59
 
 
60
  procedure Display_Bitmap_On_Screen( var buff; line, col : Int );
 
61
  (* display bitmap of 'line' line, and 'col' columns ( each *)
 
62
  (* column mode of 1 byte                                   *)
 
63
 
 
64
  procedure Goto_XY( x, y : int );
 
65
 
 
66
  procedure Print_Str( str : string );
 
67
 
 
68
  procedure Print_XY ( x, y : int; str : string );
 
69
 
 
70
implementation
 
71
 
 
72
uses GDriver;
 
73
 
 
74
  type
 
75
    TFunction_8x8 = procedure( x, y : Int; c : char );
 
76
 
 
77
    TByte = array[0..0] of Byte;
 
78
    PByte = ^TByte;
 
79
 
 
80
  var
 
81
    Current_Mode : Byte;
 
82
    Print_8x8    : TFunction_8x8;
 
83
 
 
84
  const
 
85
    Font_8x8 : array[0..2047] of Byte
 
86
             = (
 
87
                 $00, $00, $00, $00, $00, $00, $00, $00,
 
88
                 $7E, $81, $A5, $81, $BD, $99, $81, $7E,
 
89
                 $7E, $FF, $DB, $FF, $C3, $E7, $FF, $7E,
 
90
                 $6C, $FE, $FE, $FE, $7C, $38, $10, $00,
 
91
                 $10, $38, $7C, $FE, $7C, $38, $10, $00,
 
92
                 $38, $7C, $38, $FE, $FE, $92, $10, $7C,
 
93
                 $00, $10, $38, $7C, $FE, $7C, $38, $7C,
 
94
                 $00, $00, $18, $3C, $3C, $18, $00, $00,
 
95
                 $FF, $FF, $E7, $C3, $C3, $E7, $FF, $FF,
 
96
                 $00, $3C, $66, $42, $42, $66, $3C, $00,
 
97
                 $FF, $C3, $99, $BD, $BD, $99, $C3, $FF,
 
98
                 $0F, $07, $0F, $7D, $CC, $CC, $CC, $78,
 
99
                 $3C, $66, $66, $66, $3C, $18, $7E, $18,
 
100
                 $3F, $33, $3F, $30, $30, $70, $F0, $E0,
 
101
                 $7F, $63, $7F, $63, $63, $67, $E6, $C0,
 
102
                 $99, $5A, $3C, $E7, $E7, $3C, $5A, $99,
 
103
                 $80, $E0, $F8, $FE, $F8, $E0, $80, $00,
 
104
                 $02, $0E, $3E, $FE, $3E, $0E, $02, $00,
 
105
                 $18, $3C, $7E, $18, $18, $7E, $3C, $18,
 
106
                 $66, $66, $66, $66, $66, $00, $66, $00,
 
107
                 $7F, $DB, $DB, $7B, $1B, $1B, $1B, $00,
 
108
                 $3E, $63, $38, $6C, $6C, $38, $86, $FC,
 
109
                 $00, $00, $00, $00, $7E, $7E, $7E, $00,
 
110
                 $18, $3C, $7E, $18, $7E, $3C, $18, $FF,
 
111
                 $18, $3C, $7E, $18, $18, $18, $18, $00,
 
112
                 $18, $18, $18, $18, $7E, $3C, $18, $00,
 
113
                 $00, $18, $0C, $FE, $0C, $18, $00, $00,
 
114
                 $00, $30, $60, $FE, $60, $30, $00, $00,
 
115
                 $00, $00, $C0, $C0, $C0, $FE, $00, $00,
 
116
                 $00, $24, $66, $FF, $66, $24, $00, $00,
 
117
                 $00, $18, $3C, $7E, $FF, $FF, $00, $00,
 
118
                 $00, $FF, $FF, $7E, $3C, $18, $00, $00,
 
119
                 $00, $00, $00, $00, $00, $00, $00, $00,
 
120
                 $18, $3C, $3C, $18, $18, $00, $18, $00,
 
121
                 $6C, $6C, $6C, $00, $00, $00, $00, $00,
 
122
                 $6C, $6C, $FE, $6C, $FE, $6C, $6C, $00,
 
123
                 $18, $7E, $C0, $7C, $06, $FC, $18, $00,
 
124
                 $00, $C6, $CC, $18, $30, $66, $C6, $00,
 
125
                 $38, $6C, $38, $76, $DC, $CC, $76, $00,
 
126
                 $30, $30, $60, $00, $00, $00, $00, $00,
 
127
                 $18, $30, $60, $60, $60, $30, $18, $00,
 
128
                 $60, $30, $18, $18, $18, $30, $60, $00,
 
129
                 $00, $66, $3C, $FF, $3C, $66, $00, $00,
 
130
                 $00, $18, $18, $7E, $18, $18, $00, $00,
 
131
                 $00, $00, $00, $00, $00, $18, $18, $30,
 
132
                 $00, $00, $00, $7E, $00, $00, $00, $00,
 
133
                 $00, $00, $00, $00, $00, $18, $18, $00,
 
134
                 $06, $0C, $18, $30, $60, $C0, $80, $00,
 
135
                 $7C, $CE, $DE, $F6, $E6, $C6, $7C, $00,
 
136
                 $30, $70, $30, $30, $30, $30, $FC, $00,
 
137
                 $78, $CC, $0C, $38, $60, $CC, $FC, $00,
 
138
                 $78, $CC, $0C, $38, $0C, $CC, $78, $00,
 
139
                 $1C, $3C, $6C, $CC, $FE, $0C, $1E, $00,
 
140
                 $FC, $C0, $F8, $0C, $0C, $CC, $78, $00,
 
141
                 $38, $60, $C0, $F8, $CC, $CC, $78, $00,
 
142
                 $FC, $CC, $0C, $18, $30, $30, $30, $00,
 
143
                 $78, $CC, $CC, $78, $CC, $CC, $78, $00,
 
144
                 $78, $CC, $CC, $7C, $0C, $18, $70, $00,
 
145
                 $00, $18, $18, $00, $00, $18, $18, $00,
 
146
                 $00, $18, $18, $00, $00, $18, $18, $30,
 
147
                 $18, $30, $60, $C0, $60, $30, $18, $00,
 
148
                 $00, $00, $7E, $00, $7E, $00, $00, $00,
 
149
                 $60, $30, $18, $0C, $18, $30, $60, $00,
 
150
                 $3C, $66, $0C, $18, $18, $00, $18, $00,
 
151
                 $7C, $C6, $DE, $DE, $DC, $C0, $7C, $00,
 
152
                 $30, $78, $CC, $CC, $FC, $CC, $CC, $00,
 
153
                 $FC, $66, $66, $7C, $66, $66, $FC, $00,
 
154
                 $3C, $66, $C0, $C0, $C0, $66, $3C, $00,
 
155
                 $F8, $6C, $66, $66, $66, $6C, $F8, $00,
 
156
                 $FE, $62, $68, $78, $68, $62, $FE, $00,
 
157
                 $FE, $62, $68, $78, $68, $60, $F0, $00,
 
158
                 $3C, $66, $C0, $C0, $CE, $66, $3A, $00,
 
159
                 $CC, $CC, $CC, $FC, $CC, $CC, $CC, $00,
 
160
                 $78, $30, $30, $30, $30, $30, $78, $00,
 
161
                 $1E, $0C, $0C, $0C, $CC, $CC, $78, $00,
 
162
                 $E6, $66, $6C, $78, $6C, $66, $E6, $00,
 
163
                 $F0, $60, $60, $60, $62, $66, $FE, $00,
 
164
                 $C6, $EE, $FE, $FE, $D6, $C6, $C6, $00,
 
165
                 $C6, $E6, $F6, $DE, $CE, $C6, $C6, $00,
 
166
                 $38, $6C, $C6, $C6, $C6, $6C, $38, $00,
 
167
                 $FC, $66, $66, $7C, $60, $60, $F0, $00,
 
168
                 $7C, $C6, $C6, $C6, $D6, $7C, $0E, $00,
 
169
                 $FC, $66, $66, $7C, $6C, $66, $E6, $00,
 
170
                 $7C, $C6, $E0, $78, $0E, $C6, $7C, $00,
 
171
                 $FC, $B4, $30, $30, $30, $30, $78, $00,
 
172
                 $CC, $CC, $CC, $CC, $CC, $CC, $FC, $00,
 
173
                 $CC, $CC, $CC, $CC, $CC, $78, $30, $00,
 
174
                 $C6, $C6, $C6, $C6, $D6, $FE, $6C, $00,
 
175
                 $C6, $C6, $6C, $38, $6C, $C6, $C6, $00,
 
176
                 $CC, $CC, $CC, $78, $30, $30, $78, $00,
 
177
                 $FE, $C6, $8C, $18, $32, $66, $FE, $00,
 
178
                 $78, $60, $60, $60, $60, $60, $78, $00,
 
179
                 $C0, $60, $30, $18, $0C, $06, $02, $00,
 
180
                 $78, $18, $18, $18, $18, $18, $78, $00,
 
181
                 $10, $38, $6C, $C6, $00, $00, $00, $00,
 
182
                 $00, $00, $00, $00, $00, $00, $00, $FF,
 
183
                 $30, $30, $18, $00, $00, $00, $00, $00,
 
184
                 $00, $00, $78, $0C, $7C, $CC, $76, $00,
 
185
                 $E0, $60, $60, $7C, $66, $66, $DC, $00,
 
186
                 $00, $00, $78, $CC, $C0, $CC, $78, $00,
 
187
                 $1C, $0C, $0C, $7C, $CC, $CC, $76, $00,
 
188
                 $00, $00, $78, $CC, $FC, $C0, $78, $00,
 
189
                 $38, $6C, $64, $F0, $60, $60, $F0, $00,
 
190
                 $00, $00, $76, $CC, $CC, $7C, $0C, $F8,
 
191
                 $E0, $60, $6C, $76, $66, $66, $E6, $00,
 
192
                 $30, $00, $70, $30, $30, $30, $78, $00,
 
193
                 $0C, $00, $1C, $0C, $0C, $CC, $CC, $78,
 
194
                 $E0, $60, $66, $6C, $78, $6C, $E6, $00,
 
195
                 $70, $30, $30, $30, $30, $30, $78, $00,
 
196
                 $00, $00, $CC, $FE, $FE, $D6, $D6, $00,
 
197
                 $00, $00, $B8, $CC, $CC, $CC, $CC, $00,
 
198
                 $00, $00, $78, $CC, $CC, $CC, $78, $00,
 
199
                 $00, $00, $DC, $66, $66, $7C, $60, $F0,
 
200
                 $00, $00, $76, $CC, $CC, $7C, $0C, $1E,
 
201
                 $00, $00, $DC, $76, $62, $60, $F0, $00,
 
202
                 $00, $00, $7C, $C0, $70, $1C, $F8, $00,
 
203
                 $10, $30, $FC, $30, $30, $34, $18, $00,
 
204
                 $00, $00, $CC, $CC, $CC, $CC, $76, $00,
 
205
                 $00, $00, $CC, $CC, $CC, $78, $30, $00,
 
206
                 $00, $00, $C6, $C6, $D6, $FE, $6C, $00,
 
207
                 $00, $00, $C6, $6C, $38, $6C, $C6, $00,
 
208
                 $00, $00, $CC, $CC, $CC, $7C, $0C, $F8,
 
209
                 $00, $00, $FC, $98, $30, $64, $FC, $00,
 
210
                 $1C, $30, $30, $E0, $30, $30, $1C, $00,
 
211
                 $18, $18, $18, $00, $18, $18, $18, $00,
 
212
                 $E0, $30, $30, $1C, $30, $30, $E0, $00,
 
213
                 $76, $DC, $00, $00, $00, $00, $00, $00,
 
214
                 $00, $10, $38, $6C, $C6, $C6, $FE, $00,
 
215
                 $7C, $C6, $C0, $C6, $7C, $0C, $06, $7C,
 
216
                 $00, $CC, $00, $CC, $CC, $CC, $76, $00,
 
217
                 $1C, $00, $78, $CC, $FC, $C0, $78, $00,
 
218
                 $7E, $81, $3C, $06, $3E, $66, $3B, $00,
 
219
                 $CC, $00, $78, $0C, $7C, $CC, $76, $00,
 
220
                 $E0, $00, $78, $0C, $7C, $CC, $76, $00,
 
221
                 $30, $30, $78, $0C, $7C, $CC, $76, $00,
 
222
                 $00, $00, $7C, $C6, $C0, $78, $0C, $38,
 
223
                 $7E, $81, $3C, $66, $7E, $60, $3C, $00,
 
224
                 $CC, $00, $78, $CC, $FC, $C0, $78, $00,
 
225
                 $E0, $00, $78, $CC, $FC, $C0, $78, $00,
 
226
                 $CC, $00, $70, $30, $30, $30, $78, $00,
 
227
                 $7C, $82, $38, $18, $18, $18, $3C, $00,
 
228
                 $E0, $00, $70, $30, $30, $30, $78, $00,
 
229
                 $C6, $10, $7C, $C6, $FE, $C6, $C6, $00,
 
230
                 $30, $30, $00, $78, $CC, $FC, $CC, $00,
 
231
                 $1C, $00, $FC, $60, $78, $60, $FC, $00,
 
232
                 $00, $00, $7F, $0C, $7F, $CC, $7F, $00,
 
233
                 $3E, $6C, $CC, $FE, $CC, $CC, $CE, $00,
 
234
                 $78, $84, $00, $78, $CC, $CC, $78, $00,
 
235
                 $00, $CC, $00, $78, $CC, $CC, $78, $00,
 
236
                 $00, $E0, $00, $78, $CC, $CC, $78, $00,
 
237
                 $78, $84, $00, $CC, $CC, $CC, $76, $00,
 
238
                 $00, $E0, $00, $CC, $CC, $CC, $76, $00,
 
239
                 $00, $CC, $00, $CC, $CC, $7C, $0C, $F8,
 
240
                 $C3, $18, $3C, $66, $66, $3C, $18, $00,
 
241
                 $CC, $00, $CC, $CC, $CC, $CC, $78, $00,
 
242
                 $18, $18, $7E, $C0, $C0, $7E, $18, $18,
 
243
                 $38, $6C, $64, $F0, $60, $E6, $FC, $00,
 
244
                 $CC, $CC, $78, $30, $FC, $30, $FC, $30,
 
245
                 $F8, $CC, $CC, $FA, $C6, $CF, $C6, $C3,
 
246
                 $0E, $1B, $18, $3C, $18, $18, $D8, $70,
 
247
                 $1C, $00, $78, $0C, $7C, $CC, $76, $00,
 
248
                 $38, $00, $70, $30, $30, $30, $78, $00,
 
249
                 $00, $1C, $00, $78, $CC, $CC, $78, $00,
 
250
                 $00, $1C, $00, $CC, $CC, $CC, $76, $00,
 
251
                 $00, $F8, $00, $B8, $CC, $CC, $CC, $00,
 
252
                 $FC, $00, $CC, $EC, $FC, $DC, $CC, $00,
 
253
                 $3C, $6C, $6C, $3E, $00, $7E, $00, $00,
 
254
                 $38, $6C, $6C, $38, $00, $7C, $00, $00,
 
255
                 $18, $00, $18, $18, $30, $66, $3C, $00,
 
256
                 $00, $00, $00, $FC, $C0, $C0, $00, $00,
 
257
                 $00, $00, $00, $FC, $0C, $0C, $00, $00,
 
258
                 $C6, $CC, $D8, $36, $6B, $C2, $84, $0F,
 
259
                 $C3, $C6, $CC, $DB, $37, $6D, $CF, $03,
 
260
                 $18, $00, $18, $18, $3C, $3C, $18, $00,
 
261
                 $00, $33, $66, $CC, $66, $33, $00, $00,
 
262
                 $00, $CC, $66, $33, $66, $CC, $00, $00,
 
263
                 $22, $88, $22, $88, $22, $88, $22, $88,
 
264
                 $55, $AA, $55, $AA, $55, $AA, $55, $AA,
 
265
                 $DB, $F6, $DB, $6F, $DB, $7E, $D7, $ED,
 
266
                 $18, $18, $18, $18, $18, $18, $18, $18,
 
267
                 $18, $18, $18, $18, $F8, $18, $18, $18,
 
268
                 $18, $18, $F8, $18, $F8, $18, $18, $18,
 
269
                 $36, $36, $36, $36, $F6, $36, $36, $36,
 
270
                 $00, $00, $00, $00, $FE, $36, $36, $36,
 
271
                 $00, $00, $F8, $18, $F8, $18, $18, $18,
 
272
                 $36, $36, $F6, $06, $F6, $36, $36, $36,
 
273
                 $36, $36, $36, $36, $36, $36, $36, $36,
 
274
                 $00, $00, $FE, $06, $F6, $36, $36, $36,
 
275
                 $36, $36, $F6, $06, $FE, $00, $00, $00,
 
276
                 $36, $36, $36, $36, $FE, $00, $00, $00,
 
277
                 $18, $18, $F8, $18, $F8, $00, $00, $00,
 
278
                 $00, $00, $00, $00, $F8, $18, $18, $18,
 
279
                 $18, $18, $18, $18, $1F, $00, $00, $00,
 
280
                 $18, $18, $18, $18, $FF, $00, $00, $00,
 
281
                 $00, $00, $00, $00, $FF, $18, $18, $18,
 
282
                 $18, $18, $18, $18, $1F, $18, $18, $18,
 
283
                 $00, $00, $00, $00, $FF, $00, $00, $00,
 
284
                 $18, $18, $18, $18, $FF, $18, $18, $18,
 
285
                 $18, $18, $1F, $18, $1F, $18, $18, $18,
 
286
                 $36, $36, $36, $36, $37, $36, $36, $36,
 
287
                 $36, $36, $37, $30, $3F, $00, $00, $00,
 
288
                 $00, $00, $3F, $30, $37, $36, $36, $36,
 
289
                 $36, $36, $F7, $00, $FF, $00, $00, $00,
 
290
                 $00, $00, $FF, $00, $F7, $36, $36, $36,
 
291
                 $36, $36, $37, $30, $37, $36, $36, $36,
 
292
                 $00, $00, $FF, $00, $FF, $00, $00, $00,
 
293
                 $36, $36, $F7, $00, $F7, $36, $36, $36,
 
294
                 $18, $18, $FF, $00, $FF, $00, $00, $00,
 
295
                 $36, $36, $36, $36, $FF, $00, $00, $00,
 
296
                 $00, $00, $FF, $00, $FF, $18, $18, $18,
 
297
                 $00, $00, $00, $00, $FF, $36, $36, $36,
 
298
                 $36, $36, $36, $36, $3F, $00, $00, $00,
 
299
                 $18, $18, $1F, $18, $1F, $00, $00, $00,
 
300
                 $00, $00, $1F, $18, $1F, $18, $18, $18,
 
301
                 $00, $00, $00, $00, $3F, $36, $36, $36,
 
302
                 $36, $36, $36, $36, $FF, $36, $36, $36,
 
303
                 $18, $18, $FF, $18, $FF, $18, $18, $18,
 
304
                 $18, $18, $18, $18, $F8, $00, $00, $00,
 
305
                 $00, $00, $00, $00, $1F, $18, $18, $18,
 
306
                 $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,
 
307
                 $00, $00, $00, $00, $FF, $FF, $FF, $FF,
 
308
                 $F0, $F0, $F0, $F0, $F0, $F0, $F0, $F0,
 
309
                 $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F,
 
310
                 $FF, $FF, $FF, $FF, $00, $00, $00, $00,
 
311
                 $00, $00, $76, $DC, $C8, $DC, $76, $00,
 
312
                 $00, $78, $CC, $F8, $CC, $F8, $C0, $C0,
 
313
                 $00, $FC, $CC, $C0, $C0, $C0, $C0, $00,
 
314
                 $00, $00, $FE, $6C, $6C, $6C, $6C, $00,
 
315
                 $FC, $CC, $60, $30, $60, $CC, $FC, $00,
 
316
                 $00, $00, $7E, $D8, $D8, $D8, $70, $00,
 
317
                 $00, $66, $66, $66, $66, $7C, $60, $C0,
 
318
                 $00, $76, $DC, $18, $18, $18, $18, $00,
 
319
                 $FC, $30, $78, $CC, $CC, $78, $30, $FC,
 
320
                 $38, $6C, $C6, $FE, $C6, $6C, $38, $00,
 
321
                 $38, $6C, $C6, $C6, $6C, $6C, $EE, $00,
 
322
                 $1C, $30, $18, $7C, $CC, $CC, $78, $00,
 
323
                 $00, $00, $7E, $DB, $DB, $7E, $00, $00,
 
324
                 $06, $0C, $7E, $DB, $DB, $7E, $60, $C0,
 
325
                 $38, $60, $C0, $F8, $C0, $60, $38, $00,
 
326
                 $78, $CC, $CC, $CC, $CC, $CC, $CC, $00,
 
327
                 $00, $7E, $00, $7E, $00, $7E, $00, $00,
 
328
                 $18, $18, $7E, $18, $18, $00, $7E, $00,
 
329
                 $60, $30, $18, $30, $60, $00, $FC, $00,
 
330
                 $18, $30, $60, $30, $18, $00, $FC, $00,
 
331
                 $0E, $1B, $1B, $18, $18, $18, $18, $18,
 
332
                 $18, $18, $18, $18, $18, $D8, $D8, $70,
 
333
                 $18, $18, $00, $7E, $00, $18, $18, $00,
 
334
                 $00, $76, $DC, $00, $76, $DC, $00, $00,
 
335
                 $38, $6C, $6C, $38, $00, $00, $00, $00,
 
336
                 $00, $00, $00, $18, $18, $00, $00, $00,
 
337
                 $00, $00, $00, $00, $18, $00, $00, $00,
 
338
                 $0F, $0C, $0C, $0C, $EC, $6C, $3C, $1C,
 
339
                 $58, $6C, $6C, $6C, $6C, $00, $00, $00,
 
340
                 $70, $98, $30, $60, $F8, $00, $00, $00,
 
341
                 $00, $00, $3C, $3C, $3C, $3C, $00, $00,
 
342
                 $00, $00, $00, $00, $00, $00, $00, $00
 
343
               );
 
344
 
 
345
{$F+}
 
346
  procedure Print_8x8_Mono( x, y : Int; c : char );
 
347
  var
 
348
    offset, i : Int;
 
349
    bitm      : PByte;
 
350
  begin
 
351
    offset := x + y*Vio_ScanLineWidth*8;
 
352
    bitm   := @Font_8x8[ ord(c)*8 ];
 
353
 
 
354
    for i := 0 to 7 do
 
355
    begin
 
356
      Vio^[offset] := bitm^[i];
 
357
      inc( offset, Vio_ScanLineWidth );
 
358
    end;
 
359
  end;
 
360
 
 
361
  procedure Print_8x8_Gray( x, y : Int; c : char );
 
362
  var
 
363
    offset, i, bit : Int;
 
364
 
 
365
    bitm : PByte;
 
366
  begin
 
367
    offset := ( x + y*Vio_ScanLineWidth )*8;
 
368
    bitm   := @font_8x8[ ord(c)*8 ];
 
369
 
 
370
    for i := 0 to 7 do
 
371
    begin
 
372
      bit := $80;
 
373
      while bit > 0 do
 
374
      begin
 
375
        if ( bit and bitm^[i] <> 0 ) then Vio^[offset] := $FF
 
376
                                     else Vio^[offset] := $00;
 
377
        bit := bit shr 1;
 
378
        inc( offset );
 
379
      end;
 
380
 
 
381
      inc( offset, Vio_ScanLineWidth-8 );
 
382
    end;
 
383
 
 
384
  end;
 
385
{$F-}
 
386
 
 
387
  function Set_Graph_Screen( mode : Int ): boolean;
 
388
  begin
 
389
    Set_Graph_Screen := False;
 
390
 
 
391
    gcursor_x := 0;
 
392
    gcursor_y := 0;
 
393
 
 
394
    case mode of
 
395
 
 
396
      Graphics_Mode_Mono : begin
 
397
                             if not Driver_Set_Graphics(mode) then exit;
 
398
                             gwindow_width  := vio_ScanLineWidth;
 
399
                             gwindow_height := vio_Height div 8;
 
400
 
 
401
                             Print_8x8 := Print_8x8_Mono;
 
402
                           end;
 
403
 
 
404
      Graphics_Mode_Gray : begin
 
405
                             if not Driver_Set_Graphics(mode) then exit;
 
406
                             gwindow_width  := vio_ScanLineWidth div 8;
 
407
                             gwindow_height := vio_Height div 8;
 
408
 
 
409
                             Print_8x8 := Print_8x8_Gray;
 
410
                           end;
 
411
    else
 
412
      exit;
 
413
    end;
 
414
 
 
415
    Set_Graph_Screen := True;
 
416
  end;
 
417
 
 
418
 
 
419
  function Restore_Screen : boolean;
 
420
  begin
 
421
    gcursor_x := 0;
 
422
    gcursor_y := 0;
 
423
 
 
424
    gwindow_height := 0;
 
425
    gwindow_width  := 0;
 
426
 
 
427
    Restore_Screen := Driver_Restore_Mode;
 
428
  end;
 
429
 
 
430
  procedure Display_Bitmap_On_Screen;
 
431
  begin
 
432
    Driver_Display_Bitmap( buff, line, col );
 
433
  end;
 
434
 
 
435
  procedure Goto_XY( x, y : Int );
 
436
  begin
 
437
    gcursor_x := x;
 
438
    gcursor_y := y;
 
439
  end;
 
440
 
 
441
  procedure Print_Str( str : string );
 
442
  var
 
443
    i : Int;
 
444
  begin
 
445
    for i := 1 to length(str) do
 
446
    begin
 
447
      case str[i] of
 
448
 
 
449
        #13 : begin
 
450
                gcursor_x := 0;
 
451
                inc( gcursor_y );
 
452
                if gcursor_y > gwindow_height then gcursor_y := 0;
 
453
              end;
 
454
      else
 
455
        Print_8x8( gcursor_x, gcursor_y, str[i] );
 
456
        inc( gcursor_x );
 
457
        if gcursor_x >= gwindow_width then
 
458
        begin
 
459
          gcursor_x := 0;
 
460
          inc( gcursor_y );
 
461
          if gcursor_y >= gwindow_height then gcursor_y := 0;
 
462
        end
 
463
      end
 
464
    end
 
465
  end;
 
466
 
 
467
  procedure Print_XY( x, y : Int; str : string );
 
468
  begin
 
469
    Goto_XY( x, y );
 
470
    Print_Str( str );
 
471
  end;
 
472
 
 
473
end.
 
474