You only need one floppy drive. I just did this from scratch tonight (almost from scratch: I loaded the basic programs from a floppy instead of retyping them! I did retype the comm4 hex just to prove it still works)
I got a lot of information from Bill Yakowenko's site:
http://www.cs.unc.edu/~yakowenk/coco.html
Some of the stuff is hard to figure out at first, and a ran into a few problems. I'll fill in the pieces.
-Construct the BitBanger cable :
http://www.cs.unc.edu/~yakowenk/coco/text/downloading.html
http://www.cs.unc.edu/~yakowenk/coco/text/serial.html
-Format a floppy
DSKINI0
-Type in binentry.bas
http://www.cs.unc.edu/~yakowenk/coco/pgms/binentr3.bas
-Save it
SAVE "BINENTRY.BAS"
- Run it
For filename enter COMM4.BIN
enter in the data shown here:
http://www.cs.unc.edu/~yakowenk/coco/pgms/comm4.be2.html
When you are finished it will save it to disk.
Theoretically, now that you have comm4 you can run it, and whatever is saved to memory can be saved to disk. I had a lot of trouble downloading raw binary files (such as cckermit) because I seem to get a lot of noise on the bitbanger. Maybe my cable sucks. I only really had trouble with repeating patterns of bits, such as many zeros in a row. I remedied this problem by encoding .bin files.
Downloading cckermit to the coco:
Download this file: (It is just a text file)
ftp://kermit.columbia.edu/kermit/c/coco.jar
Inside this text file is an SREC listing of kermit. I wrote a program to convert srec to bin, and I tried to send that to the coco using comm4. As I mentioned above, I had a lot of problems with that, so instead I encoded it into an easier-to-parse hex format.
I have zip file here:
http://arctangent.8k.com/random/srec.zip that contains kermitcc.sre, as well as the app that creates the hex coded file. (The command line to generate is "srec kermitcc" This decodes kermitcc.sre into kermitcc.bin, and creates kermitcc.bin.hex.txt and kermitcc.info.txt. It also outputs the checksum in hex, (For kermitcc it is 5d08c)
-Reset the coco (Or 'NEW')
-Enter HEX2BIN.BAS
(listing in these images) (sorry, it is a TV capture)
http://arctangent.8k.com/random/hex2bin.jpg
http://arctangent.8k.com/random/hex2bin-pt2.jpg
-Save it as "HEX2BIN.BAS"
LOADM "COMM4.BAS"
Notice we have both a BASIC and a machine language program in memory at the same time!
Run the machine language program:
EXEC
After running EXEC, in Hyperterminal at 9600-8-N-1, download kermitcc.bin.hex.txt down into the coco.
This will download stuff to address $4000
The bottom right corner of the screen will change characters rapidly a things are downloading. It will change once per second when timing out. After the file is sent, and the comm times out for 10 seconds, you will return to BASIC.
Now we need to decode the hex text back into binary. Type RUN.
It will show progress as it decodes. It is very slow because it is written in basic. You could probably take off the print line but I was paranoid when I wrote it. When it is done decoding it will show the checksum in decimal (The correct value for CCKERMIT is 381068).
Now you must save CCKERMIT to disk:
SAVEM "CCKERMIT",&H2000,&H2FFF,&H2000
This saves the binary file.
Inside the above-linked CCKERMIT.JAR file is a short basic stub:
10 PCLEAR 1: CLEAR 200,&H1FFF
20 LOADM"CCKERMIT": EXEC
Type and SAVE "CCKERMIT.BAS"
If you reset your CoCo and type:
LOAD "CCKERMIT.BAS"
RUN
You should now have a working terminal emulator.
This emulator runs at 300 baud, not that fast, but the point is now the CoCo is bootstrapped, and you have successfully downloaded a program to it. You can download any other program in srec format to the coco as well using Bill's comm4 utility with my hex2bin program. It is a little rough, but here's some pointers:
In my program variable NA is the start address, and NS is the end address of where to write. If you are downloading a program with a different starting and ending adress to the coco, you need to make that edit to hex2bin. Also if the addres range you are decoding into overlaps with the download range, you will need to make the necessary modifications. (Probably the best bet is set na and ns to decode to a non-overlapping region, and then use a for loop to copy the bytes to the correct place. Also, since the output is smaller than the input, it can decode overlapping regions properly as long as the decode-to address lower than the decode-from address ($4000).
Good luck!
I would eventually like to create one short .bas file to type in that does all of this work at once, and then downloads a bunch of junk from the serial port on a PC. I need to get permission from Bill Y. to use his serial routines in my programs. (Or create my own).