TempleOSCDV4.06.ISO

This commit is contained in:
Terry A. Davis authored and minexew committed 2018-09-08 21:47:19 +02:00
1 parent 6fe38d2d9d
commit b632ab9a4f
261 files changed
+6282 -5801

No files matched your search

+30 -30
View File
@@ -64,7 +64,7 @@ U0 ATACmd(CBlkDev *bd,U8 cmd)
PortNop;
}
Bool ATAGetResult(CBlkDev *bd,F64 timeout,U8 *buf,I64 cnt,
Bool ATAGetRes(CBlkDev *bd,F64 timeout,U8 *buf,I64 cnt,
I64 _avail,Bool one_read)
{
I64 avail,overflow;
@@ -176,7 +176,7 @@ I64 ATAGetDevId(CBlkDev *bd,F64 timeout,U16 **_id_record)
if (InU8(bd->base0+ATAR0_STAT)&ATAS_ERR)
return BDT_ATAPI;
id_record=ACAlloc(512);
if (!ATAGetResult(bd,timeout,id_record,512,512,FALSE)) {
if (!ATAGetRes(bd,timeout,id_record,512,512,FALSE)) {
Free(id_record);
return BDT_NULL;
}
@@ -186,7 +186,7 @@ I64 ATAGetDevId(CBlkDev *bd,F64 timeout,U16 **_id_record)
I64 ATAReadNativeMax(CBlkDev *bd,F64 timeout)
{//Returns zero on err
I64 result=0;
I64 res=0;
Bool okay=TRUE;
if (bd->type==BDT_ATAPI) {
@@ -220,18 +220,18 @@ I64 ATAReadNativeMax(CBlkDev *bd,F64 timeout)
OutU8(bd->base0+ATAR0_SELECT,0xEF|bd->unit<<4);
ATACmd(bd,ATA_READ_NATIVE_MAX_EXT);
if (ATAWaitNotBUSY(bd,timeout)) {
result.u8[0]=InU8(bd->base0+ATAR0_SECT);
result.u8[1]=InU8(bd->base0+ATAR0_LCYL);
result.u8[2]=InU8(bd->base0+ATAR0_HCYL);
res.u8[0]=InU8(bd->base0+ATAR0_SECT);
res.u8[1]=InU8(bd->base0+ATAR0_LCYL);
res.u8[2]=InU8(bd->base0+ATAR0_HCYL);
OutU8(bd->base1+ATAR1_CTRL,0x80);
result.u8[3]=InU8(bd->base0+ATAR0_SECT);
result.u8[4]=InU8(bd->base0+ATAR0_LCYL);
result.u8[5]=InU8(bd->base0+ATAR0_HCYL);
res.u8[3]=InU8(bd->base0+ATAR0_SECT);
res.u8[4]=InU8(bd->base0+ATAR0_LCYL);
res.u8[5]=InU8(bd->base0+ATAR0_HCYL);
if (result>>24==result&0xFFFFFF) {//Kludge to make qemu-kvm work
if (res>>24==res&0xFFFFFF) {//Kludge to make qemu-kvm work
bd->flags&=~BDF_EXT_SIZE;
result&=0xFFFFFF;
res&=0xFFFFFF;
}
}
} else {
@@ -240,18 +240,18 @@ I64 ATAReadNativeMax(CBlkDev *bd,F64 timeout)
OutU8(bd->base0+ATAR0_SELECT,0xE0|bd->unit<<4);
ATACmd(bd,ATA_READ_NATIVE_MAX);
if (ATAWaitNotBUSY(bd,timeout)) {
result.u8[0]=InU8(bd->base0+ATAR0_SECT);
result.u8[1]=InU8(bd->base0+ATAR0_LCYL);
result.u8[2]=InU8(bd->base0+ATAR0_HCYL);
result.u8[3]=InU8(bd->base0+ATAR0_SELECT) & 0xF;
res.u8[0]=InU8(bd->base0+ATAR0_SECT);
res.u8[1]=InU8(bd->base0+ATAR0_LCYL);
res.u8[2]=InU8(bd->base0+ATAR0_HCYL);
res.u8[3]=InU8(bd->base0+ATAR0_SELECT) & 0xF;
}
}
}
return bd->max_blk=result;
return bd->max_blk=res;
}
I64 ATAPIReadCapacity(CBlkDev *bd,I64 *_blk_size=NULL)
{//Supposedly this can return a result +/- 75 sects.
{//Supposedly this can return a res +/- 75 sects.
//Error might just be for music.
Bool unlock=BlkDevLock(bd);
U32 buf[2];
@@ -264,7 +264,7 @@ I64 ATAPIReadCapacity(CBlkDev *bd,I64 *_blk_size=NULL)
OutU8(bd->base0+ATAR0_HCYL,0);
ATACmd(bd,ATA_PACKET);
ATAPIWritePktWord(bd,0,0x2500,0,0,0,0,0);
if (!ATAGetResult(bd,0,buf,8,0,TRUE))
if (!ATAGetRes(bd,0,buf,8,0,TRUE))
buf[0]=buf[1]=0;
} else
buf[0]=buf[1]=0;
@@ -276,7 +276,7 @@ I64 ATAPIReadCapacity(CBlkDev *bd,I64 *_blk_size=NULL)
CATAPITrack *ATAPIReadTrackInfo(CBlkDev *bd,I64 blk)
{
CATAPITrack *result=CAlloc(sizeof(CATAPITrack));
CATAPITrack *res=CAlloc(sizeof(CATAPITrack));
Bool unlock=BlkDevLock(bd);
if (ATAWaitNotBUSY(bd,0)) {
if (bd->flags & BDF_EXT_SIZE)
@@ -288,16 +288,16 @@ CATAPITrack *ATAPIReadTrackInfo(CBlkDev *bd,I64 blk)
ATACmd(bd,ATA_PACKET);
ATAPIWritePktWord(bd,0,0x5200,blk.u16[1],blk.u16[0],
(sizeof(CATAPITrack)&0xFF00)>>8,(sizeof(CATAPITrack)&0x00FF)<<8,0);
if (!ATAGetResult(bd,0,result,sizeof(CATAPITrack),0,TRUE)) {
Free(result);
result=NULL;
if (!ATAGetRes(bd,0,res,sizeof(CATAPITrack),0,TRUE)) {
Free(res);
res=NULL;
}
} else {
Free(result);
result=NULL;
Free(res);
res=NULL;
}
if (unlock) BlkDevUnlock(bd);
return result;
return res;
}
Bool ATAInit(CBlkDev *bd)
@@ -358,7 +358,7 @@ U0 ATAReadBlks(CBlkDev *bd,U8 *buf, I64 blk, I64 cnt)
ATACmd(bd,ATA_READ_MULTI_EXT);
else
ATACmd(bd,ATA_READ_MULTI);
if (!ATAGetResult(bd,tS+1.0,buf,cnt*bd->blk_size,BLK_SIZE,FALSE)) {
if (!ATAGetRes(bd,tS+1.0,buf,cnt*bd->blk_size,BLK_SIZE,FALSE)) {
if (retries--) {
ATAWaitNotBUSY(bd,0);
goto retry;
@@ -385,7 +385,7 @@ I64 ATAProbe(I64 base0,I64 base1,I64 unit)
Bool ATAPIReadBlks2(CBlkDev *bd,F64 timeout,U8 *buf,
I64 native_blk, I64 cnt,Bool lock)
{
Bool result=FALSE,unlock;
Bool res=FALSE,unlock;
if (cnt<=0)
return FALSE;
if (lock)
@@ -400,14 +400,14 @@ Bool ATAPIReadBlks2(CBlkDev *bd,F64 timeout,U8 *buf,
ATACmd(bd,ATA_PACKET);
if (ATAPIWritePktWord(bd,timeout,0xA800,
native_blk.u16[1],native_blk,cnt.u16[1],cnt,0) &&
ATAGetResult(bd,timeout,buf,cnt*bd->blk_size,0,FALSE)) {
ATAGetRes(bd,timeout,buf,cnt*bd->blk_size,0,FALSE)) {
blkdev.read_cnt+=(cnt*bd->blk_size)>>BLK_SIZE_BITS;
result=TRUE;
res=TRUE;
}
}
// ATAPIStartStop(bd,0,FALSE);
if (lock && unlock) BlkDevUnlock(bd);
return result;
return res;
}
U0 ATAPIReadBlks(CBlkDev *bd,U8 *buf, I64 blk, I64 cnt)