static char *sccsid
="@(#)flcopy.c 4.3 (Berkeley) 10/20/80";
char *flopname
= "/dev/floppy";
long dsize
= 77 * 26 * 128;
register startad
= -26 * 128;
register int n
, file
; register char *cp
;
while((cp
= *++argv
), --argc
> 0) {
while(*cp
) switch(*cp
++) {
if((file
= open("floppy",0))<0)
printf("failed to open floppy image, for reading\n"),
if(*cp
>= '0' && *cp
<= '9')
if (dsize
<= 0 || dsize
> 77)
printf("Bad number of tracks\n"), exit(2);
file
= creat("floppy",0666);
printf("failed to open floppy image"),
for(count
= dsize
; count
> 0 ; count
-= 512) {
n
= count
> 512 ? 512 : count
;
printf("Change Floppy, Hit return when done.\n");
count
= dsize
; startad
= -26 * 128;
for( ; count
> 0 ; count
-= 512) {
n
= count
> 512 ? 512 : count
;
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);