Category Archives: Electronics Interfacing

M-SYSTEMS DiskOnChip Programming – Hardware & Software


For the past few months I have been working on a couple of projects involving Programming and interfacing the late 90’s era flash memory devices know as the DiskOnChip.  These devices were developed by the company M-SYSTEMS before they merged with Sandisk.

As many of you know these DiskOnChip components are essentially a Flash device that appears as a standard Hard drive by the connected PC system. (Hard drive Emulation).

This was made possible by M-SYSTEMS special “TrueFFS” software controller, which is essentially a custom Flash Management Algorithm that M-Systems developed and later Patented.

There are several methods of interfacing to these Flash devices for Programming and also booting off of…. to run an OS.  Many users have used either ISA Flash cards,  or SBC boards.  (Single Board Computers).


Since The M-SYSTEMS website has been shut down for some time now, many of the links online….. to various documents, or software for the DiskOnChip are no longer functional.  I also found that not many people knew much about them or those that do, were becoming few and far between.

I took it upon myself to create a page on my Website dedicated specifically for the DiskOnChip. I explain some of the basic requirements needed, in order to program these rare Flash devices.

I have posted several links to the many scattered M-SYSTEMS Applications Notes, User Manuals, schematic diagrams


and also links to various versions of the DOS based Programming Software/Drivers.


During my research, I managed to locate some library files from an Engineering “API” Software Package used with these DiskOnChip devices. The API package was referred to as the “BDK” or BOOT DEVELOPMENT KIT.
This allows you to develop and compile your own source code, into a custom stand alone .EXE or local Script to run some very specific DiskOnChip programming and configurations.
The .exe executable files were compiled using an early version of Borland C++ along with the API libraries. Pretty Cool!!

I have tons of info, pictures and download Links on this Page of mine.
Time permitting, I’ll try to include all that I’ve collected through my R&D work on these projects.  Some pretty neat findings.

Here is the Link to my Dedicated Page:

DiskOnChip Programming – Hardware & Software

Cheers! Folks,

Kind Regards,
Gerry O’Brien

DRIVING NKK “IS01PA001” LCD SmartDisplays with ATMEL [ATMEGA88PA] Micro-Controller


Lately I’ve been messing around with these Small mini LCD display units from the Company NKK. These units are referred to as “SmartDisplays” or “SmartSwitches”.

Shown below is one of NKK’s many SmartDisplay units. The IS01PA001 is a Monochrome display with a Dual LED backlight of Yellow and Green color.

NKK IS01PA001 SmartDisplay Datasheet PDF Link:  NKK_IS01PA001_Datasheet

NKK ISO1PA001 SmartDisplay
NKK ISO1PA001 SmartDisplay

There have been many guides and Magazine articles published on the subject of interfacing and driving graphics to these great little LCD displays. However I have not been able to find a Step-by-Step Tutorial to show Students how to use these units and provide the necessary introductions to at least get started. Most of the guides I found are targeted for professional level Engineers.

So in turn I have decided to compile my own Instructional Video series with a Step-by-Step Guide on how to Drive these units using an ATMEL micro-controller.

I used various Datasheets and other online guides and or Papers to get a working platform and the necessary code to implement the Serial data communications and control signals to drive some basic graphics.

ATMEL ATMEGA88PA Micro-controller Pinouts
ATMEL ATMEGA88PA Micro-controller Pinouts
ATMEL ATMEGA88PA driving an NKK SmartDisplay.
ATMEL ATMEGA88PA driving an NKK SmartDisplay.

I will be posting this Instructional Video series on my Youtube Channel. I will also provide a PDF Guide and the required micro-controller “C” Code on a devoted page on my Website very shortly for students to view and download.

So check back soon. Fun Stuff!!






Hi Folks,

Well I finally managed to figure this all out, and put together a Full instructional video. This video series that I have put together  explains the fundamental concepts and signal requirements for driving the HD44780 LCD display unit using the VHDL hardware description language.

The  VHDL code has been compiled to be used with the Altera Cyclone II FPGA on the Altera DE2 development board. However, you can modify the code slightly to port it to other development boards or FPGA’s and CPLD’s.

In the videos I review the signal requirements using actual waveform scans from a Logic Analyzer that show the Control and 8-bit databus signals used to drive the HD44780 display through its initialization sequence and then a character display sequence for printing a custom message onto the LCD screen.

The signals scanned are all generated by a VHDL source file programmed onto an Altera Cyclone II FPGA on the Altera DE2 development board.  This VHDL file produces a 32 character message to be displayed on the HD44780 LCD screen.

After reviewing the Waveform scans I briefly go over the VHDL code step by step to explain how it all works.

I will be providing a link to a devoted webpage on my Website for this project where I will provide further images and information and also extra links to other files such as the VHDL code source file for you to download. With this, you can try and create your own custom messages on an FPGA or CPLD board of your choosing.

Gerry O’Brien

HD44780 LCD Display Interfacing with Altera FPGA & VHDL

HD44780_LCD_DISPLAY_01My latest project involves programming an Altera Cyclone II FPGA for direct control over the popular HD44780 LCD Display controller.
I am using the ALTERA DE2 development board for testing and debugging my VHDL code as this board also uses the HD44780 LCDDisplay unit.
Altera_DE2Using VHDL, we’ll be able to encode various Finite State Machines which are used to produce the specific signal timing requirements to initialize the LCD.



HD44780_LCD_DISPLAY_Write-Signal_TimingOnce initialized, we can then send HEX information over its DATA_BUS to display various ASCII characters on the display area one character at a time depending on which State is shifted and thus placing a specific Binary sequence onto the LCD’s DATA_BUS logic vector.
-==== SEND the Letter “R” to Display =====-
LCD_DATA_BUS <= X”52″;      — This Hex code displays the letter R
EDIT: I have just posted a full Video Tutorial on my website for this project, and will soon have the written procedures and VHDL code posted. Check out the Blog Post link shown below to access the Instructional video.

You can also check out the Hitachi HD4478 LCD controller datasheet for more info on the signal control requirements and functional commands.
Fun Stuff!!