The H3000 is one of the examples that shows us that common OLED displays claiming to be HD44780 compatible are not, in several aspects.
We have three faults here:
- missing first line in most of the Soft Functions pages, caused by the fact that a Clear command (0x01) does not “home” the cursor, although the WS-0010 datasheet (the most common OLED controller) says it does
- stuck text “in ]” above Soft Key 2 that results from the firmware copying screens by reading the DDRAM and writing it back when needed, using the auto-increment function of the controller which behaves differently between HD44780 and WS0010
- wrong characters (Japanese symbols) due to the OLED having four character sets, with the needed not being default
While changing the character set is as easy as using 0x39 instead of 0x38 for the standard LCD init sequence, selecting the western european charset, the first fault already required a small subroutine that homes the cursor after clearing the screen.
I did not even try to shift around code in the EPROM to obtain the space needed for the additional home command because the disassembly gives hints that certain routines are called from without the main firmware. Instead, I modified the chip selection by fitting a larger PLD instead of the PAL16L8 used for address decoding. This way I was able to use the 256 bytes of unused space at 0x8200 for my own routines.
This was necessary especially as the second problem, the stuck text, required to replace the routines that read and write, respectively, the screen from/to the DDRAM by new code that initially reads the current internal address of the display, keeps track of it while the display is read or written, and inserts a command to re-position the cursor when the pointer would normally wrap around into the second line on a standard HD44780 display.