home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / pascal / vdl020d.zip / VMSCDEX.DOC < prev    next >
Text File  |  1993-04-14  |  26KB  |  1,306 lines

  1. {
  2.  ════════════════════════════════════════════════════════════════════════════
  3.  
  4.  Visionix Microsoft CD-ROM Extensions Unit (VMSCDEX)
  5.  Copyright 1991,92,93 Visionix
  6.  ALL RIGHTS RESERVED
  7.  
  8.  ────────────────────────────────────────────────────────────────────────────
  9.  
  10.  Revision history in reverse chronological order:
  11.  
  12.  Initials  Date      Comment
  13.  ────────  ────────  ────────────────────────────────────────────────────────
  14.  
  15.  lpg       03/16/93  Added Source Documentation
  16.  
  17.  mep       02/11/93  Cleaned up code (yuck!) for beta release
  18.  
  19.  jrt       02/08/93  Sync with beta 0.12 release
  20.  
  21.  jrt       12/07/92  Sync with beta 0.11 release
  22.  
  23.  jrt       11/21/92  Sync with beta 0.08
  24.  
  25.  jrt       11/18/92  First logged revision.
  26.  
  27.  ────────────────────────────────────────────────────────────────────────────
  28. }
  29.  
  30.  
  31. Unit VMSCDEX;
  32.  
  33.  
  34. Uses
  35.  
  36.   VTypes,
  37.   VGen,
  38.   DOS;
  39.  
  40. {────────────────────────────────────────────────────────────────────────────}
  41.  
  42.  
  43. Type
  44.  
  45.   TError = WORD;
  46.  
  47.  
  48. Type
  49.  
  50.   TMSF = RECORD
  51.  
  52.     M : BYTE;
  53.     S : BYTE;
  54.     F : BYTE;
  55.  
  56.     P : BYTE;
  57.  
  58.  
  59.   END;
  60.  
  61.   PMSF = ^TMSF;
  62.  
  63. Type
  64.  
  65.   TUPCCode = Array[1..7] of BYTE;
  66.  
  67.   PUPCCode = ^TUPCCode;
  68.  
  69.  
  70.  
  71. Type
  72.  
  73.   TmscdexReqHeader = RECORD
  74.  
  75.     HeaderSize     : BYTE;
  76.     Subunit        : BYTE;
  77.     CommandCode    : BYTE;
  78.     Status         : WORD;
  79.     Reserved       : Array[1..8] of BYTE;
  80.  
  81.   END;
  82.  
  83.   PmscdexReqHeader = ^TmscdexReqHeader;
  84.  
  85.  
  86. {------------------------}
  87. { MSCDEX IOCTL Requests  }
  88. {------------------------}
  89.  
  90.  
  91. Type
  92.  
  93.   TmscdexIOCTLReq = RECORD
  94.  
  95.     Header           : TmscdexReqHeader;
  96.     MediaDescript    : BYTE;
  97.     ControlBlock     : POINTER;
  98.     ControlBlockSize : WORD;
  99.     StartingSector   : WORD;
  100.     RequestedVol     : POINTER;
  101.  
  102.   END;
  103.  
  104.   PmscdexIOCTLReq = ^TmscdexIOCTLReq;
  105.  
  106.  
  107.   {--------------------------------}
  108.   { IOCTL Read Control Block Types }
  109.   {--------------------------------}
  110.  
  111.   Const
  112.  
  113.     cmscdexIOCTLread = 3;
  114.  
  115.  
  116.   Type
  117.  
  118.     TmscdexGetDevAddr = RECORD
  119.  
  120.       ConBCode         : BYTE;
  121.       DevAddr          : POINTER;
  122.  
  123.     END;
  124.  
  125.     PmscdexGetDevAddr = ^TmscdexGetDevAddr;
  126.  
  127.  
  128.  
  129.   Type
  130.  
  131.     TmscdexGetHeadPos = RECORD
  132.  
  133.       ConBCode        : BYTE;
  134.       AddrMode        : BYTE;
  135.       HeadPos         : LONGINT
  136.  
  137.     END;
  138.  
  139.     Const
  140.  
  141.       cmscdexGetHeadPos      = 1;
  142.       cmscdexGetHeadPosCBS   = 5;
  143.  
  144.  
  145.   Type
  146.  
  147.     TmscdexAudioChanInfo = RECORD
  148.  
  149.       ConBCode        : BYTE;
  150.       InChan0         : BYTE;
  151.       Volume0         : BYTE;
  152.       InChan1         : BYTE;
  153.       Volume1         : BYTE;
  154.       InChan2         : BYTE;
  155.       Volume2         : BYTE;
  156.       InChan3         : BYTE;
  157.       Volume3         : BYTE;
  158.  
  159.     END;
  160.  
  161.     PmscdexAudioChanInfo = ^TmscdexAudioChanInfo;
  162.  
  163.     Const
  164.  
  165.       cmscdexGetAudioChanInfo    = 4;
  166.       cmscdexGetAudioChanInfoCBS = 9;
  167.  
  168.  
  169.   Type
  170.  
  171.     TmscdexDevStatus = RECORD
  172.  
  173.       ConBCode        : BYTE;
  174.       DevParams       : LONGINT;
  175.  
  176.     END;
  177.  
  178.     PmscdexDevStatus = ^TmscdexDevStatus;
  179.  
  180.     Const
  181.  
  182.       cmscdexGetDevStatus    = 6;
  183.       cmscdexGetDevStatusCBS = 5;
  184.  
  185.     Const
  186.  
  187.       cmscdexDoorOpen      = 1;
  188.       cmscdexDoorLocked    = 2;
  189.       cmscdexCanRawRead    = 4;
  190.       cmscdexReadWrite     = 8;
  191.       cmscdexCanPlayAudio  = 16;
  192.       cmscdexCanInterleave = 32;
  193.       cmscdexCanPrefetch   = 64;
  194.       cmscdexCanSetVolume  = 128;
  195.       cmscdexCanRedbook    = 256;
  196.       cmscdexNoDisc        = 1024;
  197.  
  198.  
  199.  
  200.   Type
  201.  
  202.     TmscdexGetSecSize = RECORD
  203.  
  204.       ConBCode        : BYTE;
  205.       ReadMode        : BYTE;
  206.       SectorSize      : WORD;
  207.  
  208.     END;
  209.  
  210.     PmscdexGetSecSize = ^TmscdexGetSecSize;
  211.  
  212.     Const
  213.  
  214.       cmscdexGetSecSize    = 7;
  215.       cmscdexGetSecSizeCBS = 4;
  216.  
  217.  
  218.  
  219.   Type
  220.  
  221.     TmscdexGetVolumeSize = RECORD
  222.  
  223.       ConBCode        : BYTE;
  224.       VolumeSize      : LONGINT;
  225.  
  226.     END;
  227.  
  228.     PmscdexGetVolumSize = ^TmscdexGetVolumeSize;
  229.  
  230.     Const
  231.  
  232.       cmscdexGetVolumeSize    = 8;
  233.       cmscdexGetVolumeSizeCBS = 5;
  234.  
  235.  
  236.  
  237.   Type
  238.  
  239.     TmscdexCheckMediaChange = RECORD
  240.  
  241.       ConBCode        : BYTE;
  242.       MediaStatus     : BYTE;
  243.  
  244.     END;
  245.  
  246.     PmscdexCheckmediaChange = ^TmscdexCheckMediaChange;
  247.  
  248.     Const
  249.  
  250.       cmscdexCheckMediaChange    = 9;
  251.       cmscdexCheckMediaChangeCBS = 2;
  252.  
  253.  
  254.     Const
  255.  
  256.       cmscdexMediaNotChanged   = $01;
  257.       cmscdexMediaMaybeChanged = $00;
  258.       cmscdexMeidaChanged      = $FF;
  259.  
  260.  
  261.  
  262.   Type
  263.  
  264.     TmscdexGetAudioDiskInfo = RECORD
  265.  
  266.       ConBCode        : BYTE;
  267.       LowestTrack     : BYTE;
  268.       HighestTrack    : BYTE;
  269.       StartOfLeadout  : LONGINT;
  270.  
  271.     END;
  272.  
  273.     PmscdexGetAudioDiskInfo = ^TmscdexGetAudioDiskInfo;
  274.  
  275.     Const
  276.  
  277.       cmscdexGetAudioDiskInfo    = 10;
  278.       cmscdexGetAudioDiskInfoCBS = 7;
  279.  
  280.  
  281.  
  282.   Type
  283.  
  284.     TmscdexGetAudioTrackInfo = RECORD
  285.  
  286.       ConBCode        : BYTE;
  287.       TrackNum        : BYTE;
  288.       StartPoint      : LONGINT;
  289.       TrackConInfo    : BYTE;
  290.  
  291.     END;
  292.  
  293.     PmscdexGetAudioTrackInfo = ^TmscdexGetAudioTrackInfo;
  294.  
  295.     Const
  296.  
  297.       cmscdexGetAudioTrackInfo    = 11;
  298.       cmscdexGetAudioTrackInfoCBS = 7;
  299.  
  300.  
  301.  
  302.   Type
  303.  
  304.     TmscdexGetAudioQChanInfo = RECORD
  305.  
  306.       ConBCode        : BYTE;
  307.       ControlAndAddr  : BYTE;
  308.       TrackNum        : BYTE;
  309.       IndexNum        : BYTE;
  310.  
  311.       TrackTime       : TMSF;
  312.  
  313.       DiskTime        : TMSF;
  314.  
  315.     END;
  316.  
  317.     PmscdexGetAudioQChanInfo = ^TmscdexGetAudioQChanInfo;
  318.  
  319.     Const
  320.  
  321.       cmscdexGetAudioQChanInfo    = 12;
  322.       cmscdexGetAudioQChanInfoCBS = 11;
  323.  
  324.  
  325.  
  326.   Type
  327.  
  328.     TmscdexGetAudioSubChanInfo = RECORD
  329.  
  330.       ConBCode        : BYTE;
  331.       StartFrame      : LONGINT;
  332.       TransferAddr    : POINTER;
  333.       SecsToRead      : LONGINT;
  334.  
  335.     END;
  336.  
  337.     PmscdexGetAudioSubChanInfo = ^TmscdexGetAudioSubChanInfo;
  338.  
  339.     Const
  340.  
  341.       cmscdexGetAudioSubChanInfo    = 13;
  342.       cmscdexGetAudioSubChanInfoCBS = 13;
  343.  
  344.  
  345.  
  346.  
  347.   Type
  348.  
  349.     TmscdexGetUPCCode = RECORD
  350.  
  351.       ConBCode        : BYTE;
  352.       ControlAndAdr   : BYTE;
  353.       UPCCode         : TUPCCode;
  354.       Zero            : BYTE;
  355.       AFrame          : BYTE;
  356.  
  357.     END;
  358.  
  359.     PmscdexGetUPCCode = ^TmscdexGetUPCCode;
  360.  
  361.     Const
  362.  
  363.       cmscdexGetUPCCode    = 14;
  364.       cmscdexGetUPCCodeCBS = 11;
  365.  
  366.  
  367.  
  368.  
  369.   Type
  370.  
  371.     TmscdexGetAudioStatusInfo = RECORD
  372.  
  373.       ConBCode        : BYTE;
  374.       AudioStatus     : WORD;
  375.       PlayStart       : LONGINT;
  376.       PlayEnd         : LONGINT;
  377.  
  378.     END;
  379.  
  380.     PmscdexGetAudioStatusInfo = ^TmscdexGetAudioStatusInfo;
  381.  
  382.     Const
  383.  
  384.       cmscdexGetAudioStatusInfo    = 15;
  385.       cmscdexGetAudioStatusInfoCBS = 11;
  386.  
  387.  
  388.   {---------------------------------}
  389.   { IOCTL Write Control Block Types }
  390.   {---------------------------------}
  391.  
  392.   Const
  393.  
  394.     cmscdexIOCTLWrite = 12;
  395.  
  396.  
  397.  
  398.   Type
  399.  
  400.     TmscdexEjectDisk = RECORD
  401.  
  402.       ConBCode        : BYTE;
  403.  
  404.     END;
  405.  
  406.     PmscdexEjectDisk = ^TmscdexEjectDisk;
  407.  
  408.     Const
  409.  
  410.       cmscdexEjectDisk    = 0;
  411.       cmscdexEjectDiskCBS = 1;
  412.  
  413.  
  414.  
  415.   Type
  416.  
  417.     TmscdexLockUnlockDoor = RECORD
  418.  
  419.       ConBCode        : BYTE;
  420.       LockCode        : BYTE;
  421.  
  422.     END;
  423.  
  424.     PmscdexLockUnlockDoor = ^TmscdexLockUnlockDoor;
  425.  
  426.     Const
  427.  
  428.       cmscdexLockUnlockDoor    = 1;
  429.       cmscdexLockUnlockDoorCBS = 2;
  430.  
  431.     Const
  432.  
  433.       cmscdexLockDoor   = 1;
  434.       cmscdexUnlockDoor = 0;
  435.  
  436.  
  437.  
  438.   Type
  439.  
  440.     TmscdexResetDrive = RECORD
  441.  
  442.       ConBCode        : BYTE;
  443.  
  444.     END;
  445.  
  446.     PmscdexResetDrive = ^TmscdexResetDrive;
  447.  
  448.     Const
  449.  
  450.       cmscdexResetDrive    = 2;
  451.       cmscdexResetDriveCBS = 1;
  452.  
  453.  
  454.  
  455.  
  456.   Type
  457.  
  458.     TmscdexAudioChanControl = RECORD
  459.  
  460.       ConBCode        : BYTE;
  461.       InChan0         : BYTE;
  462.       Volume0         : BYTE;
  463.       InChan1         : BYTE;
  464.       Volume1         : BYTE;
  465.       InChan2         : BYTE;
  466.       Volume2         : BYTE;
  467.       InChan3         : BYTE;
  468.       Volume3         : BYTE;
  469.  
  470.     END;
  471.  
  472.     PmscdexAudioChanControl = ^TmscdexAudioChanControl;
  473.  
  474.     Const
  475.  
  476.       cmscdexAudioChanControl    = 3;
  477.       cmscdexAudioChanControlCBS = 9;
  478.  
  479.  
  480.  
  481.  
  482.  
  483.   Type
  484.  
  485.     TmscdexCloseTray = RECORD
  486.  
  487.       ConBCode        : BYTE;
  488.  
  489.     END;
  490.  
  491.     PmscdexCloseTray = ^TmscdexCloseTray;
  492.  
  493.     Const
  494.  
  495.       cmscdexCloseTray    = 5;
  496.       cmscdexCloseTrayCBS = 1;
  497.  
  498.  
  499.  
  500.  
  501.  
  502. {--------------------------}
  503. { MSCDEX Read Long Request }
  504. {--------------------------}
  505.  
  506.  
  507. Type
  508.  
  509.   TmscdexReadLongReq = RECORD
  510.  
  511.     Header           : TmscdexReqHeader;
  512.     AddrMode         : BYTE;
  513.     TransferAddr     : POINTER;
  514.     SecsToRead       : WORD;
  515.     StartSec         : LONGINT;
  516.     ReadMode         : BYTE;
  517.     InterleaveSize   : BYTE;
  518.     InterleaveSkip   : BYTE;
  519.  
  520.   END;
  521.  
  522.   PmscdexReadLongReq = ^TmscdexReadLongReq;
  523.  
  524.   Const
  525.  
  526.     cmscdexBlockMode     = 0;
  527.     cmscdexHSGMode       = 0;
  528.  
  529.     cmscdexMSFMode       = 1;
  530.     cmscdexReadBookMode  = 1;
  531.  
  532.     cmscdexCookedRead    = 0;
  533.     cmscdexRawRead       = 1;
  534.  
  535.  
  536.  
  537. Type
  538.  
  539.   TmscdexPlayAudioReq = RECORD
  540.  
  541.     Header           : TmscdexReqHeader;
  542.     AddrMode         : BYTE;
  543.     Start            : LONGINT;
  544.     PlayFor          : LONGINT;
  545.  
  546.   END;
  547.  
  548.   PmscdexPlayAudioReq = ^TmscdexPlayAudioReq;
  549.  
  550.  
  551. Type
  552.  
  553.   TmscdexStopAudioReq = RECORD
  554.  
  555.     Header           : TmscdexReqHeader;
  556.     
  557.   END;
  558.  
  559.   PmscdexStopAudioReq = ^TmscdexStopAudioReq;
  560.  
  561.  
  562.  
  563. Type
  564.  
  565.   TmscdexResumeAudioReq = RECORD
  566.  
  567.     Header           : TmscdexReqHeader;
  568.     
  569.   END;
  570.  
  571.   PmscdexResumeAudioReq = ^TmscdexResumeAudioReq;
  572.  
  573.  
  574.  
  575.  
  576. {────────────────────────────────────────────────────────────────────────────}
  577. {────────────────────────────────────────────────────────────────────────────}
  578.  
  579. Procedure BCDMSFtoMSF( Var N : TMSF );
  580.  
  581.  
  582. Function  MSCDEX_GetNumDrives : WORD;
  583.  
  584. Function  MSCDEX_GetFirstDrive : WORD;
  585.  
  586.  
  587.  
  588. Procedure MSCDEX_ExecRequest(          Drive          : BYTE;
  589.                                        Request        : POINTER   );
  590.  
  591. {----------------------}
  592. { Read IOCTL Functions }
  593. {----------------------}
  594.  
  595. Function  MSCDEX_GetHeadPos(           Drive          : BYTE;
  596.                                        AddrMode       : BYTE;
  597.                                    Var HeadPos        : LONGINT ) : TError;
  598.  
  599. Function  MSCDEX_GetAudioChanInfo(     Drive          : BYTE;
  600.                                        Channel        : BYTE;
  601.                                    Var InputChan      : BYTE;
  602.                                    Var Volume         : BYTE    ) : TError;
  603.  
  604. Function  MSCDEX_GetDevStatus(         Drive          : BYTE;
  605.                                    Var DevStatus      : LONGINT ) : TError;
  606.  
  607. Function  MSCDEX_GetSectorSize(        Drive          : BYTE;
  608.                                        ReadMode       : BYTE;
  609.                                    Var SecSize        : WORD    ) : TError;
  610.  
  611. Function  MSCDEX_GetVolumeSize(        Drive          : BYTE;
  612.                                    Var VolumeSize     : LONGINT ) : TError;
  613.  
  614. Function  MSCDEX_IsMediaChanged      ( Drive : BYTE )             : BYTE;
  615.  
  616. Function  MSCDEX_GetAudioDiskInfo(     Drive          : BYTE;
  617.                                    Var StartTrack     : BYTE;
  618.                                    Var EndTrack       : BYTE;
  619.                                    Var LeadOutStart   : LONGINT ) : TError;
  620.  
  621. Function  MSCDEX_GetAudioTrackInfo(    Drive          : BYTE;
  622.                                        TrackNum       : BYTE;
  623.                                    Var StartPoint     : LONGINT;
  624.                                    Var TrackConInfo   : BYTE    ) : TError;
  625.  
  626. Function  MSCDEX_GetAudioQChanInfo(    Drive          : BYTE;
  627.                                    Var ConAddr        : BYTE;
  628.                                    Var TrackNum       : BYTE;
  629.                                    Var IndexNum       : BYTE;
  630.                                    Var TrackTime      : TMSF;
  631.                                    Var DiskTime       : TMSF    ) : TError;
  632.  
  633. Function  MSCDEX_GetAudioSubChanInfo(  Drive          : BYTE;
  634.                                        StartFrame     : LONGINT;
  635.                                        SecsToRead     : LONGINT;
  636.                                        TransferAddr   : POINTER ) : TError;
  637.  
  638. Function  MSCDEX_GetUPCCode(           Drive          : BYTE;
  639.                                    Var ConAddr        : BYTE;
  640.                                    Var UPCCode        : TUPCCode;
  641.                                    Var AFrame         : BYTE    ) : Terror;
  642.  
  643. Function  MSCDEX_GetAudioStatusInfo(   Drive          : BYTE;
  644.                                    Var AudioStatus    : WORD;
  645.                                    Var PlayStart      : LONGINT;
  646.                                    Var PlayEnd        : LONGINT ) : TError;
  647.  
  648. {-----------------------}
  649. { IOCTL Write Functions }
  650. {-----------------------}
  651.  
  652. Function  MSCDEX_EjectDisk(            Drive          : BYTE    ) : TError;
  653.  
  654. Function  MSCDEX_LockUnlockDoor(       Drive          : BYTE;
  655.                                        Lock           : BOOLEAN ) : TError;
  656.  
  657. Function  MSCDEX_ResetDrive(           Drive          : BYTE    ) : TError;
  658.  
  659. {-----------------------}
  660. { Audio Channel Control }
  661. {-----------------------}
  662.  
  663. Function  MSCDEX_CloseTray(            Drive          : BYTE    ) : TError;
  664.  
  665. Function  MSCDEX_ReadLong(             Drive          : BYTE;
  666.                                        AddrMode       : BYTE;
  667.                                        TransferAddr   : POINTER;
  668.                                        SecsToRead     : WORD;
  669.                                        StartSec       : LONGINT;
  670.                                        ReadMode       : BYTE;
  671.                                        InterleaveSize : BYTE;
  672.                                        InterleaveSkip : BYTE    ) : TError;
  673.  
  674. {----------------}
  675. { prefetch, seek }
  676. {----------------}
  677.  
  678. Function  MSCDEX_PlayAudio(            Drive          : BYTE;
  679.                                        AddrMode       : BYTE;
  680.                                        Start          : LONGINT;
  681.                                        Playfor        : LONGINT ) : TError;
  682.  
  683. Function  MSCDEX_StopAudio(            Drive          : BYTE    ) : TError;
  684.  
  685. Function  MSCDEX_ResumeAudio(          Drive          : BYTE    ) : TError;
  686.  
  687. {────────────────────────────────────────────────────────────────────────────}
  688.  
  689.  
  690. ──────────────────────────────────────────────────────────────────────────────
  691.  
  692.  
  693. [FUNCTION]
  694.  
  695. Function  MSCDEX_GetNumDrives                                  : WORD;
  696.  
  697. [PARAMETERS]
  698.  
  699. (None)
  700.  
  701. [RETURNS]
  702.  
  703. [DESCRIPTION]
  704.  
  705. [SEE-ALSO]
  706.  
  707. [EXAMPLE]
  708.  
  709.  
  710. ──────────────────────────────────────────────────────────────────────────────
  711.  
  712.  
  713. [FUNCTION]
  714.  
  715. Function  MSCDEX_GetFirstDrive                                 : WORD;
  716.  
  717. [PARAMETERS]
  718.  
  719. (None)
  720.  
  721. [RETURNS]
  722.  
  723. [DESCRIPTION]
  724.  
  725. [SEE-ALSO]
  726.  
  727. [EXAMPLE]
  728.  
  729.  
  730. ──────────────────────────────────────────────────────────────────────────────
  731.  
  732.  
  733. [FUNCTION]
  734.  
  735. Procedure MSCDEX_ExecRequest(          Drive          : BYTE;
  736.                                        Request        : POINTER   );
  737.  
  738. [PARAMETERS]
  739.  
  740. Drive       CD-ROM Drive Number
  741. Request     Pointer to MSCDEX Request Packet
  742.  
  743. [RETURNS]
  744.  
  745. (None)
  746.  
  747. [DESCRIPTION]
  748.  
  749. [SEE-ALSO]
  750.  
  751. [EXAMPLE]
  752.  
  753.  
  754. ──────────────────────────────────────────────────────────────────────────────
  755.  
  756.  
  757. [FUNCTION]
  758.  
  759. Procedure MSCDEX_LoadIOR(              IOR            : PmscdexIOCTLReq;
  760.                                        ReqHeadLength  : BYTE;
  761.                                        CommandCode    : BYTE;
  762.                                        MediaDescript  : BYTE;
  763.                                        ControlBlock   : POINTER;
  764.                                        CBS            : WORD             );
  765.  
  766. [PARAMETERS]
  767.  
  768. IOR           Pointer to MSCDEX IOCtl Request Packet
  769. ReqHeadLength Request Header Length
  770. CommandCode   ?
  771. MediaDescript ?
  772. ControlBlock  ?
  773. CBS           ?
  774.  
  775. [RETURNS]
  776.  
  777. (None)
  778.  
  779. [DESCRIPTION]
  780.  
  781. [SEE-ALSO]
  782.  
  783. [EXAMPLE]
  784.  
  785.  
  786. ──────────────────────────────────────────────────────────────────────────────
  787.  
  788.  
  789. [FUNCTION]
  790.  
  791. Function MSCDEX_GetHeadPos(            Drive          : BYTE;
  792.                                        AddrMode       : BYTE;
  793.                                    Var HeadPos        : LONGINT ) : TError;
  794.  
  795. [PARAMETERS]
  796.  
  797. Drive       CD-ROM Drive Number
  798. AddrMode    ?
  799. HeadPos     VAR Returned ?
  800.  
  801. [RETURNS]
  802.  
  803. Function : ?
  804. (VAR     : [HeadPos] ?)
  805.  
  806. [DESCRIPTION]
  807.  
  808. [SEE-ALSO]
  809.  
  810. [EXAMPLE]
  811.  
  812.  
  813. ──────────────────────────────────────────────────────────────────────────────
  814.  
  815.  
  816. [FUNCTION]
  817.  
  818. Function  MSCDEX_GetAudioChanInfo(     Drive          : BYTE;
  819.                                        Channel        : BYTE;
  820.                                    Var InputChan      : BYTE;
  821.                                    Var Volume         : BYTE    ) : TError;
  822.  
  823. [PARAMETERS]
  824.  
  825. Drive       CD-ROM Drive Number
  826. Channel     ?
  827. InputChan   VAR Returned ?
  828. Volume      VAR Returned ?
  829.  
  830. [RETURNS]
  831.  
  832. Function : ?
  833. (VAR     : [InputChan] ?)
  834. (VAR     : [Volume] ?)
  835.  
  836. [DESCRIPTION]
  837.  
  838. [SEE-ALSO]
  839.  
  840. [EXAMPLE]
  841.  
  842.  
  843. ──────────────────────────────────────────────────────────────────────────────
  844.  
  845.  
  846. [FUNCTION]
  847.  
  848. Function  MSCDEX_GetDevStatus(         Drive          : BYTE;
  849.                                    Var DevStatus      : LONGINT ) : TError;
  850.  
  851. [PARAMETERS]
  852.  
  853. Drive       CD-ROM Drive Number
  854. DevStatus   VAR Returned ?
  855.  
  856. [RETURNS]
  857.  
  858. [DESCRIPTION]
  859.  
  860. [SEE-ALSO]
  861.  
  862. [EXAMPLE]
  863.  
  864.  
  865. ──────────────────────────────────────────────────────────────────────────────
  866.  
  867.  
  868. [FUNCTION]
  869.  
  870. Function  MSCDEX_GetSectorSize(        Drive          : BYTE;
  871.                                        ReadMode       : BYTE;
  872.                                    Var SecSize        : WORD    ) : TError;
  873.  
  874. [PARAMETERS]
  875.  
  876. Drive       CD-ROM Drive Number
  877. ReadMode    ?
  878. SecSize     VAR Returned Sector Size
  879.  
  880. [RETURNS]
  881.  
  882. Function : ?
  883. (VAR     : [SecSize] Sector Size)
  884.  
  885. [DESCRIPTION]
  886.  
  887. [SEE-ALSO]
  888.  
  889. [EXAMPLE]
  890.  
  891.  
  892. ──────────────────────────────────────────────────────────────────────────────
  893.  
  894.  
  895. [FUNCTION]
  896.  
  897. Function  MSCDEX_GetVolumeSize(        Drive          : BYTE;
  898.                                    Var VolumeSize     : LONGINT ) : TError;
  899.  
  900. [PARAMETERS]
  901.  
  902. Drive       CD-ROM Drive Number
  903. VolumeSize  VAR Returned ?
  904.  
  905. [RETURNS]
  906.  
  907. Function : ?
  908. (VAR     : [VolumeSize] ?)
  909.  
  910. [DESCRIPTION]
  911.  
  912. [SEE-ALSO]
  913.  
  914. [EXAMPLE]
  915.  
  916.  
  917. ──────────────────────────────────────────────────────────────────────────────
  918.  
  919.  
  920. [FUNCTION]
  921.  
  922. Function  MSCDEX_IsMediaChanged(  Drive          : BYTE         ) : BYTE;
  923.  
  924. [PARAMETERS]
  925.  
  926. Drive       CD-ROM Drive Number
  927.  
  928. [RETURNS]
  929.  
  930. Whether the CD-ROM Media has been Changed (TRUE=Changed)
  931.  
  932. [DESCRIPTION]
  933.  
  934. [SEE-ALSO]
  935.  
  936. [EXAMPLE]
  937.  
  938.  
  939. ──────────────────────────────────────────────────────────────────────────────
  940.  
  941.  
  942. [FUNCTION]
  943.  
  944. Function  MSCDEX_GetAudioDiskInfo(     Drive          : BYTE;
  945.                                    Var StartTrack     : BYTE;
  946.                                    Var EndTrack       : BYTE;
  947.                                    Var LeadOutStart   : LONGINT ) : TError;
  948.  
  949. [PARAMETERS]
  950.  
  951. Drive        CD-ROM Drive Number
  952. StartTrack   VAR Returned ?
  953. EndTrack     VAR Returned ?
  954. LeadOutStart VAR Returned ?
  955.  
  956. [RETURNS]
  957.  
  958. Function : ?
  959. (VAR     : [StartTrack] ?)
  960. (VAR     : [EndTrack] ?)
  961. (VAR     : [LeadOutStart] ?)
  962.  
  963. [DESCRIPTION]
  964.  
  965. [SEE-ALSO]
  966.  
  967. [EXAMPLE]
  968.  
  969.  
  970. ──────────────────────────────────────────────────────────────────────────────
  971.  
  972.  
  973. [FUNCTION]
  974.  
  975. Function  MSCDEX_GetAudioTrackInfo(    Drive          : BYTE;
  976.                                        TrackNum       : BYTE;
  977.                                    Var StartPoint     : LONGINT;
  978.                                    Var TrackConInfo   : BYTE    ) : TError;
  979.  
  980. [PARAMETERS]
  981.  
  982. Drive        CD-ROM Drive Number
  983. TrackNum     ?
  984. StartPoint   VAR Returned ?
  985. TrackConinfo VAR Returned ?
  986.  
  987. [RETURNS]
  988.  
  989. Function : ?
  990. (VAR     : [StartPoint] ?)
  991. (VAR     : [TrackConInfo] ?)
  992.  
  993. [DESCRIPTION]
  994.  
  995. [SEE-ALSO]
  996.  
  997. [EXAMPLE]
  998.  
  999.  
  1000. ──────────────────────────────────────────────────────────────────────────────
  1001.  
  1002.  
  1003. [FUNCTION]
  1004.  
  1005. Function  MSCDEX_GetAudioQChanInfo(    Drive          : BYTE;
  1006.                                    Var ConAddr        : BYTE;
  1007.                                    Var TrackNum       : BYTE;
  1008.                                    Var IndexNum       : BYTE;
  1009.                                    Var TrackTime      : TMSF;
  1010.                                    Var DiskTime       : TMSF    ) : TError;
  1011.  
  1012. [PARAMETERS]
  1013.  
  1014. Drive       CD-ROM Drive Number
  1015. ConAddr     VAR Returned ?
  1016. TrackNum    VAR Returned ?
  1017. IndexNum    VAR Returned ?
  1018. TrackTime   VAR Returned ?
  1019. DiskTime    VAR Returned ?
  1020.  
  1021. [RETURNS]
  1022.  
  1023. Function : ?
  1024. (VAR     : [ConAddr] ?)
  1025. (VAR     : [TrackNum] ?)
  1026. (VAR     : [IndexNum] ?)
  1027. (VAR     : [TrackTime] ?)
  1028. (VAR     : [DiskTime] ?)
  1029.  
  1030. [DESCRIPTION]
  1031.  
  1032. [SEE-ALSO]
  1033.  
  1034. [EXAMPLE]
  1035.  
  1036.  
  1037. ──────────────────────────────────────────────────────────────────────────────
  1038.  
  1039.  
  1040. [FUNCTION]
  1041.  
  1042. Function  MSCDEX_GetAudioSubChanInfo(  Drive          : BYTE;
  1043.                                        StartFrame     : LONGINT;
  1044.                                        SecsToRead     : LONGINT;
  1045.                                        TransferAddr   : POINTER ) : TError;
  1046.  
  1047. [PARAMETERS]
  1048.  
  1049. Drive        CD-ROM Drive Number
  1050. StartFrame   ?
  1051. SecsToRead   ?
  1052. TransferAddr ?
  1053.  
  1054. [RETURNS]
  1055.  
  1056. [DESCRIPTION]
  1057.  
  1058. [SEE-ALSO]
  1059.  
  1060. [EXAMPLE]
  1061.  
  1062.  
  1063. ──────────────────────────────────────────────────────────────────────────────
  1064.  
  1065.  
  1066. [FUNCTION]
  1067.  
  1068. Function  MSCDEX_GetUPCCode(           Drive          : BYTE;
  1069.                                    Var ConAddr        : BYTE;
  1070.                                    Var UPCCode        : TUPCCode;
  1071.                                    Var AFrame         : BYTE    ) : Terror;
  1072.  
  1073. [PARAMETERS]
  1074.  
  1075. Drive       CD-ROM Drive Number
  1076. ConAddr     VAR Returned ?
  1077. UPCCode     VAR Returned ?
  1078. AFrame      VAR Returned ?
  1079.  
  1080. [RETURNS]
  1081.  
  1082. Function : ?
  1083. (VAR     : [ConAddr] ?)
  1084. (VAR     : [UPCCode] ?)
  1085. (VAR     : [AFrame] ?)
  1086.  
  1087. [DESCRIPTION]
  1088.  
  1089. [SEE-ALSO]
  1090.  
  1091. [EXAMPLE]
  1092.  
  1093.  
  1094. ──────────────────────────────────────────────────────────────────────────────
  1095.  
  1096.  
  1097. [FUNCTION]
  1098.  
  1099. Function  MSCDEX_GetAudioStatusInfo(   Drive          : BYTE;
  1100.                                    Var AudioStatus    : WORD;
  1101.                                    Var PlayStart      : LONGINT;
  1102.                                    Var PlayEnd        : LONGINT ) : TError;
  1103.  
  1104. [PARAMETERS]
  1105.  
  1106. Drive       CD-ROM Drive Number
  1107. AudioStatus VAR Returned ?
  1108. PlayStart   VAR Returned ?
  1109. PlayEnd     VAR Returned ?
  1110.  
  1111. [RETURNS]
  1112.  
  1113. Function : ?
  1114. (VAR     : [AudioStatus] ?)
  1115. (VAR     : [PlayStart] ?)
  1116. (VAR     : [PlayEnd] ?)
  1117.  
  1118. [DESCRIPTION]
  1119.  
  1120. [SEE-ALSO]
  1121.  
  1122. [EXAMPLE]
  1123.  
  1124.  
  1125. ──────────────────────────────────────────────────────────────────────────────
  1126.  
  1127.  
  1128. [FUNCTION]
  1129.  
  1130. Function  MSCDEX_EjectDisk(            Drive          : BYTE    ) : TError;
  1131.  
  1132. [PARAMETERS]
  1133.  
  1134. Drive       CD-ROM Drive Number
  1135.  
  1136. [RETURNS]
  1137.  
  1138. [DESCRIPTION]
  1139.  
  1140. [SEE-ALSO]
  1141.  
  1142. [EXAMPLE]
  1143.  
  1144.  
  1145. ──────────────────────────────────────────────────────────────────────────────
  1146.  
  1147.  
  1148. [FUNCTION]
  1149.  
  1150. Function  MSCDEX_LockUnlockDoor(       Drive          : BYTE;
  1151.                                        Lock           : BOOLEAN ) : TError;
  1152.  
  1153. [PARAMETERS]
  1154.  
  1155. Drive       CD-ROM Drive Number
  1156. Lock        Is Action Lock Door? (TRUE=Yes)
  1157.  
  1158. [RETURNS]
  1159.  
  1160. [DESCRIPTION]
  1161.  
  1162. [SEE-ALSO]
  1163.  
  1164. [EXAMPLE]
  1165.  
  1166.  
  1167. ──────────────────────────────────────────────────────────────────────────────
  1168.  
  1169.  
  1170. [FUNCTION]
  1171.  
  1172. Function  MSCDEX_ResetDrive(           Drive          : BYTE    ) : TError;
  1173.  
  1174. [PARAMETERS]
  1175.  
  1176. Drive       CD-ROM Drive Number
  1177.  
  1178. [RETURNS]
  1179.  
  1180. [DESCRIPTION]
  1181.  
  1182. [SEE-ALSO]
  1183.  
  1184. [EXAMPLE]
  1185.  
  1186.  
  1187. ──────────────────────────────────────────────────────────────────────────────
  1188.  
  1189.  
  1190. [FUNCTION]
  1191.  
  1192. Function  MSCDEX_CloseTray(            Drive          : BYTE    ) : TError;
  1193.  
  1194. [PARAMETERS]
  1195.  
  1196. Drive       CD-ROM Drive Number
  1197.  
  1198. [RETURNS]
  1199.  
  1200. [DESCRIPTION]
  1201.  
  1202. [SEE-ALSO]
  1203.  
  1204. [EXAMPLE]
  1205.  
  1206.  
  1207. ──────────────────────────────────────────────────────────────────────────────
  1208.  
  1209.  
  1210. [FUNCTION]
  1211.  
  1212. Function  MSCDEX_ReadLong(             Drive          : BYTE;
  1213.                                        AddrMode       : BYTE;
  1214.                                        TransferAddr   : POINTER;
  1215.                                        SecsToRead     : WORD;
  1216.                                        StartSec       : LONGINT;
  1217.                                        ReadMode       : BYTE;
  1218.                                        InterleaveSize : BYTE;
  1219.                                        InterleaveSkip : BYTE    ) : TError;
  1220.  
  1221. [PARAMETERS]
  1222.  
  1223. Drive          CD-ROM Drive Number
  1224. AddrMode       ?
  1225. TransferAddr   ?
  1226. SecsToRead     ?
  1227. StartSec       ?
  1228. ReadMode       ?
  1229. InterleaveSize ?
  1230. InterleaveSkip ?
  1231.  
  1232. [RETURNS]
  1233.  
  1234. [DESCRIPTION]
  1235.  
  1236. [SEE-ALSO]
  1237.  
  1238. [EXAMPLE]
  1239.  
  1240.  
  1241. ──────────────────────────────────────────────────────────────────────────────
  1242.  
  1243.  
  1244. [FUNCTION]
  1245.  
  1246. Function  MSCDEX_PlayAudio(            Drive          : BYTE;
  1247.                                        AddrMode       : BYTE;
  1248.                                        Start          : LONGINT;
  1249.                                        PlayFor        : LONGINT ) : TError;
  1250.  
  1251. [PARAMETERS]
  1252.  
  1253. Drive       CD-ROM Drive Number
  1254. AddrMode    ?
  1255. Start       ?
  1256. PlayFor     ?
  1257.  
  1258. [RETURNS]
  1259.  
  1260. [DESCRIPTION]
  1261.  
  1262. [SEE-ALSO]
  1263.  
  1264. [EXAMPLE]
  1265.  
  1266.  
  1267. ──────────────────────────────────────────────────────────────────────────────
  1268.  
  1269.  
  1270. [FUNCTION]
  1271.  
  1272. Function  MSCDEX_StopAudio(            Drive          : BYTE    ) : TError;
  1273.  
  1274. [PARAMETERS]
  1275.  
  1276. Drive       CD-ROM Drive Number
  1277.  
  1278. [RETURNS]
  1279.  
  1280. [DESCRIPTION]
  1281.  
  1282. [SEE-ALSO]
  1283.  
  1284. [EXAMPLE]
  1285.  
  1286.  
  1287. ──────────────────────────────────────────────────────────────────────────────
  1288.  
  1289.  
  1290. [FUNCTION]
  1291.  
  1292. Function  MSCDEX_ResumeAudio(          Drive          : BYTE    ) : TError;
  1293.  
  1294. [PARAMETERS]
  1295.  
  1296. Drive       CD-ROM Drive Number
  1297.  
  1298. [RETURNS]
  1299.  
  1300. [DESCRIPTION]
  1301.  
  1302. [SEE-ALSO]
  1303.  
  1304. [EXAMPLE]
  1305.  
  1306.