Make your own free website on


About Me | PC parallel port | Sanos Universal Programmer | Contact Me | Interesting javascript code
SANOS's software and hardware page
Free Universal Programmer for hardware devices

This page has been last updated on September 12th, 2002

For any remarks, bug reports, questions, etc, feel free to write me at
Come visit my new site
All updates are there!!!
This page won't be updated any longer.
New visitors: before downloading, send me an email so I can add you to my distribution list, for updates, critical changes, etc.


This page is dedicated to my SANOS UNIVERSAL PROGRAMMER project. The entire project is written using Borland Delphi, except for the parallel port drivers. The aim is to use this software to program all programmable devices (microcontrollers, memories (Flash, EEPROM) etc) using the parallel port and a specific hardware interface.
The software is divided in several parts:
- a general programming interface, implementing commands and data management;
- two parallel port drivers, one for Win95/98/Me and one for Win NT/2000/XP
- programming plug-ins, defining a set of hardware devices that it programs, using a specific hardware interface. All specific management is defined inside these plugins.
The complete source code has not been and probably will not be released, mainly because the maintenance task is quickly growing up and a decentralized maintenance will be very difficult to manage.
However, since the main idea is to make a collection of as many plugins and hardware interfaces as possible in order to implement programming for as many hardware devices as possible, some code skeletons and examples will be released, if this code can be of a wide interest.
Eventual third-party plugins will be maintained and tested solely by their creators. It will be their choice if they will want to release sources or not, or if the plugin will be freeware, shareware, mailware, *ware or commercial.
I am willing to modify the programming interface to adapt to new features not yet present and to host their plugins on this site or to create links to their sites if this is their wish.

I hope you will find the project interesting enough to start writing plugins for the hardware devices you are interested in programming, so other people could benefit too.
I am reminding to all interested people that this project is built, maintained and updated BEFORE or AFTER work hours. This is why the delays are sometimes longer than I wish. However I do my best to keep updates at reasonable intervals.

Current Status

The programmer interface is 100% done (until new features will require its change). It is multilanguage (English, French, Romanian and Italian implemented so far). It also features an online HTML help, available only in English.
Five plugins were written this far, implementing programming for:
- Atmel AVRs (Low-voltage serial programming);
- Atmel AVRs (Hi-Voltage Serial programming - this one was a bitch);
- Atmel AVRs (Hi-Voltage parallel programming);
- Microchip/Atmel/etc. I2C EEproms;
- Microwire EEproms.
Make sure you read the SDK documentation if you want to start writing your own plug-ins. The Atmel AVR Low-voltage serial plugin comes with full sources as a programming example.
The new version features a detailed documentation in compiled HTML format, parallel port checkup directly from the interface, serial numbering for mass-production cloning (7 bytes available), etc.
Installation and uninstallation was automated and the distribution was reduced to only one auto-installing archive made up of nine volumes.
All the interface and plugins were rewritten to accept C-written plugins, and their call declaration was changed from register to stdcall.
Starting version, scripting was implemented.
Many thanks to all the users who have reported all kind of things, their words improved the code dramatically.

Wish List

The first wish is to change the interface completely, in order to make the access to the hardware integrated into the Windows environment, like the software that comes with the card readers (Smartmedia, etc) :
Insert the hardware interface and a special service will make available one, two or several drives with direct R/W access to the device (memory, MCU, etc). The device is identified with an unique code, and all plugins will have to have a supplementary function which will show which plugin works with which interface. The service will scan all plugins to see if it finds one that works with the programming interface inserted into the parallel port, and if it finds one, it will ask that particular plugin how many drives it should create and also their dimensions, based on the device inserted into the programming interface.
I thought to create a limited number of drives, e.g. for an AVR three would be required:
- one for the Flash area;
- one for the EEprom area (if the AVR has an EEprom area);
- one for the lock and fuse bits;
In order to implement this interesting features, I still need information about how to write the following (in Delphi):
- services (I have basic info on this);
- how to create and destroy drives using Windows API;
Should you have this info and/or links to pertaining materials, feel free to write me.

Info On Sanos Plugins

                 SANAVRLoVSer SANAVRHiVSer  SANAVRPar
-ATtiny10             N            Y            N
-ATtiny11             N            Y            N
-ATtiny12             Y            Y            N
-ATtiny15L            Y            Y            N
-ATtiny28L            N            N            Y 
-AT90S1200            Y            N            Y
-AT90S2313            Y            N            Y
-AT90S2323            Y            Y            N
-AT90S2343            Y            Y            N
-AT90S2333            Y            N            Y
-AT90S4433            Y            N            Y
-AT90S4414            Y            N            Y
-AT90S8515            Y            N            Y
-AT90S4434            Y            N            Y
-AT90C8534            N            N            Y
-AT90S8535            Y            N            Y
-ATmega8              Y            N            Y
-ATmega16             Y            N            Y
-ATmega64             Y            N            Y    
-ATmega103            Y            N            Y    
-ATmega128            Y            N            Y    
-ATmega161            Y            N            Y    
-ATmega163            Y            N            Y    
-ATmega323            Y            N            Y    

The new SanI2CEEP.dll plugin supports programming the following I2C EEproms:
  • 24xx00    (  16   bytes I2C EEprom)
  • 24xx01    (128   bytes I2C EEprom)
  • 24xx02    (256   bytes I2C EEprom)
  • 34xx02    (256   bytes I2C EEprom, Software WP)
  • 24xx04    (512   bytes I2C EEprom)
  • 24xx08    (  1  kbyte  I2C EEprom)
  • 24xx09    (  2  kbytes I2C EEprom)
  • 24xx16    (  4  kbytes I2C EEprom)
  • 24xx21    (128   bytes I2C EEprom, Dual Mode)
  • 24xx22    (256   bytes I2C EEprom, VESA E-EDID )
  • 24xx24    (256   bytes I2C EEprom)
  • 24xx25    (256   bytes I2C EEprom)
  • 24xx32    (  4  kbytes I2C EEprom)
  • 24xx41    (128   bytes I2C EEprom, Dual Mode, Data Port )
  • 24xx41    (512   bytes I2C EEprom, Dual Mode, MCU Port )
  • 24LCS52   (256   bytes I2C EEprom, Software WP )
  • 24LCS61  (128   bytes I2C EEprom, Software Addressable )
  • 24LCS62  (256   bytes I2C EEprom, Software Addressable )
  • 24xx64    (  8  kbytes I2C EEprom)
  • 24xx128  (  16  kbytes I2C EEprom)
  • 24xx164  (  16  kbytes I2C EEprom)
  • 24xx256  (  32  kbytes I2C EEprom)
  • 24xx512  (  64  kbytes I2C EEprom)
  • 24xx515  (  64  kbytes I2C EEprom)
  • 24xx1024 ( 128  kbytes I2C EEprom)
  • The new SanMicrowire.dll plugin supports programming the following Microwire EEproms:
  • 93xx06
  • 93xx46
  • 93xx56
  • 93xx66
  • 93xx76
  • 93xx86
  • Download area

    In this area you can find all the information you need, links, etc.
    Because files other than .zip and .exe can't be downloaded using Tripod techniques, I have renamed all the files with a .zip extension. These files are NOT zip archives and you should run the provided batch file (sanprgsetup.bat) in the directory where you have dowloaded the files.
    Sorry for the inconvenience.

    If you would like this software to be in your own language, download the strings below, translate them and send them back to me (the Excel file will be enough) However if the date of the strings list and that of the distribution do not match (and they usually don't), write me and I'll build the latest up2date strings list.


    Parallel port hardware monitor

    One installation package for
    all the software (9x600kb archives).
    - the programming interface;
    - all Sanos plugins & necessay files;
    - SDK for new plugins;
    - readme with the revisions history;
    - schematics in Eagle 4 format;
    - all language modules.
    Do not unzip the files. Instead
    run the batch file in the same
    directory as the other archives.

    Strings to translate into a new language

    CADSoft Site  - you can get here a free personal license

    ATMEL's official site

    AVR freaks site

    Microchip's site

    File to download or link






    Last updated

    Verified March 26th, 2002

    June 8th, 2002

    April 18th, 2002

    Visitors since February 5th, 2002