TempleOSCDV5.00.ISO
This commit is contained in:
1 parent
122df6338e
commit
f6eacf7744
374 files changed
+11078
-11204
No files matched your search
+22
-18
@@ -38,7 +38,7 @@ U0 DrvsRelease()
|
||||
CDrv *DrvMakeFreeSlot(U8 drv_let)
|
||||
{//Make a slot free for a new drv, like during $LK,"Mount",A="MN:Mount"$().
|
||||
//!!! drv_let is not a $LK,"remapped",A="MN:DrvMap"$ drv.
|
||||
I64 i=ToUpper(drv_let)-'A';
|
||||
I64 i=Let2Let(drv_let)-'A';
|
||||
CDrv *res;
|
||||
if (!(0<=i<NUM_DRVS))
|
||||
throw('Drv');
|
||||
@@ -51,7 +51,7 @@ CDrv *DrvMakeFreeSlot(U8 drv_let)
|
||||
U8 DrvNextFreeLet(U8 first_drv_let='C')
|
||||
{//Locate free slot for new drv, like during $LK,"Mount",A="MN:Mount"$().
|
||||
//!!! first_drv_let is not a $LK,"remapped",A="MN:DrvMap"$ drv.
|
||||
I64 i=ToUpper(first_drv_let)-'A',type=Let2BlkDevType(first_drv_let);
|
||||
I64 i=Let2Let(first_drv_let)-'A',type=Let2BlkDevType(first_drv_let);
|
||||
if (!(0<=i<NUM_DRVS))
|
||||
throw('Drv');
|
||||
do
|
||||
@@ -158,9 +158,20 @@ U8 Drv2Let(CDrv *dv=NULL)
|
||||
return dv->drv_let;
|
||||
}
|
||||
|
||||
U8 Let2Let(U8 drv_let=0)
|
||||
{//Drv letter to Drv letter.
|
||||
if (!drv_let)
|
||||
drv_let=Drv2Let(Fs->cur_dv);
|
||||
else if (drv_let==':')
|
||||
drv_let=blkdev.boot_drv_let;
|
||||
else if (drv_let=='~')
|
||||
drv_let=*blkdev.home_dir;
|
||||
return ToUpper(drv_let);
|
||||
}
|
||||
|
||||
I64 Let2BlkDevType(U8 drv_let)
|
||||
{//Drv letter to BlkDev Type. drv_let=0 not allowed. See $LK,"BDT_NULL",A="MN:BDT_NULL"$.
|
||||
drv_let=ToUpper(drv_let);
|
||||
drv_let=Let2Let(drv_let);
|
||||
if ('A'<=drv_let<='B')
|
||||
return BDT_RAM;
|
||||
if ('C'<=drv_let<='L')
|
||||
@@ -180,11 +191,7 @@ CDrv *Let2Drv(U8 drv_let=0,Bool except=TRUE)
|
||||
if (!drv_let)
|
||||
dv=Fs->cur_dv;
|
||||
else {
|
||||
if (drv_let==':')
|
||||
drv_let=blkdev.boot_drv_let;
|
||||
else if (drv_let=='~')
|
||||
drv_let=*blkdev.home_dir;
|
||||
drv_let=ToUpper(drv_let);
|
||||
drv_let=Let2Let(drv_let);
|
||||
if (!('A'<=drv_let<='Z')) {
|
||||
if (except)
|
||||
throw('Drv');
|
||||
@@ -219,7 +226,7 @@ U0 DskCacheInvalidate(CDrv *dv)
|
||||
if (bd->flags & BDF_READ_CACHE)
|
||||
DskCacheInvalidate2(dv);
|
||||
if (bd->type==BDT_ATAPI && !(bd->flags & BDF_READ_ONLY_OVERRIDE))
|
||||
ISODrvInit(dv,(32767/bd->blk_size+1)*bd->blk_size>>BLK_SIZE_BITS);
|
||||
ISOInit(dv,(32767/bd->blk_size+1)*bd->blk_size>>BLK_SIZE_BITS);
|
||||
if (unlock)
|
||||
DrvUnlock(dv);
|
||||
} catch
|
||||
@@ -233,15 +240,18 @@ U0 ChgDsk(U8 drv_let=0)
|
||||
CBlkDev *bd=dv->bd;
|
||||
if (!(bd->flags&BDF_INITIALIZED))
|
||||
BlkDevInit(bd);
|
||||
else if (bd->flags&BDF_REMOVABLE)
|
||||
else if (bd->flags&BDF_REMOVABLE) {
|
||||
if (bd->type==BDT_ATAPI)
|
||||
ATAInit(bd); //TODO: This is a kludge for QEMU?
|
||||
DskCacheInvalidate(dv);
|
||||
}
|
||||
Drv(drv_let);
|
||||
RedSeaFreeFreeLst(dv);
|
||||
}
|
||||
|
||||
Bool DrvMap(U8 drv_let,CDrv *dv)
|
||||
{//Make drive letter map to another.
|
||||
drv_let=ToUpper(drv_let);
|
||||
drv_let=Let2Let(drv_let);
|
||||
if ('A'<=drv_let<='Z') {
|
||||
blkdev.let_to_drv[drv_let-'A']=dv;
|
||||
dv->drv_let=drv_let;
|
||||
@@ -311,13 +321,7 @@ U8 drv_text_attr[3]={BLACK,BLUE,RED};
|
||||
|
||||
U8 DrvTextAttrGet(U8 drv_let=0)
|
||||
{//Get color of drive.
|
||||
if (!drv_let)
|
||||
drv_let=Drv2Let(Fs->cur_dv);
|
||||
else if (drv_let==':')
|
||||
drv_let=blkdev.boot_drv_let;
|
||||
else if (drv_let=='~')
|
||||
drv_let=*blkdev.home_dir;
|
||||
drv_let=ToUpper(drv_let);
|
||||
drv_let=Let2Let(drv_let);
|
||||
if ('A'<=drv_let<='Z')
|
||||
return blkdev_text_attr[Let2BlkDevType(drv_let)]<<4|
|
||||
drv_text_attr[drv_let%sizeof(drv_text_attr)];
|
||||
|
||||
Reference in new issue
Block a user