TempleOSCDV4.09.ISO

This commit is contained in:
Terry A. Davis authored and minexew committed 2018-09-08 21:47:32 +02:00
1 parent 2d56cda5f3
commit 353eac0dbe
88 files changed
+2449 -2043

No files matched your search

+31 -11
View File
@@ -35,7 +35,7 @@ U0 DrvsRelease()
}
}
CDrv *DrvMakeFree(U8 drv_let)
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';
@@ -48,18 +48,22 @@ CDrv *DrvMakeFree(U8 drv_let)
return res;
}
CDrv *DrvNextFree(U8 first_drv_let='C')
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';
I64 i=ToUpper(first_drv_let)-'A',type=Let2BlkDevType(first_drv_let);
if (!(0<=i<NUM_DRVS))
throw('Drv');
do
if (blkdev.drvs[i].dv_signature!=DRV_SIGNATURE_VAL)
return DrvMakeFree(i+'A');
if (blkdev.drvs[i].dv_signature!=DRV_SIGNATURE_VAL) {
if (Let2BlkDevType(i+'A')!=type)
throw('Drv');
else
return i+'A';
}
while (++i<NUM_DRVS);
throw('Drv');
return NULL; //never gets here
return 0; //Never gets here.
}
U0 DrvDel(CDrv *dv)
@@ -71,6 +75,17 @@ U0 DrvDel(CDrv *dv)
MemSet(dv,0,sizeof(CDrv));
}
U0 DrvBlkDevDel(CBlkDev *bd)
{//Delete drv's of BlkDev
I64 i;
CDrv *dv;
for (i=0;i<NUM_DRVS;i++) {
dv=&blkdev.drvs[i];
if (dv->bd==bd)
DrvDel(dv);
}
}
U0 DrvFATBlkAlloc(CDrv *dv)
{
DrvChk(dv);
@@ -150,8 +165,10 @@ I64 Let2BlkDevType(U8 drv_let)
return BDT_RAM;
if ('C'<=drv_let<='L')
return BDT_ATA;
if ('M'<=drv_let<='S')
return BDT_FILE;
if ('M'<=drv_let<='P')
return BDT_FILE_READ;
if ('Q'<=drv_let<='S')
return BDT_FILE_WRITE;
if ('T'<=drv_let<='Z')
return BDT_ATAPI;
return BDT_NULL;
@@ -241,7 +258,8 @@ Bool Drv(U8 drv_let)
if (dv!=Fs->cur_dv) {
if (bd->flags & BDF_REMOVABLE && !(bd->flags & BDF_INITIALIZED))
ChgDsk(Drv2Let(dv));
if (bd->type==BDT_RAM || bd->type=BDT_FILE)
if (bd->type==BDT_RAM ||
bd->type==BDT_FILE_READ || bd->type==BDT_FILE_WRITE)
BlkDevInit(bd);
}
Fs->cur_dv=dv;
@@ -288,7 +306,7 @@ U8 *DrvModelNum(U8 drv_let=0)
return res;
}
U8 blkdev_text_attr[BDT_NUM_TYPES]={BLACK,LTCYAN,WHITE,LTGREEN,LTBLUE};
U8 blkdev_text_attr[BDT_NUM_TYPES]={BLACK,LTCYAN,WHITE,LTGREEN,LTRED,LTBLUE};
U8 drv_text_attr[3]={BLACK,BLUE,RED};
U8 DrvTextAttrGet(U8 drv_let=0)
@@ -325,7 +343,7 @@ U0 DrvRep()
else
ch='+';
attr=DrvTextAttrGet(drv_let);
"$$FG,%d$$$$BG,%d$$%C %-8Z %-9Z %04X %04X %02X\n",
"$$FG,%d$$$$BG,%d$$%C %-8Z %-10Z %04X %04X %02X\n",
attr&15,attr>>4,drv_let,dv->fs_type&FSG_TYPE_MASK,"ST_DRV_TYPES",
bd->type,"ST_BLKDEV_TYPES",bd->base0,bd->base1,bd->unit;
if (st=DrvModelNum(drv_let)) {
@@ -336,6 +354,8 @@ U0 DrvRep()
" Serial#:%s\n",st;
Free(st);
}
if (bd->type==BDT_FILE_READ || bd->type==BDT_FILE_WRITE)
" File=\"%s\"\n",bd->file_dsk_name;
" %016X-%016X\n$$FG$$$$BG$$",dv->drv_offset,dv->drv_offset+dv->size-1;
}
}