Use a floppy-disk as a multi-frame-buffer, store audio-samples, and increase capacity to boot!

Similar projects worth following
Using PWM, rather than MFM, to store data on magnetic media, I believe it possible to increase the storage capacity dramatically without compromising data-integrity. With a simple 8-bit uC at 16MHz, 8 bits could be stored in 5 bits' space!

A single track, then, contains enough data to be used as a frame-buffer for a small LCD. 160 tracks makes for a digital-picture-frame, something like HyperCard, or even short videos.

But first, I'll store audio-samples, 80 tracks per side is perfect for a MIDI controlled synth-patch, etc. Yep, it's a bit crazy.

that name... just now imagined, might just do the trick... (was trying to figure out what to demo with this thing)

Herein, I plan to document plausibly the most ridiculous of my endeavors, to date...

Wherein there are planned two subprojects to demonstrate a technique I've come up with for increasing the amount of data that can be stored on media such as floppy disks, and maybe extendable to similar media still in use today, such as hard-disks.

(It's plausible this technique already exists, but I have not read of it previously).

The first subproject will use this technique to store and play-back audio directly on a diskette using an unmodified drive and a handful of discrete components (comparators, mostly). No microcontroller is necessary for concept-demonstration, though may be added later for increased functionality.

The second subproject, and likely my most-ridiculous, ever, will use this new storage technique to use a floppy diskette as a framebuffer for an LCD.

Briefly: each track will contain an entire frame, refreshing the LCD once with each revolution, at 5Hz.

(160 images! Think: HyperCard, or maybe a digital picture frame).


A standard 3.5in 1.44MB diskette is recorded at 500kb/s, and spins at 300RPM, or 5 rotations per second, 100,000 bits per rotation... left spinning on a single track, those 100,000 bits repeat...

A 240x160 LCD has 115,200 pixels... it's like a sign or something.

(Actually, it has 38,400 three-color pixels)

A) the 500kbps data rate is a guarantee by design, and can likely be bumped up a bit, especially on outer tracks... so a 15.2% increase should be doable. That doesn't include invisible pixel-clocks, used by the "porches", but... worst-case we lose some pixels at the right or bottom... definitely feasible.

But That's Irrelevent because:

B) a different, and possibly new, technique of magnetic data-storage is proposed:

North...  _____________
South... /       \_\_\_\_______/

Floppies store data as magnetic flux transitions. The 500kbps limitation is due, largely, as I understand, to the minimum distance at which two "magnets" can be placed on the innermost track without repelling or attracting each other too dramatically as to affect the stored data.

The typical approach is to store these flux transitions at one of two locations, depending on whether the bit is a one or zero. Thus, data is stored such that each data bit occupies essentially the minimum amount of space which can accomodate *either* flux-transition mapping without affecting the next bit. 

What I'm trying to say is that every bit contains (or at least is big enough to contain) a flux transition in either of two locations, one of which always goes unused...

But it needn't be that way...

Imagine a digital oscilloscope... Say it samples at 100MS/s. Analog-to-digital converters that fast are typically quite expensive. So a trick often used is to have, say, two 50MS/s ADCs which are offset by 1/2 of their sample-period. Bam... 100MS/s.

Now look at it the other way... the ADCs aren't restricted to 50MS/s... they could just as easily be bumped down to 49.9999MS/s. It's not a factor of sample-rates divisible by 50, it's a matter of the resolution of the sample-clock. And the limitation of 50MS/s is merely a matter of the maximum number of samples that can be crammed into a second, put more clearly, a matter of how fast a single sample can be processed.

But those samples don't have to be evenly spaced throughout a second! One could just as well sample one sample at 1/50millionth of a second, and sample the next at 1/49.999 sec, thereafter (being nowhere near some multiple of 1/50mil).

Oy... bad explanation. Let's think about synchronous logic... say...

Read more »

Voice 003_002.amr


amr - 156.85 kB - 10/08/2018 at 14:04


Voice 003_001.amr

Full Seek/Write/Boop/Boot

amr - 278.41 kB - 10/08/2018 at 14:04


Voice 002_001.amr

This is data read off the floppy, *NOT* stepper-music. You can hear stepping in the background. Original composition by fate.

amr - 195.88 kB - 10/08/2018 at 13:47



code! Not Particularly Functional, but hey, it makes noise!

x-tar - 330.00 kB - 10/08/2018 at 13:28


  • sheesh

    esot.eric01/03/2019 at 05:42 0 comments
  • v61

    esot.eric01/02/2019 at 09:10 0 comments

    Yep! That sounds pretty impressive until you consider that v60 was from whatever date it was three logs back when last I coded.

    Basically, in times like these, I tend to forget where I left-off, coding-wise, and re-entry is quite difficult for me. Usually it comes in one of various unpredictable forms. This time it came in the form of cleanup. "What the heck does this mess do?" "Ahhh, that's the write-routine... time to put all that in a function outside of main so I can see the whole picture." And then what's this mess *within* the write-routine? That should be a separate function... 

    And now, I'd intended on refreshing myself on the big picture and instead did a little toward those ends, but mostly wound-up revisiting the write-routine in greater-depth than I'd intended.

    Which is fine, 'cause frankly, it doesn't function; big-picture, write-routine, or read-back... who knows. This is the sorta project where anything and everything could be the culprit...

    So, write-routine cleanup, and somewhere a weird thought: The *easiest* write-test is actually *really* simple, and already implemented: The "Sync" pulses are Straight-up regular-ol' PWM of a specific and unchanging duty-cycle and frequency. Increase that frequency (decrease the period), slightly, and you have a valid PWM-Nibble (0x8), repeating indefinitely with no (zero!) processing overhead.


    Remember, an "ideal" PWM-Nibble consists of TWO sequential PWM-peripheral cycles with different Periods of VAL and 16(?)-VAL... math to be done, and registers to reconfigure at every cycle! But VAL=8(?) gives the same duty-cycle for both... And now testing our read-back routine doesn't rely on a functioning write-routine! Ish...

    So, I may've mentioned, previously, the seeming importance of the *shortness* of the time between pulses of /WR. This new test seems to confirm that. A PWM-peripheral period of 4us gives garbage, whereas 3us looks *very* promising. 

    (If the readback function worked as-intended, anything longer than 3us should be considered a sync pulse, *no* data would come through, not even garbage. Because garbage comes through, it's clear the readback routine isn't filtering properly, which actually is handy here...)

    The theory being that the inductive read-heads require regular *changes* in the magnetic-field, or the winding current will drop to zero, plausibly looking to the comparator/amplifier like a change (especially with external electrical noise, etc.).

    3us seems uncannily short to me... RIGHT at the threshold of the design. If I recall correctly, each MFM bit is 1us long, and there's a not-uncommon case where up to three consecutive MFM-bits can be zero (no flux change for 3us!) So, seems like sensors' failing at 4us would be unlikely. But... who knows...

    Regardless, recording a constant pulse-train at 3us appears to be working. Read-back results in almost zero garbage, clicking, noise, whathaveyou... which was previously quite dramatic... Now there's clear repeatability of read-back data on a track... And, dragging my finger on the spindle-motor appears to change the read-back values (as it should, slowing it down, slightly, extending those 3us pulses, slightly). 

    It might actually be slightly-functional!

  • Neuron-Firing?

    esot.eric11/17/2018 at 22:21 2 comments

    I've only a tiny understanding of neurons, but as I understand a neuron takes in many [analog] inputs and "fires" when some threshold is crossed. The output is, essentially, binary... 'zero' most of the time, then 'one' very briefly during the 'firing' of an impulse. 

    Anyhow, I think what it boils down to is the *timing* of those singular impulses ('ones'). 

    And... that's *exactly* what this storage-method is all about! Output consists of two impulses, the time between determines the value.

    Have I inadvertently stumbled on neural memory?

    (Thanks @Lee Djavaherian for the comment in the last log!)

  • Light-bulb current-limiter... Incandescent RAM?!

    esot.eric11/14/2018 at 20:34 12 comments

    As part of my house-battery charging system, I thought maybe to use a light-bulb, instead of a resistor, as the current-limiter. 

    Pretty simple, place lightbulb in series between voltage-source and battery.

    The idea came to mind as I sat outside a physical electronics-parts store (they still exist!) contemplating worst-case scenarios and the supplies available. 80W, I determined, through something like 0.1ohms. None-a-dem resistors were *even close* to that wattage. 

    But, yahknow, lightbulbs are darn near a wire and capable of handling 100W. If powered normally, there must be *some* resistance, otherwise they wouldn't stop at 100W! But, last I recall measuring with a meter, probably 15+ years ago, the resistance was near zero. So there must be an I-V curve, their resistance must increase when powered... right?

    And, that's exactly what I'd want; a higher resistance when my battery's really low, so my charging circuit won't blow my fuse, and a lower resistance when the battery is nearly charged, to cram in as many electrons as possible (again, without blowing the fuse).

    Cool. And after finding I-V curves showing just what I'd guessed, I had it in mind to see if anyone's tried it... Sure enough. It was actually pretty common back in the day. And there's even a video of a dude charging a car battery from 240VAC, rectified, with nothing limiting the voltage/current other than a series lightbulb.

    Not *quite* what I had in mind, but concept-proven.

    I started thinking about it, though... 

    The I-V (V-I?) curves didn't show extreme cases, extrapolation was necessary for e.g. the resistance of a 100W 120V bulb running at 12V (nevermind the ~2V difference when the battery's nearly full). So, it comes down to buying a bulb and measuring.

    Figured this 3-way bulb would give me more options... (4!)

    Measurements: ~10ohms and ~20ohms. Much too high for my needs. But, V=IR P=VI=V*V/R, R=V*V/P=120*120/100=14400/100=144 ohms vs 10 measured, *definitely* not a resistor!

    Allegations are that the resistance increases due to heat... so, realistically, an I-V curve is a little misleading.

    This be a strange device... Not a resistor, not an inductor, surely not a capacitor. What is it?

    And what when 80W is run across it, but at a much smaller voltage? Maybe not possible, anyhow, its resistance would increase with the heat, thus the voltage-drop across it would also increase, and ultimately wouldn't allow high wattage at a low voltage.

    Anyhow, I kinda thought, hoped maybe, the curve would swing down a little further, on the order of 0.1ohms woulda been nice. Am thinking a 12V bulb might have a lower resistance. Those high-wattage, low-voltage bulbs have beefy filaments. (How much light actually escapes a chunk of metal that thick?!). 

    And, this setup is probably much more like those of yore, when perhaps charging 12V car batteries from 15V-20V generators (depending on the driver/traffic) might've been accomplished with a series 12V bulb (NOT 120V, unless they really wanted a trickle).

    Anyhow, high-wattage 12V bulbs aren't typically $1, and I figured out a workable solution with resistors and some less-extreme numbers.

    But, if you're in a jam and only have 120VAC, a diode, and a 150W lightbulb, ~1A charge-current ain't bad. Hmm, maybe I shouldn't return this bulb.

    Am curious about halogens, but that'll wait.

    Also curious about the I-V curves when heat isn't a factor... e.g. a really short pulse... hmmm...


    Actually, quite curious. A filter, laid-out like an R/C or R/L circuit... Short pulses would go through, until heated. Kinda like a charging capacitor..........

    oh snap, what's this a voltage-controlled attenuator?


    Search-fu is failing me... Seems there should be a circuit-model for these things, instead...

    Read more »

  • Coding! Coding again!

    esot.eric11/14/2018 at 07:32 2 comments

    Had every intention of launching right back into those code-changes/experiments today... Instead, the first few hours spent making my hokey 12V/5V wiring less delicate. Here's a tip: drill + zipties. 

    Also had a revelation... See, that 5V power supply was intended to drive the 'antPC' as well as peripherals (e.g. my old hard disk)... thus, all those high-power USB ports. And somewhere in there I had it in mind to use those ports to power my project[s] as well. Brilliant!

    But reality set in... I don't really have any high-current USB cables to cut for power. Oh, those dollar-store cables claim to handle 2.1A, but have you seen how thin they are? It's prb 4V by the time it gets to the other end. Fine for charging a 3.7V battery, but probably not for powering a 5V floppy drive's motors.

    So, then I dug around for long/thicker two-lead wires to wire right in to my 5V supply... and at the end of that I'd splice the 3.5in floppy power connector. Kinda hokey to have a special cable coming out of my PC for this particular project... But just as I started to cut the cord off a wallwart, I saw the most obvious answer.

    A friggin' power-cable from an old ATX power-supply... yahknow, yellow, red, two blacks, several connectors for both 3.5in and 5.25in drive-bays. Yahknow, kinda like one might find attached to the power-supply inside their computer, and might use to power things connected to their computer, like... a floppy drive. So, now, the antPC has power for peripherals... like PCs do. And it's plenty long enough.

    I can't tell yah just how much fight it took not to wire up that yellow wire, too. "I don't need it right now!" and "It'd be *easy* to do if I ever do." But, more importantly, I suppose, is that it'd be [relatively] unregulated, from a car circuit... 11.75V - 12.6V, when not charging... Those numbers aren't too bad, pretty sure I've seen the likes coming from ATX supplies... but 14.2 into a hard-disk with no backup, that's a little nerve-wracking. Better not connected, lest I forget.

    Did I mention that this seemingly simple task of stabilizing my power situation wound up taking hours? Yeah, several paragraphs, here, just recalling.


    And, one of the main reasons I undertook this 12V->5V endeavor several days ago, now, cropped up today... The [house] battery dropped too low for the inverter. My PC woulda suffered a power-outage, right in the midst of coding... but the 5V supply hung in there with plenty of time for a proper shutdown. YEAH!


    And, yeah, I got a few hours' experimentation/coding in.

    First experiment: remove varying data. Record the same value in every nibble on the track. An easy compromise from recoding to handle e.g. 2-value "nibbles", as described earlier, is to just record the value 0x0 or 0xf. DUH. and 4-value is just as easy, and so-forth.

    So, writing all 16 values, one on each track, runs several experiments at once.

    And... an interesting result: Silence and constant-brightness on the LED, as the track spins throughout the majority of each rotation... on every track... suggesting, possibly, the repeated values are being read the same. As expected. Possible.

    However, equally-informative, maybe, is that the brightness of the LED changes seemingly randomly (and a slight popping-sound) once with each rotation. Plausibly right around the Index pulse.


    Well, writing of PWM-nibbles is delayed until after the index pulse... and stopped as soon as it's detected. So, there's a brief space on every rotation, on every track, where there's random garbage from long ago. This garbage is unlikely to look much like a properly-formatted PWM-nibble... OTOH, it might slip through my limited detection-scheme. So, maybe a random value comes through there...

    BUT, the proper nibbles are written everywhere else on the track, the same value. So, a slight blip near the index may be expected, but as soon as the proper nibbles are detected/read, the LED should show the...

    Read more »

  • Reinventing my reinvented wheel

    esot.eric11/13/2018 at 06:39 0 comments


    So, the shortest single-polarity magnetisation is 2us, two MFM bits long, e.g. between MFM="101" where the new polarity starts immediately after the first '1' and ends immediately before the second... "10" representing two bit-durations of the same magnetization.

    The longest single-polarity magnetisation is 4us, four MFM bits long. (Not shown in the diagram). in the pattern MFM="010001" from the data value "101"... MFM="1000" representing four bit-durations of the same magnetization.

    These two limiting-cases, obviously by-design, satisfy both the serial-clocking needs as well as the inductive pickup's needs. The latter being most important for my new PWM-data-storage method.

    Yeahp. I wrote that. More than half a year ago.

    And... I kinda rediscovered the bold bit, the hard way, in October.


    The other day I finally got back to coding. A key factor was replacing my constants and calculations, which originally used microseconds as units, with instead a new unit I'm calling PWM-Value-Ticks (pvt). Thus, soon, I can use multiple AVR-timer ticks for each pvt. The original design called for pvts that occurred at 16/us, which corresponded to one pvt per avr cpu cycle, when the timer ran with no divisor. Thus, 16 PWM values stored in 1us. 

    But, since the latest conclusions that maybe 1/16 us resolution might be asking too much of the floppy hardware, I figured on running early experiments with scaled-back requirements, thus, e.g. 1pvt=3cpuCyc, etc.

    This'd give a lot more fine control for experimenting as opposed to merely changing the timer's divisor. And, anyways, since I'd done everything in us previously, and relied on 16 timer ticks per us in some calcs who actually need a specific duration, changing the divisor wasn't an option, either. 

    So, pvts it is for anything PWM-nibble-related, and us/ns for everything else (e.g. 0.8us max /WG->/WD).

    And... we come full-circle to the bold bit... There really may not be much room for experimentation in the form of scaling back expectations, because, as I apparently was already aware of half a year ago, then had to rediscover the hard way, the inductive read-head surely places a limit on the length/duration of a single polarization. 

    There's probably a small range of pvt-durations which will work at all. And the effect of longer durations will likely look the same as the effect of too-short durations.

    It may be the only real option is to scale back not the density of PWM-nibbles, but the *number of values* per PWM-data-chunk, using the same timing (buffer durations) as the original design. E.G. a two-value system (as opposed to 16) would basically be within the same timing-constraints as MFM, and should work. Maybe then try a 4-value system. 


    This path goes back to original (us) times as originally intended, as opposed to pvts.

    And, now, the math/constants need rewriting again, almost back to how it was.


    And further, quite a bit of the as-is code is designed exclusively for a 16-value system, so got quite a bit of recoding (again) to change that.

    Experimentally, it's *likely* 4us isn't the longest measurable single-polarization, just the longest *guaranteed* measurable. So, realistically, there are *several* factors needing "scaling-back" and experimenting. And, for some, "scaling back" may actually mean *increasing* flux-change density. Seems a bit counter-intuitive. But, I didn't just pull those original numbers out of my hat.

    I suppose the next logical step, then, should be trying out a two-value system with the original mfm-compatible timings. That should function... once it's recoded. And all that other recoding for pvts...? Oy. PWM-Value-Ticks don't make an ounce of sense, here.


    Realistically, I've run into scenarios like this a lot... basing...

    Read more »

  • More progress in non-progress

    esot.eric11/11/2018 at 07:20 0 comments

    Here's my 12 parallel resistors from the last log. Yeah, it's a bit ridiculous ;)

    And... all them (series!) crimps may be adding to the unexpected resistance of the last log. Oh well.

    I've become a bit [too?] fond of barrel-crimps, recently. Aided by the fact Fry's had a deal which wound me up with a huge stockpile and variety, nevermind a bunch of surprising-quality sorter-boxes, for $4. (And, I've taken to investing in wire from extension-cords at DollarTree. One Dollah!)

    So, then comes the next endeavor. My "antPC" (thanks buddy!) runs off 5V. So why run a 5V wallwart off 120VAC if I have 12VDC already? This is more than just an efficiency thing, when the voltage drops too low, my inverter just kicks out without warning. This is especially a concern when starting the engine (e.g. for heat, or a battery-top-up). Not the sorta thing you want happening in the middle of software devel... (nor, maybe, is seeing your breath).

    So, I found a car-outlet 5V 6.8A USB "charger"... $9 for, really, a high amperage DC-DC converter, not bad. Especially considering I didn't have to order it. I figure since it's buck (rather'n boost) it probably will work even if the battery's *severely* drained. And, tests show it does, at least, keep running after the inverter conks out. So, when that happens, I guess, a little warning to properly shut-down, or start up the ol' engine.

    This isn't just for the computer, though... Remember what this project was about? Yeah, I almost forgot, too. My floppy drive runs off 5V, as does (for now) the uC/circuit, programmer, etc. AND, I got a USB DVD drive at Goodwill, $5, so can finally add a few new movies to my viewage. AND I managed to salvage my old lappy's hard disk with a USB SATA adapter...  (Thank goodness!). Both the DVD and HDD take more power than the antPC's USB ports provide, so 6.8A does the job of powering the antPC and the drives through a powered hub.

    Here's a teardown of the charger. Pretty simple, really. And not too difficult to hack for my needs. 12V in, 5V out, (handy they had two boards with wire inbetween!) and some extra powered USB ports for "Dumb" things like the floppy-drive or phone charging.

    (BTW, it's a Hypergear "Quad USB Car Charger" 12-24V in, 5V 6.8A out)

    Had some challenges to overcome. 

    Like I said, I've become maybe too fond of these crimps. I started soldering when I was six. That *would* be my de-facto wiring technique. But, the solder-station is no longer always at-the-ready. So... carried-away with crimping.

    First challenge: the 5V wires are too skinny to crimp. And too short to strip really long and fold-over a few times. Too short, really, to even twist with some additional stranded wire. Too short to twist around a solid wire. Yep, I really thought this through.

    I'm actually quite proud of my solution. Wrap solid wire around it, like wire-wrapping. The solid wire is nearly perpendicular to the thin stranded wire we're crimping, so pull-out shouldn't be a concern. I tightly-wrapped two layers, then crimped. Rather, it's not particularly tight around the stranded-wire (that'd've just bent it!) but that each winding is tight to the next.

    Worked so well, I did it four times.

    ("WTH, man? Just solder a new longer wire!")

    Oh yeah, and it's too short to leave the insulation sleeve full-length. Another thing I ran into several times.

    (Hey, note, I wouldn't be nearly so gung-ho about these crimps if I had a cheap non-ratchetting tool. I bought a cheap ratchetting one a while back. I think it was $15. It's really worth it. If just to prevent blistered palms. But, really, a ton of reasons.)

    The next step was getting permanent wiring to the 12V... I'm sorry, but "cigarette lighter" outlets are stupid. Is there any plug that doesn't eventually push itself out? Again, not good during coding.

    The positive connector is a spring....

    Read more »

  • Physics?

    esot.eric11/04/2018 at 10:31 5 comments

    Does the "real world" align with physics for anyone, or is physics amongst the biggest hoaxes of all time?

    The previous log detailed a string of luck, building a charger for my new "house battery".

    Today I tired of its flakiness and invested in a lower resistance.

    Believe it or not, there are still physical stores where such can be purchased.

    I did math and came up with some extremes. Say the alternator's putting out 15V, and the battery's severely discharged at 11V... 4V difference. My lighter outlet can handle 20A... 0.2ohms should do well, and *way* better than the 0.75 from before.

    (Oh yeah, so my 1:1 estimates last time were obviously disproven recently, as I drove at least a couple hours and barely got a half-hour's use. How'd it 1:1 last time?!)

    So, the store's resistors are 2W max, and my extreme case is 80W(!)... I ain't using 40 parallel resistors, this is an extreme case.

    Limiting factors included the available values and stock. I ultimately came up with 10 2.2ohm 2W resistors. In parallel with my two parallel 1.5ohm 7W resistors we should get 0.17ohms... close 'nough. Then I did some math, again, and these wattages should be fine for normal use. (The loaded inverter cuts out at 11.75, anyhow, not gonna drain it to 11! And a car regulator's like 14.2V, not 15).

    So, I rig the thing up, 12 [big] parallel resistors, now... and try it out... This time a current-meter installed...

    and I'm getting dang-near 1:1 again, right off the bat.

    dang battery won't run the inverter+load, last I tried,... and it's charging at the rate I determined for the old 0.75ohm setup, (AND tested, that first time!)


    So, there's that.

    Now, watching the charging current, some other interesting findings... like... the heater fan drops the charging current, while driving 60MPH, by more than 10%. Headlights by 5ish. Brights vs. Normal, barely noticeable change in charge current. Braking... holy shizzle, 50% or more. 60MPH doesn't seem much different than 20, as far as charge current. In fact, I think it went *down* slightly after I got on the freeway from the parking lot. Oh, and jiggling the plug in the socket varies the current by about 10% as well.

    I suppose with 0.2ohms and a couple/few volts, it should be expected that even a minor fluctuation in supply voltage would affect the charge current so dramatically... But... wow.

    Definitely making me wonder if my alternator could handle a [nearly]-directly-coupled second battery. Or, I spose it's equally-plausible there's some resistance between the regulator and the accessory-distribution... bar(?).

    Regardless, if my prior math was right for 0.75ohms, and with 0.17 ohms in actual resistors giving charge-currents calculated for 0.75... then there's about 0.6 ohms in the system. That seems like a lot to me. Think about the effect that'd have on heavy loads! 125W (output) inverters are pretty cheap these days, at 10A in, 0.6ohms would drop 6V?! and 60W lost in the wiring/connectors?! No, worse, 'cause now it's closer to 6V, so nearing 20A, and 120W in wiring! Som'n ain't right, here...

  • FlopProgress!

    esot.eric11/01/2018 at 06:15 2 comments

    Actually, none...

    Due to a combination of factors unrelated to this project, specifically, progress on this project has been limited to the theoretical realm.

    Well, that is progress, but kinda intangible.


    I [finally] built a house-battery setup a few nights ago in a Wallyworld parking-lot. It musta been quite a sight to some folk in the lot; I felt a bit like Ivan in his B&I days. But for some weird reason that was when the friggin' project-energy kicked-in for the first time in weeks.

    A buddy's car starter died a while back, but before diagnosis she bought a new battery, thinking the old one at-fault. I think/hope I helped ease her finances by buying the old battery. Not "ideal" for a house-batt, maybe, but a good starting-point, especially after a year and a half without (and several costly low-starter-battery scenarios). 

    So... first-things-first, a charging setup. For now, despite better judgement, it's getting charged through the lighter-outlet.

    This project was one stroke of luck after another. It's kinda too bad I don't really have the energy to type-it-justice. Though, it stands as its own testament to that day.

    A couple 1 .5ohm power-resistors I somewhat-randomly selected from my storage-unit a year ago were put in parallel to prevent blowing the outlet's 20A fuse. According to my preliminary calcs, .75ohms just happened to be almost exactly the right value for a worst-case extremely-dead house-batt.

    Soldering wasn't in my mindset, and the stupid things' leads were *really* short, so eventually I realized that cutting the strain-relief insulation off one side of a butt-crimp would do the job quite nicely.

    I planned to scrap another lighter-outlet for its battery-clips, but as I dug for my mis-placed butt-crimps I came across some hose-clamps darn-near exactly the right size for the battery terminals, saving the scrapping of a handy doodad which likely would still be useful in many situations, and now still-usable, even with the house-batt setup, and saving me from having to wingnut an oversized and unweildy wad of wires.

    Between the car's outlet and the battery, I decided to use the wiring already in place for my cheapo--yet surprisingly powerful-enough for all needs thus-far--inverter. The battery, however, found its home, a while back, about three feet away... I tugged at that wire 'till it stopped, and at just the right length.

    Continuing on, I rigged up the resistors to that cable, and sat for a bit trying to decide what wire I had for the Y between the resistors and the battery terminal... And, staring right at me was just what I needed; the inverter's original power cord had been cut and extended with an old three-wire AC extension-cord. When I did that, I left the third wire's ends dangling and unused with some intention of eventually using it for something I don't remember (maybe an 'inverter on' LED at the lighter-plug?). The exposed portion of that dangling unused wire was the perfect length for a V rather'n a Y, and with only a little more effort than stripping its ends, partially-strippable-enough to expose the center to be securely hose-clamped to the battery.

    OK, Now I'm planning to attach the ends to the battery, and lo and behold the added-length, from the resistors and V-wire, is darn-near *exactly* the same distance as the battery terminals, which of course are already in-line with the path of the wire, and the battery's already in the right orientation. (Seriously, those things are heavy, and where it's located a 180deg rotation would require some effort. Imagine 3D Klotski with cinderblocks.)

    OK. Wow, it's like this thing's meant to be!


    Sh**. I'mma trip over this stupid cord, its stop-length, from earlier tugging, leaves it hanging about an inch off the floor. Tug tug, nada.

    Wait, I've got it wrapped around the backside of a wall, passing across...

    Read more »

  • Low res... nope

    esot.eric10/28/2018 at 17:49 0 comments

    The key thing about this [original] design was that each nibble corresponds to a pixel. Each nibble stores the data, the sync, and the pixel clock.

    So, if I keep with this design intent, then reducing the storage capacity, by increasing the physical size of the nibbles [e.g. by 8x], there inherently will be fewer pixel-clocks. Thus the display will have to be driven with a smaller resolution than designed-for.

    Since the display is directly-refreshed (there is no scaler), this means there'd be a picture 1/8th of the screen-size either in the upper left corner, or filling the top 1/8th of the screen-height. Or maybe something inbetween, but still only filling 1/8th of the pixels. NOT stretched across the screen, like MarioThing, of the last log.


    The original design-intent also included the idea that read-back could be entirely implemented with a handful of logic chips; four outputs of a counter, for instance, could be directly wired to the three color inputs (8 colors, one bit for each of RGB) and to Hsync.

    The readback-logic has grown a little due to synchronization (determining which /RD pulse corresponds to the start of a PWM-nibble, and which to the nibble-value). But, still, the data is wired directly to the counter outputs.

    Now there's some plausibility I might wish to do some scaling... Can that be handled with a minimal amount of additional logic?

    Meh, sure... The counter is already clocked at 16x the nibble-rate, so a latch to store the data output, then the 16x clock could be used to feed the pixel clock. OK... Not bad.

    So, say, we've managed to only store 1/16th of the data originally planned... Could stretch each image/data-pixel across 16 physical pixels. Vertically, the resolution would still be 160 pixels tall (image and data). Horizontally, the image would be 240/16=15 pixels, stretched across 240 physical pixels.

    Were I to try to implement MarioThing, it could be done by storing every row 10 times to make for 16 image-pixels vertically. But, horizontally we'd be short an image-pixel. Meh. Anyhow, 1/16th of the capacity isn't set in stone. Maybe I could get away with PWM-nibbles that are 15x the length of those originally-planned.

    OK, now it can still be done with a handful of logic. But, now, instead of driving the LCD's pixel-clock once with each nibble, it needs to be 15 times with each nibble... and... the logic increases in complexity, again. OY.


    no, the counter is clocked *way* faster than 16x the nibble-rate,.. because of the start and end buffers. More complexity, still!

    Fact is, I'm using a uC, due to supplies and space, so it shouldn't be difficult to pulse the pixel-clock pin 15 times after each nibble is read... but this all takes away quite a bit from the original intent of an LCD wired to a floppy drive through a counter.

    So... I got a little carried away anyhow. Back to just storing and reading back PWM-nibbles containing audio, then going from there.

View all 30 project logs

Enjoy this project?



Lee Djavaherian wrote 04/24/2018 at 00:23 point

You have many interesting projects, and your writing style is really enjoyable to read.  I like the ways that you re-use older tech, the techno-archeology you perform, and how you also change gears and publish those inexpensive lifehacks like the automotive repairs. (By the way, I also have a makeshift heater-core bypass in my car, and it's a true Apollo 13 cabin experience in the winter! And I have a Marantz 2230 that I need to fix, but I digress...)

This Floppy-bird project, though, is really interesting and several orders of magnitude more complex; I keep coming back to it for some reason--it sticks in the mind--something that shouldn't exist in our reality, but something that I would like to see exist.  I've e-wasted so many of those drives years ago and felt bad about it every time. 

It is fascinating how old and new tech often have these weird similarities that sometimes allow their mystical conjunction, so to speak, that "sign or something" you mention.  The tech you are combining are shifted slightly in time and purpose such that they can't be connected directly, yet they share the unifying element of the picture frame, which they can all deal with in different ways.  It's great to see you engage these kinds of alignments and perform further exploration, and you are going pretty deep into floppysophic territory on this one.  Impressive.

  Are you sure? yes | no

esot.eric wrote 10/14/2018 at 06:17 point

Wow! In a strange temporal-twist, I've just stumbled on this comment half a year after its posting. This really means a lot to me. Thank you, my friend!

  Are you sure? yes | no

zakqwy wrote 04/12/2018 at 13:35 point

man I miss hypercard.

  Are you sure? yes | no

esot.eric wrote 04/13/2018 at 05:39 point

Those were The Dayz!

  Are you sure? yes | no

Similar Projects

My 'blog'
Project Owner Contributor

blogifying .io


Does this project spark your interest?

Become a member to follow this project and never miss any updates