~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Bochs x86 Emulator
bochs/bios/notes

Version: ~ [ 2.3.5 ] ~ [ 2.3 ] ~

  1 ####################
  2 # Read Disk Sector #
  3 ####################
  4 
  5 System programming:
  6 -------------------
  7 
  8 (Int 13h, ah=2)
  9 in 1f7 until BSY cleared
 10 out 1f2, AL                            # number of sectors
 11 out 1f3, cl (bits 0-5)                 # starting sector number
 12 out 1f4, ch                            # cylinder number bits 0..7, 0 based
 13 out 1f5, cl (bits 6,7) & dh (bits 6,7) # cyl, bits 8..9, 10..11
 14 out 1f6, dh (bits 0..3) --> bits 0..3  # head number
 15          dh (bits 4..5) --> ???        # head number
 16          dl (bit 0) --> bit 4          # drive number
 17 out 1f7, 0x20                          # read sectors command normal
 18 
 19 
 20 
 21 Drive response:
 22 ---------------
 23 
 24 * drive sets the busy bit in Status Reg to 1
 25 * if command parameters are wrong:
 26   > drive sets the aborted-command bit in the Error register and
 27     error bit in the Status register to 1.
 28   > Drive also sets the busy bit in the Status register to 0.
 29   > Drive then generates an interrupt to the system.
 30 * else:
 31   > drive executes an implied seek to desired track and
 32     reads sectors into sector buffer
 33   > when sector buffer is filled and the data is ready to be
 34     transferred, the drive sets the data-request bit to 1, sets
 35     the busy bit to 0, and generates an interrupt.
 36   > on a single-sector transfer, after the system has transferred
 37     the data, the drive sets the data-request bit and the busy bit to 0.
 38   > on a multiple-sector transfer, after the system has transferred
 39     the first sector of data, the drive sets the data-request bit to 0,
 40     and the busy bit to 1.  When each subsequent sector is ready to be
 41     transferred, the drive sets the data-request bit to 1, the busy bit to 0,
 42     and generates an interrupt.  When the system has tranferred the last sector,
 43     the drive sets the data-request bit and busy bit to 0.
 44 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.