loader   klox loader  : 52999:sprites+scroll /tem que estar no inicio porque limpa as vars 2: 3main=100d 4pausa=60< 8tapefast=600X :main ; <: =  pausa  An=1100d C 2 D 6 E 4 F 1 G 0 H 0 I 1 Jn Kcor L c: dsprites  i cor=3 kcor:cor:7 m n1#0;1,0;"Loading SPRITES..."; x tapefast pausa 1 "SPRITES" 1 :  scroll  cor=2 cor:cor:7  <#0;1,0;"Loading SCROLL (compiled) ..."; pausa "scroll.tap" +: ,   1 cor=1 3cor:cor:cor 6 @n=48 A'n,19;7;" "; En JD#0;0,0;cor;" "; K4#0;1,0;7;"Loading ..."; Tpausa ^"" :   klox   cor=0 cor:cor:0 #0;1,0;"Loading KLOX..."; PRINT AT 20,0; pausa $8:8:1:1 "1,0;"Program: klox" 0,0; "klox"  : X tape fast  b l"Try loading" q" at 20th century speed." v"On ZXSpin emulator, select" w" Tools/Files/Tapes/" x" /Acceleration/None."  pausa pausa pausa  : #(: #"loader"0 aidaus<apefasXo3dASPRITES X `~}}9 sÃ``>@888xpp``````0vvtlldb`` <?~؀ P P P 8 M[VZV\GWq !Wv>DD(( @D((D((DD(DD(¢򒒒<@<B<BBBBB<scroll.tap,,!9"!s!X"U!U!U!U!U!U!!"!"*+"*+"!"!"YB:[d:[o:[z/:[…f]!e!m!u!}!!k!!!!!!!"!"k!"k*%Q! R|_W]>z# =L*%*W!!_*%*q!!_*%*ʋ!!_*%*ʥ!!_*%*ʿ!!_*%*!!_*+"*@!"͆!!!!!!!"!"k!"ͧk*%Q! R|_W]>z# =L*%*ʎ!!_*%*ʨ!!_*%*!!_*%*!!_*%*!!_*%*!!_*#"![@E!"͆!!!!!!!"!"k!"Oͮk*%Q! R|_W]>z# =L*%*!!_*%*!!_*%*!!_*%*!!_*%*.!!_*%*H!!_*+"*@}!"͆!! !!!!!"!"k!"Æ͑k*%Q! R|_W]>z# =L*%*!!_*%*!!_*%*1!!_*%*K!!_*%*e!!_*%*!!_*#"![@ʴ!"͆:[2:[2:=&eog*}2:=&eog*}2>X26\>27\::ͱ!]ͅ:<:ͱ!eͅ::ͱ!mͅ::ͱ!uͅ::ͱ!}ͅ::ͱ!ͅ26\><27\:[2:[2:=&eog**}2:=&eog**}2>X26\>27\:2og[@:2:og*@:2!"a:og*}2og[@:2:og*@8:2::ͱ***>*#"![@:<2og[@ʍ:2:og*@ʧ:2!":og*}2og[@:2:og*@:2::ͱ***>*#"![@ʰ:2og[@G:2:og*@a:2!":og*}2og[@ʑ:2:og*@ʫ:2::ͱ***>*#"![@j:2og[@:2:og*@:2!"Î:og*}2og[@K:2:og*@e:2::ͱ***>*#"![@$:2og[@ʻ:2:og*@:2!"H:og*}2og[@:2:og*@:2::ͱ***>*#"![@:2og[@u:2:og*@ʏ:2!":og*}2og[@ʿ:2:og*@:2::ͱ***>*#"![@ʘ26\><27\:[2:[2:=&eog* Q**"~2 [* ~2 [*@~2 [*`~2[*~2[*~2[!"<****#~w* ** *#~w*@**@*#~w*`**`*#~w****#~w****#~w*#"![@ʏ[*: [w[* : [w[*@: [w[*`:[w[*:[w[*:[w:[2:[2* Q**:=&eog"~2 [*#~2 [*##~2 [*###~2[*~2[*~2[!"* Q*R*# Q*R~w* Q*R#*# Q*R#~w* Q*R##*# Q*R##~w* Q*R###*# Q*R###~w* Q*R*# Q*R~w* Q*R*# Q*R~w*#"![@* Q*R: [w* Q*R#: [w* Q*R##: [w* Q*R###:[w* Q*R:[w* Q*R:[w:[2:[2* Q**:=&eog"~2 [*#~2 [*##~2 [*###~2[*~2[*~2[!"* Q**# Q*~w* Q*#*# Q*#~w* Q*##*# Q*##~w* Q*###*# Q*###~w* Q**# Q*~w* Q**# Q*~w*#"![@* Q*: [w* Q*#: [w* Q*##: [w* Q*###:[w* Q*:[w* Q*:[w:[2:[2:=&eog* Q**"~2 [* ~2 [*@~2 [*`~2[*~2[*~2[!"*[R*[R+~w* [R* [R+~w*@[R*@[R+~w*`[R*`[R+~w*[R*[R+~w*[R*[R+~w*#"![@*[R: [w*[R : [w*[R@: [w*[R`:[w*[R:[w*[R:[w!DM*!123456 !  "#$%  &'()  *+,-  ./0  1 2   34 56789  :;<=  >?@A  BCD  EFG HIJKL MNOPQ  R  STU  VW  XYZ  [\]  ^  _`  abcde fghi  jklm |}/o|/g#Ͷ*ö*|_ULGö*Ͷ*Ͷ*͵@X2r2:\!!{0z>t&zTo)))[lx͇[\zOz/w[\!!R!!R"\͇"\zOWy_*j"\ɇ_^#V\ G\\ 8Gǰ\ !\((>G~w#˾#!\!\((>@G~濰w#˶#!\O!\ˎwy!\ˎwO!\ˆwy!\ˆw!\˞w!\˖w!\˞w!\˖w!\ˮw!\˦w! " 2\ͬ"\!!R 8p*\- . % $ "\80 G8 !\O֐K{\K6\o&)) GV\Gfp*\w$#"\*\͟#"\!*\- % $ .͕!$2\!:\! " ͝!! " *\>2\!! " *\>!oͬ>  ͸! !'!!G!+f!5ͦ!?́!J!V!\Ow#\!\!\>#>#>###&#&#&\ͬ{ͬG> oxøDP&0:*\"\!\"!\":\O! ~2e*\U(>/2f~OwɯR<ɔ <ɔ;><ɷRI|><|M!)!`o%p!#w#w#DMq#p#s#r#w#w>2s|++DM!###^#V|ʳB ڡ+q#p`i##s#rV+^+F+N R^#V# DM^#Vq#p#s#rW|N#F#x( ~# z×W!"G!#|^#V#B1"G^#VBN~#fo!s#r+r+sq#p#| ^#V+͗ |s#r# xʋ++BKx(N#F+|(+V+^`iR8!R0Zz|( N#F+s#r+ N#fiN#fi͎s#r|~#foB0 DM?`iR(%8#DM |( q#p###!ėz}/o|/g{/_z/W,$og_WzpEpo&\TzBK.PYzʡ8,Ä}˻{ @R?|? x??<???xx<~<???>????x>??~<????|???x??~???~?????|????????>???????>??0gx?<???<x?<?3?8?8????~8x8??|?O???`0x?ÃÁ?  ??` f?? ??  0? ^ý???ǀ?!?~^í???1>@/ pf߽???>?ÿÁ???=? ??xx??B? 0|???  ?0`?A p??pxa?7` Ͼ<| 0??go0??`@_??0 8?? 0???0x{3?Ӑ0~| '?p???a!q0?@1??a營_?ѹ38a ??1??x0@` ?A 0ވϏ9o8mݙx's'?fnw|c?EEEEEEEE}}}}}}EEEEEEEEEEEEEEEEEEEEEEEEE}}}GG}}E}}EEEEEEEEEEEEEEEEEEEEE}}}GGGG}EEEEEEEEEEEEEEEEEEEEEEEE}}GGG}}}EEEEEEEEEEEEEEEEEEEEEEEEMOGG}}}}EEEEEEEEEEEEEEEEEEEEEEEEMAOA}E}}EEEEEEEEEEEEEEEEEEEEEEEMAAAAEEEEGGEEEEEEEEEEEEEEEEEEEMAAAAAEEEGGGGGEEEEEEEEEEEEEEEEEEMAAAAAEEEGGGGGEEEEEEEEEEEEEEEEEEMAAAAAEEEGGGGGEEEEEEEEEEEEEEEEEEMAAAAEEEEGGGGGEEEEEEEEEEEEEEEEEEMAAAAMEEEGGGGGEEEEEEUUUUUUUUEEEEEAAAAAEEEGGGGGEEEEUUUBBBBBBBEEEEEAAAAAAABGGGGGEEEUUBBBBBBBBBEEUUBAAAAAAABGGGGGBBBBBBBBBBBBBUUBBBAAAAAAAAAGGGGBBBBABBBBBBBBUBBBBAAAAAAAAGGGBBAAAABBBBBBBBBBBBBBAAAAAAABBBAAAAAAAAABBBBBUUBBBBBBAAAAAABVVVVVVJAAAAABBBBUUEBBBBBBAAAAAABBVVVVVVAAAAABBBUUEEBBBBBBAAAAAAJVVBBVVVAAAAAABBUEEEBBBBBBAAAAAAABVVVVBBAAAAAAAAMEEEBBBBBBBAAAAAAABVVVBAAAAAAAAAAMEEBBBBBBBAAAAAAAAFFAAAAABBBAAAAMME\klox B7B7D7d: e  KLOX  f(c) 2021 by ZarSoft gCLEAR variables hVAR - Global variables i"9905&:call init proc addrs jtrue=1 kfalse=0 l(ColorAddr=22528X:start of colors m)PrinterAddr=23296[:printer buffer na$="123456":sprites 5678 ob$="123456":sprites 5678 pc$="123456":sprites 5678 qd$="123456":sprites 5678 re$="123456":sprites 5678 sf$="123456":sprites 5678 t.h$(3,40():titulo de apresentacao u t$(3,3):tabuleiro v)TabLin=2:pos lin tabuleiro ecran w)TabCol=7:pos col tabuleiro ecran x=TabLinMax=TabLin+3*6-1:tabuleiro lin max y=TabColMax=TabCol+3*6-1:tabuleiro col max z:TabAddr=ColorAddr+TabLin*32 +TabCol:tabuleiro addr {3i$(9 ,6,16):desenho dos digitos |2s$(4,6,6):desenho das sprites }/SuperLinha=1:posicao linha do superman ~1SuperColuna=1:posicao coluna do superman +l=0:deslocamento linha do superman ,c=0:deslocamento coluna do superman nivel=1:nivel do jogo k$="":tecla !restart=true:mostra instrucoes sucesso=false:sucesso &j=0:ciclo1 de RotinaPrincipal &g=0:ciclo2 de RotinaPrincipal m=0:ciclo de jogada l$="":linha kryptoniana .:N=120:.02{# >,*33!:N -0:0:7:0:0  RotinaPrincipal :KLOX :  pausa0  $Nao funciona com programas grandes #pausa0=204::set proc addr %i=00.50:REPEAT 1:0:0 1 k$= i=k$"":UNTIL : REM UNTIL i:UNTIL :pausa0 ,: -  pausa  ."pausa=303/::set proc addr /%i=00.50:REPEAT 0 0 1k$= 2i=k$"":UNTIL : REM UNTIL 3 i:UNTIL 4 :pausa :  RotinaPrincipal  ,RotinaPrincipal=403::set proc addr nivel=1 EscreverTitulo1 IniciarDesenhosNumeros EscreverTitulo2 %j=00.50:REPEAT g=restart:IF-BEGIN "g=g0.5-2:IF-BEGIN EscreverKlox EscreverInstrucoes EscreverKryptoniano  g:ENDIF IniciarVariaveis DesenharTabuleiro Jogada j=false:UNTIL : REM UNTIL  j:UNTIL :RotinaPrincipal :  jogada  #jogada=503::set proc addr restart=false sucesso=false 0:5 MostrarSprite4 X#0;1,0;6;"Level:";nivel;4;" Keys:5678QAOP Restart:R"; %m=00.50:REPEAT pausa t=k$="5"k$="o":IF-BEGIN "t=t0.5-2:IF-BEGIN 23298[,5 mover shift5  t:ENDIF <t=(t<0)*-1+(t=0)*(k$="6"k$="a"):ELSEIF  t=t0.5-2:ELSEIF 23298[,6 mover shift6  t:ENDIF  <t=(t<0)*-1+(t=0)*(k$="7"k$="q"):ELSEIF  t=t0.5-2:ELSEIF  23298[,7  mover shift7  t:ENDIF <t=(t<0)*-1+(t=0)*(k$="8"k$="p"):ELSEIF  t=t0.5-2:ELSEIF 23298[,8 mover shift8  t:ENDIF 5t=(t<0)*-1+(t=0)*(k$="r"):ELSEIF  t=t0.5-2:ELSEIF restart=true 0:s=44,-33!-1:.01z# >,s:s  t:ENDIF  TestarFim m=restartsucesso:UNTIL  m:UNTIL ?#0;1,0;" ";  :jogada X: Y IniciarVariaveis  Z DIM t$(3,3) [-IniciarVariaveis=604\::set proc addr \t$(1)="123" ]t$(2)="456" ^t$(3)="789" _SuperLin=3 `SuperCol=3 a,23296[,SuperLin:23297[,SuperCol b baralhar c:IniciarVariaveis :  baralhar  %baralhar=703::set proc addr  alterna=1 n=1nivel alterna=1-alterna (alternak$="58"(1+(*2)) )alternak$="67"(1+(*2)) $t=k$="5":IF-BEGIN : REM IF-BEGIN "t=t0.5-2:IF-BEGIN shift5  t:ENDIF 5t=(t<0)*-1+(t=0)*(k$="6"):ELSEIF  t=t0.5-2:ELSEIF shift6  t:ENDIF 5t=(t<0)*-1+(t=0)*(k$="7"):ELSEIF  t=t0.5-2:ELSEIF shift7  t:ENDIF 5t=(t<0)*-1+(t=0)*(k$="8"):ELSEIF  t=t0.5-2:ELSEIF shift8  t:ENDIF n  :baralhar  : ! TestarFim  "&TestarFim=803#::set proc addr #Cn=t$(1)="123"t$(2)="456"t$(3)="789":IF-BEGIN $"n=n0.5-2:IF-BEGIN %sucesso=true &nivel=nivel+1 '':s=-33!44,:.01z# >,s:s (>#0;1,0;" SUCCESS! - press any key " )pausa *>#0;1,0;" " +=:s=-44,44,5:.02{# >,s:.02{# >,s:s , n:ENDIF - :TestarFim :  shift5  #shift5=903::set proc addr v$=t$(SuperLin,1) +t$(SuperLin,1)=t$(SuperLin,2) +t$(SuperLin,2)=t$(SuperLin,3) t$(SuperLin,3)=v$ SuperCol=SuperCol-1 $SuperCol<1SuperCol=3 ,23296[,SuperLin:23297[,SuperCol  :shift5 :  shift6  $shift6=1003::set proc addr v$=t$(3,SuperCol) +t$(3,SuperCol)=t$(2,SuperCol) +t$(2,SuperCol)=t$(1,SuperCol) t$(1,SuperCol)=v$ SuperLin=SuperLin+1 $SuperLin>3SuperLin=1 ,23296[,SuperLin:23297[,SuperCol  :shift6 L: M shift7  N$shift7=1103O::set proc addr Ov$=t$(1,SuperCol) P+t$(1,SuperCol)=t$(2,SuperCol) Q+t$(2,SuperCol)=t$(3,SuperCol) Rt$(3,SuperCol)=v$ SSuperLin=SuperLin-1 T$SuperLin<1SuperLin=3 U,23296[,SuperLin:23297[,SuperCol V :shift7 :  shift8  $shift8=1203::set proc addr v$=t$(SuperLin,3) +t$(SuperLin,3)=t$(SuperLin,2) +t$(SuperLin,2)=t$(SuperLin,1) t$(SuperLin,1)=v$ SuperCol=SuperCol+1 $SuperCol>3SuperCol=1 ,23296[,SuperLin:23297[,SuperCol  :shift8 :  DesenharTabuleiro  limpar tabuleiro1 /DesenharTabuleiro=1304::set proc addr l=181-1 22+l-1,7;" "; l desenhar numeros l=13 c=13 arg1=t$(l,c) DesenharNumero  c !l ":DesenharTabuleiro x: y EscreverTitulo1  zDIM h$(3,40) {-EscreverTitulo1=1404|::set proc addr |0:0:7 } ~ 4 h$(1)=" " h$(2)="" h$(3)=" " (AL=0:AC=5:EscreverTitulo  20  4 h$(1)="" h$(2)=" " h$(3)=" " (AL=0:AC=5:EscreverTitulo  10  7  h$(1)=""  h$(2)=" "  h$(3)=" " (AL=5:AC=5:EscreverTitulo  502 :EscreverTitulo1 :  EscreverTitulo2  -EscreverTitulo2=1503::set proc addr   7 h$(1)="" h$(2)="" h$(3)="" )AL=0:AC=11 :EscreverTitulo  3 h$(1)=" " h$(2)=" " h$(3)=" " (AL=4:AC=5:EscreverTitulo h$(1)=" " h$(2)=" " h$(3)="" (AL=8:AC=5:EscreverTitulo  7  h$(1)=" "  h$(2)=" " h$(3)="" )AL=12 :AC=5:EscreverTitulo  502 :EscreverTitulo2 @: A EscreverTitulo  B,EscreverTitulo=1603C::set proc addr Cl=13 Dal+l-1,ac;h$(l) El F:EscreverTitulo :  EscreverKlox  *EscreverKlox=1703::set proc addr h$(5,20) $h$(1)=" " $h$(2)=" " $h$(3)=" " $h$(4)=" " $h$(5)=" "  l=15 -l,4+1;0;0;h$(l); l c=1202 l=15 &l,4+c;1;2;" "; l c  7 :EscreverKlox :   EscreverInstrucoes   0EscreverInstrucoes=1803 ::set proc addr  7,0;  "This is a kryptonian game."  0"You will need superintelligence to solve it."  C"The aim of the game is to sort the numbers in numerical order."  3 7;"" 7;" 1 2 3 4 5" 7;" 6 7 8 9 10" 7;"11 12 13 14 15" 7;"16 17 18 19 20" 7;"21 22 23 24 " 7;""  7 $"Let's try a simplified version."; =#0;1,4;6;"press any key to start" pausa 4#0;1,4;" " <.08}# >,10 :.08}# >,20:.08}# >,30 :EscreverInstrucoes l: m EscreverKryptoniano  nPrepararKryptoniano o1EscreverKryptoniano=1904p::set proc addr pl$="" q l$=l$+l$ rl$=l$(132 ) s escrever t0,0; un=021 vm=1+(*20) w!1;l$(m);l$(m-1); xn y:EscreverKryptoniano :  IniciarDesenhosNumeros  DIM i$(9,6,16) 4IniciarDesenhosNumeros=2004::set proc addr (i$(1,1)=" " (i$(1,2)="   " (i$(1,3)="   " (i$(1,4)="   " (i$(1,5)="   " (i$(1,6)=" " (i$(2,1)=" " (i$(2,2)="   " (i$(2,3)="   " (i$(2,4)="   " (i$(2,5)="   " (i$(2,6)=" " (i$(3,1)=" " (i$(3,2)="   " (i$(3,3)="   " (i$(3,4)="   " (i$(3,5)="   " (i$(3,6)="   " (i$(4,1)=" " (i$(4,2)=" " 0i$(4,3)="     " (i$(4,4)="   " (i$(4,5)="   " (i$(4,6)=" " (i$(5,1)=" " (i$(5,2)="   " (i$(5,3)="   " (i$(5,4)="   " (i$(5,5)="   " (i$(5,6)="   " (i$(6,1)=" " (i$(6,2)="   " (i$(6,3)="   " ,i$(6,4)="     " (i$(6,5)="   " (i$(6,6)=" " (i$(7,1)=" " (i$(7,2)="   " (i$(7,3)="   " (i$(7,4)="   " (i$(7,5)="   " (i$(7,6)=" " (i$(8,1)=" " (i$(8,2)="   " *i$(8,3)="     " (i$(8,4)="   " *i$(8,5)="     " (i$(8,6)="   " (i$(9 ,1)=" " (i$(9 ,2)=" " (i$(9 ,3)=" " (i$(9 ,4)=" " (i$(9 ,5)=" "  (i$(9 ,6)=" "  :IniciarDesenhosNumeros 4: 5 DesenharNumero  6,DesenharNumero=21037::set proc addr 7i=16 8$arg1=7arg1=81 9H1+(l-1)*6+i,7+(c-1)*6;i$(arg1,i); : 0 ;i <:DesenharNumero :   mover  #mover=2203::set proc addr  5 53000 PEEKmove=23298[  :mover :  MostrarSprite4  ,MostrarSprite4=2303::set proc addr PEEKlin=23296[ PEEKcol=23297[ ,ScreenLin=TabLin+(PEEKlin-1)*6 ,ScreenCol=TabCol+(PEEKcol-1)*6 CHANGE chars addr 5236066\,88X:236077\,252-1 'ScreenLin+0,ScreenCol;" ! " (ScreenLin+1,ScreenCol;" ""#$% " 'ScreenLin+2,ScreenCol;" &'() " 'ScreenLin+3,ScreenCol;" *+,- " 'ScreenLin+4,ScreenCol;" ./0 " 'ScreenLin+5,ScreenCol;" 1 2 " reset chars addr 3236066\,0:236077\,61=-1 :MostrarSprite4 `: a gravar  b$gravar=2403c ::set proc addr c"klox"0 d :gravar &: & init proc addrs  &w=9999': & 1;" ";0,0; &"w=2009900&100d &w &w &:init proc addrs &converted from &Pascalated BASIC &to Structured BASIC &!at www.ArcaLusitana.fun/MuseuZX &(c) 1987, 2021 by ZarSoft `