fysnet / i440fx

i440fx BIOS source code intended for Bochs
2 stars 0 forks source link

Trying to compile new BIOS with nbasm on Linux / wine #1

Open vruppert opened 1 week ago

vruppert commented 1 week ago

When I try to compile the new BIOS with wine on Linux, the nbasm exits with the following messages. Is there a workaround for it?

0084:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005 0084:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005 0084:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005 0084:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005

NBASM The NewBasic Assembler Version 00.27.14 (64-bit) Forever Young Software(r) (C)opyright 1984-2024

Z:\home\volker\i440fx\sys_man.asm ( 59): error 21h: Symbol not defined: DATE Z:\home\volker\i440fx\sys_man.asm ( 59): error 21h: Symbol not defined: DATE Z:\home\volker\i440fx\sys_man.asm ( 59): error 23h: Type illegal in context Example --------> Most likely an undefined symbol

   Symbol space free:  5124 symbol(s), 77216 bytes name space
   Error(s) detected:  3

Diagnostic(s) offered: 0 (.diag == 0) 00dc:fixme:kernelbase:AppPolicyGetProcessTerminationMethod FFFFFFFFFFFFFFFA, 00007FFFFE1FFD50

fysnet commented 6 days ago

The ___DATE___ symbol is internal to NBASM. I will have to look into this.

I have no idea what 0084:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005 is. It looks to be WINE specific and is not an error, more of a warning(?). Try using (?):

WINEDEBUG="fixme-all" wine winecfg
vruppert commented 2 days ago

Now I tried it on Win11 and I got the same errors. I would be important for me to build the new BIOS, since I found out that booting from network bootrom fails with it and I'd like to find a fix for it.

D:\Projekte\i440fx>..\nbasm\nbasm64.exe i440fx /z

NBASM The NewBasic Assembler Version 00.27.14 (64-bit) Forever Young Software(r) (C)opyright 1984-2024

D:\Projekte\i440fx\sys_man.asm ( 59): error 21h: Symbol not defined: DATE D:\Projekte\i440fx\sys_man.asm ( 59): error 21h: Symbol not defined: DATE D:\Projekte\i440fx\sys_man.asm ( 59): error 23h: Type illegal in context Example --------> Most likely an undefined symbol

   Symbol space free:  5124 symbol(s), 77216 bytes name space
   Error(s) detected:  3

Diagnostic(s) offered: 0 (.diag == 0)

D:\Projekte\i440fx>

fysnet commented 2 days ago

I haven't had a chance to look at it yet, sorry, but I will see what is going on as soon as I get a chance. Thank you again for your efforts.

fysnet commented 2 days ago

P.S. As a work around for now, the symbol 'DATE' simply equates to the current date in 'mm/dd/yyyy' text form. Replace DATE with 10/25/2024 and it should build.

fysnet commented 1 day ago

I can't reproduce the error here. However, there is a difference. Your output is:

   Symbol space free:  5124 symbol(s), 77216 bytes name space
   Error(s) detected:  3

And my output is:

   Symbol space free:  5122 symbol(s), 77170 bytes name space
   Error(s) detected:  0

If you have not modified the source any, why does NBASM64 (on Wine) think you have two more symbols added with a combined symbol space of 46 added bytes?

If you don't mind, please add the /x parameter to the command line and send me the resulting .lst file. fys [at] fysnet [dot] net

vruppert commented 1 day ago

I ran both build tests (Linux/wine and Win11) with the unmodified source from github. I hope the .lst file helps you to find out what's going on. In the meantime I could build the BIOS with the "date-hack" and found two issues with the boot menu and boot message in the network case. The BEV code 0x80 must be changed to the string index 6. Since booting ends with an IOAPIC panic, there must be something wrong with the entry point, too.

fysnet commented 21 hours ago

The .lst file you sent did not contain the two internal symbols of ___DATE__ and ___DATE___. For some reason, which I think is due to WINE and/or Linux, might think the three underscores is an issue with UTF-8 or something like this. Some comments I found about this says to set the LANG environment variable to indicate that UTF-8 is supported.

I will look into the BEV code issue.

Thank you

fysnet commented 18 hours ago

(I tried to reply to your email, but it bounced back.)

I have no idea why the ___DATE___ is missing with your build. I compiled NBASM on a 32-bit WinXP machine and it built the bios just fine. Two different compilers, two different machines, and same results, each including the ___DATE___ symbol as expected. I have no idea why yours does not.

As for the BEV code issue, change line 346 in boot.asm from: mov boot_offset,bx to mov boot_offset,ax and see if this helps.

vruppert commented 10 hours ago

The change of the boot offset makes network boot work at the end, but before that several IOAPIC panics occur. Please try the test environment I've sent to you. Trying to build the BIOS on a different machine is a good idea. I'll have a look what I can do.