; trust that rather than what the superblock contains.
;
; Note: di points to beyond the end of PartInfo
+; Note: false negatives might slip through the handover area's sanity checks,
+; if the region is very close (less than a paragraph) to
+; PartInfo ; no false positives are possible though
;
harddisk:
mov dx,[di-76-10] ; Original DS
mov si,[di-76-12] ; Original SI
shr si,4
- jz .no_partition ; SI == 0 -> assume no partition
add dx,si
- cmp dx,1024 >> 4 ; DS:SI < 1K (inside the IVT)?
- jb .no_partition
- cmp dx,PartInfo >> 4 ; DS:SI in overwritten memory?
+ cmp dx,4fh ; DS:SI < 50h:0 (BDA or IVT) ?
+ jbe .no_partition
+ cmp dx,(PartInfo-75)>>4 ; DS:SI in overwritten memory?
jae .no_partition
test byte [di-76],7Fh ; Sanity check: "active flag" should
jnz .no_partition ; be 00 or 80