A kód nem tűnik túl bonyolultnak, nagyjából én is ezt csináltam. Elkezd beolvasni, de nem hagyja abba.
A CLI-ben Entert nyomva ez az eredmény: / Read sector parancsra a státusz regiszter S1-et és a HW regiszter IRQ-t és DRQ-t 1-be állítottam/valamit nem jól csinálok az biztos...
Read Status REG: 36
Write Parameter REG: 65
Restore: 0
Read Status REG: 36
Write Track REG 0
Write Sector REG: 1
Write Data: 0
Seek: 0
Read Status REG: 36
Write Track REG 0
Read Status REG: 36
Read Sector
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0
Read HW status REG:129
Read Data: 0
'Elvileg ez lenne a Read Sector egy Lib-ből, sajnos nem értem pontosan a működését valaki el tudja mondani egyszerűbben?
Hihetetlen hogy ilyen egyszerű lenne.
case 0x80:
case 0x90: /* READ-SECTORS */
if(D->Verbose) printf("WD1793: READ-SECTOR%s %c:%d:%d:%d (%02Xh)\n",V&0x10? "S":"",D->Drive+'A',D->Side,D->R[1],D->R[2],V);
/* Seek to the requested sector */
D->Ptr=SeekFDI(
D->Disk[D->Drive],D->Side,D->Track[D->Drive],
V&C_SIDECOMP? !!(V&C_SIDE)
->Side,D->R[1],D->R[2]
);
/* If seek successful, set up reading operation */
if(!D->Ptr)
{
if(D->Verbose) printf("WD1793: READ ERROR\n");
D->R[0] = (D->R[0]&~F_ERRCODE)|F_NOTFOUND;
D->IRQ = WD1793_IRQ;
}
else
{
D->RDLength = D->Disk[D->Drive]->SecSize
* (V&0x10? (D->Disk[D->Drive]->Sectors-D->R[2]+1):1);
D->R[0] |= F_BUSY|F_DRQ;
D->IRQ = WD1793_DRQ;
D->Wait = 255;
}
break;