LYNXTETRISLYAtariſrh1n ^BUb(WP<۰.|`a$qY kdK!vP5݈(T#XresRΛԅq(yn]NHl[ÅЪҢ5UvjjW'uKи@TMRi _$P*vW+x2 AQktf8g {BR /\;aԊ y_nK@ME]6$zs0,* `-朄j Wp u@01 Z0- {8sH >: eɊΕ}#V9{U &\r)x7Z< 9)Wc2etJQmW(z( z9oh1g!\  d  dd Ɉ   ޠ0):0)8ϠP пlN C  / +HZ8 莇ʎ*d zh`t  l H eheheheLoader 2.2FFG`PQ 5d  dd d$   $ ꭒJL (*$  13.12.9322:30:48(c) 1993/94 B.Schick iffԉ@ ݆fǥfgxC Ff FLF`RTU,0``xC F#)::":%: F H Ff8`` FLQe8`L\D8`x̍EEʘ(`H, h@|h@x5G  & H(d'd d!d"d#x@F (JF(`'h@$)%%$(0$$0:S$$yC"2d"#"%%H& h@$(0!2! (& h@ڦ#"2d#8``ڦ 2  &d(8``d'd% F %$'` ) 998 莇ʎ*d:;zh`BR RƘ$0 R`` I KK M N 2N WNƘ$0 M N 2N WN`N:::W iTjLLLLMMMMMM䍦MZMMUJJJJ jNU) jNz`M!MMoJJJJ jNo) jNMM`(MMMe) jNdJJJJ jNd) jN`MM"M`JJJJ jN`) jN`M2M.Mf)MMMMM RMiM` GN Rd-Ƙ$0LiN]J<(`NNJNI 33002222003334!4!4!4!4!4!4!4!3!R  p123!00p p0p@PHP  3R 3300222200333EQM: i Q֠QH)8܍  ,h`YR#EgOPFx!&ažIx(!F8ƀyh~Z!AI/?HBL1Y<6ˆ@(# x0 I@:<'ʃ<<<<W4)L1-6垾ع')0堡,EP./]e{d 5QNⰼ*9 Y<ν%>..ؙӼ F ͱ+Tr< 8(apF8ڸ:P -:JE@ \:齶1;5W$31 >0.ii#27D"D. WW) 0 ->I4#A .>H/ 4G6E?9$ϳ'ΰ!S&&9T# *LM E[;$ $  )џ !8K<#% 2=7PR/ ѳGL 1: -+.,SB )3 &$ J$6OO40 ' #ٺ /48 ܥ%() "B510=I[BP¼,sx\ͳ"@`"(@") ՟,H@2@"ʑ: Q}]&8^?5=޽)A?' գ,5 Ɨ C%&+XJ#ᱼ .G, 1@QB4I#ϼ)eRܺEU=┚ռ60Ϊ% FD ? NB 1-Sg7:&ɨXJ7ܳ!A8 51󵌟 /:  ,8ʰ:9 0M-"90&:d9+"8أ/6G9 ù 2$#&C /8>>4<+,#[? ( '޲HA"@6 )2굴>C$B0('& $'ɰ4;/  4>$, '@D=8 )=+G"&  $&%8" &2#/1427$ %7(# )У8) /<$ů %L9!"   +- # ,.E& ľò#,8Ծ! -M.(\<"*$  ̶ *A59*% ('I= MV.ϼ  箴#'%'&%77KA9^G #$  ,ݿ*%(-4XH$ -- ۯ"4!% .! 2& 2*01# " 6+  $* Ш*' !7AAݸ)*B8  $ %$. / +"(&  ! %( 019< *$  UC'5&)1&  >- .'%?) 2# /A3?:";+:$ AO /#==Բ)/ "%G^ " (9,   .&=#@?9?)(2;*@  +,"/, !'*  @4 %'3! $.*8, +! %1 )'+)+  "+1NB 0, /)& * $ , "&B )13+ $   B/  ! &* $#$   )/63#-/#3+0 3#3'Ӿ !$"31) :I(751   CA4! -#ɾ AWU?& *7 -( ѱ)! & $3,Ԯ (, :4  +% "B3ƽ78+AV4,''+) $ PD Ƕ! (*/6 !߶5 &3_^0 9! !)6M&  %" %+$-*+ 038"*(ݼ4>&* (  7;$ (0N+5% $:$(0 2<& * !!5R3K8'4  ! 13  ʻ 3BJ,9 ,(6Ӿ# '23" C)#ξ'A/ 1,˼A&)1-6>@8D$3$ּ-= ˱2J :"4 ɷ(QoG# G8 ,5BG4$/ ػIP/ #ƿJA 3;N(0(#"7E*'64 4  ! ;Q77"  8 /9(58CC&+/KB)E% %3( 16 !(?4;_"#-94 ؿ#):X_,%շ>Eb+( "1⺷+(9S0:*  &"":/"' $٩ &1(M987)&)' ?E*@+  *K$"5$0&:M,'(  /E7 /- 2)DH77 Ŷ7' 6&.; !" D-)( (=!14ý!,86*)7+/",R<:1  /H +;FC6 /IB6! L 0;B4'絡  $7$DEYF; /<'3=$ #& .7'G7 !3-J8 绛-$-IZ1 ǯ 31 5K, 躬% ;/FG%ζ &AT*!ע *0#@C+ ՛  =='E3<_Qݰ,4@AU* ,!8D'3V?( :?,-  (#I[O9  ,TO'  % ؾ %  9J;H5 C'-R *I30<&D7"' $:02:+ 2)# !2#E6!0, -/5 ;A8, % 1$  3#',1%  2:8# !  ;0=Gǰ 4"  >L82ɺ," '&  6/=03 *=2+;9,75$0, +<-?;   18$5  7% ( %  ("60%3&*)H/ 7$ "((  % ! 21 "1 @1"% /66A  !* # ( ! +2!   &* 4".& .*& !2, +     O* 241,-../ % $%#"  M<3о  ,A=<9!& +5=B >C1"˼ +C>17(CN@ ?:0K:!  M2#.)G-ܻ HI- & 9& /:4 #%%ż B>2@;  / CR=  ! %?[_ $F0'H6#Ⱦ*(.%5HB  L@ ;%3>, űS-"=R- &>;"&9'$# !/ .$/ ި2 ?0/#/  (2 ) :% -!'$6)/ ( :8!/)(" (C'$": ,"8# 8 "  ټ-!:''(  '5()  $$ %  *!0  $+ *   % ( <  & ") ,  #  #( > /1 // ) 0-.%6 F$)*-$2 &>4 & %0"@?%! $99(4B ǽ?",L/ 3' в#2"'9") %5 % 0-(/#A6'(Ӯ 8820 *&YA0!!&521(>&&02& % ɻ  &@"+%'#&%'3F,- " Ͻ$6)/ %*#=<!)  73$,   = " (齷 $'$ $#'< /4 * ,19$2#?-( #! 5>+ .׷' /3 !0+1 "8#)' ں !#@, !  " :!*5    &1 & + !<   -'    4, '" <8&B0* 01 ) ($!0=$.0 "!$" !8 1/( (3!  /$'C!'%:E .) B!$%&      B +;1! 3 0).-䴪$"; /=    4 A  $&#!  :;*1,- $ @I4 /55    =C* 5 '.77 -%  ))-)059-  3 ! !3C7.   ' .C9  K  &&,A;!# ( 7#'' I) / , " D4   '  -  &!'%   -   ?   + +9%&"" 3 ,<  '3(>7G0  ' #." 2#B!%  7"! #  % #       #% 3#   !$#5 !4!,&  $ E6 %+ $) %4 >1.& .4  #.A ')- 9  2) &!&F,' 2&  ) + 9 *)-7 X& >5  ɽ(B;)!- ǩ $6/0 *' *% #F  6!5!/ҽK(BI -ĸ K$$'#@' >%ܸ( -B$ '"$;-  2/+(JJ̷%! ;C$׭3 #!  ($7(&A% $'"0$ (  !   . .  :+,  ( ´#  %;!# ݱ 7    "?$  '' $  0!ٻ/*; 03 "  $ (- ;?: #B.׵ $Z&8#  +    !  !3%  %324-(A 50 %" 6;    ' - .. 1 2 05, '  $-޴ *' #7 , .(  9 !$Ȫ!@/C>%'*  ." 3%" ' ۭ   =B#)  $ & 8-# /A%0'!,# 4(),έ ZZ)պ  )2@O̫$+.130;!-)-!+CL1(׾ &D. !&,VD?Ѽ BPҬ  (bV@ؾ"0'/.  *4!7Z:, $5Ի " 8O 83 # 14!N9M 0LOG0Ķ8)"?4,$"@3ݮ@1(- &'L0%'DO) %  6G*DU0" 4&鿹 A 48 +&(>"%9S- ӽ -"'/ 804/(-е   =979*$#)8(9 )=K7 )%$-%6C(,>I%+'"'%,1:9/"  "<3:A &=60=15  '"+4L-  CFCN0߰ 45 %/[1˽  % "@CA(6!*6>GO)ө/345  =2C< 9/.+)#" 1>+BA9;-ó  16:3' ⹶ /# (%2 !:.淬, 3<" *$I#-),# ==) +*3" #<.4*% +0 * &  B>   7 &" '1%"" '+'ܽ4.1$*0(1  *;. *$  '#$>F( %%2/$120! %Խ#*+   !<8 6- <6 0,#9) "  "+3 ׽-% 3<'",:+$% +3C7 (;3ǿ $#  &$   !5< # ,+   $#",  " ",#    #*   &''( /- !.!  %# ( κ #@C? (2050"**.*!'$!""!Ϸ!:CE@-Ϳ#673+ *31( #55+ν)-69" !,,-(#)% ""   Ķ3AA;/ .82* &00'  14.')48' )+,( '$! ! ӿ':?:0&11, !).+060 ľ")49- &+..  $'% #      $ 7<80#-/"$+'! !          *Ѻ%DMF4Ҽ#2<9#,4- ))!       +ܿ0M[J'˱!7JE# Ⱥ*99# %0, )( '* $                &&    &)$&,* ##                                                                   $    &         2 (   #                           "#'          *3  !#     1   6   9# '   5  &     $2 0  " *  #  +    (&%  ,  % ,  4  !-  (  ! # & %" "  #$  % + !;%   !  2   $ &       "*6'"$"  '9   %/   # !   ,)%!*3&+  "  &76"      "0;&  $,      &    "      $        "         $       ,  %   +   #   )            !   !       '0"       (%       &         %$        $            "     ""            #                                     "%  !  $       #  !'$       #!    "%#      $"         %(      $&                                                  "#                                                                                 +O                                                                   !            !   " !                                        ) "  '       # !*               !  $        " &* #  $%&$   %$% "  - #' )                "                               #!!      * ,"    # $ $ ,  )    '                                                                                                                    AO                       Ӿ   %% !ų۷   (,)$(!ӿặ &  4"";*$( ʻ͡ )1*"<&H-,! ɼ, , 3&G51,³) ##"&# -$*"'A64/ ȯ / +@((%"6>2C%-%ۭ%%%+"4 .@1>9-şŘ5#"+);>#/<- %ج#3+ * I/0;$ ۿ 1 !.'1K49̷١ :! A0#4& ʿ6 $ *!5(#%* + *$(  Ͷ/ "##$ʹ    "         ! ܽ   #"$'&"% ʷ" ( +,#% -л 0)&!'3)!+0 ÷ܳ /# 3;6"$5Ѽ / . !$)C&(-+ ǰ /* +H3*0+ ݶ%43 ,6H5/ ˧( !#. $M&73ᰟ1), G?/?"!%( , +J<-ڧ0)% F2/<"!'( +B80!ܯѾ/ %:1      ʻ                                         ɽ     !& ;!#Ƴ( !/1!(  ȿͺ  #%+4  ͸ "  #0!#3$μ ,$  ! &2!(  Ƚ 0 # )**(3 Ż  %%%(# î"+ " *!3' ĩ'* &  *"8) ɪ !.% '#;* ĸ (! %"!*  ŷ(  !   ˾                                          !! ,"+   0%#'!ۿ". /%.%Ƴ& -# .#" Ϻ$! 2%!+$ Ӿ% 5-!($ ò$%"52&$ Ĵ!  #$ 03*#ö  %&-+  Ƶ %.$ + ٿ!  ί   .* !   ,(  !                                     " &&    !-%# Ͷ  %'1#$˻ %"7("̿  -91! ÷  $)7(²   &91!# Ǻ   %!<+% ʹ !$8( " ζ  ò# (& .(+  ƺ "  ' $/  μ# %'  ' /(! ۿ! ) *%0  κ$ &  #$-%$ɼ"! & #,$%Ƚ # & #*&$ɻ ! $ )##̺  "   )!" λ! $! "($ վ' ''( '$%" ɼ1#!ο *   ""  ¹ " #""ƽ 0  %&" Ͽ   "%%  ƻ 1  '# ¶  '$ ɻ3  "'  ÷   ("# ʺ2 !'  ĸ ) '! ˿ (˽ %&'  #)   ŵ  +*ɽ" '#ű"  $(ı "  "* ó  !!)  % +ʿ   ' -ʾ "  (-˾ %  (+̿    ))"                                              !    м7 "   Ķ+        ̵ 7       ɿҺ     ι .      ͺ "#     ƹ*    *      0     ƻ 0    ż 0     ¼ .!    *"        $ $       $ "      #                       +O         "-76;;6.+'  $ , ,0* *)  +.("/8:99840+$     &%       %$,:<,#' "!)!  #(H@ "3$ ſ  ('10#BP.0G8#"1 %'/+$03+( & :T.1K=%'4) )'"##27!!*&' 1Z) 0XL.-DB)/% ǹ',08>=80-++&&*/0/+(((&$#$                     !!$$$!                      +.$%1,!><*=9$ '!  *45,#4?;3&$! ɾ/R9,LWE29=1* !   1?<%(AF?1%(+" ¹9P#+Z\A0EG=:(/+  Ż#/G8*19H>(""(!ĹFQ#2YXJ:GB541<6 /б  ;N7/3?JD*##"˺J:)DTVFOO@2057% !")8A:,+.0$ º" !$.7HNE0 !& ;F ! +!)/.ݽ%LYZWURP[\N!4DKD8(º;=/>L@8',.(;=䫇+>@B>TgjdW9ڶ .=JA.ʵ&RnV92 ѻ(5+4+%..ߦ=\cY\ZVVN:$˷)76.:\hQ*+EOJD7'#  ក-Pp}ugV=-Ы 0?MTN<¾',*(),. ):3ʽ /KZZO?)ʧ*=JR\ZL<6B?93+(ʹ")ZG& Ǿ%@GM@*¯02-$ 5ϵ7PXYN4);;6! "! *++# ! #,," ,2+ 0.*4!ٵ .1& ϴ"5EGC. 542' &0,)ҽ  "%!Ŭ *8FC9& )&  Բ8TY[TB/Ѿ5FH:+#  (+51ŶJSI:-ڸ3^ghdS6(?HKD) ŭ    2(#FPHF1β ?\eidN1Ż27<44.#" "FVK@5ֺ-VafhW9)7ADB-Ϸ   ſ?PNC: ؽ K\eh^F#$-2.26%ij$'+# !%!ŵF[XF8Ǫ Nbjm`Eƽ,;ILC, ­! +̯ Ҷ 8Wik^G+ 3JXZQ6ʶ);AIG;Ȭ 0CG@9(®#DZaZJ5!Ľ/EQRB$ľ-8AC?- Ƕ1;:6+ 'DVYP@2#ɸ0DI@+,6>C<%/2., ε;KNH>6%θ4>=.'/8>8%!$"" #5><70( ɹ#($ &0.*%! "**'$#    {eʎʎ db 10,11,21,31ne+3,x0KHzounterler als RND-Ersatz***** l` H~02#F| include "debug.mac"c"zunterer als RND-Ersatz'. $z,:X include "debug.mac"ac"zounterls RND-Ersatz, l` H 2F4 db 10,11,21,31e+3,xdata'FE:\LYNX\TETRIS\TETRIS.ASM'p. *JH~MzP`JFE:\LYNX\TETRIS\Q_IRQ.INC'p. *JH~MzP`J  FE:\LYNX\TETRIS\MOVE.INC'p. *JH~MzP`J&1&1FE:\LYNX\TETRIS\SCREEN.INC'p.; Hf288FFound E:\LYNX\TETRIS\TETRIS.ASM 157: .again jsr GameOvereSCBYNX\LYNX_ASM\DEMO\DEMO.ASMSM4%ɂ^vE:\LYNX\LYNX_ASM\GETIT.ASMpd  Found E:\LYNX\TETRIS\SCREEN.TT( f^M 157: .again jsr GameOverdeSCB H6̒E:\LYNX\TETRIS\SOUND.VARpc'' ##4,# l` H##.2'F,#ȎȎ$ f^  #1#0,#2 l H#3#.2F,#1 sr StartSampletaes FelT\LT\LrT dw EndeSCB1,BackSCBda"@~?~ ɬ, l` H 2F4 db 10,11,21,31e+3,xKHzunterer als RND-@$̒`?A@L$, x@ 'v̞̠(''̮p.϶`?Appd"pH\'t`L~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ `ff~|~<<~|<``f8ff`f`p`f`f`ffff`f`x`f`fFb FffLffFbfbl~f~f<<88<|>8 >f<fff`pf`p~`ff~~`8~`8f`ff``` ``f`ffbb`Lb`Lf`<~|~<|`b`fff`<><p`fff~>><<~f<|<``fb `fbff`<><`fp0`fpff`Fff`fx`fxff`>ff||<||<f|`ff~`f`fff`Fff``x`xfff``x``>ff|`<|<~|||`<|`ff~```fff````ff`` `` fff````ffb``F`Ffff``F``~``<~`|<<`<~`ff`` `` fff```ffb``F`fff`F`~>><~~<`|<>~<``~``<~`~|f|f`<~`` `b` ffff`b``<><`0`p`0ffff`p`~>><~~<`f<`f~<``` `b` f`f`b``<><`0`p`0f`f`p``Fff``x`f`f`x``>ff|`<|f||`<|`ff~```f`f```Fff``x```````x``>ff|`<||||||`<|`ff~```````````ff`` `` ````````ffb``F```````F``~``<~`||~<`<~`ff`` `` ff`f```ffb``F`ff`f`F`~>><~~<`f|~f~<`   |`<f`F <>` <>f>`<><`|8f   b``0ffp<|l<|<f0|~~>`f`f`~f~ff0fff`~ include "key.mac" include "comlynx.mac" include "file.mac" path "..\vardefs" include "mikey.var" include "suzy.var" include "irq.var" include "debug.var" include "serial.var" include "key.var" include "sample.var" include "file.var" path "..\tetris" include "screen.var" include "move.var" include "sound.var" path ".." ;******************************************************************** BEGIN_ZP irq_vectors ds 16 temp ds 2 ptr ds 2 ptr2 ds 2 FlipFlag ds 1 ; <>0 => FLI00 sta $fc92 sta _SPRSYS jsr Init_IRQ jsr Init_RND jsr InitKey lda #Pause1 sta PausePtr+1 lda #Pause2 sta PausePtr+3 SCRBASE screen0,screen1 lda #5 sta LastLevel Start INITCOMLYNX jsr InitSound jsr InitSample cli lda #IntroSmp jsr StartSample bra.s .cont0 .loop00 lda #RestartSmp jsr StartSample****** BEGIN_ZP irq_vectors ds 16 temp ds 2 ptr ds 2 ptr2 ds 2 FlipFlag ds 1 ; <>0 => FLIP END_ZP ;******ta _SPRSYS jsr Init_IRQ jsr Init_RND jsr InitKey lda #Pause1 sta PausePtr+1 lda #Pause2 sta PausePtr+3 SCRBASE screen0,screen1 lda #5 sta LastLevel Start INITCOMLYNX jsr InitSound jsr . .cont0 .loop00 lda #RestartSmp jsr StartSample .cont0 stz PauseEnable jsr get_level dec PauseEnable jsr InitPlay jsr RedrawField jsr StopSample FLIP .loop0 jsr RedrawField jsr choose_stone bne .again lda drop_init jsr Redraw bra .main .again jsr GameOver .ok jmp .loop00 GetNetPIN rts ;*************** ;* Level whlen ;*************** get_level:: lda LastLevel sta Level lda #MainScreen1 jsr DrawSprite FLIP .loop lda #MainScreen1 jsr DrawSprite lda Level jsr DrawArrow FLIP .wait jsr ReadKey beq .wait lda Button ldx Level bit #_FIREB+_FIREA bne .exit lda Cursor bit #$80 beq .cont0 dex beq .wait stx Level bra .loop .cont0 biynx and #$7f dec beq .do_lines dec beq .do_pause dec beq .do_restart dec bne .exit jsr WaitComLynxByte ; Level holen bcc .exit pha jsr WaitComLynxByte ; Button holen plx bcc .exit sta Button stx Level sec rts .exit clc rts .do_lines jsr WaitComLynxByte bcc .exit jmp AddLines .do_pause lda #_PAUSE sta Button sec rts .do_restart jmp Start lda #_RESTART sta Button sec rts ;********************************************************************* p-------------- Stein50 db 2,$10,2,$10,1 db 2,$10,2,$10,0 Stein51 db 3,$11,$00,1 db 1,1 db 3,$11,$00,0 Stein52 db 1,1 db 2,$10,2,$10,1 db 2,$10,2,$10,0 Stein53 db 1 db 3,$11,$00,1 db 3,$11,$00,0 ;--------------- Stein6 db 2,$10,1 db 2,$10,1 db 2,$10,1 db 2,$10,0 ;--------------- ;- DIGI-Digits - ;--------------- _0 db 3,%01111101,0 db 3,%11000011,0 db 3,%11000011,0 db 3,%01101001,0 db 3,%11000011,0 db 3,%11000011,0 db 3,%01111101,0 db 0 _1 db 3,%01101001,00000011,0 db 3,%01101001,0 db 0 _5 db 3,%01111101,0 db 3,%11000010,0 db 3,%11000010,0 db 3,%01111101,0 db 3,%10000011,0 db 3,%10000011,0 db 3,%01111101,0 db 0 _6 db 3,%01111101,0 db 3,%11000010,0 db 3,%11000010,0 db 3,%01111101,0 db 3,%11000011,0 db 3,%11000011,0 db 3,%01111101,0 db 0 _7 db 3,%01111101,0 db 3,%10000011,0 db 3,%10000011,0 db 3,%01101001,0 db 3,%10000011,0 db 3,%10000011,0 db 3,%01101001,0 db 0 _8 db 3,%01111101,0 db 3,%11000011,0 db 3,%l an X/Y ; ausgeben ;*************** DrawNumber4:: lda #$e4 sta DigitSCBcolor+1 phx phy stx DigitSCBx sty DigitSCBy ldx #1 .loop lda Number,x lsr lsr lsr lsr jsr DrawNibble lda Number,x and #$f jsr DrawNibble dex bpl .loop ply plx rts DrawTime:: lda #$ef sta DigitSCBcolor+1 lda #33 sta DigitSCBx lda #2 sta DigitSCBy ldx #1 .loop lda sekunden,x lsr lsr lsr lsr jsr DrawNibble lda sekunden,x and #$f jsr DrawNibble inc DigitSCBx inc D dex bpl .loop .exit rts DrawLevel:: lda #$ef sta DigitSCBcolor+1 lda #50 sta DigitSCBx lda #46 sta DigitSCBy lda Level and #$f DrawNibble:: tay lda DigitAdrLo,y sta DigitSCBdata lda DigitAdrHi,y sta DigitSCBdata+1 lda #DigitSCB jsr DrawSprite clc lda DigitSCBx adc #5 sta DigitSCBx rts ;*************** GameOver:: lda #EndeSmp jsr StartSample lsr lsr jsr DrawNibble lda sekunden,x and #$f jsr DrawNibble inc DigitSCBx inc D dex bpl .loop .exit rts DrawLevel:: lda #$ef sta DigitSCBcolor+1 lda #50 sta DigitSCBx lda #46 sta DigitSCBy lda Level and #$f DrawNibble:: tay lda DigitAdrLo,y sta DigitSCBdata lda DigitAdrHi,y sta DigitSCBdata+1 lda #DigitSCB jsr DrawSprite clc lda DigitSCBx adc #5 sta DigitSCBx rts ;*************** GameOv lda #EndeSCB jsr DrawSprite ; gesamtes Feld lschen stz PauseEnable FLIP jmp WaitButton EndeSCB db $ lda ComLynxPIN beq .cont lda #$82 jsr SndComLynxByte .cont jsr RedrawField jsr DrawStone FLIP jsr RedrawField Pause3 lda #0 sta $fd01+SmpTimer*4 jmp DrawStone PauseSCB:: db $c0,$90,$00 dw PauseSCB1,BackSCBdata dw 60,0 dw 40*$100,96*$100 db $00 PauseSCB1 db $00,$10,$00 dw PauseSCB2,PauseSCBdata dw 74,4 dw $100,$100 db $03 PauseSCB2 db $05,$10,$00 dw 0,PauseSCBdata dw 73,3 dw $100,$100 db $0f PauseSCBdata ibytes "pause" ;*************** ;* Pfeil zeichnen ;lda ScreenBase sbc #<(SCREEN.LEN-4) sta $fc08 lda ScreenBase+1 sbc #>(SCREEN.LEN-4) sta $fc09 bra .cont .ok lda ScreenBase sta $fc08 lda ScreenBase+1 sta $fc09 .cont lda #1 STA $FC91 STZ $FD90 .WAIT STZ $FD91 BIT $FC92 BNE .WAIT STZ $FD90 pla rts ;*************** MainScreen1 db $c0,$10,$00 dw 0,MainScreen1Data dw 0,0,$100,$100 db $01,$23,$45,$67,$89,$ab,$cd,$ef MainScreen1Data ibytes "Main1" ComLynxData ibytes "comlynx2" PreviewData ibytes "preview" Soun .loop0 stz StoneStat,x dex bpl .loop0 stz Number stz Number+1 ldx #131 ldy #3+6*11 .loop1 jsr DrawNumber4 FLIP jsr DrawNumber4 tya sec sbc #11 tay bcs .loop1 ldx #0 .loop2 stz field-50,x dex bne .loop2 ldx #290-256-1 .loop3 stz field+206,x dex bpl .loop3 stz sekunden stz minuten stz points stz points+1 stz points+2 lda Level ldx #10 jsr mulAX sta lines_down stz lines stz lines+1 sec lda #10 sbc Level ldx #12 ber+1 cld tya asl sta CurrStone4 adc CurrDir tax .loop0 jsr Random and #$f cmp min_x,x blt .loop0 cmp max_x,x bge .loop0 sta CurrRow inc asl asl adc #60 sta CurrX lda start_y,x sta CurrLine asl asl sta CurrY clc lda start_yadr,x adc CurrRow clc adc #field adc #$ff sta CurrFieldAdr+1 txa asl tax lda StoneData,x sta StoneSCBdata lda StoneData+1,x sta StoneSCBdata+1 lda CurrStone asl asl asl db 9,8,9,9 db 9,8,9,9 db 8,9,9,9 db 9,8,10,8 db 9,9,9,9 start_y db -2,-2,-3,-2 db -2,-2,-3,-2 db -2,-2,-3,-2 db -2,-2,-3,-2 db -2,-3,-2,-2 db -3,-2,-3,-1 db -2,-2,-2,-2 start_yadr db -30,-30,-40,-30 db -30,-30,-40,-30 db -30,-30,-40,-30 db -30,-30,-40,-30 db -30,-40,-30,-30 db -40,-30,-40,-20 db -30,-30,-30,-30 max_y db 23,23,22,23 db 23,23,22,23 db 23,23,22,23 db 23,23,22,23 db 23,22,23,23 db 22,23,22,24 db 23,23,23,23 ;*************** ;* Stein poda CurrStone4 clc adc CurrDir tax lda CurrRow bmi .exit bne .cont ldx CurrStone cpx #5 bne .exit ldx CurrDir bne .exit dec bra .cont1 .cont dec cmp min_x,x blt .exit .cont1 sta CurrRow sec lda CurrFieldAdr sbc #1 sta CurrFieldAdr bcs .ok dec CurrFieldAdr+1 sec .ok lda CurrX sbc #4 sta CurrX dec RedrawFlag lda #0 rts .exit lda #$ff rts ;*************** ; Stein eine Zeile tiefer ;*************** move_down:: jsr test_down bne .exit clc ldbcs .ok0 lda #9 .ok0 sta $fd20+AUD_FREQ,x stz RedrawFlag jsr test_down bne .exit clc lda CurrStone4 adc CurrDir tax lda CurrLine cmp max_y,x beq .exit lda #3 inc CurrY bit CurrY beq .ok inc CurrY bit CurrY bne .cont1 .ok inc CurrLine lda #3 jsr IncPoints clc lda CurrFieldAdr adc #10 sta CurrFieldAdr bcc .cont1 inc CurrFieldAdr+1 .cont1 dec RedrawFlag jsr Redraw bra drop1 .exit ldx CurrChannel stz $fd20+AUD_FREQ,xy rts ;*************** Set21,20,19 db 1,11,20,21 db 10,20,21,22 db 10,11,20,30 db 9,10,11,21 db 1,10,11,20 db 10,11,21,22 db 11,20,21,30 db 9,10,20,21 db 0,10,11,21 db 11,12,20,21 db 10,20,21,31 db 10,11,19,20 db 11,20,21,22 db 10,20,21,30 db 9,10,11,20 db 1,10,11,21 db 1,11,21,31 db 19,20,21,22 db 0,10,20,30 db 9,10,11,12 db 10,11,20,21 db 10,11,20,21 db 10,11,20,21 db 10,11,20,21 ;*************** test_line:: ; vollstndige Zeilen suchen ;*************** st#0 sta ptr2+1 dex bpl .loop2 dec LinesFlag lda #LineSmp jsr StartSample jsr RedrawField FLIP sec pla sta ptr sbc #10 sta ptr2 pla sta ptr+1 sbc #0 sta ptr2+1 inc CurrLines ; wieviele Zeile diesmal .patch lda #$10 jsr IncPoints asl .patch+1 dec temp bpl .loop0 .exit sed clc lda lines adc CurrLines sta lines lda lines+1 adc #0 sta lines+1 cld lda CurrLines lsr beq .exit1 tax lda ComLynxPIN beq .exit1 lda #$81 jsr SndComLynxByte s:: ldx #10 cmp #2 bne .ok ldx #20 .ok stx temp txa clc adc #<(field-50) sta ptr lda #>(field-50) bcc .ok1 inc .ok1 sta ptr+1 lda #<(field-50) sta ptr2 lda #>(field-50) sta ptr2+1 sec lda #34 sbc temp tax ldy #0 .loop1 lda (ptr),y sta (ptr2),y iny bne .loop1 inc ptr+1 inc ptr2+1 .loop2 lda (ptr),y sta (ptr2),y iny dex bne .loop2 ldx temp .loop3 jsr Random and #$7 inc inc cmp #9 bne .ok2 lda #0 .ok2 stldy testr_y+2,x ora (ptr),y ldy testr_y+3,x ora (ptr),y tax rts testr_y db 11,21,32,32 db 23,31,31,31 db 22,32,42,42 db 22,32,32,32 db 12,22,32,32 db 21,33,33,33 db 22,31,41,41 db 22,32,32,32 db 12,22,31,31 db 22,33,33,33 db 22,32,41,41 db 21,32,32,32 db 11,22,32,32 db 23,32,32,32 db 21,32,42,42 db 22,31,31,31 db 22,33,33,33 db 21,32,41,41 db 22,31,31,31 db 12,22,32,32 db 12,22,32,42 db 33,33,33,33 db 11,21,31,41 db 23,23,23,23 d ora (ptr),y ldy testl_y+3,x ora (ptr),y tax rts testl_y db 19,29,39,39 db 29,39,39,39 db 29,40,50,50 db 30,38,38,38 db 20,30,39,39 db 29,39,39,39 db 29,39,49,49 db 28,40,40,40 db 20,29,39,39 db 29,40,40,40 db 30,39,49,49 db 28,39,39,39 db 19,29,40,40 db 30,39,39,39 db 29,39,50,50 db 29,38,38,38 db 30,39,39,39 db 29,39,49,49 db 28,39,39,39 db 20,29,40,40 db 20,30,40,50 db 38,38,38,38 db 19,29,39,49 db 28,28,28,28 db 29,39,39,39 db ny ora (CurrFieldAdr),y ldy #20 ora (CurrFieldAdr),y rts testd02:: ldy #10 lda (CurrFieldAdr),y ldy #31 ora (CurrFieldAdr),y rts testd03:: ldy #19 lda (CurrFieldAdr),y iny ora (CurrFieldAdr),y iny ora (CurrFieldAdr),y rts ;--------------- testd10:: ldy #20 lda (CurrFieldAdr),y iny ora (CurrFieldAdr),y rts testd11:: ldy #20 lda (CurrFieldAdr),y iny ora (CurrFieldAdr),y iny ora (CurrFieldAdr),y rts testd12:: ldy #11 lda (CurrFieldAdr),y ldy #30 ora (dAdr),y rts ;--------------- testd30 ldy #10 lda (CurrFieldAdr),y ldy #21 ora (CurrFieldAdr),y rts testd31 ldy #12 lda (CurrFieldAdr),y ldy #20 ora (CurrFieldAdr),y iny ora (CurrFieldAdr),y rts testd32 ldy #20 lda (CurrFieldAdr),y ldy #31 ora (CurrFieldAdr),y rts testd33 ldy #11 lda (CurrFieldAdr),y ldy #19 ora (CurrFieldAdr),y iny ora (CurrFieldAdr),y rts ;--------------- testd40 ldy #20 lda (CurrFieldAdr),y iny ora (CurrFieldAdr),y iny ora (CurrFieldAdr),y rts testd53 ldy #9 lda (CurrFieldAdr),y iny ora (CurrFieldAdr),y iny ora (CurrFieldAdr),y iny ora (CurrFieldAdr),y rts testd6 ldy #20 lda (CurrFieldAdr),y iny ora (CurrFieldAdr),y rts ;*************** ;Stein drehen falls mglich ;*************** rotate:: lda CurrDir pha clc adc #3 and #3 sta CurrDir tay clc adc CurrStone4 tax lda CurrRow cmp min_x,x blt .exit cmp max_x,x bge .exit sty CurrDir tya asl sta CurrDir2 phx jsr tes8; TETRIS bzw. QUADRIS ; begonnen : 211293 ;vorteiler set 4 vorteiler set 12 ;vorteiler set 19 SmpTimer equ 7 IntroSmp equ 2 SettleSmp equ 3 LevelSmp equ 4 LineSmp equ 5 EndeSmp equ 6 RestartSmp equ 7 path "tetris" include "q.mac" path "..\macros" include "help.mac" include "if_while.mac" include "mikey.mac" include "suzy.mac" include "irq.mac" include "debug.mac" include "key.mac" include "comlynx.mac" include "file.mac" path "..\vardefs" include "mikey.var" n0 ds SCREEN.LEN screen1 ds SCREEN.LEN ComLynxPIN ds 1 count ds 1 END_MEM ;******************************************************************** start RUN LOMEM sei ldx #0 txs if 0 .wait1 inc $fda0 lda $fcb0 beq .wait1 bit #1 beq .ok1 ldx #19 stx patch0+1 endif .ok1 CLEAR_ZP CLEAR_MEM INITMIKEY INITSUZY FRAMERATE 75 SETRGB pal INITIRQ irq_vectors lda #%01100000 sta $fc92 sta _SPRSYS jsr Init_IRQ jsr Init_RND jsr InitKey lda #Pause1 sta Pa jsr drop bra .cont jsr test_line bra .loop0 .no_drop bit #_FIREB beq .no_rot jsr rotate bra .cont .no_rot lda Cursor bit #$10 beq .no_right jsr move_right bra .cont .no_right bit #$20 beq .cont jsr move_left .cont lda droptimer bne .no_move lda drop_init sta droptimer jsr move_down beq .no_move jsr SettleStone jsr test_line bra .loop0 .no_move jsr Redraw bra .main .again jsr GameOver .ok jmp .loop00 GetNetPIN rts ;*************** ;* Levela ComLynxPIN beq .exit1 lda #$84 jsr SndComLynxByte lda Level jsr SndComLynxByte lda #_FIREA+_FIREB jmp SndComLynxByte .exit1 rts ;*************** mulAX:: sta $fc52 stx $fc54 stz $fc55 .wait bit $fc92 bmi .wait lda $fc60 rts ;*************** ;* ComLynx-Events ;*************** TestComLynx:: lda ComLynxPIN ; beq .exit jsr RecComLynxByte bcc .exit tax bpl TestComLynx and #$7f dec beq .do_lines dec beq .do_pause dec beq .do_restart dec bne .exit jsr Wlude "file.inc" path "..\tetris" include "screen.inc" include "move.inc" include "q_irq.inc" include "q_key.inc" include "sound.inc" ENDIS.OBJC4.(. ******* Search messages: Project help file not found or not active ******* Search messages: Found E:\LYNX\TETRIS\SCREEN.INC 611: GameOver:: lda #*FNuE----------------------------------------- - LYNXER 3.11 (c) 1993 Bastian Schick - ----------------------------------------- konnte nicht gefunden/geladen werden ! Datei schon vorhanden ! berschreiben (J/N) ? (K)arte (u)nd/oder (D)isk ? Speicherbedarf zu gro Schreibe auf RAM-Karte . ---- TASTE ---- Lade :INSERTſrh1n ^BUb(WP<۰.|`a$qY kdK!vP5݈(T#XresRΛԅq(yn]NHl d  dd Ɉ   ޠ0):0)8WIRBEAM LSFVhE:\LYNX\tetris\tetris.MAKINSERT.OBJTETRIS\TETRIS.OBJAM.LSF\'R=|+A+ >: eɊΕ}#V9{U &\r)x7Z< 9)Wc2etJQmW(z( z9oh1g!\ zC} `3:JH`U_e $ ꭒJL (*$  13.12.9322:30:48(c) 1993/94 B.Schickpwpw30$wgMDROvbKRwRCz'BS93xtdAzCC %)59DPh ) CC(*$$ ~ ` E` h a Ki/P0!1P2x))#(g, E D j sHX G Gd- D- a J GƘ$0 J waPlkdj i+ (& h@ڦ#"2d#8``ڦ 2  &d(8``d'd% F %$'` L ,P`PL8`&@S Z zGzPL& @h@ZfO Gzh@,` HG IHd4d3d5 II8 II7 II6 IP)P I`` I"6h@7h@8h@h@3/3 I5JJJJcH*e44"6h@7h@8h@d35)cH*e44"h@ @D)DP) P%$4d3`d9 I iIiI HS\R RoJ Ri RS`J RiJiiJ\`F.K=K&KDK(K/K$K6K%KKLRK]JR ŐX 6XKKLLLLLXXXXXVXLKMKKLRKKKKKKKKK LL L+L6LALMLXLcLoLzLLLLLLLLLŐ`NNJNI 3300222200333T!SS 0fB * "         ,123333333333213300222200333xC F;PBP RƘ$0`xC F J KKƘ$0 JLKKRP]J<(`bPrPJrPI 1 2 2 2 2 2 1  0 0 0 0 0 ?HBL1Y<6ˆ@(# x0 I@:<'ʃ<<<<8ڸ:P -:JE@˷;?7C ζ11cM +C2^sC1.ਘIR '䱹 1/ߘб$W+k^ >Z-(C,mm2&CGO*3Y۽'5SfI<. EiS ѱ*:2%#ƹ ?I*I۸ M[S;#Ҥ%KW) ⼽1- + (( :C"IJ'*8([Q$ J$6OO40 ' #ٺ /48 ܥ%() /-' !9R5Զ ,-)% 㿰 ᵤ K3Ȼ *JI 8H6$ .KY-/G5-1 ٰ ּ  *6! HgTR[d%% >1%ɬ$$)Y?& Q2+>4<+,#[? ( '޲HA&"X84: E? * + LP/ﴟ!7 1X"ʻ &-" .JG&!0= NLžDAŴ!1#>; !+?2 +O:14;e[%)˫ +.5.ګ"ý2׶ $%M]Q%')( "'!@-? Ϳ$)7%  "B;&#$  &0%'$ҳ  $* Ш*' !7AAݸ)*B8  !*/ "1$0#  ,7   K9͸ 2 % *. 4 7)7% "."<#:&A ֤ (;Kɾ'/:*" 6 2&!A3 վ=+ ϱ #'/6< 9:?B+2= & '5$:H˿%HC01!)+'3-! )ұ%.&=#@?9?)(2;*@  +,"! '@9 $ ?: >8$ֽ    @$$)$,7+ %% 'ӿ:  (- .2>D) 6'# #Я') U/    ==* &,+! ( =@ 8   B/  ! &* $#$    %+% 4M" '   )-60%%    W?  + 1"8.    ֵ 32 J8 %; ."'A04 ,3.&)(-#/! ļ-0.B).&'); % (21 !߶5 &3_^0 9! !)6M&  Q) <=C"  -&)  G?-$.  $CCNB*2# #  643-     ݺKW%%#!  2*(%N< " # ( '  )#$)4%! !#ļ +?.  %+ &$'A/ 1,˼A&)1-6>@8D$3$ּ-8F$Q &,% "B2 + Ƶ÷ -,@_G1 , ô ;a4/: #"!+ɸ3))C: - Ắ)4+\[/ %& a^<+#2) IJ.DME)1.$ྷ *PD  *4,DH85 ޶4QR7++@0"$ 㾳Ģ?9)&.3  )ีC&+/KB)E% %3( 16 !(?4;_"#(/ )J22%5.)6&$Ĭ.3-&8Z $ $J+  )A. ܸ $&#N1"3$ ӻ/92  $ϧ)+ )C."  . 68%Ͼ-A@ I< 84?I'03%#" 2Z>#+.gWU) D-)( (=!14ý!,86*)''-G +GW1մ 7 =_,  D+D=  A/AM   3##^I9B4   8U1%0 $NB+&#0$9/*($ )@ A/ N(L1)%*# B-+. G50#@C+ ՛  =='E3<_Qݰ,4@AU* ,!8D'3V?(ׯ !M>&HU0鶄:$','O7"2!º(,O3 2BE2"ݦ6(90PG* !$6%$&I?@0! ت.2 ,WO)&F$ ;?4 $Ѳ 4"$HV>߳0 2 K;&:-$㫣 , #.SD!3䷵20^775 ҧ :  ?F,5ؽ- #*2, ;A8, % 1$  3#',1%  &2"+ 53B:  (6?6 -&-,#. '.>: $3$83 +='. $-#,4  *;>%3$B>+  =3) $"15E0/ + %;I8  % ! 21 "1 @1"% /66A )'$* ) +7)%ٶ ?/ Ա? 2'   +  ' , %>!  Ժ #  '!+ ! (.+  % ! +& ! %  ,  "*("#$ >C1"˼ +C>17(CN@ ?:?][!%2  +DO; .+ (+.PQ)": BN, ()dH  $ !5 *. 8* "  &( # /  # 3"+  "C**   0 &//9#$ $0 ,  $ *!0  $+ *   % ( <-   $*" '(( %" ڸ:= C    "/ 2? ,7"'   =G 2 ")  & 01 + 5 1"&/,3. 57$ %5 % 0-(/#A6'(Ӯ 8820 *&D@5(($ )>/&!  GE $ '%02:01侣 ,%2?23 L2Ư<\DL@LJ ǺA3@J*7ٶ17 &'=<0$ 4Mͼ  A45<&  вտ !E,#Ĵ0)BI=EA, Ƚ 4),MH"ʻ&,)2#?-( #! 5>+ .׷' L5+$ ) .6 *  * # /(2M5 0 #& 8? +0*,#,. 4!* #( 8 , /  -D8 " )(  )+#.? * - ($  (64 0=$.0 "!$" !8 1/( (3! !!   ,C.! '3-7  '  4$#8 ' 9!, 2 (&% ' $ $ '-  %,! *1"# ΢ 5 .+4-* 7A#(= .77 -%  ))-)059-  3 ! !3C71,# -%.,+μ( -7"(+  /;$92Ӵ/39]5&ٵ   ,  /2.+2&',- , -6)) "*  9=1,'$@% 3! %&)ٱ )$ %=zC} `3:JH`U_e )pwpw30$wgMDROvbKRwRCz'BS93xtdAzCC %)59DPh ) CC(*$$ ~ ` E` h a Ki/P0!1P2x))#(g, E D j sHX G Gd- D- a J GƘ$0 J waPlkdj i+ {c yd݉ Eh b  cklk Fc c yd `I NLwD`gfBR RƘ$0BR Rf QƘ$0L ,P`PL8`&@S Z zGzPL& @h@ZfO Gzh@,` HG IHd4d3d5 II8 II7 II6 IP)P I`` I"6h@7h@8h@h@3/3 I5JJJJcH*e44"6h@7h@8h@d35)cH*e44"h@ @D)DP) P%$4d3`d9 I iIiI H I<` H@A D@EA@DAE<9 I=> HBC`W IL IDDE:8;4HZ]JR ŐX 6XKKLLLLLXXXXXVXLKMKKLRKKKKKKKKK LL L+L6LALMLXLcLoLzLLLLLLLLLŐ}i}iii}}}}}}iT!SS 0fB * "         ,123333333333213300222200333xC F;PBP RƘ$0`xC F J KKƘ$0 JLKKRP]J<(`bPrPJrPI 1 2 2 2 2 2 1  0 0 0 0 0 0::800P20`**""0  $,@4!4!4!4!HZ-(C,mm2&CGO*3Y۽'5SfI<. EiS ѱ*:2%#ƹ ?I*I۸ M[S;#Ҥ%KW) ⼽1- + (( :C"IJ'*8([Q$ݨʴ亿>N3%#8c+PR#[T2)E. ',7ڴ+B 07 Թ /-' !9R5Զ ,-)% 㿰 ᵤ K3Ȼ *JI 8H6$ .KY-/G5-1 ٰ ּ  *6! HgTR[d%% >1%ɬ$$)Y?& Q2+; !+?2 +O:14;e[%)˫ +.5.ګ"ý2׶ $%M]Q%')( "'!@-? Ϳ$)7%  "B;&#$  &0%'$ҳ Ƶ 5( ') ʧ4E%";%7A& '5/г &  !*/ "1$0#  ,7   K9͸ 2 % *. 4 7)7% "."<#:&A ֤ (;Kɾ'/:*" 6 2&!A3 վ=+ ϱ #'/6< 9:?B+2= & '5$:H˿%HC01!)+'3-! )ұ% ( %1(1)  ") ' Ż! '@9 $ ?: >8$ֽ    @$$)$,7+ %% 'ӿ:  (- .2>D) 6'# #Я') U/    ==* &,+! ( =@ 8  K.+  *, %?&*I5-$ *ͺ %+% 4M" '   )-60%%    W?  + 1"8.    ֵ 32 J8 %; ."'A04 ,3.&)(-#/! ļ-0.B).&'); % (21, )  ǿ  !"2 2"5# 6  "&-# ! Q) <=C"  -&)  G?-$.  $CCNB*2# #  643-     ݺKW%%#!  2*(%N< " # ( '  )#$)4%! !#ļ +?.  %+ &$- !;2*, ٽ!'  ) =(  , 8F$Q &,% "B2 + Ƶ÷ -,@_G1 , ô ;a4/: #"!+ɸ3))C: - Ắ)4+\[/ %& a^<+#2) IJ.DME)1.$ྷ *PD  *4,DH85 ޶4QR7++@0"$ 㾳Ģ?9)&.3  )ี$JK?&.( /QXI5!)# ظ;-""GZ6   &!巢:#%40" (/ )J22%5.)6&$Ĭ.3-&8Z $ $J+  )A. ܸ $&#N1"3$ ӻ/92  $ϧ)+ )C."  . 68%Ͼ-A@ I< 84?I'03%#" 2Z>#+.gWU) $-M' #ʰ Zq)'"α־/-?3 $9̾ ''-G +GW1մ 7 =_,  D+D=  A/AM   3##^I9B4   8U1%0 $NB+&#0$9/*($ )@ A/ N(L1)%*# B-+. G5&&,."2 / $"&.9B*-+"36(@N Ϳ?$'B?<>ׯ !M>&HU0鶄:$','O7"2!º(,O3 2BE2"ݦ6(90PG* !$6%$&I?@0! ت.2 ,WO)&F$ ;?4 $Ѳ 4"$HV>߳0 2 K;&:-$㫣 , #.SD!3䷵20^775 ҧ :  ?F,5ؽ- #*2,93Ȩ C L@,  ( 342$0 . RP=  &2"+ 53B:  (6?6 -&-,#. '.>: $3$83 +='. $-#,4  *;>%3$B>+  =3) $"15E0/ + %;I8 ,2?B<#=EG ++)5?"! )'$* ) +7)%ٶ ?/ Ա? 2'   +  ' , %>!  Ժ #  '!+ ! (.+  % ! +& ! %  ,  "*("#$ *'# % '%۬ /' & (/!/?][!%2  +DO; .+ (+.PQ)": BN, ()dH  $ !5 *. 8* "  &( # /  # 3"+  "C**   0 &//9#$ $0 ,  $ &/ 4 %4- !$ 4-   $*" '(( %" ڸ:= C    "/ 2? ,7"'   =G 2 ")  & 01 + 5 1"&/,3. 57$  ! 6  2%%  /'  23D@5(($ )>/&!  GE $ '%02:01侣 ,%2?23 L2Ư<\DL@LJ ǺA3@J*7ٶ17 &'=<0$ 4Mͼ  A45<&  вտ !E,#Ĵ0)BI=EA, Ƚ 4),MH"ʻ&,)6?ĵF>/Ƽ5Q#*%̨" &8G.0ƦL5+$ ) .6 *  * # /(2M5 0 #& 8? +0*,#,. 4!* #( 8 , /  -D8 " )(  )+#.? * - ($  (64  % 6>#"4+D" ,    !#4 !!   ,C.! '3-7  '  4$#8 ' 9!, 2 (&% ' $ $ '-  %,! *1"# ΢ 5 .+4-* 7A#(=  "A .  *>  #  !2 1,# -%.,+μ( -7"(+  /;$92Ӵ/39]5&ٵ   ,  /2.+2&',- , -6)) "*  9=1,'$@% 3! %&)ٱ )$ %=- !  5   7>)--ӿ  #:` *()F 2.,,# 2# ,"  <68 *    (  -)0"ٻ+   #5D''  )#  =)& )2, !.ȼ 4K #2 # -"+!//  8C >!$,2<), $&  ?3  / 90 3>+  $  24#  !  #& !0(0 #82 #; +,418 %į %!3%<* ' "7! +6/"ܸ*&'? >1#C/16 !  ˽!, "/:7/1 )+ 1`;$3;). 0'*)I!-+㯼  C)>)B' ϸ MB++ " %4I*135L-)&'75  7C)+!' ;38+ %  3.>/< ,0*  " M?Q@ 9!   )  +   . Ѽ  #(=ƺ 'O( & B  P)!;    )  6& $( .5,7#6!5    &  $$&$ ϸ" 57 " .*- !!$5 6$5 0!8&׺# ; &( &-#%$' *'-A %)Ѽ  &5ϻ *'2" J2&,", $':!,56-!- 4:*ƻ!DB52 -D."6ټ +$ +<<%-%F5*#83*"5=ִC#  $ !4#,B B$/2?,,###28<&"5>(% (5; ջ>aΪD&,+48() C-D/H&䳚7JG'7(6 - +W! %)$$'9% BG:*IF$-(E-">԰"!,CrH/. 2$* ̴+ &KЩ&]+ƽӺ 9#T'˸*0 # 9$M 0J#C%.G#10;%-36ׯ7"Z 4 .IH#ǥ;- " ((% '$ &$׻#B3&?J9" 2HYKʼ7, $VT:! .1E=$ξ+#5FgD%#"3GL) "4SO '#!2.SD  %)5Q8 "ۿ-GN6#+ (TA.5( &"U;;((0AI(  ";[4  Ӹ @60B#-ͯ&'=J "ǹ9(2@; ﵵ3$Ըſ!! #!)$  4D/*, 19&1"5-(9;=$$0 9> 513  %+ Ⱥ 7O*0  ;A6 ';(ɹ # 3#3) !21 )( ##4@#5; $*(' 51 04   ,4:"4/&%%  %6(  ()"+  +)%  +20  !#'((',+)(/- &1 )%/17 +'!  !! /(0''&  1,%&ͼ)2 2'  (#*&%! '02 '   ". #!' &%  "   &! !   ,#!!  -.   $0 !!!+"!4)!& ' ( 0 ')!   ,+   ! 2) .,&  $) &   %)#)  '6   "  "    (   +     !  +  $          $   "     "(((  !'   "! )!1(     $(   +                   '!             %       "$#   ' $(  #           $                                        !                                                                  !         "          !                                   (2+'# JNKAʭ ,>SE4. ѷ+1>I5ɾ-/44# **)$'1-,2$۫ /DBGI ύ ,:471 .61)" /FFB+Ū$,@F3'Ͽ-0;>#!.,.(%)"'*'"&񴠟.GGJG ߽.<770 .93)"0;?4ʳ&,;=( +,41")&%  #% #!ê,FIID# ݿ/;85.!062) *68-̺'+87" 1;;5' *0+#!++!  -50%%-82"!(*-$!$$!!  ):=;1 &42'! *.& !-' $+20  &'( #!ž7@?9-$26-$!)0*  %%# !      *:83),0% #(*!     ¯EYW:Ϧ@VH#BD( 1;1,+"      8@( ¿52&$        &              !%-/ %   -* 9=)#00#%&      *-"$33'#($                                                    =vO  +!    !  1   (D   $  " ! % *   =/2%  7!4- : ,&+     2$4 F%"(   - *'# <               .(+ ,-!-(#   # # $   7$ * - 0  0 0  &%   !    " 3& .)( ! $)  *" 4  $)* "%.&  '!$ -    ,   "   (*&(  /  ) $#&  &"& " .. % #  *(  1  "5*    )       ." *!$  *& "!    /     &%%      #     +         $ "  !      1  "      +       ,           $'             +&    !'      0)           %        "!                                                  !   !  %         "!      !       )'    !%        %              #                                                    #                                                                                                                                                                #&"   #         (            ! !      # %      !          ##$  " %'    %    $ # $ "## !#       & #'  !                                                "$  "       # !   !             #   $"  %& +             "                                                                                                              !(,%I+3-  ȧA 2-416%1H 7' ξ,U3&?*29N4%AʨB=/ 60 H"FG ¾16'(()&/7D7!;Ӽ'J1&1$<2 F7$6ʴ31", /-?-/F&1/仭B ''0 &75)A99б幣1 . *!4(D0.E((2澫#@"*+& -B'A83"ԫ붫-*(#6  <8$&G/4 !!"  !#  !! Ƚ !"" Ƚ!"            "     "$   "&"% ʾ !!)"&!ƶ,7#! ɮ+ !& C(26黰  ('3A 9,"ְտ( % $@1)6#" #  * ,A-3۰۴& '! =6&2'ǫ! * )F$ -/ݲԸ# )8;$/'̰( >,(. 修%  $8$"&% ڽ  " #-0'!$$  " !$  ¯ &                                                    ׽ $  !+ # ʷڹ" :) 39* '  & %'!)  ȷٷ! 8!& 0! 3) "  ±/ !.%  ɹ ),  *%"-(Ŵ. !.%  ɹ "4  $'/  ƶ@ +!!  ν 9 !+ 6                                               (+ *$  ŷ * (0 ** #Ͽ! ' 2! 2տ-# $5"2# ·   '* )% ó$ "2%)    "( &ų   .& γ#   .- , ϯ #   2. ,  ϫ"   5( )  ͪ   " 3) '  ͬ $ 0+ '                                #4( $ Ӻ#   +(!'Ϳ   (&"  ö " ".'"¶ ()!* % )$'( " ('#ĵ$"! ˿ '+ɺ  ' #0ƶ !  %!$. Ŵ % &!+"  ̼  ! $%")&#Ž   &!"# Ⱦ  $ ȿ"* $(!  *   '*"!  )  '*"" ! +  ( *"# # -  (!*!# "/  %)"" ü0  "($ ļ0   *$ƻ/ -#ƺ1 (  ȼ.  %&  ø ) )& ̺ -  . "  0"$'  ͽ &  '&$ ɸ 0   )%!Ŷ3 "  )( λ/  ,%" ö 0" !"+"  ʹ2 !+(  !.$ Ʒ 6  ,% (  * (#̿ (  +#%#ο '   ,#$#   &  $%"  Ž #   )                                                         %"̽&&" &  %  Ƹ &   Ǹ7      ´ ,     ̼ )        Ͽ '       -"      + "    ·)!      ķ+       ȷ/       ȸ        *                                                      !!!&/+  (  !&#'-& ƻ )-626/.,.-!  + $! )*+2215-# '$-1577;.#  / "!#+&%./,,**-*¹                  0.1@9!/;00 5M9_M6=MG,76-  )&.4>2'12-+  J/HWE4CP8>@7.* Ƿ(!-0B@.67.3+º(;.TP>>NG;G@;2(- Ƕ¹ !$.4?E:;>798(;Ƶ&1SB(;TIOL:==.!.,+&*8LI52=@OZG38CA91)# ±½'(,>DC>46:4/) ż '5>91=JOKFB@821."   ##'(+'"   #$('+(&     $$"     !     #$    !              $    !  ;355% !!'4=70176.$                     "!  #3  ,*+  #4BA7ξ )8BGGJLE:".>DC7 Ƕ(/,*$$ 13  !9EE4ŵ 6IPRIA>0+ֹ !,6DE=8 !/43("8I@1 %?KJ-¼"EV_[LB1$! ϳ8I>@:/"ڻ )+'')++ $BH=) ,@JG+̹$CUb_SB)ȱ -CCJ@/" ӽ #..,(!.IK:)ۿ 4IQH%ܾ*C[e^M4˺&JLQK.ĩ3-% CUA-5EL<η6Ndh  "%*& !%/2-!   %&   ȷ #156-   (/++Ʈ#-( Ѭ 0<:83.,  $/-,$    &%.%Ϳ *.) í7>>;7-! )21)   *'.'к!/,' ӵ8. 4T]VE.ܻ6UdicS8/?MNC(#  (/&#AZg\L/ᾡ/Uhnj[> 9HLH2ǩ &941ٱ"PceT;'бC_opjT+1FPRD'ر  )::8$ծ!MacT: §4WlrkZ5 @R\UC#ɨ  %4>?:'ڴEZ^P8%Ī-PgnmZ;=Uc^L,ԭ 1dddd@*~?0"@ ~7~ |h,}'''0X' ' Rt  , zo 0^EndeSmp equ 6qu 6 '3'3y~PzP&y 0zo tJ *JH~MzP`Jaa&FE:\LYNX\TETRIS\TETRIS.MAK'p. *JH~MzP`JFMessagesFHelp: Editor: Messages: selektiert: Blockoperationen: Undo H9%E:\LYNX\LYNX_ASM\DEMO\DEMO.ASMSMpcú''"@7 g"@; H6"@7 "@ $`ƶ̒N`^vE:\LYNX\TETRIS\SOUND.VARpd  ppd"("@@~7~ ##,# l` H##.2'F,# dw EndeSCB1,BackSCBdataes Feld lschenZyPDV','"@@~7~ ##,# l` H##.2'F,# N"@@~7~Ersatz2F,#EndeSCB db $c0,$90,$00; gesamtes Feld lschenp p;T\LT\LT]`C db 10,11,21,310,10,20,21unterls RND-Ersatz jsr GameOverdeSCB̦.INC$źSCREEN.INCE:\LYNX\TETRIS\CREEN.INCnt' |C'ndˠ''''0' `ff`f 888ff fb```ff`f<fff<8<<|p<|p>f<`f`x~`f`f`>>f~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~``<` f`<><<<>< < `8 < `8f`Fffx`fff`>ff<||f|`ff~`fff`ff``fff`ffbF`fffF`~~~|<`~~~|<<|`ff``f `fff`ffb`fF`fFffF~>><~f<~f<<|<`~``<~`<~<|~|~`<~`` `b` bfff``b``<><`0`p`0pfff``p`~>><~~<`<fff~~<``` `b` ffb`b``<><`0`p`0ff``p``Fff``x`ff``x``>ff|`<||fn`<|`ff~```fff```Fff``x`ffff`x``>ff|`<||ff~`<|`ff~```ff|f```ff`` `` ff`f```ffb``F`ff`f`F``~``<~`~f~|`<~`ff`` `` f`f```ffb``F`f`f`F`~>><~~<`<~f~<``~``<~`~~~~~`<~`` `b` ``````b``<><`0`p`0``````p`~>><~~<`~~~~~~<``` `b` ff`f`b``<><`0`p`0ff`f`p``Fff``x`ff`f`x``>ff|`<||||~`<|`ff~```ff`f``Fpfffffffpfd|>`fffffff`fpxf`~fffff~`f8pf``fff0ff``fxf`bfff ffb`fLl<``|<`f``f`ff0fff``Fbf`bfbff0fff`b<>0ff>` <[!; TETRIS bzw. QUADRIS ; begonnen : 211293 ;vorteiler set 4 vorteiler set 12 ;vorteiler set 19 SmpTimer equ 7 IntroSmp equ 2 SettleSmp equ 3 LevelSmp equ 4 LineSmp equ 5 EndeSmp equ 6 RestartSmp equ 7 path "tetris" include "q.mac" path "..\macros" include "help.mac" include "if_while.mac" include "mikey.mac" include "suzy.mac" include "irq.mac" include "debug.mac" P END_ZP ;******************************************************************** BEGIN_MEM ALIGN 4 screen0 ds SCREEN.LEN screen1 ds SCREEN.LEN ComLynxPIN ds 1 count ds 1 END_MEM ;******************************************************************** start RUN LOMEM sei ldx #0 txs if 0 .wait1 inc $fda0 lda $fcb0 beq .wait1 bit #1 beq .ok1 ldx #19 stx patch0+1 endif .ok1 CLEAR_ZP CLEAR_MEM INITMIKEY INITSUZY FRAMERATE 75 SETRGB pal INITIRQ irq_vectors lda #%011000************************************************************** BEGIN_MEM ALIGN 4 screen0 ds SCREEN.LEN screen1 ds SCREEN.LEN ComLynxPIN ds 1 count ds 1 END_MEM ;******************************************************************** start RUN LOMEM sei ldx #0 txs if 0 .wait1 inc $fda0 lda $fcb0 beq .wait1 bit #1 beq .ok1 ldx #19 stx patch0+1 endif .ok1 CLEAR_ZP CLEAR_MEM INITMIKEY INITSUZY FRAMERATE 75 SETRGB pal INITIRQ irq_vectors lda #%01100000 sta $fc92 s sta droptimer .main stz RedrawFlag jsr ReadKey beq .cont lda Button bit #_FIREA beq .no_drop jsr drop bra .cont jsr test_line bra .loop0 .no_drop bit #_FIREB beq .no_rot jsr rotate bra .cont .no_rot lda Cursor bit #$10 beq .no_right jsr move_right bra .cont .no_right bit #$20 beq .cont jsr move_left .cont lda droptimer bne .no_move lda drop_init sta droptimer jsr move_down beq .no_move jsr SettleStone jsr test_line bra .loop0 .no_movet #$40 beq .wait inx cpx #10 beq .wait stx Level bra .loop .exit lda Level sta LastLevel lda ComLynxPIN beq .exit1 lda #$84 jsr SndComLynxByte lda Level jsr SndComLynxByte lda #_FIREA+_FIREB jmp SndComLynxByte .exit1 rts ;*************** mulAX:: sta $fc52 stx $fc54 stz $fc55 .wait bit $fc92 bmi .wait lda $fc60 rts ;*************** ;* ComLynx-Events ;*************** TestComLynx:: lda ComLynxPIN ; beq .exit jsr RecComLynxByte bcc .exit tax bpl TestComLath "includes" include "irq.inc" include "serial.inc" include "debug.inc" include "sample.inc" include "file.inc" path "..\tetris" include "screen.inc" include "move.inc" include "q_irq.inc" include "q_key.inc" include "sound.inc" END11,0 db 0 ;--------------- Stein40 db 3,$11,0,1 db 2,$10,1 db 1 db 2,$10,0 Stein41 db 2,$10,1 db 1 db 2,$10,1 db 2,$10,2,$10,0 Stein42 db 1 db 2,$10,1 db 3,$11,0,1 db 2,$10,0 Stein43 db 2,$10,1 db 2,$10,2,$10,1 db 2,$10,0 ;- db 3,%10000011,0 db 3,%10000011,0 db 3,%01101001,0 db 3,%10000011,0 db 3,%10000011,0 db 3,%01101001,0 db 0 _2 db 3,%01111101,0 db 3,%10000011,0 db 3,%10000011,0 db 3,%01111101,0 db 3,%11000010,0 db 3,%11000010,0 db 3,%01111101,0 db 0 _3 db 3,%01111101,0 db 3,%10000011,0 db 3,%10000011,0 db 3,%01111101,0 db 3,%10000011,0 db 3,%10000011,0 db 3,%01111101,0 db 0 _4 db 3,%01101001,0 db 3,%11000011,0 db 3,%11000011,0 db 3,%01111101,0 db 3,%10000011,0 db 3,%111000011,0 db 3,%01111101,0 db 3,%11000011,0 db 3,%11000011,0 db 3,%01111101,0 db 0 _9 db 3,%01111101,0 db 3,%11000011,0 db 3,%11000011,0 db 3,%01111101,0 db 3,%10000011,0 db 3,%10000011,0 db 3,%01111101,0 db 0 DigitSCB db $45,$90,00 dw 0 DigitSCBdata dw _0 DigitSCBx dw 0 DigitSCBy dw 0 dw $100,$100 DigitSCBcolor DB $0D,$E4 DigitAdrLo db <_0,<_1,<_2,<_3,<_4,<_5,<_6,<_7,<_8,<_9 DigitAdrHi db >_0,>_1,>_2,>_3,>_4,>_5,>_6,>_7,>_8,>_9 ;*************** ; vierstellige ZahigitSCBx dex bpl .loop .exit rts DrawLines:: lda #40 sta DigitSCBx lda #14 sta DigitSCBy lda #$ef sta DigitSCBcolor+1 lda lines+1 and #$f jsr DrawNibble lda lines lsr lsr lsr lsr jsr DrawNibble lda lines and #$f jsr DrawNibble .exit rts DrawPoints:: lda #$ef sta DigitSCBcolor+1 lda #25 sta DigitSCBx lda #34 sta DigitSCBy ldx #2 .loop lda points,x lsr lsr lsr lsr jsr DrawNibble lda points,x and #$f jsr DrawNibble igitSCBx dex bpl .loop .exit rts DrawLines:: lda #40 sta DigitSCBx lda #14 sta DigitSCBy lda #$ef sta DigitSCBcolor+1 lda lines+1 and #$f jsr DrawNibble lda lines lsr lsr lsr lsr jsr DrawNibble lda lines and #$f jsr DrawNibble .exit rts DrawPoints:: lda #$ef sta DigitSCBcolor+1 lda #25 sta DigitSCBx lda #34 sta DigitSCBy ldx #2 .loop lda points,x lsr lsr lsr lsr jsr DrawNibble lda points,x and #$f jsr DrawNibble c0,$90,$00 dw EndeSCB1,BackSCBdata dw 60,0 dw 40*$100,96*$100 db $00 EndeSCB1 db $00,$10,$00 dw EndeSCB2,EndeSCBdata dw 74,14 dw $100,$100 db $02 EndeSCB2 db $05,$10,$00 dw 0,EndeSCBdata dw 73,13 dw $100,$100 db $0f EndeSCBdata ibytes "gameover" Pause1:: lda ComLynxPIN beq .cont lda #$82 jsr SndComLynxByte .cont lda $fd01+SmpTimer*4 sta Pause3+1 stz $fd01+SmpTimer*4 lda #PauseSCB jsr DrawSprite ; gesamtes Feld lschen FLIP rts Pause2::*************** ArrowSCB db $45,$90,$00 dw 0,ArrowData dw 77 ArrowSCBy dw 0 dw $100,$100 db $00,$EF ArrowData db 3,%00000010,%11100000 db 3,%10101010,%10111000 db 4,%11111111,%11111110,0 db 3,%10101010,%10111000 db 3,%00000010,%11100000 db 0 DrawArrow:: dec asl asl asl adc #12 sta ArrowSCBy lda #ArrowSCB ;*************** ;* einzelnes Sprite zeichnen ;*************** DrawSprite:: pha sta $fc10 sty $fc11 lda _VIDEODMA and #$2 beq .ok sec dData ibytes "noise" ComLynxSCB db $80,$90,$00 dw 0,ComLynxData dw 15,60 dw $100,$100 db $00,$de,$03,$5F ; db $0F,$23,$EF,$67 PreviewSCB db $45,$10,$00 dw 0,PreviewData dw 65,85 dw $100,$100 db $0E,$F2 pal DP 000,006,00F,0F0,F00,0FF,FF0,F0F,70F,F07,FF7,F77,77F,222,444,FFF [!8; MOVE ; erstellt 231293 Init_RND:: lda $fd0a sta $fd06 .loop dec bpl .loop rts Random:: lda $fd06 lsr LastRND clc adc LastRND sta LastRND rts ;*************** InitPlay:: ldx #7*2-1 jsr mulAX sta drop_init .loop4 jsr Random and #7 beq .loop4 dec sta NextStone rts ;*************** ; neuen Stein auswhlen ;*************** choose_stone:: jsr Random and #3 sta CurrDir asl sta CurrDir2 lda NextStone sta CurrStone tax .again jsr Random and #7 beq .again dec sta NextStone txa inx inx stx StoneSCBcolor tax asl tay sed clc lda StoneStat,y adc #1 sta StoneStat,y sta Number lda StoneStat+1,y adc #0 sta StoneStat+1,y sta Num clc adc #testd_routs sta TestDownVec+2 jsr test_down bne .exit ldx #131 lda CurrStone sta $fc52 lda #11 sta $fc54 stz $fc55 .wait bit $fc92 bmi .wait clc lda $fc60 adc #3 tay jsr DrawNumber4 phx phy jsr DrawPreview FLIP jsr DrawPreview ply plx jsr DrawNumber4 lda #0 .exit rts min_x db 0,0,0,1 db 0,0,0,1 db 0,0,0,1 db 0,0,0,1 db 0,0,1,0 db 0,1,0,1 db 0,0,0,0 max_x db 9,8,9,9 db 9,8,9,9 s. nach rechts ;*************** move_right:: jsr test_right bne .exit lda #3 sta LastMove lda CurrStone4 clc adc CurrDir tax lda CurrRow inc cmp max_x,x beq .exit sta CurrRow clc lda CurrFieldAdr adc #1 sta CurrFieldAdr bcc .ok inc CurrFieldAdr+1 clc .ok lda #4 adc CurrX sta CurrX dec RedrawFlag lda #0 rts .exit lda #$ff rts ;*************** ;* Stein pos. nach links ;*************** move_left:: jsr test_left bne .exit lda #3 sta LastMove la CurrStone4 adc CurrDir tax lda CurrLine cmp max_y,x beq .exit inc CurrY lda #3 and CurrY bne .cont inc CurrLine clc lda CurrFieldAdr adc #10 sta CurrFieldAdr bcc .cont inc CurrFieldAdr+1 .cont dec RedrawFlag lda #0 rts .exit dec LastMove lda LastMove bmi .exit2 lda #0 .exit2 rts ;**************** ;Stein fallen lassen ;**************** drop:: lda #239 ldx CurrChannel sta $fd20+AUD_FREQ,x drop1 ldx CurrChannel lda $fd20+AUD_FREQ,x sec sbc #4 tleStone ; setzt Stein an der akt. Pos. ;*************** lda #SettleSmp jsr StartSample lda #5 jsr IncPoints sec lda CurrFieldAdr sbc #10 sta ptr lda CurrFieldAdr+1 sbc #0 sta ptr+1 lda CurrStone4 clc adc CurrDir asl asl tax lda StoneSCBcolor ldy StoreStone,x sta (ptr),y ldy StoreStone+1,x sta (ptr),y ldy StoreStone+2,x sta (ptr),y ldy StoreStone+3,x sta (ptr),y rts StoreStone db 0,10,20,21 db 10,11,12,20 db 10,11,21,31 db 11,z CurrLines lda #$10 sta .patch+1 lda #<(field+10*23) sta ptr lda #>(field+10*23) sta ptr+1 lda #<(field+10*22) sta ptr2 lda #>(field+10*22) sta ptr2+1 lda #23 sta temp .loop0 ldy #9 .loop1 lda (ptr),y bne .ok1 jmp .next_line .ok1 dey bpl .loop1 ldx temp lda ptr+1 pha lda ptr pha .loop2 ldy #9 .loop3 lda (ptr2),y sta (ptr),y dey bpl .loop3 sec lda ptr2 sta ptr sbc #10 sta ptr2 lda ptr2+1 sta ptr+1 sbc txa jsr SndComLynxByte .exit1 sec lda lines_down sbc CurrLines sta lines_down bcc next_level rts .next_line sec lda ptr2 sta ptr sbc #10 sta ptr2 lda ptr2+1 sta ptr+1 sbc #0 sta ptr2+1 dec temp bmi .exit jmp .loop0 next_level adc #10 sta lines_down lda Level cmp #9 bne .ok rts .ok inc Level sec lda drop_init sbc #12 sta drop_init lda #LevelSmp jmp StartSample rts ;*************** ;* A(kku) Zeilen unten einschieben ;*************** AddLinea (ptr),y dey dex bne .loop3 jsr RedrawField FLIP jmp RedrawField ;************** ;* rechts vom Stein prfen ;************** test_right:: lda CurrY bit #3 beq .ok sec lda CurrFieldAdr sbc #10 sta ptr lda CurrFieldAdr+1 sbc #0 sta ptr+1 bra .cont .ok sec lda CurrFieldAdr sbc #20 sta ptr lda CurrFieldAdr+1 sbc #0 sta ptr+1 .cont clc lda CurrStone4 adc CurrDir asl asl tax ldy testr_y,x lda (ptr),y ldy testr_y+1,x ora (ptr),y b 22,32,32,32 db 22,32,32,32 db 22,32,32,32 db 22,32,32,32 ;************** ;* links vom Stein prfen ;************** test_left:: lda CurrY bit #3 beq .ok sec lda CurrFieldAdr sbc #20 sta ptr lda CurrFieldAdr+1 sbc #0 sta ptr+1 bra .cont .ok sec lda CurrFieldAdr sbc #30 sta ptr lda CurrFieldAdr+1 sbc #0 sta ptr+1 .cont clc lda CurrStone4 adc CurrDir asl asl tax ldy testl_y,x lda (ptr),y ldy testl_y+1,x ora (ptr),y ldy testl_y+2,x 29,39,39,39 db 29,39,39,39 db 29,39,39,39 ;*************** test_down:: ldx CurrDir2 TestDownVec jmp ($ffff,x) testd_routs dw testd00,testd01,testd02,testd03 dw testd10,testd11,testd12,testd13 dw testd20,testd21,testd22,testd23 dw testd30,testd31,testd32,testd33 dw testd40,testd41,testd42,testd43 dw testd50,testd51,testd52,testd53 dw testd6 ,testd6 ,testd6 ,testd6 testd00:: ldy #20 lda (CurrFieldAdr),y iny ora (CurrFieldAdr),y rts testd01:: ldy #11 lda (CurrFieldAdr),y iCurrFieldAdr),y rts testd13:: ldy #9 lda (CurrFieldAdr),y iny ora (CurrFieldAdr),y ldy #21 ora (CurrFieldAdr),y rts ;--------------- testd20:: ldy #11 lda (CurrFieldAdr),y ldy #20 ora (CurrFieldAdr),y rts testd21:: ldy #10 lda (CurrFieldAdr),y ldy #21 ora (CurrFieldAdr),y iny ora (CurrFieldAdr),y rts testd22 ldy #21 lda (CurrFieldAdr),y ldy #30 ora (CurrFieldAdr),y rts testd23 ldy #9 lda (CurrFieldAdr),y ldy #20 ora (CurrFieldAdr),y iny ora (CurrFieleldAdr),y rts testd41 ldy #21 lda (CurrFieldAdr),y ldy #30 ora (CurrFieldAdr),y rts testd42 ldy #9 lda (CurrFieldAdr),y ldy #11 ora (CurrFieldAdr),y ldy #20 ora (CurrFieldAdr),y rts testd43 ldy #10 lda (CurrFieldAdr),y ldy #21 ora (CurrFieldAdr),y rts ;--------------- testd50 ldy #31 lda (CurrFieldAdr),y rts testd51 ldy #19 lda (CurrFieldAdr),y iny ora (CurrFieldAdr),y iny ora (CurrFieldAdr),y iny ora (CurrFieldAdr),y rts testd52 ldy #30 lda (CurrFit_down bne .exit2 jsr test_right bne .exit2 jsr test_left bne .exit2 plx txa asl tax lda StoneData,x sta StoneSCBdata lda StoneData+1,x sta StoneSCBdata+1 pla dec RedrawFlag rts .exit2 plx .exit pla sta CurrDir asl sta CurrDir2 lda #$ff rts ;*************** ;* Punkte BCD um Akku erhhen ;*************** IncPoints:: sed clc adc points sta points lda #0 adc points+1 sta points+1 lda #0 adc points+2 sta points+2 cld dec PointsFlag rts[!include "suzy.var" include "irq.var" include "debug.var" include "serial.var" include "key.var" include "sample.var" include "file.var" path "..\tetris" include "screen.var" include "move.var" include "sound.var" path ".." ;******************************************************************** BEGIN_ZP irq_vectors ds 16 temp ds 2 ptr ds 2 ptr2 ds 2 FlipFlag ds 1 ; <>0 => FLIP END_ZP ;******************************************************************** BEGIN_MEM ALIGN 4 scree #>Pause1 sta PausePtr+1 lda #Pause2 sta PausePtr+3 SCRBASE screen0,screen1 lda #5 sta LastLevel Start INITCOMLYNX jsr InitSound jsr InitSample cli lda #IntroSmp jsr StartSample bra.s .cont0 .loop00 lda #RestartSmp jsr StartSample****** BEGIN_ZP irq_vectors ds 16 temp ds 2 ptr ds 2 ptr2 ds 2 FlipFlag ds 1 ; <>0 => FLIP END_ZP ;******************************************************************** BEGIN_MEM ALIGN 4 screen0 ds SCREEN.LEN usePtr+1 lda #Pause2 sta PausePtr+3 SCRBASE screen0,screen1 lda #5 sta LastLevel Start INITCOMLYNX jsr InitSound jsr . .cont0 .loop00 lda #RestartSmp jsr StartSample .cont0 stz PauseEnable jsr get_level dec PauseEnable jsr InitPlay jsr RedrawField jsr StopSample FLIP .loop0 jsr RedrawField jsr choose_stone bne .again lda drop_init sta droptimer .main stz RedrawFlag jsr ReadKey beq .cont lda Button bit #_FIREA beq .no_drop whlen ;*************** get_level:: lda LastLevel sta Level lda #MainScreen1 jsr DrawSprite FLIP .loop lda #MainScreen1 jsr DrawSprite lda Level jsr DrawArrow FLIP .wait jsr ReadKey beq .wait lda Button ldx Level bit #_FIREB+_FIREA bne .exit lda Cursor bit #$80 beq .cont0 dex beq .wait stx Level bra .loop .cont0 bit #$40 beq .wait inx cpx #10 beq .wait stx Level bra .loop .exit lda Level sta LastLevel ldaitComLynxByte ; Level holen bcc .exit pha jsr WaitComLynxByte ; Button holen plx bcc .exit sta Button stx Level sec rts .exit clc rts .do_lines jsr WaitComLynxByte bcc .exit jmp AddLines .do_pause lda #_PAUSE sta Button sec rts .do_restart jmp Start lda #_RESTART sta Button sec rts ;********************************************************************* path "includes" include "irq.inc" include "serial.inc" include "debug.inc" include "sample.inc" inc4 COMLYNX.OBJ(COMLYNX.SPS([COMLYNX2.OBJ+ COMLYNX2.SPS+ GAMEOVER.OBJ'IGAMEOVER.SPS'MAIN1.OBJ(MAIN1.SPS(MOVE.INCCZMOVE.VAR*LNOISE.OBJ(NOISE.SPS(`PAUSE.OBJ'9PAUSE.SPS'4PREVIEW.OBJ(PREVIEW.SPS(Q.MACQ_IRQ.INC" +Q_KEY.INC(SCREEN.INCCNSCREEN.VARSOUND.INC+}SOUND.VAR+~2TETRIS.ASMCTETRIS.DOO(TETRIS.MAKCTETRgS@QBACpEGaJf&MAKJf$MAKE%|_ROMJf IKfANaCaJ@joACpEGI8SDaaDjB`&Jf&OBJaa J@jHPa,Hn&a$z(AdQJEfI8pSDМQc Hna`jм-@K+C-MA0<"QIGAK~:<SF"fJEgRG0<EѮz`~Ca&K4 BBt) f"4| BB@ )| BJg<.ggBL?NuHg`g < g`.fBLNuHc&IaJ@kD,:$IHnaHPaBgHP?<=NAP>k HS/??<?NAO f ??<>NAX LNuH&I*BgHP?<k(HS/??<@NAO ,??<>NAXf LNupLNuHHz?<NA\LNuWIRBEAM LSF!**V  C+WIRBEAM.LSFH`BgHP?<NNAPLNuH//?< NA\L.NuAK~*|Q*A|zܘQNuHHzaHz?<&NN\LNu@MK ?,<@.| vt:<** zx ** ** [ÅЪҢ5UvjjW'uKи@TMRi _$P*vW+x2 AQktf8g {BR /\;aԊ y_nK@ME]6$zs0,* `-朄j Wp u@01 Z0- {8sH >: eɊΕ}#V9{U &\r)x7Z< 9)Wc2etJQmW(z( z9oh1g!\ ϠP пlN C  / +HZ8 莇ʎ*d zh`t  l H eheheheLoader 2.2FFG`PQ 5d  dd d$   $ ꭒJL (*$  13.12.9322:30:48(c) 1993/94 B.SchickE:\LSF\WIRBEAM.LSFE:\LSF\E:\LSF\STARTREK.LSFE:\LSF\BOING.LSFE:\LSF\TRIUMPH.LSFE:\LSF\TUER.LSFE:\LSF\NENENEEE.LSFE:\LSF\WIRBEinsert tetris\tetris e:\lsf\startrek.lsf e:\lsf\boing.lsf e:\lsf\triumph.lsf e:\lsf\tuer.lsf e:\lsf\neneneee.lsf e:\lsf\wirbeam.lsfſrh1n ^BUb(WP<۰.|`a$qY kdK!vP5݈(T#XresRΛԅq(yn]NHl[ÅЪҢ5UvjjW'uKи@TMRi _$P*vW+x2 AQktf8g {BR /\;aԊ y_nK@ME]6$zs0,* `-朄j Wp u@01 Z0- {8sH ) d  dd Ɉ   ޠ0):0)8ϠP пlN C  / +HZ8 莇ʎ*d zh`t  l H eheheheLoader 2.2FFG`PQ 5d  dd d$   {c yd݉ Eh b  cklk Fc c yd `I NLwD`gfBR RƘ$0BR Rf QƘ$0 iffԉ@ ݆fǥfgxC Ff FLF`RTU,0``xC F#)::":%: F H Ff8`` FLQe8`L\D8`x̍EEʘ(`H, h@|h@x5G  & H(d'd d!d"d#x@F (JF(`'h@$)%%$(0$$0:S$$yC"2d"#"%%H& h@$(0!2! I<` H@A D@EA@DAE<9 I=> HBC`W IL IDDE:8;4HZ) 998 莇ʎ*d:;zh`BR RƘ$0 R`` I KK M N 2N WNƘ$0 M N 2N WN`N:::W iTjLLLLMMMMMM䍦MZMMUJJJJ jNU) jNz`M!MMoJJJJ jNo) jNMM`(MMMe) jNdJJJJ jNd) jN`MM"M`JJJJ jN`) jN`M2M.Mf)MMMMM RMiM` GN Rd-Ƙ$0LiN]J<(0::800P20`**""0  $,@4!4!4!4!4!4!4!4!4!4!4!4!3!R  p123!00p p0p@PHP  3R 3300222200333EQM: i Q֠QH)8܍  ,h`YR#EgOPFx!&ažIx(!F8ƀyh~Z!AI/pc@3x< 1ˆW4)L1-6垾ع')0堡,EP./]e{d 5QNⰼ*9 Y<ν%>$ݨʴ亿>N3%#8c+PR#[T2)E. ',7ڴ+B 07 Թ \:齶1;5W$31 >0.ii#27D"D. WW) 0 ->I4#A .>H/ 4G6E?9$ϳ'ΰ!S&&9T# *LM E[;$ $  )џ !8K<#% 2=7PR/ ѳGL 1: -+.,SB )3 &6]Y<2;񾦵 $', 8@%C$B0('& $'ɰ4;/  4>$, '@D=8 )=+G"&  $&%8" &2#/1427$ %7(# )У8) /<$ů %L9!"   +- # ,.E& ľò#,8Ծ! -M.(\<"*$  ̶ *A59*% ('I= MV.ϼ  箴#'%'&%77KA9^G #$  ,ݿ*%(-4XH$ -- ۯ"4!% .! 2& 2*01# " 6+  ( %1(1)  ") ' Ż $ %$. / +"(&  ! %( 019< *$  UC'5&)1&  >- .'%?) 2# /A3?:";+:$ AO /#==Բ)/ "%G^ " (9,   K.+  *, %?&*I5-$ *ͺ/, !'*  @4 %'3! $.*8, +! %1 )'+)+  "+1NB 0, /)& * $ , "&B )13+ $  , )  ǿ  !"2 2"5# 6  "&-# ! )/63#-/#3+0 3#3'Ӿ !$"31) :I(751   CA4! -#ɾ AWU?& *7 -( ѱ)! & $3,Ԯ (, :4  +% "B3ƽ78+AV4,''+) $ PD Ƕ! (*/6- !;2*, ٽ!'  ) =(  ,  %" %+$-*+ 038"*(ݼ4>&* (  7;$ (0N+5% $:$(0 2<& * !!5R3K8'4  ! 13  ʻ 3BJ,9 ,(6Ӿ# '23" C)#ξ$JK?&.( /QXI5!)# ظ;-""GZ6   &!巢:#%40" = ˱2J :"4 ɷ(QoG# G8 ,5BG4$/ ػIP/ #ƿJA 3;N(0(#"7E*'64 4  ! ;Q77"  8 /9(58C $-M' #ʰ Zq)'"α־/-?3 $9̾ -94 ؿ#):X_,%շ>Eb+( "1⺷+(9S0:*  &"":/"' $٩ &1(M987)&)' ?E*@+  *K$"5$0&:M,'(  /E7 /- 2)DH77 Ŷ7' 6&.; !"&&,."2 / $"&.9B*-+"36(@N Ϳ?$'B?<>7+/",R<:1  /H +;FC6 /IB6! L 0;B4'絡  $7$DEYF; /<'3=$ #& .7'G7 !3-J8 绛-$-IZ1 ǯ 31 5K, 躬% ;/FG%ζ &AT*!ע *93Ȩ C L@,  ( 342$0 . RP=  :?,-  (#I[O9  ,TO'  % ؾ %  9J;H5 C'-R *I30<&D7"' $:02:+ 2)# !2#E6!0, -/5 ,2?B<#=EG ++)5?"!   2:8# !  ;0=Gǰ 4"  >L82ɺ," '&  6/=03 *=2+;9,75$0, +<-?;   18$5  7% ( %  ("60%3&*)H/ 7$ "(( *'# % '%۬ /' & (/!/ !* # ( ! +2!   &* 4".& .*& !2, +     O* 241,-../ % $%#"  M<3о  ,A=<9!& +5=B 2! %(6#6:*). ׺+A2 &   &"'0K:!  M2#.)G-ܻ HI- & 9& /:4 #%%ż B>2@;  / CR=  ! %?[_ $F0'H6#Ⱦ*(.%5HB  L@ ;%3>, űS-"=R- &>;"&9'$# !/ &/ 4 %4- !$ 4 (2 ) :% -!'$6)/ ( :8!/)(" (C'$": ,"8# 8 "  ټ-!:''(  '5()  $$ %   ! 6  2%%  /'  23  & ") ,  #  #( > /1 // ) 0-.%6 F$)*-$2 &>4 & %0"@?%! $99(4B ǽ?",L/ 3' в#2"'9")6?ĵF>/Ƽ5Q#*%̨" &8G.0ƦYA0!!&521(>&&02& % ɻ  &@"+%'#&%'3F,- " Ͻ$6)/ %*#=<!)  73$,   = " (齷 $'$ $#'< /4 * ,19$ % 6>#"4+D" ,    !#4 /3 !0+1 "8#)' ں !#@, !  " :!*5    &1 & + !<   -'    4, '" <8&B0* 01 ) ($! "A .  *>  #  !2  /$'C!'%:E .) B!$%&      B +;1! 3 0).-䴪$"; /=    4 A  $&#!  :;*1,- $ @I4 /55    =C* 5 '- !  5   7>)--ӿ  #:` *(.   ' .C9  K  &&,A;!# ( 7#'' I) / , " D4   '  -  &!'%   -   ?   + +9%&"" 3 ,<