Contents of the QCOPY.DOC file
Quick-Copy Version 1.0(C) Copyright 1988 Duane Ellis.
You have to make 10 to 20 copies of a disk, the DOS command
DISKCOPY would work fine, but... It has limitations:
1) It must RE-READ the source disk every time. DISKCOPY should instead
read the source disk ONCE and keep the disk in memory. It should never
have to read it again! QCOPY keeps a copy of the master disk in RAM.
2) DISKCOPY does not work optimumly with TWO floppy drives. (let alone the
idea of working with one disk...) Concidering the fact that DISKCOPY must
read the source disk every time, it can only create one disk at a time. In
a two drive system, QCOPY will automaticly write to DRIVE A, then when
it has finished, it will continue on to DRIVE B.
3) DISKCOPY does not tell you when it has finished and is waiting for another
disk. I always walk away from the computer, I want the computer to
beep once in a while reminding the operator to "FEED ME!" QCOPY does this.
DISKCOPY only asks "Copy another? Y/N", it does not BEEP!
This program is based upon the Turbo Pascal programs FFMTX.PAS and FCOPY.PAS
Complete ARC files are availbe in that area. I used these programs as a
basis for this program.
I only use this program on a PC with NO hard disk. Why? I have this
great fear of FORMATING a hard disk. The only sure way around this is to
COMPLETELY disconnect the hard disk. ie REMOVE IT and UNPLUG THE CABLES!
Or, you can use a PC with TWO floppies.
I have not used this program on an AT. Why, there is something in
the two pascal programs that refer to the DSAD on an AT. I have no docs on
this, all I have is a hardware manual for PCs. Thus I don't know enough
about the IBM AT's Also, I only have a 1.2meg drive in my AT. And you can't
reliably format a 360K floppy in a 1.2meg drive. So I did not bother to
try it on an AT. I did not test it on an AT. Nor even include IBM AT
compatibility in the program.
The PASCAL programs (FFMTX.PAS and FCOPY.PAS) do include the IBM AT
but only for the 360K drives. You may want to add this.
When the PASCAL programs format the drives, they always support
BAD SECTORS, and they mark them accordingly. I write programs and distribute
them, if a disk has a bad spot I throw it away. I feel that you are taking
a chance with a non-100% A-OK floppy.
How I tested this:
I tested this on an IBM PC-II with 2 floppies, the NEW-BIOS
(earlier versions of the PC bios will not boot from a hard disk, the
newer versions know how, I used a newer version BIOS). And I was using
MS-DOS Version 3.21. I tested it this way:
I grabed three disks. I bulk erased one (used a magnet to do it)
Formated the other two with DOS'es FORMAT command. Then I put a few files
on one of the formated disks, this one became the MASTER.
I ran the program using ONE, and also TWO drives. It made perfect
copies of the original disk. I verified it with DISKCOMP. It was able to
recognize the formated disk and the BULK ERASED disk.
Just to make sure I wasn't missing anything, I screwed up the two
disks again. One with NORTON UITLITES, I changed some bytes on the disk. And
I used a magnet on the other. Again, DISKCOMP found problems with the disks.
When I RE-COPIED the disks, everything was fine.
How to use QCOPY:
QCOPY must be told what it can use. If you just type QCOPY,
you will get a HELP screen. It looks like this:
Usage: QCopy [-options]
Where options are:
-V Turns On Verify (re-reads disk..)
-A Ok to use Drive A.
-B Ok to use Drive B.
-H Give help (this message...)
-? Give help (this message...)
-I Ignore Formated disks..(use them anyway..)
To automaticly swap between drives, use -A and -B
By Default: the program will automaticly RE-READ every disk it makes.
the -V option turns this off.
By Default: the program will automaticly REJECT (ie refuse to use)
pre-formated disks. -I, will tell it to IGNORE the format.
It will instead re-format the disk.
By Default: It will not work unless you tell it what drives it can use.
-A means it can use DRIVE A, -B means it can use DRIVE B.
Example: I have two computers, One with DUAL floppies I use:
QCOPY -A -B -I
This tells QCOPY that it can use DRIVES A and B, and to ignore
disks that are already formated.
Example: I only have one disk drive. Drive A.
The -I (ignore) option is handy when you have Version 1.0 of a program
and you have to update that program to Version 1.1.
The program will always RE-FORMAT a disk. Tough. It would be nice if it
would automaticly skip the formating step but... it will always 100% re-format
Changing the program: (ie customizing it to your likings...)
QCOPY was written using the AZTEC C86 Compiler Version 3.40b,
I used as few function calls as I could that where NON-UNIX calls. Infact
the only ones that are NON UNIX are contained in INTRFACE.C You will have
to add or change the following functions:
THE EASY ONES:
poll() polls the keyboard, Returns 0 if no keys where hit
NON-ZERO if a key has been hit:
if( poll() )
printf("you hit a key");
printf("you did not hit a key");
getchr() Gets a char from the keyboard. Called by getachr().
ch = getchr();
printf("You pressed %c", ch );
go( row, col ) - puts the cursor at this row and column.
Source is included for the function. (0,0) is the
top left hand corner.
Put the cursor at Row 4, Column 10.
go( 4, 10 );
THE HARDER ONE:
Get the CURRENT SECONDS. See TIMER.C for details.
THE HARDEST ONE:
_seg_part(), _off_part(), You pass a LARGE DATA POINTER
both SEGMENT and OFFSET to these two functions. They return
the SEGMENT portion, or the OFFSET portion. If you have
AZTEC, take a look at the file SEGS.ASM, it is the source
code for these functions, If not.. well
Some compilers have a way of getting the SEGMENT and
OFFSET. If I remember correctly, MicroS**t C, uses
FP_SEG() and FP_OFF()... I don't use MSC, so I'm
An Implimentation note:
In many places you will see a printf(" ...bunch of spaces... ");
Why? Well, I did not have GENERIC erase to end of line function, so
I print spaces over the top.
Lastly, the program could sure use a much cleaner user interface
(you know, draw pictures and be alittle more discriptive..) but.. what the
hell it works.
-- Duane Ellis Jan-14-1988