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 >
Wrap
Text File
|
1986-10-17
|
2KB
|
104 lines
/*
* 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 <filename-where-to-put-it>\n");
}
,argv)
int argc;
char *argv[];
{
register int sector;
if (a