TROUBLESHOOTING

- HwTest hangs before showing any video mode on the screen. Why?

This happens when no VESA modes pass the filters, or VESA is not available or it's earlier than 1.2. Check that you have VESA 1.2 or newer, then modify filters in BootVesa.inc. You can try MCGA mode anyway, by pressing CANC. 

- I boot from floppy, I choose video mode, then the system hangs while floppy light is on. Why?

Can be an error while setting A20 line / protected mode or a floppy read error: in this case you have to eject the floppy from the drive and ... listen. If you hear the head moving with an annoying noise, then it's a read error and you should try another floppy; otherwise, it's A20 line / protected mode problem - very rare, I've never heard of it -.

- I boot from floppy, I choose video mode, then the system hangs while floppy light is off. Same when I boot from usb, hard disk or PXE. Why?

The problem might be ROM searching. Some computers make the ROM appear at F0000, some others at FFFF0000, some at both ranges. I begin ROM tables scan at FFFF0000; if I find nothing I go to F0000. Scanning non-existing memory may hang some machines: if it happens, try changing mov eax,0x000F0000 to mov eax,0xFFFF0000 at the beginning of pci.asm. If still it hangs, remove the line jz .searchagain and try again both ranges.
In case you still didn't solve the issue, there is probably a bug: please e-mail me.

- I have a Realtek 8168/8169/8101 network card but it doesn't work.

Because as of version 0.5 the driver is only for Realtek 8102E which is found, for example, in the Acer Aspire One. In fact the name for the driver is wrong, I kept the name from Etherboot one.

- I tried polled mouse changing some parameters, and it doesn't work properly. Can I fix this?

Polled serial mouse (SERIAL_INT = 0) doesn't work properly when timer interrupts are less than 150 / sec and no FIFO is enabled on the serial port (the program enables it only on NS 16550A or newer chips and compatibles, because they have a FIFO and it is known to work; very old machines might have 8250, 16450 or 16550). This is because mouse sends data at 1200 baud = 150 bytes / sec and polling the port at an inferior rate causes data loss. Polled PS/2 mouse needs a similar rate, too; anyway at inferior data rates I saw no incomplete packets, only non-fluid movement.

- I carefully wrote some graphic routines to work with HwTest LFB emulation, but the system hangs; do my code have bugs?

Not necessarily. On Linear Frame Buffer emulation I don't use additional pages, like LFBEMU does: this causes misaligned, bank-crossing accesses to enter an infinite loop page fault - instruction restart; I believe there is no need for misaligned access support. By the way, this inconvenient would be easily and efficiently solved on those few cards where Bank size > Bank granularity: here you can always have the window to entirely cover the accessed area. Problems can arise anyway with MOVS when both source and destination are in video memory but on different banks: you should change REP MOVS with a load / store loop unrolled as much as you can to minimize bank switches.

- HwTest works with all my machines except the one with a VIA AC'97 card. Is this by chance?

Might be, but the reason could also be that I chose a fixed IRQ 5 for VIA AC'97 soundcard and this may cause problems on some machines. You can of course change the value of AudioIRQ in viaac97.asm to a value that suits you (you probably have to look at the IRQ routing table).
If you don't know how to do it, you can simply exclude viaac97.asm from assembly.

- For the Cardbus section, I tried only my RealTek 8139 Cardbus card, which uses a single IO range an no memory ranges. You may have to adjust the addresses for controlling the socket and the memory / IO ranges passed to the card. The best thing is to copy this information from Windows settings using a PCI utility like Craig Hart's one.

- I slightly moved the mouse and the screen filled with garbage: is it a bug?

No, it can happen sometimes with low resolution modes which have a big vertical scrolling space. The mouse on the first move can go very deep in the screen and what you see is just uninitialized video RAM. Try to move your mouse up till you reach the top where data screen is. Though I coded mouse driver to ignore first packet received, I occasionally still see this behaviour.

- I tried a VESA menu with letters but it scrolls and I can't see all the possibilities. How can I fix this?

Setting CURSOR to 0 causes the program to assign a letter to each video mode when you have to choose it, and you can press the corresponding key ('A' for MCGA), instead of moving through modes with a cursor.
But on a machine with many video modes, it scrolls down (so the modes the first letters are assigned to disappear), and after running out of letters the program uses symbols sometimes not even related to a single key press. So why do I keep this alternative? Because it requires less machine code bytes and leaves more room in case I want to add BIOS data requests in the boot sector. If you want to use it but you have too many modes you can change the filters MINIMUM_HEIGHT and MINIMUM_DEPTH to restrict the set of modes shown.


KNOWN PROBLEMS:

- Occasionally, Intel processors halt right at the end of InitPS2Keyboard (at the RET instruction after POPF) for an external reason (code 13B). The best I could do is identify this event and signal it to the user as "Messy interrupts problem".