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 / CPM / CPM3 / CCP105P.ARK / GETCCP.C < prev    next >
Text File  |  1986-10-17  |  2KB  |  104 lines

  1. /*
  2.  * This program gets the CCP off of a MDK-Format Double Density
  3.  * disk, and puts it into the declared filename.
  4.  *
  5.  * The CCP is located in sectors 9-16 (inclusive) of track-1.
  6.  *
  7.  * Sectors are 0.5K each.
  8.  *
  9.  * Written 9/1986 by Michael D. Kersenbrock
  10.  
  11.  */
  12.  
  13. #include "c:stdio.h"
  14.  
  15. FILE *Outfile;
  16. char Buffer[5000];
  17.  
  18. struct block {
  19.     char funct;
  20.     char areg;
  21.     int  bcreg;
  22.     int  dereg;
  23.     int  hlreg;
  24. } Biospb;
  25.  
  26. main(argc,argv)
  27. int argc;
  28. char *argv[];
  29. {
  30.     register int sector;
  31.  
  32.     if (argc != 2) {
  33.         Usage();
  34.         exit(1);
  35.     }
  36.  
  37.     if ((Outfile=fopen(argv[1],"w")) == NULL ) {
  38.         fprintf(stderr,"\nCan't open file: %s\n",argv[1]);
  39.         Usage();
  40.         exit(2);
  41.     }
  42.     fclose(Outfile);
  43.  
  44.     for (sector = 9 ; sector <= 16 ; sector++) {
  45.         /*
  46.          *  Set track number
  47.          */
  48.         bioscall(10,1,0);
  49.  
  50.         /*
  51.          * Set sector number
  52.          */
  53.         bioscall(11,sector,0);
  54.  
  55.         /*
  56.          * Set dma bank to 1
  57.          */
  58.         bioscall(28,0,1);
  59.  
  60.         /*
  61.          * Set dma address
  62.          */
  63.         bioscall(12,&Buffer[(sector-9)*512],0);
  64.  
  65.         /*
  66.          * Read sector
  67.          */
  68.         bioscall(13,0x8000,0);
  69.     }
  70.  
  71.     Outfile=fopen(argv[1],"w");
  72.  
  73.     for (sector = 0 ; sector < 4096 ; sector++) {
  74.         putc(Buffer[sector],Outfile); 
  75.     }
  76.     fclose(Outfile);
  77. }
  78.  
  79.  
  80.  
  81. bioscall(number,bc,a)
  82. int number;
  83. int bc;
  84. int a;
  85. {
  86.     Biospb.funct = number;
  87.     Biospb.bcreg = bc;
  88.     Biospb.areg = a;
  89.     return(bdos(0x32,&Biospb));
  90. }
  91.  
  92.  
  93.  
  94. Usage()
  95. {
  96.     fprintf(stderr,"\nUsage: getccp <filename-where-to-put-it>\n");
  97. }
  98. ,argv)
  99. int argc;
  100. char *argv[];
  101. {
  102.     register int sector;
  103.  
  104.     if (a