This is very cool, love the effort on all of this to not use anything
external but mostly I love the animations.

Thanks!
Brian


On Fri, Aug 20, 2021 at 9:38 PM Brian K. White <b.kenyo...@gmail.com> wrote:

>
> I've been working on this for a few weeks and I just hit the main
> milestone that not only all the normal file access functions work, but
> the FDC-mode functions work, including, dumping and restoring a whole
> disk works. I just bootstrapped from a restore from a dump of a factory
> tpdd1 utility disk.
>
> https://github.com/bkw777/pdd.sh
>
>
> So, it's now possible to create a TPDD1 Utility Disk from a download,
> with no exotic hardware, just the TPDD1 drive itself and serial
> connection, and the software, aside from this script itself, is just bash.
>
> And the special challenge I set myself because I just knew it was
> possible: It's not only all done just in bash, it's all done right in
> the initial single process. No subshells, let alone external programs
> like awk etc, not even tr/cp/rm etc, not even other instances of bash
> from FOO=$(function... ).
>
> It's all in-memory ops and all in the single initial instance.
>
> Of course every absolute statement has to have exceptions...
> It has to call "stty" once at startup, and it has to run "mkfifo" once
> at startup if the fifo doesn't happen to be still lyng around from a
> previous run. In both cases, the external doesn't constitute much of a
> dependency because they are both so standard. I even addressed a pretty
> wide range of platform differences for the stty command so it should
> work out of the box on all the bsds, osx, as well as linux. And sine
> they are just run once at start up, not many times in the middle of some
> loop or in an aft-used function, they dont constitute an inefficiency
> either.
>
> It was quite a challenge figuring out a way to collect, store,
> manipulate, & reproduce binary data including NUL without resorting to
> an external utility but there turns out to be a way to do it with read()
> and a kind of brute force read-one-byte-at-a-time method where it is
> possible to tell the difference between "the variable is empty because
> there was no data", vs "the variable is empty because read() ate a nul
> byte as a delimiter, by looking at the exit value from read(). That's
> enough to let you store the information where the null byte existed,
> which is all you need. to re-create it later in a file or tty.
>
> Then there is sleep that actually sleeps not a cpu eater poll, without
> /usr/bin/sleep, and generally every bashism in the book.
>
> To be clear, my goal was to leverage bash for all it's worth, not to to
> try for something like compatibility with ancient posix sh. The idea is
> that bash is no longer new and exotic, and actually has a lot of
> powerful tricks available built right in. It's possible to make actually
> performant things in bash if you just do it right. Of course "do it
> right" is pretty context sensitive. In order to satisfy the goal of
> avoiding forks, you have to violate a lot of other good practices like,
> this thing is a sea of global state and side effects. Fine, might as
> well wallow in it then.
>
> And now that that's working well enough that a restore of the tpdd1 util
> disk works, What I really wanted was to see if I could successfully copy
> this Disk Power for KC-85 disk I have. This is a TPDD client for KC-85,
> that I got a working original disk and tape with an ebay purchase , and
> it turns out that it does not include a way to back itself up, and when
> you try to back it up some other way using Floppy on a 100 or PDD210.EXE
> in dosbox etc, the copy looks fine, but the install doesn't work. You
> need both the cassette and the singular irreplaceable original disk to
> install it, which is a situation I refuse to accept. ;)
>
> I *believe* I can now make a copy that's thorough enough thanks to the
> FDC-mode functions, that the copy would work... and *just* when I
> reached this point where I'm finally ready to try it... My KC-85 stops
> working!!!! Well it's marginal. Sometimes it comes on and works, but if
> I cold-reset, the screen goes blank and stays that way. "beep" doesn't
> beep.
>
> Here a few pics of the Disk Power disk & tape.
>
> https://photos.app.goo.gl/YvPBJsYnP8N3JffW7
>
> If anyone has a working KC-85 and wants to try it... you can get the
> DiskPower disk dump here
> https://drive.google.com/drive/folders/1HMZNi7S7O4s6Nn7sUcFVwrBVeVIFXSvA
>
> As well as the install file from the cassette. I think the install
> program from the tape isn't as picky as the disk. As long as you get the
> file onto the kc-85 by any method and run it while the drive is
> connected and has the disk inside, I don't think it works. Not there is
> a file with the same name on the disk, but it's a lot smaller and seems
> to just be a stub or something.
>
>
> --
> bkw
>

Reply via email to