I accidentally discovered how to display color on a TI-86 while trying to write a grayscale program many years ago:


I was able to do the same thing on my TI-92+:


Both of these calculators have memory-mapped graphics, & all the programs do is write particular values into the display memory at particular times—there is no port modification going on. (Originally—the current TI-86 version pregenerates the memory contents & then changes the display offset at the appropriate rate, which does involve port modification.)

On the TI-86, each time the program starts, the red & green may be that way or swapped, but they stay in their respective places during an individual run. They flash between color & blank (lighter than the background color at that contrast level). The yellow is a checkerboard of the red & green. The blue is simply the foreground color with the contrast turned up a little.

It does not seem to be possible to have red or green in the same column as any other color, & if they do not take up the entire column, they blend with the rest of the column. This seems to preclude displaying 4-color images in this manner.

Does anyone know if this could damage the LCD? It is a cool demo, but both these calculators are discontinued, so I am disinclined to run it if there is a non-negligible risk of ruining them. (I have run the TI-86 version many times in the past for up to a few minutes at a time without any visible damage yet, but that does not guarantee anything.) I am especially wondering if this is related to the "blue line of death" or "bluescale" that are known to be potentially damaging.

EDIT: I changed the description of the yellow stripe because I located & checked the code & found I had mis-remembered.
Woah, that's cool! I don't know if it'll damage the screen, but if you can somehow find a way to do it horizontally instead of vertically, then that'll be even more impressive!
I can speculate on this with a little digging, but I'm not enough of an optics wonk to have a good answer.

One source says that early Super Twisted Nematic (STN) LCDs (generally monochrome reflective displays, like we have in calculators) had innate blue/yellow color:
Quote:
The first successful STN LCDs used a birefringence mode to create a “yellow mode” and a “blue mode.” Although the result was not optimum for general display use, it was possible to demonstrate 200:1 multiplexing with greater than 5:1 contrast ratio.
By adding another polarizer/filter to the stack, it can be made to appear black and white instead.

So "birefringence" seems like a key property. Indeed, this seems relevant to what's going on inside an LCD with regard to selective polarization and filtering to form an image. Per Wikipedia:
Quote:
Birefringence is the optical property of a material having a refractive index that depends on the polarization and propagation direction of light.

Indeed, searching Google Scholar for "lcd birefringence" yields many results, such as a surprisingly readable 1994 patent for a compensator film that improves response time.

Now for the wild speculation. If there's birefringence going on in the display, there could be particular (typically intermediate) states where the nematics in a pixel are twisted in a way that generates unusual polarization of light passing through them.

With different polarization, the birefringent properties of the nematic could yield unusual refraction such that the transmitted white light ends up polarized and refracted then filtered (by the filters designed into the LCD stackup to make it work) such that it looks red or green.

If I'm right about that, the timing is key and there might be variance in performance depending on the individual LCD, environment (temperature in particular?), and general LCD characteristics. If the color is a property of sitting nearer to interesting intermediate states for a pixel, I'd expect a slower (older technology) LCD like that on an 86 or 92 Plus to more readily exhibit this.

The column effects you see of being unable to do anything else in a red or green column and it needing to fill the whole column is probably related to the LCD driver multiplexing the pixels- it'll drive one column and all the rows in that column at a time, cycling through every column in sequence though I'm unsure why there would be so much more bleed in this mode compared to regular- maybe it's related to transistors being partially-on when they're meant to be on/off only? The inability to control which pattern is which color might be related to timing in the multiplex cycle.

I'd guess it's also not possible to get more than four colors out of this (on, off, red, green) due to how the polarizers would be set up in the LCD- one each at the top and bottom of the stack, perpendicular to each other- then the interesting twist angles of the nematics are multiples of 90 degrees. Assuming a STN display, 0° and 270° are the normal states while 90° and 180° might happen to generate reddish and greenish colors.

I'd be interested to see the specific patterns you're using (code!), since that might inform better speculation on what exactly is happening inside the LCD. It might be possible to directly probe the signals driving the LCD (coming out of the LCD controller) to get a better handle on what's happening to individual electrodes inside the display too.
It is at least possible to get a fifth color—the background color (which slightly more yellowish than the border on the TI-86 at that contrast, whereas on the 92+ it is what is visible in the non-pattern parts of the screen). Since it seems to blend the columns (e.g. the yellow being red+green), it might be possible to get more colors in the red-yellow-green range.

The colors work a lot better under sunlight than the 100W equivalent LED lighting in my bedroom, so it may depend on fairly specific spectral ranges in the illumination. (The red looks like dark maroon & the green like teal under the LED, which makes sense with LED light being bluer.)

I checked on my TI-89 Titanium, since it is much newer (using the TI-92+ version without recompiling, so it did not fit the screen very well & had a weird keypad layout). It seemed to produce brief red & green flashes with longer blank periods, but whether that was due to a faster CPU or different LCD, I know not. The colors were not visible at all under LED lighting.

I wrote the TI-86 code in hex, so it may not be particularly illuminating. The patterns are red: 00/FF, green: FF/00, yellow: AA above 55/55 above AA, & blue: FF/FF (the repeated byte values in each plane). It apparently switches planes on every other interrupt 16 times in a row, then does the reverse of that pattern 3 times in a row, then repeats. (I have no idea how I came up with that.)

The TI-92+ code is written in badly-formatted C & uses various keys to adjust the delay loop, with equal time given to each plane. I have no idea what exact delay worked for the picture (which could also explain why I could not get it to work on the TI-89 Titanium).

EDIT: If my understanding of the STN drivers & the TI-86's timing is correct, the pattern I listed above for the TI-86 is accumulating a DC bias & thus could be harmful. Or possibly (since it does keep flashing the colors rather than remaining blank) it might bleed off the excess charge faster than it accumulates. Adjusting the pattern to have net voltage of 0 over time results in the red & green swapping places repeatedly, so probably the other pattern is just suppressing the opposite-color phase by drowning it in temporary DC offset. Oops.
This is so fascinating and well documented. I'm so curious to see what you come up with regarding this next.
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement