summaryrefslogtreecommitdiff
path: root/Kernel/BlkDev
diff options
context:
space:
mode:
Diffstat (limited to 'Kernel/BlkDev')
-rw-r--r--Kernel/BlkDev/DskFDC.HC30
1 files changed, 30 insertions, 0 deletions
diff --git a/Kernel/BlkDev/DskFDC.HC b/Kernel/BlkDev/DskFDC.HC
index 3b2cac8..b3eb9c3 100644
--- a/Kernel/BlkDev/DskFDC.HC
+++ b/Kernel/BlkDev/DskFDC.HC
@@ -499,4 +499,34 @@ U8 FDCChk(CBlkDev *bd)
FDCMotor(bd,OFF);
if (unlock) BlkDevUnlock(bd);
return status;
+}
+
+U0 FDCFsChk(CDrv *dv, CBlkDev *bd=NULL,
+ CRedSeaBoot *br=NULL, I64 num=-1)
+{
+ CRedSeaBoot br2;
+
+ if (!bd)
+ bd=dv->bd;
+ if (!br)
+ br=&br2;
+ if (num<0)
+ num=dv->prt_num;
+
+ if (bd->heads!=FDCChk(bd)) {
+ dv->prt_num=num;
+ dv->fs_type=FSt_NULL;
+ } else {
+ FDCReadBlks(bd,br,0,1);
+ if (br->signature==MBR_PT_REDSEA && br->signature2==0xAA55) {
+ dv->bd=bd;
+ dv->prt_num=num;
+ dv->fs_type=FSt_REDSEA;
+ RedSeaInit(dv);
+ } else {
+ dv->bd=bd;
+ dv->prt_num=num;
+ dv->fs_type=FSt_UNKNOWN;
+ }
+ }
} \ No newline at end of file