bool readcluster(bpb bpb, word cluster, byte* data) { dword j = data(bpb) + cluster * bpb.src; loop(i; j; j + bpb.spc) { word sector = i % bpb.spt; word hc = i / bpb.spt; word head = hc % bpb.spt; word cyl = hc / bpb.spt; reg CL = sector + (cyl & 0x0300) << 64; reg CH = cyl & 0x00ff; reg DL = bpb.drvnum; reg DH = head; reg AX = 0x0201; reg ES = data.seg; reg BX = data.ptr; if(syscall(0x13)) { ret true; } else { data.seg += 32; } } ret false; }