92 lines
2.2 KiB
C
92 lines
2.2 KiB
C
/*
|
|
File to disk moving utility for the Atari ST
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
|
|
char buffer[4610];
|
|
main(argc,argv)
|
|
int argc;
|
|
char *argv[];
|
|
{
|
|
|
|
int i,handle,result=1,drive=0,sector=1,track=0,side=0,done,count=0;
|
|
char dummy[255];
|
|
long filler=0,buflen=4608;
|
|
FILE *infile;
|
|
|
|
printf("file2dsk.ttp -- (c)1991 Ken Corey (aka kenc@vaxb.acs.unt.edu)\n");
|
|
printf("Intended for use with the demonstration distribution of \n MINIX-ST (c)1990 Prentice Hall\n");
|
|
if(argc<2)
|
|
{
|
|
printf("\nThis program will transfer a file onto a disk bit for bit.\n");
|
|
printf("It's meant to be used with the Minix demo software, though it will\n");
|
|
printf("use any file. Use with other files will no doubt lead to\n");
|
|
printf("interesting deadly, and useless (8^)) results.\n");
|
|
printf("\nUsage: file2dsk demo_dsk.st [B:]\n");
|
|
printf("\nwill copy the file demo_dsk.st onto a floppy, bit for bit, sector for sector.\n");
|
|
printf("2 Caveats:\n\n");
|
|
printf(" 1)This software will completely erase any extant info on the floppy.\n");
|
|
printf("\n 2)The disk must previously be formatted out to single sided,\n");
|
|
printf(" using the standard st desktop. No other configuration has been tested!\n");
|
|
printf("\n\n BTW, have a great day!\n");
|
|
|
|
printf("Hint: hit a key to exit to desktop....");
|
|
gets(dummy);
|
|
exit(1);
|
|
}
|
|
|
|
if(argc==3)
|
|
drive=1;
|
|
printf("\nOkay, I'm gonna use '%s' as the filename.\n",argv[1]);
|
|
printf("Please insert a freshly formatted, SINGLE sided floppy in drive ");
|
|
if(drive==0)
|
|
printf("A:\n");
|
|
else
|
|
printf("B:\n");
|
|
printf("and hit return...\n\n");
|
|
printf("THIS FLOPPY WILL BE COMPLETELY ERASED!");
|
|
|
|
gets(dummy);
|
|
|
|
result=gemdos(0x3D,argv[1],0);
|
|
if (result<0)
|
|
{
|
|
printf("I couldn't open the file '%s'!\n",argv[1]);
|
|
exit(result);
|
|
}
|
|
|
|
handle=result;
|
|
|
|
while((track<=80)&&(count<0x2D0)&&(done!=1))
|
|
{
|
|
for(i=0;i<4610;buffer[i++]=0xE5) ;
|
|
|
|
result=gemdos(0x3F,handle,buflen,&buffer[0]);
|
|
if (result<0)
|
|
{
|
|
printf("Error in reading '%s'!\n",argv[1]);
|
|
exit(result);
|
|
}
|
|
|
|
if(result==0)
|
|
done=1;
|
|
|
|
printf("%d--%d t--s\n",track,sector);
|
|
|
|
result=xbios(0x9,&buffer[0],filler,drive,sector,track,side,9);
|
|
if(result<0)
|
|
{
|
|
printf("Error in writing to drive A:!\n");
|
|
exit(result);
|
|
}
|
|
|
|
track += 1;
|
|
count += 9;
|
|
}
|
|
|
|
printf("All done!\n");
|
|
|
|
}
|
|
|