h6. [[CDFSDriver]] h6(. » CDFSDriver Technical Details h2. CDFSDriver Technical Details h3(#infoblock). CDFS Driver Information Block |_<^{width:4em}. Offset |_<^. Contents | |<^. 0 |<^. "Information word for CDFSDriver module":#informationword | |<^. 4 |<^. Number of times registered (should be set to zero and will be updated by [[CDFSDriver]]) | |<^. 8 |<^. Number of drive types recognised by this driver | |<^. 12 |<^. Reserved (must be zero) | |<^. 16 |<^. Reserved (must be zero) | h4. On Exit |<^. 12 |<^. A pointer to a routine to convert logical blocks to minutes, seconds, frames | |<^. 16 |<^. A pointer to a routine to convert minutes, seconds, frames to logical blocks | h3(#informationword). CDFS Information Word |_<^{width:4em}. Bits |_<^. Meaning | |<^. 0 - 5|<^. The number of CD commands recognised, currently 31, maximum 63 | |<^. 6 |<^. Use the SCSI 1 read data command | |<^. 7 |<^. Use the SCSI 1 seek command | |<^. 8 |<^. Use old (SCSI I?) Inquiry | |<^. 9 |<^. Use old Capacity | |<^. 10 |<^. Use old Ready | |<^. 11 |<^. Use old Stop/Open | |<^. 12 |<^. Use old Check | |<^. 13 |<^. Use old Status | |<^. 14 |<^. Use old Control | |<^. 15 |<^. Use old Prefetch | |<^. 16 |<^. Use old Reset | |<^. 17 |<^. Use Read data proprietary | |<^. 18 |<^. Use Read data scatter | |<^. 19 |<^. Use Seek data proprietary | |<^. 20 |<^. Use Seek data scatter | |<^. 21 |<^. Call [[SCSI_Op]] to implement [[CD_SCSIUserOp]] rather than the soft loadable driver | |<^. 22 - 31 |<^. Reserved (must be zero) | h3(#handlercode). Handler Code |_<^{width:4em}. Entry |_<^. Meaning | |<^. R0 - R6 |<^. As passed to SWI | |<^. R7 |<^. Pointer to [[CDFS Control Block]] | |<^. R11 |<^. "Call number":#driveralls | |<^. R12 |<^. Workspace pointer | |<^. R13 |<^. 1k stack | |<^. R14 |<^. Return address | |_<^{width:4em}. Exit | | |<^. R0 - R6 |<^. Updated for Return | |<^. R7 - R12 |<^. Corrupted | |<^. R14 |<^. Corrupted | h3(#drivercalls). Driver Call Numbers These are the reason codes passed in R11 when CDFSDriver calls your handler's handler. Note that there is no direct relationship between the handler call number and the CD_ SWI number. |_<^{width:4em}. Call |_<^. CD_ SWI | |<^. 0 |<^. [[CD_ReadData]] | |<^. 1 |<^. [[CD_SeekTo]] | |<^. 2 |<^. [[CD_DriveStatus]] | |<^. 3 |<^. [[CD_DriveReady]] | |<^. 4 |<^. [[CD_GetParameters]] | |<^. 5 |<^. [[CD_SetParameters]] | |<^. 6 |<^. [[CD_OpenDrawer]] | |<^. 7 |<^. [[CD_EjectButton]] | |<^. 8 |<^. [[CD_EnquireAddress]] | |<^. 9 |<^. [[CD_EnquireDataMode]] | |<^. 10 |<^. [[CD_PlayAudio]] | |<^. 11 |<^. [[CD_PlayTrack]] | |<^. 12 |<^. [[CD_AudioPause]] | |<^. 13 |<^. [[CD_EnquireTrack]] | |<^. 14 |<^. [[CD_ReadSubChannel]] | |<^. 15 |<^. [[CD_CheckDrive]] | |<^. 16 |<^. [[CD_DiscChanged]] | |<^. 17 |<^. [[CD_StopDisc]] | |<^. 18 |<^. [[CD_DiscUsed]] | |<^. 19 |<^. [[CD_AudioStatus]] | |<^. 20 |<^. [[CD_Inquiry]] | |<^. 21 |<^. [[CD_DiscHasChanged]] | |<^. 22 |<^. [[CD_Control]] | |<^. 23 |<^. [[CD_Supported]] | |<^. 24 |<^. [[CD_Prefetch]] | |<^. 25 |<^. [[CD_Reset]] | |<^. 26 |<^. [[CD_CloseDrawer]] | |<^. 27 |<^. [[CD_IsDrawerLocked]] | |<^. 28 |<^. [[CD_AudioControl]] | |<^. 29 |<^. [[CD_AudioLevel]] | |<^. 30 |<^. [[CD_Identify]] | |<^. 31 |<^. [[CD_ReadAudio]] | |<^. 32 |<^. [[CD_ReadUserData]] | |<^. 33 |<^. [[CD_SeekUserData]] | |<^. 34 |<^. [[CD_GetAudioParms]] | |<^. 35 |<^. [[CD_SetAudioParms]] | h4. See also * [[CDFS Technical Details]]