Really? Thats weird as hell. I made the 7z archive using Peazip. I'll make a standard .ZIP and upload it. Sorry for any issues this might have caused anyone! Zip file coming up now!
Did you do this mod on a actual removable card, or on the on-board nic? Note, the way it is listed in the bios may very slightly. My new system (which has bios mod, was only used for demonstration purposes) shows "Network:SLIC Mod" my old Gateway simply says "SLIC Mod". How it is displayed depends on your BIOS, but either way if it is shown should work. Your board/bios might be too old or does not have the ability to do network booting. Or something else is going on. Let us know.
I'm using a removable card. The on-board nic are disable. The bios of Intel DX58SO mobo show "SLIC Mod" in first place boot, but I don't see the SLIC table using Everest, and windows 7 not activate.
Oops. I just reread your post. The PCI rom isn't the most capable of slic patchers. There might be other ones we can use instead. I've been trying to work on some experiments, but I'm currently un-bricking one of the network cards. :-\ Good luck, -truthinjection
This thread is constantly moving backwards..I make it sticky now. I have sent the source code to andyp....regarding phoenix tool development. I'm sure he has got the skills to fully understand the code and probably to improve it. The comments at source code a very useful, you may play with addresses / ranges. I had used that code several times to replace the NIC PXE code at onboard NIC devices. It's usually a part (module) of the mobo bios. You have to correct the device/vedor IDs of course and make it 8 bitsum to zero, that's all.... At Award bios it worked everytime, at Phoenix 2 times at AMI no time.... The weakness of the code is to find free space to write the SLIC..its flexibility isn't enough...the extension of RSDT to call SLIC is sometimes problematic as well...(we had the same problems at WoW7 project). Basically you can reach almost the same result when using WoW7 on a USB boot device which works like a dongle. (USB boot, first device) Also to write in the SLIC code into other wirteable / programmable devices (VGA-Bios) should be possible.... Great work so far....
Great work so far. Hopefully better code can be written to write the SLIC and make it more compatible in the future. I was able to make this work with 3 network cards (Two old Pro/100 cards and one Pro/1000) I had laying around, both work in an Award BIOS system (Unfortunately I am not 100% sure they work because I really only went as far as making sure the SLIC Mod showed up in the boot order, as the system board bios was already modified to contain SLIC 2.1). Neither card worked in either of the two HP Proliant servers I tried. I tried it in a ML150 G3 and a ML310 G5. The ML150 G3 would boot fine but did throw a few additional beeps, and did not show the SLIC Mod option to boot from. The ML310 G5 would throw up an I/O ROM error or something during boot. It also didn't show the SLIC Mod option to boot from in the BIOS. The Proliants use a bios based on a Phoenix TrustedCore BIOS, but the ML/DL3xx series uses a very different BIOS than the ML/DL1xx series, albeit still based on a Phoenix bios. I was hoping for a nice solution to give me an SLIC mod for these HP Proliant servers, but it looks like it's just not ready for that yet. Great work though!
Indeed. The PC boot process is a pretty fragile thing. Servers always seem to be more fragile than desktops, probably because they have things like "certified compatibility lists" and such. @HSChronic: I did manage to brick one of my network adapters. So, now it has a switch that controls power to its flash-rom. I was attempting to make a version of this 2K rom that can be compiled so that it includes another (Intel's normal PXE) rom appended to the end of it. That managed to create a ROM that hangs the boot process. Oh well. These were shelved PCI cards anyway, so now this one is an official "test" nic. Regarding the source code: I did learn a lot about how FASM works, though. Assembling (aka "compiling") this 2K rom is *way* easier than manually hacking the Vendor and Device ID, and zeroing the checksum. The assembled version auto-checksums itself as the last step of the assembly process. All you have to do is edit a text file, change the IDs, and then "fasm add_slic.asm" and it tells you whether it correctly assembled the ROM. Also, it wasn't done in the original "add_slic.asm", but fasm knows how to embed a binary file into the middle of the 2K rom, so you can just tell it to "file 'slic-to-use.bin'" (without the quotes) and it will include the file slic-to-use.bin from the same directory. Most ideally, this would end up being appended to a VGA rom, since just about every desktop has one of those, so it would be "free", but until we get a good working ROM that can include other ROMs, it doesn't seem likely.
One thing I found is I had some cards that are device id 1229 (vendor 8086). I used the 80861229.iba file someone else posted in this thread. I noticed he didn't change the checksum. I downloaded fasm just like you and the add_slic.asm and compiled it. I'll use this when testing again tonight. I'm still trying to catch up but why did you change it to 2k instead of the default 1.5k? I changed the ROM_BLOCK to 04h in order to change it to 2k. It also puts the checksum at the end instead of at the 1.5k mark as it is in the mod.iba file. Looks like mod.iba just has 512 bytes of 0's padded to the end. Yeah, I know, I also have to replace the SLIC in the add_slic also because this looks like an old 2.0 SLIC (the one I downloaded at least). Also, now that I'm looking at the ASM, just hexediting the mod.iba and adding an extra 512 bytes didn't probably help, as the value at offset 0x2 is still 03h and it looks like the value at 0x2 should be 04h indicating it's 4 512 byte blocks.
Definitely changing the checksum is important. Not changing this would cause most BIOSes to complain about the ROM. Sounds good. Do you have a utility to verify the checksum is 00h afterwards? I wrote a goofy little ruby script to do that myself. This was my theory behind changing the 1.5K to be a full 2K: I changed the 03H to an 04H because, from what I've always read, ROMs are supposed to exist on 2K boundaries. I was afraid certain BIOSes might read in the 2K, but with the ROM saying "03h", it would be telling the BIOS that it had 1.5K of 'valid data', but, of course, if the checksum byte is hiding at the 2K point (as it was in one of the original files that started this thread, I believe), it would technically be outside the ROM-stated "1.5K" of valid data. I changed it to 04h just to eliminate a source of potential confusion, depending on how the bios reads/loads ROMs. Sounds right. I didn't use mod.iba, since I got the source from one of the chinese forums, but as long as the checksum is zero across the valid data, you're probably good to go. What I did was use a semi-colon to rem out the old/existing slic in the source file, then added the line below to get it to pull in a binary slic file at the appropriate location: Code: file 'slic.bin' It's the value at offset 0x2 and the value in the "PCIR" header. The source file I have just sticks the same value into both locations, to keep it straight. Good luck with your ROM adventures! -truthinjection
To make the binary 8bit sum to zero just mark the entire code in e.g. winhex, calculate its 8bit hash. Then use the odd windows calculator in hex mode, byte. Enter the calculated hash (byte) and operate logical 'NOT' plus one. Modify a zero byte (at the end of code) with the result and recalculate again the hash of the binary, the result should be zero then.
Closer... Now that I've recompiled and the checksums are correct, The ML310 refuses to boot Windows. It just freezes. But it does see it as "Network card in slot 1" or something in the BIOS. The ML150 G3 sees it as "SLIC Mod" but Windows 2008 won't boot. It bluescreens on install with a Stop 0x000000A5 and states "The BIOS in this system is not fully ACPI compliant. Please contact your system vendor for an updated BIOS" Looks like it's just a problem with the injection now.
add_slic - translated and commented (rev1) Hi all, I took a stab at google translating the chinese comments in the add_slic.asm file, and making the slic it embeds an external 374-byte binary file, etc. View attachment add_slic-translated.zip It doesn't do anything more clever than the original version yet, of course, but it might be *cough* slightly easier *cough* to understand (also *shrug*) than the original english/chinese file. Of course, now it's english/google-translated-english-from-chinese, so who knows. I verified it compiled (though it may need cr/lf translation to compile under windows. let me know if it does.) I also added notes and instructions inside the file. They're much like the ones available on other stickies, etc, but I figured having them embedded wouldn't hurt. Have fun! -truthinjection
Thanks for this. I will place this in the original post, credit you and reference this post. I need to actually do this step by step myself, it would be a good educational experience for me and help me to better understand the gruntwork done behind the scenes that allows this method to work. I've never been good with advanced mathematics, so I've always avoided anything programming related like the plague since it has so much mathematics in it at times. Literature/english has always been my strong points. I think its time I quit using that "I suck at math" excuse and give it a shot. And I've always been a hands-on learner anyways!
dear @SirSilentBob, if I put my hands on an Intel Pro1000/GT card is it ok to just flash with your data provided in the first post or do I have to edit checksums,device IDs or something else? Will it work just flashing with the modified rom with the newly added SLIC ? Thanks and keep up the good work,this post is very informative