* Copyright (c) 1989 The Regents of the University of California.
* %sccs.include.redist.c%
"@(#) Copyright (c) 1989 The Regents of the University of California.\n\
static char sccsid
[] = "@(#)flcopy.c 5.4 (Berkeley) %G%";
char *flopname
= _PATH_FLOPPY
;
long dsize
= 77 * 26 * 128;
register startad
= -26 * 128;
while ((ch
= getopt(argc
, argv
, "f:hrt:")) != EOF
)
if ((file
= open("floppy", 0)) < 0) {
printf("can't open \"floppy\"\n");
if (dsize
<= 0 || dsize
> 77) {
"flcopy: bad number of tracks (0 - 77).\n");
file
= open("floppy", O_RDWR
|O_CREAT
|O_TRUNC
, 0666);
printf("can't open \"floppy\"\n");
for (count
= dsize
; count
> 0 ; count
-= 512) {
n
= count
> 512 ? 512 : count
;
printf("Change Floppy, Hit return when done.\n");
for ( ; count
> 0 ; count
-= 512) {
n
= count
> 512 ? 512 : count
;
lwrite(startad
, n
, buff
);
if ((floppydes
= open(flopname
, mode
)) < 0) {
printf("Floppy open failed\n");
* Logical to physical adress translation
register int sector
, bytes
, track
;
sector
+= 26 + ((track
= (logical
/ 26)) - 1) * 6;
return ((((track
*26) + sector
) << 7) + bytes
);
lread(startad
, count
, obuff
)
while ((count
-= 128) >= 0) {
lseek(floppydes
, trans(startad
), 0);
read(floppydes
, obuff
, 128);
lwrite(startad
, count
, obuff
)
while ((count
-= 128) >= 0) {
lseek(floppydes
, trans(startad
), 0);
write(floppydes
, obuff
, 128);
(void)fprintf(stderr
, "usage: flcopy [-hr] [-f file] [-t ntracks]\n");