TempleOSCDV4.08.ISO

This commit is contained in:
Terry A. Davis authored and minexew committed 2018-09-08 21:47:25 +02:00
1 parent b632ab9a4f
commit 2d56cda5f3
258 files changed
+6973 -5476

No files matched your search

-60
View File
@@ -1,63 +1,3 @@
//ISO1 is ISO9660
//ISO2 is ISO13490
//ISO3 is ISO13346
Bool ISODrvInit(CDrv *dv,I64 blk)
{
CBlkDev *bd=dv->bd;
I64 spc=bd->blk_size>>BLK_SIZE_BITS,i=blk/spc;
CISO1PriDesc *iso=MAlloc(bd->blk_size);
CISO1DirEntry *de;
Bool unlock,res=FALSE;
U8 buf[8];
try {
unlock=DrvLock(dv);
dv->fs_type=FSt_ISO9660; //default
dv->spc=spc;
dv->base_offset=dv->data_area=dv->root_cluster=dv->size=0;
while (TRUE) {
dv->size=MaxI64(dv->size,(i+1)*spc);
RBlks(dv,iso,i*spc,spc);
buf[0](U32)=iso->id[0](U32);
buf[4](U16)=iso->id[4](U8);
switch (LstMatch(buf,"CD001\0CDW02\0BEA01\0BOOT2\0NSR02\0NSR03\0TEA01\0",
LMF_EXACT)) {
case 0:
dv->fs_type=FSt_ISO9660;
switch (iso->type) {
case ISO1T_SUPPLEMENTARY_DESC:
dv->data_area=0;
de=&iso->root_dir_record;
dv->root_cluster=de->loc.little;
dv->size=iso->vol_space_size.little*bd->blk_size>>BLK_SIZE_BITS;
res=TRUE;
goto ipi_done;
case ISO1T_TERMINATOR:
throw('Drv');
}
break;
default: //Its normal for ISO13346 to read NULL blk as terminator
PrintErr("File System Not Supported\n");
throw('Drv');
}
i++;
}
ipi_done:
Free(iso);
if (unlock)
DrvUnlock(dv);
} catch {
dv->fs_type=FSt_ISO9660;
dv->spc=spc;
dv->base_offset=dv->data_area=dv->root_cluster=0;
Free(iso);
if (unlock)
DrvUnlock(dv);
}
return res;
}
U0 Date2ISO1(CISO1Date *dst,CDate cdt)
{
CDateStruct ds;