int infile; long track[36]; long lseek(); char dir[16384]; long fileread(tr,se,where) int tr,se; char *where; { long offset; char buffer[256]; char *p; long len=0; int i; while() { offset=track[tr]+se*0x100L; lseek(infile,offset,0); read(infile,buffer,256); p=buffer; tr=*p++; se=*p++; if(tr) { for(i=0;i<254;i++) *where++=*p++; len+=254; } else { se--; for(i=0;i\n"); return; } strcpy(fname,argv[1]); infile=fopen(fname,"r"); if(!infile) { strcat(fname,".d64"); infile=fopen(fname,"r"); if(!infile) { printf("Cannot open \"%s\"\n",argv[1]); return; } } len=fileread(18,0,dir); fclose(infile); /* printf("length=%lx\n",len); i=fopen("e:\\out","w"); if(!i) return; write(i,dir,(int)len); fclose(i); */ i=0; p=dir+0xfe; while() { for(j=0;j<16;j++) name[j]=p[j+3]&0x7f; name[j]=0; if(p[0]) printf("%2d:%3d %s %2x\n",i,p[28]+p[29]*256,name,p[0]); i++; p+=32; if((i&7)==0) p-=2; if(p-dir>=len) break; } }