Coder Social home page Coder Social logo

micropoliscorp / fluxengine Goto Github PK

View Code? Open in Web Editor NEW

This project forked from davidgiven/fluxengine

0.0 0.0 0.0 10.58 MB

PSOC5 floppy disk imaging interface

License: MIT License

Shell 0.49% C++ 88.26% Python 0.02% C 10.13% Emacs Lisp 0.01% Verilog 0.61% Makefile 0.20% CMake 0.28%

fluxengine's Introduction

FluxEngine

(If you're reading this on GitHub, the formatting's a bit messed up. Try the version on cowlark.com instead.)

Breaking news! As of 2021-05-21, the command line environment has changed substantially (to make it more consistent and flexible, and allow some new backend features like multi-format IBM scheme disks, which are popular with CP/M). If things don't work the way you expect, please check the documentation.

What?

The FluxEngine is a very cheap USB floppy disk interface capable of reading and writing exotic non-PC floppy disk formats. It allows you to use a conventional PC drive to accept Amiga disks, CLV Macintosh disks, bizarre 128-sector CP/M disks, and other weird and bizarre formats. (Although not all of these are supported yet. I could really use samples.)

The hardware consists of a single, commodity part with a floppy drive connector soldered onto it. No ordering custom boards, no fiddly surface mount assembly, and no fuss: nineteen simpler solder joints and you're done. You can make one for $15 (plus shipping).

Don't believe me? Watch the demo reel!

<iframe width="373" height="210" src="https://www.youtube.com/embed/m_s1iw8eW7o" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

New! The FluxEngine client software now works with GreaseWeazle hardware. So, if you can't find a PSoC5 development kit, or don't want to use the Cypress Windows tools for programming it, you can use one of these instead. Very nearly all FluxEngine features are available with the GreaseWeazle and it works out-of-the box. See the dedicated GreaseWeazle documentation page for more information.

Where?

It's open source on GitHub!

How?

This page was getting kinda unwieldy so I've broken it up. Please consult the following friendly articles:

Which?

The current support state is as follows.

Dinosaurs (🦖) have yet to be observed in real life --- I've written the decoder based on Kryoflux (or other) dumps I've found. I don't (yet) have real, physical disks in my hand to test the capture process.

Unicorns (🦄) are completely real --- this means that I've read actual, physical disks with these formats and so know they work (or had reports from people who've had it work).

Old disk formats

Format Read? Write? Notes
IBM PC compatible 🦄 🦄 and compatibles (like the Atari ST)
Atari ST 🦄 🦄 technically the same as IBM, almost
Acorn ADFS 🦄 🦖* single- and double- sided
Acorn DFS 🦄 🦖*
Ampro Little Board 🦖 🦖*
Agat 🦖 Soviet Union Apple-II-like computer
Apple II 🦄 🦄
Amiga 🦄 🦄
Commodore 64 1541/1581 🦄 🦄 and probably the other formats
Brother 120kB 🦄 🦄
Brother 240kB 🦄 🦄
Brother FB-100 🦖 Tandy Model 100, Husky Hunter, knitting machines
Elektronika BK 🦄 🦄 Soviet Union PDP-11 clone
Macintosh 400kB/800kB 🦄 🦄
NEC PC-98 🦄 🦄 trimode drive not required
Sharp X68000 🦄 🦄
TRS-80 🦖 🦖* a minor variation of the IBM scheme
{: .datatable }

*: these formats are variations of the generic IBM format, and since the IBM writer is completely generic, it should be configurable for these formats... theoretically. I don't have the hardware to try it.

Even older disk formats

These formats are for particularly old, weird architectures, even by the standards of floppy disks. They've largely been implemented from single flux files with no access to physical hardware. Typically the reads were pretty bad and I've had to make a number of guesses as to how things work. They do, at least, check the CRC so what data's there is probably good.

Format Read? Write? Notes
AES Superplus / No Problem 🦖 hard sectors!
Durango F85 🦖 5.25"
DVK MX 🦖 Soviet PDP-11 clone
VDS Eco1 🦖 8" mixed format
Micropolis 🦄 Micropolis 100tpi drives
Northstar 🦖 🦖 5.25" hard sectors
TI DS990 FD1000 🦄 🦄 8"
Victor 9000 🦖 5.25" GCR encoded
Zilog MCZ 🦖 8" and hard sectors
{: .datatable }

Notes

  • IBM PC disks are the lowest-common-denominator standard. A number of other systems use this format in disguise (the Atari ST, late-era Apple machines, Acorn). FluxEngine supports both FM and MFM disks, although you have to tell it which one. If you have an unknown disk, try this; you may get something. Then tell me about it.

  • Not many formats support writing yet. That's because I need actual, physical hardware to test with in order to verify it works, and I only have a limited selection. (Plus a lot of the write code needs work.) There hasn't been a lot of demand for this yet; if you have a pressing need to write weird disks, please ask. I haven't implemented write support for PC disks because they're boring and I'm lazy, and also because they vary so much that figuring out how to specify them is hard.

If you have samples of weird disks, and want to send them to me --- either FluxEngine, Kryoflux or Catweasel dumps, or (even better) actually physically --- I can identify them and add support.

Please note that at this point I am not interested in copy protected disks. It's not out of principle. It's just they'll drive me insane. FluxEngine will most likely be able to read the data fine, unless they're doing bizarre things like spiral tracks or partially encoded data, but let's stick with normal conventionally formatted disks for the time being!

But!

That said, I need to post a warning.

********** BIG DISCLAIMERY WARNING WITH ASTERISKS **********

Floppy disks are old, unreliable, and frequently damaged and/or filthy. I expect you to know what you're doing and be responsible for your own actions. It's entirely possible for a damaged disk, when read, to scrape the magnetic coating off the disk and pack it into the drive's disk head, not only permanently damaging the drive, but also irrecoverably destroying any data on the disk.

If this happens and you complain to me, I will be sympathetic but fundamentally unhelpful. Proceed at your own risk.

Remember: FluxEngine is not a substitute for a real data recovery service. Is your data worth money to you? If so, don't try to read it using an open source project hacked together by some person you've never met on the internet.

Also, remember to clean your disk heads.

********** END OF WARNING **********

Who?

The FluxEngine was designed, built and written by me, David Given. You may contact me at [email protected], or visit my website at http://www.cowlark.com. There may or may not be anything interesting there.

License

Everything here except the contents of the dep directory is © 2019 David Given and is licensed under the MIT open source license. Please see COPYING for the full text. The tl;dr is: you can do what you like with it provided you don't claim you wrote it.

As an exception, dep/fmt contains a copy of fmt, maintained by Victor Zverovich (vitaut <https://github.com/vitaut>) and Jonathan Müller (foonathan <https://github.com/foonathan>) with contributions from many other people. It is licensed under the terms of the BSD license. Please see the contents of the directory for the full text.

As an exception, dep/emu contains parts of the OpenBSD C library code, maintained by Todd Miller and William A. Rowe (and probably others). It is licensed under the terms of the 3-clause BSD license. Please see the contents of the directory for the full text. It's been lightly modified by me.

As an exception, dep/agg contains parts of the Anti-Grain Antialiasing library, written by Maxim Semanarev (and others). It is licensed under the terms of the 3-clause BSD license. Please see the contents of the directory for the full text. It's been lightly modified by me.

As an exception, dep/stb contains parts of the libstb utility library, written by Sean T Barett (and others). It is public domain/Unlicense/MIT licensed, at your choice. Please see the contents of the directory for the full text.

As an exception, dep/snowhouse contains the snowhouse assertion library, taken from https://github.com/banditcpp/snowhouse. It is Boost Standard License 1.0 licensed. Please see the contents of the directory for the full text.

As an exception, dep/libusbp contains the libusbp library, taken from https://github.com/pololu/libusbp. It is MIT licensed. Please see the contents of the directory for the full text.

fluxengine's People

Contributors

darkstar avatar david-schmidt avatar davidgiven avatar dtrg avatar ejona86 avatar erichelgeson avatar hharte avatar jboone avatar jepler avatar johnveness avatar keithclark avatar ladyada avatar salfter avatar tdaede avatar tingox avatar wybren1971 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.