/************************************************************ * Dump a group of ADAM blocks to a PC file ************************************************************* * 1.00 12/1/94 Chris Braymen Creation under Borland C 3.1 *************************************************************/ #define TRUE 1 #define FALSE 0 #define BUFSIZE 1024 #define BDRESET 0x00 #define BDSTATUS 0x01 #define BDREAD 0x02 #define BDWRITE 0x03 #define BDVERIFY 0x04 #define BDFORMAT 0x05 #define FLOPPY1 0x00 #define HEAD0 0x00 #define HEAD1 0x01 #define ONESECTOR 0x01 #include #include #include #include #include #include "adamfcb.h" unsigned char buffer[BUFSIZE]; int startBlock; int numberBlocks; char outFileName[255]; char version[] = "v1.00"; /******************* * Prototypes *******************/ int processArgs(int,char**); int copyBlocks(int,int,FILE*); #include "readblk.c" int main(argc,argv) int argc; char *argv[]; { int block; int result; FILE *outFileP; if(!processArgs(argc,argv)) { exit(0); } if((outFileP=fopen(outFileName,"wb"))==NULL) { fprintf(stderr,"Error opening output file: %s\n",outFileName); exit(0); } result=copyBlocks(startBlock,numberBlocks,outFileP); fclose(outFileP); if(!result) { unlink(outFileName); fprintf(stderr,"Output file deleted.\n"); } return 0; } /******************************************************* * processArgs - process the command line args * sets global blockNumber ********************************************************/ int processArgs(argc,argv) int argc; char *argv[]; { if(argc != 4) { printf("BLK2FILE %s - Public Domain from Bonafide Systems\n\n",version); printf("\nUsage: BLK2FILE \n\n"); return(FALSE); } startBlock=atoi(argv[1]); if(startBlock<0 || startBlock > 319) { fprintf(stderr,"Bad starting block: %d\n",startBlock); return(FALSE); } numberBlocks=atoi(argv[2]); if(numberBlocks<1 || numberBlocks > 320-startBlock) { fprintf(stderr,"Bad number of blocks: %d\n",numberBlocks); return(FALSE); } strcpy(outFileName,argv[3]); return(TRUE); } /********************************************************* * copyBlocks *********************************************************/ int copyBlocks(start,number,fp) int start; int number; FILE *fp; { int i; printf("Processing...\n"); for(i=start;i