home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
SIMTEL
/
CPMUG
/
CPMUG050.ARK
/
CPMDIR.C
< prev
next >
Wrap
C/C++ Source or Header
|
1984-04-29
|
1KB
|
72 lines
#define OSTRKS 2
int fd; /* floppy disk file descriptor */
int stt[26] = {
1, 7, 13, 19,
25, 5, 11, 17,
23, 3, 9, 15,
21, 2, 8, 14,
20, 26, 6, 12,
18, 24, 4, 10,
16, 22
};
struct FCB {
char filetype;
char name[8];
char ext[3];
char reel;
char xx[2];
char rcnt;
char dm[16];
};
struct FCB dirbuf[4];
main()
{
fd=open("/dev/floppy",0);
cpmDir();
}
cpmDir()
{
int grp, rec;
for (grp=0 ; grp<2 ; grp++) {
for (rec=0 ; rec <8 ; rec++) {
rdsec(grp, rec, dirbuf);
printsec();
}
}
}
printsec()
{
int i;
for (i=0 ; i<=3 ; i++) {
printfn(dirbuf[i]);
}
}
printfn(fcb)
struct FCB fcb;
{
int i;
if (fcb.filetype==0) {
for (i=0 ; i<=10 ; i++)
printf("%c", fcb.name[i]);
printf("\n");
}
}
rdsec(group, rec, buf)
int group, rec;
char *buf;
{
int offset, voffset, sec, trk;
voffset = group*8+rec;
sec = stt[voffset % 26];
trk = voffset / 26 + OSTRKS;
offset = (trk*26+sec-1)*128;
lseek(fd, offset, 0);
read(fd, buf, 128);
}