.
[mu.git] / 510disk.mu
blobfd02bd4e520f6e4083525505cae2cbeb8b8d2d71
1 fn load-sectors disk: (addr disk), lba: int, n: int, out: (addr stream byte) {
2   var curr-lba/ebx: int <- copy lba
3   var remaining/edx: int <- copy n
4   {
5     compare remaining, 0
6     break-if-<=
7     # sectors = min(remaining, 0x100)
8     var sectors/eax: int <- copy remaining
9     compare sectors, 0x100
10     {
11       break-if-<=
12       sectors <- copy 0x100
13     }
14     #
15     read-ata-disk disk, curr-lba, sectors, out
16     #
17     remaining <- subtract sectors
18     curr-lba <- add sectors
19     loop
20   }
23 fn store-sectors disk: (addr disk), lba: int, n: int, in: (addr stream byte) {
24   var curr-lba/ebx: int <- copy lba
25   var remaining/edx: int <- copy n
26   {
27     compare remaining, 0
28     break-if-<=
29     # sectors = min(remaining, 0x100)
30     var sectors/eax: int <- copy remaining
31     compare sectors, 0x100
32     {
33       break-if-<=
34       sectors <- copy 0x100
35     }
36     #
37     write-ata-disk disk, curr-lba, sectors, in
38     #
39     remaining <- subtract sectors
40     curr-lba <- add sectors
41     loop
42   }