Hardware Programming Examples
Assembler (i386) modules to show how to DIRECTLY access PC hardware - UPDATED ON 08-10-2019

If you are writing an operating system or a game or want to bypass all the bloat and bugs of today's system software for any reason, this software can help you.

It's a collection of examples written in FASM on how to drive the most important parts of PC i386 hardware (PS/2, PCI, video, USB, ethernet ...).

2019 Update: unfortunately nowadays there are often operating systems at lower level than the conventional one: they normally reside in chipsets and can be full versions of MINIX for example. The first widespread such thing I know of is inside OHCI and can be disabled, but the modern ones in general cannot. Also UEFI does not shut off completely after boot.

So you are most likely writing sytsem software on top of other system software :(

BE SURE TO READ README.TXT BEFORE TRYING IT!

Download HwTest 0.7 in 7zip format

For reference only, here are older (buggy) versions (0.2, 0.3 are written in NASM):

HwTest 0.6 - HwTest 0.5

HwTest 0.4 - HwTest 0.3 - HwTest 0.2

WINDOWS STUFF TO USE WITH HWTEST: 

To write raw disk images to floppy: rawrite.com

To test UDP data transfers (thanks to www.fpga4fun.com): UDP.exe 

To convert selected Intel microcode updates to binary format (04-07-2009): Microcode.7z

MS-DOS version of Mkisofs with help file: mkisofs.7z

To burn CD/DVDs: BURNCDCC.7z


LINKS:

FASM assembler site

OctaOS operating system

Menuet operating system

Dex OS operating system


PATCH FOR HARD DISKS WITH DAMAGED SECTOR 0 (updated on 10-4-2008)

If you have DOS or Windows 98 and your hard disk has a bad sector 0, you may find useful this patch:

Download badsec0 in 7-zip format