added doc files, test for display
[dcpu16] / docs / lem1802.txt
diff --git a/docs/lem1802.txt b/docs/lem1802.txt
new file mode 100644 (file)
index 0000000..4db2f42
--- /dev/null
@@ -0,0 +1,106 @@
+NE_LEM1802 v1.0\r
+    \r
+                                     \ |  ___ \r
+                                   |\ \|  ___  \r
+                                   | \\r
+\r
+                                 NYA ELEKTRISKA\r
+                             innovation information\r
+\r
+\r
+\r
+\r
+DCPU-16 Hardware Info:\r
+    Name: LEM1802 - Low Energy Monitor\r
+    ID: 0x7349f615, version: 0x1802\r
+    Manufacturer: 0x1c6c8b36 (NYA_ELEKTRISKA)\r
+\r
+\r
+Description:\r
+    The LEM1802 is a 128x96 pixel color display compatible with the DCPU-16.\r
+    The display is made up of 32x12 16 bit cells. Each cell displays one\r
+    monochrome 4x8 pixel character out of 128 available. Each cell has its own\r
+    foreground and background color out of a palette of 16 colors.\r
+    \r
+    The LEM1802 is fully backwards compatible with LEM1801 (0x7349f615/0x1801),\r
+    and adds support for custom palettes and fixes the double buffer color\r
+    bleed bug. \r
+    \r
+\r
+Interrupt behavior:\r
+    When a HWI is received by the LEM1802, it reads the A register and does one\r
+    of the following actions:\r
+    \r
+    0: MEM_MAP_SCREEN\r
+       Reads the B register, and maps the video ram to DCPU-16 ram starting\r
+       at address B. See below for a description of video ram.\r
+       If B is 0, the screen is disconnected.\r
+       When the screen goes from 0 to any other value, the the LEM1802 takes\r
+       about one second to start up. Other interrupts sent during this time\r
+       are still processed.\r
+    1: MEM_MAP_FONT\r
+       Reads the B register, and maps the font ram to DCPU-16 ram starting\r
+       at address B. See below for a description of font ram.\r
+       If B is 0, the default font is used instead.\r
+    2: MEM_MAP_PALETTE\r
+       Reads the B register, and maps the palette ram to DCPU-16 ram starting\r
+       at address B. See below for a description of palette ram.\r
+       If B is 0, the default palette is used instead.\r
+    3: SET_BORDER_COLOR\r
+       Reads the B register, and sets the border color to palette index B&0xF\r
+    4: MEM_DUMP_FONT\r
+       Reads the B register, and writes the default font data to DCPU-16 ram\r
+       starting at address B.\r
+       Halts the DCPU-16 for 256 cycles\r
+    5: MEM_DUMP_PALETTE\r
+       Reads the B register, and writes the default palette data to DCPU-16\r
+       ram starting at address B.       \r
+       Halts the DCPU-16 for 16 cycles\r
+\r
+\r
+Video ram:\r
+    The LEM1802 has no internal video ram, but rather relies on being assigned\r
+    an area of the DCPU-16 ram. The size of this area is 386 words, and is\r
+    made up of 32x12 cells of the following bit format (in LSB-0):\r
+        ffffbbbbBccccccc\r
+    The lowest 7 bits (ccccccc) select define character to display.\r
+    ffff and bbbb select which foreground and background color to use.\r
+    If B (bit 7) is set the character color will blink slowly.\r
+    \r
+\r
+Font ram:\r
+    The LEM1802 has a default built in font. If the user chooses, they may\r
+    supply their own font by mapping a 256 word memory region with two words\r
+    per character in the 128 character font.\r
+    By setting bits in these words, different characters and graphics can be\r
+    achieved. For example, the character F looks like this:\r
+       word0 = 1111111100001001\r
+       word1 = 0000100100000000\r
+    Or, split into octets:\r
+       word0 = 11111111 /\r
+               00001001\r
+       word1 = 00001001 /\r
+               00000000\r
+    \r
+\r
+Palette ram:\r
+   The LEM1802 has a default built in palette. If the user chooses, they may\r
+   supply their own palette by mapping a 16 word memory region with one word\r
+   per palette entry in the 16 color palette.\r
+   Each color entry has the following bit format (in LSB-0):\r
+       0000rrrrggggbbbb\r
+   Where r, g, b are the red, green and blue channels. A higher value means a\r
+   lighter color.\r
+   \r
+\r
+A message from Ola:\r
+   Hello!\r
+   \r
+   It is fun to see that so many people use our products. When I was a small\r
+   boy, my dad used to tell me "Ola, take care of those who understand less\r
+   than you. Lack of knowledge is dangerous, but too much is worse". \r
+   Here at Nya Elektriska have we always tried to improve mankind by showing\r
+   them the tools required to improve and reach their true potential.\r
+   Together, you will wake up in time.\r
+   \r
+   - Ola Kristian Carlsson
\ No newline at end of file