Hopefully, simply inserting some stuff to
./payloads/external/SeaBIOS/seabios/src/hw/floppy.c (lines 80-108)
should be enough, but I haven't tried ;-) By the way, at my
"multiple_floppies.patch" I'm doing this:

+ // Find the max floppy size
+ for (;;) {
+ // Find the next image.
+ file = romfile_findprefix("floppyimg/", file);
+ if (!file)
+ break;
+ filename = file->name;
+ size = file->size;
+ dprintf(3, "Found floppy file %s of size %d\n", filename, size);
+ // Check if this size is valid.
+ ftype = find_floppy_type(size);
+ if (ftype < 0) {
+ dprintf(3, "No floppy type found for ramdisk size\n");
+ } else {
+ if (size > max_size)
+ max_size = size;
+ }
+ }

That's to determine, how much memory we should allocate for the
purpose of loading the selected floppy there (allocate the maximum
floppy size - so that any selected floppy will fit there). This code
should be compatible with any new sizes as well, but let me know if
there are any problems. When you're running QEMU with -serial stdio ,
it should output those debug messages into your console, if the debug
level of these messages is higher than what's set at your SeaBIOS
config.

Best regards,
Mike Banon

On Tue, Apr 16, 2019 at 6:49 PM Rafael Send <flyingfishfin...@gmail.com> wrote:
>
> Thanks,
> I had already played with building SeaBIOS+coreboot in the "default" 
> configuration for QEMU with various common payloads.
>
> I meant I haven't gotten around to poking at the SeaBIOS code for larger 
> floppies yet :)
>
> R
>
> Mike Banon <mikeb...@gmail.com> schrieb am Di., 16. Apr. 2019, 01:39:
>>
>> You need to build a coreboot image for QEMU with SeaBIOS (master)
>> selected as the default payload. CBFS size should be increased to a
>> size large enough to contain your floppy (or floppies, btw here's a
>> patch to support multiple floppies at CBFS -
>> https://review.coreboot.org/c/coreboot/+/32238 , and you could install
>> it with this script - https://pastebin.com/raw/hv9sSuMU , more details
>> here - 
>> https://mail.coreboot.org/hyperkitty/list/seabios@seabios.org/thread/CKWLNTZU43SAHQ26USNFASORA2H5BXBE/
>> ) . After it will be compiled, you could use cbfstool to add/remove
>> floppies to/from CBFS of coreboot.rom, with LZMA compression to reduce
>> their size:
>> 1) Add: ./build/cbfstool ./build/coreboot.rom add -f
>> ./path_to/myfloppy.img -n floppyimg/myfloppy.lzma -t raw -c lzma
>> 2) Remove (e.g. to add a new version later): ./build/cbfstool
>> ./build/coreboot.rom remove -n floppyimg/myfloppy.lzma
>> 3) Print a memory map: ./build/cbfstool ./build/coreboot.rom print
>> Run this coreboot.rom by executing this QEMU command: (some floppies are 
>> 64-bit)
>> qemu-system-x86_64 -L . -m 768 -localtime -vga vmware -net nic,model=rtl8139 
>> \
>>  -net user -soundhw ac97 -bios ./coreboot.rom -boot menu=on -serial stdio
>> Best regards,
>> Mike Banon
>>
>> On Mon, Apr 15, 2019 at 6:12 PM Rafael Send <flyingfishfin...@gmail.com> 
>> wrote:
>> >
>> > I haven't gotten around to poking at SeaBIOS yet, I'm still wondering how 
>> > to test my large floppies.
>> >
>> > Syslinux appears to install to them fine, but QEMU doesn't seem to like 
>> > booting them with -fda.
>> >
>> > Do you guys have any suggestions on how to test booting the large floppy 
>> > images?
>> >
>> > Cheers,
>> > R
>> >
>> >
>> >
>> > Mike Banon <mikeb...@gmail.com> schrieb am Mo., 15. Apr. 2019, 05:35:
>> >>
>> >> Personally I think that either this guy did something incorrectly or
>> >> there's a Windows 3.1 bug. Meanwhile, Rafael's Linux-based OS is going
>> >> to boot from this floppy like it's a ramdisk, so hopefully should be
>> >> indifferent to the custom floppy sizes and would work. I share the
>> >> same hopes for KolibriOS: although its' 1.44MB floppy contains really
>> >> a LOT of stuff, some cool things like console emulators didn't fit -
>> >> so I'm going to create the extended Kolibri floppy version, which will
>> >> be either 2.88MB or some custom ( 1.44MB * X ) size.
>> >>
>> >> On Sun, Apr 14, 2019 at 6:12 PM Kevin O'Connor <ke...@koconnor.net> wrote:
>> >> >
>> >> > On Fri, Apr 12, 2019 at 11:38:52AM -0700, Rafael Send wrote:
>> >> > > Hi,
>> >> > > I'm working on stuffing a bootable Linux distro into coreboot.  In 
>> >> > > QEMU I
>> >> > > already succeded by using coreboot's built-in kernel loading 
>> >> > > mechanism, but
>> >> > > that's without SeaBIOS.
>> >> > >
>> >> > > I'd love to have it as a SeaBIOS payload so I can also boot other 
>> >> > > things,
>> >> > > but I guess I'd have to create a custom-sized floppy image for this or
>> >> > > figure out how to create an ELF payload out of a Linux kernel (I'm 
>> >> > > open to
>> >> > > either, but I wasn't able to find any documentation on the ELF 
>> >> > > method).
>> >> > >
>> >> > > The guy who put Win 3.1 in coreboot attempted the floppy method, but
>> >> > > according to his article he did not find success with this method due 
>> >> > > to
>> >> > > unknown and complex issues in the floppy-side logic of SeaBIOS.
>> >> > >
>> >> > > So, I'm making the question explicit: What would it take to support
>> >> > > custom-sized floppy images? In particular, I'm thinking of a 16MB 
>> >> > > device...
>> >> >
>> >> > My vague recollection is that various OSes had hard coded expectations
>> >> > on the types of floppy drives supported.  I did not think it would be
>> >> > easy to support a floppy size larger than 2.8MB.
>> >> >
>> >> > It is possible to emulate a hard drive in memory.  However, that would
>> >> > require code changes.
>> >> >
>> >> > Cheers,
>> >> > -Kevin
>> >> > _______________________________________________
>> >> > SeaBIOS mailing list -- seabios@seabios.org
>> >> > To unsubscribe send an email to seabios-le...@seabios.org
_______________________________________________
SeaBIOS mailing list -- seabios@seabios.org
To unsubscribe send an email to seabios-le...@seabios.org

Reply via email to