The cell matrix began with a philosophical discussion on how far the hardware/software line could be pushed towards the software extreme. The idea of a completely configurable hardware platform led quickly to the fine grained structure of a cell's D-mode behavior. However, the actual configuration mechanism of a cell (its C-mode behavior) derives from a question of how to make a system which can output its own configuration information. In a purely software domain, this is the question of writing a program which prints its own source code. The solution seemed to hinge on a dual representation of characters as either code or data. By extending this construct into hardware, the configuration mechanism of the cell matrix was formed.

 
 
static char p[20][1024]
"#include <stdio.h>",  
"#include <string.h>", 
"",                    
"main()",              
"{",                   
"       int i,j;",     
"",                    
"       printf(\"static
"       for (i=0;i<20;i
"               if (i>0
"               printf(
"               for (j=
"               if ((p[
"               printf(
"         }",          
"       }",            
"       printf(\"\\\"};
"",                    
"    for (i=0;i<20;i++)
"}"};                  
                       
#include <stdio.h>     
#include <string.h>    
                       
main()                 
{                      
       int i,j;        
                       
       printf("static c
       for (i=0;i<20;i+
               if (i>0)
               printf("
               for (j=0
               if ((p[i
               printf("
         }             
       }               
       printf("\"};\n\n
                       
    for (i=0;i<20;i++) 
}