home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / documentation / documents / a252adfs < prev    next >
Internet Message Format  |  1999-04-27  |  4KB

  1. From: osmith@acorn.co.uk (Owen Smith)
  2. Subject: Re: Risc OS 3.00 upgrade
  3. Date: 14 Oct 91 11:11:44 GMT
  4.  
  5.  
  6. >Does the IDE and high density floppy driver cope with podule mounted
  7. >expansion cards where the podule simply supplies the hardware address 
  8. >(like ADFS and the ST506 drivers)?
  9.  
  10. This should clear things up for you:
  11.  
  12. New ADFS SWIs and service calls
  13.  
  14. ;*********************************************************************
  15.  
  16. ADFS_ControllerType
  17. ;
  18. ; Returns the controller type of a disc
  19. ;
  20. ; Entry:
  21. ;    R0 = drive number (0..7)
  22. ;
  23. ; Exit:
  24. ;    R0 = controller type
  25. ;         0 => disc not present
  26. ;         1 => 1772
  27. ;         2 => 765
  28. ;         3 => ST506
  29. ;         4 => IDE
  30.  
  31. ;*********************************************************************
  32.  
  33. ADFS_PowerControl
  34. ;
  35. ; Controls the power-saving features of the ADFS system
  36. ; It can be dangerous to use the drive spin control SWIs on drives that do
  37. ; not fully support them: the controllers on at least two drives tested hang
  38. ; up when autospindown is enabled and a reset does not recover the situation
  39. ; (power-on reset does).
  40. ;
  41. ; Entry:
  42. ;    R0 = reason
  43. ;
  44. ;         0 => read drive spin status
  45. ;           Entry:
  46. ;              R1 = drive (4..7)
  47. ;           Exit:
  48. ;              R2 = 0 => drive is not spinning
  49. ;                  !0 => drive is spinning
  50. ;
  51. ;         1 => set drive autospindown
  52. ;           Entry:
  53. ;              R1 = drive (4..7)
  54. ;              R2 =  0 => disable autospindown and spinup drive
  55. ;                   !0 => set autospindown to R2*5 seconds
  56. ;           Exit:
  57. ;                 R3 = previous enable value
  58. ;
  59. ;         2 => manual control of drive spin without affecting autospindown
  60. ;           Entry:
  61. ;              R1 = drive (4..7)
  62. ;              R2 = 0 => spin down immediately
  63. ;                  !0 => spin up immediately
  64.  
  65. ;*********************************************************************
  66.  
  67. ADFS_SetIDEController
  68. ;
  69. ; Gives the IDE driver the details of an alternative controller.
  70. ;
  71. ; Entry:
  72. ;    R2 -> IDE controller
  73. ;    R3 -> interrupt status of controller
  74. ;    R4 =  AND with status, NE => IRQ
  75. ;    R5 -> interrupt mask
  76. ;    R6 =  OR into mask enables IRQ
  77. ;    R7 -> data read routine (0 for default)
  78. ;    R8 -> data write routine (0 for default)
  79. ;    SB -> static workspace
  80. ;
  81. ; Exit:
  82. ;    VS => error
  83. ;          R0 = error
  84. ;    VC => no error
  85. ;          R0 preserved
  86. ;    All other registers preserved
  87.  
  88. ;*********************************************************************
  89.  
  90. ADFS_IDEUserOp
  91. ;
  92. ; Direct user interface for low-level IDE commands.
  93. ; Must not be called in background.
  94. ;
  95. ; Entry:
  96. ;    R0 = b0 = action
  97. ;              1 => reset controller
  98. ;              0 => process command
  99. ;         b25..b25 = transfer direction
  100. ;              00 => no transfer
  101. ;              01 => read
  102. ;              10 => write
  103. ;              11 reserved
  104. ;    R2 -> parameter block for command and results
  105. ;    R3 -> buffer
  106. ;    R4 = length to transfer
  107. ;    R5 = timeout in centiseconds (0 = default)
  108. ;    SB -> static workspace  
  109. ;    MODE: SVC
  110. ;    IRQ state: unknown
  111. ;
  112. ; Exit:
  113. ;    VS => error
  114. ;          R0 -> error block
  115. ;    VC => no error
  116. ;          R0 = command status (0 or a disc error number)
  117. ;          Parameter block updated
  118. ;    R3 updated
  119. ;    R4 updated
  120. ;    R5 undefined
  121. ;    All other registers preserved
  122. ;    IRQ state: preserved but IRQs enabled during call
  123.  
  124. ;*********************************************************************
  125.  
  126. Service_ADFSPoduleIDE
  127. ;
  128. ; Issued by ADFS to locate an IDE podule.
  129. ;
  130. ; Entry:
  131. ;    R1 = Service_ADFSPoduleIDE
  132. ;    R2 -> current IDE controller
  133. ;    R3 -> interrupt status of controller
  134. ;    R4 =  AND with status, NE => IRQ
  135. ;    R5 -> interrupt mask
  136. ;    R6 =  OR into mask enables IRQ
  137. ;    R7 -> data read routine (0 for default)
  138. ;    R8 -> data write routine (0 for default)
  139. ;
  140. ; Exit:
  141. ;    R1 = Service_Serviced
  142. ;    R2 -> new IDE controller
  143. ;    R3 -> interrupt status of controller
  144. ;    R4 =  AND with status, NE => IRQ
  145. ;    R5 -> interrupt mask
  146. ;    R6 =  OR into mask enables IRQ
  147. ;    R7 -> data read routine (0 for default)
  148. ;    R8 -> data write routine (0 for default)
  149.  
  150. ;*********************************************************************
  151.  
  152. Service_ADFSPoduleIDEDying
  153. ;
  154. ; Issued by podule module to tell ADFS of imminent demise.
  155. ;
  156. ; Entry:
  157. ;    R1 = Service_ADFSPoduleIDEDying
  158. ;
  159. ; Exit:
  160. ;    All registers preserved
  161.  
  162. ;*********************************************************************
  163.  
  164. The views expressed are my own and are not necessarily those of Acorn.
  165.  
  166.  
  167.