• Please review our updated Terms and Rules here
  • Exhibitor application for VCF West 2022 is now open! If you are interested in exhibiting, please fill out the form here.
  • Here are the results of the VCF East 2022 Post Event Survey: Survey Results

ethflop - a network-backed floppy emulator for DOS

Shadow Lord

Veteran Member
Joined
Jun 16, 2010
Messages
3,155
Location
California
I still like my solution ;)

As others have said a disk change facility would be nice. Nothing elaborate - maybe something like this: All the disks would be placed in one directory and named in some prescribed way (say files are in WIN311 directory and disk are name 01.img, 02.img, 03.img - 11.img you get the idea). Then all the TSR has to do is trap two hot keys (say "ctrl +" and "ctrl -"). The TSR would then step up/down in the file name and load the disk. I am not a programmer so I am not sure how much bigger this would make the TSR's footprint. However, it should be less then a routine that pops up a dialog box asking for the name of the image each time. Of course it would be limited to install disk sets but that is when you would need it most.
 

superjer2000

Member
Joined
May 16, 2018
Messages
10
Your method would certainly work, I simply consider it bad design to run daemons in foreground and (even worse) expect them to have any kind of direct user interaction. That is why I was suggesting a separate tool that would feed ethflop-server with specific control instructions. It should be fairly easy to extend the ethflop (DOS) tool for that (but could even be web GUI in some "deluxe" version). The limitation of doing this in the ethflop client is of course that then one would require another DOS machine for controlling the eject/insert actions, that is why a separate Linux program might be more desirable.



I agree that quick and dirty hacks are usually easier/faster to create than elegant solutions, yes. ;-)

I appreciate your candor and I agree with your thoughts. My initial view was that I would generally just use ethflop when I'm installing software and wouldn't leave it running at other times so starting it up in non-daemon mode would be fine. That being said, leaving it running and then just loading/unloading images via a separate tool is a better approach. I was also thinking that a web solution would be great but that isn't nearly as quick of a change.

I will press-forward on the initial proposed changes to the ethflop server to make sure I understand how it's working (and also given that I'm almost done). After that I think it should be straight forward to write a separate tool using unix domain sockets to communicate with the ethflop server (although linux programming is new to me this something as simple as a command line tool to eject/load seems pretty simple to implement).
 

superjer2000

Member
Joined
May 16, 2018
Messages
10
I appreciate your candor and I agree with your thoughts. My initial view was that I would generally just use ethflop when I'm installing software and wouldn't leave it running at other times so starting it up in non-daemon mode would be fine. That being said, leaving it running and then just loading/unloading images via a separate tool is a better approach. I was also thinking that a web solution would be great but that isn't nearly as quick of a change.

I will press-forward on the initial proposed changes to the ethflop server to make sure I understand how it's working (and also given that I'm almost done). After that I think it should be straight forward to write a separate tool using unix domain sockets to communicate with the ethflop server (although linux programming is new to me this something as simple as a command line tool to eject/load seems pretty simple to implement).

Well I got the modified ethflop server version working. It’s pretty much as I outlined before - if you run the server with the no daemon option once you insert a disk into a client the server brings up a menu of clients with loaded disks and then you pick a client which then brings up a menu of available disk images. If you run it with the daemonize option there are no changes.

For my use case it worked great - I was able to install WordPerfect 5.1 from the 12 or so disk images by just swapping images from my MacBook set up beside my 5150. I still have a few minor things to clean up but this is likely the easiest way for me to install software now. Awesome tool - thanks again for making this available.
 

superjer2000

Member
Joined
May 16, 2018
Messages
10
Are your changes available anywhere?

Yes - I was just cleaning up some of the changes I made. I just used it to install Windows 2.0 - worked great.

Attached is the source and adjusted Makefile for the DiskSwap version of ethflop

The readme contains the relevant information on the changes made. Note as per the readme that the ncurses library is required.

I think I covered off the all of the required license-related elements regarding software modification - let me know @mateuszviste if anything else is to be done and thanks again for ethflop - it truly is an incredible accomplishment.

Let me know if it works for you.
 

Attachments

  • ethflop-diskswap.zip
    19.4 KB · Views: 3

superjer2000

Member
Joined
May 16, 2018
Messages
10
No change to the client/MSDOS app? It detects the changed floppies without any problems?

Correct it just watches for the control packets that are sent to the server by the client when new clients connect, disks change etc and then presents a refreshed list of clients.

The version I uploaded doesn’t actually require you to ever insert a disk from the client. As soon as a client connects you can select it and then select an image. I found this quicker then inserting a floppy from Dos as I don’t need to list the images and then type the image name I just select the image number from the list.
 

superjer2000

Member
Joined
May 16, 2018
Messages
10
No change to the client/MSDOS app? It detects the changed floppies without any problems?

I think I misunderstood your question at first. The DiskSwap routine does the same eject and insert process that would have happened if it was client initiated so from my testing it’s been seamless.
 

keenerb

Veteran Member
Joined
Mar 11, 2016
Messages
783
Location
Georgia, USA
I think I misunderstood your question at first. The DiskSwap routine does the same eject and insert process that would have happened if it was client initiated so from my testing it’s been seamless.

Seems like I can only use disks with less than 8 characters for a name through your local interface.
 

keenerb

Veteran Member
Joined
Mar 11, 2016
Messages
783
Location
Georgia, USA
Yes - I was just cleaning up some of the changes I made. I just used it to install Windows 2.0 - worked great.

Attached is the source and adjusted Makefile for the DiskSwap version of ethflop

The readme contains the relevant information on the changes made. Note as per the readme that the ncurses library is required.

I think I covered off the all of the required license-related elements regarding software modification - let me know @mateuszviste if anything else is to be done and thanks again for ethflop - it truly is an incredible accomplishment.

Let me know if it works for you.
I'm not able to build your package on a new Raspbian install.

gcc -O2 -std=gnu89 -lncurses ethflopd.c -o ethflopd /usr/bin/ld: /tmp/ccXmLcmW.o: in function `sigcatcher': ethflopd.c:(.text+0x74): undefined reference to `endwin' /usr/bin/ld: /tmp/ccXmLcmW.o: in function `printCurrentClients': ethflopd.c:(.text+0x1218): undefined reference to `printw' /usr/bin/ld: ethflopd.c:(.text+0x1264): undefined reference to `printw' /usr/bin/ld: ethflopd.c:(.text+0x12b4): undefined reference to `printw' /usr/bin/ld: ethflopd.c:(.text+0x12e4): undefined reference to `printw' /usr/bin/ld: /tmp/ccXmLcmW.o: in function `main': ethflopd.c:(.text.startup+0x10): undefined reference to `stdscr'

Is that an ncurses issue? I've got the same ncurses packages installed on this new 64-bit system as I had on the old 32-bit raspbian install.
 
Top