2
This file is part of the Free Pascal run time library.
4
A file in Amiga system run time library.
5
Copyright (c) 2001-2003 by Nils Sjoholm
6
member of the Amiga RTL development team.
8
See the file COPYING.FPC, included in this distribution,
9
for details about the copyright.
11
This program is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15
**********************************************************************}
20
First version of this unit.
23
Updated to use fpc 1.0.7
24
Added array of const and some
28
Added the defines use_amiga_smartlink and
32
Changed cardinal > longword.
33
Changed startcode for unit.
36
nils.sjoholm@mailbox.swipnet.se
41
{$I useamigasmartlink.inc}
42
{$ifdef use_amiga_smartlink}
44
{$endif use_amiga_smartlink}
52
** $VER: identify.h 13.0 (11.09.2001)
54
** identify.library definitions
56
** (C) Copyright 1996-2000 Richard Koerber
57
** All Rights Reserved.
60
CONST _IDTAGS = $CD450000;
62
{ --------------------------------------------------------------------------}
63
{ Generic library informations }
65
CONST IDENTIFYVERSION = 13;
66
IDENTIFYNAME : PChar = 'identify.library';
68
TYPE pIdentifyBase = ^tIdentifyBase;
69
TIdentifyBase = Record
70
ifyb_LibNode :tLibrary;
73
CONST IDENTIFYBUFLEN = 50; { default buffer length }
75
{ --------------------------------------------------------------------------}
78
IDTAG_ConfigDev = _IDTAGS+$00; { "p_ConfigDev" ConfigDev }
79
{ structure to be evaluated }
80
IDTAG_ManufID = _IDTAGS+$01; { UWORD manufacturer ID if no }
81
{ ConfigDev is available }
82
IDTAG_ProdID = _IDTAGS+$02; { UBYTE product ID if no }
83
{ ConfigDev is available }
84
IDTAG_StrLength = _IDTAGS+$03; { UWORD of maximum buffer length, }
85
{ including termination. Default }
87
IDTAG_ManufStr = _IDTAGS+$04; { STRPTR of manufacturer name }
89
IDTAG_ProdStr = _IDTAGS+$05; { STRPTR of product name }
91
IDTAG_ClassStr = _IDTAGS+$06; { STRPTR of product class }
93
IDTAG_DeadStr = _IDTAGS+$07; { STRPTR deadend or recoverable alert? }
94
IDTAG_SubsysStr = _IDTAGS+$08; { STRPTR alert subsystem }
95
IDTAG_GeneralStr = _IDTAGS+$09; { STRPTR alert general cause }
96
IDTAG_SpecStr = _IDTAGS+$0A; { STRPTR alert specific cause }
97
IDTAG_FuncNameStr = _IDTAGS+$0B; { STRPTR function name }
98
IDTAG_Expansion = _IDTAGS+$0C; { "pp_ConfigDev" ConfigDev for a }
99
{ complete expansion check. Init }
100
{ the variable with NULL and pass }
101
{ a pointer to it using this tag. }
102
IDTAG_Secondary = _IDTAGS+$0D; { BOOL warn for secondary expansion }
103
{ boards (defaults to FALSE) }
104
IDTAG_ClassID = _IDTAGS+$0E; { ULONG * class ID of the provided }
105
{ expansion board (see below) [V8] }
106
IDTAG_Localize = _IDTAGS+$0F; { BOOL return localized strings }
107
{ (defaults to TRUE) [V8] }
108
IDTAG_NULL4NA = _IDTAGS+$10; { BOOL return NULL for not available, }
109
{ else return a string (defaults to }
112
{ --------------------------------------------------------------------------}
113
{ Hardware description types }
115
IDHW_SYSTEM = 0; { System (Amiga,DraCo,...) [V2] }
116
IDHW_CPU = 1; { CPU (68000,68010,...,68060) }
117
IDHW_FPU = 2; { FPU (---,68881,68882,68040,68060) }
118
IDHW_MMU = 3; { MMU (---,68852,68030,68040,68060) }
119
IDHW_OSVER = 4; { OS Version (Vx.x) }
120
IDHW_EXECVER = 5; { Exec Version (Vx.x) }
121
IDHW_WBVER = 6; { Workbench Version (---,Vx.x) }
122
IDHW_ROMSIZE = 7; { OS ROM Size (xKB, xMB) }
123
IDHW_CHIPSET = 8; { Chipset (OCS,ECS,AGA,DraCo) }
124
IDHW_GFXSYS = 9; { Graphic OS (AmigaOS, CyberGraphX, ...) }
125
IDHW_CHIPRAM = 10; { Chip RAM (xKB, xMB, xGB) }
126
IDHW_FASTRAM = 11; { Fast RAM (xKB, xMB, xGB) }
127
IDHW_RAM = 12; { Total RAM (xKB, xMB, xGB) }
128
IDHW_SETPATCHVER = 13; { SetPatch Version (---,Vx.x) [V4] }
129
IDHW_AUDIOSYS = 14; { Audio OS (AmigaOS, AHI, ...) [V5] }
130
IDHW_OSNR = 15; { AmigaOS (2.04, 3.1, ...) }
131
IDHW_VMMCHIPRAM = 16; { VMM Chip RAM ( *KB, *MB, *GB) }
132
IDHW_VMMFASTRAM = 17; { VMM Fast RAM ( *KB, *MB, *GB) }
133
IDHW_VMMRAM = 18; { VMM Total RAM ( *KB, *MB, *GB) }
134
IDHW_PLNCHIPRAM = 19; { Plain Chip RAM ( *KB, *MB, *GB) }
135
IDHW_PLNFASTRAM = 20; { Plain Fast RAM ( *KB, *MB, *GB) }
136
IDHW_PLNRAM = 21; { Plain Total RAM (*KB, *MB, *GB) }
137
IDHW_VBR = 22; { Vector Base Register [V6] }
138
IDHW_LASTALERT = 23; { Last Alert code }
139
IDHW_VBLANKFREQ = 24; { VBlank Frequency }
140
IDHW_POWERFREQ = 25; { Power Frequency }
141
IDHW_ECLOCK = 26; { EClock }
142
IDHW_SLOWRAM = 27; { Plain Slow RAM ( *KB, *MB, *GB) }
143
IDHW_GARY = 28; { Gary (---,Normal,...) }
144
IDHW_RAMSEY = 29; { RAMSEY (---,D,F) }
145
IDHW_BATTCLOCK = 30; { Battery Backed Up Clock (---,Found) }
146
IDHW_CHUNKYPLANAR = 31; { Chunky To Planar Hardware (---,Found) [V7] }
147
IDHW_POWERPC = 32; { PowerPC present? (---,Found) }
148
IDHW_PPCCLOCK = 33; { PowerPC clock (unit MHz) }
149
IDHW_CPUREV = 34; { CPU revision [V8] }
150
IDHW_CPUCLOCK = 35; { CPU clock (unit MHz) }
151
IDHW_FPUCLOCK = 36; { FPU clock (unit MHz) }
152
IDHW_RAMACCESS = 37; { Main board RAM access time (unit ns) }
153
IDHW_RAMWIDTH = 38; { Main board RAM width (bit) }
154
IDHW_RAMCAS = 39; { Main board RAM CAS mode }
155
IDHW_RAMBANDWIDTH = 40; { Main board RAM bandwidth }
156
IDHW_TCPIP = 41; { TCP/IP stack [V9] }
157
IDHW_PPCOS = 42; { PowerPC OS }
158
IDHW_AGNUS = 43; { Agnus chip revision }
159
IDHW_AGNUSMODE = 44; { Agnus chip mode }
160
IDHW_DENISE = 45; { Denise chip version [V10] }
161
IDHW_DENISEREV = 46; { Denise chip revision }
162
IDHW_BOINGBAG = 47; { BoingBag number [V12] }
163
IDHW_NUMBEROF = 48; { Number of types, PRIVATE! }
165
{ --------------------------------------------------------------------------}
166
{ IDHW_SYSTEM numerical result codes }
168
IDSYS_AMIGA1000 = 0; { Amiga 1000 }
169
IDSYS_AMIGAOCS = 1; { OCS Amiga 500/2000 }
170
IDSYS_AMIGAECS = 2; { ECS Amiga 500/2000 }
171
IDSYS_AMIGA500 = 3; { Amiga 500 }
172
IDSYS_AMIGA2000 = 4; { Amiga 2000 }
173
IDSYS_AMIGA3000 = 5; { Amiga 3000 }
174
IDSYS_CDTV = 6; { CDTV }
175
IDSYS_AMIGA600 = 7; { Amiga 600 }
176
IDSYS_CD32 = 8; { CD32 }
177
IDSYS_AMIGA1200 = 9; { Amiga 1200 }
178
IDSYS_AMIGA4000 = 10; { Amiga 4000 }
179
IDSYS_DRACO = 11; { DraCo }
180
IDSYS_UAE = 12; { Ubiquitous Amiga Emulator }
181
IDSYS_AMIGA4000T = 13; { Amiga 4000 Tower }
183
{ --------------------------------------------------------------------------}
184
{ IDHW_CPU numerical result codes }
186
IDCPU_68000 = 0; { 68000 }
187
IDCPU_68010 = 1; { 68010 }
188
IDCPU_68020 = 2; { 68020 }
189
IDCPU_68030 = 3; { 68030 }
190
IDCPU_68EC030 = 4; { 68EC030 (without MMU) }
191
IDCPU_68040 = 5; { 68040 }
192
IDCPU_68LC040 = 6; { 68LC040 (without FPU) }
193
IDCPU_68060 = 7; { 68060 }
194
IDCPU_68LC060 = 8; { 68LC060 (without FPU) }
196
{ --------------------------------------------------------------------------}
197
{ IDHW_FPU numerical result codes }
199
IDFPU_NONE = 0; { no FPU }
200
IDFPU_68881 = 1; { 68881 }
201
IDFPU_68882 = 2; { 68882 }
202
IDFPU_68040 = 3; { 68040 }
203
IDFPU_68060 = 4; { 68060 }
205
{ --------------------------------------------------------------------------}
206
{ IDHW_MMU numerical result codes }
208
IDMMU_NONE = 0; { no MMU }
209
IDMMU_68851 = 1; { 68851 }
210
IDMMU_68030 = 2; { 68030 }
211
IDMMU_68040 = 3; { 68040 }
212
IDMMU_68060 = 4; { 68060 }
214
{ --------------------------------------------------------------------------}
215
{ IDHW_OSNR numerical result codes }
217
IDOS_UNKNOWN = 0; { <V36 or >V40 }
218
IDOS_2_0 = 1; { OS2.0 (V36) }
219
IDOS_2_04 = 2; { OS2.04 (V37) }
220
IDOS_2_1 = 3; { OS2.1 (V38) }
221
IDOS_3_0 = 4; { OS3.0 (V39) }
222
IDOS_3_1 = 5; { OS3.1 (V40) }
223
IDOS_3_5 = 6; { OS3.5 (V44) }
224
IDOS_3_9 = 7; { OS3.9 (V45) }
226
{ --------------------------------------------------------------------------}
227
{ IDHW_CHIPSET numerical result codes }
229
IDCS_OCS = 0; { OCS }
230
IDCS_ECS = 1; { ECS }
231
IDCS_AGA = 2; { AGA }
232
IDCS_ALTAIS = 3; { DraCo Altais }
233
IDCS_NECS = 4; { Nearly ECS (no HR-Agnus or HR-Denise) }
235
{ --------------------------------------------------------------------------}
236
{ IDHW_GFXSYS numerical result codes }
238
IDGOS_AMIGAOS = 0; { Plain AmigaOS }
239
IDGOS_EGS = 1; { EGS }
240
IDGOS_RETINA = 2; { Retina }
241
IDGOS_GRAFFITI = 3; { Graffiti }
242
IDGOS_TIGA = 4; { TIGA }
243
IDGOS_PROBENCH = 5; { Merlin ProBench }
244
IDGOS_PICASSO = 6; { Picasso }
245
IDGOS_CGX = 7; { CyberGraphX }
246
IDGOS_CGX3 = 8; { CyberGraphX 3D }
247
IDGOS_PICASSO96 = 9; { Picasso96 }
248
IDGOS_CGX4 = 10; { CyberGraphX V4 }
250
{ --------------------------------------------------------------------------}
251
{ IDHW_AUDIOSYS numerical result codes }
253
IDAOS_AMIGAOS = 0; { Plain AmigaOS }
254
IDAOS_MAESTIX = 1; { MaestroPro driver }
255
IDAOS_TOCCATA = 2; { Toccata driver }
256
IDAOS_PRELUDE = 3; { Prelude driver }
257
IDAOS_AHI = 4; { AHI }
258
IDAOS_MACROAUDIO = 5; { MacroAudio }
260
{ --------------------------------------------------------------------------}
261
{ IDHW_GARY numerical result codes }
263
IDGRY_NONE = 0; { No Gary available }
264
IDGRY_NORMAL = 1; { Normal Gary }
265
IDGRY_ENHANCED = 2; { Enhanced Gary }
267
{ --------------------------------------------------------------------------}
268
{ IDHW_RAMSEY numerical result codes }
270
IDRSY_NONE = 0; { No RamSey available }
271
IDRSY_REVD = 1; { RamSey Revision D }
272
IDRSY_REVF = 2; { RamSey Revision F }
274
{ --------------------------------------------------------------------------}
275
{ IDHW_POWERPC numerical result codes }
277
IDPPC_NONE = 0; { No PowerPC implemented }
278
IDPPC_OTHER = 1; { Another PowerPC }
279
IDPPC_602 = 2; { 602 }
280
IDPPC_603 = 3; { 603 }
281
IDPPC_603E = 4; { 603e }
282
IDPPC_603P = 5; { 603p }
283
IDPPC_604 = 6; { 604 }
284
IDPPC_604E = 7; { 604e }
285
IDPPC_620 = 8; { 620 }
287
{ --------------------------------------------------------------------------}
288
{ IDHW_RAMCAS numerical result codes }
290
IDCAS_NONE = 0; { Not available }
291
IDCAS_NORMAL = 1; { Normal access }
292
IDCAS_DOUBLE = 2; { Double access }
294
{ --------------------------------------------------------------------------}
295
{ IDHW_TCPIP numerical result codes }
297
IDTCP_NONE = 0; { Not available }
298
IDTCP_AMITCP = 1; { AmiTCP }
299
IDTCP_MIAMI = 2; { Miami }
300
IDTCP_TERMITE = 3; { TermiteTCP }
301
IDTCP_GENESIS = 4; { GENESiS }
302
IDTCP_MIAMIDX = 5; { MiamiDx }
304
{ --------------------------------------------------------------------------}
305
{ IDHW_PPCOS numerical result codes }
307
IDPOS_NONE = 0; { None }
308
IDPOS_POWERUP = 1; { PowerUP (Phase 5) }
309
IDPOS_WARPOS = 2; { WarpOS (Haage&Partner) }
311
{ --------------------------------------------------------------------------}
312
{ IDHW_AGNUS numerical result codes }
314
IDAG_NONE = 0; { None }
315
IDAG_UNKNOWN = 1; { Unknown Agnus }
316
IDAG_8361 = 2; { Agnus 8361 }
317
IDAG_8367 = 3; { Agnus 8367 }
318
IDAG_8370 = 4; { Agnus 8370 }
319
IDAG_8371 = 5; { Agnus 8371 }
320
IDAG_8372_R4 = 6; { Agnus 8372 Rev. 1-4 }
321
IDAG_8372_R5 = 7; { Agnus 8372 Rev. 5 }
322
IDAG_8374_R2 = 8; { Alice 8374 Rev. 1-2 }
323
IDAG_8374_R3 = 9; { Alice 8374 Rev. 3-4 }
325
{ --------------------------------------------------------------------------}
326
{ IDHW_DENISE numerical result codes }
328
IDDN_NONE = 0; { None }
329
IDDN_UNKNOWN = 1; { Unknown Denise (new model?! :-) }
330
IDDN_8362 = 2; { Denise 8362 }
331
IDDN_8373 = 3; { Denise 8373 }
332
IDDN_8364 = 4; { Lisa 8364 }
334
{ --------------------------------------------------------------------------}
335
{ IDHW_AGNUSMODE numerical result codes }
337
IDAM_NONE = 0; { None }
338
IDAM_NTSC = 1; { NTSC Agnus }
339
IDAM_PAL = 2; { PAL Agnus }
341
{ --------------------------------------------------------------------------}
342
{ IDTAG_ClassID numerical result codes }
344
IDCID_UNKNOWN = 0; { unknown functionality }
345
IDCID_MISC = 1; { miscellaneous expansion }
346
IDCID_TURBO = 2; { accelerator }
347
IDCID_TURBORAM = 3; { accelerator RAM }
348
IDCID_TURBOHD = 4; { accelerator + some HD controller }
349
IDCID_TURBOIDE = 5; { accelerator + AT-IDE controller }
350
IDCID_TURBOSCSIHD = 6; { accelerator + SCSI host adapter }
351
IDCID_NET = 7; { some network }
352
IDCID_ARCNET = 8; { ArcNet }
353
IDCID_ETHERNET = 9; { Ethernet }
354
IDCID_AUDIO = 10; { audio }
355
IDCID_VIDEO = 11; { video (video digitizer etc) }
356
IDCID_MULTIMEDIA = 12; { multimedia (audio, video, etc) }
357
IDCID_DSP = 13; { multi purpose DSP }
358
IDCID_BUSBRIDGE = 14; { ISA bus bridge }
359
IDCID_BRIDGE = 15; { PC bridge }
360
IDCID_EMULATOR = 16; { some Emulator hardware }
361
IDCID_MACEMU = 17; { Macintosh emulator hardware }
362
IDCID_ATARIEMU = 18; { Atari emulator hardware }
363
IDCID_GFX = 19; { graphics (register) }
364
IDCID_GFXRAM = 20; { graphics (video RAM) }
365
IDCID_HD = 21; { some HD controller }
366
IDCID_HDRAM = 22; { some HD controller + RAM }
367
IDCID_IDEHD = 23; { IDE controller }
368
IDCID_IDEHDRAM = 24; { IDE controller + RAM }
369
IDCID_SCSIHD = 25; { SCSI host adapter }
370
IDCID_RAMSCSIHD = 26; { SCSI host adapter + RAM }
371
IDCID_CDROM = 27; { CD-ROM interface }
372
IDCID_MODEM = 28; { internal modem }
373
IDCID_ISDN = 29; { internal ISDN terminal adapter }
374
IDCID_MULTIIO = 30; { multi I/O (serial + parallel) }
375
IDCID_SERIAL = 31; { multi serial (no parallel) }
376
IDCID_PARALLEL = 32; { multi parallel (no serial) }
377
IDCID_SCANIF = 33; { scanner interface }
378
IDCID_TABLET = 34; { drawing tablet interface }
379
IDCID_RAM = 35; { plain RAM expansion }
380
IDCID_FLASHROM = 36; { Flash ROM }
381
IDCID_SCSIIDE = 37; { combined SCSI/IDE controller }
382
IDCID_RAMFPU = 38; { RAM expansion + FPU }
383
IDCID_GUESS = 39; { name was unknown but guessed }
384
IDCID_KICKSTART = 40; { KickStart }
385
IDCID_RAM32 = 41; { 32bit RAM expansion }
386
IDCID_TURBOANDRAM = 42; { accelerator + RAM expansion }
387
IDCID_ACCESS = 43; { access control }
388
IDCID_INTERFACE = 44; { some interface }
389
IDCID_MFMHD = 45; { MFM HD controller }
390
IDCID_FLOPPY = 46; { floppy disk controller }
391
{ Be prepared to get other numbers as well. In this case you }
392
{ should assume IDCID_MISC. }
394
{ --------------------------------------------------------------------------}
397
{ Positive error codes are DOS errors! }
398
IDERR_OKAY = 0; { No error }
399
IDERR_NOLENGTH = -1; { Buffer length is 0 ?? }
400
IDERR_BADID = -2; { Missing or bad board ID }
401
IDERR_NOMEM = -3; { Not enough memory }
402
IDERR_NOFD = -4; { No fitting FD file found }
403
IDERR_OFFSET = -5; { Function offset not found }
404
IDERR_DONE = -6; { Done with traversing (not an error) }
405
IDERR_SECONDARY = -7; { Secondary expansion board (not an error) }
407
{ --------------------------------------------------------------------------}
413
VAR IdentifyBase : pLibrary;
415
FUNCTION IdExpansion(TagList : pTagItem) : LONGINT;
416
FUNCTION IdHardware(Type_ : Ulong; TagList : pTagItem) : pCHAR;
417
FUNCTION IdAlert(ID : Ulong; TagList : pTagItem) : LONGINT;
418
FUNCTION IdFunction(LibName : pCHAR; Offset : LONGINT; TagList : pTagItem) : LONGINT;
419
FUNCTION IdHardwareNum(Type_ : Ulong; TagList : pTagItem) : Ulong;
420
PROCEDURE IdHardwareUpdate;
421
FUNCTION IdFormatString(String_ : pCHAR; Buffer : pCHAR; Length : Ulong; Tags : pTagItem) : Ulong;
422
FUNCTION IdEstimateFormatSize(String_ : pCHAR; Tags : pTagItem) : Ulong;
425
This is functions and procedures with array of const.
426
For use with fpc 1.0 and above.
429
FUNCTION IdExpansionTags(const TagList : Array Of Const) : LONGINT;
430
FUNCTION IdHardwareTags(Type_ : longword; const TagList : Array Of Const) : pCHAR;
431
FUNCTION IdAlertTags(ID : longword; const TagList : Array Of Const) : LONGINT;
432
FUNCTION IdFunctionTags(LibName : pCHAR; Offset : LONGINT; const TagList : Array Of Const) : LONGINT;
433
FUNCTION IdHardwareNumTags(Type_ : longword; const TagList : Array Of Const) : longword;
434
FUNCTION IdFormatStringTags(String_ : pCHAR; Buffer : pCHAR; Length : longword; const Tags : Array Of Const) : longword;
435
FUNCTION IdEstimateFormatSizeTags(String_ : pCHAR; const Tags : Array Of Const) : longword;
441
FUNCTION IdFunction(LibName : string; Offset : LONGINT; TagList : pTagItem) : LONGINT;
442
FUNCTION IdFormatString(String_ : string; Buffer : pCHAR; Length : Ulong; Tags : pTagItem) : Ulong;
443
FUNCTION IdEstimateFormatSize(String_ : string; Tags : pTagItem) : Ulong;
444
FUNCTION IdFunctionTags(LibName : string; Offset : LONGINT; const TagList : Array Of Const) : LONGINT;
445
FUNCTION IdFormatStringTags(String_ : string; Buffer : pCHAR; Length : longword; const Tags : Array Of Const) : longword;
446
FUNCTION IdEstimateFormatSizeTags(String_ : string; const Tags : Array Of Const) : longword;
448
{You can remove this include and use a define instead}
449
{$I useautoopenlib.inc}
450
{$ifdef use_init_openlib}
451
procedure InitIDENTIFYLibrary;
452
{$endif use_init_openlib}
454
{This is a variable that knows how the unit is compiled}
456
IDENTIFYIsCompiledHow : longint;
461
{$ifndef dont_use_openlib}
463
{$endif dont_use_openlib}
466
FUNCTION IdExpansion(TagList : pTagItem) : LONGINT;
471
MOVEA.L IdentifyBase,A6
478
FUNCTION IdHardware(Type_ : Ulong; TagList : pTagItem) : pCHAR;
484
MOVEA.L IdentifyBase,A6
491
FUNCTION IdAlert(ID : Ulong; TagList : pTagItem) : LONGINT;
497
MOVEA.L IdentifyBase,A6
504
FUNCTION IdFunction(LibName : pCHAR; Offset : LONGINT; TagList : pTagItem) : LONGINT;
511
MOVEA.L IdentifyBase,A6
518
FUNCTION IdHardwareNum(Type_ : Ulong; TagList : pTagItem) : Ulong;
524
MOVEA.L IdentifyBase,A6
531
PROCEDURE IdHardwareUpdate;
535
MOVEA.L IdentifyBase,A6
541
FUNCTION IdFormatString(String_ : pCHAR; Buffer : pCHAR; Length : Ulong; Tags : pTagItem) : Ulong;
549
MOVEA.L IdentifyBase,A6
556
FUNCTION IdEstimateFormatSize(String_ : pCHAR; Tags : pTagItem) : Ulong;
562
MOVEA.L IdentifyBase,A6
570
Functions and procedures with array of const go here
572
FUNCTION IdExpansionTags(const TagList : Array Of Const) : LONGINT;
574
IdExpansionTags := IdExpansion(readintags(TagList));
577
FUNCTION IdHardwareTags(Type_ : longword; const TagList : Array Of Const) : pCHAR;
579
IdHardwareTags := IdHardware(Type_ , readintags(TagList));
582
FUNCTION IdAlertTags(ID : longword; const TagList : Array Of Const) : LONGINT;
584
IdAlertTags := IdAlert(ID , readintags(TagList));
587
FUNCTION IdFunctionTags(LibName : pCHAR; Offset : LONGINT; const TagList : Array Of Const) : LONGINT;
589
IdFunctionTags := IdFunction(LibName , Offset , readintags(TagList));
592
FUNCTION IdHardwareNumTags(Type_ : longword; const TagList : Array Of Const) : longword;
594
IdHardwareNumTags := IdHardwareNum(Type_ , readintags(TagList));
597
FUNCTION IdFormatStringTags(String_ : pCHAR; Buffer : pCHAR; Length : longword; const Tags : Array Of Const) : longword;
599
IdFormatStringTags := IdFormatString(String_ , Buffer , Length , readintags(Tags));
602
FUNCTION IdEstimateFormatSizeTags(String_ : pCHAR; const Tags : Array Of Const) : longword;
604
IdEstimateFormatSizeTags := IdEstimateFormatSize(String_ , readintags(Tags));
611
FUNCTION IdFunction(LibName : string; Offset : LONGINT; TagList : pTagItem) : LONGINT;
613
IdFunction := IdFunction(pas2c(LibName),Offset,TagList);
616
FUNCTION IdFormatString(String_ : string; Buffer : pCHAR; Length : Ulong; Tags : pTagItem) : Ulong;
618
IdFormatString := IdFormatString(pas2c(String_),Buffer,Length,Tags);
621
FUNCTION IdEstimateFormatSize(String_ : string; Tags : pTagItem) : Ulong;
623
IdEstimateFormatSize := IdEstimateFormatSize(pas2c(String_),Tags);
626
FUNCTION IdFunctionTags(LibName : string; Offset : LONGINT; const TagList : Array Of Const) : LONGINT;
628
IdFunctionTags := IdFunction(pas2c(LibName),Offset,readintags(TagList));
631
FUNCTION IdFormatStringTags(String_ : string; Buffer : pCHAR; Length : longword; const Tags : Array Of Const) : longword;
633
IdFormatStringTags := IdFormatString(pas2c(String_),Buffer,Length,readintags(Tags));
636
FUNCTION IdEstimateFormatSizeTags(String_ : string; const Tags : Array Of Const) : longword;
638
IdEstimateFormatSizeTags := IdEstimateFormatSize(pas2c(String_),readintags(Tags));
642
{ Change VERSION and LIBVERSION to proper values }
644
VERSION : string[2] = '0';
645
LIBVERSION : longword = 0;
647
{$ifdef use_init_openlib}
648
{$Info Compiling initopening of identify.library}
649
{$Info don't forget to use InitIDENTIFYLibrary in the beginning of your program}
652
identify_exit : Pointer;
654
procedure CloseidentifyLibrary;
656
ExitProc := identify_exit;
657
if IdentifyBase <> nil then begin
658
CloseLibrary(IdentifyBase);
663
procedure InitIDENTIFYLibrary;
666
IdentifyBase := OpenLibrary(IDENTIFYNAME,LIBVERSION);
667
if IdentifyBase <> nil then begin
668
identify_exit := ExitProc;
669
ExitProc := @CloseidentifyLibrary;
671
MessageBox('FPC Pascal Error',
672
'Can''t open identify.library version ' + VERSION + #10 +
673
'Deallocating resources and closing down',
680
IDENTIFYIsCompiledHow := 2;
681
{$endif use_init_openlib}
683
{$ifdef use_auto_openlib}
684
{$Info Compiling autoopening of identify.library}
687
identify_exit : Pointer;
689
procedure CloseidentifyLibrary;
691
ExitProc := identify_exit;
692
if IdentifyBase <> nil then begin
693
CloseLibrary(IdentifyBase);
700
IdentifyBase := OpenLibrary(IDENTIFYNAME,LIBVERSION);
701
if IdentifyBase <> nil then begin
702
identify_exit := ExitProc;
703
ExitProc := @CloseidentifyLibrary;
704
IDENTIFYIsCompiledHow := 1;
706
MessageBox('FPC Pascal Error',
707
'Can''t open identify.library version ' + VERSION + #10 +
708
'Deallocating resources and closing down',
713
{$endif use_auto_openlib}
715
{$ifdef dont_use_openlib}
717
IDENTIFYIsCompiledHow := 3;
718
{$Warning No autoopening of identify.library compiled}
719
{$Warning Make sure you open identify.library yourself}
720
{$endif dont_use_openlib}
723
END. (* UNIT IDENTIFY *)