/* cpm.c 1.17 85/01/10 */
Copyright (c) 1982, 1983 by
Permission granted for use by UNIX* licencees.
UNIX is a trademark of Bell Labs.
int dflag
, cflag
, iflag
, tflag
;
int blksiz
= 1024; /* default block size */
int tracks
= 77; /* default number of tracks */
int maxdir
= 64; /* default number of directory slots per disk */
int seclth
= 128; /* default sector length [bytes] */
int sectrk
= 26; /* default number of sectors per track */
int skew
= 6; /* default sector skew factor */
struct directory
*dirbuf
;
char *cpmname
, *unixname
, *malloc();
int xflag
, stat
=0, Cflag
, Iflag
, Bflag
;
for (; argc
> 1 && argv
[1][0] == '-'; argc
--, argv
++) {
if (isatty(0) && isatty(1)) iflag
++;
if ((skew
< 1) || (skew
> 10)) {
fprintf(stderr
, "cpm: skew factor out of range\n");
fprintf(stderr
, "cpm: illegal block size: %d\n",blksiz
);
if ((maxdir
< 64) || (tracks
>1024 )) {
fprintf(stderr
, "cpm: illegal value of m-flag: %d\n",maxdir
);
if ((seclth
< 128) || (tracks
>1024 )) {
fprintf(stderr
, "cpm: illegal sector length: %d\n",seclth
);
fprintf(stderr
, "cpm: illegal r-flag: %d\n", sectrk
);
fprintf(stderr
, "cpm: unknown flag: -%c\n",argv
[1][1]);
if (argc
<= 1 && iflag
) {
fprintf(stderr
, "cpm: can't copy from stdin in iteractive mode\n");
if ((fid
= open(*++argv
,2)) == -1 ) {
* The specified input file does not exist,
* does the user want to initialize a new
printf("Input file does not exist.\n");
printf("Initialize new floppy file? (y/n)?");
if ((ic
= getchar()) != 'y' && ic
!= 'Y')
ic
= getchar(); /* get <eol> */
printf("Initialize floppy file? (y/n)?");
if ((ic
= getchar()) != 'y' && ic
!= 'Y')
ic
= getchar(); /* get <eol> */
/* allocate memory for the directory buffer */
if ((dirbuf
= (struct directory
*) malloc(maxdir
*32)) == NULL
) {
fprintf(stderr
, "cpm: can't allocate memory for directory buffer\n");
dbmap("current bitmap:\n");
for (i
= (int)dirbuf
; i
< (int)dirbuf
+maxdir
*32; i
++) {
copy(cpmname
, unixname
, Bflag
);
pipc(unixname
, cpmname
, Bflag
);
copy(cpmname
, stdout
, 0);
while(*cs
>= '0' && *cs
<= '9')
fprintf(stderr
,"cpm: number: argument %d out of range\n", n
);
printf("Usage: cpm [-i][-d][-p name][-c|C name1 name2] file-name\n");