* Copyright (c) 1989 The Regents of the University of California.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
"@(#) Copyright (c) 1989 The Regents of the University of California.\n\
static char sccsid
[] = "@(#)flcopy.c 5.4 (Berkeley) 1/20/91";
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");