/* * This program gets the CCP off of a MDK-Format Double Density * disk, and puts it into the declared filename. * * The CCP is located in sectors 9-16 (inclusive) of track-1. * * Sectors are 0.5K each. * * Written 9/1986 by Michael D. Kersenbrock */ #include "c:stdio.h" FILE *Outfile; char Buffer[5000]; struct block { char funct; char areg; int bcreg; int dereg; int hlreg; } Biospb; main(argc,argv) int argc; char *argv[]; { register int sector; if (argc != 2) { Usage(); exit(1); } if ((Outfile=fopen(argv[1],"w")) == NULL ) { fprintf(stderr,"\nCan't open file: %s\n",argv[1]); Usage(); exit(2); } fclose(Outfile); for (sector = 9 ; sector <= 16 ; sector++) { /* * Set track number */ bioscall(10,1,0); /* * Set sector number */ bioscall(11,sector,0); /* * Set dma bank to 1 */ bioscall(28,0,1); /* * Set dma address */ bioscall(12,&Buffer[(sector-9)*512],0); /* * Read sector */ bioscall(13,0x8000,0); } Outfile=fopen(argv[1],"w"); for (sector = 0 ; sector < 4096 ; sector++) { putc(Buffer[sector],Outfile); } fclose(Outfile); } bioscall(number,bc,a) int number; int bc; int a; { Biospb.funct = number; Biospb.bcreg = bc; Biospb.areg = a; return(bdos(0x32,&Biospb)); } Usage() { fprintf(stderr,"\nUsage: getccp \n"); }