DOSOpH~3| B$N8 n>fJNg C" ON BCN @A4JgJgJf C"ON ,V,V/.2/3Cj-I2CBf,WAp"<$<Nz#CN:#CpNK6CB&<2g&C "NC M <NK`3B9,x(<a&g.J*f J.fJ*g&3QB&`&9NuA SgV9gLafSf 6<fy9F|gȰ<g<gа<g<g<g&`aC:N @ hpNu _,_-_2L~/NuaAR OFF AX OFFA BP3|a 3|a`A#H(#|$B,N8Nu NK e!fMvGC <""NCA-I.p"QaKNB.A !n@-HA"B@rXQF@0Nu idif6HA: 4<2|fRA0Q$i!J"@L=-zN 00p VIRUS KILLER/UTILITY BOOT V6.0-DRIVES ARE OFF MEMORY IS OFF?F1 DRIVES OFF F2 MEMORY OFFIF3 DRIVES ON F4 MEMORY ON SF5 HARD RESET F6 INSTALL BOOTfL.MOUSE EXIT R.MOUSE FILTERr CODED BY MARC OF SLIPSTREAM disk.resourcedos.library]ʚ{ıpdoݛyߒGgRɓQ%w: p"צ!c'CG؀+ID0mN(xP45ݤ hF])KzLD z~ѡ84rCP.O|s/y x{=ȡ0lg/"lj ; BL8Ll\c]r6s8ZsჇCNɠ<`*0 Flq|΍>XyQWJ"h#>8>@9 f?շfk!aReTZaWb; =OV_K<^~nI$ueq` XcNO?~֥3ݘk9x2 6XZGm4(AT,Nx'\>Ta **DkyО!z4!f]_t r̴+{09'^՗:lNmwL4d$aG$o@j{Cs0f=4H]BLޣXX.L495"FFy_y :U|(5:c{R\9O|+%)PGJD5^s{|ӃDMf sA BSv?"kR>3qn&Y..b @fG1!Cc3> YHdW#DvL'PrX0If""Q abw?agDގ?]i<Z 3Ğ hAONGl^5Q'2Uu d#K˱SX7wos24&ЏO{yaSw/xW,vߐlvi݆]S7)y۹'zE˜.Ω_N=Ψ8,;1p)>HZ.=N CQ錡c8UȝxOL;7*"ye+e3@|N5vϲD"s`a$Nrutp<$4q&j!>43nH/^p4mOX,UO8 w#BG {~zҭNж 1Pu8 e;*<ϜdrLZD <_L 7Ai;ɖ?wK\8W]_4PZ::N0s=ʙC^93V=m?uaɧ|X '_ORZ=>S H `=x~c-*?c@!JC>kh;Z_ܒpg9 턉^n;9|7|okJ=z^#C<6?G2x2+й`1_9#G:qQӡ>K!ϓu sWuB8t z("Sm4Ep= =M|?3 ;=WЈ1_gT2+myDߏK"wz$O\OL'.O];qxswա&@ -N6\.Ƙ_w^p ; xO^.kxy><.32r8׺VrrGbS_9 ]1t {GF?DeX-*?5 >F)8i}ÙTdn]d@N'䵸_ q_cge?;|@bNR1X.SPp; l|ao}7KF?C ClPK캏mİp;tv pM#r4l3} zi'ez 3AЂW~ϐեc#Q ]V/҆ [xjotF08pYq˫WamՕk8 iG+~'hƧx_C_#C\o> Goɒ:c/(;}ETZs~ Λ=x?u ^eǾoGG;Tb:w\cꟲY 7~6Z o1xɓ_z?;1"ˉNGpcv:} epXzmu^S[>vvsw&}`ǻp._i424{(]8m:|Gb\"XDi. %F2޻|XKS3]58q~/gV)xmzlP5&8g fH=n @*pg⻬Fw!|\Нy# ۘOrO|B}?F[ŀo)4ϑ@ ~ ܯqFkᛋ = ,Iot:+yJ^d?.=G.Q]D9OEu4u12/f^q{w@s-#_#7[ޜ#N7înp/.pyw'y[&/En4 yoɯz. oAuy#PĶ?w| 5g,ވ>Xc;W"3`=TApz/N'~pA @a@GkCs3 2\|,_/ [/}7@ h]L93j:}<<]_eb-&"wZaTq=[- 5Z+m(;ɆmowUfgx^/jldKG0'rh1tD8`獺٣7t#%=MLK 6t\;/1>OTH ̆rM*~}`:^ P&teGr/хCɝU:OE0|!+{Ξ_ErY!9ݧ7۳vtw)'i꿦t⃨m39NϷ<@3j˜Da=^|3NTKĪ- xޖ>7QA<~^;>;Fܓu?HL1 k#ihu1̿En12.2KE饎/Ұ2߃UV #NIt0\Dxa[sو~xT}X1?W%.dOWijY'Kac{xC~^nqX_lNIG ?Gm!sxɓ@ҰH kIg=#)Bz~r: CXc͝r8|`- |Kՠ(^8+@]i] S::\{>p0Gc^;QE8ICDZykŪV?^xVt[g!1(yi۷h9`܆(v^/0?P/8nxj ^oF},,qp\YI=@H4} <3sE\=C.FOx/C?хk_ruux߇Y20ΫjYDIh:HH)GŨ:BHF7Gz/lì= x)E[b~ռ9"Ҙ aic'e+})~?r35n*CApF}O4Ӧ?L|54'\λd] 4¦N6BF/T~51^[&˪AH>|{WX6Uǿ#z { |}~?pzG}D??_77oWo?)?~?o|oo?`?og7cw0Bw ~0u000  8`0 ?p0 8pv    @8X @x?>pt<# p@g0_ >!n?@ |p@?`?x@_<HO`?6ÆH#c} 1  7?_? C_7g?_??_o?? {ƿ@??0?p `W'?pD<?@` @G?O? P/00o0~  Ncp9s? 8 S s3_0`/@'0/op7c`gO 9s3s 3g1L3/@oO/SooOq^ @'@c@0s933` s3g1Lg0rstuvwx y d"e#f$g%h&i'j(S1c00  a93Cs9 3 9sg0 )s3f~k)e_ A ScCO?/[o0?O< 0C``/0?gS A|>@l* Ë@~g09@? 0c9p9as 3@as xs # P a3sa`r Pcg018 0P 30`@?`@0 ?PPp` pX?f<?D~P<8 m++{.@ 8g>b 0pG|`>sxh+W&3Ð8?pǀ g 1 `?0aC?3]>a?f `wAHD, />F?#c@| ,y&1 PS @sn~zT;i@(1 , 0R@'@~ ϰ`xgu@0G<?s B NO6f,Q3?0 ng@? Gk9 Y`Ə @ p3G@Y-wWKo,'0Paw` c,G@<V>/Y7H ;Wq`?M[;BU_w|26WU*sExU?*UQb.X P?V񔪪<( @`Z>?΋xVx P*UPa(tpP[`gg(0hZ._&S@ OǏ0p0 p_ኞPtOσ0>(0'R` _x_ P? f`W?P:ĠXyPQq` O1h@|x `;Pa'$d,x@DpT` Ss p+@WW87@*Q[/WP97@SWUJUU*JUUT*Ug7_W_7^W7\0W`7WPW7\0?ncUW;W|\z?WJUUU*UUUUUUJUT@]1^2_3`4a5b6c!N8/ S @@SP@ @@S`@ @ @@SP@@SP:@S`@S` 0@@q  0@@ 0@@ 0@@ O9, q 0@ q q q 0@ 0@q 0@  :0h@ q :0h@q :0h@ :0h@q P:΂  q 0@q  0@ X0@q X0@ q X"0@@X`Q;R ` `` `` ` `` `` `` ` `` `U?3g UPxP `P `@RjUUUUTP UUU*jTJU`UuJ*U(*V@ έP/_߬U`~><xP?P0WU` q0Pu_U`W)7|0 Wo3?7?> SSw=-~@ @O> ^MLP?Ġ /=@7ܔ_`UPHL~ G_P1c( ϚPP3S/` sUBd4X,z( I/Pc <pr4P$S` Ε8 3: D P?l?c<&Q`" KCUL]c>_<VqꪗhsF~H4)~@_?#_bURU?HHc eK`)$xXqPB>I? CCO @p p @p p @@p @ @pp p @p p @@p @ DDM @@ @@ @@@@@ @@ }@ }@ }@}@ S}@ EEڠ @   @ @@ @ @ @ @@X @FF) @@pSPp @@pS`@p @@p @@SP@@ S` Sp }@@pSPSpSP}@@pS`Sp }@@p }@SPGGȻ}@ S` @pSPp @pS`p @ @pSPSP@SP S` @pSPp p @pS`p @HH @pSP@SP S` S` p@@pSPpp @p@@pS`Sp@p @@p @p@@SPp@@ p S` pSp @p}@@pSPSpSpSP}p}@@pS`II?pSp }@@p }p}@SPSp}@ @p S` p p@pSPpp p@pS`@pp @ p@pSPSPp@SPp S` p p@pSPp@p p Sp@JJőpS`}pp @ p@pSP}p@SP Sp S` @p S` @@@SP@ @@@S`@ @@ @@@SP@@@ @S`@ @}@SP@SPKK@}@S`@ }@ @}@SP@}@ @S`@ x@@SP@ @@S`@ @ @@SPSP@@SPx@S`@ @@SPLL@ @@S`@ @ @@SP@@SP@S`@S`@@@SP@ @@@S`@ @@ @@@:SP@@@ @S`@ M7@}@SP@SP@}@S`@ }@ @}@SPS@}@  @S`@  x@@SP@ : @@S`:@ @ @@SPSP@@SPx@S`}@@8Noo00@p000 00 00`pS0S0 }0@@p}0}0@p@p`@pPhp}0}0h@p}0}0}0 }0}0 0`p00 0h@hp00h@p00h@p:0:0`hpp9O P@p0@00 0 00@p:00`p00 p0@0@ p0@p`@pP @@ p p ` p p @@pp@@ p p@@ p p` :P?ppPp@p@pp `pp @p@p@pp@pp`p@pPphph@pp `pp h@phph@pph@pp;Q_`phpppPp@p@ p@p`:ppp p@@p p@:pp`p@pP @@ ` @@@@<R_@@`P@ ` @@@`Ph@ ` h@=Sh@h@`P@ ` @@@`P@@ p ` p>Tҧ @@p@@ p@@ p`pP@p@p `p @@p@p@p`@pPhph@p `p?U* h@hph@ph@p`hppP@p@ @p`p p@@ p@p`@pP  p@@ p p@p @V  p` p p@p  p@@pp@@ p p p@@ p p@p` pp pPp@p@pp@pphp p`pphp p@p@p@pphpp@ppp`p@phpPphppph@pphAWp p`pphp ph@phph@ppph@pphphp`phppppPp@p@p@ }p p@p@p`:pp}pp p@p@@p p@p@:pp}p@p`p@p@pP }p @@BBԼp p @@p @p @@p@@ @@ Sp }@@p Sp }@@p Sp }@@p}@ }@ -Y\F $# &/7- 4BG- $Ĺ )?L@' ,-θ'ASP418-ùȽ!;LN;!ο&%ɸ chop suibubble@hihat1.ZE6?ZX9bing@bassi<@phaldrum +snare4x@chor@x  /[?00 000 000 00 0 0 00 00 00 000 0000 S0S0 }0}0}0 0\b  }0}0 }0}0}0 }0}00 00 0 00 00:0 :0 0 00 000 :000 0 00 01]  / 2^4 3_k 00@@ 000 000 00 0@@ 0@@ 00@@ 00 00@ 000 0000 4`OS0S0 }0@}0}0@ @  }0}0h@ }0}0}0 }0}00 00 0h@ 00h@ 00h@:0 :0 0@ 00 000 :5a_a000 0 0@0@ 0@  00@@ 000 000` 00 0@@ 0@@ 00@@ 00` P 00@ 0006b_ 0000` S0S0 }0@}0}0@ @ ` P }0}0h@ }0}0}0 }0}00` 00 0h@ 00h@ 00h@:0 :0` P 0@ 7M?00 000 :00`0 0 0@0@ 0@ ` P 00@@ p000 0 00` p00 0@@p0@@ p00@@ p00`pP@p"dl_4/ݾ %  ", &;!#1%'ҷ໸Ҳ*<1''0&:*,."%#0  ׻ 3$'0#NK.B&%   * -# * "/,-   +,/+" 4 &!2D*/+@6=3(   !3M8( ! ," ):96R+2:4$ #eژq +" '9 .#  ѳڮ,LAP*34B%% "  D<:LN4::5)&*ɼӻ  (9,D$0/L'%  %E%; &"     /# <6?6/ %*9/@9R?*4)ƽǷ$/:;E2:,) % 5.K>;1-   $f "      % & #             #)*#-)                   %gCy          )+&  %  "                 &hռ                'i   ý  $)   "10,1! ϶   $ʿ#'"ü   ŷ   ʾ ̾ '$ (j>\ Ž  +10  '7?4   ƾ"3<4%  Ⱦ  %8@1  #/,! ϻ%(  ŻƱ  ƾ ϵ)k2  º ּ*-& !$($ &,  '6<:)׿" (01&ɶ$%!# ż!%   ,++'  )6=90#ƿǶ ! 0;;50&ǻ*l^,ø  $)-$  Ÿũ -AA+   Ҳ'55,  )#  þż''  !úκ!/+!ô   к ɽ+m/:   õǿ Ҽ ǿɽ ô""ʽ!!ּŷ"%"ë    !  Ʋ##ɶʼ !%((& ôȾ,X #&("ֿ !) ¾  &$ʺ ʿƹ  ö Ʒ  Ǻ ѽ %! ǽ     oQ  #&),.02211/-*'$   "'+/13332.*$  #&),.01110.+*&#   "&*-/2210-("  "&*,.0111/-+(%"  !&),.010.,("   $'*,/0120.-+'%"  !$)+-/0/-*%  psw !%(+.01211/-*(%"  $'*+-.-+'$ !%(+.01210/,+(%#   #')+-.,+'# "%(+.0110/-+)'%"   #&)+,,,)&" !%)+-.00//-+(&$!  !$')**q #Q)'$   "&)+./000.-+)'$!   #&())(&#  "&),./0//.,+)'$"   #%'((&$!  "&)+,.//.-+*(&#!  "$&'&%#   "%(*,-.-.,+*'%#! r¹ !$%&%$"  "&)*,-..-,+)'%#    "$$$"   #&)+,-.--,+)'%#   !"#"!  #&(*,---,,+)'%#   !"""   "%(*++,,++*'&$" s   !"!  !%')*++++*)'%#      "%')*+,++*)(&$!    "%')*+,++*)'&#!   tRlm!$'(*++++)('%"     "$&()*+**)('$"     "$&()*+*))(&$!    "$&()****('%#!   uٯ !#%'()**)('%#! vQxE OP/x[~(@/x??wA?؀?abbnuy{|xwqmjP退 !#%&'(++-///.,.,++.0-**./021,*-///.*%"  Ȁ   ǀ  "#####&%$##"""!       '.F,L*N7<= ת x> (MVYnCPvJbO.F >6 ƿˮƹE!@MHF?R;]aPE@(&$̨ȱ$ )=1=I-R1<0$$ӵ  !=9,C;**P(    15*&1#)?3 ̭',2G'@,9/D5  䫚$3'74.ĺ VbZ{  #1@MX`a]TH:*¸  (6DPZ_^YOC5'   !    -;HRY][TJ>2$ ʿ  !!!!!  $1>IRXYVPF4(Ż  !#$$%%%$#"  &0:CINPNIC;1&  "#%&'''''&$#!   '1:BGKLJG@8.$ ĺ !#%&&'''&%$#"  )2;BGIKJE?7-" Ļ  !#$%&''''&%$"! !*3;AFIIHC=5,! Ļ  "$&''(((('&%#!  #,4;AEGHFA<3*  ļ  #$%''(((('&%#!  $,3:@DFFC?91(Ļ !#%&'())**)('%#   $,3:>ADCA<6.%ü  "$&()*+++++*(%# %,39=@AA?:4-#ü  "$&'(*++++*)'%" 6 '-38=?@?=82*!Ľ "$&')*+,,,+*(%"   '.38<>?>;70)  Ľ  #%&(++--.-,*(%!  !'.38;==<94.' Ľ !#&(*,-../--+(%"   '-269::972+% Ľ !#&(*,.///.-+n)%" !'-269::961+$ ſ !$')+-/00//-*($!  "(-26798740*# !$'*,./01//,*'#   "',0356642-'! #&(+-/1110/,*'$   "'+/245530,&¾"Ed dc.w $0184,$0bbb dc.w $0186,$0888 dc.w $0188,$0666 dc.w $018a,$0444 dc.w $018c,$0222 dc.w $018e,$0000 waitab: blk.l 1000,0 dc.l -2 size2= %0000100001000011 datend: dc.b 1 even CL: newclist: dc.w $200f,$fffe dc.w $0100,$4200 dc.l $00968400 dc.w $00e0,$0007 dc.w $00e2,$0000 dc.w $00e4,$0007 dc.w $00e6,$3000 dc.w $00e8,$0007 dc.w $00ea,$6000 dc.w $00ec,$0007 dc.w $00ee,$9000 dc.w $008e,$2971 dc.w $0090,$29d1 dc.w $0092,$0038 dc.w $0094,$00d0 dc.w $0108,0 dc.w%      ȹ%).4:<>=6.&Ŀƫ %,39@EJMQQROMJGB>82+$ ž '17>BFIMNONNKHB<5/'  ½ %-3:?DGJKLJHD@:4+"#,5:4.& ÿ%-39 ,0@D' )(#ѽ'%+.ĺ%3@JQRMG>2$̾ 1>FMONH<80  l5FWhiy ??vN1lu #4,d1 lea font,a0 add.l d0,a0 add.l d1,a0 move.l a0,d7 move.l #$70000+POS,d6 Search: move.b (a0),d0 lea TexTab,a1 moveq #0,d1 Sps: cmp.b (a1)+,d0 beq.S Found addq #1,d1 move.b (a1),d2 bne.S Sps moveq #0,d1 Found: move.l d1,d0 rts blitt: bsr.L bbusy move.l #$09f00000,$dff040 move.l #$ffffffff,$dff044 move.l d7,$dff050 move.l d6,$dff054 move.w #40-4,$dff064 move.w #50-4,$dff066 move.w #%0000011001000010,$dff058;blitterfenster+start ; hhhhhhhhh/1hwwwwww add.w #$3000,d6 add.w #$3000,d7 dbra d0,blitt rts scr: bsr.S bbusy move.l #$e9f00000,$dff040 move.l a2,$dff050 move.l a3,$dff054 clr.l $dff064 move.l #-1,$dff044 move.w #%0000100000011001,$dff058 ; hhhhhhhhhhwwwwww add.l #$3000,a2 add.l #$3000,a3 dbra d0,scr rts setwert:moveq #2,d0 lea $70000+bpos+2,a2 lea $70000+bpos,a3 rts bbusy: btst #14,$dff002 bne.S bbusy rts makecop:move.l #$e40ffffe,d0 lea waitab,a1 lea coltab,a0 move.w #$18e,d1 move.l #1Jh100,d2 move.l d0,(a1)+ floop: move.w d1,(a1)+ move.w (a0)+,(a1)+ cmp.l #colend,a0 bne.S ok lea coltab(pc),a0 ok: dbra d2,floop move.w d1,(a1)+ clr.w (a1)+ move.l #-2,(a1)+ rts cycle: lea coltab(pc),a0 lea coltab+2(pc),a1 move.w (a0),d0 cylo: move.w (a1)+,(a0)+ cmp.l #colend,a0 bne.S cylo move.w d0,colend-2 rts coltab: dc.w $000,$002,$004,$006,$008,$00a,$00c,$00d,$00e,$00f dc.w $00e,$00d,$00c,$00a,$008,$006,$004,$002,$000 colend: makeschwab: move.l #$5107fffe,d0 [`lea swaitab,a1 lea schwabtab,a0 move.w #$102,d1 move.w #100,d2 schwabloop: move.l d0,(a1)+ move.w d1,(a1)+ move.w (a0)+,(a1)+ cmp.l #schwabend,a0 bne.S schwabok lea schwabtab,a0 schwabok:add.l #$01000000,d0 cmp.l #$0007fffe,d0 bne.S schnopal move.l #$ffe1fffe,(a1)+ schnopal:dbra d2,schwabloop move.l #$01020000,(a1)+ ready: rts schcycle: lea schwabtab(pc),a0 lea schwabtab+2(pc),a1 move.w (a0),d0 schcylo:move.w (a1)+,(a0)+ cmp.l #schwabend,a0 bne.S schcylo move.w d0 ,schwabend-2 rts stop_muzak: clr.w $dff0a8 clr.w $dff0b8 clr.w $dff0c8 clr.w $dff0d8 move.w #$f,$dff096 rts ;********************* ; soundplay ;********************* mt_speed=$0f4 mt_init: move.l #data,a0 move.l #mt_sample1,a1 move.w #14,d0 move.l a0,d1 add.l #64,d1 mt_loop: move.l d1,(a1)+ add.l (a0)+,d1 dbra d0,mt_loop move.l d1,mt_sampleinfo move.l #mt_sample1,a0 clr.l d0 mt_clear: move.l (a0,d0),a1 clr.l (a1) addq #4,d0 cmp.l #$3c,d0 bne.s mt_clear move.w # x~0,$dff0a8 move.w #0,$dff0b8 move.w #0,$dff0c8 move.w #0,$dff0d8 eor.w #$c000,mt_voice0+12 clr.l mt_partnrplay clr.l mt_partnote clr.l mt_partpoint move.l mt_sampleinfo,a0 move.b $1d6(a0),mt_maxpart+1 move.b $1d7(a0),mt_kn1+1 rts mt_newirq: movem.l d0-d7/a0-a6,-(a7) bsr mt_music movem.l (a7)+,d0-d7/a0-a6 rts mt_music: addq.l #1,mt_counter cmp.l #6,mt_counter bne.s mt_notsix clr.l mt_counter bra.L mt_rout2 mt_notsix: lea mt_aud1temp,a6 tst.b 3(a6) beq.s mt_ar  Xp1 move.l #$dff0a0,a5 bsr.s mt_arprout mt_arp1: lea mt_aud2temp,a6 tst.b 3(a6) beq.s mt_arp2 move.l #$dff0b0,a5 bsr.s mt_arprout mt_arp2: lea mt_aud3temp,a6 tst.b 3(a6) beq.s mt_arp3 move.l #$dff0c0,a5 bsr.s mt_arprout mt_arp3: lea mt_aud4temp,a6 tst.b 3(a6) beq.s mt_arp4 move.l #$dff0d0,a5 bsr.s mt_arprout mt_arp4: bra.L mt_stop mt_arprout: tst.w 24(a6) beq.s mt_noslide clr.w d0 move.b 25(a6),d0 lsr.b #4,d0 tst.b d0 beq.s mt_voldwn2 bsr.L mt_pushvol1 bra.s Ksa = bild - 40990 dat = data beg: move.l #st,$80 trap #0 clr.l d0 clr.l d1 rts POS= 148*50+16 BPOS= 147*50+16 st: lea $70000,a0 lea $7f000,a1 clear: clr.l (a0)+ cmp.l a1,a0 bne clear lea $70780,a0 move.l #bild,a1 move.l #$27ff,d0 bloop: move.b (a1)+,(a0)+ dbra d0,bloop lea $73780,a0 move.l #bild+$2800,a1 move.l #$27ff,d0 bloop1: move.b (a1)+,(a0)+ dbra d0,bloop1 lea $76780,a0 move.l #bild+$5000,a1 move.l #$27ff,d0 bloop2: move.b (a1)+,(a0)+ dbra d0,bloop2 O(&z lea $79780,a0 move.l #bild+$7800,a1 move.l #$27ff,d0 bloop3: move.b (a1)+,(a0)+ dbra d0,bloop3 bsr.L mt_init move.w #$0020,$dff096 move.l #newclist,$dff080 main: cmp.b #$8f,$dff006 bne.S main bsr.L mt_newirq bsr.L schcycle bsr.L makeschwab bsr.L cycle bsr.L makecop bsr.l setwert bsr.L scr addq.b #1,rows cmp.b #16,rows bne.S nixgibts clr.b rows bsr.s newchar move.w #2,d0 bsr.L blitt nixgibts: btst #6,$bfe001 bne main bsr.L stop_muzak end: copperinit:! move.l 4,a6 move.l #gfxname,a1 jsr -408(a6) move.l d0,a1 move.w #$80,$dff096 move.l 38(a1),$dff080 clr.w $dff088 move.w #$8080,$dff096 jsr -414(a6) move.w #$8020,$dff096 ;mouse an rte gfxname: dc.b "graphics.library",0 even newchar:addq.l #1,msgZ cmp.l #msgend,msgZ bne.S notres move.l #msgtext,msgZ notres: move.l MsgZ,a0 bsr.L Search divu #10,d0 move.l d0,d1 swap d1 and.l #$0000ffff,d0 and.l #$0000ffff,d1 mulu #25*40,d0 ; Zeilen * Bytes mu҈?ߟ?|ߟ?|ߟ?|ߟ?|ߟ?|?|@?| ??|p??|p??|???|?? ?~?C?{~?wG~?o#~?_|>??||3?|??<?>|?~ߟ??~ߟ?~{?~ߟ?|?~'ߟN=?|?~ߟ?|?~ߟ?|?~ߟ??|?~ߟ??|?~ߟ??|?~ߟ?|?~ߟ?|?~ߟ?|?~ߟ?|?~ߟ??|?~ߟ??|?~ߟC??|?~ߟ??|?~3ߟ??|?~ߟ??|?~ߟ??|?~ߟ??|?~ߟ??|~?ߟ??|pߟ???|?ߟ???|ߟ??|ߟ???|??ߟ?&??~?ߟ??~>=~;|8??7xg/ ?EC7q???????io@??????? ?`?`???? X?????????`????????ep???|??>?????????8? ??<?}\?|???????????????????????????ݐ[???????????????????????Wu?g+? !/?`??@_? ~7?D70 ??0_ ??F@ ?>? ??l? \?Ã? 0?@~8?8' ~  8 `'@_p`pˏpx{ u.x@?@|>| ||@|@|||? ||| {M|||@||F`?|~9|#p||G| ???< ULx??|>>  ?~ < B|A||P< x |@8`| ||?| "i|||?||||`||||@|ow@0| ||_'||x?|p||8?|/#??/??? ljm_<8  ?xL7?????????????|Ueka?|矿?|?|?|ߟ?|??|ߟ?|_?|ߟ?|ߟ?|ߟ?|ߟ?| ߟ?|e=f;g9h7i5jpw ;' @ (0`8  <@o`?>H<?8? ?@?/@? _`?li?? ??  ? ?/ ?_ ??@???- ? ?{ /?@%_?=:?_=?~{???'^? @? ~?~/?p ~ _ ???@ ?@<8?CC?# ?  ? ????8????/??????A??Pp??|??? @???~@????????????? ????o ZL?@pP P P @@@??___OOO[*@@@@@@UUU\ԫ?T]7^5_3`1a/b-c+d?Oݢ ?P P R@@@@?7SSWʀ CC@@ ǜss??????P4 RJRJWʀBB@@ǜss???????\ RJRJUUUJ` BBB@`ss???????RJRJP @@BBG??@9>@}??sQ$Gs??9>|???RJRJP ?? ;>}??BB?Gȿ }ss??;>|??? ?RJRJRBB?GȀ ss? ??>|?  ?R>&t& dR JRJW??9?}>}??{BB?G8>? ss????|>|?? ?8wR JRJW`0`{BB?G~`=}5~`ss?C~??<>|?~ ?```1`PR JRUJUUUJ~ <|~\ BBUEUUH~Sv=}~SsVsUUs?*⪪~??<>|?~ ?`R JR JR  dBB@ss3?=?|>|???'?=?|>|??  ?<dR JRJQlJ<||BBFss3<|??<|TD%?<pR JRJQ@@BB F <|ss3<<;>|??Ü<<;>|?|30R JRJT <=9>}??BB6Bo<<9>|?oss3<<9>|??<<9>|?c``` R JR JV U㇟BB31A2H'=8>|?'ss3=8>|??=8>|?'}'R JRJP ?9>@}BB?yGz00ss3?9>|??9>|?7@}7PR JRUJUUUJ BB?G0@0{ss3?;?{?V俞?;? ?7 @7R JRJW' 'BBG'??? 'ss3????`?'ȿ '\ R JRUJU TJ  SBBUEUH?9??9 ss3????? 9俘9R JRJPW!kaBB@ ass3????  aP`RJRAJUU@J @@BB@ @pss3 >?>?0>> @s>sRJRJW{~?@>??~BB@~@~ss3~?Xcx >??~~@~ RJRJUUUJ@ BBB>@>ss3>?>??>??>@ > RJRJP ?@>?BBG@ss3?>?@YPڿ0RJRJP @?BBG@ss3?>|?@|S5SSUUUJ@?@@G@@38> ?@ P P P @p@@@@p DΓ*ʧ 0p p<0 0 (S/''6`'6`(S?"  ?ǃ?ǁ0|70808 8 0|p00 (``Ŭ88"```,008080!ooEW4h׈"`8`????8`l11qq|p|0&&fi+??ρD0000p000| <k{?~?Fꨩׅ?Ep? ?z{???????YUVUVl%VlFl%@ %T@ U@,%Vl%s?rs??@3?s???< ?????>!{G^sl}l#?s;s????`?"!T4UX7Y T2UY0X0U1UXpY0#VUCQVUQGWUGOQ¿" 7???27?Ѐ"   /  H!)?"!URU@eD%UTUD%@%TU@ %D%"00"!gg*I Lm "!TTXXURTXXUT*ڿڪڿڪʪڿ" Ѐ+"  ```` ??Jp?ρ"!UR=UFGeUTUGuVuT@UVuDe+>?"!&ɟɟɟɟɟɟ+K>!&ɟɿɟ#?L*UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUMjUUUU@@@NN;E@@@___@@@??P P P << |<<@@@9tPUUUUTEUO1RUUU@UU@qUT*U@c> ((pg?g0&x@` b ~LJ?*> h-?gb0x ?UUUUUTUWUUUUU@UUUSUT*U@>*?%ҪJ:苣̪ 0` x@`   T*?>388x@ T*>??@x_;-=_ ?@UUUUUUEUVUUUUUUPUU@UTUT*Um>???@x{mdI$ ?@?3>?<~jUUUT a3U><E<?U o`>=*UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU>UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU?fR & ɀ ɀ ɀ ɀɀɀ? ws &ɀɐɐɀ ɀ ɀ"??@9c<"8``x?=n//ooo"p\@!g"`A{Yc!V@UXXXUXXXXX"*?' Ћ#"B@o" @ `` 0 A#/oo/0//?" js?6j6js?7?a#/ 99 /<8/ /???!  ɟx ɟ/ A #C?` @0```0800"!߉A#? @0p0800!\UURU %@e@6U@6UUSe@0%@ %#\UUBUWXXUXUUSX#XSUUAUGGUGUUPGG*ʧ*.UNUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU/QUUUUUUUUUUUUUUUUUUUUUUUU0q@DjG?8 p*P b x`1D ?@@ 1٘D / 3uoD? 1  ul?eKQU  DeHc??@ 2_=>@U@TUATUCuU@UUPUUUUUA#QEUU@*4ʪ'ڪ|WG >V 0d@LX~k7d-P8}??> ~?">@3jJ@~3DPw <P }y [b ~ y*p *3*nXYkp<p8=;p?z 8{*LH3_+Pw @!4! u]J | @?A *QUJ&kG SP8 UU@Hp?[  @UUUUUUUU8UUUUPUUUUUUT*U `UUUUUUUuU-UUUUUUUUUUgUUUUUUUUUUUU\UUUUUp UxU@ߪ?~*⪪ p @   9    5 pχ T* 1X:0/߇g8P xx@?|π!  0  0 0 0  0P x 0?1lX1lX9f1X1hX1lX11T*XGx/1g ~F3x@!8p`8p`>8`8w`8p`38@`wǹg#T*ǁI  x   wg;~<~?x6@ p0`p0`>p0`p`p0`~?p` 1g 0orL:6:6x:6:6:60or:6{~ϐo @x>?}``@```  1f   > @y2sy2syy2sy2sy2s@{ys~?Ao @?|A7;;,8n>Szzqz:x~A ?|A TUUUUUUURUUUPUU@U UU??Ϡ=?0_o?|? @??c?8@@>7h?@?8gp?88h/@` | ` oǿUUSUU U\pRUCUPEU@UUT*U@b>UUYUUUCSUaUUEUWU7UgU?? 0 H`>x@` b ꪼ >N8T*@ >A h-g??b08x@`  # `R!JIJRJYY/***3c3?|c>|cc? ???? RJoRJ54 273g3?p? ?RJ%RJkkkk?nw3?3?$ {t?????********RJԷ+RJ55,?3?3??p? ???ϿRJWKRJYYY???33c?c???? ?@??? @@?>?% FRJ[WRJͳ_ͳ__3311~???T@@TTP5UTUUUUUUTUUURUJI)TRUJTffQffUUfUUUUUUTUUUW3XsW3USUWUUUUUUTUUU?*?** *   ?    RJ,4RJ33 s03111& ͻP?'?&pOOOُ  0 0 0  0,0,1X1X1`X1HX1_X1X1lXRJ) RJXXxX3 ff03Fc cOO?? ??8`8`8`8`80`8`8p`0 R J iXRMJ 4,4 4000 3g`c3#s??? 0w?'p`p`p`p`p`' c9Op`p0` Ӊ- RJ:JRVRJ:j6:r6:j6:46:46:6:633`33191????`?#`       $  R1JyJҳRQJy4syRsysy5sy5sysy2s33ٛ3cc??? 0 p0$RyJ$R)JYRY55z(533c0????TTUTUU@UTUV8UVUVDUUUUURJRJW_ee!3g31`?~~? ???y|}RJIRKJffWfK3133???00)N)@@0`TEUPU@5PUUU5UUU UU TURUJQRJURJRͳUUJURUUUWUUUUUU33̙31`1???~~``* ʨ*ʪ`RJ I RJRJY QH5H4N$3c33 c0c88>8?????@U@U@UU@UP5UQGUUU@URJ)@R)J 4,*  P{7'' 3ffff3c??@@`{I,$S(hh PF`000cc3311???gU@U@@@UTX5UUX5TUX5UUUU*RRJЫ4R\ʪʪʨg3͘c??+t|??? 5KP YWP ???c30 0 c???WQ_S_WP `1`s`3???BAU@UTTU@UUUUUUUUE,ΪUUUTUUUURJ^z_0 3??????w7/^zAw@80?>|???@~~-V_???????j{< yRs33333q???????? ?A 0 0?`??`?   RsRzRQJRJR1JSR1JSSRfc3g33 30c???????? 0 0 UU@U@URRRJRKJRyJR7RyJRJW3333383#3????????u\U?TTPPReRR}JRJRJRRJRJJW333333????~???? >?U????Q@URRUERJRRJRJR?RJRJJTJUU333 333?????????*<TPUU@TUUTRYURYRUJR)JRQJRURKJRJUUUJ P`3f33333?????????* ?** * *`@@TUR,RRJRRJR@RRJJ Pc03333333?????????????@T@@554RPRRJR JRJRRJRJH_13332???? ?????????=?|=??TUR (R RJR IRIRJ@A* 3 c3f??????????????PDPUUTRSRJRRRJ_} f3sgg3???????????? "bRP RJRJ5R RJP+333cc3????????????TURjP RJRJRRJP33``93????????????TTTBAUB@T^_^z^]z^^z_/0 0E0?|???????????75???@B@ @@7@@@^ 8`???????UNUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU RR??|>|??!@@@BBBC ??<<<<*****^zA^z]]/?>|?>|>|" ^a?;???RJ\zRJVj^z(  @33????? @??RJRJRJS@S@( @33333??????@PTPPUUUTUUUUUWUU K)3c???????????@TURJPPPP RPrRJ 33`???????????UTAAUQ!Tow____^_^zoa 0x????????? ??K@7@7@7@ @@@3888  0???????????x??????????!a 0????"UUNUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU#|c$T@@@@B@D@@@@}{??@?????***( ^^@^z^z _  _ _??????@?????;?_??%aR R@RJRJ P PЋ P 33x?????????xRf6RQ@Q@!J(P((P( P O~s3???? ??????UPRRP PJSS_G??3&(S????p???Ra7R RWJRWJRR@@?͟͟w3gggg???????@@@@RRS+S+JIRIIRI_xG3ϯ33333????p??????**'ܠR?RRJRJRJRJRJRJR POg3g33333???? ??????_???RfR_RJRJRJJRJRJRJRJRWÇ33333333????????????|???U@UR0RRJR}JRJRJRJRJR?UJUU̙3̙3( 3333UYU??@?~~?~?????UUTT ReURRKJRҕJRJRJRJRJR P<}UU333W33W33??*????(?*??*??  0 1`XS @RRJRAJRJR RJR P0 P`g3c333338??'???'??'??0 -8`XB,,P<R R)JRJRJSRJSQ T03333s3s ?Ç?????????``??p` PTR6RUJRUJR JPR JP(h:V6ٛ3ٛ333???????????`? @? ?'? 0?? 0??   R*6R2sRJR)JRJPhRJPk*5+!8*B@@@@@@@@@@}???????? *} _ _ _ ___^z/???????????3} PPPP P P RJP 3,??????? ??Tw(P(P(P(P P P RJP 3?????????TSSSSSSRJ}c33???????-mVdRRRR R R RJAcJgggg33???????>?@@@@IRIRHRIRRRRJ_cJ333333???????? cRJRJRJRJRRRRJ PJ33.ְ3333????????@;???x??? RJRJRJRJRRRRJWJ333333???????? ><??;1U@UUUTRJRJRR=JR?R?RRJUJUUUUUJ3333UYUUUW3???x?????⪪//o?UUU RJRJRUIR5JRURUR?RJ PJ33U3UU33???*2?+? ? ?* ? 0   1`X1lRJR R0R!JR R R@pRJ PJ33x£300x33???'?%???'?? x008`8p,H.4XX,SSRRJSS0'RRJ T J3s0c3 33????????၀p``p``3 P PR R JP(P(R@S:V6J3?333???????? ??0`1?`?`?#a ! P PjR6RJP*6P*6R@4P yRs-s1J3?a3???????? 1 6???`?`????   SSR2CR1JSsSsRP RRyJ3033????????? 0 ??   ?T@UTRJRRzRyJR*R*R@SWRJ3#x300c33?????????? 0 00UTUU@? 2iuvRJRHRKRJRRRJRJjWRJ313~333???0?????? ???7?P@UTRJRLRRJR?R?RJRJT UURUJ313?333???x??????*TTTPUCUTRUJRULRUJRQJRUaRURUJRJ PRJ3133333?? 3Hd???????+******?TURJRLRJRJRR RJRJ PRJ3133333??????????|??H@@UUTRJRLRJRJRRRJRJ_RJ3133333???????????>= _?0TURJRRRRRRRJA(IJ3acc 333????????????|TUUTRJSSSSR*SRJ}3s3g3???????????0 RJP5P5P5P RPRJ 35o6m7k8i9g:e;Fd߯߯߭11>1 ``!t6p2 >\d77nw1lB7LNu,XB. gf(CR-q(=sH=sH/. fn`;sH B63H֮-C =sH ng -n =sHJVg>3Jnf=|a8=V+n;n;V0.y7=nNuՖnՖX&& # #@@""&&33Xsong made by lp/thrust . don't use it in your intros and demos  0*?d~DX(\:}hS@. 2xq7)inside11>1 ``!t6p2 >\d77nw1@ABwC >;eʀ?x /oXЀؘ\_Qdǻ{} Рge`?Z$ ?tSMtYaXR(4 "2Ż,6$( *E-  #"3F\  " 42$"  %0 Ĵ*0/=&2# E5 e +2$   &%$  * ;*.5 23&)($-D  /0*7*  .0# 07@#,              %          F Ö $                                G;z     HIzd. D`hv(0@HX`pxpŰ4qK3  !+  !". & #'" %*  &$ 7 !"# $3 $!! ",  %( +0 ۹  & /(ݽ $ &' /4ܹ&' )( ',#" "G)   !+(,-$ 1 !   LV+S1&ݿ 5!  #$ , # '=   % /;) <" )7/ 9 !?& ; )-/ #  8# =     8  .$2.*  - &$(++  ! (MQ" %          %                        N2>/133.,264*-43.(+384$-793(&/5/  |I̮AC=.cʉ$:7jQ  !kw>y     ˼Ϳھ #&"-.545CFBDHMLPPSRSTT[UOWTLHFEH9:A2*()(ʿO{%  +&,643?E;AG?LXPOTKY\VZ[WYVa\RSQYY\TOMLOOB<@@@203*.,%$ ȼø   " "$/67:6=AAHGPLN]YT_[aZa]ZZZ[\YLQVMMRRSMMIMBA=?;6231&$    "#,##**$$.+-)%*,+)$#,&)*(%(%'*)+(%0'$'#$#!!&%"'#! PX3a     " #"#!&!#"#!"   ,**E&+ 4)    !)(4  $!       Q͌"!'"'" !! # ǿ¿   !!!"$#%"("# !       "!"R Τ  #                                    Sʴ                                            T                ?Mi%       V|                                  Wn                                  Xr                               Yk                ZBȬ           ! $ !#),3)   0 &"+.+  -Dк ""#   @޴ %"  '[KW+(Я )    *-  "  5; ڴ% "$'(8%  "   %4%ı0!  #0%$ܲ0  ! "0:,$( 57հ/1  ! 21Գ '3(  !#0+&0ͱ#>3* :ֽ#7 7!)4ȳ'4  '4? !7 >5,ҹ )\,(7"'4ٺ #*' :$'0  # 5+$  0:   &"4 )+  "6  &+*  %: %!= $ !$%1- /()(*1"-# )!. " (2 ]9(   (*    1    #                                  ^z !   # $    #                                         _AeZ                                                      !      0  J9M #$'  '')& "B " ; @" ؾ"  '  (&  "7ػ   4  <  *0   !7    ''"+(ֳ *$ 2 ط! !$;$ ܿ   %2% 4a+                              bt                                  c                           d    #"%% %# &%# %, #  -$!-'!'0(!*4( -8. 0;4 ,98" &66& &44( ,95* -73(/51& ,52(,75+0:7,,;8,1?:.2A:./B;,ѿ3?9,3=5*  5:2%eݕ 98." :;2# $;<0"+?;. )?;0",@>/ 0A<,Ѿ 5D<-4B:*̿6@8*4>5'ɾ6>7(2>6' ˿8@7( 4>6*˿7B9,2B;,!4?:.! 4=8+ 8>4)  ƾ >C7'ƽ=C7(Ǽ;A7'ž#;>5();;3' 1@;.# ,=;." 2B>.$4@=/"7@=.ɽ;C;f-!ǽE9+"¼'AB6'"ؽ.CB3$"Ӽ5B>1" ˻8B;.!Ȼ#:C;-$ º'@D;,$ Ľ'AC9)"ݽ+EC8'!׻ 4EB5' ͻ;C=/' ǽ6-)$)=8.+$캢)?:0,$泞*A=4/$尞.E@72'ਜ਼,EB93& ۣ -GC:3$Ԟ *GE=5& ӛ+JH@7) ם"HLC:* ٞHLD;* כIQJ?.۟GRK@/ݞ @RMD4㢎 BUQG6祍 :TSH7馎6STK: 2SVM#󰎜 )QXQA%%Q[TD) K[VG- M[WH,q͝K[WG,H[YI/DZYJ0DZZK2ÜAXYK0Ü=TWJ/@WYK/!>TWI, ">TVH*%=SUG(򷩶'?SUE$')ͳ16'&7<)Ѵ39(%5<*ӵ49'"18'Ӵ4;'.6$Ҳ8>()3"Ұ7=&&1#Ӱ8A(!,!԰9E, *!հrl/4B+& ٶ4C,"ӱ4D-" Ѯ8E, ү4D- Ю7E, Ϯ4G2  ϭ3E/  ѱ,A/ҳ*?- ӳ*>/ շ:/ ֺ!;1  Ӹ6.#ѷ6- $ѹ6.$(κ3-$*Կ.+%+ '(%+$'%, &*0#-2"-0-/./10 +* /- 3,  4+  $s4(  $2'  &2%  (4&  &3%&3%  (1# *1 .0.,-./0"/.$2. '2+ ,3( /2   54 $73 *;1 .=/  0=+  2<( 8=$8<#9?$ 8>#4="2<$2>$ 0<" tn2:,7 *8! &6! !2 . -"*!'"%" " # "                 " ! !$ %  % & !' u}³ !' &)%' && )%(#)# (" $  #   $   #"  !!  !                          `~     ! !  ! !  !               wVjj 9;999999755779;;95557=???CGGC?==95/+'''#    ÿ       %)+))-59979;=CEGGKMQUUUSSUWYY[[]_a_][Y[]_ceeeeca__aa][[[YYWUQQQQQOQSUSQOOMMKKIIGIKKIGEECA?==?==;51-++)%! x07      !#%'''))++---++)'%%####!!!#%#!!#%%###!  y#ӿ         z        { *      &"   -  = %A %#? &(A .(? %31> '11: -508 16߿446:ؼ5119ط1.2<ղ.0 |3?ذ,4 .D"ڬ%2 ,C#ݭ .)E&ܧ- %C#ئ+ (B Ԧ)  #*AϦ(  %(@ˣ' %%<ʣ # &%<ɤ"''";Ȥ (*!;̦,(!4˦ +*%3Ω-*(-̨//,.˪0#-/(ͬ$.%-1#ѯ***,7ݵ -),,9ٵ0&2-<฽1%4/; 㺼ƿ/!7/=! 3/=# ƾ2+#80<$ ɽ5,!82=ź=."93=Ÿ<0!61;!ĸ;6 72=%ǹ:A#54;)ƴ8H"129,} E4ñ6O%.6=2ű:S&-5;0?R%-6;,ҾEQ%-4:(ϸMU#,5:'θOT#)28"϶NW#%28$γSZ%#17&αS_'/6)ίNd.17-аJg0-3+ϰEc3)1,бAf8'0-Я=e?%,,Я7a? )+ Ѱ3dH )-Ю0aI$(ͫ/_G"'ʪ/bO!(˫)[O% ɫ-`S $%ʪ'YP#'ħ%XT!, Ĩ#SO -ĩ&VS/%QP 5伦$NO 6#ầ"KN 7'๦!FM4*໨AH=0ݷ"@G~{r[>2ڴ">B@0Ϯ#=A $D2ʬ%;> #E4Ǭ!5; "D6Ī18%H9ë.6$I=ŭ(2#H<#-$I=)(L?'+L>#0O?2N<4N<  7N:  λ 8?;Ϳ8=9574$773 (73/"*6/+%/6+&11)24'#)75% !/=6"$*<2" .A2&0B0&0G2 %.K0'&,O3(-.Q1 *1 .R.*55R*+78T)1=:T%5@7S$2B2R%.G"0Q"1G!-O!0L&)Q$2M)%K 2O)&I3L'!C4K'!C:P+A6Q-<8Q.9 :O) 19N, -;N+(=M'$ >L'EN !˳2LC" ʹ3OE! ȭ5SEɭ6VE é3\K æ-^O §(`P!ݿ0dPڸ-eR!ۺ!eW"$ ܺfX% #  ݼ c_/$&༞_`3#( ớ^b5#+$ܲa^0'/'گd\,(0(ФcY*k*2)͠bY-)6-ʝ`Z2(6.УTV3 !60ϠN[;!72РFW;86"ϜDY@;:(ԟ:[I&:=+ ֟.UJ)8;* ֝$QL0 6>- לNN75=, ԚHP:5?/ ԚFQ>7@. ИBPA5@-ǐAUG6@, ?UH 4;(4RL&5?,7XR+2<(2YU.2<'2]W.4:$1]Y-5:"留/`^419"񨋜(aa9+5 񪏟 _gB*6#^iG(6#󫐢`kG(3뤑clI'1褒`hE%/㢕eoM!"-䢕drR##.ࡘasV')㤚|$ϱ#/@KFA(%),AS[TJA2(̷ܿ$#.4DMC8#"-CVYRI>1#޿Ⱦ%+138HE=0".J[YPF;- ´*:@DFK?-) (=SYQI>3" 3ECDC<1/4'"3CQTND9-ʸ4EIE@4%+0(->QRNI>3#ŷ &6BD:5'(437:JROKB6,ê!/>>5(!.7J@:407ET\XQJ>1,' ɤû#:IKB;8:2,+ ؼĶ.~ݯDFJNF9#Ŀ$#!)2:?721% +GXTE&0=>6.64-){01DWUE*.95.#(,'(ƾ5FRQB* !,2.)"%"ý$:QTN=.$(,)' " 1?MQH@6/(##  ķ$5DPUOH=,#  #-3:BOUSTD+  ->?EIZ[XQ9$ ij8CFMT]b[K0  ̿!9GNPXd`UG'&%" ŵ!3BTaeg]P:%)&) ȿ$=N\nia A0S<#"+/*,!ȿ7O\ff`VB,&-#"$ÿ.EX^b[TB* +(# ɿ $AY[YTK?.# #((# Ȼ/PVPLKB-(!( ſ6LMKF<3% $'%#%%!! #=HC@5*"")/,.-.$#% '7:;+$#!(,:=:40*#./0'#+:LLB7.%./)  #$.ANQE<1,9,!+"*DQPHA.H %13.!%(4GQOH?0 "5=8+$,>INRI?* #ս +_i1奁!۽# #񻡇=Uwc/[aA?YE;SWE-!- ѽ˹˽ѽDZ#+%  3E9--'?aQ)%#! ǿ    !!!%'-355-##-135;CGEA??AA?=5-+3=9%%;?7377=??7)!#'%      %-9?CKWgookkosw}uu{}{ywqeYW_eaYSOKKIC;3/-+'%%'''%˽ÿUmÿ  %+5;===COY]aegkmu{{wwy}}{smigggeYOIIKIGIKKMMIGA?CC?93-' ûŻ !+379?IOU[emsyvi}uuuqme[USQMIGEEA;1)!ſ           !!!#%''''')))++)%#%''%%#!!###!!#!!#%''%!!!!#'+)#!#')+/577qx !(   "2F6  &*(# "<," ۸  -" ,(,5! -28B4%DZ ".>r 4*8, "759B4&ҿ )B@689%4;@F;*%л *?<><*(.054++$ ʷ) #8=9;0,0:sȔee>41(ǽ -;689.%/:@6/#Ľ "3407.$5>46/! '26B9&'<<<4 ƽ%0,1:,.<<=2 Ǻ& #1,26"=;16#ɾ &/21% (8;1+Ⱥ   ,()" 2A3+" ʵ '% $6<0(ͺ !!&# $281) * +'!#*:8) t&ƿ** #+& "182 ž-*  $'!+" #/;1)*  )$# $)21&   ( " " *5&  $ "**,,""' (%&)" ȼ!& "%0)%)½ "2$" !01))!Ľ .51* #'1-)&  $<5/- %/.&&" u|!" .7?< $(.%$'չ',&( /8A2 #*&#)ҹ ,-(' #-:1)+ "!վ4@=5%ƽ̽&FW]S6$*+ +=C>6$Ծû 1LUZH* /3' -@?=6 ̺=QTW>!*2.-v)9 294$˽&>MJ>-,( *@D@@2ļλ )AF?83%! #8DDE>("ķ6B@;6/# 0=BGB3(Һ(8+&6>BD:))κ4?;>7.& #29EF=.*Ļ69:B1,&  09BC9-) w$ʻ.=CJ6-.  &5?H<&"ʹ6>HF+*, 1:AA1'9DJ;'##" 0=A4#,ANE0# "" )8=1$#;EJ6$ '+$)7=2'!6EIA+&3+%*(#1:0#$п/AD6%3915+',30!#ǿ4F>;+(838/$ !%.BIB<2(Ʋ"%%15,41"!+=GC?;/ ż+2>C8+"'(1EGB?8+ Ǿ2=FF;.)=IIF=0"ν&1AJE?) "1IMKD;0 Ĺ1:@JH;& 1IPLD:- Ž+?FBCC7#0DJKC;0! ۿû+ISG?9.  4GPNE;. Ѻý.KUJI:&$3BNMD:, ɸ¾7RysR\UL2%6GNH?6( Į(FXTTC)$6:@KH>6-Ʃ%AY]UE-!);@AJD:2#Խ.@IPJB7-# &,BIGI?6+ Թ-8CK@@;3+!*5FNKI>3*Ī-5><23894/35HPJI>3(ʲ')84*..479;9LSNJ>-ͺ! ".$&0118A9BUUQH=.ø # &,.+19:L[YSJ>.ľ&&-68<41*,5/( ˶ô (18=AC=<412*11.{&ϲ&3?C=@68<67.*2-+%2FFE?909@9750-()% ƿ(ANNL<3140)" Ŀ2CKSH616=EGE@4.' Ͷ3,4BOTQJ9/)&dzǼ2AKLC5)/B?6'&,3G[]ULC5* иf"/` $(# '/,4(0@D; P?П_/̗W; ׍?` kU@𠬷o_P?^~CƄ _m|>„OgPШOsh4Ĉ7Y{m`2Θ ?]{m`<䰘?XqjdJ0ฐ+LmvshP8Ұ /Kgso`H0#?[m{xdP:$ IJ'?Rer~~qdSB1 Ĵ/@R_lu{xl`RD4$Ķ #/9CKSY_adddb`[VNF<2'gC&/7?FNSX[_adcca`]ZUPIC:2)  ú"*3;CJQW^bgkoqstvuusrolhd`\VPJD>80(!  !',27=BGKOSWZ]_aceeffgfedc`^[XTQMID@/l/ ?(;I0(!" Ȁ' Ā¾0!$)$  P3870$  ԠD  h,]#! L,+." Ҡ¿? L%,-.,     ԗ ?,$  Ԡ7!#((*,*!Ԑ0 ٸ7"! i;oP'-,-*+('%" Ѹ ȟX+,*('#! ԃ7  ѠX331-**('# лd,,& `*'  j΁ЏP&  ܠ?    А  "" Ā!"$'&'&   W;?@8*  ٠kW @/16780    'hCD9/(  ſˈ 4,-//1121,! Ġ       l8 / ϸ  '`><830)($  ؟   mT:U'  @*((&#!  žſ    د      n@/   ѰowXd p-   $<2ν[ _"  $Юý   Է"(  @฿+(+课 ܯ/ ( 䯿\6 4(ȳ X$ ( ث0˻ү/2 챽   L]svN@ҿ   ڳ^(؟ '  _i`8a aA" bZ+uc3dėewPQRS:@G4?4 / 8@PH G;@O? @;G@H P@~ /d-T=2/?xЏ0$PаP(G"Bx OV0Ȉג `xwa`Р? BW  ?#@?ݿ/8П ϯ8(0" П`П߯W((/$O#Ѐ߯*(?? `0 / ?V 0@F@?@(O87C0_G@ķOR$@Ьϟ !-߿HP@4pAȲ@=Ѕ  ӘU`@x0 ?O0Kh֟g/KH&ר нD@GHC_ 3 Ь,ȫش,訄XȀ@+±/I(Ԁ||@P1Ԡ;ϠĨ?0/\OOZ $/$؀Ϡ 8G07@з?П а!ȏ %/<'7"П ๑? W@̷Hȿ$/0_T߷WЃP@?/H ?,ٿO߯R O请@*"ްDV&¨߿ ԿW @ 0X70" /Ґ $ o W-?5ĿȏL('?D14:(ಿ( ۷'(? ҷ - 1 #࠿?;+ (0/0 0￸OЏĻ  ȀH7з,׿0< Ѐ _Dįΐ ++ 00 + %:/,0O W( 8ਿ?؀ з(/ دŗ΀? ؿ$/ J.ׯѿo,3 8@@ ׿Я0@ ,) ˿  00Рп+Oؗ@-˴(/ԠX ? ЀV胿ߐ/ȁ@У''"ܿ4@  Ը X ؀ ؟+@ .G; 7$02&Ш'ؿک и⟘0 P'ؤ` ؇Р$ 0/  ¿?0(ط Y2v%$"(#" Ŀ蟺/ȿ 0 /'" @З 'җ 0K؛%ԟFGPº'ѿ ܼZA#8 ¿/ͷ27 ?+  ݧ<  /ﰿſ$DZ  @ϯ (߿( ഺ 0  Щ⫻н$ ?,' '&'' дEs?u ((ķ@8ȿ0(0˷ ($ ( Ը /ߵ(%  "($$ п/ȿ$'(   $$  '"Fٽ 0 ÿ  ''0  8 ʿ    ̽    Է ̿ӿGN:v п #            Hfl    I  JK67YL8M NO: 3               $;N#$           <B&    =     >F  ?ɮyx6   @9+A˨kHЀqph`P` BSeqp `.\P.`Ѐqph`P` qp `.\P.`Ѐqph`+"/* ȿPO+'{PHП߻ߠ8=ߠȯՀ (P?( հ΀/? 7ǙO0H2+ //;?/߰Џ0@P0D?0;+P:  `ЯЯ0(OxCͭ݇(/( @ (ߨ 8߫ ?@Aw/'*Ϡ.ߔ/HЯ?48 P@*7/̇? 0(OH@: /7H$O8 Я  @/4/00) / #03,$ ? O.8П O08 4($ Р) 77@з%0/@?ذ/<&(ħ(D2Į'/Ъ$$ȭ(+(Р5 Ȧ ' ʭ( %0̨ȿ4ŵ ԏ'4;' ;@ԧ '$*9Аȿ ȩ(;ȿ 8ԯ 00 P$ / 4ƣ߰ #е !8ϸ(3#('² 7ȯ 0؟$7ħ"+, #6$Ϳ(8%?з ԟ '$ʿ ȿ ࿿%+/tr0;п@  7@!(0$@ B% ' +#$Ȣ)* &Р'*ि$ '&Р)-1/ /'(Р,,䤿0/ 2'(С/0- ¿, /'$ȟ-,,/ &$ࢿ# &*褿(Ƞ,(Ȝ%'$ȝ'(ि' +訿% Ȫ?/ $ȿě0@ @++?J С/(0$ȇ蠿Ŀ4,3,3,2,1,1,0,0,0,0 dc.w 0,0,0,0,1,1,2,3,3,4,5,7,8,9,11,12,13,15,16,18,20,21,23,24,26,27 dc.w 29,30,31,33,34,35,36,37,37,38,39,39,39,40,40,40,39,39,39,38,37 dc.w 37,36,35,34,33,31,30,29,27,26,24,23,21,20,18,16,15,13,12,11 dc.w 9,8,7,5,4,3,3,2,1,1,0,0,0,0 dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0(z4,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.w $ff textzaehler:blk.w 1,0 count: blk.w 1,0 warten5:blk.w 1,0 zaehler32:blk.w 1,0 aus: blk.w 1,0 doppenein:blk.w 1,0 rettme: blk.l 1,0 rettme2:blk.l 1,0 hoch:blk.w 1,0 warten: blk.w 1,0 textretter:blk.l 1,0 taste: blk.w 1,0 schiftme:blk.w 1,0 retten: blk.w 1,0 memory: blk.l 1,0 joytest:blk.l 1,2 rechner:blk.w 1,0 blitterquelle: blk.l 1,0 countmich: blk.w 1,0 fuckstartblitt: blk.l 1,0 fu)&3ckendblitt: blk.l 1,0 stay: blk.w 1,0 merker1: blk.w 1,0 merker2: blk.w 1,0 merker3: blk.w 1,0 merker4: blk.w 1,0 allmerker: blk.w 1,0 ysno: blk.w 1,0 start_muzak: move.l #data,muzakoffset ;** get offset init0: move.l muzakoffset,a0 ;** get highest used pattern add.l #472,a0 move.l #$80,d0 clr.l d1 init1: move.l d1,d2 subq.w #1,d0 init2: move.b (a0)+,d1 cmp.b d2,d1 bgt.s init1 dbf d0,init2 addq.b #1,d2 init3: move.l muzakoffset,a0 ;** calc samplepointers lea pointers*,a1 mulu #1024,d2 add.l #600,d2 add.l a0,d2 move.l #15-1,d0 init4: move.l d2,(a1)+ clr.l d1 move.w 42(a0),d1 lsl.l #1,d1 add.l d1,d2 add.l #30,a0 dbf d0,init4 init5: move.w #$0,$dff0a8 ;** clear used values move.w #$0,$dff0b8 move.w #$0,$dff0c8 move.w #$0,$dff0d8 clr.w timpos clr.l trkpos clr.l patpos init6: move.l muzakoffset,a0 ;** initialize timer irq move.b 470(a0),numpat+1 ;number of patterns move.l #240,d0 sub.b 471(a0),d0 mulu #122,d0 move.b #$0,$bfde0+<0 move.b d0,$bfd400 lsr.w #8,d0 move.b d0,$bfd500 move.b #$81,$bfdd00 move.b #$11,$bfde00 move.l $78,lev6save move.l #lev6interrupt,$78 rts stop_muzak: move.b #$1,$bfdd00 ;** restore timer & dma move.l lev6save,$78 move.w #$0,$dff0a8 move.w #$0,$dff0b8 move.w #$0,$dff0c8 move.w #$0,$dff0d8 move.w #$f,$dff096 rts lev6interrupt: movem.l d0/d1,-(sp) ;** jump bsr replay_muzak move.b $bfdd00,d0 move.w #$2000,$dff09c movem.l (sp)+,d0/d1 rte replay_muzak: movem.l,D d0-d7/a0-a6,-(a7) addq.w #1,timpos speed: cmp.w #6,timpos beq replaystep chaneleffects: ;** seek effects lea datach0,a6 tst.b 3(a6) beq.s ceff1 lea $dff0a0,a5 bsr.s ceff5 ceff1: lea datach1,a6 tst.b 3(a6) beq.s ceff2 lea $dff0b0,a5 bsr.s ceff5 ceff2: lea datach2,a6 tst.b 3(a6) beq.s ceff3 lea $dff0c0,a5 bsr.s ceff5 ceff3: lea datach3,a6 tst.b 3(a6) beq.s ceff4 lea $dff0d0,a5 bsr.s ceff5 ceff4: movem.l (a7)+,d0-d7/a0-a6 rts ceff5: move.b 2(a6),d0 ;room for s-Wome more and.b #$0f,d0 ;implementations below tst.b d0 beq.s arpreggiato cmp.b #1,d0 beq pitchup cmp.b #2,d0 beq pitchdown cmp.b #12,d0 beq setvol cmp.b #14,d0 beq setfilt cmp.b #15,d0 beq setspeed rts arpreggiato: ;** spread by time cmp.w #1,timpos beq.s arp1 cmp.w #2,timpos beq.s arp2 cmp.w #3,timpos beq.s arp3 cmp.w #4,timpos beq.s arp1 cmp.w #5,timpos beq.s arp2 rts arp1: clr.l d0 ;** get higher note-values move.b 3(a6),d0 ; or play original 'FH suber: sub.w #1,allmerker cmp.w #0,allmerker blt hit go: rts hit: move.w #0,allmerker jmp go garfield: move.w allmerker,d4 and.l #$00ff,d4 move.l d4,d5 and.l #$000f,d5 cmp.l #$0001,d5 beq newsetiff cmp.l #$0003,d5 beq newsetiff cmp.l #$0005,d5 beq newsetiff cmp.l #$0007,d5 beq newsetiff cmp.l #$0009,d5 beq newsetiff cmp.l #$000b,d5 beq newsetiff cmp.l #$000d,d5 beq newsetiff cmp.l #$000f,d5 beq newsetiff backfuck: lea tabelle,a5 add.l d4,a5 move.l J(a5),d1 add.l #$73700,d1 move.l d1,fuckstartblitt rts newsetiff: sub.l #1,d4 jmp backfuck vu1: move.w merker1,allmerker jsr vuall move.w allmerker,merker1 rts vu2: move.w merker2,allmerker jsr vuall move.w allmerker,merker2 rts vu3: move.w merker3,allmerker jsr vuall move.w allmerker,merker3 rts vu4: move.w merker4,allmerker jsr vuall move.w allmerker,merker4 rts vuall: jsr suber jsr garfield jsr blitten add.l #$00000a,fuckendblitt rts blitten: move.l fuckstǎrtblitt,a4 move.l fuckendblitt,a5 bsr allblit add.l #$3840,a4 add.l #$3840,a5 bsr allblit rts allblit: move.w #%0000100111110000,$dff040 move.w #$0000,$dff042 move.w #$ffff,$dff044 move.w #$ffff,$dff046 move.l a4,$dff050 move.l a5,$dff054 move.w #$0020,$dff064;modulo source move.w #$0020,$dff066;modulo ziel move.w #%0000110010000100,$dff058;blitterfenster+start jsr bbusy rts bbusy: btst #14,$dff002 bne bbusy rts texterrechnung: move.l #$60098,blitterquelle 4|gmove.l textretter,a0 move.b (a0)+,d4 move.l a0,textretter cmp.b #$00,d4 beq neuset cmp.b #$2f,d4 beq neuset10 cmp.b #$3f,d4 beq neuset20 hierhinja: lea ficktabelle,a1 nochmal: move.b (a1)+,d6 add.w #1,textzaehler cmp.b d4,d6 bne nochmal move.w textzaehler,d2 sub.w #1,d2 divu #10,d2 move.w d2,d1 swap d2 mulu #4,d2 add.l d2,blitterquelle mulu #7400,d1 add.l d1,blitterquelle move.w #0,textzaehler backen: rts neuset: lea scrolltext,a0 move.l a0,textrett 8Ser move.l #$60098+22200,blitterquelle jmp backen neuset10: move.w #1,doppenein move.b (a0)+,d4 move.l a0,textretter jmp hierhinja neuset20: move.w #0,doppenein move.b (a0)+,d4 move.l a0,textretter jmp hierhinja fontblitt: bsr bbusy move.w #$09f0,$dff040 move.w #$0000,$dff042 move.l #$ffffffff,$dff044 move.w #$0024,$dff064 move.w #$002e,$dff066 move.l blitterquelle,$dff050 move.l #$6c02e,$dff054 move.w #%0010111001000010,$dff058 ; vvvvvvvvvvhhhhhh r!Lޝwts scroll: bsr bbusy move.w schiftme,$dff040 move.w #$0000,$dff042 move.l #$ffffffff,$dff044 move.w #$0000,$dff064 move.w #$0000,$dff066 move.l #$6bffe,$dff050 move.l #$6bffc,$dff054 move.w #%0001011100110010,$dff058 ; vvvvvvvvvvhhhhhh rts tabelle: dc.w $0,$8,$10,$18,$20 dc.w $07d0,$07d8,$07e0,$07e8,$07f0 dc.w $0fa0,$0fa8,$0fb0,$0fb8,$0fc0 dc.w $1770,$1778,$1780,$1788,$1790 dc.w $1f40,$1f48,$1f50,$1f58,$1f60 dc.w $2710,$2718,$2720,$2728,$2730 dc"d_.w $2ee0,$2ee8,$2ef0,$2ef8,$2f00 dc.w $36b0,$36b8,$36c0,$36c8,$36d0 newclist: dc.w $0101,$fffe dc.w $00f4,$0003 dc.w $00f6,$0000 dc.w $0120,$0005 dc.w $0122,$f000 dc.w $0124,$0007 dc.w $0126,$f000 dc.w $0128,$0007 dc.w $012a,$f000 dc.w $012c,$0007 dc.w $012e,$f000 dc.w $0130,$0007 dc.w $0132,$f000 dc.w $0134,$0007 dc.w $0136,$f000 dc.w $0138,$0007 dc.w $013a,$f000 dc.w $013c,$0007 dc.w $013e,$f000 dc.w $01a0,$0888 dc.w $01a2,$0999 dc.w $01a4,$0555 dc.w $01a#/g6,$0fff dc.w $3001,$fffe dc.w $0092,$0038 dc.w $0094,$00d0 dc.w $008e,$2970 dc.w $0090,$29d0 dc.w $0108,$0008 dc.w $010a,$0008 dc.w $0180,$0000 dc.w $0182,$0c0d dc.w $0184,$0e3e dc.w $0186,$0f77 dc.w $0188,$0335 dc.w $018a,$0446 dc.w $018c,$0557 dc.w $018e,$0568 dc.w $0190,$0669 dc.w $0192,$0779 dc.w $0194,$099a dc.w $0196,$0aab dc.w $0198,$0bbc dc.w $019a,$0ccd dc.w $019c,$0eee dc.w $019e,$0fff dc.w $3101,$fffe dc.w $0100,$4000 copwriter: blk.b 15000,0  $Hv newclist2: dc.w $8a07,$fffe dc.w $0180,$0000 dc.w $8b07,$fffe dc.w $0180,$0111 dc.w $8c07,$fffe dc.w $0180,$0222 dc.w $8d07,$fffe dc.w $0180,$0333 dc.w $8e07,$fffe dc.w $0180,$0444 dc.w $8f07,$fffe dc.w $0180,$0555 dc.w $9007,$fffe dc.w $0180,$0666 dc.w $9107,$fffe dc.w $0180,$0777 dc.w $9207,$fffe dc.w $0180,$0888 dc.w $9307,$fffe dc.w $0180,$0999 dc.w $9407,$fffe dc.w $0180,$0aaa dc.w $9507,$fffe dc.w $0180,$0bbb dc.w $9607,$fffe dc.w $0180,$0ccc dc.w $9!%707,$fffe dc.w $0180,$0ddd dc.w $9807,$fffe dc.w $0180,$0eee dc.w $9907,$fffe dc.w $0180,$0fff dc.w $9a07,$fffe dc.w $0180,$0fff dc.w $9b07,$fffe dc.w $0180,$0eee dc.w $9c07,$fffe dc.w $0180,$0ddd dc.w $9d07,$fffe dc.w $0180,$0ccc dc.w $9e07,$fffe dc.w $0180,$0bbb dc.w $9f07,$fffe dc.w $0180,$0aaa dc.w $a007,$fffe dc.w $0180,$0999 dc.w $a107,$fffe dc.w $0180,$0888 dc.w $a207,$fffe dc.w $0180,$0777 dc.w $a307,$fffe dc.w $0180,$0666 dc.w $a407,$fffe dc.w $018"h0,$0555 dc.w $a507,$fffe dc.w $0180,$0444 dc.w $a607,$fffe dc.w $0180,$0333 dc.w $a707,$fffe dc.w $0180,$0222 dc.w $a807,$fffe dc.w $0180,$0111 dc.w $a907,$fffe dc.w $0180,$0000 dc.w $aa07,$fffe dc.w $008e,$2961 dc.w $0090,$70d1 dc.w $0100,$2000 dc.w $0092,$0038 dc.w $0094,$00d0 dc.w $0108,$0000 dc.w $010a,$0000 dc.w $00e0,$0007 dc.w $00e2,$a800 dc.w $00e4,$0007 dc.w $00e6,$e040 dc.w $0180,$0000 dc.w $0182,$0aac dc.w $0184,$0668 dc.w $0186,$0ddf dc.w $df ' k: rts ausblenden: lea ftab,a1 move.w #31,d0 int: move.w (a1),d4 cmp.w #$0000,(a1) beq ja sub.w #$0111,d4 move.w d4,(a1) add.w #2,a1 back: dbf d0,int rts ja: add.w #$0111,(a1) jmp back rts ausset: move.w #1,aus move.w #0,zaehler32 move.w #0,warten rts copyein: move.w #30,d0 move.l #copwriter+3534,a5 lea ftab,a1 schlafen: move.w (a1)+,(a5) add.l #8,a5 dbf d0,schlafen rts ftab: dc.w $0000,$0111,$0222,$0333,$0444,$0555,$0666,$0777 dc.w $0888,$0999,$0aaa,$0bbb,(94e$0ccc,$0ddd,$0eee,$0fff dc.w $0fff,$0eee,$0ddd,$0ccc,$0bbb,$0aaa,$0999,$0888 dc.w $0777,$0666,$0555,$0444,$0333,$0222,$0111,$0000 ftabbackup: dc.w $0000,$0111,$0222,$0333,$0444,$0555,$0666,$0777 dc.w $0888,$0999,$0aaa,$0bbb,$0ccc,$0ddd,$0eee,$0fff dc.w $0fff,$0eee,$0ddd,$0ccc,$0bbb,$0aaa,$0999,$0888 dc.w $0777,$0666,$0555,$0444,$0333,$0222,$0111,$0000 doppen: cmp.w #1,hoch beq runter lea copwriter+3852,a0 lea copwriter+3876,a1 move.l rettme,a4 add.l #2,rettme cmp.w )@#$ffc1,(a0) beq hhh move.w (a4),d1 cmp.w #$0a00,d1 beq phr add.w d1,(a0) add.w d1,(a1) rts phr: move.w #1,hoch lea doppendaten2,a4 move.l a4,rettme2 rts doppendaten: dc.w $0000,$0000,$0100,$0100,$0100,$0100,$0100 dc.w $0200,$0100,$0200,$0200,$0200,$0300,$0200,$0300,$0200 dc.w $0200,$0300,$0300,$0300,$0300,$0300,$0300,$0400,$0300 dc.w $0a00 doppendaten2: dc.w $0300,$0400,$0300,$0300,$0300,$0300,$0300,$0300,$0200 dc.w $0200,$0300,$0200,$0300,$0200,$0200,$0200,$0100,$0*+200 dc.w $0100,$0100,$0100,$0100,$0100,$0000,$0000 dc.w $0a00 hhh: lea copwriter+3848,a4 move.l #$ffdffffe,(a4) move.w #$01c1,(a0) move.w #$01d1,(a1) rts runter: lea copwriter+3852,a0 lea copwriter+3876,a1 move.l rettme2,a4 add.l #2,rettme2 cmp.w #$01c1,(a0) beq hh move.w (a4),d1 cmp.w #$0a00,d1 beq phr2 sub.w d1,(a0) sub.w d1,(a1) rts hh: lea copwriter+3848,a4 move.l #$dc01ffffe,(a4) move.w #$ffc1,(a0) move.w #$ffd1,(a1) rts phr2: move.w #0,hoch lea doppe+%@ndaten,a4 move.l a4,rettme rts tastabfrage: move.b $bfec01,d1 not.b d1 ror.b #1,d1 cmp.b #$50,d1 beq sat0 cmp.b #$51,d1 beq sat1 cmp.b #$52,d1 beq sat2 cmp.b #$53,d1 beq sat3 cmp.b #$54,d1 beq sat4 rts sat0: move.w #32,taste move.w #$f9f0,schiftme move.b #0,$bfec01 rts sat1: move.w #16,taste move.w #$e9f0,schiftme move.b #0,$bfec01 rts sat2: move.w #8,taste move.w #$c9f0,schiftme move.b #0,$bfec01 rts sat3: move.w #04,taste move.w #$89f0,schiftme m,^>^ove.b #0,$bfec01 rts sat4: move.w #$02,taste move.w #$09f0,schiftme move.b #0,$bfec01 rts mover: move.l #$5f001,a0 move.l #spritetabelle,a1 move.l #60,d0 star: move.b (a1)+,d1 add.b d1,(a0) add.l #8,a0 dbf d0,star rts spritetabelle: dc.b 1,2,4,2,1,3,3,4,3,1,5,3,2,4,2,3,5,1,2,4 dc.b 1,2,4,2,1,3,3,4,3,1,5,3,2,4,2,3,5,1,2,4 dc.b 1,2,4,2,1,3,3,4,3,1,5,3,2,4,2,3,5,1,2,4 dc.b 1,2,4,2,1,3,3,4,3,1,5,3,2,4,2,3,5,1,2,4 dc.b 1,2,4,2,1,3,3,4,3,1,5,3,2,4,2,3,5,1,2,4 dc.b 1,2,-4,2,1,3,3,4,3,1,5,3,2,4,2,3,5,1,2,4 dc.b 1,2,4,2,1,3,3,4,3,1,5,3,2,4,2,3,5,1,2,4 dc.b 1,2,4,2,1,3,3,4,3,1,5,3,2,4,2,3,5,1,2,4 dc.b 1,2,4,2,1,3,3,4,3,1,5,3,2,4,2,3,5,1,2,4 dc.b 1,2,4,2,1,3,3,4,3,1,5,3,2,4,2,3,5,1,2,4 dc.b 1,2,4,2,1,3,3,4,3,1,5,3,2,4,2,3,5,1,2,4 dc.b 1,2,4,2,1,3,3,4,3,1,5,3,2,4,2,3,5,1,2,4 dc.b 1,2,4,2,1,3,3,4,3,1,5,3,2,4,2,3,5,1,2,4 dc.b 1,2,4,2,1,3,3,4,3,1,5,3,2,4,2,3,5,1,2,4 dc.b 1,2,4,2,1,3,3,4,3,1,5,3,2,4,2,3,5,1,2,4 dc.b 1,2,4,2,1,3,3,4,3,1,5,3,2,4,2,3,.i5,1,2,4 dc.b 1,2,4,2,1,3,3,4,3,1,5,3,2,4,2,3,5,1,2,4 schiebtabelle: dc.b 80,200,40,30,23,66,192,55,171,111 dc.b 80,200,40,30,23,66,192,55,171,111 dc.b 80,200,40,30,23,66,192,55,171,111 dc.b 80,200,40,30,23,66,192,55,171,111 dc.b 80,200,40,30,23,66,192,55,171,111 dc.b 80,200,40,30,23,66,192,55,171,111 dc.b 80,200,40,30,23,66,192,55,171,111 dc.b 80,200,40,30,23,66,192,55,171,111 dc.b 80,200,40,30,23,66,192,55,171,111 dc.b 80,200,40,30,23,66,192,55,171,111 dc.b 80,200,40,30,/J23,66,192,55,171,111 dc.b 80,200,40,30,23,66,192,55,171,111 dc.b 80,200,40,30,23,66,192,55,171,111 dc.b 80,200,40,30,23,66,192,55,171,111 dc.b 80,200,40,30,23,66,192,55,171,111 dc.b 80,200,40,30,23,66,192,55,171,111 dc.b 80,200,40,30,23,66,192,55,171,111 dc.b 80,200,40,30,23,66,192,55,171,111 dc.b 80,200,40,30,23,66,192,55,171,111 dc.b 80,200,40,30,23,66,192,55,171,111 joystick: clr.w $dff036 cmp.w #$0100,$dff00c bne dimiter cmp.l #2,joytest beq dimiter sub.l #2,joy0{test dimiter: clr.w $dff036 cmp.w #$0001,$dff00c bne dimiter2 cmp.l #10,joytest beq dimiter2 add.l #2,joytest dimiter2: rts wabbler: move.l memory,a0 add.l joytest,a0 move.l a0,memory lea copwriter+38,a1 lea copwriter+10,a2 lea copwriter+18,a3 lea copwriter+26,a4 lea copwriter+34,a5 move.w #86,d0 ;anzahl der zu verschiebenen rasterlines move.w #$0000,d3 move.w #$0dc0,d4 move.w #$1b80,d5 move.w #$2940,d7 interne: move.w (a0)+,d1 cmp.w #$00ff,d1 beq newsetS move.w d1,d2 and.w #$000f,d2 move.w d2,d6 lsl #4,d2 add.w d6,d2 move.w d2,(a1) lsr #4,d1 mulu #2,d1 add.w #40,d3 add.w #40,d4 add.w #40,d5 add.w #40,d7 move.w d3,d6 sub.w d1,d6 move.w d6,(a2) move.w d4,d6 sub.w d1,d6 move.w d6,(a3) move.w d5,d6 sub.w d1,d6 move.w d6,(a4) move.w d7,d6 sub.w d1,d6 move.w d6,(a5) add.l #40,a1 add.l #40,a2 add.l #40,a3 add.l #40,a4 add.l #40,a5 dbf d0,interne rts newset: lea wabbeldaten,a0 move.l a0,memory jmp wabbler 2ڞ>ertig ; der zu editierende text liegt ab zeile 210 ; die tabelle darueber kontrolliert die sonderzeichen ; ich habe sie bestmoeglichst gelegt >EXTERN "bestfontiff",$60000 >extern "inside",data >extern "thrustlogo",$70000 >extern "vumeter",$73700 org $40000 load $40000 g: move.l #start,$80 trap #0 ede: bsr stop_muzak move.l 4,a6 lea gfxname,a1 jsr -408(a6) move.l d0,a6 move.l 38(a6),$dff080 move.l a6,a1 move.l 4,a6 jsr -414(a6) clr.w $dff088 move.w3Z #$8020,$dff096 rts even gfxname:dc.b "graphics.library",0 even rts start: lea doppendaten,a4 move.l a4,rettme move.w #$e9f0,schiftme move.w #16,taste move.l #$6c000,a0 move.w #$3000,d0 looping: move.b #0,(a0)+ move.b d0,$dff180 dbf d0,looping bsr start_muzak lea $5f000,a0 move.w #50,d0;anfangraster move.w #51,d1;enderaster move.w #60,d2;x/koordinate move.w #18,d3;anzahl sterne/3 move.l #schiebtabelle,a4 again: move.w #1,d4 move.w #0,d5 jsr schleif m4# ove.w #0,d4 move.w #1,d5 jsr schleif move.w #1,d4 move.w #1,d5 jsr schleif dbf d3,again move.w #$0000,(a0)+ move.w #$0000,(a0)+ jmp vorbei schleif: move.b d0,(a0)+ move.b d2,(a0)+ move.b d1,(a0)+ move.b #0,(a0)+ move.w d4,(a0)+ move.w d5,(a0)+ move.b (a4)+,d6 add.b d6,d2 add.b #2,d0 add.b #2,d1 rts vorbei: lea copwriter,a0 move.w #88,d0 move.l #$3109fffe,d1 move.w #$0000,d3 move.w #$0dc0,d4 move.w #$01b8,d5 move.w #$2940,d2 move.l #$01020000,d6 loop: mo5cve.l d1,(a0)+ add.l #$01000000,d1 move.w #$00e0,(a0)+ move.w #$0007,(a0)+ move.w #$00e2,(a0)+ move.w d3,(a0)+ add.w #40,d3 move.w #$00e4,(a0)+ move.w #$0007,(a0)+ move.w #$00e6,(a0)+ move.w d4,(a0)+ add.w #40,d4 move.w #$00e8,(a0)+ move.w #$0007,(a0)+ move.w #$00ea,(a0)+ move.w d5,(a0)+ add.w #40,d5 move.w #$00ec,(a0)+ move.w #$0007,(a0)+ move.w #$00ee,(a0)+ move.w d2,(a0)+ add.w #40,d2 move.l d6,(a0)+ sub.w #1,d0 bne loop move.l #$8801fffe,(a0)+ move.l #$06ܝ1000000,(a0)+ lea newclist2,a1 move.w #600,d3 schleifen: move.w (a1)+,(a0)+ dbf d3,schleifen move.l #$73708,fuckstartblitt move.l #wabbeldaten,a0 move.l a0,memory move.w #0,countmich lea scrolltext,a0 move.l a0,textretter move.l #$60096,blitterquelle move.w #%0000000000000000,$dff104 move.l #newclist,$dff080 bsr texterrechnung raster: cmp.b #32,$dff006 bne raster bsr mover add.w #1,rechner cmp.w #14,rechner bne h move.w #1,rechner bsr joystick h: 7ITjs bsr wabbler move.l #$7a800,fuckendblitt bsr vu1 bsr vu2 bsr vu3 bsr vu4 add.w #1,countmich move.w taste,d3 cmp.w countmich,d3 bne weiter move.w #0,countmich bsr texterrechnung bsr fontblitt bsr tastabfrage weiter: bsr scroll cmp.w #1,aus beq weiter5 bsr coppercabana jmp weiter6 weiter5: bsr coppercabanaein weiter6: cmp.w #1,doppenein bne weiter7 bsr doppen weiter7: btst #6,$bfe001 bne raster rte ficktabelle: dc.b "abcdefghijklmnopqrstuvwxyzABC" 8$] dc.b " DEF':.GZIJK1234567890LMNTHRUST" even scrolltext: dc.b " LLLMMMNNN THRUST NNNMMMLLL " dc.b " presents new stuff greetings to all our con" dc.b "tacts / attention DDEE this intro was programmed by" dc.b " G garfield G" dc.b " a new member of thrust ? you can change scrolling" dc.b " speed with f1 to f5 also the wabbel speed of the" dc.b " thrust logo with the joystick /" dc.b " AAAAA greetings to all our contacts" dc.b " sorry garfield but i 9yyz am toooo lazy to make some sonder" dc.b "zeichen so here are our special letters ? J" dc.b " yeah yeah " dc.b " ABC DEF':GZIJK1234567890LMNTHRUST" dc.b " garfiel wants to write some special words for the world" dc.b " in his intro THRUST " dc.b " now garfield is speaking for a second " dc.b " i left / bfbs ? to join the mighty thrust " dc.b "the special garfield greetings only go to my real friends" dc.b " like : F zeronine quadlite lern " dc.b " mal schoen :l~ fuer dein studium ha ha ha F" dc.b " I the invisible brains I K lukullus dynamo peter" dc.b " in cologne K I bfbs I F solosoft and the rest of" dc.b " mantronix F I mr.ego I F tfs sorry that you have to leave" dc.b " us F I unique front I K unknown of doc hiho K " dc.b " J knf J K juergen thanks for all films man" dc.b " J the darkside division i see forward to your new game " dc.b " and naturally all of thrust especially to" dc.b " blitter splitter " dc.b " please conta ;K7>ct phil for my adress if you have the newest" dc.b " modules for the pc engine or if you are able to get infos" dc.b " about the new sega system " dc.b " please also get in contact with me if you are a rather " dc.b " good coder or something like this " dc.b " okay phil das wars von meiner seide",0 even coppercabanaein: add.w #1,zaehler32 cmp.w #32,zaehler32 beq ausset2 add.w #1,warten cmp.w #2,warten bne ruck bsr einblenden move.w #0,warten bsr copyein rts ausse &:5@t2: move.w #0,aus move.w #0,zaehler32 move.w #0,warten rts einblenden: lea ftab,a1 lea ftabbackup,a2 move.w #31,d0 movers: move.w (a1),d4 move.w (a2),d5 cmp.w d4,d5 beq jungle command: add.w #$0111,d4 move.w d4,(a1) add.w #2,a1 add.w #2,a2 dbf d0,movers rts jungle: sub.w #$0111,d4 jmp command rts rts coppercabana: add.w #1,zaehler32 cmp.w #32,zaehler32 beq ausset add.w #1,warten cmp.w #2,warten bne ruck bsr ausblenden move.w #0,warten bsr copyein ruc2=Ϊ       UU UU@ UU@ UUP UUP UU UU@ UU@ UUP UUP 3>Lq%%UW UW UW UW UW     UTWUUUUGUUWUUWP?P?P?P?P?     Uv Uv Uv UvUv  ?  ?  ? ?  ?P P P P P G4?~GŢGŢGŢGť@@@@@ A A A A A1}1}1}1}1};;;;;EEEEE5@O     6Aiu       99Ǐ9UUT UUT UUUXeUUUXeUUUXe }ɚ}ɚǞ}ɕUUT UUT UUUeUUUeUUUe eee7B;UW UW  UUWUUWP?P?  UvUv  ?  ?8C=P P GŢG@@ A A1}1};;EE9Di  :ENђ   99UUUXeUUUXe}ɚ}UUUeUUUeee;F< w    99UUUXeUUUXe}ɚ}UUUeUUUeee'H["ذUW UW     UUWUUWUUWUUWUUWP?P?P?P?P?     Uv Uv Uv Uv Uv   ?  ?  ?  ?  ?P @ P P P GŢGŢGŢGŢGť@@@@@ A A A A A(I1}1}0}1}1};;;;;EEEEE)J           *Kw T U U U@ U@ T U U U@ U@ +LJUW UW UW UW UW     UUWUUWUUWUUWUUWP?P?P?@?P?     Tv Uv Uv Uv Uv   ?  ?  ? ?  ?P P P P P GŢGŢGŢGŢGť@@@@@ A AA,Ml? A A1}1}1}1}1};;;;;EEEEE-Nb           .O UP UP UT UT UU UP UP UT UT UU /P9 m(UW UW UW UW UW     UUWUUWUUWUEWUQWP?P?P?P?P?     Uv U6 UV Uv Ur   ?  ?  ?  ?  ?P P P P P GŢGŢGŢGŢGť@@0Q>`8ǥ@@@ A A A A A1}1}1}1}1};;;;;EEEEE1<H     So\@ @ @@@ @@@ @@@@@@@@@@@@@@````TWN,j9j9eUUUXeeUUUXej}j}eUUUeeUUUejeje``??UbUW UW UW UW UW     UUWUUWUUWUUWUUWVgP?P?P?P?P?     Uv Uv Uv Uv Uv   ?  ?  ?  ?  ?P P P P P GŢGŢGŢGŢGť@@@@@ A A A A A1}1}1}1}1} W;";;;;;EEEEE!XY            "Yښ UW UW UW UW UW    #Zܠ UUWUUWUUWUUWUUWP?P?P?P?P?     Uv Uv Uv Uv Uv   ?  ?  ?  ?  ?P P P P P GŢGŢGŢGŢGť@@@@ A A A A A1}1}1}!}1}$[IR;;;;;EEEEE%\Cˠ           &Gfe @ @ P P T @ @ P P T UW UW UW ^,IeUPeUTeUTeUUjjjjj`````??????????`````@UW@UW@UW@UW@UW@ @ @ @ @ @UUW@UUW@UuW@UUW@UUW@@@@@@Q?@P?_VŘ@P&?@P?@P?@ @ A@ !@ @ @Uv @Uv @Uv @U~ @Uv @  ?@ A ?@ ! ?@ ?@  ?AP APF AP AP AP B܀GB@GBGBGBGE@E@ E@E@E@J AJ AJ AJ AJ AT@T TTTH1@zH1 zH1zH1zH1zQ@Q QQQH@HHHHP ;P;P;`P;P;@ B@B@B@B@B@ @@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@``````````jjjjjeUUeUU@eUU@eUUPeUUPb ajjjjjeUUeUU@eUU@eUUPeUUPjjjjj`````??????????`````@UW@UW@UW@UW@UW@ @ @ @ @ @UUW@UUW@UUW@UU_@UUW@cм@C@#@ @@P?@P@?@P ?@P?@P?@ @ F@ &@ @ @Uw @UvI@Uv)@Uv @Uv @  ?@ I?@ )?@  ?@  ?AP APAP)APAP BGBGB&GBGBGE@E@E@ E@E@J AJ AJ AJ AJ ATTT TTH1zH1zH1@zH1zH1zQQQ@QQHHdWO4H@H HP;P;P@;P ;P;@B@B@@B@ B@B@@@@@ @@@@@@ @@@@@@ @@@@@@@@ @@@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@@@@@e6u@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@``````````jjj9j9fjǏ9eUUTeUUTeUUUXeeUUUXeeUUUXejjj}j}jǞ}eUUTeUUTeUUUeeUUUeeUUUejjjejeje`````???????``@UW@UW@ @ g*4T@UUW@UUW@@@P?@P@ @ G@Uv @Uv @  ?@  ?AP AP BGBGE@E@J AJ ATTH1zH1zQRM3ZQHHP;P;@B@B@@@@@@@@@@@@@ @@ @@ @i@rAP AP AP AP AP BGBGBGBGBGE@E@E@EE@J AJ AJ AJ@ AJ AVUTVT6TI1zHzHqzH1zH9zQQQQQHTH4HHHP7;P;P;P;P;@B@B@B@B@B@@@@@@@@@@@j?\@@@@@@@@@@@ @@@@@ @@@@@ @@@@@ @@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @C@#k#@#@#@#@'@'@@@@@@@@@@@@@``````````jjjjje@e@ePePeTjjjjje@e@ePePeTjjjjj``` l,S*``??????????`````@UW@UW@UW@UW@UW@ @ @ @ @ @UUW@UUW@UUW@UUW@UUW@@@@@@P?@P?@P?@P?@P?@ @ @ @ @ @Uv @Uv @Uv @Uv  mz@Wv @  ?@  ?@  ?@  ?@  ?AP AP AX AT AQ BGBGBGBGBGEPEHEDEAE@J AJ AJ AJ AJLATTTTT@H5zH3zH1zH1zH1 zQQQҀQ@Q HHHH HP;P;P@;P ;P;@B@@B@ B@B@B@@@@ @@ n@@@ @@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@ @ @@@ @ @ @@  o"U@ @@@@@@@@ @@@@@@@@@@@@@@@``````````jjjjjeTeUeUeU@eU@jjjjjeTeUeUeU@eU@jj p}[jjj`````??????????`````@UW@UW@UW@UW@UW@ @ @ @ @ @UUW@UUW@UUW@UUW@UUW@@@@@@P?@P?@p?@P?@T?@ @ @ qI@ @ @Uv @U@v @Uv @Uv @Uv @ ?@L ?@ ?@  ?@ ?AP AP0 AP AP AP BGBGBGBGBGE@RE@E@E@E@J,AJAJ AJAJ AT TTTTH1zH1zH1zH1zH1zQQQQQHHHHHP;P;P;P;P@;@B@B@B@BrĞ@@B@@@@@@@@@@@@@@@@@@@ @@@@@@ @@@@@ @ @@@@@ @@@@@ @ @@@@@@ @@@@@ @ @@@ @ @@@@ @@@@@@@@@] U@@@@@@@@@@@ @ @@@@@@@@@@@@@@@@@@``````````jjjjjeUPeUPeUTeUTeUUjjjjjeUPtĉ0 clr.l d0 move.b (a0),d0 tst.b d0 bne weiter_o add.l #1,a0 move.b (a0),d5 ext.w d5 move.w d5,scroll_time add.l #2,zeiger bra get_sign weiter_o: cmp.b #$40,d0 ble weiter_i move.l zeichensatz,d7 add.l #12094+252,d7 move.l d7,zeichensatz weiter_i: sub.b #$20,d0 asl #2,d0 add.l zeichensatz,d0 move.l d0,sign_scroll addq.l #$01,zeiger cmp.l #endtext-1,a0 blt.L ende move.l #0,zeiger ende: rts sign_blit: dc.l 0 sign_ziel: dc.l 0 zeichensatz: dc.l 0 blit: move.l #scrollfield,$dff050 ;A udahmove.l #scrollfield-2,$dff054 ;D move.w #$0,$dff064 ;modulus move.w #$0,$dff066 move.w #$0,$dff042 move.l #$ffffffff,$dff044 move.w #$89f0,$dff040 ;bltcon1 move.w #%0001100000010100,$dff058 ;high&bright ; hhhhhhhhhhwwwwww ;10bit=1024lines ;6bit =64*16bit=1024br bsr blitwait rts blitpixel_scroll: move.l sign_scroll,$dff050 move.l #scrollfield+40,$dff054 move.w #$7a,$dff064 move.w #$28,$dff066 move.w #$0,$dff042 move.l #$ffffffff,$dff044 move.w #$9f0,$v; WAVEGREETS > to this place !!! endtext: even sign_scroll: dc.l fontram scroll_time: dc.w 0 blitwait: btst #14,$dff002 bne blitwait rts s: lea crunch_end,a0 move.l #fontram,a1 move.l -(a0),a2 add.l a1,a2 move.l -(a0),d5 move.l -(a0),d0 eor.l d0,d5 notfinished: lsr.l #1,d0 bne.S notempty1 bsr getnextlwd notempty1: bcs.S bigone moveq #8,d1 moveq #1,d3 lsr.l #1,d0 bne.S notemxŹpty2 bsr getnextlwd notempty2: bcs.S dodupl moveq #3,d1 clr.w d4 dojmp: bsr rdd1bits move.w d2,d3 add.w d4,d3 getd3chr: moveq #7,d1 get8bits: lsr.l #1,d0 bne.S notempty3 bsr getnextlwd notempty3: roxl.l #1,d2 dbf d1,get8bits move.b d2,-(a2) dbf d3,getd3chr bra nextcmd bigjmp: moveq #8,d1 moveq #8,d4 bra dojmp bigone: moveq #2,d1 bsr rdd1bits cmp.b #2,d2 blt.S midjumps cmp.b #3,d2 beq.S bigjmp moveq #8,d1 bsr rdd1bits move.w d2,d3 move.w #12,dy1 bra dodupl midjumps: move.w #9,d1 add.w d2,d1 addq #2,d2 move.w d2,d3 dodupl: bsr rdd1bits copyd3bytes: subq #1,a2 move.b (a2,d2.w),(a2) dbf d3,copyd3bytes nextcmd: cmp.l a2,a1 blt.L notfinished tst.l d5 bne.S damage damage: rts getnextlwd: move.l -(a0),d0 eor.l d0,d5 move.w #$10,ccr roxr.l #1,d0 rts rdd1bits: subq.w #1,d1 clr.w d2 getbits: lsr.l #1,d0 bne.S notempty move.l -(a0),d0 eor.l d0,d5 move.w #$10,ccr roxr.l #1,d0 notempty: roxl.l #1,d2 dbf d1,getbi+Vѽts rts crunch: blk.b 23908,0 crunch_end:  moveq #3,d1 clr.w d4 dojmp: bsr rdd1bits move.w d2,d3 add.w d4,d3 getd3chr: moveq #7,d1 get8bits: lsr.l #1,d0 bne.S notempty3 bsr getnextlwd notempty3: roxl.l #1,d2 dbf d1,get8bits move.b d2,-(a2) dbf d3,getd3chr bra nextcmd bigjmp: moveq #8,d1 moveq #8,d4 bra dojmp bigone: moveq #2,d1 bsr rdd1bits cmp.b #2,d2 blt.S midjumps cmp.b #3,d2 beq.S bigjmp moveq #8,d1 bsr rdd1bits move.w d2,d3 move.w #12,d{t~BGBGBGBGE@E@E@E@E@J AJ AJ AJ AJ ATTTTTH1zH1zH1zH1zL1zQQQYSHHHNIP;P;T;Q;P;@BHBBB@B@@BPDA@@@ LC@@ @B@@`@@A@@|^@@@@@ @@@@ @@@@@@@@@@@@@@@@ @@@@@ @@@@@ @@@`@ @@@@@@@@@ @@@@@@@@@@@@@@C@@@G}7@g@'@/@/@/@@@@@@@``````````hhjjj`ddeehhjjj`ddeehhjjj`````????h2??????`````@UW@UW@UW@UW@UW@ @ @ @ @ @UUW@UUW@UUW@UUW@UUW@@@@@@P?@P?@P?@P?@P?@ @ @ @ @ @Uv @Uv @Uv @Uv @Uv @  ?@  ?@  ?@  ?@  ?WI move.l #pic,d1 ;bildadd move.w #80,d4 ;schleifen_zaehler write_loop: moveq #0,d2 move.w 0(a1,d0.w),d2 ;sin_nach d2 tst.w asr_ bne no_0 moveq #0,d2 no_0: move.w #100,d6 muls asr_,d6 add.w #1000,d6 divs d6,d2 mulu #160,d2 ;= zeile move.l d1,d3 add.l d2,d3 ;zeile and.l #$fffff,d3 add.l #4,a0 ;offset copperlist to adresse bplpoin move.w #3,d7 ;little_loop l_loop: swap d3 move.w d3,2(a0) swap d3 move.w d3,6(a0) add.l #40,d3 add.l #8,a0 dbra d7,l_loop add.w #6,d0 sub.l a3,a3 move.w d0,a3 add.l #sintab,a3 move.l #sintab_end,a4 cmp.l a3,a4 bge weiter_d0 moveq #0,d0 weiter_d0: add.l #160,d1 dbra d4,write_loop rts ;------copy_copper--------------------- clear_copper: move.l #copperram,a0 clr_loop: clr.l (a0)+ cmp.l #$7fff0,a0 ble clr_loop rts copy_copper: move.l #copperram,a0 move.l #newcopper,a1 move.l #copper_end,a2 copper_schleife: move.l (a1)+,(a0)+ cmp.l a1,a2 bge copper_schleife rts ;*********************************6J***************** ;* asr_ ;************************************************** asr_init: sub.w #1,asr_time tst.w asr_time beq asr_weiter rts asr_weiter: move.w asr_time_save,asr_time move.l #asr_data,a0 add.l asr_pointer,a0 move.w (a0),asr_ add.l #2,asr_pointer move.l #asr_dataend,d1 move.l #asr_data,d0 add.l asr_pointer,d0 cmp.l d0,d1 ble gleich rts gleich: clr.l asr_pointer rts ;************************************************** ;* init copperliste ;******************************* `******************* init_copperlist: move.w #80,d0 ;schleifenzaehler move.l bitplanes_ram,a0 move.w #$00e0,d1 ;first bitplane move.l #pic,d3 ;picadd move.w #$5307,d2 ;wait_copper init_copper_list: move.w d1,d4 ;save bitplaneadressedesti move.w d2,(a0)+ ;write waitline move.w #$fffe,(a0)+ ;write waitmask move.w d4,(a0)+ ;first bitplane hi add swap d3 move.w d3,(a0)+ ;and write high add.w #2,d4 ;next adresse for bitplane move.w d4,(a0)+ ;and write swap d3 move.w d3,(a0)+  ;write low add.l #40,d3 ;next bitplane add.w #2,d4 move.w d4,(a0)+ ;first bitplane hi add swap d3 move.w d3,(a0)+ ;and write high add.w #2,d4 ;next adresse for bitplane move.w d4,(a0)+ ;and write swap d3 move.w d3,(a0)+ ;write low add.l #40,d3 ;next bitplane add.w #2,d4 move.w d4,(a0)+ ;first bitplane hi add swap d3 move.w d3,(a0)+ ;and write high add.w #2,d4 ;next adresse for bitplane move.w d4,(a0)+ ;and write swap d3 move.w d3,(a0)+ ;write low add.l #40,d3  #e ;next bitplane add.w #2,d4 move.w d4,(a0)+ ;first bitplane hi add swap d3 move.w d3,(a0)+ ;and write high add.w #2,d4 ;next adresse for bitplane move.w d4,(a0)+ ;and write swap d3 move.w d3,(a0)+ ;write low add.l #40,d3 ;next bitplane add.w #2,d4 add.w #$100,d2 dbra d0,init_copper_list rts ;18 words newcopper: dc.l $0101fffe dc.l $008e2c81 dc.l $009031d1 dc.l $00920038 dc.l $009400d0 dc.l $00960020 dc.l $01020000 dc.l $01040000 dc.l $0108005c dc.l $010a005c dc.l $0 ; KQ1800000,$01820620,$01840731,$01860952 dc.l $01880a73,$018a0c95,$018c0db7,$018e0fca bitscroll: dc.l $00e00000 dc.l $00e20000 dc.l $00e40000 dc.l $00e60000 dc.l $00e80000 dc.l $00ea0000 dc.l $01003200 dc.l $5007fffe dc.l $01000200 dc.l $0180000f dc.l $5207fffe dc.l $01000200 dc.l $01004200 dc.l $01800006,$0182034a,$0184045a,$0186056b dc.l $0188067b,$018a078c,$018c078c,$018e078c dc.l $0190088d,$0192099d,$01940abf,$01960cce dc.l $01980ddf,$019a0fff,$019c0aaf,$019e0102 bitplan Res: blk.w 1458,0 bpldma: dc.l $01004200 dc.l $a407fffe dc.l $01000200 dc.l $0180000f dc.l $a607fffe dc.l $01800000,$01820d00,$01840d20,$01860e51 dc.l $01880e71,$018a0ea1,$018c0fc2,$018e0ff2 dc.l $01900000,$0192094a,$0194094c,$01960566 dc.l $01980167,$019a0322,$019c0666,$019e0444 dc.l $01080078 dc.l $010a0078 dc.l $01000200 bitplanes1: dc.l $00e00000 dc.l $00e20000 dc.l $00e40000 dc.l $00e60000 dc.l $00e80000 dc.l $00ea0000 dc.l $00ec0000 dc.l $00ee0000 dc.l $00f00000 bdc.l $00f20000 dc.l $01004200 dc.l $fffffffe copper_end: sintab: ;86 dc.l $7fff7f80 dc.l $7ec17d34 dc.l $7b0b7848 dc.l $74ef7104 dc.l $6c8d678e dc.l $620e5c13 dc.l $55a64ece dc.l $47944000 dc.l $381d2ff3 dc.l $278e1ef7 dc.l $163a0d61 dc.l $0478023c dc.l $04780d61 dc.l $163a1ef7 dc.l $278e2ff3 dc.l $381d4000 dc.l $47944ece dc.l $55a65c13 dc.l $620e678e dc.l $6c8d7104 dc.l $74ef7848 dc.l $7b0b7d34 dc.l $7ec17f80 sintab_end: dc.w $7fff7fff ;*******************=h****************** ;* data ;************************************* sintab_save: dc.w 0 data: bitplanes_ram: dc.l 0 ; hier ein paar werte reinschreiben von 1 bis 200 ; 0 = stehen asr_data: dc.w 0,0,400,350,300,280,260,230,200,175,150,130,110,100,90,80 dc.w 70,65,60,55,50,45,40,37,34,31,28,25,22,20,18,16,14,12,10,8 dc.w 7,6,5,4,3,2,1,1,2,3,4,5,6,7,8,10,12,14,16,18,20,22,25,28 dc.w 31,34,37,40,45,50,55,60,65,70,80,90,100,110,130,150,175,200 dc.w 230,260,280,300,350,400 asr_dataend: assr_: dc.w 0 asr_pointer: dc.l 0 asr_time: dc.w 10 asr_time_save: dc.w 20 ;wie lange schwabbeln sintab_pointer: dc.w 0 haus_copper_ram: dc.l 0 scroll_copper_ram: dc.l 0 scroll_rout: ;-------time_scroll--------- tst.w scroll_time beq scroll_sign_l move.w scroll_time,d0 sub.w #1,d0 move.w d0,scroll_time cmp.w #0,d0 bne ende scroll_sign_l: move.l #fontram,zeichensatz bsr blit sub.b #$01,pixel bne.L ende bsr blitpixel_scroll move.b #$4,pixel get_sign: move.l #scrolltext,a0 add.l zeiger,a+H `8t@5 8A f`(`y L 0@D&0lWPP` G (P0Pe ((0=` l:P |p0P`(`K BLM< x A(hb(> g  `  x &'hlyA@+(20GȱTvPHdPb` @2```̐Pc@  %(:`C @! 2p0V @A@ͳ1 (p1Al@AMP(P W pߠ8@) CB AH0P8PPf% 4HA!_Ӏ(H; " `@,,8' !a@~@P(&H?d \ '|NBAS@P@ ?"(0`d/<3 | (@ #tZ<AOD($0 (1H4  &8 P4  A8 C`BA3 $  P8P1H4  P$H  (  LP``򁂇 00<`` >Pb?>@ `Pb` Q0P| ?@ `PP0Pb QA(;7İT@a o@  (C(7CL P 8t2* Pb(j  lAC D<2!vP u a PbXh  @/[7*P|x  Py a xyLx  CAP BB@  b g@'(p:"@7* b  jɅP ` P ` )CP@ P`")G@@@a(Ƞ6`!CC0:ADPA@Pl x(d;x@Ʉa(PA1L(\@:>RA00UP [@#0CA`j1"F_P5g ~3/(x8pQU1 `@>)q<|gp`ep@- :g-DA9PCa: x` -nT" P?r0xf_ A u0, 4K; `VH<@p(p  0W2$4W@[  掦!((P8 &$ 1}B`4H  @/(Bx `BH!yBep(-EN \?p?p?p?pP[@2_L? a6,-(sp) ;-------floppystop------- ori.b #$80,$bfd100 ori.b #$8,$bfd100 andi.b #$f7,$bfd100 ori.b #$10,$bfd100 andi.b #$ef,$bfd100 jsr s move.l #sintab,a0 move.l #sintab_end,a1 sub.l a0,a1 move.l a1,d0 move.w d0,sintab_save ;------init haus move.l #copperram,a0 move.l #newcopper,a1 move.l #bitplanes1,a2 sub.l a1,a2 add.l a2,a0 move.l a0,haus_copper_ram move.l #copperram,a0 move.l #newcopper,a1 move.l #bitplanes,a2 sub.l a1,a2 add.l a2,a0 move.l a0,bitplanes_zram bsr copy_copper bsr init_copperlist move.l #$73000+18,d0 move.w #3,d1 move.l haus_copper_ram,a0 loop_f: swap d0 move.w d0,2(a0) swap d0 move.w d0,6(a0) add.l #40,d0 add.l #8,a0 dbra d1,loop_f move.l #copperram,a0 move.l #newcopper,a1 move.l #bitscroll,a2 sub.l a1,a2 add.l a2,a0 move.l a0,scroll_copper_ram move.l #scrollfield,d0 move.w #2,d1 move.l scroll_copper_ram,a0 loop_e: swap d0 move.w d0,2(a0) swap d0 move.w d0,6(a0) add.l #44,d0 add.l #8,a0 dbra d1,loop_e i/ move.w #$80,$dff096 move.l #copperram,$dff080 clr.w $dff088 move.w #$8080,$dff096 wait: cmp.b #$30,$dff006 bne wait btst #10,$dff016 beq mouse bsr scroll_rout mouse: bsr write_line bsr asr_init btst #6,$bfe001 bne wait end: move.w #15,$dff096 ;sound aus copperinit: move.l 4,a6 move.l #gfxname,a1 jsr -408(a6) move.l d0,a1 move.w #$80,$dff096 move.l 38(a1),$dff080 clr.w $dff088 move.w #$8080,$dff096 jsr -414(a6) move.w #$8020,$dff096 ;mouse an movem.l ~U(a7)+,d0-d7/a0-a6 move.w #$2000,sr rte gfxname: dc.b "graphics.library",0 even ;******************************************************** ;* waverout ;******************************************************** write_line: move.l bitplanes_ram,a0 move.l #sintab,a1 ;sintabelle add.w #4,sintab_pointer ;erhoehe pointer move.w sintab_save,d1 move.w sintab_pointer,d2 cmp.w d1,d2 ble sintab_weiter move.w #0,sintab_pointer sintab_weiter: move.w sintab_pointer,d0 ;zeiger auf sintab P"d#^c P5^ h !8H<PE"_@ ,>£/\ 촭xwḜ@`"o R` xkAS@F1 z0><1@ǁ1g, pX|(Hbb{ACU8@1Kǀ`(\j /#xQOH%A$8| 4p?u)L `Q[g` x?<0ʀ@>p7770 I\yq PL}!;,< cQ(uD?1d/ !Ok8%jBˀx@߸ Qh0; ¶9E` P0oϐ 2 != 8 A@@p3 Cl< l@@.G$8 P|J> @@TR{# )C<vv<  `@kx.RH@?H(`tT|0'0?ŕD@ B)@(;rk x"?Jaߒ h+# 0f~"!CB0t 聃h/ bc!F< __7++d   f01 ~_#D$`$zN1o!ǂzj7?a1<[ < 'P2P ,7BS6AP@(>HPk8 x(=0(xC@"H&@E D P?TCJ#JځpR'1A*@@I XJ,S(0>Ee$.2 x?Ä 6@o8Qg YoTD" @?a BOuYI߁|82 P88c88:Anw @,Q G`?2 fP:#@>'p!{Aw PT1 c`@(`R`O CJK-@"JXZ! PA #@" @7[K @zp x`I`m@(m@ =ۨL10`@c ]$b((|G@p?ic4$~T#- a8!HT@+bd1 x(!a  Q~GP< p}ZG=Մre }t< _ AC‡|?s`>`s  D@p>Bʇؔ~>@)jn./@??@0;:`~?/b0p`b, ((x;6@P0<>D3 s1_gOxQ((P5 @";P1@`  <<  šPP00AH G'' Fl TZNh8Pn @(( 3(JyI] }PP0$|8"pwr!^ s*0>7odP8e$}PcaQ}A@79 d  A   79 M2?@@g/9wɢ q\7] @`  `(  >P40[X?bi`(fBà ߆@A 1y?`D`<7W+KDB@G "Z` ~(<9q`Qcǃ@P R+1 P:D(4?!EɞA@8{m P-s%\p0 nX )}>@P(  |@ZC(H1Py.+p~аhh"8REu (d1kLDPo`_â R8*P(x(D1I G807]<@YVxsH .@@ `!T? z x@h8fHO?CxHps̀<&X_ aEC @(P7EPg/}(46jp% A*s:.~T@!@?› Ȍ P aE5 /?|~ qQ@o (~2I  XD ( Px?S Cb ¸4Q@ ?-(q  +=`$ p!hn@p1B /)z`(8D )@ࠀ :I Pey.% 0A>5 j8@ARP`B@Yx(D;?X Cl(3`;}_ @`uQ$P(|^d4@ ~@ |@ C@`(_QX< _y9OUwXP((>'jƑ @Al~@(d?Pp;m(Q9 ?^awA(7 ĀB@ (oh )aBE@($?$d+7CPX0Pg,/4!F! )D@ P(z=A!J P(?T($>a <;8!1a @=:u@bm@Axr"2CPɁCp1pv-P|x8$O?~ (1Fo @"( wER(X4 o1XO(Q_!#נCA`EA@@R_,|dq׻b$?ACP0[(@0R  |̠P,``m(H(Q-8!C AAm`f? Ps1CN>(PdaP‐ @ @ɀ< P, c`ի~q$#@:X( z0(KD8Pn|v @s?}\(  Tw "o"*.=1/0S5 @e ( @" y:)@uM">߶"BFH @d cQ7nߟ7 (xɠ(tP"k  P<0?|;HKAp( t> p?! 8lAu@spPv}& 70z @x~^Pby`WGP)ݡt0``P w.F(Cʏ(8@7P<?  :8:# 7C #ޒL석)g,pB8_v #,,>PRrG !u6@Pd` '@$d G2b&@qP9 ?p?p?p?p  xÀ5<)@PT @aIn"ҁȤ6&€@g:Pe(p> b@jRW@ &†Q Pp! @'`B8 D>Pl42PP uCA@  N(T0|9}.Oqr,*GQ aSp_)N@= 8'R߁`@ħ׀ X(Kp b$)J Pd@Ёc(p??@(p0m @ŪP`z7J-E  3(P0(`cH`b.(P1 4 BP ( ŪPpX(P5(1ڿx@j#Iv1 g 02 f!c6 C|QآP | (`@< 8@!_ P `@ P`hZ(R,P0(0r@A4Ga"(p0 P;P`v@BP4D ((500Pc@@  .P< 2 @CA <0<@1  ?A>8` aPU@ÇC`kנt `Q,qVVr^ c`@LT k90`B^@9P~ _5 ` Eg b@Ѓ3T"LE ss!vۈ-x`2 3bg 0@ D, H0@(bD~/pA H"T8 ᰠ0BA(0 ANB@*vX5:0ť 8lzN pB  3}Ԙ"񉳥tA?  nC@723 Bx9^&NH/\o?h@ٙ9> |&&/M@v*| @ +R8='Ӏ0/Tbq!JpzFp0щFy0|x0{)l |0  Axp>kh7 i Ra ◠z$`% Ž+@)J ^ B0 ? &J 0/''7g' E77Ìa9nzi5\r?!Wtw^v6jC8h0Ǒ R0`XN a(@@Ɉp<"G0<Yz37g ^"@<=)Az(K0 z( 1pv ^ nI A٤|ޤ\ܹ?߀5@1 ̣.#KY`7[ 6`fB4#@BDH n\ 4D6zP6( x (1Ľ"80 pA)7P6'bx J_P",0Fjx"pk_q8^|!h_𑠧h g^^&`gBavA 30p 3$`'dȁ́fff&P( H XA033"ڀ =cͫb@ %80gő@ _ 8 39T  GAǞ|!? d ɹ<|pЀ, G~$(SxB@\SQ `! A@0? B x< ??p)ne@hR׏5p8K#)L1;?`0F `@0g*1 -g2@)AAE f(Q@j8bq DąAFX@f($@Hyx@8d ȶDrÀ(4Xl<P?B<FP fA ;z̈ a0T }T>#(< @HՈ)( : `b~f B3Ns9^0|*qِ` Ez0xbcQetQ!FƢOȄd'QMy\㴤 F2tqF 0`?Ʌ9V&Kt 7pk@PM@@XfǃaЃ t7@ Q$ v$I%4p7'R( )@<  DH`QXC  e Ә @ ą,A,1%D(#&8_j50A.HLd sJ %bz B&J;p+wC(3 !͠+ƃ,' )H@ 9yXÀg qP0&`HX fXb`+לdp0=ߨx{Cax>@@ϑ!p6vL  rP,B9!\遰@T6I&!w@P8SQk0=DEn`uʘ _yAC`AV.@ph*R@a\3D?Q"4Ɉ~QP {,!R^a P0 G  `B4gC|0<^"AH懶=\Vm@6~Am4BhO ЂQk!PA8$054w$4=@CJ&(B>Wg\#A !$\ I!0AEP:8 ?BTh0.(cAM~p : G XJA | '|ĀOAY # 4 b@Ђ80<G01H(  H xGI@g" (@E0>@E9@ < Rvc@``$;` @aHp>4@%Q@Pl= |;4C   ƒAP=s2(@G(8!A(B1@p AP6P ~ h`Ӓo @E@PB -'@ Wh,J6P(U?aI@Z& 9T @! GT8-7(᷷Sx4=bπ)c o悇 (@`(_W#P8Ph0JG>@?B 7H0Da_JE R@P8 1`$A* (1@ z\;jw P80a 2b@ < AxAҬPh0[( @p0I;%?AE83C)2RB:0- {N[d P4(P;d`\ d>'} k@`T&O  A`P`H$ ( (, P=gp4"P#tc q@DZyQ @y8c>BCpD<`( Apb0K\B@W&r@|P yr b4/pxX1B!Ȗ `AObnhx.0gh8oa(3wKѠx > e'(0 eߐKOX :: inRz @: P$A@]/(1(Q` X 88XD i>`j@0 0ZbwªȿG(4+8rb` e!P00ga3`A  rx" A0 rN ax(*A@9H\tF rSyi[00 @A@AUB%  x A`   &p@ <|B@G>0( @x! @@`"p O@ @ ff`$Mh9P1 ?'O0x~d; >-X @(JP wN!%A cI74< F@A@'01 B@'p>haB)$yDX @X0p` Pc Pg Ttm?8QD8>?0``b_$QwAALefi0+@b(+& \!AĹABaOB^a(`B`@ P,g@@ApD Ӂ I@$ H5Y:@I !%`A*P:8P5<D B[ q@A A  X7idc@AT Ҽ]"SX8BAB%  |  cp [!B ?xBFP g A8 -8ڐd'M@`PLO7;.x+_n`` i# <=y C@20f0y ` HPĀ. t0  xxP"`?A A1 < h<  Ba 0? ༅ @a~  ԃ o qTAp@0``$' c$@`D #q`cAo*(P5Pbj p$h+ I;[$/DG .wBS Hhe 4@3j,`@CPWA!C"TD  $ 0HP# hw|@U^ Р/A`P2OqB^8) dp P2Ҵ%h<jE  "  bK@  4N@20!~~`u_pdD03pNM<@`AH5XtP6fn`8l0b;x% R`&Aҡ_N<CB @ P` k0J b G@"QÌ/T-/EN< !BYxE(^zD0_ >L\ *pnu8 h ؄" @ 0 $jqAHD t>H,>X(z`&oFT zD@pƔ@@O<x80Z x?3rf c^C{16:/BP7%OB/L 053j@߽(yS /ÄCM 9R2P? } ds LS2` 0,A%H!zL0nN y @a,/CĽT(H@^d@ ^0b T Ӯ;P} @X$efY@ ^ QЅ@B@_'5/E;?!A @ 8F0+0@ '[%7=~ dB`.@R&`}q~m~p/(&n'c 3A`T,8 =(t(L&^ RP@$!P>OaÂ`T`0A!HORMLF@" [u쀿?$3>zP~=M遠~|Eď{|@)^zpd ^ *F &nZF0@@ץ:~ ) (*@ˀ aXB8z=5pb0J0/KqAzW'PA<0@ (k-(PQ_@Td^Ѓ|xj|џ ~3x).p`0Gh$ -%;bBP A@Pa`ZE AyG9@pc<- AAa˔ 1D 聈I!Az8>n =PQP9x*"0+u6 aҝNJ H^Ѓ~P1HIAsyy+S L5| $(& @VK@ tu Gxo? ^HPA|V~h2obY 0aN$Cg@ 1^0 /A> `vA @@Ѡ^7h/L ?'|/POkt/ ϼ@$z,P391:"-@P8a;$@q@V1` 1` H< 0,aX6Cv* ^0pvS"DI.N+ am_~a}2(unei 7 @"P@ þ?13s ^?8AE(6Jbۧ<us |05*,#9!D/Op:7!40@!wK"P $<% L@2Mv/AH0 0<pO&`s @Кm6"!zܔ߰ŁشwF|`{"8 w @>`,@W 8_p/D Mv;^\A0@Bpf6 kA%N cW-@$ Y^ D ^R?C Eպ W%ahp&B׀=AO ڽ!0?Uf0 %P`@^E. #Dy H sB  g,]@[, ;4D  w4 Ѓ &|E61H(/|()h(.dX~b`q"1302 p ^0eY~einer: move.w d0,coltab_pointer ;save ponter move.w #15,d1 ;zaehler lea coltab,a0 ;farbe move.l colcop_ram,a1 ;copperlist add.l d6,a1 cmp.w #$ffe1,(a1) bne ncol_loop add.l #4,a1 ncol_loop: move.w 0(a0,d0.w),6(a1) add.w #2,d0 ;erhoehe pointer cmp.w #112,d0 ;ende tab ? blt no_end_ncol ;nein moveq #0,d0 no_end_ncol: add.l #8,a1 cmp.w #$ffe1,(a1) ;pal ? bne no_ff1 ;nein add.l #4,a1 no_ff1: dbra d1,ncol_loop rts file: dc.w 0 zeile: move.w #0,d0 ;schleife move.w #RJ՞20,d1 ;cmpwert m_loop: move.w my,d2 cmp.w d1,d2 ble fer add.w #20,d1 add.w #1,d0 cmp.w #5,d0 bne m_loop fer: sub.w #20,d1 move.w d1,col1_test move.w d0,file rts rts text: move.w #8,d0 ;loop move.l #tdata,a0 ;text move.l destadd,a1 ;dest add.l #10080,a1 t1_loop: move.w #0,d4 t_loop: move.l #font,d2 moveq #0,d1 move.b 0(a0,d4.w),d1 ;hole char sub.l #$20,d1 ;erniedige um 32 zeichen cmp.l #$20,d1 ;naechste zeile ? ble no_zeile ;nein add.l #1024,d2 ;naechste zMFeile no_zeile: asl.l #1,d1 ;* 2 add.l d1,d2 no_blit: btst #14,$dff002 bne no_blit move.l d2,$dff050 move.l a1,$dff054 move.w #$3e,$dff064 move.w #$76,$dff066 move.l #$ffffffff,$dff044 clr.w $dff042 move.w shifter,$dff040 move.w #%00000001111000001,$dff058 add.l #2,a1 add.w #1,d4 cmp.w #20,d4 bne t_loop add.l #20,a0 add.l #2360,a1 dbra d0,t1_loop rts destadd: dc.l scrollfield shifter: dc.w $9f0 tdata: ; 01234567890123456789 scrolltext: ;nicht wichtiges label ! e=> dc.b " AFTERBURNER " dc.b " SPACE HARRIER " dc.b " THUNDERBLADE " dc.b " ELITE " dc.b " CALIFORNIA GAMES " dc.b " R TYPE " dc.b " THE REALLY LEADING " dc.b " THREE ARE THRUST " dc.b " RSI DEFJAM TRILOGY " s: move.l #crunch_end,a0 move.l #dat,a1 move.l -(a0),a2 add.l a1,a2 move.l -(a0),d5 move.l -(a0),d0 eor.l d0,d5 notfinished: lsr.l #1,d0 bne.S notempty1 bsr getnextlwd notempty1: bcs.S bigone moveq #8,d1 moveq宴 #1,d3 lsr.l #1,d0 bne.S notempty2 bsr getnextlwd notempty2: bcs.S dodupl moveq #3,d1 clr.w d4 dojmp: bsr rdd1bits move.w d2,d3 add.w d4,d3 getd3chr: moveq #7,d1 get8bits: lsr.l #1,d0 bne.S notempty3 bsr getnextlwd notempty3: roxl.l #1,d2 dbf d1,get8bits move.b d2,-(a2) dbf d3,getd3chr bra nextcmd bigjmp: moveq #8,d1 moveq #8,d4 bra dojmp bigone: moveq #2,d1 bsr rdd1bits cmp.b #2,d2 blt.S midjumps cmp.b #3,d2 beq.S bigjmp moveq #8,d1 bsr rdd1bits movekD.w d2,d3 move.w #12,d1 bra dodupl midjumps: move.w #9,d1 add.w d2,d1 addq #2,d2 move.w d2,d3 dodupl: bsr rdd1bits copyd3bytes: subq #1,a2 move.b (a2,d2.w),(a2) dbf d3,copyd3bytes nextcmd: cmp.l a2,a1 blt.L notfinished rts getnextlwd: move.l -(a0),d0 eor.l d0,d5 move.w #$10,ccr roxr.l #1,d0 rts rdd1bits: subq.w #1,d1 clr.w d2 getbits: lsr.l #1,d0 bne.S notempty move.l -(a0),d0 eor.l d0,d5 move.w #$10,ccr roxr.l #1,d0 notempty: roxl.l #1,d2 dbf d1,getbits rts crunch: bnlk.b 3040,0 crunch_end: ende: pty2 bsr getnextlwd notempty2: bcs.S dodupl moveq #3,d1 clr.w d4 dojmp: bsr rdd1bits move.w d2,d3 add.w d4,d3 getd3chr: moveq #7,d1 get8bits: lsr.l #1,d0 bne.S notempty3 bsr getnextlwd notempty3: roxl.l #1,d2 dbf d1,get8bits move.b d2,-(a2) dbf d3,getd3chr bra nextcmd bigjmp: moveq #8,d1 moveq #8,d4 bra dojmp bigone: moveq #2,d1 bsr rdd1bits cmp.b #2,d2 blt.S midjumps cmp.b #3,d2 beq.S bigjmp moveq #8,d1 bsr rdd1bits move<ЁCH<@ǁ HGH-<$?# 0:PH4<?@~?@Ġ<"8<4 x"|<8Nx?DGx(xW >+O,<7hҴp$ P4dZ@"LbCH$/@ H  f@@ 4PFAxX2 p0!aA [Hz`QQwAALefi0+@b(+& \!AĹABaOB^a(`B`@ P,g@@ApD Ӂ I@$ H5Y:@I !%`A*P:8P5<D B[ q@A A  X7idc@AT Ҽ]"SX8BAB%  |  cp [!B ?xBFP g A84_8y!<<Uː$1PCܸ@<[$j!p(| a p>z78(qtYA5x N\\ x ?x. 8|xIx?`x.@x. 󁿀x.KP=ip< p4 H <<< H<<>@H@< ?c\C P#GoZ/2D GCJ_ HC< (G _ bAQ@xdǁ!`ǀ6Dǁ!*@B8>x(!xGQf&P:k 58428 CMPI.W #250,D6 ;d6 = 300 BGT.S L058434 ; groesser = 58434 BRA.S L058440 ;ansonnsten 58440 L058428: MOVE.L #star,A1 ADDA.L D1,A1 BSET D2,(A1) BRA.S L058454 L058434: MOVE.L #star+$2800,A1 ADDA.L D1,A1 BSET D2, 盂(A1) BRA.S L058454 L058440: MOVE.L #star,A1 ADDA.L D1,A1 BSET D2,(A1) MOVE.L #star+$2800,A1 ADDA.L D1,A1 BSET D2,(A1) L058454: DBRA D3,star_loop RTS ran_pointer: dc.w 0 get_ran: move.w $dff006,d0 LEA l058604,A3 MULS (A3),D0 ADDI.W #$1249,D0 EXT.L D0 LEA L058604(PC),A3 MOVE.W D0,(A3) RTS L0584BE: SUBA.L #6,A4 BSR get_ran MOVE.W D0,(A4)+ BSR get_ran MOVE.W D0,(A4)+ BSR get_ran and.w #600,d0 MOVE.W d0,(A4)+ BRA L058454 loesch: MULU #$28,D K1 MOVE.W D0,D2 ASR.W #3,D2 ADD.W D2,D1 ASL.W #3,D2 SUB.W D0,D2 SUBQ.B #1,D2 MOVE.L #star,A1 ADDA.L D1,A1 BCLR D2,(A1) MOVE.L #star+$2800,A1 ADDA.L D1,A1 BCLR D2,(A1) RTS L058602:DC.W $1388 ;"." l058604:dc.w 0 dc.w 0 maus: clr.l d0 ;loesche d0 jsr maus_get;hole werte move.w mx,d1 and.w #$8000,d1 beq nr clr.l mx nr: move.w my,d1 and.w #$8000,d1 beq nu clr.l my nu: cmp.w #320,mx ;max x ble nl move.w #319,mx nl: cmp.w #250,my ;max y ble nn move ".w #249,my nn: rts even mx: dc.l 0 my: dc.l 0 mcx: dc.l 0 mcy: dc.l 0 mcox: dc.l 0 mcoy: dc.l 0 maus_get: move.w $dff00a,d1 move.w d1,d2 lsr.w #8,d2 and #$ff,d1 move.w d1,mcx move.w d2,mcy clr.l d7 move.w mcx,d1 sub.w mcox,d1 beq mux btst #7,d1 bne mux1 lsr.w #1,d1 add.w d1,mx add.w #1,mx bset #1,d7 jmp mux mux1: and.w #$fe,d1 eor.w #$fe,d1 lsr.w #1,d1 sub.w d1,mx sub.w #1,mx bset #0,d7 mux: move.w mcy,d1 sub.w mcoy,d1 beq mux2 btst #7,d1 bne mux3 lsɨa/r.w #1,d1 add.w d1,my add.w #1,my bset #3,d7 jmp mux2 mux3: and.w #$fe,d1 eor.w #$fe,d1 lsr.w #1,d1 sub.w d1,my sub.w #1,my bset #2,d7 mux2: move.w #0,$dff036 move.w $dff00a,mcox and.w #$ff,mcox move.w $dff00a,d0 lsr.w #8,d0 move.w d0,mcoy rts ; init name ; col coltab_pointer: coltab: dc.w $0fd2,$0db0,$0b90,$0970,$0750,$0530 dc.w $055f,$077f,$099f,$0bbf,$0ddf,$0fff dc.w $0dbf,$0caf,$0b9f,$0a8f,$097f,$086f dc.w $075f,$064f,$053f,$042f,$053f,$075f dc.w $097f,$0b9f,$0dbf,$0fdf,$0fff,$0eee dc.w $0ddd,$0ccc,$0bbb,$0aaa,$0999,$0888 dc.w $0777,$0666,$0555,$0444,$0854,$0965 dc.w $0a76,$0b87,$0c98,$0da9,$0eba,$0fcb dc.w $0fdc,$0bcf,$0abf,$09af,$089f,$078f dc.w $067f,$056f,$045f,$0642,$0753,$0864 dc.w $0975,$0a86,$0b97,$0ca8,$0db9,$0eca init_colcop: move.l colcop_ram,a0 move.l #$8007fffe,d0 move.l #$018e000f,d1 move.w #119,d3 colcop_loop: move.l d0,(a0)+ move.l d1,(a0)+ add.l #$1000000,d0 cmp.l #$0007fffe,d0 bne no_ff move.l #$ffe1fffeoc,(a0)+ no_ff: dbra d3,colcop_loop move.l #$ffe1fffe,(a0)+ move.l #$0007fffe,(a0)+ move.l #$01800000,(a0)+ move.l #$fffffffe,(a0)+ rts colcop_ram: dc.l 0 col1_test: dc.w 0 col2_test: dc.w 0 col: move.w col1_test,d0 move.w col2_test,d1 cmp.w d0,d1 beq m_ok bsr init_colcop m_ok: move.w d0,col2_test move.w col1_test,d6 asl.w #3,d6 ext.l d6 move.w coltab_pointer,d0 ;hole zeiger add.w #2,d0 ;erhoehe cmp.w #112,d0 ;ende ? ble col_kleiner ; nein move.w #0,d0 ;ja col_klS625252525,$25252525,$25252525,$25252525,$25252525 dc.l $25252525,$25252526,$2728292A,$2B2C2D2E,$2F303132,$33343536 dc.l $3738393A,$3B3C3D3E,$3F404142,$43444546,$4748494A,$4B4C4D4E dc.l $4F505152,$53545556,$57585902,$24242424,$24242424,$24242424 dc.l $24242424,$24242424,$24242424,$24242424,$24242424,$24242424 dc.l $25262728,$292A2B2C,$2D2E2F30,$31323334,$35363738,$393A3B3C dc.l $3D3E3F40,$41424344,$45464748,$494A4B4C,$4D4E4F50,$51525354 dc.l $55565758,$59022323,$23232323,$23232323,$232TU632323,$23232323 dc.l $23232323,$23232323,$23232323,$23232323,$23242526,$2728292A dc.l $2B2C2D2E,$2F303132,$33343536,$3738393A,$3B3C3D3E,$3F404142 dc.l $43444546,$4748494A,$4B4C4D4E,$4F505152,$53545556,$57585902 dc.l $22222222,$22222222,$22222222,$22222222,$22222222,$22222222 dc.l $22222222,$22222222,$22222324,$25262728,$292A2B2C,$2D2E2F30 dc.l $31323334,$35363738,$393A3B3C,$3D3E3F40,$41424344,$45464748 dc.l $494A4B4C,$4D4E4F50,$51525354,$55565758,$59022121,$21212121 dc.l $21212121,$2Uh˄c1212121,$21212121,$21212121,$21212121,$21212121 dc.l $21212122,$23242526,$2728292A,$2B2C2D2E,$2F303132,$33343536 dc.l $3738393A,$3B3C3D3E,$3F404142,$43444546,$4748494A,$4B4C4D4E dc.l $4F505152,$53545556,$57585902,$20202020,$20202020,$20202020 dc.l $20202020,$20202020,$20202020,$20202020,$20202020,$21222324 dc.l $25262728,$292A2B2C,$2D2E2F30,$31323334,$35363738,$393A3B3C dc.l $3D3E3F40,$41424344,$45464748,$494A4B4C,$4D4E4F50,$51525354 dc.l $55565758,$59021F1F,$1F1F1F1F,$1F1F1F1F,$1F1FV)4F4F4F,$4F4F4F4F,$4F4F4F4F dc.l $4F4F4F4F,$4F4F4F4F,$4F4F4F4F,$4F4F4F4F,$4F4F4F4F,$4F4F4F4F dc.l $4F4F4F4F,$4F4F4F4F,$4F4F4F4F,$4F4F4F4F,$4F4F4F4F,$4F4F4F4F dc.l $4F4F4F4F,$4F4F4F4F,$4F4F4F4F,$4F505152,$53545556,$57585902 dc.l $4E4E4E4E,$4E4E4E4E,$4E4E4E4E,$4E4E4E4E,$4E4E4E4E,$4E4E4E4E dc.l $4E4E4E4E,$4E4E4E4E,$4E4E4E4E,$4E4E4E4E,$4E4E4E4E,$4E4E4E4E dc.l $4E4E4E4E,$4E4E4E4E,$4E4E4E4E,$4E4E4E4E,$4E4E4E4E,$4E4E4E4E dc.l $4E4E4E4E,$4E4E4F50,$51525354,$55565758,$59024D4D,$4D4D4D4D dc.l $?Z{O4D4D4D4D,$4D4D4D4D,$4D4D4D4D,$4D4D4D4D,$4D4D4D4D,$4D4D4D4D dc.l $4D4D4D4D,$4D4D4D4D,$4D4D4D4D,$4D4D4D4D,$4D4D4D4D,$4D4D4D4D dc.l $4D4D4D4D,$4D4D4D4D,$4D4D4D4D,$4D4D4D4D,$4D4D4D4D,$4D4D4D4E dc.l $4F505152,$53545556,$57585902,$4C4C4C4C,$4C4C4C4C,$4C4C4C4C dc.l $4C4C4C4C,$4C4C4C4C,$4C4C4C4C,$4C4C4C4C,$4C4C4C4C,$4C4C4C4C dc.l $4C4C4C4C,$4C4C4C4C,$4C4C4C4C,$4C4C4C4C,$4C4C4C4C,$4C4C4C4C dc.l $4C4C4C4C,$4C4C4C4C,$4C4C4C4C,$4C4C4C4C,$4D4E4F50,$51525354 dc.l $55565758,$59024B4B,$4B4B4B4B,$4B4@.}B"B4B4B,$4B4B4B4B,$4B4B4B4B dc.l $4B4B4B4B,$4B4B4B4B,$4B4B4B4B,$4B4B4B4B,$4B4B4B4B,$4B4B4B4B dc.l $4B4B4B4B,$4B4B4B4B,$4B4B4B4B,$4B4B4B4B,$4B4B4B4B,$4B4B4B4B dc.l $4B4B4B4B,$4B4B4B4B,$4B4C4D4E,$4F505152,$53545556,$57585902 dc.l $4A4A4A4A,$4A4A4A4A,$4A4A4A4A,$4A4A4A4A,$4A4A4A4A,$4A4A4A4A dc.l $4A4A4A4A,$4A4A4A4A,$4A4A4A4A,$4A4A4A4A,$4A4A4A4A,$4A4A4A4A dc.l $4A4A4A4A,$4A4A4A4A,$4A4A4A4A,$4A4A4A4A,$4A4A4A4A,$4A4A4A4A dc.l $4A4A4B4C,$4D4E4F50,$51525354,$55565758,$59024949,$49494949 dc.l $4A@9494949,$49494949,$49494949,$49494949,$49494949,$49494949 dc.l $49494949,$49494949,$49494949,$49494949,$49494949,$49494949 dc.l $49494949,$49494949,$49494949,$49494949,$4949494A,$4B4C4D4E dc.l $4F505152,$53545556,$57585902,$48484848,$48484848,$48484848 dc.l $48484848,$48484848,$48484848,$48484848,$48484848,$48484848 dc.l $48484848,$48484848,$48484848,$48484848,$48484848,$48484848 dc.l $48484848,$48484848,$48484848,$494A4B4C,$4D4E4F50,$51525354 dc.l $55565758,$59024747,$47474747,$4747B x4747,$47474747,$47474747 dc.l $47474747,$47474747,$47474747,$47474747,$47474747,$47474747 dc.l $47474747,$47474747,$47474747,$47474747,$47474747,$47474747 dc.l $47474747,$4748494A,$4B4C4D4E,$4F505152,$53545556,$57585902 dc.l $46464646,$46464646,$46464646,$46464646,$46464646,$46464646 dc.l $46464646,$46464646,$46464646,$46464646,$46464646,$46464646 dc.l $46464646,$46464646,$46464646,$46464646,$46464646,$46464748 dc.l $494A4B4C,$4D4E4F50,$51525354,$55565758,$59024545,$45454545 dc.l $45C D454545,$45454545,$45454545,$45454545,$45454545,$45454545 dc.l $45454545,$45454545,$45454545,$45454545,$45454545,$45454545 dc.l $45454545,$45454545,$45454545,$45454546,$4748494A,$4B4C4D4E dc.l $4F505152,$53545556,$57585902,$44444444,$44444444,$44444444 dc.l $44444444,$44444444,$44444444,$44444444,$44444444,$44444444 dc.l $44444444,$44444444,$44444444,$44444444,$44444444,$44444444 dc.l $44444444,$44444444,$45464748,$494A4B4C,$4D4E4F50,$51525354 dc.l $55565758,$59024343,$43434343,$43434DT343,$43434343,$43434343 dc.l $43434343,$43434343,$43434343,$43434343,$43434343,$43434343 dc.l $43434343,$43434343,$43434343,$43434343,$43434343,$43434343 dc.l $43444546,$4748494A,$4B4C4D4E,$4F505152,$53545556,$57585902 dc.l $42424242,$42424242,$42424242,$42424242,$42424242,$42424242 dc.l $42424242,$42424242,$42424242,$42424242,$42424242,$42424242 dc.l $42424242,$42424242,$42424242,$42424242,$42424344,$45464748 dc.l $494A4B4C,$4D4E4F50,$51525354,$55565758,$59024141,$41414141 dc.l $414Ey14141,$41414141,$41414141,$41414141,$41414141,$41414141 dc.l $41414141,$41414141,$41414141,$41414141,$41414141,$41414141 dc.l $41414141,$41414141,$41414142,$43444546,$4748494A,$4B4C4D4E dc.l $4F505152,$53545556,$57585902,$40404040,$40404040,$40404040 dc.l $40404040,$40404040,$40404040,$40404040,$40404040,$40404040 dc.l $40404040,$40404040,$40404040,$40404040,$40404040,$40404040 dc.l $40404040,$41424344,$45464748,$494A4B4C,$4D4E4F50,$51525354 dc.l $55565758,$59023F3F,$3F3F3F3F,$3F3F3FFuC3F,$3F3F3F3F,$3F3F3F3F dc.l $3F3F3F3F,$3F3F3F3F,$3F3F3F3F,$3F3F3F3F,$3F3F3F3F,$3F3F3F3F dc.l $3F3F3F3F,$3F3F3F3F,$3F3F3F3F,$3F3F3F3F,$3F3F3F3F,$3F404142 dc.l $43444546,$4748494A,$4B4C4D4E,$4F505152,$53545556,$57585902 dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3F40,$41424344,$45464748 dc.l $494A4B4C,$4D4E4F50,$51525354,$55565758,$59023D3D,$3D3D3D3D dc.l $3D3DGi3D3D,$3D3D3D3D,$3D3D3D3D,$3D3D3D3D,$3D3D3D3D,$3D3D3D3D dc.l $3D3D3D3D,$3D3D3D3D,$3D3D3D3D,$3D3D3D3D,$3D3D3D3D,$3D3D3D3D dc.l $3D3D3D3D,$3D3D3D3E,$3F404142,$43444546,$4748494A,$4B4C4D4E dc.l $4F505152,$53545556,$57585902,$3C3C3C3C,$3C3C3C3C,$3C3C3C3C dc.l $3C3C3C3C,$3C3C3C3C,$3C3C3C3C,$3C3C3C3C,$3C3C3C3C,$3C3C3C3C dc.l $3C3C3C3C,$3C3C3C3C,$3C3C3C3C,$3C3C3C3C,$3C3C3C3C,$3C3C3C3C dc.l $3D3E3F40,$41424344,$45464748,$494A4B4C,$4D4E4F50,$51525354 dc.l $55565758,$59023B3B,$3B3B3B3B,$3B3B3B32E3E,$3E3E3E3E,$3E3E3E01,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E01 dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E01,$06132A37,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E013E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E01,$060C1319,$242A3137 dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E01,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E3&* ,$3E3E3E3E dc.l $3E3E0102,$060A0E13,$171B2226,$2A2F3337,$3B3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E013E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E0102,$06090C0F,$1316191C dc.l $2124272A,$2E313437,$3B3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E01,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E0103,$05080B0D,$10121518,$1A1D2023,$25282B2D,$30323538 dc.l $3A3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E013E3E dc.l $3E3E3E3E,$3E3E3E43E,$3E3E3E3E,$3E3E0103,$0507090C,$0E101214 dc.l $17191B1D,$20222426,$292B2D2F,$31343638,$3A3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E01,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E0103,$0507090A,$0C0E1012,$1416181A,$1C1E1F21,$23252729 dc.l $2B2D2F31,$33343638,$3A3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E013E3E,$3E3E3E3E,$3E3E3E3E,$3E3E0103,$04060809,$0B0D0E10 dc.l $12141517,$191A1C1E,$1F212324,$2628292B,$2D2F3032,$34353739 dc.l $3A3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E01,$3E3E3E3E,5/G$3E3E3E3E dc.l $3E3E0102,$04050708,$0A0B0D0F,$10121315,$1618191B,$1C1E1F21 dc.l $22242527,$282A2B2D,$2E303233,$35363839,$3B3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E013E3E,$3E3E3E3E,$3E3E0102,$03050607,$090A0C0D dc.l $0F101113,$14161718,$1A1B1D1E,$1F202223,$25262729,$2A2C2D2E dc.l $30313334,$3637383A,$3B3E3E3E,$3E3E3E3E,$3E3E3E01,$3E3E3E3E dc.l $3E3E3E01,$03040507,$08090A0C,$0D0E1011,$12141516,$18191A1C dc.l $1D1E1F20,$21232425,$2728292B,$2C2D2F30,$31333435,$3638393A dc.l $3E3E3E3E,$3E3E3E36ڷ2E,$3E013E3E,$3E3E3E01,$02030406,$0708090A dc.l $0C0D0E0F,$11121314,$16171819,$1B1C1D1E,$1F202122,$24252627 dc.l $292A2B2C,$2E2F3031,$33343536,$37393A3B,$3E3E3E3E,$3E3E3E01 dc.l $3E3E3E3E,$01020305,$06070809,$0A0C0D0E,$0F101113,$14151617 dc.l $181A1B1C,$1D1E1F20,$21222325,$26272829,$2A2C2D2E,$2F303133 dc.l $34353637,$383A3B3E,$3E3E3E3E,$3E013E3E,$3E010203,$05060708 dc.l $090A0B0C,$0E0F1011,$12131415,$1718191A,$1B1C1D1E,$1F202122 dc.l $23242526,$28292A2B,$2C2D2E2F,$31323334,$35363738,$7ʊ3A3B3E3E dc.l $3E3E3E01,$3E3E0102,$03040607,$08090A0B,$0C0D0E0F,$10111314 dc.l $15161718,$191A1B1C,$1D1E1F20,$21222324,$25262728,$292A2C2D dc.l $2E2F3031,$32333435,$3637393A,$3B3E3E3E,$3E013E01,$02030405 dc.l $06070809,$0A0C0D0E,$0F101112,$13141516,$1718191A,$1B1C1D1E dc.l $1F202122,$23242526,$2728292A,$2B2C2D2E,$2F303133,$34353637 dc.l $38393A3B,$3E3E3E01,$01020304,$05060708,$090A0B0C,$0D0E0F10 dc.l $11121314,$15161718,$191A1B1C,$1D1E1F20,$21222324,$25262728 dc.l $292A2B2C,$2D2E2F308d,$31323334,$35363738,$393A3B3E,$3E010102 dc.l $03040506,$0708090A,$0B0C0D0E,$0F101112,$13141516,$1718191A dc.l $1B1C1D1E,$1F202122,$23242526,$2728292A,$2B2C2D2E,$2F303132 dc.l $33343536,$3738393A,$3B3E3E01 dc.w $ff00 Saugen: dc.l $5A5A5A5A,$5A5A5A5A,$5A5A5A5A,$5A5A5A5A,$5A5A5A5A,$5A5A5A5A dc.l $5A5A5A5A,$5A5A5A5A,$5A5A5A5A,$5A5A5A5A,$5A5A5A5A,$5A5A5A5A dc.l $5A5A5A5A,$5A5A5A5A,$5A5A5A5A,$5A5A5A5A,$5A5A5A5A,$5A5A5A5A dc.l $5A5A5A5A,$5A5A5A5A,$5A5A5A5A,$5A5A5A5A,$5A025959,$59595959 dc.9YǪl $59595959,$59595959,$59595959,$59595959,$59595959,$59595959 dc.l $59595959,$59595959,$59595959,$59595959,$59595959,$59595959 dc.l $59595959,$59595959,$59595959,$59595959,$59595959,$59595959 dc.l $59595959,$59595959,$59595902,$58585858,$58585858,$58585858 dc.l $58585858,$58585858,$58585858,$58585858,$58585858,$58585858 dc.l $58585858,$58585858,$58585858,$58585858,$58585858,$58585858 dc.l $58585858,$58585858,$58585858,$58585858,$58585858,$58585858 dc.l $58585858,$59025757,$57575757,$:K57575757,$57575757,$57575757 dc.l $57575757,$57575757,$57575757,$57575757,$57575757,$57575757 dc.l $57575757,$57575757,$57575757,$57575757,$57575757,$57575757 dc.l $57575757,$57575757,$57575757,$57575757,$57575757,$57585902 dc.l $56565656,$56565656,$56565656,$56565656,$56565656,$56565656 dc.l $56565656,$56565656,$56565656,$56565656,$56565656,$56565656 dc.l $56565656,$56565656,$56565656,$56565656,$56565656,$56565656 dc.l $56565656,$56565656,$56565656,$56565758,$59025555,$55555555 dc.l;_s" $55555555,$55555555,$55555555,$55555555,$55555555,$55555555 dc.l $55555555,$55555555,$55555555,$55555555,$55555555,$55555555 dc.l $55555555,$55555555,$55555555,$55555555,$55555555,$55555555 dc.l $55555555,$55555556,$57585902,$54545454,$54545454,$54545454 dc.l $54545454,$54545454,$54545454,$54545454,$54545454,$54545454 dc.l $54545454,$54545454,$54545454,$54545454,$54545454,$54545454 dc.l $54545454,$54545454,$54545454,$54545454,$54545454,$54545454 dc.l $55565758,$59025353,$53535353,$5<ဂx3535353,$53535353,$53535353 dc.l $53535353,$53535353,$53535353,$53535353,$53535353,$53535353 dc.l $53535353,$53535353,$53535353,$53535353,$53535353,$53535353 dc.l $53535353,$53535353,$53535353,$53535353,$53545556,$57585902 dc.l $52525252,$52525252,$52525252,$52525252,$52525252,$52525252 dc.l $52525252,$52525252,$52525252,$52525252,$52525252,$52525252 dc.l $52525252,$52525252,$52525252,$52525252,$52525252,$52525252 dc.l $52525252,$52525252,$52525354,$55565758,$59025151,$51515151 dc.l '12A2826,$2422201E dc.l $1D1B1917,$1513110F,$0D0B0908,$0604023E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E01,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3B393836 dc.l $3433312F,$2E2C2A28,$27252322,$201E1D1B,$19181614,$13110F0D dc.l $0C0A0807,$0503023E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E013E3E dc.l $3E3E3E3E,$3E3E3E3E,$3B3A3837,$35343231,$2F2D2C2A,$29272624 dc.l $2321201E,$1D1B1A18,$17151412,$110F0E0C,$0A090706,$0403013E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E01,$3E3E3E3E,$3E3E3E3E,$3B3A3937 dc.l $36353332,$(yn302F2D2C,$2B292826,$25242221,$1F1E1D1C,$1A191716 dc.l $15131210,$0F0E0C0B,$09080605,$0402013E,$3E3E3E3E,$3E3E3E3E dc.l $3E013E3E,$3E3E3E3E,$3E3B3938,$37353433,$32302F2E,$2C2B2A28 dc.l $27262423,$22201F1E,$1D1C1B19,$18171514,$1311100F,$0D0C0B09 dc.l $08070604,$03023E3E,$3E3E3E3E,$3E3E3E01,$3E3E3E3E,$3E3B3A39 dc.l $38363534,$3332302F,$2E2D2B2A,$29282625,$24232120,$1F1E1D1C dc.l $1B1A1817,$16151312,$11100E0D,$0C0B0908,$07060503,$02013E3E dc.l $3E3E3E3E,$3E013E3E,$3E3E3B3A,$39373635,$343)rm=33230,$2F2E2D2C dc.l $2B292827,$26252422,$21201F1E,$1D1C1B1A,$19171615,$14131210 dc.l $0F0E0D0C,$0B090807,$06050402,$013E3E3E,$3E3E3E01,$3E3E3E3B dc.l $3A393736,$35343332,$31302E2D,$2C2B2A29,$28272524,$23222120 dc.l $1F1E1D1C,$1B1A1918,$17161413,$1211100F,$0E0D0B0A,$09080706 dc.l $05040201,$3E3E3E3E,$3E013E3E,$3B3A3938,$36353433,$3231302F dc.l $2E2D2C2B,$29282726,$25242322,$21201F1E,$1D1C1B1A,$19181716 dc.l $15141312,$100F0E0D,$0C0B0A09,$08070605,$0302013E,$3E3E3E01 dc.l $3E3B3A39,$3*?s8373635,$34333230,$2F2E2D2C,$2B2A2928,$27262524 dc.l $23222120,$1F1E1D1C,$1B1A1918,$17161514,$13121110,$0F0E0D0C dc.l $0B090807,$06050403,$02013E3E,$3E013B3A,$39383736,$35343332 dc.l $31302F2E,$2D2C2B2A,$29282726,$25242322,$21201F1E,$1D1C1B1A dc.l $19181716,$15141312,$11100F0E,$0D0C0B0A,$09080706,$05040302 dc.l $013E3E01,$3B3A3938,$37363534,$33323130,$2F2E2D2C,$2B2A2928 dc.l $27262524,$23222120,$1F1E1D1C,$1B1A1918,$17161514,$13121110 dc.l $0F0E0D0C,$0B0A0908,$07060504,$0302013E,$3E01+n3B3A,$39383736 dc.l $35343332,$31302F2E,$2D2C2B2A,$29282726,$25242322,$21201F1E dc.l $1D1C1B1A,$19181716,$15141312,$11100F0E,$0D0C0B0A,$09080706 dc.l $05040302,$013E3E01,$3B3A3938,$37363534,$33323130,$2F2E2D2C dc.l $2B2A2928,$27262524,$23222120,$1F1E1D1C,$1B1A1918,$17161514 dc.l $13121110,$0F0E0D0C,$0B0A0908,$07060504,$0302013E,$3E013B3A dc.l $39383736,$35343332,$31302F2E,$2D2C2B2A,$29282726,$25242322 dc.l $21201F1E,$1D1C1B1A,$19181716,$15141312,$11100F0E,$0D0C0B0A dc.l $09080706,$05,mӈ040302,$013E3E01,$3E3B3A39,$38373635,$34333130 dc.l $2F2E2D2C,$2B2A2928,$27262524,$23222120,$1F1E1D1C,$1B1A1918 dc.l $17161514,$13121110,$0F0E0D0C,$0A090807,$06050403,$02013E3E dc.l $3E013E3E,$3B3A3937,$36353433,$3231302F,$2E2D2C2A,$29282726 dc.l $25242322,$21201F1E,$1D1C1B1A,$19181716,$15141311,$100F0E0D dc.l $0C0B0A09,$08070604,$0302013E,$3E3E3E01,$3E3E3E3B,$3A383736 dc.l $35343332,$312F2E2D,$2C2B2A29,$28262524,$23222120,$1F1E1D1C dc.l $1B1A1918,$17151413,$1211100F,$0E0C0B0A,$09080-H706,$05030201 dc.l $3E3E3E3E,$3E013E3E,$3E3E3B3A,$38373635,$34333130,$2F2E2D2C dc.l $2A292827,$26252322,$21201F1E,$1D1C1B1A,$18171615,$14131110 dc.l $0F0E0D0C,$0A090807,$06050302,$013E3E3E,$3E3E3E01,$3E3E3E3E dc.l $3E3B3A39,$37363534,$3331302F,$2E2C2B2A,$29272625,$24222120 dc.l $1F1E1D1C,$1B191817,$16141312,$110F0E0D,$0C0A0908,$07060403 dc.l $02013E3E,$3E3E3E3E,$3E013E3E,$3E3E3E3E,$3E3A3938,$36353433 dc.l $31302F2D,$2C2B2928,$27252423,$21201F1E,$1D1C1A19,$18161514 dc.l $1211100E,$0D0.x-SC0A09,$08070504,$03013E3E,$3E3E3E3E,$3E3E3E01 dc.l $3E3E3E3E,$3E3E3E3E,$3B3A3837,$36343331,$302E2D2C,$2A292726 dc.l $25232220,$1F1E1D1B,$1A181716,$14131110,$0F0D0C0A,$09070605 dc.l $0302013E,$3E3E3E3E,$3E3E3E3E,$3E013E3E,$3E3E3E3E,$3E3E3E3E dc.l $3B393836,$35333230,$2E2D2B2A,$28272524,$22211F1E,$1C1B1918 dc.l $16151312,$100F0D0B,$0A080705,$0402013E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E01,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3A393735,$3432302F dc.l $2D2B2928,$26242321,$1F1E1C1A,$19171514,$12100E/ɣ_0D,$0B090806 dc.l $0403013E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E013E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3A383634,$33312F2D,$2B292725,$23211F1E dc.l $1C1A1816,$1412100E,$0C0A0907,$0503013E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E01,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3A383634,$312F2D2B,$29262422,$201E1B19,$17141210,$0E0C0907 dc.l $0503013E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E013E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3A383532,$302D2B28 dc.l $2523201E,$1A180X<1512,$100D0B08,$0503013E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E01,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3B373431,$2E2A2724,$211E1916,$130F0C09 dc.l $0602013E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E013E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3B37332F,$2A26221E,$17130E0A,$0602013E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E01,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E373121"AA,$241E130C dc.l $06013E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E013E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E372A1E,$06013E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E01,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E1E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E013E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3`/),d7 setc2: movem.l (a7)+,d1-d6/a0-a6 rts ********************************************************************** Zaehler0: dc.b 3,0 Bitmap: blk.b 34,0 ;Bitmap Struktur rastport: blk.b 110,0 ;Raster-Port Struktur tester: dc.b ShineTime,0 TextColorPTR: dc.b 5-[Entries/2],0 TextColor: blk.w 5-[Entries/2],TextCol dc.w BalkenCol blk.w Entries,TextCol textad: dc.l 0 mousepos: dc.w 0 fontname: dc.b "topaz.font",0,0 ;Name des Fonts fontbase: dc.l 0 ;Fontbasisadresse textattr: dcJ{E.l fontname ;Zeiger auf Fontname dc.w 8 ;Hoehe des Fonts dc.w 0 ;diverses Flag gfxname: dc.b "graphics.library",0,0 gfxbase: dc.l 0 ;GFXbase oldclz: dc.w 0,0,0,0,0 ;Zeiger auf alte Copperliste gturnpointer: dc.l Saugen gturncount: dc.b 0 TurnTest: dc.b 1 TurnTable: dc.l $01020304,$05060708,$090A0B0C,$0D0E0F10,$11121314,$15161718 dc.l $191A1B1C,$1D1E1F20,$21222324,$25262728,$292A2B2C,$2D2E2F30 dc.l $31323334,$35363738,$393A3B3E,$3E010102,$03040506,$0708090A dc.l $0B0C0=D0E,$0F101112,$13141516,$1718191A,$1B1C1D1E,$1F202122 dc.l $23242526,$2728292A,$2B2C2D2E,$2F303132,$33343536,$3738393A dc.l $3B3E3E01,$01020304,$05060708,$090A0B0C,$0D0E0F10,$11121314 dc.l $15161718,$191A1B1C,$1D1E1F20,$21222324,$25262728,$292A2B2C dc.l $2D2E2F30,$31323334,$35363738,$393A3B3E,$3E013E01,$02030405 dc.l $06070809,$0B0C0D0E,$0F101112,$13141516,$1718191A,$1B1C1D1E dc.l $1F202122,$23242526,$2728292A,$2B2C2D2E,$2F303233,$34353637 dc.l $38393A3B,$3E3E3E01,$3E3E0102,$03050607{,$08090A0B,$0C0D0E0F dc.l $10121314,$15161718,$191A1B1C,$1D1E1F20,$21222324,$25262728 dc.l $292B2C2D,$2E2F3031,$32333435,$3638393A,$3B3E3E3E,$3E013E3E dc.l $3E010204,$05060708,$090A0B0D,$0E0F1011,$12131416,$1718191A dc.l $1B1C1D1E,$1F202122,$23242527,$28292A2B,$2C2D2E30,$31323334 dc.l $35363739,$3A3B3E3E,$3E3E3E01,$3E3E3E3E,$01020405,$06070809 dc.l $0B0C0D0E,$0F101213,$14151617,$191A1B1C,$1D1E1F20,$21222425 dc.l $26272829,$2B2C2D2E,$2F303233,$34353637,$393A3B3E,$3E3E3E3E dc.l $3E013E sX3E,$3E3E3E01,$02030506,$0708090B,$0C0D0E10,$11121315 dc.l $1617181A,$1B1C1D1E,$1F202123,$24252628,$292A2B2D,$2E2F3032 dc.l $33343536,$38393A3B,$3E3E3E3E,$3E3E3E01,$3E3E3E3E,$3E3E3E02 dc.l $03040607,$08090B0C,$0D0F1011,$13141517,$18191B1C,$1D1E1F20 dc.l $22232426,$27282A2B,$2C2E2F30,$32333435,$3738393B,$3E3E3E3E dc.l $3E3E3E3E,$3E013E3E,$3E3E3E3E,$3E3E0102,$04050608,$090B0C0E dc.l $0F101213,$15161719,$1A1C1D1E,$1F212224,$25262829,$2B2C2D2F dc.l $30323335,$3637393A,$3B3E3E3E,$3E3E3E3E,!\`$3E3E3E01,$3E3E3E3E dc.l $3E3E3E3E,$3E3E0103,$04060709,$0A0C0E0F,$11121415,$17181A1B dc.l $1D1E2021,$23242627,$292A2C2D,$2F313234,$3537383A,$3B3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E013E3E,$3E3E3E3E,$3E3E3E3E,$3E3E0203 dc.l $0507080A,$0C0D0F11,$13141618,$191B1D1E,$20222325,$27282A2C dc.l $2E2F3133,$34363839,$3B3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E01 dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E0204,$0608090B,$0D0F1113 dc.l $1517191B,$1D1E2022,$2426282A,$2C2E3032,$33353739,$3B3E3E3E dc.l $3E3E3E3" zKE,$3E3E3E3E,$3E3E3E3E,$3E013E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E0204,$06080B0D,$0F111316,$181A1C1E,$21232528 dc.l $2A2C2E30,$33353739,$3B3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E01,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E0204 dc.l $070A0C0F,$11141719,$1C1E2224,$272A2C2F,$31343739,$3B3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E013E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E0105,$080B0E12,$15181B1E dc.l $2326292D,$3033363A,$3B3E3E3E,$3E3E3E3E,$# L3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E01,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E0105,$090D1216,$1A1E2529,$2E32363A,$3B3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E013E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E05 dc.l $0B12181E,$2930363B,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E01,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E05,$121E363B,$3E3E3E3E dc.l $3E3E3E3E$ O,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E013E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E1E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E01,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3B3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E013E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E3B3629,$12053E3E,$3% *E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E01,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3B3630 dc.l $29231812,$0B053E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E013E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3B3A3632,$2E292521,$1A16120D,$0905013E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E01 dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3B3A3633 dc.l $302D2926,&$23201B18,$15120E0B,$0805013E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E013E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3B393734,$312F2C2A,$2724221F,$1C191714 dc.l $110F0C0A,$0704023E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E dc.l $3E3E3E01,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3B393735 dc.l $33302E2C,$2A282523,$211F1C1A,$18161311,$0F0D0B08,$0604023E dc.l $3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E3E3E3E,$3E013E3E,$3E3E3E3E dc.l $3E3E3E3E,$3E3E3E3E,$3B393735,$3332302E,$2Ceen move.w d0,2(a1) ;in CopperListe schreiben swap d0 ;low Wort holen move.w d0,6(a1) ;in Copperliste schreiben addq.l #8,a1 ;CopList Position erhoehen sub.l #[GraphicBPLx/8]*GraphicBPLy,d0 ;eine Bitplane weniger dbf d5,GGurnl3 ;D5 <> 0 -> TURNL2 add.l #8,a1 ;CopList Position erhoehen dbf d6,GGurnl2 ;D6 <> 0 -> TURNL1 tst.b Gturncount ;Turncount gesetzt ? bne GGurnl4 ;Ja -> TURNL3 move.b (a0),Gturncount ;Turncount mit Zaehler setzen GGurnl4:subq.b #1,Gturncount ;Zaehler minus eins beq GGurnl5 ;Zaehler auf null ? -> TURNL4 sub.l #89,a0 ;Tablepointer zuruecksetzen bra GGurnl8 ;JMP TURNL5 GGurnl5:addq.l #1,a0 ;Tablepointer plus eins cmp.b #-1,(a0) ;TurnTable zu Ende ? bne GGurnl8 ;Nein -> TURNL5 GGurnl7:clr.b TurnTest lea TurnTable,a0 ;TurnTablestartzeiger -> A0 clr.b gturncount GGurnl8:move.l a0,Gturnpointer ;in Turnpointer schreiben rts ********************************************************************** Maus: tst.b#W Zaehler0 beq mausl0 subq.b #1,Zaehler0 bra mausl1 mausl0: move.b #3,Zaehler0 lea ColW0,a0 move.w ColW0+6,d1 moveq #6,d7 coll0: move.w 14(a0),6(a0) addq.l #8,a0 dbf d7,Coll0 move.w d1,ColW1-2 mausl1: move.b MousePos(pc),d0 move.b $DFF00A,d1 sub.b d1,d0 cmp.b #30,d0 bpl oben cmp.b #-30,d0 bmi unten rts unten: move.b $DFF00A,mousepos clr.l d0 move.b TextColorPTR,d0 cmp.b #[[[11-Entries]/2]+Entries]-1,d0 beq ul1 lsl.b #1,d0 lea TextColor,a0 move.w #TextCol,(a0,d0)R move.w #BalkenCol,2(a0,d0) lea ColW1+6,a0 lsl.b #2,d0 move.w #BalkenCol,8(a0,d0) addq.b #1,TextColorPTR ul1: rts oben: move.b $DFF00A,mousepos clr.l d0 move.b TextColorPTR,d0 cmp.b #[11-Entries]/2,d0 beq ol1 lsl.b #1,d0 lea TextColor,a0 move.w #TextCol,(a0,d0) move.w #BalkenCol,-2(a0,d0) lea ColW1+6,a0 lsl.b #2,d0 move.w #BalkenCol,-8(a0,d0) subq.b #1,TextColorPTR ol1: rts ********************************************************************** newcl: dc.w $0096,$83f0^b ;DMA-Kontrollregister dc.w $0096,$0020 dc.w $008e,$2981,$0090,$29c1 ;DIWSTART/DIWSTOP GFX. dc.w $0092,$0038,$0094,$00d0 ;DDFSTART/DDFSTOP GFX. gbplz: dc.w $00e0,$0000,$00e2,$0000 ;Bitplane 1 dc.w $00e4,$0000,$00e6,$0000 ;Bitplane 2 dc.w $00e8,$0000,$00ea,$0000 ;Bitplane 3 dc.w $00ec,$0000,$00ee,$0000 ;Bitplane 4 dc.w $00f0,$0000,$00f2,$0000 ;Bitplane 5 dc.w $0100,$4200 ;Kontrollregister 0 dc.w $0102,$0000,$0104,$0000 ;Kontrollregister 1+2 dc.w $0108,$0000,$010a+,$0000 ;Modulos gcol1: blk.l GraphicBPLColors,0 ;Farbtabelle fuer Pic ttw: blk.l 10*90,0 dc.w $800f,$fffe,$0180,$0001,$820f,$fffe,$0180,$0002 dc.w $840f,$fffe,$0180,$0003,$860f,$fffe,$0180,$0004 dc.w $880f,$fffe,$0180,$0005 ColW0: dc.w $910F,$FFFE,$019e,$034a,$920F,$FFFE,$019e,$056b dc.w $930F,$FFFE,$019e,$078c,$940F,$FFFE,$019e,$099d dc.w $950F,$FFFE,$019e,$0cce,$960F,$FFFE,$019e,$099d dc.w $970F,$FFFE,$019e,$078c,$980f,$FFFE,$019e,$056b ColW1: dc.w [$100*[$a1+rapo]]+$f,$fff2De,$019e,$0005 dc.w [$100*[$a9+rapo]]+$f,$fffe,$019e,$0005 dc.w [$100*[$b1+rapo]]+$f,$fffe,$019e,$0005 dc.w [$100*[$b9+rapo]]+$f,$fffe,$019e,$0005 dc.w [$100*[$c1+rapo]]+$f,$fffe,$019e,$0005 dc.w [$100*[$c9+rapo]]+$f,$fffe,$019e,$0005 dc.w [$100*[$d1+rapo]]+$f,$fffe,$019e,$0005 dc.w [$100*[$d9+rapo]]+$f,$fffe,$019e,$0005 dc.w [$100*[$e1+rapo]]+$f,$fffe,$019e,$0005 dc.w [$100*[$e9+rapo]]+$f,$fffe,$019e,$0005 dc.w [$100*[$f1+rapo]]+$f,$fffe,$019e,$0005 dc.w $ffe1,$fffe,$000f:$,$fffe,$0180,$0004 dc.w $020f,$fffe,$0180,$0003 dc.w $040f,$fffe,$0180,$0002 dc.w $060f,$fffe,$0180,$0001 dc.w $080f,$fffe,$0180,$0000 balken: blk.l 2*30,0 dc.w $ffff,$fffe ;Ende der Copperliste ********************************************************************** * Unterroutinen * ********************************************************************** zentprint: movem.l d0-d7/a0-a6,-(a7) ;Register retten move.l d0,d7 ;X-Start retten move.l textad(pc),d0 ;Textadresse holen move.l d0,a0 ;Textadresse kopieren znullt: tst.b (a0)+ ;Auf null testen und plus 1 bne znullt ;Nicht null -> ZNULLT sub.l d0,a0 ;Laenge berechnen sub.l #1,a0 ;minus 1 move.l a0,-(a7) ;Laenge speichern move.l #40,d0 ;40 Zeichen pro Zeile sub.l a0,d0 ;minus Anzahl Zeichen mulu #4,d0 ;durch 2 mal 8 = mal 4 add.l d7,d0 ;X-Start addieren move.l gfxbase,a6 ;Gfxbase holen lea rastport,a1 ;Zeiger auf Rast{port holen jsr -240(a6) ;Move move.l (a7),d0 ;Laenge wiederholen move.l textad(pc),a0 ;Zeiger auf Text lea rastport,a1 ;Zeiger auf Rastport holen jsr -60(a6) ;Text move.l (a7)+,d0 ;Laenge holen add.l #1,d0 ;Textadresse erhoehen add.l d0,textad ;Laenge plus 1 (null Byte) movem.l (a7)+,d0-d7/a0-a6 ;Register wiederholen rts ********************************************************************** SetRGBFarb: movem.l d1-d6/a0-a6,-(a7) clr.l d7 move.w d0,d2 move.w d13F5;,d3 and.w #$0f00,d2 and.w #$0f00,d3 move.w #$0100,d4 cmp.w d2,d3 beq setc0 bcc addcol0 move.w #$ff00,d4 addcol0:add.w d4,d0 moveq #1,d7 setc0: move.w d0,d2 move.w d1,d3 and.w #$00f0,d2 and.w #$00f0,d3 move.w #$0010,d4 cmp.w d2,d3 beq setc1 bcc addcol1 move.w #$fff0,d4 addcol1:add.w d4,d0 moveq #1,d7 setc1: move.w d0,d2 move.w d1,d3 and.w #$000f,d2 and.w #$000f,d3 move.w #$0001,d4 cmp.w d2,d3 beq setc2 bcc addcol2 move.w #$ffff,d4 addcol2:add.w d4,d0 moveq #1jUQme,tester lea ColW1,a0 lea TextColor,a1 moveq #10,d6 irqbl1: move.w 6(a0),d0 move.w (a1)+,d1 bsr SetRGBFarb move.w d0,6(a0) addq.l #8,a0 dbf d6,irqbl1 irqbl2: movem.l (a7)+,d0-d7/a0-a6 oldirq: jmp $000000 ********************************************************************** SetCopperList: movem.l d0-d7/a0-a6,-(a7) ;Register retten move.l gfxbase,a6 ;Gfxbase moveq #GraphicBPLPlanes,d0 ;Bitplanes holen move.l #GraphicBPLx,d1 ;Breite holen move.l #GraphicBPLy,d2 ;HoeheZw holen movem.l d0-d2,-(a7) ;Register retten lea bitmap,a0 ;Zeiger auf Bitplanestruktur jsr -390(a6) ;InitBitMap movem.l (a7)+,d0-d2 ;Register wiederholen lea GraphicBPL,a0 ;Zeiger auf Graphicbuffer lea bitmap+8,a1 lsr.l #3,d1 ;Breite durch 8 teilen subq #1,d0 ;Anzahl Bitplanes minus 1 mulu d1,d2 ;Breite mal Hoehe ibl: move.l a0,(a1) ;Adresse in Bitmap-Struktur e. addq #4,a1 add.l d2,a0 dbf d0,ibl lea rastport,a1 ;Zeiger auf Rastportstruktur jsr -198(a6) ;^rInitRastPort move.l #bitmap,rastport+4 ;Adresse der Bitmap speichern lea textattr,a0 ;Zeiger auf Textattribute jsr -72(a6) ;OpenFont move.l d0,fontbase ;Fontbasisadresse move.l d0,a0 lea rastport,a1 ;Rastport ermitteln jsr -66(a6) ;SetFont move.l fontbase,a1 jsr -78(a6) ;CloseFont lea ttw,a0 move.l #[GraphicTurnRast*$1000000]+$e1fffe,d0 move.l #GraphicBPL,d1 add.l #[GraphicBPLx/8]*GraphicBPLy*[GraphicBPLPlanes-1],d1 move.l #89,d7 ctcl1: move.l d0,(a0)+ ;Wait  9in Copper Liste move.l d1,d2 move.w #[[GraphicBPLPlanes-1]*4]+$e0,d3 moveq #GraphicBPLPlanes-1,d6 ctcl2: move.w d3,(a0)+ swap d2 move.w d2,(a0)+ addq.w #2,d3 move.w d3,(a0)+ swap d2 move.w d2,(a0)+ sub.l #[GraphicBPLx/8]*GraphicBPLy,d2 subq.w #6,d3 dbf d6,ctcl2 move.l #$01800000,(a0)+ ctcl3: add.l #GraphicBPLx/8,d1 add.l #$01000000,d0 dbf d7,ctcl1 lea balken,a0 move.l #$080ffffe,d0 moveq #29,d7 bl0: move.l d0,(a0)+ move.l #$01800000,(a0)+ add.l #$01000000,d0 dbf oj! d7,bl0 lea gcol1,a0 move.w #$0180,d0 moveq #GraphicBPLColors-1,d1 col0: move.w d0,(a0)+ clr.w (a0)+ addq.w #2,d0 dbf d1,col0 lea gbplz,a0 lea GraphicBPL,a2 moveq #GraphicBPLPlanes-1,d1 setl1: move.l a2,d0 move.w d0,6(a0) swap d0 move.w d0,2(a0) add.l #[GraphicBPLx/8]*GraphicBPLy,a2 addq.l #8,a0 dbf d1,setl1 move.w $DFF002,d0 ;DMA-Kontrollregister holen bset #15,d0 ;Bit 15 setzen move.w d0,oldclz+8 ;und speichern move.l gfxbase,a6 ;Gfxbase -> A6 add.l #50,a6  @ ;50 zur Gfxbase addieren move.l a6,oldclz ;Alte Copperliste move.l (a6),oldclz+4 ;zwischenspeichern move.l #newcl,(a6) ;Zeiger auf neue Copperliste movem.l (a7)+,d0-d7/a0-a6 rts ********************************************************************** SetBalken: moveq #15,d6 sbl0: lea ttw+38,a0 lea balken+6,a1 lea ColTab,a2 sbl1: move.w (a0),d0 move.w (a2)+,d1 bsr SetRGBFarb move.w d0,(a0) move.w d0,(a1) cmp.w #-1,(a2) beq sbl2 add.l #40,a0 addq.l #8,a1 bra sbl1 sb M>l2: move.w #$4000,d0 sbl3: dbf d0,sbl3 dbf d6,sbl0 rts SetGraphicColor: moveq #15,d6 sgcl0: lea gcol1+2,a0 lea GraphicBPLCol,a2 moveq #GraphicBPLColors-1,d5 sgcl1: move.w (a0),d0 move.w (a2)+,d1 bsr SetRGBFarb move.w d0,(a0) add.l #4,a0 dbf d5,sgcl1 move.w #$8000,d0 sgcl2: dbf d0,sgcl2 dbf d6,sgcl0 rts ********************************************************************** TurnGraphic1: move.l Gturnpointer,a0 ;Turnpointer holen lea ttw+[40*28]+4,a1 ;Start der CopList h  3.olen lea GraphicBPL+[[GraphicBPLx/8]*28],a2 add.l #[GraphicBPLx/8]*GraphicBPLy*[GraphicBPLPlanes-1],a2 move.l #60,d6 ;Anzahl der zu versetz. Zeilen Gturnl2:move.l a2,d0 ;Bitplane Position -> D0 move.b (a0)+,d1 ;Zeile aus Tabelle lesen subq.b #1,d1 ;Zeile minus eins and.l #$000000ff,d1 ;Byte ausmaskieren mulu #GraphicBPLx/8,d1 ;Position in Bitplane berech. add.l d1,d0 ;zur BitplanePosition addieren moveq #GraphicBPLPlanes-1,d5 ;Zaehler (Anzahl Bitplanes) Gturnl3:sw!4ap d0 ;high Wort holen move.w d0,2(a1) ;in CopperListe schreiben swap d0 ;low Wort holen move.w d0,6(a1) ;in Copperliste schreiben addq.l #8,a1 ;CopList Position erhoehen sub.l #[GraphicBPLx/8]*GraphicBPLy,d0 ;eine Bitplane weniger dbf d5,Gturnl3 ;D5 <> 0 -> TURNL2 add.l #8,a1 ;CopList Position erhoehen dbf d6,Gturnl2 ;D6 <> 0 -> TURNL1 tst.b Gturncount ;Turncount gesetzt ? bne Gturnl4 ;Ja -> TURNL3 move.b (a0),Gturncount ;Turncount mit Zaehler setzen Gturn"]l4:subq.b #1,Gturncount ;Zaehler minus eins beq Gturnl5 ;Zaehler auf null ? -> TURNL4 sub.l #61,a0 ;Tablepointer zuruecksetzen bra Gturnl8 ;JMP TURNL5 Gturnl5:addq.l #1,a0 ;Tablepointer plus eins cmp.b #-1,(a0) ;TurnTable zu Ende ? bne Gturnl8 ;Nein -> TURNL5 Gturnl7:lea TurnTable,a0 ;TurnTablestartzeiger -> A0 Gturnl8:move.l a0,Gturnpointer ;in Turnpointer schreiben rts TurnGraphic2: move.l Gturnpointer,a0 ;Turnpointer holen lea ttw+4,a1 ;Start der CopList ho Rwlen lea GraphicBPL,a2 add.l #[GraphicBPLx/8]*GraphicBPLy*[GraphicBPLPlanes-1],a2 move.l #88,d6 ;Anzahl der zu versetz. Zeilen GGurnl2:move.l a2,d0 ;Bitplane Position -> D0 move.b (a0)+,d1 ;Zeile aus Tabelle lesen subq.b #1,d1 ;Zeile minus eins and.l #$000000ff,d1 ;Byte ausmaskieren mulu #GraphicBPLx/8,d1 ;Position in Bitplane berech. add.l d1,d0 ;zur BitplanePosition addieren moveq #GraphicBPLPlanes-1,d5 ;Zaehler (Anzahl Bitplanes) GGurnl3:swap d0 ;high Wort holzN$$zO%"zP& zQ'zR(zS)zTŸJZk{  $+ÔL**************************************** GraphicBPLx = 320 ;Breite des Graphicbildschirms GraphicBPLy = 256 ;Hoehe des Graphicbildschirms GraphicBPLPlanes = 4 ;Anzahl der Bitplanes GraphicBPLColors = 16 ;Anzahl der Farben GraphicTurnRast = 41 FirstRastPos = $A1+[44-[Entries*4]] LastRastPos = $F1-[44-[Entries*4]] RaPo = [44-[[5-[Entries/2]]*8]]-[Entries*4] ********************************************************************** start: MenuStart: movem.l d0-d7/a0-a6,-(a7) ;Register ,3dMretten move.l 4,a6 ;Execbase jsr -132(a6) ;Forbid lea gfxname,a1 ;Zeiger auf Library-Name jsr -408(a6) ;OpenLibrary move.l d0,gfxbase ;Library-Base speichern move.b $DFF00A,mousepos bsr SetCopperList move.l $6c,oldirq+2 ;alten IRQ retten move.l #newirq,$6c ;Zeiger auf neuen IRQ holen move.l #MenuText,TextAD clr.l d0 move.l #110,d1 bsr ZentPrint add.l #16+[44-[Entries*4]],d1 moveq #Entries-1,d4 zpl0: bsr ZentPrint addq.l #8,d1 dbf d4,zpl0 bsr SetGraphicColor -Pk@ ;Farben fuer Bild setzen bsr SetBalken mwait: btst #6,$bfe001 ;linke Maustaste testen bne mwait ;Nicht gedrueckt -> MWAIT move.l oldirq+2,$6c ;alten IRQ-Vektor schreiben move.w oldclz+8,$DFF096 ;DMA-Kontrollregister schreib. move.l oldclz,a6 ;Alte Copperliste move.l oldclz+4,(a6) ;wieder zurueck schreiben move.l 4,a6 ;Execbase move.l gfxbase,a1 ;Library-Base holen jsr -414(a6) ;CloseLibrary jsr -138(a6) ;Permit move.w #$8020,$dff096 move.b TextColorPTR,$7f000 )WyD movem.l (a7)+,d0-d7/a0-a6 ;Register wiederholen lea resname(pc),a1 jsr -96(a6) tst.l d0 beq frerror move.l d0,a0 move.l 22(a0),a0 clr.l d0 rts frerror:moveq #-1,d0 rts resname: dc.b "dos.library",0 ********************************************************************** newirq: movem.l d0-d7/a0-a6,-(a7) tst.b Turntest beq irql1 bsr TurnGraphic2 bra irql2 irql1: bsr TurnGraphic1 irql2: bsr Maus tst.b tester beq irqbl0 subq.b #1,tester bra irqbl2 irqbl0: move.b #ShineTizC/av4??????????????????????zD0LzE1q? ?/??y??}??zF2Y"?????????????zG3U>????zH4zI5zJ6zK7zL8zM#&z8:$z9;"z:< z;=z<>z=?z>@z?Az@BzACzB.???? ????????????????z-Ed&?0?????0 @??@1?~?O@?o??z.F=|?o?o?o/?o?o?o'?oo7 ?O7??s?#??pz/GR$?????`x     z0Ho        ? ? ? ? ? ?z1I<kV ? ? ? ? ? ?? ? ? ? ? ? ?0p @z2Ja" ~?`P ? @z3Kz4Lz5Mz6Nz79&z"P$z#Q"z$R z%Sz&Tz'Uz(Vz)Wz*Xz+Yz,D&z[$z\:@0 @0``@0?/ O?@o?????0?#z] 5#'??7????_????????o??` 00?? 7`a?ps?#??pz^TD??? ? ? 7????? ????O???`?'?z_A>? ???08paT<?` @z`ٌ @ @ @?`?? zadx@?@< . zbzcz dz!O&z f$z g"zh zizjzkzlzmznzozZ&HJ2ty qwru]=GANDALF OF AXIS]= qx] x |.fastdirprs%s^ Disk.infopr$#_4_H0^r ,d#Zdxp^{{?!!!?|`?y??????#[0xp^{{|tC  Trashcanpuvv ! Trashcan.infopuؑ*(_ _ 0^r2d2([s0s0s0s0s0s0s0s0s0s0s0s0p???(](wPz  THRUSTBOOT1pq,2ANALYZERBIGBOOTonfigurationctSlMAKELISTPOSTERPRINTRESETsSEARCHERinfoTHRUSTBOOT1THRUSTBOOT2THRUSTINTRO1THRUSTINTRO2yYe= ANALYZERpzH{ˮK3210/.CBA@?>=<;:9NMLKJIHGFEDYXWVUTSRQPOdcba`_^]\[Zonmlkjihgfe~}|{ PIC0wz|z}z~a?@?' ?X ?0p >1?7? ??7_  @?`7/ ?p7_@ @?p7o ?7 zXD,070 307 w?7 W'7 77 ?7 ?o7`G @`7 ?/'7?Y ?_G7 ?07 ?7 ?z+%(/ 7 ?  hO 5@?` o7o? ?o? ?o o?o ?o?` op z2Co Po??o?o u,ox xYo|` 3o~a #o? 7o_ 7o 7o? 7o ;zt7o7o7o7o7o7o?7o7o7op7oc7o<7o??@0pzJۤ @t c'` 0@_)@z  z z e& )('&%$#87654zHp`     "! -,+* THRUSTBOOT.Sw*org $60000 load $60000 ************************************** * THRUST AUSWAHLMENU V1.0 * ************************************** * Written by Axel Thuemmler in 1988 * ************************************** * ri 'Pic0' - 'GraphicBPL' * ************************************** Entries = 11 ;Anzahl der MenuEintraege ShineTime = 1 ;Dauer des Nachleuchtens BalkenCol = $ccf ;Farbe des Auswahlbalkens TextCol = $77c ;Farbe des Textes ******************************ȝP   THRUSTBOOT2ps* NEWTHRUSTBOOT.S9G* A RI >BOOTCR >CRUNCH ;-------neu ran_tab = $7fe00 ran2_tab = $7fc00 copperram = $7f004 t = copperram - 4 star = t - 20480 scrollfield = star - 30720 font = scrollfield - 2048 brush = font - 7320 dat = brush org $6000c load $6000c start: move.l 4,a6 move.l #10240,36(a1) move.l #$000,44(a1) move.l #$60000,40(a1) move.w #2,28(a1) jsr -456(a6) jmp intro intro: bra trap blk.b 122,0 dc.b "This is not a VIRUS!!! It's a THRUST-BOOTER!!!" blk.b 900,0 even trap: movem.l d0-d7/a0-a6,-(sz% BOOTCR1R F< r0#Jaǀl2 c(#;F cC Fv<K9c aG_y>ceA1+@ <|$cn@Dca #/,Z> 8Vx!@D@AP x?W<^> bx1!E Ra9c`02)@Q013C@+A''/`AR`a? bx3Q@<^ yr 'c|O> N THRUSTINTRO1p1N/L]d 6 DATSHORTCR$>e 0 IPCB2͐C f!X5o C`a0J?µ ~|1 `CX7pd$ @`33@`, C( ?f` 8@! ڥ!["0?G0Г?d``9A!A?|BB=yPf1P S> ^/O@7q+?` ?A  | D@戁~*eW!&E'Y.:HPo~䃮  2!^/ HC1L x<?  `A1(P<5W~ꁁ @P0Xp}yV4JU/AE|^F @G BtOP(, i 8X0iX z@7`&Qu(t> kP3E@P o@W)(,87K~` Q@`~ 6 @|D0Ab@lNؔ ī?a>'g HC #8| ! Z/D (X5x@@~p =I<5.bb0m^?LP1zl2 G`€N H B D)@`?p`PЧ(긗YU^bI`E4YiR 1 m5^AW! ȁGPp3Ap6 `@~./@L./1'̑Ê00`A Y7s|(d Bz(- (pC" z x&>2k`/:B~}}^j p 9I` 5Xe(wz0bR~(O@8 802oF~`<Agar'P8@`(~D@w] kׁ8!tAcO#gz>pFj~⾅/A)^L^Г1m bF^?ЗFK xǀ5E/N <z`><p CsW@^Pp3_(9 3AOE T,?#?0D+03rm7H  〲aG] T7<)`^' @4Ap ̸<z  h|1B`8"1z0r3!8? @Á@8 >l'?ߒ "8p8TQL?4@sFH11C , V;V^@D@7  f.508Apg=fA8P7?C@6 3g&@q  b4! =Ѓ~!@/@π ?&j""\+!AfaנZ X~ @OT~p'FYI6`lפע@P?O\D F1/.cہ _3Bp5\Al5&؁Ȱ0~(_CQ6c >UEZ|]d  X#`/E ~ N (T3Z4}( zMA/A?g~ {nfZ`g?z y F(|K2Jl~W[И 1Ä?v( @?$H:w Р aH' @a/LP0rH6e1 r0>h_! Pa @8x -p1axX⁐0VScG`݄ @bA L21 V2<,FG@>;8@/DhB?l.eW @Z#=!xhD~+ lWb~+}(8@/Hvx8 ɀ'0a'/@>Jwπ  k@p[g ^izON D} p/@>"0 I@JX?|| q }ǿWĽB`f037 ~&nd\P 8[?@`1iwa@@`z8sdp<xxHsDG01k@ǁ &QDp AI\/ @' za ЁrNnbDi@E * j= 1@ @ qO` aah gF?/C  (5gz*l?_H0Y@  A&6OB +H ,-I~=0 ~ @? 8v` %7* (D@σᴕd(l`0@y:ˀ4 `-Zc"ÐD?8E0?#mAA(7Ă_xH,Bz' kp P05$3-=0ߚ| lRm m\2H< @1 Bv. ~H<yA%^  8v@p _8D @鮖  @`px `>B!y' |3`Na'ȟJT&L r fT yI~ H`  yxwvuts~*  WAVE_SHORT.SQ|;******************************************************* ;* ;* WAVE-INTRO by HAEGAR / THRUST ;* ;* startdate: 07/19/88 >ri ;* >datshortcr ;* enddate: 07/19/88 >crunch ;* ;* SUNSETGLOW 1988 THRUST ;* ;******************************************************* fontram = $6d000 copperram = $7eb00 pic = $7a000 picr = pic+1600 scrollfield = pic - 5000 scrollfieldend = scrollfield+4224 haus = $73000 trap: move.l #start,$80 trap #0 rts start: move.w #$2700,sr movem.l d0-d7/a0-] THRUSTINTRO2p<ZFEDCBA@?>=<QPONMLKJIHG\[ZYXWVUTSRgfedcba`_^]rqponmlkjih}|{zp ivumeterzq%?????`````@UW@UW@UW@UW@UW@ @ @ @ @ @UUW@UUW@UUW@UUW@UUW@@@@@@P?@P?@P?@P?@P?@ @ @ @ @ @Uv @Uv @Uv @Uv @Uv @  ?@  ?@  ?@  ?@  ?AP AP AP AP AP BG8     %$#"! 0/.-,+*)('&;:987654321h] garintro.s1q; This Intro was coded by Garfield/Thrust exept the ; soundtracker-playroutine,which was coded by Karsten Obarski ; all Graphics (Logo,Font,Vumeter) were designed by Knf/Thrust ; ; lade "bestfontiff" nach $60000 ; lade "inside" nach data ; lade "thrustlogo" nach $70000 ; lade "vumeter" nach $73700 ; nun mit wi von $40000 $7fff0 speichern ; bytekiller laden,intro laden,offset auf $800 ; beide Sprungadressen auf $40000 ; warten .............(ha ha) und absaven ; fH/+ PinsideqoEinside the byteelectronic&electronic2!electronic3n&newlaserO'electronic43psgchor@#depechebass1@rhodesx'panflute @pater i@prgdrum [@sd2 ,)x  H7~}|{zyxwvC>=<;:987654IHGFEDCBA@?TSRQPONMLKJ_^]\[ZYXWVUjihgfedcba`utsrqponmlkH ̎X     ('&%$#"! 3210/.-,+*)Ș r bestfontiff)qgxFORMȐILBMBMHD@ CMAP`P0`@pP @00P@@`@@pP`pp`p @p@@@PPP```pppBODYUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU"ZH7 u thrustlogoY#.p7`O?!;;@  THRUSTINTRO3p"N.? zSPLITTER-INTRO.S$d(********************************************************** * CODED BY: BLITTER SPLITTER * * * MUZAK BY: LORD PERFORMER * SPLITTER INTRO * * GRAPHIX BY: MING AND CAT * * * THANX FOR HELP TO: GARFIELD OF BFBS AND LORD PERFORMER * THANK TO HAEGAR FOR DEBUGGING THE LITTLE FAULTS * EDIT TEXT ... A ... RI 'SPLIDAT' 'DAT' * WI NAME 'DAT' 'DATEND' ********************************************************** org $6d000 load $6d000 prog = $6d000 font = prog - 36870 bild = font - 40992 datHfUGFEDCBWVUTSRQPONMba`_^]\[ZYXmlkjihgfedcxwvutsrqpon~}|{zyB SPLIDATe$  x Jܪ%:Ķ3JRG2̶>MN< ϸ:JH4Ŵ5MP<ɳ /FH:տ-?;%'41*0# &40'& %          HE  +*)('&%$#"!6543210/.-,A@?>=<;:987LKJIHHAutsr~}a _UTILITYp~Tyxw  decruncher.Swn[; decruncher read = $34028 ; set end addr of your crunched file ; current adress is the one of an hires page called PAGE.CR ; if you want to test the decruncher use showmem at $30000 ; load PAGE.CR at $30000 (command RI),assemble then ; type G S and watch in the memory lowwr = $30000 ; set destination address s: lea read,a0 lea lowwr,a1 move.l -(a0),a2 add.l a1,a2 move.l -(a0),d5 move.l -(a0),d0 eor.l d0,d5 notfinished: lsr.l #1,d0 bne.S notempty1 jsr getnextlwd noteT֘ihgv|{z z  Message.Sz`; Wie ldt man eine Bibiliothek ? execbase = 4 OpenLib = -408 CloseLib = -414 Open = -30 Close = -36 Write = -48 Read = -42 waitforch= -204 Start: move.l execbase,a6 ; Execadresse nach a6 lea dosname,a1 ; Adresse der Library nach a1 moveq #0,d0 ; Versionsnummer nach d0 jsr OpenLib(a6) ; Anspringen der LibraryOpenRoutine move.l d0,dosbase ; Adresse der DosLib aus d0 nach Label move.l #fenskjqp l  Disk.Spu.len = 393216 ; Musikspeicherlnge speed = 430 ; Geschwindigkeit execbase = 4 AllocMem = -30 -168 FreeMem = -30 -180 openlib = -30 -378 closelib = -30 -384 supervisor = -30 -0 open = -30 -0 close = -30 -6 write = -30 -18 timerlo = $bfd400 timerhi = $bfd500 inter = $bfdd00 control = $bfde00 base1 = $BFE001 base2 = $BFD000 dra2 = base2+$000 drb1 = base1+$100 ddra2 = base2+$200 ddrb1 = base1+$300 start: andi.b #$40,$bfe001 bnW 7 setpref.S openlib = -30 -378 closelib = -30 -384 getprefs = -30 -102 setprefs = -30 -294 start: move.l 4,a6 lea intname,a1 jsr openlib(a6) move.l d0,intbase move.l d0,a6 lea $40000,a0 move.l #$0078,d0 jsr getprefs(a6) move.w #$005a,$4006e move.w #$0fff,$40070 lea $40000,a0 move.l #$0078,d0 clr.l d1 jsr setprefs(a6) move.l 4,a6 lea intbase,a1 jsr closelib(a6) rts align 4 intname: dc.b 'intuition.library',0 align 4 intbase: dc.l $0 01,inter beq.S schHQonml dir.Sl;Ylock = -30 -54 examine = -30 -72 exnext = -30 -78 ioerr = -30 -102 write = -30 -18 output = -30 -30 openlib = -30 -378 closelib = -30 -384 start: tst.l d0 beq df0 ; Only df0: lea name,a1 zloop: move.b (a0)+,(a1)+ subq.w #$01,d0 bne zloop move.b #$00,-(a1) clr.l d0 bra directory df0: move.l #$6466303a,name directory: move.l 4,a6 lea dosname,a1 jsr openlib(a6) move.l d0,dosbase move.l d0,a6 jsr output(a6) move.l d0,conhandle cmp.w #$m8_^]\ lcopy.s\>Execbase=4 Open= -30 -0 Close= -30 -6 Read= -30 -12 Write= -30 -18 Openlibrary= -30 -378 Closelibrary= -30 -384 move.l Execbase,a6 lea.l dosname,a1 jsr openlibrary(a6) move.l d0,dosbase move.l dosbase,a6 move.l #name,d1 move.l #1005,d2 jsr open(a6) beq ende move.l d0,conbase init: move.l dosbase,a6 move.l conbase,d1 move.l #prompt1,d2 move.l #20,d3 jsr write(a6) move.l dosbase,a6 move.l conbase,d1 move.l #text1,d2 move.l #60,d3 jsr read(a6) move.l d0,lent1 m{Kdcb  decruncher2.Sbmݛ; decruncher read = $4098c ; set end addr of your crunched file ; current adress is the one of an hires page called PAGE.CR ; if you want to test the decruncher use showmem at $30000 ; load PAGE.CR at $30000 (command RI),assemble then ; type G S and watch in the memory lowwr = $51000 ; set destination address s: lea endofdata,a0 lea lowwr,a1 move.l -(a0),a2 add.l a1,a2 move.l -(a0),d5 move.l -(a0),d0 eor.l d0,d5 notfinished: lsr.l #1,d0 bne.S notempty1 jsr getnextlwdďR-|e_ Avail.Se#; ; AvailMem Proggy. ; beg: moveq #0,d1 move.l 4.w,a6 jsr -216(a6) move.l d0,d7 lea Workie,a0 lea 10(a0),a0 moveq #8,d5 loop: divu #10,d0 move.l d0,d1 swap d0 clr.w d0 swap d0 swap d1 and.b #$f,d1 add.b #'0',d1 move.b d1,-(a0) dbf d5,loop moveq #0,d0 lea DosLib,a1 jsr -552(a6) ; OpenLibrary move.l d0,a6 jsr -60(a6) move.l d0,d6 ; Output handle move.l d0,d1 move.l #Msg,d2 move.l #em-msg,d3 jsr -48(a6) ; Write it to screen move.l a6,a1 move.l 4.w,a6 jsr -414(a6) ; Close[ZYXWVUTSRQa`f tastatur.sf}jBitPlane1=$50000 ;Adresse Bitplane 1 BitPlane2=$52000 ;Adresse Bitplane 2 BitPlane3=$54000 ;Adresse Bitplane 3 BitPlane4=$56000 ;Adresse Bitplane 4 BitPlane5=$58000 ;Adresse BItplane 5 Exec=4 ;Basisadresse Execbase Permit=-138 ;Stop Multitasking Open= -30 Close= -30 -6 Read= -30 -12 text= -30 -30 Forbid=-132 ;Start Multitasking OpenLibrary=-408 CloseLibrary=-414 InitRastPort=-198 InitBitMap=-390 SetRast= -30 -204 Move= -30 -210 Draw= -30 -216 RectFill= -30 -276 ScrollRaster= -30`a G & gadgets.s$xj: OpenLib = -408 ExecBase = 4 CloseLib = -414 OpenScreen = -198 CloseScreen = - 66 OpenWindow = -204 CloseWindow = - 72 GetMsg = -372 PrintIText = -216 mty: move.l ExecBase,a6 lea IntName,a1 jsr OpenLib(a6) move.l d0,intbase move.l ExecBase,a6 lea gfxname,a1 jsr OpenLib(a6) move.l d0,gfxbase move.l intbase,a6 lea screen_defs,a0 jsr OpenScreen(a6) move.l d0,screenhd move.l intbase,a6 lea window_defs,a0 jsr OpenWindow(a6) move.l d0,win dowhd move.l intbase,a6 move.l windowhd,a0 move.l 50(a0),a0 lea txt,a1 move.l #0,d0 move.l #0,d1 jsr PrintIText(a6) loop: clr.l d0 move.w xpos,d0 divs #$1000,d0 move.w d0,b clr.l d0 move.w xpos2,d0 divs #$1000,d0 move.w d0,b+2 clr.l d0 move.w xpos3,d0 divs #$1000,d0 move.w d0,b+4 move.l gfxbase,a6 move.l screenhd,a0 adda.l #$2c,a0 clr.l d0 clr.l d1 clr.l d2 clr$.l d3 move.w b,d1 move.w b+2,d2 move.w b+4,d3 jsr -288(a6) move.l windowhd,a0 move.l 86(a0),a0 move.l ExecBase,a6 jsr GetMsg(a6) tst.l d0 beq loop move.l intbase,a6 move.l windowhd,a0 jsr CloseWindow(a6) move.l intbase,a6 move.l screenhd,a0 jsr CloseScreen(a6) move.l ExecBase,a6 move.l intbase,a1 jsr CloseLib(a6) move.l ExecBase,a6 move.l gfxbase,a1 jsr CloseLib(a6) rts even gfxname: dc.b "grap+Ehics.library",0 even IntName: dc.b "intuition.library",0 even intbase: dc.l 0 windowhd: dc.l 0 gfxbase: dc.l 0 even txt: dc.b 2 dc.b 0 dc.b 0 even dc.w 15 dc.w 15 dc.l 0 dc.l tx dc.l txt2 even tx: dc.b "Background R",0 even txt2: dc.b 2 dc.b 0 dc.b 0 even dc.w 15 dc.w 35 dc.l 0 dc.l tx2 dc.l txt3 tx2: dc.b " G",0 even txt3: dc.b 2 dc.b 0 dc.b 0 even dc.w 15 dc.w 55 dc.l 0 dc.l tx3 dc.l 0 tx3: dc.b " B",0 even screen_defs: x_pos: dc.w 0 yZg_pos: dc.w 0 width: dc.w 640 heigth: dc.w 256 depth: dc.w 2 detail_pen: dc.b 0 block_pen: dc.b 1 view_modes: dc.w $8002 screen_type: dc.w 15 font: dc.l 0 title: dc.l tit gadgets: dc.l 0 bitmap: dc.l 0 tit: dc.b "Marty-Screen 3-8-87",0 even window_defs: dc.w 10 dc.w 20 dc.w 280 dc.w 120 dc.b 1 dc.b 3 dc.l $200 dc.l $100f dc.l gadget dc.l 0 dc.l wdn screenhd: dc.l 0 dc.l 0 dc.w 150 dc.w 90 dc.w 320 dc.w 200 dc.w 15 wdn: dc.b "Marty-Υwindow 3-8-87",0 even gadget: dc.l gadget2 dc.w 150,15 dc.w 100,10 dc.w 4 dc.w 2 dc.w 3 dc.l mover dc.l 0 dc.l 0 dc.l 0 dc.l pi dc.w 3 dc.l 0 mover: dc.w 0,0 dc.w 16,7 dc.w 1 dc.l buff dc.b 1,0 dc.l 0 buff: dc.w 4,0 pi: dc.w 3 xpos: dc.w 0 ypos: dc.w 0 dc.w $ffff/16 dc.w 0 dc.w 0 dc.w 0 dc.w 0 dc.w 0 dc.w 0 dc.w 0 gadget2: dc.l gadget3 dc.w 150,35 dc.w 100,10 dc.w 4 dc.w 2 dc.w 3 dc.l mover2 dc.l 0 dc.l 0 dc.l 0 dc.l pi2 dc.w 3 dc.l 0 mover2: dc.w 0,0 dc.w 16,7 dc.w 1 dlc.l buff2 dc.b 1,0 dc.l 0 buff2: dc.w 4,0 pi2: dc.w 3 xpos2: dc.w 0 ypos2: dc.w 0 dc.w $ffff/16 dc.w 0 dc.w 0 dc.w 0 dc.w 0 dc.w 0 dc.w 0 dc.w 0 gadget3: dc.l 0 dc.w 150,55 dc.w 100,10 dc.w 4 dc.w 2 dc.w 3 dc.l mover3 dc.l 0 dc.l 0 dc.l 0 dc.l pi3 dc.w 3 dc.l 0 mover3: dc.w 0,0 dc.w 16,7 dc.w 1 dc.l buff3 dc.b 1,0 dc.l 0 buff3: dc.w 4,0 pi3: dc.w 3 xpos3: dc.w 0 ypos3: dc.w 0 dc.w $ffff/16 dc.w 0 dc.w 0 dc.w 0 dc.w 0 dc.w 0 dc.w 0 dc.w 0 b: blk.w 3,0 wdn: dc.b "Marty-Ј }<;PONMLKJIHGF gc.sFآ2BitPlane1=$50000 ;Adresse Bitplane 1 BitPlane2=$52000 ;Adresse Bitplane 2 BitPlane3=$54000 ;Adresse Bitplane 3 BitPlane4=$56000 ;Adresse Bitplane 4 BitPlane5=$58000 ;Adresse BItplane 5 Exec=4 ;Basisadresse Execbase Permit=-138 ;Stop Multitasking Open= -30 Close= -30 -6 Read= -30 -12 Forbid=-132 ;Start Multitasking OpenLibrary=-408 CloseLibrary=-414 InitRastPort=-198 InitBitMap=-390 SetRast= -30 -204 Move= -30 -210 Draw= -30 -216 Text= -30 -30 RectFill= -30 -276 ScrollRaster= -30YW txtpH}   $#"! /.-,+*)('&%:9876543210EDCBA@?>=-  Analyzer.SyQ ; Analyzer ;von Hadmut Danisch ;68oooer 3/1988 ;Markt&Technik Haar ; ; freqband= 2 ; ;Diese Konstante bestimmt die Abtastfrequenz und ist somit bestimmend ;fr den Analysebereich der FFT. freqband kann auf vier Werte gesetzt ;werden, die Abtastraten sind folgender Tabelle zu entnehmen, wobei die ;jeweils hchste Frequenz, die durch die FFT bestimmt werden kann, der ;Hlfte der Abtastfrequenz entspricht. Warnung: Jeder Frequenzanteil, ;der ber der halben Abtastfrequenz liegգM t, erzeugt falsche Analysen; ;whlt man also eine niedrige Abtastfrequenz, empfiehlt es sich, ;einen Tiefpass vor den Digitizer zu schalten. ; ;freq- ;band | Alte Sch. | Neue Sch. ;-----+-----------+---------- ; 1 | 40 kHz | 50 kHz ; 2 | 40 kHz | 40 kHz ; 3 | 30 kHz | 30 kHz ; 4 | 20 kHz | 20 kHz ; partyfreq= 3 ; ;Diese Konstante kann ebenfalls vier Werte annehmen (1 bis 4);sie gibt an, ;welcher Teil des durch freqband bestimmten Frequenzbereichs zur ;Farbbere@chnung im Partymodus herangezogen wird. 1 ist der hchste ;Frequenzanteil, 4 der niedrigste, allerdings gilt obige Warnung vor zu ;hohen Frequenzen ganz besonders, auch wenn es in dieser Anzeigeart ;nicht so auffllt. breit= 320 ;Breite des IFF-Bildes hoch= 256 ;Lnge des IFF-Bildes ; ;Wichtig: Wer kein Grafikprogramm hat, das das PAL-Format mit ;256 Punkten schluckt, kann den Wert "hoch" auf 400 setzen und so ;das Bild im Interlaceformat abspeichern;dabei wird aber der zustzlicheקn}t ;Streifen am unteren Bildrand mit Datenschrott aufgefllt, mu also ;spter noch gelscht werden! ; Sync= 500 ;Lnge der Synchronisationsschleife inleng= 80 ;Lnge des Eingabepuffers digitn= 256 ;Anzahl der Werte digitbits= 8 ;2er-Logarithmus von digitn partyn= 64 partybits= 6 ;Es folgen die beiden Makros, die fr die Verzgerung in den Abfrage- ;schleifen zustndig sind. Bitte keine nop's lschen oder irgendetwas ;hinzufgen, dies wrde alles durcheinanderbringen. WAIO T1: MACRO IF freqband > 2 ;abhngig von freqband werden unterschiedlich viele nop-Befehle eingefgt. nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop ENDIF IF freqband > 3 nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop ENDIF nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop ENDM WAIT2: MACRO IF freqband > 1 nop u nop nop nop nop nop nop nop ENDIF IF freqband > 2 nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop ENDIF IF freqband > 3 nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop ENDIF nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop ENDM ;Es folgen die verwendeten Hardwareadressen: CIAA= $BFE001 CIAB= $BFID000 PARPORT= CIAA+$100 PARDIR= CIAA+$300 BUTDIR= CIAA+$200 CTRLDIR= CIAB+$200 COPROC= $DFF000 POTGOR= COPROC+$16 DMACON= COPROC+$96 VPOSR= COPROC+$4 DMACONR= 2 COP1LC= COPROC+$80 COPJMP1= COPROC+$88 BLTAMOD= 100 ;Ab jetzt relativ zu COPROC BLTBMOD= 98 BLTCMOD= 96 BLTAFWM= 68 BLTADAT= 116 BLTBDAT= 114 BLTCON0= 64 BLTSIZE= 88 BLTAPTL= 82 BLTCPTH= 72 BLTDPTH= 84 onsprite= $8020 ;Flagbefehle offsprite= $0020 ;Es folgen die Offsetwerte der verwendeten Li۳braryfunktionen OpenLibrary= -552 ;Exec CloseLibrary= -414 Enable= -126 Disable= -120 Permit= -138 Forbid= -132 AllocMem= -198 FreeMem= -210 Delay= -198 ;Dos Close= -36 Open= -30 Read= -42 Write= -48 Input= -54 Output= -60 IoErr= -132 OpenScreen= -198 ;Intuition CloseScreen= -66 ScreenToFront= -252 ScreenToBack= -246 ViewAddress= -294 Move=  8\E -240 ;GraphicsBase Draw= -246 SetAPen= -342 SetRast= -234 Text= -60 LoadRGB4= -192 OpenFont= -72 CloseFont= -78 SetFont= -66 ; ;Es folgt das eigentliche Hauptprogramm code start: move.l sp,SaveSP ;SP retten bsr init ;Initialisierung allgemein move.l #liste1,a6 ;mit Signaldarstellung anfangen move.l 4(a6),a4 ;Initialisierung speziell jsr (a4) mainloop: ;Hauptschleife lea 10(a6),a5 ;Prozedurliste ` move.w 8(a6),d7 ;Prozeduranzahl callloop: move.l (a5)+,a4 jsr (a4) dbf d7,callloop bsr keytest ;Maustasten abfragen cmpi.b #1,d0 beq links ;linke Taste cmpi.b #2,d0 beq rechts ;rechte Taste bra.s mainloop ;Bei Druck der rechten Taste wird auf die nchste Betriebsart weitergeschaltet rechts: bsr keytest ;warten bis wieder tst.b d0 ;losgelassen bne.s rechts move.l (a6),a6 ;Liste durch nchste ersetzen move.l 4(a6),a4 jsr (a4) ;I =qnitialisierung speziell bra mainloop ;Bei Druck der linken Tast wird die Anzeige gestoppt bzw. gestartet links: bsr keytest ;warten bis wieder tst.b d0 ;losgelassen bne.s links linkswait: ;auf nchste Taste warten bsr keytest tst.b d0 beq.s linkswait ;keine Taste gedrckt cmpi.b #2,d0 beq.s linksrechts ;rechte Taste whrend Stopzustand moveq #0,d4 links2: addq.l #1,d4 cmpi.l #70000,d4 bge.s linkslong bsr keytest ;linke Taste, warten bisnF} PBIGBOOTp"5  ? = BigBoot.S ************************************************* ******************** BigBoot ******************** ************** von Michael Gckel *************** ********* Markt&Technik 68oooer 1987 *********** ************************************************* ExecBase: EQU 4 AllocSignal: EQU -$14a FindTask: EQU -$126 FreeSignal: EQU -$150 AllocMem: EQU -$C6 FreeMem: EQU -$D2 AddPort: EQU -$162 RemPort: EQU -$168 OpenDevice: EQU -$1bc CloseDevice: EQU -$1c2 DoIO: EQU -$1c8 WaitIO: EQU -$1d8@Q Header.S,********** BigBoot-Header ********* ***** Fgen Sie Ihr Programm ****** ** am Schlu dieses Listings ein ** **+**** von Michael Gckel ******** ExecBase: EQU 4 FindResident: EQU -$60 DoIO: EQU -$1C8 Location: EQU $50000 ; feste Adresse ; fr Code org Location load Location DC.B "DOS",0 ; DOS Kennzeichen DC.L $0 ; Checksumme DC.L $370 ; DOS Extension (Rootblock) start: move.w #$8100,$DFF096 ; BPLDMA an move.l #Location,a2 ; Location lea.l BlockLong(PC),a3; nur kurz ben^f= lMAKELISTp˥G > makelist3.Syjmp w l: move.l #$ef,d0 move.l #$70000,a0 move.l #$00010000,(a0)+ move.l #$01800000,(a0)+ move.l #$0fe3fffe,a1 move.l #$01800000,a2 move.l #$1091fffe,a3 move.l #$01800303,a4 ; move.l a4,$7f000 ; move.b $4ef1,d1 ; bset #1,d1 ; move.b d1,$7f003 ;move.l $7f000,a4 l1: move.l a1,(a0)+ move.l a2,(a0)+ move.l a3,(a0)+ move.l a4,(a0)+ add.l #$1000000,a1 add.l #$f,a2 add.l #$1000000,a3 add.l #$c,a4 dbf d0,l1  i makelist.Sy'move.w #$0120,$dff096 lea $70000,a0 move.l a0,$dff080 move.b #$00,$dff088 l: move.b $4ef1,d1 move.b $4ef0,d2 bset #0,d1 move.l #$128,d0 move.l #$70000,a0 move.l #$00010000,(a0)+ move.l #$01800000,(a0)+ move.l #$1011fffe,a1 move.l #$01800000,a2 move.l #$1091fffe,a3 move.l #$01800303,a4 move.l a3,$7f000 move.b d1,$7f001 move.l $7f000,a3 move.l a4,$7f000 move.b d2,$7f003 move.l $7f000,a4 move.l a2,$7f000 move.6  makelist2.S=;jmp w l move.l #$ef,d0 move.l #$70000,a0 move.l #$00010000,(a0)+ move.l #$01800000,(a0)+ move.l #$0fe3fffe,a1 move.l #$01800000,a2 move.l #$10fffffe,a3 move.l #$01800303,a4 move.l a3,d1 move.b $4ef1,d1 move.l d1,a3 l1: move.l a1,(a0)+ move.l a2,(a0)+ move.l a3,(a0)+ move.l a4,(a0)+ add.l #$1000000,a1 add.l #$f,a2 add.l #$1000000,a3 add.l #$c,a4 dbf d0,l1 move.l #$fffffffe,(a0)+ ;rts w: lea $dff놯000,a0 move.w #$0120,$096(a0) lea $70000,a1 move.l a1,$080(a0) move.b #$00,$088(a0) lm: btst #6,$bfe001 bne l e: move.l #$000022f8,$080(a0) move.w #$8120,$096(a0) move.b #$00,$088(a0) rts cl: dc.w $0001,$0000,$0180,$0000 dc.w $2091,$fffe,$0180,$0000,$20e3,$fffe,$0180,$0000 dc.w $2191,$fffe,$0180,$0111,$21e3,$fffe,$0180,$0101 dc.w $2291,$fffe,$0180,$0222,$22e3,$fffe,$0180,$0202 dc.w $2391,$fffe,$0180,$0333,$23e3,$fffe,$0180,$0303 dc.w $2491,$fffe,$0180 ,$0444,$24e3,$fffe,$0180,$0404 dc.w $2591,$fffe,$0180,$0555,$25e3,$fffe,$0180,$0505 dc.w $2691,$fffe,$0180,$0666,$26e3,$fffe,$0180,$0606 dc.w $2791,$fffe,$0180,$0777,$27e3,$fffe,$0180,$0707 dc.w $2891,$fffe,$0180,$0888,$28e3,$fffe,$0180,$0808 dc.w $2991,$fffe,$0180,$0999,$29e3,$fffe,$0180,$0909 dc.w $2a91,$fffe,$0180,$0aaa,$2ae3,$fffe,$0180,$0a0a dc.w $2b91,$fffe,$0180,$0bbb,$2be3,$fffe,$0180,$0b0b dc.w $2c91,$fffe,$0180,$0ccc,$2ce3,$fffe,$0180,$0c0c dc.w $2d91,$fffe,$0180,$0ddd,$2deK>3,$fffe,$0180,$0d0d dc.w $2e91,$fffe,$0180,$0eee,$2ee3,$fffe,$0180,$0e0e dc.w $2f91,$fffe,$0180,$0fff,$2fe3,$fffe,$0180,$0f0f dc.w $3091,$fffe,$0180,$00f0,$30e3,$fffe,$0180,$0f00 dc.w $3191,$fffe,$0180,$00f1,$31e3,$fffe,$0180,$0f10 dc.w $ffff,$fffe dc.w $2091,$fffe,$0180,$0000,$20e3,$fffe,$0180,$0000 dc.w $2191,$fffe,$0180,$0111,$21e3,$fffe,$0180,$0101 dc.w $2291,$fffe,$0180,$0222,$22e3,$fffe,$0180,$0202 dc.w $2391,$fffe,$0180,$0333,$23e3,$fffe,$0180,$0303 dc.w $2491,$fffe,$0180eE g makefilesin.SSmove.w #$0120,$dff096 lea $70000,a0 move.l a0,$dff080 move.b #$00,$dff088 l: move.l #$128,d0 move.l #$70000,a0 move.l #$00010000,(a0)+ move.l #$01800000,(a0)+ move.l #$1011fffe,a1 move.l #$01800000,a2 move.l #$1091fffe,a3 move.l #$01800303,a4 move.l a3,$7f000 move.b d1,$7f001 move.l $7f000,a3 move.l a4,$7f000 move.b d2,$7f003 move.l $7f000,a4 move.l a2,$7f000 move.b d2,$7f003 move.l $7f000,a2 l1: move.l a1,(a0)+ ٫  makelist4.S^V=move.w #$0120,$dff096 lea $70000,a0 move.l a0,$dff080 move.b #$00,$dff088 l: move.l #$ef,d0 move.l #$70000,a0 move.l #$00010000,(a0)+ move.l #$01800000,(a0)+ move.l #$0fe3fffe,a1 move.l #$01800000,a2 move.l #$1091fffe,a3 move.l #$01800303,a4 ; move.l a4,$7f000 ; move.b $4ef1,d1 ; bset #1,d1 ; move.b d1,$7f003 ;move.l $7f000,a4 l1: move.l a1,(a0)+ move.l a2,(a0)+ move.l a3,(a0)+ move.l a4,(a0)+ add.l #$1000000,a1 c  makelist1.S͠jmove.w #$0120,$dff096 lea $70000,a0 move.l a0,$dff080 move.b #$00,$dff088 l: move.b $4ef1,d1 move.b $4ef0,d2 bset #0,d1 move.l #$120,d0 move.l #$70000,a0 move.l #$00010000,(a0)+ move.l #$01800000,(a0)+ move.l #$1001fffe,a1 move.l #$01800000,a2 move.l #$1091fffe,a3 move.l #$01800303,a4 move.l a3,$7f000 move.b d1,$7f001 move.l $7f000,a3 move.l a4,$7f000 move.b d2,$7f003 move.l $7f000,a4 l1: move.l a1,(a0)+ move.lSiK SEARCHERpHY J searcher.SOnf;OO: ;CLR.L D0 ;MOVE.B $BFEC01,D0 ;BTST #10,$DFF016 ;BNE OO ;RTS o: EXECBASE = 4 KEYBOARD = $BFEC01 ; --------- EXEC ---------- FORBID = -132 PERMIT = -138 ALLOCRASTER = -492 FREERASTER = -498 GETMSG = -372 REPLYMSG = -378 WAITPORT = -384 ; ---------- GRAPHICS ------------ RECFILL = -306 DRAW = -246 MOVE = -240 TEXT = -60 SETA 5i  Read_Searcher ~kHallo Martin ! Sende Dir die Source Code Disk. Kurze Anleitung fuer den Searcher : + BitPlanes einstellen 1-5 + - BitPlanes einstellen 1-5 - 1 2 3 } BitPlanes einzeln zuschalten bzw. abschalten 4 5 6 Verknuepfung der BitPlanes fuer Ham oder Halfbrite ein -> aus; aus -> ein 7 Alle BitPlanes auf gleiche Adresse setzen R Alt Rechte Alt Taste -> eine Speicher Seite vor L Alt Linke Alt Taste -> eine Speicher Seite zurueck F 10 Ende F 2 Hoehe = 200 F 3 HoeN  | POSTERPRINTp݌%cba`_tsrqponmlkj~}|{zyxwvu8 2 PosterPrint.S<7;============================================== ; IFF-ILBM-LADER / POSTERPRINT ; 68oooer 3/1988 Markt&Technik Verlag AG ; ; von Rolf Wagner und Volker Raum ; Mit Dank an S. Angerer, P. Jakobi, A. Hommel ;============================================== ; ; ; offsets intutition ; OpenIntuition = -30 - 0 Intuition = -30 - 6 CloseScreen = -30 - 36 OpenScreen = -30 - 168 PrintIText YC vRESETp 8WVUTihgfedC Reset.Sd$)ʖ; Markt & Technik 68oooer 1988 ; Programm: Reset ; Autor: Rene Trost ; Computertyp: Amiga 500 - 1000 - 2000 movem.l a0-a6/d0-d7,-(a7) move.l #Main,a0 ; Move Mainprg into buffer move.l #$7f000,a1 move.w #Main_End-Main,d0 Setup: move.b (a0)+,(a1)+ dbf d0,Setup jsr $7f000 ; Set new reset vector movem.l (a7)+,a0-a6/d0-d7 rts ; Back to system Main: dc.l $2C790000,$00042D7C,$0007F028,$002A7200 dc.l $41EE0022,$7012D258,$51C8FFFC,$4641D1FC dc.l $0000000A,$30814E75,$4 cp5B210/.-,+*)(=<;:9876543HGFEDCBA@?>SRQPONMLKJI^\[ZYXc txedX_*  'I<TB.#*$$H,y#C &pN#fpd`N(@#2p)@JgL  JCSo,  o -fSo ffBy <`  _BC IaJ`A\NA\N#.C pN#hgC pN#dfpe`NU&N,yhEp"JN:2*<30*:3 AfAf,K <rN:(#"g,yhA+Htp"<tNz+D"Jpr2)>NA"Hpr@RAQ"JpNA"HpRl"JpaNK#& Mp"DrQ@     ! '&%$#"y Qseka"jj/Br,xN#v(@ _JgByBya`A\,xNA\N#rA*a(Jrg,yN|"z NpNu#m3DXe4B adacpa\AdBGaSAhaQXrA2 Ag. Cfr/Ahaf#mn",xN:Jg`.Agaf/Ah]af#mn"_,xN4Jg#mrѹmn @#ma.###aaC0F #7F.zl*BBBf#WNT#GXBy\#B^acpaaJyXg a9ByX.zkB9@AdBy؋ 0 nofastxp,HA ,y..&gL$G"k,gD"A )ga(f ) eJ`,-i&-i""`$A`&@,/",]+Nd"N,yNbad &]Nu"N,yNbLwaJ&zNuvHC,ypN"@AbE0$6#H6NbLNuHA: conv%} @ ,y"|N(@Jg a:BNuA\NA\N#Ra,yN|"yRNNu,yCy <!N fNu#CNh#CNh#A@,yN:##,#(# <PB,yN:# @B <PN:# <BN:#4 <"<N:#"@A. <12Q,y"yN:"yN: y!|,z y!|,,y"< <N:A,>< Q,y <"<$<A,Nza @ Hk   type`.OO(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F =<;:9876HGFKJI]apt ONMLa`_^]\[ZYXWlkjihgfۦ system-configurationpIzFT ,genericK BgenericSETsSEARCHERinfoTHRUSTBOOT1THRUSTBOOT2THRUSTINTRO1THRUSTINTRO2I9nSH"#=F pvJ" mH mmh@7?0 I  h A 44()l upujjDn$0*05 18 2 0 kQ? 000*fplp髫0lꫫ0}p}llHj$ 9}X kUЫ0*j<j8l\j$ 9}Xk0{x?0:AmigaDOS??jFHl\k0*0k0 mV6F0 +00*R!bU R 0^QQSH0!0!UHE0!RT80YRT8UUG|R 0cR R0i0hRNH^Z >8W(Q@+?;T UxWQ@(>8T"Ux=$E02=$&In i& Xi H&NInGNUA4A(X0UNA4A(DnInitial CLI?φ??00SXQ00?P,0? RAM003?00 #>O CON00C?00_ RAW?K00S?K 00o SER?K00c?K 00 PAR?K00s?K00 PRT dZ/Gc[ddLNNy@yTy`|t|<XP4Nn8C<XH|| |||}| dZOX X!$]iI^JJJEZJK G|Z 0mG^JJKKEJUE K(KKLKEVEEDE@BD|,FFH4GFHFODO,T|UUXV N>GLdV8VWXXGGaaGGbPc$c0ccdpde`gg gDgk8lnLw )YP<]zpVFGd|~FbJJ)YP<\TE@VxXG OGlGtZ|~G,G6^POH櫫|"%<]|L$TzG0M<(ۨ`ٜl¸ژPۀÈ00ptp 0Z40!A\ P6pP۴M4  Op}|liRMH0#&E9~40;Ox4NtXPQ??\DOS&Q@ c8/Gb_cD_@__0H[0 c80c2a쫫_DnX0 dG`\_ "#f 0 0`$0`4 DOS0?\?__`l0+`0/__`_ &$'4b& `40=0ELH^a,BNu0M__g_ :bP___ : ah0`FHW`\V6F0905]_aK2EPPO0y0 4@&@InKK2 fx&%(W;] Mv &`\_A4_@[FH@vLFaA4A(DnFile System&= .td&)Œ _@&H^n@vL::00]0{00o00S 000k SYS00_ 0%0{ LIBSpl0ef4eKfKfL0"_g@ 00'*._0 TAL DEMO BITS00 0&10GANDALF OF AXIS0 `\aHa0&1gpz(w wp 0ShgÈgKÈg^K0&1g_a40MgLgbP(Fr0#?lRestart 0K? FileHandler0j$0 `\aa?φ??C<jji  up/Gujutiiij<j80g N0,qOZdE0,&&&& A$B8ARAA8A4AA$AfAbAARAAAAAAB AAAB8ABBAB BLBH-Lx.(v@@:******** @ ` `   P p @.~E` ``   P p 5 8TlT8"(#"/Z,EpsonQ BNB(NB2N/ϽAN@N?N?N?N?N?N?`N?(N>N>N>HN>N>F=$ =`""=NxNzNnNbNTMFxzD"vFFHHG0H@~ H^GHGDP :  s taa`DGG~G"# #jn~G0"#f @~ H^GGGG~0TzGG0r T~//JvHJGGGHH;$L1oZa &@J8QH^JhG0 H^JG0B`@vLH^ tG0@vL:G0:0?]?l0?NNVNNNNtNNFNFpNFTNFFM EB"EBvMQHyI`>QHyF`4QHyF`*QHyH` QHyH`QHyI` QHyI`/MK /MK|Nu*_NuHHHHK2?ҦKpd`LL ,QQQ@fh X 00&p]`0(0  OJDF0trackdisk.deviceS@=@p`(p`"p#`pW`p/`p` p`p`p`p`p`pR`p`p`p`p`p`p`p`p`p`pq`pm`p`p`p`p`pB`pA`p`zp`tp]`np`hNq`^Nq`XNq`HNq`8K2F@0|">|JNN3ANA4A(n Nu0. S@=@ pNuH?>*"ELd(rp N L|NuK(LKEVEEDE@BD|,FFH4GLNNODO,T|y@yTy`|t|<XP4Nn8C<XH|| |||}| bPc0cOX$I^JJJEnLJK G|]0#smG^JJKKEJUE K(KKLKEVEEDE@BD|,FFH4GFHFODO,T|UUXV N>44{ GLdV8VWXXGGaaGGbPc$c0ccdpde`gg gDgk8lnLwN]zpVFGd|~=$bJJLp EB"VxXG OGlGtZ|~G,G6^POQHyH`QHyI` HI|]|L$TzNuHHGHQPQvQrQ(_(i X_@ X00/#QX<LL57>Q@QQ0@N00/00[j$ 0X*QDn0%N> 0200Q000 `0 00000[0:0[0!R0!000[00[0! 0T8QTPG6QT80#E00#F0CyTu0 0 50! 0[0T8G|TWj$0,QQTxj$01TxUG| R0RRG|0#RG|Tu~E0OT8`UbLG|T8Ux W0 UDvUX7 8 9 : ;ݲDw 4w4 4w45xxc c 4vxT<`=` xcP8BvL]x444B(b4BvH(HB8zH@: <[N*P RvHb8t5VBG8BHbBH=`pGBB=$:JG6j\BGYJp.>c(<6j9n:L(.c.;T zp]> =z>7m<)YRzj8.=$HB .=$HA${@)YR\qP7n:J=%@@)YR\q&&P7n:J@vL_<(&v>:J&7d7`)YR\qn d7L"#f N )YR !!7L!d! 7Ā)YR = x t7L , ` 77d7`7L"#f  @7L"#f )YR\q 5 ))YRlD N N >N>Рߚ 4N *N N *N N,N N N N N9N9N N N N N N N N |N TN hN JN,N,N,N,=$ *"PvNmNiHNM|NLNNPNhNlNk:&L0"vhJh~ =$8}X8&& :J7B>L99@@NN>NNNN9~$?+"DG0v"#"#f!$! :n , ` ;NjN>N2N&NNNNNNNNNNNNNtNfNRNFN2N,N&NNNNNNNNNNNNzNlN`NTNFN8N*NNNNNNNNNNNNnN\NNN@BN4N&NNNNNNNNNNNN|NpN^NXNLN=N=N=N=Fx9n=d" uz,@uuE)YR\qv9n9 v@>V>~PP+N&&&& >:J7>2=$PĀ)YR =?")YQE:)YQE:Ā)YQ?uzP(?Z  (7BBC CPCaCCaDD@DpDbrDEb 8 pDDDD  G?5"%5#$$z$Z$b &&&"&5"%5#$$z$\$d NM|NLNNPN] NNRN]9#L@$2"v\\L@&&&_@L@//6'>7>H6JB iNM|NLNNPNPNNRNP!dK$"FvPbPK88K ,Rx00 7a) DDAAA@;;NM|NLNNPNUNNRNU4" ,K$M"vTUK7700hKo| K"0",hQ#hK!dX$N:NNNNFNBNBNN#!d6"I2N N ##"l#G#X7GN ""#fZ#)YP< uvN5N5NFL5N5N5N5&"5"$z"50"H$$%"$%$%"$%$%"$%$%"$$z$v$$$$5"$v7$$$$5"$5#$$z$V$^%<%8%J%F5"%"5#$$z$X$`%%%% lKQtԉ#BJfrNx&)t:")pD(jN$)v0(RgH&)$)")pDI@N#A$)v0(Jg$)pDINJfrN#j`t")pDI NNNq$")p IN#A JfrN") #p$)v!(") B") t!") B"! $rNNq$")pIN#A JfrN") #p$)v(g") p I N%|lrN")$) ! (") t!") B"! $rNNq*#pX#pX#pX#pXJfr`J g")"0`"<#A B$Bl`")$) R#B(&) \$()#D,JnJfr` ")"0#A4Jf~J fXr{pHIN#A4JfrN ,l "),`"<#A8$)4B(")4t!Jf")!4 `")!4Rh#i4J g")"0`"<#A t#BR#A("),(o ")(`"),#A0J g.$)ԩ&)֩$"#CD&)0$)Dp@(jpN` ")ҩ$$)ԩ&)0p@(jpN")0ө$өөJ f$)&0(l &)S!(")$n^"!"!"!J f")$0l!")$NNq(#pH #pH @}#pH*) #pX BB `")$)԰RQ#B#p")f$)ԩQ#BJfթJo") $0թJlJl%|lrN") $0l%|lrNJf") JfrN") #p Jf%|lrN")$) ԰RQ#B$l#B #p`"!") $)P&!8"!")Nzډ#E|8܉#F4pdI`N#AXJfrN")pxI`N#A\JfrN&)4$)")XpxI$N#AX$)4pxINJfrN#j`d&)$) ")\pxI$N#A\JfrNt")dpxIN ˸Y#AhJfrN")pxI`NJf")hpxIhNrN")X\f($)")4px(j4NJf")hpxIhNrN$)4")XpxIN")d$*d!(")\$)d! (")\!d ")d!\")t0#Blr#Apln&$)ԁv0(t ԩdԁ(rҩp`")hpxIhNrNv։#Cp@I|N"$)p@I(NJfrN#j`")tfJ g%|lrN")tİJg%|lrNt")p@I N#A JfrN")$0S#jh4#B8$<")8NR$)4%Bh")vgSh")"0 p@(jHN") |$*d!(")p@(jxN") p@INrNNq$#p(vx(fF#C#p( "0( IN#Atԉ#BJfrNJg"") t0vPo%|lrN"&)$0")pHIhN#A$)pHINJfrN#j`8")8\f%|lrNJg*rҩ8tpH(jNrҩ8$") pH(jN``"tf&)8! 8`B"t"f4r#Ar%Ad``r#A`V")ҩt0G" <(j(N`.")ҩt0" <(j,NtHgvNg`R")t0l~Jdg0Jg(G" <(j$Nr%Ax <(jPNJg <IN`r%Ah <(jN#Atgdq,) <(jN <Ix#D t"N#A$) rNV#At") NJf ")`rҩҩ#A$)&)$GD" p$(j(N")S#Ar#AnDґtԁr0($GL" p,(j(NrҩtNJf r p,(jNrҩ`#ir#Anr #p,(jNrҩ`")S#Ar#An8ґtԁr0(#A t nvl`r.p0(jNrҩ`p$(jNN%X4: %X2tidyup J\g"*\p (jNp (jNJ`g"*`p (jNp (jN"*xp (jNNNq$TN & H **BREAK typelinJdg$*hG|" p(j(Np(jN"tgrp(jNJgr p(jNrtgFN"p(jNr gt gv fRhrN%I5 typehexBr ҉#A$<hԉ#Bd#Bd%AlBtv%Cpr#A|tnZ" <INJf&&)$)|") FNV^fr~&2<HR^hrx~"(.4<FNT\t $2<FLfpv    : @ J ` n t z   4 < L T d l     " * < F d h n r x |   0 : @ H N T b l r x ~    $ . 4 > B L V \ b h x ~ N $4@FV\pz V"8HXhn~ DJbv,6HTnt~ 6<PZ`fz $28>Fhnrx|6@FV^dnx|$6BHNT^ &,8BHT^dpz  *:D  &,6<BLRXbhnx~"JPVjrx&4@FRX^jpv *<BHTZflx~T(2DRd   4 @ R n ! !&!D!`!n!!!!!!"""*"<"X"x""""" kt#AO><X2A A bA0QNuA7QNu$Ad@0H@ @0H@@0 ANua a #%%`P,y$|-P"| yNNu,y$|`"| yNNu,y yNNu,y y"y <"<BBNNu,y"y <"<N"y <N"y <N"y <N"y |-j < N"y <NNua a,y"y <N"y <N,y yN fB yB0(ap#-j yB0(@ @d OofraN#-pa ` @ ( @ga aa NuBB0( 2("A ##a a Pa,y yN g# @ ( @ga yBB2(0(f gee49B Bb## 9R@ab#-j 9R@aJ#-pa`:a a aa Nu`3L`3L`a a a a A@,yN:##,#(#a # @#Va aa `0a f#''#&%#%6$`a ha   @ ( @@g a .` ( &g 'f a J`a `aa 6,y"<%$<Ng#0a,y"90$9)&<Na"9($9(j 9(333A,z,yNzA,za&fP,y09#@ @fa\,y&9$9,"90N09#L@ @fa*,y"90NaVB$B(az`,y"90$<^B89&<cCNa&Nua#'#&%#$$`aa @ ( @@g a` ( &g 'g at`ala`*a`a,y Ԟf|["<%$<N g"#$94N"9N y4 (|#B,yN: g#a,y"<%$<N#0"$9&9N"90N#aaD#,y 9"yN.JfaB$B(aa`*B y BMHDfxB 23ރHA Ag BAHARAHAHA333 Ab*//A,zBBB092949,yNzA,zav"  _ fB3@ B  CMAPg a`"AC^BBB  )BD2Q BODYg a` #>9GyJyg|*H,y89a yg,y89a ygf,y89a ygJ,y89a yg.,y89a yg,y89a~B:9<FF۹۹۹۹۹۹ Df*BBBB4929RA앹BNuB gSDc(](},y"y <N 9"9"yN 9"9"yN 9"9"yN 9"9"yN 9"9"yN Gt 9#హb2"y"9N 9"9"yN 9`Nu,yBBB02((#"<N:g."9AC,.< "ЁQBNu k2q?Y);D@)`HԻjT BAXOJqf3X+]IjX*,hdkY [o>v,ZT8c,pRc[}5@%9_qrk\_ĝDƗsgƋ&eHLf y+ZVP}h^+iD^`_j4wpfrSekkv͑[sd'AiGGm ntWi%(XIW(X fnwH#5Zt$Xcc1eLl[iv5Y,ttA)k;FZ%s]Al`,}: K38'>HDqv֩6mhZn/\ãXdt ؓlkbL8F0q&4A+WEagtжY=Xʎ{߈%UhbY)مt cLh ˤe;53@8d^3X9里g~c ~T  Ye uH@|]-$WcUH )ꚈfXXy TTV1q5ieu@k- xU#Q+ c[ g2٫ih){~̸^Psv FEtX;X i($)Ul "X,;Y]iYx6Z[e Aۧ:\f02[el$D98u#ڤ/2'J6&& &PD*a-h酨9aH&4vbF&Jq؈t>k2q?Y);D@)`HԻjT BAX:#.H#-"<%$<,yN g#0a ,y"90$<-&<N>9-SG$9a 9-gd$9a 9-gN$9a~ 9-g8$9ah 9-g"$9aR 9-g $9a< 9ѹѹѹѹѹѹQ\"90NNu/"90&9N.NuC-A^><0H@0@0HQNua3`aa.#$$`#)&%#&Z%a,y yN yN# @ ( @@gax#%%a`, ( )Rg )~g )ga@`3`Bya&a^,y"<&Z$<N g"#0a 9"93<,y"yBBN"yN y 9"9"yBB(<*9,9F Eb8B:9<,<N,y#,#,3<an09)2@ @f$#,#,3<a: 9m",y"9|0N#%%`Jyf,yB"90$<&<N"90$9&<N"90$9&<Nyf$<&<"90NNu,ya y0a."90$<-v&<N"90$<N&<N"90$<-|&<N y0a"90$<N&<N"90$<-{&<Nyf\a"90$<-{&<NNu"90$<-v&<NB@a\"90$<N&<N"90$<-|&<N"90$<N&<N"90$<-{&<NNu|d#V#afC^A$.<2Qaa a @ ( @g g a`0( @Yg* @Lg @Mg @Og: @NgRa`FyJygaHa`aa`~aJ$gQ$a a`^aB"9$09AH@bP$aa`0af09"9(@bP(aa`a8J(gQ(aa` y 0( @g @g4 @g @`g @`g @ g @@gp @@g @!g @!g @!g @g @ g @ g~ @g a`Xaa`L#0eŌ$L#*$`#*$Xa,y yN yN# a@ax#%$X#$LNua"#*B%#$$`a.,y yN yN# @ ( @@g a` ( *Bg *ng *gta`a#*B%#%$`a,y yN yN# @ ( @@ga\a` ( *Bg *ng *ga.`a&a^a 3a`a aBaA,za`## ####0B6#@2(3-3-B(-7?ĥ߾ߑ୛קвЮຎ߰߾߻߿ྜຎྌ߷߷߿௎੗ྌ߻߿ߟߗଧ߬ҳ߭߷߰ߵߗ๿8_߱྾Ӳ಻߿߱߉eϷĺeϷdߩ߷ാ߾๎པ߫ߜғєєќқҌш༑ໟߪߑ๗߱ߓਟ߷ߓߎ਑9߭ଇ߱߻ߑୟ໛ҙߜ๑ߓߟ߭߉߱߭ߏྜ߳ཇд๗ߚߴߩѽఞߴ߱ߺଐ෻୛ߗ߭͌߮ߋଛ߬ߑ߾ߌ:wxNV߾ҾߨҫѹӯӼӫоӨӪӳӬӭӭӵӸ߼Ҽӭߺ߶ߺಟߧҮଛߚ߮߉௬௬JV~  &.2< h>DJZh06~6BL;TB   , F   , h P Z p : \ @XDN^~"(:BT^%.N789t:h:;;2=(=>>:>@>P>V>p>>ABBCC ChDFR RLSSStSSSSSSTTTUU>UJUVUpUtUVpVW,WBWZW~WXHXNX<DOXYYYZ ZFZTZ~ZZZ[0[D[z[[[\,\\\\^^^^__@`ajapaaaaaabbbd d(d:d@dFdLdXd`dhdtd~dddde"e, $*8>DVdjpvz((8Jt~"  z "(DJ=V"0R(.Zj <&JPV\t06H"j"&,Jntz TZpv*Vh(0>N!~!"".""##&#0#N#T#Z#d#t#z#########$$4$<$B$h$~$>%*%2%D%\%%%& &2&>&R&X&j&|&&&&&&&''''&'4':'D'J'\'b'f'|'''''''''''''((((*(<(R(j(~((((()))8)\)r)))))))****@**++T+f+t+++,$,z,,,--&-:-F-T-h-----...&.@.T.Z....//h/////////0N?\001 33444666666777787V7p77778880888889 999$909D9J9T9^9d9j9::D:V:`:z:::;;&;H;V;d;;;;;<<<8<<<<<=|=====>$>*>0>F>\>d>|>>>>>>? ?*?0?H?b?h?n?z??@@A^ABBB$BHBNBTB\BnBtBBBBBBBBBB@gBC CC*C0C8CBCHCVC\CbCrCCCCCDD,D:DnDDEZEEEFFG,G6G\GpGGGHHHR8S6SFS~SSTUUUUUVVV0V6VBVPVZVdVVVVW<WZ@ZN\H\\\^^^^^__ _&_6_H_X_^_n_______`~````aaaabbbbcc ccc cccccc/0NL>JPg0A0< XiQLNuHAJPf0`f@Ha,yN @C""!|C@pN,@C{" $<Ng"N`Fag@a" $<Nf5"J*< 0KP, KRUa~SU"zb#zb"N,yNbCpN"@#z6Nba aaLNC" $<Ng&I8$ &<(BQ"(Ng*"NNu" $<Ng"(&$N`AC$IJg2  fRH`Jg$  gSH ;g "g  g  g`BNuJg  f`RH "g`NuHK UdLNum,z5L\`H@aH@?Ha0a0 9o`a yYe(g v C`"HaLpat?B@ab0NuM2*N(Na f69b ga g g gH g6`a gJ g8 g `gd e\ NRRafgpaS`gt NR`gh NS<ag @a`p aS`,LBahNuA a`.R9m9mgAc`AaNuJyl@gA aByl@Nuga,`gpaS`H09T~@AXC2p?JgQy@T~3T~TLNuH4<@`H-DV4aa`da>aav`,xCNh#mhNu,x"z>NbA.,z2N:#U @ h#U\p#mNu\,hK yU,zN,zAN4#XNu.,z yXN#WCW,yNCWN#yX(#|$#|WApr,xNDAprCW#|WNDCW,xNCWNN>CWN>CWN3|#|m[(#|$,xN2aJg :apNuAW,xNH,M^P^^^@^^^0NuHARyl@` Ryl@HKd(ym 2: g AIdpg fa`aRLRA AIe3mLqNuHKd(ym rHp aXRLQBymLpNuHJg8: BaaLa3mLNu/_v  #%(*-/2479<>ACFHSC,z*|W(|\<:>: B"Npp g eZH&L[P[[[@[[[0RRF FPf|TG G<:a2"NpQ3m3mNu g g> g* g g g g g`SFj|OUGj~`|`SCkrp :d" /c@0 @Q3m3mNu ;g Hgr Kg mg2 Dg`JQ3m3mNuAJFj(FPUGj~`JAf xa`xa` UC~SGO|SFJCk`SAj` APe2<O<`SAj` A0te2<aI>"Np`n rPFaaaa a aaa`4gSBBQ4JJG0tN""""""""""""""""""""P"@NuJymgNu,zz*|W>:vplFF.PF.F.F.@F.F.F.0NuJDf(|\#WNu(|d#WNu,zN,zNH |aC"NZZ |aCTNZZLNuZ!| @!|D :!@T!@PBd1|1|:(XpNuZ!|@p0g g.f`C g"fJf g g "g 'g `g`C2gfB)H$<"<2,z N# LJgg g g ,fC2gV ,fB)HaLJg$C2fB)Ha4 ,LJg*H&aa^L`BHafLJgT$&<Haٴa0L`A` 3ml#mvAa`3ml#mvAa|`3ml#mvA :ad`3ml#mvA aL`HB@aaA09ʰyg0R9 far Afr Bfr Cfr Dfr Tfr Sfrt 0e 9b0@ @az` ~f`0 fa`r @fr Afr ?faDr ~fr b0<LNua$3ba|3 e4Nua @xgBArCpXfNu/a _09ʰyNua8g95 @gA29R9Nu3BGpaXAaT`jAaX?aa0"z & : ,xN.0 Rf.z $`2av": ,z NNu< af fN gH y4Jg  f$&$<`A.`Bf Og Igt Xg> Lg Tg! Sg!Jf~ z0,/$<S.aja _C$ "<Bf< gRQ/a _`ax`ta&a3XaaZByX` yfJgA*aA2B> Cf@>Baa@3X 9Xѹ>#? 9X#>#? 9D,9Da$<>v$a$9&9XCa$<?va ya, ya$$<? val 9,9"hyaVByX`&g $T`FNu"ya "y y"P`&Ѱ8QNuJf8$ Nsb l ## Bg Pg3\#^HBNh#X.y7F.z*8Kf 9^# Bfb,gfb,F0 VJf<`9b gR@UgbSgdSg6Yg8SgB 2A$ a0aa 9^a aa`A#`A#`09g09gS@g`A#Q`A#`ap 9^a A#a^ 9a aP29pRfpWa8pIgpNa*0@@0aa09a ha$`%۽$,xN @!|B2NuJfA"C4<avahQQavaXQ 9 \f )a aa:aa4a0a 2AE$vAdaQa|*Q a ` a `^BB Dg dgt ag Af.@@@B N`/aGAJag>4 _aa Bp a8p%a2ap.a(ap.a &!ڋa p.aa`,/pHge p0a `p1a `"Nu Lg< CgaA afJNq B"@cSfNufNu SfNua y&9g"z&a#m"`0A#`a͞Aa͂fnJfR B 9?g 9?gSfNu0SfNu SfNug 9**@PP a X#aJ@f "fa `aL/ a 4M*_ g8af0"9?HCCpap apaQSQaB@Nu9?HSCa Q`g 9*@z a ?a:Q#NuA00?2AH2AH2AH2AA'H2AH@ @ @f0R@t mrJ91V 2Cf AJg:AC: A@g,C: AHg"C: AgCDJf00H@`2< cgL dg @f<BJ( g<W ( g<LanQga`g <,aVaP` hEB(Ԃa:RSA`T F HILSCCCSNEEQVCVSPLMIGELTGTLE<LJ(f<R`Jk ((`((H( CN22"*.BHP^pzLNuJgSgSg8SgSg*Sg4Sg2JglSgxSgSg g `p-a p(aap)`P(12aap(aap,a|I ap.ahpWgpLa\p)`Xa|0adp.aLpW`Hal aHp.a)XiX|R (D.6vOR.@ AND.@ SUB.@ ADD.@ EOR.@ CMP.@  BTST BCHG BCLR BSET  "*208@HBTST BCHG BCLR BSET MOVEP.W MOVEP.L MOVEP.W MOVEP.L MOVE.B MOVE.L MOVE.W JR (D.6NEGX.@ CLR.@ NEG.@ NOT.@ TST.@ MOVEM.W (NBCD.B   SWAP PEA   EXT.W MOVEM.W &.*6TRAP LINK UNLK MOVE.L MOVE.L  (v.6>RESET NOP STOP RTE RTS TRAPV RTR JSR CHK.W LEA D$,4MOVE.W MOVE.W  MOVE.W  TAS MOVEM.L JMP   EXT.L MOVEM.L ADDQ.@ SUBQ.@  Scc DBcc   (0.,*(&$" BRA BSR Bcc MOVEQ 2OR.@  SBCD.B SBCD.B OR.@  DIVU DI+˛GVS 2SUB.@  SUBX.@ SUBX.@ SUB.@ SUB.@ LINE-A (CMP.@  EOR.@ CMPM.@ CMP.@ 2AND.@  ABCD.B ABCD.B AND.@  MULU MULS 2ADD.@  ADDX.@ ADDX.@ ADD.@ ADD.@ d (08@HASd.@ LSd.@ ROXd.@ ROd.@ ASd.@ LSd.@ ROXd.@ ROd.@  (:864ASd.B LSd.B ROXd.B ROd.B LINE-F ?????? a `a`H@a # E~lbNuJkDBJfT9fA2XH0"9 AkfR0#NuBJg< Bc"HB"y2<a^R A #NuBB@a* #NuH@aH@2A A?b00#Nu"9 Af.0#Nu y9fj"BNuAB`$ABD`?aD@_`a*Aaa AgH69gB9?f AghfRC3AaHaUAgRA`aV9fazfyA}`yaVA#}`0C3BBRB9fa* AmA|`aA} A9`9@@y@3Sg`yy<B@9?@@y`XaAaaAgR?BSAgPBya_`"aAg*?aAg0@B lB@@2Ag@@BBBBB`^aJAgZAa a0 Ag A fByaaSA`?a A fBBya4`xaaAg @faSA`FaJAgAaaaf*Ala<yag 3g`~3ga` AgAd`B?y09tPQQ3`>a GYala"AdaaUA`aRAaa Af ?SfaAa4`naaAgpSAgat`B9aA}`LaAaaBAa>aA`apaA}a$atSfBB9`nataVAg`daJAg0<0 A@g0< aa, Ab49aa AbT8D6CDCCya`f gv3@aA}`r3NhaA`^yIe IeId:yF`yD`J@f69C CbCN`3`` 4aTad fBy`0a8a> L l)fg<SA` Sg JfFf~?/a *_f 9>HôfJ:Hźf 9S?g Ba`H@f f yag 3Nq` <LA=v`,&yR$Kpѹmzѹѹ"f.rSH@a4|L@`FaLa\Ad`aAa6aFf. f4yyA|`ag?<`,y ?` g?SfaSAfyy4`f?aA4 b_`aaAgL`?aU`aJAgA?aSf(B0_`B9?`aAaTafA}a `lA :;`zg6C?y Ag AgA `f Nu 9?g`XX9`TT9A<PXH NuEHHƝ<HNSFBZ$ ga`aQNuaJg Bg Wg Lf2<`r@`BA?Nua~Jg Bg Wg Lfr`r`r``(H?><a cg agJfpBaL?Nu BObf 9\fRBBBA 0 ra`aZ afNuaP cg af<y<?FF f<FB  ffNutg$ .gr (fja zg f(6HöfNugNuBB (gr -g #f(a$fN|NuaPD8 Df6FNuah<x Wg R Lfp`(6a`BEF -g /g|Nua`?a08Dż@g@gR@`a<F cf`\`A7`aFڀ`aZ`ahʀ`ab`a\`aBW`a:]`a2^HHJg|A7`afJgJfNu,NuBU$NuafJgfNuafބfNua86H@HEH@CHEBEڄ`ar Bd؀QF`a cf8 g$ >ff8D9>fH|2aP ,g )fVFHa< +fPFa0NuaB cf8 l2a WgPB:a )fI {grc``Pa bgP *g -g" ~g, [gNu 99>raNua (gD`r-NuaF af,JfNua&gNuabgNurapBBJkJGkNu`G+ d DgP Af tprcNuA adfNuUS?S=CC>SP> *D/\g(g&B g g0 e` e eat $gFt @g>t %g6 ;g >g 'g "g `gNu<v B` vkB0 e e  d dHHJjЄ؀`SB raNuAA g. _g0 e e  d0`  gSrbNuJfSBANuBg6fg,g`raBBNuga`A3`VA4`NJGkNJkJafFaRfHRy y0"4CjB  @> ##NuA3w`A3`GBj @AE H@A@nB@"y fT I0"gP$ $HGRf8Jj  @B f ggHB4 HBBraNul$BBANuJym^gNu3` g09g@@ymByaaaA0a~|"yK :<?$M0"gz I$HSFj<9af/a _`a+:r @fp.a+.JkQRA`p.a+Q  @ g (aVp Jgp+a*`A/a`TM$MQ|ap  f*NuA1`HaBf$Jf2`.a Ba)4agaSfNuHLNuHLJ@Nu$<S.aaT$z3$<&< / a$_Ig" 4fS"@&Ja"`Q A gaR`HaNu$<"<2,z2N# gNu,z2"<2N$<`A/R`LjaA0`~"9 ,z1NH瀀A*a :*aَA*a :*a p a'p)a'aLNu,z1"<3tN/J93g"N"$<DN"9T 9PH"/$<D,z1HNrMp-a'^QapA-@aR |Lrg a'>Q` p a'2Q aA-a$ aA-arMp-a' Qapa&"$<D,z0NJ@g?< 9j 9Aؼa؂a&`A,a |Lrg a&Q`  U g& g g& g eȽgB`gSNB`pLcJNuHpMWc` HpMAYaC0:Z4yml gpfRymlgH Ae *NfRyml` g4gf,M Kg ae f`AW\aC.3Jm"fSymlAW>aCLa J g fR#mvNuAXaBH`a tSk,"HAfRBQQ#mvzY`ymlBym~a^LNu ymlfJym~gAXaB3ml zY8#mvg"fNu2<d`2<caJa` zX fNua#mzNua=fM2a aNuAR af$ARa&Nur ' gr0aB@H@gr0aB@H@dgr0aB@H@ gr0aH@r0ap `ALa`NLA(v0$"p/R@dԁSgN6fp RSaN(`;B@'d gBym^#B^~aDa B@aMByByByByPB Ba f\naaz fB#^AQ09g Ha"AQ a>laa!"9 WBmAT-a>PNuBGAQa>D`Z#B9> 9#a;ba;a>2 g8M2.<Bya bf?aNaJf JjNu :V @# )7#A 0<?BXQ0<P` LAOa;A2gx Zc Vg Eg2 Pg, Hg8 Lg8 Og8`  3B92`  3` ``/AQxa= _` g AOa: Nu0F@@f`K8HaT09arJ9g 9a:\Bar ` a:UgQa y29 ;g *g29g =ggaKpS :fa>29 g g g =g aKBS ;gg g f`aK"SAa29 ;gF >g@gR g g "g 'g `g aJQN\U``g"gaJQa29gaJQa;g#fJDnNuyjd g^ANJyg SH gaHa;py309A@Ha gAMa;@A2a;6a;H`;DNuJAkaJQNu>BBByaBy,zTRyJ9f HaIHLC g###,B#Bya^ bfL :g &=faaL =fa`( bf&?a:fag* Bf$`*NaJft/aH,_RJjPp` APk`#(Ry/ga*_RM#g` ?fV0 ) lJRAg$Sag ,g ;g g`09X2<0XQ``M/ #,BBya@ bf8 :g &=faa. =fg` bf?aNa Jfjfga4*_`,y(JfSX` y(`g ;g ,fQNuSNu,zR Pf8ByB0 @gc @g c @c" @c( @cB`0Ba ,`NuHav`@4 a `aTR,Fa*fJGkBОa `a4,Fa JGk~Jg gй`й!`^Aj,NuGjAAJH@C& JRl`Jg2&CfJj R @0JNuJkJj Z @` INu4Q SRYXmyx 5KqpSoutsrqDDPD N SSBC DD DD DD ND LIG$`ZSaTEgNNfHSECH@CLTSCd"CeHdLeGl GnHbLoLcLmMkPjR`LViVhM (LBHA|MPPMм ODZMP MP BQfBQ`BRQXIV4IV,BPBBCT:BCU2BHT*BLU"BEWԽBG\BG^ BHRBL_BLSBL]BM[BNVBPZBVXBVYATFNDINDQ"LSVEZNX ZOҺ XH@DOR LOBFnLLEGAJMNJSNDEA rINNPS>S8ISVINE_ INE zINE_ pINE hOA\OV OVEH@ OVEp \OVE UL UL ACROVEOVENzEDOFEG@BCHxONqLISҀD:RRɀEH@`AGLEWIINI6OD2HOBOX:OX2ESENpTNsTNuTNwTNtUBQ NU”pWAH@UB BC PQCTCUHTLUEWG\G^HRL_LS~L]xM[rNVlPZfVX`VYZTONr nUBUBSJBRAPNvRAN@ AJ$NLNX ava af@adat0@?XJf ` Ry0@?XJf a8a>@y`Ja|Aaa, Ae$Aa a AdB?0Xa `0X a aAa ` aa Af`a gR@3Nua gD1,#A2HSA02AjBA000@+2HASAjBA0S@jB@0Nua afJf&f gJGkaAD`JAfNuR9 Nur Jg(r Xgr Dgr Cg r EfJ@gNuNu gByNug>AHA!4B"0 ##R9JGjfP f ҹ#Nu@`afa##NuAH`4a JfffdNuaJ9>f#3JGj#NuAG:`a.r ,gJAgf bfgZJGj 9>f 9怹fafaf atB<``2<CaN AB #`NuAGf`vpJg RB@`a4JjB@HGFWHGNuGNuNuHGOHGNugnJkJGkaff y!<aRJg$ :g> bg f`ޔa@$fNu/ga^,_RRyB#```f9gNuazS*9Dʀ`paQNua`aX/a agpJf*g< Bg6 Wg" LfZ` ByaSjNuBya:SjNuByavSjNu  g .f  g adNuSBANu vHNuAEU`a? Bna Jg afa`Nu 9W?g 9L?g^Jk8BJfRA2XH"9 Akf #Nuf2A @b0#NuJkX9f(A2XH JGjT"9 AkPfba #BJg6 9>f 4C gC JGj Q YXNuXNuf( y 9 aR y 9U BNuB#Nuf f NuйNuйNu 9V@#P"9#Ё#P# Ё @X## йV@#"й4,_Nu/,y oN,_Nu/,y"oN,_Nu/,y oN,_Nu/,y"oNz,_Nu/,y"oNb,_Nu $<Th|T/,ydL /N,_Nu/,yd oN,_Nu/,yd oN,_Nu/,yd o / Nj,_Nu/,yd oN4,_Nu/,ydLLN(,_NuH",ydL N"LDNu/,ydLN,_Nu/,ydLN,_NuH",ydL NLDNu/,yd oL N,_Nu/,yd oN,_Nu/,y5td oN,_Nu/,yd o / N,_Nu 4H`t(< ,yNL@NuH L ,yNL@Nu/"/,yN,_NuH L ,yNL@NuH L ,yNL@Nu/"/,yN,_Nu/,yN|,_Nu  $<Xp0<a`0< a`?r23 3 S@3 3<3 3 3[S@3 v3 3 H3 @0S@HH@(3[3\RA A0iHAA0i ab2Nu f`BGa`p*a`pp*a`ja`baQf`Qx09gk3ml#mva`ZAa`0ja`$aQ:`:(Ha La.y,a1Jfy/a,_je`Af``5F$:uTBRZ<X@Ô&=&5LP79N@\Af`Ra, agNu @dp @c0<3fNu g( \f g \fp ^fp/a^ _`NuAeaTf g"zi,x/N4"JgӹmnNu Sg3D Lgh Mg":h$:hAcaX":h$:haN":h$:haH&9gZ"9$9a("9$9 a"9$9a"9$9 g aO aL aL "Ha* I`OJfNu Sg Fg<* Lg0`a> zhb\#m#mz#mv<3mlNua zh2#m NuAahaL92 YgAeq`p%(]NuaLl92 Rg Yg`Aa!aLLM2 Ng fB("&9Xt,zgN"Jg0<0g ae QBNu*NMaK zgb gNJfSg2,MfRyml#mv` g( ae f"Hg ae f`Ad`fat`aRyml zff#mv0:faaKaM fNufa>0:far zf"H,|2*N gfS(NaMaKhaa@`Ma`h3ml zfSa$#mvNup zfpSa`D gJfRymlQNu zfP gJfSymlQRRyml` 3mlR#mv0:fa zf g2aM`M*:ga&KtSEx EeSD zeJDg/A_QaL W gaLaL _  d ( g (gQa`Sa`"H ze :ekSjS#mzNu:UEkba^ zex gJf#mvRymlQ`: |2"H$zeP eF&JRfe2l#mzRR"SjfNuAa` ze"H  d ) g :ek"SjS#mzNurNq zdf J gf JJfSymlQRymlR#mvNu zdf K @gJfRyml#mvQNu zdf K gJfRyml#mvNuB9m\a[B9@ zdV#mzIaT$zd<&J2< aLaXA_aK6aLaXp gHz'5 g g gaI gL g b g g g g g g d g g gB g: g g g 6 gp g g< g gX gX gR g Nu9b gHaH d^ gz g| g@ g gz g gX g8Nu g* c ,ga(`a" g c ,gNu *g *ga`Nu g ga`2<aa. ymlfBym~Nu gf3m~NuSKNu zb>g g"fNu$H l,&HNu zb$gdڱg۱f#mvNu$H&HNu2<?aJa2Bym~SA gfRym~QNuSKNupaFNua6p *g *fa,Nu" gNu gNu g`" g`ҵf("| za|ȳajlN#mz` f&INuaaa`^ *g *ga`Nuaa( *g( ymlg ym~faOba&a3 Nu g a` f29 BB` g ga> fBRBBbNua g ym~eaNa"a3 Nu |60<"HX Q Nu |60<2RAI"HX# Q NuA[aG`ah z`H0:`L))@3 l(Gxl RRR`BR//a$PL0N^NuNVH*y09@3~ l.RJf"Jo"//9a PHywN `X`R`L N^NuNVH<89Jngp`p. n&H/ aXJ@f|Jo y` y$H*K(n RJf LG(mZg&09@3 -^#@// aPN | L8N^NuNVH** 1 (y*yfHyN `X`Zd*L(y " $ & .JfHyN `X`,B #@// N,8PJfHyN X " L0N^Nu y###p y@ y y@ y@Baf09@3NuJg/9/9N8PNuNV .X#B/N P#Jf p/NX yT##a:N^NuNVH~ 9 nd~ 9 nc~ LN^NuNVH ~KJfN/ NX#Jg6 @2(R AIf2(TRA y1AT0(VR@++#5ڐ y1@V.H`/</<N P#Jgh @B(H @!L y| y| LRRJf/9NdX y1|IRp y1@V y1@T.HN L0N^NuNVH*yNg40-R @If*0-TS@;@TJ@fa./ NxX/</ N8PBNL N^NuNVH *y~Ng60-R @If,JmXf&.-^(mZg// N8P+HZ+H^N L0N^NuNVH*y~NaJk6p//. N P+@ZJg". +A^//-Z/.N`O ~N L N^NuW,,dTfZ@ P 8 "  6 l ^ 0 r l  >6,$xrlFH>(vn.  *  P6T8*xrl--v= < ZBn\J@4* |NV.~xvp`L2|rh^RH@2lT0`N<6$tnhH zljF4:  ..)R)<)$((((~''v"!N*V*F*.*$**))))))))))|)v)p)4)(((^(X(L'''j'<&&&&h&F%%p%$$$4$*####j#J#0""""""r"l":"""""!!!!!!!!z!t!l!f!\!R!L!B!<!2!,!&,B+++z+T+J+<+.++******| R*:b &<V// l ~ Rz@ FV $ z\p.LDn  ( 8 d r Z( ^BX z !")X!","##p##$:% %v&#%<%& #"$$&:&#P&^&~((,h ,B>FX&J h @b,00 P\jtXb  > F^ft*46.Rxn b#8#B##&&*##$H$P%P%Z%%&&&&'B'L(d(n(())%,%%%J%%%)& &&L&X>8bJf  Zb  "#Nj|11Fz &  T& ~.8~ t 6Zr F `  0 >   z t B  $TL>z$ L^ J)F 22j&0~0t! )*,^r)+,f |  b!"T&'|()* " *++,J!+b+,*,*+4+IH L ,y39nNL@Nu/"/,yN,_NuH0L,yNL@ NuH0L,yNL@ Nu/"/,yN,_NuH L ,yNL@NuH L ,yNL@Nu/"/,yN,_NuH L ,yNL@NuH L ,yNL@Nu/"/,yN,_Nu/,yN|,_Nu  $<Xp(& vQm lN` `,``````` `` vVA|(H&l JfbHy /9 TNP~ !l n RR`p/Hy /9 TN!7xO p//9Hy aO `Hy/9 TNP/ /.aPp/Hy/9 TNO B/9 THyNO /.aX&@g / N Xz`$n / / NPx`/</9N8PJtg/9tNXBt/9 Ta"X y 8 LXJ@gNq0. H/ a(XJ@fp/a:XJ@g#a/9NZXg~09G3L0N^NuNVH. | ae zb| Ae Zb| 0e 9b| LN^NuNVH,9(.z Pl./NX,bgR` LN^NuNVH..*yS Jo/ NX*@` L N^Nu((:GNVH/9NZX*@~09H‾l/ NRX*@R`#09@3L N^NuNVH/9NZX*,9b$~09HUl/NRX*R`⺆c#09@3LN^NuNVH..*yz09HSm.z",Jj~, 9ܻcS/ NRX*@z09HЇ29H3 SJo/ NX*@`#09 HЮ 3Na 9ez @$J@gNd 3N,09E3L N^NuNVH *y.9/NX, f 9伀dS` /NZX. *o809?Vi , (  p N < ,  p h T @ ,   t R @ 0    t b R @ 0  nZp`N>, |hTp`N>, @84$|R0,@:*YJF~vdRJ8. jfNJ62"nB  | LV ~ 'NVH'N@Hya JXKJg/ aX/9a X/9pNX(@f aNN N/9pNX`~>,z:,/ aX, f//aP/a,X`a&y 8  gL g, fr "$Au?//aP`P hg `>Jyf.0+ @ 29HH2+49 ``R`(`@`` fp`p/N#`X`| p/N"X09J@f`&| p/N"X09HU29Hmj yg^| `X/ NZX*@By/ NX#JyfBhS09?@ R@30/ H @ R  g&  g /g *g ;g !g $f09?@ R@32/ H A09 @Pm` ygp/N#`X*y| d g| ygbp// N"JP`RJgN09?@ R@30/ H @ d&  c 09J@op `p,09R@3 F fNda209J@f| 09F309 @PoaL N^NuNVH>9H y 80(H29 9HKgv09@309 jg2a vJo* y g g yRRS`Jo // N!P09 &gN2ByL N^NuNVHK&yx . dDN``X``8` . d8N``<`v````HyN XJgN)nBa nX`HyXHyHyN4O /a FXJDMg/9aX`Jyf I`  f$HyXHyHy N4O /a XJg2 9"9ܐ///9avO .JgB/N X`6I(`.K6`JygHyHN XJg BNXx` . dN`` `J`\`t`p`N(J`N(*@g/9@/ N"JPxIe`xN(JglIw`bN(t(@fPI`F/. N&XJg4I`*N'2` . dN```0`j`f``  fp`p/N#X`/ NZX&@E#5= yfBy/ NX&@JyfS#x`  fp`p/N"XN%`p " /9/A NX"/c y` y#N`"HyaX.Jk/N$X#x` . dN``b````h``h@3HyaX.Jk09?@R@30/H @ `09 R@@3 `K &`K j yd0( @!d$ M2A0gA0 M2 A009 jgpL`pl6`"N|`N (`K/ N X(@x` . g2Jg fFSv?f  WDHH/NX . 3HyaX89Iz*y~ 2n MRJgR`*y| 2n MRJgR`09H//9/9N'O &@g:#N% Jf3N  g g JfX`a:Jfh R/HyN PI LZ/aX 9dPJg // N"JPJg://9N!PS` IHyaXxzar8kXfN`8Y`y`G`g`N`n`x`4/9pNX`Ix09D3G\dg/ a XL8N^NuNVHB/9lN ,Pp//9lN P#p//Hy /9lNpO yl>($H lp//<B//N OLN^NuB J9Xg,p/HyXNP# Jg/NX#`NuJ g/9`NX/9 NXNuNVHK$ap//.NP.Jf / aX`Hyx/NP,/NXJg 9', l,<BNPXl K5`N)/N)X/</.NP.JgdN/9/9/N0O ,JjKC` y#HsJ mKVBaXa/NX3g / N XaL N^NuNVHx*nInG}aHp// NP,Jg\Hyx/NP*/NXJg?.789 `1234567890-=\0qwertyuiop[]123asdfghjkl;'456zxcvbnm,./.789 NewCli >nil:Done:Replaced # Clear Buffer? Select a FileNo changes-not writtenEnter Name of File to SaveNo File Name!run >nil: TxPrintExit without saving changes?Block Cut to ClipBlock Copied to ClipBlock InsertedLine DeletedJump: Char: Run >nil: ESearching LNot FoundReplacedReplace? (Yes | No | Global)Aborted LCan't Open File!Out of MemoryError Reading FileCaution: File truncated:t/TxEd.BackupCan't Create File:tTxEd.TempSaving...Error Writing FileSaving BackupError creating backupError Writing. Look for file TxEd.TempTxEd G-ClearOpenSaveSave ASPrint ClipQUITV\a MJPfnJy, R~N VOp VW# R2 VP? L VQMark BlockCut BlockCopy BlockInsert BlockDelete LineDel to EOLUnDelete Ln  L L N'u%1 L< VHB, V\XN  VpCp  VI - VK 7 VY A VLFwrd WordBack WordBeg/End of LnScroll UpScroll DownBeg/End of fileJump to line L  O4 L$ L0 L@ VN.  Vb, @  Vv] b  VU ( VD 2 VT < VJSearchReplaceRepeat S/R   @ V S b V R  VP} GHex EntryColorNew CliMore TxEdStrip EtcWord WrapParagraphOverstrike         V H  V 2  V 3  V 4 ( R <7 [ 4 ^A V HFQ9K _ \VProjectEditCursorSearchRandom F  FF  F  F F ptopaz.font @ (dir)  L l   file L |!,U  v[ F vZRߨ < vYB 2 vXn ( vW  vV22  3 344  OK  L:Cancel LV rdrawer|2P zvU< SugvS d2 *^vR8d2 *BvQ@xd@x@xCan't Open Requester...Directory truncated!Error Reading Directory!!!Wrong Diskette?Directory ErrorEnter Search Stringx L*|2  >R Replacement String} L|2v 2 >W! UC == lc LD $ ForwardReverse Ld8P< t ( }}OKCancel! LNot enough room for insertdelete request too big!Line insertedMeps!Nothing to insertGotta mark a block to cut/copyNothing to cut/copyCan't allocate clip mem!TxEd's PortUt $1FFFFFFF,$FFFFFFFF,$FFFFFFFE dc.l $3E319FF0,$3E77DFFC,$33CC3810,$17DFFC3C dc.l $3C3E7E7F,$F03E7C38,$1C3FF033,$C8101C3F dc.l $F0103010,$1FFFFFFC,$FC399FF9,$9C339FF9 dc.l $93C99A59,$939FF999,$999C7C7F,$F99C399E dc.l $799FF993,$CA59999F,$F9999999,$9FFFFFF9 dc.l $F9393FF9,$9C311FF8,$F998FE79,$F11FFF99 dc.l $999E7E7F,$F99C38FE,$73FFF999,$9E79F8FF dc.l $F9F999F9,$FFFFFFF8,$33387FF8,$39901FFC dc.l $7C3C7E78,$701FFE3C,$3C1E7E7F,$F8399C7E dc.l $73FFF83 VC,$3E787C7F,$F8783878,$7FFFFFF9 dc.l $90193FF9,$38129FFF,$1E7F1E79,$F29FFF99 dc.l $9F9E7E7F,$F9981F1E,$73FFF99E,$7E79FF1F dc.l $F9F939F9,$FFFFFFF9,$9F399FF9,$93C39FF9 dc.l $9E799E79,$939FF999,$9F3E7E7F,$F993C99E dc.l $799FF99E,$7E79999F,$F9F99999,$9FFFFFFC dc.l $3E119FF1,$C3C39FFC,$3C3C3C30,$139FFC3C dc.l $3C78181F,$F033CC38,$1C3FF03C,$3C301C3F dc.l $F0F1C010,$1FFFE060,$3CE0E79F,$FFFFFFFF dc.l $FFFFFFFF,$FFFFFFFF,$FFFFFFFF,$FFFFFFFF dc.l $FFFFF WFFF,$FFFFFFFF,$FFFFFFFF,$FFFFF333 dc.l $3872679F,$FFFFFFFF,$FFFFFFFF,$FFFFFFFF dc.l $FFFFFFFF,$FFFFFFFF,$FFFFFFFF,$FFFFFFFF dc.l $FFFFFFFF,$FFFFF333,$F873333F,$FFFFFFFF dc.l $FFFFFFFF,$FFFFFFFF,$FFFFFFFF,$FFFFFFFF dc.l $FFFFFFFF,$FFFFFFFF,$FFFFFFFF,$FFFFF070 dc.l $F333387F,$FFFFFFFF,$FFFFFFFF,$FFFFFFFF dc.l $FFFFFFFF,$FFFFFFFF,$FFFFFFFF,$FFFFFFFF dc.l $FFFFFFFF,$FFFFF273,$F0333CFF,$FFFFFFFF dc.l $FFFFFFFF,$FFFFFFFF,$FFFFFFFF,$FFFFFFFF dc.l $FFF 3qx/FFFFF,$FFFFFFFF,$FFFFFFFF,$FFFFF333 dc.l $27927CFC,$FFFFFFFF,$FFFFFFFF,$FFFFFFFF dc.l $FFFFFFFF,$FFFFFFFF,$FFFFFFFF,$FFFFFFFF dc.l $FFFFFFFF,$FFFFE380,$2780F87C,$FFFFFFFF dc.l $FFFFFFFF,$FFFFFFFF,$FFFFFFFF,$FFFFFFFF dc.l $FFFFFFFF,$FFFFFFFF,$FFFFFFFF,$FFFF0000 Main_End: equ * 3C3C3C30,$139FFC3C dc.l $3C78181F,$F033CC38,$1C3FF03C,$3C301C3F dc.l $F0F1C010,$1FFFE060,$3CE0E79F,$FFFFFFFF dc.l $FFFFFFFF,$FFFFFFFF,$FFFFFFFF,$FFFFFFFF dc.l $FFFFFYWzRj0<FQ,KNp` /.y*/,y"y" g <N. 9g"@NbN"@#y2$y.o N|"JN Nu o2< ]Jo o"9 c 3 Nu oS` o2< ]Jo o"9 Rl Nu o"opg m R@ @oNuJo  nfP@@`NVH?<$ylv-C-C=| y 84(09 <@2@H=A3ph H309g3gN%fyg9ga"y (y La. G"La3,9g329Z6 Al ]@23nFl \F23JAjr0<n@o23 *y gT9g3 Man,-@ F"Ma=@-G29bf@o-F0.-G=A2=A*ypyf69*GpA "Jap"Ja|09g<9g|=Fyl-Mgnl Ma*@RC`Jng 3Bn09S@Cf09 D8.pA "Ja\".e,fDDnoFo8 aDpAx "Ja&0oa/,yhp*"Ja<*$Bl"J0HH"H/&ySN&,_RCpnf<eaByL* &@( B n ~j 0j`F[Jr',0 even tename: dc.b 'Bitte geben Sie den Namen des Bildes an: ' teend: even fensthdl: dc.l 0 speich: dc.l 0 even ypos: dc.l 0 xp: dc.l 0 yp: dc.l 0 spei: dc.l 0 Drucker: dc.b 'PAR:',0 pref: dc.b 27,'3',23,27,'m',4 even count: dc.l 0 puffer: dc.l 0 handle: dc.l 0 titel: dc.b ' Markt&Technik 68oooer 1988 *** Made by Volker Raum on Amiga 1000',13,10 even kommas: blk.b 80,45 endkomma: dc.b 13,10 adder: dc.l 0 zwi: dc.l 0 Rastport: dc.l 0 even dc.b 0 daable: dc.b 27aJ,'*',4,128,2 able: blk.b 640,0 dc.b 13,10 buffer: blk.b 80,0 endbuffer: dc.b 13,10 even pufspei: dc.l 0 zwischen: dc.l 0 filename: blk.b 80,0 modus: dc.b 0 even daten: dc.b 255,255,255,255,255,255,255,255 dc.b 255,255,255,255,255,254,255,255 dc.b 191,255,255,255,255,191,255,255 dc.b 255,255,127,247,223,255,255,254 dc.b 255,255,247,255,239,221,255,127 dc.b 255,255,254,237,239,223,254,239 dc.b 255,223,127,119,255,219,125,255 dc.b 254,234,127,237,223,255,239,255 dc.b 247,247,255,12b!7,111,239,201,254 dc.b 255,242,190,123,250,255,127,215 dc.b 179,247,247,239,223,230,211,247 dc.b 249,247,253,252,245, 94,251, 91 dc.b 123,254,191,215, 79,235, 94,234 dc.b 109,223,255,109,246,170,223,135 dc.b 255,245,111, 55,168,221,174,189 dc.b 155,143,237,239, 51,109,159,115 dc.b 172,219,150,206, 91,247,219, 59 dc.b 184,123,159,117,213,180,223, 74 dc.b 98,198,123,239,154,175,222, 11 dc.b 249,250, 28,123,184,208,158,157 dc.b 235,109,243,146,228,222,136,226 dc.b 150, 59, 35,102,239,1c˷z44,237, 58 dc.b 180,184,225, 61,173, 53, 13,105 dc.b 156, 4,230,143, 10,217, 77,182 dc.b 114, 74, 58, 89,133, 41, 48,175 dc.b 224, 52,246, 55,139, 28, 36,130 dc.b 152,178,108, 37, 54,241, 34, 5 dc.b 42,129, 78,241, 16, 49, 12,179 dc.b 19,172,224, 84,161, 54,132, 9 dc.b 164, 8,212,108,147, 0,132,184 dc.b 16, 80, 1, 73, 40, 19, 63, 19 dc.b 14, 24, 1, 1, 40, 32,117, 89 dc.b 38, 16,164,133, 35, 8, 35, 2 dc.b 21, 52, 66, 98, 65,130, 1, 8 dc.b 136, 52, 8, 0,129, 69, 0,n195 dc.b 9, 0, 16, 89,133, 9, 0,160 dc.b 0, 16,128, 24,120, 0,128,193 dc.b 86, 0,128, 2, 0, 4, 80, 34 dc.b 72, 2, 0, 48, 4, 0, 17, 12 dc.b 0, 0, 8, 92, 64, 0, 4, 64 dc.b 0, 0, 40, 2, 2, 0, 2, 34 dc.b 32, 0, 72, 0, 64, 4, 0, 0 dc.b 0, 16,136, 4, 0, 0, 0, 0 dc.b 0, 0, 1, 0, 0,128, 0, 0 dc.b 0, 0, 4, 0, 0, 0, 0, 0 none: dc.b 0, 0, 0, 0, 0, 0, 0, 0 8,157 dc.b 235,109,243,146,228,222,136,226 dc.b 150, 59, 35,102,239,1eR'6FC2700,$13FC0003 dc.l $00BFE201,$13FC0000,$00BFE001,$33FC7FFF dc.l $00DFF096,$33FC7FFF,$00DFF09A,$33FC7FFF dc.l $00DFF09C,$700F0879,$000100BF,$E001323C dc.l $753051C9,$FFFE51C8,$FFEE207C,$00050000 dc.l $303C2710,$10FC00FF,$51C8FFFA,$207C0005 dc.l $0140227C,$0007F2D6,$303C0002,$323C0117 dc.l $10D951C9,$FFFCD1FC,$00000140,$51C8FFEE dc.l $33FC7FFF,$00DFF096,$48E7FFFE,$3F3900DF dc.l $F01C303C,$7FFF33C0,$00DFF096,$33C000DF dc.l $F09A33C0,$00DFF09C,f}X+$13FC0003,$00BFE201 dc.l $13FC0000,$00BFE001,$13FC007F,$00BFED01 dc.l $103900BF,$ED0113FC,$000000BF,$EC0113FC dc.l $008000BF,$EE0113FC,$008800BF,$ED0113FC dc.l $000000BF,$DE0013FC,$007F00BF,$DD001039 dc.l $00BFDD00,$33FC3C81,$00DFF08E,$33FCFFBD dc.l $00DFF090,$33FC0038,$00DFF092,$33FC00D0 dc.l $00DFF094,$427900DF,$F10833FC,$100000DF dc.l $F1004279,$00DFF102,$427900DF,$F10433FC dc.l $098F00DF,$F18033FC,$075F00DF,$F18233FC dc.l $830000DF,$F09633Fg?TC,$7FFF00DF,$F09C46FC dc.l $200023FC,$0007F2A6,$00000068,$33FCC008 dc.l $00DFF09A,$23FC0007,$F1F00000,$006C33FC dc.l $C02000DF,$F09A33FC,$01FF0007,$F1EE5379 dc.l $0007F1EE,$6600FFF0,$33FC0000,$0007F1EC dc.l $52790007,$F1EC33F9,$0007F1EC,$00DFF0A8 dc.l $33F90007,$F1EC00DF,$F0B833FC,$02FF0007 dc.l $F1EE5379,$0007F1EE,$6600FFF0,$0C790040 dc.l $0007F1EC,$6600FFCA,$6000FFFE,$00000000 dc.l $48E7FFFE,$303900DF,$F01E0240,$00206700 dc.l $009A33C0,$00DFFhl09C,$23FC0005,$000000DF dc.l $F0E00839,$000600BF,$E0016700,$00840C39 dc.l $00140007,$F2D46600,$004C0639,$00010007 dc.l $F2D50C39,$00140007,$F2D56700,$0024207C dc.l $00050730,$303C0008,$10BC0000,$117C003F dc.l $0001D1FC,$00000028,$51C8FFEE,$6000003C dc.l $13FC0000,$0007F2D4,$13FC0000,$0007F2D5 dc.l $60000028,$06390001,$0007F2D4,$207C0005 dc.l $0730303C,$000810BC,$00FF117C,$00FF0001 dc.l $D1FC0000,$002851C8,$FFEE4CDF,$7FFF4E73 dc.l $4EF900FC,$00DiP:233FC,$000800DF,$F09A48E7 dc.l $FFFE203C,$00000064,$53806600,$FFFC4CDF dc.l $7FFF33FC,$000800DF,$F09C33FC,$800800DF dc.l $F09A4E73,$0000FFFF,$FFFFFFFF,$FFFFFFFC dc.l $3C77D7DC,$707C7030,$1FFE3E3F,$F03E7C38 dc.l $1C3FF3CC,$3FFFFFFF,$FFFFFFFF,$FFFFFFFF dc.l $FFFFF999,$99999FF9,$99339399,$39393999 dc.l $9FFCFC3F,$F99C399E,$799FF3C9,$9FF99999 dc.l $999FFFFF,$FFFFFFFF,$FFFFFC3C,$3C3C3FF3 dc.l $F3911113,$99939999,$FFF9F93F,$F99C38FE dc.l $73FFF99F,$9TFFC3C3C,$3C3FFFFF,$FFFFFFFF dc.l $FFFFF000,$00000FF3,$F3901013,$99939838 dc.l $7FF8333F,$F8399C7E,$73FFF99E,$3FF00000 dc.l $000FFFFF,$FFFFFFFF,$FFFFFC3C,$3C3C3FF3 dc.l $F3929293,$99939939,$FFF9901F,$F9981F1E dc.l $73FFFC3C,$FFFC3C3C,$3C3FFFFF,$FFFFFFFF dc.l $FFFFF999,$99999FF9,$99339399,$39393999 dc.l $9FF99F3F,$F993C99E,$799FFC39,$9FF99999 dc.l $999FFFFF,$FFFFFFFF,$FFFFFFFF,$FFFFFFFC dc.l $3C73939C,$707C71C0,$1FFC3E1F,$F033CC38 dc.l $1C3FFE78,k!fck_row ; eine Zeile dekomprimieren move.l a5,(a2,d4) addq.w #1,d3 cmp.w d2,d3 blt pic_loop1 move.l bmhd_chunk,a5 ; masken-plane vorhanden? andi.b #1,17(a5) beq unp_loop move.l #mask_dummy,a5 jsr unpack_row bra unp_loop unpack_row: move.l d2,-(sp) ; d2 retten move.w width_bytes,d2 unp_loop1: tst.w d2 beq unpack_row_end clr.w d0 tst.w comp_flag bne unp_comp move.w width_bytes,d0 subq.w #1,d0 bra unp_loop2 unp_comp: move.b (a0)+,d0 ; befehlsbyte bmi packed ; glMepackt! unp_loop2: move.b (a0)+,(a5)+ subq.w #1,d2 ; bytes uebernehmen dbra d0,unp_loop2 bra unp_loop1 ; packed: neg.b d0 ; vorzeichen wechseln move.b (a0)+,d1 ; datenbyte unp_loop3: move.b d1,(a5)+ ; byte vervielfaeltigen subq.w #1,d2 dbra d0,unp_loop3 bra unp_loop1 ; unpack_row_end: move.l (sp)+,d2 rts ; unpack_end: rts ; ; ; chunk-daten ; align 4 bmhd_chunk: blk.l 1,0 cmap_chunk: blk.l 1,0 body_chunk: blk.l 1,0 planes_num: blk.w 1,0 comp_flag: blk.w 1,0 width_m3_bytes: blk.w 1,0 ; ; disk routinen fuer filehandling ; open_dos: move.l execbase,a6 ; Dos-Library oeffnen lea.l dosname,a1 jsr OpenLib(a6) move.l d0,dos_base ; basisadresse der rts ; dos-library ; open_file: move.l dos_base,a6 ; file oeffnen move.l #filename,d1 move.l #1005,d2 ; code fuer read jsr Open(a6) beq prg_end move.l d0,bif ; Handle-nummer rts ; load: move.l dos_base,a6 ; file laden move.l bif,d1 ; in d3 Anzahl Bytes jsr Read(a6) ; in d2 destinatnion-addr rts ; close_file: move.l dos_base,a6 ; file schliessen move.l bif,d1 ; handlenummer des files jsr Close(a6) rts ; allocate: move.l execbase,a6 ; speicher zuteilen lassen move.l #$10000,d1 ; code fuer "clear memory" move.l chunk_size,d0 ; anzahl bytes jsr AllocMem(a6) move.l d0,pic_buf ; adresse des datenpuffers rts ; ; free: move.l execbase,a6 ; speicher zurueckgeben move.l pic_buf,a1 ; adresse des speichers move.l chunk_size,d0 ; anzahl bytes jsr ForeeMem(a6) rts ; ; ; daten fuer file handling ; align 4 bif: dc.l 0 disk_buf: blk.b 10,0 align 4 pic_buf: blk.l 1,0 chunk_size: blk.l 1,0 mask_dummy: blk.b 128,0 ausdruck: move.l dos_base,a6 jsr openprinter jsr preferences jsr kommaprint move.l screen,RastPort add.l #84,Rastport move.l rastport,a1 move.l #2,d0 move.l gfxbase,a6 jsr SetDrMod(a6) move.l #79,ypos looping1: move.l #0,count move.l ypos,yp move.l #0,xp move.l #able,pufspei looper1: mp'ove.l yp,d1 move.l #202,zwi cmp.w height,d1 bge notesting move.l xp,d0 move.l Rastport,a1 move.l gfxbase,a6 jsr ReadPixel(a6) move.l d0,zwi move.l yp,d1 move.l xp,d0 move.l Rastport,a1 move.l gfxbase,a6 jsr WritePixel(a6) cmp.b #$39,$bfec01 bne notesting move.l dos_base,a6 move.l handle,d1 jsr close(a6) rts notesting: cmp.b #'c',modus bne notcolor jsr color jmp qwerty notcolor: jsr mono qwerty: subi.l #1,yp add.l #1,coqfQunt cmp.l #80,count bne looper1 cmp.b #'c',modus bne nocol jsr zeile move.l #able,pufspei jmp okay nocol: jsr zeile1 okay: move.l ypos,yp move.l #0,count add.l #1,xp move.l xp,d0 cmp.w width,d0 bne looper1 jsr kommaprint addi.l #80,ypos move.l ypos,d0 subi.l #79,d0 cmp.w height,d0 blt looping1 move.l dos_base,a6 move.l handle,d1 jsr close(a6) rts ;--------------------------------------- Zeile: move.l handle,d1 move.l #daable,d2 mover=S.l #647,d3 move.l dos_base,a6 jsr Write(a6) rts openprinter: move.l #Drucker,d1 move.l #1006,d2 jsr Open(a6) move.l d0,handle rts preferences: move.l handle,d1 move.l #pref,d2 move.l #6,d3 jsr Write(a6) ausgeben: move.l #titel,d2 move.l handle,d1 move.l #41,d3 jsr Write(a6) rts kommaprint: move.l handle,d1 move.l #kommas,d2 move.l #82,d3 jsr Write(a6) rts Entername: move.l #fenstname,d1 move.l #1005,d2 move.l dos_base,a6 jsr Open(a6) move.lsf d0,fensthdl move.l dos_base,a6 move.l fensthdl,d1 move.l #tename,d2 move.l #teend-tename,d3 jsr Write(a6) move.l #40,d3 move.l #filename,d2 move.l dos_base,a6 move.l fensthdl,d1 jsr Read(a6) move.l d0,speich lea.l filename,a0 subi.l #1,speich move.l speich,d0 clr.b 0(a0,d0) move.l fensthdl,d1 move.l dos_base,a6 jsr Close(a6) jmp continue mono: move.l dos_base,a6 move.l zwi,d2 and.l #1,d2 nottest: cmp.w #0,d2 beq noset move.b #140,puffertL jmp gut noset: move.b #32,puffer gut: move.l count,d0 move.l #buffer,a0 move.b puffer,(a0,d0) rts ;--------------------------------------- Zeile1: move.l handle,d1 move.l #buffer,d2 move.l #82,d3 move.l dos_base,a6 jsr Write(a6) rts color: move.l zwi,d0 cmp.l #202,d0 bne nonichtende move.l #none,a0 jmp nottest1 nonichtende: rol.l #1,d0 move.l #0,zwi move.l #0,adder move.l #colour_map,a0 move.w (a0,d0),zwi clr.l d0 move.w zwi,d0 and.w #$0f_H200,d0 ror.w #8,d0 move.w d0,adder clr.l d0 move.w zwi,d0 and.w #$f0,d0 ror.w #4,d0 add.w d0,adder clr.l d0 move.w zwi,d0 and.w #15,d0 add.w d0,adder clr.l d0 move.w adder,d0 ext.w d0 rol.l #3,d0 move.l #daten,d1 add.l d0,d1 move.l d1,a0 nottest1: move.l #0,d0 move.l pufspei,a1 kli: move.b (a0,d0),(a1,d0) add.l #1,d0 cmp.l #8,d0 bne kli add.l #8,pufspei rts even fenstname: dc.b 'CON:0/0/640/200/PosterPrint 1988 Volker Raum / M&T 68oooev(7 ; intuition-library jsr openlibrary(a6) move.l d0,a6 move.l d0,intuitionbase ; basisadresse der intuition- ; library ; jsr open_dos ; oeffnen der dos-library jsr entername continue: jsr open_file ; file oeffnen move.l #disk_buf,d2 move.l #8,d3 ; iff-header lesen jsr load ; um gesamte filelaenge zu move.l d2,a0 ; erfahren ; move.l 4(a0),d3 ; chunklaenge move.l d3,chunk_size ; (laenge des ges. files) jsr allocate ; speicher vom exec holen move.l chw̄unk_size,d3 ; anzahl bytes move.l pic_buf,d2 ; zieladresse jsr load ; file laden jsr close_file ; file schliessen ; jsr iff_search ; chunks etc. suchen ; move.l intuitionbase,a6 lea.l newscreen,a0 ; bildschirmdaten jsr openscreen(a6) ; bildschirm oeffnen move.l d0,screen ; datenliste des screens ; jsr pic_print ; geladenes bild zeigen jsr free ; benoetigten speicher ; zurueckgeben wait_loop: cmp.b #$33,$bfec01 bne notleft move.b #'c',modus jmp px%`lop notleft: cmp.b #$31,$bfec01 bne wait_loop move.b #'m',modus plop: jsr ausdruck wait_end: move.l intuitionbase,a6 ; bildschirm move.l screen,a0 ; schliessen jsr closescreen(a6) ; move.l execbase,a6 ; intuition-library move.l intuitionbase,a1 ; schliessen jsr closelibrary(a6) ; move.l gfxbase,a1 ; graphic-library jsr closelibrary(a6) ; schliessen ; move.l dos_base,a1 ; dos-library jsr closelibrary(a6) ; schliessen ; prg_end: move.l dos_base,a6 ; zuruey$nck in cli... jmp exit(a6) ; ; ; daten fuer screenaufbau und bidschirmverwaltung ; align 4 title: dc.b '68000er presents:',0 align 4 dosname: dc.b 'dos.library',0 align 4 intname: dc.b "intuition.library",0 align 4 gfxname: dc.b "graphics.library",0 align 4 gfxbase: blk.l 1,0 intuitionbase: blk.l 1,0 dos_base: blk.l 1,0 ; Newscreen: dc.w 0,0 ; X und Y position width: dc.w 320 ; breite height: dc.w 200 ; hoehe dc.w 5 ; tiefe (anzahl bitplanes) dc.b 0,1 ; DetailPen, BlzzKockPen modes: dc.w $0,$0f ; ViewModes, Screen Type dc.l font ; APTR font (scr. and wind.) dc.l title ; APTR Screen Title dc.l 0,0 ; APTR Gadgets, CustomBitMap ; font = 0 ; system-zeichensatz ; screen: dc.l 0 ; adresse der screen-datenliste ; even ; planes: blk.l 10,0 ; zwischenspeicher fuer bitplanes colour_map: blk.w 32,0 ; max. 32 farben a 1 word black_colour: blk.w 32,0 ; alle farben auf schwarz even ; planes_init: move.l screen,a0 ; suchen der anfangsadressen {g add.l #$c0,a0 ; der von openscreen move.l #planes,a1 ; bereitgestellten move.w planes_num,d0 ; bitplanes plane_loop: move.w d0,d1 mulu #4,d1 move.l (a0,d1),(a1,d1) dbra d0,plane_loop rts ; colours_init: move.l cmap_chunk,a0 ; aufbau einer colourmap add.l #8,a0 ; fuer den loadrgb4 befehl move.l #colour_map,a1 ; destination move #31,d7 ; 32 farben co_loop1: clr.w d0 ; d0 loeschen move.b (a0)+,d0 ; rot-wert and.b #$f0,d0 ; nur obere 4 bits lsl.w #4,d0 ; |AK high-byte,low-nibble move.b (a0)+,d0 ; gruen-wert and.w #$0ff0,d0 ; bits 11 bis 4 clr.w d1 ; hilfs-reg move.b (a0)+,d1 ; blau-wert lsr.b #4,d1 and.b #$0f,d1 ; nur bits 3 bis 0 or.b d1,d0 ; low-byte,low-nibble move.w d0,(a1)+ dbra d7,co_loop1 rts ; pic_print: jsr planes_init ; adressen der bitplanes jsr colours_init ; aufbau einer colourmap jsr black_colour_set jsr unpacker ; bild dekomprimieren jsr colour_set ; farben setzen rts ; colour_set: move.l  }/screen,a0 ; neue farbpalette add.l #44,a0 ; setzen move.l #colour_map,a1 ; unter verwendung move.w #32,d0 ; der loadrgb4 routine move.l gfxbase,a6 jsr LoadRGB4(a6) rts ; black_colour_set: move.l screen,a0 ; neue farbpalette add.l #44,a0 ; setzen move.l #black_colour,a1 ; unter verwendung move.w #32,d0 ; der loadrgb4 routine move.l gfxbase,a6 jsr LoadRGB4(a6) rts ; iff_search: move.l pic_buf,a0 ; ermitteln der add.l #4,a0 ; startadressen move.l a0,bmhd_ch ~>unk ; bitmap-header-chunk move.l 4(a0),d0 add.l d0,a0 add.l #8,a0 move.l a0,cmap_chunk ; colourmap-chunk iff_l1: move.l 4(a0),d0 ; suchen des body-chunks add.l d0,a0 add.l #8,a0 move.l #"BODY",d1 cmp.l (a0),d1 ; bereits Body-Chunk? bne iff_l1 move.l a0,body_chunk ; body-chunk move.l bmhd_chunk,a2 move.l a2,a1 add.l #16,a1 ; anzahl bitplanes clr.w d0 ; ermitteln move.b (a1),d0 cmp.w #6,d0 ; max. 6 bitplanes blt iff_cont move.w #6,d0 iff_cont: move.l #ne Nwscreen,a0 move.w d0,8(a0) subq.w #1,d0 move.w d0,planes_num ; in planes_num steht ; anzahl bitplanes -1 move.l a2,a1 add.l #18,a1 ; gepackt? move.b (a1),comp_flag move.l a2,a1 add.l #8,a1 ; breite clr.l d0 move.w (a1)+,d0 move.w d0,width clr.l d3 cmp.w #640,d0 blt iff_cont3 or.w #$8000,d3 iff_cont3: move.w d0,d1 and.w #7,d1 beq iff_cont2 or.w #8,d0 iff_cont2: divu #8,d0 move.w d0,width_bytes clr.l d0 move.w (a1),d0 move.w d0,height cmp.w #400,d0 jtblt iff_cont4 or.w #4,d3 iff_cont4: move.w d3,modes rts ; unpacker: move.l #planes,a2 ; grafikdaten dekomprimieren move.l body_chunk,a0 add.l #4,a0 move.l (a0)+,d7 ; chunk-groesse, anzahl bytes move.l a0,a3 add.l d7,a3 ; endadresse move.w planes_num,d2 ; anzahl bitplanes addq.w #1,d2 ; unp_loop: cmp.l a3,a0 ; endadresse erreicht? bge unpack_end ; ja! ; clr.w d3 pic_loop1: move.w d3,d4 ; ermitteln der mulu #4,d4 ; plane-adresse move.l (a2,d4),a5 jsr unpaLK $0126,$0000 DC.W $0128,$0000 DC.W $012A,$0000 DC.W $012C,$0000 DC.W $012E,$0000 DC.W $0130,$0000 DC.W $0132,$0000 DC.W $0134,$0000 DC.W $0136,$0000 DC.W $0138,$0000 DC.W $013A,$0000 DC.W $013C,$0000 DC.W $013E,$0000 BITPLANE1: DC.W $00E0,$0000 DC.W $00E2,$0000 BITPLANE2: DC.W $00E4,$0000 DC.W $00E6,$0000 DC.W $008E GRAPHIC_SCROLL: DC.W $5EE1 DC.W $0090,$1BFF DC.W $0108,0 DC.W $010A,0 DC.W $0092,$0038 DC.W $0094,$00D8 DC.W $0100,%1010001000000000 DC.W $0104,%0000000001000000 DC.W $0M$180,$0000 DC.W $0182,$0000 DC.W $0184 BLENDE: DC.W $0000 DC.W $0186 COLORZAHLENFARBE: DC.W $0AF DC.W $2911,$FFFE DC.W $0180,$0FFF DC.W $2A11,$FFFE DC.W $0180,$0777 DC.W $2B11,$FFFE DC.W $0180,$0AAA DC.W $2D11,$FFFE SPRITECOLORBASIS: DC.W $01A6,$0900 DC.W $01A4,$0444 DC.W $01AE,$0FFF DC.W $01AC,$0F00 DC.W $01B6,$000F DC.W $01B4,$0FFF DC.W $01BE,$00F0 DC.W $01BC,$0000 DC.W $3911,$FFFE DC.W $01A6,$0555 DC.W $01A4,$0777 DC.W $01AE,$0F45 DC.W $01AC,$0179 DC.W $01B6,$0FF3 DC.W $01B4,$NV8000D DC.W $01BE,$0776 DC.W $01BC,$0923 DC.W $4511,$FFFE DC.W $01A6,$00F0 DC.W $01A4,$0999 DC.W $01AE,$0147 DC.W $01AC,$0FD4 DC.W $01B6,$0DF3 DC.W $01B4,$039C DC.W $01BE,$00F9 DC.W $01BC,$0AAC DC.W $5111,$FFFE DC.W $01A6,$000F DC.W $01A4,$0CCC DC.W $01AE,$0FFF DC.W $01AC,$0F00 DC.W $01B6,$000F DC.W $01B4,$0FFF DC.W $01BE,$00F0 DC.W $01BC,$0000 DC.W $5F11,$FFFE DC.W $0180,$0777 DC.W $6011,$FFFE DC.W $0180,$0FFF DC.W $0100,$0000 ; ------ FENSTER 2 ---------- BITPLANE1_2: DC.W $0OaR+0E0,$0007 DC.W $00E2,$0000 BITPLANE2_2: DC.W $00E4,$0007 DC.W $00E6,$0000 BITPLANE2_3: DC.W $00E8,$0007 DC.W $00EA,$0000 BITPLANE2_4: DC.W $00EC,$0007 DC.W $00EE,$0000 BITPLANE2_5: DC.W $00F0,$0007 DC.W $00F2,$0000 DIWSTART: DC.W $008E,$2C81 DIWSTOP: DC.W $0090,$2BC1 MODULO: DC.W $0108,0 DC.W $010A,0 DFSTART: DC.W $0092,$0038 DFSTOP: DC.W $0094,$00D0 DC.W $0104,000 DC.W $6111,$FFFE COLORS: DC.W $0180,$0000 DC.W $0182,$0BA3 DC.W $0184,$00FF DC.W $0186,$000F DC.W $0188,$00FF DC.W $018AP1{,$0ECA DC.W $018C,$0FF0 DC.W $018E,$099A DC.W $0190,$0F00 DC.W $0192,$0FFF DC.W $0194,$0F0F DC.W $0196,$0FF0 DC.W $0198,$00FF DC.W $019A,$0333 DC.W $019C,$0555 DC.W $019E,$0777 DC.W $01A0,$0999 DC.W $01A2,$0AAA DC.W $01A4,$0CCC DC.W $01A6,$0EEE DC.W $01A8,$03DE DC.W $01AA,$0F20 DC.W $01AC,$0F40 DC.W $01AE,$0F60 DC.W $01B0,$0F80 DC.W $01B2,$0FA0 DC.W $01B4,$0FC0 DC.W $01B6,$0FE0 DC.W $01B8,$02F0 DC.W $01BA,$04F0 DC.W $01BC,$06F0 DC.W $01BE,$08F0 DC.W $6211,$FFFE DC.W $0100 W: GRAPHIQ;C_BITS: DC.W %000000100000000 DC.W $F411,$FFFE DC.W $FFDF,$FFFE DC.W $0090,$2AC1 DC.W $2B11,$FFFE DC.W $0180,$0FFF DC.W $2C11,$FFFE DC.W $0180,$0AAA DC.W $2D11,$FFFE DC.W $0180,$0666 DC.W $FFFF,$FFFE COPPERLISTENDE: PRITECOLORBASIS: DC.W $01A6,$0900 DC.W $01A4,$0444 DC.W $01AE,$0FFF DC.W $01AC,$0F00 DC.W $01B6,$000F DC.W $01B4,$0FFF DC.W $01BE,$00F0 DC.W $01BC,$0000 DC.W $3911,$FFFE DC.W $01A6,$0555 DC.W $01A4,$0777 DC.W $01AE,$0F45 DC.W $01AC,$0179 DC.W $01B6,$0FF3 DC.W $01B4,$iQhe = 256 (oder umgekehrt) [ ] Bild schmaeler oder breiter (fuer Bobs oder Sprites zu suchen) < > Modulo auf oder ab zaehlen Space Abstand der BitPlanes wird automatisch eingestellt. z.b. du drueckst Space bei $40000 so wird Plane2 bei $40000 + $8000, Plane3 bei $40000 + 16000 usw. eingestellt. TAB Abspeichern als IFF Bild Cursor Feineinstellung Tasten Zehnerblock: =========== Enter Farbe wird hochgezaehlt (0-31) - Farbe wird runtergezaehlt 7/4 Rotwert +/- 8/5ݟ Gruenwert +/- 9/6 Blauwert +/- . Zahlen der Farbwerte ein/aus Ich hoffe Du kannst die Disk brauchen. Wenn sie Dir gefaellt, ruf mich kurz an. Viel Spass Cat (!) n zuschalten bzw. abschalten 4 5 6 Verknuepfung der BitPlanes fuer Ham oder Halfbrite ein -> aus; aus -> ein 7 Alle BitPlanes auf gleiche Adresse setzen R Alt Rechte Alt Taste -> eine Speicher Seite vor L Alt Linke Alt Taste -> eine Speicher Seite zurueck F 10 Ende F 2 Hoehe = 200 F 3 HoezSd= -30 - 186 ; ; offsets exec ; OpenLib = -30 - 378 OpenLibrary = -30 - 378 CloseLibrary = -30 - 384 AllocMem = -30 - 168 FreeMem = -30 - 180 ; ; offset graphics (gfx) ; LoadRGB4 = -30 - 162 ReadPixel = -30 - 288 WritePixel = -30 - 294 SetDrMod = -30 - 324 ; ; offsets dos ; Open = -30 Close 8";)^mpos: dc.w 0 data: dc.l 100000 ;clear dma cmp.w #0,14(a6) bne.s chan3 ;no oneshot-sample move.w #1,14(a6) ;allow resume (later) chan3: bsr newrou move.w (a6),(a4) move.w (a6),16(a6) ;save note for effect move.l 4(a6),0(a5) ;set samplestart move.w 8(a6),4(a5) ;set samplelength move.w (a6),6(a5) ;set period move.w 22(a6),d0 or.w d0,enbits ;store dma-bit move.w 18(a6),20(a6) ;volume trigger chan4: rts datach0: dc.w 0,0,0,0,0,0,0,0,0,0,0,1 datach1: dc.w 0,0,0,0,0,u) = -30 - 6 Read = -30 - 12 Write = -30 - 18 Exit = -30 - 114 ; ; ; einzige absolute adresse des amiga-betriebsystems: ; ExecBase = 4 ; even ; ; ; beginn des hauptprogramms ; start: clr.l d0 move.l ExecBase,a6 ; oeffnen der lea.l gfxname,a1 ; gfx-library jsr openlibrary(a6) move.l d0,gfxbase ; basisadresse der gfx-library ; move.l execbase,a6 ; oeffnen der lea intname,a1 Ac00000011110000,D0 CMP.W #$00F0,D0 BEQ ZURUECK ADD.W #$0010,BUFFERFARBE+2 JSR WRITECHANGECOLOR JSR HOLEFARBE RTS ; ----------------------------------------------- GRUEN_MINUS: MOVE.W BUFFERFARBE+2,D0 AND.W #%0000000011110000,D0 CMP.W #$0000,D0 BEQ ZURUECK SUB.W #$0010,BUFFERFARBE+2 JSR WRITECHANGECOLOR JSR HOLEFARBE RTS ; ----------------------------------------------- BLAU_PLUS: MOVE.W BUFFERFARBE+2,D0 AND.W #%0000000000001111,D0 CMP.W #$000F,D0 BEQ ZURUECK ADD.W #$0001,BUFFERFARBE+2B>vv JSR WRITECHANGECOLOR JSR HOLEFARBE RTS ; ----------------------------------------------- BLAU_MINUS: MOVE.W BUFFERFARBE+2,D0 AND.W #%0000000000001111,D0 CMP.W #$0000,D0 BEQ ZURUECK SUB.W #$0001,BUFFERFARBE+2 JSR WRITECHANGECOLOR JSR HOLEFARBE RTS ; ------------------------------------------------ ; SCHREIBT DIE GEAENDERTE FARBE IN DIE FARBPALETTE ; ------------------------------------------------ WRITECHANGECOLOR: LEA FARBEN-2,A0 MOVE.L COLORNUMMER,D0 MULU #2,D0 ADD.L D0,A0 MOVE.W BC)utUFFERFARBE+2,(A0) JSR PALETTEWRITEN RTS ; --------------------------------------- RESETPOINTER: CMP.B #$F1,KEYBOARD BEQ RESET_POINTER RTS RESET_POINTER: MOVE.L PLANEZEIGER,D0 MOVE.L D0,PLANEZEIGER+4 MOVE.L D0,PLANEZEIGER+8 MOVE.L D0,PLANEZEIGER+12 MOVE.L D0,PLANEZEIGER+16 JSR PLANES_WRITEN JSR PLANEPRINT JSR COPY_CL RTS ; --------------------------------------- OFSETS: DC.B 0,2,6,10,14,18,22,26,30 DC.B 38,42,46,50,54,58,62,66 DC.B 74,78,82,86,90,94,98,102 DC.B 110,114,118,122,126,13D=RB0,134,138 ; --------------------------------------- ; -------- VARIABLEN --------------------- GFXNAME: DC.B 'graphics.library',0 DOSNAME: DC.B 'dos.library',0 INTNAME: DC.B 'intuition.library',0 EVEN GFXBASE: DC.L 0 DOSBASE: DC.L 0 INTBASE: DC.L 0 CLISTE: DC.L 0 FILE: DC.L 0 ; ---------------------------------- EVEN FARBEN: DC.W $000,$ECA,$E00,$A00,$D80,$FE0,$8F0,$080 DC.W $0B6,$0DD,$0AF,$07C,$00F,$70F,$C0E,$C08 DC.W $620,$E52,$A52,$FCA,$333,$444,$555,$666 DC.W $777,$888,$999,$AAA,E$CCC,$DDD,$EEE,$FFF DPAINTCOLORS: DC.W $000,$ECA,$E00,$A00,$D80,$FE0,$8F0,$080 DC.W $0B6,$0DD,$0AF,$07C,$00F,$70F,$C0E,$C08 DC.W $620,$E52,$A52,$FCA,$333,$444,$555,$666 DC.W $777,$888,$999,$AAA,$CCC,$DDD,$EEE,$FFF ; -------------- IFF_HEADER: DC.B 'FORM' IFF_LENGHT: DC.L 0 DC.B 'ILBMBMHD' DC.L $14 IFF_WIDTH: DC.W 0 IFF_HEIGHT: DC.W 0 DC.L 0 IFF_BITPL: DC.B 0 DC.B 0,0,0 DC.W 0 IFF_VER: DC.W $0A0B DC.L 0 DC.B 'CMAP' DC.L $0060 IFF_COLORS: BLK 96,0 DC.B 'BODY' BODY_LENGHT: DC.L 0 EVEN WFW=eINDOWPOINTER: DC.L 0 MESSAGEPORT: DC.L 0 MESSAGE: DC.L 0 ; ----------------- ; WINDOW PARAMETER ; ----------------- WINDOWDATEN: DC.W 447 ;X-POSITION DC.W 0 ;Y-POSITION DC.W 192 ;BREITE DC.W 56 ;HOEHE DC.B 1 ;SCHRIFTFARBE DC.B 3 ;HINTERGRUNDFARBE DC.L $40+$8000+$10000 ;IDCMP-FLAGS DC.L $1000 ;FLAGS DC.L 0 ;FIRSTGADGET DC.L 0 ;CHECKMARK DC.L WINDOWNAME ;ZEIGER AUF FENSTER-TITEL DC.L 0 ;SCREENZEIGER DC.L 0Glz ;KEINE EIGENE BITMAPS DC.W 0 ;MINESTBREITE DC.W 0 ;MINESTHOEHE DC.W 0 ;MAXIMALE BREITE DC.W 0 ;MAXIMALE HOEHE DC.W 1 ;SCREENTYPE EVEN WINDOWNAME: DC.B ' SEARCHER V1.00',0 ;------------------------------------------------------- EVEN RASTPORT: BLK.B 90,0 EVEN ;----------------------------------------------------- BITMAP: DC.W 84 ; Breite der BitMap in Byte DC.W 60 ; Anzahl der Zeilen des BitMaps DC.B $FHB/F ; RESERVIERT DC.B 02 ; ANZAHL DER BITPLANES DC.W $FFFF ; RESERVIERT PLANE1: DC.L $00000 ; Adresse des 1 BitMaps PLANE2: DC.L $00000 ; Adresse des 2 BitMaps DC.L $00000 ; Adresse des 3 BitMaps | DC.L $00000 ; Adresse des 4 BitMaps | NICHT DC.L $00000 ; Adresse des 5 BitMaps | BENUTZT DC.L $00000 ; Adresse des 6 BitMaps | ;------------------------- EVEN OLDCOPPER: DC.L 0 BITMAP1: DC.L 0 BITMAP2: DC.L 0 COIԑUNTER: DC.L 0 SPRITE1: DC.L 0 SPRITE1_HILFSREG: DC.L 0 KEYSPEED: DC.L 7000 KEYBOARD_COUNTER: DC.L 10000 KEYBOARD_COUNTER2: DC.L 10000 KEYBOARD_COUNTER3: DC.L 10000 PLANEZEIGER: DC.L 0,0,0,0,0 PLANEZEIGERBUFFER: DC.L 0,0,0,0,0 POINTERBYTES: BLK.B 5,0 POINTERBYTES2: BLK.B 5,0 PLANEBITS: DC.B '0' PLANE_ZAHL: DC.B '5' COUNT_OFFSET: DC.L 40 SPACEOFFSET: DC.L 8000 DFBREITE: DC.L 0 BUFFERFARBE: DC.L 0 NAMECOUNTER: DC.L 0 EVEN ZIEL: BLK.B 6,0 DFSTARTPOINTER: DC.L $38 DFSTOPPOINTER: DC.L $D0 J*5MODULOPOINTER: DC.L 0 MODULOBREITE: DC.L 0 GESAMT_BREITE: DC.L 0 PLANE_HOEHE: DC.L 200 P1: DC.L 0 P2: DC.L 0 P3: DC.L 0 P4: DC.L 0 P5: DC.L 0 IFF_BYTE: DC.L 0 COLORNUMMER: DC.L 01 HOEHENTEST: DC.B 00 COLORBYTE: DC.B 0 ; ------------ TEXT ------------- CHANGETEXT: DC.B 'C' TEXT1: DC.B 'BITPLANE-POINTER' TEXT2: DC.B '1 OFF CO $000000' TEXT3: DC.B '12345' TEXT4: DC.B 'DU' TEXT5: DC.B 'SG' TEXT6: DC.B 'ON ' TEXT7: DC.B 'OFF' TEXT8: DC.B 'MODUS. LORES' DC.B 'BITPLANES 00' DC.B 'DFSTART 00K"156' DC.B 'DFSTOP 0208' DC.B 'MODULO 0000' DC.B 'C.SPEED 0000' TEXT10: DC.B 'HI' TEXT11: DC.B 'LO' TEXT12: DC.B 'VIEW BREITE' DC.B 'MODULO BREITE' DC.B 'GESAMT BREITE' DC.B 'B.PLANE HOEHE' TEXT17: DC.B 'BITPLANEFINDER V1.0 (C) ' ZAHLEN: DC.B '01020304050607080910111213141516' DC.B '17181920212223242526272829303132' TEXT_RGB: DC.B 'RGB' ; ---------------------------------- EVEN Y: COPPERLIST: DC.W $0100,$FFFE SPRITEPOINTER: DC.W $0120,$0000 DC.W $0122,$0000 DC.W $0124,$0000 DC.W6n{CMP.B #5,IFF_BITPL BEQ L47 L47: MOVE.L IFF_BYTE,D0 ADD.L D0,P1 ADD.L D0,P2 ADD.L D0,P3 ADD.L D0,P4 ADD.L D0,P5 DBF D7,L48 CLOSE_FILE: MOVE.L FILE,D1 JSR CLOSE(A6) L46: RTS WL: MOVE.L D7,-(A7) MOVE.L FILE,D1 MOVE.L IFF_BYTE,D3 JSR WRITE(A6) BEQ CLOSE_FILE MOVE.L (A7)+,D7 RTS ; ------------------------------- HOEHENCHANGE: CMP.B #$5B,KEYBOARD BEQ NORMAL CMP.B #$59,KEYBOARD BEQ PAL RTS NORMAL: MOVE.L #200,PLANE_HOEHE JSR SA1 RTS PAL: MOVE.L #256,PLANE_HOEHE JSR SA1 RTS ; ---------------7_nt----------------------- ; AENDERN DER AKTUELLEN BITPLANE-HOEHEN ; -------------------------------------- CHANGEHOEHE: CMP.B #$55,KEYBOARD BEQ PRUEFE RTS PRUEFE: CMP.B #00,HOEHENTEST BEQ HOEHEON NOT.B HOEHENTEST MOVE.L PLANEZEIGERBUFFER,PLANEZEIGER MOVE.L PLANEZEIGERBUFFER+4,PLANEZEIGER+4 MOVE.L PLANEZEIGERBUFFER+8,PLANEZEIGER+8 MOVE.L PLANEZEIGERBUFFER+12,PLANEZEIGER+12 MOVE.L PLANEZEIGERBUFFER+16,PLANEZEIGER+16 CMP.L #0000,PLANE_HOEHE BNE SA1 MOVE.L #1,PLANE_HOEHE SA1: JSR PLANEPRIN8T JSR PLANES_WRITEN JSR PLANEHOEHE V10: MOVE.L #02,D0 MOVE.L #01,D5 JSR ABPEN JSR CHANGEPRINT JSR COPY_CL RTS ; ----------------------- HOEHEON: NOT.B HOEHENTEST MOVE.L PLANEZEIGER,PLANEZEIGERBUFFER MOVE.L PLANEZEIGER+4,PLANEZEIGERBUFFER+4 MOVE.L PLANEZEIGER+8,PLANEZEIGERBUFFER+8 MOVE.L PLANEZEIGER+12,PLANEZEIGERBUFFER+12 MOVE.L PLANEZEIGER+16,PLANEZEIGERBUFFER+16 MOVE.L #000,PLANE_HOEHE JSR PLANEHOEHE MOVE.L #01,D0 MOVE.L #02,D5 JSR ABPEN JSR CHANGEPRINT JSR COPY_CL RTS ; ----------9rw----------------------- CHANGEPRINT: MOVE.L #RASTPORT,A1 MOVE.L #260-24,D0 MOVE.L #51,D1 JSR MOVE(A6) MOVE.L #RASTPORT,A1 MOVE.L #CHANGETEXT,A0 MOVE.L #1,D0 JSR TEXT(A6) MOVE.L #02,D0 MOVE.L #01,D5 JSR ABPEN RTS ; -------------------------------------- ; ZAEHLT DIE PLANEHOEHE JE NACH TASTE ; -------------------------------------- HOEHE_HINUNTER: ADDQ.L #1,PLANE_HOEHE MOVE.L #100,D4 MOVEM.L D0-D7/A0-A6,-(A7) JSR PLANEHOEHE MOVEM.L (A7)+,A0-A6/D0-D7 RTS ; ---------------------------- H:*>OEHE_HINAUF: ADDQ.L #1,PLANE_HOEHE MOVE.L #4000,D4 MOVEM.L D0-D7/A0-A6,-(A7) JSR PLANEHOEHE MOVEM.L (A7)+,A0-A6/D0-D7 RTS ; ---------------------------------------- ; PRINTET DIE ZAHLEN IN DIE FARBENPALETTE ; ---------------------------------------- COLORPRINT: CMP.B #$87,KEYBOARD BEQ PRINTZAHLEN RTS PRINTZAHLEN: CMP.B #00,COLORBYTE BEQ PRINTZAHLEN2 MOVE.L #0,D0 MOVE.L #0,D5 JSR ABPEN MOVE.L #RASTPORT,A1 MOVE.L #0,D0 MOVE.L #3,D1 MOVE.L #195,D2 MOVE.L #50,D3 JSR RECFILL(A6) MOVE.L #2;(,D0 MOVE.L #1,D5 JSR ABPEN NOT.B COLORBYTE RTS PRINTZAHLEN2: NOT.B COLORBYTE MOVE.L #03,D2 MOVE.L #ZAHLEN,A2 MOVE.L #13,D5 R122: MOVE.L #07,D3 MOVE.L #2,D4 R123: MOVE.L #RASTPORT,A1 MOVE.L D5,D1 MOVE.L D4,D0 JSR MOVE(A6) MOVE.L #RASTPORT,A1 MOVE.L #02,D0 MOVE.L A2,A0 JSR TEXT(A6) ADDQ.L #2,A2 ADD.L #24,D4 DBRA D3,R123 ADD.L #12,D5 DBRA D2,R122 RTS ; ----------------------------- ; SCHREIBT DIE AKTUELLE FARBE ; ----------------------------- PRINTCOLORNUMMER: CMP.B #$79,KEYBOARD BEQ<z0 COLORPLUS CMP.B #$6B,KEYBOARD BEQ COLORMINUS RTS COLORPLUS: CMP.L #32,COLORNUMMER BEQ ZURUECK ADDQ.L #1,COLORNUMMER JSR PRINTCOLORN1 RTS COLORMINUS: CMP.L #01,COLORNUMMER BEQ ZURUECK SUBQ.L #1,COLORNUMMER JSR PRINTCOLORN1 RTS PRINTCOLORN1: JSR HOLEFARBE LEA COLORNUMMER,A0 JSR HEX_DEZ MOVE.L #RASTPORT,A1 MOVE.L #229,D0 MOVE.L #27,D1 JSR MOVE(A6) MOVE.L #RASTPORT,A1 MOVE.L #ZIEL+3,A0 MOVE.L #02,D0 JSR TEXT(A6) RTS ; ------------------------------------------- ; HOLT DIE AUSGWAEHLTE FA=~RBE AUS DER TABELLE ; ------------------------------------------- HOLEFARBE: LEA FARBEN-2,A0 MOVE.L COLORNUMMER,D0 MULU #2,D0 ADD.L D0,A0 CLR.L D0 MOVE.W (A0),BUFFERFARBE+2 LEA BUFFERFARBE,A0 JSR HEX_ASCII MOVE.L #RASTPORT,A1 MOVE.L #251,D0 MOVE.L #27,D1 JSR MOVE(A6) MOVE.L #RASTPORT,A1 MOVE.L #BUFFER+5,A0 MOVE.L #3,D0 JSR TEXT(A6) RTS ; --------------------------------------------- ; SCHREIBT COLORTABELLE IN SPRITECOLORSREGISTER ; AUFRUF: ; IN D0 STEHT WELCHES FARBREGISTER ; IN D1 >"STEHT WELCHE RGB WERTE ; --------------------------------------------- WRITECOLOR: MOVE.L #SPRITECOLORBASIS,A0 MOVE.L #OFSETS,D2 ADD.L D0,D2 MOVE.L D2,A1 CLR.L D2 MOVE.B (A1),D2 ADD.L D2,A0 MOVE.W D1,(A0) MOVE.L #COLORS-2,A0 MULU #4,D0 ADD.L D0,A0 MOVE.W D1,(A0) JSR COPY_CL RTS ; ------------------------------------- ; FARBPALETTE IN COPPERLISTE EINTRAGEN ; ------------------------------------- PALETTEWRITEN: CLR.L D1 MOVE.L #01,D0 MOVE.L #FARBEN,A0 C121: MOVE.W (A0),D1 MOVEM.L D0-?AmD7/A0-A6,-(SP) JSR WRITECOLOR MOVEM.L (SP)+,D0-D7/A0-A6 ADDQ.L #2,A0 ADDQ.L #1,D0 CMP.L #33,D0 BNE C121 JSR COPY_CL RTS ; ---------------------------------------- ; EINSTELLEN DER GEWUENSCHTEN FARBE ; ---------------------------------------- COLORCHANGE: CMP.B #$85,KEYBOARD BEQ ROT_PLUS CMP.B #$A5,KEYBOARD BEQ ROT_MINUS CMP.B #$83,KEYBOARD BEQ GRUEN_PLUS CMP.B #$A3,KEYBOARD BEQ GRUEN_MINUS CMP.B #$81,KEYBOARD BEQ BLAU_PLUS CMP.B #$A1,KEYBOARD BEQ BLAU_MINUS RTS ; -------------------@u\---------------------------- ROT_PLUS: MOVE.W BUFFERFARBE+2,D0 AND.W #%1111111100000000,D0 CMP.W #$0F00,D0 BEQ ZURUECK ADD.W #$0100,BUFFERFARBE+2 JSR WRITECHANGECOLOR JSR HOLEFARBE RTS ; ----------------------------------------------- ROT_MINUS: MOVE.W BUFFERFARBE+2,D0 AND.W #%1111111100000000,D0 CMP.W #$0000,D0 BEQ ZURUECK SUB.W #$0100,BUFFERFARBE+2 JSR WRITECHANGECOLOR JSR HOLEFARBE RTS ; ----------------------------------------------- GRUEN_PLUS: MOVE.W BUFFERFARBE+2,D0 AND.W #%00-k6TARTPOINTER+2,DFSTART+2 MOVE.W DFSTOPPOINTER+2,DFSTOP+2 LEA DFSTARTPOINTER,A0 JSR HEX_DEZ MOVE.L #RASTPORT,A1 MOVE.L #497,D0 MOVE.L #27,D1 JSR MOVE(A6) MOVE.L #RASTPORT,A1 MOVE.L #ZIEL+1,A0 MOVE.L #04,D0 JSR TEXT(A6) LEA DFSTOPPOINTER,A0 JSR HEX_DEZ MOVE.L #RASTPORT,A1 MOVE.L #497,D0 MOVE.L #35,D1 JSR MOVE(A6) MOVE.L #RASTPORT,A1 MOVE.L #ZIEL+1,A0 MOVE.L #04,D0 JSR TEXT(A6) RTS ; --------------------------------- DFSTOPER: CMP.B #203,KEYBOARD BEQ DFMINUS CMP.B #201,KEYBOARD BEQ DFPLU.,S RTS DFMINUS: CMP.L #69,DFSTOPPOINTER BCS ZURUECK SUB.L #8,DFSTOPPOINTER JSR DATAFETCH_SETZEN JSR DFVIEWLORES JSR MODULO_NULL JSR OFFSET RTS ; --------------------- DFPLUS: CMP.L #208,DFSTOPPOINTER BCC ZURUECK ADD.L #8,DFSTOPPOINTER JSR DATAFETCH_SETZEN JSR DFVIEWLORES JSR MODULO_NULL JSR OFFSET RTS ; ------------------------------------------------------------ ; ERZEUGT AUS DEN DATAFETCHWERTEN DIE SICHTBARE GRAPHICBREITE ; -----------------------------------------------------------/O- DFVIEWLORES: BTST #15,GRAPHIC_BITS BEQ C140 LEA DFTABELLE2,A0 LEA DFBREITE_TABELLE2,A1 JMP C141 C140: LEA DFBREITE_TABELLE,A1 LEA DFTABELLE,A0 C141: MOVE.L #18,D0 CLR.L D1 X140: MOVE.W (A0),D1 CMP.L DFSTOPPOINTER,D1 BNE C10 MOVE.W (A1),DFBREITE+2 JMP DFPRINT C10: ADDQ.L #2,A0 ADDQ.L #2,A1 DBRA D0,X140 DFPRINT: X130: LEA DFBREITE,A0 JSR HEX_DEZ MOVE.L #392,D0 MOVE.L #27,D1 MOVE.L #RASTPORT,A1 JSR MOVE(A6) MOVE.L #RASTPORT,A1 MOVE.L #4,D0 MOVE.L #ZIEL+1,A0 JSR TEXT(A6) RTS DFTABELLE:0Bo DC.W 208,200,192 DC.W 184,176,168 DC.W 160,152,144 DC.W 136,128,120 DC.W 112,104,096 DC.W 088,080,072 DC.W 064 DFTABELLE2: DC.W 212,204,196 DC.W 188,180,172 DC.W 164,156,148 DC.W 140,132,124 DC.W 116,108,100 DC.W 092,084,076 DC.W 068 DFBREITE_TABELLE: DC.W 320,304,288 DC.W 272,256,240 DC.W 224,208,192 DC.W 176,160,144 DC.W 128,112,096 DC.W 080,064,048 DC.W 032 DFBREITE_TABELLE2: DC.W 640,608,576 DC.W 544,512,480 DC.W 448,416,384 DC.W 352,320,288 DC.W 256,224,192 DC.W 160,128,0rv|O`?ySYS:System/DiskCopy modulesp1Z[96 DC.W 064 ; ---------------------------------- ; GIBT DIE GESAMT BREITE AUS ; ---------------------------------- GESAMTBREITE: MOVE.L DFBREITE,D0 ADD.L MODULOBREITE,D0 MOVE.L D0,GESAMT_BREITE LEA GESAMT_BREITE,A0 JSR HEX_DEZ MOVE.L #392,D0 MOVE.L #43,D1 MOVE.L #RASTPORT,A1 JSR MOVE(A6) MOVE.L #RASTPORT,A1 MOVE.L #4,D0 MOVE.L #ZIEL+1,A0 JSR TEXT(A6) RTS ; --------------------------------------- OFFSET: MOVE.L GESAMT_BREITE,D0 DIVU #8,D0 MOVE.L D0,COUNT_OFFSET LEA COUNT_OFFSET,A0 JSR2 HEX_DEZ MOVE.L #196,D0 MOVE.L #51,D1 MOVE.L #RASTPORT,A1 JSR MOVE(A6) MOVE.L #RASTPORT,A1 MOVE.L #4,D0 MOVE.L #ZIEL+1,A0 JSR TEXT(A6) RTS ; --------------------------------------------- ; AUSGABE DER PLANE HOEHE ; --------------------------------------------- PLANEHOEHE: LEA PLANE_HOEHE,A0 JSR HEX_DEZ MOVE.L #392,D0 MOVE.L #51,D1 MOVE.L #RASTPORT,A1 JSR MOVE(A6) MOVE.L #RASTPORT,A1 MOVE.L #4,D0 MOVE.L #ZIEL+1,A0 JSR TEXT(A6) RTS ; ----------------------------------- ; ERZEu6:ƫ?s99`9`999ssss` g`pp>????SYS:System/DiskCopy Disk.infop3݆UGT COLORS FUER IFF HAEDER ; ----------------------------------- MAKE_COLORS: LEA FARBEN,A0 LEA IFF_COLORS,A1 MOVE #31,D7 U10: MOVE (A0),D0 LSR #4,D0 AND #$F0,D0 MOVE.B D0,(A1)+ MOVE (A0),D0 AND #$F0,D0 MOVE.B D0,(A1)+ MOVE (A0)+,D0 LSL #4,D0 MOVE.B D0,(A1)+ DBF D7,U10 RTS ; -------------------------------------------------- ; SPEICHERT DIE EINGESCHALTENEN BITPLANES AUF DISK ; -------------------------------------------------- SAVE_BITPLANES: CMP.B #$75,$BFEC01 BEQ SAVEN RTS SAVEN: J4SR COPPERLISTOFF JSR SAVEROUT MOVE.L GFXBASE,A6 JSR COPPERLISTON RTS SAVEROUT: BSR MAKE_COLORS MOVE.L PLANEZEIGER,P1 MOVE.L PLANEZEIGER+4,P2 MOVE.L PLANEZEIGER+8,P3 MOVE.L PLANEZEIGER+12,P4 MOVE.L PLANEZEIGER+16,P5 MOVE.L GESAMT_BREITE,D0 MOVE.L D0,D3 ASR.L #3,D3 MOVE.L D3,IFF_BYTE MOVE.W PLANE_HOEHE+2,D1 MOVE.W D1,IFF_HEIGHT MOVE.W D0,IFF_WIDTH CLR.L D2 MOVE.B PLANEBITS,D2 SUB.B #$30,D2 MOVE.B D2,IFF_BITPL MULS D1,D3 MULS D2,D3 MOVE.L D3,BODY_LENGHT ADD.L #144,D3 MOVE.L D3,IFF_LENG5X˽HT MOVE.L #TEXTBUFFER,D1 MOVE.L #1006,D2 MOVE.L DOSBASE,A6 JSR OPEN(A6) CMP.L #0,D0 BEQ L46 MOVE.L D0,FILE MOVE.L DOSBASE,A6 MOVE.L FILE,D1 MOVE.L #IFF_HEADER,D2 MOVE.L #152,D3 JSR WRITE(A6) BEQ CLOSE_FILE ; ---------------------------------- MOVE.W IFF_HEIGHT,D7 SUBQ #1,D7 L48: MOVE.L P1,D2 BSR WL CMP.B #1,IFF_BITPL BEQ L47 MOVE.L P2,D2 BSR WL CMP.B #2,IFF_BITPL BEQ L47 MOVE.L P3,D2 BSR WL CMP.B #3,IFF_BITPL BEQ L47 MOVE.L P4,D2 BSR WL CMP.B #4,IFF_BITPL BEQ L47 MOVE.L P5,D2 BSR WL "Ua #$FF,HOEHENTEST BNE T03 JSR HOEHE_HINUNTER MOVE.L COUNT_OFFSET,D0 MOVE.B #00,D2 JSR PLANES_WRITEN2 JSR PLANEPRINT JSR COPY_CL RTS T03: MOVE.L COUNT_OFFSET,D0 MOVE.B #01,D2 JSR PLANES_WRITEN2 JSR PLANEPRINT JSR COPY_CL RTS ; ----------------------- SCROLL_LINKS: CMP.B #00,HOEHENTEST BNE ZURUECK MOVE.L #900,D4 MOVE.L #02,D0 MOVE.B #00,D2 JSR PLANES_WRITEN2 JSR PLANEPRINT JSR COPY_CL RTS ; ----------------------- SCROLL_RECHTS: CMP.B #00,HOEHENTEST BNE ZURUECK MOVE.L #900,D4 MOVE.L #02#,D0 MOVE.B #01,D2 JSR PLANES_WRITEN2 JSR PLANEPRINT JSR COPY_CL RTS ; ----------------------------------------------- ; SCHREIBT DIE PLANEZEIGER IN DIE COPPERLIST ; ----------------------------------------------- PLANES_WRITEN: MOVE.L #09,D0 LEA PLANEZEIGER,A0 LEA BITPLANE1_2+2,A2 X60: MOVE.W (A0)+,(A2) ADDQ.L #4,A2 DBRA D0,X60 RTS ; ----------------------------------------------- ; PLANEZEIGER UND POINTERBYTES VERKNUEPFEN ; ----------------------------------------------- PLANES_WRI$5ocTEN2: MOVE.L D4,KEYBOARD_COUNTER3 CMP.B #'0',PLANEBITS BEQ RETURN CLR.L D1 MOVE.B PLANEBITS,D1 SUB.L #49,D1 LEA POINTERBYTES,A0 LEA PLANEZEIGER,A1 X70: CMP.B #$FF,(A0)+ BNE X71 CMP.B #01,D2 BEQ X80 ADD.L D0,(A1) JMP X71 X80: SUB.L D0,(A1) X71: ADDQ.L #4,A1 DBRA D1,X70 JSR PLANES_WRITEN RTS ; ------------------------------------------------ ; PRINTROUTINE FUER AUSGABE DER PLANEZEIGER ; ------------------------------------------------ PLANEPRINT: ; 32109876543210987654321098765%@64321 MOVE.L #%000000000000001111111111111111111,D0 AND.L D0,PLANEZEIGER AND.L D0,PLANEZEIGER+4 AND.L D0,PLANEZEIGER+8 AND.L D0,PLANEZEIGER+12 AND.L D0,PLANEZEIGER+16 MOVE.L #PLANEZEIGER,A4 MOVE.L #19,D2 MOVE.L #04,D3 X90: MOVE.L A4,A0 MOVEM.L D0-D7/A0-A6,-(A7) JSR HEX_ASCII MOVEM.L (A7)+,A0-A6/D0-D7 MOVE.L #RASTPORT,A1 MOVE.L #622,D0 MOVE.L D2,D1 JSR MOVE(A6) MOVE.L #6,D0 MOVE.L #BUFFER+2,A0 MOVE.L #RASTPORT,A1 JSR TEXT(A6) ADDQ.L #4,A4 ADDQ.L #8,D2 DBRA D3,X90 RTS ; ----------------&xi~------------------------ ; ADDIERT EIN OFFSET ZU DEN PLANEZEIGERN ; ---------------------------------------- OFFSET8000: CMP.B #'0',PLANEBITS BEQ ZURUECK CMP.B #55,KEYBOARD BEQ SUBTRA CMP.B #53,KEYBOARD BEQ ADDIERE RTS SUBTRA: MOVE.L GESAMT_BREITE,D0 DIVU #8,D0 MOVE.L #200,D1 MULU D0,D1 MOVE.L D1,SPACEOFFSET MOVE.L KEYSPEED,KEYBOARD_COUNTER LEA PLANEZEIGER,A0 LEA POINTERBYTES,A1 MOVE.B PLANEBITS,D0 SUB.L #49,D0 MOVE.L SPACEOFFSET,D1 X96: CMP.B #$FF,(A1) BNE X98 SUB.L D1,(A0) X98: A'L|DDQ.L #1,A1 ADDQ.L #4,A0 DBRA D0,X96 JSR PLANEPRINT JSR PLANES_WRITEN JSR COPY_CL RTS ADDIERE: MOVE.L GESAMT_BREITE,D0 DIVU #8,D0 MOVE.L #200,D1 MULU D0,D1 MOVE.L D1,SPACEOFFSET MOVE.L KEYSPEED,KEYBOARD_COUNTER LEA PLANEZEIGER,A0 LEA POINTERBYTES,A1 MOVE.B PLANEBITS,D0 SUB.L #49,D0 MOVE.L SPACEOFFSET,D1 X99: CMP.B #$FF,(A1) BNE X100 ADD.L D1,(A0) X100: ADDQ.L #1,A1 ADDQ.L #4,A0 DBRA D0,X99 JSR PLANEPRINT JSR PLANES_WRITEN JSR COPY_CL RTS ; -------------------------------------------()+------------ ; SETZ DIE POINTER DER REIHE NACH MIT JEWEILIGEN OFFSET ; ------------------------------------------------------- SETZEPOINTER: CMP.B #127,KEYBOARD BEQ SETZROUT RTS SETZROUT: CMP.B #'2',PLANEBITS BCS ZURUECK MOVE.L KEYSPEED,KEYBOARD_COUNTER LEA PLANEZEIGER,A0 LEA PLANEZEIGER+4,A1 MOVE.L GESAMT_BREITE,D0 DIVU #8,D0 MOVE.L PLANE_HOEHE,D1 MULU D0,D1 MOVE.L D1,SPACEOFFSET MOVE.B PLANEBITS,D0 SUB.L #50,D0 MOVE.L SPACEOFFSET,D1 MOVE.L (A0),D2 Y99: ADD.L D1,D2 MOVE.L D2,(A1) AD)&^DQ.L #4,A1 DBRA D0,Y99 JSR PLANEPRINT JSR PLANES_WRITEN JSR COPY_CL RTS ;----------------------------------------- ; UMWANDLUNGS-ROUTINE FUER EINE ; HEXZAHL IN DEZIMAL ; ACHTUNG !! ZAHLEN MUESSEN KLEINER ALS ; 65535 SEIN (16 BIT ZAHLEN) ; ROUTINEN-AUFRUF ; LEA HEXZAHL,A0 ; JSR HEX_DEZ ;----------------------------------------- HEX_DEZ: MOVEM.L D0-D7/A0-A6,-(A7) MOVE.L #'0000',ZIEL MOVE.B #'0',ZIEL+4 MOVE.L #ZIEL,A1 MOVE.L (A0),A0 MOVE.L A0,D0 MOVE.L #10000,D2 MOVE.L #00,D3 X121: CMP*O.L D2,A0 BCS X120 DIVU D2,D0 MOVE.B D0,D1 ADD.B #$30,D1 MOVE.B D1,(A1,D3) LSR #8,D0 SWAP D0 X120: DIVU #10,D2 ADDQ.L #1,D3 CMP.L #05,D3 BNE X121 MOVEM.L (A7)+,A0-A6/D0-D7 RTS ; ---------------------------------------------- MODULO_ROUT: CMP.B #141,KEYBOARD BEQ MODULO_PLUS CMP.B #143,KEYBOARD BEQ MODULO_MINUS CMP.B #139,KEYBOARD BEQ MODULO_NULL CMP.B #145,KEYBOARD BEQ MODULO_PLUS10 CMP.B #147,KEYBOARD BEQ MODULO_MINUS10 RTS MODULO_PLUS: ADDQ.L #2,MODULOPOINTER JSR MODULOPRINT RTS MODU+LO_MINUS: CMP.L #00,MODULOPOINTER BEQ ZURUECK SUBQ.L #2,MODULOPOINTER JSR MODULOPRINT RTS ; ----------------------- MODULO_NULL: MOVE.L #0000,MODULOPOINTER JSR MODULOPRINT RTS ; ----------------------- MODULO_PLUS10: ADD.L #10,MODULOPOINTER JSR MODULOPRINT RTS ; ------------------------ MODULO_MINUS10: CMP.L #10,MODULOPOINTER BCS KLEINER SUB.L #10,MODULOPOINTER KLEINER: JSR MODULOPRINT RTS ; ----------------------------------------------- MODULOPRINT: MOVE.W MODULOPOINTER+2,MODULO+2 ,!MOVE.W MODULOPOINTER+2,MODULO+6 LEA MODULOPOINTER,A0 JSR HEX_DEZ MOVE.L #RASTPORT,A1 MOVE.L #497,D0 MOVE.L #43,D1 JSR MOVE(A6) MOVE.L #RASTPORT,A1 MOVE.L #ZIEL+1,A0 MOVE.L #4,D0 JSR TEXT(A6) MOVE.L MODULOPOINTER,D0 MULU #8,D0 MOVE.L D0,MODULOBREITE LEA MODULOBREITE,A0 JSR HEX_DEZ MOVE.L #RASTPORT,A1 MOVE.L #392,D0 MOVE.L #35,D1 JSR MOVE(A6) MOVE.L #RASTPORT,A1 MOVE.L #ZIEL+1,A0 MOVE.L #4,D0 JSR TEXT(A6) JSR GESAMTBREITE JSR OFFSET JSR COPY_CL RTS ; ------ DATAFETCH_SETZEN: MOVE.W DFSr GADG1 DC.L BORDER1 REQTEXT: DC.L ENTER_FILENAME DC.W 0 BF: DC.B $01 DC.B 00 DC.L 0 BLK 32,0 DC.L 0 DC.L 0 BLK 36,0 ENTER_FILENAME: DC.B 8,1,0,0 DC.W 40,2 DC.L 0 DC.L RTEXT1 DC.L 0 RTEXT1: DC.B 'SAVE PICTURES',0 EVEN BORDER1: DC.W -2,-1 DC.B 4,2,1 DC.B 7 DC.L VECTORS1 DC.L 0 VECTORS1: DC.W 2,1 DC.W 2,100 DC.W 201,100 DC.W 201,1 DC.W 2,1 DC.W 2,11 DC.W 201,11 GADG1: DC.L GADG2 DC.W 15,16 DC.W 165,10 DC.W 0 STR_TYP: DC.W 1 DC.W 4 DC.L BORDER2 DC.L 0 DC.L 0 DC.L 0 DC.L GADGSI1 DC.W 1 DC:s.L 0 GADGSI1: DC.L TEXTBUFFER DC.L 0 DC.W 0 DC.W 90 DC.W 0 DC.W 0,0,0,0,0 DC.L 0 DC.L 0 DC.L 0 TEXTBUFFER: DC.B 'DF0:PICTURE.PIC' BLK 90,0 EVEN BORDER2: DC.W -2,-2 DC.B 3,0,1 DC.B 5 DC.L VECTORS2 DC.L 0 VECTORS2: DC.W 0,0 DC.W 0,11 DC.W 163,11 DC.W 163,0 DC.W 0,0 EVEN GADG2: DC.L GADG3 DC.W 123,30 DC.W 51,11 DC.W 0 DC.W 1 DC.W 1 DC.L BORDER3 DC.L 0 DC.L GTEXT1 DC.L 0 DC.L 0 DC.W 2 DC.L 0 BORDER3: DC.W -2,-1 DC.B 0,1,1 DC.B 9 DC.L VECTOR3 DC.L 0 VECTOR3: DC.W 0,0 DC.W 0,12 DC.W 54,12  DC.W 54,0 DC.W 0,0 DC.W 0,12 DC.W 1,13 DC.W 55,13 DC.W 55,2 GTEXT1: DC.B 8,1,0,0 DC.W 2,2 DC.L 0 DC.L GT1 DC.L 0 GT1: DC.B 'CANCEL',0 EVEN GTEXT2: DC.B 8,1,0,0 DC.W 10,2 DC.L 0 DC.L GT2 DC.L 0 GT2: DC.B 'SAVE',0 EVEN GADG3: DC.L 0 DC.W 15,30,51,11 DC.W 0,1,1 DC.L BORDER3 DC.L 0 DC.L GTEXT2 DC.L 0 DC.L 0 DC.W 2 DC.L 0 GTEXT3: DC.B 3,0,0,0 DC.W 2,2 DC.L 0 DC.L GT1 DC.L 0 EVEN GADG15: DC.L 0 DC.W 63,35,54,11,0,1,1 DC.L 0 DC.L 0 DC.L GTEXT3 DC.L 0 DC.W 0 DC.L 0 AT1: DC.B 3,1,0,0 DC.W 50,Kz2 DC.L 0 DC.L T1 DC.L AT2 AT2: DC.B 8,1,0,0 DC.W 38,12 DC.L 0 DC.L T2 DC.L AT3 AT3: DC.B 8,1,0,0 DC.W 26,20 DC.L 0 DC.L T3 DC.L AT4 AT4: DC.B 8,1,0,0 DC.W 26,28 DC.L 0 DC.L T4 DC.L 0 T1: DC.B ' 87/12/25 ',0 T2: DC.B ' ',0 T3: DC.B 'COPYRIGHT 1987',0 T4: DC.B '',0 EVEN ; ---------------------------------- ENDREQUEST: MOVE.L INTBASE,A6 MOVE.L WINDOWPOINTER,A1 LEA REQUESTER,A0 JSR -120(A6) ; ENDREQUESTER RTS ; ---------------------------------- GETMESSAGE: MOVE.L EXECSBASE,A6 MOVE.L MESSAGEPORT,A0 JSR WAITPORT(A6) MOVE.L MESSAGEPORT,A0 JSR GETMSG(A6) MOVE.L D0,MESSAGE RTS ; ------------- REPLYMESSAGE: MOVE.L EXECBASE,A6 MOVE.L MESSAGE,A1 JSR REPLYMSG(A6) RTS ; ---------------------------- COPPERLISTON: MOVE.L GFXBASE,A6 ADD.L #50,A6 MOVE.L (A6),OLDCOPPER MOVE.L CLISTE,(A6) MOVE.L GFXBASE,A6 RTS ; ---------------------------------- COPPERLISTOFF: MOVE.L GFXBASE,A6 ADD.L #50,A6 MOVE.L OLDCOPPER,(A6) MOVE.L GFXBASE,A6 RTS ; --------------------------و-------- COPY_CL: MOVEM.L D0-D7/A0-A6,-(A7) MOVE.L #COPPERLIST,A1 MOVE.L CLISTE,A0 MOVE.L #COPPERLISTENDE-COPPERLIST,D0 DF12: MOVE.B (A1)+,(A0)+ DBRA D0,DF12 MOVEM.L (A7)+,A0-A6/D0-D7 RTS ; ---------------------------------- POINTERBYTES_SETZEN: AND.W D2,GRAPHIC_BITS OR.W D3,GRAPHIC_BITS MOVE.L #POINTERBYTES2,A0 MOVE.L #00,D2 CMP.L #00,D0 BEQ NULLEN E2: MOVE.B #01,(A0)+ ADDQ.L #1,D2 CMP.L D0,D2 BNE E2 NULLEN: MOVE.L #00,D2 CMP.L #00,D1 BEQ ZURUECK E3: MOVE.B #00,(A0)+ ADDQ.L #1,D2 CfMP.L D1,D2 BNE E3 JSR COPY_CL ZURUECK: RTS ;-------- APEN: MOVE.L #RASTPORT,A1 JSR SETAPEN(A6) RTS ; ---------- BPEN: MOVE.L D5,D0 MOVE.L #RASTPORT,A1 JSR SETBPEN(A6) RTS ; ---------------- AUSGABE DER DUAL-WERTE ------------- PRINT1: MOVE.L #04,D5 MOVE.L #19,D4 LEA POINTERBYTES,A3 X3: MOVE.L #RASTPORT,A1 MOVE.L #589,D0 MOVE.L D4,D1 JSR MOVE(A6) CMP.B #00,(A3) BEQ PRINT_1 MOVE.L #TEXT4,A0 JMP X4 PRINT_1: MOVE.L #TEXT5,A0 X4: MOVE.L #RASTPORT,A1 MOVE.L #2,D0 JSR TEXT(A6) ADD.L #08,D4 pg%ADDQ.L #1,A3 DBRA D5,X3 RTS ; ------- AUSGABE DER ON OFF ------------- PRINT2: MOVE.L #04,D5 MOVE.L #19,D4;19 LEA POINTERBYTES2,A3 X5: MOVE.L #RASTPORT,A1 MOVE.L #589-32,D0 MOVE.L D4,D1 JSR MOVE(A6) CMP.B #00,(A3) BEQ PRINT_2 MOVE.L #TEXT6,A0 JMP X6 PRINT_2: MOVE.L #TEXT7,A0 X6: MOVE.L #RASTPORT,A1 MOVE.L #3,D0 JSR TEXT(A6) ADD.L #08,D4 ADDQ.L #1,A3 DBRA D5,X5 RTS ; --------------------------- ABPEN: JSR APEN JSR BPEN RTS ;----------------------------------------- ; UMWANDLUNGS-ROUTI`NE FUER EINE ; HEXZAHL IN ASCII ; ROUTINEN-AUFRUF ; IN A0 QUELLEN-ADRESSE DER ZAHL ; IN A1 ZIEL-ADRESSE DER GEWANDELTEN ZAHL ; IN D1 ANZAHL DER BYTES ;----------------------------------------- HEX_ASCII: MOVE.L #04,D1 LEA TABELLE,A2 MOVE.L #BUFFER,A1 CLR.L D0 X40: MOVE.B (A0),D0 AND.B #$F0,D0 LSR.B #4,D0 MOVE.B (A2,D0),(A1)+ MOVE.B (A0)+,D0 AND.B #$0F,D0 MOVE.B (A2,D0),(A1)+ DBRA D1,X40 RTS ; ------ WANDLUNG-TABELLE -------- TABELLE: DC.B $30,$31,$32,$33,$34 DC.B $35,$36,$37,$38,$39  9uDC.B $41,$42,$43,$44,$45 DC.B $46 BUFFER: BLK.B 10,0 ; ----------------------------- PRINT4: MOVE.L #19,D3 MOVE.L #4,D4 X50: MOVE.L #RASTPORT,A1 MOVE.L #614,D0 MOVE.L D3,D1 JSR MOVE(A6) MOVE.L #RASTPORT,A1 MOVE.L #01,D0 MOVE.L A2,A0 JSR TEXT(A6) ADDQ.L #8,D3 DBRA D4,X50 MOVE.L #27,D3 MOVE.L #2,D4 X51: MOVE.L #RASTPORT,A1 MOVE.L #497,D0 MOVE.L D3,D1 JSR MOVE(A6) MOVE.L #RASTPORT,A1 MOVE.L #01,D0 MOVE.L A2,A0 JSR TEXT(A6) ADDQ.L #8,D3 DBRA D4,X51 RTS ; ------------------------------- P!LANESCROLL: SUBQ.L #1,KEYBOARD_COUNTER3 BEQ TESTE RTS TESTE: MOVE.L #100,KEYBOARD_COUNTER3 CMP.B #101,KEYBOARD BEQ SCROLL_HINAB CMP.B #103,KEYBOARD BEQ SCROLL_HINAUF CMP.B #97,KEYBOARD BEQ SCROLL_LINKS CMP.B #99,KEYBOARD BEQ SCROLL_RECHTS RTS ; ----------------------- SCROLL_HINAUF: MOVE.L #1,D4 CMP.B #$FF,HOEHENTEST BNE T01 JSR HOEHE_HINAUF T01: MOVE.L COUNT_OFFSET,D0 MOVE.B #00,D2 JSR PLANES_WRITEN2 JSR PLANEPRINT JSR COPY_CL RETURN:RTS ; ----------------------- SCROLL_HINAB: CMP.B dDG2: BSR GETMESSAGE MOVE.L D0,A0 MOVE.L 20(A0),D0 CMP #$40,D0 BEQ K2 BSR REPLYMESSAGE BRA WGADG2 K2: MOVE.L 28(A0),D0 CMP.L #GADG15,D0 BEQ ABOUT BRA WGADG ABOUT: BSR REPLYMESSAGE BSR ENDREQUEST MOVE.L GFXBASE,A6 MOVE.L #GADG1,GADG MOVE.L #ENTER_FILENAME,REQTEXT JSR PALETTEWRITEN JSR PRINTCOLORN1 JSR PLANEHOEHE JSR MODULOPRINT JSR DFVIEWLORES JSR PLANES_WRITEN JSR PRINT1 JSR PRINT2 JSR GESAMTBREITE JSR OFFSET JSR V10 JSR COPY_CL JSR COPPERLISTON ; --------------------------- ; SCROL ģ4gL DIE GRAPHIC HEREIN ; --------------------------- MOVE.L #53,D4 WB1: MOVE.L GFXBASE,A6 JSR -270(A6) SUB.W #$0100,GRAPHIC_SCROLL JSR COPY_CL DBRA D4,WB1 ; ------------------------ ; ROTE FARBE EINBLENDEN ; ------------------------ MOVE.L #15,D1 W2: MOVE.L #35000,D0 W1: SUBQ.L #1,D0 BNE W1 ADD.W #$0100,BLENDE JSR COPY_CL SUBQ.L #1,D1 BNE W2 JSR COPY_CL ;----------- ABFRAGE: MOVE.L GFXBASE,A6 JSR PLANESCROLL CMP.L #00,KEYBOARD_COUNTER BNE SONSTIGES MOVE.L KEYSPEED,KEYBOARD_COUNTER JSR 2CHANGEHOEHE CMP.B #00,HOEHENTEST BEQ R54 JMP SONSTIGES2 R54: JSR ENTERTEXT JSR HOEHENCHANGE JSR SAVE_BITPLANES JSR RESETPOINTER JSR COLORCHANGE JSR COLORPRINT JSR PRINTCOLORNUMMER JSR SETZEPOINTER JSR OFFSET8000 JSR MODULO_ROUT JSR DFSTOPER CMP.B #243,KEYBOARD BNE KEYL MOVE.L #04,D0 LEA POINTERBYTES,A0 X92: NOT.B (A0)+ DBRA D0,X92 JSR PRINT1 ; ------------------------------------------- ; ABFRAGE VON (L UND H) UND AUSGABE DES MODUS ; ------------------------------------------- KEYL: ƠCMP.B #175,KEYBOARD ;L=LORES BEQ R20 CMP.B #181,KEYBOARD ;H=HIRES BEQ R21 JMP KEY2 R20: BCLR #15,GRAPHIC_BITS MOVE.L #40,COUNT_OFFSET MOVE.L #$0038,DFSTARTPOINTER MOVE.L #$00D0,DFSTOPPOINTER JSR MODULO_NULL JSR DATAFETCH_SETZEN JSR DFVIEWLORES JSR GESAMTBREITE JSR OFFSET MOVE.L #RASTPORT,A1 MOVE.L #489,D0 MOVE.L #11,D1 JSR MOVE(A6) MOVE.L #RASTPORT,A1 MOVE.L #TEXT11,A0 MOVE.L #2,D0 JSR TEXT(A6) JSR COPY_CL JMP KEY2 R21: BSET #15,GRAPHIC_BITS MOVE.L #80,COUNT_OFFSET MOVE.L #$003C,DFSTARTPOINTER MOVE.L #$00D4,DFSTOPPOINTER JSR MODULO_NULL JSR DFVIEWLORES JSR DATAFETCH_SETZEN JSR GESAMTBREITE JSR OFFSET MOVE.L #RASTPORT,A1 MOVE.L #489,D0 MOVE.L #11,D1 JSR MOVE(A6) MOVE.L #RASTPORT,A1 MOVE.L #TEXT10,A0 MOVE.L #2,D0 JSR TEXT(A6) JSR COPY_CL CMP.B #'5',PLANEBITS BNE KEY2 SUBQ.B #1,PLANEBITS JSR COPY_CL JMP Y1 ; -------------------------------------------------------- ; ABFRAGE VON (+ UND -) UND AUSGABE DER ANZAHL (BITPLANES) ; ---------------------------------------ȑX0----------------- KEY2: CMP.B #231,KEYBOARD BEQ R1 CMP.B #233,KEYBOARD BEQ R2 JMP R0 R1: MOVE.B PLANEBITS,D0 CMP.B PLANE_ZAHL,D0 BCC R0 ADDQ.B #1,PLANEBITS JMP PRINT3 R2: CMP.B #'1',PLANEBITS BCS R0 SUBQ.B #1,PLANEBITS PRINT3: CMP.B #'0',PLANEBITS BNE Y0 MOVE.L #00,D0 MOVE.L #05,D1 MOVE.W #%1000111111111111,D2 MOVE.W #%0000000000000000,D3 JSR POINTERBYTES_SETZEN Y0: CMP.B #'1',PLANEBITS BNE Y1 MOVE.L #01,D0 MOVE.L #04,D1 MOVE.W #%1000111111111111,D2 MOVE.W #%0001000000000000,D3 JSRk` POINTERBYTES_SETZEN Y1: CMP.B #'2',PLANEBITS BNE Y2 MOVE.L #02,D0 MOVE.L #03,D1 MOVE.W #%1000111111111111,D2 MOVE.W #%0010000000000000,D3 JSR POINTERBYTES_SETZEN Y2: CMP.B #'3',PLANEBITS BNE Y3 MOVE.L #03,D0 MOVE.L #02,D1 MOVE.W #%1000111111111111,D2 MOVE.W #%0011000000000000,D3 JSR POINTERBYTES_SETZEN Y3: CMP.B #'4',PLANEBITS BNE Y4 PLANE4: MOVE.L #04,D0 MOVE.L #01,D1 MOVE.W #%1000111111111111,D2 MOVE.W #%0100000000000000,D3 JSR POINTERBYTES_SETZEN Y4: CMP.B #'5',PLANEBITS BNE Y5 B TST #15,GRAPHIC_BITS BNE Y6 MOVE.L #05,D0 MOVE.L #00,D1 MOVE.W #%1000111111111111,D2 MOVE.W #%0101000000000000,D3 JSR POINTERBYTES_SETZEN JMP Y5 Y6: SUBQ.B #1,PLANEBITS Y5: JSR COPY_CL JSR PRINT2 MOVE.L #RASTPORT,A1 MOVE.L #441+80,D0 ;522 MOVE.L #19,D1 JSR MOVE(A6) MOVE.L #RASTPORT,A1 MOVE.L #01,D0 MOVE.L #PLANEBITS,A0 JSR TEXT(A6) ;--------------------------------------------- R0: MOVE.L #245,D0 MOVE.L #04,D1 LEA POINTERBYTES+4,A0 KEY1: CMP.B KEYBOARD,D0 BNE KEY0 NOT.B (A0) KEY0: ADeDQ.L #2,D0 SUBQ.L #1,A0 DBRA D1,KEY1 JSR PRINT1 SONSTIGES: SUBQ.L #1,KEYBOARD_COUNTER SUBQ.L #1,KEYBOARD_COUNTER2 SONSTIGES2: CMP.B #$4D,KEYBOARD BNE ABFRAGE ;-------SPEICHER ZURUECKGEBEN--------- BEENDEN: JSR COPPERLISTOFF MOVE.L GFXBASE,A6 MOVE.L CLISTE,A0 MOVE.L #10,D0 MOVE.L #1000,D1 JSR FREERASTER(A6) MOVE.L SPRITE1,A0 MOVE.L #100,D0 MOVE.L #200,D1 JSR FREERASTER(A6) MOVE.L BITMAP1,A0 MOVE.L #800,D0 MOVE.L #70,D1 JSR FREERASTER(A6) MOVE.L BITMAP2,A0 MOVE.L #800,D0 MOVE.L #70,D1 ̶=JSR FREERASTER(A6) ; --------------------- MOVE.L INTBASE,A6 MOVE.L WINDOWPOINTER,A0 JSR CLOSEWINDOW(A6) MOVE.L EXECBASE,A6 MOVE.L GFXBASE,A1 JSR CLOSELIBRARY(A6) MOVE.L DOSBASE,A1 JSR CLOSELIBRARY(A6) MOVE.L INTBASE,A1 JSR CLOSELIBRARY(A6) RTS ; ---------- SUB-ROUTINEN ---------- ENTERTEXT: CMP.B #$7B,KEYBOARD BEQ ENTER_TEXT RTS ENTER_TEXT: JSR COPPERLISTOFF MOVE.L #0,GADG3 MOVE.L #GADG2,GADG1 BSR REQUEST WGADG: BSR GETMESSAGE MOVE.L D0,A0 MOVE.L 20(A0),D0 CMP #$40,D0 BEQ K1 BSR REPq*LYMESSAGE BRA WGADG K1: MOVE.L 28(A0),D0 CMP.L #GADG2,D0 BEQ SAFE CMP.L #GADG3,D0 BEQ FAR BRA WGADG FAR: BSR REPLYMESSAGE BSR ENDREQUEST BSR SAVEROUT JSR COPPERLISTON MOVE.L GFXBASE,A6 RTS SAFE: BSR REPLYMESSAGE BSR ENDREQUEST JSR COPPERLISTON MOVE.L GFXBASE,A6 RTS ; ---------------------------------- REQUEST: LEA REQUESTER,A0 MOVE.L INTBASE,A6 MOVE.L WINDOWPOINTER,A1 JSR -240(A6) ; REQUESTER RTS ; -------------------------- REQUESTER: DC.L 0 DC.W 1,10,190,46 DC.W 0,0 GADG: DC.L $< a2,(a0)+ move.l a3,(a0)+ move.l a4,(a0)+ add.l #$1000000,a1 add.l #$f,a2 add.l #$1000000,a3 add.l #$c,a4 cmp.l #$70f08,a1 bne w1 jmp e move.l #$fffffffe,(a0)+ move.l #$ffe1fffe,$70f08 move.l #$01820000,$70f0c move.l #$0011fffe,$70f10 move.l #$01800000,$70f14 w1: dbf d0,l1 ll: cmp.b #$ff,$dff006 bne ll lll: btst #6,$bfe001 bne l e: move.l #$000022f8,$dff080 move.w #$8120,$dff096 move.b #$00,$dff088 rts  .Q #8,D5 DBRA D4,X30 ; -------------------------------------------- MOVE.L #27,D5 MOVE.L #TEXT12,A2 MOVE.L #03,D4 H30: MOVE.L #RASTPORT,A1 MOVE.L #284,D0 MOVE.L D5,D1 JSR MOVE(A6) MOVE.L #RASTPORT,A1 MOVE.L A2,A0 MOVE.L #13,D0 JSR TEXT(A6) ADD.L #13,A2 ADDQ.L #8,D5 DBRA D4,H30 ; ---- PRINT RGB ----- MOVE.L #RASTPORT,A1 MOVE.L #197,D0 MOVE.L #27,D1 JSR MOVE(A6) MOVE.L #RASTPORT,A1 MOVE.L #TEXT_RGB,A0 MOVE.L #3,D0 JSR TEXT(A6) ;---- MOVE.L #AT1,REQTEXT MOVE.L #GADG15,GADG BSR REQUEST WGAжPEN = -342 SETBPEN = -348 OPENLIBRARY = -408 FREESPRITE = -414 CLOSELIBRARY = -414 CLEARSCREEN = -48 INITRASTPORT = -198 ;---------- DOS ------------- OPEN = -30 WRITE = -48 CLOSE = -36 ;------- INTUITION -------- OPENWINDOW = -204 CLOSEWINDOW = -72 S: START: MOVE.L EXECBASE,A6 LEA GFXNAME,A1 JSR OPENLIBRARY(A6) MOVE.L D0,GFXBASE LEA INTNAME,A1 JSR OPEuENLIBRARY(A6) MOVE.L D0,INTBASE LEA DOSNAME,A1 JSR OPENLIBRARY(A6) MOVE.L D0,DOSBASE MOVE.L GFXBASE,A6 MOVE.L #00,D0 JSR FREESPRITE(A6) MOVE.L #RASTPORT,A1 JSR INITRASTPORT(A6) MOVE.L #BITMAP,RASTPORT+4 ;-----------SPEICHER RESERVIEREN--------- MOVE.L GFXBASE,A6 MOVE.L #10,D0 MOVE.L #1000,D1 JSR ALLOCRASTER(A6) MOVE.L D0,CLISTE MOVE.L #100,D0 MOVE.L #200,D1 JSR ALLOCRASTER(A6) MOVE.L D0,SPRITE1 MOVE.L GFXBASE,A6 MOVE.L #800,D0 MOVE.L #70,D1 JSR ALLOCRASTER(A6) MOVE.L D0,BITMAP1 MOVE.S#F!L #800,D0 MOVE.L #70,D1 JSR ALLOCRASTER(A6) MOVE.L D0,BITMAP2 ; ------------ ; OPEN WINDOW ; ------------ MOVE.L INTBASE,A6 LEA WINDOWDATEN,A0 JSR OPENWINDOW(A6) MOVE.L D0,WINDOWPOINTER MOVE.L D0,A0 MOVE.L 86(A0),MESSAGEPORT MOVE.L GFXBASE,A6 ; --- ; ----- PLANES IN RASTPORT & COPPERLIST SCHREIBEN ------ MOVE.L BITMAP1,PLANE1 MOVE.W BITMAP1,BITPLANE1+2 MOVE.W BITMAP1+2,BITPLANE1+6 MOVE.L BITMAP2,PLANE2 MOVE.W BITMAP2,BITPLANE2+2 MOVE.W BITMAP2+2,BITPLANE2+6 ; ----------------------r------------------------ ; SPRITEPUFFER MIT $FFFF AUFFUELLEN (FARBE 20) ; ---------------------------------------------- MOVE.L SPRITE1,A0 MOVE.L #03,D4 Z6: MOVE.L #50-1,D1 Z4: MOVE.W #%1111111111111111,(A0) MOVE.W #%1111111111111111,2(A0) ADDQ.L #4,A0 DBRA D1,Z4 MOVE.L #50-1,D1 Z5: MOVE.W #%0000000000000000,(A0) MOVE.W #%1111111111111111,2(A0) ADD.L #4,A0 DBRA D1,Z5 DBRA D4,Z6 ; ----------------------------------------------- ; SPRITEPOINTER (etc.) IN DER COPPERLIST SETZEN ; -----L.------------------------------------------ MOVE.L SPRITE1,SPRITE1_HILFSREG LEA SPRITEPOINTER+2,A0 LEA SPRITEPOINTER+6,A1 MOVE.L #07,D2 Z3: MOVE.W SPRITE1_HILFSREG,(A0) MOVE.W SPRITE1_HILFSREG+2,(A1) ADDQ.L #8,A0 ADDQ.L #8,A1 ADD.L #200,SPRITE1_HILFSREG DBRA D2,Z3 ; ----------------------------------- ; SPRITE CONTROL WORDS SCHREIBEN ; ----------------------------------- MOVE.L SPRITE1,A0 MOVE.L #45,D0 MOVE.L #57,D1 MOVE.L #07,D2 Z1: MOVE.B D0,(A0) MOVE.B D1,1(A0) MOVE.W #$5D01,2(A0) ADD.L #200,A0 ADD.L #6,D1 DBRA D2,Z1 ; ----- CONSTRUIEREN ------ MOVE.L #RASTPORT,A1 MOVE.L #00,D0 JSR SETAPEN(A6) MOVE.L #RASTPORT,A1 MOVE.L #0,D0 MOVE.L #0,D1 MOVE.L #672,D2 MOVE.L #60,D3 JSR RECFILL(A6) MOVE.L #01,D0 JSR APEN MOVE.L #RASTPORT,A1 MOVE.L #536,D0 MOVE.L #04,D1 MOVE.L #670,D2 MOVE.L #52,D3 JSR RECFILL(A6) MOVE.L #RASTPORT,A1 MOVE.L #430,D0 MOVE.L #04,D1 MOVE.L #530,D2 MOVE.L #52,D3 JSR RECFILL(A6) MOVE.L #RASTPORT,A1 MOVE.L #195,D0 MOVE.L #04,D1 MOVE.L #424,D2 MOVE.L D#52,D3 JSR RECFILL(A6) MOVE.L #00,D0 JSR APEN MOVE.L #RASTPORT,A1 MOVE.L #195,D0 MOVE.L #17,D1 MOVE.L #424,D2 MOVE.L #19,D3 JSR RECFILL(A6) ; ----------------------------- MOVE.L #RASTPORT,A1 MOVE.L #276,D0 MOVE.L #19,D1 MOVE.L #280,D2 MOVE.L #53,D3 JSR RECFILL(A6) ; ------------------------------ MOVE.L #02,D0 MOVE.L #01,D5 JSR ABPEN MOVE.L #RASTPORT,A1 MOVE.L #11,D1 MOVE.L #541,D0 JSR MOVE(A6) MOVE.L #RASTPORT,A1 MOVE.L #TEXT1,A0 MOVE.L #16,D0 JSR TEXT(A6) ; ---------------------- ׍t(---------- ; TITLE ZEILE PRINTEN ; -------------------------------- MOVE.L #03,D0 MOVE.L #01,D5 JSR ABPEN MOVE.L #RASTPORT,A1 MOVE.L #13,D1 MOVE.L #202,D0 JSR MOVE(A6) MOVE.L #RASTPORT,A1 MOVE.L #TEXT17,A0 MOVE.L #27,D0 JSR TEXT(A6) MOVE.L #02,D0 MOVE.L #01,D5 JSR ABPEN ;---- POINTER (00000) SCHREIBEN ------ MOVE.L #04,D5 MOVE.L #19,D4 X1: MOVE.L #RASTPORT,A1 MOVE.L #542,D0 MOVE.L D4,D1 JSR MOVE(A6) MOVE.L #RASTPORT,A1 MOVE.L #16,D0 MOVE.L #TEXT2,A0 JSR TEXT(A6) ADD.L #08,D4 DBRA D5, kX1 ; -------------------------------------- MOVE.L #04,D5 MOVE.L #19,D4 MOVE.L #TEXT3,A4 X2: MOVE.L #RASTPORT,A1 MOVE.L #542,D0 MOVE.L D4,D1 JSR MOVE(A6) MOVE.L #RASTPORT,A1 MOVE.L #1,D0 MOVE.L A4,A0 JSR TEXT(A6) ADD.L #08,D4 ADD.L #1,A4 DBRA D5,X2 ; --------------------------------------------- MOVE.L #11,D5 MOVE.L #TEXT8,A2 MOVE.L #05,D4 X30: MOVE.L #RASTPORT,A1 MOVE.L #433,D0 MOVE.L D5,D1 JSR MOVE(A6) MOVE.L #RASTPORT,A1 MOVE.L A2,A0 MOVE.L #12,D0 JSR TEXT(A6) ADD.L #12,A2 ADDQ.L move.l #$fffffffe,(a0)+ ll: move.w $dff01e,d3 and.w #$0020,d3 bne ll move.w #$0020,$dff09c lll: btst #6,$bfe001 bne l jmp e w: lea $dff000,a0 move.w #$0120,$096(a0) lea $70000,a1 move.l a1,$080(a0) move.b #$00,$088(a0) jmp l e: move.l #$000022f8,$080(a0) move.w #$8120,$096(a0) move.b #$00,$088(a0) rts cl: dc.w $0001,$0000,$0180,$0000 dc.w $2091,$fffe,$0180,$0000,$20e3,$fffe,$0180,$0000 dc.w $2191,$fffe,$0180,$0111,$21e3,$ڋafffe,$0180,$0101 dc.w $2291,$fffe,$0180,$0222,$22e3,$fffe,$0180,$0202 dc.w $2391,$fffe,$0180,$0333,$23e3,$fffe,$0180,$0303 dc.w $2491,$fffe,$0180,$0444,$24e3,$fffe,$0180,$0404 dc.w $2591,$fffe,$0180,$0555,$25e3,$fffe,$0180,$0505 dc.w $2691,$fffe,$0180,$0666,$26e3,$fffe,$0180,$0606 dc.w $2791,$fffe,$0180,$0777,$27e3,$fffe,$0180,$0707 dc.w $2891,$fffe,$0180,$0888,$28e3,$fffe,$0180,$0808 dc.w $2991,$fffe,$0180,$0999,$29e3,$fffe,$0180,$0909 dc.w $2a91,$fffe,$0180,$0aaa,$2ae3,$fffe,$0180,?~$0a0a dc.w $2b91,$fffe,$0180,$0bbb,$2be3,$fffe,$0180,$0b0b dc.w $2c91,$fffe,$0180,$0ccc,$2ce3,$fffe,$0180,$0c0c dc.w $2d91,$fffe,$0180,$0ddd,$2de3,$fffe,$0180,$0d0d dc.w $2e91,$fffe,$0180,$0eee,$2ee3,$fffe,$0180,$0e0e dc.w $2f91,$fffe,$0180,$0fff,$2fe3,$fffe,$0180,$0f0f dc.w $3091,$fffe,$0180,$00f0,$30e3,$fffe,$0180,$0f00 dc.w $3191,$fffe,$0180,$00f1,$31e3,$fffe,$0180,$0f10 dc.w $ffff,$fffe dc.w $2091,$fffe,$0180,$0000,$20e3,$fffe,$0180,$0000 dc.w $2191,$fffe,$0180,$0111,$21e3,$!(*x move.b #$00,$dff088 rts a0 move.l a0,$dff080 move.b #$00,$dff088 l: move.b $4ef1,d1 move.b $4ef0,d2 bset #0,d1 move.l #$128,d0 move.l #$70000,a0 move.l #$00010000,(a0)+ move.l #$01800000,(a0)+ move.l #$1011fffe,a1 move.l #$01800000,a2 move.l #$1091fffe,a3 move.l #$01800303,a4 move.l a3,$7f000 move.b d1,$7f001 move.l $7f000,a3 move.l a4,$7f000 move.b d2,$7f003 move.l $7f000,a4 move.l a2,$7f000 move.qtTHRUSTINTRO3TrashcanUTILITYSDisk.info^system-configurationTrashcan.infotxt{) STARTUP-SEQUENCEF͚~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TYPE 'SEKA' FOR SEKA V3.2 FROM PROMAX/KEFRENS TYPE 'CONV' FOR IFF CONVERTER V0.9 TYPE 'TXED' FOR TEXT EDITOR IF YOU WANT SWAP NICE,COOL,AND VERY BEST SOURCES CONTACT ME TO: NO ILLEGAL SWAPPING ONLY CODING !!! GANDALF 15 Aߠtn move.l a2,(a0)+ move.l a3,(a0)+ move.l a4,(a0)+ add.l #$1000000,a1 add.l #$11,a2 add.l #$1000000,a3 add.l #$01,a4 cmpi.l #$70f08,a0 bne w1 move.l #$ffe1fffe,(a0)+ move.l #$01fe0000,(a0)+ move.l #$0011fffe,(a0)+ jmp l1 w1: dbf d0,l1 l2: move.l #$fffffffe,(a0)+ move.l #$f00,d0 move.l #$7a000,a0 move.l #$70010,a1 move.w (a1),d1 move.b (a0)+,d1 move.w d1,(a1)+ dbf d0,l2 ll: cmp.b #$ff,$dff006 bne ll lll: uׯ`btst #6,$bfe001 bne l e: move.l #$000022f8,$dff080 move.w #$8120,$dff096 move.b #$00,$dff088 rts  move.l #$00010000,(a0)+ move.l #$01800000,(a0)+ move.l #$1011fffe,a1 move.l #$01800000,a2 move.l #$1091fffe,a3 move.l #$01800303,a4 move.l a3,$7f000 move.b d1,$7f001 move.l $7f000,a3 move.l a4,$7f000 move.b d2,$7f003 move.l $7f000,a4 move.l a2,$7f000 move.b d2,$7f003 move.l $7f000,a2 l1: move.l a1,(a0)+ /L䊆add.l #$f,a2 add.l #$1000000,a3 add.l #$c,a4 dbf d0,l1 move.l #$fffffffe,(a0)+ ll: move.w $dff01e,d3 and.w #$0020,d3 bne ll move.w #$0020,$dff09c lll: btst #6,$bfe001 bne l e: move.l #$000022f8,$080(a0) move.w #$8120,$096(a0) move.b #$00,$088(a0) rts   makelist2.StdV. DES DRYADES 1170 BRUXELLES BELGIUM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~43m 1;31;42m 1;31;40m 1;31;42m 1;31;40m SOURCES COMPILATION DISK #19.............................COMPILED BY GANDALF ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ۻ$sb d2,$7f003 move.l $7f000,a2 l1: move.l a1,(a0)+ move.l a2,(a0)+ move.l a3,(a0)+ move.l a4,(a0)+ add.l #$1000000,a1 add.l #$11,a2 add.l #$1000000,a3 add.l #$01,a4 cmpi.l #$70f08,a0 bne w1 move.l #$ffe1fffe,(a0)+ move.l #$01fe0000,(a0)+ move.l #$0011fffe,(a0)+ jmp l1 w1: dbf d0,l1 move.l #$fffffffe,(a0)+ ll: cmp.b #$ff,$dff006 bne ll lll: btst #6,$bfe001 bne l e: move.l #$000022f8,$dff080 move.w #$8120,$dff096 FN********* ** a0 = Zeiger auf ReplyPort <-- ** ** --> a0 = Zeiger auf IOStdRequest ** ***************************************** CreateStdIO: move.l #32,d0 ; Lnge des StdIORequests bsr CreateExtIO rts ************** DeleteStdIO ************** ** a0 = Zeiger auf IORequest <-- ** ***************************************** DeleteStdIO: bsr DeleteExtIO rts align 4 ******** GetFile ************************ ** a0 = Zeiger auf FileName <-- ** ** d1 = Minimalgroes'se des Buffers <-- ** ** --> d0 = Zeiger auf File ** ** --> d1 = FileLaenge ** ***************************************** ** Der Benutzer mu sich um das FreeMem ** des Bereiches kmmern GetFile: move.l a0,FileName move.l d1,Buffersize move.l DosBase,a6 move.l FileName,d1 move.l #1005,d2 jsr Lock(a6) move.l d0,FileLock beq rts move.l ExecBase,a6 move.l #FIBSize,d0 move.l #$10001,d1 jsr AllocMem(a6) move.l d0,FileInfoBlock beq arts move.l ?DosBase,a6 move.l FileLock,d1 move.l FileInfoBlock,d2 jsr Examine(a6) cmpi.w #0,d0 beq FreeFIB move.l FileInfoBlock,a0 move.l FileSize(a0),d0 addi.l #16,d0 ; Sicherheit !! cmp.l Buffersize,d0 blt gross_genug move.l d0,Buffersize gross_genug: move.l ExecBase,a6 move.l BufferSize,d0 move.l #$10003,d1 jsr AllocMem(a6) move.l d0,Buffer beq FreeFIB move.l DosBase,a6 move.l FileName,d1 ;File ffnen move.l #1005,d2 jsr Open(a6) move.l d0,Handle beq FreeBuf move.l D(osBase,a6 move.l Handle,d1 move.l Buffer,d2 move.l BufferSize,d3 jsr Read(a6) cmpi.w #0,d0 beq FreeBuf CloseIt: move.l DosBase,a6 move.l Handle,d1 jsr Close(a6) FreeFIB: move.l ExecBase,a6 move.l #FIBSize,d0 move.l FileInfoBlock,a1 jsr FreeMem(a6) move.l Buffer,d0 arts: move.l BufferSize,d1 rts FreeBuf: move.l ExecBase,a6 move.l BufferSize,d0 move.l Buffer,a1 jsr FreeMem(a6) move.l #0,Buffer bra CloseIt Handle: DC.L 0 FileLock: DC.L 0 FileInfoBlock: DC.L 0 BuffE%yer: DC.L 0 BufferSize: DC.L 0 DosBase: DC.L 0 FileName: DC.L 0 DosName: DC.B 'dos.library',0 even *************** Print ************** ** a0 = Zeiger auf String <-- ** ************************************ print: move.l a0,-(a7) move.l DosBase,a6 jsr Output(a6) move.l d0,d1 move.l (a7)+,a0 move.l a0,d2 andi.w #-2,d2 NullFind: tst.b (a0)+ bne.s NullFind move.l a0,d3 sub.l d2,d3 move.l DosBase,a6 jsr Write(a6) rts *************** GetChars ************** ** a0 =  ,lZeiger auf String <-- ** ** --> a0 = Zeiger auf Eingabe ** ** --> d0 = Laenge der Eingabe ** *************************************** GetChars: move.l DosBase,a6 jsr Input(a6) move.l d0,d1 move.l #InBuffer,d2 move.l #80,d3 move.l DosBase,a6 jsr Read(a6) move.l #InBuffer,a0 rts InBuffer: blk.b 40,0 test: DC.L 0 oldcheck: DC.L 0 newcheck: DC.L 0 even NoTDMem: DC.B "Kann keinen Speicher fr den Trackdisk-" DC.B "Buffer allokieren !",10,0 even StillUsed: DC.B !`"Tut mir leid, aber auf dieser Disk ist " DC.B "kein Platz mehr fr den Boot-Track!",10,0 even Welcome: DC.B "BigBoot",10 DC.B "fr Markt & Technik, 68oooer Magazin, von" DC.B " Michael Gckel ",10 DC.B "Ich versuche die Installation ",10,0 Quest1: DC.B "Wie ist der Filename des zu installierenden" DC.B " Files ?",10,"(Return = ",34,0 Quest2: DC.B 34,")",10,0 Quest3: DC.B "Bitte legen Sie nun die Disk auf der ich" DC.B " installieren soll in df0:",10 DC.B "und drcke"tYn Sie Return ",10,0 MengeMsg: DC.B "Auf dieser Disk sind ",0 Menge2Msg: DC.B " freie Sektoren. ",0 WPon: DC.B "Diskette ist schreibgeschtzt!",10,0 GoodInstall: DC.B "Der BootTrack ist nun installiert,",10 DC.B "Viel Spa damit ! ",10,0  move.l DosBase,a6 jsr Read(a6) move.l #InBuffer,a0 rts InBuffer: blk.b 40,0 test: DC.L 0 oldcheck: DC.L 0 newcheck: DC.L 0 even NoTDMem: DC.B "Kann keinen Speicher fr den Trackdisk-" DC.B "Buffer allokieren !",10,0 even StillUsed: DC.B 7Htigt move.l (a3),d1 ; welche Blocks? move.l #0,a3 ; Offset move.l #0,d2 checkloop: bclr d2,d1 bne loadthis ; wenn noch nicht 0 gewesen -> load add.l #$0200,a3 ; diesen Block nicht (Offset erhhen) addq.l #1,d2 ; nchster Block tst.l d1 bne checkloop ; Wenn 0, dann alle Blocks fertig bra fertig_geladen *********** LadeRoutine *********** loadthis: move.l ExecBase,a6 move.w #2,28(a1) ; TD_CMD_Read move.l a3,44(a1) ; TD_Offset (Diskposition) move.l a2,40(a1) ; TD_LocaMtion move.l #$0200,36(a1) ; Eine Blocklnge movem.l d1-d2/a1-a3,-(a7) ; Parameter sichern jsr DoIO(a6) movem.l (a7)+,d1-d2/a1-a3 ; Parameter zurckholen add.l #$0200,a3 ; Nchster Block add.l #$0200,a2 ; Nchste Location addq.l #1,d2 ; Blocknummer erhhen tst.l d0 beq CheckLoop ; Kein Fehler beim Laden ? bra Continue_Boot fertig_geladen: jsr begin Continue_Boot: move.l ExecBase,a6 lea DosName(PC),a1 jsr FindResident(a6) tst.l d0 beq Boot_Failed move.l d0,a0 move.l coV22(a0),a0 ; Resident_Init nach a0 moveq #0,d0 ; Zero Bit setzen rts ; Boot geklappt Boot_Failed: moveq #1,d0 ; Zero Bit lschen rts ; Boot nicht ok ***** Variable und Konstanten ***** DosName: DC.B "dos.library",0 BlockLong: DC.L %00000000000000000000000000000001 **** Hier Ihr Programm einfgen *** even begin: ; ** Programm Code ** Finis: oadthis: move.l ExecBase,a6 move.w #2,28(a1) ; TD_CMD_Read move.l a3,44(a1) ; TD_Offset (Diskposition) move.l a2,40(a1) ; TD_LocaSs even ************** DWrite ************** ** a0 = Anfang der Daten <-- ** ** d0 = Laenge der Daten <-- ** ** d1 = Offset <-- ** ************************************ DWrite: movem.l d0-d7/a0-a6,-(a7) bsr DCheckWP beq NotProtected move.l #WPon,a0 bsr print move.b #1,d0 ; Zero lschen bra EndofWrite NotProtected: move.l DiskRequest,a1 move.l d1,io_Offset(a1) move.w #CMD_Write,io_Command(a1) move.l d0,io_Length(a1) move.l a0,io_Data(a1) move.l ExecBase,a6 jsr DoIO(a6) move.b #0,d0 ; Zero setzen EndofWrite: movem.l (a7)+,d0-d7/a0-a6 rts ************** DUpDate ************* DUpDate: movem.l d0-d7/a0-a6,-(a7) move.l DiskRequest,a1 move.w #CMD_UpDate,io_Command(a1) move.l ExecBase,a6 jsr DoIO(a6) movem.l (a7)+,d0-d7/a0-a6 rts *************** GetTrackDisk ************** ** d0 = Unit (0=df0:,1=df1:) <-- ** ** --> a1 = ExtIORequest, 0 if error ** ******************************************* GetTrackDisk: hqwmove.l d0,Unit move.l #0,a0 ; kein Name move.b #0,d0 ; Prioritt bsr CreatePort move.l a0,DiskPort beq gt_fail1 move.l #56,d0 bsr CreateExtIO move.l a0,DiskRequest beq gt_fail2 move.l ExecBase,a6 move.l #DiskName,a0 move.l Unit,d0 ; Unit 0 move.l DiskRequest,a1 move.l #0,d1 ; Flags jsr OpenDevice(a6) tst.l d0 bne gt_fail3 move.l DiskRequest,a1 rts gt_fail1: move.l #0,a1 rts *************** CloseTrackDisk *************** ** a1 = Initialisierte ExtIOReques`t <-- ** ********************************************** CloseTrackDisk: move.l a1,DiskRequest move.l ExecBase,a6 move.l DiskRequest,a1 jsr CloseDevice(a6) gt_fail2: move.l DiskRequest,a0 bsr DeleteExtIO gt_fail3: move.l DiskPort,a0 bsr DeletePort move.l #0,a1 rts Unit: DC.L 0 DiskPort: DC.L 0 DiskRequest: DC.L 0 DiskName: DC.B "trackdisk.device",0 even ******************************* * Amiga Lib * * Funktionen aus der AmigaLib * * fr den Seka Ass=embler. * * Diese Funktionen werden fr * * den Aufruf verschiedener * * Devices bentigt. * ******************************* even *********** Create Port ************ ** a0 = Zeiger auf Namen <-- ** ** d0 = Prioritaet <-- ** ** --> a0 = MsgPort ** ************************************ CreatePort: move.l a0,Name move.b d0,Prio move.l ExecBase,a6 move.b #-1,d0 ; irgendein Signal allokieren jsr AllocSignal(a6) move.b d0,sigBit bmi.l N5oSignal move.l ExecBase,a6 move.l #$10001,d1 ; MEMF_CHIP | MEMF_PUBLIC move.l #34,d0 ; SizeOf(MsgPort) jsr AllocMem(a6) move.l d0,port beq NoMemory move.l d0,a0 move.l Name,10(a0) ; Name nach ln_Name move.b Prio,9(a0) ; Prio nach ln_Prio move.b #4,8(a0) ; Type MsgPort nach ln_Type move.b #0,14(a0) ; PA_Signal nach mp_Flags move.b sigBit,15(a0) ; sigBit nach mp_SigBit move.l ExecBase,a6 move.l #0,a1 jsr FindTask(a6) move.l d0,16(a0) ; Task nach mp_SigTask cmpi.l #0,NMame beq doNewList move.l ExecBase,a6 move.l port,a1 jsr AddPort(a6) bra.s rts doNewList: lea 20(a0),a0 ; Zeiger auf mp_MsgList bsr NewList ; Initialisieren rts: move.l port,a0 ; Zeiger auf Port zurck rts NoSignal: clr.l port bra.s rts NoMemory: move.l ExecBase,a6 clr.l d0 move.b sigBit,d0 jsr FreeSignal(a6) bra.s NoSignal even port: DC.L 0 sigBit: DC.B 0 Prio: DC.B 0 Name: DC.L 0 *********** DeletePort ************ ** a0 = Zeiger auf Port <-- ** *********jϾ************************** DeletePort: cmpi.l #0,10(a0) beq NoRemPort move.l a0,-(a7) ; Zeiger auf Port sichern move.l ExecBase,a6 move.l a0,a1 jsr RemPort(a6) move.l (a7)+,a0 ; Zeiger auf Port wiederholen NoRemPort: move.b #$FF,8(a0) ; ln_Type auf InRemove move.l #-1,20(a0) ; mp_MsgList.lh_Head auf -1 move.l a0,-(a7) ; Port sichern move.l ExecBase,a6 clr.l d0 move.b 15(a0),d0 jsr FreeSignal(a6) move.l ExecBase,a6 move.l (a7)+,a1 ; Port wiederherstellen move.l #34,d0ڝ: ; SizeOf( MsgPort ) jsr FreeMem(a6) rts *********** NewList **************** ** a0 = Zeiger auf ListHead ** ************************************ LH_Tail: EQU 4 LH_TailPred: EQU 8 NewList: move.l a0,(a0) ; LH_Head addq.l #LH_Tail,(a0) ; auf LH_Tail zeigen clr.l LH_Tail(a0) ; LH_Tail = 0 move.l a0,LH_TailPred(a0) ; auf LH_Head setzen rts ************* CreateExtIO ************** ** a0 = Zeiger auf ReplyPort <-- ** ** d0 = Size des IORequests <-- ** ** --s)> a0 = Zeiger auf IORequest ** **************************************** CreateExtIO: cmpi.l #0,a0 beq NoReplyPort move.w d0,Size move.l a0,ReplyPort move.l ExecBase,a6 move.l #$10001,d1 ; MEMF_Clear | MEMF_Public jsr AllocMem(a6) ; d0 enthaelt Size !! move.l d0,a0 ; ioReq nach a0 beq NoMemory2 move.b #5,8(a0) ; NT_MESSAGE nach ln_Type move.w Size,18(a0) ; Size nach mn_Length move.l ReplyPort,14(a0); ReplyPort nach mn_ReplyPort rts NoReplyPort: NoMemory2: move.l nY-#0,a0 rts Size: DC.W 0 ReplyPort: DC.L 0 ************** DeleteExtIO ************** ** a0 = Zeiger auf IORequest ** ***************************************** DeleteExtIO: cmpi.l #0,a0 beq rts2 move.b #$ff,8(a0) ; ln_Type auf InRemove move.l #-1,20(a0) ; io_Device auf -1 setzen move.l #-1,24(a0) ; IO_Unit auf -1 setzen move.l Execbase,a6 move.w 18(a0),d0 ; mn_Length move.l a0,a1 ; IORequest freimachen jsr FreeMem(a6) rts2: rts ************** CreateStdIO *****# bsr GetChars move.l #0,d0 bsr GetTrackDisk move.l ExecBase,a6 move.l #$0800,d0 ; 4 Blcke move.l #$10001,d1 jsr AllocMem(a6) move.l d0,TDBuffer bne goon1 move.l #NoTDMem,a0 bsr print bra cleanup3 goon1: bsr MotorOn move.l TDBuffer,a0 move.l #1024,d0 move.l DiskRequest,a1 move.l #880,d1 bsr DRead move.l TDBuffer,a0 add.l #$13C,a0 move.l (a0),d1 move.l d1,BitMapSektor add.l #$2C4,a0 move.l DiskRequest,a1 move.l #$400,d0 bsr DRead move.l TDBuffer,a0 add.l #$4׃:00,a0 move.l 4(a0),d0 move.w #0,d1 ; Test ab dem 1.Sektor clr.l d2 move.l #2,d3 ; ab Bit 2 ndern move.l #3,d4 ; bit 0 und 1 gesetzt move.w FileSects,d5 ; wieviele brauche ich ? secloop: btst d1,d0 beq nomore cmp.w d5,d2 ; hab ich schon genug ? bhs hab_genug bclr d1,d0 ; wenn ich ihn brauche, reservieren bset d3,d4 ; und markieren in BlockLong hab_genug: add.l #1,d2 nomore: addi.w #1,d1 addi.w #1,d3 cmp.w #20,d1 blt secloop move.l d0,4(a0) move.w d2,TracksectJs move.l d4,BlockLong move.l #MengeMsg,a0 bsr print clr.l d0 move.w tracksects,d0 bsr ItoA bsr print move.l #Menge2Msg,a0 bsr print move.w TrackSects,d2 cmp.w Filesects,d2 bhi goon2 move.l #StillUsed,a0 bsr print bra Cleanup4 goon2: move.l FileOrt,a0 ; Anfang der Daten move.l BlockLong,d4 ; belegte Blocks move.l d4,BlockLongPos(a0) ; in den Bootblock schreiben bsr BootblockChecksum move.l #$200,d0 ; Blocklnge move.l #$0,d1 ; Offset clr.l d3 wrloop: bclr d3,d4d beq dontwrite bsr DWrite ; dieser Block wird geschrieben bne cleanup4 ; ein Fehler whrend DWrite add.l #$200,a0 ; nchster Block dontwrite: add.w #1,d3 add.l #$200,d1 ; nchster Block tst.l d4 ; noch nicht 0 bne wrloop ; dann noch Blocks zu schreiben jsr DUpDate ; nun Track auf die Disk move.l TDBuffer,a0 add.l #$400,a0 bsr BitMapChecksum move.l BitMapSektor,d1 ; SektorNummer move.l #512,d0 ; Lnge des Sektors lsl.l #8,d1 ; *256 lsl.l #1,d1 ; *2 bsr DWrite  {; Data noch in a0 bne cleanup4 ; ein Fehler whrend DWrite bsr DUpDate move.l #GoodInstall,a0 bsr print cleanup4: bsr MotorOff cleanup3: move.l ExecBase,a6 move.l TDBuffer,a1 move.l #$0800,d0 jsr FreeMem(a6) move.l ExecBase,a6 move.l FileOrt,a1 move.l FileLength,d0 jsr FreeMem(a6) move.l DiskRequest,a1 bsr CloseTrackDisk NoFile: move.l ExecBase,a6 move.l DosBase,a1 jsr CloseLibrary(a6) NoDos: move.l oldcheck,d0 move.l newcheck,a0 ; ILLEGAL clr.l d0 rts FileOrt:  N+ DC.L 0 FileLength: DC.L 0 FileSects: DC.W 0 TrackSects: DC.W 0 BitMapSektor: DC.L 0 TDBuffer: DC.L 0 BlockLong: DC.L 0 BootName: DC.L BN BN: DC.B "df1:boottrack",0 even ************** BootblockChecksum *************** ** --> a0 = Zeiger auf den Bootblock <-- ** *********************************************** BootblockChecksum: movem.l d0-d3/a0-a1,-(a7) clr.l d0 clr.l d2 clr.l d3 move.l #$FF,d1 ; 256 Longwords summieren move.l a0,a1 ; Anfangsadresse sichern clr.l $4(a0)  S ; alte Checksumme lschen move.w #$4,CCR ; Z Bit setzen, X Bit lschen bo_Checkloop: move.l (a0)+,d2 ; Longword holen addx.l d2,d0 ; mit Carry addieren dbra d1,bo_Checkloop move.l #-1,d1 subx.l d0,d1 move.l d1,$4(a1) ; und Checksumme in den Bootblock move.l d1,test movem.l (a7)+,d0-d3/a0-a1 rts ************** BitMapCheckSum ************** ** --> a0 = Basisadresse der BitMap <-- ** ******************************************** BitMapChecksum: movem.l d0-d3/a0-a1,-(a7)  Yf clr.l d0 clr.l d2 clr.l d3 move.l a0,a1 move.l (a0),oldcheck ; zum testen clr.l (a0) move.w #$7F,d1 ; hier nur 512 Bytes testen bm_Checkloop: move.l (a0)+,d2 sub.l d2,d0 dbra d1,bm_Checkloop move.l d0,(a1) ; in die BitMap schreiben move.l d0,newcheck ; zum testen movem.l (a7)+,d0-d3/a0-a1 rts ************** ItoA ************** ** d0 = Integer Zahl <-- ** ** --> a0 = ASCII String ** ********************************** ItoA: move.l #ASCII_Zahl+6,a0 move. J\l #0,-4(a0) ; String clearen move.w #0,-6(a0) ; zweiter Teil w_loopi: divu #10,d0 ; Nachkommastelle = 1.Stelle swap d0 addi.w #"0",d0 move.b d0,-(a0) clr.w d0 swap d0 cmp.w #0,d0 bne w_loopi rts even ; even, damit move.l funktioniert ASCII_Zahl: blk.b 7,0 even *********** Track Disk SubRoutines ************* ************** MotorOn & MotorOff ************** ** a1 = Initialisierter ExtIORequest <-- *** ************************************************ MotorOn: move.Jl DiskRequest,a1 move.w #TD_Motor,io_Command(a1) move.l #1,io_Length(a1) move.l ExecBase,a6 jsr DoIO(a6) rts MotorOff: move.l DiskRequest,a1 move.w #TD_Motor,io_Command(a1) move.l #0,io_Length(a1) move.l ExecBase,a6 jsr DoIO(a6) rts DCheckWP: movem.l d0-d7/a0-a6,-(a7) move.l DiskRequest,a1 move.w #TD_Protstatus,io_Command(a1) move.l ExecBase,a6 jsr DoIO(a6) move.l DiskRequest,a1 move.l io_Actual(a1),d0 movem.l (a7)+,d0-d7/a0-a6 rts ******************* Disk Read *0T ***************** * a1 = Zeiger auf * * Initialisierte ExtIOReqest Struktur <-- * * a0 = Zeiger auf Buffer <-- * * d0 = Laenge des Buffers (bzw. Reads) <-- * * d1 = SektorNummer <-- * ************************************************ DRead: lsl.l #8,d1 lsl.l #1,d1 move.w #CMD_Read,io_Command(a1) move.l d1,io_Offset(a1) move.l a0,io_Data(a1) move.l d0,io_Length(a1) move.l ExecBase,a6 jsr DoIO(a6) rtAFr{ve d3,d4 divu d4,d1 and.b #$f,d1 move.b d1,d6 lsl.w #4,d6 move.b (a4),d1 ;Grn lsr.b #4,d1 mulu d2,d1 move d3,d4 divu d4,d1 andi.w #$f,d1 or.b d1,d6 lsl.w #4,d6 move.b (a4)+,d1 ;Blau andi.b #$f,d1 mulu d2,d1 move d3,d4 divu d4,d1 andi.w #$f,d1 or.b d1,d6 move.l (a5)+,a6 move.w d6,(a6) dbra d7,col movem.l (a7)+,a5/a6/d7 rts ; Rainbow: dc.w $000,$f0f ;Maximal-Farbwerte dc.w $d0f,$b0f dc.w $80f,$00f dc.w $07f,$B̜08f dc.w $09f,$0af dc.w $0bf,$0cf dc.w $0df,$0ef dc.w $0ff,$0fd dc.w $0fb,$0f8 dc.w $0f0,$8f0 dc.w $bf0,$df0 dc.w $ff0,$fe0 dc.w $fd0,$fc0 dc.w $fb0,$fa0 dc.w $f90,$f80 dc.w $f70,$f00 MaxList: IF partyfreq = 1 dc.b 55,30,24,22,22,21,20,19,19,18 dc.b 18,17,16,15,14,13,11,10,10, 9 dc.b 8, 8, 8, 8, 8, 8, 8, 7, 7, 7 dc.b 7 ENDIF IF partyfreq = 2 dc.b 55,30,24,22,22,21,20,19,19,18 dc.b 18,17,16,15,14,13,11,10,10, 9 dc.b 8, 8, 8, 8, 8, 8, 8, 7, 7, 7 dc.b 7 ENDIF IF CZКpartyfreq = 3 dc.b 63,32,26,23,22,21,20,19,19,18 dc.b 18,18,18,17,17,17,17,17,16,16 dc.b 16,16,16,16,16,15,15,15,15,15 dc.b 15 ENDIF IF partyfreq = 4 dc.b 63,32,26,23,22,21,20,19,19,18 dc.b 18,18,18,17,17,17,17,17,16,16 dc.b 16,16,16,16,16,15,15,15,15,15 dc.b 15 ENDIF even ;Es folgen die Routinen zum Speichern des Hauptscreens als IFF-Datei save: movem.l d7/a5/a6,-(a7) move.l Screen,a0 move.l IntuiBase,a6 jsr ScreenToBack(a6) move.l KrScreen,a0 jsr ScreenToBDFYack(a6) move.l ExecBase,a6 jsr Enable(a6) move.w #onsprite,DMACON move.l DosBase,a6 bsr dodos move.l ExecBase,a6 jsr Disable(a6) move.l Screen,a0 move.l IntuiBase,a6 jsr ScreenToFront(a6) bsr mauskill movem.l (a7)+,d7/a5/a6 rts dodos: move.l doutput,d1 move.l #dtext1,d2 moveq #dtl1,d3 jsr Write(a6) move.l dinput,d1 move.l #instring,d2 moveq #inleng,d3 jsr Read(a6) cmpi.l #2,d0 blt dosx move.l #instring,a0 move.bE q #0,-1(a0,d0) move.l a0,d1 move.l #1006,d2 jsr Open(a6) move.l d0,file tst.l d0 beq doserr move.l file,d1 move.l #dfeld,d2 move.l #dflen,d3 jsr Write(a6) cmpi.l #dflen,d0 bne doserr move.l Bitplane1,a4 move.l Bitplane2,a5 move.w #hoch-1,d5 iffloop: movem.l d5/a4/a5,-(a7) move.l file,d1 move.l 4(a7),d2 move.l #breit/8,d3 jsr Write(a6) cmpi.l #breit/8,d0 beq.s iff1 movem.l (a7)+,d5/a4/a5 bra doserr iff1: move.l file,dF ! 1 move.l 8(a7),d2 move.l #breit/8,d3 jsr Write(a6) cmpi.l #breit/8,d0 beq.s iff2 movem.l (a7)+,d5/a4/a5 bra doserr iff2: movem.l (a7)+,d5/a4/a5 adda.l #breit/8,a4 adda.l #breit/8,a5 dbf d5,iffloop move.l file,d1 jsr Close(a6) clr.l file dosend: move.l doutput,d1 move.l #dtext2,d2 move.l #dtl2,d3 jsr Write(a6) move.l #200,d1 jsr Delay(a6) dosx: rts doserr: jsr IoErr(a6) move.l d0,Dosern move.l file,d1 jsr Close(aG xSy6) bra dodos Dosern: dc.l 0 dtext1: dc.b "Filename :",0 dtext2: dc.b "Bitte warten, gleich geht's weiter",$0d,$0a dtext3: dtl1= dtext2-dtext1 dtl2= dtext3-dtext2 even fieldlen= breit*hoch/8 ;Der Vorspann fr die IFF-Datei dfeld: dc.b "FORM" dc.l 2*fieldlen+dflen-8 dc.b "ILBM" dc.b "BMHD" dc.l 20 dc.w breit,hoch,0,0 dc.b 2,0,0,0 dc.w 0 dc.b $a,$b dc.w breit,hoch dc.b "BODY" dc.l 2*fieldlen dfeldend: dflen= dfeldend-dfeld ; data daten: blk.b digitn ;Lesefeld Hrsfr Digitizer welle: blk.l digitn ;Liste fr Wellenform spektrum: blk.l digitn ;Liste fr Spektrum sspektrum: blk.l partyn ;Liste fr Party-Spektrum oldpoint: blk.b digitn ;Liste der alten Endpunkte shuffle: blk.l digitn ;Shuffle sshuffle: blk.l partyn ;Party-Shuffle sumfeld: blk.l digitn/2 ;Summation sumshow: blk.l digitn/2 ;Anzeigefeld instring: blk.b inleng+4 ;Eingabefeld copfield: blk.l 32 ;Zeiger auf Copper-Farbbefehle oldvalue: blk.b 32 end d1 jsr Close(a . Alert: EQU -$6c CloseLibrary: EQU -$19e OpenLibrary: EQU -$228 Open: EQU -$1e Close: EQU -$24 Read: EQU -$2a Write: EQU -$30 Input: EQU -$36 Output: EQU -$3c Lock: EQU -$54 Examine: EQU -$66 FIBSize: EQU 300 FileSize: EQU 124 **************** Disk Commands ***************** CMD_Reset: EQU 1 CMD_Read: EQU 2 CMD_Write: EQU 3 CMD_UpDate: EQU 4 CMD_Clear: EQU 5 CMD_Stop: EQU 6 CMD_Start: EQU 7 CMD_Flush: EQU 8 TD_Motor: EQU 9 TD_Seek: EQU 10 TD_Format: EQU 11 TD_Remove: EQU `12 TD_ChangeNum: EQU 13 TD_ChangeState: EQU 14 TD_ProtStatus: EQU 15 ************** ExtIORequest Offsets ************ io_Command: EQU 28 io_Error: EQU 30 io_Actual: EQU 32 io_Length: EQU 36 io_Data: EQU 40 io_Offset: EQU 44 **************** Magic Variables *************** BlockLongPos: EQU $B8 start: move.l ExecBase,a6 move.l #DosName,a1 clr.l d0 jsr OpenLibrary(a6) move.l d0,DosBase beq NoDos move.l #Welcome,a0 bsr print move.l #Quest1,a0 bsr print move.l BootName,a0 g bsr print move.l #Quest2,a0 bsr print bsr GetChars move.b #0,-1(a0,d0) ; Return lschen cmp.w #1,d0 bne default move.l BootName,a0 default: move.l #1024,d1 ; Minimalgre wegen Checksum bsr GetFile move.l d0,FileOrt move.l d1,FileLength beq NoFile add.w #511,d1 ; ueber nchste Sektorgrenze lsr.l #8,d1 lsr.l #1,d1 sub.w #2,d1 ; Zwei Sektoren sind ja schon cmp.w #0,d1 bgt ok move.w #0,d1 ok: move.w d1,FileSects ; reserviert (0 & 1) move.l #Quest3,a0 bsr print 6sS 142,145,147,150,152,155,157,160 dc.w 162,165,167,170,172,174,177,179 dc.w 181,183,185,188,190,192,194,196 dc.w 198,200,202,204,206,207,209,211 dc.w 213,215,216,218,220,221,223,224 dc.w 226,227,229,230,231,233,234,235 dc.w 237,238,239,240,241,242,243,244 dc.w 245,246,247,248,248,249,250,250 dc.w 251,252,252,253,253,254,254,254 dc.w 255,255,255,256,256,256,256,256,256 ; ;Es folgt die Routine zur Anzeige der Daten im Hauptscreen show: movem.l d7/a5/a6,-(a7) move.l Feld,a5 ;7lDatenListe move.l #oldpoint,a4 ;Liste der alten Endpunkte move.w Count,d7 ;Anzahl move.l #COPROC,a6 ;Basisadresse der Coprozessoren move.l Startpos,d6 ;erste x-Adresse showloop: move.l (a5)+,d4 ;neuer Wert cmp.w #$ff,d4 ble.s notgreat move.w #$ff,d4 notgreat: not.b d4 sub.w Offset,d4 bge.s Offsetok moveq #0,d4 Offsetok: moveq #0,d3 move.b (a4),d3 ;alter Wert move.b d4,(a4)+ ;neuen Wert speichern cmp.b d3,d4 ;wenn gleich, dann keine Linie beq 89 sloopend showwait: btst #6,DMACONR(a6) bne.s showwait moveq #0,d0 move.w d0,BLTBMOD(a6) move.l #-1,BLTAFWM(a6) move.w #$8000,BLTADAT(a6) move.w BPR,BLTCMOD(a6) move.w #-1,BLTBDAT(a6) move.l BitPlane1,a0 move.w d6,d0 asr.w #3,d0 add.l d0,a0 move.w d3,d0 mulu BPR,d0 add.l d0,a0 move.l a0,BLTCPTH(a6) move.l a0,BLTDPTH(a6) moveq #$f,d1 and.w d6,d1 swap d1 asr.l #4,d1 swap d1 sub.w d3,d4 blt.s rauf ori.l #$0b0af041,d19|M bra.s richtok rauf: ori.l #$0bcaf045,d1 neg.b d4 subq.b #1,d4 richtok: andi.w #$00ff,d4 move.l d1,BLTCON0(a6) moveq #0,d0 sub.w d4,d0 move.w d0,BLTAPTL(a6) sub.w d4,d0 move.w d0,BLTAPTL(a6) move.w d4,d0 addq.w #1,d0 asl.w #6,d0 ori.w #2,d0 move.w d0,BLTSIZE(a6) ;los geht's sloopend: add.w Step,d6 dbf d7,showloop sendwait: btst #6,DMACONR(a6) bne.s sendwait movem.l (a7)+,a5/a6/d7 rts Feld: dc.l 0 ;Zeiger auf Datenliste Coun:qot: dc.w 0 ;Anzahl Step: dc.w 0 ;Schrittweite Startpos: dc.l 0 ;erste Linie Offset: dc.w 0 ;Vert. Offset ;Es folgen die Routinen zur Bearbeitung des Frequenzmittels sumclear: movem.l d0/a0/a1,-(a7) move.l #sumfeld,a0 move.l #sumshow,a1 move.w #digitn/2-1,d0 sumclloop: clr.l (a0)+ clr.l (a1)+ dbf d0,sumclloop move.l #0,Shift jsr shiftshow movem.l (a7)+,d0/a0/a1 rts summ: movem.l d0-d3/d7/a0-a2/a5/a6,-(a7) move.l #spektrum,a0 move.l #sumfeld,a1 ;_x move.l #sumshow,a2 move.l #digitn/2-1,d0 move.l Shift,d1 moveq #0,d3 summloop: move.l (a1),d2 add.l (a0)+,d2 bcs.s summalert move.l d2,(a1)+ lsr.l d1,d2 move.l d2,(a2)+ cmpi.l #230,d2 blt nobig moveq #-1,d3 nobig: dbf d0,summloop tst.l d3 beq.s noscale addq.l #1,Shift cmpi.l #23,Shift bge.s summalert jsr shiftshow bra.s noscale summalert: bsr sumclear ;berlauf! noscale: movem.l (a7)+,d0-d3/d7/a0-a2/a5/a6 rts Shift: <*. dc.l 0 ; ;Es folgt die Routine, die die Kreise fr den Partymodus zieht kr_num: dc.w 0 circle: clr.l d7 clr.l d1 move s_rad,d7 ;Start-Radius (R) clr.l Kr_num loop: move.l GraphicsBase,a6 move.l KrRastPort,a1 move kr_col,d0 sub Kr_num,d0 jsr SetAPen(a6) ;Stiftnummer move.l d7,d6 ;DA berechnen: subq #1,d6 ;DA=R-1 clr.l d4 ;X=0 move.l d7,d5 ;Y=R kr_l_1: cmp #0,d6 bge kr_l_2 subq #1,d5 ;Y=Y-1 add d5,d6 ;DA=DA+Y add d5,d6=`Z ;DA=DA+Y kr_l_2: move x0,d0 add d4,d0 ;x0+x move y0,d1 add d5,d1 ;y0+y move.l KrRastPort,a1 jsr Move(a6) move x0,d0 sub d4,d0 ;x0-x move y0,d1 add d5,d1 ;y0+y move.l KrRastPort,a1 jsr Draw(a6) move x0,d0 add d4,d0 ;x0+x move y0,d1 sub d5,d1 ;y0-y move.l KrRastPort,a1 jsr Move(a6) move x0,d0 sub d4,d0 ;x0-x move y0,d1 sub d5,d1 ;y0-y move.l KrRastPort,a1 jsr Draw(a6) move x0,d0 ad>wT[Ad d5,d0 ;x0+y move y0,d1 add d4,d1 ;y0+x move.l KrRastPort,a1 jsr Move(a6) move x0,d0 sub d5,d0 ;x0-y move y0,d1 add d4,d1 ;y0+x move.l KrRastPort,a1 jsr Draw(a6) move x0,d0 add d5,d0 ;x0+y move y0,d1 sub d4,d1 ;y0-x move.l KrRastPort,a1 jsr Move(a6) move x0,d0 sub d5,d0 ;x0-y move y0,d1 sub d4,d1 ;y0-x move.l KrRastPort,a1 jsr Draw(a6) sub d4,d6 ;DA=DA-X sub d4,d6 ;DA=DA-X subq ?gW #1,d6 ;DA=DA-1 addq #1,d4 ;X=X+1 cmp d4,d5 ble kr_fin bra kr_l_1 kr_fin: sub radius,d7 addq #1,Kr_num move Kr_num,d1 cmp kr_anz,d1 bne loop rts ; x0: dc.w 0 y0: dc.w 0 radius: dc.w 0 s_rad: dc.w 0 kr_anz: dc.w 0 kr_col: dc.w 0 ; ;Es folgen die Routinen des Party-Modus color: movem.l d7/a5/a6,-(a7) move #30,d7 move.l #sspektrum,a1 ;Neue Werte move.l #oldvalue,a2 ;Alte Werte move.l #MaxList,a3 ;Maximal-Datenwerte @(move.l #Rainbow+2,a4 move.l #copfield+4,a5 col: moveq #0,d2 moveq #0,d3 moveq #0,d6 move.l (a1)+,d1 ;Neuer Wert lsl #1,d1 and.l #255,d1 move.b (a2),d2 ;Alter Wert move.b (a3)+,d3 ;Maximal-Wert move.b d3,d0 lsr.b #4,d0 addq.b #2,d0 cmp.b d3,d1 blt.s col1 move.b d3,d1 col1: cmp.b d2,d1 blt.s col2 add.b d0,d1 move.b d1,d2 col2: sub.b d0,d2 bpl.s col3 moveq #0,d2 col3: move.b d2,(a2)+ move.b (a4)+,d1 ;Rot mulu d2,d1 mo+)|(,d6 ;Anzahl Befehle subq #1,d6 ;Befehlsliste move.l 4(a0),a6 move.l #copfield,a5 cl4l2: move.l (a6)+,d0 swap d0 andi.l #$fff,d0 moveq #1,d1 and.w d0,d1 bne.s nocopcol subi.w #$180,d0 blt.s nocopcol cmpi.w #$40,d0 bge.s nocopcol lsl.w #1,d0 move.l a6,d1 subq #2,d1 move.l d1,0(a5,d0) nocopcol: dbf d6,cl4l2 moveq #31,d0 move.l #copfield,a0 cl4l3: tst.l (a0)+ beq kill dbf d0,cl4l3 move.l #oldvalue,a0 moveq #7,d0 c,GNl4l5: clr.l (a0)+ dbf d0,cl4l5 movem.l (a7)+,a5/a6/d7 rts ;Es folgt die Routine zum Ziehen der Linien makeline: move.w (a5)+,d5 lineloop: movem.l (a5)+,d0/d1 move.l RastPort,a1 jsr Move(a6) ;Startposition setzen movem.l (a5)+,d0/d1 move.l RastPort,a1 jsr Draw(a6) ;Linie ziehen dbf d5,lineloop rts ;Es folgt die Routine zum Erstellen des Skalierung makescale: moveq #0,d0 move.l #233,d1 move.w (a5)+,d0 bne.s makescp rts makescp: bpl.s make-zfscpl neg.w d0 move.w #236,d1 makescpl: move.l d0,d6 move.l RastPort,a1 jsr Move(a6) moveq #0,d0 move.w d6,d0 move.l #231,d1 move.l RastPort,a1 jsr Draw(a6) bra.s makescale ;Es folgt die Routine zum Schreiben der Texte maketext: move.w (a5)+,d5 textloop: move.l RastPort,a1 movem.l (a5)+,d0/d1 jsr Move(a6) movem.l (a5)+,d0/a0 jsr Text(a6) dbf d5,textloop rts ; ;Es folgt die Routine zum Einlesen der Daten vom Digitizer ;;Da es hier au.f genaues Timing ankommt, wurden einige NOP-Befehle ;verwendet. ; digit: move.l #daten,a0 move.w #Sync,d2 move.w #Sync,d3 move.w #digitn-1,d4 moveq #$04,d5 moveq #$fa-256,d6 moveq #1,d1 move.l #CIAB,a1 move.l #PARPORT,a2 tst.w digiflag beq digold move.b d0,(a2) move.b (a2),d0 nop nop nop digit5loop: WAIT2 move.b d0,(a2) nop nop move.b (a2),d0 nop dbpl d2,digit5loop digit6loop: WAIT2 move.b d0,(a2) nop nop move.b (a2),d0 nop db/mi d3,digit6loop digit7loop: WAIT2 move.b d0,(a2) nop nop move.b (a2),(a0)+ dbf d4,digit7loop bra digend digold: ;fr die alte Beschaltung digit1loop: ;Synchronisation or.b d5,(a1) and.b d6,(a1) WAIT1 move.b (a2),d0 dbpl d2,digit1loop digit2loop: or.b d5,(a1) and.b d6,(a1) WAIT1 move.b (a2),d0 dbmi d3,digit2loop digit3loop: ;einlesen or.b d5,(a1) and.b d6,(a1) WAIT1 move.b (a2),(a0)+ dbf d4,digit3loop digend: move.l #da0 mten,a0 move.l #welle,a1 move.l #shuffle,a2 move.w #digitn-1,d1 digit4loop: ;in die Listen eintragen moveq #0,d0 move.b (a0)+,d0 move.l d0,(a1)+ subi.w #128,d0 move.l (a2)+,a3 move.l d0,(a3) dbf d1,digit4loop clr.b flag rts ; ;*************************************** ;Die "Schnelle Fourier-Transformation" ;*************************************** fftshort: movem.l d7/a5/a6,-(a7) move.l #daten,a0 move.l #sshuffle,a1 moveq #partyn-1,d1 fftsl1: moveq #01!~,d0 move.b (a0),d0 addq.l #partyfreq,a0 subi.w #128,d0 move.l (a1)+,a2 move.l d0,(a2) dbf d1,fftsl1 move.l #sspektrum,a6 move.l #4*partyn,a0 move.w #partyn/2-1,sqcount bra.s fft fftlong: movem.l d7/a5/a6,-(a7) move.l #spektrum,a6 move.l #4*digitn,a0 move.w #digitn/2-1,sqcount move.b #-1,flag fft: moveq #4,d7 move.l #sinustab,a3 fftloop1: moveq #4,d6 fftfor: move.l d6,d0 ;Bestimmung von Sinus und Kosinus subq #4,d0 asl.l #5,d0 asl.l 2"x% #4,d0 divs d7,d0 ;d0 jetzt zwischen 0 und 512 als zeiger auf word cmpi.w #256,d0 bge.s gross ;grer als pi halbe moveq #0,d3 move.w 0(a3,d0.w),d3 ;-sinus move.l d3,a1 move.w #256,d1 sub.w d0,d1 move.w 0(a3,d1.w),d3 ;cosinus move.l d3,a2 bra.s endsin gross: moveq #0,d3 move.l d0,d1 sub.w #256,d1 sub.w 0(a3,d1.w),d3 ;cosinus move.l d3,a2 move.w #512,d1 ;-sinus sub.w d0,d1 moveq #0,d3 move.w 0(a3,d1.w),d3 move.l d3,a1 endsin: move.3#T]}wl d6,a5 subq #4,a5 move.l a2,d3 move.l a1,d2 fftloop2: move.l a5,a4 add.l d7,a4 move.w 2(a6,a4),d5 move.w 0(a6,a4),d4 move.w d5,d1 move.w d4,d0 muls d3,d5 muls d3,d4 muls d2,d0 muls d2,d1 sub.l d0,d5 add.l d1,d4 asr.l #8,d5 asr.l #8,d4 move.w 2(a6,a5),d1 ;real[i] move.w 0(a6,a5),d0 ;imag[i] sub.w d5,d1 sub.w d4,d0 move.w d1,2(a6,a4) move.w d0,0(a6,a4) add.w d5,2(a6,a5) add.w d4,0(a6,a5) add.l d7,a5 add.l d7,a4$/5 cmp.l a0,a5 blt fftloop2 addq #4,d6 cmp.l d7,d6 ble fftfor asl.l #1,d7 cmp.l a0,d7 blt fftloop1 move.w sqcount,d7 ;quadrieren moveq #5,d4 quadloop: move.w (a6),d0 move.w 2(a6),d1 muls d0,d0 muls d1,d1 add.l d1,d0 move.w #2,d6 ;3 durchlufe moveq #15,d5 ;erster schtzwert move.l d0,d2 asr.l #1,d2 or.l d0,d2 schaetzung: asl.l #2,d2 roxl.w #1,d1 dbf d5,schaetzung sqrtloop: tst.w d1 ;keine Division durch null5m beq.s sqrtend move.l d0,d2 divs d1,d2 add.w d2,d1 asr.w #1,d1 and.w #$7fff,d1 dbf d6,sqrtloop sqrtend: lsr.w d4,d1 andi.l #$ffff,d1 move.l d1,(a6)+ dbf d7,quadloop movem.l (a7)+,d7/a5/a6 rts sqcount: dc.w 0 sinustab: dc.w 000,003,006,009,013,016,019,022 dc.w 025,028,031,034,038,041,044,047 dc.w 050,053,056,059,062,065,068,071 dc.w 074,077,080,083,086,089,092,095 dc.w 098,101,104,107,109,112,115,118 dc.w 121,123,126,129,132,134,137,140 dc.w &9 on move.w #0,Clearflag movem.l (a7)+,a5/a6/d7 rts line1x: line1: dc.w 9 ;Anzahl Linien -1 dc.l 63,0,63,255 dc.l 64,127,319,127 dc.l 64,63,319,63 dc.l 64,191,319,191 dc.l 64,0,319,0 dc.l 64,255,319,255 dc.l 127,0,127,255 dc.l 191,0,191,255 dc.l 255,0,255,255 dc.l 319,0,319,255 text1: dc.w 9 ;Anzahl Texte -1 dc.l 0,8 ,6,str1n3 dc.l 0,67 ,6,str1n2 dc.l 0,131,6,str1n1 dc.l 0,195,6,str1n2 dc.l 0,254,6,str1n3 dc.l 44 ,235,2,str1n4 dc.l 92 ,235,4,str1t dc.l 156,235,!'U14,str1t+4 dc.l 220,235,4,str1t+8 dc.l 284,235,4,str1t+12 text1x: dc.w 9 ;Anzahl Texte -1 dc.l 0,8 ,6,str1n3 dc.l 0,67 ,6,str1n2 dc.l 0,131,6,str1n1 dc.l 0,195,6,str1n2 dc.l 0,254,6,str1n3 dc.l 44 ,235,2,str1n4 dc.l 92 ,235,4,str1x dc.l 156,235,4,str1x+4 dc.l 220,235,4,str1x+8 dc.l 284,235,4,str1x+12 str1n1: dc.b "0 Volt" str1n2: dc.b "1.25 V" str1n3: dc.b "2.5 V" str1n4: dc.b "ms",0 str1x: IF freqband < 2 dc.b " 1.3 2.5 3.8 5.1" ENDIF str1t: IF freqband < 3 dc.b " "(1.6 3.2 4.8 6.4" ENDIF IF freqband = 3 dc.b " 2.1 4.2 6.3 8.4" ENDIF IF freqband > 3 dc.b " 3.2 6.4 9.612.8" ENDIF even ;Initialisierung fr Anzeige des Frequenzspektrums clean2: movem.l a5/a6/d7,-(a7) move.l GraphicsBase,a6 move.l RastPort,a1 moveq #0,d0 jsr SetRast(a6) move.l GraphicsBase,a6 move.l RastPort,a1 moveq #2,d0 jsr SetAPen(a6) move.l #line2,a5 bsr makeline tst.w digiflag beq clean2old move.l #scale2x,a5 bsr makescale mov#)^e.l #text2x,a5 bsr maketext bra clean2cont clean2old: move.l #scale2,a5 bsr makescale move.l #text2,a5 bsr maketext clean2cont: move.l #oldpoint,a0 move.w #digitn/4-1,d0 move.l #$e5e5e5e5,d1 clean2loop: move.l d1,(a0)+ dbf d0,clean2loop move.l #spektrum,Feld move.w #digitn/2-1,Count move.w #2,Step move.l #64,Startpos move.w #$1a,Offset move.w #0,Clearflag movem.l (a7)+,a5/a6/d7 rts line2: dc.w 6 dc.l 63,1,63,230 dc.l 63,230,319,2$*kc30 dc.l 64,57,319,57 dc.l 64,115,319,115 dc.l 64,172,319,172 dc.l 64,1 ,319,1 dc.l 319,1,319,230 scale2x: IF freqband < 2 dc.w -75 , 85 , 96 , 106,-116, 126, 137, 147 dc.w 157,-167, 177, 187, 197, 207,-217, 227 dc.w 237, 247, 257,-267, 277, 287, 297, 307 dc.w -317, 0 ENDIF scale2: IF freqband < 3 dc.w -76 , 88 , 101, 113,-126, 138, 151, 163 dc.w 177,-189, 203, 215, 228, 240,-253, 265 dc.w 278, 290, 305,-319, 0 ENDIF IF freqband = 3 dc.w -81 , 98 , 115, 132,-149, 166%+1, 183, 200 dc.w 217,-234, 251, 268, 285, 302,-319, 0 ENDIF IF freqband > 3 dc.w -90 ,-115,-140,-166,-191,-217,-243,-269 dc.w -295,-319, 0 ENDIF text2: dc.w 6 dc.l 0 ,255-8 , 3,str2n1 dc.l 64,255-9 ,32,freq1 dc.l 64,255-1 ,32,freq2 dc.l 0,175,5,fdb1 dc.l 0,118,5,fdb2 dc.l 0,60 ,5,fdb3 dc.l 0,8 ,5,fdb4 text2x: dc.w 6 dc.l 0 ,255-8 , 3,str2n1 dc.l 64,255-9 ,32,freq1x dc.l 64,255-1 ,32,freq2x dc.l 0,175,5,fdb1 dc.l 0,118,5,fdb2 dc.l 0,60 ,5,fdb3 dc.l 0,8 ,5,fdb4 str&,>2n1: dc.b "KHz",0 fdb1: dc.b "-6 dB",0 fdb2: dc.b " 0 dB",0 fdb3: dc.b " 3 dB",0 fdb4: dc.b " 6 dB",0 freq1x: IF freqband < 2 dc.b " 1 5 1 1 2 2" dc.b " 0 5 0 5" ENDIF freq1: IF freqband < 3 dc.b " 1 5 1 1 2" dc.b " 0 5 0" ENDIF IF freqband = 3 dc.b " 1 5 1 1" dc.b " 0 5" ENDIF IF freqband > 3 dc.b " 1 2 3 4 5 6 7 8 '-+9 1" dc.b " 0" ENDIF freq2= freq1+32 freq2x= freq1x+32 even ;Initialisierungsroutine fr Anzeige der Mittelwerte clean3: movem.l a5/a6/d7,-(a7) move.l GraphicsBase,a6 move.l RastPort,a1 moveq #0,d0 jsr SetRast(a6) move.l GraphicsBase,a6 move.l RastPort,a1 moveq #2,d0 jsr SetAPen(a6) move.l #line2,a5 bsr makeline tst.w digiflag beq clean3old move.l #scale2x,a5 bsr makescale move.l #text3x,a5 bsr m(.;Oaketext bra clean3cont clean3old: move.l #scale2,a5 bsr makescale move.l #text3,a5 bsr maketext clean3cont: move.l #oldpoint,a0 move.w #digitn/4-1,d0 move.l #$e5e5e5e5,d1 clean3loop: move.l d1,(a0)+ dbf d0,clean3loop move.l #sumshow,Feld move.w #digitn/2-1,Count move.w #2,Step move.l #64,Startpos move.w #$1a,Offset move.w #-1,Clearflag bsr sumclear movem.l (a7)+,a5/a6/d7 rts text3: dc.w 5 dc.l 0 ,255-8 , 3,str2n1 dc.l 64,255-9 ,32)/cHa,freq1 dc.l 64,255-1 ,32,freq2 dc.l 0,15,6,str3n1 dc.l 0,35,6,str3n2 dc.l 0,43,2,str3n3 text3x: dc.w 5 dc.l 0 ,255-8 , 3,str2n1 dc.l 64,255-9 ,32,freq1x dc.l 64,255-1 ,32,freq2x dc.l 0,15,6,str3n1 dc.l 0,35,6,str3n2 dc.l 0,43,2,str3n3 str3n1: dc.b "Profil",0 str3n2: dc.b "Faktor",0 str3n3: dc.b "2^",0 even ;Anzeige des Shiftfaktors: shiftshow: move.l RastPort,a1 moveq #16,d0 moveq #43,d1 move.l GraphicsBase,a6 jsr Move(a6) move.l Shift,d0 move.l #ziffli*C)؎st,a0 add.l d0,a0 add.l d0,a0 moveq #2,d0 move.l RastPort,a1 jsr Text(a6) rts zifflist: dc.b "0 1 2 3 4 5 6 7 8 9 1011121314151617181920" dc.b "2122232425262728293031",0 even clean4: movem.l a5/a6/d7,-(a7) clr.w Saveenable move.l KrScreen,a0 move.l IntuiBase,a6 jsr ScreenToFront(a6) bsr mauskill move.l #copfield,a0 ;CopField lschen moveq #31,d0 cl4l1: clr.l (a0)+ dbf d0,cl4l1 move.l View,a0 move.l 4(a0),a0 ;cprlst move.w 8(a0)1L8l 0 ;font dc.l 0 ;Title dc.l 0 ;Gadgets dc.l 0 ;CustomBitMap TextAttr: dc.l FontName ;Zeiger auf Fontname dc.w 8 ;Hhe dc.w 0 dc.w 0 ;Die folgende Routine ffnet eine Library getlib: moveq #0,d0 move.l ExecBase,a6 jsr OpenLibrary(a6) tst.l d0 beq kill ;Ende, wenn nicht gefunden move.l d0,(a5) rts ;Die folgende Routine schaltet den Mauszeiger ab, sie sperrt alle Sprites mauskill: btst #0,VPOSR+1 beq.s mauskill move.w #offsprite,DMACON rts ;Die fol2(gende Routine initialisiert die Parallelschnittstelle und ;untersucht, welche Digitizerbeschaltung vorliegt. initpar: move.b #0,PARDIR move.b CTRLDIR,d0 andi.b #$fa,d0 ori.b #$04,d0 move.b d0,CTRLDIR andi.b #$3f,BUTDIR move.w POTGOR,d0 ;auch die Maustaste andi.w #$f7ff,d0 move.w d0,POTGOR ;Initialisierung abgeschlossen move.l #CIAB,a0 move.l #PARPORT,a1 moveq #$04,d0 moveq #$FA-256,d1 moveq #1,d2 clr.w digiflag or.b d0,(a0) ;Erst mal mit Gewalt 3ù lesen and.b d1,(a0) move.b d0,(a1) ibusy1: and.b d2,(a0) beq.s ibusy1 move.b (a1),d5 move.b d0,(a1) ;Jetzt einen Startbefehl fr den Neuen ibusy2: and.b d2,(a0) bne.s olddigit ;Wenn beschftigt ist, ist es der Neue move.w d2,digiflag olddigit: rts ;Die folgende Routine erstellt die fr die FFT ntige Shuffle-Liste. makeshuffle: moveq #0,d0 shuffleloop: moveq #0,d2 move.l d0,d1 move.w d4,d3 shiftloop: roxr #1,d1 roxl #1,d2 dbf d3,shiftloo4*[.p asl #2,d2 lea 0(a1,d2.w),a2 move.l a2,(a0)+ addq #1,d0 dbf d7,shuffleloop rts makekrscreen: move.l #NewKrScreen,a0 move.l IntuiBase,a6 jsr OpenScreen(a6) tst.l d0 beq kill move.l d0,KrScreen move.l d0,a0 lea 84(a0),a1 move.l a1,KrRastPort lea 44(a0),a0 move.l a0,KrViewPort moveq #32,d0 move.l #KrColList,a1 move.l GraphicsBase,a6 jsr LoadRGB4(a6) move.l IntuiBase,a6 jsr ViewAddress(a6) move.l d0,View rts 5"tjlKrColList: blk.w 32,0 ;Die folgende Routine ffnet den Hauptscreen mit allem was ;dazugehrt, wie Farben, Font usw. makescreen: move.l #TextAttr,a0 ;Zeichensatz ffnen move.l GraphicsBase,a6 jsr OpenFont(a6) tst.l d0 beq kill ;Ende, wenn Zeichensatz nicht gefunden move.l d0,Font move.l #NewScreen,a0 ;Erffnen des Bildschirms ber Intui. move.l IntuiBase,a6 jsr OpenScreen(a6) tst.l d0 beq kill ;Ende, wenn kein Screen move.l d0,Screen move.l d0,a6)0 lea 84(a0),a1 move.l a1,RastPort ;Adresse des RastPort-Feldes lea 44(a0),a3 move.l a3,ViewPort move.l 4(a1),a2 ;Zeiger auf Bitmap move.l a2,BitMap move.l 8(a2),BitPlane1 move.l 12(a2),BitPlane2 move.w (a2),BPR move.l GraphicsBase,a6 ;Font setzen move.l Font,a0 move.l RastPort,a1 jsr SetFont(a6) move.l GraphicsBase,a6 ;Farben setzen move.l ViewPort,a0 move.l #ColList,a1 moveq #4,d0 jsr LoadRGB4(a6) move.l RastPort,a1 ;Position des W7 artetextes moveq #100,d0 moveq #120,d1 jsr Move(a6) move.l #Waittext,a0 ;"Bitte warten..." move.l #Waitlen,d0 jsr Text(a6) move.l RastPort,a1 moveq #0,d0 moveq #25,d1 jsr Move(a6) move.l #Auttext,a0 move.l #Autlen,d0 jsr Text(a6) rts ColList: dc.w $444 ;Die Farben des Hauptscreens dc.w $090 dc.w $009 dc.w $000 ;Es folgt die Routine, die das ganze Programm beendet kill: move.w #onsprite,DMACON ;Mauszeiger an move.l Screen,a0 move.l 8a0,d0 tst.l d0 beq.s noscreen move.l IntuiBase,a6 jsr CloseScreen(a6) ;Screen schlieen noscreen: move.l KrScreen,a0 move.l a0,d0 tst.l d0 beq.s nokrscreen move.l IntuiBase,a6 jsr CloseScreen(a6) nokrscreen: move.l ExecBase,a6 jsr Enable(a6) jsr Permit(a6) move.l Font,a1 move.l a1,d0 tst.l d0 beq nofont move.l GraphicsBase,a6 jsr CloseFont(a6) ;Font schlieen nofont: move.l ExecBase,a6 move.l DosBase,a1 move.l a1,d0 9L6 tst.l d0 beq.s nodos jsr CloseLibrary(a6) ;Dos schlieen nodos: move.l GraphicsBase,a1 move.l a1,d0 tst.l d0 beq.s nographics jsr CloseLibrary(a6) ;Graphics schlieen nographics: move.l IntuiBase,a1 move.l a1,d0 tst.l d0 beq.s nointui jsr CloseLibrary(a6) ;Intuition schlieen nointui: move.l SaveSP,sp ;alten Stackpointer rts ;Es folgen die fr die einzelnen Betriebsmodi spezifischen ;Initialisierungsroutinen. ;Initialisierung fr Anzeige der:^. Wellenform clean1: movem.l a5/a6/d7,-(a7) move.l IntuiBase,a6 move.l Screen,a0 jsr ScreenToFront(a6) bsr mauskill move.w #-1,Saveenable move.l GraphicsBase,a6 move.l RastPort,a1 moveq #0,d0 jsr SetRast(a6) ;Schirm lschen move.l GraphicsBase,a6 move.l RastPort,a1 moveq #2,d0 jsr SetAPen(a6) ;Zeichenfarbe setzen tst.w digiflag beq clean1old move.l #line1x,a5 bsr makeline move.l #text1x,a5 bsr maketext bra clean1cont %7clean1old: move.l #line1,a5 ;Linienliste abarbeiten bsr makeline move.l #text1,a5 ;Textliste abarbeiten bsr maketext clean1cont: move.l #oldpoint,a0 ;Liste der Linienstartpunkte init. move.w #digitn/4-1,d0 moveq #-1,d1 clean1loop: move.l d1,(a0)+ dbf d0,clean1loop move.l #welle,Feld ;Daten aus Feldliste move.w #digitn-1,Count ;Anzahl der Linien move.w #1,Step ;Schrittweite move.l #64,Startpos ;Pos. erste Linie move.w #0,Offset ;Vert. Startpositi  wieder tst.b d0 ;losgelassen bne.s links2 tst.b Clearflag beq mainloop ;jetzt geht's weiter movem.l d7/a5/a6,-(a7) bsr sumclear movem.l (a7)+,d7/a5/a6 bra mainloop linkslong: tst.w Saveenable beq links bsr save bra links linksrechts: bsr keytest ;warten bis wieder tst.b d0 ;losgelassen bne.s linksrechts move.l (a6),a6 ;nchste Betriebsart move.l 4(a6),a4 jsr (a4) ;Initialisierung speziell tst.b flag ;wurde schon FFT ?`+ durchgefhrt? bne lr2 bsr fftlong lr2: bsr show bra linkswait SaveSP: dc.l 0 ;der alte SP ;Die folgenden Datenlisten werden vom Hauptprogramm abgearbeitet, ;fr jede Betriebsart existiert eine Liste. ;Datenliste fr Anzeige der Wellenform liste1: dc.l liste2 ;nchste Liste dc.l clean1 ;Initialisierung dc.w 1 ;Anzahl Routinen-1 dc.l digit ;Routinen dc.l show ;Datenliste fr Anzeige des Frequenzspektrums liste2: dc.l liste3 dc.l clean2 @3" dc.w 2 dc.l digit dc.l fftlong dc.l show ;Datenliste fr Summation liste3: dc.l liste4 dc.l clean3 dc.w 3 dc.l digit dc.l fftlong dc.l summ dc.l show ;Datenliste fr Party-Modus liste4: dc.l liste1 dc.l clean4 dc.w 2 dc.l digit dc.l fftshort dc.l color ;Die folgende Routine sorgt fr die Abfrage der Maustasten und ;bricht das Programm sofort ab, sobald beide Tasten gedrckt werden. keytest: moveq #0,d0 move.b CIAYKAA,d1 andi.b #$40,d1 bne.s noleft ori.b #1,d0 noleft: move.w POTGOR,d1 andi.w #$400,d1 bne.s noright ori.b #2,d0 noright: cmpi.b #3,d0 beq kill ;beenden, wenn beide Tasten rts ;Es folgt die Hauptinitialisierungsroutine init: move.l 4,ExecBase ;Hauptinitialisierung move.l #IntuitionName,a1 move.l #IntuiBase,a5 bsr getlib move.l #GraphicsName,a1 move.l #GraphicsBase,a5 bsr getlib move.l #DosName,a1 move.l #DosBase,a5 bsr getlib bBųQsr makekrscreen bsr makescreen move.l GraphicsBase,a6 move.l KrRastPort,a1 moveq #0,d0 jsr SetRast(a6) move #219,x0 move #128,y0 move #7,radius move #100,s_rad move #13,kr_anz move #13,kr_col bsr circle move #60,x0 move #185,y0 move #5,radius move #60,s_rad move #10,kr_anz move #23,kr_col bsr circle move #60,x0 move #50,y0 move #5,radius move #45,s_rad move #8,kr_anz move #31,kr_colC} bsr circle move.l DosBase,a6 jsr Input(a6) move.l d0,dinput jsr Output(a6) move.l d0,doutput move.l ExecBase,a6 jsr Forbid(a6) ;Kein Task-Switch jsr Disable(a6) ;Kein Interrupt bsr mauskill ;Sprites abschalten bsr initpar ;Parallelschnittstelle init. move.l #digitn-1,d7 move.l #digitbits-1,d4 move.l #shuffle,a0 move.l #spektrum,a1 bsr makeshuffle ;Shuffle-Liste erstellen move.l #partyn-1,d7 move.l #partybits-1,d4 move.l #Dsshuffle,a0 move.l #sspektrum,a1 bsr makeshuffle rts ;Es folgen die zur Initialisierung notwendigen Variablen und Konstanten ExecBase: dc.l 0 ;Libraries IntuiBase: dc.l 0 GraphicsBase: dc.l 0 DosBase: dc.l 0 dinput: dc.l 0 doutput: dc.l 0 file: dc.l 0 IntuitionName: dc.b "intuition.library",0 GraphicsName: dc.b "graphics.library",0 DosName: dc.b "dos.library",0 FontName: dc.b "topaz.font",0 WaitText: dc.b "Bitte warten...E",0 AutText: dc.b "Autoren: Danisch/Reinhardt/Schwaiger",0 even Waitlen= 15 ;Lnge WaitText Autlen= 36 ;Lnge Title Font: dc.l 0 ;Zeiger auf Font Screen: dc.l 0 ;Zeiger auf Screen RastPort: dc.l 0 ;Zeiger auf RastPort ViewPort: dc.l 0 ;Zeiger auf ViewPort BitMap: dc.l 0 ;Zeiger auf BitMap BitPlane1: dc.l 0 ;Zeiger auf BitPlane BitPlane2: dc.l 0 BPR: dc.w 0 ;Bytes per Row View: dc.l 0 KrScreen: dc.l 0 KrRastPort: dc.l 0 KrViewPort: dc.l 00X9 flag: dc.w 0 ;fft schon durchgefhrt? Clearflag: dc.w 0 ;Summation lschen? Saveenable: dc.w 0 digiflag: dc.w 0 ;0=alte, 1=neue Beschaltung NewScreen: dc.w 0,0 ;Ecken dc.w 320,256 ;Format dc.w 2 ;BitPlanes dc.b 0,1 ;Pens dc.w 0 ;ViewModes dc.w $f ;Type=Customscreen dc.l 0 ;font dc.l 0 ;Title dc.l 0 ;Gadgets dc.l 0 ;CustomBitMap NewKrScreen: dc.w 0,0 ;Ecken dc.w 320,256 ;Format dc.w 5 ;BitPlanes dc.b 0,1 ;Pens dc.w 0 ;ViewModes dc.w $f ;Type=Customscreen dc.GrS -366 WritePixel= -30 -294 SetAPen= -30 -312 start: jsr setup ;Initialisiert die Bitmaps und ;oeffnet benoetigte Libraries grafik: jsr open_file ;File auf Diskette oeffnen move.l #buffer1,d2 move #48,d3 jsr load move.l #col_buf,d2 move #96,d3 jsr load move.l #buffer1,d2 move #42,d3 jsr load move.l #$40000,d2 ;Adresse der 1. Bitmap move.l #40000,d3 ;Anzahl der Bytes fuer jsr load ;Loadroutine jsr close_file move.l #Bitplane1,a1 move.l #Bitplane2,a2 move.l #H4|Bitplane3,a3 move.l #Bitplane4,a4 move.l #Bitplane5,a5 move.l #$40000,a0 move #200,d1 weiter: jsr paint sub #1,d1 bne weiter jmp ok paint: move #20,d0 l1: move.w (a0)+,(a1)+ sub #1,d0 bne l1 move #20,d0 l2: move.w (a0)+,(a2)+ sub #1,d0 bne l2 move #20,d0 l3: move.w (a0)+,(a3)+ sub #1,d0 bne l3 move #20,d0 l4: move.w (a0)+,(a4)+ sub #1,d0 bne l4 move #20,d0 l5: move.w (a0)+,(a5)+ sub #1,d0 bne l5 rts ok: move #32,d1 move.l #col_buf,a0 move.l #col_buI7f,a1 w1: move.b (a0)+,d0 ror.b #4,d0 move.b d0,(a1)+ move.b (a0)+,(a1) move.b (a0)+,d0 ror.b #4,d0 add.b d0,(a1)+ sub #1,d1 bne w1 move.l #col_buf,a0 move.l #co0,a1 move #32,d1 w2: move.w (a0),(a1)+ add.w #2,a0 add.w #2,a1 sub #1,d1 bne w2 jsr setcopper wait: andi.b #64,$bfe001 ;Bit 7 (linke Maustaste) bne wait move.l oldcop,(a0) ;Alte Copperliste wieder bereit- move.l exec,a6 move.l GfxBase,a1 ;stellen und Gfxlibrary jsr CloseLibrary(a6);schliesseJ n move.l dos_base,a1 jsr closelibrary(a6) jsr Permit(a6) ;Multitasking wieder zulassen ILLEGAL ;Rueckkehr zum SEKA clr.l d0 ;Register loeschen rts ;ende open_file: move.l dos_base,a6 move.l #filename,d1 move.l #1005,d2 jsr Open(a6) beq wait move.l d0,bif rts load: move.l dos_base,a6 move.l bif,d1 jsr Read(a6) rts close_file: move.l dos_base,a6 move.l bif,d1 jsr Close(a6) rts setup: move.l Exec,a6 ;Exebase-Adresse nach a6 jsr Forbid(a6) ;Stop MultitasK_Aking move.l exec,a6 lea.l dosname,a1 jsr Openlibrary(a6) move.l d0,dos_base lea GrName,a1 ;Gfxname nach a1 jsr OpenLibrary(a6) ;Gfxlibrary oeffnen move.l d0,GfxBase ;Basisadresse buffern move.l d0,a6 add.l #$32,d0 move.l d0,copptr ; ---- Setup the BitMap lea BitMap,a0 ;Bitmapstruktur nach a0 moveq #5,d0 ;Tiefe (5 Bitplanes) move.l #320,d1 ;320 Pixel nach x move.l #200,d2 ;200 Pixel nach y jsr InitBitMap(a6) ;Bitmap Initialisieren lea RastPort,a1 ;erhaltenen RasL?*tport nach a1 jsr InitRastPort(a6);Rastport initialisieren move.l #BitMap,R_BitMap move.l #BitPlane1,d0 ;Adresse Bitplane nach d0 move.l d0,Plane1 ;Adresse auch nach Plane1 move.l d0,a0 ;und nach Adressregister a0 move.w d0,lo1 ;sowie in Copperliste speichern swap d0 ;Hi-Nibble isolieren und eben- move.w d0,hi1 ;falls nach Copperliste move.l #8000,d0 ;8000 Bytes fuer Bitplane bele- move.b #$00,d1 ;gen cl1: move.b d1,(a0)+ dbf d0,cl1 move.l #BitPlane2,d0 move.l dM60,Plane2 move.l d0,a0 move.w d0,lo2 swap d0 move.w d0,hi2 move.l #8000,d0 move.b #$00,d1 cl2: move.b d1,(a0)+ dbf d0,cl2 move.l #BitPlane3,d0 move.l d0,Plane3 move.l d0,a0 move.w d0,lo3 swap d0 move.w d0,hi3 move.l #8000,d0 move.b #$00,d1 cl3: move.b d1,(a0)+ dbf d0,cl3 move.l #BitPlane4,d0 move.l d0,Plane4 move.l d0,a0 move.w d0,lo4 swap d0 move.w d0,hi4 move.l #8000,d0 move.b #$00,d1 cl4: move.b d1,(a0)+ dbf d0,cl4 move.l #BitPlane5,d0 move.l d0,Plane5 N~ move.l d0,a0 move.w d0,lo5 swap d0 move.w d0,hi5 move.l #8000,d0 move.b #$00,d1 cl5: move.b d1,(a0)+ dbf d0,cl5 rts setcopper: move.l copptr,a0 ;Adresse der Copperliste nach a0 move.l (a0),oldcop ;Alte Liste zwischenspeichern move.l #Copper,(a0) ;Neue Liste fue Copper rts ;----- Hier beginnt die neue Copperliste ----- ;Angaben muessen immer als WORD (.W) uebergeben werden ;Die Angaben geschehen immer Paarweise, wobei der ;erste Wert die Adresse ($DFFxxx) und der zwei Opte Wert ;der Wert sein muss, der an diese Adresse geschrieben ;werden soll (DC.W $0180,$000 zum Beispiel schreibt ;an Adresse $DFF0180 den Wert $000). Copper: DC.W $0180 co0: dc.w $005a DC.W $0182 co1: dc.w $0fff DC.W $0184 co2: dc.w $0002 DC.W $0186 co3: dc.w $0f80 DC.W $0188 co4: dc.w $000f DC.W $018a co5: dc.w $0f0f DC.W $018c co6: dc.w $00ff DC.W $018e co7: dc.w $f0ff DC.W $0190 co8: dc.w $0620 DC.W $0192 co9: dc.w $0e50 DC.W $0194 co10: dc.w $09f1 DC.W $0196 co P 11: dc.w $0eb0 dc.w $0198 co12: dc.w $055f dc.w $019a co13: dc.w $092f dc.w $019c co14: dc.w $00f8 dc.w $019e co15: dc.w $0ccc dc.w $01a0 co16: dc.w $0000 dc.w $01a2 co17: dc.w $0d22 dc.w $01a4 co18: dc.w $0000 dc.w $01a6 co19: dc.w $0fca dc.w $01a8 co20: dc.w $0444 dc.w $01aa co21: dc.w $0555 dc.w $01ac co22: dc.w $0666 dc.w $01ae co23: dc.w $0777 dc.w $01b0 co24: dc.w $0888 dc.w $01b2 co25: dc.w $0999 dc.w $01b4 co26: dc.w $0aaa dc.w $01b6 co27: dc.w $0bbb dc.w  ;IU,Y$01b8 co28: dc.w $0ccc dc.w $01ba co29: dc.w $0ddd dc.w $01bc co30: dc.w $0eee dc.w $01be co31: dc.w $0fff DC.W $00e0 hi1: DC.W $0002 DC.W $00e2 lo1: DC.W $1000 DC.W $00e4 hi2: DC.W $0002 DC.W $00e6 lo2: DC.W $1000 DC.W $00e8 hi3: DC.W $0002 DC.W $00ea lo3: DC.W $1000 DC.W $00ec hi4: DC.W $0002 DC.W $00ee lo4: DC.W $1000 DC.W $00f0 hi5: DC.W $0002 DC.W $00f2 lo5: DC.W $1000 DC.W $0100,%0101000000000000 DC.W $0102 delay: DC.W %0000 DC.W $0108,0 DC.W $010a,0 DC.W $Rdhyboard move.l xpos1,len2 move.l #buffer2,buffer move.l #0,xin move.l #0,xpos move.l #0,xpos1 move.l #30,yin move.l #text3,textbuf move.l lent3,lenbuf move.l #5,col move.l #1,col2 jsr keyboard move.l xpos1,len3 wait: make5: andi.b #64,$bfe001 ;Bit 7 (linke Maustaste) bne make5 move.l copptr,a0 move.l oldcop,(a0) ;Alte Copperliste wieder bereit- move.l exec,a6 move.l GfxBase,a1 ;stellen und Gfxlibrary jsr CloseLibrary(a6);schliessen move.l dos_base,a1 jsr closeS.]EZlibrary(a6) jsr Permit(a6) ;Multitasking wieder zulassen ILLEGAL ;Rueckkehr zum SEKA rts ;ende setup: move.l Exec,a6 ;Exebase-Adresse nach a6 jsr Forbid(a6) ;Stop Multitasking move.l exec,a6 lea.l dosname,a1 jsr Openlibrary(a6) move.l d0,dos_base lea GrName,a1 ;Gfxname nach a1 jsr OpenLibrary(a6) ;Gfxlibrary oeffnen move.l d0,GfxBase ;Basisadresse buffern move.l d0,a6 add.l #$32,d0 move.l d0,copptr lea BitMap,a0 ;Bitmapstruktur nach a0 moveq #5,d0 ;Tiefe (5T Bitplanes) move.l #320,d1 ;320 Pixel nach x move.l #200,d2 ;200 Pixel nach y jsr InitBitMap(a6) ;Bitmap Initialisieren lea RastPort,a1 ;erhaltenen Rastport nach a1 jsr InitRastPort(a6);Rastport initialisieren move.l #BitMap,R_BitMap move.l #BitPlane1,d0 ;Adresse Bitplane nach d0 move.l d0,Plane1 ;Adresse auch nach Plane1 move.l d0,a0 ;und nach Adressregister a0 move.w d0,lo1 ;sowie in Copperliste speichern swap d0 ;Hi-Nibble isolieren und eben- move.w d0,hi1 ;faUlls nach Copperliste move.l #8000,d0 ;8000 Bytes fuer Bitplane bele- move.b #$00,d1 ;gen cl1: move.b d1,(a0)+ dbf d0,cl1 move.l #BitPlane2,d0 move.l d0,Plane2 move.l d0,a0 move.w d0,lo2 swap d0 move.w d0,hi2 move.l #8000,d0 move.b #$00,d1 cl2: move.b d1,(a0)+ dbf d0,cl2 move.l #BitPlane3,d0 move.l d0,Plane3 move.l d0,a0 move.w d0,lo3 swap d0 move.w d0,hi3 move.l #8000,d0 move.b #$00,d1 cl3: move.b d1,(a0)+ dbf d0,cl3 move.l #BitPlane4,d0 move.l d0,Plane4 m VIove.l d0,a0 move.w d0,lo4 swap d0 move.w d0,hi4 move.l #8000,d0 move.b #$00,d1 cl4: move.b d1,(a0)+ dbf d0,cl4 move.l #BitPlane5,d0 move.l d0,Plane5 move.l d0,a0 move.w d0,lo5 swap d0 move.w d0,hi5 move.l #8000,d0 move.b #$00,d1 cl5: move.b d1,(a0)+ dbf d0,cl5 rts setcopper: move.l copptr,a0 ;Adresse der Copperliste nach a0 move.l (a0),oldcop ;Alte Liste zwischenspeichern move.l #Copper,(a0) ;Neue Liste fue Copper rts Copper: DC.W $0180 co0: dc.w $0000 DC.W  Wj$0182 co1: dc.w $0fff DC.W $0184 co2: dc.w $000f DC.W $0186 co3: dc.w $0f00 DC.W $0188 co4: dc.w $000f DC.W $018a co5: dc.w $0f0f DC.W $018c co6: dc.w $00ff DC.W $018e co7: dc.w $f0ff DC.W $0190 co8: dc.w $0620 DC.W $0192 co9: dc.w $0e50 DC.W $0194 co10: dc.w $09f1 DC.W $0196 co11: dc.w $0eb0 dc.w $0198 co12: dc.w $055f dc.w $019a co13: dc.w $092f dc.w $019c co14: dc.w $00f8 dc.w $019e co15: dc.w $0ccc dc.w $01a0 co16: dc.w $0000 dc.w $01a2 co17: dc.w $0d22 dc XB;W.w $01a4 co18: dc.w $0000 dc.w $01a6 co19: dc.w $0fca dc.w $01a8 co20: dc.w $0444 dc.w $01aa co21: dc.w $0555 dc.w $01ac co22: dc.w $0666 dc.w $01ae co23: dc.w $0777 dc.w $01b0 co24: dc.w $0888 dc.w $01b2 co25: dc.w $0999 dc.w $01b4 co26: dc.w $0aaa dc.w $01b6 co27: dc.w $0bbb dc.w $01b8 co28: dc.w $0ccc dc.w $01ba co29: dc.w $0ddd dc.w $01bc co30: dc.w $0eee dc.w $01be co31: dc.w $0fff DC.W $00e0 hi1: DC.W $0002 DC.W $00e2 lo1: DC.W $1000 DC.W $00e4 hi2: DC.W $0002  Y DC.W $00e6 lo2: DC.W $1000 DC.W $00e8 hi3: DC.W $0002 DC.W $00ea lo3: DC.W $1000 DC.W $00ec hi4: DC.W $0002 DC.W $00ee lo4: DC.W $1000 DC.W $00f0 hi5: DC.W $0002 DC.W $00f2 lo5: DC.W $1000 DC.W $0100,%0101000000000000 DC.W $0102 delay: DC.W $00 DC.W $0108,0 DC.W $010a,0 DC.W $0092,$0038 DC.W $0094,$00d0 DC.W $008e,$3681 DC.W $0090,$fdc1 DC.W $ffff,$fffe BitMap: BytesPerRow: blk.w 1,0 Bytes: blk.w 1,0 Flags: blk.b 1,0 Depth: blk.b 1,0 Pad: blk.w 1,0 Plan ZJe1: blk.l 1,0 Plane2: blk.l 1,0 Plane3: blk.l 1,0 Plane4: blk.l 1,0 Plane5: blk.l 1,0 Planes: blk.l 1,0 RastPort: blk.l 1,0 R_BitMap: blk.l 1,0 blk.b 2+4+4+4+8,0 blk.b 4,0 cp_x: blk.w 1,0 cp_y: blk.w 1,0 blk.b 8+22+[7*2]+[2*4]+8,0 blk.w 6,0 even GrName: DC.B 'graphics.library',0 Dosname: DC.B 'dos.library',0 even copptr: blk.l 1,0 oldcop: blk.l 1,0 GfxBase: blk.l 1,0 Dos_base: blk.l 1,0 x: blk.l 1,0 key1: dc.b $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0a,$0[8tb,$0c dc.b $0d,$41,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19 dc.b $1a,$1b,$44,$5f,$20,$21,$22,$23,$24,$25,$26,$27,$28 dc.b $29,$2a,$4c,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39 dc.b $3a,$4f,$4e,$40,$4d dc.b $3d,$3e,$3f,$2d,$2e,$2f,$1d,$1e,$1f,$0f,$3c,$4a,$43 dc.b $46 key2: dc.b '`1234567890-=\' dc.b 32 dc.b 'QWERTYUIOP[]' dc.b 13 dc.b '~ASDFGHJKL;' dc.b 39,28 dc.b ' zum Seka ; rts ; => zum CLI align 4 buffer: dc.l 0 dosbase: dc.l 0 align 4 name: dc.b 'Gang',0 align 4 fileh: dc.l 0 align 4 dosname: dc.b 'dos.library',0 align 4 block: blk.w 256,8 #%00000001,inter beq.S schmWг3f00,name beq message move.l #name,d1 move.l #-2,d2 jsr lock(a6) tst.l d0 beq notf move.l d0,locksav move.l locksav,d1 move.l #fileinfo,d2 jsr examine(a6) tst.l d0 beq.s hua bsr.s pcrlf move.l fileinfo+4,d0 bmi nodir loop: move.l locksav,d1 move.l #fileinfo,d2 jsr exnext(a6) tst.l d0 beq.s hua ausgeben: move.l #fileinfo+8,d2 bsr.s pline bra.s loop hua: jsr ioerr(a6) move.l d0,d6 bsr.s pcrlf move.l 4,a6 move.l dosbase,a1 jsrnQw= closelib(a6) rts pline: bsr.s pmsg pcrlf: move.b #$0a,outline move.b #$0d,outline+1 bsr.s pchar pdir: rts pchar: move.l dosbase,a6 move.l conhandle,d1 move.l #outline,d2 move.l #$02,d3 jmp write(a6) pmsg: move.l d2,a0 clr d3 ploop: tst.b (a0)+ beq.s pmsg2 addq.l #$01,d3 bra.s ploop pmsg2: move.l conhandle,d1 jsr write(a6) tst.l fileinfo+4 bmi.s pdir move.l conhandle,d1 move.l #dirname,d2 move.l #$06,d3 jmp write(a6) message: moveouV.l #inform,d2 sub.l #$01,fileinfo+4 bsr.s pline bra hua nodir: move.l #name,d2 sub.l #$01,fileinfo+4 bsr pmsg move.l #nota,d2 bsr pline bra hua notf: bsr pcrlf move.l #name,d2 sub.l #$01,fileinfo+4 bsr pmsg move.l #notav,d2 bsr pline bra hua clearit: align 4 dosname: dc.b 'dos.library',0 align 4 dosbase: dc.l $0 align 4 conhandle: dc.l $0 even outline: dc.w $0 align 4 locksav: dc.l $0 align 4 fileinfo: blk.b 260,0 align 4 dirname: dc.b ' (Dir)',0 a6Plign 4 inform: dc.b $0a,$0d dc.b 'Usage: TheDir [Name]',$0a,$0d dc.b 'Written by Unknown of D.O.C',$00 align 4 nota: dc.b ' is not a directory,sorry.',$00 align 4 notav: dc.b ' not found,sorry.',$00 align 4 name: blk.b 80,0  move.l d2,a0 clr d3 ploop: tst.b (a0)+ beq.s pmsg2 addq.l #$01,d3 bra.s ploop pmsg2: move.l conhandle,d1 jsr write(a6) tst.l fileinfo+4 bmi.s pdir move.l conhandle,d1 move.l #dirname,d2 move.l #$06,d3 jmp write(a6) message: moveqe.s start move.l execbase,a6 ; Supervisor-Modus lea super,a5 jmp supervisor(a6) super: addq.l #8,a7 move.l #$10002,d1 ; Speicher reservieren move.l #len+4,d0 ; (Musikspeicher) jsr AllocMem(a6) move.l d0,buffer lea.l dosname,a1 jsr openlib(a6) move.l d0,dosbase move.l d0,a6 move.l #name,d1 move.l #$03ee,d2 jsr open(a6) move.l d0,fileh move #$2700,SR ; Interrupts sperren move.b #%00000000,ddrb1 ; Parallel-Port move.b ddra2,d0jZ ; initialisieren andi.b #%11111010,d0 ori.b #%00000100,d0 move.b d0,ddra2 move.b #speed/5,timerlo move.b #0,timerhi move.b #%01111110,inter move.b #%10000001,inter move.b #%10010101,control lea block,a1 ; Farbdefinitionen move #$0000,block ; Nullpunkt (schwarz) move #$0F00,block+254 ; bersteuert (rot) move #$0F00,block+256 ; bersteuert (rot) move.l #$01,d4 schleife: move.l buffer,a0 move.l #len,d3 schleife1: andi.b #%00000001,inter beq.S schstu Kgatforch(a6) ; Wait for a character Routine ! tst.l d0 ; Test, ob eine Taste gedrckt wurde beq wait ; Wenn nicht dann warte nochmal ! rts do_open: move.l dosbase,a6 jsr Open(a6) tst.l d0 rts do_close: move.l handle,d1 move.l dosbase,a6 jsr Close(a6) rts dosname: dc.b 'dos.library',0,0 even dosbase: blk.l 1 even handle: blk.l 1 even fensternax*Uempty1: bcs.S bigone moveq #8,d1 moveq #1,d3 lsr.l #1,d0 bne.S notempty2 jsr getnextlwd notempty2: bcs.S dodupl moveq #3,d1 clr.w d4 dojmp: jsr rdd1bits move.w d2,d3 add.w d4,d3 getd3chr: moveq #7,d1 get8bits: lsr.l #1,d0 bne.S notempty3 jsr getnextlwd notempty3: roxl.l #1,d2 dbf d1,get8bits move.b d2,-(a2) dbf d3,getd3chr jmp nextcmd bigjmp: moveq #8,d1 moveq #8,d4 jmp dojmp bigone: moveq #2,d1 jsr rdd1bits cmp.b #2,d2 blt.S midjumps cmp.b #3,dy|42 beq.S bigjmp moveq #8,d1 jsr rdd1bits move.w d2,d3 move.w #12,d1 jmp dodupl midjumps: move.w #9,d1 add.w d2,d1 addq #2,d2 move.w d2,d3 dodupl: jsr rdd1bits copyd3bytes: subq #1,a2 move.b (a2,d2.w),(a2) dbf d3,copyd3bytes nextcmd: cmp.l a2,a1 blt.L notfinished tst.l d5 bne.S damage illegal damage: move.w #$ffffffff,d0 damloop: move.w d0,$dff180 subi.l #1,d0 bne.S damloop illegal getnextlwd: move.l -(a0),d0 eor.l d0,d5 move.w #$10,ccr roxr.l #1,d0 rts rdd1bdits: subq.w #1,d1 clr.w d2 getbits: lsr.l #1,d0 bne.S notempty move.l -(a0),d0 eor.l d0,d5 move.w #$10,ccr roxr.l #1,d0 notempty: roxl.l #1,d2 dbf d1,getbits rts ; Written by LORD BLITTER ; Christian MORANT ; 8, av. des Pagodes ; 1020 Brussels ; Belgium ; official dealer : BS1 oxl.l #1,d2 dbf d1,get8bits move.b d2,-(a2) dbf d3,getd3chr jmp nextcmd bigjmp: moveq #8,d1 moveq #8,d4 jmp dojmp bigone: moveq #2,d1 jsr rdd1bits cmp.b #2,d2 blt.S midjumps cmp.b #3,d{Rtername,d1 ; Fensterstruktur(s.u.) nach d1 move.l #1005,d2 ; ? laut Buch Art des Fensters jsr do_open ; ffne das Window move.l d0,handle ; Adresse des Windows retten ! move.l #ein,d2 ; Prefixdaten schreiben move.l #eine-ein,d3 ; " " " " jsr Schreibe ; verzweige Schreibroutine move.l #text1,d2 ; Textadresse nach d2 move.l #text1ende-text1,d3 ; Lnge des Tex|tes nach d3 jsr Schreibe ; Schreiben aufrufen jsr Wait ; Warte-Taste ! Ende: jsr do_close ; Window schlieen move.l execbase,a6 ; Vorbereitung zum schlieen der move.l dosbase,a1 ; DOS-Library ! jsr CloseLib(a6) ; Aufruf schlieen rts ; Fertig !! Schreibe: move.l dosbase,a6 ; vor dem Funktionsaufruf mu der Tev02jxt mit move.l handle,d1 ; move.l #text,d2 und jsr Write(a6) ; move.l #textende-text,d3 gespeichert sein rts wait: move.l #wartet,d2 ; Ausgabe des in wartet move.l #wartetende-wartet,d3 ; gespeicherten Textes ! jsr Schreibe ; Aufruf Subroutine move.l #10000000,d2 ; Warte je 10 Sekunden move.l dosbase,a6 ; Vorbereitung move.l handle,d1 ; der jsr wai~r8=88      | 0`00`0`!F@D `@``@`>18 NAAAA?̇???????>??/ !x?߀@?C?? ????`??!C? ;]?aaaa?c?cc?c7777?   0 07``1 F0` 0` C  ` N`@ `@ A?AAAއ܇?o?Ӻ????xx?????`?9S?aa???c?c???77??  ! ``p`` ! >&>  18 G????FFOچ N N???????#777'! ''CCA ac  G77?o???aa?cc77???p`p00``00`@`@`0<@0 !0 @0!!0  ``|` A `AA CCCC0G?OO#wooO3oOo9<G> > ?ocoo?GOO#[??G#O0OC1Co0<0o'O??]?O[0CC1??C?C???''?@G@! O 18? `?> W??`?##@` 3`?????F?? N?7oF#? N#}? ? w?w????`   'p` ? o̿/? ??G7?x ???'?<?4Ϟq~p~/ c ?'oo??wC7&??Y 64\\A6Y PA88x/(( 08``# x€``x ``A  8V@ @ |,p|[ [ |||G<G<;`;`=E=@=@##;_  ?3C'_?7?__?};yg>?'`?` /oa?? /8`( _?zz_?/g`'p773?΀G'' ?O? Op@#77oo???xO߀??? ų??? \ \ 8x68`8`$(^(<`0810000 x  `  @<GG>@O|}yF@99ϟ##{g>}4=4'==)ߟ @ v0lfl ffx~x'x''o'?O????oCn&fCX Oo0O7'??7o'7gOO'o?o?.8|?hw;`Cp??oOO?7??g?oOoo?_.8x,l( (!t|!t<| ?@ 08X!4PxB  Pq(q(p  00    c@ ,p@<v `@?|? ?? ?G}7^y#9 흀3 8'$D ` @ ?nlpX84'0<  ~ xV1@| @ @$  `@QU-Ȏ| > > @ ,p G<+<|++<+| 1#Sy=Sn6SySn6=@{3333OOOO0߰w??C|?$xy?ə?<??/?G ?@` ߿?| /=@ ??????ֿp?>?/~?? ?ooo?o߀? ?0 \py( Y\8\pY 8x\x` (|(<`(< 08(€xp`x `` @ b   |  |(p猎||[@ .+G<+G<n6#?|'33O!?IOO)??߰__?6x?OC,N ,,``8|`0`` r999 ΀7 { v:" 6 6 c`0`[ yM&2M s`&:g0&:g0goh#j@}[[ nhnh&}`OO??[O[[oogogg_OO??gOOO?oO?OO?ppgox x aoo'sƳosoGOOWo oo +O/____w/Oow???'OO_o[7?o)3k'>`Fp ;;oh sccs9?{oOO {_ow/OO'??)?/oo33q7C3pTTxeYxh 1,?8)M)? 9? `9x0N`aS`Sa a 0 `@bHV[k &  >  @'@ ??> 9 7?s ^@v+еO ;?o'``L7  O 3ap/FƟ81  ~|@  @  | F ` 0  ģ} }Mrw x^:Vrƞ>y@frƞfrH6;3s̼0`p0d? 80n?p 0?8?0pl0lF00lXl00lc0`00lw0`04l90`01l`p0`00o80`0`o?0`7f0a 70cX?60aT?6?p0e0680g6 p|0g?6>0o6p