dsk_rdy.asm
上传用户:xiaoan1112
上传日期:2013-04-11
资源大小:19621k
文件大小:2k
源码类别:

操作系统开发

开发平台:

Visual C++

  1. ;========================================================
  2. COMMENT #
  3. DSK_RDY.ASM
  4. Copyright (c) 1991 - Microsoft Corp.
  5. All rights reserved.
  6. Microsoft Confidential
  7. =================================================
  8. Returns TRUE if a disk is in the specified drive
  9. else returns FALSE. Uses BIOS int 13h to try to
  10. verify the first sector on the disk and then checks
  11. the return code if an error is detected and returns
  12. TRUE if error != 0x80 else returns FALSE if time out
  13. error is returned. If changeline is returned the
  14. verify is retried to avoid conflicts.
  15. int IsDiskReady( int Drive )
  16. ARGUMENTS: Drive  - Physical drive number
  17. RETURNS: int    - TRUE is disk is ready
  18.  else FALSE
  19. =================================================
  20. johnhe - 06/06/89
  21. END COMMENT #
  22. ;========================================================
  23. INCLUDE disk_io.inc
  24. INCLUDE model.inc
  25. ;========================================================
  26. .CODE
  27. ;========================================================
  28. IsDiskReady PROC Drive:BYTE
  29. mov AX,0401h ; Verify 1 disk sector function
  30. mov CX,01 ; Sector 1 track 0
  31. mov DH,00 ; Head 0
  32. mov DL,Drive ; Caller specified drive number
  33. push AX ; Do a disk reset before the
  34. xor AX,AX ; sector verify to fix a bug in
  35. int 13h ; the EPSON ROM BIOS.
  36. pop AX ; Restore AX
  37. VerifySector:
  38. int 13h ; BIOS disk interrupt call
  39. jnc IsReady ; No error so disk is ready
  40. cmp AH,06 ; See if changeline returned
  41. jne CheckTimeOut ; Not changeline so check for timeout
  42. mov AX,0401h ; Retry the call if changeline error
  43. int 13h ; BIOS disk interrupt call
  44. jnc IsReady ; No error so disk is ready
  45. CheckTimeOut:
  46. cmp AH,80h ; See if timeout error
  47. jne IsReady ; Not timeout so disk is inserted
  48. NotReady:
  49. xor AX,AX ; Single disk not ready
  50. jmp SHORT ReadyExit ; Finished so jump to exit
  51. IsReady:
  52. mov AX,1 ; Return TRUE
  53. ReadyExit:
  54. ret
  55. IsDiskReady ENDP
  56. ;========================================================
  57. END
  58. ;========================================================