' ########################################################################################
' Microsoft Windows
' File: Vcr.inc
' Contents: VCR-MCI Command Table Include File
' Copyright (c) 2011 Jos? Roca
' Portions Copyright (c) Microsoft Corporation.
' All Rights Reserved.
' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
' EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
' MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
' ########################################################################################
#IF NOT %DEF(PBX_Vcr_PBI)
#DEFINE PBX_Vcr_PBI
%EQUATE `VCR_INC = 1
#INCLUDE ONCE "Core/Windows.inc"
'/* string resource base for vcr device type */
%EQUATE `MCI_VCR_OFFSET = 1280
'/* system MCI commands */
%EQUATE `MCI_LIST = &H0878
%EQUATE `MCI_SETAUDIO = &H0873
%EQUATE `MCI_SETVIDEO = &H0876
%EQUATE `MCI_SIGNAL = &H0875
'/* custom MCI commands for VCRs */
%EQUATE `MCI_MARK = %MCI_USER_MESSAGES
%EQUATE `MCI_INDEX = %MCI_USER_MESSAGES + 1
%EQUATE `MCI_SETTUNER = %MCI_USER_MESSAGES + 2
%EQUATE `MCI_SETVCR = %MCI_USER_MESSAGES + 3
%EQUATE `MCI_SETTIMECODE = %MCI_USER_MESSAGES + 4
'/* Test is appplicable to all commands */
%EQUATE `MCI_TEST = &H00000020
'/* flags for dwItem field of MCI_GETDEVCAPS_PARMS parameter block */
%EQUATE `MCI_VCR_GETDEVCAPS_CAN_DETECT_LENGTH = &H00004001
%EQUATE `MCI_VCR_GETDEVCAPS_SEEK_ACCURACY = &H00004002
%EQUATE `MCI_VCR_GETDEVCAPS_HAS_CLOCK = &H00004003
%EQUATE `MCI_VCR_GETDEVCAPS_CAN_REVERSE = &H00004004
%EQUATE `MCI_VCR_GETDEVCAPS_NUMBER_OF_MARKS = &H00004005
%EQUATE `MCI_VCR_GETDEVCAPS_CAN_TEST = &H00004006
%EQUATE `MCI_VCR_GETDEVCAPS_CAN_PREROLL = &H00004007
%EQUATE `MCI_VCR_GETDEVCAPS_CAN_PREVIEW = &H00004008
%EQUATE `MCI_VCR_GETDEVCAPS_CAN_MONITOR_SOURCES = &H00004009
%EQUATE `MCI_VCR_GETDEVCAPS_HAS_TIMECODE = &H0000400A
%EQUATE `MCI_VCR_GETDEVCAPS_CAN_FREEZE = &H0000401B
%EQUATE `MCI_VCR_GETDEVCAPS_CLOCK_INCREMENT_RATE = &H0000401C
'/* flags for dwFlags parameter of MCI_INFO command message */
%EQUATE `MCI_VCR_INFO_VERSION = &H00010000
'/* flags for dwFlags parameter of MCI_PLAY command message */
%EQUATE `MCI_VCR_PLAY_REVERSE = &H00010000
%EQUATE `MCI_VCR_PLAY_AT = &H00020000
%EQUATE `MCI_VCR_PLAY_SCAN = &H00040000
'/* flags for dwFlags parameter of MCI_RECORD command message */
%EQUATE `MCI_VCR_RECORD_INITIALIZE = &H00010000
%EQUATE `MCI_VCR_RECORD_AT = &H00020000
%EQUATE `MCI_VCR_RECORD_PREVIEW = &H00040000
'/* flags for dwFlags parameter of MCI_CUE command message */
%EQUATE `MCI_VCR_CUE_INPUT = &H00010000
%EQUATE `MCI_VCR_CUE_OUTPUT = &H00020000
%EQUATE `MCI_VCR_CUE_PREROLL = &H00040000
%EQUATE `MCI_VCR_CUE_REVERSE = &H00080000
'/* flags for dwFlags parameter of MCI_SEEK command message */
%EQUATE `MCI_VCR_SEEK_REVERSE = &H00010000
%EQUATE `MCI_VCR_SEEK_MARK = &H00020000
%EQUATE `MCI_VCR_SEEK_AT = &H00040000
'/* flags for dwFlags parameter of MCI_SETTUNER command message */
%EQUATE `MCI_VCR_SETTUNER_CHANNEL = &H00010000
%EQUATE `MCI_VCR_SETTUNER_CHANNEL_UP = &H00020000
%EQUATE `MCI_VCR_SETTUNER_CHANNEL_DOWN = &H00040000
%EQUATE `MCI_VCR_SETTUNER_CHANNEL_SEEK_UP = &H00080000
%EQUATE `MCI_VCR_SETTUNER_CHANNEL_SEEK_DOWN = &H00100000
%EQUATE `MCI_VCR_SETTUNER_NUMBER = &H00200000
'/* flags for dwFlags parameter of MCI_SET command message */
%EQUATE `MCI_VCR_SET_TIME_MODE = &H00010000
%EQUATE `MCI_VCR_SET_POWER = &H00020000
%EQUATE `MCI_VCR_SET_RECORD_FORMAT = &H00040000
%EQUATE `MCI_VCR_SET_COUNTER_FORMAT = &H00080000
%EQUATE `MCI_VCR_SET_INDEX = &H00100000
%EQUATE `MCI_VCR_SET_ASSEMBLE_RECORD = &H00200000
%EQUATE `MCI_VCR_SET_TRACKING = &H00400000
%EQUATE `MCI_VCR_SET_SPEED = &H00800000
%EQUATE `MCI_VCR_SET_TAPE_LENGTH = &H01000000
%EQUATE `MCI_VCR_SET_COUNTER_VALUE = &H02000000
%EQUATE `MCI_VCR_SET_CLOCK = &H04000000
%EQUATE `MCI_VCR_SET_PAUSE_TIMEOUT = &H08000000
%EQUATE `MCI_VCR_SET_PREROLL_DURATION = &H10000000
%EQUATE `MCI_VCR_SET_POSTROLL_DURATION = &H20000000
'/* flags for dwItem parameter of MCI_SETTIMECODE commmand message */
%EQUATE `MCI_VCR_SETTIMECODE_RECORD = &H00010000
'/* flags for dwItem field of MCI_STATUS_PARMS parameter block */
%EQUATE `MCI_VCR_STATUS_FRAME_RATE = &H00004001 ' Frame rate
%EQUATE `MCI_VCR_STATUS_SPEED = &H00004002 ' Speed
%EQUATE `MCI_VCR_STATUS_MEDIA_TYPE = &H00004003
%EQUATE `MCI_VCR_STATUS_RECORD_FORMAT = &H00004004
%EQUATE `MCI_VCR_STATUS_PLAY_FORMAT = &H00004005
%EQUATE `MCI_VCR_STATUS_AUDIO_SOURCE = &H00004006
%EQUATE `MCI_VCR_STATUS_AUDIO_SOURCE_NUMBER = &H00004007
%EQUATE `MCI_VCR_STATUS_VIDEO_SOURCE = &H00004008
%EQUATE `MCI_VCR_STATUS_VIDEO_SOURCE_NUMBER = &H00004009
%EQUATE `MCI_VCR_STATUS_AUDIO_MONITOR = &H0000400A
%EQUATE `MCI_VCR_STATUS_AUDIO_MONITOR_NUMBER = &H0000400B
%EQUATE `MCI_VCR_STATUS_VIDEO_MONITOR = &H0000400C
%EQUATE `MCI_VCR_STATUS_VIDEO_MONITOR_NUMBER = &H0000400D
%EQUATE `MCI_VCR_STATUS_INDEX_ON = &H0000400E
%EQUATE `MCI_VCR_STATUS_INDEX = &H0000400F
%EQUATE `MCI_VCR_STATUS_COUNTER_FORMAT = &H00004010
%EQUATE `MCI_VCR_STATUS_COUNTER_RESOLUTION = &H00004011
%EQUATE `MCI_VCR_STATUS_TIMECODE_TYPE = &H00004012
%EQUATE `MCI_VCR_STATUS_COUNTER_VALUE = &H00004013
%EQUATE `MCI_VCR_STATUS_TUNER_CHANNEL = &H00004014
%EQUATE `MCI_VCR_STATUS_WRITE_PROTECTED = &H00004015
%EQUATE `MCI_VCR_STATUS_TIMECODE_RECORD = &H00004016
%EQUATE `MCI_VCR_STATUS_VIDEO_RECORD = &H00004017
%EQUATE `MCI_VCR_STATUS_AUDIO_RECORD = &H00004018
%EQUATE `MCI_VCR_STATUS_TIME_TYPE = &H00004019
%EQUATE `MCI_VCR_STATUS_TIME_MODE = &H0000401A
%EQUATE `MCI_VCR_STATUS_POWER_ON = &H0000401B
%EQUATE `MCI_VCR_STATUS_CLOCK = &H0000401C
%EQUATE `MCI_VCR_STATUS_ASSEMBLE_RECORD = &H0000401D
%EQUATE `MCI_VCR_STATUS_TIMECODE_PRESENT = &H0000401E
%EQUATE `MCI_VCR_STATUS_NUMBER_OF_VIDEO_TRACKS = &H0000401F
%EQUATE `MCI_VCR_STATUS_NUMBER_OF_AUDIO_TRACKS = &H00004020
%EQUATE `MCI_VCR_STATUS_CLOCK_ID = &H00004021
%EQUATE `MCI_VCR_STATUS_PAUSE_TIMEOUT = &H00004022
%EQUATE `MCI_VCR_STATUS_PREROLL_DURATION = &H00004023
%EQUATE `MCI_VCR_STATUS_POSTROLL_DURATION = &H00004024
%EQUATE `MCI_VCR_STATUS_VIDEO = &H00004025
%EQUATE `MCI_VCR_STATUS_AUDIO = &H00004026
%EQUATE `MCI_VCR_STATUS_NUMBER = &H00080000
'/* flags for dwFlags parameter of MCI_ESCAPE command message */
%EQUATE `MCI_VCR_ESCAPE_STRING = &H00000100
'/* flags for dwFlags parameter of MCI_LIST command message */
%EQUATE `MCI_VCR_LIST_VIDEO_SOURCE = &H00010000
%EQUATE `MCI_VCR_LIST_AUDIO_SOURCE = &H00020000
%EQUATE `MCI_VCR_LIST_COUNT = &H00040000
%EQUATE `MCI_VCR_LIST_NUMBER = &H00080000
'/* flags for dwFlags parameter of MCI_MARK command message */
%EQUATE `MCI_VCR_MARK_WRITE = &H00010000
%EQUATE `MCI_VCR_MARK_ERASE = &H00020000
'/* flags for dwFlags parameter for MCI_SETAUDIO command message */
%EQUATE `MCI_VCR_SETAUDIO_RECORD = &H00010000
%EQUATE `MCI_VCR_SETAUDIO_SOURCE = &H00020000
%EQUATE `MCI_VCR_SETAUDIO_MONITOR = &H00040000
%EQUATE `MCI_VCR_SETAUDIO_TO = &H00200000
%EQUATE `MCI_VCR_SETAUDIO_NUMBER = &H00400000
'/* flags for dwFlags parameter for MCI_SETVIDEO command message */
%EQUATE `MCI_VCR_SETVIDEO_RECORD = &H00010000
%EQUATE `MCI_VCR_SETVIDEO_SOURCE = &H00020000
%EQUATE `MCI_VCR_SETVIDEO_MONITOR = &H00040000
%EQUATE `MCI_VCR_SETVIDEO_TO = &H00100000
%EQUATE `MCI_VCR_SETVIDEO_NUMBER = &H00200000
'/* The following is the function digitalvideo drivers must use
' * to signal when a frame marked by the SIGNAL command has been rendered:
' *
' * SEND_VCRSIGNAL(dwFlags, dwCallback, hDriver, wDeviceID, dwUser, dwPos )
' *
' * The following is a description of the parameters:
' *
' * dwFlags - the dwFlags parameter passed when the signal was set
' * dwCallback - the dwCallback value from the MCI_VCR_SIGNAL_PARMS struct
' * used to set the signal
' * hDriver - the handle assigned to the driver by MMSYSTEM when the
' * device was opened
' * wDeviceID - the device ID
' * dwUser - the dwUserParm value from the MCI_VCR_SIGNAL_PARMS struct
' * used to set the signal
' * dwPos - the position at which the signal was sent, in the current
' * time format.
' *
' * The window indicated by the handle in the dwCallback field is notified
' * by means of a Windows message with the following form:
' *
' * msg = MM_MCISIGNAL
' * wParam = wDeviceID of the sending driver
' * lParam = the uservalue specified or the position the signal was sent
' * at; the latter if the MCI_VCR_SIGNAL_POSITION flag was set
' * in the dwFlags parameter when the signal was created.
' */
'#define SEND_VCRSIGNAL(dwFlags, dwCallback, hDriver, wDeviceID, dwUser, dwPos ) \
' DriverCallback( (dwCallback), DCB_WINDOW, (HANDLE)(wDeviceID), MM_MCISIGNAL,\
' hDriver, ((dwFlags) & MCI_VCR_SIGNAL_POSITION) ? (dwPos):(dwUser),\
' ((dwFlags) & MCI_VCR_SIGNAL_POSITION) ? (dwUser):(dwPos))
'/* Window message for signal notification */
%EQUATE `MM_MCISIGNAL = &H3CB
'/* flags for dwFlags parameter of MCI_SIGNAL command message */
%EQUATE `MCI_VCR_SIGNAL_AT = &H00010000
%EQUATE `MCI_VCR_SIGNAL_EVERY = &H00020000
%EQUATE `MCI_VCR_SIGNAL_USERVAL = &H00040000
%EQUATE `MCI_VCR_SIGNAL_CANCEL = &H00080000
%EQUATE `MCI_VCR_SIGNAL_POSITION = &H00100000
'/* flags for dwFlags parameter of MCI_STEP command message */
%EQUATE `MCI_VCR_STEP_FRAMES = &H00010000
%EQUATE `MCI_VCR_STEP_REVERSE = &H00020000
'/* flags for dwFlags parameter of MCI_FREEZE command message */
%EQUATE `MCI_VCR_FREEZE_INPUT = &H00010000
%EQUATE `MCI_VCR_FREEZE_OUTPUT = &H00020000
%EQUATE `MCI_VCR_FREEZE_FIELD = &H00040000
%EQUATE `MCI_VCR_FREEZE_FRAME = &H00080000
'/* flags for dwFlags parameter of MCI_UNFREEZE command message */
%EQUATE `MCI_VCR_UNFREEZE_INPUT = &H00010000
%EQUATE `MCI_VCR_UNFREEZE_OUTPUT = &H00020000
'/* string resource values for vcr media types */
%EQUATE `MCI_VCR_MEDIA_8MM = %MCI_VCR_OFFSET + 1
%EQUATE `MCI_VCR_MEDIA_HI8 = %MCI_VCR_OFFSET + 2
%EQUATE `MCI_VCR_MEDIA_VHS = %MCI_VCR_OFFSET + 3
%EQUATE `MCI_VCR_MEDIA_SVHS = %MCI_VCR_OFFSET + 4
%EQUATE `MCI_VCR_MEDIA_BETA = %MCI_VCR_OFFSET + 5
%EQUATE `MCI_VCR_MEDIA_EDBETA = %MCI_VCR_OFFSET + 6
%EQUATE `MCI_VCR_MEDIA_OTHER = %MCI_VCR_OFFSET + 7
'/* string resource values for vcr play/record formats */
%EQUATE `MCI_VCR_FORMAT_SP = %MCI_VCR_OFFSET + 8
%EQUATE `MCI_VCR_FORMAT_LP = %MCI_VCR_OFFSET + 9
%EQUATE `MCI_VCR_FORMAT_EP = %MCI_VCR_OFFSET + 10
%EQUATE `MCI_VCR_FORMAT_OTHER = %MCI_VCR_OFFSET + 11
'/* string resource values for timecode types */
%EQUATE `MCI_VCR_TIME_TIMECODE = %MCI_VCR_OFFSET + 12
%EQUATE `MCI_VCR_TIME_COUNTER = %MCI_VCR_OFFSET + 13
%EQUATE `MCI_VCR_TIME_DETECT = %MCI_VCR_OFFSET + 14
'/* string resource values for src types */
%EQUATE `MCI_VCR_SRC_TYPE_TUNER = %MCI_VCR_OFFSET + 15
%EQUATE `MCI_VCR_SRC_TYPE_LINE = %MCI_VCR_OFFSET + 16
%EQUATE `MCI_VCR_SRC_TYPE_SVIDEO = %MCI_VCR_OFFSET + 17
%EQUATE `MCI_VCR_SRC_TYPE_RGB = %MCI_VCR_OFFSET + 18
%EQUATE `MCI_VCR_SRC_TYPE_AUX = %MCI_VCR_OFFSET + 19
%EQUATE `MCI_VCR_SRC_TYPE_GENERIC = %MCI_VCR_OFFSET + 20
%EQUATE `MCI_VCR_SRC_TYPE_MUTE = %MCI_VCR_OFFSET + 21
%EQUATE `MCI_VCR_SRC_TYPE_OUTPUT = %MCI_VCR_OFFSET + 22
'/* string resource values for vcr counters */
%EQUATE `MCI_VCR_INDEX_TIMECODE = %MCI_VCR_OFFSET + 23
%EQUATE `MCI_VCR_INDEX_COUNTER = %MCI_VCR_OFFSET + 24
%EQUATE `MCI_VCR_INDEX_DATE = %MCI_VCR_OFFSET + 25
%EQUATE `MCI_VCR_INDEX_TIME = %MCI_VCR_OFFSET + 26
'/* string resources for timecode type and counter resolution */
%EQUATE `MCI_VCR_COUNTER_RES_SECONDS = %MCI_VCR_OFFSET + 27
%EQUATE `MCI_VCR_COUNTER_RES_FRAMES = %MCI_VCR_OFFSET + 28
%EQUATE `MCI_VCR_TIMECODE_TYPE_SMPTE = %MCI_VCR_OFFSET + 29
%EQUATE `MCI_VCR_TIMECODE_TYPE_SMPTE_DROP = %MCI_VCR_OFFSET + 30
%EQUATE `MCI_VCR_TIMECODE_TYPE_OTHER = %MCI_VCR_OFFSET + 31
%EQUATE `MCI_VCR_TIMECODE_TYPE_NONE = %MCI_VCR_OFFSET + 32
%EQUATE `MCI_VCR_PLUS = %MCI_VCR_OFFSET + 33
%EQUATE `MCI_VCR_MINUS = %MCI_VCR_OFFSET + 34
%EQUATE `MCI_VCR_RESET = %MCI_VCR_OFFSET + 35
'#ifndef RC_INVOKED
'/* parameter block for MCI_SEEK command message */
' // Size = 16 bytes
TYPE MCI_VCR_SEEK_PARMS DWORD
 dwCallback AS DWORD ' DWORD dwCallback
 dwTo AS DWORD ' DWORD dwTo
 dwMark AS DWORD ' DWORD dwMark
 dwAt AS DWORD ' DWORD dwAt
END TYPE
'/* parameter block for MCI_SET command message */
' // Size = 60 bytes
TYPE MCI_VCR_SET_PARMS DWORD
 dwCallback AS DWORD ' DWORD dwCallback
 dwTimeFormat AS DWORD ' DWORD dwTimeFormat
 dwAudio AS DWORD ' DWORD dwAudio
 dwTimeMode AS DWORD ' DWORD dwTimeMode
 dwRecordFormat AS DWORD ' DWORD dwRecordFormat
 dwCounterFormat AS DWORD ' DWORD dwCounterFormat
 dwIndex AS DWORD ' DWORD dwIndex
 dwTracking AS DWORD ' DWORD dwTracking
 dwSpeed AS DWORD ' DWORD dwSpeed
 dwLength AS DWORD ' DWORD dwLength
 dwCounter AS DWORD ' DWORD dwCounter
 dwClock AS DWORD ' DWORD dwClock
 dwPauseTimeout AS DWORD ' DWORD dwPauseTimeout
 dwPrerollDuration AS DWORD ' DWORD dwPrerollDuration
 dwPostrollDuration AS DWORD ' DWORD dwPostrollDuration
END TYPE
'/* parameter block for MCI_VCR_SETTUNER command message */
' // Size = 12 bytes
TYPE MCI_VCR_SETTUNER_PARMS DWORD
 dwCallback AS DWORD ' DWORD dwCallback
 dwChannel AS DWORD ' DWORD dwChannel
 dwNumber AS DWORD ' DWORD dwNumber
END TYPE
'/* parameter block for MCI_ESCAPE command message */
' // Size = 8 bytes
TYPE MCI_VCR_ESCAPE_PARMS DWORD
 dwCallback AS DWORD ' DWORD dwCallback
 lpstrCommand AS ASCIIZ PTR ' LPCSTR lpstrCommand
END TYPE
'/* parameter block for MCI_LIST command message */
' // Size = 12 bytes
TYPE MCI_VCR_LIST_PARMS DWORD
 dwCallback AS DWORD ' DWORD dwCallback
 dwReturn AS DWORD ' DWORD dwReturn
 dwNumber AS DWORD ' DWORD dwNumber
END TYPE
'/* parameter block for MCI_RECORD command message */
' // Size = 16 bytes
TYPE MCI_VCR_RECORD_PARMS DWORD
 dwCallback AS DWORD ' DWORD dwCallback
 dwFrom AS DWORD ' DWORD dwFrom
 dwTo AS DWORD ' DWORD dwTo
 dwAt AS DWORD ' DWORD dwAt
END TYPE
'/* parameter block for MCI_PLAY command message */
' // Size = 16 bytes
TYPE MCI_VCR_PLAY_PARMS DWORD
 dwCallback AS DWORD ' DWORD dwCallback
 dwFrom AS DWORD ' DWORD dwFrom
 dwTo AS DWORD ' DWORD dwTo
 dwAt AS DWORD ' DWORD dwAt
END TYPE
'/* parameter block for MCI_SETAUDIO command message */
' // Size = 16 bytes
TYPE MCI_VCR_SETAUDIO_PARMS DWORD
 dwCallback AS DWORD ' DWORD dwCallback
 dwTrack AS DWORD ' DWORD dwTrack
 dwTo AS DWORD ' DWORD dwTo
 dwNumber AS DWORD ' DWORD dwNumber
END TYPE
'/* parameter block for MCI_SIGNAL command message */
' // Size = 16 bytes
TYPE MCI_VCR_SIGNAL_PARMS DWORD
 dwCallback AS DWORD ' DWORD dwCallback
 dwPosition AS DWORD ' DWORD dwPosition
 dwPeriod AS DWORD ' DWORD dwPeriod
 dwUserParm AS DWORD ' DWORD dwUserParm
END TYPE
'/* parameter block for MCI_VCR_STATUS command message */
' // Size = 20 bytes
TYPE MCI_VCR_STATUS_PARMS DWORD
 dwCallback AS DWORD ' DWORD dwCallback
 dwReturn AS DWORD ' DWORD dwReturn
 dwItem AS DWORD ' DWORD dwItem
 dwTrack AS DWORD ' DWORD dwTrack
 dwNumber AS DWORD ' DWORD dwNumber
END TYPE
'/* parameter block for MCI_SETVIDEO command message */
' // Size = 16 bytes
TYPE MCI_VCR_SETVIDEO_PARMS DWORD
 dwCallback AS DWORD ' DWORD dwCallback
 dwTrack AS DWORD ' DWORD dwTrack
 dwTo AS DWORD ' DWORD dwTo
 dwNumber AS DWORD ' DWORD dwNumber
END TYPE
'/* parameter block for MCI_STEP command message */
' // Size = 8 bytes
TYPE MCI_VCR_STEP_PARMS DWORD
 dwCallback AS DWORD ' DWORD dwCallback
 dwFrames AS DWORD ' DWORD dwFrames
END TYPE
'/* parameter block for MCI_CUE command message */
' // Size = 12 bytes
TYPE MCI_VCR_CUE_PARMS DWORD
 dwCallback AS DWORD ' DWORD dwCallback
 dwFrom AS DWORD ' DWORD dwFrom
 dwTo AS DWORD ' DWORD dwTo
END TYPE
'#endif /* NOT RC_INVOKED */
'/* VCR error codes */
%EQUATE `MCIERR_VCR_CANNOT_OPEN_COMM = %MCIERR_CUSTOM_DRIVER_BASE + 1
%EQUATE `MCIERR_VCR_CANNOT_WRITE_COMM = %MCIERR_CUSTOM_DRIVER_BASE + 2
%EQUATE `MCIERR_VCR_READ_TIMEOUT = %MCIERR_CUSTOM_DRIVER_BASE + 3
%EQUATE `MCIERR_VCR_COMMAND_BUFFER_FULL = %MCIERR_CUSTOM_DRIVER_BASE + 4
%EQUATE `MCIERR_VCR_COMMAND_CANCELLED = %MCIERR_CUSTOM_DRIVER_BASE + 5
%EQUATE `MCIERR_VCR_POWER_OFF = %MCIERR_CUSTOM_DRIVER_BASE + 6
%EQUATE `MCIERR_VCR_COMMAND_FAILED = %MCIERR_CUSTOM_DRIVER_BASE + 7
%EQUATE `MCIERR_VCR_SEARCH = %MCIERR_CUSTOM_DRIVER_BASE + 8
%EQUATE `MCIERR_VCR_CONDITION = %MCIERR_CUSTOM_DRIVER_BASE + 9
%EQUATE `MCIERR_VCR_CAMERA_MODE = %MCIERR_CUSTOM_DRIVER_BASE + 10
%EQUATE `MCIERR_VCR_VCR_MODE = %MCIERR_CUSTOM_DRIVER_BASE + 11
%EQUATE `MCIERR_VCR_COUNTER_TYPE = %MCIERR_CUSTOM_DRIVER_BASE + 12
%EQUATE `MCIERR_VCR_TUNER = %MCIERR_CUSTOM_DRIVER_BASE + 13
%EQUATE `MCIERR_VCR_EMERGENCY_STOP = %MCIERR_CUSTOM_DRIVER_BASE + 14
%EQUATE `MCIERR_VCR_MEDIA_UNMOUNTED = %MCIERR_CUSTOM_DRIVER_BASE + 15
%EQUATE `MCIERR_VCR_REGISTER = %MCIERR_CUSTOM_DRIVER_BASE + 16
%EQUATE `MCIERR_VCR_TRACK_FAILURE = %MCIERR_CUSTOM_DRIVER_BASE + 17
%EQUATE `MCIERR_VCR_CUE_FAILED_FLAGS = %MCIERR_CUSTOM_DRIVER_BASE + 18
%EQUATE `MCIERR_VCR_ISWRITEPROTECTED = %MCIERR_CUSTOM_DRIVER_BASE + 19
#ENDIF
