 to what's this? Okay those are index pulses coming from this floppy drive that I am interfacing with. I just got you know the first kind of parts going where I enable the motor and I'm setting the direction. I'm gonna you know get the index pulses and then I'm going to find out when it's at track zero. So basically kind of trying to read data off of this floppy drive so I can add native floppy disk support to CircuitPython. Soon I'll update this to maybe use the RP2040 as well. Right now I'm just writing the code in our Dwayne Oaks is what I'm familiar with so I finally get all the IDC pins set up the way I needed to. What was really helpful was this really really nice modern datasheet from Samsung for the SFD32-1B. So it actually goes through everything you need and so far so good. So I've just started basically getting the motor running. The floppy disk is responding so far so good. Hi! I want to copy that floppy. That's right. Here I've got some more stuff going on with my floppy disk controller that we're gonna add to CircuitPython. So yellow traces you can see is the index pulse that goes low and then you see this like moving blue line. That's actually data coming out of the floppy drive. If I click the single button you can see the data comes out and it comes out as these pulses that are like you know they're supposed to kind of be like a PWM but they're actually very low pulses and then there's a pull up to pull it up high and you can see that the data comes in you know in in various widths and so that's actually the tough part of reading a floppy is this is about 500 kilohertz and the pulse width varies including the data. So over here I'm actually doing something a little naughty. I'm not using a PLL. I'm actually just very very quickly in a no interrupt loop reading those pulses and printing out the pulse widths and I'm going to see if that's good enough to read data from a floppy drive. Okay. Nice Nordic shirt. Lady, what are we doing? Okay so part three of my floppy project is I've got the data coming out of the read pen and this is a GPIO pen I'm toggling up and down to show that I'm properly reading the pulse widths for the data that's coming out MFM format and then what I've done over here is you can see I'm capturing flux transition and I've got a Cortex M4 here with like 256k of ram and it's actually totally fine for me just buffer the entire track of flux transitions because there's only a hundred thousand transitions maximum per track and you can see that there's a little bit of bending here so there's a couple pulses you know a lot of pulses around 40 and then down here we've got pulses around 60 and then finally we've got pulses around 80 you got a couple extra long ones which is a little bit weird like why is it 228 so a little more to analyze here but I'm starting to get data coming in and data looks right. Lady, what is this? Okay so we're doing some floppy drive hacking and I've got this like a regional three and a half inch floppy drive but these actually hard to get because they're not made anymore so I was wondering you know there's these off-the-shelf USB floppy disks and you know can I somehow use those so I opened one up I cracked it open and actually has a SFD 321S Samsung three and a half inch floppy drive with a little adapter here and adapters got a little cheap chip on the back and that's all these points here and I'm hoping can I get flux transitions out of here because I don't want it to do the translation for me I want to get that raw data well good news I found a really nice person line actually did the pinouts and then when I access the disk you can see on the scope I get my index and flux transitions so you know normally if you use these USB floppy drive converters you don't you know they give you like a USB mass storage but this way I can get that archival quality flux transition data out. Lady what is this? Okay I still got my Panasonic floppy disk drive and my feather that I'm interfacing with and I've gotten flux data out and now I want to get that flux data from the disk drive and the feather into the computer so I'm using this open source tool called grease weasel and I'm updating it to support this setup that I've got here so basically I'm reporting the grease weasel firmware into Arduino so far so good there's some like flux opcode thing that I got to figure out like I've got the flux data leaving here you can see it's got the flux data sent and then over here it says okay got the flux data but then they're after like somehow encode the index so I'm getting there I'm close to getting raw data dumps onto my computer using totally open source hardware and software. Okay, happy new year. Happy new year. What is this? This is the first floppy disk I'm going to try reading with my grease weasel compatible firmware on this feather M4 hooked up to this floppy disk so I've got flux data and track seeking working and I'm able to get some tracks working like some tracks are reading just fine I'm also getting some tracks where it's like it doesn't see any sector data and I think that's probably because like the flux data format I'm sending or the index whatever opcode I'm sending isn't quite right but for those first few sectors that I do get working the data is good so I'm just gonna have to figure out what it is and I'm doing that slightly wrong but I feel like I'm getting closer at least I'm seeking and I'm getting some data working from the beginning of the disk track. What is this? Okay I think I figured out all my power supply issues and my flux timing issues and I'm really ready to read the secret disk that I got that they hidden that place that one time. Right. Thank you Esenburn. So I'm gonna put this in my floppy drive and then over here on grease weasel I'm going to start capturing track data. So I'm gonna capture all the MFM IBM PC sector tracks all 80 times 2 heads. So 160 total tracks. Okay so we have read all of the sectors 100% so it's ready to open up when image we're gonna open up that secret image oh my god so it's gonna open but I'm gonna open it anyways yeah let's just open it oh no not again I've got Rick old my my own floppy disk okay so we still got our floppy setup going on here where we're capturing flux traces from a three-and-a-half inch floppy drive but I've replaced the feather M4 Samdi 51 with this pink feather not just because pink is a cool color but because this feather has an RP2040 on it which is a low-cost chip from the Raspberry Pi Foundation and this chip can run really fast also has a cool PIO peripheral so we're overclocking it to 200 megahertz why not we're getting good flux captures over here and when we recompiled it and we're running a grease weasel it's just working so this is cool because now I've got two different platforms that work with this Arduino library which is the goal to make it hardware agnostic some more people can wire up hardware and build hardware to work with floppy disk drives and then next up maybe we'll try this little fellow the Raspberry Pi Pico $4 microcontroller board what is this okay and wrapping up for the night can relate time to maybe do some yoga and chill out so I've got the final board I'm going to interface with this is the Raspberry Pi Pico so this is a $4 microcontroller and the reason I'm targeting this is it's available like did he has 17,000 of them in stock and some of the hardware that people are using for open source floppy interfacing isn't available because we're in a silicon shortage but this chip is available so it's nice is that the pinouts like kind of line up very nicely you can connect them straight through to your floppy disk drive and then load the Arduino code onto it and I set up the pinouts all nicely and test of it I went a whole floppy just fine and then I've submitted this to the Arduino library registry so you'll be able to get releases and maybe I'll even have it auto generate uf2 file so I think I'm done for tonight maybe time to celebrate good work glass of water