596 |
.code16 |
.code16 |
597 |
movb $0x8, %ah |
movb $0x8, %ah |
598 |
int $0x13 /* do the operation */ |
int $0x13 /* do the operation */ |
599 |
|
/* check if successful */ |
600 |
|
testb %ah, %ah |
601 |
|
jnz 1f |
602 |
|
/* bogus BIOSes may not return an error number */ |
603 |
|
testb $0x3f, %cl /* 0 sectors means no disk */ |
604 |
|
jnz 1f /* if non-zero, then succeed */ |
605 |
|
/* XXX 0x60 is one of the unused error numbers */ |
606 |
|
movb $0x60, %ah |
607 |
|
1: |
608 |
movb %ah, %bl /* save return value in %bl */ |
movb %ah, %bl /* save return value in %bl */ |
609 |
/* back to protected mode */ |
/* back to protected mode */ |
610 |
data32 |
data32 |