further development on the AFP

I’m about to bring a new member of my family into this world.  As a new proud parent, I’m completely unsure about what this means in terms of time, dedication, and so on.  I’m sure I’ll have less free time to spend on projects like this.   As a result, updates and improvements are unlikely to happen in the short term.

Something to remember is that I’ve already achieved my goal, which was loosely, “to create a device that sits in between a PC and a floppy drive that can read amiga floppies and create emulator .ADFs in a reasonable period of time.”  You know, crossing the finish line was rather anti-climactic, mainly because (as you’ve seen) there are so many smaller, but no less important, steps that all add up to a working product.

I’ve learned a fair bit on this project, and would like to go back and identify the specific problems I faced, how I eventually solved them, and why they presented such a challenge.  There were some really fundamental mistakes I made which frustrated things, and made this task harder than it should have been.  I think other beginners can learn from my mistakes, and I’d like to make a post/(maybe a paper?) on some basic do’s and dont’s.

In any event, there are a few things I want to touch up, but then I’ll be posting a copy of the java source, compiled java with instructions on how to execute, and the SX firmware.

Note that I’m not going incommunicado — I’ll be monitoring the blog and email as usual.

Last but not least, there are a number of things I really want to do with this thing, namely build a custom circuit board.  I’d like to add the writing capability, but that is a fairly large task.  There are other minor to-do’s that eventually need done.  So I’m not finished yet here.

You know, I could never have gotten as far as I have without the help of people here, especially Tim and David, and people over at the Parallax forums(Bean, pjv, Michael C, Guenther), who I’m pretty sure are tired of my posts and my frustration.


Amateur Electronics Design Engineer and Hacker


  • Congratulations on your new arrival. 🙂 I just discovered this blog/project while searching around for something that will read my old amiga game disks so I can put it on my PC. Mostly because scummvm just released a new version that will allow me to play Elvira: Jaws of Cerebus! I didn’t really want to fire up my Amiga to transfer things over, but something likethis would be really really useful!

    Do you plan on releasing the software as well? Seems like you’ll need a driver? Also do you support Linux?


  • HI Sri!!

    Nice to see a new face around here, and thanks for your comments.

    Yes, software/hardware, everything will be released. Open source.

    There are a couple different software requirements

    1> There’s the software itself. There’s a video of an earlier version here

    It’s written in Java and should execute fine in linux. I actually tested it briefly in Ubuntu 7.xx and it worked. (however, see #3)

    2> I use FTDI usb->serial chip, and it requires USB drivers. While the basic virtual com port drivers ARE included in the standard Ubuntu distro, the D2XX drivers(the ones I use) are not. These are “direct drivers” and provide a library like interface. Linux support is included. I haven’t tried these yet. Check here

    3> I use some glue logic to allow Java native access to this D2XX library drivers. My understanding is that linux is not directly supported yet. While I haven’t dug in yet, the author seems to think minor changes would enable linux support. I have to check this out. But see for more information.

    With all this being said, you really need to read

    (see maybe 2nd and 3rd comments)

    which explains that the (lack of?) practicality of building this. It’s expensive(although there are ways around buying the programmer, the most expensive part) and still very much a prototype.


  • Congratulations! Best wishes to your family. Kids are fun and probably the best experience in this world, so take your time with this new exciting project 🙂
    Thanks for your Amiga Floppy Project blog, it is a great playground to share ideas, and – for me – to teach myself to analysis and step by step strategies which I am not best at.
    I will still be keeping my eye on your blog 😉

  • Tim,

    Thanks! We’re excited. And it turns out that she is coming faster than expected. Coming this weekend, whether we like it or not! 🙂

    I’ve certainly enjoyed the time I’ve spent on it — at least the times I wasn’t banging my head off the wall. There were many nights that I went to bed at 2 or 3am (with work around 8am) so unbelievable mad that I couldn’t solve the latest issue. It’s been a real challenge for me, but with everyone’s help (not least of which, yours) I’ve been able to overcome it.

    I’ve been playing with Cadsoft’s Eagle for PCB schematic/layout, and there are a couple decent tutorials on using it. It definitely has a learning curve, but I’m coming along. I eventually want to use Batch PCB to create the board……

    You know, it’s funny because the more busy I am, the more things I tend to accomplish. Who knows, maybe activity here will go up? 🙂

    Thanks for all your help.

    Cadsoft’s webpage

  • Hey there,

    Thank you for working on the pc floppy controller. Congratuations on the new addition to your family.

    I have a stick of sx28s and a serial pic based programmer I had a pcb made I forget what the design is called but it uses icprog software to read / write to the chip.

    I was wondering if I could use the software without the usb to serial chip as I still have a few old pc clunkers with serial ports

    Best regards


  • HI John,

    Thank you for the kind comments. I’ve really enjoyed this project, and have been putting some “thought-time” into it lately. Mainly thinking about minor bug fixes and making it a little more robust, especially with regards to error handling. It can not so graciously lock-up if fed a non-amiga disk, or a completely junk track. I know why exactly it happens, and the fix might be something like a watch-dog timer.

    The short answer: No you can’t.

    The long answer:

    I run the USB connection at 2mbps. Your UART’s in your PC probably max out around 115.2K. You can’t simply run the serial connection slower because it greatly impacts the speed of everything. Remember the data is coming off the drive at 500kbps, so even running it at 115 is almost 5 times slower, add overhead, etc, and you’d be looking at really long read times.

    Also, I communicate TTL-level voltages to the USB-serial adapter. These aren’t rs-232 level voltages(minor problem), but they are inverted(semi-major problem). There are adapters for this type of thing (see MAX232 or MAX233 chips from Maxim) but by that point, you may as well just get the USB-serial converter.

    Last, but certainly not least, I communicate to the USB adapter from the Java application with proprietary FTDI function calls — which are completely different from regular serial function calls. Because Java does not natively support serial in Windows, add-ons like RXTX are required. RXTX does not support DTR based flow control which my USB-serial device requires. This means effectively that my Java app does not know how to communicate with a standard serial port.

    Hope this helps


  • Thank you very much for your thorough explaination sir. I didn’t think of the speed problem for a start 😛

    I look forward to downloading your program one day.

    To go off on another tangent I have been trying from time to time to work out a way to make a remote control for my old cannon ixus / elph but it only has a usb port. I think I need a way to make a usb ‘master’ for a microcontroller? To talk to a usb ‘slave’ the camera. Have you seen anything like this in your travels? The cheapest thing I can seem to find is a Arm based micro computer board which seems a bit of an overkill or is this the only way to ‘talk’ as a usb master so far. Is the usb protocol / usb stack too complex to be done from say the ubicom / scenix sx family by itself I just want to take pictures with the camera without touching it, using the 10 sec timer or lugging a laptop around cause the cameras ccd is not very sensitive.

    Please help me Obi Wan Kenobi



  • John,

    Take a look at AT90USBKEY board from Atmel. It is built around AT90USB micro. I used this nice baby to quickly prototype an USB Host solution for one of my customers. The board is available for $40 or so, and comes with pretty good support from Atmel, including docs and sample code.


  • Johnialson,

    I have limited knowledge about the inner-workings of USB. I have sniffed it before in reverse engineering applications, and there is alot of stuff happening at the lower layers.

    From what I’ve heard, usb slave is pretty straight-forward, but usb host is much more difficult. As it requires a decent-sized stack, I don’t think a standard SX could support this easily. Maybe I’m wrong here.

    I’m glad Tim jumped in.

    I swear I’ve seen similar boards as well, that are designed to basically be embedded USB-host development boards, but heck if I can find them.


  • Hey thanks guys!

    I’ll try looking up that AT90USBKEY Tim sounds promising

    Johnialson lol sorry for that Jedi pun man Blue Harvest has just come out here I just meant good by it, like you are the Amiga Master. Maybe I should say you are The Guru Meditator ! 😀 anyway I appreciate your project I want to try making it but I don’t know how to code.

    Have you heard of the pc floppy program the using 2 floppy drives to force the standard pc floppy controllers to read amiga discs? They even have a ‘propriety’ disc image file format. I don’t know them or trying to get them a plug but I think they also make a amiga floppy adapter device as well (they say it can read difficult discs) so it may be a cheaper option that the catwesel for some people who’d like to buy something.
    Sorry I can’t can’t recall what the free version of the program’s called but I can did it out if anyone’s interested


  • Yes, I have heard of that project. I think you’re talking about disk2adf or something like that. It used to only support dos/95/98, but they recently (within a year) added 2000/xp(maybe vista dunno) support.

    They do something goofy where you hack a cable and run the read-data pin into the parallel port, and then the parallel port samples it.

    There are pros and cons to a number of different approaches.

    I have honestly operated in somewhat of a vacuum relative to the rest of the products/solutions out there. While other projects interest me, this project is a learning experience for me. It’s fun solving problems and the fact that my project does something useful(for me) is but a by-product of my work.

    A super available $10 adapter would not make me change directions or interest in this project. It’s all about the journey.

    Down the road, I plan on doing things that might make it a more attractive build choice for more people, but I’m not marketing a product or competing with anybody.

    I will say that I have some fairly unique ideas that other people have NOT implemented yet. They are original concepts which I feel can really improve data recovery from MFM encoded disks. I’ve blathered about them here and there, but I’ll be interested in the results once I put them in motion.


  • Your memory serves you well my friend! 😀 I just re-found the disk2fdi page and they want like 40 euro for the parallel port version that can save in the fdi format yuk

    maybe an alternative to the Catwesel though.


  • Congratulations!

    And good job realizing that you have accomplished your original goals.
    Too often people “keep moving the goalposts”, deluded into thinking nothing has been “accomplished” because new ideas for improvements, even though each one would “only” take a couple of hours to implement, keep streaming in much faster than one per hour.