DOS=spC>p%NJg "@"NbCNJg @ hpNupNudos.libraryexpansion.libraryN /21H瀀,y# <"<N:"@LfpNu*I/ +@+HN(@CpN+@fH.<,xNL`pd`j#Jgڑ , 0H0EG @pB0& - mC ! RB)g\  g  g& "ggB  g`B`g0 "g *f  Ng nfr ` Eg efr`BB GL Hm/N0# N@##`vA\NA\N+@ #/B,m$@ *$g @"(NA"$<NJg:M676+@# ##)@)@ @ (g)@Np` /$,yN(@*l.M*_/"-g,mN,y -g"@NbJ g N|"m N"M <N. Nudos.libraryNIL: nPJ>t D8 "ANVH><$.vz(|-|BN0&@JXfj/<Hx@N$@( Pg g '@ <%@ <%@x/HyNPP/NHyN0 @(Pg ( @/(Nr%@X-kp'@BHy&NX#Pg y(($pl zP-|4*D/N,/-N(/NJO g`HyL*D/-6N( PgHx/N&PHyT*D/-6N( Pg/NrN%@4X/NX/9NDX'npd4o%|4Jf0JgHxHyZN&PJfHxHyxN&PJgdp'@JgHy`HyNPX'nJg/NlB//.NO`B/HyNO /NXJf0/*NBBNX/Nl$ PgHx@/ NPL<|N^NuH08 /r(At`>/<Hx+CN&@& Pg.Jf$ /*N'@Xg g ((K $@ f L NuH $/ `/*Nl$Hx/ NO $@" fLNuH0 o pv +f` -fvR`HHЀ$ЂҀp0  0m 9oJg"D`" L Nu>Xv>tb. "P| n4z<"dX "J `/execute s:CLI-StartupSYS:Workbenchicon.libraryexecute s:Shell-StartupWINDOWSTACKNEWCON:0/50/640/80/AmigaShellCON:0/50/640/80/New Cli Windows:Shell-Startups:CLI-Startup%N> SYS:2 n2ABAHA HA0 2B@H@Nu B@H@HABA"BtҁрnRAQNu/$ B$HBHAЂH@B@ $Nu/$"a$Nu/$"a $Nu/$lD"pJlDF @an4gD$Nu/ @p$lDF&Pz"lDF @aH$gD $Nu1H ,yL NL@Nu/,y"/N,_Nu/,yN,_Nu/,yN,_NuH ,yL NL@Nu/,y"/N,_Nu/,y"/N,_Nu/,y"/N,_NuH0,yLN"L@ Nu  4DVp/,yLN:,_Nu/,y"o / N.,_Nu/,y"oN,_Nu/,y"oNb,_Nu/,y"o / N,_Nu4H\/,y oN\q,_Nu/,y oN,_Nu/,yLN,_Nu,N,_Nu/,yN,_Nu/,yN,_NuH ,yL NL@Nu/,y"/N,_Nu/,y"/N,_Nu/,y"/N,_NuH0,yLN"L@ Nu  4DVp/,yLN:,_Nu/,y"o / N.,_Nu/,y"oN,_Nu/,y"oNb,_Nu/,y"o / N,_Nu4H\/,y oN % w.-,+*)('&%$#"!  E\R,DiskCopy  R| Q @P 7$$H,x#N(@pC&NJgv# <"<N:Jgr/*@B ,g @ (CG @pB0&vA( RB(g^  g  g CgL&RC "gg<  g`B`g* "g *f Nfr ` Efr`BBHm/,yN# N##,x`lar.#/B,y$@ *$g @"(NA"$<N+@ft`#   j##)@)@ @ (g)@Nt`jA\NA\NNuH.<,xNL`` "yNbH.<,xNL`Jfa$@apNuN|"JNNu$/,xN(@*l .M$_*_"-g ,yN,x"yNb ga"M <N. Nudos.libraryNIL:"d^X$(  " AQH8<$/ $o$&|&< (|TJg `p# BNBHyN #BHyN # y  9h h!OeJgJf Hx N XBBN#PgJHx4/9N#Pg0Hx4/9N&Pg/<HxN#PfHxNHx N P/<HxN#(Pg/<Hx$N#,PfHxNHx N PJ gp"@oN 6Hy$/*N4JPgXS(`zHy* *@/5N4JPg"DR "@#DU`FHy0 *@/5N4JPg`"Hy6 *@/5N4JPgByVSSp"@o~p"@fHy@/*N4JPfN 6B/* B/*N6O`BHy EDN # Pf2Hx@Hx*B/<HyHy0Hy`BNJO fJ f Hx N XHyN4#4Xf Hx N XHyRx//94NH"j$ O pn@lpf8` j$Hh j$/( ` j$Hh j$/( j$Hh j$/( `N 6 y$(# y$(#& y&"h($y&$R# y&"h $y& *" N# y"$(# y$(#* y*"h($y*$Rf* y*"h $y* *" N"@gHxHxbNHx N O y*"h $y*"  yG *N" 9N"@S y*$ #/</9N#0JPg3LN#8JyLg 9"@8nJgDt`0/9 "9$$@/2N("D 9$BRP""A 9$Jft 9`8RJnJgHy\HyNP`.J gHyzNX/HyHyNO HyHyN0PgJg Hx N XN#8t 9`8RJn/HyHyNJ O gHyHyNP`HyHxNHxNO 32#BB/9 y {C6/ y (R/NJOf*B/ y/ y (R/NJOgHxHx`NHx N O yE0 y&$$ SE0 y*$$ y&"h($y&$#B yB( SB( y| S|/9ND XlJyLgN/9/N~/"ҹ/p0//NzJOf`BC`< R g Rf 9TlJyLgjJyVg Rf\/N|/9`p @mn`` @ gEmzo> @fp`D @mfoJ @`m\ @cnV@`@0;N8@$T`>$j`6$`.$`&$`$`$`$`$J g/Hy$N` /Hx(NPp/NpXLNuHx0BN"PgJ gHy(NpX`J9Tg  gp`B@HNu /"/J gR/HyjNP`NHx/9 NJPfNHyNN`0WDHHX`Pg|Jo:ft*C U ( "@Jg(HyHyN:0PfHxNHx NP*C UpP"@f,HybHyN0PfHxHxNdHx NO /NBX`/ Nr//NO $C R$("B/)/ //8NO L<82, ~xbZP v p ^ @  h ` P 2 "   ~ v b 0     v r F @ 8   | v ^ T L 2 xl^XPF6.ztnb\VD2,& H@^HB2*th\N B>* |rl`VPD>2THdL,zrZNF:* l @Z*n       N  r   ( eQ    V n    h  dx .X  J 8 L (Ln N8h&D&  T x @TNzt n d.>JX lN 5 0 @~  &n`  6D&6Pintuition.librarygraphics.libraryFROMNAMEMULTINOVERIFYTOicon.libraryDiskCopyNot enough memory for MULTI Close other tools to increase memory for diskcopy. Warning: This will take %ld swaps.Diskcopy will now take %ld swaps. %s ( FROM disk ) in drive %sPlace %s %s( TO disk ) in drive %s( FROM disk ) in drive %s  9Place %s %s Place %s %sreadwritPress return for another copy, Control-D to exit Usage: %s [FROM] TO [NOVERIFY] [MULTI] [NAME ] DiskCopy Finished DiskCopy Abandoned %s ver'writread( FROM disk ) in drive %sPlace %s %s( TO disk ) in drive %sPlace %s %s Cannot read %s Press C to continue or RETURN to abandon Destination disk is write protectedwritError on DESTINATION diskError on SOURCE diskDiskcopy Error %s  !ՋBad sector Cannot open device Not enough memory Cannot open AmigaDOS device Write protected Disk changed (no disk)Seek error Disk size error Verify error Unspecified error %s *** BREAK DiskCopy canceled. Remember to insert original disk. %s Press RETURN to continue  %sing %ld, %ld to go 0 p %s p DESTINATION diskSOURCE diskXN@%DiskCopy 1.3.2 "l3n`g #q+ @</ $o0/"/5@%o$%A(B*B*A0" 9NЯ%@,p$_Nu/ $o/ N@JXf / NXB$5| / NpX$_Nu/ $o/ N@JXf / NX5|/ N5|/ N/ NO $_NuNVH0<$nt&< y$&P/ NHxB/ Hx/ N/ N r DOSOf y$(P/ Hx/ N(JO fHx*HH/NP`HlNHlNG*C*DPfJp/HnHkNpB6J  $hW`^O g A"C"`HnHnNA*C*P*C/Np/Hk/N09RH)@8 LpO`RԘ m / Hx/ N(JO f`pL< N^NuH8$/6/(//NHx 9//p0//N/NJOgp`pLNuH<<$o$4/*&/,&|$(|(90NFJgp` o2gVp0/2* E /0NXgp0/2" A (0`"//90p0/:"*@/5N|O / N@JXf / NX 9Pf" B WDHH/*HH/NP`2/" N//p0// N/ NR9Pz  %u5OL<,_Nu/,y"oNb,_Nu/,yL /N,_Nu/,y"oN8,_Nu/,y"oN,_Nu/,y"o / N.,_Nu/,y /N,_Nu/,y oN,_Nu/,y oL "/ND,_Nu/,y"o / N,_Nu/,yLN,_Nu/,y"oN,_Nu/,y"oN,_Nu/,y"oN,_Nu/,y"oN2,_Nu/,yL ",x'N,_Nu/,y"oN,_Nu/,y /N,_Nu/,y"oN&,_Nu/,y oN,_Nu0DXl$<Th|/,y"oL N,_Nu/,y"o / N,_Nu/,y"o o /N,_Nu 8/,y LN,_NuH02,yLL(NLL Nu/,y oN,_Nu/,y oN4,_NuH",yL NLD #-bNu$8NPH:(o o"oE:Ot&O,yNpJWFg/HoHTNO OL\NuNu n2ABAHA HA0 2B@H@Nu B@H@HABA"BtҁрnRAQNu/$ B$HBHAЂH@B@ $Nu/$"a$Nu/$"a $Nu/$lD"pJlDF @an4gD$Nu/ @p$lDF"lDF @aH$gD $NuH:&o oCE,yNL\NuNu : NVHxHn/9 NrO gp`.HHN^Nu  $.\$ /Ho//9NO Nu  o XB!HNu7H< &//z/N,p(rXfp`f/<Hx"N$@* Pf/NpX`@%C B |B*DBN%@JXg / N` HjNX LJf  e  d hf$Jf hf  d&( PJfJgg/N`>x>~>????????????``όc>`f0`φf>`l0`Ϗ0`<`~`À```b Q Format.info49atp;P+LbShell PSTT1.0 PSTTHelpText Sources PstTracker.guide System Docs ;:pb Docs.infop]?;:pb Docs.infop78% 8b Disk.infop7R^8#,Fp,H8,z0-,z,b\?#? 6 ?>~'SYS:System/DiskCopyb Disk.infop9:k;:pb Docs.infop9;J, :B ,H,kd!/-7P,N2+\\?B @@?<<<<<<=?/UWB  @??9HOB @@?<<<<<<=?/UWB  @??<=?>=m PS.config-00p<>FPST1 Configuration File ST-00:songsST-00:modulesDF0:PRT: U Onewshelladd21kinfolistloadwb -debugdiskmaster1.3run AudioMasterIIIced 7G   <?}, ST-00:  00@P`p  D            p`7G   >Copyright 1992 Shayera Of Parasite<<0>  00@P`p  D            p`7G   >Copyright 1992 Shayera Of Parasite<@HA}/~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA$BPSTT1.0p@B^HzHI TXH&HPK,x/xa WQH&ֈPK.PK n (g @BI<,Eh|zVJ $@( Df 5FRJ $@0g\JS@gJfVJ` DgJgRz TrHAgT$N:Jg"@" ((IXI f*I g/ Dg6$A(""Sf$W Be$Sf$W ^"CN.t%XX`>zRb45F/M@VK &@" AfPHAa8$ RK &@0g2a$($B" ӒS@grf ؁`"MYSAe"Q`XNu AgrHAJAg"_Q N.ANJf ( n%eN@CB]LNuK|x~z$K" Jga(ae>t0a$AFgpaQe$NugNu* NuDrgQNu* `0ap54Ffaepa6paAGg`a6D30Q3eNu ^NFDx\Wp @ (C'8$n(0C'Њ#I(0JF` {(A@ )hDŽYEPvbۑ, Q8a0cS; Q\@Rxq{#9xKc|E6|7j>t }4AyX10@wy8rަ2!LbÀ֡HE I0N |&҇4FePK3Al &` G9frm`@D:j&8M:a;oٚ׀pIQTl!G_O H@S@#*(, F$Kڃ FF:N&J;eG 9 Wb= xp2 .PJnEe@UqQF \ye#l /;\O}(2\A:X S(_w!= @3@>qED3؀〟Ѧ@:2̏\c6  ȓ ;CCd0A$^ e ėPxņ <| nw<6S@].a? ۆj' R(5t20 f&c(O,%Vl1A8bXZ..:dg@0إʋT GcM[_@ZA LVUdD ` ````_{J;WKK{;>!0PΆE _eV3rظbxA]` tq  8R4t!i8w d : қ,ҟЬҜEe@ˆryB@2 @HPd *#8D$s0Q!<IX%?P̂ XYބyj23EIG8|rg薏( @%F`e@`IQ)3:YѲ&7@FH C)uP$LC 2E;Xe@pzAh(@sP $:M `mHFGpֆВB@PU҃ǨAvp 6cʻ:[Iظ^=Iz3U]FeN`p0:ZlyYbqW/L&F0A,V֟@~hEøAݯٙ,bY"@5ī`* ,BJ~e1391 bQ3@#}H%B|Ha [< Kjzm|Ήv>깠-xbp0K\P׏+ٯ J6`?d<<ɮR1w@+"-0K<Nv;5e:~dV0ɠT"(@G ȕ?&ߞ1z PB͖TD '`4 @؂ _^8ENdFPpD' 'tˏ0PPlxė(@&!|2":d *Ov.v&6c.p tvc4A ؀P3B$`BI$HIaA/ [J0[\'s$PKNAH P b2A?E:S&@XMsA##ZU SDP;;c!|Bv8 p `a@*j8 ph&a@c'(9p8!@Pˀo<FL 4G,Rf <Lx4 q  ݐDM}: VaG6C5 Yb6b"6b?DF6$QlD .`'j ~Cɀ#},@H*Ʋ9 O`Ch@898 {p I!'vi6s!LEs9P ڜq9SrE ( $+^9$DPuDJɀ'@O > f~jw -ğe^>~0]%?颈`e%1a"di3BPAk& HbPc&&t0E,Jћ$):n/x"@|+4ſ<ԨȌD`"dB p%"ua`@G>ሜꭈVtdGHt$84jN֘Uwj RC ȋlaG#@ '1+O^u37@vf&:ZJDp#_g;K}-U@Ii3i1Bv&Z `=3s^I14?q+ v> @p %X !HD#RSRj*hN "D`d 8dn0Z乛-j Z i3 9 k BYM UޒеV(( )*ˬ0q@ (ӧ ^GY"ǿJVd >8'/X/3BR :@ jT^D6FZ*0`s(^'ZsH@R n[E9| tӠx+.0Cb  (:0{$5s #נJSR fȖ(N.~fgT@#f-A˂tڃ[cIt|SČ-" rU| ">NLv ]aObOoOiOl :+@ WPA)@x A6N\ k#4p%wnhM' @]J o!2`<1Ѐ 4G 8\JqӤ3Jr P @z- n3( !P|2$ix#@C;܀H@ KT'a`G\j21F<B(.)gq_N"Z 8F|" \3d###/HZpӕ*:: 0&@w:)Es*)s2-~fx?TP2p@̙/xnBP2 A@ ! a`PQP10qqp IH))(hih%B~`B c/c Oٚ/\P[mI*f 3.2ѿi=$e܁'ß!5 h"N0 2t@/xkj)t'@ l~M~xeaz. p3t2r뻦', R U.e tx`J.^w0a  Tz@ Moe0l fy>l !\Eg"3A܀۝|!JV`_pz9٦,2qT/|hDF$p $( '%"KK3 2$/푨 XoMĆ5kM9 mlq:A"*E# 3 ]B$dQJ` #P%`80.N B\ J@bIxkm& @4a` 44a_TM7=y0/ӗɈpd)QY* L8m t y^Èj y,sq='yt} 0H=^>fcZP,$,SK R?ğؼSPPU pi ʈ? AWF:!yMP+N"\d82 48P B f@ N[, 7Q; Ѐ6QZc$PX&ͦw{y+p(,錭0C"8䰜%A2 =0'0tԇLV5nU 1cJP<\ @IPZ4.@i@AgisCt1˧`SNl,b4PH6l"v b`\i` p#o"Ro T^@Y6ٱLڰ<$޲d3޲ԙޱQނA>-2<,j]P|h|'P/@8 pH"7P~Y8 p  `=l\W2@-b1ƕ́<9L"=r1x9R Qtƒt Q fDR"$Aatl ~@O 21=7n:\ؠ.eί~T@BC-`\jB5j@ܯ:q!2N"V y;@h]l<&c!q?0bnZ 0!`0P'\: # (MqNhI؜k$0qD`HaK@KJ"A.2 PPbBП+a?A~16(4P@wH=G%63a$@7C<`Oɢ`B Vkoerǟ~M$C8ZOs(".Wܝm$8DnPԇƆv.fv&&N?w+T3`Lì#` ="pfk>IʘCAaE&UM v$). `1 CiqRD` 1Bi0 L@Ai`p@ @P_.NaU:%`l\ZlGᏎ $̧0}RtK #T" Z HHR }S s`g!+iTᢸJZfjZ @IB >H%N;+px XI7Mñ 8 Xbf00 &tvp {G$fK,D3Y {"1n̨kB=1f 6b¬Ȓ.\?N i09'Xw>gp~p4ЀP exȀPN6( .eK@EL@̞$~0$%AfAP \ `r}P R  G9%-\9Hx>"2PI*Q"QA A@)5!l"gO@QQND'gh-+E0I9`o@! @D_~Cp229`> 7 \~`0(7_%6>j6mhiP%*xx:w 5;+?t>ݐ<M &g)ˀn:*^`/1d lڍ6—`@,Ͼa; B~?d09Ӏ %}rV̲8u@ H4]}$WđȚd7$2SD 98,8X@g~v@R 4v!ل̖`P2#b@BTΩ Hª鐃MARÆ!so7 x-n p!ņ0pHu#\*H엀 d3 iT.埠PPi@B@DGW{tps"q@@DZER!p ?{~s7H9y<l0ys _q* 827=,xw`R )pj RIp  ^ `A 2' ʆ.*Pn'D 6,c@~NBtd /%)P0(};$M=0aH[@l 8T-(8 d/px, . 8"!n:<(8z@@e">X.ffg ,t qp@SznC_0TfI5M(G| ZfLB+GOGR±fA:hXfAw2u9?=\K@ LHfY1Idv.5||| (4׭z.P[* 0*x#VI62ܞ{G !i{#<ŗ< Qn:&<"gxW&NQ0^g8`t@*@1A$r:d8"AZx%9@SN,$;zX4%KL`tiHcD@@Tz&H !J//0k,oLF 8 p`#AEcN8 LY@EPpPyq ( cW"N_8 X dy@@ċp [QОe0KC jا@(EOh@ 2K"L@ L<}'OxÙ/kMžŃu4 ?=~ȍg_rd#OIδ$VG<(oE1 cDp#k\JaS7CD.Q/=2)>*&!=#*R#V50X߮ 2`!g&PT@1N֦Nt@` c%p$OF4_#:5M&fO5Y0~|)TqA)R"A,&pLf3 1 3aDjurIS Aʼn7A@HC$B $s0f9<m %IF#-f8`ӉMqc>= Xd$-郾1 tY- F-L&9?.$*c0s0+[^"|u)A3BP34P; :df9[pX8ia`1f71d ɢH0D&E`s "d<HX I@/2Cې?/8&p} ?m3vFp@.v}` 44 VQQS1ܘ;@V\Uhcx \ j$mW<4D8xmCߦB|MsP MxzPO  >\=hM f{t C"@~x.tX(fkP7@@Kt41phOH q4@H@wSewC Fz&zfzJ~? V-'O;{#{ck[C'k>\L - Ml]< :'@Me䆴6A?@_" S Q$1p7'2i T Y4ft3 @(6#o1R 0'nP BoC Ea"Hp`jq*D;(QxD@Xń0fAx96/$;ڈ v`%!ŋ"u&H`ѹ0-46d@DO ӥЖ a'BaCа!Hi71h88`?|/cƒraHgM FҀХ߷2qdt!2a5GP 4*= X&R|6ML 3i2xl d1@o|ġw扤QNR)88'ynRL|,t'DC"+~D7:СIΔ̶B^B6 a!hΠA 0b!$ hǪGL"4u2p$1&t5qu A@H}b'( #Aqt*4.@5@ㅏ4Lh²³<o~18c H!Ւca9ミ%' }b츧05D@\IID' O<; 8J}B ]@%=|P|d0$s+c{[[C;>| #I.N'1FO`&P 2 <PF:Ĉ `#1f,>o&<0I<\c <`o1 7FG 杦5j:Pi] aD lNtoɀF^wG@[U5?x k@4W3fBؐ"yF'vyĊx0N$ &{~nA2& "h 2>̅%x$@ A hl" B!p H2[r`K :h¿1z@.f 3jhM $c76F;PNk3@"  R˃̏?yRA0e@Ҕ ]CnqX}#N#h |zq! 87)Pta"HP+4 !%!<Ζ2+B2Z<Qm@`I%Ħfh3J,}e9Y IzQX f$1$X O).a &PW'sN &w"\K'H0jNPHSr5IE>+&g2i1@\s%m$Y$:]0dpeHDŽ>`fD Ȧ9aˏ$a?z >,U`FF* a>@ρ}%@1 JxM2}=@8<v܉;~hY.P`L+2# I34,Hr` h27$'%(/ (AtC,["6e ` )a n0@;@+@ `a/dPs# p)n 2@  eNF TsDGteDA` Jx8Q\ r3tpA=TYPzԩeAX\T_A'C·J 9hp墲Ö.j&X8rA|ϸ|ǯ369v=94ÉR4kW&"u@]ĥF*3b?W :L/z!pKTJBS|!+,Oor#'LlهL(>=*ۃ:'9rkY 7`L=PKчZ8YnLs.f@V\J9 S'CÌf#mù,?$T::z pHmb@?AЯѣ@!$@`" ;$i9=E6g̘i@`XI 'a \<68 z"fY5r]cR1>k0’! qS7^W YA h?)84IfAMH&k jܠ5ҿ@h$_p+4B6 Py4E.pA R2|F| MO8bψ@^dݘ'<ųjsD'Ɖ'F'xU'@?E!9^]Bz4Ğ6 @ $Hq(?>E/D,]'ٵ.&Q / A@byoS":@9(cҢN@_f\0&o[ :&&$"!\9iO/ǡ1鞏B"$(0|d=h `d@(%gxiq.3ܧ1#"@u10l'0=5KLO + D\ӺY|Q%H3~5@_a[B8DT75#(4%2rwt!K#gt(M|o?ƐG["Ix\uX?Bl:l!ru] I BpV\ EVK~ e`G6=mA'@0Tp$i 4 NTE!)sc!PiՇߟg&x@ 1'P| _+drOR ܉PHwm3R?t 4HhO FQZF<@zI ?K@c>W\"mY@WX%U$j՜42.P'&$yR5 hruRPhS|9Y:9n BpCx!C`0b@`J@JH4)Ng (xbd ;h-?r ob$!(ALc=J8 0pHiЬn*Jj\yW 3&X 7c@Qʀxҕ"ijI3`f *΁ZR;褆)"[L UfcfAh9,:tv6NP~1J'!uJ65 %#@3GRd}_PS36:G&$i9NI%Vk[&̾_}}d@9n l x z,p[LqNc@H: ]4`sbg?;@ rApdpfpeaC h ufM\8x䆠ItPYtb(0@ot<<E "5D '#@ a-#QLT3BAnNW0 `$!@Klqf-bwS<8 p|80p/;fĦfCa 0K8)ԋ<8‰(2@ e4 ${XhBT`PdIIlu1f$> y0$`7(` ɀ<& oA` 3ͧ8( -xJ1Hx=" p 8X094'0S5@$q%wRߐ p`2Dh]I4 ʘ xJ_s}" /Φ35NC \`L>'T V~2?yDzJbJōіS-YH XQ[Dt\J}f4utP T^@{;8p3$D҄!@ *@? " OMCuj$'3=VPT}/@]DVT?iR@&\ 0g*C-H`SH @t(i3HQ> :/_LH$rvgAP5'%2<dABy#ó2f($@"c.t#ɚ44m qd2}AFB$ن(}4t !M3!o3$+.@ ?$&1\_ qC;PVAPu$<<'UF *~fRBQ8   &!SrdW)'go|jXyKL2{3Hdf1CgѩR=ituYd`!#:6Br;Hq~>WY^c8,pϘYXB% @?Б x@mKw#H$Hs=B4vH. hO)B ~o Ц# t(uΆnv(vfU8|b h造OB0!&$$=hS,AM"Pss}p6@#dEL;~L˯> |.X`xLA> y0|` kP`Ab^V.B 01J@ @/j*00Sf!CaxGwx`cl9b"V=0< =4!7Bj#C`[WA_d)H~ ^ϸT)f~?IC*5``"pb=I/#-~dbT䰼Xk fX{`$cNU~*aFԻL2c38waN_K1ҸܔD)E0$д %@X01,t @%f ȖVMfb B\iBX DH@znba3Yy$T MN-@  z]agɨ  P@0VW`#6CkM|@9 g`] +5M P'hF d8 Oh#҇n"V!) 8 t`iI쪔G@N@J"/O@,@sEAJM{??D  . [`@} T0Z{O7T$) 'aZ,=6B#J `ӂd{}Ndj# A 8 ut#0M.[Fn,Z|%q>`_0MZL)x}t@hFo@w{m^fU@&gAHʌGd3" h Rk3&9M>g ;KГC+^ 7$#1>'4[Ɲ ZBq)hC(*`( !A A0@9,A/N:` q Kt*/  = ` Y+"7UcBx8 <0tF{c> 5b4 <)З?`TO/>DzLqSOMm(_ԩ2 *CC:DmL 9=--f__`IP0 %0`Ac܀O0'B"1,e:kc],C3Fn\@9I%̏x Aܒ][d[L 2`29999I9I9 9?!&R p!a]!@'h_d8 xp#1 ~4Hc@&kڪ[&+K -v}MA|$-✁! O̒ /KV X"-$?eSS3CWg~?i3`Y&@'5 L`4r Ԅe %z&U 6(A&8@Ӹr a= >_^Гk,%ax ӠO) ))+ R`%Ȥ9@gD:N82 <-!py%L xc$1#f LQ0W9ǃ"#CwZ:@2p5{@@s8j5@sa@hUidTe4"!P%4P3PQ۵0(NЅ@t=IЦ#n#L\@#  l`1c|90Y?@dJ>WCv5 }sp"a11ɈP 9ؚg!2E,eT+[7@4y &@g#`Kdͤv!giàa,h2%@)j9FoB0aM,A/@B[`5c=C#q@J X^1.@:_s @:" )@2dS/!=̃5]*GlG 6SD^A\i({4 ER @O<@dCfA`IpPA`D"Jt8BY$F FFHq* ㍓}?eL-< 9c QC #?xchxh$`7 MS3{B@\ &@(¾(@*k@ɆZ Y nJ{7 (G)^bhl5 oDBŃy | , T(F)B\' fX y˨P8 p(Ji Cu/0 XAA  V@*EAI{rE%%)а~  `aKr /9&ey"Ä xI5_¦ *0|0f12q6APHB?ǐB?`{@K3V8iܰf@A&XwxpSCG9@8 p!'Zr8.L˶@"$P&R]T ISy.%eKx꾟P,# &9%m2 85b9*aF'N?1W~ŚV)i!rа` WjQlJ@+l~{eCeDZ b+Vc` a3)XDŽzSXBj+s8` NMTb~ sp%V'Դ@oq>J(@7#('`>ض,w 4;ω,cLKHp S` fNH<3z?9"T dpPb(D,[VPTvZXΠXjX}&>@bD|- y$'x?eNYt$kW4I3q@[RYas)"rPHohʁH[?D H:A|4Ipd O&/>G p,q&&Nοj`O^-ϟeRx0Gx #G1" $w:L `JB@,m-З5 .`7 4S1W;"Q hކs) PaKԗ6@FMDZx0(O(  q 4  T !ySNWD<JgU 7AtD5>r $``6pgn`'3wF0{̔h!zбEG0;pt ȆQF >=[8Gt2lH!`{tEq>A0Ƈl4_ n /h`L&la8F2 ?sv ve&DĆh+3EVG$QiC%@( 23(j*iDbD#A9@|8 p&\2r@-nucE!Q g1*h4$GA; R 9_N0~gAӀ'f( A4q:{JØ&͘|RЀAȃ.V)Ɗ8 H%&x#HB N0 8Xi@q ' ؅8At eC~7X$Dأ5 T@f:!a#lp ,)(Z)L n"B D P1#)ؼ Zwz w͙BN~,1QLA?1|>MH 8)81 3rB8 p3|w2@b 4ѐ8~"8{9IN`e4Cr0>|[b +q-x@.oz|>7@?(R#358<^"tpPꀉIP,?d)Lp` ˿ /$&d#Q̦C@bjH<χH!yMs:i{@""P7z# (H&%H|q E)gj9\ &-BDI\B1x_pȽ8'@P< ]2r8e R7A`(BBYR+L _D$G p"!ZZMO$7)o |'?-G4q@@_SP/X# ϶r̂'t;䑆YBr( R1؝ 8` PE`Ň\3C{rDŽPo#l)o]o'2 AÇN&h1dp%@/p."A-0Mt.y+pPP{~`bA@a9 aQ+?F9 a MQS: HFX"P1iǧ3$h1RgtB(xL6h,a_"bF&$f!c$x4 2:t$2qS*v 3`?D}H|N4Hp E>b0%QKr`i % APX +(StN`9P%ivyh 4J>݁#$P@ @\G!N]Y!oh Eb+.O/%_ )/Q iP-$E>v$L㰒@ׇa <;3*D3.[PE1!Id^T,X@0q'&YCӠ 2RD|`|SĘ$K5/ p mC3:i@o ro U 53/@[ő7콝p4^rruM?O xU%)M`I HT5fo^e1#H72Hcw Aai3 §\`c@Pxphw*!T$..0Ps@CE3%7@<,_l_YNäI1S@#s f/,m@cr+)KCXd@D k+"`g2 T" A]S@)8lJZs1W1b]pM&(4@Ea0T5Pf6@ZxB ]KB_ 5) )m.U\ T:LЍ  A/@1r);.ٚ&>zCqa IlF^ߗ H|e EP 5X1`q&PmB1[Ǧ 3!d?ߗ*B\v@M PbPcPbhS}ޏDH "l() $xexu9~& h\5-\(JJ|2[m!ħ^nnu|i/#aG7I "BiQS@38!%!*RA^0P\Oiada56dXDa0(2L#¾,ZPd C!  )@[ PjɴEz71:$!0@b$|A(R@%}~)Lt <͉ "qRgNJT291b +s\Ptm%o`@m@2se@ZEuN#H?,`ֈ+de u62y>;px%14wq 1a Aza38 "/#e0|E!rEHuu2`R Cˠ ?1?`! !nxH^#rcc%H(P zpzp zpzppz}b@hBx 2BtBtd rD6A_t ZV勁,9 b`8!UɈ IɈ,!ɨ-@)q !0ȡ31!4I!<<8 +! 3 60@SaRp:8wAE*OA[eBtrIw'A$/N:/Mfl4₨"-۴%M48'2ŚxB3lKT5!~#&$= bC߇LHnO@3t4_qXm09! W3x { @{ԞlH L Q/1Ip $*EmTO`$8h͝iĩU$9"d izgy4 TPWo )b (| 7̾6?XT1T Ճ < p);O R<>YH@D /uIg p + t&@@0BR Cr1怐 ܔarta2#&<Ő\]nު }%H&!@(( @K%A1j\f]v~g(2WBP9Wu~# 2'"nt_]]}hMAę0_D>@0EBJ20@j,avXZ SiN0pcSCHpPs2ܴI RCˊ@5vT)]EZyC%P8'Ζv66.~(Z Dt h $  "Zԁb" 34}҈$bc;)W%}UD _ `|eGqqшubDR?x [{Ȗſ P?q1"mVH4}y3ÄLpˆ?6 0'1MȘ@ŀ 0Vׇ[L  ^H̪@6w֦p 433B@t!Byi@DI Dk"hE֒ 6n4CqA%Q r"Kz$w-&7 iA$q @( #AHn 880$y$*es^$ ]eYld/$&2HJd 3-O`dDkvb#xB@1f t7$*d,E  pi0$M1!=Հ ? @' ~a=(&PR %D!t Z?b%#"D%;RfVv *-D5 hpb$pDǒ \m:Vqr/ 9x$!#w2xu3s2ke9=<)3&cfFaaaǷx8 _(@7xJ- o:/;nj&{f> ~'`~ $h[ɿչp#ד8C/BN_s;!'01452 1;aJ@Kڃćt)9s;vl58}&#$I@ $o)DHd 4%(Ԃr@?ʄ7X8M%D$RQ@DEl?%Sp0Aa !CE!dP _ J#L&:e!3 Tsӭ;u$@ PFyyd0X%xAR8e@ !_43P` )@$9M&X4h!AC@=D |1 "uvt4GIG\\ _} !-@׀j%d$3$0R@I?IaQ 2D<@8yər~J0ȇr#6{ꚽ1t%G`̀&8G"q,٥2 ( ^ZYcKB#L%$1[- 3ceaZ@} EbZ#/ /gy2@//+pB% A PZ)I<LkeŪkdӈ!*38@D8Ye`8&,Y$ s$X`@ VP!pFXoHw@9z&ʀ(I vjSDWc%S`\YnHMSQ&H+AC$<HD\/A, 5E0<%D#I_@`YG& q> _dOgSeՅT *߳;E GYD@:{y8K99tBG) * _64@=7 }F90 8Q$1+ + T.SF—%k"3TA%1< $ >_tC)62 /MS:!P"װ@ xNPXZPhTYEKXE}$`v א>x33SDS+TM>a0 \SN#Dd̂\Zݲg d^TJh?C3b#D#*0FV"M X@G+wa X 2=06€Wly Ḡ0*ܬ _@zFjgcZU_vk6xL-/#S(2P)ᾤ0` l䠥7 Eѡ> XptCoh+₀,hUQ!. u@;|X()  Oeh@2-f=^002O"JM@!!@;w/M ( y96cdV0G薟q ѼZ"E|@B6IW&2b d`IDPϳYw ;*<6tB- M09ӄ!x (&H%!6 Ce)&Ei GPHHH,Dk'ؤ5||[F*5.GsMA`+7@ƟUR! 07)*iLƠ@HHFJ#LD ǤC qI@:2"Q!{j]4JC QB.WUS65M`hc2]ce6 Ddj-O~(;+۸8TOR:je-0-~'p⣤| P  ,(a^VV$I4 ;!I~xPd؁$(FF-𧗈>>tt "Ch$%1'!=v}J =^ 5 JRf"J`=- O4{p0hK @S*\DQTi$|졸5x\1) @=~ד"s3~A~P!|*j/M!t(Ђh@f=P?Ũĉ):2 "Ǡ @>HZ@6 @nJ`30tDJ@ x?B<~to3$N&Hv.}!ANHM\ `QZ7`n$ ZYllUA \TLxt ^zаS@lߘqPJ CuɇFC=P$ƘR#8YLLyI< /^RiMj! +v "@`s8)^{pPeŹ ob,:քF j>@ 2AM!x0VdZ7 aKDU0է|%qi@~)` [6I6\Ez0"9pCϚ`Ǭ gd_gٗkp v0g٘kB(<DBFAECG@{HXD_LO ֱП k@@4o C `G& ?p  +_;Hp s!rIO2ē0qAI,)*Ȱ,ʅ$Xke ~?߹LC,gT 2٤GLm' ܈BtHLd ܅ 'b`D?f|iAu;A@ NvzZҗ}R .> ?8b1:FvhgS:r @IEy39sXFAL1,M̧~#'z>I^ _C co/>/K@;P:!-al!ωh z l0L)0RQ]" OH@x L@Az ,A%\ ѓoٓ<=t!3 )LQjRI=0< oIj?l9D^DV^k>"ito@A^fzwJ쌏ƋC]`ܹ10=@tM;Z}ZB,jc#vtX `cEs!S_+C_iN ;>! 7_/2[=`>></ x#12,.xЄl>$tP)PX(k"D39pHQ#I1&I H@BcZ3. [7TR3_W<0kB{k_ Yag$ %[BB9 &% @VY SF،Qd鋘NN穲ԀP L -:H}nB|$O?5V둊!iY}#MA0z/A0S.؄z - ̀kJ@I1=!@/ *`7 [R`ޢ! KQSQE`0&K;  vL|<@0QgG{dt+A}.L.&`9}ܘ "L0$AtGH|1 S;~.*/}ZE$ 3Gݳz`yݢisFbJ~t|؜%m@C"`Nd mh8 &AUւ@1,!yr&\@Pt \v,LTaBpi$&,`mb@xe"z+Kz a:-dQ@+ ^H\ y{qLaӋ"GmYU0SPP39cƵ:$ %3 BU$Pn0!l(ZeR}NG"7P#NÀ348aQcq"Y\ pH`q;/v-t.N s@ê-èD>RV(7χ@y cxF(}.]%G T - ]L|Ȓ 2H24֧./!j23zZ{T6B9 ̐L<߃8:J0G8/N!qD^'@D "PC ~8 pA"M TIY`C ",a > h`ӀV83Kk 0W&<`ewH:@j1$ jp"<4Ol<^\`z8ɠk8H็(@O0mu1K]A0 PD@P)p9p@PTV J )O4.@@B \J??r_te`jt! nC"ˊ+} Bŗ"jh t ogʀ RV?C"xXaR6⏂QXGV3K3dRR;f<-h4. \b c I`h6@EN&@D#2n/>qp A +hpTL0J_ + B 3]ƒ/t-q9.)s.( V142p qqs5smC%IR/06@=.KulAYnV hAeD tF!M# j xpD^DE1.ýJh@Fʙd4AGc߂ &CC 4@.70+fP6f`zC P H#AFu+CY(\B!@sqY0,zh`D8!o d#/1H >YY٩ZvZ6ZVZZfZ&ZFd_E 3 q"M* _Q XcCgT0lИzH?Jqz^hG !'qVP4W= n>>d? A9BJ@PT @Ȃ`1vS\cHYAI%[@  3l$` a],'vh-c Df"{0/Ņk͈EP(T^`4܆Ir.8YʹJuBEŠi BxPG`a/ߋ@GvGyBBʋ"< wec6$o? ͨ[&`fqKuY slћЪ/  BH#0!ADp d*d,#&v@]D/J&h;z,y#mB3A4EBC4AKt4gA cʙ@~E b ]:`Otـ%?6\芘ژ(k|{?G{FdwLlqZ#i`g8p/&AJ【}ozCr4bBۆ!ə3z3À@əIFfs0@* 8l!gၢ07@!Fb]ek*(~'&; & *AAn0&u-(Hk3#8$J,dhZH18<gPrZH ""?>] "Zp UEd A@RiH^I$Cu֧ AJί);qD/ )lzC)")Hp|9` ,h`Y1AA4`}j2D ,R>! WTx N@3۷pG hd!:HΦ.ƮN|pIlJk{GEi+KlLAu 3&>D5Pf@d B XdG|>+- 7Q#_LB$' lj) %sG _5g=uO>-?Pt ` @w u4qCJw3eWs\g&!4i0 Sf =Fj-Z8 S)BpXI@Jm# ?pJ{%tx%8L/Npn4ooH@O?9 cK\Xf LVC@@ Z8 @ "rP`bTIM0BS:sdS*stgɀ^sB^!† ĺ14Ob#s) hO4:`٨dH@ MM) s Z3'jL2dFnUCP~g)g^U)^ ]PN&}06P6rmJc#3V?d=nĘCh@LA~6ĀGQ^ rI\Ł @h(;{W \ AA a|B;bf̆$0aC0TC!`` i=#0H>a& wm |,IQ @d(?5^@K7NHP|;2`2u4֋@3`p̀:)@'xgi҃A ),m/'aQe@`H>D4 h(ܳM%iHŨT(?4J;r %1 NlLgiBCPH*\R0LP_D V"H @Qd`q ئfx@, A0P[& nH@ nX(.Q">v[L\@C<0 Cq` 8ȢLǼ)S"D`j.v*F}AY.a)yX`P@l\LjgfS:` A{ a5@[4jiF5|z3UBM*J*MiMdD O(n@OPVphP2|Y(@L@g_XC? BI~03B8p(/QHMClDe_S!1GЏ"a%cG[7 YTKL)֘nxp0Q،". BN}m/2 A7T! ^c!p ?C5^(Z<8A41&6BuaVndClB/B!aeeE ʅX@::B!A &Q3 AC@ PȒ`o& :G p @U xJ84&!S;G_IҘHzX@H  \Z$E 2H,HXV@"qd }y$ p׏R-#P@(<@dxiH!1`.dd4JjG@Mn?%'>8jTױ)  Р:XҠA!/.)` a@S1#,(@ K\F1nf6. 0PJu?s [N 2FC LdkW @i5 VK,K,lz H(< e6DY$xC( N0p17ǃ3 =Gٜ̞Y]A ]VSD=3Dg$\&IC/y rp,.--7)j0 R|%@Dqx`"&O,b>!t$O?Kz@7!.Be pKf"l K,?l&*"$@3vy(#4u(#L$2ۥHX**J@Ի 1@65c.`Sh[XhȘr@N@CAʈSWBb/,GB.cpqh JRP@MwNJ"+a!+O Vć5?T2.PD@TH[Z`)@0Y+/S&yM@ANZX2GT  XbvYt9]4&% Xa)L MqqM]UDA+qD\n5 RNc+i9"qQdb2p5@>#ZE  :,F1pYN%~h<}kcCOYA!A.AnDohRdd>$ԕ8g8"N"kG "@ Bxpnl8C 䔈SdHs7:9dp>tL$2%Al@C#Hm)!! b X p@K@O4<[ ӷz(OlX`%E_I[!V"4&v(QfQ 8O0I)B/t;:^Hr$$4\D2G`DL$9s94-Ɍ X$(,8@YVBBAx\jC@`!pItIk$fhXdcpyх63SLb!N$9[ I{3<@b% : 1Pde]a!AqQ1&1qI<:ā A&}FN@`\  cf$ELx!4dJ 6#4`c33' ` wC0|` V`uLyf\a!^.xӖ.9!@*ЀG _a.wBQ KT3`$m OdA_E K 0PLF_ ! vNif Udh0 5_xy g\Kc@AQux0Er02 JX\Ć XL30H.!*0bEp V(Z!^g ^1Y*a\5B iQ(3LArLyJF\`ie_(EtH @*#@QŗG˃6&_xTv mK `BH]n—KҠ'U &^N.ы|)8/;*:2X09 g1/"5M#%(^BV<H  x<0<2%GPUsNDq5=ү Hlhvs0n<d0#"F/B`q'tLPK`gh*TX1Xn&=a:  `0u0ԧcуɀb=`fǀ?A p#Caslc *! y\I/*XaqYNq ~$'h[p?e&  /03u+H|+\ BЧ)D@JH@T8#WC^6ޟ0I B 7@&;J-xw^ A.r~DZ"A-@SaP.%H} H%aV:{cT@!Ogʏ@X-Zr@ fZ/hr!I|p'1`i%30 iTA ./ 2f2a&X!iH\/r98 Yt +^PPT&092\G." t;Χ8=Vˆ%,Ks` G@@ D@ \:B ɘ u)8JE* $ J JP2w7 -"n/F#@T+]@>K!d,E :|8"|Yԃ0jl=?=$l@i14 x'oH`#ǓzMJrh%$ ;pО SǦ`, <% @<<9pB 8 ,X[('& 8$(F4BH;$ ʸ|hXd4,j F)CX–ѕ뗯߯냕і؏C)F A_Ch\4& \ '+lrբ([::`#`)`LM9@CAP !`9;eX |yäπAcP|:b;}χ@>H>=ual0uF0Nvv|/Ixj<O>r' tQ@`M1D0`k<@UΩs  }=`r> Od@W$̐ܐ̐̐ܐ̐ܐ̐̐ܐ|!\HvH;.HHGE@CSUIR##3!@Yȥ +?;'/0vp?N>?0ơ)0#0 pH# |yƟ}GmM\mMx~ё1M J*2 Ct@Fв{<@ Y &@X` %~d7vp1džɑYٛp_К= ֶ@tC: [=+8 GLL@(= %B 4`A<@O;-@<||||@+F!\P @D^0hLA& +ۀ` $%mKBL` <'焀ڿtt0@Z$2I98 - =L~LPΚ< \{`viUΗEbz2}p x~$À( tQ P y&ҤosgP P*XD9a@ *(Oʸl4DpO0pPPbv&Z `<FPCf5gHi f7<kBϸLByA@HӉA b ? @N w7Rp+"C"Q@&dcGJ'(Z#? CLx:4,5TG#-3@@\Pc&A2a9:* 'XKA%@u`AZCBO8` @U :Sc@"pBL#1ۢa!B6 #('8dKS"  @Gס ;EZ%_`liB"0RG8rv,L \2v"|m ZAOۂbC…dDGe@db9i\@&* dúQ0  `֑ΎDsPN5@0kh 0N(A|(K(Q(o$A0%F@;MtK]`1@D@A94Sb|K@u!lB&A``Kx+@M,ǚ@@B@evBX00ۣ&/"% @^tޭʄh&Rך,#Ӈ # !J JEj.,R r f[QjHI`!J` i @ !N A3;PX\H ?^0AT*=|DV y Eڦ`?@(0@5#uT8E>F@FԋiEi,hD:2hr P9@ /~]$Q*8`` `QC/ bS"Pa% RbX c*hKq(('7 $ ]u|$.= eBFB(@C lIDBċei cCB@%b*@`p"\!1!!4F|008|K`Ѭ Ȁ@:Dg怅J%EF!(@C鄐/`0f*{`k0,(h9 @aĀg Pb : 3L"a-8]1@& (y"LD  ` @l Ӡ_hU< |)ȁL8`x:6$@<w! 2LD B${a!|=8O%8SF~ǐ^JowcO/wrlL <roǯ<9i'~^@'G|{cawrk <޼y)K}@8&(|}|!=g^{y>d{!NjxuA.val<@b7|5kGc3ڀ_ޏCyWǛ!a yyrt>@p'pp>3l@nA\<9Jl|< a0n@>?']j3pQJ/~퇎+V>Y=p~\ 9*?a|j̄~Gx9 yx.퇀x<@;+뇎A?el88wÛ>~yqul<]HOC ?-33=˶c{eaE}pſwD_[a|~xK퇱~ڵ~{l^?ȅ0(s ?l<_|+O}ު|~ s@cE˅KxP퇟+S:}ӗLޏ^}/@+4f0rqB ʞ?ɜA{ux<@G6^^!t#?rp8O0 gc9a?A !c Bu W/r8ABGl}E'6O|7 p;Ϗc>N{d Qnbx8z_l=P<J_de/cь8E/SLqۋU>lpy?{15?(p!@d?=<PX2a " w78:s~BL~l pB#}\Yrq }>@ѿܟL}WtNO;aA[U[^}@pGP6w7_#uu]ˍx\?! 9rnCG t*QCl>{gA)BBa{hBL_; zͿe.qo_??#{yqWɿ>{6ut8;'N>l AΡj[>8~A4Yg[(XC'd>^>gW'i?>?s'8?L`o117CE![@fzV ~Fet3z?<a~> B0\y`@ys)rq2?a!,y`O!< <8"+R'9a*¼ay)P9|<s>2<0!x_< =aaA0vo"z@gĸ_c>??`Î@}¹!_>s>W!}?̚Յf7g x,?3v8'+?Wa7U78~z*OeM xEWCBDy0zk`kWQzs?D@ /x>>@UYeɟBダ"@ῲݮS,?l?d?WQ`]OKy4qaNoyW=u92@h<;KeڮO/l8@dh.ngǝm{"+ڮڍ.)?=Yd!FGUUmz೓/=G3 Ƿ_ d9<<;nh1Ƨ:~nA 8{g{cp?J8L ~@A3enEEF|_x 8ꢫ R? Bnf>+:(͝k9 p|*S`pb{by'1'p NhgpNZc<8|ˣܾM8_>w꫐:Aj'=oだXǐ *~>P00}®⌊k~ pv[ܻy@i*)|Ci $B0wc4Y^\vÀM |?VNElzO/Fr~LB!&A!`tꪊ{_tdUGxrw'&&'{WeUxwpbZG|џwvݍjICA ܝ ļ\̎;3OiEVM<8 rgZj,'>`!^׿BNa!k=s1Y퇞O0/l~@9 rO+??9crs9 PF@)`xi_GG ~Aχ4->+I[s&<̃~@{ǐ;oFU[[yL@2!?[ѕdVƞ| |ڿ,&~ү/39q&>eK]_ ;qx?sO?@?_?\! KOo 1f.!7Co/@kT>$0&%>@!Í[>7#8&9iZTP`PTZig|` &2 0` R,0 l8p`']g D`X_`$X(8h' ([<^ Cq4 4I) ? 6XLx죎c<_/cW`@}}}}}x}x}x}x}x}xtz@`.рMF>R6й0yJ@Y@&.h`cJp@l€SBn84@i xDX_Po%߀_ZVRW2^>p4xno?`uCB`x%qf@&g- ILbd!50@~, x)OcaΘ|Rm8A >h?0l` ..[ yH )aPxb809'?( d?FgH>G`|:c}q?; AØYc~?I_sY`8`f, ~l޲01 _MzY,.^ 0Nd?ѧOrgy<@`>0|7!7ؘ/44'Ϋ{+yd.O3ks{B63|=@ns<0? x{/(?=p(=0<|  )(<&10އ'?ߩ9p}zGp`,@ Z(q7vo)=֌s~`;_{+ޘ/< x n}3@vme5l0'&\ @=e=q?ss xx.d2|6`r,P,'arY$Sɤg̳ x&/}'>A h>fyA凐^`G3yA凐`[AAǔpǟy/vp@oNf3&8[7~c-K0Mײfkb`"zݽ0Q10~aR-J2knv[~ W llrA-3o _>>qx߿'8<0gAqX5X> |?~ f3`V{!a׆;9ДٹUf ђ3dՀ<nS Ձ,xXJ@a`1 m@6 OeO%`?`Fa'l0>L '*;RSO=w&X08:%9؅,VΌ+?! ;Ł@pXa`?N7`+`O >:P(M#`33Հ?<o=~Pz <a{}v, |c9<>n% 1=~GphBV@ aa |Lq H7?<_!` =`_), 0# >EgN> O$ 繨 "2(|9$ŀ>p(Ӗ's(< Xya @jyY. |7<~ '|uiQ~y4 1h3FBӀoJp~N|@/+~<ߏYӀg y@q18s/?N<3g‡߈~~oS!Uzg Dr"<>\AyF/k'? xDwf3^ ' ~ AY D >3|_?yf=ſe>j}4 -@CH#|S?< x e?<3X'<=S|s P (=<~&R }|ݳ~g9{y@e"lƑYT~`ײd_ax >^%l;4~9yv>NB4?l?;a!BxX? {?.J;a>~#@; N;a@s#r?k;Nvia~9;퇟-f>ǿ dT7_Jp~p7pC3đ0l5R?`?md6n;!l?,??D93?@s8pv?w~wrvn_wf>_~ə'?mu˛??'=bxCȽ@AW?xlg0<_ y !yp>A<~|Olx,2^l8ma l?l@t5&G~ؐEvÑ|jpqL3>y%#h"G &X04<r -Ugl>gg~C y??c=CtO 0& g>D 7c!@/5k[YJ_3a|'SaG< v70 7|HgɟIې yL>_&6xxd;Z&*0s|ٌP("CC3H!^70O/ ~g8 dKOW`L#N@0p(b_& |&W59gt||01?Q1XC}}>|ϟ䧏 ˸;G@ul->IG vj?N|&M/~  l'a/|0c>?ك׍pus̤']ps `mE-<<χh襇@1С|,1?>1ág 3f`d;/3,3/0tǬ&1IF`00?e{A7g)zB??L oX<ȏ`b,?{Y? wIŃ f3&:50`nYLذ%w?dw.AŋW#?1"`al}+Y`|&`07A#30@0&|?{`N`>|̺=8_p?,?2L9@w/Or{7 nxs{<r4:߈(cOlqc̀sJd8=Ԏ/ͼ*c47>,Lo`?ǡ@>>{3 e`= w)C% gw9#Y@G ~u$p3?dQ1A1`Y1Ȝ9:?U?3<=m 0GL3c s4p L@SaJ qIO #74Aٞ !a#o Fp|͓L Ψ9)9Lɟ>zf&s =23ɝ2`1H.nwOOPO@x@m ``as`*|Mg23 % 3s  I 0@Fioyc'ǓhO?{ό` \ag%b8{9O:kA#?|~^ ?}LC-3[n|c x=r!V}2zE ]΃̸>AsE~02w?=0 ~'»ੀC0>[cGW<=0,{_L~y'F#>k"`㉁uȼ3n&VY\I#9?_ ~b@y5`0_LLՄ81<  g~avlycB/< N"b0k>".8s|x<häh|?Z4x4qNgb|[@z`x4诞1 2z?~& Da$0`)nU0|AɆNh i'! _E,Q$8 1aˮg#EY8ˠ9B:`O$!ţ9Op`~B~F`=_'CL<N_K]`dB=<У 6n`g$_0& s) K0&TLyssZ`0 L| Hy`O_&[='S u>=hLџ@zYD腚 9Bx|5 MϞd|f=I9 4ksh_@ҵk%8X~ NXg? x>l,K88ُE#?2 p0x Czs}>Ӏ|w<~I:x `GapD?o~y><X=- Ǐ~%T- [{Ƌމn%;:6T vPcGGC{<`0N`An!0Aag>XPo[Q濙?nAU,'g)0@Ǜ3!0p8l1~: ?`N0>8ϯa}:.3)}AG7 xLxA<2NEL :Ns!P:OpzYLܓ rU 0L@|}p o5?( Np`n OW.Q 0eT!A*;P[kN}$w$0` `0l`|`e2LACZBg@#Xa X: m%EXB̌+F?V|ciߏCxt?nO뻆(i|4#7Ns9t|{:!Urq|s> |;w 7#WoY_~˹y Wǟat=\\W)*8cፏa3}8}Bx>>1-&Oɀ`~x+$O7< Ԙ/;1>l$Q=y9 !?:,Nh5zo4"+! ج>ԩp<8xI1C ~I0. LO4'D Iqcd<zGq4,{1x}Q@~0/Iߏ& Ȱ IצG y|ȌlipsӋ{0q >1\_LŚ`00<όC CCG⌐ߵteKW~ˋ1SK@I'r~bB@Pۃ;ƹ=y>~>{a~8C?Ӗ@\=/$x>/~?hɻ f0æC s<"p B-̇-8|LR@d?3/J{e!? 5pHߏs`exÜeۿ$)PxB*HX$#'#Bx`6[ih|F?pyj= s}Qx`{?1hgyYP,@=!_z~Tsҋϴ_ɋ|y|T{^ ?Z@mbCᯐnTVdlyC>PH*_@}#A=Y]U?GD},4܀xLII| GPuFUGT_l~〬o8A'ra^ua7P }r([ CE<s*ȢEO2+,8g|&>$?d# Zs,?4LN|Jz38䇃?^ $ZxCc ?d/|_.q D XB2ɟ3 | 94G& =_ z?̃<qa&e$c+lYGXD,| A ӱR C!\M&r{?'0;C10˝ޯ4gۊCzRYtQlxH}*"!m6 9O-x6 V'_<,$F'QόOb Xρ $<@#&x>|OK%BdL"<17/7G{<4ϙ`eM g8>Q@/d 8@?ؿ?l ݟß&s\??[Z`y6c0Б[1"$OD29=3j9xnpuwo88~5w"ӌ<B=^燀fppx"<2/?z~x7M7g<3m {p&77@?>ZX /Z/!W{L>=?߅y-ƸCߑ 'O~j/>p~?t5p Gpo)Ђ&o)P<0092?oi}>vb`Ç.~@Ď&CπlAu0K?3K\T9s9A jOzz9q]ȡf3xcpOg<~pm{5x@%?cZQӛ{?:53㳵7OwzE%lkx_̹YCM!xRPD<.<z|<H}lp4xp!|<؜]HF@G] C*݈p!C= ?88Pj hO{8Toxf6Ih]x@=@nZu9|x x@A2y3y{Jp@YB#§F'J@QЂ-^m \AHgPpa_7qx2G4uY s\ k ΃̨5e2';G+޼+7zeZ"DVŲ3ÌdI_ˀ2!,o G > ~/ԝpP{/.k^g5:֮kFyL>X:Ú xH8|yhOi9!HG=AP<- {ZQ4@!<Wψ+U9?W?!P{LF B#rC;s"OvaeSq̇p\&>o\-.gy>9!ѻFڣh@@Jc 1 z%x$ȏ! @VOCp ,AQiQs̤>qy y p < Dh0L@a͢͵cx͘ 1 b"(H?JX!u{Zxe;L|Aֿ6C;Bv2;#>`  ~~EqE> &a$YUVk&s<Ű,OtfVN%W8rC|q6[0@+{G[6$pr޳pADx!8;0p! À $>,?x^8^h~߇b~=BCQ4h>.o'栦~z$?Z _.6?=pC8aHs|>9ذ:~1?#my 3xy?1 DsjO!~ȿ?`C?dL<܃y8?~xry|NOwP  'p~~/ӗ܀;΁~>?TO f0}}hXA y | d>Y0yF!`"'sWs@ʴД69b yKCǃ ;yafo~10|@?c7gv ny\[ \. 8X_Cμ_C<=p(~FtX9ПŃoIο(ڿO<@(߃9{?w@p4@`4o+R1 ´ɣs cO`9s& JcS^07G}| 0yQ@2] HDF/@O9/Aȸ?4h&?$ |M8/z ~ Vc |ռ3tt~(~'@y@уD`bl̑0[upf7H~BAY0e08 Kg2Q| 8꠆  Ą> e`7Z3ALgBDq' ks >3@"a)8ٳ_τ/m CPC(DYXwwZz@8C|/"0^B @fs\oNL'܀zrAxrx<.xw'?.?|a#?osӓ9q\~L|0 1!P 0ŀs,+g E@G @J{Ѓ2ʈxD@A]l!0a\"+:++z2!ewm|X όPUބjwWOTꈪ֨EFGl} *$qi`~_an=ǯ}p'ɡ$=?ɣ~g_?Q~G_m~Q00 LrO??(/)` `f)P hunApv  d8 Pv[9G2ދY` Ou>L Uܦ0?o7` w?h8?8!':1`w`֜@x?cu@=rIl~Ӈx b@grԀX:h>=04{$1Q U0P@TuVC%sqc~O7\c4u@fM'wnܑvi =#&ߝ'?FJN(i H?XcRٚ?Oyΰ`t<!f;ow|w? уԀd!c|Yg3ߏ?fx1r!Z@z4|VNU~{4<y3So,@|>h01 =g}HprT^<;w; 7'; p<LJM;4S8DmGnynng}݈ߦ>Mݎ?8@t#C}Nt̉?No02%*W^{ qȃ2x/އN= }PwpzlX`x'xG@V wWwvwU\3Ws{{AŚ{~=;ùQcy{H2 sؖ$M0HeĞK 7@f`H<26 &~ pX 7> TPU O98 ިs< \H8c?@p9+FVf/9[AG|܃[HZyC'`'[չ@at:Aus&@z,pϔdm.R@<Ʌ˜a`|A hNd)I$8 2G&{%d+Ф?nXIdzf /~kH/8 >qhQCҊ=r@(|`!go"d00'!^C|!N]HL幊O(|ϙ<{r$A@q)x2@в^ȕk_0dq f3Kc) JXl .[ G(x3 Jbs_8 TJaU2`P4T=CɸLDGȨ׭/ >7by<Ȼ]r/0cd?3 ?O`0e+<(O\w?_x1o%ǀ<Wrc7 0}`+уaFcU+z1*z0uyFhup(x_ =,@+#F("2/@Ӳ8ۄhc 㚸d @ߴ@?Xb Df9G2" D"9?хٝ" TUQWW't |>?8~|:~:80381HP1OO~x00H0@p`%P(| @@ @ @b ?  B1?S rQ B?  ?  ?  ?  - - - - - - -       -B0XxLq@lqy#Sc97Bg'F4Y@w@w@w@w@w@w@w@@- - -       -B0XxLqHڻ7!      > h PSTTHelpTextp"%p PSTTracker V1.11 Nov/Dec 92' ------------------------------ (C)1992 PARASITE (tm) This program is Public Domain, This code is based on ProTracker 1.2 Originally by Lars "ZAP" Hamre PARASITE Version By: John "SHAYERA" Hinge in 92 This program should Function under Kickstart 1.2 and up.... However Since this is : A: An Preview/beta version. B: A Lot of 'Bad' Poking around. C: 350Kb of Assembler Source I Cannot Guarantee That it will function with Kick 3 & the AA Chips... This is a preview version. Real PSTTis being developed while you read this. PSTT will be coded in c and will take full use of the amigas multitasking and screen capabilities. NOTE: If YOU want something to appear in the Tracker, then this is the chance: A am currrently in the OverView/Planning Stages of the Real Tracker, And i am Prepared to Consider ALL Serious ideas. (NO I won't support ProPacker at the Moment) (As it : A: Cant handle CIYKA Modules B: Makes Address Errors Sometimes...... ) Some technical info: Sourcecode: 331k / 19324 lines Main Program: 151k GFX data: 50k (packed) Worktime: 4 Weeks (2 Times) ASM time: about 1.35 minutes Objects : 3 files (Startup,GFX & Code) This program has been developed with : HiSoft Devpac MacroAssembler V2.14 CygnusSoft CygnusEd Pro V2.12 SAS/C V6 And about 2 Tons of Coffee :^) This program has been a pain in the ... As I experienced a harddisk crash wh9M*ile i was just finishing it off So i had to start all over again. But here it is. SHAYERA... Improvements/Changes : -Now saves FX-macros in configfile !!! -No MIDI Routines (They didn't work !!) -New and improved VU-Meters..... -Solo Function For audio channels -Module Save Bug From V1.04 Removed -Sampler is Back !! i found the bug.. To contact SHAYERA of PARASITE : Write to : John Hinge Gudrunsvej 68,IIIth. V1 DK-8220 Brabrand. Denmark. Thanx goesAŋ out to the following ::: Quackbuster,Jones,& Estrup of ..s t b.. And to Shadowmind of Humane : 'Thanx' for helping with the bug... Too bad that the bug was in another part of the code eh ?? Important note ::::: Due to the way i am currently doing the sampler functions, you m u s t observe the following. Please wait until any diskactivity is completely stopped before you activate the sampling functions, failure to do so may result in both loss of diskdata and corrupt samp-?qledata ....... This is important.. ----------------------------------------- MAINSCREEN ---------- ## PLAY ## Will play the song from the current position in the song. The pointer turns yellow, just to show you what's going on. ## PATTERN ## Will play the current pattern which is shown at the bottom of the screen. The pointer turns yellow here as well. Holding down the right button while pressing play or pattern will play from the current pattesrnposition. ## EDIT ## Will put you in edit mode. The pointer turns blue, and you can enter notes and numbers from the keyboard. Use the arrowkeys to move up/down and left/right in the pattern. Entering a note or a number will cause the pattern to jump one or more slots down. ## RECORD ## Will put you in edit mode, but also play the current pattern or song. You can select this in the Edit Options menu. While the pattern or song is playing, you can type in notes and numbers1 from the keyboard, and they will appear in the pattern as it scrolls. The notes and numbers will also be quantized to the nearest slot, so that keeping a steady rhythm is no problem. The pointer will turn blue here as well as in the the normal edit mode. ## STOP ## Will stop playing of songs and patterns, recording, and will turn edit mode off. ## CLEAR ## Will first ask you what you want to clear. You can clear either all, song or samples. ## EDIT OP. ## Will exchang $ybe the Spectrum Analyzer with the Edit Menu(s). Pressing more than one time will browse through the edit op. screens. ## DISK OP. ## Will go to the File Requester. ## PLST ## Will go to the PLST screen. ## PSET-ED ## Will go to the preset editor. ## Setup ## Will go to the Setup Screen. ## Sampler ## Will go to the Sampler screen. The small gadgets labeled ## 1, 2, 3 and 4 ## Represent the audiochannels of your amiga. When lit, that channel is on. When not lit, t ,ghe channel is muted and and the notes in that track will not be played. You can also use ctrl-a to toggle an audiochannel, and ctrl-q to unmute all channels. Ctrl+shift-a will solo the current channel, or use Right MB + Left MB on gadget to solo channel ## Tempo ## The tempo gadget on the status bar is for setting the CIA speed, if CIA timing is used. The gadget will be updated every time you set the speed using the F command (if CIA that is). ----------------------------- s------------ DISK OP. -------- Delete Song/Module/Sample changed to one gadget: Delete file. Directories shown/Parent gadget. Path indicator arrow. Click to change paths without reading dir. Clicking on "UPD" will show you free diskspace also without reading dir. Dir-browse button and lots more... ## Path ## The paths for songs, modules and samples can now be changed, and they can be up to 31 characters long. To change path, click on load  Ѽsong/ module/sample or use the arrow indicating what path you're at. ## UPD (Diskspace) ## Free diskspace can be shown in hex or decimal. Select this on the setup screen. Click on "UPD" to get free diskspace without re-reading the dir. ## Format Disk## Will format a disk in df0: (Hopefully still bug-free...) ## Rename file ## Will dir the current directory. Select a filename, and you will be able to edit the name. ## Delete file ## Will dir the current directory. Sel rect a file, and it will be deleted from the disk. ## Pack ## When on, PSTTracker will pack songs before saving (Modules can not be packed in this version, sorry!). ## Load song ## Will dir the songs path. Select a song, and it will be loaded and decrunched if crunched. ## Save song ## Will pack the song if pack is on, then save it to the current songs path. Remember to enter a name for your song, otherwise pt will not save! ## Load module ## Will dir the modules path. Select a module, and it will be loaded. ## Save module ## Will save the module to the current modules path. Modules can be saved without a name, since they always begin with "Mod.". ## Load sample ## Will dir the sample path. Select a sample, and it will be loaded to the current sample. Iff headers will be chopped off and loops loaded, if any. ## Save Sample ## Will save the current sample as RAW or IFF. Select this in the "Save" gadget to the right of "Load Sample". IF雮OF loops will be saved too. ## Dir-Browse button ## By pressing this button you can browse through various preset paths, so that you won't have to enter them over and over again. AutoDir - If you set the autodir toggle on the setup screen to on, PSTTracker will automatically dir the current path when you enter the disk op. screen. AutoExit - When this toggle is on PSTTracker will exit from disk op. when loading a song or a module. ## Parent-&Qdir Gadget ## By pressing the "P" button you activate the parent dir function. PSTT will try to move one step up in the directory chain if possible.. NOTE :: IF YOU TYPE A NAME FOR A DISK OR A PATH THAT DOES NOT EXIST YOU WILL GET A REQUESTER.. SOMETIMES THIS WILL MAKE PSTT GO DEAD.. THIS WILL BE FIXED IN THE FORTHCOMING .REAL. VERSION OF THE TRACKER (INTUITION BUG..) ----------------------------------------- PLST ---- The PLST is fairly simu}ple to use. Listed here are all the samples in your Presetlist and their lengths. Just click on a name, and PSTTracker will ask for a disk called ST-01 through to ST-FF. Insert it, and the chosen sample will be loaded to the current sample displayed at the left of the screen. Use the up/down arrow keys to move up and down in the PresetList. If you press the right mousebutton, the PLST will move 10 presets at a time. At the top the PLST shows the total number of samples from tlhe selected sounddisks. There are a few PLST gadgets: ## CLEAR ## Will clear all the sounddisk names you have entered, and display the whole PresetList. ## MOUNTL(ist) ## Will search your drives for disks called ST-**, and put the names into the ST-__ gadgets. ST-00 will not be mounted. ## ST-__ ## There are three ST-__ gadgets where you can enter the numbers of the sounddisks you want to display in the PLST. Only the presets from the selected sounddisks will be shown.!Y If you clear all gadgets (by pressing return or right mousebutton), or press "Clear", the PLST will revert to show all presets. ----------------------------------------- PRESET ED --------- The PSTTracker's preset-editor is an enhanced version of the original Sound/NoiseTracker v2.5 editor. The screen has been cleaned up, and redrawn to match the plst. You can now save the finetune value in the presetlist instead of volume. The preset editor is used for sorting and catalogueing your samples. All samples for use with PSTTracker should be on disks called "ST-01" to "ST-FF". When adding a disk to the presetlist, only these disks are recognized. Harddisk owners may want to add a directory. e.g. You've got a directory called "Supersamples", and you want to use the samples on pt... Simple. Assign "Supersamples" to ST-13 or whatever. In the box with "Disk:" and ST-__ in it, enter ST-13. Now enter "DHX:supersamples" in the path box and press "add path". The path will be added as ST-13 in your presetlist, so everytime you need a sample from ST-13, it will be loaded from "Supersamples" instead. Simple? Editing -------- We must admit the editing is lousy, but you can't have everything! To edit a preset, simply click on it. Use the arrowkeys to move left/right. When moving up and down in the presetlist, use the right mousebutton to speed it up a bit. ## add path ## Will add the current patiiŰh to the presetlist. infos will not be added. Samplenames can only be 15 chars long. ## Insert Preset ## Will create a new preset. Enter the data for the sample, and it will be added to the presetlist. ## Delete Preset ## Will delete the wanted preset from the presetlist. ## Delete Disk ## Will delete the disknumber set in the "Disk:" box. ## PATH ## This is where you enter the path to be added from. It can be up to 31 characters long (should be enough!?). ## Disk ##p This is the disk (or HD-dir) that's being added from (or deleted). ## Presets ## This is the current number of presets in the presetlist. ## Clear PLST ## Will clear all the presets. ## Load PLST ## Will load the presetlist from a file called "PLST". This file should be placed in the PTdir (See setup2). ## Save PLST ### Will save the presetlist as a file called "PLST" to the current PTdir. ## Print PLST ## Will print the presetlist to the current print path, shown on the setup-screen. ## PLST ## Will go to the PLST-screen! ...and in case you were too stupid to understand, PLST is a shortform for "Presetlist"! ----------------------------------------- Sampler ------- As you know the sampler had disappeared in version 1.04 of pstt. it is know back as i found the bug that made it go dead (i hope).. It's very fast, much faster than Audiomaster, and the editing is much simpler. We also included a re|sampling option which we hope you'll find useful. Editing ------- When editing a sample, use to mouse to set the cursorline and to mark ranges. ## Waveform ## Will play the full sample with loops. ## Display ## Will play the part of the sample being shown on screen. ## Range ## Will play the marked range. ## Stop ## Will stop all playing of samples. ## Show range ## Will magnify the current range and display it. ## Show all ## Will display the whole sample. #]t# Beg ## Will put the cursorline at the beginning of the sample. ## End ## Will put the cursorline at the end of the sample. ## Swap buff(er) ## The swap the current sample with the copy-buffer. ## Zoom out ## Will show double the range you are displaying. ## Range all ## Will range the part of the sample being displayed on screen. ## Cut ## Will cut away the part of the sample that's marked. ## Copy ## Will copy the marked range to the copy-buffer. ## Paste ## NR Will paste the copy-buffer into the current sample. The volume box -------------- The volume box is a bit like Audiomaster's, only better. Set the "from" and "to" volume percentages by using the sliders, or just type in any number you please (from 0 to 200) in the percentage boxes to the right. ## Normalize ## Will find the highest volume rate possible (without clipping). ## Cancel## Will exit the volume box. ## \ ## Will set the percentages 100%-0% ## / ## WilV^l set the percentages 0%-100% ## - ## Will set the percentages 100%-100% ## Ramp ## Will ramp (calculate) the volume! ## Tunetone ## Will create a sinus sound, which you can tune your samples after. See setup 2 help for details. ## Sample ## This will display the monitor.. Press rmb to sample or lmb to quit. ## Note ## This is the note to sample on. Range is C-1 to B-3. ## Resample ## The resampling option is much easier to use than the one in Audiomaster. Here'sx6dG a step-by-step explanation: 1. Turn on the tuning tone. 2. Use the keyboard to find what note it is. Use fintune if needed. 3. Enter the note in the "Note:" box to the right. 4. Press resample! ## Note ## This is what note to resample to. ## Disp(lay) ## This is the length of the part of the sample being shown on screen. ## Loop on/off ## This is for turning loops on/off without having to fiddle with the repeat and replen gadgets. ## Exit ## Exits the sampler scr]een. ----------------------------------------- SETUP ----- The setup screens were provided so PSTT users could set up their own personal environment. We hope we have satisfied most of you. You've got 7 on/off toggles, a split keyboard editor, a color palette and lots more. Choose what you want, and use "Save Config" to save your environment. On the next screen is a list of what will be saved in the configfile. Click button "2" to enter setupR` screen 2, with lots of new features! This will be saved in the config file: -------------------------------------- Songs/Modules/Samples and Print paths,Split Keyboard data, Accidental, MultiKey Channeltable, Colors, Keyrepeat, the 7 on/off toggles, the 8 external dos commands and the effect macros + everything in setup 2. You can have up to 256 different config files. They will be saved as "pt.config-00", "pt.config-01" and so on. Set the confignumber in the "cnfig" box.  o ## Load config ## Will load the selected config file. ## Save config ## Will save the selected config file. ## Reset All ## Will set the original PT defaults and colors. ## Multi ## This table is used with the multi keyboard option. The four numbers repre- sent what channel each channel will jump to next. 1-2, 2-3, 3-4 and so on. ## The dot ## The gadget with a dot and a textline can be used to execute dos commands. Each of the 8 commands can be up to 31 letters lon! pg. Pressing the dot will browse through the commands. Holding the right button and pressing it will execute the command. Note that PT needs the command "run" to execute the other commands. This is because of commodore's stupid programming of the dos library function "execute". Type "endcli" to go back to PSTTracker. ## The Color Palette ## The color palette is simple to use. Just select a color, and use the R, G and B sliders to set the color. ## Undo ## Will put back the "dlatest change. ## Cancel ## Will set the config colors. ## Def(ault) ## Will set the original ST colors. ## Split ## You can set 4 splits on the keyboard, each with it's own sample, splitpoint and transpose. Just type in a sample number and select the key to split at by pressing the appropriate one. The transpose note for each split is the first note in that split-range. Notes below the first split will be played with the current sample. Split is great for recording drum#j`8s, or for playing untuned samples in tune (use together with finetune). ## KeyRep(eat) ## The first number is the keyrepeatdelay, and the second is the speed. ## Accidental ## Simple enough, accidental allows you to select sharp (#) or flat () notes. This will not be saved with the song! ## Print Song ## Will print the song to the path shown below the "Print Song" gadget. The print path can be 31 chars long. ## Split on/off ## Toggles between normal and split keyboard$W. ## Filter on/off ## Toggles the audiofilter / PowerLED. (Not available on all amigas) ## Trans(pose)del(ete) on/off ## When on, notes transposed out of range will be deleted. ## ShowDec(imal) ## When on, Freemem, Tunemem, and filelengths will be shown in decimal. ## Autodir on/off ## When on, PSTTracker dirs the current directory path automatically. ## AutoExit on/off ## When on, PSTTracker will automatically exit from the file requester when loading a song or modul%Ue. ## Mod. only on/off ## When on, PSTTracker will only show modules beginning with "mod.". !!! !!! ----------------------------------------- Setup 2 ------- Setup 2 is basically full of the things we couldn't fit into Setup 1 in Protracker 1.0 + a few things people thought we should include. Well, hope you're satisfied with the result guys... Click on "1" to go back to good ol' setup 1... ## Timing ## We included this &r=.Yso that american users also could enjoy PSTTracker, and wouldn't have to use sonix or any other terrible music program... You can choose between CIA or Vblank timing. Vblank is the timing-method soundtrackers have been using since the dawn of time, while CIA is a much better and accurate timing with the tempo measured in beats per minute. Using Vblank on NTSC amigas will cause the song to play 20% faster. With CIA, there's no difference. ## Tempo ## This is where you set y'Oi=our default CIA timing tempo. Range: 32-255. ## Speed ## This is where you set your default Vblank timing speed. Range: 01-FF. ## Copper Editor ## The copper editor is for altering the colors of the VU-meters and the spectrum analyzer to your own liking. Select a color by clicking somewhere within the coppered stripe. Now use the R, G and B sliders to alter the color. ## Spread ## Will create an even gradient between the current color and the one you click on next. ##(`sv arrows ## Will rotate the whole copper stripe in the Y-axis (up/down). Undo, cancel and def(ault) will work just like in the palette in setup 1. ## Mods ## This is where you set your default modules path. ## Songs ## This is where you set your default songs path. ## Sampl(es) ## This is where you set your default sample path. ## PTdir ## This is the path for all the files (We use Some of the old PT files..) ## Max PLST ## This is the maximum number of presets in yo)/]Jur presetlist. ## DMA wait ## Use this on fast amigas to slow down the DMA enough to not miss any notes. ## Tuning tone ## The tuning tone is for use with the sample editor. The note is what note to play the tuning tone at, and the number is the volume. !!! !!! ## <- Default ## Will put back the default for everything in the middle column. ## Override ## When on, PSTT will ignore any paths or disknames when loading a song or module. All the *8samples will be loaded from the current samplepath. ## Nosamples ## When on, PSTT won't load the samples when loading a song or module. ## BlankZero ## When on, PSTT won't show the first zero in the samplenumber, as on NT1.2. ## Show dirs ## When on, directories will be shown in Disk Op. ## Show Publ(ic) ## When on, PSTT will show all free memory, not just chip-mem. ## Cut to buff(er) ## When on, all samples cut in the sample editor will to put in the copy-buffer. ##+¨ Load loop ## When on, PSTT will load loops from IFF-samples. ## Slow Mode ## When on, text editing, gadget-repeats, etc. will go much slower. Use this if you have a 25 MHz A3000 or any other fast computer. We will try to do an automatic speed check in the next version. ----------------------------------------- MIDI ---- All the MIDI stuff from ProTracker has been removed.. As it turned out that they didn't work according to NOXIOUS. There,Pfore they willmost likely be replaced with some other new stuff... Feel free to send input on this.. (New working MIDI routines might do..) Sorry.. But that is just the way that life kicks you sometimes.. SHAYERA of PARASITE 1992 ----------------------------------------- EDIT OP. -------- The edit op. screens were just a handy way for us to implement all the new functions we had thought of. There are three screens, and you can browse -¯through them by pressing the edit op. gadget more than once, or select one by clicking on the numbers 1-3. To exit edit op., click on the gadget labeled "E" or press ESC. Edit op. Screen 1: ## Transposing ## What is transposing ? Transposing lets you shift the pitch of the notes up or down. E.g. Change a C-3 to a C#3. In comparison to other trackers, PSTTracker lets you transpose in just about every way you can imagine. You can transpose either the cur.rorent sample or all the samples in a track or pattern. To the right of the title bar is a small box with the letter "S" or "A". S - Only the current sample will be transposed. A - All the samples from $00-$1F will be transposed. To toggle between the two, click on the edit op. title bar. If the setup toggle "transdel" is on, all the notes transposed out of range (C-1 to B-3) will be deleted. If not, they will not be transposed. Edit op. screen 2: (Record) ## Record ## / ߕ Patt - Record current pattern only. Song - When recording, PSTT will move through the patterns in the song, just like normal play. ## Quantize ## Will move the notes you record to every n'th slot. Entering 00 will turn off the quantizing, and the notes you play will always be inserted at the patternposition you are at. Entering 01 will quantize the notes the the nearest slot according to the speed. i.e. if you play a note after the first half has been played, it0 l8 will be quantized to the slot below. Entering a value like 8 will quantize to every 8th note, and so on. Got that? ## Metro(nome) ## The first number is the speed of the metronome, and the second is the channel to play it on. The Sample used for metronomes is always sample $1F. Load your own favourite metronome sample. The metronome will always be played at C-3, but you can still change the volume and loop values. To turn off the metronome, just set the speed or channel1 u to 00. ## Multi ## When on, PSTT will jump to another channel after you play a note on the keyboard. This makes it possible to play two or more notes at the same time (very useful with midi). On the setup screen you can choose what channel to jump to after playing a note. Edit Op. screen 2: (Samples) To the right of the title bar is a small box with the letter "T", "P"or "S". T - Copy & Exchange apply to current track only. P - Copy & Exchange will affect the the whole2 Ҟs pattern. S - Copy & Exchange will apply to the real samples in memory. To toggle between the two, click on the edit op. title bar. ## Delete ## Will delete all notes with the current sample in current track or whole pattern. ## Kill ## Will kill the current sample. That is, remove it from memory and reset all sample settings. It will not be deleted from the track or pattern. You can also use the period (.) key on the numeric keyboard to invoke this function. ## EXCHGE3 (Exchange) ## Will exchange the samplenumber shown in the "from" gadget with the sample- number in the "to" gadget and vice versa. "T" or "P" selects track or pattern. "S" exchanges the samples. ## MOVE ## Will move the samplenumber shown in the "from" gadget to the sample- number in the "to" gadget. Edit Op. screen 3: (Sample Editor) To the right of the title bar is a small box with the letter "H" or "C". H - Will halve the volume when mixing and echoing to avoid clipp41gzing. C - Will not halve the volume. The sample may be clipped. To toggle between the two, click on the edit op. title bar. ## Mix ## Will mix one sample with another. PSTT asks you which two samples to be mixed, and where to put the result. Holding the right button and pressing mix will mix the current sample with itself. You can offset the sample by setting a position in the "pos" gadg. If you set "mod" to a non-zero value, the sample will also be modulated. ## Echo 5Atv## Will create a echo effect on the current sample. Use "pos" to set the delay time of the echo. If you want more room to echo in, just turn up the length of the sample. ## Boost ## Will turn up the treble of the sample. Use this on hi-hats and snares! ## Filter ## Will Delta-filter the sample. Use this on noisy basses. ## X-Fade ## Will crossfade the sample (mix with itself, backwards). Handy for looping samples that are hard to loop. ## Backwd (backwards) ## Will t6=urn the sample backwards! ## Upsample ## Will remove every second byte of the sample, halving the length and shifting the pitch one octave up. ## Downsample ## Will double every byte of the sample, doubling the length, and shifting the pitch one octave down. If you downsample samples longer than $7FFE, you will lose the end of them. ## POS ## This is just a offset in the sample, used for a lot of things. ## MOD ## This is used for modulation. Press "MOD" to modulate7} the current sample. ## Cutbeg(inning) ## Will chop the number of bytes set in the "pos" gadget off the beginning of the sample. ## FU (Fade Up) ## Will fade the volume from 0 to 100%. Use "Pos" to select where in the sample to fade up to. ## FD (Fade Down) ## Will fade the volume from 100 to 0%. Use "Pos" to select where in the sample to fade down from. ## VOL ## With this you can change the "real" volume of the sample. Just set a percentage and press "VOL". Edit O8p.3 is now intended to be used with the new sample-editor. If a range is marked, some of the functions apply to the range only. If there's no range marked, the functions will affect the whole sample. You may also set "POS" by clicking on the sample and setting the cursor-line. ----------------------------------------- EFFECT COMMANDS --------------- Effect commands on PSTTracker should be compatible with all other trackers. 0 - None/Arpeggio 8 -9z{ * NOT USED * 1 - Portamento Up 9 - SampleOffset 2 - Portamento Down A - VolumeSlide 3 - TonePortamento B - PositionJump 4 - Vibrato C - Set Volume 5 - ToneP + VolSlide D - PatternBreak 6 - Vibra + VolSlide E - Misc. Cmds 7 - Tremolo F - Set Speed E - COMMANDS ------------ The E command has been altered to contain more commands than one. E0- Filter On/Off E8- * NOT USED * E1- Fineslide Up E9- Retrig Note:> E2- Fineslide Down EA- FineVol Up E3- Glissando Control EB- FineVol Down E4- Vibrato Control EC- NoteCut E5- Set Finetune ED- NoteDelay E6- Patternloop EE- PatternDelay E7- Tremolo Control EF- Invert Loop Cmd 0. Arpeggio [Range:$0-$F/$0-$F] ----------------------------------- Usage: $0 + 1st halfnote add + 2nd halfnote add Arpeggio is used to simulate chords. This is done by rapidly changing the pitch between 3(or 2) different notes. It so;uDunds very noisy and grainy on most samples, but ok on monotone ones. Example: C-300047 C-major chord: (C+E+G or C+4+7 halfnotes) C-300037 C-minor chord: (C+D#+G or C+3+7 halfnotes) Cmd 1. Portamento up [Speed:$00-$FF] ------------------------------------ Usage: $1 + portamento speed Portamento up will simply slide the sample pitch up. You can NOT slide higher than B-3! (Period 113) Example: C-300103 1 is the command, 3 is the portamentos<peed. NOTE: The portamento will be called as many times as the speed of the song. This means that you'll sometimes have trouble sliding accuratly. If you change the speed without changing the sliderates, it will sound bad... Cmd 2. Portamento down [Speed:$00-FF] ------------------------------------- Usage: $2 + portamento speed Just like command 1, except that this one slides the pitch down instead. (Adds to the period). You can NOT slide lower than C-1! (Period 856) =aYExample: C-300203 2 is the command, 3 is the portamentospeed. Cmd 3. Tone-portamento [Speed:$00-$FF] -------------------------------------- Usage: Dest-note + $3 + slidespeed This command will automatically slide from the old note to the new. You don't have to worry about which direction to slide, yo5 need only set the slide speed. To keep on sliding, just select the command $3 + 00. Example: A-200000 First play a note. C-300305 C-3 is the n>ߵote to slide to, 3 the command, and 5 the speed. Cmd 4. Vibrato [Rate:$0-$F,Dpth:$0-$F] -------------------------------------- Usage: $4 + vibratorate + vibratodepth Example: C-300481 4 is the command, 8 is the speed of the vibrato, and 1 is the depth of the vibrato. To keep on vibrating, just select the command $4 + 00. To change the vibrato, you can alter the rate, depth or both. Use command ?--------------------------- Usage: $E3 + Glissando-Status Glissando must be used with the toneportamento command. When glissando is activated, toneportamento will slide a halfnote at a time, instead of a straight slide. Example: C-300E31 Turn Glissando on. C-300E30 Turn Glissando off. Cmd E4. Set vibrato waveform [Range:$0-$3] ---------------------------- Usage: $E4 + vibrato-waveform Example: C-300E40 Set sine(default) E44 "A@?>=<;:9876543210/.-,+*)('&%$#I$ Don't retrig WF C-300E41 Set Ramp Down E45 Don't retrig WF C-300E42 Set Squarewave E46 Don't retrig WF C-300E43 Set Random E47 Don't retrig WF Cmd E5. Set finetune [Range:$0-$F] ---------------------------------- Usage: $E5 + finetune-value Example: C-300E51 Set finetune to 1. Use these tables to figure out the finetune-value. Finetune: +7 +6 +5 +4 +3 +2 +1 0 Value: 7 6 5 4 3 2 J%9/+ 1 0 Finetune: -1 -2 -3 -4 -5 -6 -7 -8 Value: F E D C B A 9 8 Cmd E6. PatternLoop [Loops:$0-$F] ---------------------------------- Usage: $E6 + number of loops This command will loop a part of a pattern. Example: C-300E60 Set loopstart. C-300E63 Jump to loop 3 times before playing on. Cmd E7. Set tremolo waveform [Range:$0-$3] ---------------------------- Usage: $E7 + tremolo-waveform Example: C-300E70 Set sine(default)K& E74 Don't retrig WF C-300E71 Set Ramp Down E75 Don't retrig WF C-300E72 Set Squarewave E76 Don't retrig WF C-300E73 Set Random E77 Don't retrig WF Cmd E9. Retrig note [Value:$0-$F] --------------------------------- Usage: $E9 + Tick to Retrig note at. This command will retrig the same note before playing the next. Where to retrig depends on the speed of the song. If you retL'}orig with 1 in speed 6 that note will be trigged 6 times in one note slot. Retrig on hi-hats! Example: C-300F06 Set speed to 6. C-300E93 Retrig at tick 3 out of 6. Cmd EA. FineVolsl up [Range:$0-$F] ---------------------------------- Usage: $EA + value This command works just like the normal volumeslide up, except that it only slides up once. It does not continue sliding during the length of the note. Example: C-300EA3 Slide volume up 1 at the beginning M(of the note. Cmd EB. FineVolsl down [Range:$0-$F] ------------------------------------ Usage: $EB + value This command works just like the normal volumeslide down, except that it only slides down once. It does not continue sliding during the length of the note. Example: C-300EB6 Slide volume down 6 at the beginning of the note. Cmd EC. Cut note [Value:$0-$F] ------------------------------ Usage: $EC + Tick to Cut note at. This command will cut the note atN) the selected tick, creating extremely short notes. Example: C-300F06 Set speed to 6. C-300EC3 Cut at tick 3 out of 6. Note that the note is not really cut, the volume is just turned down. Cmd ED. NoteDelay [Value:$0-$F] ------------------------------- Usage: $ED + ticks to delay note. This command will delay the note to the selected tick. Example: C-300F06 Set speed to 6. C-300ED3 Play note at tick 3 out of 6. Cmd EE. PatternDelay [NO*botes:$0-$F] ---------------------------------- Usage: $EE + notes to delay pattern. This command will delay the pattern the selected numbers of notes. Example: C-300EE8 Delay pattern 8 notes before playing on. All other effects are still active when the pattern is being delayed. Cmd EF. Invert Loop [Speed:$0-$F] --------------------------------- Usage: $EF + Invertspeed This command will need a short loop ($10,20,40,80 etc. bytes) to work. It will invert the P+ploop byte by byte. Sounds better than funkrepeat... Example: C-300EF8 Set invspeed to 8. To turn off the inverting, set invspeed to 0, or press ctrl + Z. Cmd F. Set speed [Speed:$00-$FF] -------------------------------- Usage: $F + speed This command will set the speed of the song. Vblank: Range 01-FF - Normal timing CIA: Range 01-1F - Set vblank speeds with CIA timing. CIA: Range 20-FF - Set BPM speeds, range 32-255. Both: Range 00 - STOP song. -Q, J---------------------------------------- KEYBOARD -------- The keymap on PSTTracker is a standard US keymap. The font has been enhanced and redrawn a little, so you now have a lot more special characters than before. Remember to always use the left shift and alt, as the right ones are used for other things. High notekeys: 2 3 5 6 7 9 0 = Q W E R T Y U I O P [ ] Low notekeys: S D G H J L ; R- Z X C V B N M , . / F1 - Choose lo octave(From C-1 to G-3) F2 - Choose hi octave(From C-2 to B-3) shft+F3 - Cut track to buffer shft+F4 - Copy track to buffer shft+F5 - Paste track-buffer to track alt+F3 - Cut whole pattern to buffer alt+F4 - Copy whole pattern to buffer alt+F5 - Paste patt-buffer to pattern ctrl+F3 - Cut commands to buffer ctrl+F4 - Copy commands to buffer ctrl+F5 - Paste cmd-buffer to track F6 - Go to patternposition 0 F7 - Go to patS.Jternposition 16 F8 - Go to patternposition 32 F9 - Go to patternposition 48 F10- Go to patternposition 63 shft+F6-F10 - Store current patternposition on selected F-key alt+F6-F10 - Play pattern from the stored patternposition ctrl+F6-F10 - Record from the stored patternposition Esc - Exit DiskOp/EditOp/PLST/PsetEd/Setup/Help and MIDI screens shft+Return - Insert blank note at cursorposition and move the others down. Notes beyond patternposition 63 will beT/}B lost! shft+Bckspce - Delete note above cursorposition and move the others up. You can NOT do this if you're at patternposition 0! alt+Return - As above, but with all 4 tracks alt+Backspace - As above, but with all 4 tracks ctrl+Return - Push cmds one down ctrl+Backspace - Drag cmds one up ctrl+0-9 - Select how many slots PT will jump down each time you insert a note (this is only in Edit-mode) alt+cursor right - patternnumber up alt+cuU0rsor left - patternnumber down shft+cursor right - song-position up shft+cursor left - song-position down BackwardsSingleQuote (The key over TAB, you know?) - Go to CLI Help - Call Up PPMore and show HelpText shft+Help - Toggle between help or plst on help key Space - Toggle between Stop/Edit-mode < (beside Z) - Kill DMA & Volumes to 0 right Amiga - Play Pattern right Alt - Play Song right Shift - Record Caps Lock - Toggle Keyrepeat on/off Del - DV1#^4elete note under cursor alt+Del - Delete command only shft+Del - Delete note and command On Numeric pad: 0 - Select Sample $0 1st row - Select Sample $1-$4 2nd row - Select Sample $5-$8 3rd row - Select Sample $9-$c 4th row - Select Sample $d-$f Just Enter - Select Sample $10 Holding Enter + the other keys select sample $11-$1f Period (.) - Kill current sample Left Amiga (Plus keys below) - Transposing like in Edit Op. Screen W2܏1 Sample/Track Sample/Pattern ---------------------------------- 1 - Note Up 2 - Note Up Q - Note Down W - Note Down A - Octave Up S - Octave Up Z - Octave Down X - Octave Down All/Track All/Pattern ------------------------------- 3 - Note Up 4 - Note Up E - Note Down R - Note Down D - Octave Up F - Octave Up C - Octave Down V - Octave Down Tab - Move cursor to next track ShfX3w(t+Tab - Move cursor to prev track Ctrl+A - Toggle channel on/off Ctrl+B - Mark block Ctrl+C - Copy block to buffer Ctrl+D - Delete block, drag notes up Ctrl+E - expand track Ctrl+F - toggle filter on/off Ctrl+G - Boost all samples Ctrl+H - Transpose block up Ctrl+I - Insert block, push notes down Ctrl+J - Join-paste block Ctrl+K - Kill to end of track Ctrl+L - Transpose block down Ctrl+M - Toggle multikeyboard on/off Ctrl+N - Re-mark last block Ctrl+O - Contract trackY4րI Ctrl+P - Paste block Ctrl+Q - Unmute all channels Ctrl+R - Restore F6-F10 positions Ctrl+S - Toggle split keyboard on/off Ctrl+T - swap tracks Ctrl+U - undo last change Ctrl+V - Filter all samples Ctrl+W - Polyphonize block Ctrl+X - Cut block to buffer Ctrl+Y - Backwards block Ctrl+Z - Restore Effects shft+0-9 - Store current command on selected key alt+0-9 - Insert command in current track alt+"\" - Copy command above cursor to current patternposition. alt+"=" -Z5SX Copy command above cursor to current patternposition and add one to the value. alt+"-" - Copy command above cursor to current patternposition and subract one from the value. alt+A - Monitor/Start sampling alt+B - Boost sample alt+D - Go to Disk Op. alt+E - Go to Edit Op. alt+F - Filter sample alt+I - Autoinsert volume alt+K - Delete current sample/track alt+Q - Quit PSTTracker alt+R - Resample alt+S - Go to Sampler screen alt+T - Tuni[65ng Tone alt+V - Toggle channel 4 alt+C - Toggle channel 3 alt+X - Toggle channel 2 alt+Z - Toggle channel 1 alt+Y - F3 - Cut (sample) F4 - Copy (sample) F5 - Paste (sample) \ - Toggle keypad mode (dots!) Return - Step one note forward Backspc- Step one note backward Alt+any key on keypad - tune drumpad ctrl+arrows left/rigth - Sample up/down ----------------------------------------- GENERAL INFO. ------------- Mak\7ing Music ------------ Any piece of music written with PSTTracker is built up from patterns. Each pattern is built up from four tracks, one for each of the amiga's audiochannels. A pattern is 64 lines long. The magnified line is always the one you edit. If you need shorter patterns, use the patternbreak effect command. A track is built up like this: 32 C-3 01 C20 / \_/ |/ \_/ / / | \ Pos Note Sample Effect cmd. The C-3 is the note being played a]89(t patternposition 32. 01 is the samplenumber, and the three last digits are the effect command, in this case, set volume to $20 (C-Command, 20-Value). PSTTracker holds a table with info about the sequence in which the patterns will be played. With the "Pos" gadget you determine your position in the table. With "Pattern" you define what pattern to play at that position. "Length" defines the total size of the table. The full sequence of Patterns is the Song. A song is built up^9z from up to 64 different patterns, each being played at up to 128 different positions. The small gadgets labeled "I" and "D" are Insert and Delete. With them you can Insert or Delete a position from your song. The length of your song will be adjusted automatically. Remember that the length of your song always must be one more than the last position, since the first position is 0. Holding down the right button when pressing the Pos, Pattern and Length gadgets will speed them_:4&e up a bit. Finetune -------- This is a goodie. Tune your untuned samples to match the others. Right button will set finetune to zero. 0 436.4 hz -1 432.1 hz 1 439.0 hz -2 429.6 hz 2 441.6 hz -3 426.3 hz 3 445.1 hz -4 423.1 hz 4 447.8 hz -5 419.9 hz 5 451.5 hz -6 416.7 hz 6 455.2 hz -7 414.4 hz 7 457.0 hz -8 412.0 hz Sample ------ Clicking on the sample up/down gadgets will flicker through the samples. You can`;I| use up to 31, or hex $1F samples in a song. Sample zero function -------------------- Pressing both mousebuttons at the same time will set the samplenmbr. to zero. You can then record the pattern with sample 0 to prevent PSTTracker from setting the volume each time you play a new note. Length ------ The Length gadgets are simply used for setting the length of the sample. A sample can be up to 64k, or $fffe long. You can add workspace behind the sample by increasing the a<͎length and letting go of the button. PT will ask if you are sure, and if you are, allocate more memory for the sample. Volume ------ Use this to set the volume the current sample will be played with. Repeat ------ Here you set the start of the sample loop. Replen ------ Here you set the length of the sample loop. Pressing both the left and right button on the sample-gadgets will speed them up a bit. The PatternNumber Gadget ------------------------ To the middle lb=eft of the screen is a box with a number in it. The number is the current pattern number. Click on it to type in a new number. When in type-in mode, use return, ESC or right mousebutton to exit. This should also work on most other such gadgets. The "Are you sure ?" requester ------------------------------ In addition to the gadgets, you can use "Y" for Yes and "N" or ESC for No. The Clear requester ------------------- In addition to the gadgets you can use "A" for All, "O"c>f (! for Song, "S" for samples and "C" or ESC for Cancel. The Load (sample) gadget ------------------------ This gadget will simply try to load the current samplename. Use this when you've fucked up in the sample editor, and have destroyed a sample. The text-input routine ---------------------- Now this is really simple. Clicking on a textline will enable you to edit it. Some text lines are longer than they seem, so use the arrowkeys to scroll back and forth in the text. The d?7fntext input mode is just like an ordinary text editor. You can use backspace, delete, space and such. In text-input mode you can also use the numeric pad for entering numbers. Pressing the right mousebutton will clear the text line and exit the editing. Use ESC or return to just exit. Tips 'n tricks -------------- When inserting, pasting or join-pasting, hold down shift to keep the cursor from jumping to the end of the block. e.g. shft+ctrl+P Holding shift while pressing cte@ Erl+K (kill to end of track) will kill to start of track instead. Use Esc or right mousebutton to exit from a lot of things. Effect tips ----------- You can set the volume without playing a note. e.g. ---01000 This will set the volume for sample 1 without trigging the note. Or try trigging the sample and sliding the volume down. e.g. C-301A08 ---01A08 ---01A08 This will create a strange arpeggiato effect, like on "Cream of the fA>cearth" by Romeo Knight / RSI. Pointer Colors -------------- Gray - Nothin's happening. Yellow - Playing song / pattern. Green - Disk action. Blue - Edit / record. Magenta - Waiting for something (text or number). Cyan - Select entry or delete. Red - Something went wrong. Drumpad ------- PSTTracker 1.0 features a drumpad as in Noisetracker 2.0 and 2.1. Use \ instead of . to toggle modes. One or more dots will appear to the right of the frgv eemem display. No dots: Normal keypad. 1 dot: Drumpad. 2 dots: Drumpad - Edit/Rec possible. Use Alt + keypad key to set note. Green - Disk action. Blue - Edit / record. Magenta - Waiting for something (text or number). Cyan - Select entry or delete. Red - Something went wrong. Drumpad ------- PSTTracker 1.0 features a drumpad as in Noisetracker 2.0 and 2.1. Use \ instead of . to toggle modes. One or more dots will appear to the right of the frBCOuKFEDC{bPSTTHelpText.infopBDa0-ZA',p,t"x$ʐOA&@ . ʣl$ $ .$$$sA$$$$.$$$$$$$$ $$$$$$$$$$BEn9pр8?`A&3BF+*2:+=o||x~|1sFBA 'x? sys:c/ppmore~|1sFGHHal~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHЀM39PSTTracker.GuidepGI']@database "PstTracker.guide" @master "PstTracker.doc" @node Main "Welcome To the PstTracker Help Guide" Table of contents: @{"PstTracker" link PstTracker} @{"General" link General} @{"MainScreen" link MainScreen} @{"DiskOperations" link DiskOp} @{"PresetList" link PresetList} @{"PresetEd" link PresetEd} @{"Setup 1" link Setup1} @{"Sampler" link Sampler} @{"Midi" link Midi} @{"Edit Operations" link Edit} @{"Setup 2" link Setup2} @{"Effect Commands" link FXComms} @{"KeyboGJCard" link Keyboard} @{"Spectrum Analyzer" link SpectrumAnalyzer} @endnode @node PstTracker PSTTracker V1.11 Nov/Dec '92 ------------------------------ (C)1992 PARASITE (tm) This program is Public Domain This code is based on ProTracker 1.2 Originally by Lars "ZAP" Hamre PARASITE Version By: John "SHAYERA" Hinge in 92 This is a preview version.real PSTT is being developed while you read this PSTT will be coded in c and will take full GK7use of the amigas multitasking and screen capabilities. ..SHAYERA.. Some technical info: Sourcecode : 331k / 19324 lines Main Program : 151k GFX data : 50k (packed) Worktime : 4 Weeks (2 Times) ASM time : about 1.35 minutes Objects : 3 files (Startup,GFX+Code) This program has been a pain in the .. I experienced a harddisk crash while i was just finishing it off.. So i had to start all over again. But here it is. SHAYERA... ImproveGLnqsments/Changes : -@{"Distortion" link Distortion} function !!! -Now saves FX-macros in ${"configfile" link Setup11} !!! -No @{"Midi" link Midi} Routines (They didn't work !!) -New and improved VU-Meters..... -Solo Function For audio channels -Module Save Bug From V1.04 Removed -@{"Sampler" link Sampler} is Back !! i found the bug.. - Now uses a 'Real' Detach Module to ensure 'nice' autodetaching from the current CLI To contact SHAYERA of PARASITE : Write to : John HingGM*e Gudrunsvej 68,IIIth. V1 DK-8220 Brabrand. Denmark. thanx goes out to the following ::: Quackbuster,Jones,Estrup of ..Static Bytes.. And to Shadowmind of Humane.: Thanx for the Help (At Samsoe)... To bad that the Bug was in another part of the code, as your fixe made a module 30 bytes longer for each unused sample slot in the song, and ensured that the module could only be played in PSTT :^( Important note ::::: Due to the way i am currently doing the sampler functioGN=nns, you must observe the following : Please wait until any diskactivity is completely stopped before you activate the sampling functions Failure to do so may result in both loss of diskdata and corrupt sampledata. ...... This is important.. @endnode @node MainScreen MAINSCREEN ---------- ## PLAY ## Will play the song from the current @{"position" link Position} in the song. The @{"pointer" link PointerColours} turns yellow, just to show you whGO4 at's going on. ## PATTERN ## Will play the current @{"pattern" link Patterns} which is shown at the bottom of the screen. The @{"pointer" link PointerColours} turns yellow here as well. Holding down the right button while pressing play or pattern will play from the current patternposition. ## EDIT ## Will put you in edit mode. The @{"pointer" link PointerColours} turns blue, and you can enter notes and numbers from the keyboard. Use the arrowkeys to move up/down and left/riGP$ght in the pattern. Entering a note or a number will cause the pattern to jump one or more slots down. ## RECORD ## Will put you in edit mode, but also play the current @{"pattern" link Patterns} or song. You can select this in the @{"Edit Options" link Edit} menu. While the pattern or song is playing, you can type in notes and numbers from the keyboard, and they will appear in the pattern as it scrolls. The notes and numbers will also be quantized to the nearest slot, so thaG QGt keeping a steady rhythm is no problem. The @{"pointer" link PointerColours} will turn blue here as well as in the the normal edit mode. ## STOP ## Will stop playing of songs, @{"pattern" link Patterns}s & recording, and will turn editmode off. ## CLEAR ## Will first ask you what you want to clear, with the @{"Clear Requester" link ClearRequester}. You can clear either all, song or samples. ## EDIT OP. ## Will exchange the @{"Spectrum Analyzer" link SpectrumAnalyzer} wG RxHith the @{"Edit" link Edit} Menu(s). Pressing more than one time will browse through the edit op. screens. ## DISK OP. ## Will go to the @{"Disk operations" link DiskOp}. ## PLST ## Will go to the @{"PresetList" link PresetList} screen. ## PSET-ED ## Will go to the @{"Preset editor" link PresetEd}. ## Setup ## Will go to the @{"Setup Screen" link Setup1}. ## Sampler ## Will go to the @{"Sampler screen" link Sampler}. The small gadgets labeled ## 1, 2, 3 and 4 ## G S-Q1Represent the audiochannels of your amiga. When lit, that channel is on. When not lit, the channel is muted and the notes in that @{"track" link Tracks} will not be played. You can also use ctrl-a to toggle an audiochannel, and ctrl-q to unmute all channels. Ctrl+shift-a will solo the current channel, or use Right MB + Left MB on gadget to solo channel ## Tempo ## The tempo gadget on the status bar is for setting the CIA speed, if CIA timing is used. The gadget will be updaG TR ted every time you set the speed using the F command (if CIA that is). @endnode @node DiskOp DISK OP. -------- Delete Song/Module/Sample changed to one gadget: Delete file. Directories shown/Parent gadget. Path indicator arrow. Click to change paths without reading dir. Clicking on "UPD" will show you free diskspace also without reading dir. Dir-browse button and lots more... ## Path ## The paths for songs, modules and samples can now bG U9ie changed, and they can be up to 31 characters long. To change path, click on load song/ module/sample or use the arrow indicating what path you're at. ## UPD (Diskspace) ## Free diskspace can be shown in hex or decimal. Select this on the @{"setupscreen" link Setup1}. Click on "UPD" to get free diskspace without rereading the dir. ## Format Disk## Will format a disk in df0: (Hopefully still bug-free...) ## Rename file ## Will dir the current directory. Select a filenaGVo9me, and you will be able to edit the name. ## Delete file ## Will dir the current directory. Select a file, and it will be deleted from the disk. ## Pack ## When on, PSTTracker will pack songs before saving (Modules can not be packed in this version, sorry!). ## Load song ## Will dir the songs path. Select a song, and it will be loaded and decrunched if crunched. ## Save song ## Will pack the song if pack is on, then save it to the current songs path. Remember to enterGWEN a name for your song, otherwise Pstt will not save! ## Load module ## Will dir the modules path. Select a module, and it will be loaded. ## Save module ## Will save the module to the current modules path. Modules can be saved without a name, since they always begin with "Mod.". ## Load sample ## Will dir the sample path. Select a sample, and it will be loaded to the current sample. Iff headers will be chopped off and loops loaded, if any. ## Save Sample ## Will save thGXe current sample as RAW or IFF. Select this in the "Save" gadget to the right of "Load Sample". IFF loops will be saved too. ## Dir-Browse button ## By pressing this button you can browse through various preset paths, so that you won't have to enter them over and over again. AutoDir - If you set the autodir toggle on the {"setup" link Setup1} screen to on, PSTTracker will automatically dir the current path when you enter the disk op. screen. AutoExit - When this toggle iGYH}7s on PSTTracker will exit from disk op. when loading a song or a module. ## Parent-dir Gadget ## By pressing the "p" button you activate the parent dir function. PSTT will try to move one step up in the directory chain if possible.. Note :: If you type a name for a Disk or a path that does not exist you will get a requester. Sometimes this will Make Pstt go dead. This WILL be fixed in the fortcoming .REAL. version of the Tracker @endnode @node PresetList GZrsa PLST ---- The PLST is fairly simple to use. Listed here are all the samples in your Presetlist and their lengths. Just click on a name, and PSTTracker will ask for a disk called ST-01 through to ST-FF. Insert it, and the chosen sample will be loaded to the current sample displayed at the left of the screen. Use the up/down arrow keys to move up and down in the PresetList. If you press the right mousebutton, the PLST will move 10 presets at a time. At the toG[lp the PLST shows the total number of samples from the selected sounddisks. There are a few PLST gadgets: ## CLEAR ## Will clear all the sounddisk names you have entered, and display the whole PresetList. ## MOUNTL(ist) ## Will search your drives for disks called ST-**, and put the names into the ST-__ gadgets. ST-00 will not be mounted. ## ST-__ ## There are three ST-__ gadgets where you can enter the numbers of the sounddisks you want to display in the PLST. Only the G\<presets from the selected sounddisks will be shown. If you clear all gadgets (by pressing return or right mousebutton), or press "Clear", the PLST will revert to show all presets. @endnode @node PresetEd PRESET ED --------- The PSTTracker's preset-editor is an enhanced version of the original v2.5 editor. The screen has been cleaned up, and redrawn to match the @{"plst" link PresetList}. You can now save the finetune value in the @{"presetlistG]&" link PresetList} instead of volume. The preset editor is used for sorting and catalogueing your samples. All samples for use with PSTTracker should be on disks called "ST-01" to "ST-FF". When adding a disk to the presetlist, only these disks are recognized. Harddisk owners may want to add a directory. e.g. You've got a directory called "Supersamples", and you want to use the samples on pt... Simple. Assign "Supersamples" to ST-13 or whatever. In the box with "Disk:" and ST-G^__ in it, enter ST-13. Now enter "DHX:supersamples" in the path box and press "add path". The path will be added as ST-13 in your presetlist, so everytime you need a sample from ST-13, it will be loaded from "Supersamples" instead. Simple? Editing -------- We must admit the editing is lousy, but you can't have everything! To edit a preset, simply click on it. Use the arrowkeys to move left/right. When moving up and down in the @{"presetlist" link PresetList}, use the right G_>^(!mousebutton to speed it up a bit. ## add path ## Will add the current path to the @{"presetlist" link PresetList}. infos will not be added. Samplenames can only be 15 chars long. ## Insert Preset ## Will create a new preset. Enter the data for the sample, and it will be added to the @{"presetlist" link PresetList}. ## Delete Preset ## Will delete the wanted preset from the @{"presetlist" link PresetList}. ## Delete Disk ## Will delete the disknumber set in the "Disk:" G`ۅbox. ## PATH ## This is where you enter the path to be added from. It can be up to 31 characters long (should be enough!?). ## Disk ## This is the disk (or HD-dir) that's being added from (or deleted). ## Presets ## This is the current number of presets in the @{"presetlist" link PresetList}. ## Clear PLST ## Will clear all the presets. ## Load PLST ## Will load the @{"presetlist" link PresetList} from a file called "PLST". This file should be placed in the PTdir (SeGaז-e @{"setup2" link Setup2}). ## Save PLST ### Will save the @{"presetlist" link PresetList} as a file called "PLST" to the current PTdir. ## Print PLST ## Will print the @{"presetlist" link PresetList} to the current print path, shown on the @{"setup" link Setup1}-screen. ## PLST ## Will go to the PLST-screen! ...and in case you were too stupid to understand, PLST is a shortform for "@{"presetlist" link PresetList}"! @endnode @node Sampler Sampler GbRt ------- As you know the sampler had disappeared in version 1.04 of pstt. It is know back as i found the bug that made it go dead (i hope).. It's very fast, much faster than Audiomaster, and the editing is much simpler. We also included a resampling option which we hope you'll find useful. Editing ------- When editing a sample, use to mouse to set the cursorline and to mark ranges. ## Waveform ## Will play the full sample with loops. ## Display ## Will pGcg6MElay the part of the sample being shown on screen. ## Range ## Will play the marked range. ## Stop ## Will stop all playing of samples. ## Show range ## Will magnify the current range and display it. ## Show all ## Will display the whole sample. ## Beg ## Will put the cursorline at the beginning of the sample. ## End ## Will put the cursorline at the end of the sample. ## Swap buff(er) ## The swap the current sample with the copy-buffer. ## Zoom out ## Will shGdΘAow double the range you are displaying. ## Range all ## Will range the part of the sample being displayed on screen. ## Cut ## Will cut away the part of the sample that's marked. ## Copy ## Will copy the marked range to the copy-buffer. ## Paste ## Will paste the copy-buffer into the current sample. The volume box -------------- The volume box is a bit like Audiomaster's, only better. Set the "from" and "to" volume percentages by using the sliders, or just type inGedz any number you please (from 0 to 200) in the percentage boxes to the right. ## Normalize ## Will find the highest volume rate possible (without clipping). ## Cancel## Will exit the volume box. ## \ ## Will set the percentages 100%-0% ## / ## Will set the percentages 0%-100% ## - ## Will set the percentages 100%-100% ## Ramp ## Will ramp (calculate) the volume! ## Tunetone ## Will create a sinus sound, which you can tune your samples after. See @{"setup 2 helpGf6" link Setup2} for details. ## Sample ## This will display the monitor.. Press rmb to sample or lmb to quit. ## Note ## This is the note to sample on. Range is C-1 to B-3. ## Resample ## The resampling option is much easier to use than the one in Audiomaster. Here's a step-by-step explanation: 1. Turn on the tuning tone. 2. Use the @{"keyboard" link Keyboard} to find what note it is. Use @{"finetune" link FineTune} if needed. 3. Enter the note in the "Note:" box toGgZ the right. 4. Press resample! ## Note ## This is what note to resample to. ## Disp(lay) ## This is the length of the part of the sample being shown on screen. ## Loop on/off ## This is for turning loops on/off without having to fiddle with the @{"repeat" link Repeat} and @{"replen" link RepLen} gadgets. ## Exit ## Exits the sampler screen. @endnode @node Setup1 SETUP ----- The setup screens were provided so PSTT users could set uG h Pp their own personal environment. We hope we have satisfied most of you. You've got 7 on/off toggles, a split keyboard editor, a color palette and lots more. Choose what you want, and use "Save Config" to save your environment. On the next screen is a list of what will be saved in the config file. Click button "2" to enter @{"setup screen 2" link Setup2}, with lots of new features! This will be saved in the config file: -------------------------------------- Songs/Modules/SaG!i0mples and Print paths,Split Keyboard data, Accidental, MultiKey Channeltable, Colors, Keyrepeat, the 7 on/off toggles, the 8 external dos commands and the effect macros + everything in setup 2. You can have up to 256 different config files. They will be saved as "pt.config-00", "pt.config-01" and so on. Set the confignumber in the "cnfig" box. ## Load config ## Will load the selected config file. ## Save config ## Will save the selected config file. ## Reset All ## WilG"jzal set the original PT defaults and colors. ## Multi ## This table is used with the multi key board option. The four numbers repre sent what channel each channel will jump to next. 1-2, 2-3, 3-4 and so on. ## The dot ## The gadget with a dot and a textline can be used to execute dos commands. Each of the 8 commands can be up to 31 letters long. Pressing the dot will browse through the commands. Holding the right button and pressing it will execute the command. Note that undG#ker KickStart 1.2/1.3 PT needs the command "run" to execute the other commands. This is because of commodore's stupid programming of the dos library function "execute". Type "endcli" to go back to PSTTracker. ## The Color Palette ## The color palette is simple to use. Just select a color, and use the R, G and B sliders to set the color. ## Undo ## Will put back the latest change. ## Cancel ## Will set the config colors. ## Def(ault) ## Will set the original ST colors. G$l/}x ## Split ## You can set 4 splits on the keyboard, each with it's own sample, splitpoint and transpose. Just type in a sample number and select the key to split at by pressing the appropriate one. The transpose note for each split is the first note in that split-range. Notes below the first split will be played with the current sample. Split is great for recording drums, or for playing untuned samples in tune (use together with @{"finetune" link FineTune}). ## Clear ## will G%m!kclear the splits. ## KeyRep(eat) ## The first number is the keyrepeat delay, and the second is the speed. ## Accidental ## Simple enough, accidental allows you to select sharp (#) or flat () notes. This will not be saved with the song, but can be saved in the Config! ## Print Song ## Will print the song to the path shown below the "Print Song" gadget. The print path can be 31 chars long. ## Split on/off ## Toggles between normal and split keyboard. ## Filter on/off #G&nR'# Toggles the audiofilter / PowerLED. (Not available on all amigas) ## Trans(pose)del(ete) on/off ## When on, notes transposed out of range will be deleted. ## ShowDec(imal) ## When on, Freemem, Tunemem, and filelengths will be shown in decimal. ## Autodir on/off ## When on, PSTTracker dirs the current directory path automatically. ## AutoExit on/off ## When on, PSTTracker will automatically exit from the @{"Disk Screen" link DiskOp} when loading a song or module. ## G'owcMod. only on/off ## When on, PSTTracker will only show modules beginning with "mod.". !!! <@{"Midi" link Midi} Toggle Removed> !!! @endnode @node Setup2 Setup 2 ------- Setup 2 is basically full of the things we couldn't fit into @{"Setup 1" link Setup1} in Protracker 1.0 + a few things people thought we should include. Well, hope you're satisfied with the result guys... Click on "1" to go back to good ol' setup 1... ## Timing ## We included thiG(ps so that american users also could enjoy PSTTracker, and wouldn't have to use sonix or any other terrible music program... You can choose between CIA or Vblank timing. Vblank is the timing-method soundtrackers have been using since the dawn of time, while CIA is a much better and accurate timing with the tempo measured in beats per minute. Using Vblank on NTSC amigas will cause the song to play 20% faster. With CIA, there's no difference. ## Tempo ## This is where you seG)qt your default CIA timing tempo. Range: 32-255. ## Speed ## This is where you set your default Vblank timing speed. Range: 01-FF. ## Copper Editor ## The copper editor is for altering the colors of the VU-meters and the @{"spectrum analyzer" link SpectrumAnalyzer} to your own liking. Select a color by clicking somewhere within the coppered stripe. Now use the R, G and B sliders to alter the color. ## Spread ## Will create an even gradient between the current color and thG*rPe one you click on next. ## arrows ## Will rotate the whole copper stripe in the Y-axis (up/down). Undo, cancel and def(ault) will work just like in the palette in setup 1. ## Mods ## This is where you set your default modules path. ## Songs ## This is where you set your default songs path. ## Sampl(es) ## This is where you set your default sample path. ## PTdir ## This is the path for all the files (We use most of the old PT files..) ## Max PLST ## This is the G+smaximum number of presets in your @{"presetlist" link PresetList}. ## DMA wait ## Use this on fast amigas to slow down the DMA enough to not miss any notes. ## Tuning tone ## The tuning tone is for use with the @{"sample editor" link Sampler}. The note is what note to play the tuning tone at, and the number is the volume. !!! !!! ## <- Default ## Will put back the default for everything in the middle column. ## Override ## When on, PSTT will G,tie3ignore any paths or disknames when loading a song or module. All the samples will be loaded from the current sample path. ## Nosamples ## When on, PSTT won't load the samples when loading a song or module. ## BlankZero ## When on, PSTT won't show the first zero in the samplenumber, as on NT1.2. ## Show dirs ## When on, directories will be shown in @{"Disk Op" link DiskOp}. ## Show Publ(ic) ## When on, PSTT will show all free memory, not just chip-mem. ## Cut to buff(erG-u0) ## When on, all samples cut in the @{"sample editor" link Sampler} will to put in the copy-buffer. ## Load loop ## When on, PSTT will load loops from IFF-samples. ## Slow Mode ## When on, text editing, gadget-repeats, etc. will go much slower. Use this if you have a 25 MHz A3000 or any other fast computer. We will try to do an automatic speed check in the next version. @endnode @node Midi MIDI ---- All the MIDI stuff from ProTracker hG.vEpas been removed.. As it turned out that they didn't work according to NOXIOUS. Therefor they willmost likely be replaced with some other new stuff... Feel free to send input on this.. (New working MIDI routines might do..) Sorry.. But that is just the way that life kicks you sometimes.. SHAYERA of PARASITE 1992 @endnode @node Edit EDIT OP. -------- The edit op. screens were just a handy way for us to implement all the new functions we G/w)whad thought of. There are three screens, and you can browse through them by pressing the edit op. gadget more than once, or select one by clicking on the numbers 1-3. To exit edit op., click on the gadget labeled "E" or press ESC. Edit op. Screen 1: ## Transposing ## What is transposing ? Transposing lets you shift the pitch of the notes up or down. E.g. Change a C-3 to a C#3. In comparison to other trackers, PSTTracker lets you transpose in just about every way yG0xlou can imagine. You can transpose either the current sample or all the samples in a @{"track" link Tracks} or @{"pattern" link Patterns}. To the right of the title bar is a small box with the letter "S" or "A". S - Only the current sample will be transposed. A - All the samples from $00-$1F will be transposed. To toggle between the two, click on the edit op. title bar. If the setup toggle "transdel" is on, all the notes transposed out of range (C-1 to B-3) will be deleteG1y3d. If not, they will not be transposed. Edit op. screen 2: (Record) ## Record ## Patt - Record current @{"pattern" link Patterns} only. Song - When recording, PSTT will move through the patterns in the song, just like normal play. ## Quantize ## Will move the notes you record to every n'th slot. Entering 00 will turn off the quantizing, and the notes you play will always be inserted at the patternposition you are at. Entering 01 will quantize the notes the theG2zG[ nearest slot according to the speed. i.e. if you play a note after the first half has been played, it will be quantized to the slot below. Entering a value like 8 will quantize to every 8th note, and so on. Got that? ## Metro(nome) ## The first number is the speed of the metronome, and the second is the channel to play it on. The Sample used for metronomes is always sample $1F. Load your own favourite metro nome sample. The metronome will always be played at C-3, but yoG3{`u can still change the volume and loop values. To turn off the metronome, just set the speed or channel to 00. ## Multi ## When on, PSTT will jump to another channel after you play a note on the keyboard. This makes it possible to play two or more notes at the same time (very useful with midi). On the @{"setup" link Setup1} screen you can choose what channel to jump to after playing a note. Edit Op. screen 2: (Samples) To the right of the title bar is a small box with tG4|C}he letter "T","P" or "S". T - Copy & Exchange apply to current @{"track" link Tracks} only. P - Copy & Exchange will affect the whole @{"pattern" link Patterns}. S - Copy & Exchange will apply to the real samples in memory. To toggle between the two, click on the edit op. title bar. ## Delete ## Will delete all notes with the current sample in current @{"track" link Tracks} or whole @{"pattern" link Patterns}. ## Kill ## Will kill the current sample. That is, remove iG5},et from memory and reset all sample settings. It will not be deleted from the track or pattern. You can also use the period (.) key on the numeric keyboard to invoke this function. ## EXCHGE (Exchange) ## Will exchange the samplenumber shown in the "from" gadget with the sample- number in the "to" gadget and vice versa. "T" or "P" selects track or pattern. "S" exchanges the samples. ## MOVE ## Will move the samplenumber shown in the "from" gadget to the samplenumber in thG6~ue "to" gadget. Edit Op. screen 3: (Sample Editor) To the right of the title bar is a small box with the letter "H" or "C". H - Will halve the volume when mixing and echoing to avoid clipping. C - Will not halve the volume. The sample may be clipped. To toggle between the two, click on the edit op. title bar. ## Mix ## Will mix one sample with another. PSTT asks you which two samples to be mixed, and where to put the result. Holding the right button and pressing mixG7£ will mix the current sample with itself. You can offset the sample by setting a position in the "pos" gadg. If you set "mod" to a non-zero value, the sample will also be modulated. ## Echo ## Will create a echo effect on the current sample. Use "pos" to set the delay time of the echo. If you want more room to echo in, just turn up the length of the sample. ## Boost ## Will turn up the treble of the sample. Use this on hi-hats and snares! ## Filter ## Will Delta-filteG865 r the sample. Use this on noisy basses. ## X-Fade ## Will crossfade the sample (mix with itself, backwards). Handy for looping samples that are hard to loop. ## Backwd (backwards) ## Will turn the sample backwards! ## Upsample ## Will remove every second byte of the sample, halving the length and shifting the pitch one octave up. ## Downsample ## Will double every byte of the sample, doubling the length, and shifting the pitch one octave down. If you downsample sampleG9Os longer than $7FFE, you will lose the end of them. ## POS ## This is just a offset in the sample, used for a lot of things. ## MOD ## This is used for modulation. Press "MOD" to modulate the current sample. ## Cutbeg(inning) ## Will chop the number of bytes set in the "pos" gadget off the beginning of the sample. ## FU (Fade Up) ## Will fade the volume from 0 to 100%. Use "Pos" to select where in the sample to fade up to. ## FD (Fade Down) ## Will fade the volumeG:!G from 100 to 0%. Use "Pos" to select where in the sample to fade down from. ## VOL ## With this you can change the "real" volume of the sample. Just set a percentage and press "VOL". Edit Op.3 is now intended to be used with the new @{"sample-editor" link Sampler}. If a range is marked, some of the functions apply to the range only. If there's no range marked, the functions will affect the whole sample. You may also set "POS" by clicking on the sample and setting the cursG;Xor-line. @endnode @node FXComms EFFECT COMMANDS --------------- Effect commands on PSTTracker should be compatible with all other trackers. 0 - None/Arpeggio 8 - * NOT USED * 1 - Portamento Up 9 - SampleOffset 2 - Portamento Down A - VolumeSlide 3 - TonePortamento B - PositionJump 4 - Vibrato C - Set Volume 5 - ToneP + VolSlide D - PatternBreak 6 - Vibra + VolSlide E - Misc. Cmds 7 - Tremolo F - Set Speed G<(Z E - COMMANDS ------------ The E command has been altered to contain more commands than one. E0- Filter On/Off E8- * NOT USED * E1- Fineslide Up E9- Retrig Note E2- Fineslide Down EA- FineVol Up E3- Glissando Control EB- FineVol Down E4- Vibrato Control EC- NoteCut E5- Set Finetune ED- NoteDelay E6- Patternloop EE- PatternDelay E7- Tremolo Control EF- Invert Loop Cmd 0. Arpeggio [Range:$0-$F/$0-$F] --------------------G=;J--------------- Usage: $0 + 1st halfnote add + 2nd halfnote add Arpeggio is used to simulate chords. This is done by rapidly changing the pitch between 3(or 2) different notes. It sounds very noisy and grainy on most samples, but ok on monotone ones. Example: C-300047 C-major chord: (C+E+G or C+4+7 halfnotes) C-300037 C-minor chord: (C+D#+G or C+3+7 halfnotes) Cmd 1. Portamento up [Speed:$00-$FF] --------------------------------G>u---- Usage: $1 + portamento speed Portamento up will simply slide the sample pitch up. You can NOT slide higher than B-3! (Period 113) Example: C-300103 1 is the command, 3 is the portamentospeed. NOTE: The portamento will be called as many times as the speed of the song. This means that you'll sometimes have trouble sliding accuratly. If you change the speed without changing the sliderates, it will sound bad... Cmd 2. Portamento down [Speed:$00-FF] --------------------G?z΀----------------- Usage: $2 + portamento speed Just like command 1, except that this one slides the pitch down instead. (Adds to the period). You can NOT slide lower than C-1! (Period 856) Example: C-300203 2 is the command, 3 is the portamentospeed. Cmd 3. Tone-portamento [Speed:$00-$FF] -------------------------------------- Usage: Dest-note + $3 + slidespeed This command will automatically slide from the old note to the new. You don't have to worry about which direcG@CTntion to slide, you need only set the slide speed. To keep on sliding, just select the command $3 + 00. Example: A-200000 First play a note. C-300305 C-3 is the note to slide to, 3 the command, 5 the speed. Cmd 4. Vibrato [Rate:$0-$F,Dpth:$0-$F] -------------------------------------- Usage: $4 + vibratorate + vibratodepth Example: C-300481 4 is the command, 8 is the speed of the vibrato, and 1 is the depth of the vibrato. To keep on vibrating, just select thGA?#be command $4 + 00. To change the vibrato, you can alter the rate, depth or both. Use command E4- to change the vibrato-waveform. Cmd 5. ToneP + Volsl [Spd:$0-$F/$0-$F] -------------------------------------- Usage: $5 + upspeed + downspeed This command will continue the current toneportamento and slide the volume at the same time. Stolen from NT2.0. Example: C-300503 3 is the speed to turn the volume down. C-300540 4 is the speed to slide it up. Cmd 6. VibraGBA + Volsl [Spd:$0-$F/$0-$F] -------------------------------------- Usage: $6 + upspeed + downspeed This command will continue the current vibrato and slide the volume at the same time. Stolen from NT2.0. Example: C-300605 5 is the speed to turn the volume down. C-300640 4 is the speed to slide it up. Cmd 7. Tremolo [Rate:$0-$F,Dpth:$0-$F] -------------------------------------- Usage: $7 + tremolorate + tremolodepth Tremolo vibrates the volume. Example: C-3GC/900794 7 is the command,9 is the speed of the tremolo, and 4 is the depth of the tremolo. To keep on tremoling, just select the command $7 + 00. To change the tremolo, you can alter the rate, depth or both. Use command E7- to change the tremolo-waveform. Cmd 9. Set SampleOffset [Offs:$00-$FF] -------------------------------------- Usage: $9 + Sampleoffset This command will play from a chosen position in the sample, and not from the beginning. The two numbers equal the tGDwo first numbers in the length of the sample. Handy for speech samples. Example: C-300923 Play sample from offset $2300. Cmd A. Volumeslide [Speed:$0-$F/$0-$F] -------------------------------------- Usage: $A + upspeed + downspeed Example: C-300A05 5 is the speed to turn the volume down. C-300A40 4 is the speed to slide it up. NOTE: The slide will be called as many times as the speed of the song. The slower the song, the more the volume will be changed on eaGEsch note. Cmd B. Position-jump [Pos:$00-$7F] ---------------------------------- Usage: $B + position to continue at Example: C-300B01 B is the command, 1 is the position to restart song at. This command will also perform a pattern-break (see 2 pages below). You can use this command instead of restart as on noisetracker, but you must enter the position in hex! Cmd C. Set volume [Volume:$00-$40] ---------------------------------- Usage: $C + new volume Well, tGFUVhis old familiar command will set the current volume to your own selected. The highest volume is $40. All volumes are represented in hex. (Programmers do it in hex, you know!) Example: C-300C10 C is the command, 10 is the volume (16 decimal). Cmd D. Pattern-break [Pattern-pos:00-63, decimal] ------------------------------------------------- Usage: $D + pattern-position This command just jumps to the next song-position, and continues play from the patternpositionGG! you specify. Example: C-300D00 Jump to the next song-position and continue play from patternposition 00. Or: C-300D32 Jump to the next song-position and continue play from patternposition 32 instead. Cmd E0. Set filter [Range:$0-$1] -------------------------------- Usage: $E0 + filter-status This command jerks around with the sound-filter on most A500 + A2000. All other Amiga-users should keep out of playing around with it. (though it looks funny, it soundsGH like shit) Example: C-300E01 disconnects filter (turns power LED off) C-300E00 connects filter (turns power LED on) Cmd E1. Fineslide up [Range:$0-$F] ---------------------------------- Usage: $E1 + value This command works just like the normal portamento up, except that it only slides up once. It does not continue sliding during the length of the note. Example: C-300E11 Slide up 1 at the beginning of the note. (Great for creating chorus effects) Cm&GGIfd E2. Fineslide down [Range:$0-$F] ------------------------------------ Usage: $E2 + value This command works just like the normal portamento down, except that it only slides down once. It does not continue sliding during the length of the note. Example: C-300E26 Slide up 6 at the beginning of the note. Cmd E3. Glissando Ctrl [Range:$0-$1] ------------------------------------ Usage: $E3 + Glissando-Status Glissando must be used with the toneportamento command. When GJE glissando is activated, toneportamento will slide a halfnote at a time, instead of a straight slide. Example: C-300E31 Turn Glissando on. C-300E30 Turn Glissando off. Cmd E4. Set vibrato waveform [Range:$0-$3] ------------------------------------------ Usage: $E4 + vibrato-waveform Example: C-300E40 Set sine(default) E44 Don't retrig WF C-300E41 Set Ramp Down E45 Don't retrig WF C-300E42 Set SquarGK Glewave E46 Don't retrig WF C-300E43 Set Random E47 Don't retrig WF Cmd E5. Set finetune [Range:$0-$F] ---------------------------------- Usage: $E5 + finetune-value Example: C-300E51 Set finetune to 1. Use these tables to figure out the finetune-value. Finetune: +7 +6 +5 +4 +3 +2 +1 0 Value: 7 6 5 4 3 2 1 0 Finetune: -1 -2 -3 -4 -5 -6 -7 -8 Value: F E D C B A 9 8 Cmd E6. PatternLoop [Loops:$0-$F] GL ---------------------------------- Usage: $E6 + number of loops This command will loop a part of a @{"pattern" link Patterns}. Example: C-300E60 Set loopstart. C-300E63 Jump to loop 3 times before playing on. Cmd E7. Set tremolo waveform [Range:$0-$3] ------------------------------------------ Usage: $E7 + tremolo-waveform Example: C-300E70 Set sine(default) E74 Don't retrig WF C-300E71 Set Ramp Down E75GMv" Don't retrig WF C-300E72 Set Squarewave E76 Don't retrig WF C-300E73 Set Random E77 Don't retrig WF <-- EDIT OP. UP/DOWN KEYBOARD --> ^C8:A1,C7,C9,D1 Cmd E9. Retrig note [Value:$0-$F] --------------------------------- Usage: $E9 + Tick to Retrig note at. This command will retrig the same note before playing the next. Where to retrig depends on the speed of the song. If you retrig with 1 in speed 6 that noteGNG"9 will be trigged 6 times in one note slot. Retrig on hi-hats! Example: C-300F06 Set speed to 6. C-300E93 Retrig at tick 3 out of 6. Cmd EA. FineVolsl up [Range:$0-$F] ---------------------------------- Usage: $EA + value This command works just like the normal volumeslide up, except that it only slides up once. It does not continue sliding during the length of the note. Example: C-300EA3 Slide volume up 1 at the beginning of the note. Cmd EB. FineVolslGO-s down [Range:$0-$F] ------------------------------------ Usage: $EB + value This command works just like the normal volumeslide down, except that it only slides down once. It does not continue sliding during the length of the note. Example: C-300EB6 Slide volume down 6 at the beginning of the note. Cmd EC. Cut note [Value:$0-$F] ------------------------------ Usage: $EC + Tick to Cut note at. This command will cut the note at the selected tick, creating extreGPimely short notes. Example: C-300F06 Set speed to 6. C-300EC3 Cut at tick 3 out of 6. Note that the note is not really cut, the volume is just turned down. Cmd ED. NoteDelay [Value:$0-$F] ------------------------------- Usage: $ED + ticks to delay note. This command will delay the note to the selected tick. Example: C-300F06 Set speed to 6. C-300ED3 Play note at tick 3 out of 6. Cmd EE. PatternDelay [Notes:$0-$F] ---------------------GQB------------- Usage: $EE + notes to delay @{"pattern" link Patterns}. This command will delay the pattern the selected numbers of notes. Example: C-300EE8 Delay pattern 8 notes before playing on. All other effects are still active when the pattern is being delayed. Cmd EF. Invert Loop [Speed:$0-$F] --------------------------------- Usage: $EF + Invertspeed This command will need a short loop ($10,20,40,80 etc. bytes) to work. It will invert the loop byte by byte.GRÖ Sounds better than funkrepeat... Example: C-300EF8 Set invspeed to 8. To turn off the inverting, set invspeed to 0, or press ctrl + Z. Cmd F. Set speed [Speed:$00-$FF] -------------------------------- Usage: $F + speed This command will set the speed of the song. Vblank: Range 01-FF - Normal timing CIA: Range 01-1F - Set vblank speeds with CIA timing. CIA: Range 20-FF - Set BPM speeds, range 32-255. Both: Range 00 - STOP song. @endnode @node KeyboGSQ3ard KEYBOARD -------- The keymap on PSTTracker is a standard us keymap. The font has been enhanced and redrawn a little, so you now have a lot more special characters than before. Remember to always use the left shift and alt, as the right ones are used for other things. High notekeys: 2 3 5 6 7 9 0 = Q W E R T Y U I O P [ ] Low notekeys: S D G H J L ; Z X C V B N M , . / F1 - GTChoose lo octave(From C-1 to G-3) F2 - Choose hi octave(From C-2 to B-3) shft+F3 - Cut @{"track" link Tracks} to buffer shft+F4 - Copy track to buffer shft+F5 - Paste track-buffer to track alt+F3 - Cut whole @{"pattern" link Patterns} to buffer alt+F4 - Copy whole pattern to buffer alt+F5 - Paste patt-buffer to pattern ctrl+F3 - Cut commands to buffer ctrl+F4 - Copy commands to buffer ctrl+F5 - Paste cmd-buffer to track F6 - Go to patternposition 0 F7 - Go to pattGUernposition 16 F8 - Go to patternposition 32 F9 - Go to patternposition 48 F10- Go to patternposition 63 shft+F6-F10 - Store current patternposition on selected F-key alt+F6-F10 - Play pattern from the stored patternposition ctrl+F6-F10 - Record from the stored patternposition Esc - Exit @{"DiskOp" link DiskOp}/@{"EditOp" link Edit}/@{"PLST" link PresetList}/@{"PsetEd" link PresetEd}/@{"Setup" link Setup1} and @{"MIDI" link Midi} screens shft+Return - Insert blank note atGV cursorposition and move the others down. Notes beyond patternposition 63 will be lost! shft+Bckspce - Delete note above cursorposition and move the others up. You can NOT do this if you're at patternposition 0! alt+Return - As above, but with all 4 @{"track" link Tracks}s alt+Backspace - As above, but with all 4 tracks ctrl+Return - Push cmds one down ctrl+Backspace - Drag cmds one up ctrl+0-9 - Select how many slots PT will jump dowGWOn each time you insert a note (this is only in Edit-mode) alt+cursor right - patternnumber up alt+cursor left - patternnumber down shft+cursor right - song-position up shft+cursor left - song-position down BackwardsSingleQuote (The key over TAB, you know?) - Go to CLI Help - Go to help or @{"plst" link PresetList} screen shft+Help - Toggle between help or plst on help key Space - Toggle between Stop/Edit-mode < (beside Z) - Kill DMA & Volumes toGX^ U 0 right Amiga - Play @{"pattern" link Patterns} right Alt - Play Song right Shift - Record Caps Lock - Toggle Keyrepeat on/off Del - Delete note under cursor alt+Del - Delete command only shft+Del - Delete note and command On Numeric pad: 0 - Select Sample $0 1st row - Select Sample $1-$4 2nd row - Select Sample $5-$8 3rd row - Select Sample $9-$c 4th row - Select Sample $d-$f Just Enter - Select Sample $10 Holding Enter +GYU the other keys select sample $11-$1f Period (.) - Kill current sample Left Amiga (Plus keys below) - Transposing like in Edit Op. Screen 1 Sample/@{"track" link Tracks} Sample/@{"pattern" link Patterns} ---------------------------------- 1 - Note Up 2 - Note Up Q - Note Down W - Note Down A - Octave Up S - Octave Up Z - Octave Down X - Octave Down All/track All/pattern ------------------------------- 3 - Note GZjUp 4 - Note Up E - Note Down R - Note Down D - Octave Up F - Octave Up C - Octave Down V - Octave Down Tab - Move cursor to next @{"track" link Tracks} Shft+Tab - Move cursor to prev track Ctrl+a - Toggle channel on/off Ctrl+b - Mark block Ctrl+c - Copy block to buffer Ctrl+d - Delete block, drag notes up Ctrl+e - expand track Ctrl+f - toggle filter on/off Ctrl+g - Boost all samples Ctrl+h - Transpose block up Ctrl+i - Insert block, G[b;push notes down Ctrl+j - Join-paste block Ctrl+k - Kill to end of track Ctrl+l - Transpose block down Ctrl+m - Toggle multikeyboard on/off Ctrl+n - Re-mark last block Ctrl+o - Contract track Ctrl+p - Paste block Ctrl+q - Unmute all channels Ctrl+r - Restore F6-F10 positions Ctrl+s - Toggle split keyboard on/off Ctrl+t - swap tracks Ctrl+u - undo last change Ctrl+v - Filter all samples Ctrl+w - Polyphonize block Ctrl+x - Cut block to buffer Ctrl+y - Backwards block CtG\Ղ&crl+z - Restore Effects shft+0-9 - Store current command on selected key alt+0-9 - Insert command in current track alt+"\" - Copy command above cursor to current patternposition. alt+"=" - Copy command above cursor to current patternposition and add one to the value. alt+"-" - Copy command above cursor to current patternposition and subract one from the value. alt+a - Monitor/Start sampling alt+b - Boost sample alt+c - Toggle channel 3 altG]nk(+d - Go to @{"Disk Op" link DiskOp}. alt+e - Go to @{"Edit Op" link Edit}. alt+f - Filter sample alt+i - Autoinsert volume alt+k - Delete current sample/@{"track" link Tracks} alt+q - Quit PSTTracker alt+r - Resample alt+s - Go to @{"Sampler screen" link Sampler}. alt+t - Tuning Tone alt+v - Toggle channel 4 alt+x - Toggle channel 2 alt+y - alt+z - Toggle channel 1 F3 - Cut (sample) F4 - Copy (sample) F5 - Paste (sample) \ - Toggle keG^JYypad mode (dots!) Return - Step one note forward Backspc- Step one note backward Alt+any key on keypad - tune drumpad ctrl+arrows left/rite - Sample up/down @endnode @node General GENERAL INFO. ------------- Contents: @{"Making Music" link MakingMusic} @{"Patterns" link Patterns} @{"Tracks" link Tracks} @{"Positions" link Positions} @{"FineTune" link FineTune} @{"SampleNr" link Sample} @{"Sample Length" link SampleLength} @{"Volume" G_link Volume} @{"Repeat" link Repeat} @{"Repeat Length" link RepLen} @{"Pattern Number" link PatternNumber} @{"The Are You Sure Requester" link YesNoRequester} @{"The Clear Requester" link ClearRequester} @{"The Load (Sample) Gadget" link LoadSampleGadget} @{"TextLines and Input Routine" link TextLines} @{"Tips & Tricks" link TipsAndTricks} @{"The Pointer Colours" link PointerColours} @{"DrumPad" link DrumPad} @endnode @node MakingMusic Making Music ------------ Any pieG`NIL: @<9;bST-00ab GH|!;r>4G67@<96bST-00bb G9%NV: directory assign ENV: ram:env resident Assign remove ;by removing these lines resident Makedir remove SYS:System/SetMap Usa1 path ram: c: sys:system s: add LoadWB delay ;wait for inhibit to end before continuing endcli >NIL: @<9bST-00a .b Gr+'sz  #*1<>ELQ\rbcpstFyxwvut %:Runrsu|O&O(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F SYS:Btԉ#B`Rrp(jtN#A JgB$B(""0p(jN$) !(")!s #i ""Jf")Np(jN$0#p(`,rҩ$"p(j4NJf")N")#pJfrNNqN#A p(j8N#A$vJ((fF#CBBx#D *) !X ") !JgJ"$0&0(8gG" p0(jN#A`G" p0(jN#Ar JfX"#p$J$g<$) !$(")$&0$)rp4(jN")$p4(jN#At "#pJfr G" p0(jN#A")p0(jN©F$) !(,"$0$rp0(jN&)$)") p0INp4(jdNz{T^~}|{ %:Installrz|OO(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F  H%:PromptrA/O6O(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F 2(jtp NJg2**p$A. J (F nd file B`p(jN%AXt gpIN"G$ p(j4NJf"p(jxNpINpIN"G$ "p(j4NtfF#B"p(jxN`p(jN%AXr Xg tXfJf rXfXJfG" p(j(Nr (jNNNqIFENDIFMissing ENDIF rp (jtN"t#B` "ҩ[p(jN%AXRr XgtXg v Xf")S$("NNq"$*48fG`" <(j$N`$"*8 <(jNr %AX <INr <(jNNNqELSE must be in a comma6ۇ %: Statusr4O_O(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F 19 -e,MountrgJdYOO(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F G" `2G" `&"Smtn6{NL@4(#A tgb`G " `"*p`xG" `lG" ``G" `TG " `HG$" `n6{N$Zl~  > H6`Nqp(jN%AXt fRdrXfJg rpI@NNr "Bt#Bv-Xfx#D"pINr0Xf.rpIN"*Xp(j,NtXfr"rpIN`V$)"N#A t0Xnv9Xm(*X"`"*Xp(j,NtAv ҃ҩ #ArpINr0Xn t9Xlrf*"*Xp(j,NtAn"*Xp(j,NtFol$)")N%AlNNqr""*pґ[rpINr;XgHt Xg>v Xg4x(Xg*z)Xg |,Xg~=Xg p Xf"*pNR o rpI N`r` rp I,Nr/Xg t*Xfr/Xf"rp I,Nr*Xf p IN`"rp I,Nr/Xfrp I,NN`` p ILNrtg ttfrtg p ILNNNq` rp INr Xgt Xgv XgNT tAv ҃ҩ #ArpINr0Xn t9Xlrf*"*Xp(j,NtAn"*Xp(j,NtFol$)")N%AlNNqr""*pґ[rpINr;XgHt Xg>v Xg4x(Xg*z)Xg |,Xg~=Xg p Xf"*pNR o rpI F %;>Deleter9OO(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F r%Ad``r#A`V")ҩt0G" <(j(N`.")ҩt0" <(j,NtHgvNg`R")t0l~"Jgt#B"Jgt%BdzJdg0Jg(G" <(j$Nr%Ax <(jPNJg <IlN`r%Ah <(jN#Atgd <(jN <INJfr <(jNJg0"*X <(jNG" <(j$Nr%Ax`` <(jPNN#FROM/A,TO/S,TO,OPT/K,HEX/S,NUMBER/S Bad args Can't open %S %S already exists Can't open %S Option '%C' ignored !Invalid option combination N & H **BREAK Jdg$*hG|" p(j(Np(jN"tgrp(jNJgr p(jNrtgFN"p(jNr `"IJgt gv fRhrN%I5 Br ҉#A$<hԉ#Bd#Bd%AlBtv%Cpr#A|tnZ" <INJf&&)$)|")d <I\N <(jPNR")dҩ|tԁ(rҩ|`&)t")d <I\Nr <(jNJg*"*X <(jNG" <(j$N``F <(jPNN ***BREAK Rp$*tpn&$<X"*lp(jN%AtJfrNBp"*lҪptԁr0($!(rNNqJg>x#D t"N#A$) rNV#At") NJf ")`rҩҩ#A$)&)$GD" p$(jLXL(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: %X2J\g"*\p (jNp (jNJ`g"*`p (jNp (jN"*xp (jNNNqTN%AtJfrNBp"*lҪptԁr0($!(rNNqJg>x#D t"N#A$) rNV#At") NJf ")`rҩҩ#A$)&)$GD" p$(j^o X%;PathroOO(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F G" p(jNrN#Q Jf\") #p$)#p((&)x08R#D$)")p((jN")ҩt:")rN"p(jN#Arp (j(N#AG$ #B() &)$)")p(IN#A$)v0(#C JfrN")p0(jNJfrN"p0INJg rҪX#A")t0&)x08*)oR\ %;<Breakr6OO(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F /m  -g @N"m,,xNb"_ <Ca>)@g2N&@Jg4Ca>B2 Jg  fbRJ`Ca"pe`p!,xNA\NA\N)@,lN`Bb890FfNnQq1)J -f(rR;gf0,";Ӏ;9@"B`bB ,f ,#f`, @g< g < g<;fB(CaH)@g^N p`p0/.l/,x ,a. , a( ,a" ,aN"@$,o N|"BN Nug"@Nb"oH0 $ vRJfJf,lN"NL Nu o"oǟ]WraTHTIr 0(1i3@THTIQNugraphics.libraryintuition.librarydiskfont.librarydos.libraryBad command line switch 1;33;3430mFastFonts0;31;40m V1.31 Copyright 1987 by C.Heath of Microsmiths, Inc NUH Hl$NXO$@JfHyHxHNPO$@JfHztNLXO?<2NnTO J"%H ||?<Hj(NJ\O?< Hj0N<\OxA$0H"@p@"RD|m/ N8XO LN]NuNo memory NUH0ND$@N,#g2J8f,Hl>NzXO&@Jg/ NHXO?< Hj8N\ON$@JgRHzpNXO,#g'?<Hj(NJ\O,#g?< Hj0N4\OJ8g,#g?< Hj8N\ONJl"fHz7NXONpL N]NuTrying to replace the system font Terminating FastFonts NUH0$m9m :Hl6NrXO&@JfB|0W m f|1V|1W` m fp8`p6@VHlFN|XO?<NTO m f0+m g / NXO$L N]NuNU/ $mJg/*/NPO/*NXOB$_N]NuNUH08- /-aXO m&PJg9D:)l6Hl6NXO$@Jf"HzNNXO/,NDXOHzN:XO`*gHzNXO/ NPXO`z0*kf0*Dg HzNيcXO`0*kg HzNpXO`/ / N PO|0o| f|1n|1o`|fp8`p6@nHl`NXO m!JL N]NuCan't open .font file Can't use Proportional fonts Font X or Y dimensions do not match Baseline does not match NU/ N$@NHj(NHXOHj0N>XOHj8N4XO/*(NXO/*0NXOJ8g /*8NXOa/ NXOHxH/ NPON$_N]NuNU/ NN$@a`)j@zJ@g$B@NJ@gNHz"NXO?<N"TOa.J@gN$_N]NuText() vector altered-aborting NUH xN4$@)jDzJDgBDNJ@ugx0LN]NuNU/ NN$@NH,#g2HzDNXO/*(N|XO%lz@J8g/*8NfXO%lzD` Hz'NXON$_N]NuTurning on FastText Turning off FastText NU/-NnXOBNXON]NuH 0&oNU,l Ep"JN:"J KN jFj;A#H#HA(0A0*:<o0AA0*:U@2<w0Z0|xQ0Q < 0 < *o|`0 K <Q < j:oЀrN:'@&Bj$"JAxpN K"lz"i<0*:S@QG j:oPK"Nu/ ,l ,zgj$@BzJ *aAgap`J,lrN: <"j ioЀ,l"j(g*$ ,͍gNP,|6)&|XHS@rAEzZwZZgZZWZZGZZ7ZZ'ZZZZQ N,E$Bprx4)$HLi$zN$ gNJ*FFy L|N"o,lNNL,lN:"o,lNzN,lN|N"o /,lN.,lNv"o,lN"o,l N o,l N o,lN o,lN VFF2:)topaz.font(( Can't find TOPAZxx font! Replaced TOPAZxx font 4<zZwZZgZZWZZGZZ7ZZ'ZZZZQ N,E$Bprx4)$HLi$zN͍YY  %; 'Joinr5GOO(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F or yesterday etc. to set date $  HH:MM:SS OR HH:MM to set time Bv(։#C$x8؉#D4G`* #E&(08؁z0Hx/g$*08ځ|0Xz:g#A|܁"`"$0v0(#C")#An.$&0(ցx08R&)ց8rҩ`"$0v0(R$)(`"#p#p"JgBJg: <(jNt԰#B"<| <(j`N` k>")t԰") <(j4NJf")#p$)J(n$)G" <I,N")tl$)G " <I,N")$)!("OO(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F WB Usage : Set default tool to PPMore Error reading text file !NUB-/-HmN@PO l9hڃ l9h؃HlN0XO)@fNfHxHmNPO)@f,HzHmNPOHxHmNPO)@f HzNXO/,/,NRPO/,NXOB l)h|BHxHmNTPO)@f HzNXOHxHm/,NPO g /,NjXO PP11g PP20g PX20f c PX20fPHxHl/,NO g /,NXOBgHzNf\OJ@f Hz NXO|+|`+|Hx ,rʆY//,NO HxHl/,NO g /,NXO ,)@ ,Y)@Hx/-/,NXO HxHz/,N2O g /,NLXO ,м@)@`$HxB/,NO )l)l)lB/,NPO)@f Hz7NXO/,/,/,NO g /,NXO/,N*XOB PP11g PP20gJ-gl cbBHz/,NO J-g/, ,Y//,NNO lHh@ l/NNPO/, lHh@HmN2O `/,/,HmNO BN(XON]Nu.ppCan't lock file !Can't open file !PasswordIncorKrect password, loading aborted !No memory to decrunch file !Decrunching...NUBm)m0,|@9@vJm f9|PL9|P9|.`9|L9|P9| .B,HltNXXO+@fpN]NuBBHl m/(2N"OB/-HlHNO m/(VNXO m/(VN6XO+@gA"mp Q/-NlXO @f m f/-NXO`tJ,gHlN PXOlfHlN RXO)@/-NfXOp`>Rm mfHx NXO/-N@XOp`BN>XOHxHz6/-NpO B,HxB/-HlHN>O````Error, retry !KMNUJg /,NLXOJg/,/,NPOBJg/-NXO l/(VNxXOaN]NuNUJ,g /,NXOJg /,NrXOJg /,NXOJg /,NHXOJgHx/,NzPO/,NXO/,NXOBgNTON]NuNUBNXOB/-/,NRO N]NuNU/,/,N POJ@fp`p@fNBHxHl/,N O )m t)m x)m|HzHl N PO/-Hl NSg8Sg(_gSg&ggp`v|L0N]Nu999HPrinhter busy !NUH 8-:- J,f/,tNXO$@JEg/,pNXO)@p tS@H, * gRHxHl/,NO tgJDgHxHl/,NO //,t/,NzO )Jt lx|f|LpN]NuNU/ lpxglB,$lt/,pNXO)@t)@pHxHl/,NO HxHl/,N O HxHl/,NO BgBgNXO/ NDXO)@t$_N]NuNUH 8-:- 0SDJ@o??<NXO`L0N]NuNU/ lx|)Hp)Ht8,0SDJ@o/,pNXO)@p`N:(N]NuNUNHzN^XOB,B,N]NuUnknown command - Press for c 2-ommand summaryNUBmHxHl/,NO BHz/,N\O HxHl@/,NO JmfL l/(VN XO l/(VN 0XO+@ m f m(f;|/-N ZXO`BHl /,N O a8N]NuPPMore 1.2 Command summary - Press any key to exitNU/B,N)lpt ltxgL8,0SDJ@o lx|tg/,tNXO)@t`JDo0SDJ@m/,pN@XO)@p`)lptHxHl/,NO HxHl/,NO BgBgNXOBg0,S@?NXO(N]NuNUH 8,:,alflgN.L0N]NuNU l"l)6H@2(@I 9A l"l)7H2( @ l(9H@I9AN]Nu oH0"lx|6,rtdP<g<ft`Jf< g4< fPA|`RACd`ʰ<Aeİ<zb<Zc<aet`S L Nu oH0 "HS < gxdRHanL$@c J` L NuNUBHzNPO)@fN]Nu/,N XO)@f /,N FXO`B/,BHzN OJg /,N XO/,N XOHzyNXO`N l1| l!lx( l!l|$/,N XO| l"hp)r)AHzENXO`Xpp.print.portprinter.deviceCan't open printer.device !Printing in progres D\s, continue...NUH $m%m (%|$B/ BHzN O80LN]Nuconsole.deviceNU/ $m5|%m (%m$/ N XO$_N]Nu o"oH>aL|Nu$IK* r* < apJf tpahA|g0<aZQeNupaJp5(4RB|fa4 Jfpa,6pa&A|g`a610Q3eNuprS@Sf< * QNu oprgxA` oprgЁH@`Nu o"/ / /VS$ Q$NuNUN]Nu o "ofNuapC솶E솶f2<Ekt"Q)O,x)NH瀀.)gKN`B_NsC rv Nh)@f .<N`NPONudos.libraryINuNU/ Hy0,/N@)@POfBHyNbPO.lNu lBh l1| l1| l ,P)@ l MANXBN$@JXOg./- /-/ N9| lh lh O `BHj\NHj\N)@ lJ$POg l"h$/NXO/,/ N)lꇠPON l NF l!@gHxHz*N l!@ PO/,?,NBgN PO$_N]Nu*NUH 0$m mJg m (( D (&@`&lHHЭ T9@B0,H/N)@POfL 0N]NuH:? KR//,N~0H @ $D'쇨CDf?-/ /,N: lB0P9|0HЬ&@R$KOH:| g| g| g | g| fR`  mz "f.R KRH:g JR|"f "fR`B*```8 KRH:g&| g | g| g| g| g JR` JRBJEfSRl`ZBB0,R@H/N)@POfBl`z&l`$0H l! K JfS0R@HRElm0H lB` 0<`0/ oJfSH"oS@WgB /NuL 2/ `WgRA`BQNuNUJg lN?-NTON]NuNU/0-H+@Jg(x` ?NTORDlm0,I//,NPOJg lNJg /,NXOJg l Jg /,NXOJg /,NXOJg /,NXOJg /,NXO,x.)g/ K N*_`B_NsJf0Jg(0,H//,NL0,R@H//,N8O`N"/,NXO -.lNu(N]NuNUH 8-0$@쇖JDm llJf9|pLpN]Nu*f/NXOBp`N"/,lNN"/,lN"/,lN:NL,lN,lNNL,lNNL,lNN,lNNL,lNNL,lNN"/,lNNL¹,lNHL ,lNL Nu"o,lN>N"o,lNbNUH HxN(XOf pLN]NuHyHx"N`$@JPOf /NpXO`%m m |B*DBNT%@JXOg / NZXO` HjN~XO `NU/ $mJ g/ NXO|%|p*/N*Hx"/ N O $_N]Nu"o,lN /,lNNUHx0/-NPON]NuNU/-NLXON]NuNU/ Jfp$_N]NuHy/- N`$@JPOfp`|5m%m `NU/ $m f$_N]Nu|%|%|p0*// NFPO`NL,lN:H"o` ,lN8LNuN"o,lN,lN|N"o /,lN. /,lNN o,lN o XB!HNu oL"/,lNDN,l"o /N"o,lNN"o,lN"o,lN2 /,lNN o,lN/ L,lN2$_Nu o,lN o,lNLL ,lN o,lN4/ L /,lNP$_Nu/ L,lN$_NuRefreshExit PPMore|Print FileNext LinePrev LinePrev PageNext Page@>JPNrXV^!!:++b55?? ^ EV &f> Jܫ 2N v^N NC^N AN @(/d20m 1mPPMore 1.20m PowerPacker More Replacement 33m Written by Nico Franois (POWER PEAK)0m ,32m_____0mNext page (More) ,32m__________0mPrevious page (Less) ,32m__________.B0mNext line 32m_____________________0mPrevious line 'R'32m____________________________0mRefresh window 'P'32m____________________________0mPrint file to PRT: '<','T','>','B'32m________________0mTop/Bottom of file ,'Q'32m______________________0mExit PPMore ,'?','H'32m_________________0mThis page0 p HT 0m  {IpP"?HF8Vjn~ "26FJZ^nr 2L^x  "h(  -j %<FileNoterYgOQO(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F "0 <(jN#AJf$$G" $0( <(j(Nr#Aro$J( gv#C#Cx#D"Jg2to(Jf &)xذ8#D"<| <(j`N`")#p$)")$0(( <(j4NJf")#p tg0&J8f$$)G" <(j(Nr#A`x")$)!(Jg") <˻i(jN")"0( <(jxN") <(jxN"Jg#i#i")Jf"G" p(jNrN#Q Jf\") #p$)#p((&)x08R#D$)")p((jN")ҩt:")rN"p(jN#Arp (j(N#AG$ #B() &)$)")p(IN#A$)v0(#C JfrN")p0(jNJfrN"p0INJg rҪX#A")t0&)x08*)orN")ҩ t0r:gR $)ԩ v/(")t0#B$r#A($n($)ԁv0(ҩ $)ԁ  n&  %<EndCLIr  rsORO(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F to know ...+The las5X\^t command did not set a return code Last command failed because (T`,2(jtp NJg2**p$A. J (F to know ...+The las89e;:9 %<Echor8:'OO(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F ?I5@? %< GetEnvAr>@OO(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F $3+v(GH$ ") < I`N"$0") < I`N") < (jN#AJf,$GP" $0( < (j(Nr < (jN") < (jN < INJg") < (jtNr < (jNNNqNAME/A Bad args ENV: Can't get %S &x08#D*|0X#F r#A n(R$)ԁv0($ԩ(rҩ`" Np(jN"tgrp(jNJgr p(jNrN"p(jNr gt gv frN]f(G<" < (j$Nr < (jN`"Jg$)ABYbDCB %< @SkiprACpOO(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F O(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F >r҉"t`ԉ#B\&<0։#C,(<؉#D*<ډ#E <((j8N#A$r <,(jN#A <0(jDN%ABBQT # <0(jN%At <0(jN%ABpBlBt<%BXv>%C\x$%D`z.%Ed%i,*~h%i\x%i,|%it" <0(jp,(jN#Ap,(j,NtEfr#A")p,(j,NtNfr #A` r;g`t gVv=gLJg$x؉&$) ")p,ITNJQ @Z,frNp,(jN#Ar g tf~p,(jNJgrNJfr=fp,(jNrNrNrNNqNo K directiveKeyword too long *#pXRlrN")ҩ")") !rNNq*|0X#Fr#An6$ԁv0(() $)"&)p$INJfrNrҩ`rNB`JgZr"frNr*f>p,(jN#Ap,(j,NtEfr#A")p,(j,NtNfr #A` r;g`t gVv=gLJg$x؉&$) ")p,ITNJ\]qponmlkjihgfedcba`_^] &x%= Copyr\^-O BO(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F $)ԩv0(t/g&&)x08JgR()ةH`S J g,"ҩ t0r/g$ԩ v0(t:f"t0#B$v֩ "#A($n(R$ԁv0($)ԩ(r\ j%ҩ(`")&)$)" <0INJfr%Al`4") <((jtN&)$)" <(INJfr%AlrNNqCan't open %S for input - v ։#CB0(#pH 4x&t:")pD(jN#A0Jg`G$ ")pHIN$)")4pHIN")pHIxN#A8$!0(rpH(jN$!($)8rpH(jN")4t0Jf`B8$*")4pHIN")t0#B ;Zx0Nm<[y1Oj$JanFebMarAprMayJunJulAugSepOctNovDec DD-MMM-YYHH:MM:SSSundayMondayTuesday WednesdayThursdayFridaySaturdayBv$։#C x0؉#D,z@ډuo#ETp(jNrN#Q Jf\") #p$)#p((&)x08R#D$)")p((jN")ҩt:")rN"p(jN#Arp (j(N#AG$ #B() &)$)")p(IN#A$)v0(#C@RH 8%=Whichr29OO(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F p(jN$0#p(`,rҩ$"dzkp(j4NJf")N")#pJfrNNqBrp(jN#A$rp (jN")p (jN#A Jgp (jNr#A$)rp (jN")NNq$)")p(IN#A$)v0(#C JfrN")p0(jNJfrN"p0INJg rҪX#A")t0&)x08*)orN")ҩ t0r:gR $)ԩ v/(")t0#B$r#A($n($)ԁv0(ҩ $)ԁ(rҩ(`")t0ԩ &)8rNNqSYS:p(jN$0#p(`,rҩ$" = p%=Dater͐)OO(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F or yesterday etc. to set date $ HH:MM:SS OR HH:MM to set time p (jNXgp (jN"*Xp (jNNNq&(*#p8#pH #pX|܂~ ނ#F#G#Bt")N#B Gh" #A$Gp& #C(xN#D0z#E4G|, #F@G. #GDG #@HJo*J m"  lJm mJf ")$`")(#AT$v0(#CXr#A\XnJ$)Tԁv0(#C`$)ԁc(")ҩ\c")ҩ\crҩ\`")NR#er#ATt n$G & ցx08&)ց8rҩT`r#ATtn$G& ցx08&)ց8rҩT`t")0NJf "<n`"<m#ATJo l")TR0`rc0ltd0t ")0Nt0҂&)8t ")0Nr0ԁ&)8 t")0NJf ")D`")@#AP")Pҩ4$0lR4`$)4rNU#ALr#ATtn.ҩL&)Hցr08v֩T()؃HrҩT`")4SҩP$0t ")Nt0҂&)8t ")Nr0ԁ&)8t<") N#A8t<") N#B t2")N#A ;Zx0Nm<[y1On$JanFebMarAprMayJunJulAugSepOctNovDet c DD-MMM-YYHH:MM:SSSundayMondayTuesday WednesdayThursdayFridaySaturdayBv(։#C$x8؉#D4Gx* #E NH瀀,y# <"<N:"@LfpNu*I/ +@+HN(@CpN+@fH.<,xNL`pd`4#Jg , 0H0EG @pB0& - mC ! RB)g\  g  g& "ggB  g`B`g0 "g *f  Ng nfr ` Eg efr`BB GL Hm/`^A\NA\N+@ /B,m$@ *$g @"(NA"$<NJg(+@)@)@ @ (g)@NSp` /$,yN(@*l.M*_/"-g,mN,y -g"@NbJ g N|"m N"M <N. Nudos.libraryNIL:t "RzNVH>< . n |dBB&|Jg /HyNh/NBNO`(HpfHx NX$,$P*$E/N-@BHy"NX&O gz#*E/-N$@( XgTHy0/*6N("PgHx/N-@PHy8/*6N("Pg /N,X/ NX/NDXJgp o| Jf HxHy>N-@SplPfHx NX/<HxN$@& Pg -@-@(,UgP`t Jg:v`2/./ NT @XHp/NHyT/ NtPROm//./././ /NHx/ NO `HyV/.NHxNO /.N/.NBNO L<|N^NuNVH<0&n$. $nxB . @*(/./ /N/.Hyj/ NHx/+N&O fp`HxHn/N0" ..O fpg,t/B/Nx/.// N/NO`/N//+Hyn/ NT @XHpNPJWDHHO-RgHy/ NtPHy/ NtJPgB/.`/.B/ NO xJfJWDHHgHx0N0` /.NXpL $o$/ &/$ gB/N*|//*N(O g///N/NO/NXL|NuH<8 / $o$$/(BD(|B&HxHxN&@* Pfp``Z/ /NJPg* + m"Jg/Hy/ NO /Hk/ NO */N&JDXg /NX`xJf + mHv`"C 1/f "C:`R/ NTXm/ NTXf"Hy/ NtP`/Hy/ NO Hx/ N/Hy/ NHyL"Հ/ Nt/ NTO L%ls is used from Workbench only icon.libraryWINDOWDELAYCON:0/50/640/80/IconX Not enough memory cd Failat 100 Execute %s %s WAIT >NIL: 999 min endcli >NIL: /:RAM:""Copyright 1988 Commod׫ore-Amiga, Inc. All Rights ReservedH:(o o"oE:Ot&O,yNpJWFg/HoHTNLO OL\NuNuH:&o oCE,yNL\NuNu: H0&/ $/Ho//NO L NuNH ,yL NL@Nu/,y"/N,_NuH0,yLNL@ NuH0,yLNL@ Nu/,yN,_NuH0,yLNL@ NuH ,yL NL@Nu/,y"/N(GF`,_NuH ,yL NL@Nu/,y"/N,_Nu/,y"/N:,_Nu/,y"/N.,_NuH0,yLN"L@ Nu  6Rl~ "/,yLN:,_Nu/,y"o / N.,_Nu/,y /N,_Nu/,y"oNb,_Nu/,y"o / N,_Nu4H\/,y oN,_Nu/,y oN,_Nu/,yLN,_Nu,Nu/,y"/N\ LoadWBrǕK %( AH瀀,y# <"<N:"@LfpNu*I/ +@+HN(@CpN+@fH.<,xNL`pd`4#Jg , 0H0EG @pB0& - mC ! RB)g\  g  g& "ggB  g`B`g0 "g *f  Ng nfr ` Eg efr`BB GL Hm/`^A\NA\N+@ /B,m$@ *$g @"(NA"$<NJg(+@)@)@ @ (g)@N<'p` /$,yN(@*l.M*_/"-g,mN,y -g"@NbJ g N|"m N"M <N. Nudos.libraryNIL:t "RNVH>8$.$n xBHyN*PgBHyN&Pf/NHxNP/N&<,</</N&@, O gV |f` Jf |w` Jf// HyN,Np X///<HxN&@& Pg.Jf$ /*N0'@Xg g ((K $@ f L Nu Z x0,&E6 >"plJH@T2Z`%intuition.libraryicon.libraryworkbench.task-debugCannot find resident tag for %s Cannot start tool (error %ld) Workbenchdelay(gTH J (2f0CmJg\`f"`|.| | | | ` JCJgf`EL/:NuWorkbench release 1.2. H8,yLNvL@Nu/,y"/N:,_Nu/,y"/N,_Nu/,yN|,_Nu/,yN,_NuH0,yLNL@ Nu 4HXjA/,yLN:,_Nu/,y"oNb,_Nu/,yL /N,_Nu/,y"oN,_Nu/,y"oN,_Nu/,yN|,_Nu/,y oN,_Nu/,y"ol p, / N,_Nu/,yNv,_Nu/,yLN,_Nu/,y"o o /N\,_Nu/,y oN,_Nu 0L`tH:(o o"oE:Ot&O,yNpJWFg/HoHTNdO OL\NuNu: /"/Ho //NO NuNb,_Nu/,yL /N,_Nu/,y"oN,_Nu/,y"oN,_Nu/,yN|,_Nu/,y oN,_Nu/,y"oIO t%= ProtectrJFOO(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F x-gDzAgj|Dg`g|tHg6vPgDxRgPzSg*|WgJ`drҩ`"Jgt#Bx#||`""J gt#Bv#Cx#||""0 <(jN#Ar <(j(N#AtJg$"0( <(jN#AJg#A#iH)l()v$)") <(jN#A") <(jNJg")#ptJf4$)Fvă#B()ȩ|*)FʩxFȅ#D`2")F#A$)ĩx&)FƩ|Fă#B"<©"#p#it#i()v$)") <(jNJgBJoG" <(j$N") <(jNNNqFILE/A,FLAGS,ADD/S,SUB/SBad arguments &Invalid flag - must be one of SPARWED Protect failed mN#Ar <(j(N#AtJg$"0( <(jN#AJg#A#i I?A XSetClockrOKvR7F7vH瀀,y# <"<N:"@LfpNu*I/ +@+HN(@C|pN+@fH.<,xNL`pd`#Jg , 0H0EG @pB0& - mC ! RB)g\  g  g& "ggB  g`B`g0 "g *f  Ng nfr ` Eg efr`BB GL Hm/`0A\NA\N+@ /B,m$@ *$g @"(NNp` /$,yN(@*l.M*_/ -g"@NbJ g N|"m N"M <N. Nudos.libraryNIL:t j"RXH<04/&/ $|d&|JBf BNrXN0(#DHyp0 @S* E/08NJPg Hyp0 @S* E/08NJPf N` NJf:#DNJfHy/NHxNrO ` Hy,/NPHyNp0 @S* E/08NJPg HyPp0 @S* E/08NJPf Np`~HyVp0 @S* E/08NJPg HyXp0 @S* E/08NJW{ PfN4/NX`*Hy^/NHy/NHy/NBNrO/BHyNO L Hx(/N&Pf/NpX`B//HyN Og` L Nu/ $o g( *g /NX/ N®쭚@Hx(/ NBO $_NuH?8$|DN R(((tȂ (,rЀ"Ё؀*( ʂ ($rЀ"Ёڀ&(Ƃ (rЀ"Ёր,(̂ (rЀ"Ё܀&h. ΂&G ( rЀ"Ё(P. ΂(G (rЀ"ЁNpSr N$g$|`$|tN` r N.g 9` 9րRmt`  @ְRm$ B $ B" B$ B  B LNuNVH>8$.&|D$|(|r< N*r< N$r*V( $4p 0 FRrresetBattery Backed up Clock not found Warning: Clock is at old address lloadssaveUSAGE: setclock load|save|reset load loads system time/date from clock save saves to clock datetimer.devicemƗ n/,y"/N:,_NuH0,yLN"L@ Nu/,yN,_NuH0,yLNL@ Nu4F7/,y"oN,_Nu/,yLN:,_Nu/,y /N,_Nu/,y"oN>,_Nu/,y"oN8,_Nu/,y"oN,_Nu/,y"o / N.,_Nu/,y /N,_Nu/,y oL "/ND,_Nu/,y"oN,_Nu 0DXl  FH:(o o"oE:Ot&O,yNpJWFg/HoHTN@O OL\NuNu n2ABAHA HA0 2B@H@Nu B@H@HABA"BtҁрnRAQNu/$ B$HBHAЂH@B@ $Nu/$"a$Nu/$"a $Nu/$lD"pJlDF @an4gD$Nu/ @p$lDF"lDF @aH$gD $Nu: /"/Ho //NO Nu o XB!HNu7H< &//z/N,p(rX $=P~fp`f/<Hx"N$@* Pf/NpX`@%C B |B*DBNh%@JXg / N` HjNX LOO(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F Q  Evalr3OO(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F gfvegxmgzxg~||gh`"NNqB"*XҪ\t0#Br-gv+g x~fR\"*XҪ\t0r(gpIN"`DR\pItN"$*XԪ\v0(t)fҬ R\`G" p(j$NR`r-f $D"Nr~f $F"N"NNqMismatched parenthesis "XBr #A$v0(#C BBԪ\x0(t'fxo*|0X"N"Ҫ\t0r#g$Ԫ\v0(t0fJ") \o>tԪ\&ւt08"p$(j,NtXfT\r#A` R\r#A`"Ҫ\t0#B"p$(j,N#At0n v9l rftAnvvFmlrf t7mX$)")N#At0nv9m()"`rA$)v ԃ"ҩ#AR\") \lF")NNqx'h(j$NR`r-f $D"Nr~f $F"N"NNqMismatched parenthesis "XBr #A$v0(#C BBԪ\x0(t'fxo*|0X"N"Ҫ\t0r#g$Ԫ\v0(t0fJ") \o>tԪ\&ւt08"p$(j,NtXfT\r#A` R\r#A`"Ҫ\t0#B"p$(j,N#At0n v9l rftAnvvFmlrf t7mX$)")N#At0nv9m()"`rA$)v ԃ"ҩ#AR\") \lF")NNqԅ? x%>=Versionr@ v < $vH瀀,y# <"<N:"@LfpNu*I/ +@+HN(@C|pN+@fH.<,xNL`pd`#Jg , 0H0EG @pB0& - mC ! RB)g\  g  g& "ggB  g`B`g0 "g *f  Ng nfr ` Eg efr`BB GL Hm/`0A\NA\N+@ /B,m$@ *$g @"(NNp` /$,yN(@*l.M*_/ -g"@N"UbJ g N|"m N"M <N. Nudos.libraryNIL:t j"RX NVH>8$.$n p-@vx|Bp-@BBB(|*< < -@Jf BNrX S"@ q ?f/HyN/NBNrO/<HxN-@Pf HxNrXpg j 0e j 9bBHy:Nx,P`HyJ/*N @Q *XHpNJPfB/*Nx,R`HyT/*N @_ *XHpNJPf&j`@ /WDHH :WD ZHHg"Hy\N/NHx /.NRORJfHy/*NJPfp-@pl/*Nx-@XB/././*NDJOf n-hRJf(Jf"HyN/NHx /.NROJgp&F0+-@p0+&/N0XJg&p&n0+-@p&n0+&/.NdXpfB//.p&n0+/p&n0/HyN/N&.p&n0-@O`//./*HyN/NO .Ro" nR* E/0NxTDHHXo4tJg&.(. D/0NxXet(fp-@`B/./.NRPL|ׅjN^Nu/ /$/ Hx/N/NrO $NuH0 o pv +f` -fvR`rЀ$ЂҀp0  0e 9c`rЀ$ЂҀp0  0e 9cJg"D`" L Nu"o o`Jfp`g!dp`pNu o"HJf " SNu B>* n r d d 8  4:|xVl ] [version] [revision] [unit] version.library.library.deviceWarning: cannot use path for device console.deviceError in Open Kickstart version %ld.%ld. Workbench version %ld.%ld %ls version %ld.%ld H:(o o"oE:Ot&O,yNpJWFg/HoHTNO OL\NuNu: H0&/ $/Ho//NO L Nu H0,yLNL@ Nu/,yN,_Nu $/,yLN:,_Nu/,y"o / N.,_Nu/,y"oNb,_Nu/,y oL "/ND,_Nu/,y"oN>,_Nu/,y"o / N,_Nu4Hh|H:(o o"oE:Ot&O,yNpJWFg/HoHTNO OL\NuNu: H0&/ $/Ho//NO L Nu H0,yLNL@ Nu/,yNh bUdevsp3bekeymapsʊQ0%@Vusa1޲xŸ^L.=6EG''''''''''''"AAAAAAAAAAAAAAA@~`~`!!1@@2##3$$4%%5^^6&&7**8((9))0_-_-+=+=|\|\0QqWwRrTt,dPp{[{[}]}]123SsDd䣣Ll:;:;"'"'456>.>.?/?/.789߉Y - "-8CN(((())))////****++++YfFgGhHjJ kK aAeeEE iiIInnnnnNNNNNoOuuUUyyy`LyYYYYY `^~ ZATBSC @D A0~10~1~11~2~12~3~13~4~14~5~15~6~16~7~17~8~18~9~19~?~usa1&@($  `\XTPD$  *&" E iiIInnnnnNNNNNoOuuUUyyy %@ MountList5/* MountList for V1.3 */ /* Mount Entry for the new Console Handler */ NEWCON: Handler = L:Newcon-Handler Priority = 5 StackSize = 1000 # /* This is an example of a non-filing system mount using a handler written in C. */ SPEAK: Handler = L:Speak-Handler Stacksize = 6000 Priority = 5 GlobVec = -1 # /* This is an example of an alternative type of non-filing device mount, used to mount the non-buffered serial handler */ AUX: HandlerP( = L:Aux-Handler Stacksize = 1000 Priority = 5 # /* This is a non-filing system device */ PIPE: Handler = L:Pipe-Handler Stacksize = 6000 Priority = 5 GlobVec = -1 # /* This is an example of a mount list entry for using the recoverable ram disk. Depending on the amount of memory you wish to devote to it, you may want to change the HighCyl value. */ RAD: Device = ramdrive.device Unit = 0 Flags = 0 SurfKaces = 2 BlocksPerTrack = 11 Reserved = 2 Interleave = 0 LowCyl = 0 ; HighCyl = 21 Buffers = 5 BufMemType = 1 # /* Mount a 5.25" disk drive to be mounted as DF2: */ DF2: Device = trackdisk.device Unit = 2 Flags = 1 Surfaces = 2 BlocksPerTrack = 11 Reserved = 2 Interleave = 0 LowCyl = 0 ; HighCyl = 39 Buffers = 20 ]L BufMemType = 3 # /* An example mount entry using the fast file system with a partition of the hard disk using the 2090 disk controller. PREP has been used to create the first partition (up to cylinder 20). The second partition is MOUNTed, using the following entry: NOTE: Some hard disk drivers require more stack than specified here. Some may required less. (The hard disk is not included; this is only an example.) */ FAST: Device = hddisk.device FileSystem = l:FastFileSystem Unit = 1 Flags = 0 Surfaces = 4 BlocksPerTrack = 17 Reserved = 2 Interleave = 0 LowCyl = 21 ; HighCyl = 800 Buffers = 30 GlobVec = -1 BufMemType = 1 Mount = 1 DosType = 0x444F5301 StackSize = 4000 # /* Let's say you have an A2000 with an internal drive, and an external drive, and you want to refer to the external drive as DF1: as well as DF2: Well, this MountList entry will do it for you.{^ This technique can be extended to provide you with a drive A: and B: if you really want. */ DF1: Device = trackdisk.device Unit = 2 Flags = 1 Surfaces = 2 BlocksPerTrack = 11 Reserved = 2 Interleave = 0 LowCyl = 0 ; HighCyl = 79 Buffers = 20 BufMemType = 3 # nt to refer to the external drive as DF1: as well as DF2: Well, this MountList entry will do it for you.ە Rsystem-configurationhaP 'N @p<L?C    @` @D ,genericK BbUsystem-configuration'y  "&,1bDocsp^{APSTT.ReadMe!.info땼=A'!h!h"!݀!@A&H . ʣl$ $ .$$$sA$$$$.$$$$$$$$ $$$$$$$$$$kE9pр8?`A&@3q+*2:+=o||x~|1sFA x? sys:c/ppmore~|1sF]({A PSTT.TempoCalc.txt.info땼3A'!h!h"!݀!@A&H . ʣl$ $ .$$$sA$$$$.$$$$$$$$ $$$$$$$$$$k;9pр8?`A&@3󽴜g+*2:+=o||x~|1sFA zx? sys:c/ppmore~|1sFV+a% jPSTT.TempoCalc.txt2ƂPSTTracker CIA (Complex Interface Adapter) Timer Tempo Calculations: -------------------------------------------------------------------- Fcolor = 4.43361825 MHz (PAL color carrier frequency) CPU Clock = Fcolor * 1.6 = 7.0937892 MHz CIA Clock = Cpu Clock / 10 = 709.37892 kHz 50 Hz Timer = CIA Clock / 50 = 14187.5784 Tempo num. = 50 Hz Timer*125 = 1773447 For NTSC: CPU Clock = 7.1590905 MHz --> Tempo num. = 1789773 To calculate tempo we use the fo9irmula: TimerValue = 1773447 / Tempo The timer is only a word, so the available tempo range is 28-255 (++). Tempo 125 will give a normal 50 Hz timer (VBlank). A normal Protracker VBlank song tempo can be calculated as follows: We want to know the tempo in BPM (Beats Per Minute), or rather quarter- notes per minute. Four notes makes up a quarternote. First find interrupts per minute: 60 seconds * 50 per second = 3000 Divide by interrupts per quarter note = 4 notes * speed Thist gives: Tempo = 3000/(4*speed) simplified: Tempo = 750/speed For a normal song in speed 6 this formula gives: 750/6 = 125 BPM Lars "ZAP" Hamre/Amiga Freelancers 1990 John "SHAYERA" Hinge / PARASITE (tm) 1992 ted as follows: We want to know the tempo in BPM (Beats Per Minute), or rather quarter- notes per minute. Four notes makes up a quarternote. First find interrupts per minute: 60 seconds * 50 per second = 3000 Divide by interrupts per quarter note = 4 notes * speed This 9A#PSTT.FileFormat.txt'PSTTracker 1.0 Song/Module Format: ----------------------------------- Note to C Programmers : Check out psttmodule.h in the Sources Drawer !!! Offset Bytes Description ------ ----- ----------- 0 20 Songname. Remember to put trailing null bytes at the end... Information for sample 1-31: Offset Bytes Description ------ ----- ----------- 20 22 Samplename for sample 1. Pad with null bytes. 42 2 Samplelength for sample 1. Stored as number of wor 7ds. Multiply by two to get real sample length in bytes. 44 1 Lower four bits are the finetune value, stored as a signed four bit number. The upper four bits are not used, and should be set to zero. Value: Finetune: 0 0 1 +1 2 +2 3 +3 4 +4 5 +5 6 +6 M 7 +7 8 -8 9 -7 A -6 B -5 C -4 D -3 E -2 F -1 45 1 Volume for sample 1. Range is $00-$40, or 0-64 decimal. 46 2 Repeat point for sample 1. Stored as number of words offset from start of sample. Multiply by two to get offset in bytes. 48 2 Rep~weat Length for sample 1. Stored as number of words in loop. Multiply by two to get replen in bytes. Information for the next 30 samples starts here. It's just like the info for sample 1. Offset Bytes Description ------ ----- ----------- 50 30 Sample 2... 80 30 Sample 3... . . . 890 30 Sample 30... 920 30 Sample 31... Offset Bytes Description ------ ----- ----------- 950 1 Songlength. Range is 1-128. 951 ~A 1 Well... this little byte here is set to 127, so that old trackers will search through all patterns when loading. Noisetracker uses this byte for restart, but we don't. 952 128 Song positions 0-127. Each hold a number from 0-63 that tells the tracker what pattern to play at that position. 1080 4 The four letters "M.K." - This is something Mahoney & Kaktus inserted when they increased the number of samplnes from 15 to 31. If it's not there, the module/song uses 15 samples or the text has been removed to make the module harder to rip. Startrekker puts "FLT4" or "FLT8" there instead. Offset Bytes Description ------ ----- ----------- 1084 1024 Data for pattern 00. . . . xxxx Number of patterns stored is equal to the highest patternnumber in the song position table (at offset 952-1079). Each note is stored as 4 bytesX, and all four notes at each position in the pattern are stored after each other. 00 - chan1 chan2 chan3 chan4 01 - chan1 chan2 chan3 chan4 02 - chan1 chan2 chan3 chan4 etc. Info for each note: _____byte 1_____ byte2_ _____byte 3_____ byte4_ / \ / \ / \ / \ 0000 0000-00000000 0000 0000-00000000 Upper four 12 bits for Lower four Effect command. bits of sam- note period. bits of sam- ple num~ber. ple number. Periodtable for Tuning 0, Normal C-1 to B-1 : 856,808,762,720,678,640,604,570,538,508,480,453 C-2 to B-2 : 428,404,381,360,339,320,302,285,269,254,240,226 C-3 to B-3 : 214,202,190,180,170,160,151,143,135,127,120,113 To determine what note to show, scan through the table until you find the same period as the one stored in byte 1-2. Use the index to look up in a notenames table. This is the data stored in a normal song. A packed song starts wi +;th the four letters "PACK", and then comes the packed data. In a module, all the samples are stored right after the patterndata. To determine where a sample starts and stops, you use the sampleinfo structures in the beginning of the file (from offset 20). Take a look at the mt_init routine in the playroutine, and you'll see just how it is done. Lars "ZAP" Hamre /Amiga Freelancers John "SHAYERA" Hinge / PARASITE (tm) 1992 is the data stored in a normal song. A packed song starts wiE~*p PSTT.Version!~[8This new version of PSTTracker was given the version number V1.0 because I have received a PT1.2 source and I have based my Program on this one. And I decided to start a new Tracker name (PST) The Only major bug i know of is that the sample function don't work under KS2.0 The next version will (hopefully) work in an intuition environment. John "SHAYERA" Hinge/PARASITE (tm) 1992 b PSTT.Version!ϠNN{APSTT1.0.txt.info땼 A'!h!h"!݀!@A&H . ʣl$ $ .$$$sA$$$$.$$$$$$$$ $$$$$$$$$$k9pр8?`A&@3=+*2:+=o||x~|1sFA ex? sys:c/ppmore~|1sF  r Ƶ  A  PSTT1.0.txt  L4 _____ _____ _____ _____ _____ _____ _____ _____ / / / / / / / / / / / / (TM) / / / / / / / / / / / / /_____/ /____/ /____/ /____/ /_____ / / /_____ / / / / \ / / / / / / / / / / \ / / / / / / / / / / // / _____/ __/__ / /______ PSTTRACKER VER 0U'SION 1.x This is a eta release to enjoy while we are working at the 'Real' PSTTracker... The end result will be a 2.0 based Tracker with Real 'GUI' and Nice multitasking and System Friendliness !!! H A V E F U N ! ! ! John 'SHAYERA' Hinge / Parasite 1992 / / / / / / / / / \ / / / / / / / / / / // / _____/ __/__ / /______ PSTTRACKER VER  2" {APSTT.Update!.info 땻A'!h!h"!݀!@A&H . ʣl$ $ .$$$sA$$$$.$$$$$$$$ $$$$$$$$$$ k9pр8?`A&@3 -+*2:+=o||x~|1sF A ]x? sys:c/ppmore~|1sF nA PSTT.ReadMe!|------------------------------------------------------------------------- PSTTracker V1.1x Release A - (C) 1992 PARASITE (tm) 1992 ------------------------------------------------------------------------- PSTTracker is a Public Domain program, and may may be copied freely and included in any PD library. You may not charge anything for the program other than the cost of the disk and the PD-service. Message to Lars "ZAP" Hamre & co: --------------------------------- Instead of writ@Ring brand new textfiles, I've just modified your original PT1.2 textfiles. Hope you don't mind. This disk should contain the following files: PSTT1.0 - The main program. PSTT1.0.info - The Icon for PSTTracker. DOCS/PSTT.TempoCalc.txt - How to calculate tempo etc. SOURCES/PSTT-Play.s - Playroutine for the Seka or DevPac assemblers. SOURCES/PSTT-CIAPlay.s - Playroutine for CIA timing. DOCS/PSTT.FileFormat.txt - Description of thee0 file format. DOCS/PSTT.Effects.txt - Quick help on all effect commands. PSTTHelpText - Online helpfile for PSTT1.0 (press the Help key). -|- -|- -|- - Read-/Printable version of the help file. PSTT.guide - AmigaGuide HyperText Document File PS.config-00 - Default configuration file. DOCS/PSTT.Update! - Textfile with changes from PT1.1B(PT2.0) DOCS/PSTT.ReadMe! - ****--> This file <--**** DOCSyC/PSTT.Version! - Textfile explaining the versionnumber C/PPMore - This Program is used for Online Help !!! Some info.. ----------- If you are going to make make a compact-disk containing PSTTracker, please include PSTTHelpText, PPMore and powerpacker.library !!! THIS IS VERY IMPORTANT!!! For more info, press the HELP key when you have started PSTTracker. It isn't possible to load old configuration files with PSTT1.0, but if you load an old config-fil ֓e into an editor and change the first 4 letters to "PST1", you might be able to use it, but some new functions may be set to zero though. Remember to check the DMA-wait and all the other functions or you'll experience some crashes etc... --- PSTTracker history --- First Version 1.0 (A) - Full of bugs... ---------------------------------------------------------- Improvements from PT1.1B(& PT2.0) to PSTT1.0: ---------------------------------------------------------- - MIDI Stuff C\r;ompletely removed... According to NOXIOUS they didn't work anyway so i removed them completely. Besides... Nobody i know used them anyway. Maybe the space will be used for something else !! - The Salvage song option was removed.. The function didn't work so instead of making it work, i removed it together with the code that apparently saved the song in case of the dreaded visit to India. This function also didn't make sense on a mutltitasking machine.. (Using absolute adres0ses is a BIG nono.) Known bugs, errors, stupid things and other crap: ------------------------------------------------- - If you load a song or module that's not a proper ST-module, PSTTracker may trash the upper left of the screen and/or crash. This screen-trashing may also happen other times. Don't ask us why or when. There is really no proper way to check if a file is a module or song. I check for "M.K." at offset 1080, and if isn't found, PSTTracker asks if you want tXto load it with 31 samples, since it may be a Startrekker module. If you answer no, PT assumes it's an old 15 samples song/module. - If you format a disk with PSTTracker, it's possible to save files to the disk, but if you try to load the files you just saved, nothing comes up in the disk op. screen. If could be that the Amiga has some problems validating the disk, but there are no such messages. We'll have a look at the Format routine.If you get any problems, try to tak -ie out the disk and insert it again. PSTT should now re-read the dir. - You cannot have two presets with the same name on different ST-disks. If you send us bug reports, please describe the bugs properly, so that we can figure them out without too much trouble. State how, when and where the bug appeared, if it's there all the time, or just happened once. If you can tell us how to duplicate what you did to get the bug, it would be great. THEN we can try to eliminate it, ok? Things B to come in newer versions: --------------------------------- - Intuition compatible, multitasking. - Synthetic sounds. - MIDI. ?? - Module Recognition (ProPacked and other types) - ProPacker 2.1 module support ?? We really don't know when the 'REAL' PSTT will be released. Wait and see... If you want to contact us for any reason (please do) write to: John "SHAYERA" Hinge Of PARASITE (tm) Gudrunsvej 68,IIIth. v1 DK-8220 Brabrand Denmark Also try and use my other utilitie ^s : TrackPlayer V1.8x : An Intuition and Kick2.0 based PT/PSTT Module Replayer (NEAT !!!) sking. - Synthetic sounds. - MIDI. ?? - Module Recognition (ProPacked and other types) - ProPacker 2.1 module support ?? We really don't know when the 'REAL' PSTT will be released. Wait and see... If you want to contact us for any reason (please do) write to: John "SHAYERA" Hinge Of PARASITE (tm) Gudrunsvej 68,IIIth. v1 DK-8220 Brabrand Denmark Also try and use my other utilitieЊR! {A PSTT.FileFormat.txt.info땻A'!h!h"!݀!@A&H . ʣl$ $ .$$$sA$$$$.$$$$$$$$ $$$$$$$$$$ j9pр8?`A&@3! +*2:+=o||x~|1sFA Lx? sys:c/ppmore~|1sF"#%$#B PSTT.Update!"$4These are the changes from ProTracker V1.2 to PSTTracker V1.x : IMPORTANT : V1.04 had a minor Bug ..... When you saved a module, it would increase in size with 30 bytes for every empty sample in the song. This would offset the samples when you loaded it again and sound 'funny' This error has been found and then terminated (PSSSSSTT :^D ) !!! - Important change: HelpFile layout has been chaged to a simple Textfile. At the moment you have to have PPMore in your search pat"%aߨh and the file PSTTHelpText in ST-00: for the help to work. - I have also made an AmigaGuide version of the HelpFile. At the moment it is not very advanced, but there are some links in it And it is better than no Guide file :^) - Redesigned Graphics (Neat aren't they ?? ) - Salvage song function removed (Nobody used it, and it isn't very nice to stomp the memory in a multitasking environment) - MIDI Routines removed (They didn't work !!!!!) - Redesigned and move"!=Hd the VU-Meter bars (I thought they disturbed the Song data readouts) - Audiochannel SOLO function added, Just Hold Right Mousebutton and press the Left Mousebutton on the channel to SOLO (Inspirated but NOT stolen from PT2.1 by NOXIOUS) John 'SHAYERA' Hinge of PARASITE 1992 Salvage song function removed (Nobody used it, and it isn't very nice to stomp the memory in a multitasking environment) - MIDI Routines removed (They didn't work !!!!!) - Redesigned and move&'M;+*)(' AhPSTT.Effects.txt&( =PSTTracker V1.0 Effect Commands ---------------------------------------------------------------------------- 0 - Normal play or Arpeggio 0xy : x-first halfnote add, y-second 1 - Slide Up 1xx : upspeed 2 - Slide Down 2xx : downspeed 3 - Tone Portamento 3xx : up/down speed 4 - Vibrato 4xy : x-speed, y-depth 5 - Tone Portamento + Volume Slide 5xy : x-upspeed, y-downspee&)\(_d 6 - Vibrato + Volume Slide 6xy : x-upspeed, y-downspeed 7 - Tremolo 7xy : x-speed, y-depth 8 - NOT USED 9 - Set SampleOffset 9xx : offset (23 -> 2300) A - VolumeSlide Axy : x-upspeed, y-downspeed B - Position Jump Bxx : songposition C - Set Volume Cxx : volume, 00-40 D - Pattern Break Dxx : break position in next patt E - E-Comma&*5,tnds Exy : see below... F - Set Speed Fxx : speed (00-1F) / tempo (20-FF) ---------------------------------------------------------------------------- E0- Set Filter E0x : 0-filter on, 1-filter off E1- FineSlide Up E1x : value E2- FineSlide Down E2x : value E3- Glissando Control E3x : 0-off, 1-on (use with tonep.) E4- Set Vibrato Waveform &+m E4x : 0-sine, 1-ramp down, 2-square E5- Set Loop E5x : set loop point E6- Jump to Loop E6x : jump to loop, play x times E7- Set Tremolo Waveform E7x : 0-sine, 1-ramp down. 2-square E8- NOT USED E9- Retrig Note E9x : retrig from note + x vblanks EA- Fine VolumeSlide Up EAx : add x to volume EB- Fine VolumeSlide Down EBx : subtract x from volume EC- NoteCut &hْl ECx : cut from note + x vblanks ED- NoteDelay EDx : delay note x vblanks EE- PatternDelay EEx : delay pattern x notes EF- Invert Loop EFx : speed ---------------------------------------------------------------------------- John "SHAYERA" Hinge / PARASITE (tm) 1992 Up EAx : add x to volume EB- Fine VolumeSlide Down EBx : subtract x from volume EC- NoteCut ,-J0/.-{A OPSTT.Version!.info,.땻A'!h!h"!݀!@A&H . ʣl$ $ .$$$sA$$$$.$$$$$$$$ $$$$$$$$$$,/j9pр8?`A&@3,0+*2:+=o||x~|1sF,A =x? sys:c/ppmore~|1sF12O5432{APSTT.Effects.txt.info13땻A'!h!h"!݀!@A&H . ʣl$ $ .$$$sA$$$$.$$$$$$$$ $$$$$$$$$$14j9pр8?`A&@315+*2:+=o||x~|1sF1A 8x? sys:c/ppmore~|1sF6&a7@bTfontsp7e8btopaz689p?>=<;:9 x%B 1178:  pNu FED  @ nfl8 0<<< ~~<<<|<lff8ff`0fff 0f0>fff~3fl0f<<vf<~8`fffX,l88888ll````ffffff6fffffcf<<<<<<~<<<<<8p8 |<<<<<|f|fl<v0 ~~~ | <>` f|fxx~x`||ff<0 8<^7HvfnfxfvlffffvpfflfLpflxff0 ft<3r;0llllllo````ffff0<f3|xf~bg`````f6ffff~fffffff`~~~8=V6~0 fffffffffl|ffff fff  0fflf`fffffl`lfff0 ffff`0`ff~<8<<<><<<;|<;>>><`l;;;;;;w<<<<<03~~` ```|<<`0`0pp (08@HPX`hpx (08@HPX`hp8?.x (08@HPX`hpx (08@HPX`hhpx (088v@HPX`hpx (08@HPX`hpxD\b (08@HPX`hhpx (08@A$<A%C topaz.font6@& topaz/11 @AbT topaz.font6B4CHYiblpCD GFED8%? Disk-ValidatorBCEl#G$ #Bv lt "*Nt0҂`r $)( r0Ҫ$)( "*XW%A%j$*XS%BB"*p(jxNB#jr#A nҪt!rҩ `t "*NJg0r#At #B "*N") $)"*Ҫ!$*"*p(j$N$*"*p(jN#A$*"*p(jNҩ%A`J$< rp(j(N"*@&)$0(G" p(jNJf"p(jNrp(j N"*@Jg"p(jNB#j"*#A nL#Atāv#C#A$) m o$) GCF[K" p0(j8N"*ҩ#p"*ҩ#p ") ©Jfr`r#A $)ĩJfr`r#A gJ f$) G " p0(j8N$) "*p0(j$NR") p0(j(N`"*Ҫp0(j,N#j$r#A($n2ҪJg"*ҩ($0"*p8(j$Nrҩ(`"*ҪJg"*Ҫ$0"*p0(j$Nr%A`"*Ҫp0(j,NB$"*ҪJg""*Ҫ$0"*p8(j$Nr%A"*#p,J,g$*,l#B,#j0"),$*R"#A40nBҪ$0"*pD(j$N"*ҩ4$0"*pDCG>7(j$NRR$rҩ4`"*Ҫ#p(J(gz$)("*p<(j$N$)("*p<(j$NR")(p<(j(N"*tf"&*֪x8f&)(g$)(G," p<(j8N``<$) G<" p0(j8N`$$) "*p0IlNtgtvg`$*"*p0(jN#A$$*"*p4(jNҩ$gGT" p0(j4Nrҩ `Jfrp(j NNNq in drive 00Replace volumeis out of range is invalid- bad extension- not directory or filebitmap checksum error`b$)G|" p(j8N``"ҪJCɷnl$)"pIDNN$)"pINN$)G" p(j8N`""0tgvg`N- bad block type- unexpected data block&*ցx8f(JgGx" p(j8N` r%ArN"$)fJfJ f Jg$)G" p(j8NrN- second root block- bad directory&勴8fJ8g*(*؁*0H8g$)G@" p(j8NrN - bad header- bad extension- not directory or filebitmap checksum error`b$)G|" p(j8N``"ҪJHIzXWVUTSRQPONMLKJIl%? TNewcon-HandlerBHJgRRRtԉ#B&< ։#CBBBBBBBBBBBBBBB(zJHgF#E,<܉#FX#FBBBBBBB#pH#pHG. R#GG R#@G" R#AG" #A "<҉#A"<$҉#A BX"<`҉#A\"<t҉#Ap"<҉#A"<҉#AJHl ")`r#AG$ #B&<։#CG( #DTG* #EX`<&x08&)tp(jN")R&t("p(jN"p(jTNNB\BHK`#|drd#Aht#BlBp&)x08#DtJf#Dx"#A|xn$#Al$)ԁv0(t:g vց"`Rlr#Axtn()l&)t/") <(jN#A|BJf t#Bp`")ҩlt0#Br0n$v9n$)r Nҩt0#A`rt/gF#Ap`Rl`Jpf("<\҉ҩx!#i|lrҩx`>t") <(jNJpfJlfr`")l#Al#itx#A|xn($)ԁv0(l$)ԁ(rҩ|`rhord`")h#Ahtdo "<`")d#Ad#i()h&$)`")\ <(jHL(N#AtfF#BpJpf<&)t(") <(jNx&$)") <(j|NJfr#ApJpg&<t" <(jNN"< <(jtN#Ar#Ax n$)ԁv (rҩx`v $)") <(jN")p!$)T") <INJf$)X") <IN")\!x&)t") <(jN")t!t" <(jN <(jN#AxB|B` ")x#p$)v!(Jf$)\") <(jXNR`St")x <(jN`rҩ#A$)v0(Jf ")t0HM7#Bvn*xn"Wz$") <(jNJg BJf bJfrfBJf:rt nFvx?mFƒ#AvSfz#ErftT#BrAfJgt#Br@fJgt#Br fr`r#AtDf*&)g()gSS#DrCf*$)ggRv֩#CrAgtBg vTf&rҩ#A#i#itAg vTfRBr#A n:$)S#B&)ւx08v f x#D` rҩ`rҩ#AHNa($)f#iB`rAf.Jg&tBf#iB#i#i`VrAgJg$)g&)()S#Dr#AnN$)ԁR&)ւt08&)ց()؃v0Hg B` rҩ`Jf #i``Br#A n:tԩ#B&)ւx08v f x#D` rҩ`#i")f#iB`PrBfBJg:tAg vTf&#iBrҩ#A#i`L`#i")f>#iBt#B&)ggHO`S[ש#i`")$)#B#Br#An>$)ԁ&)ւt08&)ցR()؃Hrҩ`")ҩ#A$)&)#B#iv֩#Crl` gB`r#A`r#A#i`r #AB#i$)f v#C`")$)S#Br#AnT$)ԩv0($)ԁR()؂t0Hgt#Brҩ#Atԩ"`")$)&)()gt#B")ҩt0r gt#Brҩ$)ԁrHPܞ0(t fB")gJg#iS#AB#Ar#An$)ԁR&)ւt08#Bvo mr ffr `")$)ԩ(#irҩ#Atԩ"`x")ҩ#irҩ#A")S#A$)ggթ#i#i`")g"$)g#i`X")ggө#i`,")gJgBtl")&)"`r#Aөҩ#A`HQz Q")gȲgt#B")g&gS#ARRtf`")S#A")ggө#irf0$)g8g0Rv֩#Cx#D#i")g2$)g&S#AS#BRvf")fr`r#AJgh$)&)S#C#Cr#An@$)ԁR&)ւt08&)ցR()؃Hrҩ``L")tl.vgxgzg| gN~ g``Sҩ$)ԁr0($)ԩ&)ւ8rҩ`")ҩ#i`$)\") <(jXN`pJo") <(jNB`P")x#p$)x"<҉ <Io&)S"`r=#At#B#Ar#AnL$)ԩv(rҩ$)ԁ"<(tԩ()؂tPHVxة"`")$)") <H V;IN")$<")vK")#Axة#D`FJoSJg|")$)#Bv#Cx#D*)|X#i"#An$)ԁ&)ւt08#BRvn x f")ҩR`Tr#Atn.vց() ؃v0H()ةHRrҩ`r@ҩ$)[&)ւ8rҩ`P")ҩt rҩ&)ց"<8v֩()؃vDHxة&$)") <ItNrҩ$") <IN")#At ԩ#BJfB`#ir#A`JoS")HWOPҩt0#B|`Jgp")fdJf\JfT#i$)#p(#p(#p(&!( 8")! Jn") <(jNB`` JgJ|gJgT")$)#Bv#CBB#Br#An$)ԁ&)ւt08#Bvn x f")ҩR`Tr#Atn.vց() ؃v0H()ةHRrҩ`r@ҩ$)[&)ւ8Rrҩ`P")ҩ$<rҩ&)ցrD8&)Sxة$")& <ItNrҩ$") <IN")#AHXd^tԩ#B`r|m t |f#ir#Atԩ(`Vr#Atn(vց() ؃v0H()؁Hrҩ`r@ҩ|$)(")#At #BB|JoT()&)t") <(jN&)t(") <(jN$)p") <(jXNJnr#AJnpJfhJf`") <(jN") <(jxN#ix&t"*p <(jNN  Xconsole.device timer.device[0 p[ p[0 p[ p` """Jf!")$!( ")BNNqH5Sxd#D zڃ#E"#AnF$) ")Nt0҂&֩8$) ")N#Bt ") N#A tԩ"`NNq&(<8"t0"v "zp"ҩrҩ,܁hrҩ,܁hNNqo") <(jXNJnr#AJnpJfhJf`") <(jN") <(jxN#ix&t"*p <(jNN  Xconsole.device timer.device[0 p[ p[0 p[ p` """Jf!")$!( ")BNNqYZ$uhgfedcba`_^]\[Z"%@ Shell-SegBY[wtԉ#BvL։#CH(<؉#D*<ډ#E,<@܉#Ff"v#C"< <IN#A`$ <(jN"< <IN#A`&JnD"< <IN#A``p") t ghv g`xgT`Jg&")! ")!")!Y dC&)$)G|" <ILNNBr#A$<ԉ#B#i `JmB`2D`* <(jNt f #B` <(jNJgr g t fJgrf^ <(jNr#A$)#p( #p(#p(!( $)!($)&0(x08&)!8`bB")! ")!")! <(jN#A ` <(jN#A r g <(jN`")ҩR`\`n")ҩR oNrf&$)!( $)!($)!(&)$)G" Y eV <ILNN`2") tgv g|x"g or <command too longtԉ#BBpt") <(j")$&&08$0("0p0I N&*l$")p (jN` ")$&x&08$0("0p0IN&*l$")p (jN`")$&x&08$0("0im"Њp0IN&*l$")p (jN`")$&&08$0("0p0IHN&*l$")p (jN`j")"0p I,Nvt")p (jN`D")"0p I4N#A#i$Jfr`t")p4IN&*l$")$p$(jN`")"0p0I,N&*l$")p (jN`&<t")p (jN`")p0IN&*l$")p (jN`")"0p I4NJf&<t")p (jN`f")p IN`Vvt")p (jN`B")p0INv$")p (jN`"&<t")p (jN` ")"0tlnvl0xgzg|g4~in5|gBp gtg`gtgvgxgfzg|g6~g`lgt"l6vgxgzg|g~gpg0`,gtRgnvWg0 g g g g gj``RAM DISK`D"#ptf"0 pIN`""0 p(jHN"p(jxN"JfN$v(f "0(` ""0#AtR#B$#jh(#jh,#|0#jx4#jt8#jX(8PL  ` H0$ & NLL@ Nu<H?>KP|x><H&{z(I" Jgg@Sg:etrg4Qg4QAWAgpg65@Qer`P* `* `* `* `* `V* `V5@* 6kCDGr@F`5@* 6kCDGr@F`&* `Z* `Z* `ZtgRgRgv5@|f|gHp 2 2@A@N* `"* `"* `"gSgSgSgSgSgSrgQgQgQA_Ag`B* `* `* `y}=p 2 2@A@Ng4Sg4Sg4Sg4Sg4S1010Q6e|L|Nu* `* `* `* `* `@ `P0pH(hX8xD$dT4t L,l\<|B"bR2r J*jZ:zF&fV6vN.n^>~A!aQ1q I)iY9yE%eU5u M-m]=}C#cS3s K+k[;{G'gW7wO/o_?y~HA)prxAfNuprЁH@fNu/V$ Sf$Nuz`LH.p""OpNTJfOT/,x` ONO" TX YNLz/ TXH,x/ "HPI&I/N WQHPKPKBJf n (g @I<` l*.,R Et TrHAg/N:Jf XT `"@" (Jg E2I!(I fXI*IRQ/ML|vVK &@"|fj"aR$ JSg6RK &@0g2yx52a:($B" ӒS@grf ؁` g"a" $BӒSf`"MYSAe"Q`XNu|g(JgRv gr|gj"a KN`XvRnNJgP oA ~*Q"_Q N. _Jf&nJg ( n%eN"_Nb H3,O OJg PX200` PP20C ."$&,y NаgpO L@NuH Hx`H Hx$.`H Hx`H Hx/H,xCNhJgD,@ѯLXOHzXHx/Hy oHz /ANuO/"N,xNbLHNuA4,yprNL,_XOLHpNu!yU You need reqtools.libraryFre A 0Nu  * 5unable to open fileerror reading fileout of memoryencrypted fileincorrect passwordunknown PP data headerempty fileunknown error occured PPMMf fQP/:NuNUHH?:I&C$HHPB-p+@ JC`fA`"$<,l N*Jf.J-gp`BA`"HJfS C4f|`"tv,l N"vN(Jf~`"A$vN~ -PP20g#gf Rf~`"A$v,lyI> NUg.-` Jgp0-/HmNPOH`p0-"Cp,lNHJf~`X~ "A$v,l N"tvN"A$vNYg.-` -+@,P`R Rf~ "tv,l N`0- @PPf("A$v,l N-Jg-Jf~`~+D, "-T,xN:&@ f~`"$v,l N"$ &Nְft"NJgXp fYA,lN/@, B "/,N BC/I,/ -P,lEN$_&o, o,!|PPMM!H m\ mX p`"K ,xN..-",l N L\N]Nu.ppH./,/&oJf. SNf p'@ p`XyR +rfp`FAJ `> +RJf SN'@A8 ` SNg BA. `p'@ pLNuIncorrect!Please verifyError! Restart/ &H g kD"HN k<"HN"KN&_NuNUH0.&HHpK"<N$@ fp`x | z -JgSgUgSg`| z x `| z ` | z `z | 4 5@ 5@ 5@5|p"5A "5A "5ABj5|5|5|,5A "5AL%K%mzHE(rf(Jgz@"JjV%A@"JjV%AH"AN%@e.,l(JlLf aLA` a|LA`/"H~>e.a _)OT/)H,z~ ,|eLѬ, ,gBH @ ,/ ,4/ ,P0ЎGX/ ,,0/NOLyJfX`jJlLfH*HK8e*l8xCv6,&(0HpCHEH0g^@feRdHEM gSd ,M&$ Sdrpd2U04Ce(:>`9E"9G$Lh`N lLfHy 5a*HK8e*l8xCv6,&(0Hp0gd@f1HfedLEM gSd ,M&$ Sdrpd2U04Ce(9C"9A$`Lh`H*HK8e*l8xCv6,&(0Hp0gr@bC×òf1HfeܳdNEM gSd ,M&$ Sdrp@d2U04Ce(9C"9A$`|Lh@pf|0<aR lLgFH,l(B[B^SFf<,&&l<,l(C~JlLf a(L@`aL@`B[SFf<,&&l&l<,l(<,y 5&8SDB[B^Q&l<,l("H.JlLfa`:a(`4,l(0S@B[B^SFf<,&&l<,l(Q."HJlLf ahL@`^a`p0,&e(&l<<,&8SDB[Q&l<"H/>a.`&0S@B[SFf<,&&l"Ha.(Jga4`rpabpe4$p e HB2paDHBpra:Q` [B0<2a(4,$2,"SApe|d pa r` 04 arp`04 ap24 a8eapgRd.t&,8S@Q, AX"lP,I",8e .lTp`/,xN,_"ቂ, 0L~NuH*l8*<$lDt4, SGy  vSdTpH((؅Ѐr2HHA22Jg(&"mBdFeBBA7="5HAHRQ‘L Nu/ *l8$lDt4, SGd2pH"2g"&"mBdFeBBA7=%RQƑ‘*_Nu/ *l8$lDt4, SGd.pH"2g&"mBdFeBBA7%RQʑ‘*_Nu"$peYHB2pa HBpraQ`S0<a rpa~NuS@dH,ze@H$H,lPAX"N </,xN,_M)NPe .lTp`BMXLQNu/X/,xN:JfXO` @ ,_Nu g/ !,xN.,_Nu*y ?bK |8 F26>BTn v 8d.pH"2g&"mBdFeBBA7%RQʑ‘*_Nu"$peYHB2pa HBpraQ`S0<a rpa~NuS@dH,ze@H$H,lPAX"N </,xN,_M)NPe .lTp`BMXLQNu/X/,xN:JfXO` @ ,_Nu g/ !,xN.,_Nu* ;"9%Cmathtrans.libraryx=l%^/@: J! ,Lmathtrans.librarymathtrans 33.8 (11 Sep 1986) "d\#Nu ! &b\$zJn f2"N Q"i"!I"Np0.n/,yN.,_ 9NupNu.f0Rn n f #BHyN$P# NupNupSn f .gap/Jn f/9N`RX Numathffp.librarya<Nug`kH dR HA2<(*,< < `(؄*⎚[Zc gRHALpNu.JN`/ "< N"N",*y N*"<@NmR "<ANnbx <@"N"<@N"<BN&a"<N*a>$`,( "<No "N&$a$`$Jf6Jg "<@N"<@N$"Nj N$`^"Nk0JjHg <@"N"<@N$`2 N$`& Jf $<A`$<@"N"N$.JNDL |Nu VH@^XTP Nn&lH.rNHLNuH,.rNHLNuA.`A6`A>`AF`AN`AV`A^`Af`An`Av).`A`~A`tA`jA``A `VA`LAH./rN _ LNuA4`$A`An`A&`A`A`A`A`A`A`dA`\A`6A`.A`DA`.NnXDxB΄,<CNn,.Nf$(< .BJkFD c~䯾o$`D c~DDl`z, Nud& |g ~f Jf` GJgJ~` ff`O~<`~`xBJg.jD< bHF܆[Jj dRNu!T3~SUU? x\>??z,W}bGX@U @ @ MC68343 FLOATING POINT FIRMWARE(C) COPYRIGHT 1981 BY MOTOROLA INC./,y"oNb,_Nu/,yN,_Nu/,y"o / N,_Nu(bHF܆[Jj dRNu!T3~SUU? M8%Cw icon.libraryx  :w )<pNuJ" F+Hicon.libraryicon 34.2 (22 Jun 1988) .XHD&4BP "+dos.libraryRn  NupSn f .gaNuJn f4/.*"N Q"i"!I"Npr0.2.Ё/,n"N.,_ `pNupNu/ $@%H*%N"CzNh%@&fH.< ,xNL`p`#"#& $_Nu//NdFPNuH/NO NuH/N$ONuH/NO Nu//NVPNu//NPNu/NXNuH/NONu//NhPNu//NPNuHNPNuHNdPNuHNPNu/,o/,n"N,_"@#o ,_Nu |xtplhd`\XTPL VH:,:H<&/(/$/// /N*Pg$////NJOfvz//NzP LH0 $/&/$op" g^Hx/ //N OgF2*HpҀ0*HN@"0*HN@//* //N OgL NuH0 $/&/$o`@Hx/ //NJOg0*HHЀЀ//*//NJOg $j fp`pL NuH< $/&/(/ J$ gwg/<Hx//N/@4OgHx//(//NJOgv o$:(Hpڀ"0(HN@*$o$"0*HN@*$o$Hx///N%@ /$o8/* //NJO g /$`pL $/&/ (/$|`/<Hx//N/@8OgJf,/(`%o( Hx//,//NJOgl o((HHڅڅ$o(Hx///N%@ o8JOg6/$o,/*//NJOg$o( o(/h (J(fP `pL|Nu "Rz,"fHVPd5%wNVH8 $.&. /N$@( Xg|HjHn//N$JOf/ /NP`RAC`p "Qn=%nH%n\%nT%nX%nL%n%nJLg jL!J `pLN^NuNVH ".$. n=|=|C`Ep $Q-h\h=-hT-hX-hL-hH-h-hHn//NO LN^NuNVH<<$. . $n&|&<I/HnN,HyHnN8HxHnN*Ofx`tHxN/ //NJOgZ RfR jfHBBJBgJ/<Hx/./N(OgHx8*DHU/c]`+/NJOg%DB*DHmNX, gF/,//./N(pOg)D/,//./N(pOg`D/,//./N(pOg)D/,//./N(pOgb)DJfJ2gRHxHn//NJOg8/</././N%@2Og/./*2//NJOgJ6gHxHn//NJOg/</././N(@( Og%L6`PHxHn//NJOgB/././N(Og/.///NJOglYXpmJFgHHxHn//NJOg@B/././N%@F_Og$/./*F//NJOgx/NX`x` L<8$.&. $nx(|BHxN*PfHxg/N`x` ,*//N,Hy/N8Hx/N&Ogr2*p€pfBHxN/ //N(OgJBgHx8/*B//N(Og*g2/*//N(O gX/*//N(O f4`>/*//Nz(O g&/*//Nz(O gJfJ2g@/*2NR-@HxHn//N(Og/./*2//N(OgJ6gt&j6r-A`XXJfHxHn//N(Og&j6`:Z/NR-@HxHn//N(Og^/.///N(OgJXJfJFg>/*FNR-@HxHn//N(Og/./*F//N(Og/NXHx/N%FP L|N^Nu/ o E` /N0X/ N\ XgfJg /N0X$_Nu / oHh/NPNuH0 $//<HxN$@& PgLHjNHj/NNJO fHx/ NP`Hx/ Hj/NJOg `pL NuH / $o$/SRn/ /NNJPfp`SR"j 0H#0H#pLNuH8 $/&//<Hx^N(PgX rNЁ$@Hj N/ /NNJO g6Hx^// /NbJOg / ///NVJOf / /Nx``Hx^/NxP LNu/$/"/ pNҀ//NFP$NuH80$o$//N&( Xg(` /// NHJO f =f `&Z fpL NuH<$/&//N*X`LHx|/N(Pg ` /NXf///NHJO ft `Jg$R`tJfpL 6    nb2 "@pf .info.infocopy 5WF copy of of of copy %ld of ) opJWFNu o /g fS Nup`LfNuLJfS`L / Sm fJfpNupnpNuL / JgSn`SaNuL / Sm fSoB`Nu< n2ABAHA HA0 2B@H@Nu B@H@HABA"BtҁрnRAQNu/$ B$HBHAЂH@B@ $Nu/$"a$Nu/$"a $Nu/$lD"pJlDF @an4gD$Nu/ @p$lDF"lDF @aH$gD $NuH:&o oCE,yNL\NuNu o XB @kp!HNuH ,yL NL@Nu/,y"/N,_NuH0,yLNL@ NuH0,yLNL@ Nu 6R/,yLN:,_Nu/,y"o / N.,_Nu/,y oN,_Nu/,yLN ,_Nu/,y oN,_Nu4H`/$"a$Nu/$"a $Nu/$lD"pJlDF @an4gD$Nu/ @p$lDF"lDF @aH$gD $NuH:&o oCE,yNL\NuNu o XB4,{;b reqtools.libraryxFM@BpNureqtools.libraryreqtools 37.556 (15.9.91) J2x% x %,>Ldos.libraryintuition.librarygraphics.librarygadtools.libraryutility.libraryH I$(*@+H&CNh)@+@*CNh)@+@.B6 @p#hdCNh+@:CNh+@6CVNh)@ +@2 LpNuRn " NupSn f."fNuH *N,xJm g "p`J$-&"MN"m*Nb"m.Nb"m6 g Nb"m:Nb"m2Nb"Mp0-ٓmN. LpNupNuHVh :x^p>6GTn`0H v`H vBpE `PasswordH v( NLNuH82pHA2GE&,xNL$ "Opv( NOLLNuNu%ldH v( NLNu/NuH0Cprtv,n*NL@ NuH<*HEBE(S&HCBCp@ef"`"BAHA "HABA҃ځR`L+Fp+@`2+Fp+@`&pgpf(`pfJf m B`%FAxNH&@ f+D&pg)GZ+BRpg %j4"5A>5|pA4%H5| gp`p H@"*A@+A+||A0/-/*("HANMrPO%@(f p Ja `$o@/ j(C6,l$E2N$_HmJHmN/*(/@HNO j(+h( j("h(MX/N8 N ^ j("h(p0),-/@4rg,G4rnG6 m JgJfG++Kt`&G/ "Kp m GN `&_ -ѭ -rNPJ%@Jf p Ja `$o@ - j"H+H/I(/ "K m &o,N $&_ m "KN . o("jN F|xz&m`$ j+PA,l(N'Xo(RXm+D* rFЁH]"&JtWDHH+A:J:f&G/ "Kp mtGN ~&_ -rLNSѭ -rNOd%@ Jf p Ja `$o@ -" j "H+Ir,NS+I| -rNS+I+H/I(/ "K mt&o,N &_ o("j N B|z&m`& j +PA,l(NrЁ'XѭRXm&m f mGV`GX+K./<,/4 І"V*-&/@0/A,tgbX$劔(v؃JgB$ԇ؂/ ACGVN f&_AV+HA,l(N"PtЂH>o*pZЀl8*`4$\&R "-NRtrЁ"ҁ҂Ҁ(ZHB -:f"҆؁+FR -:f"-$&-ԃoE`B*"-6o*+E&"-2o(JfV Ї"U&m -$&3(,HFH"ro".Q"Q$& m"K -r,l$N|`.JjR m %A|&mz+m|`A"Kp"Q"o@ i 'P pfRkA"mr "Q"-F m1A"-R1A "m"1X1A!K $H"m"1X5A"T5A&"-$Sft5B&"o@#Jr2*&"o@f)f o'o8#JJf#JRXp,ѭm*`.JjRp+@",-& ;@ ;@*-Jf. -"jR"D;A /4jR"DҀүJjR/-J/-N///@,l,OE &Ox*H*,$gnjxDv.50 10H@B@"NI'0HG%0Q.< m "҇HA$*҇HB&*҇HCN ђ 2 +Ѫ +ѪڄfOL|Nug %fg %gX` NuH2r&&JfE$`E,`H2E,xNLLNuNuR fRNuR |fRNu<|`< "g fB("`NuProceedH:,l$AE˙NL\Nu/ pJfHB ),xNLBȕ/ N"_ g$_NuH0 o $oC&hNL NuH1./ r$ā"vƒ҂Ҁ LNuNUH 2&m$m +cX k0/Hp,l,N/a/@ op,l,N.aXO$/]DHH&mJg p$r&`p$r&` p$ m LLN]Nu/ $H"g0 A  -Wg*SgSgSf (RҀ`"(`P`P$ `p$$_NuNUH8I.+H A "<NA&@ fp`H& JgUf6E8Jf'JA8'Hp'@z`AC A2"Jf'Jp& LN]NuHide .infoShow .infotopaz.fontDirectory error!diskfont.libraryOk'%s' not found! Create directory ? Ok |Cancel.font/%ld#?Match...info (dir) %ld%-7s %slayers.library0123456789 aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZCouldn't open font!AllClearDisksParentBofldItalicUnderlineCancelPattern:GetNUH0+H m$P`$R"KN@F&J f mBL N]Nu/ &I +JgUg` ` Ka&_Nu/ &I g"Ka Y"@N?&_NuNUH!:I&H+I+K` .+$m 2g*Sg:SgDSg@r gSgSgSg`"JafA8"Gf`A8"Gf` Jfp` 4f>"A$,l0N -lJop`pHm"-p"JAaJVDHH `f G/H"Hp" Ja$&@$S gL o"j N?Jf<&"JN>`"A8"Gf` 5@` @` @ANH&@ fL\N]Nu/ &H` K&P"HN>I f&_NuCNNuNUH3:IIHܑ.+H < N"<N>F$@ fp`p5@5@5@p5@5@5@p 5@5@p@~@| +%@Ug@SgBSgDSgFSgHSgJSgNSgPrgPSgbSgdrgdSgfSgh`j%Fd`d%F8`^%F `X%F`R+F`L%FX`F F ~`>+F`8%Fh`2JOJf\ j+HJfS [+@ m"HBp0*/-r m"o4aXO&@ g, m.j j R p m0mT ma `ކ"mN7`"mN7$m j`,l(Np%@`p%@\%@tJ`gzG"* J$ ,l0N%@`JgZ*g/B/-"m/) NJOJf< *Jop`pA /"* J"o4AaXOJfB` Ja` Jaz`r KCp "Q"K,xN&m -Qg Qg>rgPr g g4e~gg?g`Jg B Ja :` Jap`Pp0+&%@@Ugrr gSgUgSgSg `j#`j#`j#A"kf C'I`'H/ K"j`p,l(NP$_ Ja`B@`pp%@ JCa. o0lR$m%G "&r K+k /H,*g0-@gp`p+@|+ Jg SgBSfpf" m"mfHz~/-N9PO m+H+gJg&m`*gbGP$mA/ / j`"jaPOJgBx&J`0 o0l,$mg k(g  Ja VRXm Ja xf *l"*p$-&-,l(NJ@gbpf<&m KJfS(p:3HgJg Hz/ N9PO/-/ N9 JaVPO` p f o, J"ma`*$m&o,k  Ja pfR + m1@kk +kA2/ &HA&CNN&_A4/ "j`p,l(NP$_ JaDB@` Ja%Gx%ml%mp`< Ja j` <Ax,l(Njp%@|`B@ K&mp0(&Sm l@0;N&:hxb JCa\. *f$m "&r+k p+ Sg2UgSfp m"mf+m m+Hr:f mBf`<*f>$m JJfS.p:2xgJg Hz/ N7>PO/-/ N72PO$m Ja~` *\ m1@ Ja` JCaz`G H0"Kp=A,l$EzNL Jg J"KaF` Ja Ja AHz>/ j`"jaPO` m8C2,HfCp"$ v|N5j`@ mJzWDHH!@zWDHHA%p/ j"j`p,l(NP$_ Ja` *gA2"H KN2Jf J"ma B`Z$mA2"mf Ja h JaF`0-@gA4/ "j`,l(N2$_`0-@0g&$m*gA/ "j`,l(N2$_` m"ma `e Ja p` Ja A2"t,l0N%@ Jg6",l0N..Jg&A "KN1",l0N Ja Ja`$m JaH` p@fV&o0 *"+$v6* "N5 H@H'@"+.o"'A +JjB Ja`p@f JCa6"*$& r8(WDHHǰf0-Hm 0-Hop`p+@fJ Ja`B0-riAf J -LLN]NuH&H~ k&P`+fR&S f LNuNUH00&H$I" A$v|N.X k$P`4*f** g Sf +gA"$* N,@Jg$R f KaL N]NuNUH!2&H$I j "HJfS. /HJ *PmTop`*+g *gp`+f * gp`pLLN]NuNU\H?2&H+@d K"h,i Cpf"h~) zx$kXX*rct`t/B(cp`p,Bh$H/@$"Jg Sg SgUgd`hHzLHmpN-PO*`V jX/ "HA8GNB&_pfHmHmpN-lPO`(A"HJfS "+0+@lN-d+@h`*/(xAp"HJfS, +(o, j(g.xpf(/$z`*/("kt ,l,Npfzx`"ktp,l,N -d"+,N,"+Ҁ. "+0N,"+Ҁ +hH$l$+,ԇS &"kt"$/$N"kt N"kt N Ы4*"kt +"N"ktAp N.-hJg" +R"kt"N"ktA -lNLLN]NuH&H~`  KaR k~lmLȁdNuNUH0+H~&m$k~JgF k&P g<` +fR&Sm~$m`+fR%KX&S g mmL N]NuNUH?2&H k~ +"(o8"HABAS "(N+. ("(HABAS/@( "/(N+z,`~|A"k`p r$&(z,l(N,LLN]NuNUH0&H"ktp,l,N +"+ҀS/A""kt +$+&/NLH N]NuNUH0&H+I.+,++f A"mfJ/I N %@p"*%@ jL%H:"h(A,H,,&HAC/H/I//// K"mN$PO%@f Jap` jp0(%@ J"ma@Jf* jcA"K"""j,l,N` Jarp`f *2r jN l(%h<P jL,l(NA~"H o p@,xNAt$ j"hVp)r%AJg <`"JN˪L\N]Nu%2ldRed:Green:Blue:CopySwap([{SpreadOkUndoCancelNUH3:I&I$H+@+J`,.* *& ]gSg&SfF Kap` +/@ Ka / `A~"H k +,l,N@ + Kal`p mA~"H kN R k ,l,N,E` r$YAd +*WgSgSg `. + KCaA "H  Ka` +")B KCN8  KaB*` p0*&'@*B. k hV,xN$@ fR <L\N]NuNUH!&H.  KC / AGNȞ&_"kTp,l,N r,N"+ҁ43\H”r 23^Hҫ "kTN"kTApNLHN]NuH12&H.$I k "$*&*,l,NLLNuNUH72.+H m h ,l,N,z&mP m,$H m+H`N r'@ "<N"5@/ m"m"ip,l(NP$_  maSYpѭJj m!G"hT ,l,N"m"iTpNp mШ&&"hTp%"(&tBNLLN]NuH&HA>"H k +,l,N@ K*xaLHNuH&HpkJf"kL,l(N kP,l$NvJg +2r kN k,l(N +g "@,l,N +g "@,l,N"KN LHNuNUH0&H$I/+/- +"+" kT"JN L N]NuNUxH?2H$m.* /@@/ jLC,l$EN$_A"C/ //*L/@HN0O *""* jL"h(t4)&/<ԃ*V$G/@8/A4/B0` rNDrЁ&AԷe -刐.,p:܀ l|@+F r $AC r!v,l$N| -刐ACr N| T%@&,* *ЀrC1xC1.G/A$+H`N rSЁ"*&҆$v +ʱԃ////, K"mNTO r @1A1Aگ$+@pPЀmz܄R,mpЯ<"/0Ҁ J((X.|C6&IzM>/A$/I,/N(`Nf m (VЯ<"剒 /$ЄЁ. V///5X 5X" K"mNO R,X+@(e "/<Ё$/$Ԁ,+F~ mX&H$mA\ JjR*+H` /@rЁ"T$-Ԕv m&(S/// K"mN,O A"@#H"r 5A5|#m3|3AR m"(V҅܁,rӭ+@pm| ЅЄЯ<,T&m 7@".- 7@ '|p&'|*|%'m6 + 7@ +7@ +f "D,)cJjR7A DJjR7@A/H$/ +"kL,l$$kN$_ o$,l(N4'@g&m K"h,i2!NT/N$/H0"Np,l,N"o$ o0 hN~G$o0,/@(/8` SJfS/H0"o$ ,l,N /0r N r Ё"- mҨT"o$N"o$ S /0N0*\HY2*`HP m$(V///8//"- o4N  manOR m (VЅѭX,pmR m (&U$o$//4/HxHx&r! JANR m (&U.//DHxHxrO JAN0O~&m`L"J ,l,N0+H2+H4+H6+HւS4+H/C46+HւS"J$/4NR-sA, mm&o,E`/ m"KaXO,X(e/ m h"mp",l(NJ$_ m (a/ m"m"ip,l(NP$_pLLN]NuH&H., gJgJg K,l$N` K,l(NLHNuNUH:II&H+I l,0(r$AeTC, I,l,N @Cp,l(N&0-H2-HR$0-H2-HR m p0+L.r΁`6p0($r2("m"+Lf $p0+L.r΁g Ѐ"0+ Hl0+ H$$m0+Hl0+H$Jfr L\N]NuNUH2&mH m$P - f" g`" f0|"P i$h m1|." fV" g " .>Rg&j.`F&@ g, K,l(N&@ fN&@ fp`. m1|.`,l(N.&@ fp` m m!K LLN]NuH2&H$I k$"h~)po.|p*` k ,l,N4Rm LLNuNUH0&H$I.,*-(- & 7@ 7@ 7@ 7@ -7@& L N]NuNUH/&H.,*-(- "K -,l,N R"҄$S/@/A ""KN Ѕ"S/@(/A, ""KN "K /,"N /(U"R/@(/A,"KN / U/@ ""K /(N "K -N"K /("N"K "N ""K N "K /"/,N"K /"/ N LHN]NuH30&H$I.,0*H2*/2H4*H6* H//// KaO5|L NuNUH32&H$I., " K"Ja5| -g @JfSp"m 0)"/AN2*HJjR0*HЁr2)4* H”RJjRr2)6*Hցւ""K,l,N"KpN"K m /NLLN]NuNUH2&I+H m,l,N$@ g*g* g$K`$n m 1jj,l,N$@ gp0* m p0* m LLN]NuH2&H$I k.,l(N0|/ "J$H KN$_LLNu/X/,xN:JfXO` @ ,_Nu g/ !,xN.,_NuNUH/2&H.+I|",l0N.zF`t"$ ,l0N0XDEJf A"Jf JJfS/H ",l0N.( / "RA"Jf"ҀA$HJgp/`p:",l0N.RJfrVDHHABA"mfLLN]NuRAMaaf (fpNucpNupNuHx<$(<~`za ggHDm np`pgpLNuH $A J"B8<g$OaLNuJf(RDpNuSDf .Jp`Jgg oNAagRDpNuJgHaLfJf`HaLfrrJg fRA fSAl`@@N```2`````f`h````rrJg~ fRA fSAl`hHaRgP`DLrg` fRA1@# fSAkLJAf f``Pr`rg*Jg& g g$ -fRH(ecJg fJg`JfJg f`HrgP fRA` fSAlEaf*Laf LaJgg/I`L`lL`]*~[]#?()|%'Ap WNuRJ<`pH>8 AJf R&O(OB$$A"BxtzafD;@N Jfhr~`2`.``l`*`R`$`V```agS<'` f|` ftxSonadg` fp` fpRSoL` ?gVxSo:`x ~f<RSo"g 'fg` ]f<`Jgx .KL|Nu2ѭ`#"o o / "`gSd`BSd Nu"o o JfSfNuH0$&HBHCCHBBBЂL NuJjDJj Da DNuaDDNuJj DaDNu/HA4f"H@HAHB4g0H@40HB2$Nu/v AdQC AdYC A dUCJAkSC4HBBBHC604HAdSCЁdr2HCH@A&$Nu!".*& |H48@DVp TzJVGLDb3<*M  yUU  P  p|A JJJ J&J,J2J:J>JDP(   vbN@Bcc 3 3cc4d``00``8`s>???~???|A JJJ J&J,J2J:J>JDP(   vbN@Bcc 3 3cc"Ԩ?e info.libraryxiI5&[6Vw (E< Q5JҀ" &info V1.3 &nP6##"@#H"#Nu "/NXNu/NxXNu/NXNu/ /NPNuinfo.library~zvrnhZJ>82.*& o(Rh ӺMNuH $o NJj c*Np`<$9/ Np0*r2*Ё/" p0*/N8N O LNu oSh f(g /NX`pNub@.h8H $/ /$|Jg /NXJ$g/9$NHXJgHx/NPJPg /9PNXJHg /9HNXJLg /9LNXJTg /9TNXLNuH8 /$|(&|\(|,/<Hx/N$O fp`` R("RA,#0"RAX#L"RA&"RA#d $"RA#`"RA#4"RA#8"RA#<"RA#@"RA4#P"RA`#D"RA#H"RA#"RA#"RA#"RA# "RA@#"RAL#"RAX#T"RA#XHx /9HyN$Hx /9HyN$"T |p "Q"y0 |p "Q"y0""T"P"yL |p "Q"yL#S""S |p"Q"S"`"S#yd"y4 |pp "Q"y8 |p "Q"y< |Dp "Q"y@ |p "Q"yP |p "Q"yD |p "Q"yH |p "}yKQ#.#B"yT |

` R/(@HnNPv/HnN$ByhJPf R (=f R hL$(3h L N^NuNVH8<&.$. &|d(|\(<X/<Hx$ٹH/N#`O f`/<Hx/N(O f`"D Q (=f/9`/NL0Pf`Jg//N00Pf`h$THj SHhtN$S*D U/(HNhR%@d S dO l S!|d$S/< S/(d/N%@` SJ`O fp`,*D$U/*H S/(`N S"U!ih S"T!itppPL<lN^NuNVH 8 . B$|(|$BBTBHBLBP#XNJf`&/<HxHnN#dO fBHnHx`HnN8JXf BHnHx`hN&@$ f/ `HyDN4(Xf / HnHx`://+2NJPg/ N/#HnNJXPf/ HnHxNO `lN2$g/HnNJPf`JyhfJg /NX/ NHn/ NB/ NHn/ N/ HnBNO(LN^Nu@O@rH"|nfPHvbZR6"th\PD8, vnd\E7RJ*" < 0&t ^N4jZ0::B0B|h([dos.libraryicon.libraryintuition.librarygraphics.librarydisk.infonNVH0 $|Bn=| =|\=|||-|D-|o-y0B-JBB=|=|2=|\=|=|HnND$Xg/ v//NO L N^NuH0$o "/&|d j0(&m @n @0;N$ ݢHrx::::V:/9 SHhtN`// N`/9 S/(``"S yL h" (r#@h`p`/9HypN>JPf"Sp#@/ N\pX`\/*,Np`/*,NL`/9 S h/( N"Sp#@`//*,N` //*,NpP`pL Nu/ "o$o yd"(p0*& @mH @nB@0;N $(8888888,04p`p`p`p` p`p `p@ yd!Ap/),NX$_NuNVH88$nt&|X(|d&<Hx` THPHyN$x/x/HxHx THP/*,N S (=O$g S ( ڸ=f S"T!ihNzJft/9 T/(`N T/(` S/(HN>JOfdB T/(`NhX/N (PfBHxN (P T/(`NhX// SHhN T/(`/N S!DHO S (=g6Hy S/(@HyHnNBHnNJOft` S (=fHy` S/(@HnNP/HnN0Pft S (=gr/9 S/(@NhJPft T/(p S/(@NJPftHy* S/(@Hy$HnN T"(pp€/HnNJOft LN^NuH0 $/$|v//94/NrO f`Lv//98/NrO ժ0 f`2v//9Zx^vR<.  R|N.BTDrlP\Info release 1.31%s%s.infoDisk%s%s.infoNAMETYPESTATUSL topaz.font`topaz.fontV !! ""            X`ADDXxDELD SAVE D QUIT / l䦷 $ 8 # L# dP  |P   + 7 C  HfIP  zVN"plXT  XD6H <$o&||(|$<` *2 yXp(= @m @n@0;N ,HyHx,HxZHx/ NHyHx6HxHx/ NHy Hx?HxFHx/ NHyHxHHxFHx/ NHy*HxQHxFHx/ NHy6HxZHxFHx/ NHyFHxrHxHx/ N*B U/( Hx?HxHx/ N U/(HxHHxHx/ N U ( /HxQHxHx/ N U/(HxZHxZHx/ N yX/(@HxHxZHx/ N/ NHyTHxHxHx/ N U"(OpPn(lpQgpRf` |`` |j` |v` |/Hx6Hx`HyHx,HxZHx/ N yX/(@HxHxZHx/ NHyHxrHx2Hx/ N/ NH/ NHyHxHxHx/ NOX`HyHx,HxZHx/ NHyHx6HxHx/ NHyHx?HxFHx/ NHyHxHHxFHx/ NHyHxrHx2Hx/ NHyHxZHxHx/ N yX/(@HxHxZHx/ N y\/(|Hx?HxHx/ N y\/(HxHHxHx/ N/ NH/ N/ NHyHxHxHx/ NO`HyHx,HxZHx/ NHyHx6HxHx/ NHyHx?HxFHx/ NHyHxHHxFHx/ NHyHxrHx2Hx/ NHyHxZHxHx/ NHyHxHxHx/ N yX/(@HxHxZHx/ N y\/(|Hx?HxHx/ N y\/(HxHHxHx/ N/ NH/ N/ N Hy$HxHxHx/ N/ NO`Hy0Hx,HxZHx/ N yX/(@HxHxZHx/ NHy8HxrHx2Hx/ N/ NH/ NHy@Hx`\HyLHx,HxZHx/ NOL<NuNVH08$.&. $|d&|C<(|/<Hx,/N#h/<Hx$/N#l/< R/(d/N#/< R/(d/N#JhO0gJlgJgJfp`/<Hx,/N#/<Hx$/N#/<Hxt/N#/<Hxt/N(JO0gJg JgJf` yXp(= @m @n@0;N VVHx R/(d/9/9HxHxlHx/9l/9h R/(`/NT/NO0`.BHxP//9HxHxlHx/9/9 RHht/NT/Nl/NO4`/N/NBHxP//9HxHxlHx/9ӈ/9 RHht/NT/NlO8`/N/NBHxP//9HxHxlHx/9/9 RHht/NTHx R/(d/9/9HxHxHx/9l/9h R/(`/NT/NlOdL N^NuH0$/ ydJhf y`B` yd/(hHyT/9`NO v//9L/NrO fp`L NuH0 $/$| yX (=g0 yD1|v yH1|} yT1|w yX1|wv//9D/NrO f`Lv//9H/NrO f`2v//9T/NrO f`v//9X/NrO fp`pL Nuܙ*"r#rLxbL.pZD&n~hR$F d6h (> j ^  ;P\D8l8JPf>nPDt:xV&떡Iel\ L*VDiskSIZENumber of BlocksNumber UsedNumber FreeBytes per BlockDEFAULT TOOLTOOL TYPESRead OnlyValidatingRead/WriteI'm not sureDrawerCOMMENTTOOL TYPESToolSIZEin bytesin blocksCOMMENTSTACKTOOL TYPESProjectSIZEin bytesin blocksCOMMENTSTACKDEFAULT TOOLTOOL TYPESGarbageCOMMENTTOOL TYPESDevice%ldH8 $o$/vx jV(/*VN Xu{gv//NVJPgJf /NXv`pLNuH0 $o$/&*, *rn6l*r@g f&`// NP`"/ Np`/NX/ NpXL Nu/ $o/ N/ N/ N yX (=O g / NXB/ /*>NXHx/ NO$_NuH0 $/$| yd&(ppƀ Hy r/B/NHy r/Hx/NHy r/Hx/NHy r/Hx/NO@L NuNVH>&.. .<<=|>|(|4|@|LJgxz/.Hy0Hy*`BzHy&B(///4N,/HypN v// / NrOfp`B/ /+>NXpO L Y;]NuH $o /$///*2NB/*2N"/0p ///,"/4///*2NO$LNu tRF%ldwH 0$o$/&|d yX (=g"<`"< S hC S hgBHxHx/9/9HxI/Hx/9 /9 S h/( / NTO,`, P//HxHxB/ N.B/ /*>NXO$JgB/ /9N(O L NuH08$/p&|d$S/<Hx/Ng(%@ SJO fp` S"h$S jA" S"h$S j#H SB yXJ\gd yX(h\`T/<Hx/N$@& O f`/<Hx/N%@ //* N/ $S/*NlXOJf S"S$i!RL NuH0$o &|d"S i  Sg"S i ( S h감f$N/*.N0B/ /*>NXO`>/9 S h/( N/9/ Nt"S S h#hB/ NOL NuH0$o &|d"S i ( Sg"S iA  S h감f$N/*.N0B/ /*>NXO`NXOL NuH><&<d(|X"C QJf`>"C Q hE Q h감f TB\`/93*C$U j/( Nx U h&PP`R&SJf$T/</N %@\Pfp`/$T/*\ THhNx*C U h&PO `/+ Nh*Xfz$T, F$*\$H/</N %(Pf`/$T$ B *\/0 THhN/+ $T$ B *\/0NR*C U hOg &S g"C Q hE Q h감f^pL<|Nu 6*zZz(8^TVtNb3lV2>bLR h 0@@??a{a ??? ?@@ H:&o oCE,yNL\NuNu(H ,yTL NL@Nu/,yT"/N,_NuH ,yTL NL@NuH ,yTL NL@NuH ,yTL  hNLL@NuH ,yTL NFL@Nu 6RnE/,yN|,_Nu/,yNv,_Nu/,yLN:,_Nu/,y"o / N.,_NuH",yL NLDNu/,yLN ,_Nu/,y"oN,_Nu/,y"oN,_Nu/,y /N,_Nu/,y oN,_Nu/,y"oN,_Nu/,y"oNb,_Nu/,y"o / N,_Nu $<Vp GgJGka` Gg"JPk1|t > GxNgJGka` Gg "JPk.Nu/ n$C1|T > GgJGkal` Gg""JPk1|T" > GgJGkaF` Gg""JPk1|t > GgJGka ` Gg "JPk.Nu/ n$C1|T > GgJGka` Gg""JPk1|T( > GgJGka` Gg""JPk1|t > GgJGka` Gg "JPk.Nu/ n$C1|T > GgJGkal` Gg""JPk1|T# > GgJGkaF` Gg""JPk1|t > GgJGka ` Gg "JPk.Nu/ n$C1|T > GgJGka` Gg""JPk1|T > GgJGka` G1g""JPk1|t > GgJGka` Gg "JPk.Nu/ n$C1|T > GgJGkal` Gg""JPk1| > GgJGkaF` Gg/JPk1| > GgJGka"` Gg"JPk1| JPk1|t > GgJGka` Gg "JPk1| > GgJGka` Gg"JPk.Nu/ n$Cp1@0(@gNuJPk1| > GgJGka` Gg"JPkB.NuNu@NuH?<<><0GH@HB8F@BBDGmBBmfJg` 2GmfJg "` ` JfJf @rH@LNu`GmfJg "``:GfJfJfJfJf``|a`@ @BfJfJf`BCGaBCG`B BG?Gh`ZH@HB.| GBHD8"DHB8HA0BAHB:HC<HC>HGFHGBFHF݅dSD҃т?B,HBhBD HBH@HA0BA`,8HA0BAHB:HC<HC>HGFHGBFHF݅dSD҃тeSD҃т?,HBhBD HBH@HA0`,8HA0BAHB:HC<HC>HGFHGBFHF݅d DЂeSDЂ?HBhx`,8HA0BAHB:HC<HC>HGFHGBFHF݅dD?" H@HA( :HD`pNupNuJk*JjJfJfJf ЀfpNuknԶefpNuJskfJfJfЀfpNukneknpNuBmfJg`ĴGmfJg "`JfJg`fJg "`JfJf`|H?<<0|>H@HB8F@BBDGlGl:Gf4JfJf`al`(JfJf`BCGaTBCG``@ @BgԿBBE?GiH@HB.f.f(2><HBH@ކHAGBGHGчHA``PGBH@2HCH@<҆BAHA,H@HBӃ>HB6҃BуHFކHAGBGHGчHA`j`G@.fB&`GBH@HB><ކBGHGHAHCH@HB<BFHFކ<BFHFކ,H@HB҇҃>HB6҃BуHFEކHAGBGHGчHA` l0H@HA0BAEl`bv lPCH@J@fXCt;BH@$纳B@KCmH@EDH@LNuDEM$ꩱH@@H@LNuDEME E9o `2B@H@HAEnE$ꩱH@@H@LNuJEl`fEmH@EHl @H@LNu`ЀefJgpNuJg pNugpNuBNuBaBNuH?0|2|H@HB<<> 8F@:G@BBBBGfIf Bm .f .g "`Dgp`jJEf>H@f$Jf HBf JfF` "H@@@H@LNuHBfJfH@@@H@LNuHHHH@HBR Dg f fLNujD@8``҃т m H Ee`H@EDH@LNunBCFGIg(JGf4HBfJf @@H@LNuփՂJEfH@ҁр`JfJf`|`HHBHH@EFGGE ҁрHo0 G o G4o><4&tG tDfX`Ho 6HCBBHBHDf8,҃тHgHH@EId DH@LNu`,gHH@EDH@LNuH@HDz lH@HA0BAE mBD lPDH@J@fXD|C1FH@,龳F@LDH@HDNu l0H@HA0BAEl`^v  )lPCH@J@fXCt;BH@$纳B@KCm H@EDH@NuDEM$ꩱH@@H@NuH<xrJg.j8<D d:fB 2 m$j0, . n%eN$-("MN"m$Nb"M0-mN. ,ML Nu"NuN`pNH瀀ЀЀgn @ Hf`( explg" ed efL xplofD de.lf< ibrag`2 ode.f* librf" aryf @H~K 6(OaD6L~LJNuSn *_6(Oa&"l0X6/I<,y n%eNLNu/ AT)XC ""@@@2@A]8)UB,A,C$"""A$CrjPtJjSB2QACr0YQ _E)J0pR@"ҁҁ$Af9@4Sl4<>"l0SGoqk "QQX,I )Q($NSF>"l0SGk "QQX )QJ(gY( Iz<>"l0SGk "QQX&Ifa j REl4f`ЀjBfa~ "gصfar <>"l0SGk "QQX& tfaNԚ׳(Sf`"KMHQkbLH `LM Pgtg "Sf`fa`•H&J:4,,f`f ddf dTf dDf d4f d ~`:f f f \~`p~`p~` p~`p~6f df d|4pX`f B`|4p f BSfF|:F>f dC f d:t0P`:t0X4p$j gf FSfRFM*KƻdĽf*JSEkSfJBg SEkSBfSf@A8LoNu<,4RF,y>"l0SGk "QQY N.SFl4d>"l0SGk "QQXBNu  vz~df d|4pX`f B`|4p f BSfF|:F>f dCR.version.libraryxKFFpNuJ" .Nversion.libraryversionlib 34.1 (06 JUL 1988) ,^r "."@#N"#H&NuRn * NupSn f .*gaNuH *N,m"Jm g *p`"$-&"MN"Mrp2-0-ЁN. L`NupNu|jfb^ZVR wmathieeedoubbas.libraryx  4y     d%Cdiskfont.libraryx J9"9E`NJP" 0Pdiskfont.librarydiskfont 34.37 (27 May 1988) HACE" <8NLJg "@#H"NtpNu/ @#,@#Cp/,yN,_#gJCrp/,yN,_# gA* XB!H ,_Nu"y/,yNb,_"N0.nH/,yN.,_p`dos.librarygraphics.library "%6 LZJ,/ $n*JgNJjT dnD"J Q"i"!I"*/,yNd,_C6 Qf if Q"i"!ISn($R`$_Jn&f`Jn(nZ"y /,yNb,_"y/,yNb,_/.""N0.nH/,yN.,_"N Q"i"!I NupNuRn& NuSn&f .gNpNu jfb^& zvrn@H/N Nu/NXONuHNPNu/ N@XNu0$ KjNVH>8 n$. &.,TUm"FBQJm$H*ڂgn y (h`\"l x`RDJfp0p0r Ёm:"l p&@`XRp0b4%E5lll FRPp (TJfgBHxN (@& Pgv/HyNL-@Pgp/.N-@/ /.N|JO g6Jo.`Hx.HlN~"@& PgHy/ N   F (X "  4  4FONTS:.fontNVH?< .$. z&EBx/N-@HxHxN &O g/N,rVXm/HnNHx.HnN~$@* Og|Hy/ N o"oJig$<:)hl 0HԀ`0Hနp(:p)Ep(<p)FvBD0H2Hg*r) 2Hg 0@ |(` 0@ |0H2Hg*r) 2Hg 0@ |h` 0@ |HCRD DmBy`$< L|NuNVH?8$n JC""/N-@HnN(@&L$ Pg,=kkkHnHnN Pf`Tt/HyNL-@Pf`8/.N-@t//NL-@O gHx/N-@PgHxHn/.N0t BO fp0. fp0.,B/N *Pgh///.N0O fD gHnHnN8P`BDtBC`$0C.H GHpXHnNưDPo84RC0.CbJBm/.N&/N0B.H GHpXN(. GP"$ApO g jfb%D/.HjNAb3%H@*MNHj6N(RjT/ yHh*NP yRh(NtI6O`0/N0H @$HBjX`0H @"HBiJg /NhXJBl//N8P/.NX/.NhX/.N/.Nh$ Pgg / NX LN^NuH| Z N <f|      | \    dfr  ԁUNt"FONTS:  9"o oJfNu o /`RJf//NPNu op`RJfNu"o o`Jfp`g!lp`pNu o/ ` f `RfpNuH0&/ //N @S HX` f `SlpL Nu/$/Hx//N PfHx:/N Pf`R$ $NuEH ,yL NL@ Nu/,y"/N,_NuH0,yLNL@ NuH ,yL NL@Nu/,y"/N,_NuH ,yL NL@NuH ,yL NL@Nu/,y"/N,_Nu/,yN|,_Nu/,y"/Nj,_Nu/,y"/Nd,_Nu/,y"/N.,_Nu  6Rl/,yN|,_Nu/,yNv,_Nu/,yLN:,_Nu/,y"o / N.,_Nu/,yLN ,_Nu$<T/,y  TŗL oN,_Nu/,y "oN,_Nu/,y "oN ,_Nu,"/N,_NuH ,yL NL@NuH ,yL NL@Nu/,y"/N,_Nu/,yN|,_Nu/,y"/Nj,_Nu/,y"/Nd,_Nu/,y"/N.,_Nu  6Rl/,yN|,_Nu/,yNv,_Nu/,yLN:,_Nu/,y"o / N.,_Nu/,yLN ,_Nu$<T/,y !l543210/.-,+*)('&%$#"! =p%C &mathieeedoubtrans.libraryxbQ  J:" 4mathieeedoubtrans.librarymathieeedoubtrans 34.8 (10 Aug 1988) BNuMathIEEE.resourcemathieeedoubbas.library#B#H0 BBpCN#fL NuAv.)f&pCN&g"@$)JgA9`AHCb < GgJGka` G7%g""JPk1|t > GgJGka` Gg "JPk.Nu/ n$C1|T > GgJGkaj` Gg""JPk1|t > GgJGkaD` Gg "JPk.Nu/ n$C1|T > GgJGka` Gg""JPk1|t > GgJGka` Gg "JPk.Nu/ n$C1|T > GgJGka` Gg""JPk1|t > GgJGka` Gg "JPk.Nu/ n$C1|T > GgJGka\` Gg""JPk1|t > GgJGka6` Gg "JPk.Nu/ n$C1|T > GgJGka` Gg""JPk1|t > GgJGka` G GgJGka` Gg""JPk1|t > GgJGka` Gg "JPk.Nu/ n$C1|T > GgJGkaN` Gg""JPk1|t > GgJGka(` Gg "JPk.Nu/ n$C1|T > GgJGka` Gg""JPk1|t > GgJGka` Gg "JPk.Nu/ n$C1|T > GgJGka` Gg""JPk1|t > GgJGkat` Gg "JPk.Nu/ $H/ n$C1|T1 > GgJGka<` Gg""JPk 1|t > GgJGka` Gg "JPk1|t > GgJGka` Gg$$JPk$_.Nu/ n$C1|T > GgJGka` Gg""JPk1|d > GgJGka` Gg JPk.Nu/ n$C1|D > GgJGka`` Gg"JPk1|t > GgJGka<` Gg "JPk.Nu/ n$C1|T > GgJGka` Gg""JPk1|t > GgJGka` Gg "JPk.Nu/ n$C1|T > GgJGka` Gg""JPk1|t > GgJGka` Gg "JPk.Nu/ n$C1|T > GgJGkaT` Gg""JPk1|t > GgJGka.` Gg "JPk.NuHy dHa,0ONuW/ n$C1|T > GgJGka` Gg"" JPk1|T# > GgJGka` Gg""JPk1| JPk1|t > GgJGka` Gg "JPk.NuBNuNUp+@+|?p+@p+@BBA "a1m/- /-A "a1P+A+@+m +mBBA "a1Lf+|TD-+|?!`^B/+A+@+m +mB/&<@N$&N$<@I&&<@N$&N$<@I&nCA "a  (+A+@+m+m/- /-A "a(|+A+@+m+m/</<0tA "a(X+A+@+m+m/- /-A "a((+A+@+m+m/8A "a%+A|+@x+m|+mx/- /-A "a%x+At+@p+mt+mp/<* J/A "a|+A+@+m +m/-/-A "aL+A+@+m +m/< /<8A "a(+A+@+m +m/-/-A "a+A+@+m +m+m+m/<*/8A "a+A+@+m+m/- /-A "aP+A+@+m+m/<* J/nCA "a+Ad+@`+md+m`/- /-A "a+A\+@X+m\+mX+Y0i/</<0tA "a+AT+@P+mT+mP/- /-A "al+AL+@H+mL+mH/Z5A "a+A+@+m+m/-/-A "a+A+@+m+m/</<>A "at+A+@+m+m/-/-A "aD+A+@+m+m/</,y$HB8D6:BkEf J@fJg~B?JDg,HF(HD<xKQgBBB? e܆`,6<HFHFHCCjd6<(DS(DKHCփ,vFFCHBHF4BF&(*NN|HF$& "NNL@|NuNUH0vp+@p+@BBA "a dl"A "@+A+@+m +mv/B/-A "a +A+@+m+m/+m +m`(/- /-A "a4+A+@+m+mSf`&⃔ al+A+@/-/-/- /-a+A+@/-/-A "a+A+@+m+mOg(/- /-A "a+A+@+m+m+m+m`4BBA "an`/-/-/- /-N+A+@O -"-L N]NuHT 't "NuHT't "NuHT't "NuHT't "NuHT1't "tNuHT't "NuHT't "NuHT 't "NuHT't "4NuHT't "NuHy9ǞrɞNʨ\˶jdͦVΰ BNuH@g2HAH@AAAH@@HA0AAA2AA8lBNu Ao<NvH@NuAAH@Nu @H@g2@@@8AAH@" A"NuNU/- /-aP//A "a//a(+A+@P -"-N]NuNU/<:/- 5S-;/-/- /-a+A+@+m+mO -"-N]Nu"o0@Hr2S l p#@p"` I @HPPNuH0,yL NL@ /WPNuA`A`A`A`AH0,yL NL@ /WPJNu/,yN,_NuA`A`/,y /"/ N,_Nu/,y /"/ N,_Nu R9&::!p 0l*690 N X.V;v;;;<HPPNuH0,yL NL@ /WPNuA`A`A`A`AH0,yL NL@ /WPJNu/,yN,_NuA`A`/,y /"/ N,_Nu/,y /"/ N,_Nu R9&::6`7<aysp78n8@A Shell-Startup67E{Prompt "%N.%S> " alias xcopy copy [] clone alias endshell endcli alias ren execute s:dpat rename [] alias clear echo "*E[0;0H*E[J" alias reverse echo "*E[0;0H*E[41;30m*E[J" alias normal echo "*E[0;0H*E[40;31m*E[J" 8b Shell-Startup69:R1q:ab TxEd.Backupuence49qxGcd c: Type Sys:Docs/PSTT1.0.Text SetClock load ;load system time from real time clock (A1000 owners should ;replace the SetClock load with Date resident CLI L:Shell-Seg SYSTEM pure add; activate Shell resident c:Execute pure mount newcon: failat 11 resident c:Resident pure resident c:List pure ;pre-load LIST and CD resident c:CD pure resident c:Assign pure resident c:Makedir pure makedir ram:t assign T: ram:t ;set up T: directory for scripts makedir ram:env ; set up E;5bk5Pb!.infop<=T=@A CLI-Startup6<=`prompt "%S.%N> " 8@A Shell-Startup6>H?Dy~b)Sourcesp?@tϕCBA@{APSTT-CIAPlay.s.info>?A땹A'!h!h"!݀!@A&H . ʣl$ $ .$$$sA$$$$.$$$$$$$$ $$$$$$$$$$?Bh9pр8?`A&@3?Cǀ+*2:+=o||x~|1sF?A *x? sys:c/ppmore~|1sFD4Exwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEbVb:PSTT-CIAPlay.s>DF}sc;************************************************** ;* CIA Interrupt Replayer Version 1 * ;************************************************** ;* ----- PSTTracker V1.x Playroutine ----- * ;* John 'SHAYERA' Hinge / PARASITE * ;************************************************** ; CIA Version 1: ; Call SetCIAInt to install the interrupt server. Then call mt_init ; to initialize the song. Playback starts when the mt_enable flag ; is set to a nonzero vDG`alue. To end the song and turn off all voices, ; call mt_end. At last, call ResetCIAInt to remove the interrupt. ; This playroutine is not very fast, optimized or well commented, ; but all the commands in PSTT1.x should work. ; If it's not good enough, you'll have to change it yourself. ;This routine is based upon the 'FIXED' PT-Play.s ;(Bugfix in TonePortamento Function) ;It should work 100% ;DMAWait value changed to Rasterwait... This should ensure correct ;speed on all processDHʖors ; You can use this routine to play a module. Just remove the semicolons. ; Exit by pressing both mousebuttons. ; ;main BSR.S SetCIAInt ; BSR mt_init ; ST mt_Enable ; MOVE.L 4.W,A6 ; LEA DOSname(PC),A1 ; MOVEQ #0,D0 ; JSR LVOOpenLibrary(A6) ; TST.L D0 ; BEQ.S theend ; MOVE.L D0,A6 ;wloop MOVEQ #10,D1 ; JSR LVODelay(A6) ; BTST #6,$BFE001 ; BNE.S wloop ; BTST #2,$DFF016 ; BNE.S wloop ; MOVE.L A6,A1 ; MOVE.L 4.W,A6 ; JSR LVOCloseLibrary(A6) ;theend BSR mt_end ; BSR ResetCIAInt ; RTSDI,(7 ; ;DOSname dc.b "dos.library",0 ;---- CIA Interrupt ---- AddICRVector = -6 RemICRVector = -12 LVOOpenResource = -498 LVOOpenLibrary = -552 LVOCloseLibrary = -414 LVODelay = -198 ciatalo = $400 ciatahi = $500 ciatblo = $600 ciatbhi = $700 ciacra = $E00 ciacrb = $F00 SetCIAInt MOVEQ #2,D6 LEA $BFD000,A5 MOVE.B #'b',CIAAname+3 SetCIALoop MOVEQ #0,D0 LEA CIAAname(PC),A1 MOVE.L 4.W,A6 JSR LVOOpenResource(A6) MOVE.L D0,CIAAbase BEQ mt_Return LEA GfxName(PC),A1 MOVEQ DJCK#0,D0 JSR LVOOpenLibrary(A6) TST.L D0 BEQ ResetCIAInt MOVE.L D0,A1 MOVE.W 206(A1),D0 ; DisplayFlags BTST #2,D0 ; PAL? BEQ.S WasNTSC MOVE.L #1773447,D7 ; PAL BRA.S sciask WasNTSC MOVE.L #1789773,D7 ; NTSC sciask MOVE.L D7,TimerValue DIVU #125,D7 ; Default to normal 50 Hz timer JSR CloseLibrary(A6) MOVE.L CIAAbase(PC),A6 CMP.W #2,D6 BEQ.S TryTimerA TryTimerB LEA MusicIntServer(PC),A1 MOVEQ #1,D0 ; Bit 1: Timer B JSR AddICRVector(A6) MOVE.L #1,TimerFlag TST.L D0 BNDK 9&E.S CIAError MOVE.L A5,CIAAaddr MOVE.B D7,ciatblo(A5) LSR.W #8,D7 MOVE.B D7,ciatbhi(A5) BSET #0,ciacrb(A5) RTS TryTimerA LEA MusicIntServer(PC),A1 MOVEQ #0,D0 ; Bit 0: Timer A JSR AddICRVector(A6) CLR.L TimerFlag TST.L D0 BNE.S CIAError MOVE.L A5,CIAAaddr MOVE.B D7,ciatalo(A5) LSR.W #8,D7 MOVE.B D7,ciatahi(A5) BSET #0,ciacra(A5) RTS CIAError MOVE.B #'a',CIAAname+3 LEA $BFE001,A5 SUBQ.W #1,D6 BNE SetCIALoop CLR.L CIAAbase RTS ResetCIAInt MOVE.L CIAAbase(PC)DLb,D0 BEQ mt_Return CLR.L CIAAbase MOVE.L D0,A6 MOVE.L CIAAaddr(PC),A5 TST.L TimerFlag BEQ.S ResTimerA BCLR #0,ciacrb(A5) MOVEQ #1,D0 BRA.S RemInt ResTimerA BCLR #0,ciacra(A5) MOVEQ #0,D0 RemInt LEA MusicIntServer(PC),A1 MOVEQ #0,d0 JSR RemICRVector(A6) RTS ;---- Tempo ---- SetTempo MOVE.L CIAAbase(PC),D2 BEQ mt_Return CMP.W #32,D0 BHS.S setemsk MOVEQ #32,D0 setemsk MOVE.W D0,RealTempo MOVE.L TimerValue(PC),D2 DIVU D0,D2 MOVE.L CIAAaddr(PC),A4 MOVE.L TimerFlaDM#a\g(PC),D0 BEQ.S SetTemA MOVE.B D2,ciatblo(A4) LSR.W #8,D2 MOVE.B D2,ciatbhi(A4) RTS SetTemA MOVE.B D2,ciatalo(A4) LSR.W #8,D2 MOVE.B D2,ciatahi(A4) RTS RealTempo dc.w 125 CIAAaddr dc.l 0 CIAAname dc.b "ciaa.resource",0 CIAAbase dc.l 0 TimerFlag dc.l 0 TimerValue dc.l 0 GfxName dc.b "graphics.library",0,0 MusicIntServer dc.l 0,0 dc.b 2,5 ; type, priority dc.l musintname dc.l 0,mt_music musintname dc.b "Protracker MusicInt",0 ;---- Playroutine ---- n_note EQU 0 ; W D Ndn_cmd EQU 2 ; W n_cmdlo EQU 3 ; B n_start EQU 4 ; L n_length EQU 8 ; W n_loopstart EQU 10 ; L n_replen EQU 14 ; W n_period EQU 16 ; W n_finetune EQU 18 ; B n_volume EQU 19 ; B n_dmabit EQU 20 ; W n_toneportdirec EQU 22 ; B n_toneportspeed EQU 23 ; B n_wantedperiod EQU 24 ; W n_vibratocmd EQU 26 ; B n_vibratopos EQU 27 ; B n_tremolocmd EQU 28 ; B n_tremolopos EQU 29 ; B n_wavecontrol EQU 30 ; B n_glissfunk EQU 31 ; B n_sampleoffset EQU 32 ; B n_pattpos EQU 33 ; B n_loopcount EQD OU 34 ; B n_funkoffset EQU 35 ; B n_wavestart EQU 36 ; L n_reallength EQU 40 ; W mt_init LEA mt_data,A0 MOVE.L A0,mt_SongDataPtr MOVE.L A0,A1 LEA 952(A1),A1 MOVEQ #127,D0 MOVEQ #0,D1 mtloop MOVE.L D1,D2 SUBQ.W #1,D0 mtloop2 MOVE.B (A1)+,D1 CMP.B D2,D1 BGT.S mtloop DBRA D0,mtloop2 ADDQ.B #1,D2 LEA mt_SampleStarts(PC),A1 ASL.L #8,D2 ASL.L #2,D2 ADD.L #1084,D2 ADD.L A0,D2 MOVE.L D2,A2 MOVEQ #30,D0 mtloop3 CLR.L (A2) MOVE.L A2,(A1)+ MOVEQ #0,D1 MOVE.W 42(A0),D1 D P'lASL.L #1,D1 ADD.L D1,A2 ADD.L #30,A0 DBRA D0,mtloop3 OR.B #2,$BFE001 MOVE.B #6,mt_speed CLR.B mt_counter CLR.B mt_SongPos CLR.W mt_PatternPos mt_end SF mt_Enable LEA $DFF000,A0 CLR.W $A8(A0) CLR.W $B8(A0) CLR.W $C8(A0) CLR.W $D8(A0) MOVE.W #$F,$DFF096 RTS mt_music MOVEM.L D0-D4/A0-A6,-(SP) TST.B mt_Enable BEQ mt_exit ADDQ.B #1,mt_counter MOVE.B mt_counter(PC),D0 CMP.B mt_speed(PC),D0 BLO.S mt_NoNewNote CLR.B mt_counter TST.B mt_PattDelTime2 BEQ.S mt_GetNewND QWote BSR.S mt_NoNewAllChannels BRA mt_dskip mt_NoNewNote BSR.S mt_NoNewAllChannels BRA mt_NoNewPosYet mt_NoNewAllChannels LEA $DFF0A0,A5 LEA mt_chan1temp(PC),A6 BSR mt_CheckEfx LEA $DFF0B0,A5 LEA mt_chan2temp(PC),A6 BSR mt_CheckEfx LEA $DFF0C0,A5 LEA mt_chan3temp(PC),A6 BSR mt_CheckEfx LEA $DFF0D0,A5 LEA mt_chan4temp(PC),A6 BRA mt_CheckEfx mt_GetNewNote MOVE.L mt_SongDataPtr(PC),A0 LEA 12(A0),A3 LEA 952(A0),A2 ;pattpo LEA 1084(A0),A0 ;patterndata MOVEQ #0,D0 MD ROVEQ #0,D1 MOVE.B mt_SongPos(PC),D0 MOVE.B (A2,D0.W),D1 ASL.L #8,D1 ASL.L #2,D1 ADD.W mt_PatternPos(PC),D1 CLR.W mt_DMACONtemp LEA $DFF0A0,A5 LEA mt_chan1temp(PC),A6 BSR.S mt_PlayVoice LEA $DFF0B0,A5 LEA mt_chan2temp(PC),A6 BSR.S mt_PlayVoice LEA $DFF0C0,A5 LEA mt_chan3temp(PC),A6 BSR.S mt_PlayVoice LEA $DFF0D0,A5 LEA mt_chan4temp(PC),A6 BSR.S mt_PlayVoice BRA mt_SetDMA mt_PlayVoice TST.L (A6) BNE.S mt_plvskip BSR mt_PerNop mt_plvskip MOVE.L (A0,D1.L),(A6) ADS0DDQ.L #4,D1 MOVEQ #0,D2 MOVE.B n_cmd(A6),D2 AND.B #$F0,D2 LSR.B #4,D2 MOVE.B (A6),D0 AND.B #$F0,D0 OR.B D0,D2 TST.B D2 BEQ mt_SetRegs MOVEQ #0,D3 LEA mt_SampleStarts(PC),A1 MOVE D2,D4 SUBQ.L #1,D2 ASL.L #2,D2 MULU #30,D4 MOVE.L (A1,D2.L),n_start(A6) MOVE.W (A3,D4.L),n_length(A6) MOVE.W (A3,D4.L),n_reallength(A6) MOVE.B 2(A3,D4.L),n_finetune(A6) MOVE.B 3(A3,D4.L),n_volume(A6) MOVE.W 4(A3,D4.L),D3 ; Get repeat TST.W D3 BEQ.S mt_NoLoop MOVE.L n_start(A6),D2 ; GetDT([%M start ASL.W #1,D3 ADD.L D3,D2 ; Add repeat MOVE.L D2,n_loopstart(A6) MOVE.L D2,n_wavestart(A6) MOVE.W 4(A3,D4.L),D0 ; Get repeat ADD.W 6(A3,D4.L),D0 ; Add replen MOVE.W D0,n_length(A6) MOVE.W 6(A3,D4.L),n_replen(A6) ; Save replen MOVEQ #0,D0 MOVE.B n_volume(A6),D0 MOVE.W D0,8(A5) ; Set volume BRA.S mt_SetRegs mt_NoLoop MOVE.L n_start(A6),D2 ADD.L D3,D2 MOVE.L D2,n_loopstart(A6) MOVE.L D2,n_wavestart(A6) MOVE.W 6(A3,D4.L),n_replen(A6) ; Save replen MOVEQ #0,D0 MODUt3IVE.B n_volume(A6),D0 MOVE.W D0,8(A5) ; Set volume mt_SetRegs MOVE.W (A6),D0 AND.W #$0FFF,D0 BEQ mt_CheckMoreEfx ; If no note MOVE.W 2(A6),D0 AND.W #$0FF0,D0 CMP.W #$0E50,D0 BEQ.S mt_DoSetFineTune MOVE.B 2(A6),D0 AND.B #$0F,D0 CMP.B #3,D0 ; TonePortamento BEQ.S mt_ChkTonePorta CMP.B #5,D0 BEQ.S mt_ChkTonePorta CMP.B #9,D0 ; Sample Offset BNE.S mt_SetPeriod BSR mt_CheckMoreEfx BRA.S mt_SetPeriod mt_DoSetFineTune BSR mt_SetFineTune BRA.S mt_SetPeriod mt_ChkTonePortDV` a BSR mt_SetTonePorta BRA mt_CheckMoreEfx mt_SetPeriod MOVEM.L D0-D1/A0-A1,-(SP) MOVE.W (A6),D1 AND.W #$0FFF,D1 LEA mt_PeriodTable(PC),A1 MOVEQ #0,D0 MOVEQ #36,D2 mt_ftuloop CMP.W (A1,D0.W),D1 BHS.S mt_ftufound ADDQ.L #2,D0 DBRA D2,mt_ftuloop mt_ftufound MOVEQ #0,D1 MOVE.B n_finetune(A6),D1 MULU #36*2,D1 ADD.L D1,A1 MOVE.W (A1,D0.W),n_period(A6) MOVEM.L (SP)+,D0-D1/A0-A1 MOVE.W 2(A6),D0 AND.W #$0FF0,D0 CMP.W #$0ED0,D0 ; Notedelay BEQ mt_CheckMoreEfx MOVE.W nDWƻ_dmabit(A6),$DFF096 BTST #2,n_wavecontrol(A6) BNE.S mt_vibnoc CLR.B n_vibratopos(A6) mt_vibnoc BTST #6,n_wavecontrol(A6) BNE.S mt_trenoc CLR.B n_tremolopos(A6) mt_trenoc MOVE.L n_start(A6),(A5) ; Set start MOVE.W n_length(A6),4(A5) ; Set length MOVE.W n_period(A6),D0 MOVE.W D0,6(A5) ; Set period MOVE.W n_dmabit(A6),D0 OR.W D0,mt_DMACONtemp BRA mt_CheckMoreEfx mt_SetDMA BSR RasterWait MOVE.W mt_DMACONtemp(PC),D0 OR.W #$8000,D0 MOVE.W D0,$DFF096 BSR RasterWait LEDXQ%A $DFF000,A5 LEA mt_chan4temp(PC),A6 MOVE.L n_loopstart(A6),$D0(A5) MOVE.W n_replen(A6),$D4(A5) LEA mt_chan3temp(PC),A6 MOVE.L n_loopstart(A6),$C0(A5) MOVE.W n_replen(A6),$C4(A5) LEA mt_chan2temp(PC),A6 MOVE.L n_loopstart(A6),$B0(A5) MOVE.W n_replen(A6),$B4(A5) LEA mt_chan1temp(PC),A6 MOVE.L n_loopstart(A6),$A0(A5) MOVE.W n_replen(A6),$A4(A5) mt_dskip ADD.W #16,mt_PatternPos MOVE.B mt_PattDelTime,D0 BEQ.S mt_dskc MOVE.B D0,mt_PattDelTime2 CLR.B mt_PattDelTime mt_dskDYac TST.B mt_PattDelTime2 BEQ.S mt_dska SUBQ.B #1,mt_PattDelTime2 BEQ.S mt_dska SUB.W #16,mt_PatternPos mt_dska TST.B mt_PBreakFlag BEQ.S mt_nnpysk SF mt_PBreakFlag MOVEQ #0,D0 MOVE.B mt_PBreakPos(PC),D0 CLR.B mt_PBreakPos LSL.W #4,D0 MOVE.W D0,mt_PatternPos mt_nnpysk CMP.W #1024,mt_PatternPos BLO.S mt_NoNewPosYet mt_NextPosition MOVEQ #0,D0 MOVE.B mt_PBreakPos(PC),D0 LSL.W #4,D0 MOVE.W D0,mt_PatternPos CLR.B mt_PBreakPos CLR.B mt_PosJumpFlag ADDQ.B #1,mt_SongPos DZ:*AND.B #$7F,mt_SongPos MOVE.B mt_SongPos(PC),D1 MOVE.L mt_SongDataPtr(PC),A0 CMP.B 950(A0),D1 BLO.S mt_NoNewPosYet CLR.B mt_SongPos mt_NoNewPosYet TST.B mt_PosJumpFlag BNE.S mt_NextPosition mt_exit MOVEM.L (SP)+,D0-D4/A0-A6 RTS mt_CheckEfx BSR mt_UpdateFunk MOVE.W n_cmd(A6),D0 AND.W #$0FFF,D0 BEQ.S mt_PerNop MOVE.B n_cmd(A6),D0 AND.B #$0F,D0 BEQ.S mt_Arpeggio CMP.B #1,D0 BEQ mt_PortaUp CMP.B #2,D0 BEQ mt_PortaDown CMP.B #3,D0 BEQ mt_TonePortamento CMP.B #4,D0 D[LBEQ mt_Vibrato CMP.B #5,D0 BEQ mt_TonePlusVolSlide CMP.B #6,D0 BEQ mt_VibratoPlusVolSlide CMP.B #$E,D0 BEQ mt_E_Commands SetBack MOVE.W n_period(A6),6(A5) CMP.B #7,D0 BEQ mt_Tremolo CMP.B #$A,D0 BEQ mt_VolumeSlide mt_Return RTS mt_PerNop MOVE.W n_period(A6),6(A5) RTS mt_Arpeggio MOVEQ #0,D0 MOVE.B mt_counter(PC),D0 DIVS #3,D0 SWAP D0 CMP.W #0,D0 BEQ.S mt_Arpeggio2 CMP.W #2,D0 BEQ.S mt_Arpeggio1 MOVEQ #0,D0 MOVE.B n_cmdlo(A6),D0 LSR.B #4,D0 BRA.S mt_ArpeggioD\!u3 mt_Arpeggio1 MOVEQ #0,D0 MOVE.B n_cmdlo(A6),D0 AND.B #15,D0 BRA.S mt_Arpeggio3 mt_Arpeggio2 MOVE.W n_period(A6),D2 BRA.S mt_Arpeggio4 mt_Arpeggio3 ASL.W #1,D0 MOVEQ #0,D1 MOVE.B n_finetune(A6),D1 MULU #36*2,D1 LEA mt_PeriodTable(PC),A0 ADD.L D1,A0 MOVEQ #0,D1 MOVE.W n_period(A6),D1 MOVEQ #36,D3 mt_arploop MOVE.W (A0,D0.W),D2 CMP.W (A0),D1 BHS.S mt_Arpeggio4 ADDQ.L #2,A0 DBRA D3,mt_arploop RTS mt_Arpeggio4 MOVE.W D2,6(A5) RTS mt_FinePortaUp TST.B mt_counD]5Gter BNE.S mt_Return MOVE.B #$0F,mt_LowMask mt_PortaUp MOVEQ #0,D0 MOVE.B n_cmdlo(A6),D0 AND.B mt_LowMask(PC),D0 MOVE.B #$FF,mt_LowMask SUB.W D0,n_period(A6) MOVE.W n_period(A6),D0 AND.W #$0FFF,D0 CMP.W #113,D0 BPL.S mt_PortaUskip AND.W #$F000,n_period(A6) OR.W #113,n_period(A6) mt_PortaUskip MOVE.W n_period(A6),D0 AND.W #$0FFF,D0 MOVE.W D0,6(A5) RTS mt_FinePortaDown TST.B mt_counter BNE mt_Return MOVE.B #$0F,mt_LowMask mt_PortaDown CLR.W D0 MOVE.B n_cmdlo(A6)D^xA,D0 AND.B mt_LowMask(PC),D0 MOVE.B #$FF,mt_LowMask ADD.W D0,n_period(A6) MOVE.W n_period(A6),D0 AND.W #$0FFF,D0 CMP.W #856,D0 BMI.S mt_PortaDskip AND.W #$F000,n_period(A6) OR.W #856,n_period(A6) mt_PortaDskip MOVE.W n_period(A6),D0 AND.W #$0FFF,D0 MOVE.W D0,6(A5) RTS mt_SetTonePorta MOVE.L A0,-(SP) MOVE.W (A6),D2 AND.W #$0FFF,D2 MOVEQ #0,D0 MOVE.B n_finetune(A6),D0 MULU #36*2,D0 LEA mt_PeriodTable(PC),A0 ADD.L D0,A0 MOVEQ #0,D0 mt_StpLoop CMP.W (A0,D0.W),D2 BD_NJHS.S mt_StpFound ADDQ.W #2,D0 CMP.W #36*2,D0 BLO.S mt_StpLoop MOVEQ #35*2,D0 mt_StpFound MOVE.B n_finetune(A6),D2 AND.B #8,D2 BEQ.S mt_StpGoss TST.W D0 BEQ.S mt_StpGoss SUBQ.W #2,D0 mt_StpGoss MOVE.W (A0,D0.W),D2 MOVE.L (SP)+,A0 MOVE.W D2,n_wantedperiod(A6) MOVE.W n_period(A6),D0 CLR.B n_toneportdirec(A6) CMP.W D0,D2 BEQ.S mt_ClearTonePorta BGE mt_Return MOVE.B #1,n_toneportdirec(A6) RTS mt_ClearTonePorta CLR.W n_wantedperiod(A6) RTS mt_TonePortamento MOVE.B D`ewn_cmdlo(A6),D0 BEQ.S mt_TonePortNoChange MOVE.B D0,n_toneportspeed(A6) CLR.B n_cmdlo(A6) mt_TonePortNoChange TST.W n_wantedperiod(A6) BEQ mt_Return MOVEQ #0,D0 MOVE.B n_toneportspeed(A6),D0 TST.B n_toneportdirec(A6) BNE.S mt_TonePortaUp mt_TonePortaDown ADD.W D0,n_period(A6) MOVE.W n_wantedperiod(A6),D0 CMP.W n_period(A6),D0 BGT.S mt_TonePortaSetPer MOVE.W n_wantedperiod(A6),n_period(A6) CLR.W n_wantedperiod(A6) BRA.S mt_TonePortaSetPer mt_TonePortaUp SUB.W D0,n_perDanFiod(A6) MOVE.W n_wantedperiod(A6),D0 CMP.W n_period(A6),D0 BLT.S mt_TonePortaSetPer MOVE.W n_wantedperiod(A6),n_period(A6) CLR.W n_wantedperiod(A6) mt_TonePortaSetPer MOVE.W n_period(A6),D2 MOVE.B n_glissfunk(A6),D0 AND.B #$0F,D0 BEQ.S mt_GlissSkip MOVEQ #0,D0 MOVE.B n_finetune(A6),D0 MULU #36*2,D0 LEA mt_PeriodTable(PC),A0 ADD.W D0,A0 MOVEQ #0,D0 mt_GlissLoop CMP.W (A0,D0.W),D2 BHS.S mt_GlissFound ADDQ.W #2,D0 CMP.W #36*2,D0 BLO.S mt_GlissLoop MOVEQ #35*2,D0 mtDb yz_GlissFound MOVE.W (A0,D0.W),D2 mt_GlissSkip MOVE.W D2,6(A5) ; Set period RTS mt_Vibrato MOVE.B n_cmdlo(A6),D0 BEQ.S mt_Vibrato2 MOVE.B n_vibratocmd(A6),D2 AND.B #$0F,D0 BEQ.S mt_vibskip AND.B #$F0,D2 OR.B D0,D2 mt_vibskip MOVE.B n_cmdlo(A6),D0 AND.B #$F0,D0 BEQ.S mt_vibskip2 AND.B #$0F,D2 OR.B D0,D2 mt_vibskip2 MOVE.B D2,n_vibratocmd(A6) mt_Vibrato2 MOVE.B n_vibratopos(A6),D0 LEA mt_VibratoTable(PC),A4 LSR.W #2,D0 AND.W #$001F,D0 MOVEQ #0,D2 MOVE.B n_wavecontrDcRol(A6),D2 AND.B #$03,D2 BEQ.S mt_vib_sine LSL.B #3,D0 CMP.B #1,D2 BEQ.S mt_vib_rampdown MOVE.B #255,D2 BRA.S mt_vib_set mt_vib_rampdown TST.B n_vibratopos(A6) BPL.S mt_vib_rampdown2 MOVE.B #255,D2 SUB.B D0,D2 BRA.S mt_vib_set mt_vib_rampdown2 MOVE.B D0,D2 BRA.S mt_vib_set mt_vib_sine MOVE.B (A4,D0.W),D2 mt_vib_set MOVE.B n_vibratocmd(A6),D0 AND.W #15,D0 MULU D0,D2 LSR.W #7,D2 MOVE.W n_period(A6),D0 TST.B n_vibratopos(A6) BMI.S mt_VibratoNeg ADD.W D2,D0 BRA.S mDdQt_Vibrato3 mt_VibratoNeg SUB.W D2,D0 mt_Vibrato3 MOVE.W D0,6(A5) MOVE.B n_vibratocmd(A6),D0 LSR.W #2,D0 AND.W #$003C,D0 ADD.B D0,n_vibratopos(A6) RTS mt_TonePlusVolSlide BSR mt_TonePortNoChange BRA mt_VolumeSlide mt_VibratoPlusVolSlide BSR.S mt_Vibrato2 BRA mt_VolumeSlide mt_Tremolo MOVE.B n_cmdlo(A6),D0 BEQ.S mt_Tremolo2 MOVE.B n_tremolocmd(A6),D2 AND.B #$0F,D0 BEQ.S mt_treskip AND.B #$F0,D2 OR.B D0,D2 mt_treskip MOVE.B n_cmdlo(A6),D0 AND.B #$F0,D0 BEQ.S mt_tD ereskip2 AND.B #$0F,D2 OR.B D0,D2 mt_treskip2 MOVE.B D2,n_tremolocmd(A6) mt_Tremolo2 MOVE.B n_tremolopos(A6),D0 LEA mt_VibratoTable(PC),A4 LSR.W #2,D0 AND.W #$001F,D0 MOVEQ #0,D2 MOVE.B n_wavecontrol(A6),D2 LSR.B #4,D2 AND.B #$03,D2 BEQ.S mt_tre_sine LSL.B #3,D0 CMP.B #1,D2 BEQ.S mt_tre_rampdown MOVE.B #255,D2 BRA.S mt_tre_set mt_tre_rampdown TST.B n_vibratopos(A6) BPL.S mt_tre_rampdown2 MOVE.B #255,D2 SUB.B D0,D2 BRA.S mt_tre_set mt_tre_rampdown2 MOVE.B D0,D2 D!f BRA.S mt_tre_set mt_tre_sine MOVE.B (A4,D0.W),D2 mt_tre_set MOVE.B n_tremolocmd(A6),D0 AND.W #15,D0 MULU D0,D2 LSR.W #6,D2 MOVEQ #0,D0 MOVE.B n_volume(A6),D0 TST.B n_tremolopos(A6) BMI.S mt_TremoloNeg ADD.W D2,D0 BRA.S mt_Tremolo3 mt_TremoloNeg SUB.W D2,D0 mt_Tremolo3 BPL.S mt_TremoloSkip CLR.W D0 mt_TremoloSkip CMP.W #$40,D0 BLS.S mt_TremoloOk MOVE.W #$40,D0 mt_TremoloOk MOVE.W D0,8(A5) MOVE.B n_tremolocmd(A6),D0 LSR.W #2,D0 AND.W #$003C,D0 ADD.B D0,n_tremolopoD"g=Xs(A6) RTS mt_SampleOffset MOVEQ #0,D0 MOVE.B n_cmdlo(A6),D0 BEQ.S mt_sononew MOVE.B D0,n_sampleoffset(A6) mt_sononew MOVE.B n_sampleoffset(A6),D0 LSL.W #7,D0 CMP.W n_length(A6),D0 BGE.S mt_sofskip SUB.W D0,n_length(A6) LSL.W #1,D0 ADD.L D0,n_start(A6) RTS mt_sofskip MOVE.W #$0001,n_length(A6) RTS mt_VolumeSlide MOVEQ #0,D0 MOVE.B n_cmdlo(A6),D0 LSR.B #4,D0 TST.B D0 BEQ.S mt_VolSlideDown mt_VolSlideUp ADD.B D0,n_volume(A6) CMP.B #$40,n_volume(A6) BMI.S mt_vsusD#hUhkip MOVE.B #$40,n_volume(A6) mt_vsuskip MOVE.B n_volume(A6),D0 MOVE.W D0,8(A5) RTS mt_VolSlideDown MOVEQ #0,D0 MOVE.B n_cmdlo(A6),D0 AND.B #$0F,D0 mt_VolSlideDown2 SUB.B D0,n_volume(A6) BPL.S mt_vsdskip CLR.B n_volume(A6) mt_vsdskip MOVE.B n_volume(A6),D0 MOVE.W D0,8(A5) RTS mt_PositionJump MOVE.B n_cmdlo(A6),D0 SUBQ.B #1,D0 MOVE.B D0,mt_SongPos mt_pj2 CLR.B mt_PBreakPos ST mt_PosJumpFlag RTS mt_VolumeChange MOVEQ #0,D0 MOVE.B n_cmdlo(A6),D0 CMP.B #$40,D0 BLD$il)FS.S mt_VolumeOk MOVEQ #$40,D0 mt_VolumeOk MOVE.B D0,n_volume(A6) MOVE.W D0,8(A5) RTS mt_PatternBreak MOVEQ #0,D0 MOVE.B n_cmdlo(A6),D0 MOVE.L D0,D2 LSR.B #4,D0 MULU #10,D0 AND.B #$0F,D2 ADD.B D2,D0 CMP.B #63,D0 BHI.S mt_pj2 MOVE.B D0,mt_PBreakPos ST mt_PosJumpFlag RTS mt_SetSpeed MOVEQ #0,D0 MOVE.B 3(A6),D0 BEQ mt_end CMP.B #32,D0 BHS SetTempo CLR.B mt_counter MOVE.B D0,mt_speed RTS mt_CheckMoreEfx BSR mt_UpdateFunk MOVE.B 2(A6),D0 AND.B #$0F,D0 CMP.B #D%j ʇ$9,D0 BEQ mt_SampleOffset CMP.B #$B,D0 BEQ mt_PositionJump CMP.B #$D,D0 BEQ.S mt_PatternBreak CMP.B #$E,D0 BEQ.S mt_E_Commands CMP.B #$F,D0 BEQ.S mt_SetSpeed CMP.B #$C,D0 BEQ mt_VolumeChange BRA mt_PerNop mt_E_Commands MOVE.B n_cmdlo(A6),D0 AND.B #$F0,D0 LSR.B #4,D0 BEQ.S mt_FilterOnOff CMP.B #1,D0 BEQ mt_FinePortaUp CMP.B #2,D0 BEQ mt_FinePortaDown CMP.B #3,D0 BEQ.S mt_SetGlissControl CMP.B #4,D0 BEQ mt_SetVibratoControl CMP.B #5,D0 BEQ mt_SetFineTune CMPD&kE .B #6,D0 BEQ mt_JumpLoop CMP.B #7,D0 BEQ mt_SetTremoloControl CMP.B #9,D0 BEQ mt_RetrigNote CMP.B #$A,D0 BEQ mt_VolumeFineUp CMP.B #$B,D0 BEQ mt_VolumeFineDown CMP.B #$C,D0 BEQ mt_NoteCut CMP.B #$D,D0 BEQ mt_NoteDelay CMP.B #$E,D0 BEQ mt_PatternDelay CMP.B #$F,D0 BEQ mt_FunkIt RTS mt_FilterOnOff MOVE.B n_cmdlo(A6),D0 AND.B #1,D0 ASL.B #1,D0 AND.B #$FD,$BFE001 OR.B D0,$BFE001 RTS mt_SetGlissControl MOVE.B n_cmdlo(A6),D0 AND.B #$0F,D0 AND.B #$F0,n_glissfunD'lak(A6) OR.B D0,n_glissfunk(A6) RTS mt_SetVibratoControl MOVE.B n_cmdlo(A6),D0 AND.B #$0F,D0 AND.B #$F0,n_wavecontrol(A6) OR.B D0,n_wavecontrol(A6) RTS mt_SetFineTune MOVE.B n_cmdlo(A6),D0 AND.B #$0F,D0 MOVE.B D0,n_finetune(A6) RTS mt_JumpLoop TST.B mt_counter BNE mt_Return MOVE.B n_cmdlo(A6),D0 AND.B #$0F,D0 BEQ.S mt_SetLoop TST.B n_loopcount(A6) BEQ.S mt_jumpcnt SUBQ.B #1,n_loopcount(A6) BEQ mt_Return mt_jmploop MOVE.B n_pattpos(A6),mt_PBreakPos ST mt_PBreakFlD(m\y{땹A'!h!h"!݀!@A&H . ʣl$ $ .$$$sA$$$$.$$$$$$$$ $$$$$$$$$$y|h'9pр8?`A&@3y}S+*2:+=o||x~|1sFyA x? sys:c/ppmore~|1sF~/?wWbx PSTT-Play.s>~-ru;******************************************** ;* VBLANK Interrupt Version * ;******************************************** ;* ----- PSTTracker V1.x Playroutine ----- * ;* John 'SHAYERA' Hinge / PARASITE 1992 * ;******************************************** ; VBlank Version 1.12: ; Call mt_init to initialize the routine, then call mt_music on ; each vertical blank (50 Hz). To end the song and turn off all ; voices, call mt_end. ; This playroutine is not very fast~, optimized or well commented, ; but all the new commands in PT1.1A should work. ; If it's not good enough, you'll have to change it yourself. ;This routine is based upon the 'FIXED' PT-Play.s ;(Bugfix in TonePortamento Function) ;It should work 100% ;DMAWait value (300) changed to RasterWait. ;This should ensure normal speed on all processors ; section Code,CODE_C ; Test program for replay routine... ; ;start: move.w #$4000,$dff09a ; jsr mt_init ;vertbloop: ; move.l $dff004,d0 ; ~ }asr.l #8,d0 ; and.l #$1ff,d0 ; cmp.w #80,d0 ; bne.B vertbloop ; ; move.w #$50,$dff180 ; jsr mt_music ; move.w #$0,$dff180 ; ; btst #6,$bfe001 ; bne.B vertbloop ; ; move.w #$c000,$dff09a ; jsr mt_end ; rts DMAWait = 300 ; Set this as low as possible without losing low notes. n_note EQU 0 ; W n_cmd EQU 2 ; W n_cmdlo EQU 3 ; B n_start EQU 4 ; L n_length EQU 8 ; W n_loopstart EQU 10 ; L n_replen EQU 14 ; W n_period EQU 16 ; W n_finetune EQU 18 ; B n_volume EQU 19 ; B n_dma~Rbit EQU 20 ; W n_toneportdirec EQU 22 ; B n_toneportspeed EQU 23 ; B n_wantedperiod EQU 24 ; W n_vibratocmd EQU 26 ; B n_vibratopos EQU 27 ; B n_tremolocmd EQU 28 ; B n_tremolopos EQU 29 ; B n_wavecontrol EQU 30 ; B n_glissfunk EQU 31 ; B n_sampleoffset EQU 32 ; B n_pattpos EQU 33 ; B n_loopcount EQU 34 ; B n_funkoffset EQU 35 ; B n_wavestart EQU 36 ; L n_reallength EQU 40 ; W mt_init LEA mt_data,A0 MOVE.L A0,mt_SongDataPtr MOVE.L A0,A1 LEA 952(A1),A1 MOVEQ #127,D0 MOVEQ #0,D1 ~W mtloop MOVE.L D1,D2 SUBQ.W #1,D0 mtloop2 MOVE.B (A1)+,D1 CMP.B D2,D1 BGT.S mtloop DBRA D0,mtloop2 ADDQ.B #1,D2 LEA mt_SampleStarts(PC),A1 ASL.L #8,D2 ASL.L #2,D2 ADD.L #1084,D2 ADD.L A0,D2 MOVE.L D2,A2 MOVEQ #30,D0 mtloop3 CLR.L (A2) MOVE.L A2,(A1)+ MOVEQ #0,D1 MOVE.W 42(A0),D1 ASL.L #1,D1 ADD.L D1,A2 ADD.L #30,A0 DBRA D0,mtloop3 OR.B #2,$BFE001 MOVE.B #6,mt_speed CLR.B mt_counter CLR.B mt_SongPos CLR.W mt_PatternPos mt_end CLR.W $DFF0A8 CLR.W $DFF0B8 C~|@oLR.W $DFF0C8 CLR.W $DFF0D8 MOVE.W #$F,$DFF096 RTS mt_music MOVEM.L D0-D4/A0-A6,-(SP) ADDQ.B #1,mt_counter MOVE.B mt_counter(PC),D0 CMP.B mt_speed(PC),D0 BLO.S mt_NoNewNote CLR.B mt_counter TST.B mt_PattDelTime2 BEQ.S mt_GetNewNote BSR.S mt_NoNewAllChannels BRA mt_dskip mt_NoNewNote BSR.S mt_NoNewAllChannels BRA mt_NoNewPosYet mt_NoNewAllChannels LEA $DFF0A0,A5 LEA mt_chan1temp(PC),A6 BSR mt_CheckEfx LEA $DFF0B0,A5 LEA mt_chan2temp(PC),A6 BSR mt_CheckEfx LEA $~zDFF0C0,A5 LEA mt_chan3temp(PC),A6 BSR mt_CheckEfx LEA $DFF0D0,A5 LEA mt_chan4temp(PC),A6 BRA mt_CheckEfx mt_GetNewNote MOVE.L mt_SongDataPtr(PC),A0 LEA 12(A0),A3 LEA 952(A0),A2 ;pattpo LEA 1084(A0),A0 ;patterndata MOVEQ #0,D0 MOVEQ #0,D1 MOVE.B mt_SongPos(PC),D0 MOVE.B (A2,D0.W),D1 ASL.L #8,D1 ASL.L #2,D1 ADD.W mt_PatternPos(PC),D1 CLR.W mt_DMACONtemp LEA $DFF0A0,A5 LEA mt_chan1temp(PC),A6 BSR.S mt_PlayVoice LEA $DFF0B0,A5 LEA mt_chan2temp(PC),A6 BSR.S mt_Pla~cyVoice LEA $DFF0C0,A5 LEA mt_chan3temp(PC),A6 BSR.S mt_PlayVoice LEA $DFF0D0,A5 LEA mt_chan4temp(PC),A6 BSR.S mt_PlayVoice BRA mt_SetDMA mt_PlayVoice TST.L (A6) BNE.S mt_plvskip BSR mt_PerNop mt_plvskip MOVE.L (A0,D1.L),(A6) ADDQ.L #4,D1 MOVEQ #0,D2 MOVE.B n_cmd(A6),D2 AND.B #$F0,D2 LSR.B #4,D2 MOVE.B (A6),D0 AND.B #$F0,D0 OR.B D0,D2 TST.B D2 BEQ mt_SetRegs MOVEQ #0,D3 LEA mt_SampleStarts(PC),A1 MOVE D2,D4 SUBQ.L #1,D2 ASL.L #2,D2 MULU #30,D4 MOVE.L (A1,D~ |2.L),n_start(A6) MOVE.W (A3,D4.L),n_length(A6) MOVE.W (A3,D4.L),n_reallength(A6) MOVE.B 2(A3,D4.L),n_finetune(A6) MOVE.B 3(A3,D4.L),n_volume(A6) MOVE.W 4(A3,D4.L),D3 ; Get repeat TST.W D3 BEQ.S mt_NoLoop MOVE.L n_start(A6),D2 ; Get start ASL.W #1,D3 ADD.L D3,D2 ; Add repeat MOVE.L D2,n_loopstart(A6) MOVE.L D2,n_wavestart(A6) MOVE.W 4(A3,D4.L),D0 ; Get repeat ADD.W 6(A3,D4.L),D0 ; Add replen MOVE.W D0,n_length(A6) MOVE.W 6(A3,D4.L),n_replen(A6) ; Save replen MOVEQ #0~ ,D0 MOVE.B n_volume(A6),D0 MOVE.W D0,8(A5) ; Set volume BRA.S mt_SetRegs mt_NoLoop MOVE.L n_start(A6),D2 ADD.L D3,D2 MOVE.L D2,n_loopstart(A6) MOVE.L D2,n_wavestart(A6) MOVE.W 6(A3,D4.L),n_replen(A6) ; Save replen MOVEQ #0,D0 MOVE.B n_volume(A6),D0 MOVE.W D0,8(A5) ; Set volume mt_SetRegs MOVE.W (A6),D0 AND.W #$0FFF,D0 BEQ mt_CheckMoreEfx ; If no note MOVE.W 2(A6),D0 AND.W #$0FF0,D0 CMP.W #$0E50,D0 BEQ.S mt_DoSetFineTune MOVE.B 2(A6),D0 AND.B #$0F,D0 CMP.B #3,D0 ~ ߺ; TonePortamento BEQ.S mt_ChkTonePorta CMP.B #5,D0 BEQ.S mt_ChkTonePorta CMP.B #9,D0 ; Sample Offset BNE.S mt_SetPeriod BSR mt_CheckMoreEfx BRA.S mt_SetPeriod mt_DoSetFineTune BSR mt_SetFineTune BRA.S mt_SetPeriod mt_ChkTonePorta BSR mt_SetTonePorta BRA mt_CheckMoreEfx mt_SetPeriod MOVEM.L D0-D1/A0-A1,-(SP) MOVE.W (A6),D1 AND.W #$0FFF,D1 LEA mt_PeriodTable(PC),A1 MOVEQ #0,D0 MOVEQ #36,D7 mt_ftuloop CMP.W (A1,D0.W),D1 BHS.S mt_ftufound ADDQ.L #2,D0 DBRA D7,mt_f~ d8tuloop mt_ftufound MOVEQ #0,D1 MOVE.B n_finetune(A6),D1 MULU #36*2,D1 ADD.L D1,A1 MOVE.W (A1,D0.W),n_period(A6) MOVEM.L (SP)+,D0-D1/A0-A1 MOVE.W 2(A6),D0 AND.W #$0FF0,D0 CMP.W #$0ED0,D0 ; Notedelay BEQ mt_CheckMoreEfx MOVE.W n_dmabit(A6),$DFF096 BTST #2,n_wavecontrol(A6) BNE.S mt_vibnoc CLR.B n_vibratopos(A6) mt_vibnoc BTST #6,n_wavecontrol(A6) BNE.S mt_trenoc CLR.B n_tremolopos(A6) mt_trenoc MOVE.L n_start(A6),(A5) ; Set start MOVE.W n_length(A6),4(A5) ; Set len~ *gth MOVE.W n_period(A6),D0 MOVE.W D0,6(A5) ; Set period MOVE.W n_dmabit(A6),D0 OR.W D0,mt_DMACONtemp BRA mt_CheckMoreEfx mt_SetDMA BSR RasterWait MOVE.W mt_DMACONtemp(PC),D0 OR.W #$8000,D0 MOVE.W D0,$DFF096 BSR RasterWait LEA $DFF000,A5 LEA mt_chan4temp(PC),A6 MOVE.L n_loopstart(A6),$D0(A5) MOVE.W n_replen(A6),$D4(A5) LEA mt_chan3temp(PC),A6 MOVE.L n_loopstart(A6),$C0(A5) MOVE.W n_replen(A6),$C4(A5) LEA mt_chan2temp(PC),A6 MOVE.L n_loopstart(A6),$B0(A5) MOVE.W~?d n_replen(A6),$B4(A5) LEA mt_chan1temp(PC),A6 MOVE.L n_loopstart(A6),$A0(A5) MOVE.W n_replen(A6),$A4(A5) mt_dskip ADD.W #16,mt_PatternPos MOVE.B mt_PattDelTime,D0 BEQ.S mt_dskc MOVE.B D0,mt_PattDelTime2 CLR.B mt_PattDelTime mt_dskc TST.B mt_PattDelTime2 BEQ.S mt_dska SUBQ.B #1,mt_PattDelTime2 BEQ.S mt_dska SUB.W #16,mt_PatternPos mt_dska TST.B mt_PBreakFlag BEQ.S mt_nnpysk SF mt_PBreakFlag MOVEQ #0,D0 MOVE.B mt_PBreakPos(PC),D0 CLR.B mt_PBreakPos LSL.W #4,D0 MOVE.~wW D0,mt_PatternPos mt_nnpysk CMP.W #1024,mt_PatternPos BLO.S mt_NoNewPosYet mt_NextPosition MOVEQ #0,D0 MOVE.B mt_PBreakPos(PC),D0 LSL.W #4,D0 MOVE.W D0,mt_PatternPos CLR.B mt_PBreakPos CLR.B mt_PosJumpFlag ADDQ.B #1,mt_SongPos AND.B #$7F,mt_SongPos MOVE.B mt_SongPos(PC),D1 MOVE.L mt_SongDataPtr(PC),A0 CMP.B 950(A0),D1 BLO.S mt_NoNewPosYet CLR.B mt_SongPos mt_NoNewPosYet TST.B mt_PosJumpFlag BNE.S mt_NextPosition MOVEM.L (SP)+,D0-D4/A0-A6 RTS mt_CheckEfx BSR mt~;q_UpdateFunk MOVE.W n_cmd(A6),D0 AND.W #$0FFF,D0 BEQ.S mt_PerNop MOVE.B n_cmd(A6),D0 AND.B #$0F,D0 BEQ.S mt_Arpeggio CMP.B #1,D0 BEQ mt_PortaUp CMP.B #2,D0 BEQ mt_PortaDown CMP.B #3,D0 BEQ mt_TonePortamento CMP.B #4,D0 BEQ mt_Vibrato CMP.B #5,D0 BEQ mt_TonePlusVolSlide CMP.B #6,D0 BEQ mt_VibratoPlusVolSlide CMP.B #$E,D0 BEQ mt_E_Commands SetBack MOVE.W n_period(A6),6(A5) CMP.B #7,D0 BEQ mt_Tremolo CMP.B #$A,D0 BEQ mt_VolumeSlide mt_Return2 RTS mt_PerNop MOVE~G{.W n_period(A6),6(A5) RTS mt_Arpeggio MOVEQ #0,D0 MOVE.B mt_counter(PC),D0 DIVS #3,D0 SWAP D0 CMP.W #0,D0 BEQ.S mt_Arpeggio2 CMP.W #2,D0 BEQ.S mt_Arpeggio1 MOVEQ #0,D0 MOVE.B n_cmdlo(A6),D0 LSR.B #4,D0 BRA.S mt_Arpeggio3 mt_Arpeggio1 MOVEQ #0,D0 MOVE.B n_cmdlo(A6),D0 AND.B #15,D0 BRA.S mt_Arpeggio3 mt_Arpeggio2 MOVE.W n_period(A6),D2 BRA.S mt_Arpeggio4 mt_Arpeggio3 ASL.W #1,D0 MOVEQ #0,D1 MOVE.B n_finetune(A6),D1 MULU #36*2,D1 LEA mt_PeriodTable(PC),A0 AD~DX+D.L D1,A0 MOVEQ #0,D1 MOVE.W n_period(A6),D1 MOVEQ #36,D7 mt_arploop MOVE.W (A0,D0.W),D2 CMP.W (A0),D1 BHS.S mt_Arpeggio4 ADDQ.L #2,A0 DBRA D7,mt_arploop RTS mt_Arpeggio4 MOVE.W D2,6(A5) RTS mt_FinePortaUp TST.B mt_counter BNE.S mt_Return2 MOVE.B #$0F,mt_LowMask mt_PortaUp MOVEQ #0,D0 MOVE.B n_cmdlo(A6),D0 AND.B mt_LowMask(PC),D0 MOVE.B #$FF,mt_LowMask SUB.W D0,n_period(A6) MOVE.W n_period(A6),D0 AND.W #$0FFF,D0 CMP.W #113,D0 BPL.S mt_PortaUskip AND.W #$F000~,n_period(A6) OR.W #113,n_period(A6) mt_PortaUskip MOVE.W n_period(A6),D0 AND.W #$0FFF,D0 MOVE.W D0,6(A5) RTS mt_FinePortaDown TST.B mt_counter BNE mt_Return2 MOVE.B #$0F,mt_LowMask mt_PortaDown CLR.W D0 MOVE.B n_cmdlo(A6),D0 AND.B mt_LowMask(PC),D0 MOVE.B #$FF,mt_LowMask ADD.W D0,n_period(A6) MOVE.W n_period(A6),D0 AND.W #$0FFF,D0 CMP.W #856,D0 BMI.S mt_PortaDskip AND.W #$F000,n_period(A6) OR.W #856,n_period(A6) mt_PortaDskip MOVE.W n_period(A6),D0 AND.W #$0F~CFF,D0 MOVE.W D0,6(A5) RTS mt_SetTonePorta MOVE.L A0,-(SP) MOVE.W (A6),D2 AND.W #$0FFF,D2 MOVEQ #0,D0 MOVE.B n_finetune(A6),D0 MULU #36*2,D0 LEA mt_PeriodTable(PC),A0 ADD.L D0,A0 MOVEQ #0,D0 mt_StpLoop CMP.W (A0,D0.W),D2 BHS.S mt_StpFound ADDQ.W #2,D0 CMP.W #36*2,D0 BLO.S mt_StpLoop MOVEQ #35*2,D0 mt_StpFound MOVE.B n_finetune(A6),D2 AND.B #8,D2 BEQ.S mt_StpGoss TST.W D0 BEQ.S mt_StpGoss SUBQ.W #2,D0 mt_StpGoss MOVE.W (A0,D0.W),D2 MOVE.L (SP)+,A0 MOVE.W D2,n~]9 T_wantedperiod(A6) MOVE.W n_period(A6),D0 CLR.B n_toneportdirec(A6) CMP.W D0,D2 BEQ.S mt_ClearTonePorta BGE mt_Return2 MOVE.B #1,n_toneportdirec(A6) RTS mt_ClearTonePorta CLR.W n_wantedperiod(A6) RTS mt_TonePortamento MOVE.B n_cmdlo(A6),D0 BEQ.S mt_TonePortNoChange MOVE.B D0,n_toneportspeed(A6) CLR.B n_cmdlo(A6) mt_TonePortNoChange TST.W n_wantedperiod(A6) BEQ mt_Return2 MOVEQ #0,D0 MOVE.B n_toneportspeed(A6),D0 TST.B n_toneportdirec(A6) BNE.S mt_TonePortaUp mt_To~ БonePortaDown ADD.W D0,n_period(A6) MOVE.W n_wantedperiod(A6),D0 CMP.W n_period(A6),D0 BGT.S mt_TonePortaSetPer MOVE.W n_wantedperiod(A6),n_period(A6) CLR.W n_wantedperiod(A6) BRA.S mt_TonePortaSetPer mt_TonePortaUp SUB.W D0,n_period(A6) MOVE.W n_wantedperiod(A6),D0 CMP.W n_period(A6),D0 BLT.S mt_TonePortaSetPer MOVE.W n_wantedperiod(A6),n_period(A6) CLR.W n_wantedperiod(A6) mt_TonePortaSetPer MOVE.W n_period(A6),D2 MOVE.B n_glissfunk(A6),D0 AND.B #$0F,D0 BEQ.S mt_Gl~,(issSkip MOVEQ #0,D0 MOVE.B n_finetune(A6),D0 MULU #36*2,D0 LEA mt_PeriodTable(PC),A0 ADD.W D0,A0 MOVEQ #0,D0 mt_GlissLoop CMP.W (A0,D0.W),D2 BHS.S mt_GlissFound ADDQ.W #2,D0 CMP.W #36*2,D0 BLO.S mt_GlissLoop MOVEQ #35*2,D0 mt_GlissFound MOVE.W (A0,D0.W),D2 mt_GlissSkip MOVE.W D2,6(A5) ; Set period RTS mt_Vibrato MOVE.B n_cmdlo(A6),D0 BEQ.S mt_Vibrato2 MOVE.B n_vibratocmd(A6),D2 AND.B #$0F,D0 BEQ.S mt_vibskip AND.B #$F0,D2 OR.B D0,D2 mt_vibskip MOVE.B n_cmdl~q5o(A6),D0 AND.B #$F0,D0 BEQ.S mt_vibskip2 AND.B #$0F,D2 OR.B D0,D2 mt_vibskip2 MOVE.B D2,n_vibratocmd(A6) mt_Vibrato2 MOVE.B n_vibratopos(A6),D0 LEA mt_VibratoTable(PC),A4 LSR.W #2,D0 AND.W #$001F,D0 MOVEQ #0,D2 MOVE.B n_wavecontrol(A6),D2 AND.B #$03,D2 BEQ.S mt_vib_sine LSL.B #3,D0 CMP.B #1,D2 BEQ.S mt_vib_rampdown MOVE.B #255,D2 BRA.S mt_vib_set mt_vib_rampdown TST.B n_vibratopos(A6) BPL.S mt_vib_rampdown2 MOVE.B #255,D2 SUB.B D0,D2 BRA.S mt_vib_set mt_vib_ram~Epdown2 MOVE.B D0,D2 BRA.S mt_vib_set mt_vib_sine MOVE.B 0(A4,D0.W),D2 mt_vib_set MOVE.B n_vibratocmd(A6),D0 AND.W #15,D0 MULU D0,D2 LSR.W #7,D2 MOVE.W n_period(A6),D0 TST.B n_vibratopos(A6) BMI.S mt_VibratoNeg ADD.W D2,D0 BRA.S mt_Vibrato3 mt_VibratoNeg SUB.W D2,D0 mt_Vibrato3 MOVE.W D0,6(A5) MOVE.B n_vibratocmd(A6),D0 LSR.W #2,D0 AND.W #$003C,D0 ADD.B D0,n_vibratopos(A6) RTS mt_TonePlusVolSlide BSR mt_TonePortNoChange BRA mt_VolumeSlide mt_VibratoPlusVolSlide ~ BSR.S mt_Vibrato2 BRA mt_VolumeSlide mt_Tremolo MOVE.B n_cmdlo(A6),D0 BEQ.S mt_Tremolo2 MOVE.B n_tremolocmd(A6),D2 AND.B #$0F,D0 BEQ.S mt_treskip AND.B #$F0,D2 OR.B D0,D2 mt_treskip MOVE.B n_cmdlo(A6),D0 AND.B #$F0,D0 BEQ.S mt_treskip2 AND.B #$0F,D2 OR.B D0,D2 mt_treskip2 MOVE.B D2,n_tremolocmd(A6) mt_Tremolo2 MOVE.B n_tremolopos(A6),D0 LEA mt_VibratoTable(PC),A4 LSR.W #2,D0 AND.W #$001F,D0 MOVEQ #0,D2 MOVE.B n_wavecontrol(A6),D2 LSR.B #4,D2 AND.B #$03,D2 BEQ~.S mt_tre_sine LSL.B #3,D0 CMP.B #1,D2 BEQ.S mt_tre_rampdown MOVE.B #255,D2 BRA.S mt_tre_set mt_tre_rampdown TST.B n_vibratopos(A6) BPL.S mt_tre_rampdown2 MOVE.B #255,D2 SUB.B D0,D2 BRA.S mt_tre_set mt_tre_rampdown2 MOVE.B D0,D2 BRA.S mt_tre_set mt_tre_sine MOVE.B 0(A4,D0.W),D2 mt_tre_set MOVE.B n_tremolocmd(A6),D0 AND.W #15,D0 MULU D0,D2 LSR.W #6,D2 MOVEQ #0,D0 MOVE.B n_volume(A6),D0 TST.B n_tremolopos(A6) BMI.S mt_TremoloNeg ADD.W D2,D0 BRA.S mt_Tremolo3 mt_T~)'remoloNeg SUB.W D2,D0 mt_Tremolo3 BPL.S mt_TremoloSkip CLR.W D0 mt_TremoloSkip CMP.W #$40,D0 BLS.S mt_TremoloOk MOVE.W #$40,D0 mt_TremoloOk MOVE.W D0,8(A5) MOVE.B n_tremolocmd(A6),D0 LSR.W #2,D0 AND.W #$003C,D0 ADD.B D0,n_tremolopos(A6) RTS mt_SampleOffset MOVEQ #0,D0 MOVE.B n_cmdlo(A6),D0 BEQ.S mt_sononew MOVE.B D0,n_sampleoffset(A6) mt_sononew MOVE.B n_sampleoffset(A6),D0 LSL.W #7,D0 CMP.W n_length(A6),D0 BGE.S mt_sofskip SUB.W D0,n_length(A6) LSL.W #1,D0 AD~)D.L D0,n_start(A6) RTS mt_sofskip MOVE.W #$0001,n_length(A6) RTS mt_VolumeSlide MOVEQ #0,D0 MOVE.B n_cmdlo(A6),D0 LSR.B #4,D0 TST.B D0 BEQ.S mt_VolSlideDown mt_VolSlideUp ADD.B D0,n_volume(A6) CMP.B #$40,n_volume(A6) BMI.S mt_vsuskip MOVE.B #$40,n_volume(A6) mt_vsuskip MOVE.B n_volume(A6),D0 MOVE.W D0,8(A5) RTS mt_VolSlideDown MOVEQ #0,D0 MOVE.B n_cmdlo(A6),D0 AND.B #$0F,D0 mt_VolSlideDown2 SUB.B D0,n_volume(A6) BPL.S mt_vsdskip CLR.B n_volume(A6) mt_vsdskip M~bW;OVE.B n_volume(A6),D0 MOVE.W D0,8(A5) RTS mt_PositionJump MOVE.B n_cmdlo(A6),D0 SUBQ.B #1,D0 MOVE.B D0,mt_SongPos mt_pj2 CLR.B mt_PBreakPos ST mt_PosJumpFlag RTS mt_VolumeChange MOVEQ #0,D0 MOVE.B n_cmdlo(A6),D0 CMP.B #$40,D0 BLS.S mt_VolumeOk MOVEQ #$40,D0 mt_VolumeOk MOVE.B D0,n_volume(A6) MOVE.W D0,8(A5) RTS mt_PatternBreak MOVEQ #0,D0 MOVE.B n_cmdlo(A6),D0 MOVE.L D0,D2 LSR.B #4,D0 MULU #10,D0 AND.B #$0F,D2 ADD.B D2,D0 CMP.B #63,D0 BHI.S mt_pj2 MOVE.B ~e,D0,mt_PBreakPos ST mt_PosJumpFlag RTS mt_SetSpeed MOVE.B 3(A6),D0 BEQ mt_Return2 CLR.B mt_counter MOVE.B D0,mt_speed RTS mt_CheckMoreEfx BSR mt_UpdateFunk MOVE.B 2(A6),D0 AND.B #$0F,D0 CMP.B #$9,D0 BEQ mt_SampleOffset CMP.B #$B,D0 BEQ mt_PositionJump CMP.B #$D,D0 BEQ.S mt_PatternBreak CMP.B #$E,D0 BEQ.S mt_E_Commands CMP.B #$F,D0 BEQ.S mt_SetSpeed CMP.B #$C,D0 BEQ mt_VolumeChange BRA mt_PerNop mt_E_Commands MOVE.B n_cmdlo(A6),D0 AND.B #$F0,D0 LSR.B #4,D0 ~ W BEQ.S mt_FilterOnOff CMP.B #1,D0 BEQ mt_FinePortaUp CMP.B #2,D0 BEQ mt_FinePortaDown CMP.B #3,D0 BEQ.S mt_SetGlissControl CMP.B #4,D0 BEQ mt_SetVibratoControl CMP.B #5,D0 BEQ mt_SetFineTune CMP.B #6,D0 BEQ mt_JumpLoop CMP.B #7,D0 BEQ mt_SetTremoloControl CMP.B #9,D0 BEQ mt_RetrigNote CMP.B #$A,D0 BEQ mt_VolumeFineUp CMP.B #$B,D0 BEQ mt_VolumeFineDown CMP.B #$C,D0 BEQ mt_NoteCut CMP.B #$D,D0 BEQ mt_NoteDelay CMP.B #$E,D0 BEQ mt_PatternDelay CMP.B #$F,D0 BE~!/=XQ mt_FunkIt RTS mt_FilterOnOff MOVE.B n_cmdlo(A6),D0 AND.B #1,D0 ASL.B #1,D0 AND.B #$FD,$BFE001 OR.B D0,$BFE001 RTS mt_SetGlissControl MOVE.B n_cmdlo(A6),D0 AND.B #$0F,D0 AND.B #$F0,n_glissfunk(A6) OR.B D0,n_glissfunk(A6) RTS mt_SetVibratoControl MOVE.B n_cmdlo(A6),D0 AND.B #$0F,D0 AND.B #$F0,n_wavecontrol(A6) OR.B D0,n_wavecontrol(A6) RTS mt_SetFineTune MOVE.B n_cmdlo(A6),D0 AND.B #$0F,D0 MOVE.B D0,n_finetune(A6) RTS mt_JumpLoop TST.B mt_counter BNE mt_R~"xeturn2 MOVE.B n_cmdlo(A6),D0 AND.B #$0F,D0 BEQ.S mt_SetLoop TST.B n_loopcount(A6) BEQ.S mt_jumpcnt SUBQ.B #1,n_loopcount(A6) BEQ mt_Return2 mt_jmploop MOVE.B n_pattpos(A6),mt_PBreakPos ST mt_PBreakFlag RTS mt_jumpcnt MOVE.B D0,n_loopcount(A6) BRA.S mt_jmploop mt_SetLoop MOVE.W mt_PatternPos(PC),D0 LSR.W #4,D0 MOVE.B D0,n_pattpos(A6) RTS mt_SetTremoloControl MOVE.B n_cmdlo(A6),D0 AND.B #$0F,D0 LSL.B #4,D0 AND.B #$0F,n_wavecontrol(A6) OR.B D0,n_wavecontrol(A6) R~#TMTS mt_RetrigNote MOVE.L D1,-(SP) MOVEQ #0,D0 MOVE.B n_cmdlo(A6),D0 AND.B #$0F,D0 BEQ.S mt_rtnend MOVEQ #0,D1 MOVE.B mt_counter(PC),D1 BNE.S mt_rtnskp MOVE.W (A6),D1 AND.W #$0FFF,D1 BNE.S mt_rtnend MOVEQ #0,D1 MOVE.B mt_counter(PC),D1 mt_rtnskp DIVU D0,D1 SWAP D1 TST.W D1 BNE.S mt_rtnend mt_DoRetrig MOVE.W n_dmabit(A6),$DFF096 ; Channel DMA off MOVE.L n_start(A6),(A5) ; Set sampledata pointer MOVE.W n_length(A6),4(A5) ; Set length BSR RasterWait MOVE.W n_dmabit(~$I/A6),D0 BSET #15,D0 MOVE.W D0,$DFF096 BSR RasterWait MOVE.L n_loopstart(A6),(A5) MOVE.L n_replen(A6),4(A5) mt_rtnend MOVE.L (SP)+,D1 RTS mt_VolumeFineUp TST.B mt_counter BNE mt_Return2 MOVEQ #0,D0 MOVE.B n_cmdlo(A6),D0 AND.B #$F,D0 BRA mt_VolSlideUp mt_VolumeFineDown TST.B mt_counter BNE mt_Return2 MOVEQ #0,D0 MOVE.B n_cmdlo(A6),D0 AND.B #$0F,D0 BRA mt_VolSlideDown2 mt_NoteCut MOVEQ #0,D0 MOVE.B n_cmdlo(A6),D0 AND.B #$0F,D0 CMP.B mt_counter(PC),D0 BNE mt_Ret~%Mb.urn2 CLR.B n_volume(A6) MOVE.W #0,8(A5) RTS mt_NoteDelay MOVEQ #0,D0 MOVE.B n_cmdlo(A6),D0 AND.B #$0F,D0 CMP.B mt_Counter,D0 BNE mt_Return2 MOVE.W (A6),D0 BEQ mt_Return2 MOVE.L D1,-(SP) BRA mt_DoRetrig mt_PatternDelay TST.B mt_counter BNE mt_Return2 MOVEQ #0,D0 MOVE.B n_cmdlo(A6),D0 AND.B #$0F,D0 TST.B mt_PattDelTime2 BNE mt_Return2 ADDQ.B #1,D0 MOVE.B D0,mt_PattDelTime RTS mt_FunkIt TST.B mt_counter BNE mt_Return2 MOVE.B n_cmdlo(A6),D0 AND.B #$0F,D0 LSL~&XH0X.B #4,D0 AND.B #$0F,n_glissfunk(A6) OR.B D0,n_glissfunk(A6) TST.B D0 BEQ mt_Return2 mt_UpdateFunk MOVEM.L D1/A0,-(SP) MOVEQ #0,D0 MOVE.B n_glissfunk(A6),D0 LSR.B #4,D0 BEQ.S mt_funkend LEA mt_FunkTable(PC),A0 MOVE.B (A0,D0.W),D0 ADD.B D0,n_funkoffset(A6) BTST #7,n_funkoffset(A6) BEQ.S mt_funkend CLR.B n_funkoffset(A6) MOVE.L n_loopstart(A6),D0 MOVEQ #0,D1 MOVE.W n_replen(A6),D1 ADD.L D1,D0 ADD.L D1,D0 MOVE.L n_wavestart(A6),A0 ADDQ.L #1,A0 CMP.L D0,A0 BLO.S m~'`c t_funkok MOVE.L n_loopstart(A6),A0 mt_funkok MOVE.L A0,n_wavestart(A6) MOVEQ #-1,D0 SUB.B (A0),D0 MOVE.B D0,(A0) mt_funkend MOVEM.L (SP)+,D1/A0 RTS RasterWait ;Wait 7 rasterlines movem.w d0-d1,-(sp) move.b $dff006,d0 addq.b #7,d0 1$ move.b $dff006,d1 cmp.b d1,d0 bne.s 1$ movem.w (sp)+,d0-d1 rts mt_FunkTable dc.b 0,5,6,7,8,10,11,13,16,19,22,26,32,43,64,128 mt_VibratoTable dc.b 0, 24, 49, 74, 97,120,141,161 dc.b 180,197,212,224,235,244,250,253 dc.b 255,253,250,24~(r4,235,224,212,197 dc.b 180,161,141,120, 97, 74, 49, 24 mt_PeriodTable ; Tuning 0, Normal dc.w 856,808,762,720,678,640,604,570,538,508,480,453 dc.w 428,404,381,360,339,320,302,285,269,254,240,226 dc.w 214,202,190,180,170,160,151,143,135,127,120,113 ; Tuning 1 dc.w 850,802,757,715,674,637,601,567,535,505,477,450 dc.w 425,401,379,357,337,318,300,284,268,253,239,225 dc.w 213,201,189,179,169,159,150,142,134,126,119,113 ; Tuning 2 dc.w 844,796,752,709,670,632,597,563,532,502,474,4~)I47 dc.w 422,398,376,355,335,316,298,282,266,251,237,224 dc.w 211,199,188,177,167,158,149,141,133,125,118,112 ; Tuning 3 dc.w 838,791,746,704,665,628,592,559,528,498,470,444 dc.w 419,395,373,352,332,314,296,280,264,249,235,222 dc.w 209,198,187,176,166,157,148,140,132,125,118,111 ; Tuning 4 dc.w 832,785,741,699,660,623,588,555,524,495,467,441 dc.w 416,392,370,350,330,312,294,278,262,247,233,220 dc.w 208,196,185,175,165,156,147,139,131,124,117,110 ; Tuning 5 dc.w 826,779,736,69~*4,655,619,584,551,520,491,463,437 dc.w 413,390,368,347,328,309,292,276,260,245,232,219 dc.w 206,195,184,174,164,155,146,138,130,123,116,109 ; Tuning 6 dc.w 820,774,730,689,651,614,580,547,516,487,460,434 dc.w 410,387,365,345,325,307,290,274,258,244,230,217 dc.w 205,193,183,172,163,154,145,137,129,122,115,109 ; Tuning 7 dc.w 814,768,725,684,646,610,575,543,513,484,457,431 dc.w 407,384,363,342,323,305,288,272,256,242,228,216 dc.w 204,192,181,171,161,152,144,136,128,121,114,108 ~+]O; Tuning -8 dc.w 907,856,808,762,720,678,640,604,570,538,508,480 dc.w 453,428,404,381,360,339,320,302,285,269,254,240 dc.w 226,214,202,190,180,170,160,151,143,135,127,120 ; Tuning -7 dc.w 900,850,802,757,715,675,636,601,567,535,505,477 dc.w 450,425,401,379,357,337,318,300,284,268,253,238 dc.w 225,212,200,189,179,169,159,150,142,134,126,119 ; Tuning -6 dc.w 894,844,796,752,709,670,632,597,563,532,502,474 dc.w 447,422,398,376,355,335,316,298,282,266,251,237 dc.w 223,211,199,18~,u^X8,177,167,158,149,141,133,125,118 ; Tuning -5 dc.w 887,838,791,746,704,665,628,592,559,528,498,470 dc.w 444,419,395,373,352,332,314,296,280,264,249,235 dc.w 222,209,198,187,176,166,157,148,140,132,125,118 ; Tuning -4 dc.w 881,832,785,741,699,660,623,588,555,524,494,467 dc.w 441,416,392,370,350,330,312,294,278,262,247,233 dc.w 220,208,196,185,175,165,156,147,139,131,123,117 ; Tuning -3 dc.w 875,826,779,736,694,655,619,584,551,520,491,463 dc.w 437,413,390,368,347,328,309,292,27~-+8#6,260,245,232 dc.w 219,206,195,184,174,164,155,146,138,130,123,116 ; Tuning -2 dc.w 868,820,774,730,689,651,614,580,547,516,487,460 dc.w 434,410,387,365,345,325,307,290,274,258,244,230 dc.w 217,205,193,183,172,163,154,145,137,129,122,115 ; Tuning -1 dc.w 862,814,768,725,684,646,610,575,543,513,484,457 dc.w 431,407,384,363,342,323,305,288,272,256,242,228 dc.w 216,203,192,181,171,161,152,144,136,128,121,114 mt_chan1temp dc.l 0,0,0,0,0,$00010000,0, 0,0,0,0 mt_chan2temp dc.l 0,0~.èR',0,0,0,$00020000,0, 0,0,0,0 mt_chan3temp dc.l 0,0,0,0,0,$00040000,0, 0,0,0,0 mt_chan4temp dc.l 0,0,0,0,0,$00080000,0, 0,0,0,0 mt_SampleStarts dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 mt_SongDataPtr dc.l 0 mt_speed dc.b 6 mt_counter dc.b 0 mt_SongPos dc.b 0 mt_PBreakPos dc.b 0 mt_PosJumpFlag dc.b 0 mt_PBreakFlag dc.b 0 mt_LowMask dc.b 0 mt_PattDelTime dc.b 0 mt_PattDelTime2 dc.b 0,0 mt_PatternPos dc.w 0 mt_DMACONtemp dc.w 0 ; incdir 'st-00:modF /2b QSystemp JpLSetMap"} $KH瀀,y# <"<N:"@LfpNu*I/ +@+HN(@CpN+@fH.<,xNL`pd`j#Jgڑ , 0H0EG @pB0& - mC ! RB)g\  g  g& "ggB  g`B`g0 "g *f  Ng nfr ` Eg efr`BB GL Hm/N# N$##`vA\NA\N+@ #/B,m$@ *$g @"(NA"$<ANJg:+@# ##)@)@ @ (g)@Np` /$,yN(@*l.M*_/"-g,mN,y -g"@NbJ g N|"m N"M <N. Nudos.libraryNIL: nPJ>t D8 "A$H $/ $|`,SR0@ |BJg0@ |B 0/N4XJRfJgHyN0XJg$Jg/9NX/9NDX/9ND/NPLNu /"/#:#&Hx<$.$n &|(|*<BHyN#Pf HxNXJfBHyN#PgxBC`Z"y0C,H F )$/0N,#Xg0Hy "y/)6N(Pf&/9NBXRC0H ymJfFHyPHy(NP`4HyHyv`pf(*`/HyNHx NO "D`* Ae Zc e c e b RJfHyN$@& XfHyHyNPBHSv/HyNJOgHy8Hy"NP#'jBN @*E+H/HjNl&O f"|TA`Jfv"D0RC @ lJf C o Hx NXHnN&&Xg` k h"bf C`J"( fT (Є"g" yl |0RP@ |B!` P g`HnHypNP`| X&/HjNP7| $CA'H(p '@$HSNX$E j ( XfJg"E i$(g/<HxDN$@( Pg/<Hx$N(@( PgxA%H %J E%Hp%@ %@(/ /N*EHUNJ O g* l 'h7| *CA'H(p '@$HSNXXHx$/ NPHx ,D/ NPp'@BN~XL<|N^Nu)\D80|vbPJ6~xn>2vh`XJB( dr$Vvh< h8"|nOnP6Pintuition.libraryicon.libraryKEYMAPNo KEYMAP specified in icons TOOL TYPESe.g. Enter "KEYMAP=usa" in Info menuInternal system errorCannot open icon.libraryUsage: %s keymap.resourceCannot open keymap.resourceThis program requires at least 1.2 romsconsole.deviceInternal system errorCannot open console.deviceDEVS:keymaps/DEVS:keymaps/Cannot open keymap file:џ topaz.fontCancel >6" /,yN,_Nu/,y"/Nj,_Nu/,yN,_Nu/,y"/Nd,_NuH0,yLNL@ Nu(8NK/,yLN,_Nu/,yLN:,_Nu/,y"oN>,_Nu/,y"oNb,_Nu/,y"oN8v},_Nu/,yLN,_Nu/,y"oN,_Nu/,y"o / N.,_Nu/,y oL "/ND,_Nu/,y"o / N,_Nu/,y"o / N,_Nu/,yLN,_Nu/,y oN,_Nu 4H\p/,yLN,_Nu/,y oN,_Nu/,y oN,_Nu0H02,yLL(NLL NuH:(o o"oE:Ot&O,yNpJW xiFg/HoHTNHO OL\NuNu: /Ho//9NO Nu  LN,_Nu/,y oN,_Nu 4H\p/,yLN,_Nu/,y oN,_Nu/,y oN,_Nu0H02,yLL(NLL NuH:(o o"oE:Ot&O,yNpJWW2(e#Format<9 sS5*MgP 7 H瀀,y# <"<N:"@LfpNu*I/ +@+HN(@CpN+@fH.<,xNL`pd`j#Jgڑ , 0H0EG @pB0& - mC ! RB)g\  g  g& "ggB  g`B`g0 "g *f  Ng nfr ` Eg efr`BB GL Hm/N# N##&`vA\NA\N+@ #/B,m$@ *$g @"(NA"$<NJg:+@# ##)@)@ @ (g)@Np` /$,yN(@*l.M*_/"-g,mN,y -g"@NbJ g N|"m N"M <N. Nudos.libraryNIL: nPJ>t  D 8 "AH?84/*$o,B(<&|*<.BNBHyN#O gRBHyN#Pgg:BHx$N#Pg$BHxN#Pg y h!d HxNXJBg `p#*gp0&`fHy$"(A/4NJPg 3`BHy,"(A/4NJPg 3` Hy2"(A/4NJPg SBSpo Bg/Hy6NHxNO Jyf$BHypN#Pf HxNXHy~/*NJPg(j`Hy/* NJPg(j/ N@/ NrPmrB/ N0Pf$HyNHx|NHxNO Hy/*NJPg E `Hy/* NJPg E  E(P` :g /gREs*Jf(E/NrXn(E/NrXmHyrHyNHxN2O `BHyN#Pf HxNX&j$Jg /NBX4*SBf0HxHHx@BBHyDBHy*BNHxNO$ |"E"P`bJg kJf/N Xg /NX`NJf/9/NlJPg/9/NPJPg y"($A/*BN0PgB yHhHyRNHxHHx@BBHy Hy&HyBNJO(g/NBX`|/+N@/+N~,PfHxHHx@BBHy Hy&HyBN->JO g:HxHHx@BBHy Hy&Hy2BNJO g BN2XPSBJBbJg/9N XJgp`p/NXLNu/$/JgHx/9NPJgHx$/9NPJg/9NhXJg/9NhXJg/9NhX/NX$NuH004/&|$|0H/N Xf.HxHHx@BBHy Hy&HyBNJO fJg |g/9BNVP m n &| `H @mn``J@mo @gx @f`< @`mo* @ym @~n@y@0;N$pʈH,4L<$|`b$|,`Z&|D`R$|R`J$|d`B$|v`:$|`2$|`*J*gHyNXBNB`x$|JBg/ / /9*HyNO`B/ HyN/ HyNHxHHx@BBHyDBHyBNO0HH/NXHHL NuH0$/ vr |p0f |p0&`RpnBN @!CX L NurfrD$R~bZRJB:2*"vpjB<zNHB r\FtnzdXN4~hRF8, 8 J^N(   d N < $(V~ 2:zh bx 2L^sintuition.librarygraphics.libraryNOICONSQUICKFFSUsage: %s DRIVE NAME [FFS][NOICONS][QUICK] icon.libraryDRIVEDRIVEDrive not found NAMENAMEInsert disk to be initialized in %s and press RETURNicon.libraryEmptyTry a different diskBad sector. Cannot open deviceDisk changed (no disk)Seek error. No disk in driveNot enough memoryCannot find handlerNot a DOS  hkdiskDisk is write protected *** BREAK Error during format %s failed: %s %s. Cancel:ContinueXOk\pInitialization failed(all data will be erased) ?ROk to Initialize volumerFOk to Initialize disk intis in us )peR`~Warning: disk%from the Disk menuchoose Initializeselect its icon and>To initialize a diskr|Tto be initialized inhPlease insert diskis write protectedr Disk in{~y|`g V{'xt`:6lB>.*|hP2SH88BB$|X(|BN @A&p HyN&@BN @!C##45|( O g0+ H`p;5@ " g0+H`p5@" gp0+`p5@5|5|" g +` <%@" g +` < 'd%@|0%|:%|>" g +B` <%@BHy2HyHTNHTN Og/NHRHTN(4O g / NX0HLNu RNHD(<*   . 85SYS:Trashcan%sTrashcanz2F HNUWUU*?"*r^q".r^q.cf^e,g0,0s0 3,pS`#C?????l UAUWUU*?"*r^q".r^q.cf^e,g0,0s0 3,pS`#C?????p;;NVtH><4. p(@-|$@BnBnB*<-|-||-|Hy2N<#Xfv|`A&-CtHxHntHx/9NJOfvy`^/9HxNVJWDHH@8.H=DPf`JBgBJ9gdB9`NHx/9 NJPfNHyNX`*JfHyNN4#XJfv{`HxBN\Pgv}` y&"(&"C")&Ar Alp @gpP @fv`jp @n 2]DOS@fp @n *+0"+ +N(-k(,+$R".N-@-D,.-F-D,.-F-F-nS,+ݮ,.-FJyf-n//.N(@BHyN-@/.N$@( Og Jg f`|*C/- / / -R/NWD.8.H=DJOgv``>Jyfn-k(,+$`Fx"L`$ F$p""DOSp9"Rmּ$f(COPYBEx`HxBN\Pg` p @n/9HxNVP`%L(%n$". N%@,JEg5|`5| / Nu@JXf / NtX/ NHJEXg |(` |4 +(///HyHnNJBOgHnHy@NP` HnNX/ NtXgRBEJfRE EoR .԰dx"L`BRmv(vH)C v)CHlNHlN nR)HH   v  6 8>p  L~.Rz2|$"F^nNXP*0 p DISK PORT%s cyl %ld, %ld to go Verifying Formatting %s p %s @H@~(InitializeInitializing disk hH8 $/&/BD$|& y h""( A (`| RJfnJg R ((R//NJPg ` RfxJDg> R ((R/HyHy2NHy2HyHyrNpO` R $ck9Jf~B@HLNu o"H`RJf "Nu o"ofNu/ ae zb rpҀ`r NuH 0$o&o` Jfp`"RRp/N$p/NPgpL Nu o`R :gJfBNuNV .". -@HxHnHx/N Ogp`p~N^NuH?0&/$(/($/,|BBN*Pf|`/<HxDN$@. Pg`A%H %J%E%DG(p`" A""A!(R0lr An/ /N/N/N,* OHxD/ N/NO L NuvL t< 4 k2    z%s:drive %sM/,y"/N,_Nu/,y"/N@,_Nu/,y"/N:,_Nu/,y"/NR,_NuH ,yL NL@NuH ,yL NL@Nu/,yN,_Nu/,yN|,_Nu/,yN,_Nu/,y"/N.,_NuH0,yLNL@ Nu/,y"/N,_NuH ,yL N4L@NuH0,yLNL@ Nu,@VІGrg/,y"oN,_Nu/,yLN:,_Nu/,y /N,_Nu/,y"oN,,_Nu/,y"oN>,_Nu/,y"oNb,_Nu/,y"oN8,_Nu/,y"oN,_Nu/,y"o / N.,_Nu/,y /N,_Nu/,y oN,_Nu/,y oL "/ND,_Nu/,y"o / N,_Nu/,yLN,_Nu/,y"oN,_Nu/,y"oN2,_Nu/,yLN,_Nu/,y"oN&,_Nu/,y oN,_Nu0ѹ紲DXl 8L`x/,y"oL N,_Nu/,y"o / N,_Nu/,y"o o /N,_Nu 8/,y oN,_Nu/,y oN,_Nu/,yLN,_Nu,H02,yLL(NLL Nu/,y oN,_Nu/,y oN4,_Nu$8PH:(o o"oE:Ot&O,yNpJWFg/HoHTNO OLJ\NuNu n2ABAHA HA0 2B@H@Nu B@H@HABA"BtҁрnRAQNu/$ B$HBHAЂH@B@ $Nu/$"a$Nu/$"a $Nu/$lD"pJlDF @an4gD$Nu/ @p$lDF"lDF @aH$gD $NuH:&o oCE,yNL\NuNu : NVHxHn/9 NrO gp`.HHN^Nu  /Ho//9NO Nu  oӹ* XB!HNu7H< &//z/N,p(rXfp`f/<Hx"N$@* Pf/NpX`@%C B |B*DBN%@JXg / N` HjNX L ` DiskCopy.infozaz J"P#kJ>>>????????gpa0033308000b DiskCopy.infoהbe8`%H\.info`1L%H InitPrinter DiskCopy FastMemFirst CLI SetMap FixFonts NoFastMem MergeMem Format b.infoYe!r%> QFastMemFirst.info ѩ#*:#`#:h0  1@>@?@@?@s@@@@@@?t@@ww`@@}_X@x@@0 0@@@@@ @@@@@@?@@@G@ZZS i%> CLI.info$ 6# #6? ?  !#!!#     ? CLI.info=܌%?Y SetMap.info )2#!8#~'2(|? &|4>f~@p&I$d d2L$̙&|? 8|4>x~@p8 mf3mfͳf33fـ` >)2#!8#~'2(|? &|4>f~@p&I$d d2L$̙&|? 8|4>x~@p8 mf3mfͳf33fـ` %?CLI