ASSEMBLING

IMPORTANT NOTE: all methods below destroy all the data in the device you are installing HwTest to.

All batch files - for Microsoft OSes - are in hwtest\cmd. Put here all the executables you need: fasm, rawrite to make floppies, mkisofs and burncdcc to make CDs. You can find them (or links to them) on the site.
Linux users: Microsoft scripts are easily translated to Linux ones. Use Linux versions for fasm and mkisofs, substitute rawrite with dd, burncdcc with your favourite burning software (cdrtools has mkisofs too). Remember to unmount floppy and pendrive before writing with dd.

You can generate your own microcode updates file using the Microcode update utility found on the site: name the file micro.dat and put it on the Data directory.

FLOPPY:
- Run makeflop and follow onscreen instructions. You can have as many different floppy images as you like to quickly test different parameters: just modify makeflop.bat accordingly. I made two as an example, only floppy1.asm will be written to floppy disk.
In OctaOS:
- open FView
- chose a file in hwtest\build\ and assemble it pressing the right arrow key
- select the newly created .bin and copy it (from menu: aplic -> copy)
- insert the floppy to be written
- go to \\FD\A (if A is the drive you choose) and unmount it
- select Rawrite from the menu

CD:
- Put all the files you want in the CD in the CDImage directory
- run makecd.bat to create a CD ISO image in hwtest\temp and burn (under Windows) it to disc. You can have many cdflopX.asm to build multiple images in the CD, see above in the floppy section.

PENDRIVE:
- Run makeflop; when asked to insert a floppy press CTRL+C and close the DOS window
- write the harddisk image to the pendrive. Best way I think is using dd under Linux, but you can use any program which writes directly to pendrive blocks, such as R-Studio or dd for Windows.
Actually the pendrive image can work with any disk supporting LBA, but I don't expect anyone to install HwTest on a bootable hard disk, thus destroying its contents. If you want to do it, go ahead.

You can use the following switches when building the program:

- Menu switches in bootvesa.inc: they only affect initial menu, no need to touch them for testing the hardware:
CURSOR: 1 = select video mode highlighting its data and pressing ENTER; 0 = a key is associated to each video mode and you press one to select it
MINIMUM_HEIGHT, MINIMUM_DEPTH: filters to reduce the list of selectable video modes 

- External switches:
BANKSWITCH_SAFE(LFBemul.asm): 0 = most efficient video BIOS bank switching for straightforward functions like Trident's; 1 = less efficient but safest for cumbersome functions like ATI Radeon 9200. See comments
KEYB_INT(ps2.asm): 1 = IRQ 1 is allocated to keyboard; 0 = IRQ 1 is unused 
PSMOUSE_INT(ps2.asm): 1 = IRQ 12 is allocated to ps/2 mouse; 0 = IRQ 12 is unused
SERIAL_INT(SerPorts.asm): 1 = IRQ 4 (3 for COM2) is allocated to serial mouse; 0 = IRQ 4 is unused
PICTURE(DrawInit.asm, End.asm): 1 = insert an image in the program to be displayed in 8 bit modes; 0 = no image
PS2_EMULATION(usb.asm): 1 = keep OHCI PS/2 emulation when present and probably lose OHCI test; 0 = disable possible emulation and let OHCI test
