keirf / greaseweazle

Tools for accessing a floppy drive at the raw flux level
The Unlicense
993 stars 100 forks source link

Linux cmd interface needed #484

Closed crestr1 closed 2 months ago

crestr1 commented 2 months ago

Have just set up the Linux version from the download and all the diagnostic stuff seems to work but i cannot find a command utility that lets me CMD talk to the greaseweazle board directly from a terminal. nothing in my system will make "sudo picocom /dev/ttyACM0" work or "sudo stty -F /dev/ttyACM0 9600" get to the board even after "sudo chmod -R a+rwx /dev/ttyACM0" should clear the field. Maybe there is a trick I need to know for this approach.

I have a windows 10 setup with the GUI and the GUI offers a direct CMD interface that allows one to directly talk to the board thru command lines. The windows GUI system works brilliantly recovering good disks (IBM FM 128 byte sectors, 77 tracks, SS and DS disks just using its IBM scan mode alone but i need to make complete intact .img files that just have a dummy value placed in bad sectors so the images are full sized and OS directory entries point to the right offset in the .img file when bad sectors are encountered and replaced rather than have their space omitted from the .img

crestr1 commented 2 months ago

I'm recovering 8" disks, these are a bit tricky and the disks do not center perfectly (its 40 year old hardware) and just reloading a disk can make different sectors bad and good, I figure if I get good reads of every sector of a disk in a series of .img files i can grab all the good stuff to make a perfect image of a disk using original os utilities. Just need perfect .img files the os is now in a VM.

crestr1 commented 2 months ago

As an aside --- can i recover a disk by having its image created by overwriting an .img of a freshly formatted disk with the good sectors it finds on the disk it is reading that should finally present an identical image size to what it is overwriting. this can help automate replacement of bad sectors with good freshly recovered ones

I'd like to propose this as a new recovery mode when one strikes disk/drive combinations that have good/bad sectors that change each time the disk is re-inserted again, this regularly comes about when disks have no fixed hub that assures the data tracks run truly centered without eccentricity. Old style 8" floppies were really bad for this, and nowadays some 50 year old stuff is around where the plastic disk centering clamps in the drives have degraded and also the center hole edges of the disks have been eroded from being clamped while the drive motor is still running. When recovering 8" disks sometimes it may take 5 read retries to get a set of images that between them have a perfect recovery of every data sector.

crestr1 commented 2 months ago

The update finally worked after a few re-try's and the gw utility is available now so I'm OK and underway. would appreciate a quick look at the stuff I've marked as_an_aside this feature would be great for all the 8" stuff I've be rescuing from family archives of 60 years. Got over 1000 8" disks and some almost unused drives. the important thing is I need to make complete intact .img files that just have a dummy value placed in bad sectors so the images are full sized and OS directory entries point to the right offset in the .img file when bad sectors are encountered and replaced rather than have their space omitted from the .img - some pointers on how to do this would be a big help. if i could control what gets written into a non recoverable sector as a replacement it would help making good .img files from the bits within a bunch of incomplete .img's

keirf commented 2 months ago

Hi there,

Your idea of inserting/injecting good sectors is pretty neat. But anyway, you can get correct-sized IMG files every time already, with explicit -=[BAD SECTOR]=- filler in bad sectors, by explicitly specifying the disk layout. This may need you to write yuour own diskdef. That would be a local file containing a stanza like in https://github.com/keirf/greaseweazle/blob/master/src/greaseweazle/data/diskdefs.cfg

You can then specify your own diskdefs file to gw using the --diskdefs= command-line option. This option may not be available from GUI. But then, you can probably handle a command line :)

You can't directly talk to Greaseweazle via a terminal program. It's not really a serial interface. It's a lie, to make it easier to interface to Python via pyserial. Properly I should make Greaseweazle a winusb-style device with its own protocol driveable via a library such as libusb. But that's more hassle.

crestr1 commented 2 months ago

Thanks Kier, I'm underway but I'm having trouble understanding how to configure double sided disks. I had a perfect reading using the ibm scan mode. but when i try to alter dec.rx01 to two sided 77 track 128 byte sectors i get troubles: what do i need to change here to make it double sided to read the same disk as in scan mode does if the disk is error free

disk dec.rx01 cyls = 77 heads = 1 tracks * ibm.fm secs = 26 bps = 128 gap3 = 26 rate = 250 rpm = 360 end end

If i make the 1 into 2 for double sided it gives sector errors on side one, it is expecting something that is not reading I need to tell it how side 1 sectors are marked i think

is there an output format i can use in IBM.scan mode that helps me figure this out Ive attached a file that shows scan mode reads both sides and dec.rx01 reads side 0 perfectly Ibm scan mode works.txt

keirf commented 2 months ago

What error do you get for side 1? Or can you share a raw dump?

crestr1 commented 2 months ago

New Text Document (6).txt it appear the s1 sectors need a side mark it understands error at end is me stopping the log after this it read in ibm.scan mode Ok

keirf commented 2 months ago

Are they really DEC RX01 as I thought they were strictly single sided?

Anyway, you can try the attached diskdef.

diskdefs.cfg.zip

crestr1 commented 2 months ago

Thanks Kier, they are not DEC RX01 i was using RX01 as it was something i thought would work with the disks I've got if I made it two sided. Is the DEC part of the name attached to some background settings or can i just rename this Moto MDOS3 without consequences. They are 8" disks. From the first IBM format soft sector systems ever. Have been using kryoflux and HXC formats (.hfe) the attached zip contains an image file and its hfe representative of the disks I'm needing to recover Images_and_hfe.zip Floppy Profile.zip

crestr1 commented 2 months ago

Thanks Kier, sorry to be a pain This new one works only on some disks, some have a different format on side 1 apparently. need to wrap my head around greaseweasel's trickey possibly undocumented bits. some questions on the magic numbers in the new diskdefs you made for me: tracks 0-76.1 ibm.fm secs = 26 bps = 128 gap3 = 26 rate = 250 rpm = 360 id = 27 where in the py code ?: is what this does tabulated anyplace else ? h = 0 what does this do. Loop back to side zero for next pass ? where in *.py end end point me to py bits if you think this can provide better explanations.

keirf commented 2 months ago

The ibm diskdef rules are explained here https://github.com/keirf/greaseweazle/blob/master/src/greaseweazle/data/diskdefs.cfg#L10

They are parsed by this class (and this is the whole file dealing with IBM format tracks): https://github.com/keirf/greaseweazle/blob/master/src/greaseweazle/codec/ibm/ibm.py#L802