CJam, 10 cycles, 1023 unique characters
"39c'LS 0¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſƀƁƂƃƄƅƆƇƈƉƊƋƌƍƎƏƐƑƒƓƔƕƖƗƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽƾƿǀǁǂǃDŽDždžLJLjljNJNjnjǍǎǏǐǑǒǓǔǕǖǗǘǙǚǛǜǝǞǟǠǡǢǣǤǥǦǧǨǩǪǫǬǭǮǯǰDZDzdzǴǵǶǷǸǹǺǻǼǽǾǿȀȁȂȃȄȅȆȇȈȉȊȋȌȍȎȏȐȑȒȓȔȕȖȗȘșȚțȜȝȞȟȠȡȢȣȤȥȦȧȨȩȪȫȬȭȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿɀɁɂɃɄɅɆɇɈɉɊɋɌɍɎɏɐɑɒɓɔɕɖɗɘəɚɛɜɝɞɟɠɡɢɣɤɥɦɧɨɩɪɫɬɭɮɯɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀʁʂʃʄʅʆʇʈ̴̵̶̷̸̯̰̱̲̳̹̺̻̼͇͈͉͍͎̽̾̿̀́͂̓̈́͆͊͋͌ͅ͏͓͔͕͖͙͚͐͑͒͗͛ͣͤͥͦͧͨͩͪͫͬͭͮͯ͘͜͟͢͝͞͠͡ͰͱͲͳʹ͵Ͷͷͺͻͼͽ;Ϳ΄΅Ά·ΈΉΊΌΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώϏϐϑϒϓϔϕϖϗϘϙϚϛϜϝϞϟϠϡϢϣϤϥϦϧϨϩϪϫϬϭϮϯϰϱϲϳϴϵ϶ϷϸϹϺϻϼϽϾϿЀЁЂЃЄЅІЇЈЉЊЋЌЍЎЏАБВГДЕЖֽ־ֿ׀ׁׂ׃ׅׄ׆ׇאבגדהוזחטיךכלםמןנסעףפץצקרשתׯװױײ׳״؆؇؈؉؊؋،؍؎؏ؘؙؚؐؑؒؓؔؕؖؗ؛؝؞؟ؠءآأؤࡋࡌࡍࡎࡏࡐࡑࡒࡓࡔࡕࡖࡗࡘ࡙࡚࡛࡞ࡠࡡࡢࡣࡤࡥࡦࡧࡨࡩࡪࡰࡱࡲૠ൧൨ྲྀླྌྊྉྈྒ೨ഥദ೯ംഢബೳഇഄਗ਼ગઘੰੴઔ੮੭੬ઞઌੜ੯ઑ੧એੳ੶ߌࠉࠊߢߓߦࠆߠߟߞࠐߗ߾ߎߖߡߕࠃߙࠁߔ߫ߥߨԾջռՔՅոՒՑՐւՉհՀՈՓՇյՋճՆ՝՚ʰ˭ˮˆʷˊ˪˄˃˂˴ʻˢʲʺ˅ʹ˧ʽ˥ʸˏˉˌ"_`8)<\654f-T$,7+Y/W*A;>
Output
"39c'LS 0¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſƀƁƂƃƄƅƆƇƈ̴̵̶̷̸̯̰̱̲̳̹̺̻̼͇͈͉͍͎̽̾̿̀́͂̓̈́͆͊͋͌ͅ͏͓͔͕͖͙͚͐͑͒͗͛ͣͤͥͦͧͨͩͪͫͬͭͮͯ͘͜͟͢͝͞͠͡ͰͱͲͳʹ͵Ͷͷͺͻͼͽ;Ϳ΄΅Ά·ΈΉΊΌΎΏΐΑΒΓΔΕΖֽ־ֿ׀ׁׂ׃ׅׄ׆ׇאבגדהוזחטיךכלםמןנסעףפࡋࡌࡍࡎࡏࡐࡑࡒ೨ഥഄਗ਼ગઘੰੴઔ੮੭੬ઞ੶ߌࠉࠊߢߓߦࠆߠߟߞࠐߗ߾ߎߖߡߕࠃߙࠁߔ߫ߥߨԾջռՔՅոՒՑՐւՉհՀՈՓՇյՋճՆ՝՚ʰ˭ˮˆʷˊ˪˄˃˂˴ʻˢʲʺ˅ʹ˧ʽ˥ʸˏˉˌ"_`8)<\654f-T$,7+Y/W*A;>
"39c'LS 0¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈ̴̵̶̷̸̯̰̱̲̳̹̺̻̼͇͈͉͍͎̽̾̿̀́͂̓̈́͆͊͋͌ͅ͏ֽ͓͔͕͖͐͑͒־ֿ׀ׁׂ׃ׄࡋࡌਗ਼ગੰ੮੭੬੶ߌࠉࠊߢߓߦࠆߠߟߞࠐߗ߫ߨԾջռՔՅոՒՑՐւՉհՀՈՓՇյՋճՆ՝՚ʰ˭ˮˆʷˊ˪˄˃˂˴ʻˢʲʺ˅ʹ˧ʽ˥ʸˏˉˌ"_`8)<\654f-T$,7+Y/W*A;>
"39c'LS 0¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈ̴̵̶ֽ̯̰̱̲̳־ߌࠉߢߠߟߞߨԾջռՔՅոՒՑՐւՉ՝՚ʰ˭ˮˆʷˊ˪˄˃˂˴ʻˢʲʺ˅ʹ˧ʽ˥ʸˏˉˌ"_`8)<\654f-T$,7+Y/W*A;>
"39c'LS 0¡¢£¤¥¦§¨̯̰ԾջՔՒՑՐ՚ʰ˭ˮˆʷˊ˪˄˃˂˴ʻˏˌ"_`8)<\654f-T$,7+Y/W*A;>
"39c'LS 0¡¢ʰ˭ˆ˄˃˂ˌ"_`8)<\654f-A>
"39c'LS 0"_8654>
39c'LS 0
'L 0
L0
0
How it works
`8)<
returns the first 9 characters of the string with double quote.
654f-
decreases each character by 654.
T$,
returns the string length on the top of the stack.
7+Y/W*>
returns appropriate number of characters from the end of the decoded string.
_`8)<\654f-A>
is a simplified version without calculating the number of characters.
_8654>
does nothing useful.
39c
is the character '
.
The string in each program ends with the output without "39c'LS 0
, with each character value increased by 654. And each string is a substring of the one in the previous program, because it is the substring if both of them are decoded.
The only character used twice is the double quote ("
).
Non-ascii characters cannot appear in blocks directly without a string in CJam. And there are no comment characters. So I think 1024 in CJam is impossible. It might be possible in GolfScript. And it should be easier in languages like Sclipting. But I'm too lazy to do that.
It can be generated with the following program:
{9>654f+}:U;
{"\"39c'LS 0"\+}:V;
{
_,24-,'¡f+
\U+
V
"\"_`8)<\654f-T$,7+Y/W*A;>"+
}:T;
"\"39c'LS 0\"_8654>"
U"¡¢"\+V"\"_`8)<\654f-A>"+
TTTTT
CJam, 10 cycles, all printable ascii
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''']_" !#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJK";
How it works
In the first time it prints 512 '
s. Then it works just like Dennis's answer.