home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / programming / oslib / oslib_1 / OSLib / Computer / Hdr / CD < prev    next >
Encoding:
Text File  |  1995-07-19  |  17.5 KB  |  576 lines

  1. ;Assembler header file for CD
  2. ;written by DefMod (Jun 30 1995) on Wed Jul 19 17:03:10 1995
  3. ;Simon Middleton, Uniqueway Ltd; Jonathan Coxhead, Acorn Computers Ltd
  4.  
  5.         [       :LNOT: :DEF: Get_Types
  6.         GBLS    Get_Types
  7.         ]
  8.         [       :LNOT: :DEF: Types_Hdr
  9. Get_Types                       SETS    "GET OS:Hdr.Types"
  10.         |
  11. Get_Types                       SETS    ""
  12.         ]
  13.         $Get_Types
  14.  
  15.         [       :LNOT: :DEF: Get_OS
  16.         GBLS    Get_OS
  17.         ]
  18.         [       :LNOT: :DEF: OS_Hdr
  19. Get_OS                          SETS    "GET OS:Hdr.OS"
  20.         |
  21. Get_OS                          SETS    ""
  22.         ]
  23.         $Get_OS
  24.  
  25.         [       :LNOT: :DEF: CD_Hdr
  26.         GBLS    CD_Hdr
  27.  
  28. ;Symbols for constants
  29. Error_CDBase                    *       &803400
  30. Error_CDBadAlignment            *       &803401
  31. Error_CDDriveNotSupported       *       &803402
  32. Error_CDBadMode                 *       &803403
  33. Error_CDInvalidParameter        *       &803404
  34. Error_CDNotAudioTrack           *       &803405
  35. Error_CDNoCaddy                 *       &803406
  36. Error_CDNoDrive                 *       &803407
  37. Error_CDInvalidFormat           *       &803408
  38. Error_CDBadMinutes              *       &803409
  39. Error_CDBadSeconds              *       &80340A
  40. Error_CDBadBlocks               *       &80340B
  41. Error_CDPhysicalBlockBad        *       &80340C
  42. Error_CDDrawerLocked            *       &80340D
  43. Error_CDWrongDataMode           *       &80340E
  44. Error_CDChannelNotSupported     *       &80340F
  45. Error_CDBadDeviceID             *       &803410
  46. Error_CDBadCardNumber           *       &803411
  47. Error_CDBadLUNNumber            *       &803412
  48. Error_CDNoSuchTrack             *       &803413
  49. Error_CDFaultyDisc              *       &803414
  50. Error_CDNoSuchBlock             *       &803415
  51. Error_CDNotSupported            *       &803416
  52. Error_CDDriverNotPresent        *       &803417
  53. Error_CD_SWINotSupported        *       &803418
  54. Error_CDTooManyDrivers          *       &803419
  55. Error_CDNotRegistered           *       &80341A
  56. CD_LogicalBlockAddressing       *       &0
  57. CD_RedBookAddressing            *       &1
  58. CD_PhysicalBlockAddressing      *       &2
  59. CD_Audio                        *       &0
  60. CD_Data                         *       &1
  61. CD_FourChannel                  *       &0
  62. CD_TwoChannel                   *       &2
  63. CD_ReadAudioRead                *       0
  64. CD_ReadAudioReasonMask          *       &FF
  65. CD_DriveStatusOK                *       &1
  66. CD_DriveStatusBusy              *       &2
  67. CD_DriveStatusNotReady          *       &4
  68. CD_DriveStatusUnavailable       *       &8
  69. CD_DriveReady                   *       &0
  70. CD_DriveNotReady                *       &1
  71. CD_MultiplierDefault            *       &0
  72. CD_MultiplierEighthSec          *       &1
  73. CD_MultiplierQuarterSec         *       &2
  74. CD_MultiplierHalfSec            *       &3
  75. CD_MultiplierOneSec             *       &4
  76. CD_MultiplierTwoSec             *       &5
  77. CD_MultiplierFourSec            *       &6
  78. CD_MultiplierEightSec           *       &7
  79. CD_MultiplierSixteenSec         *       &8
  80. CD_MultiplierThirtyTwoSec       *       &9
  81. CD_MultiplierOneMin             *       &A
  82. CD_MultiplierTwoMin             *       &B
  83. CD_MultiplierFourMin            *       &C
  84. CD_MultiplierEightMin           *       &D
  85. CD_MultiplierSixteenMin         *       &E
  86. CD_MultiplierThirtyTwoMin       *       &F
  87. CD_ModeAudio                    *       &0
  88. CD_Mode1                        *       &1
  89. CD_Mode2Form2                   *       &2
  90. CD_Mode2Form1                   *       &3
  91. CD_SpeedUnchanged               *       0
  92. CD_SpeedStandard                *       1
  93. CD_SpeedDouble                  *       2
  94. CD_SpeedMax                     *       255
  95. CD_PlayToEndOfTrack             *       &FE
  96. CD_PlayToEndOfDisc              *       &FF
  97. CD_AudioPlaying                 *       &0
  98. CD_AudioPaused                  *       &1
  99. CD_AudioCompleted               *       &3
  100. CD_AudioError                   *       &4
  101. CD_AudioStopped                 *       &5
  102. CD_CheckError                   *       &0
  103. CD_CheckSense                   *       &1
  104. CD_CheckRetry                   *       &2
  105. CD_SupportedAudioControl        *       &7
  106. CD_SupportedPrefetch            *       &8
  107. CD_SupportedCloseDrawer         *       &10
  108. CD_SupportedAudioLevel          *       &20
  109. CD_SupportedSpeedMultiplier     *       &3FC0
  110. CD_SupportedReadAudio           *       &4000
  111. CD_SupportedAudioParams         *       &8000
  112. CD_UseOldRead                   *       &40
  113. CD_UseOldSeek                   *       &80
  114. CD_UseOldInquiry                *       &100
  115. CD_UseOldCapacity               *       &200
  116. CD_UseOldReady                  *       &400
  117. CD_UseOldStopOpen               *       &800
  118. CD_UseOldCheck                  *       &1000
  119. CD_UseOldStatus                 *       &2000
  120. CD_UseOldControl                *       &4000
  121. CD_UseOldPrefetch               *       &8000
  122. CD_UseOldReset                  *       &10000
  123. CD_UseReadDataProprietary       *       &20000
  124. CD_UseReadDataScatter           *       &40000
  125. CD_UseSeekDataProprietary       *       &80000
  126. CD_UseSeekDataScatter           *       &100000
  127. CD_DriveTypeUnknown             *       &FFFFFFFF
  128. CD_AudioDone                    *       &FFFFFFFF
  129. CD_VolumeLimit                  *       65535
  130.  
  131. ;Symbols for structure offsets and sizes
  132. CD_Address                      *       Bits
  133.  
  134. CD_AddressMode                  *       Int
  135.  
  136.                                 ^       0
  137. CD_ControlBlock_reserved        #       5*Int
  138. CD_ControlBlock                 *       @
  139.  
  140. CD_AudioFlags                   *       Byte
  141.  
  142.                                 ^       0
  143. CD_VersionBlock_version_number  #       Int
  144. CD_VersionBlock_version_string  #       256*Char
  145. CD_VersionBlock                 *       @
  146.  
  147. CD_Status                       *       Int
  148.  
  149. CD_Readiness                    *       Int
  150.  
  151. CD_Multiplier                   *       Int
  152.  
  153. CD_DataMode                     *       Int
  154.  
  155. CD_Speed                        *       Int
  156.  
  157.                                 ^       0
  158. CD_ParameterBlock_inactivity_timer #       CD_Multiplier
  159. CD_ParameterBlock_retry_count   #       Int
  160. CD_ParameterBlock_mode          #       CD_DataMode
  161. CD_ParameterBlock_speed         #       CD_Speed
  162. CD_ParameterBlock               *       @
  163.  
  164. CD_PlayToWhat                   *       Int
  165.  
  166.                                 ^       0
  167. CD_EnquireAllTracksBlock_first_track #       Byte
  168. CD_EnquireAllTracksBlock_last_track #       Byte
  169. CD_EnquireAllTracksBlock_reserved0 #       Byte
  170. CD_EnquireAllTracksBlock_reserved1 #       Byte
  171. CD_EnquireAllTracksBlock_reserved2 #       Byte
  172. CD_EnquireAllTracksBlock        *       @
  173.  
  174.                                 ^       0
  175. CD_EnquireOneTrackBlock_address #       CD_Address
  176. CD_EnquireOneTrackBlock_audio_control #       CD_AudioFlags
  177. CD_EnquireOneTrackBlock         *       @
  178.  
  179.                                 ^       0
  180. CD_SubChannelBlock_relative_lba #       CD_Address
  181. CD_SubChannelBlock_absolute_lba #       CD_Address
  182. CD_SubChannelBlock_audio_control #       CD_AudioFlags
  183. CD_SubChannelBlock_track_number #       Byte
  184. CD_SubChannelBlock_index_number #       Byte
  185. CD_SubChannelBlock              *       @
  186.  
  187.                                 ^       0
  188. CD_DiscUsedBlock_block_count    #       Int
  189. CD_DiscUsedBlock_block_size     #       Int
  190. CD_DiscUsedBlock                *       @
  191.  
  192. CD_Audio                        *       Int
  193.  
  194.                                 ^       0
  195. CD_InquiryBlock_i               #       36*Byte
  196. CD_InquiryBlock                 *       @
  197.  
  198. CD_ErrorResponseLevel           *       Int
  199.  
  200. CD_Flags                        *       Bits
  201.  
  202. CD_RegisterFlags                *       Bits
  203.  
  204.                                 ^       0
  205. CD_RegisterBlock_flags          #       CD_RegisterFlags
  206. CD_RegisterBlock_registration_count #       Int
  207. CD_RegisterBlock_drive_type_count #       Int
  208. CD_RegisterBlock                *       @
  209.  
  210. CD_DriveType                    *       Int
  211.  
  212. CD_AudioCompletion              *       Int
  213.  
  214.                                 ^       0
  215. CD_VolumeBlock_volume           #       2*Int
  216. CD_VolumeBlock                  *       @
  217.  
  218.  
  219. ;Symbols for SWI's and SWI reason codes
  220. XCD_Version                     *       &61240
  221. CD_Version                      *       &41240
  222.    ;Exit
  223.    ;  R0 -> version (CD_VersionBlock)
  224.  
  225. XCD_ReadData                    *       &61241
  226. CD_ReadData                     *       &41241
  227.    ;Entry
  228.    ;  R0 = address_mode (CD_AddressMode)
  229.    ;  R1 = start_address (CD_Address)
  230.    ;  R2 = block_count (Int)
  231.    ;  R3 = buffer (pointer to data)
  232.    ;  R4 = size (Int)
  233.    ;  R7 -> control (CD_ControlBlock)
  234.  
  235. XCD_SeekTo                      *       &61242
  236. CD_SeekTo                       *       &41242
  237.    ;Entry
  238.    ;  R0 = address_mode (CD_AddressMode)
  239.    ;  R1 = seek (CD_Address)
  240.    ;  R7 -> control (CD_ControlBlock)
  241.  
  242. XCD_DriveStatus                 *       &61243
  243. CD_DriveStatus                  *       &41243
  244.    ;Entry
  245.    ;  R7 -> control (CD_ControlBlock)
  246.    ;Exit
  247.    ;  R0 = status (CD_Status)
  248.    ;  R1 corrupted
  249.    ;  R2 corrupted
  250.    ;  R3 corrupted
  251.    ;  R4 corrupted
  252.    ;  R5 corrupted
  253.    ;  R6 corrupted
  254.    ;  R7 corrupted
  255.    ;  R8 corrupted
  256.    ;  R9 corrupted
  257.  
  258. XCD_DriveReady                  *       &61244
  259. CD_DriveReady                   *       &41244
  260.    ;Entry
  261.    ;  R7 -> control (CD_ControlBlock)
  262.    ;Exit
  263.    ;  R0 = ready (CD_Readiness)
  264.  
  265. XCD_GetParameters               *       &61245
  266. CD_GetParameters                *       &41245
  267.    ;Entry
  268.    ;  R0 = params (pointer to CD_ParameterBlock)
  269.    ;  R7 -> control (CD_ControlBlock)
  270.    ;Exit
  271.    ;  R0 corrupted
  272.    ;  R1 corrupted
  273.    ;  R2 corrupted
  274.    ;  R3 corrupted
  275.    ;  R4 corrupted
  276.    ;  R5 corrupted
  277.    ;  R6 corrupted
  278.    ;  R7 corrupted
  279.    ;  R8 corrupted
  280.    ;  R9 corrupted
  281.  
  282. XCD_SetParameters               *       &61246
  283. CD_SetParameters                *       &41246
  284.    ;Entry
  285.    ;  R0 -> params (CD_ParameterBlock)
  286.    ;  R7 -> control (CD_ControlBlock)
  287.    ;Exit
  288.    ;  R0 corrupted
  289.    ;  R1 corrupted
  290.    ;  R2 corrupted
  291.    ;  R3 corrupted
  292.    ;  R4 corrupted
  293.    ;  R5 corrupted
  294.    ;  R6 corrupted
  295.    ;  R7 corrupted
  296.    ;  R8 corrupted
  297.    ;  R9 corrupted
  298.  
  299. XCD_OpenDrawer                  *       &61247
  300. CD_OpenDrawer                   *       &41247
  301.    ;Entry
  302.    ;  R7 -> control (CD_ControlBlock)
  303.  
  304. XCD_EjectButton                 *       &61248
  305. CD_EjectButton                  *       &41248
  306.    ;Entry
  307.    ;  R0 = disable (Bool)
  308.    ;  R7 -> control (CD_ControlBlock)
  309.  
  310. XCD_EnquireAddress              *       &61249
  311. CD_EnquireAddress               *       &41249
  312.    ;Entry
  313.    ;  R0 = address_mode (CD_AddressMode)
  314.    ;  R7 -> control (CD_ControlBlock)
  315.    ;Exit
  316.    ;  R0 = address (CD_Address)
  317.  
  318. XCD_EnquireDataMode             *       &6124A
  319. CD_EnquireDataMode              *       &4124A
  320.    ;Entry
  321.    ;  R0 = address_mode (CD_AddressMode)
  322.    ;  R1 = address (CD_Address)
  323.    ;  R7 -> control (CD_ControlBlock)
  324.    ;Exit
  325.    ;  R0 = data_mode (CD_DataMode)
  326.  
  327. XCD_PlayAudio                   *       &6124B
  328. CD_PlayAudio                    *       &4124B
  329.    ;Entry
  330.    ;  R0 = address_mode (CD_AddressMode)
  331.    ;  R1 = start (CD_Address)
  332.    ;  R2 = end (CD_Address)
  333.    ;  R7 -> control (CD_ControlBlock)
  334.  
  335. XCD_PlayTrack                   *       &6124C
  336. CD_PlayTrack                    *       &4124C
  337.    ;Entry
  338.    ;  R0 = track (Int)
  339.    ;  R1 = play_to (CD_PlayToWhat)
  340.    ;  R7 -> control (CD_ControlBlock)
  341.  
  342. XCD_AudioPause                  *       &6124D
  343. CD_AudioPause                   *       &4124D
  344.    ;Entry
  345.    ;  R0 = pause (Bool)
  346.    ;  R7 -> control (CD_ControlBlock)
  347.  
  348. XCD_EnquireTrack                *       &6124E
  349. CD_EnquireTrack                 *       &4124E
  350.  
  351. CD_EnquireAllTracks             *       &0
  352.    ;Entry
  353.    ;  R0 = &0
  354.    ;  R1 = info (pointer to CD_EnquireAllTracksBlock)
  355.    ;  R7 -> control (CD_ControlBlock)
  356.  
  357. XCD_EnquireOneTrack             *       &6124E
  358. CD_EnquireOneTrack              *       &4124E
  359.    ;Entry
  360.    ;  R0 = track (Int)
  361.    ;  R1 = info (pointer to CD_EnquireOneTrackBlock)
  362.    ;  R7 -> control (CD_ControlBlock)
  363.  
  364. XCD_ReadSubChannel              *       &6124F
  365. CD_ReadSubChannel               *       &4124F
  366.    ;Entry
  367.    ;  R0 = &40
  368.    ;  R1 = block (pointer to CD_SubChannelBlock)
  369.    ;  R7 -> control (CD_ControlBlock)
  370.  
  371. XCD_CheckDrive                  *       &61250
  372. CD_CheckDrive                   *       &41250
  373.    ;Entry
  374.    ;  R7 -> control (CD_ControlBlock)
  375.    ;Exit
  376.    ;  R0 = status (Bits)
  377.  
  378. XCD_DiscChanged                 *       &61251
  379. CD_DiscChanged                  *       &41251
  380.    ;Entry
  381.    ;  R7 -> control (CD_ControlBlock)
  382.    ;Exit
  383.    ;  R0 = changed (Bool)
  384.  
  385. XCD_StopDisc                    *       &61252
  386. CD_StopDisc                     *       &41252
  387.    ;Entry
  388.    ;  R7 -> control (CD_ControlBlock)
  389.  
  390. XCD_DiscUsed                    *       &61253
  391. CD_DiscUsed                     *       &41253
  392.    ;Entry
  393.    ;  R0 = address_mode (CD_AddressMode)
  394.    ;  R1 = info (pointer to CD_DiscUsedBlock)
  395.    ;  R7 -> control (CD_ControlBlock)
  396.  
  397. XCD_AudioStatus                 *       &61254
  398. CD_AudioStatus                  *       &41254
  399.    ;Entry
  400.    ;  R7 -> control (CD_ControlBlock)
  401.    ;Exit
  402.    ;  R0 = status (CD_Audio)
  403.  
  404. XCD_Inquiry                     *       &61255
  405. CD_Inquiry                      *       &41255
  406.    ;Entry
  407.    ;  R0 = data (pointer to CD_InquiryBlock)
  408.    ;  R7 -> control (CD_ControlBlock)
  409.  
  410. XCD_DiscHasChanged              *       &61256
  411. CD_DiscHasChanged               *       &41256
  412.    ;Entry
  413.    ;  R7 -> control (CD_ControlBlock)
  414.  
  415. XCD_Control                     *       &61257
  416. CD_Control                      *       &41257
  417.    ;Entry
  418.    ;  R0 = level (CD_ErrorResponseLevel)
  419.    ;  R7 -> control (CD_ControlBlock)
  420.  
  421. XCD_Supported                   *       &61258
  422. CD_Supported                    *       &41258
  423.    ;Entry
  424.    ;  R7 -> control (CD_ControlBlock)
  425.    ;Exit
  426.    ;  R0 = flags (CD_Flags)
  427.  
  428. XCD_Prefetch                    *       &61259
  429. CD_Prefetch                     *       &41259
  430.    ;Entry
  431.    ;  R0 = address_mode (CD_AddressMode)
  432.    ;  R1 = address (CD_Address)
  433.    ;  R7 -> control (CD_ControlBlock)
  434.  
  435. XCD_Reset                       *       &6125A
  436. CD_Reset                        *       &4125A
  437.    ;Entry
  438.    ;  R7 -> control (CD_ControlBlock)
  439.  
  440. XCD_CloseDrawer                 *       &6125B
  441. CD_CloseDrawer                  *       &4125B
  442.    ;Entry
  443.    ;  R7 -> control (CD_ControlBlock)
  444.  
  445. XCD_IsDrawerLocked              *       &6125C
  446. CD_IsDrawerLocked               *       &4125C
  447.    ;Entry
  448.    ;  R7 -> control (CD_ControlBlock)
  449.    ;Exit
  450.    ;  R0 = locked (Bool)
  451.  
  452. XCD_AudioControl                *       &6125D
  453. CD_AudioControl                 *       &4125D
  454.    ;Entry
  455.    ;  R0 = &0
  456.    ;  R1 = control (Int)
  457.    ;  R7 -> control (CD_ControlBlock)
  458.  
  459. XCD_LastError                   *       &6125E
  460. CD_LastError                    *       &4125E
  461.    ;Exit
  462.    ;  R0 = errnum (Int)
  463.  
  464. XCD_AudioLevel                  *       &6125F
  465. CD_AudioLevel                   *       &4125F
  466.    ;Entry
  467.    ;  R7 -> control (CD_ControlBlock)
  468.    ;Exit
  469.    ;  R0 -> error (OS_Error)
  470.  
  471. XCD_Register                    *       &61260
  472. CD_Register                     *       &41260
  473.    ;Entry
  474.    ;  R0 -> info (CD_RegisterBlock)
  475.    ;  R1 -> driver_code (code)
  476.    ;  R2 = driver_workspace (pointer to Void)
  477.  
  478. XCD_Unregister                  *       &61261
  479. CD_Unregister                   *       &41261
  480.    ;Entry
  481.    ;  R0 -> info (CD_RegisterBlock)
  482.    ;  R1 -> driver_code (code)
  483.  
  484. XCD_ByteCopy                    *       &61262
  485. CD_ByteCopy                     *       &41262
  486.    ;Entry
  487.    ;  R1 -> source (Byte)
  488.    ;  R2 = destination (pointer to Byte)
  489.    ;  R3 = size (Int)
  490.  
  491. XCD_Identify                    *       &61263
  492. CD_Identify                     *       &41263
  493.    ;Entry
  494.    ;  R7 -> control (CD_ControlBlock)
  495.    ;Exit
  496.    ;  R2 = drive_type (CD_DriveType)
  497.  
  498. XCD_ConvertToLBA                *       &61264
  499. CD_ConvertToLBA                 *       &41264
  500.    ;Entry
  501.    ;  R0 = address_mode (CD_AddressMode)
  502.    ;  R1 = address (CD_Address)
  503.    ;Exit
  504.    ;  R1 = new_address (CD_Address)
  505.  
  506. XCD_ConvertToMSF                *       &61265
  507. CD_ConvertToMSF                 *       &41265
  508.    ;Entry
  509.    ;  R0 = address_mode (CD_AddressMode)
  510.    ;  R1 = address (CD_Address)
  511.    ;Exit
  512.    ;  R1 = new_address (CD_Address)
  513.  
  514. XCD_ReadAudio                   *       &61266
  515. CD_ReadAudio                    *       &41266
  516.    ;Entry
  517.    ;  R0 = address_mode (CD_AddressMode)
  518.    ;  R1 = address (CD_Address)
  519.    ;  R2 = block_count (Int)
  520.    ;  R3 = buffer (pointer to data)
  521.    ;  R4 = flags (Bits)
  522.    ;  R7 -> control (CD_ControlBlock)
  523.    ;Exit
  524.    ;  R0 corrupted
  525.    ;  R1 corrupted
  526.    ;  R2 = drive_type (CD_DriveType)
  527.    ;  R3 corrupted
  528.    ;  R4 corrupted
  529.    ;  R5 corrupted
  530.    ;  R6 corrupted
  531.    ;  R7 corrupted
  532.    ;  R8 corrupted
  533.    ;  R9 corrupted
  534.  
  535. XCD_ReadUserData                *       &61267
  536. CD_ReadUserData                 *       &41267
  537.    ;Entry
  538.    ;  R0 = address_mode (CD_AddressMode)
  539.    ;  R1 = address (CD_Address)
  540.    ;  R2 = size (Int)
  541.    ;  R3 = buffer (pointer to data)
  542.    ;  R4 = offset (Int)
  543.    ;  R7 -> control (CD_ControlBlock)
  544.    ;Exit
  545.    ;  R1 = last (CD_Address)
  546.    ;  R4 = next_offset (Int)
  547.  
  548. XCD_SeekUserData                *       &61268
  549. CD_SeekUserData                 *       &41268
  550.    ;Entry
  551.    ;  R0 = address_mode (CD_AddressMode)
  552.    ;  R1 = address (CD_Address)
  553.    ;  R2 = offset (Int)
  554.    ;  R7 -> control (CD_ControlBlock)
  555.    ;Exit
  556.    ;  R1 = found (CD_Address)
  557.    ;  R4 = offset (Int)
  558.  
  559. XCD_GetAudioParms               *       &61269
  560. CD_GetAudioParms                *       &41269
  561.  
  562. XCDGetAudioParms_VolumeBlock    *       &61269
  563. CDGetAudioParms_VolumeBlock     *       &41269
  564.    ;Entry
  565.    ;  R0 = &0
  566.    ;  R1 = block (pointer to CD_VolumeBlock)
  567.    ;  R7 -> control (CD_ControlBlock)
  568.    ;Exit
  569.    ;  R0 = cmp (CD_AudioCompletion)
  570.  
  571. XCD_SetAudioParms               *       &6126A
  572. CD_SetAudioParms                *       &4126A
  573.  
  574.         ]
  575.         END
  576.