{"id":314,"date":"2009-02-22T13:43:54","date_gmt":"2009-02-22T12:43:54","guid":{"rendered":"http:\/\/www.evertdekker.com\/wp\/?p=314"},"modified":"2023-01-03T15:52:40","modified_gmt":"2023-01-03T14:52:40","slug":"max7456-video-overlay","status":"publish","type":"post","link":"https:\/\/evertdekker.com\/wp\/?p=314","title":{"rendered":"Max7456 video overlay"},"content":{"rendered":"<hr \/>\n<p>The Max7456 from Maxim is a monochrome video overlay chip. With this you can overlay text and simple graphics over your PAL or NTSC video signal. You can also use it with no overlay, just like a simple monitor.<\/p>\n<div class=\"n2_ss_slider_publish__option_code\" dir=\"ltr\" data-mode=\"id\"><\/div>\n<p>Included in this sample is a tutorial how you cam make your own characters with my converter tool. This tool converts the Maxim mcm files to Bascom data lines.<\/p>\n<p>&nbsp;<\/p>\n<h4>Syntax<\/h4>\n<p><span style=\"color: #3366ff;\">Videotext<\/span> string, y , x<\/p>\n<h4>Remarks<\/h4>\n<table class=\"alignleft\" style=\"border-color: #000000;\" border=\"2\" cellspacing=\"2\" cellpadding=\"2\">\n<tbody>\n<tr>\n<td>\u00a0String<\/td>\n<td>\u00a0String to be displayd<\/td>\n<\/tr>\n<tr>\n<td>\u00a0y<\/td>\n<td>\u00a0Constant or variable with y position.<\/td>\n<\/tr>\n<tr>\n<td>\u00a0x<\/td>\n<td>\u00a0Constant or variable with x position.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>There are some controle characters implanted to controle (part of) the string.<br \/>\nAscii 133=start blinking text, 134= stop blinking text<br \/>\nAscii 131=enable the background, 132= disable the background<br \/>\nAscii 135=invert text, 136= non-inverted text<br \/>\nIn Bascom it&#8217;s easy to use this with {133} option, like:<br \/>\nVideotext &#8220;{133}Flashing text{134}&#8221;, 9 , 0<\/p>\n<p>&nbsp;<\/p>\n<h4>Syntax<\/h4>\n<p><span style=\"color: #3366ff;\">Rowbrightness<\/span> row, brightness<\/p>\n<h4>Remarks<\/h4>\n<table class=\"alignleft\" style=\"border-color: #000000;\" border=\"2\" cellspacing=\"2\" cellpadding=\"2\">\n<tbody>\n<tr>\n<td>Row<\/td>\n<td>\u00a0Row number to change 1-13 for NTSC , 1-16 for PAL<\/td>\n<\/tr>\n<tr>\n<td>Brightness<\/td>\n<td>&amp;B0000xx11 Character Black Level in % of OSD white level<br \/>\n00 = 0% 01 = 10% 10 = 20% 11 = 30%<br \/>\n&amp;B000011xx Character White Level\u00a0 in % of OSD white level<br \/>\n00 = 120%\u00a0 01 = 100%\u00a0 10 = 90% 11 = 80%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h4>Syntax<\/h4>\n<p><span style=\"color: #3366ff;\">Writecustomcharacter<\/span> Characters<\/p>\n<h4>Remarks<\/h4>\n<table class=\"alignleft\" style=\"border-color: #000000;\" border=\"2\" cellspacing=\"2\" cellpadding=\"2\">\n<tbody>\n<tr>\n<td>Characters<\/td>\n<td>\u00a0Number of characters theat need to be programmed in the VRAM<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Because the max7456 has NVM memory (eeprom) the writecustomercharacter routine only needs to be used one&#8217;s. The custom characters wil be left in the NVM memory even after power lost.<\/p>\n<p>&nbsp;<\/p>\n<h3>Downloads<\/h3>\n<p><a href=\"http:\/\/evertdekker.com\/Joomla\/images\/stories\/CodeVault\/Max7456osd\/OsdVideoOverlay_demo.bas\">Sample Bascom code<\/a> , same as below<br \/>\n<a href=\"http:\/\/evertdekker.com\/Joomla\/images\/stories\/CodeVault\/Max7456osd\/7456R11.ZIP\">Maxim&#8217;s evaluation kit software<\/a> , needed to edit the character table<br \/>\n<a href=\"http:\/\/evertdekker.com\/Joomla\/images\/stories\/CodeVault\/Max7456osd\/Max7456ConverterSetup.zip\">Converter tool<\/a> , to convert the mcm file.<br \/>\n<a href=\"http:\/\/evertdekker.com\/Joomla\/images\/stories\/CodeVault\/Max7456osd\/Max7456%20Converter.pdf\">Converter manual<\/a><br \/>\n<a href=\"http:\/\/evertdekker.com\/Joomla\/images\/stories\/CodeVault\/Max7456osd\/Max7456ConverterSource.zip\">Source code<\/a> of the converter tool in VB6<\/p>\n<p>And for the people who want to take it a step further, <a href=\"http:\/\/cascade.dyndns.org\/%7Ecascade\/scripts\/max7456\/\">here a nice site<\/a> (In German language) where is showed how to make your own graphics.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Update:<\/strong> 2009-03-24, Bug in the Bascom code and in the Converter tool, both fixed .<br \/>\n-Bascom: Max7456 was disabled in the Writecustomcharacter sub routine, but not enabled at the end of the sub.<br \/>\n-Converter tool: loops in exportarray was counting to 56 instead of 54, removed the loops and made fixed lines.<\/p>\n<p>Example:<\/p>\n<pre class=\"brush: vb; gutter: true\">&#039;=================================================\r\n&#039;=           MAX7456 Video overlay Demo          =\r\n&#039;=            By EvertDekker.com 2009            =\r\n&#039;= Created with Bascom-Avr: 1.11.9.3.001 license =\r\n&#039;=          No copyright for private use         =\r\n&#039;=                 Version 1.1                   =\r\n&#039;=================================================\r\n\r\n$regfile = &quot;m128def.DAT&quot;\r\n$crystal = 7372800\r\n$baud = 19200\r\n$hwstack = 75\r\n$swstack = 75\r\n$framesize = 50\r\n\r\nConfig Spi = Hard , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 16 , Noss = 0       &#039;Setup the hardware spi\r\nSpiinit                                                     &#039;Init the spi bus\r\n\r\n&#039;=== Dimension ===\r\nDim Temp As Byte , Lus As Byte\r\nDim Regaddr As Byte\r\nDim Regdata As Byte\r\nDim Buffer(2) As Byte\r\n\r\nDeclare Sub Initmax7456()\r\nDeclare Sub Videotext(byval Text As String , Byval Ypos As Byte , Byval Xpos As Byte)\r\nDeclare Sub Writereg(byval Regaddr As Byte , Byval Regdata As Byte)\r\nDeclare Sub Rowbrightness(byval Row As Byte , Byval Brightness As Byte)\r\nDeclare Sub Writecustomcharacter(byval Characters As Byte)\r\n\r\n&#039;=== Const ===\r\nConst Vm0 = &amp;H00                                            &#039;Video mode 1\r\nConst Vm1 = &amp;H01                                            &#039;Video mode 2\r\nConst Hos = &amp;H02                                            &#039;Horizontal Offset\r\nConst Vos = &amp;H03                                            &#039;Vertical Offset\r\nConst Dmm = &amp;H04                                            &#039;Display Memory Mode\r\nConst Dmah = &amp;H05                                           &#039;Display Memory Address High\r\nConst Dmal = &amp;H06                                           &#039;Display Memory Address Low\r\nConst Dmdi = &amp;H07                                           &#039;Display Memory Data In\r\nConst Cmm = &amp;H08                                            &#039;Character Memory Mode\r\nConst Cmah = &amp;H09                                           &#039;Character Memory Address High\r\nConst Cmal = &amp;H0A                                           &#039;Character Memory Address Low\r\nConst Cmdi = &amp;H0B                                           &#039;Character Memory Data In\r\nConst Osdm = &amp;H0C                                           &#039;Osd Insertion Mux\r\nConst Osdbl = &amp;H6C                                          &#039;OSD Black Level\r\nConst Readreg = &amp;H80                                        &#039;Read register = register + &amp;H80\r\nConst Status_read = &amp;HA0                                    &#039;Status register\r\nConst True = 1\r\nConst False = 0\r\n\r\n&#039;=== Main ===\r\nInitmax7456                                                 &#039;Init the Max7456\r\nWaitms 100\r\nWritecustomcharacter 3                                      &#039;Write the customcharacters to the MAX7456 NVM, this has only need to be done one&#039;s. This line and data can be removed after that.\r\n\r\nDo\r\nVideotext &quot;HELLO WORLD&quot; , 1 , 8                             &#039;Demo of the various possibilitys\r\nVideotext &quot;MAX7456 Video overlay&quot; , 3 , 3\r\nVideotext &quot;Code written with Bascom-avr&quot; , 4 , 0\r\nVideotext &quot;By Evertdekker.com&quot; , 5 , 5\r\nVideotext &quot;{133}Flashing text{134}&quot; , 9 , 0                 &#039;{133}=start blinking text, {134}= stop blinking text\r\nVideotext &quot;{131}WITH BACKGROUND{132}&quot; , 10 , 0              &#039;{131}=enable the background, {132}= disable the background\r\nVideotext &quot;{135}Inverted TEXT{136}&quot; , 11 , 0                &#039;{135}=invert text, {136}= non-inverted text\r\nVideotext &quot;Adjust rowbrightness&quot; , 12 , 0\r\nVideotext &quot;INCLUDE CUSTOM CHARS: + &quot; , 7 , 0\r\n&#039;Rowbrightness 12 , &amp;B00001111                               &#039;Change the row brightness, see the SUB for the usage discription\r\nWait 5\r\nLoop\r\nEnd\r\n\r\n&#039;=== Subroutines===\r\nSub Initmax7456()\r\nWritereg Vm0 , &amp;B01001100\r\n&#039;01001000 ; 0 , 1=PAL, 00=Auto Sync, 1=Enable OSD, 0=Enable OSD always, 0=SW Reset, 0=Enable Video Buffer\r\nWritereg Vm1 , &amp;B01111111\r\n&#039;00010100 ; 0 = NA, 001=Background MODE Brightness 7%, 11=Blinking Time 160ms, 00=Blinking Duty Cycle BT:BT\r\nWritereg Dmm , &amp;B01000000\r\n&#039;01000000 ; 0=NA, 1=8bit operation,\r\nWritereg Hos , &amp;B00011111\r\n&#039;00011111 ; 00=NA, 00000000 = Farthest left (-32 pixels),00100000 = No horizontal offset, 00111111 = Farthest right (+31 pixels)\r\nWritereg Vos , &amp;B00010000\r\n&#039;00010000 ; 000=NA, 00000000 = Farthest up (+16 pixels), 00010000 = No vertical offset, 00011111 = Farthest down (-15 pixels)\r\nEnd Sub\r\n\r\nSub Videotext(byval Text As String , Byval Ypos As Byte , Byval Xpos As Byte)\r\nLocal Charcount As Byte , Tempstring As String * 1 , Tempbyte As Byte , Position As Word , Chars As Byte , Controlcharcount As Byte , Attribute As Byte\r\nControlcharcount = 0 : Attribute = 0                        &#039;Set the local variable to zero\r\nCharcount = Len(text) - 1                                   &#039;Count the number of characters in the string minus, because we must start at 0\r\nFor Chars = 0 To Charcount                                  &#039;do the loop as much as there are characters\r\n Position = Ypos * 30                                       &#039;Position where the characters must be showed 30=characters per line\r\n Position = Position + Xpos                                 &#039;Position + the xpos\r\n Position = Position + Chars                                &#039;Position + the charactercount that&#039;s handled this loop\r\n Position = Position - Controlcharcount                     &#039;There was a controle charater, deduct from the charactercount because it must not be handled as real character\r\n Regdata = High(position)                                   &#039;Put the highbyte of position in the regdatabuffer\r\n Writereg Dmah , Regdata                                    &#039;Write the data to the register\r\n Regdata = Low(position)                                    &#039;Put the lowbyte of position in the regdatabuffer\r\n Writereg Dmal , Regdata                                    &#039;Write the data to the register\r\n  Tempbyte = Chars + 1                                      &#039;Need the character position from the textstring\r\n Tempstring = Mid(text , Tempbyte , 1)                      &#039;Take out 1 character that we need to handle now\r\n Tempbyte = Asc(tempstring)                                 &#039;Get the ascii value of this character\r\n  If Tempbyte &lt; 130 Then                                    &#039;Character larger then 130 are controle characters\r\n   Tempbyte = Tempbyte - 32                                 &#039;Max7456 character table starts at &amp;H00, so deduct 32 to get it even with the ascii table\r\n   Regdata = Lookup(tempbyte , Characterslookup)            &#039;Lookup the character from the datatable\r\n   Writereg Dmdi , Regdata                                  &#039;Write the data to the DisplayMemory register\r\n  Else\r\n   Incr Controlcharcount                                    &#039;It&#039;s a controle character, increase the counter\r\n   If Tempbyte = 131 Then Set Attribute.7                   &#039;Set the local background bit in the character attribute\r\n   If Tempbyte = 132 Then Reset Attribute.7                 &#039;Reset the local background bit\r\n   If Tempbyte = 133 Then Set Attribute.6                   &#039;Set the blink bit\r\n   If Tempbyte = 134 Then Reset Attribute.6                 &#039;Reset the blink bit\r\n   If Tempbyte = 135 Then Set Attribute.5                   &#039;Set the inverse bit\r\n   If Tempbyte = 136 Then Reset Attribute.5                 &#039;Reset the inverse bit\r\n  End If\r\n Regdata = High(position)                                   &#039;Put the highbyte of position in the regdatabuffer\r\n Regdata = Regdata Or &amp;B00000010                            &#039;Set bit1 for the character attribute\r\n Writereg Dmah , Regdata                                    &#039;Write the data to the register\r\n Regdata = Low(position)                                    &#039;Put the lowbyte of position in the regdatabuffer\r\n Writereg Dmal , Regdata                                    &#039;Write the data to the register\r\n Writereg Dmdi , Attribute                                  &#039;Write the attribute to the DisplayMemory register\r\nNext Carcount\r\nEnd Sub\r\n\r\n\r\nSub Writecustomcharacter(byval Characters As Byte)\r\n Local Count As Byte\r\n  Restore Customcharacter                                   &#039;Goto the begin of the data\r\n For Count = 1 To Characters                                &#039;Number of characters that need to be programmed, must match with the characters in the data\r\n  Writereg Vm0 , &amp;B01000100                                 &#039;Disable osd\r\n  Read Regdata                                              &#039;Read the first databyte, is the character to will be programmed\r\n  Writereg Cmah , Regdata                                   &#039;Write to the register\r\n  For Lus = 0 To 53                                         &#039;Each Character is made of 54bytes\r\n       Writereg Cmal , Lus                                  &#039;Write the byteno of the character\r\n       Read Regdata                                         &#039;Read the data from the datatable\r\n       Writereg Cmdi , Regdata                              &#039;program the data in the shadowram\r\n  Next Lus\r\n  Writereg Cmm , &amp;HA0                                       &#039;Copy shadowram to NVram\r\n  Waitms 200                                                &#039;Wait until copy is ready\r\n Next Count\r\n  Writereg Vm0 , &amp;B01001100                                 &#039;enable osd\r\nEnd Sub\r\n\r\nSub Rowbrightness(byval Row As Byte , Byval Brightness As Byte)\r\nIf Brightness &gt; &amp;B00001111 Then Brightness = &amp;B00001111     &#039;B0000xx11 Character Black Level in % of OSD white level 00 = 0% 01 = 10% 10 = 20% 11 = 30%\r\nRegaddr = &amp;H10 + Row                                        &#039;B000011xx Character White Level  in % of OSD white level 00 = 120%  01 = 100%  10 = 90% 11 = 80%\r\nRegdata = Brightness\r\nWritereg Regaddr , Regdata\r\nEnd Sub\r\n\r\nSub Writereg(byval Regaddr As Byte , Byval Regdata As Byte)\r\n Buffer(1) = Regaddr                                        &#039;Put both bytes in the array\r\n Buffer(2) = Regdata\r\n Spiout Buffer(1) , 2                                       &#039;Shift the array out the SPI\r\nEnd Sub\r\n\r\n\r\nCharacterslookup:\r\n&#039;Convert the ascii table to the Max7456 table. (Not excist) are characters that are not in the MAX7456 table and will show a ? (&amp;H42)\r\nData &amp;H00                                                   &#039;32 Space\r\nData &amp;H42                                                   &#039;33 !  (not excist)\r\nData &amp;H48                                                   &#039;34 &quot;&quot;\r\nData &amp;H42                                                   &#039;35 # (not excist)\r\nData &amp;H42                                                   &#039;36 $ (not excist)\r\nData &amp;H42                                                   &#039;37 % (not excist)\r\nData &amp;H42                                                   &#039;38 &amp; (not excist)\r\nData &amp;H47                                                   &#039;39 &#039;\r\nData &amp;H3F                                                   &#039;40 (\r\nData &amp;H40                                                   &#039;41 )\r\nData &amp;H42                                                   &#039;42 * (not excist)\r\nData &amp;H50                                                   &#039;43 + (not excist)\r\nData &amp;H45                                                   &#039;44 ,\r\nData &amp;H49                                                   &#039;45 -\r\nData &amp;H41                                                   &#039;46 .\r\nData &amp;H47                                                   &#039;47 \/\r\nData &amp;H0A                                                   &#039;48 0\r\nData &amp;H01                                                   &#039;49 1\r\nData &amp;H02                                                   &#039;50 2\r\nData &amp;H03                                                   &#039;51 3\r\nData &amp;H04                                                   &#039;52 4\r\nData &amp;H05                                                   &#039;53 5\r\nData &amp;H06                                                   &#039;54 6\r\nData &amp;H07                                                   &#039;55 7\r\nData &amp;H08                                                   &#039;56 8\r\nData &amp;H09                                                   &#039;57 9\r\nData &amp;H44                                                   &#039;58 :\r\nData &amp;H43                                                   &#039;59 ;\r\nData &amp;H4A                                                   &#039;60 &lt;\r\nData &amp;H42                                                   &#039;61 = (not excist)\r\nData &amp;H4B                                                   &#039;62 &gt;\r\nData &amp;H42                                                   &#039;63 ?\r\nData &amp;H4C                                                   &#039;64 @\r\nData &amp;H0B                                                   &#039;65 A\r\nData &amp;H0C                                                   &#039;66 B\r\nData &amp;H0D                                                   &#039;67 C\r\nData &amp;H0E                                                   &#039;68 D\r\nData &amp;H0F                                                   &#039;69 E\r\nData &amp;H10                                                   &#039;70 F\r\nData &amp;H11                                                   &#039;71 G\r\nData &amp;H12                                                   &#039;72 H\r\nData &amp;H13                                                   &#039;73 I\r\nData &amp;H14                                                   &#039;74 J\r\nData &amp;H15                                                   &#039;75 K\r\nData &amp;H16                                                   &#039;76 L\r\nData &amp;H17                                                   &#039;77 M\r\nData &amp;H18                                                   &#039;78 N\r\nData &amp;H19                                                   &#039;79 O\r\nData &amp;H1A                                                   &#039;80 P\r\nData &amp;H1B                                                   &#039;81 Q\r\nData &amp;H1C                                                   &#039;82 R\r\nData &amp;H1D                                                   &#039;83 S\r\nData &amp;H1E                                                   &#039;84 T\r\nData &amp;H1F                                                   &#039;85 U\r\nData &amp;H20                                                   &#039;86 V\r\nData &amp;H21                                                   &#039;87 W\r\nData &amp;H22                                                   &#039;88 X\r\nData &amp;H23                                                   &#039;89 Y\r\nData &amp;H24                                                   &#039;90 Z\r\nData &amp;H42                                                   &#039;91 [ (not excist)\r\nData &amp;H42                                                   &#039;92 \\ (not excist)\r\nData &amp;H42                                                   &#039;93 ] (not excist)\r\nData &amp;H42                                                   &#039;94 ^ (not excist)\r\nData &amp;H42                                                   &#039;95 Underscore (not excist)\r\nData &amp;H42                                                   &#039;96 ` (not excist)\r\nData &amp;H25                                                   &#039;97 a\r\nData &amp;H26                                                   &#039;98 b\r\nData &amp;H27                                                   &#039;99 c\r\nData &amp;H28                                                   &#039;100 d\r\nData &amp;H29                                                   &#039;101 e\r\nData &amp;H2A                                                   &#039;102 f\r\nData &amp;H2B                                                   &#039;103 g\r\nData &amp;H2C                                                   &#039;104 h\r\nData &amp;H2D                                                   &#039;105 i\r\nData &amp;H2E                                                   &#039;106 j\r\nData &amp;H2F                                                   &#039;107 k\r\nData &amp;H30                                                   &#039;108 l\r\nData &amp;H31                                                   &#039;109 m\r\nData &amp;H32                                                   &#039;110 n\r\nData &amp;H33                                                   &#039;111 o\r\nData &amp;H34                                                   &#039;112 p\r\nData &amp;H35                                                   &#039;113 q\r\nData &amp;H36                                                   &#039;114 r\r\nData &amp;H37                                                   &#039;115 s\r\nData &amp;H38                                                   &#039;116 t\r\nData &amp;H39                                                   &#039;117 u\r\nData &amp;H3A                                                   &#039;118 v\r\nData &amp;H3B                                                   &#039;119 w\r\nData &amp;H3C                                                   &#039;120 x\r\nData &amp;H3D                                                   &#039;121 y\r\nData &amp;H3E                                                   &#039;122 z\r\nData &amp;H42                                                   &#039;123 {  (not excist)\r\nData &amp;H42                                                   &#039;124 |  (not excist)\r\nData &amp;H42                                                   &#039;125 }  (not excist)\r\nData &amp;H42                                                   &#039;126 ~  (not excist)\r\n\r\nCustomcharacter:\r\n&#039;Total of 3 characters in this datatable\r\nData &amp;H50 &#039; Character 80\r\nData &amp;H55, &amp;H55, &amp;H55, &amp;H55, &amp;H55, &amp;H55, &amp;H55, &amp;H00\r\nData &amp;H15, &amp;H54, &amp;HAA, &amp;H85, &amp;H52, &amp;HAA, &amp;HA1, &amp;H52\r\nData &amp;HA0, &amp;HA8, &amp;H52, &amp;H85, &amp;H28, &amp;H02, &amp;H80, &amp;H41\r\nData &amp;H2A, &amp;HAA, &amp;H15, &amp;H2A, &amp;HAA, &amp;H15, &amp;H42, &amp;H80\r\nData &amp;H55, &amp;H2A, &amp;HAA, &amp;H15, &amp;H2A, &amp;HAA, &amp;H01, &amp;H02\r\nData &amp;H85, &amp;H28, &amp;H52, &amp;HA0, &amp;HA8, &amp;H52, &amp;HAA, &amp;HA1\r\nData &amp;H54, &amp;HAA, &amp;H85, &amp;H55, &amp;H00, &amp;H15\r\nData &amp;H51 &#039; Character 81\r\nData &amp;H55, &amp;H55, &amp;H55, &amp;H55, &amp;H55, &amp;H55, &amp;H55, &amp;H55\r\nData &amp;H55, &amp;H55, &amp;H56, &amp;H55, &amp;H55, &amp;H56, &amp;H55, &amp;H55\r\nData &amp;H56, &amp;H55, &amp;H6A, &amp;HAA, &amp;HAA, &amp;H55, &amp;H5A, &amp;H55\r\nData &amp;H55, &amp;H66, &amp;H55, &amp;H55, &amp;H66, &amp;H55, &amp;H55, &amp;H96\r\nData &amp;H55, &amp;H55, &amp;H96, &amp;H55, &amp;H56, &amp;H56, &amp;H55, &amp;H59\r\nData &amp;H56, &amp;H55, &amp;H65, &amp;H56, &amp;H55, &amp;H55, &amp;H56, &amp;H55\r\nData &amp;H55, &amp;H5A, &amp;H55, &amp;H55, &amp;H55, &amp;H55\r\nData &amp;H52 &#039; Character 82\r\nData &amp;H55, &amp;H55, &amp;H55, &amp;H55, &amp;H55, &amp;H55, &amp;H55, &amp;H55\r\nData &amp;H55, &amp;H55, &amp;H59, &amp;H55, &amp;H55, &amp;H59, &amp;H55, &amp;H55\r\nData &amp;H59, &amp;H55, &amp;H6A, &amp;HAA, &amp;HAA, &amp;H55, &amp;H59, &amp;H56\r\nData &amp;H55, &amp;H59, &amp;H56, &amp;H55, &amp;H65, &amp;H56, &amp;H55, &amp;H65\r\nData &amp;H56, &amp;H55, &amp;H65, &amp;H56, &amp;H55, &amp;H95, &amp;H56, &amp;H55\r\nData &amp;H95, &amp;H56, &amp;H56, &amp;H55, &amp;H56, &amp;H56, &amp;H55, &amp;H56\r\nData &amp;H59, &amp;H55, &amp;H69, &amp;H55, &amp;H55, &amp;H55<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>The Max7456 from Maxim is a monochrome video overlay chip. With this you can overlay text and simple graphics over your PAL or NTSC video signal. You can also use it with no overlay, just like a simple monitor. Included in this sample is a tutorial how you cam make your own characters with my [&#8230;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[26,35,36],"class_list":["post-314","post","type-post","status-publish","format-standard","hentry","category-bascom","tag-bascom","tag-max7456","tag-video-overlay"],"_links":{"self":[{"href":"https:\/\/evertdekker.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/314","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/evertdekker.com\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/evertdekker.com\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/evertdekker.com\/wp\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/evertdekker.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=314"}],"version-history":[{"count":8,"href":"https:\/\/evertdekker.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/314\/revisions"}],"predecessor-version":[{"id":1840,"href":"https:\/\/evertdekker.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/314\/revisions\/1840"}],"wp:attachment":[{"href":"https:\/\/evertdekker.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=314"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/evertdekker.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=314"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/evertdekker.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=314"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}