2
Copyright (c) 1999-2000 by Michael Van Canneyt
4
Unit containing definitions from the Linux CDROM kernel interface.
6
See the file COPYING.FPC, included in this distribution,
7
for details about the copyright.
9
This program is distributed in the hope that it will be useful,
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
**********************************************************************}
24
{ ---------------------------------------------------------------------
25
cdrom.h header translation.
26
---------------------------------------------------------------------}
28
{ Pointers to basic pascal types, inserted by h2pas conversion program.}
31
PSmallInt = ^SmallInt;
45
EDRIVE_CANT_DO_THIS = ESysEOPNOTSUPP; // = 95
49
CDROMPLAYTRKIND = $5304;
50
CDROMREADTOCHDR = $5305;
51
CDROMREADTOCENTRY = $5306;
57
CDROMREADMODE2 = $530c;
58
CDROMREADMODE1 = $530d;
59
CDROMREADAUDIO = $530e;
60
CDROMEJECT_SW = $530f;
61
CDROMMULTISESSION = $5310;
62
CDROM_GET_MCN = $5311;
63
CDROM_GET_UPC = CDROM_GET_MCN;
67
CDROMREADCOOKED = $5315;
71
CDROMGETSPINDOWN = $531d;
72
CDROMSETSPINDOWN = $531e;
73
CDROMCLOSETRAY = $5319;
74
CDROM_SET_OPTIONS = $5320;
75
CDROM_CLEAR_OPTIONS = $5321;
76
CDROM_SELECT_SPEED = $5322;
77
CDROM_SELECT_DISC = $5323;
78
CDROM_MEDIA_CHANGED = $5325;
79
CDROM_DRIVE_STATUS = $5326;
80
CDROM_DISC_STATUS = $5327;
81
CDROM_CHANGER_NSLOTS = $5328;
82
CDROM_LOCKDOOR = $5329;
84
CDROM_GET_CAPABILITY = $5331;
85
CDROMAUDIOBUFSIZ = $5382;
86
DVD_READ_STRUCT = $5390;
87
DVD_WRITE_STRUCT = $5391;
89
CDROM_SEND_PACKET = $5393;
90
CDROM_NEXT_WRITABLE = $5394;
91
CDROM_LAST_WRITTEN = $5395;
94
Pcdrom_msf0 = ^Tcdrom_msf0;
101
Pcdrom_addr = ^Tcdrom_addr;
104
0 : ( msf : Tcdrom_msf0 );
105
1 : ( lba : longint );
108
Pcdrom_msf = ^Tcdrom_msf;
118
Pcdrom_ti = ^Tcdrom_ti;
126
Pcdrom_tochdr = ^Tcdrom_tochdr;
127
Tcdrom_tochdr = record
132
Pcdrom_volctrl = ^Tcdrom_volctrl;
133
Tcdrom_volctrl = record
140
Pcdrom_subchnl = ^Tcdrom_subchnl;
141
Tcdrom_subchnl = record
143
cdsc_audiostatus : Tu8;
147
cdsc_absaddr : Tcdrom_addr;
148
cdsc_reladdr : Tcdrom_addr;
152
bm_Tcdrom_subchnl_cdsc_adr = $F;
153
bp_Tcdrom_subchnl_cdsc_adr = 0;
154
bm_Tcdrom_subchnl_cdsc_ctrl = $F0;
155
bp_Tcdrom_subchnl_cdsc_ctrl = 4;
156
function cdsc_adr(var a : Tcdrom_subchnl) : Tu8;
157
procedure set_cdsc_adr(var a : Tcdrom_subchnl; __cdsc_adr : Tu8);
158
function cdsc_ctrl(var a : Tcdrom_subchnl) : Tu8;
159
procedure set_cdsc_ctrl(var a : Tcdrom_subchnl; __cdsc_ctrl : Tu8);
162
Pcdrom_tocentry = ^Tcdrom_tocentry;
163
Tcdrom_tocentry = record
167
cdte_addr : Tcdrom_addr;
172
bm_Tcdrom_tocentry_cdte_adr = $F;
173
bp_Tcdrom_tocentry_cdte_adr = 0;
174
bm_Tcdrom_tocentry_cdte_ctrl = $F0;
175
bp_Tcdrom_tocentry_cdte_ctrl = 4;
176
function cdte_adr(var a : Tcdrom_tocentry) : Tu8;
177
procedure set_cdte_adr(var a : Tcdrom_tocentry; __cdte_adr : Tu8);
178
function cdte_ctrl(var a : Tcdrom_tocentry) : Tu8;
179
procedure set_cdte_ctrl(var a : Tcdrom_tocentry; __cdte_ctrl : Tu8);
182
Pcdrom_read = ^Tcdrom_read;
184
cdread_lba : longint;
185
cdread_bufaddr : Pchar;
186
cdread_buflen : longint;
189
Pcdrom_read_audio = ^Tcdrom_read_audio;
190
Tcdrom_read_audio = record
197
Pcdrom_multisession = ^Tcdrom_multisession;
198
Tcdrom_multisession = record
204
Pcdrom_mcn = ^Tcdrom_mcn;
206
medium_catalog_number : array[0..13] of Tu8;
209
Pcdrom_blk = ^Tcdrom_blk;
217
CDROM_PACKET_SIZE = 12;
218
CGC_DATA_UNKNOWN = 0;
225
Prequest_sense = ^Trequest_sense;
226
Trequest_sense = record
228
segment_number : Tu8;
230
information : array[0..3] of Tu8;
232
command_info : array[0..3] of Tu8;
236
sks : array[0..2] of Tu8;
237
asb : array[0..45] of Tu8;
239
Pcdrom_generic_command = ^Tcdrom_generic_command;
240
Tcdrom_generic_command = record
241
cmd : array[0..(CDROM_PACKET_SIZE)-1] of byte;
245
sense : Prequest_sense;
246
data_direction : byte;
249
reserved : array[0..0] of pointer;
260
CD_NUM_OF_CHUNKS = 98;
261
CD_FRAMESIZE_SUB = 96;
268
CD_FRAMESIZE_RAW = 2352;
269
CD_FRAMESIZE_RAWER = 2646;
270
CD_FRAMESIZE_RAW1 = CD_FRAMESIZE_RAW - CD_SYNC_SIZE;
271
CD_FRAMESIZE_RAW0 = (CD_FRAMESIZE_RAW - CD_SYNC_SIZE) - CD_HEAD_SIZE;
272
CD_XA_HEAD = CD_HEAD_SIZE + CD_SUBHEAD_SIZE;
273
CD_XA_TAIL = CD_EDC_SIZE + CD_ECC_SIZE;
274
CD_XA_SYNC_HEAD = CD_SYNC_SIZE + CD_XA_HEAD;
277
CDROM_DATA_TRACK = $04;
279
CDROM_AUDIO_INVALID = $00;
280
CDROM_AUDIO_PLAY = $11;
281
CDROM_AUDIO_PAUSED = $12;
282
CDROM_AUDIO_COMPLETED = $13;
283
CDROM_AUDIO_ERROR = $14;
284
CDROM_AUDIO_NO_STATUS = $15;
288
CDC_SELECT_SPEED = $8;
289
CDC_SELECT_DISC = $10;
290
CDC_MULTI_SESSION = $20;
292
CDC_MEDIA_CHANGED = $80;
293
CDC_PLAY_AUDIO = $100;
296
CDC_DRIVE_STATUS = $800;
297
CDC_GENERIC_PACKET = $1000;
302
CDC_DVD_RAM = $20000;
306
CDS_DRIVE_NOT_READY = 3;
318
CDO_CHECK_TYPE = $10;
319
{ was #define dname def_expr }
320
function CDSL_NONE : longint;
321
{ return type might be wrong }
323
{ was #define dname def_expr }
324
function CDSL_CURRENT : longint;
329
CD_PART_MASK = CD_PART_MAX - 1;
331
GPCMD_CLOSE_TRACK = $5b;
332
GPCMD_FLUSH_CACHE = $35;
333
GPCMD_FORMAT_UNIT = $04;
334
GPCMD_GET_CONFIGURATION = $46;
335
GPCMD_GET_EVENT_STATUS_NOTIFICATION = $4a;
336
GPCMD_GET_PERFORMANCE = $ac;
338
GPCMD_LOAD_UNLOAD = $a6;
339
GPCMD_MECHANISM_STATUS = $bd;
340
GPCMD_MODE_SELECT_10 = $55;
341
GPCMD_MODE_SENSE_10 = $5a;
342
GPCMD_PAUSE_RESUME = $4b;
343
GPCMD_PLAY_AUDIO_10 = $45;
344
GPCMD_PLAY_AUDIO_MSF = $47;
345
GPCMD_PLAY_AUDIO_TI = $48;
347
GPCMD_PREVENT_ALLOW_MEDIUM_REMOVAL = $1e;
350
GPCMD_READ_CDVD_CAPACITY = $25;
352
GPCMD_READ_CD_MSF = $b9;
353
GPCMD_READ_DISC_INFO = $51;
354
GPCMD_READ_DVD_STRUCTURE = $ad;
355
GPCMD_READ_FORMAT_CAPACITIES = $23;
356
GPCMD_READ_HEADER = $44;
357
GPCMD_READ_TRACK_RZONE_INFO = $52;
358
GPCMD_READ_SUBCHANNEL = $42;
359
GPCMD_READ_TOC_PMA_ATIP = $43;
360
GPCMD_REPAIR_RZONE_TRACK = $58;
361
GPCMD_REPORT_KEY = $a4;
362
GPCMD_REQUEST_SENSE = $03;
363
GPCMD_RESERVE_RZONE_TRACK = $53;
366
GPCMD_SEND_DVD_STRUCTURE = $ad;
367
GPCMD_SEND_EVENT = $a2;
368
GPCMD_SEND_KEY = $a3;
369
GPCMD_SEND_OPC = $54;
370
GPCMD_SET_READ_AHEAD = $a7;
371
GPCMD_SET_STREAMING = $b6;
372
GPCMD_START_STOP_UNIT = $1b;
373
GPCMD_STOP_PLAY_SCAN = $4e;
374
GPCMD_TEST_UNIT_READY = $00;
375
GPCMD_VERIFY_10 = $2f;
376
GPCMD_WRITE_10 = $2a;
377
GPCMD_WRITE_AND_VERIFY_10 = $2e;
378
GPCMD_SET_SPEED = $bb;
379
GPCMD_PLAYAUDIO_TI = $48;
380
GPCMD_GET_MEDIA_STATUS = $da;
381
GPMODE_R_W_ERROR_PAGE = $01;
382
GPMODE_WRITE_PARMS_PAGE = $05;
383
GPMODE_AUDIO_CTL_PAGE = $0e;
384
GPMODE_POWER_PAGE = $1a;
385
GPMODE_FAULT_FAIL_PAGE = $1c;
386
GPMODE_TO_PROTECT_PAGE = $1d;
387
GPMODE_CAPABILITIES_PAGE = $2a;
388
GPMODE_ALL_PAGES = $3f;
389
GPMODE_CDROM_PAGE = $0d;
390
DVD_STRUCT_PHYSICAL = $00;
391
DVD_STRUCT_COPYRIGHT = $01;
392
DVD_STRUCT_DISCKEY = $02;
393
DVD_STRUCT_BCA = $03;
394
DVD_STRUCT_MANUFACT = $04;
397
Pdvd_layer = ^Tdvd_layer;
402
end_sector_l0 : Tu32;
406
bm_Tdvd_layer_book_version = $F;
407
bp_Tdvd_layer_book_version = 0;
408
bm_Tdvd_layer_book_type = $F0;
409
bp_Tdvd_layer_book_type = 4;
410
bm_Tdvd_layer_min_rate = $F00;
411
bp_Tdvd_layer_min_rate = 8;
412
bm_Tdvd_layer_disc_size = $F000;
413
bp_Tdvd_layer_disc_size = 12;
414
bm_Tdvd_layer_layer_type = $F0000;
415
bp_Tdvd_layer_layer_type = 16;
416
bm_Tdvd_layer_track_path = $100000;
417
bp_Tdvd_layer_track_path = 20;
418
bm_Tdvd_layer_nlayers = $600000;
419
bp_Tdvd_layer_nlayers = 21;
420
bm_Tdvd_layer_track_density = $7800000;
421
bp_Tdvd_layer_track_density = 23;
422
bm_Tdvd_layer_linear_density = $78000000;
423
bp_Tdvd_layer_linear_density = 27;
424
bm_Tdvd_layer_bca = $80000000;
425
bp_Tdvd_layer_bca = 31;
426
function book_version(var a : Tdvd_layer) : Tu8;
427
procedure set_book_version(var a : Tdvd_layer; __book_version : Tu8);
428
function book_type(var a : Tdvd_layer) : Tu8;
429
procedure set_book_type(var a : Tdvd_layer; __book_type : Tu8);
430
function min_rate(var a : Tdvd_layer) : Tu8;
431
procedure set_min_rate(var a : Tdvd_layer; __min_rate : Tu8);
432
function disc_size(var a : Tdvd_layer) : Tu8;
433
procedure set_disc_size(var a : Tdvd_layer; __disc_size : Tu8);
434
function layer_type(var a : Tdvd_layer) : Tu8;
435
procedure set_layer_type(var a : Tdvd_layer; __layer_type : Tu8);
436
function track_path(var a : Tdvd_layer) : Tu8;
437
procedure set_track_path(var a : Tdvd_layer; __track_path : Tu8);
438
function nlayers(var a : Tdvd_layer) : Tu8;
439
procedure set_nlayers(var a : Tdvd_layer; __nlayers : Tu8);
440
function track_density(var a : Tdvd_layer) : Tu8;
441
procedure set_track_density(var a : Tdvd_layer; __track_density : Tu8);
442
function linear_density(var a : Tdvd_layer) : Tu8;
443
procedure set_linear_density(var a : Tdvd_layer; __linear_density : Tu8);
444
function bca(var a : Tdvd_layer) : Tu8;
445
procedure set_bca(var a : Tdvd_layer; __bca : Tu8);
451
Pdvd_physical = ^Tdvd_physical;
452
Tdvd_physical = record
455
layer : array[0..(DVD_LAYERS)-1] of Tdvd_layer;
458
Pdvd_copyright = ^Tdvd_copyright;
459
Tdvd_copyright = record
466
Pdvd_disckey = ^Tdvd_disckey;
467
Tdvd_disckey = record
470
value : array[0..2047] of Tu8;
474
bm_Tdvd_disckey_agid = $3;
475
bp_Tdvd_disckey_agid = 0;
476
function agid(var a : Tdvd_disckey) : dword;
477
procedure set_agid(var a : Tdvd_disckey; __agid : dword);
480
Pdvd_bca = ^Tdvd_bca;
484
value : array[0..187] of Tu8;
487
Pdvd_manufact = ^Tdvd_manufact;
488
Tdvd_manufact = record
492
value : array[0..2047] of Tu8;
496
Pdvd_struct = ^Tdvd_struct;
500
1 : ( physical : Tdvd_physical );
501
2 : ( copyright : Tdvd_copyright );
502
3 : ( disckey : Tdvd_disckey );
503
4 : ( bca : Tdvd_bca );
504
5 : ( manufact : Tdvd_manufact );
508
DVD_LU_SEND_AGID = 0;
509
DVD_HOST_SEND_CHALLENGE = 1;
510
DVD_LU_SEND_KEY1 = 2;
511
DVD_LU_SEND_CHALLENGE = 3;
512
DVD_HOST_SEND_KEY2 = 4;
513
DVD_AUTH_ESTABLISHED = 5;
514
DVD_AUTH_FAILURE = 6;
515
DVD_LU_SEND_TITLE_KEY = 7;
517
DVD_INVALIDATE_AGID = 9;
518
DVD_LU_SEND_RPC_STATE = 10;
519
DVD_HOST_SEND_RPC_STATE = 11;
523
Pdvd_key = ^Tdvd_key;
526
Pdvd_challenge = ^Tdvd_challenge;
527
Tdvd_challenge = Tu8;
528
Pdvd_lu_send_agid = ^Tdvd_lu_send_agid;
529
Tdvd_lu_send_agid = record
535
bm_Tdvd_lu_send_agid_agid = $3;
536
bp_Tdvd_lu_send_agid_agid = 0;
537
function agid(var a : Tdvd_lu_send_agid) : dword;
538
procedure set_agid(var a : Tdvd_lu_send_agid; __agid : dword);
541
Pdvd_host_send_challenge = ^Tdvd_host_send_challenge;
542
Tdvd_host_send_challenge = record
545
chal : Tdvd_challenge;
549
bm_Tdvd_host_send_challenge_agid = $3;
550
bp_Tdvd_host_send_challenge_agid = 0;
551
function agid(var a : Tdvd_host_send_challenge) : dword;
552
procedure set_agid(var a : Tdvd_host_send_challenge; __agid : dword);
555
Pdvd_send_key = ^Tdvd_send_key;
556
Tdvd_send_key = record
563
bm_Tdvd_send_key_agid = $3;
564
bp_Tdvd_send_key_agid = 0;
565
function agid(var a : Tdvd_send_key) : dword;
566
procedure set_agid(var a : Tdvd_send_key; __agid : dword);
569
Pdvd_lu_send_challenge = ^Tdvd_lu_send_challenge;
570
Tdvd_lu_send_challenge = record
573
chal : Tdvd_challenge;
577
bm_Tdvd_lu_send_challenge_agid = $3;
578
bp_Tdvd_lu_send_challenge_agid = 0;
579
function agid(var a : Tdvd_lu_send_challenge) : dword;
580
procedure set_agid(var a : Tdvd_lu_send_challenge; __agid : dword);
583
DVD_CPM_NO_COPYRIGHT = 0;
584
DVD_CPM_COPYRIGHTED = 1;
586
DVD_CP_SEC_EXIST = 1;
587
DVD_CGMS_UNRESTRICTED = 0;
589
DVD_CGMS_RESTRICTED = 3;
592
Pdvd_lu_send_title_key = ^Tdvd_lu_send_title_key;
593
Tdvd_lu_send_title_key = record
596
title_key : Tdvd_key;
602
bm_Tdvd_lu_send_title_key_agid = $3;
603
bp_Tdvd_lu_send_title_key_agid = 0;
604
bm_Tdvd_lu_send_title_key_cpm = $1;
605
bp_Tdvd_lu_send_title_key_cpm = 0;
606
bm_Tdvd_lu_send_title_key_cp_sec = $2;
607
bp_Tdvd_lu_send_title_key_cp_sec = 1;
608
bm_Tdvd_lu_send_title_key_cgms = $C;
609
bp_Tdvd_lu_send_title_key_cgms = 2;
610
function agid(var a : Tdvd_lu_send_title_key) : dword;
611
procedure set_agid(var a : Tdvd_lu_send_title_key; __agid : dword);
612
function cpm(var a : Tdvd_lu_send_title_key) : dword;
613
procedure set_cpm(var a : Tdvd_lu_send_title_key; __cpm : dword);
614
function cp_sec(var a : Tdvd_lu_send_title_key) : dword;
615
procedure set_cp_sec(var a : Tdvd_lu_send_title_key; __cp_sec : dword);
616
function cgms(var a : Tdvd_lu_send_title_key) : dword;
617
procedure set_cgms(var a : Tdvd_lu_send_title_key; __cgms : dword);
620
Pdvd_lu_send_asf = ^Tdvd_lu_send_asf;
621
Tdvd_lu_send_asf = record
627
bm_Tdvd_lu_send_asf_agid = $3;
628
bp_Tdvd_lu_send_asf_agid = 0;
629
bm_Tdvd_lu_send_asf_asf = $4;
630
bp_Tdvd_lu_send_asf_asf = 2;
631
function agid(var a : Tdvd_lu_send_asf) : dword;
632
procedure set_agid(var a : Tdvd_lu_send_asf; __agid : dword);
633
function asf(var a : Tdvd_lu_send_asf) : dword;
634
procedure set_asf(var a : Tdvd_lu_send_asf; __asf : dword);
637
Pdvd_host_send_rpcstate = ^Tdvd_host_send_rpcstate;
638
Tdvd_host_send_rpcstate = record
643
Pdvd_lu_send_rpcstate = ^Tdvd_lu_send_rpcstate;
644
Tdvd_lu_send_rpcstate = record
651
bm_Tdvd_lu_send_rpcstate_type = $3;
652
bp_Tdvd_lu_send_rpcstate_type = 0;
653
bm_Tdvd_lu_send_rpcstate_vra = $1C;
654
bp_Tdvd_lu_send_rpcstate_vra = 2;
655
bm_Tdvd_lu_send_rpcstate_ucca = $E0;
656
bp_Tdvd_lu_send_rpcstate_ucca = 5;
657
function get_type(var a : Tdvd_lu_send_rpcstate) : Tu8;
658
procedure set_type(var a : Tdvd_lu_send_rpcstate; __type : Tu8);
659
function get_vra(var a : Tdvd_lu_send_rpcstate) : Tu8;
660
procedure set_vra(var a : Tdvd_lu_send_rpcstate; __vra : Tu8);
661
function ucca(var a : Tdvd_lu_send_rpcstate) : Tu8;
662
procedure set_ucca(var a : Tdvd_lu_send_rpcstate; __ucca : Tu8);
666
Pdvd_authinfo = ^Tdvd_authinfo;
667
Tdvd_authinfo = record
670
1 : ( lsa : Tdvd_lu_send_agid );
671
2 : ( hsc : Tdvd_host_send_challenge );
672
3 : ( lsk : Tdvd_send_key );
673
4 : ( lsc : Tdvd_lu_send_challenge );
674
5 : ( hsk : Tdvd_send_key );
675
6 : ( lstk : Tdvd_lu_send_title_key );
676
7 : ( lsasf : Tdvd_lu_send_asf );
677
8 : ( hrpcs : Tdvd_host_send_rpcstate );
678
9 : ( lrpcs : Tdvd_lu_send_rpcstate );
682
bm_Trequest_sense_valid = $1;
683
bp_Trequest_sense_valid = 0;
684
bm_Trequest_sense_error_code = $FE;
685
bp_Trequest_sense_error_code = 1;
686
bm_Trequest_sense_reserved1 = $3;
687
bp_Trequest_sense_reserved1 = 0;
688
bm_Trequest_sense_ili = $4;
689
bp_Trequest_sense_ili = 2;
690
bm_Trequest_sense_reserved2 = $8;
691
bp_Trequest_sense_reserved2 = 3;
692
bm_Trequest_sense_sense_key = $F0;
693
bp_Trequest_sense_sense_key = 4;
694
function valid(var a : Trequest_sense) : Tu8;
695
procedure set_valid(var a : Trequest_sense; __valid : Tu8);
696
function error_code(var a : Trequest_sense) : Tu8;
697
procedure set_error_code(var a : Trequest_sense; __error_code : Tu8);
698
function reserved1(var a : Trequest_sense) : Tu8;
699
procedure set_reserved1(var a : Trequest_sense; __reserved1 : Tu8);
700
function ili(var a : Trequest_sense) : Tu8;
701
procedure set_ili(var a : Trequest_sense; __ili : Tu8);
702
function reserved2(var a : Trequest_sense) : Tu8;
703
procedure set_reserved2(var a : Trequest_sense; __reserved2 : Tu8);
704
function sense_key(var a : Trequest_sense) : Tu8;
705
procedure set_sense_key(var a : Trequest_sense; __sense_key : Tu8);
708
{ ---------------------------------------------------------------------
710
---------------------------------------------------------------------}
712
Function IsCDDevice(Device : String) : Boolean;
713
Function DetectCd : String;
719
{ ---------------------------------------------------------------------
720
Functions from cdrom.h translation.
721
---------------------------------------------------------------------}
723
function cdsc_adr(var a : Tcdrom_subchnl) : Tu8;
725
cdsc_adr:=(a.flag0 and bm_Tcdrom_subchnl_cdsc_adr) shr bp_Tcdrom_subchnl_cdsc_adr;
728
procedure set_cdsc_adr(var a : Tcdrom_subchnl; __cdsc_adr : Tu8);
730
a.flag0:=a.flag0 or ((__cdsc_adr shl bp_Tcdrom_subchnl_cdsc_adr) and bm_Tcdrom_subchnl_cdsc_adr);
733
function cdsc_ctrl(var a : Tcdrom_subchnl) : Tu8;
735
cdsc_ctrl:=(a.flag0 and bm_Tcdrom_subchnl_cdsc_ctrl) shr bp_Tcdrom_subchnl_cdsc_ctrl;
738
procedure set_cdsc_ctrl(var a : Tcdrom_subchnl; __cdsc_ctrl : Tu8);
740
a.flag0:=a.flag0 or ((__cdsc_ctrl shl bp_Tcdrom_subchnl_cdsc_ctrl) and bm_Tcdrom_subchnl_cdsc_ctrl);
743
function cdte_adr(var a : Tcdrom_tocentry) : Tu8;
745
cdte_adr:=(a.flag0 and bm_Tcdrom_tocentry_cdte_adr) shr bp_Tcdrom_tocentry_cdte_adr;
748
procedure set_cdte_adr(var a : Tcdrom_tocentry; __cdte_adr : Tu8);
750
a.flag0:=a.flag0 or ((__cdte_adr shl bp_Tcdrom_tocentry_cdte_adr) and bm_Tcdrom_tocentry_cdte_adr);
753
function cdte_ctrl(var a : Tcdrom_tocentry) : Tu8;
755
cdte_ctrl:=(a.flag0 and bm_Tcdrom_tocentry_cdte_ctrl) shr bp_Tcdrom_tocentry_cdte_ctrl;
758
procedure set_cdte_ctrl(var a : Tcdrom_tocentry; __cdte_ctrl : Tu8);
760
a.flag0:=a.flag0 or ((__cdte_ctrl shl bp_Tcdrom_tocentry_cdte_ctrl) and bm_Tcdrom_tocentry_cdte_ctrl);
763
{ was #define dname def_expr }
764
function CDSL_NONE : longint;
765
{ return type might be wrong }
767
CDSL_NONE:=(longint(( not (0)) shr 1)) - 1;
770
{ was #define dname def_expr }
771
function CDSL_CURRENT : longint;
773
CDSL_CURRENT:=longint(( not (0)) shr 1);
776
function book_version(var a : Tdvd_layer) : Tu8;
778
book_version:=(a.flag0 and bm_Tdvd_layer_book_version) shr bp_Tdvd_layer_book_version;
781
procedure set_book_version(var a : Tdvd_layer; __book_version : Tu8);
783
a.flag0:=a.flag0 or ((__book_version shl bp_Tdvd_layer_book_version) and bm_Tdvd_layer_book_version);
786
function book_type(var a : Tdvd_layer) : Tu8;
788
book_type:=(a.flag0 and bm_Tdvd_layer_book_type) shr bp_Tdvd_layer_book_type;
791
procedure set_book_type(var a : Tdvd_layer; __book_type : Tu8);
793
a.flag0:=a.flag0 or ((__book_type shl bp_Tdvd_layer_book_type) and bm_Tdvd_layer_book_type);
796
function min_rate(var a : Tdvd_layer) : Tu8;
798
min_rate:=(a.flag0 and bm_Tdvd_layer_min_rate) shr bp_Tdvd_layer_min_rate;
801
procedure set_min_rate(var a : Tdvd_layer; __min_rate : Tu8);
803
a.flag0:=a.flag0 or ((__min_rate shl bp_Tdvd_layer_min_rate) and bm_Tdvd_layer_min_rate);
806
function disc_size(var a : Tdvd_layer) : Tu8;
808
disc_size:=(a.flag0 and bm_Tdvd_layer_disc_size) shr bp_Tdvd_layer_disc_size;
811
procedure set_disc_size(var a : Tdvd_layer; __disc_size : Tu8);
813
a.flag0:=a.flag0 or ((__disc_size shl bp_Tdvd_layer_disc_size) and bm_Tdvd_layer_disc_size);
816
function layer_type(var a : Tdvd_layer) : Tu8;
818
layer_type:=(a.flag0 and bm_Tdvd_layer_layer_type) shr bp_Tdvd_layer_layer_type;
821
procedure set_layer_type(var a : Tdvd_layer; __layer_type : Tu8);
823
a.flag0:=a.flag0 or ((__layer_type shl bp_Tdvd_layer_layer_type) and bm_Tdvd_layer_layer_type);
826
function track_path(var a : Tdvd_layer) : Tu8;
828
track_path:=(a.flag0 and bm_Tdvd_layer_track_path) shr bp_Tdvd_layer_track_path;
831
procedure set_track_path(var a : Tdvd_layer; __track_path : Tu8);
833
a.flag0:=a.flag0 or ((__track_path shl bp_Tdvd_layer_track_path) and bm_Tdvd_layer_track_path);
836
function nlayers(var a : Tdvd_layer) : Tu8;
838
nlayers:=(a.flag0 and bm_Tdvd_layer_nlayers) shr bp_Tdvd_layer_nlayers;
841
procedure set_nlayers(var a : Tdvd_layer; __nlayers : Tu8);
843
a.flag0:=a.flag0 or ((__nlayers shl bp_Tdvd_layer_nlayers) and bm_Tdvd_layer_nlayers);
846
function track_density(var a : Tdvd_layer) : Tu8;
848
track_density:=(a.flag0 and bm_Tdvd_layer_track_density) shr bp_Tdvd_layer_track_density;
851
procedure set_track_density(var a : Tdvd_layer; __track_density : Tu8);
853
a.flag0:=a.flag0 or ((__track_density shl bp_Tdvd_layer_track_density) and bm_Tdvd_layer_track_density);
856
function linear_density(var a : Tdvd_layer) : Tu8;
858
linear_density:=(a.flag0 and bm_Tdvd_layer_linear_density) shr bp_Tdvd_layer_linear_density;
861
procedure set_linear_density(var a : Tdvd_layer; __linear_density : Tu8);
863
a.flag0:=a.flag0 or ((__linear_density shl bp_Tdvd_layer_linear_density) and bm_Tdvd_layer_linear_density);
866
function bca(var a : Tdvd_layer) : Tu8;
868
bca:=(a.flag0 and bm_Tdvd_layer_bca) shr bp_Tdvd_layer_bca;
871
procedure set_bca(var a : Tdvd_layer; __bca : Tu8);
873
a.flag0:=a.flag0 or ((__bca shl bp_Tdvd_layer_bca) and bm_Tdvd_layer_bca);
876
function agid(var a : Tdvd_disckey) : dword;
878
agid:=(a.flag0 and bm_Tdvd_disckey_agid) shr bp_Tdvd_disckey_agid;
881
procedure set_agid(var a : Tdvd_disckey; __agid : dword);
883
a.flag0:=a.flag0 or ((__agid shl bp_Tdvd_disckey_agid) and bm_Tdvd_disckey_agid);
886
function agid(var a : Tdvd_lu_send_agid) : dword;
888
agid:=(a.flag0 and bm_Tdvd_lu_send_agid_agid) shr bp_Tdvd_lu_send_agid_agid;
891
procedure set_agid(var a : Tdvd_lu_send_agid; __agid : dword);
893
a.flag0:=a.flag0 or ((__agid shl bp_Tdvd_lu_send_agid_agid) and bm_Tdvd_lu_send_agid_agid);
896
function agid(var a : Tdvd_host_send_challenge) : dword;
898
agid:=(a.flag0 and bm_Tdvd_host_send_challenge_agid) shr bp_Tdvd_host_send_challenge_agid;
901
procedure set_agid(var a : Tdvd_host_send_challenge; __agid : dword);
903
a.flag0:=a.flag0 or ((__agid shl bp_Tdvd_host_send_challenge_agid) and bm_Tdvd_host_send_challenge_agid);
906
function agid(var a : Tdvd_send_key) : dword;
908
agid:=(a.flag0 and bm_Tdvd_send_key_agid) shr bp_Tdvd_send_key_agid;
911
procedure set_agid(var a : Tdvd_send_key; __agid : dword);
913
a.flag0:=a.flag0 or ((__agid shl bp_Tdvd_send_key_agid) and bm_Tdvd_send_key_agid);
916
function agid(var a : Tdvd_lu_send_challenge) : dword;
918
agid:=(a.flag0 and bm_Tdvd_lu_send_challenge_agid) shr bp_Tdvd_lu_send_challenge_agid;
921
procedure set_agid(var a : Tdvd_lu_send_challenge; __agid : dword);
923
a.flag0:=a.flag0 or ((__agid shl bp_Tdvd_lu_send_challenge_agid) and bm_Tdvd_lu_send_challenge_agid);
926
function agid(var a : Tdvd_lu_send_title_key) : dword;
928
agid:=(a.flag0 and bm_Tdvd_lu_send_title_key_agid) shr bp_Tdvd_lu_send_title_key_agid;
931
procedure set_agid(var a : Tdvd_lu_send_title_key; __agid : dword);
933
a.flag0:=a.flag0 or ((__agid shl bp_Tdvd_lu_send_title_key_agid) and bm_Tdvd_lu_send_title_key_agid);
936
function cpm(var a : Tdvd_lu_send_title_key) : dword;
938
cpm:=(a.flag1 and bm_Tdvd_lu_send_title_key_cpm) shr bp_Tdvd_lu_send_title_key_cpm;
941
procedure set_cpm(var a : Tdvd_lu_send_title_key; __cpm : dword);
943
a.flag1:=a.flag1 or ((__cpm shl bp_Tdvd_lu_send_title_key_cpm) and bm_Tdvd_lu_send_title_key_cpm);
946
function cp_sec(var a : Tdvd_lu_send_title_key) : dword;
948
cp_sec:=(a.flag1 and bm_Tdvd_lu_send_title_key_cp_sec) shr bp_Tdvd_lu_send_title_key_cp_sec;
951
procedure set_cp_sec(var a : Tdvd_lu_send_title_key; __cp_sec : dword);
953
a.flag1:=a.flag1 or ((__cp_sec shl bp_Tdvd_lu_send_title_key_cp_sec) and bm_Tdvd_lu_send_title_key_cp_sec);
956
function cgms(var a : Tdvd_lu_send_title_key) : dword;
958
cgms:=(a.flag1 and bm_Tdvd_lu_send_title_key_cgms) shr bp_Tdvd_lu_send_title_key_cgms;
961
procedure set_cgms(var a : Tdvd_lu_send_title_key; __cgms : dword);
963
a.flag1:=a.flag1 or ((__cgms shl bp_Tdvd_lu_send_title_key_cgms) and bm_Tdvd_lu_send_title_key_cgms);
966
function agid(var a : Tdvd_lu_send_asf) : dword;
968
agid:=(a.flag0 and bm_Tdvd_lu_send_asf_agid) shr bp_Tdvd_lu_send_asf_agid;
971
procedure set_agid(var a : Tdvd_lu_send_asf; __agid : dword);
973
a.flag0:=a.flag0 or ((__agid shl bp_Tdvd_lu_send_asf_agid) and bm_Tdvd_lu_send_asf_agid);
976
function asf(var a : Tdvd_lu_send_asf) : dword;
978
asf:=(a.flag0 and bm_Tdvd_lu_send_asf_asf) shr bp_Tdvd_lu_send_asf_asf;
981
procedure set_asf(var a : Tdvd_lu_send_asf; __asf : dword);
983
a.flag0:=a.flag0 or ((__asf shl bp_Tdvd_lu_send_asf_asf) and bm_Tdvd_lu_send_asf_asf);
986
function get_type(var a : Tdvd_lu_send_rpcstate) : Tu8;
988
get_type:=(a.flag0 and bm_Tdvd_lu_send_rpcstate_type) shr bp_Tdvd_lu_send_rpcstate_type;
991
procedure set_type(var a : Tdvd_lu_send_rpcstate; __type : Tu8);
993
a.flag0:=a.flag0 or ((__type shl bp_Tdvd_lu_send_rpcstate_type) and bm_Tdvd_lu_send_rpcstate_type);
996
function get_vra(var a : Tdvd_lu_send_rpcstate) : Tu8;
998
get_vra:=(a.flag0 and bm_Tdvd_lu_send_rpcstate_vra) shr bp_Tdvd_lu_send_rpcstate_vra;
1001
procedure set_vra(var a : Tdvd_lu_send_rpcstate; __vra : Tu8);
1003
a.flag0:=a.flag0 or ((__vra shl bp_Tdvd_lu_send_rpcstate_vra) and bm_Tdvd_lu_send_rpcstate_vra);
1006
function ucca(var a : Tdvd_lu_send_rpcstate) : Tu8;
1008
ucca:=(a.flag0 and bm_Tdvd_lu_send_rpcstate_ucca) shr bp_Tdvd_lu_send_rpcstate_ucca;
1011
procedure set_ucca(var a : Tdvd_lu_send_rpcstate; __ucca : Tu8);
1013
a.flag0:=a.flag0 or ((__ucca shl bp_Tdvd_lu_send_rpcstate_ucca) and bm_Tdvd_lu_send_rpcstate_ucca);
1016
function valid(var a : Trequest_sense) : Tu8;
1018
valid:=(a.flag0 and bm_Trequest_sense_valid) shr bp_Trequest_sense_valid;
1021
procedure set_valid(var a : Trequest_sense; __valid : Tu8);
1023
a.flag0:=a.flag0 or ((__valid shl bp_Trequest_sense_valid) and bm_Trequest_sense_valid);
1026
function error_code(var a : Trequest_sense) : Tu8;
1028
error_code:=(a.flag0 and bm_Trequest_sense_error_code) shr bp_Trequest_sense_error_code;
1031
procedure set_error_code(var a : Trequest_sense; __error_code : Tu8);
1033
a.flag0:=a.flag0 or ((__error_code shl bp_Trequest_sense_error_code) and bm_Trequest_sense_error_code);
1036
function reserved1(var a : Trequest_sense) : Tu8;
1038
reserved1:=(a.flag1 and bm_Trequest_sense_reserved1) shr bp_Trequest_sense_reserved1;
1041
procedure set_reserved1(var a : Trequest_sense; __reserved1 : Tu8);
1043
a.flag1:=a.flag1 or ((__reserved1 shl bp_Trequest_sense_reserved1) and bm_Trequest_sense_reserved1);
1046
function ili(var a : Trequest_sense) : Tu8;
1048
ili:=(a.flag1 and bm_Trequest_sense_ili) shr bp_Trequest_sense_ili;
1051
procedure set_ili(var a : Trequest_sense; __ili : Tu8);
1053
a.flag1:=a.flag1 or ((__ili shl bp_Trequest_sense_ili) and bm_Trequest_sense_ili);
1056
function reserved2(var a : Trequest_sense) : Tu8;
1058
reserved2:=(a.flag1 and bm_Trequest_sense_reserved2) shr bp_Trequest_sense_reserved2;
1061
procedure set_reserved2(var a : Trequest_sense; __reserved2 : Tu8);
1063
a.flag1:=a.flag1 or ((__reserved2 shl bp_Trequest_sense_reserved2) and bm_Trequest_sense_reserved2);
1066
function sense_key(var a : Trequest_sense) : Tu8;
1068
sense_key:=(a.flag1 and bm_Trequest_sense_sense_key) shr bp_Trequest_sense_sense_key;
1071
procedure set_sense_key(var a : Trequest_sense; __sense_key : Tu8);
1073
a.flag1:=a.flag1 or ((__sense_key shl bp_Trequest_sense_sense_key) and bm_Trequest_sense_sense_key);
1076
{ ---------------------------------------------------------------------
1077
Implementation of utility functions.
1078
---------------------------------------------------------------------}
1083
Devices : Array[1..NrDevices] of string = (
1085
'/dev/cdroms/cdrom?',
1099
Function DetectCD : String;
1108
While (Result='') and (I<NrDevices) do
1117
If IsCdDevice(S+Chr(Ord('0')+J)) then
1118
Result:=S+Chr(Ord('0')+J)
1119
else If IsCdDevice(S+Chr(Ord('a')+J)) then
1120
Result:=S+Chr(Ord('a')+J)
1123
If IsCdDevice(S) then
1129
IDEMajor = [IDE0_MAJOR,IDE1_MAJOR,IDE2_MAJOR,IDE3_MAJOR];
1130
CDMajor = [CDU31A_CDROM_MAJOR,CDU535_CDROM_MAJOR,
1131
MATSUSHITA_CDROM_MAJOR,MATSUSHITA_CDROM2_MAJOR,
1132
MATSUSHITA_CDROM3_MAJOR,MATSUSHITA_CDROM4_MAJOR,
1134
MITSUMI_CDROM_MAJOR,MITSUMI_X_CDROM_MAJOR,
1135
OPTICS_CDROM_MAJOR,AZTECH_CDROM_MAJOR,
1136
GOLDSTAR_CDROM_MAJOR,CM206_CDROM_MAJOR];
1138
Function TestCDRomIOCTL(Device : String) : Boolean;forward;
1141
Function IsCDDevice(Device : String) : Boolean;
1146
DeviceMajor,F : Integer;
1150
Writeln('Testing device : ',Device);
1153
If fpstat(device,info)<>0 then
1155
if not (fpS_ISCHR(info.st_mode) or
1156
fpS_ISBLK(info.st_mode)) then
1158
S:=fpReadLink(Device);
1161
If fpStat(Device,info)<>0 then
1163
DeviceMajor:=info.st_rdev shr 8;
1164
If DeviceMajor in [IDE0_MAJOR,IDE1_MAJOR,IDE2_MAJOR,IDE3_MAJOR] then
1165
Result:=TestCDRomIOCTL(Device)
1168
Result:=DeviceMajor in CDMajor;
1175
F:=fpOpen(Device,OPEN_RDONLY or OPEN_NONBLOCK);
1183
Function TestCDRomIOCTL(Device : String) : Boolean;
1187
info : Tcdrom_volctrl;
1191
Writeln('Testing for ATAPI');
1194
f:=fpOpen(device,OPEN_RDONLY or OPEN_NONBLOCK);
1197
Result:=(fpIOCtl(f,CDROMVOLREAD,@info)=0);