jart / blink

tiniest x86-64-linux emulator
ISC License
7k stars 225 forks source link

[metal] Disk I/O implementation improvements #119

Closed tkchia closed 1 year ago

tkchia commented 1 year ago
ghaerr commented 1 year ago

Hello @tkchia,

LGTM. Does blink boot an HDD with these mods?

I like the BIOS_BYTES_AT macro. That will make it easy to add BDA variables for the now operational CGA/MDA BIOS console. That code should probably use BDA variables for x,y cursor position, screen height, etc, instead of pty-x, etc.

Is there a way to stop clang-format from reformatting your BIOS tables in defbios.c? That would help if clang-format gets executed again.

Thank you!

tkchia commented 1 year ago

Hello @ghaerr,

Does blink boot an HDD with these mods?

Yes, Blinkenlights boots the FreeDOS 1.3 "lite USB" installer image all right.

Is there a way to stop clang-format from reformatting your BIOS tables in defbios.c?

No idea.

Thank you!

ghaerr commented 1 year ago

Hello @tkchia,

Blinkenlights boots the FreeDOS 1.3 "lite USB" installer image all right.

I'll have to try that once this is committed. I have continued interest in testing additional software for the CGA/MDA console. For instance, running VFRAME on the FreeDOS 1.3 floppy image doesn't display properly, it assumes an incorrect console height.

Is there a way to stop clang-format from reformatting your BIOS tables in defbios.c?

Just looked this up: supposedly // clang-format off and // clang-format on allow skipping code sections.

Thank you!

tkchia commented 1 year ago

Hello @ghaerr,

Just looked this up: supposedly // clang-format off and // clang-format on allow skipping code sections.

Thanks — that is cool to know.

tkchia commented 1 year ago

I am wondering if I should add some code to Blinkenlights to check the sector size (e.g.) in the diskette parameter table during floppy image operations (— or if I should maybe implement this as a sort of add-on in an alternate BIOS).

Such a check may help to diagnose bugs such as https://github.com/jbruchon/elks/issues/470 .

Thank you!

ghaerr commented 1 year ago

Hello @tkchia,

I am wondering if I should add some code to Blinkenlights to check the sector size (e.g.) in the diskette parameter table during floppy image operations (— or if I should maybe implement this as a sort of add-on in an alternate BIOS).

IMO, adding features that allow emulation of firmware- or hardware-specific issues we've run into in the past are probably worth it. In this case, considering the wide variety of scenarios where blink may be used to emulate a real-mode platform, adding this capability into your planned external BIOS may allow for that flexibility without dragging in strict DDPT requirements into the C handlers.

Also, this PR LGTM for commit.

Thank you!

tkchia commented 1 year ago

Hello @ghaerr,

Thanks. I think I would also like to add some regression test(s) for the new features, before merging. (This is something I should probably do more regularly.)

Thank you!