NNNNNNp NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNz@ @! #@%`)+-/13@5`79;=/C@E`GIKMOQ S@UWY[]_a c@e`gikm/ow{} @` @ ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @` @`!A  !A!!#A%a)+-/1!3A5a79;=?A!CAEaGIKMOQSAUaWY[]_a!cAeagikmoq!sAuawy{}!Aa!Aa!Aa!Aa!Aaǁ$ @! #@%`)+-/13@5`79;=/C@E`GIKMOQ S@UWY[]_a c@e`gikm/ow{} @` @ ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @` @`!A  !A!!#A%a)+-/1!3A5a79;=?A!CAEaGIKMOQSAUaWY[]_a!cAeagikmoq!sAuawy{}!Aa!Aa!Aa!Aa!Aaǁ$A519 (hRADATH  1DS_DRAIN130yHOWOLD u LEES DIT `MESKTOP INF P.  1.. ADATH TOS WRGEPACKT TXT UITPAKKNHOE v+. ‹.. ‹IMG_MAKE zMEGA STEzRCS2PTCH yRSRC_CON yTEXTE z V_GTEXT z DS_DRAININF anxDS_DRAINPRG twyDS_HILFETXT ]nn. ‹.. ‹IMG_MAKEPRG N>*README TXT . Ë.. ËSOURCE zSTECACHEINF OzSTECACHEPRG c H. Ë.. ËSTECACHEC c/STECACHEPRJ yWSTECAC_RC :STECAC_RH STECAC_RHRD STECAC_RRSC j. Ë.. ËRCS2PTCHLST VbnRSC2_TSTDFN aR RSC2_TSTRSC aR !. Ë.. ËRSC_INSTPAS WaRRSRC_CONO YaR RSRC_CONS [aRf%. ċ .. ċDATE_130TXT W'FEHLER TXT a_n,FGFA_ERR TXT `n0OPCODE TXT V20OPC_0X0 TXT w_n?READ_131TXT UAPST_HILFETXT ]nVE`. ċ .. ċV_GTEXT INL ؒEo@V_GTEXT LST ڒEp V_GTEXT S Eq V_GTEXTAINL EsV_GTEXTALST EtCV_GTEXTAS Eu . ċ .. ċHOWOLD DOC 烺PHOWOLD PRG (HOWOLD RSC Ar'zHHOWOLD SNG F :fVRSC2_TSTIMAGEpN$n".ҁҁ$N .R-@o&_N\ENP+mlhN\ELNP+mlhN\ENP+mlhN\ENP+mlhN\ENP+mlhN\ENP+mlhN\ENP+mlhN\E NP+mlhN\ENP+mlhN\ENP+mlhN\ENP+mlhN\ENP+mlhN\E*NP+mlhN\ENP+mlhpN`pN-@NpN`pN-@NN\ENP+mlhN\ENP+mlhN\E"NP+mlhN\ENP+mlhpN`pN-@NN\EXNP+mlhN\E~NP+mlhpNFJg pN`pNE6NPN+mlhpN?<N5ZTp-@".FpWHHJgNa[2][Druckerparameter:|Steuerzeichen fr einen|EPSON-Drucker oder ohne|Steuerzeichen?][EPSON|ohne]tN-@LpLfNEPSON FX-80 u.a.E NP+mlh np np!@ np.!@ np?!@ NEENP+mlhNFELNP+mlhNE-1ENP+mlhNF-0ENP+mlhNEENP+mlhNFENP+mlhNS1ENP+mlhNTE NP+mlhNENP+ml!!!!z$$!!~~??~~? ?>8 `8pp0@@0x8<@@p <0??8?0`@`8?q<<1 p  @ 0 0 8  @  0  8 `0``08~1`b`??F_ `?92?0 app`ď@ 1cpɰH`|?{np8@ 8` ?D `8 0@BG8v! `<8$<~b0$!$# @\$ pp$'x A/|ـ0> ` G3<Ú880pp 0<08fx3bF `@` !!#Cappfapb11`Ď#v08׈D?#Pc8~! &^z`Cc;`8A;8?`1<8a>oM0.9c pDYrT'`a00ÄX`0  ?yI)bB I0@͡ 1<a}& L``L‚08xp0}Yc! p~>f>; "A``}Չp?yq< k>@Nf(>1 3ƒ8C#$cǀA2$!p` >~<8 <~@ ax`B` @ <cp3DLǀ`y$%1?<,6@<8p#p3<yg>@ D#|d08qp|18?@cǘ0z?}?0 ?  `@1|@0 ?@0 `0`#@ b`90@ @0a1$" $ !z"!H0 .p/NÞXL N6$N8 ist keine|Zeile mehr fr einen|Termin frei!][Notieren!]NtN+mlh .8Ѯ| .|Ю @p0p-@`F .мм @  @ -@ .|Юм -@p-@ ./ &@ .`> . @0HT-@ . @0HrNHSfR .Ѯ .R-@o&_p-@ .TЮ @ .Ю"@pR .Ю @pJf . @ .0 .rNHSf .TЮ @pR .|ЮP @ .R0 .|Ю @ .Đ|TЮ0 .ĐTЮ-@| .|Ю @p0 .NuNu`<-_|-_p-_-_-_-_|-_x-_t-_p-_l-_h-_d-_`-_\Nu/.\/.`/.d/.h/.l/.p/.t/.x/.|/././.' ' In der Ausgabe 11/91 der ST-Computer wird im Artikel 'Groe ' Bilder im RCS' ein Programmpatch beschrieben, der den internen ' Zwischenspeicher im RCS 1.4 vergrert. So knnen auch Bitblcke ' mit mehr als 2500 Bytes verarbeiten werden. In der Version 2.1, ' die mit GFA-Basic ausgeliefert wird, ist der entsprechende ' Zwischenspeicher sogar nur 2000 Bytes lang. Er trgt den Symbol- ' namen '_WR_OBND'. Fr das RCS2 Version 2.1 gelten folgende Patch- ' adressen: ' ' alte Adresse: $198AA ' neue Adresse: $1C380 ' ' Patches: $1860 ' $187A ' $21BE ' $2410 ' $3A08 ' $3A3E ' $3AAE ' ' ' Das folgende Programm verndert euer RCS2 ! ' Idee fr RCS 1.4 von Jan Willamowius ' zusatz%=16000 !16kB old_adr%=&H198AA DIM patch%(6) patch%(0)=&H1860 patch%(1)=&H187A patch%(2)=&H21BE patch%(3)=&H2410 patch%(4)=&H3A08 patch%(5)=&H3A3E patch%(6)=&H3AAE ' OPEN "u",#1,"RCS2.PRG" !sollte sich um eine Sicherheitkopie handeln SEEK #1,2 txt%=INP%(#1) dat%=INP%(#1) bss%=INP%(#1) RELSEEK #1,-4 OUT% #1,bss%+zusatz% new_adr%=txt%+dat%+bss% ' FOR i&=0 TO 6 SEEK #1,patch%(i&)+&H1C IF INP%(#1)=old_adr% RELSEEK #1,-4 OUT% #1,new_adr% ELSE PRINT "Patch"'HEX$(patch%(i&))'" stimmt nicht!" ENDIF NEXT i& CLOSE #1 ?<N5ZT/.|/.x/.t/./.l/.h/.d/.pNަO p\fp-@-npp-np|p-@dp-@ .|pЮ_".Ү|_@HH .d\HHJgV$n .|pЮЀЀ JgRd .dmR .l-n-n|p-nd`pR|".|pҮ^HH .Ю|^HHJg.-n`p-@p-@p-@ .pR/ &@ .`v .-@ .ЮS/ &@ .`($n .ЀЀ FJgR .R-@Ȱo&_ .l-ną-np-@ .R-@İo&_ .Юp-@p .-@/.p/.l .hN?/ .pN?/N8\ 2N-@h-_l-_p/.|/.x .tN?/ .ЮpSN?/N8\ 2N-@tPROGRAM rsc_install; { Demonstriert wie man Resourcen fest in Pascal einbaut. Hierzu werden die beiden Funktionen aus der Datei 'RSRC_CONV' hinzugelinkt. } const {$I G:\include\gemconst.pas} type {$I G:\include\gemtype.pas} var dialog_adr:dialog_ptr; ex,i,rsh_nobs:integer; {$I G:\include\gemsubs.pas} function make_pointer(a:dialog_ptr):pointer; external; function rsrc_conv(mode:integer):integer; external; procedure rsrc_obfix(tree:dialog_ptr;ob:integer); var gintin:int_in_parms; gintout:int_out_parms; addrin:addr_in_parms; addrout:addr_out_parms; begin gintin[0]:=ob; addrin[0]:=make_pointer(tree); aes_call($72,gintin,gintout,addrin,addrout); end; begin if init_gem>=0 then begin rsh_nobs:=rsrc_conv(0); {Vektor verbiegen - Rckgabewert ist egal} begin_update; {keine Reaktion} rsh_nobs:=rsrc_conv(1); {Vektor zurckbiegen und Resourcen anmelden} find_dialog(0,dialog_adr); {Adresse von Baum 0 berechnen} for i:=0 to pred(rsh_nobs) do rsrc_obfix(dialog_adr,i); {Koordinaten umrechnen} center_dialog(dialog_adr); ex:=do_dialog(dialog_adr,0); {Baum 0 darstellen} end_dialog(dialog_adr); exit_gem; end; end. ZO .Jg/././.N-_-_-_ ./ ./ ./NO tAd2/?/./.NTO+mlh/. .? .? . ? .??< .?N.ZO/. .? .? . ? .??< .P?N0Opf>p-@p-@pf>p-@ .Jgb/. .? .? . ? .??< .?N0O/. .? .? . ? .??< . ?N0O .Jg8p-@/. .? .? . ? .??< .?N0Opf>p-@ .Jgb/. .? .? . ? .??< .?N0O/. .? .? . ? .??< . ?N0O .Jg8p-@/. .? .? . ? .??< .?N0Op fp>p-@ .мxP @p0/. .? .? . ? .??< . ?N0O .мP @p0/. .? .? . ? .??< .?N0O .Jghp-@/. .?`b*_ N*_0J@fHz$` zH!| Hz$?<&NN\09N#Z!NNu!Nu A#^Nsl^$| ______Gebe ein: ______XXX999Icon:Image:EXITRadio 1Radio 1Dies ist ein Text!888||???~|x|<|||((T|(DD-Ā )`E)0) (`0((((?|8px` `)000p?8?00p08````8|?h)|rI0)0$+<fyz * Cl  J^ Q ZA   V ^ RSRC_CONMAKE_POI6$N MinuteNEFNP+mlhpg,CFNl6$Nn.NEFNP+mlh`&CFNl6$N.NEFNP+mlhCFNl6$r2.Jp6N\NEFNP+mlhCFNl/?/.8/.NTO+mlh`J,l .,D-@, .,N 6$N TagNEFNP+mlhp,g,CFNl6$Ne.NEF; RSRC_CONV dient zum Einbinden einer Resource-Datei in ein ST-Pascal plus ; Programm. Dieser assemblierte Code wird als Linkdatei eingefgt. ; Aufruf: function rsrc_conv(mode:integer):integer; ; external: ; 1. mode=0 ; 2. irgendeinen AES-Aufruf in Pascal ttigen ; 3. mode><0 GLOBAL MAKE_POINTER MAKE_POINTER:: movea.l (SP)+,A5 ;verwandelt einen dialog_ptr move.l (SP)+,D0 ;in einen 'normalen' Pointer jmp (A5) ;Pascal lt gren!!! GLOBAL RSRC_CONV RSRC_CONV:: movea.l (SP)+,A5 ;Rcksprungadresse move.w (SP)+,D0 ;mode tst.w D0 bne.s second pea fir(PC) bra.s supexec second: movea.l global(PC),A0 ;Adresse des GLOBAL-Feldes move.l #rs_trees,10(A0) ;Resource anmelden pea sec(PC) supexec: move.w #38,-(SP) trap #14 addq.l #6,SP move.w rsh_nobs,D0 jmp (A5) fir: move.l $88.w,old ;alten Vektor merken move.l #rout,$88.w ;neuen Vektor setzen rts sec: move.l old(PC),$88.w ;alten Vektor wieder einsetzen rts rout: movea.l D1,A0 ;alternativer AES-Aufruf move.l 4(A0),global ;GLOBAL-Pointer merken rte old: DS.L 1 global: DS.L 1 ; und jetzt die vom Desert Drain umgewandelten Resourcen ;Desert Drain V1.20 68000 Disassembler 09.12.1991 15:27:46 ;FILE: AES_INST.RSC 1258 Bytes ;TEXT: 0 $00000 ;DATA: 1258 $004EA ;BSS: 0 $000000 ;SYMBOLE: 38 DATA rsh_vrsn: DC.B $00,$00 rsh_object: DC.B $03,'' rsh_tedinfo: DC.B $03,'' rsh_iconblk: DC.B $03,'l' rsh_bitblk: DC.B $03,'^' rsh_frstr: DC.B $00,$00 rsh_string: DC.B $00,'$' rsh_imdata: DC.B $00,'|' rsh_frimg: DC.B $00,$00 rsh_trindex: DC.B $04,'' rsh_nobs: DC.B $00,$0C rsh_ntree: DC.B $00,$01 rsh_nted: DC.B $00,$02 rsh_nib: DC.B $00,$01 rsh_nbb: DC.B $00,$01 rsh_nstring: DC.B $00,$00 rsh_nimages: DC.B $00,$00 rsh_rssize: DC.B $04,'' rs_st0: DC.B '______',$00 rs_sm0: DC.B 'Gebe ein: ______',$00 rs_ss0: DC.B 'XXX999',$00 rs_o2: DC.B 'Icon:',$00 rs_it0: DC.B $00 rs_o4: DC.B 'Image:',$00 rs_o6: DC.B 'EXIT',$00 rs_o9: DC.B 'Radio 1',$00 rs_o10: DC.B 'Radio 1',$00 rs_st1: DC.B 'Dies ist ein Text!',$00 rs_sm1: DC.B $00 rs_ss1: DC.B $00,$00 rs_im0: DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,'8' DC.B $00,$00,$00,$00,$00,'8',$00,$00,$00,$00,$00 DC.B '8',$00,$00,$00,$00,$00,'|',$00,$00,$00,$00 DC.B $00,'|',$00,$00,$00,$00,$00,'',$00,$00,$00 DC.B $00,$00,'',$00,$00,$00,$00,$01,'',$00,$00 DC.B $00,$00,$01,'',$00,$00,$00,$00,$01,'',$00 DC.B $00,$00,$00,$00,'',$00,$00,$00,$00,$01,'' DC.B $00,$00,$00,$00,$03,'',$00,$00,$00,$03 DC.B '',$00,$00,$00,$03,'',$00,$00,$00,$03 DC.B '',$00,$00,$00,$07,'',$00,$00,$00,$07 DC.B '',$00,$00,$00,$07,'',$00,$00,$00,$07 DC.B '',$00,$00,$00,$1F,'',$00,$00,$00,$1F DC.B '',$00,$00,$00,$1F,'',$00,$00,$00,$0F DC.B '',$00,$00,$00,'?',$00,$00,$00,'?',$00 DC.B $00,$00,'?',$00,$00,$00,$1F,'',$00,$00 DC.B $00,'',$00,$00,$00,'~|',$00,$00,$00,'x' DC.B '|<',$00,$00,$00,$00,'|',$00,$00,$00,$00 DC.B $00,'|',$00,$00,$00,$00,$00,'|',$00,$00,$00 DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 DC.B $00 rs_id0: DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 DC.B $00,$00,$00,$00,$00,$10,$00,$00,$00,$00,$00 DC.B $10,$00,$00,$00,$00,$00,$10,$00,$00,$00,$00 DC.B $00,'(',$00,$00,$00,$00,$00,'(',$00,$00,$00 DC.B $00,$00,'T',$00,$00,$00,$00,$00,'|',$00,$00 DC.B $00,$00,$00,'',$00,$00,$00,$00,$00,'(',$00 DC.B $00,$00,$00,$00,'D',$00,$00,$00,$00,$00,'D' DC.B $00,$00,$00,$00,$00,'',$00,$00,$00,$00,$01 DC.B '',$00,$00,$00,$00,$00,'',$00,$00,$00,$00 DC.B $01,'',$00,$00,$00,$00,$01,'-',$00,$00,$00 DC.B $00,$02,'Ā',$00,$00,$00,$01,'',$00,$00 DC.B $00,$00,$01,'',$00,$00,$00,$00,$02,'',$00 DC.B $00,$00,$0D,')`',$00,$00,$00,$01,'E',$00 DC.B $00,$00,$00,$03,'',$00,$00,$00,$06,'' DC.B $00,$00,$00,$19,')0',$00,$00,$00,$02,'' DC.B $00,$00,$00,$07,')',$00,$00,$00,$0C,'(`' DC.B $00,$00,$00,'0(',$18,$00,$00,$00,$00,'(',$00 DC.B $00,$00,$00,$00,'(',$00,$00,$00,$00,$00,'(' DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 rs_bb0: DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,'?' DC.B '',$00,$00,$00,$01,'',$00,$00,$00,$07 DC.B '|',$00,$00,$00,$1E,$00,$0F,$00,$00,$00 DC.B '8',$00,$03,'',$00,$00,'p',$00,$00,'',$00 DC.B $00,'x',$00,$08,'',$00,$00,'',$00,$10,'`' DC.B $00,$00,'',$00,$0A,'`',$00,$01,'',$00,')' DC.B '0',$00,$01,'',$15,'0',$00,$01,'',$0E DC.B '0',$00,$03,$00,'',$02,$18,$00,$03,$00,'p' DC.B $00,$18,$00,$03,'?',$18,$00,$03,'8',$1C DC.B $1F,$18,$00,$03,'?',$18,$00,$03,$00,$07 DC.B $00,$18,$00,$03,$00,$03,'',$18,$00,$01,'' DC.B $01,'0',$00,$01,'',$00,'0',$00,$01,'' DC.B $00,'p0',$00,$00,'',$00,'8`',$00,$00,'' DC.B $00,$1C,'`',$00,$00,'`',$00,$0E,'',$00,$00 DC.B '`',$00,$07,'',$00,$00,'8',$00,$03,'',$00 DC.B $00,$1E,$00,$0F,$00,$00,$00,$07,'|',$00 DC.B $00,$00,$01,'',$00,$00,$00,$00,'?',$00 DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 DC.B $00,$00,$00,$00,$00,$00,$00,$00,$00 rs_o5: DC.L rs_bb0 DC.B $00,$06,$00,')',$00,$00,$00,$00,$00,$01 rs_o3: DC.L rs_im0 DC.L rs_id0 DC.L rs_it0 DC.B $10,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 DC.B '0',$00,')',$00,$00,$00,$18,$00,'0',$00,$08 rs_o1: DC.L rs_st0 DC.L rs_sm0 DC.L rs_ss0 DC.B $00,$03,$00,$06,$00,$00,$11,'',$00,$00,'' DC.B '',$00,$07,$00,$11 rs_o11: DC.L rs_st1 DC.L rs_sm1 DC.L rs_ss1 DC.B $00,$05,$00,$06,$00,$00,$11,$00,$00,$00,'' DC.B '',$00,$13,$00,$01 rs_t0: DC.B '',$00,$01,$00,$0B,$00,$14,$00,$00,$00 DC.B $10,$00,$02,$11,$00,$00,$00,$00,$00,$00,'*' DC.B $00,$0D,$00,$02,'',$00,$1D,$00,$08,$00 DC.B $00 DC.L rs_o1 DC.B $00,$02,$00,$01,$00,$10,$00,$01,$00,$03,'' DC.B '',$00,$1C,$00,$00,$00,$00 DC.L rs_o2 DC.B $00,$05,$00,$04,$00,$05,$00,$01,$00,$04,'' DC.B '',$00,$1F,$00,$00,$00,$00 DC.L rs_o3 DC.B $00,$0D,$00,$04,$00,$06,$09,$02,$00,$05,'' DC.B '',$00,$1C,$00,$00,$00,$00 DC.L rs_o4 DC.B $00,$16,$00,$04,$00,$06,$00,$01,$00,$06,'' DC.B '',$00,$17,$00,$00,$00,$00 DC.L rs_o5 DC.B $00,$1C,$00,$04,$00,$06,$09,$02,$00,$07,'' DC.B '',$00,$1A,$00,$07,$00,$00 DC.L rs_o6 DC.B $00,$03,$00,$0B,$00,$08,$00,$01,$00,$08,'' DC.B '',$00,$1B,$00,$00,$00,$00,'ZA',$00 DC.B $12,$00,$08,$00,$09,$00,$04,$00,$0A,$00,$09 DC.B $00,$09,$00,$14,$00,$00,$00,$00,$00,$00,$11 DC.B $00,$00,$1D,$00,$08,$00,$0A,$00,$03,$00,$08 DC.B '',$00,$1A,$00,$11,$00,$00 DC.L rs_o9 DC.B $00,$00,$00,$01,$00,$08,$00,$01,$00,$0B,'' DC.B '',$00,$1A,$00,$11,$00,$01 DC.L rs_o10 DC.B $00,$1D,$00,$08,$00,$08,$00,$01,$00,$00,'' DC.B '',$00,$15,$00,' ',$00,$00 DC.L rs_o11 DC.B $00,$15,$00,$02,$00,$12,$00,$01 rs_trees: DC.L rs_t0 END N n.A2 N4NN.NN /?p/ n2 ( /N*ONN. um NN0/?p/ n6A2 N/N*ONN:NN0/?p/ n: ( /N*ONpN\+mlhCRNl6$N xNTS-@+mlhpfp0.V-@+mlhpN\N Angaben in N".pERNNN.NpN\+mlhpN\rNpN\T&_/.L .\? .X? .T? .P??< .P?N0Op Pf/.\/.X/.T/.PN!NONuC0Al#!Af3#!1-_0-_-_pNuCAp/!A/!A0/!Af?/!1Al/!Hz`P-_Af!1A`!1AZ!1AT!1AN!1AH!1AB!1A\!1A!1NuA?/AV?/A Reloc) - Eine Reloziertabelle endet immer mit einem Nullbyte und nicht weiter. Es gibt Programme, bei denen geht ab da noch weiter. SAGROTAN meldet einen Verdacht auf einen Virus! - Es gibt doch tatschlich eine von DR und Atari abgesegnete Symbol- tabelle! Warum benutzt die blo keiner? - Im System-Info erhlt man nun unter 'Linea' noch weitere Infos. - Die Hilfsdatei wurde erheblich erweitert. Sie ist schon viel zu lang! - Die Systemvariablen werden nun auch an 24 Bit Adressen erkannt. z.B. $FF8800 anstatt $FFFF8800 - Am meisten strten bisher die Databereiche im Textsegment. Ab jetzt kann man diese Programmiererabart in den Griff bekommen, indem man die entsprechenden Adressen herausfischt und den Disassembler damit fttert. - Bei groen Quellen strzte Desert Drain gelegentlich auf Rechnern mit viel Ram bereits beim Laden ab. Der Grund liegt in den Befehlen BGET, BPUT und BMOVE. Hchstwahrscheinlich wird hier whrend der Abarbeitung eine Garbage-Collection durchgefhrt. Basic lt gren! - Bei Verwendung von XCONTROL gibt es fters das Problem, da nicht mehr gengend Speicher frei ist. Ihr knnt nun selbst bestimmen wieviel RAM Ihr dem Disassembler zugesteht. l-_D-_pAp1"_! #NuAj$X/ %?B`! /.p/.D/.l/.h/.@/.(/./.t/.x/.|/././././.\/.d/.X/.\A$X/ %?B`! Hz4+mlh/.t/.p/.l/.hN O/.d .t? .p? .l? .h??<?<N.ZO/.P/.d .?N0\-_PpPg ~p/ .d/NȀPEjNP+mlhCjNlNLN-@p+mlhCjNl/?/./.NTO+mlhrpErNENP+mlhr2.prH4H´f iHP`LN/.| .? .? .? .??< .?N0Op l:S//.| .? .? .? .??< .?N0O .o:R/D G=0 : -> Rx.w 1 : Rx->A 1 : -> Rx.l unerlaubte Adresierungsarten: gelten im folgenden immer fr R (meistens Quelle) * d(PC),d(PC,R.?),# ** A,* *** D,A,* **** A ***** D,A,-(A),(A)+,# 6* bei A kein ?.b 7* 6*,* Abkrzungen: R : Register aller Art Y : Register im zweiten Nibble (von oben) X : Register im vierten Nibble (von oben) D : Datenregister A : Adressregister M : Adressierungsmodus K : Konstante N : Nummer G : Datenformat ( %00=.b %01=.w %10=.l ) +X : Erweiterung je nach Datenformat +W : nchstes Wort als wortlange Konstante +Wb : nchstes Wort als bytelange Konstante +W31 : nchstes Wort als Konstante von 0..31 wenn R=D, sonst W31=0..7 LINE 0 0000 0000 GGMM MRRR +X ori.? #k,R ** 0011 1100 +Wb ori #k,ccr 0111 1100 +W ori #k,sr 0000 0010 GGMM MRRR +X andi.? #k,R ** 0011 1100 +Wb andi #k,ccr 0111 1100 +W andi #k,sr 0000 0010 GGMM MRRR +X eori.? #k,R ** 0011 1100 +Wb eori #k,ccr 0111 1100 +W eori #k,sr 0000 0100 GGMM MRRR +X subi.? #k,R ** 0000 0110 GGMM MRRR +X addi.? #k,R ** 0000 1100 GGMM MRRR +X cmpi.? #k,R ** 0000 1000 00MM MRRR +W31 btst #k,R ** 01 bchg #k,R ** 10 bclr #k,R ** 11 bset #k,R ** 0000 DDD1 00MM MRRR btst D,R ** DDD1 0000 1AAA +W movep.w k(A),D DDD1 01MM MRRR bchg D,R ** DDD1 0100 1AAA +W movep.l k(A),D DDD1 10MM MRRR bclr D,R ** DDD1 1000 1AAA +W movep.w D,k(A) DDD1 11MM MRRR bset D,R ** DDD1 1100 1AAA +W movep.l D,k(A) LINE 1 0001 YYYM MMMM MXXX move.b X,Y -,7* LINE 2 0010 YYYM MMMM MXXX move.l X,Y -,* LINE 3 0011 YYYM MMMM MXXX move.w X,Y -,* LINE 4 0100 0000 GGMM MRRR negx.? R ** 11MM MRRR move sr,R ** 0100 0010 GGMM MRRR clr.? R ** 0100 0100 GGMM MRRR neg.? R ** 11MM MRRR move R,ccr **** 0100 0110 GGMM MRRR not.? R ** 11MM MRRR move R,sr **** 0100 1000 00MM MRRR nbcd R ** 01MM MRRR pea R ***** 0100 0DDD swap D 1NNN bkpt #N 10MM MRRR +W movem.w Liste,R siehe MOVEM 1000 0DDD ext.w D 11MM MRRR +W movem.l Liste,R siehe MOVEM 1100 0DDD ext.l D 0100 1010 GGMM MRRR tst.? R ** 11MM MRRR tas.b R ** 1111 1100 illegal 0100 1100 10MM MRRR +W movem.w R,Liste siehe MOVEM 11MM MRRR +W movem.l R,Liste siehe MOVEM 0100 1110 0100 NNNN trap #N 0101 0AAA +W link A,#k 1AAA unlk A 0110 0AAA move A,USP 1AAA move USP,A 0111 0000 reset 0001 nop 0010 +W stop #k 0011 rte 0101 rts 0110 trapv 0111 rtr 10MM MRRR jsr R ***** 11 jmp R ***** 0100 DDD1 10MM MRRR chk R,D **** AAA1 11MM MRRR lea R,A ***** MOVEM erlaubte Adressierungen: Register -> Speicher : (A),-(A),d(A),d(A,R),$W,$L Speicher -> Register : (A),(A)+,d(A),d(A,R),$W,$L d(PC),d(PC,R) Codierung der Registerliste: BIT 15 14 13 08 07 02 01 00 bei Pre-Dekrement: D0 D1 D2...D7 A0...A5 A6 A7 sonst: A7 A6 A5...A0 D7...D2 D1 D0 Ablage im Heap: 1. opcode 2. Registerliste 3. Adressierungsart LINE 5 0101 KKK0 GGMM MRRR addq.? #k,R 7* (k= 08) 1 subq.? #k,R 7* (k= 08) 0101 CCCC 1100 1DDD +W db?? D,label siehe CCR 11MM MRRR s?? R ** siehe CCR LINE 6 0110 CCCC kkkk kkkk b??.s label siehe CCR 0000 0000 +W b?? label siehe CCR CCR (Conditional Code Register) 0000 bra - st 0100 cc 1000 vc 1100 ge 0001 bsr dbra sf 0101 cs 1001 vs 1101 lt 0010 bhi dbhi shi 0110 ne 1010 pl 1110 gt 0011 bls dbls sls 0111 eq 1011 mi 1111 le LINE 7 0111 DDD0 kkkk kkkk moveq #k,D LINE 8 1000 DDD0 GGMM MRRR or.? R,D **** 11 divu R,D **** 1000 DDD1 GGMM MRRR or.? D,R *** YYY1 0000 0XXX sbcd Dx,Dy YYY1 0000 1XXX sbcd -(Ax),-(Ay) DDD1 11MM MRRR divs R,D **** LINE 9 1001 DDD0 GGMM MRRR sub.? R,D 6* AAA0 11MM MRRR suba.w R,A 1001 DDD1 GGMM MRRR sub.? D,R *** YYY1 GG00 0XXX subx.? Dx,Dy YYY1 GG00 1XXX subx.? -(Ax),-(Ay) AAA1 11MM MRRR suba.l R,A LINE A 1010 0000 0000 NNNN linea #N LINE B 1011 DDD0 GGMM MRRR cmp.? R,D 6* AAA0 11MM MRRR cmpa.w R,A 1011 DDD1 GGMM MRRR eor.? D,R ** YYY1 GG00 1XXX cmpm.? (Ax)+,(Ay)+ AAA1 11MM MRRR cmpa.l R,A LINE C 1100 DDD0 GGMM MRRR and.? R,D 11MM MRRR mulu R,D **** 1100 DDD1 GGMM MRRR and.? D,R *** YYY1 0000 0XXX abcd Dx,Dy 1 abcd -(Ax),-(Ay) YYY1 0100 0XXX exg Dy,Dx 1 exg Ay,Ax DDD1 1000 1AAA exg A,D DDD1 11MM MRRR muls R,D **** LINE D 1101 DDD0 GGMM MRRR add.? R,D 6* AAA0 11MM MRRR adda.w R,A 1101 DDD1 GGMM MRRR add.? D,R *** YYY1 GG00 0XXX addx.? Dx,Dy YYY1 GG00 1XXX addx.? -(Ax),-(Ay) AAA1 11MM MRRR adda.l R,A LINE E 1110 YYYP GGKS SDDD ???.? ?,D [SSP.G Y,D] 1110 0SSP 11MM MRRR ???.w R *** [SSP.w R] P=0 : rechts 1 : links K=0 : Y=Konstante (08) 1 : Y=Datenregister SS=%00 : AS %01 : LS %10 : ROX %11 : RO PROGRAMMHEADER offset length $0 2 branch ($601A) 2 4 Lnge des TEXT-Segmentes 6 4 Lnge des DATA-Segmentes A 4 Lnge des BSS E 4 Lnge der Symboltabelle 12 4 ??? 16 4 Header-Flags ab TOS 1.4: Bit 0: Fast-Load-Bit (nur den Speicher frs BSS lschen) ab TOS 3.0: 1: Das Programm wird ins Fast-Ram geladen 2: mit malloc() erhlt man Speicherblcke mglichst aus dem Fast-Ram 3..27: reserviert 28..31: TPA-Grenfeld (0-15 bedeutet: Programm belegt 128k-2048kByte) 1A 2 =0 : Relozierinformationen vorhanden 1C - TEXT-Segment + - DATA-Segment + - Symboltabelle bis EOF - Reloziertabelle SYMBOLTABELLE offset length $0 8 String 8 2 Kennung A 4 Offset-Adresse =14 Bytes pro Symbol Kennungen der GFA-Basic/ST-Pascal plus Symboltabelle $00A1 zeigt ins BSS $00A2 zeigt ins TEXT-Segment $00A4 zeigt ins DATA-segment $00E0 MEMSIZE Kennungen der Digital-Research-Symboltabelle $0200 zeigt ins TEXT-Segment $0400 zeigt ins DATA-segment $0100 zeigt ins BSS Alle Adressen werden ab Programmanfang gezhlt! Kennungen der TurboAss Symboltabelle $00C0 EQU (wird von Desert Drain nicht ausgewertet) $0081 zeigt ins BSS $0082 zeigt ins TEXT-Segment $0084 zeigt ins DATA-Segment Alle Adressen werden ab Segmentanfang gezhlt! RELOZIERTABELLE Sie steht hinter der Symboltabelle und enthlt Informationen ber die zu relozierenden 4 Byte Adressen im TEXT und DATA- Segment. erstes Langwort: erster Offset ab Programmanfang danach byteweise: Wert=$01: Zhler+$FE sonst: Zhler+Wert ->Zieladresse Das Ende ist durch ein Nullbyte gekennzeichnet. Was dann noch kommt, ist ein Linkvirus oder Linkerfehler! Beispiel: $0000 $0102 ->$102=258 $0101 +2*$FE $01EC +$FE+$EC=$3E6 ->$4E8=1256 $2A06 +$2A ->$512=1298 +$06 ->$518=1304 usw. Die Langworte in den rechts stehenden Adressen mssen vor Programmstart vom Betriebssystem reloziert werden! /.NO+mlhCNl/?/.l/.NO+mlhCXNl/?/. /.NO+mlhC~Nl/?/.$/.NO+mlhCNl/?/./.NO+mlhCNl/?/./.NO+mlhC"Nl/?/./.NO+mlhCNl/?/.,/.NO+mlh/./././.N Op-@PpPfz/. .? .? .? .??<?<N.ZO/.P/.?<N0\-_P/.?< .P?N/PrPWpPWAHHJgpPfz/. .? .? .? .??<?<N.ZO/.P/.?<N0\-_P/.?< .P?N/PrPWpPWAHHJgrPWpPWAHHJg/./././.N!NOp/ ./NɖPSf p -@`p-@+mlhp/ ./NɖPSf p+-@`p"-@+mlhp/ ./NɖPSf$NEPSONE6NP+mlhNDNx+mlhp/Opcodes erweiterter Prozessoren 68010 movec.l 0100 1110 0111 101r aXXX SSSS SSSS SSSS r : Datenrichtung r=0 : movec.l Steuer,X r=1 : movec.l X,Steuer a : Adress- (1) oder Datenregister (0) s : Steuerregister $0 : SFC $1 : DFC $2 : CACR $800 : USP $801 : VBR $802 : CAAR $803 : MSP $804 : ISP rtd #Adressdistanz 0100 1110 0111 0100 +16 Bit Adressdistanz moves 0000 1110 GGMM MRRR aYYY r000 0000 0000 r : Datenrichtung r=0 : moves.? ,Y r=1 : moves.? Y, a : Y ist Adress- (1) oder Datenregister (0) G,M,R : Schlssel fr (siehe 68000 Opcodes) 68020 mul?.l 0100 1100 00MM MXXX aYYY r000 0000 0000 r = 0 : mulu.l X,Y r = 1 : muls.l X,Y a : Y ist Adress- (1) oder Datenregister (0) div?.l 0100 1100 01MM MXXX aYYY r000 0000 0000 r = 0 : divu.l X,Y r = 1 : divs.l X,YY a : Y ist Adress- (1) oder Datenregister (0) /./.@NTO+mlhNu`2-_-_@+_lNuC/-l+mhlA@/!A/!Hz`$-_-_AL1"_! #A1"_! #NuA$X/ %?B`! AF$X/ %?B`! /./.Hz+mlh ./ .@/NȀPENP+mlhp0.rNHJg6CNl6$p0.rNH"pN\NENP+mlh+mlhrEFNP+mlhp-@p0.rH4H´f iHP`LN=1.4) und ein spteres Update frei Haus. Alle weiteren Updates kosten je 10,- DM. Da Ihr natrlich nicht sie Katze im Sack kaufen sollt, hier ein paar Erweiterungen der Version 1.40 : - Der Editor wurde nochmals berarbeitet und ist nun etwas schneller. - Die Benutzeroberflche ist durch erweiterte Dialogboxen noch freundlicher geworden. - Eine Symboltabelle kann nun verndert, erweitert, abgespeichert und neu eingebunden werden. - Das Einsetzen der Symbole geht nun wesentlich schneller. - Fr jede Quelle kann eine Parameterdatei unter beliebigem Pfad abgespeichert werden. - Nach einfacher Vorarbeit durch den Bediener ist es mglich, da auch AES- und VDI-Traps erkannt werden. - Das bisherige Benennen der OS-Traps luft etwas flexibler ab. - Desert Drain 1.4 ist ca. 130kB lang. Also nichts fr groe Geister mit kleinen Speichern. u.n.v.a.m. Nun aber ein paar Worte zu meinem Programm: Zu Desert Drain ('wster Abflu' - kein Kommentar) gehren folgende Dateien: - DS_DRAIN.PRG Programmdatei (incl. 16kB RSC-Datei, siehe ST-Computer 9/91) - DS_HILFE.TXT Hifstext mit Symbolnamen - OPCODE.TXT Textdatei mit Opcodes und Hintergrund- informationen fr Disassembler - READ_130.TXT dieser Text - DATE_130.TXT kurzes Update-Info zur Version 1.2 - FEHLER.TXT einige Fehlerbeschreibungen und deren Lsung - und noch einiges mehr... Das Programm luft in jeder Auflsung mit mindestens 640 Pixel Bildbreite (mittlere und hohe ST-Auflsung). Testen konnte ich es unter TOS 1.02 und 2.05. Bei Verwendung von Quick ST2-Demo gab es leichte Probleme mit 'crossed'-Buttons (???). Mit Turbo ST luft es einwandfrei. Der freie Speicher sollte nicht kleiner als 512 kB sein, aber je mehr desto besser. Zur folgenden Programmbeschreibung ein kleiner Tip von mir: Ladet doch diesen Text mit 'Hilfe laden' oder 'ASCII laden' (kein Spartabulator!) ein und schaut euch alles 'vor Ort' an. Dann wird es auch nicht so langweilig und Ihr behaltet den ber- blick. kurzes Inhaltsverzeichnis: 1. Quelle laden 2. Optionen 3. Disassembler 4. Editor 5. Editor-Optionen 6. System-Info 7. Hilfsdatei 8. Wie arbeite ich mit Desert Drain? 1. Quelle laden 1.1. Programmdatei laden In der Fileselectbox kann man eine Programmdatei (PRG,TOS,APP, TTP,ACC) auswhlen. Es werden folgende Segmente erkannt und geladen: - Programmheader - Segmentlngen - Fast-Load-Bit - Headerbits fr den TT - TEXT-Segment - DATA-Segment - Symboltabelle - Reloziertabelle Es sollte sich unbedingt um eine Programmdatei mit dem entsprechenden Header handeln, andernfalls drohen nette kleine Abstrze. Wenn es eine gleichnamige Datei mit der Extension "DBT" gibt, wird diese mitgeladen - aber dazu spter mehr. 1.2. Programmteil laden Arbeitet wie 'Programmdatei laden' (zumindest hoffe ich es - war schwieriger als es aussieht), nur das man sich hier einen Teil (Text und/oder Data) aussuchen und ein Programm so zerlegen kann. Das BSS wird immer bersetzt. Ihr solltet hierbei bedenken, da das sptere Zusammenfgen so gut wie unmglich ist, da immer nur die Label gestetzt werden knnen, zu denen im selben Programmteil verzweigt wird. 1.3. Routine laden Die selektierte Datei wird vollstndig als TEXT geladen. Sinn- voll ist dies z.B. bei GFA-Inline-Assembler und sonstigen in Hochsprachen eingebauten Unterprogrammen ohne Header, Symbol- und Reloziertabelle. Das Disassemblieren von Objektdateien im DR- Format ist bisher noch nicht mglich. 1.4. RAM/ROM laden Hier knnen die Adressen von Speicherbereichen aus dem RAM oder ROM eingestellt werden. Sie werden als TEXT-Segment weiter- verwendet. Adressen von Betriebssystemroutinen erhlt man bei SYS-Info. 1.5. Resource laden Hiermit kann man RSC-Dateien als Data laden. Beim Disassem- blieren werden smtliche Adressen durch Label ersetzt, sowie die Headereintrge fr Segmentanfnge und -lngen variabel einge- richtet. Dies dient dazu sie im Assembler zu erweitern oder in Assembler/Pascal-Programme einzubinden. 1.6 Data laden Es knnte ja mal das Problem entstehen, da man ein Bild oder eine ASCII- Datei als Data einem Assemblerprogramm beifgen mchte. 2. Disassembler-Optionen Alle Einstellungen in der Dialogbox 'Optionen' sollten grund- stzlich vor dem Disassemblieren vorgenommen werden!!! 2.1. ASCII Hier lassen sich mit zwei Buttons drei Formate auswhlen, die die Tabulatorpositionen im spteren ASCII-Code bestimmen. - Norm: Leerzeichen zwischen linkem Rand und Befehl (kein Button selektiert) - Spar: Keine Leerzeichen zwischen linkem Rand und Befehl, es sei denn es steht ein Label am Zeilenanfang. (nur Spar-Button) - Hyper.: Zwischen Label, Befehl, Operanden und Remark nur ein Leerzeichen (Hyperspar-Button) Alle drei Formen knnen von TurboAss gelesen werden. Wenn man den Assemblercode mit einem normalen Editor weiterverarbeiten mchte, eignet sich nur das Normformat. Beim Laden einer ASCII- Datei wird angenommen, da sie durchschnittlich mindestens 20 Zeichen pro Zeile lang ist. 2.2. Tabulator Hier lassen sich die Tabulatoren fr Befehl, Operanden und Remark festlegen. 2.3. Symbole einsetzen Mit dieser Option kann man eine Symboltabelle verschmhen. Beim Neuladen wird sie nicht mitgeladen. Da Symbole nur maximal 8 Zeichen lang sein drfen, Hochsprachen-Compiler und Assembler jedoch lngere Label (z.B. Prozedur- und Funktionsnamen) erlauben, welch Glck, kann es vorkommen da sich Symbole gleichen, und ein spteres Weiterverarbeiten schwierig wird. 2.4. Kommentar Bei Traps und Systemvariablen wird ein Remark angefgt. siehe Editor, Disassembler und Hilfsdatei Leider rufen die Hochsprachen-Systeme die AES- und VDI- Funktionen auf vllig verschiedene Art und Weise auf, und verzweigen dabei auch noch sehr hufig, so da ein Einfgen der Symbolnamen sehr schwierig ist. Mglich wre ein Nacharbeiten durch den Anwender. Dieser mte durch Tastendruck dem Dis- assembler die Zeilen mit den entsprechenden Parametern zeigen. 2.5. Label in HEX Die Label (Sprungadressen) werden als Hexadezimal oder Dezimal- Zahlen geschrieben. z.B. T_100 in Hex entspricht T_256 in Dez 2.6. Text: Konstanten in HEX Stellt die Zahlendarstellung fr Konstanten aus dem TEXT- Segment ein. 2.7. Data Hier kann mit drei Buttons und einem EDIT-Feld die Disassemblierung des DATA-Segments gesteuert werden. Es besteht die Mglichkeit es als Strings (Zahlen von 0..31 als Zahl) und/oder als Zahl in HEX oder DEZ auszugeben. Zustzlich kann angegeben werden wie lang eine Zeile werden darf. 2.8. BSS: mit Bereichsgre Im aktivierten Zustand wird die Lnge des Bereichs als Remark eingefgt. 3. Disassember 3.1. Speicher-Einteilung In der Dialogbox wird festgelegt, wie das String-Array (Ziel) dimensioniert werden soll. Auerdem wird die Array-Ausnutzung und der freie und maximale Speicherplatz (ab Initialisierung) aufgefhrt. Die Gesamtlnge der Zeilen entspricht der Lnge der spteren ASCII-Datei (incl. LF/CR). Diese Optionen dienen zum Finden der maximalen Speicherausnutzung bei lngeren Quellen oder kleineren Rechnern. 3.2. Label Label, die nicht in der Symboltabelle enthalten sind, werden selbst benannt: 'T_' steht fr 'zeigt ins Textsegment', 'D_' fr Data, 'B_' fr BSS und 'A_' fr Auerhalb. Danach folgt eine Zahl mit der Offset-Adresse ab Programmanfang (Dateianfang+$1C). Wenn die Adresse negativ ist und keine negative Systemvariable zutrifft, wird am Programmanfang ein Label gesetzt und ab hier entsprechend adressiert. (z.B. erster Befehl eines GFA-Basic- Compilates) 3.3. Opcodes Smtliche im Programm verwendete Opcodes und Mnemoniks sind in der Datei OPCODE.TXT aufgefhrt. 3.4. DC.W Unbekannte Opcodes werden als DefineConstant.Word ausgegeben. Am Ende der Zeile steht der Wert als ASCII. 3.5. XBRA XBRA-Kennungen werden erkannt und als 'dc.l'... entschlsselt. 3.6. Kommentare Wenn eine wortlange effektive Adresse einer Systemvariable aus der Hilfsdatei gleicht, wird deren Name als Remark angefgt. Traps mit den Nummern #1 (gemdos), #13 (bios) und #14 (xbios) knnen nur erkannt werden, wenn die Funktionsnummer eine Zeile zuvor mit 'move.w/.l #XX,?(sp)' oder 'pea' auf den Stack gelegt wird. Bei Trap #2 mu hier 'move.? #XX,D0' stehen, damit zwischen aes, vdi und gdos unterschieden werden kann. 3.7. DATA Datas werden als 'dc.b' geschrieben. Ob String, Hex oder Dez und wie lang jede Zeile sein darf wird bei Optionen eingestellt. XBRA-Kennungen werden an den 4 Buchstaben 'XBRA' erkannt. Eine Verwechslung mit Strings ist also ohne weiteres mglich. 3.8. BSS Das Block-Storage-Segment wird je nach Lnge mit den Direktiven 'ds.b', '.w' oder '.l' aufgefllt. Das Beifgen der Bereichs- gre soll die bersichtlichkeit erhhen. 3.9. TurboAss Alle Befehle, Direktiven usw. wurden auf den TurboAss von - Soft abgestimmt. Sollte irgendetwas nicht klappen, bitte ich um Nachricht. Ich helfe gern. Sollte ich demnchst an vollstndige Opcode-Listen fr 68000, 020, 030, 040, 881, 882 Prozessoren herankommen, werde ich den Disassembler erweitern. 3.10. Databereiche im Textsegment Es kommt immer wieder vor, das Datas wie z.B. Strings sich nicht im Data- sondern im Textsegment befinden. Um spter berhaupt noch etwas mit dem disassemblierten Code anfangen zu knnen (siehe Kapitel 8), mu man diese Bereiche herausfischen und die Quelle erneut disassemblieren. Dazu gibt man jeweils die Anfangs- und Endadresse des Bereiches an, wobei das letzte, als Data zu bersetzende, Byte in der um 1 verminderten Endadresse steht. Beim Anlegen der Blcke ist zu beachten, da sie sich nicht berschneiden. In der Dialogbox 'Data im Text' werden die Blcke aufgelistet. Hier gibt es folgende Buttons: - Eintrag - aktivieren : zum aktivieren des aktuellen Eintrags - lschen : lscht den aktuellen Eintrag - Feld - aktivieren : das ganze Verfahren aktivieren - lschen : alle Eintrge lschen Bei Maximum kann man angeben, wie lang das Feld sein soll. Die aktuelle Lnge stellt sich nur neu ein, wenn man alle Eintrge abspeichert und neuldt, oder das ganze Feld lscht. Die Blcke werden nach Verlassen der Dialogbox und beim Start des Disassemblierens neu sortiert. 4. Editor Der Name ist zwar etwas bertrieben, aber dennoch ist er recht hilfreich. Einen Curser habe ich aus Bequemlichkeit weggelassen. Wenn eine Zeile direkt angesprochen werden soll, mu sie an erster Stelle der Seite stehen. 4.1. Scrolling Das Bewegen des Textes erfolgt ber den rechten Slider oder die Cursertasten, evtl. in Verbindung mit Shift. Mit ClrHome gelangt man zum Anfang, mit Shift Clr Home zum Ende des Textes. 4.2. 8er/16er Text Mit Tab oder ber Editor-Optionen schaltet man zwischen den zwei Texthhen hin und her. 4.3. Hilfe und Remark suchen Mit 'H' gelangt man in den Hilfstext und kann dort blttern. Mit Help oder Return sucht man aus dem Editor heraus im Hilfs- text nach dem Symbol, das als erstes Remark ab Seitenanfang steht. Hier erhlt man dann nhere Infos ber Trap's und System- variablen. 4.4. Text suchen Durch Drcken der Taste F erhlt man die Mglichkeit einen Text (z.B. Label) zu suchen. Mit Control F kann die Suche wiederholt werden. (Editor+Hilfe) 4.5. Symbol ersetzen Ersetzt smtliche zutreffenden Symbole. (nur Editor) 4.6. Goto Symbol Wenn sich in der obersten Zeile ein Symbol mit 'T_', 'D_' oder 'B_' befindet, wird hiernach im brigen Text gesucht und die entsprechende Stelle angesprungen. Mit anderen Labelnamen geht dies leider noch nicht. (nur Editor) 4.7. Goto next Symbol Arbeitet hnlich wie 'Goto Symbol', nur da hier erst der nchste Verzweigbefehl (jmp, jsr, bxx.s, bxx) gesucht wird. 4.8. Remark ndern Ermglicht es Kommentare zu ndern und anzufgen. 5. Editor-Optionen Im Gegensatz zu den Disassembler-Optionen knnen diese auch spter noch gendert werden. Sie betreffen nur die Benutzerober- flche. 5.1. Turbo-Fenster Da die VDI-Textausgabe (V_GTEXT) bei achtfachen X-Werten wesentlich schneller arbeitet (welch Wunder), kann man hier die Fensterpositionierung einschrnken. D.h. Fenster knnen nur noch an Stellen mit X=8*DIV(X,8)-1 gesetzt werden (wie im Desktop). 5.2. Zeilenadressen Der Disassembler 'merkt' sich bei welcher Offset-Adresse der Opcode jeder Zeile stand. Mit der Option 'mit Zeilenadressen' oder den Cursertasten 'links' und 'rechts' werden diese einge- blendet. Zustzlich kann eingestellt werden ob diese in HEX- oder DEZ-Zahlenformat ausgegeben werden sollen. Das geht natr- lich nur, wenn eine Quelle geladen wurde! 5.3. Sprungbefehle Um den Code bersichtlicher zu gestalten, werden einige Sprung- befehle farbig bzw. bold, fett und kursiv gekennzeichnet. Dieses lt sich jedoch auch abstellen (erhht die Scrollgeschwindig- keit). 5.4. Move-, Grow- und Shrinkboxen Wenn sie stren, dann schalten wir sie eben ab. 6. System-Info Hier erfhrt man die Inhalte von Systemvariablen und einigen wichtigen Vektoren. 6.0 Die Funktion Die Dialogbox enthlt neben diversen Buttons ein Eingabefeld, zwei Ausgabefelder und einen Pfeilbutton. Das Eingabefeld sollte die entsprechenden Eingaben enthalten (was sonst). In der linken Ausgabe steht der zurckgegebene Wert als Zahl (HEX oder DEZ) und in der rechten als String. Der Pfeilbutton dient dazu den Inhalt des linken Ausgabefeldes in das Eingabefeld zu kopieren. Im Eingabefeld sind folgende Symbole erlaubt: Ziffern von 0 bis F, $ fr Hexadezimalzahl, + fr addiere und - fr negativ oder subtrahiere. 6.1. GET ... Nichts anderes als peek, dpeek (2 Byte) und lpeek (4 Byte). 6.2. CPU-Vektor Erwartet Werte von 0 bis 263 und gibt die Vektoradressen zurck. Intern wird setexec [bios(5)] benutzt. Diese Vektoradressen entsprechen den Systemvariablen: Beispiele: bios(5) Systemvariable 33 $84 Vektor auf GEMDOS - Routinen 34 $88 VDI/AES 45 $B4 BIOS 46 $B8 XBIOS $100 $400 System-Timer-Interrupt $101 $404 Critical Error Handler 6.3. KBD-Vektor Erwartet Werte von 0 bis 8 und gibt die Adressen verschiedener Routinen zurck, die die vom Tastaturprozessor kommenden Daten verarbeiten. Es wird kbdvbase [xbios(34)] benutzt. 0 : midi_ein 1 : tast_ueberlauf 2 : midi_ueberlauf 3 : ikbd_status 4 : maus 5 : timer 6 : joystick 7 : midi_sys 8 : ikbd_sys 6.4. _sysbase Holt die Basisadresse des TOS. 6.5. linea Gibt je nach Eingabe eine Basisadresse zurck. (intern: nach dem Befehl linea #0 $A000 werden die Adressregister A0-A2 verschieden belegt.) Eingabe Ausgabe 0 Basisadresse der LINE-A Variablen 1 Zeiger auf Tabelle mit Zeigern auf die Systemzeichenstze (Wird hier wohl kaum jemand bentigen!) 2 Zeiger auf eine Tabelle mit den Anfangsadressen der Line-A-Routinen (hnlich wie der Inhalt des Line-A-Vektors) 7. Hilfstext Alle Remarks kommen aus der Hilfstext-Datei 'DS_HILFE.TXT', die bei Programmstart oder mit 'Hilfe laden' aus dem Men neugeladen werden kann. Ein Lschen der Hilfe erhht den freien Speicher. Sie ist eine 'stinknormale' ASCII-Datei deren Zeilenenden mit LF/CR begrenzt werden. Geladen wird sie mit der GFA-Basic- Funktion 'recall'. Mit Texteditoren wie z.B. 'TEMPUS' kann sie ohne Probleme erweitert werden. Hierbei sind folgende Normen zu beachten: - Die ersten drei Zeichen sind eine Zahl und bestimmem die Zeilenlnge der Datei. Wenn diese Zahl nicht vorhanden ist, wird eine ASCII-Datei mit 30 Bytes pro Zeile geladen und nicht ausgewertet. - Remarks mssen mit ';' anfangen. - Es werden folgende Segmente an entsprechenden Wrtern erkannt: - gemdos: GEMDOS ?/? - bios: BIOS ?/? - xbios: XBIOS ?/? - Line-A: LINEA ?/? - Systemvariablen: SYSVAR ?/- Der erste Zahlenwert enthlt die Anzahl der Eintrge. Der zweite den hchsten Parameterwert (entfllt bei SYSVAR). - Die Parameterwerte der entsprechenden Funktionen mssen nach dem folgenden Schema eingebaut werden: - gemdos(DEZ) - bios(DEZ) - xbios(DEZ) - linea #DEZ - $HEX (nur wortlange Variablen) Wenn Ihr dies beachtet, kann gar nichts schiefgehen. 8. Was kann Desert Drain ? Wie arbeite ich mit Desert Drain ? Dieser Disassembler kann (meiner Meinung nach) schon eine ganze Menge. Trotzdem gibt es einiges, was noch verbessert oder eingebaut werden mte. Leider waren in Version 1.1 so viele Fehler, da kaum jemand das Programm vernnftig nutzen konnte. (Und mit 'Nutzen' meine ich nicht unbedingt das Knacken eines Kopierschutzes.) Doch nun zur Sache - Was kann ein Disassembler? Als erstes solltet Ihr euch klar machen, da ein Disassembler in einem Quellcode nur Bits und Bytes erkennt, und nicht wei, ob es sich hierbei um einen Opcode oder ein Data handelt. Hier mu der Mensch Ihm helfen, denn nur er kann zu 100% erkennen um was es sich handelt. Also meckert nicht gleich los wenn Desert Drain einige Label nicht setzt, ober nach dem Optimieren im Assembler (z.B. TurboAss) das Programm nicht mehr luft. Aber wie knnt Ihr im helfen? Nach dem Disassemblieren solltet Ihr euch den Code im Editor ansehen und smtliche Bereiche, die nach vermeindlichen Datas aussehen, als zustzliche Databereiche vermerken. Aber Vorsicht! Nicht alles was Desert Drain als 'dc.w' bersetzt ist ein vermeindliches Data. Manchmal zeigt eine Adresse zum Beispiel auf eine Konstante, die zu einem Opcode gehrt, oder ein Programm untersttzt fortgeschrittene Mikroprozessoren deren Opcode Desert Drain noch nicht ent- schlsseln kann. So enthlt zum Beispiel AHDI einige 'move D0, CACR' (ab MC68010). Wo liegt denn nun eigentlich das Problem? Stellt euch vor der Disassembler erkennt in einem Datenbereich einen Opcode mit Label und entschlsselt ihn. Hier ein real existierendes Beispiel aus einem Turbo-C Compilat: Opcode: $6566 Mnemonik: PC: bcs.s PC+$66 ASCII: 'ef' Vom Inhalt her ist hier nichts einzuwenden. Bit bleibt Bit. Nun stellt Euch aber vor Ihr optimiert den Assemblercode und verschiebt einige Label... Warum setzt Desert Drain einige Label nicht, die ins Text- Segment zeigen? Hier gibt es mehrere Mglichkeiten. Wenn das Label bzw. die angesprochene Adresse ungerade ist, kann sie nur auf ein Data z.B. einen String zeigen, und den erkennt der Dis- assembler nicht automatisch. Hier mt Ihr 'per Hand' nach- arbeiten. Wenn das Label gerade ist, wre es mglich, da es nicht direkt auf einen Opcode sondern auf dessen Konstante oder Sprunglabel zeigt. Warum? Wei ich nicht, aber so etwas kommt vor. So da war's dann auch schon. Tsch. Euer Volker $T/?CNl/?NfO ENP+mlhA" A"p@Ѝм @ Ё-@h+mlhp? .hH? .hH@H?p?NX .|? .hH? .hH@H?pA?NPpNuNu`+_lNu/-l+mhlHz`-_@A1"_! #-_lNu/.lA$X/ %?B`! /.@Hz+mlhp?NT-@lp@N\ENP+mlhA" A"p@Ѝм @ Ё-@@+mlhp? .@H? .@H@H?pG?NPCNl6$pNHN6$pNHxNT"SpENENP+mlh .lмANH6$N:N6$CNlN6$N\NENP+mlhCNlNu+mlhNu-_CA4#!A#!NuCA/!A4/!A/!Hz`4-_l-_8-_-_-_-_D-_@-_<-_h-_8-_4-_0Nu/.0/.4/.8/.h/. 2 Byte auf dem Stack ; % -> 4 byte auf dem Stack ; a% bedeutet meistens Adresse ; p% -"- Adresse auf Puffer ; d& -"- Laufw-Nummer ; h& -"- Dateihandle ; z& -"- Zeichen ; m& -"- Mode ; n& -"- Kanal oder Nummer ; -> -"- zeigt auf GEMDOS:63/124 ;Anzahl der Eintrge/grter Eintrag Pterm0 gemdos(0) ;Programm beenden Cconin gemdos(1) ;Zeichen von kbd lesen Cconout gemdos(2) ;(,z&) Zeichen auf Bildschirm ausgeben Cauxin gemdos(3) ;Zeichen von ser lesen Cauxout gemdos(4) ;(,z&) Zeichen auf ser ausgeben Cprnout gemdos(5) ;(,z&) Zeichen auf prn ausgeben Crawio gemdos(6) ;(,z&) Zeichen von kbd ohne Echo lesen ;oder schreiben Crawcin gemdos(7) ;Zeichen ohne Echo von kbd lesen Cnecin gemdos(8) ;wie 7, nur ohne Steuerzeichen Cconws gemdos(9) ;(,adr%) String auf Bildschirm ausgeben Cconrs gemdos(10) ;(,a%) String von kbd lesen (a%:puf) Cconis gemdos(11) ;Prft ob ein Zeichen im kbd-Puffer ist Dsetdrv gemdos(14) ;(,d&) aktuelles Laufw festlegen Cconos gemdos(16) ;Bildschirm bereit zur Ausgabe? Cprnos gemdos(17) ;par bereit zur Ausgabe? Cauxis gemdos(18) ;liegt an ser ein Zeichen an? Cauxos gemdos(19) ;ser bereit zur Ausgabe? Maddalt gemdos(20) ;(,gr%,adr%) Fast-Ram einrichten Dgetdrv gemdos(25) ;aktuelles Laufwerk ermitteln Fsetdta gemdos(26) ;setzt DTA Super gemdos(32) ;(,a%) a%=-1: rueck: 0=User 1=Super ;a%=0: ->SSP a%=SSP ->UserMode Tgetdate gemdos(42) ;ermittelt Datum, Bit 0..4:Tag, 5..8:Monat ;9..15: Jahr minus 1980 Tsetdate gemdos(43) ;(,d%) Datum setzen Tgettime gemdos(44) ;ermittelt Zeit, Bit 0..4:Sekunden, 5..10:Minuten ;11..15:Stunden Tsettime gemdos(45) ;(,t%) Zeit setzen Tgetdta gemdos(47) ;DTA ermitteln Sversion gemdos(48) ;GEMDOS-Versionsnummer Ptermres gemdos(49) ;(,b%,r&) Programm verlassen und r& zurckgeben ;b% Bytes ab Basepage resistent halten Sconfig gemdos(51) ;??? KAOS 1.4 Dfree gemdos(54) ;(,a%,d&) ermittelt freien Diskspeicherplatz ;a%: 16Bytes puf offset 0:Anzahl freier Cluster ;4:Cluster ges 8:Bytes/Sektor 12:Sekt/Cluster Dcreate gemdos(57) ;(,a%) Ordner anlegen Ddelete gemdos(58) ;(,a%) Ordner lschen Dsetpath gemdos(59) ;(,a%) aktuelles Verzeichnis wechseln Fcreate gemdos(60) ;(,a%,attr&) Datei anlegen rueck=handle ;attr&: Bit 0:schreibgeschtzt,1:versteckt ;2:versteckte Systemdatei,3:Diskettenname Fopen gemdos(61) ;(,a%,m&) Datei ffnen m&=0 ->lesen ;m&=1 -> schreiben m&=2 -> beides rueck=handle Fclose gemdos(62) ;(,h&) Datei schlieen Fread gemdos(63) ;(,h&,l%,a%) l% Bytes ab a% lesen Fwrite gemdos(64) ;(,h&,l%,a%) l% Bytes nach a% schreiben Fdelete gemdos(65) ;(,a%) Datei lschen Fseek gemdos(66) ;(,n%,h&,m&) n% Bytes weiter m&=0:Anf 1:Pos 2:End Fattrib gemdos(67) ;(,a%,m&,attr&) m&=0:Attr lesen 1:schreiben Mxalloc gemdos(68) ;(,b%,m&) b%=-1:free_ram? sonst:b% Bytes reservieren ;m&=0:aus ST-RAM 1:Fast 2:egal lieber ST 3: egal Fast Fdup gemdos(69) ;(,h&) zweites Dateihandle erzeugen Fforce gemdos(70) ;(,h&,nh&) neues Ausgabehandle festlegen Dgetpath gemdos(71) ;(,a%,d&) Zugriffspfad ermitteln Malloc gemdos(72) ;(,b%) b%=-1:free_ram? sonst:b% Bytes Ram ;reservieren und rueck=Adresse Mfree gemdos(73) ;(,a%) reservierten Speicherbereich freigeben Mshrink gemdos(74) ;(,a%,b%) Bereich ab a% auf b% reduzieren Pexec gemdos(75) ;(,m&,p%,c%,e%) Programm m&=0:laden und starten ;m&=3:laden 4:starten(p%=basepage) 5:erzg basepage Pterm gemdos(76) ;(,r&) Programm beenden und r& zurck Fsfirst gemdos(78) ;(,a%,attr&) Datei mit attr& suchen Fsnext gemdos(79) ;weiter suchen Frename gemdos(86) ;(,0,old%,new%) Datei umbenennen Fdatime gemdos(87) ;(,a%,h&,m&) m&=0:Dateizeit lesen 1:setzen Flock gemdos(92) ;(,h&,m&,start%,len%) Datei mit Handle h& blockieren ;m&=0:lock,1:unlock - len% Bytes ab start% Nversion gemdos(96) ;Diese Funktionen fand ich in einer Zeitschrift! Frlock gemdos(98) ;Das Profibuch 11.Auflage kannte Sie leider noch Frunlock gemdos(99) ;nicht. Flock gemdos(100) ;(Warum doppelt?) Funlock gemdos(101) ; Fflush gemdos(102) ; Unlock gemdos(123) ; Lock gemdos(124) ; BIOS:12/11 Getmph bios(0) ;(,a%) Initialisierung des Memory-Parameter-Block Constat bios(1) ;(,d&) Eingabe ber d& mglich? ;0:par 1:ser 2:ikbd 3:midi Bconin bios(2) ;(,d&) Zeichen von d& lesen ;0:par 1:ser 2:ikbd 3:midi Bconout bios(3) ;(,d&,b&) Zeichen b& auf d& ausgeben ;0:par 1:ser 2:midi 3:ikbd Rwabs bios(4) ;(,m&,a%,n&,s&,d&) m&=0:Sekt lesen 1:Sekt schreiben Setexec bios(5) ;(,n&,a%) Vektor n& a%=-1:lesen sonst setzen Tickcal bios(6) ;Abfrage des System Timers Getbpb bios(7) ;(,d&) ermittelt Bios-Para-Block von Laufw d& Bconstat bios(8) ;(,d&) Ausgabe auf Einheit d& mglich? ;0:par 1:ser 2:midi 3:ikbd Mediach bios(9) ;(,d&) Diskette gewechselt? Drvmap bios(10) ;welche Laufw sind augeschlossen? (Bit0=A ...) Kbshift bios(11) ;(,c&) Status der Tastaturumschalttasten XBIOS:55/87 Initmous xbios(0) ;(,m&,p%,v%) m&=0:aus 1:rel 2:abs 3:kbd ;p%=Info-Strukur v%=Vektor auf Routine Ssbrk xbios(1) ;(,l%) l% Bytes reservieren (vor OS-INIT) Physbase xbios(2) ;Adr des physikalischen Bildschirmspeichers Logbase xbios(3) ;Adr des logischen Bildschrirmspeichers Getrez xbios(4) ;Auflsung ST: 0=L 1=M 2=H TT:4=M 6=H 7=L Setscreen xbios(5) ;(,log%,pyhs%,rez&) Bildschirmsp. setzen Setpalette xbios(6) ;(,a%) neue Farbpalette setzen Setcolor xbios(7) ;(,n&,c&) Farbreg c&=-1:lesen sonst c& setzen Floprd xbios(8) ;(,a%,f%,d&,sec&,t&,s&,n&) Sektoren lesen Flopwr xbios(9) ;(,a%,f%,d&,sec&,t&,s&,n&) Sektoren schreiben Flopfmt xbios(10) ;(,a%,f%,d&,sec&,t&,s&,i&,m%,v&) Spur formatieren Getdsb xbios(11) ;??? Midiws xbios(12) ;(,n&,a%) gibt n&+1 Bytes ab a% ber midi aus Mfpint xbios(13) ;(,n&,a%) Vektoren des MFP ndern Iorec xbios(14) ;(,d&) Adr der Ein/Ausgabe Einheit d& ermitteln ;0:ser 1:ikbd 2:midi Rsconf xbios(15) ;(..) Parameter fr die ser setzen Keytbl xbios(16) ;(..) Adr der Tastbelegtab. ndern Random xbios(17) ;ermittelt eine 24-Bit-Zufallszahl Protobt xbios(18) ;(,a%,s%,d&,f&) Bootsektor erzeugen Flopver xbios(19) ;(,a%,f%,d&,sec&,t&,s&,n&) Datei=RAM ? Scrdmp xbios(20) ;Hardcopy Cursconf xbios(21) ;(,c&,s&) Curser c&=0:aus 1:ein 2:blink ein ; 3:blink aus 4:blink auf s& 5:blinkrate rueck Bsettime xbios(22) ;(,t%) Datum und Zeit setzen Bgettime xbios(23) ;Datum und Zeit lesen Bioskey xbios(24) ;Originaltastaturbelegung einstellen Ikbdws xbios(25) ;(,n&,a%) n&+1 Bytes ab a% an ikbd senden Jdisint xbios(26) ;(,i&) sperrt den MFP-Interrupt i& Jenabint xbios(27) ;(,i&) gibt den MFP-Interrupt i& frei Giaccess xbios(28) ;(,d&,reg&) Register des Soundchips bedienen ;bit7 von reg& -> d& in reg& schreiben, sonst lesen Offgibit xbios(29) ;(,b&) lscht ein Bit des Port-A-Registers des ;Soundchips, 'or' Verknpfung von b& und original Ongibit xbios(30) ;(,b&) setzt ein Bit, 'and' Verknpfung Xbtimer xbios(31) ;(,t&,ctrl&,data&,a%) setzt MFP-Timer (t&=0..3) Dosound xbios(32) ;(,a%) Sound-Sequenz ab a% starten (a%=-1 Abfrage) Setprt xbios(33) ;(,c&) Druckerparam c&=-1 lesen, sonst setzen ;Bit0:Matr/Typrad 1:Farbe/Mono 2:1280/960 ;3:Draft/NLQ 4:par/ser 5:endl/einzel Kbdvbase xbios(34) ;Vektoren des Tastaturprozessors offset: ;0:midi_ein 4:tast_berl 8:midi_berl 12:kbd_status ;16:maus 20:timer 24:stick 28:midi_sys 32:kbd_sys Kbrate xbios(35) ;(,ansprech&,wiederhr&) Tastaturwiederholrate s/l Prtblk xbios(36) ;(,a%) Hardcopy mit Parameterblock Vsync xbios(37) ;wartet auf Vertical-Blank-Interrupt Supexec xbios(38) ;(,a%) Assemblerroutine im Supervisormodus aufrufen Puntaes xbios(39) ;AES abschalten Floprate xbios(41) ;(,new&,devno&) steprate der Floppy lesen/setzen DMAread xbios(42) ;(,sec%,anz&,p%,devno&) anz& Sektoren ab phys. ;Sektor sec% nach p% lesen, devno&=0..15 DMA-Port DMAwrite xbios(43) ;(,sec%,anz&,p%,devno&) anz& Sektoren ab p% ;nach phys. Sektor sec% schreiben, devno&=DMA-Port Bconmap xbios(44) ;(,i&) i&: Index der neuen Schnittstelle, rueck=alt ;-1: abfragen -2:Zeiger auf BCONMAP-Struktur NVMaccess xbios(46) ;(,op&,st&,count&,a%) RAM der TT-Uhr bedienen Metainit xbios(48) ;(,a%) erhlt in Puffer a% Infos ber Meta-DOS Blitmode xbios(64) ;(,b&) Blitter b&=-1 Blitter da? Bit0:ein/aus EsetShift xbios(80) ;(,m&) Shiftmode-Reg im TT-Vid-Shifter auf m& setzen EgetShift xbios(81) ;Shiftmode-Register im TT-Video-Shifter erfragen EsetBank xbios(82) ;(,n&) legt im TT aktuelle Farbbank fest, rck=alt EsetColor xbios(83) ;(,n&,c&) setzt im TT-Farbreg n& auf c&, rck=alt EsetPalette xbios(84) ;(,n1&,n&,a%) von a% n& TT-Farbreg ab n1& setzen EgetPalette xbios(85) ;(,n1&,n&,a%) n& TT-Farbreg ab n1& nach a% auslesen EsetGray xbios(86) ;(,m&) bei m&<>0 Graustufenmodus im TT an. EsetSmear xbios(87) ;(,m&) Smear-Modus: m&=0:aus,m&>0:an, rck=alt LINEA:16/15 init linea #0 ;Initialization: D0,A0->Parameterblock ;A1->Tabelle mit Zeigern auf die Systemzeichenstze ;A2->Tab. mit den Anfangsadr. der Line-A-Routinen putpix linea #1 ;Put Pixel getpix linea #2 ;Get Pixel line linea #3 ;Arbitrary Line hline linea #4 ;Horizontal Line fillrec linea #5 ;Filled Rectangle fillpoy linea #6 ;Filled Polygon bitblk linea #7 ;Bit Block Transfer textblk linea #8 ;Text Block Transfer showm linea #9 ;Show Mouse hidem linea #10 ;Hide Mouse transm linea #11 ;Transform Mouse undraw linea #12 ;Undraw Sprite draw linea #13 ;Draw Sprite copy linea #14 ;Copy Raster Form fill linea #15 ;Seedfill SYSVAR:245/00 ;zweiter Wert entfllt hier ; Speicherkonfiguration (1) memconf $FFFF8001 ;Memory Configuration Register ST(E) ; Videocontroller (29) dbaseh $FFFF8201 ;Video-Base-Register High (Byte) dbasel $FFFF8203 ;Video-Base-Register Mid (Byte) vcounthi $FFFF8205 ;Video-Adress-Counter High (Byte) vcountmid $FFFF8207 ;Video-Adress-Counter Mid (Byte) vcountlow $FFFF8209 ;Video-Adress-Counter Low (Byte) syncmode $FFFF820A ;Video-Sync-Mode-Register dbaselow $FFFF820C ;Video-Base-Register Low (Byte) - only STE/TT vbaselo $FFFF820D ;Video base address (lo; STE only) linewid $FFFF820F ;Width of a scan-line (Words, minus 1; STE only) color0 $FFFF8240 ;Color-Register 0 color1 $FFFF8242 ;Color-Register 1 color2 $FFFF8244 ;Color-Register 2 color3 $FFFF8246 ;Color-Register 3 color4 $FFFF8248 ;Color-Register 4 color5 $FFFF824A ;Color-Register 5 color6 $FFFF824C ;Color-Register 6 color7 $FFFF824E ;Color-Register 7 color8 $FFFF8250 ;Color-Register 8 color9 $FFFF8252 ;Color-Register 9 color10 $FFFF8254 ;Color-Register 10 color11 $FFFF8256 ;Color-Register 11 color12 $FFFF8258 ;Color-Register 12 color13 $FFFF825A ;Color-Register 13 color14 $FFFF825C ;Color-Register 14 color15 $FFFF825E ;Color-Register 15 shiftmd $FFFF8260 ;ST-Shift-Mode-Reg. (0=L,1=M,2=H) shift_tt $FFFF8262 ;TT-Shift-Mode-Reg. (4=M,6=H,7=L) hscroll $FFFF8265 ;Horizontal scroll count (0..15; STE only) stacydsp $FFFF827E ;STACY Display-Steuerung ; DMA-Controller (5) diskctl $FFFF8604 ;disk controller data access fifo $FFFF8606 ;DMA mode control dmahigh $FFFF8609 ;DMA-Base+Count.-Reg.-High (Byte) dmamid $FFFF860B ;DMA-Base+Count.-Reg.-Mid (Byte) dmalow $FFFF860D ;DMA-Base+Count.-Reg.-Low (Byte) ; Soundchip AY-3-8910 (3) giselect $FFFF8800 ;(W) sound chip register select giread $FFFF8800 ;(R) sound chip read-data giwrite $FFFF8802 ;(W) sound chip write-data ; DMA-Sound-Subsystem (nur STE,TT) (13) sndmactl $FFFF8900 ;Sound-DMA-Control sndbashi $FFFF8902 ;Frame-Start-Adr. High-Byte sndbasmi $FFFF8904 ;Frame-Start-Adr. Middle-Byte sndbaslo $FFFF8906 ;Frame-Start-Adr. Low-Byte sndadrhi $FFFF8908 ;Frame-Adr.-Counter High-Byte sndadrmi $FFFF890A ;Frame-Adr.-Counter Middle-Byte sndadrlo $FFFF890C ;Frame-Adr.-Counter Low-Byte sndendhi $FFFF890E ;Frame-End-Adress High-Byte sndendmi $FFFF8910 ;Frame-End-Adress Middle-Byte sndendlo $FFFF8912 ;Frame-End-Adress Low-Byte sndmode $FFFF8920 ;Sound-Mode-Control MWDATA $FFFF8922 ;MICROWIRE Adr.+Data-Bits MWMASK $FFFF8924 ;MICROWIRE Mask-Register ; Blitter (nicht im TT!) (17) Haftone $FFFF8A00 ;Halftone-RAM, Word 0 HaftoneF $FFFF8A1E ;Halftone-RAM, Word 15 Src_Xinc $FFFF8A20 ;Source-X-Inc.-Reg. Src_Yinc $FFFF8A22 ;Source-Y-Inc.-Reg. Src_addr $FFFF8A24 ;Source-Address-Reg. Endmask1 $FFFF8A28 ;Endmask 1 Endmask2 $FFFF8A2A ;Endmask 2 Endmask3 $FFFF8A2C ;Endmask 3 Dst_Xinc $FFFF8A2E ;Dest.-X-Inc.-Reg. Dst_Yinc $FFFF8A30 ;Dest.-Y-Inc.-Reg. Dst_Adr $FFFF8A32 ;Dest.-Adress-Reg. X_Count $FFFF8A36 ;Worte/Zeile im Bit-Block Y_Count $FFFF8A38 ;Zeilen/Bit-Block HOP $FFFF8A3A ;Halftone-OP-Register OP $FFFF8A3B ;Log. OP-Register Line_Num $FFFF8A3C ;Line-Number-Register Skew $FFFF8A3D ;SKEW-Register ; SCC Z8530 - Serial Communications Controller (4) sccctl_a $FFFF8C81 ;Kanal A - Control-Register sccdat_a $FFFF8C83 ;Kanal A - Data-Register sccctl_b $FFFF8C85 ;Kanal B - Control-Register sccctl_b $FFFF8C87 ;Kanal B - Data-Register ; SCU - System Control Unit (TT/MEGA STE) (9) sys_mask $FFFF8E01 ;System Int. Mask-Register sys_stat $FFFF8E03 ;System Int. Status-Register sys_int $FFFF8E05 ;System Software Int. erzeugen vme_int $FFFF8E07 ;VME-Bus_IRQ Level 3 erzeugen scu_gp1 $FFFF8E09 ;SCU General Purpose Reg.1 scu_gp2 $FFFF8E0B ;SCU General Purpose Reg.2 vme_mask $FFFF8E0D ;VME-Bus Int. Mask-Register vme_stat $FFFF8E0F ;VME-Bus Int. Statur-Register ste_ctl $FFFF8E21 ;MEGA STE Cache+Taktctrl. ;Joystickports beim STE (6) PADDL0 $FFFF9210 ;Position des Paddle 0 PADDL1 $FFFF9212 ;Position des Paddle 1 PADDL2 $FFFF9214 ;Position des Paddle 2 PADDL3 $FFFF9216 ;Position des Paddle 3 XPEN $FFFF9220 ;X-Position des Lightpens YPEN $FFFF9222 ;Y-Position des Lightpens ; 68901 Multifunktionsbaustein des ST/STE/TT (MFP1) (25) mfp $FFFFFA00 ;MFP1: mfp base gpip $FFFFFA01 ;MFP1: Parallel-Port aer $FFFFFA03 ;MFP1: Flankenregister ddr $FFFFFA05 ;MFP1: Datenrichtung iera $FFFFFA07 ;MFP1: Interrupt Enable A ierb $FFFFFA09 ;MFP1: Interrupt Enable A ipra $FFFFFA0B ;MFP1: Interrupt Pending A iprb $FFFFFA0D ;MFP1: Interrupt Pending B isra $FFFFFA0F ;MFP1: Interrupt In-Service A isrb $FFFFFA11 ;MFP1: Interrupt In-Service B imra $FFFFFA13 ;MFP1: Interrupt Mask A imrb $FFFFFA15 ;MFP1: Interrupt mask B vr $FFFFFA17 ;MFP1: Vektor-Register tacr $FFFFFA19 ;MFP1: Timer A Control tbcr $FFFFFA1B ;MFP1: Timer B Control tcdcr $FFFFFA1D ;MFP1: Timer C & D Control tadr $FFFFFA1F ;MFP1: Timer A Data tbdr $FFFFFA21 ;MFP1: Timer B Data tcdr $FFFFFA23 ;MFP1: Timer C Data tddr $FFFFFA25 ;MFP1: Timer D Data scr $FFFFFA27 ;MFP1: Sync Character ucr $FFFFFA29 ;MFP1: USART Control rsr $FFFFFA2B ;MFP1: Receiver Status tsr $FFFFFA2D ;MFP1: Transmit Status udr $FFFFFA2F ;MFP1: USART Data ;FPU im MEGA STE (9) FPstat $FFFFFA40 ;Response-Register FPctl $FFFFFA42 ;Contol-Register FPsave $FFFFFA44 ;Save-Register FPrestor $FFFFFA46 ;Restore-Register FPcmd $FFFFFA4A ;Command-Register FPccr $FFFFFA4E ;Condition-Code-Register FPop $FFFFFA50 ;Operanden-Register FPselct $FFFFFA54 ;Register Select FPiadr $FFFFFA58 ;Instruction Address ; Tastatur-ACIA (3) keyctl $FFFFFC00 ;ACIA-Statusregister (R) keyctl $FFFFFC01 ;ACIA-Steuerregister (W) keybd $FFFFFC02 ;ACIA-Data-Register ; Midi-ACIA (2) midictl $FFFFFC04 ;ACIA-Statusregister (R) -Steuerregister (W) midi $FFFFFC06 ;MIDI-ACIA-Data ; Systemvektoren (Namen sind unkorrekt) (43) reset_ssp $0 ;SSP nach Reset reset_pc $4 ;PC nach Reset bus_error $8 ;Exception: 2 Bomben adr_error $C ;Exception: 3 Bomben, ungerade Wortadresse ill_instr $10 ;Exception: 4 Bomben, ungltiger Maschinenbefehl divbyzero $14 ;Division durch Null chk_excep $18 ;Exception durch trapv_exc $1C ;Exception durch trapv priv_err $20 ;Privilegverletzung trace_err $24 ;Trace-Exception linea_vec $28 ;Linea-Verktor linef_vec $2C ;Linef-Vektor spur_inter $60 ;Suprious Interrupt autov_int1 $64 ;Autovektor-Interrupt, Level 1, unbenutzt autov_int2 $68 ;Autovektor-Interrupt, Level 2 ;zeigt auf Handler fr Horizontal-Blanks autov_int3 $6C ;Autovektor-Interrupt, Level 3, unbenutzt autov_int4 $70 ;Autovektor-Interrupt, Level 4 ;zeigt auf Handler fr Vertikal-Blanks autov_int5 $74 ;Autovektor-Interrupt, Level 5, unbenutzt autov_int6 $78 ;Autovektor-Interrupt, Level 6, unbenutzt autov_int7 $7C ;Autovektor-Interrupt, Level 7, unbenutzt trp1vec $84 ;-> gemdos trp2vec $88 ;-> aes/vdi trp13vec $B4 ;-> bios trp14vec $B8 ;-> xbios busy_inter $10 ;ST-MFP-Interrupt 0, Ausl. durch parallele Schnittstelle dcd_inter $104 ;ST-MFP-I-1,'Carrier detect' der seriellen Schnittstelle cts_inter $108 ;ST-MFP-I-2,'Clear to sent' der seriellen Schnittstelle gpu_done $10C ;ST-MFP-I-3,kann vom Blitter benutzt werden (ready) baud_gen $110 ;ST-MFP-I-4,Baudratengenerator,nicht benutzt timer_200 $114 ;ST-MFP-I-5,->Systemtimer-Interrupt ikbd_inter $118 ;ST-MFP-I-6,->Handler fr IKDB- und MIDI-Interrupts fdc_inter $11C ;ST-MFP-I-7,FDC/ASCI,normalerweise unbelegt diensi_int $120 ;ST-MFP-I-8,Display Enable Signal,normalerw. gesperrt rs232serr $124 ;ST-MFP-I-9,RS232 Sendefehler rs232sempty $128 ;ST-MFP-I-10,RS232 Sendepuffer leer (1 Byte bertragen) rs232eerr $12C ;ST-MFP-I-11,RS232 Empfangsfehler rs232efull $130 ;ST-MFP-I-12,RS232 Empfangspuffer ist voll (1 Byte) ring_indic $138 ;ST-MFP-I-14,Ring Indicator,Signal bei ser angekommen mono_mon $13C ;ST-MFP-I-15,Monochrom Monitor Detect,unbenutzt tt_mfp0 $140 ;TT-MFP-I-0 tt_mfp15 $17C ;TT-MFP-I-15 tt_scc0 $180 ;TT-SCC-I-0 tt_mfp $1BC ;TT-SCC-I-15 ; BIOS Variables (76) etv_timer $400 ;vector for timer interrupt chain etv_critic $404 ;vector for critical error chain etv_term $408 ;vector for process terminate etv_xtra $40C ;5 reserved vectors memvalid $420 ;indicates system state on RESET (MagNmb $752019F3) memcntrl $424 ;mem controller config nibble ($FFFF8001) resvalid $426 ;validates 'resvector' (=$31415926 -> resvector) resvector $42A ;[RESET] bailout vector phystop $42E ;physical top of RAM _membot $432 ;bottom of available memory; _memtop $436 ;top of available memory; memval2 $43A ;validates 'memcntrl' and 'memconf' (MagNmb $237698AA) flock $43E ;.w floppy disk/FIFO lock variable (<>0:no DMA) seekrate $440 ;.w default floppy seek rate (0:6,1:12,2:2,3:3 ms) _timr_ms $442 ;.w system timer calibration (in ms) _fverify $444 ;.w nonzero verify on floppy write _bootdev $446 ;.w default boot device palmode $448 ;.w 0:NTSC (60Hz), <>0:PAL(50Hz) defshiftmd $44A ;.b default video rez sshiftmd $44C ;.b shiftermode (ST:0=L,1=M,2=H; TT:4=M,6:H,7:L) _v_bas_ad $44E ;pointer to base of screen memory vblsem $452 ;.w semaphore to enforce mutex in vbl nvbls $454 ;.w number of deferred vectors in _vblqueue _vblqueue $456 ;pointer to vector of deferred vfuncs colorptr $45A ;pointer to palette setup (or NULL) screenpt $45E ;pointer to screen base setup (|NULL) _vbclock $462 ;count of vblank interrupts _frclock $466 ;count of unblocked vblanks (not blocked by vblsem) hdv_init $46A ;hard disk initialization swv_vec $46E ;video change-resolution bailout hdv_bpb $472 ;disk "get BPB" hdv_rw $476 ;disk read/write hdv_boot $47A ;disk "get boot sector" hdv_mediach $47E ;disk media change detect _cmdload $482 ;.w nonzero load COMMAND.PRG from boot conterm $484 ;.b console/vt52 bitSwitches, 0:keyclick, 1:keyrepeat ;2:CTRL-G->Ping!, 3:kbshift() in bits 24..31 by bconin() trp14ret $486 ;saved return addr for _trap14 (nonused) criticret $48A ;saved return addr for _critic (nonused) themd $48E ;memory descriptor (MD) themdmd $49E ;(more MD) savptr $4A2 ;pointer to register save area _nflops $4A6 ;.w number of disks attached (0,1,2) constate $4A8 ;state of conout() parser save_row $4AC ;.w saved row# for cursor X-Y addressing sav_context $4AE ;pointer to saved processor context _bufl $4B2 ;2 buffer-list headers _hz_200 $4BA ;200hz raw system timer tick the_env $4BE ;-> standard-environment-strings _drvbits $4C2 ;bit vector of "live" block devices _drvbits.w $4C4 ;bit vector of "live" block devices (word) _dskbufp $4C6 ;pointer to common disk buffer _autopath $4CA ;pointer to autoexec path (or NULL) _vbl_list $4CE ;initial _vblqueue _prt_cnt $4EE ;.w screen-dump-state: -1:norm, 0:begin, >0:end ->-1 _prtabt $4F0 ;.w printer abort flag _sysbase $4F2 ;-> base of OS _shell_p $4F6 ;-> global shell info end_os $4FA ;-> end of OS memory usage exec_os $4FE ;-> address of shell to exec on startup scr_dump $502 ;-> screen dump code prv_lsto $506 ;-> _lstostat() prv_lst $50A ;-> _lstout() prv_auxo $50E ;-> _auxostat() prv_aux $512 ;-> _auxout() pun_ptr $516 ;if AHDI -> pun_info memval3 $51A ;if MagNmb $5555AAAA ->RESET xconstat $51E ;8 Zeiger auf Eingabestatus-Routinen xconin $53E ;8 Zeiger auf Eingabe-Routinen xcostat $55E ;8 Zeiger auf Ausgabestatus-Routinen xconout $57E ;8 Zeiger auf Ausgabe-Routinen _longframe $59E ;.w wenn <>0 -> kein 68000er _p_cookies $5A0 ;-> Cookie Jar ramtop $5A4 ;Zeiger auf das Ende des Fast-Ram ramvalid $5A8 ;MagNmb $1357BD13 = ramtop ist Ok bell_hook $5AC ;->Routine fr 'Ping'-Gerusch (ab STE) kcl_hook $5B0 ;->Routine fr Tastenklick-Gerusch (ab STE) lh+mlh .@NuCA#!Av1$_! %NuCEp Z/!?]2 NPA/!Hz+mlhp/Np/ND|XJf n1| Nu+mlh"< $< &<(<-*<" <?dN8p/ND|X/NJX @"n0) H0+mlhNu n0( H"JW/ n0( H/ND|X"JWAHH+mlhJgNu n0( H/ND|X/NJX @p0+mlh"< $<&<(<*<"peN8Nu _1NuC n?/1Hz"< $<&<(<*<"phN8Nu _1NuC n?/1Hz"< $<&<(<*<"pjN8Nu _1 _1 _1 _1 _1 _1 _1 _1 _1-_-_NuCA/!A/! n?/1/ $n"Jp/pПЀ"_?/ 5/ $n"Jp/pПЀ"_?/ 5/ $n"Jp/pПЀ"_?/ 5/ $n"Jp/pПЀ"_?/ 5/ $n"Jp/pПЀ"_?/ 5/ $n"Jp/pПЀ"_?/ 5/ $n"Jp/pПЀ"_?/ 5/ $n"Jp' V_GTEXT.LST - schnelle VDI-TEXT-Routine fr GFA-Basic ' Die Assemblerroutine ist bei 8fachen X-Positionen ' ca. 6 mal schneller als GFA-Basic ' ' VDI-Parameterblock als Long-Integer-Array ' ein String knnte verschoben werden ! ' mu nur einmal aufgerufen werden ' DIM vdi%(4) vdi%(0)=CONTRL vdi%(1)=INTIN vdi%(2)=INTOUT vdi%(3)=PTSIN vdi%(4)=PTSOUT vdi%=V:vdi%(0) ' ' den Maschinencode hier hinein: INLINE v_gtext_adr%,64 ' ' und der Aufruf: a$="Hallo Freunde!" ~C:v_gtext_adr%(L:*a$,150,50,L:vdi%) -@ . @0Hf . @ .0Nu`.-_NuCA/!Hzp@Ѝ @ \ЮNuNNpNhlB  `wwxzyxz|vvy{yy M   > ;9T )F   V% 0-4T6}h#=? M&O "& I (&:/ c!"/   # ,  Q_)hxGG\(>XZ@ 0_V 9 <l^!$ WTP>94h=; V_GTEXT Volker Hemsen Oktober 1991 ; GEM-Text fr GFA-Basic (schnelles TEXT X,Y,A$) ; Der VDI-Textaufruf wird in GFA-Basic sehr stark abgebremst. ; Mit dieser kleinen Routine ist es mglich durch bergabe einer ; String-Deskriptor-Adresse einen Text auszugeben. ; Wenn man die X-Koordinate auf ein 8faches legt, erzielt man ; ebenfalls einen enormen Geschwindigkeitszuwachs. ; Noch schneller gehts mit diversen VDI-Patches, z.B. Quick ST ; Turbo ST, NVDI usw. ; Aufruf: ; ~C: adr%( L:*A$ , X& , Y& , L:VDI_BLOCK% ) ; (siehe V_GTEXT.LST) str_des EQU 4 ;*A$ x EQU 8 y EQU 10 vdi_block EQU 12 contrl EQU 0 intin EQU 4 ptsin EQU 8 intout EQU 12 ptsout EQU 16 movea.l vdi_block(SP),A0 move.l A0,D1 ;fr TRAP movea.l ptsin(A0),A1 ;ptsin move.l x(SP),(A1) ;xy setzen movea.l intin(A0),A2 ;intin movea.l (A0),A0 ;contrl move.l #$080002,(A0) ;opcode und anz_ptsin setzen move.l str_des(SP),D0 ;str_des tst.l D0 ble.s ende movea.l D0,A1 move.w 4(A1),D0 ;str_len tst.w D0 ble.s ende move.w D0,6(A0) ;anz_intin movea.l (A1),A1 ;str_adr loop: clr.b (A2)+ ;Zeichen bergeben move.b (A1)+,(A2)+ subq.w #1,D0 bgt.s loop moveq #$73,D0 trap #2 ende: rts END lh .Jg\pN\N(N .L/NlXNN Uhr N .P/NlXNN) NpN\+mlhpN\Nund demN .NN.N ./NlXNN.N ./NlXNN NpN\+mlh .Jg\pN\N(N .T/NAnHx$o&R&(j(*j8/ ,oX /R& Jg"@0J@o7@S@ MBQ" psNBlRoLxNu 004027083049015 003027084018 001015 001018 005015027052027071 005018027053027072 004027083048015 003027084018 43 136 003027051016 002027050 002027076 003027074022 9 002027069 002027070 EPSON p/ .l/ .hN?/NON/NX-@(+mlh$n .DЀЀCNl6$H0$n .DЀЀCNl6$$n .(ЀЀCNlNL Hp;N\N6$N(N6$$n .(ЀЀCNlN6$N)N$n$.DԂԂNP+mlh`/.|/.x .tN?/ .p/ .l/ .hN?/NON?/N\ 2N-@t-_x-_|+mlh .xlf$n .DЀЀCNl6$N/N6$H0N /?p/ .t/NOL N6$N. N6$H0N /?p/ .l/NOL N6$N. N6$$n .@rdNHЀЀCNlN$n$.DԂԂNP+mlh`$n .DЀЀCNl6$H0N /?p/ .l/NOL N6$N./N6$H0 .t/Nl' V_GTEXTA.LST - schnelle VDI-TEXT-Routine fr GFA-Basic ' ' VDI-Parameterblock als Long-Integer-Array ' ein String knnte verschoben werden ! ' mu nur einmal aufgerufen werden ' DIM vdi%(4) vdi%(0)=CONTRL vdi%(1)=INTIN vdi%(2)=INTOUT vdi%(3)=PTSIN vdi%(4)=PTSOUT vdi%=V:vdi%(0) ' ' den Maschinencode hier hinein: INLINE v_gtexta_adr%,128 ' ' die String-Array-Belegung: DIM a$(5) a$(1)="Es war einmal vor langer" a$(2)="langer Zeit in einem" a$(3)="fernen Land mit dem Namen..." ' ' und der Aufruf: ~C:v_gtexta_adr%(L:{*a$()},150,50,16,L:vdi%,L:0,L:3) Tage zwischen Daten ... Datum Tageszahl ... Wochentag zum Datum ... Tages- und Wochenzahl ...----------------------------- Jahreszeiten ... Jahreskalender ... Monatsbersicht ... Feiertage ... Darstellung jahreweise monateweise wochenweise------------------------------- Feiertage selektieren ... Datum einstellen ... geographischer Standort ... Druckerparameter ... Sonstiges ... Umwandlung von ; V_GTEXTA Volker Hemsen Oktober 1991 ; GEM-Text fr GFA-Basic (schnelles TEXT X,Y,A$(x)) ; (siehe auch V_GTEXT.S) ; Aufruf: ; ~C: adr%( L:{*A$()} , X& , Y& , H& , L:VDI_BLOCK% , L:VON% , L:BIS% ) ; (siehe V_GTEXT.LST) str EQU 4 ;={*A$()} x EQU 8 y EQU 10 h EQU 12 ;Texthhe z.B. 8,16 vdi EQU 14 ;Adresse auf VDI-Parameterblock von EQU 18 ;erstes Feld bis EQU 22 ;letztes Feld contrl EQU 0 intin EQU 4 ptsin EQU 8 intout EQU 12 ptsout EQU 16 ; a2 : para_block ; a3 : contrl ; a4 : ptsin ; a5 : intin ; a6 : str_des (laufend) ; d3 : Zeilenvariable ; d4 : Hhe lea reg_save(PC),A0 movem.l A3-A6,(A0) movea.l vdi(SP),A2 movea.l (A2),A3 ;contrl move.l #$080002,(A3) ;opcode und anz_ptsin movea.l ptsin(A2),A4 move.l x(SP),(A4) ;xy movea.l intin(A2),A5 move.w h(SP),D4 movea.l str(SP),A6 ;str_des addq.l #4,A6 move.l von(SP),D0 addq.l #1,D0 move.l D0,D3 mulu #6,D0 adda.l D0,A6 str_loop: move.l (A6)+,D0 ;str_adr tst.l D0 beq.s test movea.l D0,A1 move.w (A6)+,D0 ;str_len tst.w D0 ble.s test move.w D0,6(A3) subq.w #1,D0 movea.l A5,A0 ;intin loop: clr.b (A0)+ ;String konvertieren move.b (A1)+,(A0)+ dbra D0,loop move.l A2,D1 ;vdi_para_block moveq #$73,D0 trap #2 test: add.w D4,2(A4) ;Hhe dazu addq.l #1,D3 cmp.l bis(SP),D3 ble.s str_loop ende: movem.l reg_save(PC),A3-A6 rts reg_save: DS.L 4 END tschen Einheit (Mittwoch/Donnerstag) 30./31.12. Tag der deutschen Einheit (Mittwoch/Donnerstag) 30./31.12. Tag der deutschen Einheit (Mittwoch/Donnerstag) 30./31.12. Tag der deutschen Einheit (Mittwoch/Donnerstag) 30./31.12. Tag der deutschen Einheit (Mittwoch/Donnerstag) 30./31.12. Tag der deutschen Einheit (Mittwoch/Donnerstag) 30./31.12. Tag der deutschen Einheit (Mittwoch/Donnerstag) 30./31.12. Tag der deutschen Einheit (Mittwoch/Donnerstag) 30./31.12. Tag der deutschen Einheit (Mittwoch/Donnerstag) 30./31.12. Tag der deutschen Einheit (Mittwoch/Donnerstag) 30./31.12. Tag der deutschen Einheit (Mittwoch/Donnerstag) 30./31.12. Tag der deutschen Einheit (Mittwoch/Donnerstag) 30./31((2 .f2O2&DS_HILFE.TXT 1.12. Tag der deutschen Einheit (Mittwoch/Donnerstag) 30./31.12. Tag der deutschen Einheit (Mittwoch/Donnerstag)Sonstige EinstellungenKalenderausgabenmitohneoderWochenzahlen.00 Versatz fr jahreweise Darstellung: minus __ Monate.990 Versatz fr wochenweise Darstellung: minus _ Tage.9Mglichkeit zur Datumseinstellung am Programmanfang.Arbeitsfreie Tage:MonDieMitDonFreSamSonHinweisboxen am Anfang des Programms.EndeTage zwischen Daten heute  _________Erstes Datum: __.__._____9999X9999____Zeit: __:__9999 heute  _________Zweites Datum: __.__._____9999X9999____Zeit: __:__9999 ______________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX _______________________________________________`DnLDAONN N N;|VN2N*`NENNP킮;|;|NvzEup NC`NN -g0-Nv NDBNN`0-Hr Np~A텚NǪp ~A텠NǪp ~A킺NǚprF~A8NǠp~A텦NǪHyNNX$m0$$m0 R0(;@X$m0 R ( +@p0|$m00p0|$m0 p0| $m00p0| $m00pN̮;@Z0-ZR@;@\0-\H;@^pN̮;@`0-`R@;@b0-bH;@dp N̮;@f <N @ ( @0(;@hp~ANǶp~ANǶx mBHpNlpNpNp~ANǶN:x m!HNRx m!HN^x m!HNXx m!HNdx m!Hx mAH +@ED +@EEz +@EE +@pЭ+@pЭ+@pЭ+@EFx +@EF +@P킊P킋P킌;|j;|l;|(nP킍P킎P킏P킐P킑;|(p;|rP킒P킓P킔P킕P킖P킗P킰;|2Q킘;|t;| v;|xN= mȃ`o;|z`;|zp~A>NǠp~A텬NǪpr~A NǶ;||$m8Qpmbxm\vt2-|Nx$m8 m؄1H$m8Rp$m8cNN.N4|Ep AfNNrQ킛Nvz"HAfNCfNBgNݒN;m~p2-~H~A&NǶ0-~H~ADNǠN+@pNNu/-pN`-gQ킙`p$m<?N)d`0zxvpt $m2N$m?N'` p$m<?N$p/-`*N@2` N`NxjN4?-aX`NMN4?-a@`NPN4?-a(`NNN4?-a`NN4?-a`NN4?-a`NS(`|NR\`rN@N4`bN^$`X$m<fN$m0@%WHH/0-$mRWHHnD$m4$mBR0-~N\`v$m:$m8H m&؅ 0HJfNzx m ؅ 0HR( m, 0Hrl@Э$m:$m8H m&؅!H`$mRR$m0ko~Y`NV`|-g>?,N4`? 0Hgl0-H`p$m<?N$p`N0-g mHfDzx$m< m ؅ 0H0mrl@zx$m< m ؅!H`lzx$m< m ؅ 0H0mЈ/zx$m< m ؅ 0H0m"o@rl@zx$m< m ؅!Hp$m<?N$p$m<?N*`j mHfjzx$m< m ؅ 0HJgHzx$m< m ؅ 0HSrl@zx$m< m ؅!H? 0HVHR@WHHgLp$m<?Hml?-N5$m4$zx$m< m ؅ 0H$m4g@$m4 zx$m< m ؅!Hp$m<?N$p$m<?N*`$m<fdzx m ؅ 0HJ^HH/pJ-gpRWHHgzx m ؅ 0HR$m4$zx m ؅ 0H0mЈN`0$m4("mN/p;N"_NV$m4$m0f$m4R$m4 o]$m0gHxB?<$m4("mN/p r$m4RҊ _NNp N8/?<N5*( m ؅!Hzx m ؅ 0HJgB$m<x m؄00H$m4?<N$?<N!?<N4`Z?-an`P @g @Hg @Pg @Kg @Mg @Gg @!g @bgL @gD @rg;|@;| B;|D;|F;|H;|J;|L;|N;|P;|R;| T;| V;|X;|Z;|\;|^;|`;|b;|d;|f;|h;|j;|"l;|$n;|%p;|&r;|t;|v;|x;|z;||;|~;| ;| ;| ;| ;| ;|;|;|;|;|;|;|;|;|;|;| ;|;|;|;|;| ;| ;| ;| ;|;|;|;|;|;|;|;|;|;|;|;|;|;|;|;|;| ;| ;| ;|;|;| ;| ;|;|;|;|;|;|;||;|;|;|;|;|;| ;| ;| ;|;|;|;|;|Nupr~A텸NǪ0-Hzx m؅؄1H0-Hzx m؅؄1H0-Hzx m؅؄1H0-Hzx m؅؄1H0-Hzx m؅؄1H0-Hzx m؅؄1H0-Hzx m؅؄1H0-Hzx m؅؄1H0-Hzx m؅؄1H0-Hzx m؅؄1Hp~A텾NǪ0-xHx m؄1H0-|Hx m؄1H0-~Hx m؄1H0-Hx m؄1H0-Hx m؄1H0-Hx m؄1Hz8-H m8؅ Hz8-H m8؅ Hz8-H m8؅ Hz8-H m8؅ Hz8-H m8؅ Hz8-H m8؅ Hz8-H m8؅ Hz8-H m8؅ Hz8-H m8؅ Hz8-H m8؅ H0-rN+A"-pN0-"-N;A;BNuNBA@NZA퀼N A퀤N AN AN ADNZAHNZAN A0NZA퀠N Nr @p(r`fP m0("$m4$m0H~ANǦx mAH $m@$$m0H$m@"R mN m@+P m0(HЭ$mD$N @/($mD  _!@ m0($m4$m0HЭ$mH$ m0(S@$m4 m0(S@$m4$mBR$m0N\`$m0$mH"N|$m0H$mH RNZ;@0-H``$m0$mHВr Ё+@ m Э$m8$$m8  m 0-H`H$mBR$m8 R Э$m8 R $m8X$mRR$m0U@o`X$m8 R Э$m8 R `B @g @g @g @g @g @g` @g @g @g`<$mRR$m0koY$mBR$m0N\` $mD R Э$mD R $mDX$mRR$m0koYNNBA8Nx$m8 m> 0Hg@x$m8 m؄4pHHRzxvpt "Nx$m8 m؄?0HN'`6p$m8$m4$m8H m؄00Hgx$m4R؊ m؄00HH2-\HN"<N$m4x$m4R؊ m؄00HH2-bHN"<N2-Hl@;@x$m4R؊ m؄00HH2-\HN"<N;@x$m4R؊ m؄00HH2-bHN"<N;@ $m8H m؄BpH`.x$m8 m؄4pHHRp"N$m4;B;C;D 0-H2-H$m4RҊЁ0m ЈJf2$m40-T@;@0-ZY@;@p2-`H4mD;@ -g"0- >-<-$m:xv4-d2-^N p$m8?N%x$m8 m؄4pHHR0- 8-6-$m4"Nx$m8 m> Hp$m8?N>x$m8 m؄?0H$m??-?-?- N'NNBA8Nx$m8 m> 0HgR-g"0- >-<-$m:xv4-d2-^N&x$m8 m؄00HN&x$m8 m> HNNBA8Nx$m8 m؄4pHHRzx$m8 m ؅ 0H$刔Ђ/zx$m8 m ؅ 0H0mrl@"@N/zxp&t "NNNBA8Nx$m8 m؄4pHHR0-/zx$m8 m ؅ 0Hrl@"@N/zxp&t"NNNBA8Np$m8$ԀЀЂ( m؄AH $m8$p$m8Sf2$m8/EpNp/HmfNv"_Np N8"N`0$m8/Ep Np//-Nv"_Np N8"Nx$m8 m؄4pHHR m80H/$m8 N`NN/zp(&t"NNNBA퀘N@Ax$m< m> 0Hg$m?N'`$m`pN/pN/pN/pN/$m0$m>$m<$m:(&$"N$m4$m4$m4$m4Jg-\|zxvtr0|NNu$m8Qp$m8?N4$m8Rp$m8cNuNBA8Nx$m8 m> 0Hg\x$m8 m؄4pHHRp"N$m4$m4$m4$m4$m0$m>$m<$m:xvtr0|NNNBAPNA퀬N AN $mP("mN/p:N"_NV$m4$mP("mN/p N"_NV$m4$m0^HH/$m0nB$m0$mRnB$mP("mNNp;NNNBA퀔NdANA8NA|N AN2A4NZA8NZpNzx$m8 m ؅ 0HR$m4$-g mN"mN mNp^N$mV$mgp mNNN$m8$$m4R$m8WHH"p$mJgpg:$m4( m, 0Hrl@Э$m8fpN$m4 SN`$m8f$m4("mN"mN`$m4("mN"mN-g mN"mN$m0S@WHH/ m0(H mN"H mN$m0U@WHH/ m"mNVJVHHgpN$m4 SNzx$m8 m ؅ 0H$m4WHH/p$m|JgpJWHHg $m4B$m|Pzx$m8 m ؅ 0H$m4n~pNzx$m8 m ؅ 0HNNBAPN$mP/aJg m0j`$mBR$mP("mN$m0N"mN0$m4$m0$mRg.$m0H8-H m؄1H"m m2Rm0-W@g$mRR$m0@oNua0-zHrNR@;@z$m8Qx$m8 m> 0Hgp$m8?N>$m8Rp$m8cNuNBA8N8-zH m؄00H;@HxBg?-N?tpANN6pN;@ 0- H ;@p$m8?ap$m8?aNNBA퀰Nd$m0rN̄vptrkNpNNNBANd$m0rN̄vptrNNNBANd$m0rN̄vptrjNNNBANdANdANdANd$m?a$m?a$m0rN̄vptr N$m?a*N?-Np$m0$m<$m:$m8vt"-NbpN"p~|zxv$<"<NpN"NrNu?-nNppJ-gpRWH??-r mNXpJ-gpJWH??-v mNX?-t0-N&(*pN /NtF?-x0-N&(*pN /NtF?-z?$m0S@m,$m0H mN"H mN$mP("mN`lpJ-gp"pJ-gpg$mP/a JgDp:N"mNV;@0-H mN"mNp4mЊ mNN"mN mCrN m"mNAxNNǔ m0(gf$mP//-N`T0-nN$mP("mN$mP("mN"H mNp;N"mN"H mN$mP("mN`d$m0S@mZp$m4RЊ mN$mP("mNpJ-gp"pJ-gpg $mP("mNN$mP("mN0-Hj^RN"mN/-0- H0mЈS@?$m? m/ mNO ?<$mP/aN?-Np?-Hm~NtF?-HmNtFNn0-H mN. @ NC~N0-H mN. @ NC큄N0-mf0-;@$m4Bzx m ؅ 0HN`R$m4("mN"HA~NV$m4$m0g$$m0S@WHH/$m4/aRWHHg-gDp:NC큄N/$m4("mN/p4mЊ _N"_N$m4("mN`J$m4("mN/p4mЊNr"_N˔$m4("mN/p:NC큄Nr"_N˔`d$m4("mN/p$m4RЊ _N"HA큄N/$m4("mN/0-H$m0RЈ _N"_N$m4("mN$m4R$m4 o]aNrNuN{$mX g?-Np?-/-Nv/NtF?-?-$mX/Nt?-/-BgNu\/NtF?-/-BgNu\/NtFNn?-Ns$mX"o@+@ -UHHD+@?-Ns$mX"o@+@ -UHHѭNr0-mf, -o/-/-N|8`Ep?NprN͂pNNu?-Np?-0Nr @/(?<Nu\/NtF?-2Nr @/(Nr @ (ї?<Nu\/NtF?-4/- BgNu\/NtF?-6/-BgNu\/NtFpJ-gp??-8 mNX?-:?-0-tN&(*pN /NtF?-@0-vN&(*pN /NtF?-B0-xN&(*pN /NtF?-Dzx m ؅ 0HN`&(*pN /NtF?-FAN&<:<N0zN&(*pN /NtFNnNr0-Nmf?->Nsrl@;@?-@Nsrl@;@?-BNsrl@;@ 0-tmVHH/0-vmgp.0-xm VHHg;mt;mv;m xANA,NN -N`/??0-tN8:&N/?? -"N`/??0-vN8:&N8:&N/?? -&N`/??0-xN8:&N8:&NNͺr Ёzx m ؅!Hzx m ؅ 0H~ANǚzx m ؅ 0H~A,NǶpA,NPaNu?-Np?-HmNtF?-Ahp"pNp.N8/0-hH"pN"_N/NtF?-0<0.N/?<0NATHHN"_N/NtFpJ-gp??- mNXpJ-gpJWH??- mNX$m0$m<$m:$m8vt"-NbBgNn0-mWHH/0-mWHHg*0-H mNbVHV킏$m-\<-z$m8$m6$m4$m2N;A8;B:$m0$m>$m<$m:$m8$m6$m4$m20|Nab0-Hg m08 m0:$m0r mN$m0r mN"$m0HjRm8$m0HjRm:$m0$m>$m<$m:$m8$m6$m4$m2N$m0$m<$m:$m8vt"-Nb`8NNBA퀤NdNu$m0rN+A -N$m4$m4$m4$m4-gN>$m4$m4;C;D$m0HjR;@8$m0HjR;@:0-\H$m0R$m2H4m8o@rl@$m40-bH$m0R$m2H4m:o@2-Hl@$m4$m0m8$m0m:$m0r mN$m0r mN"` ;m^8;md:$m0$m>$m<$m:$m8$m6$m4$m2N-g0-gp0-"-N;A<;B>JgX0-H mNnHm<0-H mNrHm>$m0HH/$m0HH/0-::-88->6-<$"N$m0$m>$m<$m:xv4-:2-8N - m NBg?- mNX$m0$m>$m<$m:$m8$m6$m4$m20|N-g^$m0$m>$m<$m:xv4-:2-8N&0-g0$m0HH/$m0HH/0->:-<8-:6-8$"NNuNuNBA퀤Nd$m0"-N;A@;BBJg>$m0H mNn/$m0H mNr,:-B8-@v$m4H"-NbNNBA퀤Nd$m0H mN. @ NN`NBA퀤Nd$m?aNNNNBANdA퀤Nd$m? mNT/$m? mNTHHПnDNNBANA퀤Nd$m0H mNZ;@D$m0H mN.+@ mDWHH/ mDWHHg m"-N` m/ m0(HS mN"NNNBA`NANdANdA퀈N $m?$m` N`&(*pN /a0pJ-gp$mVP킓$m?$m`/?<Nu\/ap$mJgpV킓NNBANdAp\N"mN$m4$m0H mN"m(N/-a"mN` aD"m(Np*N"m(N"H m N/prN"_N"m(NprN"mN"mNN./ m(  _ N./ m  _!@ mh\HH"pJ-gpg0pN"m$N"m$NN./ m$  _!@p[N`pZNpN$m 4$m 0gHN. @ N"mNp\N"mN mN/N. @ (N"_N"mNa$m 0NN0<.*N/EkpNp//-a$JBg6 ma}g*NpN mrNpN$mX$prN"mN m $m8$$m8$prNN$m8 R0@`fANANA,NAJNANA2NAPNNQ킥Q킦BB2B6Q킧$m8 R (+@:$m8 R (+@$m8 R (+@"$m8 R ( +@&$m8 R (+@*$m8 R0(;@H -"Э$m\$ -&$m\В+@> -a~/??0-tad8:&N/?? -"a~/??0-va>8:&N8:&a|/?? -&a~/??0-xa8:&N8:&a|Nͺr Ёzx m ؅!H$m\ $m`$$m` ~ANǪ ->~AJNǠBpNj$mXD$m\"o@/Nx m؄AH +@zx m ؅ 0H~ANǚzx m ؅ 0H~A,NǶpA,NPpJ-gpRWHH/p*_HHg@ -*rN+@B -B~ANǚ -B~A2NǶ$m\ rЁrNN -*$mX"$m\Dr J^HH/0-HWHHg"-*p$m\ҒЁrNNP킛Bga(pNpNNu$mXB0<.*N/EypNp//-aJBgF maz`g$m\ "-"ҭD+@6 -$mdo> -$mhl$$md $m\ "-"o@+@"`" m\+PB"`B$mh $md+@" -az/??0-ta{V8:&a~./?? -"az/??0-va{08:&a~8:&ax/?? -&az/??0-xa{8:&a}8:&axNͺr Ёzx m ؅!H$m\ HH~ANǪ ->~AJNǠ$md rЁrNBpNj$mXD$m\"o@/Nx m؄AH +@zx m ؅ 0H~ANǚzx m ؅ 0H~A,NǶpA,NPpJ-gpRWHH/p*_HHgD -*ra~+@B -B~ANǚ -B~A2NǶ -&rҭ>DrNNpNj$mX]HH/0-HWHHg -&rҭ>DЭ*rNNP킛pNpNBgaN/-aL <.DBTN"mN mav`g"/-aJg mC큐NP킘`Q킘NupNj$mL$$mX $mLoprN"mN$m4B m $m8$$m8$prNN$m8 Rp0(+@Fp0|$m8$m8 N$m4("mN$m8 R ( +@J -J\HH/ ->J^HHg -F`r` -J$m4( m2!H$m4R` -2"-ҭJЁ$m4( m2!H$m4R`j -""-ҭJЁЭ6$m4( m2!H$m4R`@ @g @g @g @gz @gr @gj @gb @gx @gp$mLђ -B$m4_HH/$mX r$mLҒ_HHg$m4 S+@BP킥NuP킦 -""-6ҭЁ+@N -N~APNǠpN $m8$pNj$mL$$m8 o|$m8/N"m4 mL"$mX SN`JpN$m4$m0gB$m0S@f $m8`$m0H$m8ђ$m8/N$m4R$m4 o]NuNBA8N -N$m8\HH/$m8 THR@WHHg$m8( mP HNNBA\NAtNA4NZA8NZ$m\ $m\$$m\ $mtВ$m8$"m4 mt"$m8 N`D$m4( m؄AH /$m8"p$m4@"<o@$rNN$m4$m4 o]NNBAXN@$mXB0<.*N/Ep Np//-aJBg marg mrNpN$mX$NNBAhNAdNpNANANA,NAJNANA2NAPNNQ킥B:Q킦BB2B6$mh $md$mX$"m\ mX" mX+P> mX+PB"B&B*BBQ킧 -at/??0-tat8:&awdNͺr Ёzx m ؅!H$m\ HH~ANǪ$m\ ~AJNǠ$md rNB$m\/ax m؄AH +@zx m ؅ 0H~ANǚzx m ؅ 0H~A,NǶpA,NPP킛pNNANANA,NAJNANA2NNB"B&B*BBQ킥B2B6Q킧Q킦+m2NJj^"- o@$m\$"mX m\" m\+P>pHN/ - N"_N"mN <.N o <.RAMN$"mN"mN` <.ROMN$"mN"mN m\+P$m\ ar@/??0-tar8:&auNͺr Ёzx m ؅!H$m\ ~AJNǠzx m ؅ 0H~ANǚzx m ؅ 0H~A,NǶ+m pA,NPP킛BgaNu <.RSCN$/EpNp//-axJBg maogpN mrapN$mX$ mX+P" mX+PNANANA,NAJNANA2NAPNNQ킥Q킦BB2B6BB&B:BJ$mX jR~ANǪ$mX ~AJNǠ$mX ~APNǠ -"ap/??0-vaq8:&asNͺrЁzx m ؅!Hx m؄AH /pN$rNNpa}x m؄AH +@zx m ؅ 0H~ANǚzx m ؅ 0H~A,NǶpA,NPp+@B$m4 $m0@ WHH/$m0@ WHHg$$m8H m؄00H"ЀЁѭB`$m8H m؄00HѭB$mRR$m0@o -B~ANǚ -B~A2NǶEpNp/x m؄00H/NEpNp/x m؄00H/NEav.$mBR mNh A`ratpNWHV킛NJV킮pN;@pN;@Nu-g NJV킊NJV킋NJV킌NJV킔NJV킞NJV킐NJV킑NJV킒NJV킕NJV킍NJV킎NJV킝NJV킟NJV킏NJV킓NJV키NJV킖NJV킗NJV킰NJV킡NJV킢pN;@jpN;@lpN;@npN;@zpN;@ppN;@rpN;@pN;@pN;@tpN;@vpN;@xpN +@pN +@pN +@pN +@pN +@ pN +@$m8QQ텏p$m8"Ёr-Ё/pN( m؄1HR- -c$m8Rp$m8cNCfNptA킺N+ARpaq^NupNVHHNu$m8Qx$m8 m> 0Hgp$m8?ap$m8"Ё( m؄4pHHRzx$m8 m ؅ 0HJVHHgp$m8?a$m8Rp$m8cxNu <.INFN$/E pNp/Hm`aNJBg$pa~A`raq0-VrN(pJ-gprN"0-rN(0-NpJ-gprN"pJ-gpNpJ-gpNpJ-gpNpJ-gpNpJ-gprN"pJ-gpNpJ-gpNpJ-gpNpJ-gpNpJ-gprN"pJ-gpNpJ-gpNpJ-gpNpJ-gpNpJ-gprN"pJ-gpNpJ-gpNpJ-gpNpJ-gpNpJ-gpN0-jrN(0-lN0-nN0-zN0-prN(0-rN0-N0-N0-trN(0-vN0-xN -rN. -N -N -N - N -N$m8Qx$m8 m> 0Hg $m4`$m4x$m8 m؄4pHHR$m0"ay$m4$m4$m4$m4x$m8 m> 0HVHrN($m02-\HaerN($m02-bHaeN$m02-\HaerN($m02-bHaeN$m8Rp$m8c Hmfaݜ/Np rtA킺N:pamtpa{pNuNBANA8N m / m0(H$rN`prN"NNBAN2A8N pN$m8$m8gp$m8N"matv"ma}F` mN`AasSzx m ؅!HANA,Nzx m ؅ 0H~ANǚzx m ؅ 0H~A,NǶpA,as"pAJarAastJgx m؄AH +@-gaAxNEpNp/0-Va_`&<:<ab&(*prNb"_as~E.pau$/N\"_asfp atz/N"_asTx"mNEEpNp"H mas4E.pat/$mX a^^N"_asEMpatx"mNp$mP$ -gXESpNp/ -a^&(*pN "_ar < $au /"-pN"_ar$mP("mN$mPR -"gXEZpNp/ -"a]&(*pN "_arh < $at/"-"pN"_arL$mP("mN$mPR -&gZEapNp/ -&a]^&(*pN "_ar Egpas/"-&pN"_aq$mP("mN$mPRpJ-gp"pJ-gpg6Ejp Np/pЭBa\N"_aq$mP("mN$mPR$mBR mN$m0H"-:g$m0H`rEtpArazEp maz``EpNp/ -:rRa\`N"_aqEparCray`"EpAray`Jg @g @gNǔ$mPR$mRR$m0U@o>-gAJapDS+@V$m4B -"Эax`^$m4/NJgH$m4 Э @ $m8$$m8 \HH/ -V$m8\HHg$m8( mJ H$m4T$m4 o]$m0BBmLQ킨-g$`RmLz8-LH m&؅ 0H2m -g Jg @g @g @g @g @g @gb @g$NuHy$m? mN\$m@Hy $m? mN\@$m0Hgp$m@Uf4Ep mamr$m?Hx?<N@CxamdN`Bp$m@Wf2Ep mam2$m?B?<N@Cxam&N6`P킪Nǔ`Hx$m? mN\@p-`p$m@Wf$ Nǔ` Jgv @g @g @gf @g @gB @g @g0NuaprAal0-U@mNn+@^ <^Jf -^ gENpam^"ma\"mad`EQpam@"ma["madHy ?-` mN\@$m?HxBgN@CxadNNǔ`P킪`oraoADak"0-S@mNn;@P0-P@$m4$m0H`ETpA큢ad`EWpA큢ad` NǔNuHy$m? mN\$m@Hy $m? mN\@$m0Hgp$m@Wf4 $m?HxBgN@Cxa^$N6`FHx$m? mN\@Hy$m? mN\$m4$m0f"pxaf"maT"ma]P킫NF`p$m0S@f"pxaf"maT"ma]P킫N`DP킫Np,afCxaT/$m?p$m@?HyN@"_aTCxa]P`xp$m@Wf>Eppae"maTV"ma]&$m?HxBgN@Cxa] N6`.P킫$m?p$m@?HyN@Cxa\NNǔNuHy$m? mN\$m@Hy $m? mN\@$m0Hgp$m@Wf4Esp ma\b$m?HxBgN@Cxa\VN6`4Hy$m? mN\SfrHx$m? mN\@ Esp ma[:P킫$m?p$m@?HyN@Cxa[ NNǔNuHy$m? mN\$m@Hy $m? mN\@$m0Hgp$m@Wf: p$m@Uf2Ep maYPp-?N*CxaYHNNǔ`ZEp maYP킫Np,ab4CxaP:/$m?p$m@?HyN@"_aPCxaXNǔ`p$m@Wf2 Ep maXP킫$m?p$m@?HyN@CxaXfNNǔNuHy$m? mN\$m@Hy $m? mN\@p$m@Wf-@p-VHV킪`.Hy$m? mN\@Hx$m? mN\@p-`<0`6Ep maW`$0Jg @g8 @gH @gl @g @g @g @g`[a[VA$aVpADaVA@aVA퀔aVX?<p$mD ?$m? mN\$m(4?<p$mDR?$m? mN\$m4$m$0]@\HH/$m@gB$m0S@WHHg`$m0_@]HH/$m$8H m؄00HH$m2VHR@gB$m0_@WHH/$m$8H m؄4pHHR$m(0H$m0RЈ"VHR@WHHg&$m(?$m?p$m@?/-ad m`\0P킪aW4`\$-g&/-p$m@?Nl"_aE"maNQ킫pJ-gpJfppJ-gpJWHH/pJ-gpJWHHg0-|H0mlЈ2-nHl@a[$mP("may $mP("may6/ m2-jH"_ay$mP("may/Ax2-lH"_ay0-vg,$mP("maxp;aF"HAraD$mP("max`-g^p aV"maD"HAxaD$mP("maxj0-vg.$mP("max0< ;aG"HAraD$mP("max6`:0-vg0-|H/0-nH0mlo0-n0mjaZ$mP("maw`&0-|R2-lH4mjЁaZ$mP("maw$mP("maw/ mr"_axl$mP("maw/0-lH0mjR/Ax""_ax@$mP("mawp;aD"HAraC$mP("mawZ`^0-l0mjaZ$mP("maw<$mP("mawf/ mr"_aw$mP("mawJ"HAxaCL$mP("mavP킩`Q킪Q킫AraTNu$m0 Э+@b$m0R mbpNu$m0 Э @0$m4$m0( mJ 0HVHJ@WHH/$mP( m, 0H$m0WHHg$m0T`P킪$m0HNuaNu$m0 Э @ +@b$m0( mJ 0HVHJ@WHH/$mP( m, 0H$m0WHHg$m0X`P킪 -bNuaVNA퀔aQh$m0Hg$m0H`U$m0H`UaVA8aQX-gZ$m8 nDJ\HH/$m8 nDr]HHg$m8 a,aV`Wp$aS/$m8 aV@"_aA`W$m8 a,aVr`WaUA8aP-g~$m8 \HH/$m8 r]HHg$m8 a,|aV,`Wt$m8 l&0<-$aS/$m8 FRaU"_aA`WFp$aR/$m8 aU"_a@`W*$m8 a, aU`WaTA8aP8-g$m8 r\HH/$m8 r_HHg$m8 a+aU`V$m8 lJ$m8 nDn$0<-$aRd/$m8 nDaU"_a@R`V`EpaQ`V~P킪p$aR$/$m8 aT"_a@ `V^$m8 a+TaU`VLaT*A@aO$m@f0<.baQ`V,`2p$m@Sf0<.waQ`V`p$m@Uf 0<.laQ`UP킪0<.?aQ`UaSA8aOpJ-gpRWHH/ -N$m8\HHg (-2$m8ؒ mP 0HVHH`S,p`S&aSlAaN$m0_@f 0`TL`$m8 \HH/$m< $m8^HHg6$m8( mJ H0T"maD/-$m8/N"_a;"maD$m8  gEpaM"ma;"maDz`EpaL"ma;"maD\ m`QaOA8aJA퀸aKVHy $m8?* mN\$m4$m8 g$m?a`Qt` pDaM/$m0a&aP"_a;`QRaO0A퀌aJAaJBAaKVHy$m? mN\$m4p$mJgpRWHH/$m0Y@WHHg$mP`$mQ$m0_@fHx$m? mN\^@$m4p$mJgpRWHH/$m0H"<VHR@gBp$mJgpJWHH/$m0H"<VHR@WHHgav/p$mJgp?NCxaB$mg2p,aKCxa9/$m?BBga"_a9CxaBa`*$m?BBgaxp,a:"HAxa9CxaBla`MfaMA퀐aIBApaHA큨aJA큮aJQ킬$mg;|RBmT;|V`BmR;|T;|VEa+ m0R0-V2-TaAv`A큮amZ$m0H$mp"gzpJ-gpJfA큮C큨a8C큨aA0-VH$m0RЈ$mp"VHJ@f2pJ-gpRfp-aJC큨a8"HA큮a8C큨aAb0-T$mRgr0-VH$mR$m40-V2-Ta@`:$m0H$mp"gp/aJ8C큨a8>C큨aA$m0l 0+$mR$m2H4+J@jABo]`~0-T$mRg~0-VH$mR$m40-V2-Ta@:`:$m0H$mp"gp/aIC큨a7C큨a@$m0l 0+$mR$m2H4+J@jABo]` P킬`Q킬0+$mR$m2H4+J@jABoH]A큨`M $mPR$m0 $mP( m,!H$m0X b`B$m8H m؄00HH$m8f $m8H"maiCra>$m0l$mRR$m0koY`IaIAaEA8aEA,aEAaEpJ-gpRWHH/pJ-gpRWHHg4p$m8$$mPS$mP("maiV/ <(SP)aG\"_aLJg$mP("mai0/p#aG&"_aLf$m,4$m,0VHH/$mP("mai/EpaFP"_aL0g.$mP("mah/p$m,R _aHHaL~a:$m8$`*$mP("mah/ /EpaE"_aKnJg\$mP("mah/EpaEh"_aKH$m,4$mP("mag/p$m,R _aG^aKaPB@H@$m8$`$mP("mag/ x$m8"madae>x$m8"madae*x$m8"madae`j mae 0A텲ab6aAP킚Afra(p aE"ma7 m $p raHF maFav+@V -Vfpa9\ra`+@VQ킚 -V~Aa_Zpra9ptAaVT/ /zx  m ؅!H zx m ؅/0HAa.&S"o@zx m ؅!Hpa&-gEpA큖a7$mBR$mBRzx m ؅ 0Ha6n`$$m8H"mab"HA큖aELJf$mRR$m0koY$m8H"maa/$m8H"maa/p:a?"_aER _aA6aEla(S@;@`$m8H"maa/$m8H"maa/p/a?~"_aDR _a@aE&a;@b$m0H`6Ep ma6 ;|d;mbZ0-ZH~Aa]EpA큖a5` ;|d;mb\0-\H~Aa]xEpA큖a5`Ep ma5;|d;mb^0-^H~Aa]8EpA큖a5v`Ep ma5b;|d;mbf0-fH~Aa\EpA큖a56`\p$ ma=;|d;m`X0-XH~Aa\0-XH~A텲a\`$Jg @g @g6 @gn @gBm$ m;PJzx m ؅ 0Ha4(`J8-JH"ma_"H maC$m4$m0g8-JH"ma_/8-JH"ma_/p a="_aBS _a>C클a4Z8-JH"ma_h/0-dH$m0RЈ _a>aCa;@h$m0H`|A클8-hH"ma^`A클8-hH"ma^`nA클8-hH"ma^`ZA클8-hH"ma^`FA클8-$H"ma^0-hH8-$H m؄1H`Jg @g @g @g @gRm$0-`m$mRmJ0-JkoY$mRR$m0Y@o2`a;xCaEpa0?<N3`>4a>zAa9p ma=,a;LJf m0(HS ma= "ma2`=-g m0+Pf?<aVBmj0-~a28`|z8-jH m&؅/0Hz8-jH m&؅ 0HПJgP8-jH mD 0HVHJ@f$z8-jH m&؅ 0H2$m0$z8-jH m&؅ 0H2+@j$m0 \HH/$m0 j]HHg -"<arl@+@Z?</-a$mPBzx m ؅ 0Ha0`B$mP( m, 0H$m0^HH/$mP("ma\0(J@WHHf$mPR$mP o]zx m ؅ 0H$mPo ?`8a6dAa2 m $m8$"m4 m8" m0(HS$m8Вa* ` $m4 Rpr l@$m4 R$m4R$m4 o] m`8 -&o?<NlEbp ma*|Axa3&a$mPR -6"-"ҭЁ$m0$ m0+Pn -&$m0В+@r -&r2arl@+@Z?</-&Nm$m0 R$m4$ -ra):`$m4(2 mJ 0HVHR@WHH/ -r$m4WHHg -n2$mP( m,!H$m4 n$m\$-g$p=a2/$m\ a a5"_a Cra)$m\ ratJWHH/$mP( m, 0HTHR@WHHg< Cxa)a\`$m\ raJWHH/$mP( m, 0HTHR@WHHg0 0alNa+@Aa<$mP"o@Szx m ؅!HN4|EaCHaIl`Epa+/aIVaa/J"_aNE p,a/E5pa+r"_ta ;AaI2N&`AaMAJaLa,Q킛Epa+F/aHa,a."_aE=p.a/E5pa+r"_ta L;AaHN&`NaHaLraPaHN&`4 @g @g @Gg @g\ @ZgT @m @dopraF@Ekp a%.praF,aH8aL apraFEpa% a$$m0Ha-aa%$m0a%4praEEpa$a$$m0 a-aa$$m0 a%praEEpa$a$|$mP a$Aa8Jgvp raEEpa$ra$N$mP("maLladp raEVEpa$Ha$$$m4 a$p raE4Epa$&a$$m4("maL ap raE Epa#HyNNX @p!@paGr fNNu$m8Qx$m8 m؄00HgBx$m8 m> 0Hgx$m8 m؄00Hax$m8 m؄00Ha$m8Rp$m8c"-paHyNNX$m0$0-XH0|$m00p0|$m0 0-lH0| $m0 a0a Nua Nzpa JkpNupNua)AHPB?HQ?<NNAP _NuDExa*`bDEa"`ZaR11!Nua11!Nu 24&8:DE`6 24&8:DB`&a&8:DE`DEx`a` 24&8:HnghDBHngXDE~<En g6@ABDFGcGcGb8(vHDl`G8BCHC` GHD8HD쬵k&Dуd QRB BbJjDBNu DENupN֓DjdDA@ cAр[SBoJjDBNurptNuH@g0J`Ѐ[rGoJjDBNu0ftNu@[rB oH@JjDBNu $HkBk Bj*DBNupNuDBBkBjDBDNuf gp`C@ 246jDCCe0 C/jC C@j C jr0H@{0>H@Nur{0Nu{0NutNu 246j(:<DCaf AfBfNu`Na 00Nur$o, b4< J@k @[H@NuH@RBNu4<Ѐ[NuDg8k2 b4< J@k @[H@DBNuH@RBDBNu4<Ѐ[DBNu4H@Ѓdh`^HCH@:">H@`H2g&HCH@:<HC>H@Ѓd(`HCH@:H@r` gDBgkDE`HDBDEaBDBNugDBa8DBNutNua 11!Nux`xaR`aL` 24&8:HoHoEBJAgJDfr:g,|HC҅H@:ۆ<HC>H@Ѓd`vHCH@:H@`fgDBgkDE` DBDEaDBNugDBaDBNutNuHoHoEBz:g|HC҅H@:ۆ҄ۆ<HC>H@ЃdHA@B@H@хk HAҁHAрSB BbNuJBj^tNuk(g.JBjDBAр[SBDBjNutNuAр[SBkNuJlNu0gH@rJBkB JkЀ[`DBЀ[`J.;gP:pr4<Nup`?xa`Ba411!Nux`4 24&8:`& 24&8:`a&8:` &8:@ABJEoHnfNup`?2tNugDEDBHngDBEBkQ*HEJDg?<>0rHGGdHGGdSWDуdi?<>0rHGGdHGGdSWDуdi ?<>0rHGGdHGGdSWDуd&2 H@kփAр[SBkփejRAd RdQRBJjDBNutNu?<,>CEdGH@0r`xJCgz?<0rÐdSWЃdi?<0rÐdSWЃdid?<0ÐdSWЃd&2 H@kփAр[SBkփejRAd RdQRBJjDBNutNu?<0riR?0i?`?<`@$g\kdHfiHNufnpNupNu"lDaDNuJnDaDNuzxeҁ؄d`ef Nup`=@&gTkdHöfiH@HNugmNupNuz&lDaDNuJlDxeփ؄d`efNupN"_KbM*IVO:HQ <-H*,`N,;^d d3 d# d# # d# # # # d ALH dAL H LH d AL`H L|0H>L|H>d~# # # # A`@ALH L|H>L|H>L|PH>L| H>L|H>L|H>L|H>L|`H>L|0H>L|H>QL|Nu$H$&"BA -KaXA"f B &nNuH>dd2d"d""d""""d LHC dLHLH C@d LHL|H| L|H|PCd~""""C`:LHL|H| L|H|PL|H|L|H|L|H|L|H|L|H|@L|H|pL|H|L|H|CQL|Nu`Na8A-Hhp apMa=@F?<NNTT@A0r p0Q`pdr ta0.F=@=@ACp,2QAp 2Qala:``peahp`(p?a(arapaHz?< NA\?<LNAfCR2A0A82r22aX"<d0<NBLNurt=@:=A@=B2::(   F..26"8@"PQ1!P1P!0PP`0  q#p"AӘQNuA Nu|^|  R^,T:Hz(` NHz ?<&NN\Nu9ҮgNuWҮNuaaa a O: n*NNuNuNupc?a0QNurdAd6Ag,B(dB(dH Ac<atgBAp`NuNu?<OA`d?<IA`Z0<H IaLt Ig Og Ug Ag Rg*afNup`ap`40afHRat>Er$Wgr STD:gr COM:g r LPT:f2FA$_0=@D~CA0< BhaB2"pNu$_AF Ge><QBAFpNuahgzp=` a\gzpAC? IBBYpa2BNuPRN:LST:AUX:CON:MID:IKB:VID:`Hz `Hz"` <Hz&?<&NN\Nup CNup C0Nu C NuJBgVB&8TTDуdQRBNuDAр&AdRAрAрDуNu <r4<NuQfHR$n2Jjg$_NuH LNuPfJ.fg0HR$n2Jjf$_NuHC/*%I $n2%_LNu B?b4<rpAv JBlDBv-|JBg Bb Bk&H>aTaRFBd&8*L?a<aSF Be BgQRB`RAdR e <rRF&0xaCձfEv+0JFjDFv-Hƌd0BFHF 0HF0ANuprt|`HQ2.d Aeg>r C 5e&!R 0c 9c0`<R"_`VC0 Ef"_Nuaa/ CFr  g 00VJAgB @ nN @mHJ@j0.4DBUBk0QSAg Q.`S@k 0`0BAF "_Nu.WAkQA 0g`prt|P;Q:  g +g -f .g40  b 0e 9b da6`RF` .f 0e 9b daSF` Eg efX +g -f 0e 9oSH`00  b&Hz0  b E Do`ZJjDDDS4<.arJFkSFk4arQa^`&HaFFaZQ&8*L/a,H܆jDBJ.:gtBn:Nu(:HE:a`4JVHHarЁЀ`z@`z8H@0`z(a^*d2d2d"d""d""""d"`""""""""""""""""QjNup"X2g6C/ !UAk$!Q"_Nu @$@JfS a`QNu$Aa`QBNuHz a `Hz aH `bHPHQ0(ika $I _aIUd4Id4Id$Id `$$$$Q _Jf,ajId4Id4Id$Id `$$$$Q @NuSa/ a$I> _aG` VNuag`af`ae `ac` acpNuadpNu/ a$I> _a4Ae4v` VfANuHP0(R@kBa $I _aIUd4Id4Id$Id `$$$$Q @JfNuNup `,~aFSAfNuag`af`ae `ac` acpNuadpNuaSAkfUANuH HPhkJa $I _aIUd4Id4Id$Id `$$$$Q @JgSL`QNup `+aAf` VNuag`af`ae `ac` acpNuadpNual4@m4v` Vf@Nu/HP0(X@kHaR $I _a:IUd4Id4Id$Id `$$$$Q @Jf$Nu $Nup `+.aYAfNuag`af`ae `ac` acpNuadpNuaSAkEF$p VfWANu?HP0(T@kHa $I _aIUd4Id4Id$Id `$$$$Q @Jf4Nu0XNup `*aLUAfQNuag`af`ae `ac` acpNuadpNuaSAkXf SAkXfUANu|H`|i`|l@H~|`ze`z`zd@H>|`th`tpa ".Nutj`t@H|`rk` rf`rg`r5=@|0`pM` pO`p`po`tz.`z+@-AH<|`^~*@-AH|`Lt)`t` tr`t2`t@-A=B|`,tN@`t,@-A=B|`v8`v(`v-` v!`v `v@-AH |`HAHBHCHDHEHFHG-HfAD-HH@-@H|p`rAD-@f-H `r6 @`AG` AI`AJH|=@ `z`z `z8.^n\Dn\@Hp tr=ED`Bp'rta n2rt6(SC0(S@apaB\papava0pa _a 4$FAFp_@[000][vx`* [g" ]g |g QSx` xQSrQ][vx`* [g" ]g |g QSx` xQStQ]BAF0-H,=@p4a2HNu 24DBaDB11!Nu 24DBa DBNu 24x6o<Ce(FC BdЄeNu B/dHDDdRdQRBNu&<:<`g BbUC BcjNu BcHDDdSkg RBAрjNuNu0ftNuB H@"jNuE"ea "ep`%&6NuE "e a "d&&6NuE"e a Ƶ"d66NuE"e a "d666NuE"e a "d6Nu 24JBoRBk NugSBk` 24JBoCkNugCk`|a`QNuHg"cc/ 0)a _$PS@kH2QNu2(g$PRAA4DBH%$Y2Pg 1AHRAA%NuBhNupLADarHTBnBL*Hd"aZHd"aRHd"aJHd"aBHdF n Dg"`.2.JWAARA0.L n.g hfRAS@f=AB"aNug//ANu@k AB00HNuX@g .NuAD Nuz`zA6C|IdXC |2:H<0`$6HpA2`A.p` A>`A*p4. g=BNuao aШNupNuaJFoHPJhja?<?B?<BNAO _*kBg?/(?<BNAO Jk NuNafoazJBkAf`a|??/?<BNA.k \Hx?<BNAO [HHNux`x*0ao< 2fJjr`Nu~dGdEH<Nup`"0@F@AJhg PLNu`"LJg(HPBHh/??<@NAXLf ѨLNuJkp%`"faJBja!| ??<>NAXOJkpNu0< aF`0< CF2p`p a0`p CFp`aCF"p`~Hza `Hz"J`lB.@=|DNua.@FpAR@C`J @H` @HHy&aa"H`Hy&`Hy& 24`@H` @HHy&aa"Hav`Hy&`Hy& 24`B.@=|DNuB.@ab=GDgNup`!.Jg$_a: HN$_a: HN$_aBHN$_a؄BpHN$_aB0HN$_axBpHN$_alN$_ab؄N$_aXN$_aPN$_aF 0HN$_a:؄00HHN$_a,p0HN$_a 24N$_a:p 0HgpN"X I"_(*UGk*<(؆QNp`p`p` p`pJPg` .$_a!HN$_a؄1HN$_aHN$_a 00N&8:` &8:@ABHaNL8aL8 DBabL8O <jDFJEjDEFn ffAbtNu&8:a\`b&8:aH`T.@<.DAp$I"t Q k"RGef~`SG * g *fSG`<.DjZ\FkBJn`g Fgd Fg^HS&I.aQ`p???<NM\Qj&_NuHQ/? B[& &6NuE"e a"b BB[& &6 NuE"e aȵ"b B& &6NuE"e a"b"_$_HQHPbb6Bk K0*a$RHd2Hd2Hd"He`""""Q`"Z&p0P7@g R@@#( \ _& &6 -KNuHyNMXJg HyNMXJNuagpNua Nu"H Y0e$b Pr@Ag$D!("fXծ"HNup`rap`QNupaNu4pa2Nu$pa"Nup2(g"P@g2RADAH""n"r2gZAe2 1@#-I"Nu1@NuAt2<XJX[j]`p` a."n"dp`paNu?pa2Nu/pa"NuH n&$n""Hgr k&@ S`g^ k#&@0+Hd3 Hd3 Hd# Hd# # Hd# # # # Hd`# ALH# ALHQ&f-I"LNuat ."NuaJAfCNu"X2ebP6gHRC(D#HNua@gn` a4gb0`/hd6a$ W PHd2Hd2Hd"Hd `""""Q _/a _Nu/hda$ W2( P"IdHdHd `Q`r@/JAnr W4(Ae4RBBc0?a0$2 W PA`HP"Xp0g"r~ RAfS@n _a`1V` _NuJG06#f &#o-K"CNk"c" C gT6f&#o-K"CNPv6"cgRCC(D#8`E"e a"d"_&B[NpZ`AFtЀvQBNuAFt0 9c^QBNuAFt 0QBNua`a`aCF 0gS JfS`@a Acr `@a A cr `@a\ A cr `N $H`RHapLHP?.d=hdN =_d2 "@$Y4Ad2`0Q @NuH@&g( b⸃bLHapLC 0$Ir `Q"Jr0XDQD@CtEe PA`fRشf`e"J*c j|0"cRLJgR $I.f) 5e*0!.g -g  g 9f 0b`RB`1`p `cc&$H0*ar$RHd2Hd2Hd`""Q`h@`r ??aB"P02R@H`2Q Nu?AFBHP?<GNAPAF `r0?HQa _/ ?a0 _4gSB@cLAc4JBg,J@g4@Bo2’S@,. SB6VgS F"GQpNufJ@fSBD@BR@HNufS@kVfpNur ?HQat _/ ?aj0 _4gSB@c:Ad,J@gB@BmS@,. RB6Vg(R F"GQpNufJ@fRB`fS@kVft0HNuanaJjtNua`HPa pJk NuCg.BJ@g  g &g, $g %gN ,NutNuRpt`2Rpt`Rptr ae OgX Xgn HgSRB ae Fb$0k  c_  c b退`tSHkaҾNuRB0 b b瀀`RB0 fрd`H~=H|=@p3`?<`Bg/0a4o< 2JjJAfr` 2TNu$ a Nua`a`a`]A=ADNua`a`a`H0apL`H0a^L`Ta|A((@؆*.&|؆kD`&a,k.."*B(.&؅kr-K/.?<INA\/?<HNA\JgB n""n&ۮ&ۮ"$I`&bۛp0R@@b&n CXbd`, .&/?<HNA\p=`HU2<.,HdY=ANu?<*NAT.p ax Ha INu.k2@a.0H@av.`2H@af/0@aZ/Yda@HA`A-HLL? H>pmrt`P"XXHVMFLH-E H-YLH-E H$-Y*LH.,_NuHV,@,_Nu~`~d"<$&(*R`~`~dHAHBHCHDHEH> =@ 2?.t pa0.=_HNur`rea6.=CF=CJ@Nur`rtp`lrw`rx=@ `=A /tp2<aPABh@pR@JXf _a~A`4QLNuapA tBe24`0QBXprtaDL 0.HNua$ZXNuHzxlJj xo`xdJjxc, EJDD`DDD Dz$X Pf-K&e "&J$IpSNup`8L4 fd$R$&k(*ڄNdNjRofNu.#,\H,`e(*NdN$&Rgp$(؁*Ne*(NdN(*Ro2(NdS(So&*NdB*RRNf$f$SD`S(l//"a R"mxNupЂmlNu2(gbc  P"H`Nu/0Ha2  _ PSAvjx E(Wf* ae zb Q @NuBnp`pBnp`p=| p|=Fn@=@b=n`ra Hj=Ah~`:a JfBH@ RfF.f Kg" Mg sg tg Pg Hf~`xSGjtRGFcn>`jAF gp gj g grffnnpenbfJ.fj6pRGFc$SG` J.fjpRGFcRF` Ff`> `?~ap a0p a*0Nu|``CpE`bf`FgRGJGgSGSFFgCpE`Yf`Nua@Jf gH@ fa(@ fza0 b @ Ee0Nua,gNu4.rf?HyaٜNM\Nu=|D`Lja zEfpadppa`AFEg0PaEfaFRE`ܾEfp a@a8?nnnp a2RF`<a nnoS@f nhfSnl=Ah=FnNup` papq4.rf?HyaNM\Nu=|DHaDLNu|A0"P2(@e2<EF`QHP=|DJ@g$abAF$HpR@ 0 f _a`QNuHPp?ap a| _2<|0`HP$ZXAB6<Q _NuHz`Hza$_Ha:C`2Hz`Hza$_HaC`2Ej`EHaCZA`EN`EHaC>A *FM3x?Fc>֞VSGk Vf>FNuTNuHpr,.܆އ܄ޅ܆އ(sh*sx<3h>3x?Fc>֞VSGk66Vf >FLNuTLNu,.܆އ܄ޅ܆އ*sh'xh'x:sh7xh7xNu,.*rh%xh%x܄ޅ܄ޅ*sh'xh'x:sh7xh7xNuC&pHQ/Hy@NA NuC pa:NuHQ/Hy?NA Nu&g4 FgagJAga2< R@AdSf0Nu0ap Ce`&g4 FgaJBjagPAe CbRa R@Sf0Nu FgRag JBja娰AeaJAg RP0 pNu`, Fg6a^gJAga @eahRP Nup NHѨB?<?/?<BNAO JkLLNu&8aJBjaJAg Df*ڃkd0Nu DfրBH??/?<BNAO LJk!@NuHBHh Hx??<?NAO LJo ѨLNuk:fp`^k: g ѨNuBHPHQ/??<?NAO _JoѨfNuBHPHQS/??<@NAXLfѨNuJkp%`rSRH0a=GDg:LFa`c.܆܆ ISk"X0HHaLaTL`Nup`~p`&nAt6<X0QNurSRH0ax=GDgkLFa I-Ka"`c.܆܆BGP4:`agRSj Q4:Nu`HPG<.Dx a.gJBja@AeajJAgZRP0 ögR@Ae`U  fSC̗ &n _a8ER@Hd2Hd"Hd `""""Q\J@Nu _HzHP`pNu 24&8:Bnm JBj bfAd` e fAc 24Nup#ffpQNup`p`#bNu?/NT` pNuNHM*Ap f9Qkd n2!|6pv ||9P"XLv:g 4zg*Ag61 cg Jg ;e, ]b& Te` Db; g fg  bJg fg fg,HC#0j ` Hx Dg;0L8aYBj@1BA gbШ dA gd BBdL@Nu wHHKMPPR g,g&yP`pBy8`XB@etAg1B# `\HCHSGҰvg*1B f  f&< # XB@etAf&_`ACgZ"HyNN#6.P>"NN @A C#P B?< NA\#8/a?< NA\A0N :NuA#:B :2 x hg3&6ACbg#P Nu?<"NNT @ :\g!@ HzR?<&NN\3Nu#9@NuHz ?<&NN\NupAC0ENrJg" XX\QNuA0Cr g"XQ!AC³f NuHx`(Hx`"Hx`Hx`Hx`Hx` Hx`Hx !4VxH A3:0 Ni LHM*O:|1R/:?< NAO:pdz`0/M*a,_NPNu?a0` ?a2@@a` a Nu4.`Af n2LR@RANu4.`g S@SAHNutbpbr??pa*pYa$0a0`.dfNudg"J9Qkfa4fp`Ȃd`/9fdg/9Zdg/9^NupA-H=@|p4aS@Nu[2][Programmstop?][Stop|Cont]`pEV*gPX`LJg&B.C`a8aD*9bfap-I,=|p4aHz*9bg ENp9V`Ǯ _a &nO:NM*IVKb$<Nu[1][Error +111][Return]E g g>Jf`Ar Hjr-D@Hd0H@H 0H@0CNuAF"H [1][fSEfNu9VHHNu9X`aNf"_O:N"_O:HQ`6 9;Pg"9;LgJ9Xfga"AO:Np\Bb`G06#f&#-KNuk"c" C gT6f`Pv6"cgRCC(D#8`D@v`v??NMXJNuJ@k??<NM"UAf J@fH@Nua<CF Ipa<0HNua `]@><CF Ipa Nu?|`?a0R@f|0aHJFkHPa _Nupo`HSHP&I>g\SG??<NMXJk Q _t&_Nu&_`pC`C``C` C`CJhfJfRRRRRRRHP? @CFH~8:E#P&<2 `b$bYEf`"RAf rЁЀ`&Ѐe "ЀeЁdp`JAkfgRer?DDЁaAa8$HX :CFE` YEjT"_$P"2trDDd0d d d` QjNu`DaDa DNu na^ K"ng42 $`gk2&Hg Af deђ$`ebѐXf&nNu AgebѐA``-Kx$ n&$n""Hg8" &Ak cѐ S`g"" k#&Acё2+SAI3 Q&f-I"&nNu-Kx$&ր n&$n""HgR" k&Ac b S` S`g4" k#&AcbrkX`ޑ2+SAI3 Q&f-I"&nNua `"H YJQfNu YH瀀aLP|HPGDC&֛֛֛֛֛(HDDCBg6Cv6C[RCF8[[[aL6C[RCF8:GDFWfTL L-KA `$I\bfBjQNu$YbfBjQNu؄*؄؅CH` ؅X`$_  IaٜHR"H @`̘؄*؄؅AHNu؅X`$_ IahHR"H` nud$HJf-HS Nup"`HPa _a,`QNua JH afL0Nua`4<H`@a6L Z0De2SCkÐCo@c2`QNu$Ia Z0AcA`QS@ QNuHd0Hd0Hd` QNu$Ia Z0Ac4ASB Q`QNuA`:A`4A`.A|`(A|`"A`A `A`A ` A `A Nu .*NuA`A|` A `AA1NuA`A|`A `A `A`A` A|`A@00HNuA `A`A|`A `A `a!@ NuAANua1 Nut`t`t`t`t`t `t`t`t`t`a ( Nua Nu@@Nura00HNur`r`r`r`r `r`r`r`r`zQ`z ` zn`z4=A|a:-IHQB0a" _JNuz"-A=B|a-I`Hk*BkBjHDBdRNuRBfpNupNuRBfpNuDBBkBj DBdRDNuf fJAjNup` )4) AnHx$o&R&(j(*j8/ ,oX /R& Jg"@0J@o7@S@ MBQ" psNBlRoLxNuX  o ""h"$h P  /Jo$"@0)J@o @mp1@"QBS@npsNBNu `$`2`Data ^Undo Remark ndern... ^R PD-Version 1.3 - 03/92erstellt mit GFA-Basic 3.0und TurboAss 1.53Volker HemsenGremskampstr.32427 MalenteBlz 21352240 KRSPK Eutin Kto 0103047130RAM-Installationbeim nchsten Neustart...________9999kB freilassen________9999kB belegenOkSegmenteDatei:12345678.123Lnge:123456$123456TEXT:123456$123456DATA:123456$123456BSS:123456$123456SYMB:123456$123456Programmteil einladenDatei:123456789012Lnge:123456$123456Bytes_______von _______XFFFFFFOkAbbruch_______bis _______XFFFFFFRoutine einladenDatei:123456789012Lnge:123456$123456Byteslade alleslade Teil_______von _______XFFFFFFOkAbbruch_______bis _______XFFFFFFBereich aus RAM/ROMStart des DisAss:$123456Ende des DisAss:$123456________Start: ________XFFFFFFF________Ende: ________XFFFFFFFabsolute AdressenladenAbbruchSpeicher-EinteilungText:Data:BSS:____99____99____99Bytes pro ZeileBytes pro ZeileBytes pro Zeile123456von123456Zeilen belegtfreier Speicher:11000000BytesZeilen belegen11000000Bytesmax. Speicher:11000000BytesOkAbbruchDisassembler - OptionenASCII:sparsamer TabulatorText:Konstanten in HEXhypersparsamer Tab.Data:als StringTabulator:___Befehle: ___999als Zahl___Operanden: ___999Zahlen in HEX___Remark: ___999___Zeichen pro Zeile: ___999DisAss:mit Symbolen (opt)mit KommentarenBSS:mit BereichsgreLabel in HEXCode:M68010OkAbbruchM68020 (Teil)________von ________XFFFFFFF________bis ________XFFFFFFF12. $1234567 $123456712. $1234567 $123456712. $1234567 $123456712. $1234567 $123456712. $1234567 $123456712. $1234567 $1234567ladenspeichernName:12345678.123Databereiche im Textsegment Datei aktivierenlschengotolschenaktivieren__ Lnge: __99 Eintrag Feld OkSystem - InfoTOS-Version:1234__________________________________________XXXXXXXXXXXXXXXXXXXXXGEMDOS-Ver.:1234________________-> HEX-> DEZCPU-VektorrechnenOkKBD-Vektorget byteTOS-Baseget wordLINEA initget longDisassembliere...TEXT-SegmentDATA im TEXTDATA-SegmentBSS-SegmentSymboltabelleEditor - OptionenSchrift:8/16er TexthheTurbo-FensterEditor:mit ZeilenadressenZeilenadr. in HEXFarben:bra,jmp,rts...bsr,jsrBoxen:mit Grow...boxenDialoge zur MausFiles:erweiterte FselboxOkb??Text suchenNR______________________________________XXXXXXXXXXXXXXXXXXXklein=gro(^=Zeilenadresse)Zeilenanf.ZeileAbbruchSymbol ersetzenaus______________________________________XXXXXXXXXXXXXXXXXXXmach______________________________________XXXXXXXXXXXXXXXXXXXOkAbbruchRemark ndern____________________________________________________________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXOkAbbruchp?|x<<>>?p?<p<~<<x <? ??>????>>?|?|??<>?<~~<<À<<?<8<<8<x<8~ ? 9π;1Àp<>1 ?|.1? sqf,a8 3`` `l8 ;`d `|`N? Ͱ`3@B< `g1sB9 x3`!o3b1 m3`al3ba o{ asc? `g;pp<<`n88>` A! A! A! A! A! A! A! A! A! A! A! A! A! "$Dd$D./(\afzckw   #+7    #&) ^ b r     Q Z g p y       # $ d l m      7 D E  F K L + 9 :   h|1d33 Z Z? $ 3 ; D S+ \3  >P  i ~   )@Wn   *!) "#$%&'(1)F [5+4 ,p-./01234(*? >6=-7V8m9:;<=5 ?D5@A%B<CSDj> !2$0 dr0  0         6 !D 0A[R k y  n   ' ! D                   !$ D" 3:  GN U ]    ( !$ D"             (  ! D ?Sem~    q     % !#D!    2  N  j  ,  < L  \cg  n |       % '!@D> q    #q)  , q   .   B# q) H,  S q) v,q) ,  &   q  q   # q)  ,  q !  " +#q $ 1 % 8& & ;3 'q  C  !!/  @.@@J @f @ @ @ @@@ A % A +   5 ;   H( A n A y A   A       * !  d-!, D*    F %  2 b  ~" A M(  Q O Q VA ]  A h  p%A s A ~ A A  A a   6               !AD? " q  q    ;" q*  C- q*  V- h"q* p-q* - q  q    q     q*  -  !$ D " @@   ) ;  F'L ! D Td % !4 D(2 &&2  % B"#$&()*-1B4r67:r;=Ende][ Schade ][3][Adressen-Fehler!| |-geschtzte Bereiche |-Start>=Ende][ Schade ]Adressentabelle ladenAdressentabelle speichernProgramm ladenProgrammteil ladenRoutine ladenResource-Datei ladenrs_treesrs_enders_strs_smrs_ssrs_imrs_idrs_itrs_bbrs_fsrs_fiData ladenASCII ladenASCII speichernParameter speichern;Desert Drain V 68000 Disassembler ;DATEI: Bytes;TEXT: ;DATA: ;BSS: $;SYMBOLE: Fast-Load-Bit gesetztOPT F+Programm ins Fast-Ram laden (kB)malloc() aus dem Fast-Rammoveamoveqsublineaaddmovep.lmovep.wori,srmoveschkleaclrnegnotpeaext.wmovem.wext.lmovem.lillegaltas.btstmuldivresetnoprtertdrtstrapvrtrs.lu.lSFCDFCUSPVBRMSPISPmovec.la.la.wcmpa.leorcmpa.wexgandrox$8000000.l).w)'XBRA'move.gemdos vq_drivervq_gdosaesvdibios xbios Hilfe ladenGEMDOS:BIOS:XBIOS:LINEA:SYSVAR:-rsh_vrsnEND[ERROR |Feldfehler |Erwarte Dimensions-|nderung!][Return] |Speicherfehler |Lsche den |Quellspeicher! ]p*** Nichtbehebbarer Fehler ***op&: $adr%: $z%: z$(z%):i%: z$(i%):*** Drcke Space ->QUIT ***qDivision durch NullberlaufQuadratwurzel nur fr|positive ZahlenLogarithmen nur fr|Zahlen grer NullUnbekannter Fehler Speicher voll String zu lang|max. 32767 ZeichenFeld zweimal dimensioniertFeld nicht dimensioniertDim zu groBei Open nur erlaubt:|"I"nput "O"utput "R"andom|"A"ppend "U"pdateFile schon geffnetFile # falschFile nicht geffnetFalsche Eingabe, keine ZahlFileende erreicht|EOFFeld mu eindimensional sein"Zu wenig Data#Data nicht numerisch%Diskette voll0Open "R" - Satzlnge falsch1Zu viele "R"-Files (max. 31)2Kein "R"-File4Fields grer als Satzlnge6GET/PUT Field-String|Lnge falsch7GET/PUT Satznummer falschMenu falsch?Reserve falsch@Pointer falschCASIN/ACOS falschEENDFUNC ohne RETURNZFehler bei Local[Fehler bei For\Resume (next) nicht mglich|Fatal]Stapel-FehlerdGFA-BASIC Compiler 3.03 D| Copyright 1986-1989|GFA Systemtechnik GmbHf2 Bomben - Bus Errorg3 Bomben - Adress errorh4 Bomben - Illegal Instructioni5 Bomben - Divide by Zeroj6 Bomben - CHK-Exeptionk7 Bomben - TRAPV-Exeptionl8 Bomben - Privilege Violationm9 Bomben - Trace ExeptionAllgemeiner FehlerDrive not Ready|ZeitberschreitungUnbekannter BefehlCRC Fehler|Disk-Prfsumme falschBad Request|Ungltiger BefehlSeek Error|Spur nicht gefundenUnknown Media|Boot-Sector falschSektor nicht gefundenKein PapierSchreibfehlerLesefehlerAllgemeiner Fehler 12Diskette schreibgeschtztDiskette wurde gewechseltUnbekanntes GertBad Sektor (Verify)Andere Diskette einlegenUngltige FunktionsnummerDatei nicht gefundenPfadname nicht gefundenZu viele Dateien offenZugriff nicht mglichUngltiges HandleSpeicher vollUngltige SpeicherblockadresseUngltige LaufwerksbezeichnungKeine weiteren DateienGEMDOS-Bereichsfehler|Seek falsch?Interner GEMDOS-FehlerKein BinrprogrammSpeicherblockfehler   *  F^<2&$ > 0$  v    $& *.|r0pJX P f nP* "R&jJb`@(,,F*T \  &l6 6&&&t,D(f , xJ  0&"$& 8 0Z ." 04X>,bH** NN@ *` \  B*6$$:(RtF @8"j ^(Z  .(j|>( J.$@f\6~H""6...8Ȑf<*  $Z84"$^^(L`("NN  >8N$ (, v4  @&4p8ZD2dhT4 R$22>F@f8L:"      |^$>&$&&r.jZ.N VrP "$2V(\, ,"("VV *rX,,2*8 j8D~ ,0$2$:2"&$ ,>6Z<( @&v6ZRrzb,>,," T:ZH ,j|Xt&0,8 " D(64.*"**8 f((@Px$b 8 $D& < x0H*l "VYYvU UY UYtU\]Y݁]YH4UTԙTԙ_UC^LUMUUGO,U&UA oU~U}@U)u]U) UAU9 y\U 9 U$lM)$lM󩈔Uj9jAU)3U..570 ;Lnge in Zeilen (immer direkt hier) ; HILFS-INFORMATIONEN fr Desert Drain 1.3 68000 Disassembler ; Erluterungen ; & -> 2 Byte auf dem Stack ; % -> 4 byte auf dem Stack ; a% bedeutet meistens Adresse ; p% -"- Adresse auf Puffer ; d& -"- Laufw-Nummer ; h& -"- Dateihandle ; z& -"- Zeichen ; m& -"- Mode ; n& -"- Kanal oder Nummer ; -> -"- zeigt auf GEMDOS:63/124 ;Anzahl der Eintrge/grter Eintrag Pterm0 gemdos(0) ;Programm beenden Cconin gemdos(1) ;Zeichen von kbd lesen Cconout gemdos(2) ;(,z&) Zeichen auf Bildschirm ausgeben Cauxin gemdos(3) ;Zeichen von ser lesen Cauxout gemdos(4) ;(,z&) Zeichen auf ser ausgeben Cprnout gemdos(5) ;(,z&) Zeichen auf prn ausgeben Crawio gemdos(6) ;(,z&) Zeichen von kbd ohne Echo lesen ;oder schreiben Crawcin gemdos(7) ;Zeichen ohne Echo von kbd lesen Cnecin gemdos(8) ;wie 7, nur ohne Steuerzeichen Cconws gemdos(9) ;(,adr%) String auf Bildschirm ausgeben Cconrs gemdos(10) ;(,a%) String von kbd lesen (a%:puf) Cconis gemdos(11) ;Prft ob ein Zeichen im kbd-Puffer ist Dsetdrv gemdos(14) ;(,d&) aktuelles Laufw festlegen Cconos gemdos(16) ;Bildschirm bereit zur Ausgabe? Cprnos gemdos(17) ;par bereit zur Ausgabe? Cauxis gemdos(18) ;liegt an ser ein Zeichen an? Cauxos gemdos(19) ;ser bereit zur Ausgabe? Maddalt gemdos(20) ;(,gr%,adr%) Fast-Ram einrichten Dgetdrv gemdos(25) ;aktuelles Laufwerk ermitteln Fsetdta gemdos(26) ;setzt DTA Super gemdos(32) ;(,a%) a%=-1: rueck: 0=User 1=Super ;a%=0: ->SSP a%=SSP ->UserMode Tgetdate gemdos(42) ;ermittelt Datum, Bit 0..4:Tag, 5..8:Monat ;9..15: Jahr minus 1980 Tsetdate gemdos(43) ;(,d%) Datum setzen Tgettime gemdos(44) ;ermittelt Zeit, Bit 0..4:Sekunden, 5..10:Minuten ;11..15:Stunden Tsettime gemdos(45) ;(,t%) Zeit setzen Tgetdta gemdos(47) ;DTA ermitteln Sversion gemdos(48) ;GEMDOS-Versionsnummer Ptermres gemdos(49) ;(,b%,r&) Programm verlassen und r& zurckgeben ;b% Bytes ab Basepage resistent halten Sconfig gemdos(51) ;??? KAOS 1.4 Dfree gemdos(54) ;(,a%,d&) ermittelt freien Diskspeicherplatz ;a%: 16Bytes puf offset 0:Anzahl freier Cluster ;4:Cluster ges 8:Bytes/Sektor 12:Sekt/Cluster Dcreate gemdos(57) ;(,a%) Ordner anlegen Ddelete gemdos(58) ;(,a%) Ordner lschen Dsetpath gemdos(59) ;(,a%) aktuelles Verzeichnis wechseln Fcreate gemdos(60) ;(,a%,attr&) Datei anlegen rueck=handle ;attr&: Bit 0:schreibgeschtzt,1:versteckt ;2:versteckte Systemdatei,3:Diskettenname Fopen gemdos(61) ;(,a%,m&) Datei ffnen m&=0 ->lesen ;m&=1 -> schreiben m&=2 -> beides rueck=handle Fclose gemdos(62) ;(,h&) Datei schlieen Fread gemdos(63) ;(,h&,l%,a%) l% Bytes ab a% lesen Fwrite gemdos(64) ;(,h&,l%,a%) l% Bytes nach a% schreiben Fdelete gemdos(65) ;(,a%) Datei lschen Fseek gemdos(66) ;(,n%,h&,m&) n% Bytes weiter m&=0:Anf 1:Pos 2:End Fattrib gemdos(67) ;(,a%,m&,attr&) m&=0:Attr lesen 1:schreiben Mxalloc gemdos(68) ;(,b%,m&) b%=-1:free_ram? sonst:b% Bytes reservieren ;m&=0:aus ST-RAM 1:Fast 2:egal lieber ST 3: egal Fast Fdup gemdos(69) ;(,h&) zweites Dateihandle erzeugen Fforce gemdos(70) ;(,h&,nh&) neues Ausgabehandle festlegen Dgetpath gemdos(71) ;(,a%,d&) Zugriffspfad ermitteln Malloc gemdos(72) ;(,b%) b%=-1:free_ram? sonst:b% Bytes Ram ;reservieren und rueck=Adresse Mfree gemdos(73) ;(,a%) reservierten Speicherbereich freigeben Mshrink gemdos(74) ;(,a%,b%) Bereich ab a% auf b% reduzieren Pexec gemdos(75) ;(,m&,p%,c%,e%) Programm m&=0:laden und starten ;m&=3:laden 4:starten(p%=basepage) 5:erzg basepage Pterm gemdos(76) ;(,r&) Programm beenden und r& zurck Fsfirst gemdos(78) ;(,a%,attr&) Datei mit attr& suchen Fsnext gemdos(79) ;weiter suchen Frename gemdos(86) ;(,0,old%,new%) Datei umbenennen Fdatime gemdos(87) ;(,a%,h&,m&) m&=0:Dateizeit lesen 1:setzen Flock gemdos(92) ;(,h&,m&,start%,len%) Datei mit Handle h& blockieren ;m&=0:lock,1:unlock - len% Bytes ab start% Nversion gemdos(96) ;Diese Funktionen fand ich in einer Zeitschrift! Frlock gemdos(98) ;Das Profibuch 11.Auflage kannte Sie leider noch Frunlock gemdos(99) ;nicht. Flock gemdos(100) ;(Warum doppelt?) Funlock gemdos(101) ; Fflush gemdos(102) ; Unlock gemdos(123) ; Lock gemdos(124) ; BIOS:12/11 Getmph bios(0) ;(,a%) Initialisierung des Memory-Parameter-Block Constat bios(1) ;(,d&) Eingabe ber d& mglich? ;0:par 1:ser 2:ikbd 3:midi Bconin bios(2) ;(,d&) Zeichen von d& lesen ;0:par 1:ser 2:ikbd 3:midi Bconout bios(3) ;(,d&,b&) Zeichen b& auf d& ausgeben ;0:par 1:ser 2:midi 3:ikbd Rwabs bios(4) ;(,m&,a%,n&,s&,d&) m&=0:Sekt lesen 1:Sekt schreiben Setexec bios(5) ;(,n&,a%) Vektor n& a%=-1:lesen sonst setzen Tickcal bios(6) ;Abfrage des System Timers Getbpb bios(7) ;(,d&) ermittelt Bios-Para-Block von Laufw d& Bconstat bios(8) ;(,d&) Ausgabe auf Einheit d& mglich? ;0:par 1:ser 2:midi 3:ikbd Mediach bios(9) ;(,d&) Diskette gewechselt? Drvmap bios(10) ;welche Laufw sind augeschlossen? (Bit0=A ...) Kbshift bios(11) ;(,c&) Status der Tastaturumschalttasten XBIOS:55/87 Initmous xbios(0) ;(,m&,p%,v%) m&=0:aus 1:rel 2:abs 3:kbd ;p%=Info-Strukur v%=Vektor auf Routine Ssbrk xbios(1) ;(,l%) l% Bytes reservieren (vor OS-INIT) Physbase xbios(2) ;Adr des physikalischen Bildschirmspeichers Logbase xbios(3) ;Adr des logischen Bildschrirmspeichers Getrez xbios(4) ;Auflsung ST: 0=L 1=M 2=H TT:4=M 6=H 7=L Setscreen xbios(5) ;(,log%,pyhs%,rez&) Bildschirmsp. setzen Setpalette xbios(6) ;(,a%) neue Farbpalette setzen Setcolor xbios(7) ;(,n&,c&) Farbreg c&=-1:lesen sonst c& setzen Floprd xbios(8) ;(,a%,f%,d&,sec&,t&,s&,n&) Sektoren lesen Flopwr xbios(9) ;(,a%,f%,d&,sec&,t&,s&,n&) Sektoren schreiben Flopfmt xbios(10) ;(,a%,f%,d&,sec&,t&,s&,i&,m%,v&) Spur formatieren Getdsb xbios(11) ;??? Midiws xbios(12) ;(,n&,a%) gibt n&+1 Bytes ab a% ber midi aus Mfpint xbios(13) ;(,n&,a%) Vektoren des MFP ndern Iorec xbios(14) ;(,d&) Adr der Ein/Ausgabe Einheit d& ermitteln ;0:ser 1:ikbd 2:midi Rsconf xbios(15) ;(..) Parameter fr die ser setzen Keytbl xbios(16) ;(..) Adr der Tastbelegtab. ndern Random xbios(17) ;ermittelt eine 24-Bit-Zufallszahl Protobt xbios(18) ;(,a%,s%,d&,f&) Bootsektor erzeugen Flopver xbios(19) ;(,a%,f%,d&,sec&,t&,s&,n&) Datei=RAM ? Scrdmp xbios(20) ;Hardcopy Cursconf xbios(21) ;(,c&,s&) Curser c&=0:aus 1:ein 2:blink ein ; 3:blink aus 4:blink auf s& 5:blinkrate rueck Bsettime xbios(22) ;(,t%) Datum und Zeit setzen Bgettime xbios(23) ;Datum und Zeit lesen Bioskey xbios(24) ;Originaltastaturbelegung einstellen Ikbdws xbios(25) ;(,n&,a%) n&+1 Bytes ab a% an ikbd senden Jdisint xbios(26) ;(,i&) sperrt den MFP-Interrupt i& Jenabint xbios(27) ;(,i&) gibt den MFP-Interrupt i& frei Giaccess xbios(28) ;(,d&,reg&) Register des Soundchips bedienen ;bit7 von reg& -> d& in reg& schreiben, sonst lesen Offgibit xbios(29) ;(,b&) lscht ein Bit des Port-A-Registers des ;Soundchips, 'or' Verknpfung von b& und original Ongibit xbios(30) ;(,b&) setzt ein Bit, 'and' Verknpfung Xbtimer xbios(31) ;(,t&,ctrl&,data&,a%) setzt MFP-Timer (t&=0..3) Dosound xbios(32) ;(,a%) Sound-Sequenz ab a% starten (a%=-1 Abfrage) Setprt xbios(33) ;(,c&) Druckerparam c&=-1 lesen, sonst setzen ;Bit0:Matr/Typrad 1:Farbe/Mono 2:1280/960 ;3:Draft/NLQ 4:par/ser 5:endl/einzel Kbdvbase xbios(34) ;Vektoren des Tastaturprozessors offset: ;0:midi_ein 4:tast_berl 8:midi_berl 12:kbd_status ;16:maus 20:timer 24:stick 28:midi_sys 32:kbd_sys Kbrate xbios(35) ;(,ansprech&,wiederhr&) Tastaturwiederholrate s/l Prtblk xbios(36) ;(,a%) Hardcopy mit Parameterblock Vsync xbios(37) ;wartet auf Vertical-Blank-Interrupt Supexec xbios(38) ;(,a%) Assemblerroutine im Supervisormodus aufrufen Puntaes xbios(39) ;AES abschalten Floprate xbios(41) ;(,new&,devno&) steprate der Floppy lesen/setzen DMAread xbios(42) ;(,sec%,anz&,p%,devno&) anz& Sektoren ab phys. ;Sektor sec% nach p% lesen, devno&=0..15 DMA-Port DMAwrite xbios(43) ;(,sec%,anz&,p%,devno&) anz& Sektoren ab p% ;nach phys. Sektor sec% schreiben, devno&=DMA-Port Bconmap xbios(44) ;(,i&) i&: Index der neuen Schnittstelle, rueck=alt ;-1: abfragen -2:Zeiger auf BCONMAP-Struktur NVMaccess xbios(46) ;(,op&,st&,count&,a%) RAM der TT-Uhr bedienen Metainit xbios(48) ;(,a%) erhlt in Puffer a% Infos ber Meta-DOS Blitmode xbios(64) ;(,b&) Blitter b&=-1 Blitter da? Bit0:ein/aus EsetShift xbios(80) ;(,m&) Shiftmode-Reg im TT-Vid-Shifter auf m& setzen EgetShift xbios(81) ;Shiftmode-Register im TT-Video-Shifter erfragen EsetBank xbios(82) ;(,n&) legt im TT aktuelle Farbbank fest, rck=alt EsetColor xbios(83) ;(,n&,c&) setzt im TT-Farbreg n& auf c&, rck=alt EsetPalette xbios(84) ;(,n1&,n&,a%) von a% n& TT-Farbreg ab n1& setzen EgetPalette xbios(85) ;(,n1&,n&,a%) n& TT-Farbreg ab n1& nach a% auslesen EsetGray xbios(86) ;(,m&) bei m&<>0 Graustufenmodus im TT an. EsetSmear xbios(87) ;(,m&) Smear-Modus: m&=0:aus,m&>0:an, rck=alt LINEA:16/15 init linea #0 ;Initialization: D0,A0->Parameterblock ;A1->Tabelle mit Zeigern auf die Systemzeichenstze ;A2->Tab. mit den Anfangsadr. der Line-A-Routinen putpix linea #1 ;Put Pixel getpix linea #2 ;Get Pixel line linea #3 ;Arbitrary Line hline linea #4 ;Horizontal Line fillrec linea #5 ;Filled Rectangle fillpoy linea #6 ;Filled Polygon bitblk linea #7 ;Bit Block Transfer textblk linea #8 ;Text Block Transfer showm linea #9 ;Show Mouse hidem linea #10 ;Hide Mouse transm linea #11 ;Transform Mouse undraw linea #12 ;Undraw Sprite draw linea #13 ;Draw Sprite copy linea #14 ;Copy Raster Form fill linea #15 ;Seedfill SYSVAR:310/00 ;zweiter Wert entfllt hier ; Speicherkonfiguration (1) memconf $FFFF8001 ;Memory Configuration Register ST(E) ; Videocontroller (29) dbaseh $FFFF8201 ;Video-Base-Register High (Byte) dbasel $FFFF8203 ;Video-Base-Register Mid (Byte) vcounthi $FFFF8205 ;Video-Adress-Counter High (Byte) vcountmid $FFFF8207 ;Video-Adress-Counter Mid (Byte) vcountlow $FFFF8209 ;Video-Adress-Counter Low (Byte) syncmode $FFFF820A ;Video-Sync-Mode-Register dbaselow $FFFF820C ;Video-Base-Register Low (Byte) - only STE/TT vbaselo $FFFF820D ;Video base address (lo; STE only) linewid $FFFF820F ;Width of a scan-line (Words, minus 1; STE only) color0 $FFFF8240 ;Color-Register 0 color1 $FFFF8242 ;Color-Register 1 color2 $FFFF8244 ;Color-Register 2 color3 $FFFF8246 ;Color-Register 3 color4 $FFFF8248 ;Color-Register 4 color5 $FFFF824A ;Color-Register 5 color6 $FFFF824C ;Color-Register 6 color7 $FFFF824E ;Color-Register 7 color8 $FFFF8250 ;Color-Register 8 color9 $FFFF8252 ;Color-Register 9 color10 $FFFF8254 ;Color-Register 10 color11 $FFFF8256 ;Color-Register 11 color12 $FFFF8258 ;Color-Register 12 color13 $FFFF825A ;Color-Register 13 color14 $FFFF825C ;Color-Register 14 color15 $FFFF825E ;Color-Register 15 shiftmd $FFFF8260 ;ST-Shift-Mode-Reg. (0=L,1=M,2=H) shift_tt $FFFF8262 ;TT-Shift-Mode-Reg. (4=M,6=H,7=L) hscroll $FFFF8265 ;Horizontal scroll count (0..15; STE only) stacydsp $FFFF827E ;STACY Display-Steuerung ; TT-Farbpalettenregister (2) TT_col0 $FFFF8400 ;TT-Pal. 0 TT_col255 $FFFF85FE ;TT-Pal. 255 ; DMA-Controller (5) diskctl $FFFF8604 ;disk controller data access fifo $FFFF8606 ;DMA mode control dmahigh $FFFF8609 ;DMA-Base+Count.-Reg.-High (Byte) dmamid $FFFF860B ;DMA-Base+Count.-Reg.-Mid (Byte) dmalow $FFFF860D ;DMA-Base+Count.-Reg.-Low (Byte) ; SCSI-DMA (nur TT!) (11) tt_dmabas $FFFF8701 ;DMA-Adress-Pointer (Highest Byte) tt_dmabas+2 $FFFF8703 ;DMA-Adress-Pointer (High Byte) tt_dmabas+4 $FFFF8705 ;DMA-Adress-Pointer (Low Byte) tt_dmabas+6 $FFFF8707 ;DMA-Adress-Pointer (Lowest Byte) tt_dmacnt $FFFF8709 ;DMA-Bytezhler (Highest Byte) tt_dmacnt+2 $FFFF870B ;DMA-Bytezhler (High Byte) tt_dmacnt+4 $FFFF870D ;DMA-Bytezhler (Low Byte) tt_dmacnt+6 $FFFF870F ;DMA-Bytezhler (Lowest Byte) tt_marsd $FFFF8710 ;Restdatenregister (High-Word) tt_marsd+2 $FFFF8712 ;Restdatenregister (Low-Word) tt_dmactl $FFFF8714 ;Kontrollregister (Word) ; SCSI-Controller 5380 (nur TT!) (8) s_data $FFFF8781 ;Inhalt des SCSI-Datenbusses s_icr $FFFF8783 ;Initiator-Befehlsregister s_mode $FFFF8785 ;Betriebsartenregister s_tcr $FFFF8787 ;Target-Befehlsregister s_idstat $FFFF8789 ;Busstatusregister s_dmastat $FFFF878B ;Statusregister s_targrcv $FFFF878D ;Eingabedaten vom SCSI-Bus s_inircv $FFFF878F ;Reset Interrupts+Parityfehler/Start Init-DMA-Eingabe ; Soundchip AY-3-8910 (3) giselect $FFFF8800 ;(W) sound chip register select giread $FFFF8800 ;(R) sound chip read-data giwrite $FFFF8802 ;(W) sound chip write-data ; DMA-Sound-Subsystem (nur STE,TT) (13) sndmactl $FFFF8900 ;Sound-DMA-Control sndbashi $FFFF8902 ;Frame-Start-Adr. High-Byte sndbasmi $FFFF8904 ;Frame-Start-Adr. Middle-Byte sndbaslo $FFFF8906 ;Frame-Start-Adr. Low-Byte sndadrhi $FFFF8908 ;Frame-Adr.-Counter High-Byte sndadrmi $FFFF890A ;Frame-Adr.-Counter Middle-Byte sndadrlo $FFFF890C ;Frame-Adr.-Counter Low-Byte sndendhi $FFFF890E ;Frame-End-Adress High-Byte sndendmi $FFFF8910 ;Frame-End-Adress Middle-Byte sndendlo $FFFF8912 ;Frame-End-Adress Low-Byte sndmode $FFFF8920 ;Sound-Mode-Control MWDATA $FFFF8922 ;MICROWIRE Adr.+Data-Bits MWMASK $FFFF8924 ;MICROWIRE Mask-Register ; Uhrchip des TT (2) rtc_rnr $FFFF8961 ;Registerauswahl im Uhrenchip rtc_data $FFFF8963 ;Daten des selekt. Uhrenregisters ; Blitter (nicht im TT!) (17) Haftone $FFFF8A00 ;Halftone-RAM, Word 0 HaftoneF $FFFF8A1E ;Halftone-RAM, Word 15 Src_Xinc $FFFF8A20 ;Source-X-Inc.-Reg. Src_Yinc $FFFF8A22 ;Source-Y-Inc.-Reg. Src_addr $FFFF8A24 ;Source-Address-Reg. Endmask1 $FFFF8A28 ;Endmask 1 Endmask2 $FFFF8A2A ;Endmask 2 Endmask3 $FFFF8A2C ;Endmask 3 Dst_Xinc $FFFF8A2E ;Dest.-X-Inc.-Reg. Dst_Yinc $FFFF8A30 ;Dest.-Y-Inc.-Reg. Dst_Adr $FFFF8A32 ;Dest.-Adress-Reg. X_Count $FFFF8A36 ;Worte/Zeile im Bit-Block Y_Count $FFFF8A38 ;Zeilen/Bit-Block HOP $FFFF8A3A ;Halftone-OP-Register OP $FFFF8A3B ;Log. OP-Register Line_Num $FFFF8A3C ;Line-Number-Register Skew $FFFF8A3D ;SKEW-Register ; SCC-DMA (nur TT!) (11) scdmabas $FFFF8C01 ;DMA-Address-Pointer (Highest Byte) scdmabas+2 $FFFF8C03 ;DMA-Address-Pointer (High Byte) scdmabas+4 $FFFF8C05 ;DMA-Address-Pointer (Low Byte) scdmabas+6 $FFFF8C07 ;DMA-Address-Pointer (Lowest Byte) scdmacnt $FFFF8C09 ;DMA-Bytezhler (Highest-Byte) scdmacnt+2 $FFFF8C0B ;DMA-Bytezhler (High-Byte) scdmacnt+4 $FFFF8C0D ;DMA-Bytezhler (Low-Byte) scdmacnt+6 $FFFF8C0F ;DMA-Bytezhler (Lowest-Byte) scdmarsd $FFFF8C10 ;Restdatenregister (High-Word) scdmarsd+2 $FFFF8C12 ;Restdatenregister (Low-Word) scdmactl $FFFF8C14 ;Kontrollregister ; SCC Z8530 - Serial Communications Controller (4) sccctl_a $FFFF8C81 ;Kanal A - Control-Register sccdat_a $FFFF8C83 ;Kanal A - Data-Register sccctl_b $FFFF8C85 ;Kanal B - Control-Register sccctl_b $FFFF8C87 ;Kanal B - Data-Register ; SCU - System Control Unit (TT/MEGA STE) (9) sys_mask $FFFF8E01 ;System Int. Mask-Register sys_stat $FFFF8E03 ;System Int. Status-Register sys_int $FFFF8E05 ;System Software Int. erzeugen vme_int $FFFF8E07 ;VME-Bus_IRQ Level 3 erzeugen scu_gp1 $FFFF8E09 ;SCU General Purpose Reg.1 scu_gp2 $FFFF8E0B ;SCU General Purpose Reg.2 vme_mask $FFFF8E0D ;VME-Bus Int. Mask-Register vme_stat $FFFF8E0F ;VME-Bus Int. Statur-Register ste_ctl $FFFF8E21 ;MEGA STE Cache+Taktctrl. ;Joystickports beim STE (6) PADDL0 $FFFF9210 ;Position des Paddle 0 PADDL1 $FFFF9212 ;Position des Paddle 1 PADDL2 $FFFF9214 ;Position des Paddle 2 PADDL3 $FFFF9216 ;Position des Paddle 3 XPEN $FFFF9220 ;X-Position des Lightpens YPEN $FFFF9222 ;Y-Position des Lightpens ; 68901 Multifunktionsbaustein des ST/STE/TT (MFP1) (25) mfp $FFFFFA00 ;MFP1: mfp base gpip $FFFFFA01 ;MFP1: Parallel-Port aer $FFFFFA03 ;MFP1: Flankenregister ddr $FFFFFA05 ;MFP1: Datenrichtung iera $FFFFFA07 ;MFP1: Interrupt Enable A ierb $FFFFFA09 ;MFP1: Interrupt Enable A ipra $FFFFFA0B ;MFP1: Interrupt Pending A iprb $FFFFFA0D ;MFP1: Interrupt Pending B isra $FFFFFA0F ;MFP1: Interrupt In-Service A isrb $FFFFFA11 ;MFP1: Interrupt In-Service B imra $FFFFFA13 ;MFP1: Interrupt Mask A imrb $FFFFFA15 ;MFP1: Interrupt mask B vr $FFFFFA17 ;MFP1: Vektor-Register tacr $FFFFFA19 ;MFP1: Timer A Control tbcr $FFFFFA1B ;MFP1: Timer B Control tcdcr $FFFFFA1D ;MFP1: Timer C & D Control tadr $FFFFFA1F ;MFP1: Timer A Data tbdr $FFFFFA21 ;MFP1: Timer B Data tcdr $FFFFFA23 ;MFP1: Timer C Data tddr $FFFFFA25 ;MFP1: Timer D Data scr $FFFFFA27 ;MFP1: Sync Character ucr $FFFFFA29 ;MFP1: USART Control rsr $FFFFFA2B ;MFP1: Receiver Status tsr $FFFFFA2D ;MFP1: Transmit Status udr $FFFFFA2F ;MFP1: USART Data ;FPU im MEGA STE (9) FPstat $FFFFFA40 ;Response-Register FPctl $FFFFFA42 ;Contol-Register FPsave $FFFFFA44 ;Save-Register FPrestor $FFFFFA46 ;Restore-Register FPcmd $FFFFFA4A ;Command-Register FPccr $FFFFFA4E ;Condition-Code-Register FPop $FFFFFA50 ;Operanden-Register FPselct $FFFFFA54 ;Register Select FPiadr $FFFFFA58 ;Instruction Address ; 68901 Multifunktionsbaustein des TT (MFP2) (25) mfp_tt $FFFFFA80 ;MFP2: mfp base gpip_tt $FFFFFA81 ;MFP2: Parallel-Port aer_tt $FFFFFA83 ;MFP2: Flankenregister ddr_tt $FFFFFA85 ;MFP2: Datenrichtung iera_tt $FFFFFA87 ;MFP2: Interrupt Enable A ierb_tt $FFFFFA89 ;MFP2: Interrupt Enable A ipra_tt $FFFFFA8B ;MFP2: Interrupt Pending A iprb_tt $FFFFFA8D ;MFP2: Interrupt Pending B isra_tt $FFFFFA8F ;MFP2: Interrupt In-Service A isrb_tt $FFFFFA91 ;MFP2: Interrupt In-Service B imra_tt $FFFFFA93 ;MFP2: Interrupt Mask A imrb_tt $FFFFFA95 ;MFP2: Interrupt mask B vr_tt $FFFFFA97 ;MFP2: Vektor-Register tacr_tt $FFFFFA99 ;MFP2: Timer A Control tbcr_tt $FFFFFA9B ;MFP2: Timer B Control tcdcr_tt $FFFFFA9D ;MFP2: Timer C & D Control tadr_tt $FFFFFA9F ;MFP2: Timer A Data tbdr_tt $FFFFFAA1 ;MFP2: Timer B Data tcdr_tt $FFFFFAA3 ;MFP2: Timer C Data tddr_tt $FFFFFAA5 ;MFP2: Timer D Data scr_tt $FFFFFAA7 ;MFP2: Sync Character ucr_tt $FFFFFAA9 ;MFP2: USART Control rsr_tt $FFFFFAAB ;MFP2: Receiver Status tsr_tt $FFFFFAAD ;MFP2: Transmit Status udr_tt $FFFFFAAF ;MFP2: USART Data ; Tastatur-ACIA (3) keyctl $FFFFFC00 ;ACIA-Statusregister (R) keyctl $FFFFFC01 ;ACIA-Steuerregister (W) keybd $FFFFFC02 ;ACIA-Data-Register ; Midi-ACIA (2) midictl $FFFFFC04 ;ACIA-Statusregister (R) -Steuerregister (W) midi $FFFFFC06 ;MIDI-ACIA-Data ; Systemvektoren (Namen sind unkorrekt) (43) reset_ssp $0 ;SSP nach Reset reset_pc $4 ;PC nach Reset bus_error $8 ;Exception: 2 Bomben adr_error $C ;Exception: 3 Bomben, ungerade Wortadresse ill_instr $10 ;Exception: 4 Bomben, ungltiger Maschinenbefehl divbyzero $14 ;Division durch Null chk_excep $18 ;Exception durch trapv_exc $1C ;Exception durch trapv priv_err $20 ;Privilegverletzung trace_err $24 ;Trace-Exception linea_vec $28 ;Linea-Verktor linef_vec $2C ;Linef-Vektor spur_inter $60 ;Suprious Interrupt autov_int1 $64 ;Autovektor-Interrupt, Level 1, unbenutzt autov_int2 $68 ;Autovektor-Interrupt, Level 2 ;zeigt auf Handler fr Horizontal-Blanks autov_int3 $6C ;Autovektor-Interrupt, Level 3, unbenutzt autov_int4 $70 ;Autovektor-Interrupt, Level 4 ;zeigt auf Handler fr Vertikal-Blanks autov_int5 $74 ;Autovektor-Interrupt, Level 5, unbenutzt autov_int6 $78 ;Autovektor-Interrupt, Level 6, unbenutzt autov_int7 $7C ;Autovektor-Interrupt, Level 7, unbenutzt trp1vec $84 ;-> gemdos trp2vec $88 ;-> aes/vdi trp13vec $B4 ;-> bios trp14vec $B8 ;-> xbios busy_inter $10 ;ST-MFP-Interrupt 0, Ausl. durch parallele Schnittstelle dcd_inter $104 ;ST-MFP-I-1,'Carrier detect' der seriellen Schnittstelle cts_inter $108 ;ST-MFP-I-2,'Clear to sent' der seriellen Schnittstelle gpu_done $10C ;ST-MFP-I-3,kann vom Blitter benutzt werden (ready) baud_gen $110 ;ST-MFP-I-4,Baudratengenerator,nicht benutzt timer_200 $114 ;ST-MFP-I-5,->Systemtimer-Interrupt ikbd_inter $118 ;ST-MFP-I-6,->Handler fr IKDB- und MIDI-Interrupts fdc_inter $11C ;ST-MFP-I-7,FDC/ASCI,normalerweise unbelegt diensi_int $120 ;ST-MFP-I-8,Display Enable Signal,normalerw. gesperrt rs232serr $124 ;ST-MFP-I-9,RS232 Sendefehler rs232sempty $128 ;ST-MFP-I-10,RS232 Sendepuffer leer (1 Byte bertragen) rs232eerr $12C ;ST-MFP-I-11,RS232 Empfangsfehler rs232efull $130 ;ST-MFP-I-12,RS232 Empfangspuffer ist voll (1 Byte) ring_indic $138 ;ST-MFP-I-14,Ring Indicator,Signal bei ser angekommen mono_mon $13C ;ST-MFP-I-15,Monochrom Monitor Detect,unbenutzt tt_mfp0 $140 ;TT-MFP-I-0 tt_mfp15 $17C ;TT-MFP-I-15 tt_scc0 $180 ;TT-SCC-I-0 tt_mfp $1BC ;TT-SCC-I-15 ; 300er Systemvariablen im TT (6) proc_lives $380 ;Magic Number $12345678 fr Gltigkeit der folg. Vektoren proc_dregs $384 ;gerettete Register D0-D7 proc_aregs $3A4 ;gerettete Register A0-A7 proc_enum $3C4 ;im ersten Byte: Nummer der aufgetretenen Exception proc_usp $3C8 ;geretteter USP (User-Stack-Pointer) proc_stk $3CC ;obersten 16 Worte des Stacks bei Exception ; BIOS Variables (76) etv_timer $400 ;vector for timer interrupt chain etv_critic $404 ;vector for critical error chain etv_term $408 ;vector for process terminate etv_xtra $40C ;5 reserved vectors memvalid $420 ;indicates system state on RESET (MagNmb $752019F3) memcntrl $424 ;mem controller config nibble ($FFFF8001) resvalid $426 ;validates 'resvector' (=$31415926 -> resvector) resvector $42A ;[RESET] bailout vector phystop $42E ;physical top of RAM _membot $432 ;bottom of available memory; _memtop $436 ;top of available memory; memval2 $43A ;validates 'memcntrl' and 'memconf' (MagNmb $237698AA) flock $43E ;.w floppy disk/FIFO lock variable (<>0:no DMA) seekrate $440 ;.w default floppy seek rate (0:6,1:12,2:2,3:3 ms) _timr_ms $442 ;.w system timer calibration (in ms) _fverify $444 ;.w nonzero verify on floppy write _bootdev $446 ;.w default boot device palmode $448 ;.w 0:NTSC (60Hz), <>0:PAL(50Hz) defshiftmd $44A ;.b default video rez sshiftmd $44C ;.b shiftermode (ST:0=L,1=M,2=H; TT:4=M,6:H,7:L) _v_bas_ad $44E ;pointer to base of screen memory vblsem $452 ;.w semaphore to enforce mutex in vbl nvbls $454 ;.w number of deferred vectors in _vblqueue _vblqueue $456 ;pointer to vector of deferred vfuncs colorptr $45A ;pointer to palette setup (or NULL) screenpt $45E ;pointer to screen base setup (|NULL) _vbclock $462 ;count of vblank interrupts _frclock $466 ;count of unblocked vblanks (not blocked by vblsem) hdv_init $46A ;hard disk initialization swv_vec $46E ;video change-resolution bailout hdv_bpb $472 ;disk "get BPB" hdv_rw $476 ;disk read/write hdv_boot $47A ;disk "get boot sector" hdv_mediach $47E ;disk media change detect _cmdload $482 ;.w nonzero load COMMAND.PRG from boot conterm $484 ;.b console/vt52 bitSwitches, 0:keyclick, 1:keyrepeat ;2:CTRL-G->Ping!, 3:kbshift() in bits 24..31 by bconin() trp14ret $486 ;saved return addr for _trap14 (nonused) criticret $48A ;saved return addr for _critic (nonused) themd $48E ;memory descriptor (MD) themdmd $49E ;(more MD) savptr $4A2 ;pointer to register save area _nflops $4A6 ;.w number of disks attached (0,1,2) constate $4A8 ;state of conout() parser save_row $4AC ;.w saved row# for cursor X-Y addressing sav_context $4AE ;pointer to saved processor context _bufl $4B2 ;2 buffer-list headers _hz_200 $4BA ;200hz raw system timer tick the_env $4BE ;-> standard-environment-strings _drvbits $4C2 ;bit vector of "live" block devices _drvbits.w $4C4 ;bit vector of "live" block devices (word) _dskbufp $4C6 ;pointer to common disk buffer _autopath $4CA ;pointer to autoexec path (or NULL) _vbl_list $4CE ;initial _vblqueue _prt_cnt $4EE ;.w screen-dump-state: -1:norm, 0:begin, >0:end ->-1 _prtabt $4F0 ;.w printer abort flag _sysbase $4F2 ;-> base of OS _shell_p $4F6 ;-> global shell info end_os $4FA ;-> end of OS memory usage exec_os $4FE ;-> address of shell to exec on startup scr_dump $502 ;-> screen dump code prv_lsto $506 ;-> _lstostat() prv_lst $50A ;-> _lstout() prv_auxo $50E ;-> _auxostat() prv_aux $512 ;-> _auxout() pun_ptr $516 ;if AHDI -> pun_info memval3 $51A ;if MagNmb $5555AAAA ->RESET xconstat $51E ;8 Zeiger auf Eingabestatus-Routinen xconin $53E ;8 Zeiger auf Eingabe-Routinen xcostat $55E ;8 Zeiger auf Ausgabestatus-Routinen xconout $57E ;8 Zeiger auf Ausgabe-Routinen _longframe $59E ;.w wenn <>0 -> kein 68000er _p_cookies $5A0 ;-> Cookie Jar ramtop $5A4 ;Zeiger auf das Ende des Fast-Ram ramvalid $5A8 ;MagNmb $1357BD13 = ramtop ist Ok bell_hook $5AC ;->Routine fr 'Ping'-Gerusch (ab STE) kcl_hook $5B0 ;->Routine fr Tastenklick-Gerusch (ab STE) xx  0 xx0x x |x0| x`x Ą 0 xx 0 x`x @ x0x 0 xx  x x  | x`#88$oI#)J@Hz?<&NN\O"j)I8A W*j,Jf J-gRMJg"Rld Af^&MRM Rf Gf Vf =fp#@JgNB&I P@Jf"Ͱf ,Ma*N#MJfB` _fj Pfd Bf^ PfX =fRYIJfLrpg: 0e< 9dҀ` Ae( zd" Fc ae Ҁ`²$W`"JfgBN&IAp }bB0,Ha0N!l"@$ p ljep@9@`)I\"`BQ)IX`BQ , o2V@ l$)I lB"Y"XI#I2B"2 )IP0" VA"Ad?<`JfF" ljeT)A ,$0BAHAR@&,$HCBCHCFC׬$.I/ JSB?/ / ?<?<JNAO NhNl>`XO ,?,?,?,p?BgHlN BWHlN rO&9@A 0,[@gU@g` N`NJp lfBl 0<N$/,pI?NA\O/,pI?NA\O?, N p$NTOLNu\\*.RSCResource-Datei speichern*DOO/PI3/BLK/PAC - Bild ladenNV/AC""""0,=@2,$SB=B=l"=l$-l@@=@=AH=@p=@=l -@9| 0<N>B0<?N > N Hnp??, N BW?, N Hn?, N \HnHnHnp??, N tHnBg?, N ^> N O.B0<?NBl 0<N $.N^NuNV/.HnNHzHnN". HnN.HnN*O l@ |lHnHnHnNO `/.HnHnHnN DOpnfDA//NLPOA"HJfS rb Hz /NPOHnHn/.NO 0.N^NuNVTH A&Cp"QAJCTp"Q2a9| 0<N 9| 0<N Bp?Nx\OHlHnHnHnN&OJngpnfHnHnp???.?.NXA.Hn//NOpngB ,S".$n lBR`p-@-lrnA=A4.=BH=A=@=|=@=@0.=@=B0.n0.nHnHnHnp??, N ,HzHzHlaOS@fBgHlp?NAXOBBgNN9| 0<N dBl 0<N XLLN^NuNVH HztHznHlpaO S@fJBgHlppN?NAPOJf6BgHlpp=?NAPO=@o 9|9|9| Hnp///HlpN4O". DOOW@ PICWAAg/,Hx}?.p??NAO ` PI3f.Bg?.Hx"pB?NAO /,Hx}?.p??NAO `x". BLKW@ SETWBB OBJWAAg:HlHx?.p??NAO pl f*/,Hx}?.p??NAO ` PACfHnHx?.p??NAO .rpf.rMf.r8f.r6f/,Hx}?.p??NAO p9@9@=@ l0."H.f"r.Rnp??N~XORn`N"H.f,Rn0."HrRnp??NDXORn`RnpBg?N*XO lOn loj?.p>?NAXOLN^NuNV/Bn0.n n80,"P4,B l 0, @lRl`RlBlRn`$N^NuPdN$H*o>/|Gn?/ ND\ORF`L NuPublic Domain (3/1992)Image Maker V1.1erstellt mit Lattice C 5.5Bild ladenldt DOO,PI3,PAC,BLKImage speichernals ResourcedateiQuitPdN$p ?Hla"\ONuNVH*n&n )M d0<N6 n0 n0 n0 0, L(N^NuNVH>.<. :. 8.9G 9F 9E 9D 9n 9n 9n 9n 9n 0<NLN^NupaH*o >/9G )M d0<NL NuNVH*n&n )M d)K h0<@N n0 0, L(N^NuNVH*n&n 0< N: 6 n0 n0 0, L(N^NuNVH*n&n 0<NJ: 6 n0 n0 0, L(N^NuH>/ *o9G )M d0<N L NuH>/. <.:.8.)M d9G 9F 9E 9D 9n 9n 0<NvL N^NuH*o >/)M d9G 0<NRL NuH>/ / HH@B@reHAN.NuNVH*n&n )Mt n)H|CZ)I0HH@B@@ rdHAN6(A4)HtA 4)H|A D)HL(N^NupaH>// HH@B@r{HAN.NuH>/ // *o)Mx HH@B@"<rN|A 4)HxL NuNVH>.<. *n &n)K*)n.9F4)Mx HH@B@@"<mN.A 4)HxL(N^NuNV/>.)n d9G 0<N.N^NuNVH9*n&n l0 |d.JlTfUOBgHlNlp>HlN`BWHl$NVBWHl???x?BgHlNL./ / N(.0,W@2,WA4,\B6, \C>???????x?NrO:` )M d)K h)n l0<DN. n0 L(N^NupaA p)HXA |)H\A )H`A )HdA d)HhA `)HlpNXUOHzp?N"p$NDp>NPONu[3][Stack Space Exhausted][Abort]paA 0AX"P"0<NBA 0Nu     !"#$%&'()*+,-./0123 456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}Ap"P"3@H@3@ "psNBNuNVH# >.p9@ r9A 9@9AUO?N:XOJ@gp9@9@ UO?NXOJ@g0<l9| ` 9|Bp9@ p9@9@ UO?NXOJ@g9|9| ` 9|B9| |p@n"UO?NXOJ@f HA RF`p?p?pF?NA\Op9@ r9A 9A t9B 9A9|9@ 9|B Jlg"   9A 9B UO/,8/. ?N>NpLN^Nu?/HH?<?/B?<BNA/@2/ ?ABo>BBg?Hx?<BNAO rJWD?A NAO 0LHNupa)_DHH2.?A?<BNATON fpa)_DHHJfpN H //o/@?<@NATON .// "QS@t `| SAgU@c дgSAW  _ $Nu/>/BfJGk&ll HA Jpg HA `9| bp.NupaH!$>/UO?NXO*@ fp`.-gp:` ?-p>?NAXONhp:Jfgp`pL$NuNVH/4>.,.UO?NFXO*@ f 9|bp`>--gJlgHlHxp?p@?NAO -gp?B?NjPO*Jjp`gUO//. ?NpO *` n -H-Hp@Ѐe^(, l( O ",P(p@Ѐm&A`:HxpH?NA\O(p@Ѐm$ Ѐc( m(</pH?NA\O&@ g-K d"`" nCN-@윀f ." Jg:UO// ?NO `( ." UO// ?NO Rg -K-n` lPg/ pI?NA\O`JgUO/p ?/.NO -@f UO//.?N8O n"H-I`RUO//.?NO ".찁f0UOHxHl?NO UfR ."윁-@`p . *Jfgp` L,N^NupaH'4>/ &l g kN&S`K g4pmU@f& - ,JFg HUO//- ?-N\O *U`Jg lXH/pA?NA\ON l)P`zll$ HA JpgUOA ?0NXORE`UO?NXOL,NuJjDJjDaDNuaDDNuJjDaDNu/HA4fH@HAHB4g0H@40HB2$Nu/v AdQC AdYC A dUCJAkSC4HBBBHC604HAdSCЁr2HCH@A&$NuH0$&HBHgHCHgCHBBBЂL Nu/ *o)M,p*_Nu/>/J,gUO? l,NXO` UO?NXO.Nu o"BLQ Qp$ NuWWf S$ NuNVH*n.. n JfS ,Jge,S  n "M`SdB5h RL N^NuNVH*nUOBg/. NPO&@ g4 n g,SKH@/g @ g@"fAHx// NfS`Hx /. / NTSL(N^NuNVH*nUOBg/. NnPO&@ g@ n g8SKH@/g@ g@"g`RK R//. / N `BpL(N^NuL JfSHfNu o/ gJfpNu SNuNVH*n n "Mf MJfS.Jg$5xH@/g@ g@"g GR 4 M"nfL N^NupaLL QQ`WWg` QQQ /NuNVxH*n &nHx/.HnzNO B.Az"HJfS. gp gpJgp nJg nB, SFJ@oBAzH@.gS@g,@ g&@"g `JgA{"nfAzB`, SFJ@o:AzH@/g @ g@"fJgA{"nfRFAzBJFjJgAz"nf`*SE SFJ@o^AzH@:f g2 FrAoAz"Hp\g "Hp/fBA{"KfA{B g?NAXOJgp> nf?NAXOL$N^NuNVH!4*H&IpA&-@-@r gr fRM`Jgtp@"g$[@g @gU@g `RM-M~`RM-M~` RM&`&~Jg,Jg V@`r g r gp`pJ@gRM`JgB`xUOp?NXOJ@gp?p?pF?NA\OB n"nap& L,N^Nu$$$   \ v v } lRN<y[?@p=~` t`p.<:{<+!anx""Md盀".Ω"t2,2,52$s2$Rw:%kzo</&}߁/*_;/.]/߽?Ż=u9>s/s8;%/=jo;o_.69AZ~99:w3{>?+]Z?m >ynm}O/]{l;~vl+;;}?۹x9;<;?x?q5ya!وC$D: 1 x'p $(       '  (p(r( (t (P. ..8.X.-++-,-( )L)d)|) (\B^F28@ **)؀ ٷB<uϻj`5Xؿ0X@۸uX`8*؀ ߷@1>oOj 08>8<l8 5XطN؜uX0~f~~~8~~>~~8~|p**؀ ٻF.{O{jff`ffff`5X;ؿ< 0@~uXffpff>`f`p**؀nj ~f<f~~`f`8 5X*ؿ}tuX `<`ff`f`f`*؀ټImage Maker 1.0 - 05/1992 - Public Domain - erstellt von Volker Hemsen mit Lattice C 5.5 fr Atari ST in monochromer Auflsung Dieses Programm ldt Bilder verschiedener Formate, die dann als Image in einer Resource-Datei abgespeichert werden. So ist es mglich auch grere Bilder in eine Dialogbox einzubauen, soweit dies das verwendete RCS erlaubt. Achtung: Mit dem RCS/RCS2 von Digital Research kann man nur Bilder bis 2kB Lnge verarbeiten. Siehe meinen RCS-Patch als Beilage zu Desert Drain oder ST-Computer 11/91 'Groe Bilder im RCS' und 3/92 unter Quick-Tips. Ich behaupte nicht das die Idee hierzu von mir selbst stammt! Ich hatte leider kein Programm, das dies beherschte, und brauchte sowas. Und so geht Ihr mit dem Programm um: 1. Nach dem Programmstart erscheint eine Dialogbox mit drei Buttons. 2. Drckt 'Bild laden' und es erscheint eine Fileselectbox mit der ein Bild der folgenden Formate geladen werden kann. Die Formaterkennung erfolgt durch die entsprechende Extension. Degas (alt) : PI3 Doodle : DOO,PIC GFA-Blockbild : BLK,SET,OBJ STAD : PAC 3. Nach dem Laden erscheint die Dialogbox wieder. 4. Drcke 'Image speichern' und es erscheint das zuvor geladene Bild und die Maus als Hand. Jetzt markiert Ihr bei gedrckter linker Maustaste ein Rechteck mit dem gewnschten Bildausschnitt und lat diese dann los. Es erscheint eine Fileselectbox in der Ihr einen Pfad fr die Resource-Datei angeben mt unter dem das Image gespeichert werden soll. Ein Drcken der rechten Maustaste gilt immer als Abbruch. 5. Verlat das Programm mit 'Quit'. 6. Startet Euer RCS. Ladet eine RSC-Datei in die das Image eingefgt werden soll. 'Merged' die RSC-Datei mit dem abgespeicherten Image hinzu. Eine Meldung nach der keine DFN/DEF-Datei gefunden wurde ist zu ignorieren. ffnet den Baum mit dem Image. Legt es mit Copy aufs Clipboard. ffnet einen gewnschten Baum und kopiert das Image hinein. Lscht den 'hinzugemergden' Objektbaum und Ihr seit fertig. So das war's. Bis dann. *VQ Eq8?j  5X Q *(?2X``|f`>~|*NQ -8Z0``~f`~~~5[L(B"X0``f8``f8*W8ZR"00><08<<~~~8|؀5U["8pff~`ff|fnfff|`Z +R"^ff`fffff>fff` 7XR"p f~ `fff8 f~~f8`[ +~R"X88 f` `ff f`ff`f`깂 }XR"0f``fff`f~`f`X؀r'X0~~<~~f~~~~ƀ ~>~~~~ 0j0>><>~>>|~>X uX0 ~*j|5_X*5_`hx$H f$oIhx`Ih.|)|)JHz ?<&NN\O gv"j)IA W*j,Jf J-gRMJg"Rl Af^&MRM Rf Gf Vf =fp#@JgN&I P@Jf"Ͱf ,Ma*N#MJfB` _fj Pfd Bf^ PfX =fRYIJfLrpg: 0e< 9dҀ` Ae( zd" Fc ae Ҁ`²$W`"JfgBN&IAp }bB0,HatN"@$ p lep@9@)I"`BQ)I`BQ ,t o2V@ l$)ITB"Y"XI#I2B"2|)I" VA"Ad?<`JxfF" leT)Ax ,0BAHAR@&,HCBCHCFC׬.I/ JSB?/ / ?<?<JNAO DpA"P < "0<NB @gA0kNJhf9DNN >`XO ,g/?<?<NMPO?<LNAJ =fJRNrtB0m B nҁ&ҁҁ҃҂`.g g+g fv RNJg)A NNup0,r2,e ЀЀNu)x x h9h2(I9ABNuNVH pNL9@J@kplfHz?,N\OJ@NqN)|!)|)|Dp?NATO"AAA|:=@R@?HlrG?NAPOHzhHlNxPO lnaXBBgNzaj\O` a4A)HLp4Np(lfaH`pNLN^Nu MEGA STE Cache\STECACHE.INFMEGA STE CACHE CHANGENV9|0<N@9|0<N2HnHnHnHnHlN>?.?.?.p?????N2p,@>r?aLp,@>r?a8JlV@>r?a$p,@>r?ap,@>r?ap,@>r ?apl>r ?a>?.?.?.p?BgHlN4O@BgHlNBW?=@aPOpnf?.?.?.p??.HlNOpngpnfaa?.?.?.?.p????r?N9|0<NBl0<NN^NuNV0.AC -IJn f0<Q`N^NuNV0.rAp N^NuNVp?ar??@a@2/@Ap>ar>?@a@2/@p >?Aa@2/@Ap>a9@p >a9@N^NuNVH Bp ?NA\Or lA l, lr lA l, l l0-@/r ?NA\O?,p@?NNXOLN^NuNVH Bp ?NA\O lP lP l9P-@/r ?NA\Op?p@?NNXO9@LN^NuNVH aBgHlp?NAXOLN^NuNVH BgHlp=?NAPO=@o|Bg?HxpB?NAO HlHx?.p??NAO HlHx?.p??NAO HlHx?.p??NAO HlHx?.p??NAO ?.p>?NAXOa`avLN^NuNVBn0."n n?/.Nx\ORn`N^NuMEGA STE - Cache Change16 MHzTastatur-KlickCache anTastatur-RepeatBlitterTon bei asc(7)fverifyOKsichernAbbruchp?HlaN\ONup$NNuNVH*n&n )ML0<N6 n0 n0 n00,L(N^NuNVH>.<. :. 8.9G9F9E9D9n9n9n9n9n0<N|LN^NupaH*o >/9G)ML0<NNL NuH>/ *o9G)ML0<N*L NuNVH*n>. <.:.8.)ML9G9F9E9D9n9n0<NL N^NuNVH*n>. &n)ML9G0<N6 n00,L(N^NuH*o>/&oAUO// ?/ NO,JFg HrNp7u HrN`7u L(NuH*o >/)ML9G0<N*L NuNV/>.9G)n LpdN.N^NuA 0A"P"0<NBA0Nu     !"#$%&'()*+,-./0123 456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}paNVH# >.p9@r9A9@9AUO?N:XOJ@gp9@ 9@UO?NXOJ@g0<l9|` 9|Bp9@p9@89@UO?NXOJ@g9|69|` 9|B69||p@n"UO?NXOJ@f HARF`p?p?pF?NA\Op9@r9A9At9B9AP9|N9@h9|BfJlg"9A9BUO/,/. ?Nx>NpLN^Nu?/H?<?/B?<BNA/@2/ ?ABo>BBg?Hx?<BNAO rJWD?A NAO 0LNupa)_H2.?A?<BNATON*pa)_HJfpN //o/@?<@NATON// "QS@t `| SAgU@c дgSAW  _ $Nu/>/BJGk&ll HAJpg HA `9| p.NupaH!$>/UO?NXO*@ fp`.-gp:` ?-p>?NAXON,p:Jgp`pL$NuNVH/4>.,.UO?NFXO*@ f 9|p`>--gJlgHlHxp?p@?NAO -gp?B?NjPO*Jjp`gUO//. ?NpO *` n -H-Hp@Ѐe^(,|l( O ",(p@Ѐm&A`:HxpH?NA\O(p@Ѐm$ Ѐc( m(</pH?NA\O&@ g-K d"`" nCN-@윀f ." Jg:UO// ?NO `( ." UO// ?NO Rg -K-n` lg/ pI?NA\O`JgUO/p ?/.NO -@f UO//.?N8O n"H-I`RUO//.?NO ".찁f0UOHxHl?NO UfR ."윁-@`p . *Jgp` L,N^NupaH'4>/ &lp g kN&S`K g4pmU@f& - ,JFg HUO//- ?-N\O *U`Jlg llXH/pA?NA\ONN ll)Pl`zll$ HAJpgUOA?0NXORE`UO?NTXOL,NuH0$&HBHgHCHgCHBBBЂL Nu/ *o)Mp*_Nu/>/JgUO? lNXO` UO?NXO.Nu o"BLQ Qp$ NuWWf S$ NuL JfSHfNuNu  # /"_` "lLJj$AD)@ @ClApfp9@pNBN /"_` "lLJkp)@NpaNVH'$*n-I-Hg?NAXOJgp> nf?NAXOL$N^NuNVH!4*H&IpA&-@-@r gr fRM`Jgtp@"g$[@g @gU@g `RM-M~`RM-M~` RM&`&~Jg,Jg V@`r g r gp`pJ@gRM`JgB`xUOp?NXOJ@gp?p?pF?NA\OB n"nap& L,N^Nu( $ 6 > N   X   h  p       %   ( t ( 0000000 #$#A D$$$$ $! $$$ #$'A $ $$#$! @$$ &F#'$ ?  $#    ` `  ?@ /* MEGA STE CACHE CHANGE von Volker Hemsen 05/92 erstellt mit Lattice C 5.5 */ /* Mit diesem Programm kann man einige grundlegende Systemveriablen verndern: ste_ctl, conterm, fverify und Blitmode. Es luft als Programm und als Accessory. Bei Programmlauf werden die entsprechenden Werte bestimmt und in einer Dialogbox dargestellt. Bei Drcken des 'OK'-Buttons werden sie entsprechend wieder verndert. Als Accessory luft es etwas anders: Nach dem Laden sucht es die Datei 'MEGASTE.INF' und stellt nach Erfolg die zuvor gespeicherten Werte ein. Alles andere luft wie beim Programmlauf. ACHTUNG!!! Dieses Programm legt keine Rcksicht auf die Hardware. Und wird deshalb wohl nur auf dem MEGA STE laufen. Es belegt ca. 7 KByte. */ #include "stecac_r.h" /* GEM-Variablen */ int ap_id,msg[11]; extern int _XMODE; /* Programmvariablen */ char ste_ctl,conterm; int fverify,blitter; char *ste_ctl_vec; char *conterm_vec; int *fverify_vec; char pfad[81]; /* Unterprogramme */ void dialog_dial(void); void set_obstate(int,int); int get_obstate(int); void get_things(void); void set_parameter(void); void get_parameter(void); void save_parameter(void); void load_parameter(void); /* Installation und GEM-Verwaltung */ void main(void) { int d; if ((ap_id=appl_init())>=0) { if (_XMODE==2) if ((menu_register(ap_id," MEGA STE Cache")<0) for(;;); rsrc_init(); ste_ctl_vec=0xFFFF8E21L; conterm_vec=0x484L; fverify_vec=0x444L; d=Dgetdrv(); /* Stammpfad bestimmen */ pfad[0]=d+65;pfad[1]=':'; Dgetpath(&pfad[2],d+1); strcat(pfad,"\\STECACHE.INF"); if (_XMODE<=1) { get_parameter(); graf_mouse(ARROW,NULL); dialog_dial(); } else { load_parameter(); for(;;) { evnt_mesag(msg); if (msg[0]==AC_OPEN) dialog_dial(); } } appl_init(); } /* appl_init */ } /* main */ /* Darstellung und Belegung der Dialogbox */ void dialog_dial(void) { int x,y,b,h,ex; GRECT rect; wind_update(BEG_UPDATE); wind_update(BEG_MCTRL); form_center(TDIAL,&x,&y,&b,&h); form_dial(0,0,0,0,0,x,y,b,h); set_obstate(DD16,ste_ctl&2); set_obstate(DDCACHE,ste_ctl&1); set_obstate(DDVERIFY,fverify!=0); set_obstate(DDKLICK,conterm&1); set_obstate(DDREPEAT,conterm&2); set_obstate(DDASC7,conterm&4); set_obstate(DDBLIT,blitter&1); objc_draw(TDIAL,0,3,x,y,b,h); do { ex=form_do(TDIAL,0); set_obstate(ex,0); if (ex==DDSAVE) { get_things(); save_parameter(); objc_xywh(TDIAL,ex,&rect); objc_draw(TDIAL,ex,2,rect.g_x,rect.g_y,rect.g_w,rect.g_h); } } while (ex==DDSAVE); if (ex==DDOK) { get_things(); set_parameter(); } form_dial(3,0,0,0,0,x,y,b,h); wind_update(END_MCTRL); wind_update(END_UPDATE); } void set_obstate(int ob,int state) { int *st; st=&TDIAL[ob].ob_state; if (state==0) *st&=0xFE; else *st|=1; } int get_obstate(int ob) { return(TDIAL[ob].ob_state&1); } /* Objekte abfragen */ void get_things(void) { ste_ctl=get_obstate(DDCACHE)+(get_obstate(DD16)<<1); conterm=(get_obstate(DDKLICK)+(get_obstate(DDREPEAT)<<1)+(get_obstate(DDASC7)<<2)); fverify=get_obstate(DDVERIFY); blitter=get_obstate(DDBLIT); } /* Systemvariablen auslesen */ void set_parameter(void) { long stack; stack=Super(0L); *ste_ctl_vec&=0xFC; *ste_ctl_vec|=ste_ctl; *conterm_vec&=0xF8; *conterm_vec|=conterm; *fverify_vec=fverify; Super((long)stack); Blitmode(blitter); } /* Systemvariablen einstellen */ void get_parameter(void) { long stack; stack=Super(0L); ste_ctl=*ste_ctl_vec; conterm=*conterm_vec; fverify=*fverify_vec; Super((long)stack); blitter=Blitmode(-1); } void save_parameter(void) { int fh; get_things(); fh=Fcreate(pfad,0); if (fh>0) { Fwrite(fh,21L,"MEGA STE CACHE CHANGE"); Fwrite(fh,1L,&ste_ctl); Fwrite(fh,1L,&conterm); Fwrite(fh,2L,&fverify); Fwrite(fh,2L,&blitter); Fclose(fh); } } /* Auslesen nur im ACC-Betrieb */ void load_parameter(void) { int fh; fh=Fopen(pfad,0); if (fh>0) { Fseek(21L,fh,0); Fread(fh,1L,&ste_ctl); Fread(fh,1L,&conterm); Fread(fh,2L,&fverify); Fread(fh,2L,&blitter); Fclose(fh); set_parameter(); } else get_parameter(); }  @  @   @@(( 0HH0 0 0H x 0HH0 0Px 8 0(H0  pH0 x  @ 0H0HH0 0HH8  8x@ 0@`P0` @@@ PP 0x0x0 0XP0X0 P @P (4H4 @  @@@   @  @ P  p @@@`STECACHE.PRG .C [-b4 -ms -mr -r6 -v -w -ca -cf -ci -cs -cu -d0 -ma -rs -z50000 -cc -cq -fm -HG:\STANDARD\DOS_GEM.SYM -j*i] .S [-m0] .L [DRISYM NODEBUG NOCASE BUFSIZE 50000] = CSAUT.O STECACHE.C [-b4 -ms -mr -r6 -v -w -ca -cf -ci -cs -cu -cm -d0 -m0 -rs -z30000 -cc -cq -fm -H..\STANDARD\DOS_GEM.SYM -j*i] STECAC_R.O LCGS.LIB LCS.LIB @  @  `` @  @ 0H0   PPP  ((|DD pHpHp 8D@@D8 xDDx p@p@p p@p@ <B@NB< HHxHH @@@@ P  HP`PH @@@p $$$fZZ DdTLL <BB< pHp@@ <BBD: pHp`PH 0H@0H0 x   HHH0 OBJECT TDIAL[] = { /*0*/ {-1,1,18,G_BOX,0x0,0x0,(void *)0x11100,0,0,40,15}, /*1*/ {2,-1,-1,G_BUTTON,0x0,0x20,"MEGA STE - Cache Change", 2,1,36,2}, /*2*/ {3,-1,-1,G_BOXCHAR,0x1,0x0,(void *)0xff1100,3,4,2,1}, /*3*/ {4,-1,-1,G_STRING,0x0,0x0,"16 MHz", 6,4,6,1}, /*4*/ {5,-1,-1,G_BOXCHAR,0x1,0x0,(void *)0xff1100,20,4,2,1}, /*5*/ {6,-1,-1,G_STRING,0x0,0x0,"Tastatur-Klick", 23,4,14,1}, /*6*/ {7,-1,-1,G_BOXCHAR,0x1,0x0,(void *)0xff1100,3,6,2,1}, /*7*/ {8,-1,-1,G_STRING,0x0,0x0,"Cache an", 6,6,8,1}, /*8*/ {9,-1,-1,G_BOXCHAR,0x1,0x0,(void *)0xff1100,20,6,2,1}, /*9*/ {10,-1,-1,G_STRING,0x0,0x0,"Tastatur-Repeat", 23,6,15,1}, /*10*/ {11,-1,-1,G_BOXCHAR,0x1,0x0,(void *)0xff1100,3,8,2,1}, /*11*/ {12,-1,-1,G_STRING,0x0,0x0,"Blitter", 6,8,7,1}, /*12*/ {13,-1,-1,G_BOXCHAR,0x1,0x0,(void *)0xff1100,20,8,2,1}, /*13*/ {14,-1,-1,G_STRING,0x0,0x0,"Ton bei asc(7)", 23,8,14,1}, /*14*/ {15,-1,-1,G_BOXCHAR,0x1,0x0,(void *)0xff1100,3,10,2,1}, /*15*/ {16,-1,-1,G_STRING,0x0,0x0,"fverify", 6,10,7,1}, /*16*/ {17,-1,-1,G_BUTTON,0x7,0x0,"OK", 2,13,10,1}, /*17*/ {18,-1,-1,G_BUTTON,0x5,0x0,"sichern", 15,13,10,1}, /*18*/ {0,-1,-1,G_BUTTON,0x25,0x0,"Abbruch", 28,13,10,1}, }; static void fix_tree(OBJECT *s,int max) { int i; for(i=0; i<=max; i++) rsrc_obfix(s,i); } void rsrc_init(void) { fix_tree(TDIAL,18); }  8D|@D8 (D8D|@D8 @@@@  @   @   @ D((D 8DD8 8 8DD @|  8DD8  $~  8DD8  8DD8  | @@ 8D8 8DD8  ||`@ $ 8D8H0 ````P   8Textern void rsrc_init(void); extern OBJECT TDIAL[]; #define DD16 2 #define DDCACHE 6 #define DDVERIFY 14 #define DDKLICK 4 #define DDREPEAT 8 #define DDASC7 12 #define DDOK 16 #define DDAB 18 #define DDBLIT 10 #define DDSAVE 17 `@p`   @ 8DD8 p 8DD @|  8DD8  $~  8DD8  8DD8  | @@ 8D8 8DD8  ```` ```@ ((P( pp PP(P  8D HHH0 ">A xDDxDDx  "@@" xDBBDx x@@x@@x x@@x@@  "@O=JTDIALJDD16JDDCACHEJDDVERIFYJDDKLICKJDDREPEATJ DDASC7JDDOKJDDABJ DDBLITJDDSAVEAVET*D@D@ BbbRJJFB  "AA" pHp@@ "AA" pHHp`PPHD  8D@ D8 x    BBB< BBB$$$  D@D@*** D(((DD D(( ~ @~  ((8DD8 $BBB<  ((4LDL4 0H @  4LDL4 @XdDdX 0H@H0 4LDL4 8D|@D8   p   4LDL4D8 @pHH             $fjMEGA STE - Cache Change16 MHzTastatur-KlickCache anTastatur-RepeatBlitterTon bei asc(7)fverifyOKsichernAbbruch( $$<CR  [  k s    % `|||   | ``0 ?q``q? 88pp    ??     ?q``q? ?q``q? 1`MEGA STE CACHE CHANGE 000```0 `0   00`   00`  00 90p````p09  80`` ?? 80```0`8  1?   ```0`8  80`0`8 ??` 0 80`0`0`8 80`08 ?  ?pp0` <~fpxlf6f~<888vl  ?wedt<ew? 8`|l}9  3`3a ?~ w`caas?8`'&o$k":,J"N}" k + Sf(JAR*A0<K:Q*ANvdzDTDM*LQ`ٳmSnIP"[ I"&&"&& &rBQ"$I$gtӐg BfA` AEG&'ZENBmN79`5R` Efv*oM2 m @HPHUBg?<JNA(m)m -N:gS)@ OK1PC#HN*HxLHNA>@)@l/b h&@X Ьld`ARCpr Ѝ"QHNFALNHz2 NA\pdAxr0XQ)K\NN  PNf ,`NuJrBj Nu6&NN\NCAp$L p 9lrBlJpNpM@r 00tr N9lNNupealp `zaPJBWNANC2N@p2LrҌ0<NB0,rNurA9A`v C9AC rt9A9B@rrҌp@s:Nu9@"`rDNuC2 @ e}bXr,Nu^'  $ 9?>9NWc`k oq 9 `Rl6Ac/ DPpa4|a@:>< |a6RGk0Gg` a( VfA1G<ap?1@NM u!?@ NMX &8*:EE 0 n0 2$4BBAd RdQRB bABJk 0NuJBjBBXNu 0 2$NuE`B<gJEgEjCDEDF Fe( dF8BCHC`D0bHC8vPHD8HDkDуNuDdhDA@kgAр[SBk0lJBk&Nu0g H@rB Jk&` pp1J PdAJgPpr$<( _0&pNuJBgJjEBQ*HE?<>0rHGGd 13HGGdSWi\...N\ \SW2 H@N ?<,>CEd1$H@` `ЀVB&8 T|D n&AdRzPL|=|T  g+g -f.g20" b.0e49b  `da`RF&`2f$$ajS$EgFtefX|v$v0e 9oSH 0&HzP E Do`HJjDDDS4</NJFkSFk&aQ`Ha"FFL8.6.TJgtBnT!R r!b | 4< vpAC v ^Jjv-|2$ dkh> a~NRFB$dj?l< 2SF0e6g!RB`ApdR 0 e SA0g `S@$k p`vBF z@BWAk*ؐ"" 0g'`ooŪD pe@0HQN *g4tk( P J@`@A1Nu C P_Q!DPjDB!dDl@uf r AWfJAkP($pA0H1r AffBWH` j!DBQJBfQZPDEDD@JEfv6#B8AV8c$aEf fDUP] PDf1t`x1CjNu"l`Qd&&|-KuBep[Q c R nPZ _\.$@H8zP,2@NPu0E,` 2 0Np `p ap Clpln<,(AL$I"vz x `gfURf~hBcj0x4\Fk.aPHS&I.p``D q Q4&`|HQ/g @NAXX fqkp%aJl 6gpAPBFfF B09p`pq:ddA gH*(.*BlNuC #I3|< \E6rcJ2WF=AN0:H*xJkNPذNtqt 9@:, IZJ@g@8 Fl EdbJfE e4r$xf"FANuPRN:LST:AUX:CON:MID:IKB:V,J@ fE& B`O"g&`Rgl`A"g@`Ug2`Ig $Cp"=,!4Đ::/rI!k$/<`?t Jj ?a08 HrBO>Lv N" A$ HJo d*b` J1Q **NN@/.,*Q(,l؅kb/,hVIT\Jg1< @R@Vd۬`)Dl$I& `&bۛ@R@@b&C  CX`R~VlLp=:vN)@p `Hb NAH plrAB 2ppapaƕa ldTBD'a@NNT@B){L90\ rtPT$pJpvv`v`vj`v `v`v`v`?Aa*` Al 2l 4)lV)lR>p`@&AVCp  vLv ` TNaBP,th4Hr*4*W24|Bld<6<}PZ@&1zNNC`& T"@ C $ b@Q(:1:>.ҦNNX@L vPB H-PL fmC)H@!(* 9AJA)H @@[000][ˈap Evz`* [gA"]g@|SzZzQSpԐ] [DDvxDDDxОx DBp4 Xr< P@xepw20$@8HB t`0€nBl9F!0!T0Xgj0HgSRB "Fb$,0k0 c_ b退`tStkNF60b ,P, fрd`2zp@* 8#zHpx$*8" &Ak eѐ H0""!&A2!AI "#HRp` JQfppNq Y Qfd Ѐ1$_& @if"QdփHRN$*.~,Nq8DRzXEEg"7@PR$HBBpgJ 08`eetЂ`"ЀeЁdp*` e$W.H@@/\NN N0"2`qTYEjrd0` Sj"NpxdvtdD& pk<HCJCf2N|dxfN0"d & f2jp@ђVEPtkP&R"@Ed deƐd~@  @  "002t" KCF&`e B d  xSHJ  3# #  g B`  HNuب2" "ط   " J0,p2,rR@R@S@SA9@p9Ar@@4, 6f$pa2A9`A$`C l ", Ⲭ dfѬ SA 0(! "cNhJp# `6,N0P(pHR9@@JpP'J&f H LNu &N uQ` J,'f&g&A#ȇeC! B4-W)K20, 8k8к gJlh"g"P 8 @/(N R  8feQpg<``L@ H)l26)z @WLJf`CfSHj-D@(H0 d0YH `4>\>@a"Nr]NN,HP fPp@aa/a `nؠr9c^| PC>$Fehle@r0J][Abbruch]_\f.B &lX)K\)`p ,BD p(X)l g,vRC(ж g9CJDLp!@, FP eA JpZA/)H NBZl ^ Zprt0 0B R@efU"0 " P0 *0\0X ,8<dBCX *@vtp1| FX&$HTHv  &x, S* [0p@PaH8 _&X P`/|~ K!zagf@  24ĀZC"2 S@ػ T yBTA3A44$I2a2B"02A\xvRg<2#M 4B3B@ -fF v>BAAb8GRC`3RSG5GC5C J1D!caRF F e `RG GAc09NuXSF1F41R N1h4 \x1EDgV! 8"fJU@g,!4Cg dRh.   gpLAp> Иp *HE~J v?C bL!0H? H.`pLr/>Bl/,f. ff l /.g&, ^`DN"`> R`8V `2Z`,2,/4WAARA0,/61 hfRA1vS@f9A/,FJo ? CQ0`@k A(/H.^p)Qht &JKB$C .0~0 1PPT`2? &<@>AFG\000X0 0D~RgA0 pi, "F L QNu#?&8LeB,C`(A? fHa)_ 2TP*A8 Vl *bl ,bNN0B >R" 0 XPDC.JgRJ)6H"C 2fP2HP"0*pd0,r W1@A *A. piL@JN _LLbpe`P".P. 2/`SBSC@A(jp6P/^P00<rtpapapapa/j r`F69PJg8BPpfpg"qfdQ@\pb6BDp\2`k R9pR @$Bp`A6S&I.0V 7p&N9l/h8,:,B0@/d4 Ĵ@cS`@rŴA cBŐ`8J, 7fnQJkqEg$0&h.pg  qfH0hpj``g&` PtDh g\ngvfhSlpjB`P\bl 29@S@4pbrR:0pl/deDr<rSFEl/fcbr"a *rd &_!>!DH AEEP"HHhhNBl0 hV@!  `PLvj| pZ>:BL41NM\`ZR"Yd&-KPte N,u4+@| -|UmN&Hx LEIDER NUR MONOCHROMH@PSORRYr"_(H pC큊NlV@Z8C(R$V\HOWOLD.SNGHP -"_N "rpvpz/- XP  HPpQ*vPr $  & <$Ѝ!t2L ( $B/-T Bu.P$&#++ J8!m !0(0<B/:>U<>4xR8*V< _!F*s⃁X/p_W`@bqp "U_h>)@BpnbDatkt1ˁad <  Z@B@@P````dlhrlxp~xaPBr<rDrLPrTdr\hrdlrlprtx$. !X%X` b-9@A "- @02pp!86,I%+LV(& 6!:%2,p6!R .0 fnp2 p0, p(2\<FZRR``n|*8oF /.0@. ֭"@>dA̐2b0?0: N Z{">\>@A'Fx8vD(A( " MF FХ rr$>PZZ@a#R @"Ҽ9R0"0"-@RU/:HYx|:zvx0=fJ! `<b<i_<??????''//???? 8  ??0?>??~<>߀^___?|<<??x????0?~??ߟ3 x0?`@ 0x)~@)gGHF@A?????_???????????/??7?<  6<<# ?` @@@ 8 @ p#0?8"?8==?8|?>_<??????''//???? 8  ??0?>??~<>߀^___?|<<??x????0?~??ߟ3 x0?`@ 0x)~@)gGHF@A?????_???????????/??7?<  6<<# ?` @@@t$n^">.t("b$567BC DLMN`abrst   123OPQmno     %&'01 2HIJ\]^qrs     123DEFWX}   =>?LM Npq"r,-.;< =PQR_` awxy!#   *+,KLMlmn '()67 8WXYz{! "789YZ [|}!~!$"  "  : ;! < \ ]  ^  !          ! " > ? @ Z [ \ j k l "         2 3" 4 S T U p q r      " $ % & [ \5 ] # 4 3    6 72 8 g h/ i ~  3 !  5?@0Awx6y0  $%&89:CD ERS Topq      !"?@AYZ[ijk'#$#/0+1Z[)\%8A= f "     *"  F#   b"  ~#         &  B  ^  z       " !" !"#  !>"  !Z#  !v" !#  !" !!# "!# #"# $"# %":#  &"V#  'Y (`0)h *i +j ,k  -l  .m  /n 0o 1p 2q  3r  4s  5t  6u  7v 8w 9x :y ;z <{ =| >"r?" @" A"  " := " "##6  #R#n#  #" ##  ##  # $ $2$N $j $ $  $$$"%"%."%J" %f#  %" %$ %" %"%"&# &*#  &F# !&b# "&~# #&# $&"%&"&|'( ) * + ,  - . / 0  1  2  3  4 5 6 7 8 9 :  &9= '  "'&'B  '^ 'z'' ' ' (  ("  (>"(Z"(v$ ("($ ($($ )$ )$):$ )V")r ) ) ) ) ) * *6  *R !*n "*#*$*" %*$ &*" ' %( 1)  *  +  ,  -  .   /   0   1   2   3  4  5  6  7   8   9    +" 9+2 +N4+j "+3+2+ + 1 + . ,  ,. 2 ,J   ,f4,/,5,,. ,  --* -F -b  -~- -   -  -. .& .B  .^.z ... .  / + /" /> &/Z "/v#/"/*/( /$ 0  0    jx            . < J  X 0:) 0V6<A~C.CDDEVendiskussion: Kurvendiskussion ist ein bichen bertrieben fr diesen Menpunkt, er dient dazu, eine Funktion in einem bestimmten Bereich nach Nullstellen sowie nach lokalen Extrema und Wendepunkten zu untersuchen. Dazu ist zunchst der Bereich anzugeben, danach die Genauigkeit (100 ist ein guter Wert, je hher, desto genauer). Den Rest sehe man selbst. Die Ausgabe erfolgt wahlweise auf Screen, Drucker oder Diskette. Einen Haken hat die Sache jedoch: Die Berechnung der Nullstellen erfolgt nach Bisektion, was relativ schnell geht, jedoch den Nachteil hat, da nur Nullstellen erkannt werden, bei denen der Graph die Funktion schneidet. Bei der Funktion x^2 wird die Nullstelle also glatt bersehen. Die Routine soll aber nur ein Hilfsmittel darstellen, deshalb wurde auf einen komplizierteren Algorithmus verzichtet. Fehlerfortpflanzung: Diese Routine wird `VFHz ?< NNBWNA8     no{|{|no{|{|gh{|gh{|no{|{|{|no{|{|{|no{|l no{|{|no{|{|gh{|gh{|no{|{|{|no{|{|{|no{|l;{|H(;{|H(;; no{|{|no{|{|ghl{|noghno{|l{|;l;{|H(;{|H(;; no{|{|no{|{|ghl{|noghno{|l{|;l{|nobc {|nobc no{|{|ono!l{|nobc {|nobc no{|no!l{|{|nobc {|nobc no{|{|ono!l{|nobc {|nobc no{|no!l{|bc\]bcno{|Ino{|{| I{|{|nobclghbc ghbc \]bc no{|Ino{|{|  \\_bc\]bcno{|Ino{|{| I{|{|nobclghbc ghbc \]bc no{|Ino{|{|  \\_{|{|q q{|tu no   {|{|q qI bc\]bcno{|Ino{|{| I{|{|nobc ghbc ghbc(ghbcItu\]lbc\]Ibc\]Ibc\]Ibc\]lbcno {| {|no {| nobcI  I{|{|q q{|tu no   {|{|q qI bc\]bcno{|Ino{|{| I{|{|nobc ghbc ghbc(ghbcItu\]lbc\]Ibc\]Ibc\]Ibc\]lbcno {| {|no {| nobcI  I{|nobc {|nobc no{|{|ono!l{|nobc {|nobc no{|no!l{|{|nobc {|nobc no{|{|ono!l{|nobc {|nobc no{|no!l{| no{|{|no{|{|gh {|gh{|no{|{|{|no{|{|{|no{|l no{|{|no{|{|gh {|gh{|no{|{|{|no{|{|{|no{|l;{|H(;{|H(;; no{|{|no{|{|ghl {|noghno{|l{|;l;{|H(;{|H(;; no{|{|no{|{|ghl {|noghno{|l{|;l{|no bc{|no bcno{|$'o{|no!lHK{|no bc{|no bcno{|$'no!lHK{|{|no bc{|no bcno{|$'o{|no!lHK{|no bc{|no bcno{|$'no!lHK{| bcbc {|bc {|bc\] bcnobc\]bcnobc\]\]bc \]bc\]bc\]bcno!lRS {|bc {|bc\] bcnobc\]bcnobc\]\]bc bc!nolbcnobcnobcno{|HH{|bcHbcH{|bcHHHH{|bcHHHH\]bcHnobcH\]bcHnobcH\]$q$$q$\]bcH\]bcH\]bcH\]bcHnoHHHRSH {|bc {|bc\] bcnobc\]bcnobc\]\]bc bc!nolbcnobcnobcno{| bc{| RS{| bc{| bc{| RS{| {|{| SfTp rN;pp $tp @p\p`Uf,op pdWrp^.Yf@<(J<p`[<"JsN _///O.NH6 _" "_Sx$HBJW)f&)f)f f( SQ.L6N _0g H6$_"_S@QL6NPNN ~NVH``?<NA-@LN^NuNVH``/.?< NALN^ _PNNVH``/.?<NALN^ _XNNVH``/.?<9NA=@LN^ _PNNVH``?./. ?<NA=@ LN^ _TNNVH``/./. ?.?<@NA-@LN^ _O NNVH``/.?<HNA-@ LN^ _XNNVH``?./. ?<NNA=@LN^ _O NNVH``?.?. /. ?<WNALN^ _PNN UNV2J@gA??<LNA o"h ($I!Sf+H ( ШШ"h$) Ђ"҈.A//??<JNAO +@ڝ#vaBNANH~E#z*yBG<9F(yQJ9f.raraJ@g. @gh @gp`aB@FzL~ _>NJGgRBGt-JTv-KTFCCgp`SBNqSFfaQ`tAp2<Qp 2<oQp2<Qp2<QAp2<Q3 H aL0EG,y"y`Hra@<raR@:ra8VDpABQAC^ra2QHIG,KBGBCBD|BE4Pf"<2tQPQ<<żGg pFvk>CRE EfRF FfExIt042v@xlSDzm((EQfL MIxEA0<BQApBQA43Ea*HaL L@ERG,y"y`C Nq-0@64 GcGR beNu fraT@(Q`" f rapT@` rad@ BQeNuIG@,KBGBCBD|BE4Pf"<2tQPQ<<żGg pFvk>CREyeRF Ff$y(yt2&4&0&v@xlSDzm(>G5xEQfIG@,KBCBD|BE4Pf"<2tQPQ<<żGg pFvk>CRE E eRF Ff$y(yt2&4&0&v@xlSDzm((EQfNuNq-H@-06Ѐ01 Gb GcGR`GT @l SFfa` @g @b4B`4@4-0BC3 Cr0 GcGRB43 <@-HA-2 y0 y0A Gb GcGR`GT-H@-0BC3Cr0 Gc GT` GcGRA23v@Fea< LBSBQ`-H@-0AAr GcGRNuH&y, K0S@*9zMrAA"6Q#z/ /?9?<@NAg LO?pX` 0< L(yQ<9FLO?Nu  #+3;CScs !1Aa  0@`?     NApBr4Bf `f J Bf R@ @fNPK!Ꙝ(ADATH/DATEIEN/10B___DE.87134pwqճ0726222MLS^.T藘_ary@܁l A-yxLd@ḰL@1&c ThhjuI-,IͱRI,.NU04HQpKLPpI--)NQN(J(R00׷P0SHIԜ"+0?[KRuFyR)hCUk('斀t`va PK!<WADATH/DATEIEN/12G1__DE.87134r7wqճ072224` ^.S^.T藘_ary$܁`_Jy܂yJ$6h dCi30i#r9P:6JtM3gP[fNjIfIjBpIiZ{Qi^JviQ[brKjiIqrBprFiNVbFGbNXLA-5'%J!OV>%: 9@wNbiqiQj{jqbn DA/P8?$3=U7$()5DG\A:\R JҼl-qK).:d|i*P4/5Ҝa1ሇPKnj!YkADATH/DATEIEN/VIDEOUn6Z6?$۱N ;M`vtHڻYϷ^ELtU%?dZ=<ܣu{8 ( nC`*GхOt-8 Qc5-D }o2И_*5`F՜(J>S:G{v?{t%֩Qۅ8&`RI4x$`h~ ="> s4T; l Oe5 !/9rm n74kkEoZfvH *EaaA[l b!1* qO`-nJV4w\V^ HkpA h;D+3:D&7kC?Z1Z_ɵD ݊LC `U.Oni2'G[x||9N Թ'|UFD1h2 ݤHH/.RM1]"{ ]2F>!2CT&'.ƈ߯\4z_qqs mvV-5 -_6T*/5}V ns*۔boB;>bԻ2gqT6es쏨W0f!gDIDr\lsKp\: er7v$;Rۏn 9ue{k೵U?q,aeU$no֮wBC[)7XɅ/'eT) uc!ԭAWwN;5` [×{ev#И:wƥQcy PK!sF~jADATH/DATEIEN/ADRESSENst r v25b^.CK^. 0%r!9z\>Q\%)% (qP@ )c^. 24  exLR&@IzG< PK2Bª5 ADATH/DATEIEN/10C_ZEUG.912VMo6JЅskB3)TG4iQ!{i[V.VR ?Gq6 FrXR<3$Jߜ~8+',8qdR JVMm6=qR.ū wj88bM=)ؿX)~[xJ7RR= RIsN(".tDc"dIL@Y؀ 'y@"2"M(]2! #m18uP`2">1b*C+d1IFcq 0YOu=N26h56fBFM2\C+r$/W <.,$+I3xmGb ^;`mqB *f2p gpgYpuxVq[=HB^4ڿHRжNV5M{X[}aHq}1ojj]7?>\sKdF;~쭻ocn}}jggG^]T?eϽSB_ T;w#sGWΩwZԽ޵ m],CS-7a~p-C>^֧4_w nGD!jƴ?ߪb #~3uWE= _W2sT,dcsZPKĈB RrB ADATH/DATEIEN/07A_ZEUG.921n0Fw8ǎ 6&1e\pk5ٔ%Lps"< qc4Mq#ۿ ;~k{$r&=3RMUY&&:85CظW#Z6.4njws|YO69l눳c9{I͜=I=)qgnhH8KXJXKm*RERcD`,RɪD1H[SQXi1$GѨV#R~4i0_#ME c%JڸI9존:Z2R&ƍd<.j\'9$O#T6qlqᕼxrD&QBLEE;uPSš_:n#%D"rONF;bYh3a&^&,XDHn)beܓuiiii4M&MI3 i&% Wr\ R۝օɊ/hfͩ_՟h;zv7p^ |.*mQl\sQlVES@YtPWeG]鋎`h2۾&_7u͙of!,*|{rʮooK*}/Q>_26EY{(johmHKO]GAΪve,YOiv|y{W~PK?_w|<ADATH/ANLEITUN.GEN/LIESMICH.ASC[rIr a1 ]粒g#Hd^D(GC(=.}!5xFˏ>'3Av*+ɓ 7=^%^o'{ڬrOgn\ˬvo|1+^Y.ُ;O}_->/Gz#fmXS_ҵa沢X_ʬ< k|~UUVnwwfq ?>-7iVPxc]rGY]"s_zOK<\f XmX5:rܻx>vzVV;kWsSS_յ,l;e嫱",|T~ڸe9箹"_|bru9_Wؽj|Wq ۬hX_bzrnwVkګ^skm_|a{\gil6M3Y<`qW5jyWŴօw_mu!Kc/"nlUNNUn2܌ӿ%Mv{Q,m' U?-:3;h/;7!lh9˃O_vpž$. ~{zrd=kk[)vCO^ Vs,&˶6pL'׷l,?(pi[xڒpzŊwu x5l1XB}2oeK<ы%SP 7_ӈĽx{\WN/;3HOKnK񺦢0.VQNP׆Wp:cR1nMl*ol!w;N$ojcݫ7.N lD^gج< V_vxUq ?#9&hG㷧GWo./a3@K]e|+«]e~\Ǖ3/4FWd(+ 2p@0"HHv!|ƈYo|QcD=rx9vޜF;S >)jW{7:v[x5% t~^̰*a~yhv V)fm,ӀvU\<ܕś؜"}UzY3X&o ,ES[s6%t1on4ߩ#һOFtf&!}@~<鑽ݖe:f(~X7U9K@\XT?R@M)$ iՕX Xh,˻d&\OO=|{<ٽR_}̖ o׶TSP5/~ɺS4恠HEoHg$łCE+Hr{v)(rD6vJr?$pTʯ$"o6[,(-rq}S0j.+J88^kT8O:sس슘ӺbMs93AWk.̢#ሸ6QQ5&gnѸg $q͌^=RpyuCmw$?a;l/.% 1rP}mȎdT(PVFp\`9S=w"𻂁&+%!Ri` Sc9>}^ra.1T`/HvP`|ASj [R("Leܬ^#K?.+ݕz*dȲPqwampdGO(z_γR?dKư5\;c 3?]D-HuxP7紙 h|&Qcu~ZK޴{~Ϣk_a{F ӲV+q >z\`c(n~qWBeO`ŷLRYZQLB (Ӎ-RfwH\ Od&5K^o|V<"V$5K)_=KN)XxBgfde1̍;kvhBtfE{cf9Z8~~ҿy82I)*iN m[cabNZӼ>C:KZJjUwSZZ 08q770\ W&̿sQE og=Mc1@J\V^UvZM3;+ƁfT ꑷKq&bNM^LcfZYt{MZYuxr9 P_>P׈U}_ aq21:<1<1H$iTF^:+$#%̨+aIȅb`iԤ#v r1y7ַ ܼȧ=>r\Twj6oˮ۪NFėj}%%H+ J"& ټRr&mnY=2yUu~"mSTK.cLNq>lf#E5NlEQ"ުG`8@kuiQa, EXY %[jxʚДYFݷkJiwfnF 5fuFɖRCҮS/]qn4 nCZ~ɪ< %&[7xá)}4gs7SD#B2`u%u:;zA-Wց*;Kk@8hp@WK2 h.+#ż- x 9yh}XqLXJ$sk-!1}{F并EV,-OY Y䑦m^$'?yE@FeDQXan0UP( -3q Dsi.>iWBLSНQWsmEP r%WbɥoF~BO/1X-:ť`mNkzbϱLɄEG z@ z4 >UFRk<Ǒݮrݢ=#PG4k uO`uVjK=F(0/}'^EGǏ AtRkȬ#2y& mSS!bKպÓ+G.Fv H7Aiwin'mMtB@ÌE@n4EF+̓%\7qO"V~;hzB62ߒHM<ƴ,9m9;TcܾjR^fWFazQ i1Ֆju+t]9НϖaElXHP4T+yshJ1n>ޒO姲]+:y5۰x NmE )5Hm,P" uQ #dd.kpQ/Lc#4L^hl5xWP V}0#%ąXjщt:2 !&6 ZJ%.bEXNg!hJk($U\_*ebAb]" D~ۓ)}{S?V(p["Jؘ-b,<Ų+# cp757Ad77F  cHoQ<HtD` ȤLu~'\΃6}D's-*5`qe)}d vL7nL+Rš{!d-\q5=CQ_kv':G@]t+K}lR|x60 9r8&K6sGlQ5F" R>R^F3@ġ )[ǔZprMᬰ`z2VOjGɛlDpwGBi]24w Mvb5dO Kq:w^$!62moKH.o s#/8NK>GiHQ'^3rk@H<;jrt(5i|dFZʆ@S N H?g'9y~!P頪 LH3+5*|RBI|XJA3ʉQ2rWI61Щae\Tp٬z1P̾JX6cLjWȴtq΁dKEqwg㷧P5Y3SMn$ykyQLn` b$3pK*x}ZWfn?ƭڌAݲ7O H{ji&.*?;fth]{ Q7Pt˼*ä7do Z[͏n1z) ~<+}@: XߐT#eIQ5Q9iچ S//5pixo>ٌ?5ک#*QĮ-J-!"kL9bGVj#t~\"?{WMocik;kǭmXE 8ϧfMQ@/0j"=[zL2pT :%GT:. diqlj: &='o'G؛ۿ i+ÐKZ)iq>:9ՆS(_42e0}k~X#TR0O5tEԵNADV r+9]>Zo͉ʟE色W֘tZYP?IY#2?h%'oZIH{\2g?S tBo*ĝGeypW.O|I}ف`۰*w _Y,YVۗ /yFR]13=j`KBtEZorsbYn_/wں/u>5>OHmh]{_LA?_pRa׼C+c9]ēoAPK?@rS?ADATH/ANLEITUN.GEN/LIESMICH.GFX[r[WrESIŕ$L36Q,x^@Ë œ )S')WޔRUA޽W^x[?t>Ig';GYg{?N';_c?QVG7fXiT}L(g,z`ڸam1_8+;?lqmiˉ-lzalj$ƙ5ǶXQb[8dX.vF/|^Dij[[]izQMaNfe-ּ sUѰ< Jy\ƶ:U [ 2*hzL<ϳ-fu۰ժxvpmQi_*4M&.)}羿*vH{A f.*/VZGf.h[i7 ;,-no6֚g#(+/ z1Axq6t:bq3e+c̈SooLcm_$pprbxOҭ{Y/Ůqv .:CWpH*GHqv`Ut :aKbxd&z݉o7 LSX&|Y .yeC˂kLO0+;"8X^{6ٿ8+1.ۋU %6}d%V&J|8k;2LCNtޘ#(\zSӃ#A<'x7-*fqsu1{+;}/jh12;g=x?PH9k._$~8x}:@mۻs/J#O`;Nk\F,2ɀqVWrC"H--DT^Y"blClk,YEFS bcx Qݦ 2S9N\؝ +zg&f7d@1ͲTHE'D^$.au,Dv1x8]מm[IucEuo0YCf*t ݝ%+*ODH`|."l.YSdx/WPv(rBu[pXM@bO8cxP7[{GE ?I0-UHCno+qYy[d=c\-{hgljl2uEj%.f9l5toȔ!<7+&˨r/F; W2vZqIk,LO"VO u1u|aӥ$ErT._e1XAߧ`ލij,Oo>g_\ lO(9MlU+/xXE4},;?)ϑ1BLk<d `oEF - BPi3#pbx08J/a|˝I)sI]ͥ2nM"Zija{^¿WČ`qtsvvʛhv fzR((ݹVK<6ե$OK]\ ʄa}EX!;O-E:IccGw ]51)au.ŪH8IY %Ry`X^PJls✗{WddNHr[9| f=;yK񬑤R-~"l%i?=:C&zqT<37֑E.daU3u >` g;Jбc-׋Rٹʜ3ڐEj!1:gRHe!! OSL4K5BPOH s$92W7 K8'(/y5bY8 u 91O:'Tg3nkCI|֤K+du)gVkT8 C ?| Ti?נˁ3Z`?1- "iZ!>^XVFbe6,^Ru连b[B%SZI.`ZsB c8rcAv̋+J :UzsB^1uyҾ:#pm![R(K>}|+rq:3wl4z2j Hd{]A@ۤ vE#xuq'"&tM|Mcd&(;M#DflT Um#W%VKuf8.XbF/kE!Йe>s]NE9gkX*k1ڈJ(.6ڱ }&IR LEm$R!ۻ .*(SԊ]Ex*'ޮxF|f)7nsG O!brj0{^an#$.leٻ̋x?* c?ܗ6"}ܔvM/Κ*-t~+D]Bdž!'*^!>4$X&Eġ=o8mۮq)T/w*jB֞\}8hrM(t/Z4R,>i BX I"\2-eB>(IG9t좭`إ ֪jyvIf%HU =-` m=p]Ҋt+;=Bhu0Vk¯<¦E҈'͂BĨ4/+k$:-$y7h:;%j= (x$ RZX\r1hN)95˸Z>mT4җNtqeC+s흒M2:R2P[u*7DOl %a.`ɌVD,J#APJYƱk QxHgWC;C{ b]<_CA4,#|lbtpjN2T%d^4֓7`< V$\G6䲄g.Ms_ !w&J%-GE>ama҉Z*8H!͋&Xb %Ju\UHiJW\zM؛v鶚D(Y^aE8ReK%CX^KWši8i u%#8-"kBglXgc\zd59g\ aW6r|5ݶ#ԑzwz4G¦'yEr3#NRHUˬiɉfхH>@A(/Þ$Krctl#ɾD ϞMR(ZCMhsd"$q,4zM!+]}8"/"z@ i&%kZN؋(9!bTVǷ?rBʟqS30ZQM[X?VBĹKS4ݔK'[ R&o%WP`5D= A'ڥ?2m:(n9|?EcHQFf٢AHZ-O,Sʞ*Fk'HD ^.(a`KjSI<UV7Ҟ!1m]sR.z$Z(JS"@p,u̜ ^H qp$j۶nN݋Oԋ"+'Q @܄w:ݿtmn=={3}qվ#Ee2ezN&]غg~GKk`e8Oءn~%y4zuQ 듣ΞzGyO 2H)F997D{(sMKc[5 ohto] 1 V2A[֩Mvò]PD lږD!͒}l4׼l4FsiLefxU״'=ZFf0N $: !6+|߶n#A?dOd)jF9[xεPsBD?Z]Cy?2E]~JprT3*Xe}9tZ3賾FI!،iD[FDaK:Vz)g</vpy &w&؅A*(:"ƥKN)[ϋi0>3y_o75 GZ2pZ$z8sMZtնJՎj Fŕg>5sPܳ#.?4>ESʌmZ9*iBp^!$+mLJlUԖ wQ}Y0Zu'-QEe~>oOUw GhRA!n͗f|Y1}0#2(DH=Ѧvᛳw f*u\ V&/<C,Hqcl>a0^̧[P_L/&Ņa%HպyUk=VdGPuF`~d'rW6q!O,g~.ka(Dΐ ɯ)R]HRܦzc|D )ȼ" #>H'Oby3fL1m8`51Hy#NVۢZb`x4>;|qxMd?U]ԝ qptd_*NJVй@$'zDJê|kT(@Qu:=Q٭rQ_׹ćGuљR7$~}s1~&{dUEyB}ʉi}tդ_? __iI3s"@s#$-}o<0ڟiM52^_^РoCdaX!^ݶd'eXaĽl#=no8:B>Q-yYt>*j e zp,2-d;6ݝ( #E rOb&e{\]eQ-WA` 6Mǜ5(VFX  ( I\^mi%(ѧ6]PM82nʽe>sΞ[=]t ߖOZ‰Ck/UBR KkVW@s~zH&G~a PGq(}gɑ@bCkdK"CHUeBF]ea4߿X'k@e<0"lEflRCdŗ!LtCEljiJx)~ }]ygsfވ(cg!P}MD_R{VH_U;znbLHGLBLhS0@ub@N4H4HSH)d#M&"u}md)Ґe)ZRK1b>׽3A|Gfs=9y}閧celY籬ᑑmyZO)w}`yJ{svO"g{^=`o\үDzr_G/}/|a } ~/S1Ǘ/xپ9K{B󠴼gOhAhB,cj!}{fK`lK<65cw#v( [SZg1,tRm=+ Wr@>zce5{gé|{Fy tK$gēOqMiULO}/{ȷ{ X˶/t w /s}3I:{{nFl~c=Z: DSPSvUXejc 1痰v+XM;tc }s\ ~~ѿ?o߃^eſM:,o.ϝ)VNon͋57f?RͱX}<[#o FPo`NTmO%;ׅ˞5I3C] D0nO0\`,Ҽ6gl{W vL)v&|_&o]:׼p鯏hJ;N3h =g^ۇ#@80S7u퀋H yסh3W2Cv25Yϣ=;j㎔Zw ^̱YgG/@nM&'2#VNkR|/#Zv"վ ,i3 KvĒq^;g3QNq+{ǕZ-b4m0vX%A\l Y+,y9 |,N@`U]ꢿk$Cݺ_,bbڌŹ7,86nL@O}y06"ׄ}>RdSYil<_:Y;՗5Oțkgg&4yLe`*o/O϶ @oxn=Qط!pXى7[_-+m8jNtfSzyc$ %b&r{K0nޙ` EaSGk@!^b!EpcKOhjzֿ(JOP<(jywB#b~K}+n؛E--'̲}!RwEG,}IAHZ[]Dl wA(QXVE*yWy϶N?r}~͘>>)ĜIF TpOZ^jj]I.]3~mڛ=џ}46}2ll[lL%z8y"60jSz ޕ){[t[[x$ EpZ/ ;n q- vˑ38-8G;Ti,ٕ"_)N$^!q/1vv=QRt;i^|~0`^sJq~HB8m_l;AÊCuyz7Kkx}@#x9yAgg0I?$Π ߜVBurW}Sq$j*5uNCd`B;ۺ3Nկ;Fϟ:gjT=F\yOh(v;U zORF>;;.<Nk׋8S6;v5riz%f%\0{ >c_3yw?=#M[ z[ [_mgNpM-*pqauvbY/AC~C`.lT{3p}~W oݏ-ut~d *s n#O'VfXM[83~;sH7dmt'mh[~ :޴,)ٛJhsD 偭$u;j.8Dy1=z9ڧdM͜%"CK^&̠۶FrreS ]MQd<62)5.`:ynW4:!1݁­luwtGG]= 0g*vPm|YsOd_/iL\UuMZ~79vx k8duuf(RD-44<+UO 6IDw͞Iω fy~ShR;CuްR= :T5eitXbEzIX~i?'k9n%Ac$@Doƽ5 )T~+Kk0!{8@&qq l9(Awy5$!X- 5϶i_ŵX+V#-Dn٩HsAmUD!N^j$pT!znzo}zm DP+y`liu^ /uZ':~+C4Kv&qiMG:Xpyj>OleH;+Www# @^\ҿ$sVbQ%[h4:gN}1KKv=%B"׻OP_F^|,QTU賈"&$X[c,=QޔEk7NPIUK%6tm OZQɮ<"q* %쇨˂c=;T慹2wMÌ-ϒ'!E#'I֥ BEH!/0B8jx]e A/u X {{1b_}DQrhqǞG)uz47i\KiπgۧD d@{Dc IZ3uJʨ <]X2XTڃz !="yEF+]Rb' ݅`<8[;̓1nJpzҺ[>wHBGLbأuQ)ANX [jJj-6|5hgOJ$B-y8XwWhFmgIƑ>zjAO7N |xͻS` " wlgI#\8m*Og;dٶmBә%$\gGm:~5z}G|q?|A?(Cj'>e8hZ+N`e}nU`p^ eg2slQp,թ;׾b!m3#o5/%MN$oW/ЅAuNG{#E=9?ƕbN֔jCgBd>mu᷹+TBpb7c INb' c# 1-oail ?uV-Ty j2Q6؍'{<-)n ÜLvk֚l'wF#K;{#<ρr$!I:Lk&u:okڤ.QA}m')K?Q/fU' G٫nͽ6Jݕ҃[osǥM^{M6GFg;3k6-5sdKEsfB?t=p'.zֻ$ fMBX,ђ.; .gC.}(v.X=G׆g#Sh6 .ᗬYY`U~:>>s w[O-a+3_hmЋFqDcP~=O j/Q;H>jGeQ,<%rb)`# ܇oYNRq4?Fo=8eaAC^f-AV HVxUR4$N!j4S~a̳9 9F|?6p_3HiQ7K=3#ۄZӶ?fSX3%8ڂy:7kXw.Ҹ8'NY/'_Oޘ4~<zjF{ sڟϧam<̟ o\4snʣ+ҐWzWb@MiϾ)˳?g9\i(?Rji,9'Ot$Bǡ o7l*C @@1u'!yCKcS xXf빱'PjKdewCJɂ&Yc?aT'sicЦ2Q!fIĝ!5 4u3r<ݟ-F7Tː}u@j LvJ;*p.N@=Um)X .u(S?/Oa`灲}oraV4E1q0mˠSQIOē |`=\?KLd|{$g]}|eF?< x*Ήw=:ŵvjx)/"_j:C4zH?"n?;82H*YWY{w P6q3zH:SRMppbrp$L~I{OjLO/UY4O{D ZN+Z4Kwj{IjbjRD髭6Pu! %X;aF*:֨?HV;-@-򱠞"vR- Y:Ù/:.Y=ZSKAm}+? Hʚ#dk#v]CJ!.X|O]欷Ur<"EN/>s>΄&K`Ԑ"PiX)sf~.Dڅh6Ck/2I:he0+.k}TĚLyvrT̤O<5#y$}0F;nIFv}ޞm3s?ckʭ%zn%kF!R^oDvH{_h.1}7z|sdx.h s}X13Rm+ܲacEo{eG%:]:ixSц^|[]fEd,<~OC Gg5Qyi,=2z-]_oSdSl{0Jqt(_l^voEQp9~L+bbk5S̥}OߵN9BG⾨~ Da*F^O-%m֥àk]#jwA6<dlQcFX `7d!=P3d8Trgs5\p?^,3qxGއsõF3lc?(>{z&A:k|twiB-X̓H; |] /{L>@|=ǁ21#c,ɥO+>r_e"c!oiY~h1vA~&/<K:h{_4ZKTИPoȓR|%:Co?YP#})g&p(}%dG(HfIX6=,<ޗok~]&>Y0 f <ڻc4 q&7F?.‡3O+:yL84&h;boU7֝OOelӔ!bc'>novngŠd<Kšِzs˩>ҧvk)c<|_~5~b|V1Fi֔l9J6"=3EncSY>~6bӼaE#G%, Ѿ,WHcZynlQ`mzXƊ,6zG?| xS ~y; 4;1`u@uD9dC.;SR`MjI5^6)VН(OFʷQA ڔo7}7\oAJK)q5BNm@uwQг5vx"nڡi'Sڶ#dJq i8Jͣw#L~EW`>ݩzŨp.YN YH -tDb;!q/bdsnϸv9ʱ8B)2 bdSH뜾 kGU&$1OE/=t>Dvԫi#>E;r,kY~w}6-fN-[ Cz ܞL)qDx%YX"%3,D*,]!5%-:11cK7@[E/pJcyHu{?lԫ=̅|UryC[(^8;Tv֤Is@0p%v3#g>QCo#$[-(_"L%D ͪ۽ޛA[drF4BQgܥay h`yr x^juYOs,̦ڵ ]Ktz8DCsr;[TK}'sr.1G)9$G'xN[瘔n4<;ϖg"'Ho~cϻ]49嫉SNtmQI_϶(B F˞E>ٳI72Vf92K|+kD P2̡IgߺPel"aTzNܯq=Y+y~z/~m/ ]Zxk]vluv#tqg7dj9oJTb=$=Ȍi\Ĵ{~91cwv3Y*lIqa˃ qa`xA8^M59pUSݡt>ČoZF5| OAwd e</ֈgJ?O]TKǔ61WqJO#[u|FabDž'83>LyXΧ&SBeJvc_)OIYv;QѳL JBo K9IO(j=1Zb R8f&!Ps{foPk{&x 9G6ڀg,eyK,ox{nvGG L<*/RXa\h%"* _3gͼ-?<,ѰnUBF&Lʝ2U'=Z _G釫(ΆR|eFLPJMkEUYx4.q 1Z+~-M*G;q,mr}[@sr.j7]bׇ=HC j7tkJW?Ih-?HV>𝕸 t W0`)cMy9cmE&hOBWaOZ _W~QFvc;2CxG iiVWY=)N,Yi[/^>{~Ʋq;a'H5 Mde)j_|Z0>*Pzy28c9pP gVfŭ%wI+,tk'ƮSDuvc0"t"NXF`}8 !Aj)wG1M-1|@[gtQbkp s%B]h%;ũNdst1LoSY zvmyǖ\*?;*h#,T,Wuҹ#j;*/8$ԗ0vܯ%cl9[GZ2a9dXBu·7}nL[oq (_):T6}w3%ױ s^#$Ά0kcEkaȅt6cs-7h+GVKQ;{ uQGN-'mb')Uj:" 3`.QiEo{|01[5*nJ'Jib#ҮrBOfeV9P"Df¯t~X̘5߈R)|k;s``ljq7sӞ\ə)X {gFs)Vsk qJ8hSY͜=*Lļ,T?wFgn+λ0'#6i16ȯc ^AtP(Hr\#T%)k?.hbOQt(c(t_ gՎĺ3g\.zCk&}𾡓& lV Ϙ{tc KŴ2M1Oh4 Q܋B6Ny0i}=|BGvh ~E+Q,Q9zߨ,d|ӁȮ}[#pzcQAeܘnVȌA PIxmDnh_wrzXmy0y,,u)Wϸ'ΰštѹC{u>c+CSpxQnJ#75&[;W9Nm`'\5 /%mz;DI~n;PK(=n\shI7di<#ݍy6a^([LE2ʒe Hkrֺ_fGUNߒ:Ӂ W9[,$ފA i j%d"@˾MH X[spl. ՟qd BV\?'ɳd8,w̕!Zʺ$(NsO14%=03g%ėǟfe5Q(1Q=ȣ\ң*p= ZcoQ}՘kQ] +/drvR)kd嚲F)pvO3MAK ЎYtόK̫U'dB~+rŽm?EJQ'zHC2qБ`؞(2)JkpSQeYw}wmZ,l{RpQ@iVe1vu* W)PJ]5O/JC=,[4mlEST{fLG3x3Z?(h#_N(V;˿P[7A+fؗ{`׸|XM:aK֡1:=WG[F}F'F`ث,>=tÇW|ꗨmRT'\ Nf 8Vg^*[2/ٻpΊ6j~p+J+ywGBnmʤ'8: jum/{#^E>s֮,}f܈ -ٹ}8kD?* Ay%c N--RyY.;/=3eEKŃJRU~N@9[~7}̡߮--a;21`>O; }6u 4^+N2oއUo"V'MRU[")oA @؋$V_+ʓ4f]Hp.QjUy ~܃<:P'P_1̨QNQʜa*”ٳیL,\.WhPz&nћk{NxR9^q1Š Ӊ_A@)CI6UiПNcScg$1.Q̵U#2G9" 3 Id4$-]-s"[_(i/K./LJl+UG9SH;n"diH3;(Mx SֱZxe^&qu|Y._Q[r9sμV1Z{.:[' 5ZDLIp+`ꁾPz\k#=IJ=L%W#&|* ͂mD eTg6)ܡ}EQrƂ-- wJL=/i5]UpCS'_N0'hh鱟i=7a9#Y|G2]d y7fR|VA"n =[f^8'GQ̘Z!>4M@Ƴ{P=pb2еגތ(pԛYEnnP&q̑~JB.`1]h_M{TxI9(^;>՘;b7;a7cOJ]i+‰乕B[gEHk8z{q}ZNx/H它Z|fFT^a׈ryg!߯eZo6?ho|˙bc|.4}@+3L7,ozYaƇDCU,Gܚ ~yA=_*77ҀgO8cЃ,@ڈ[1CjrX#w=|;1ϑ"%ݰl= ^T.;SwA:A=g%ϞFv~e]ıWy~<}>; u}a>Yc-9FoЏq-/⎟d7r svv/F̅|sid T f, !8 1qAd=Yb|=+R3aYbs%]6Nm( ޅ߱ F[7y7`(Н͏ηo].1O +4{fV9t 눒[8Y.hƆf' :J(Ot۵ADp;s0T;^+sh:1 F'mO9MlYY1ޝPfk,́ՈU觥=tvjgw (g]|g`x}C E#x/|5p|+UoEC=1eMm,ʹdnx>b?ސ hJ٣0q߈kDg×}El @ 룵! ie"*Oܓ$npHM,‹38\y>/i.]MT0Yrg?ۧ$F LE1Ǝ=֔IUQ')FbzӀ{WߕUkrËW3w!X lȓn N³QW\ZJZGS e K[Jw-鋴hdIR&ڃ_Snugr~Ө3>z?+(ɑEscq ncߋ+A68R]\`)\-+poC?DC KՊmD%eK.oiO/I'b{#er`y?hO7Ѣo/}k ,YzCH2z#'' .'}}e`m{>9\ưr},hn [#e&!|F 8as}!jVC#ls{;mXkURhM-ސ<@78u^WzJ$dy<]F4h%hMb% X(DmGCF %nu^& I'%C4| RUbbꀍ{n0ZQtbWn=9{-wNE{hs ܇m|Mpħ$ yyW) nUm8nyAĭ N=㦼[) j[,+zoWHUY\Fr_6!UY6}]QS tk HWݠ Jx"mm;W_Y`{,wp b'ǒxXvACCkJT ^Tzk2 g7GxB<(#1:훋1; `{KXp)B&R1+x5U$魒;R8PXJ`}*%O=f]kjNR$`&$FyMÓ č$QWC7k]k兔I/yǤ&9Y&! L>Jľ'ϕF=gQ(dH-6~W9|gqM᛻ }s}hR3gmF 5B㽇hR/,ui3mş#p/-qrM_ޕ*HF̎ALw_e6V4lib]6 ˆ,)kId 10S*3keT0a[tö/-(g;_F&/Jk;+ hiAmbMa%wJ1ƛ9±=;xD-ӹoohڑ-tGj 9EhZk# nwĬHS|"ڌ1܅r7c$K T'K Xc/3CoSZ+ənB]jL/"8Qvjќ~Q }K,[?3E}`<@g }P̰Lx/nZou 6cuw9{V^,wq_@[D4y(<1s (nZ6ae=¶wh/;e PvabцڃW}Oߦstzwho9z :Y&%ژ9X3/S_jUpIuX"(V Y Bc)?ǾxA,>' RƄX 0й~FWܨp?oaݖDfvαb#m,Ŭ'*׈/n!9} 楳e otSC2cSI9Qo(WV%;E+k;Qf4t?,EuR E;|n,?{)H Y~H[g+[o:(،3]i4Ԓ+Qy~;}?K\}eǺ7рk/?; V1_x7T?>2k䄂Eܠ˧ qbd w>qʸ"0 f?9z\GԚ"v[c37鷐]^_@co歨ҹ;>G&f1 =a5H!J//\(F·\B%o*(@1XOnVR/HӬDžQʛPPҖfWmپ:̉w )lK Gi+\`>?VK=3pXqxi&K05㍠Y:Q;9 ^ )?A0zQ *sS{vZI W~SCuo)-PZwOllUXxMD!v"l.IZw;XSsԮ1$+rc=7 eK"fgpt 6م LkfQg o5{2Dħ@HCZ]'u.^DD-o1o ZmMbMYrj́+RثYC{T}ר~+xg}0#h"FZʬ\`_XM>Y 5wScwK&qMP# C,l&feQee(Kzb]lLʪOD7:/Iϟ!lyc+O}f *P|/k~!)b; m 1̌lqzFb:]O M in^3vH3jD9 O-7*1r{E>qB.3 =SqJ٤S|I2"n_&o_2~8oYާ!cC&zo{}HK^*Cł{'a{/=AH2 $;IyDOsPzYvbvՑ/޹:6^bO>iƷ@Zrv^ Sl\kН^n43W4o  vӜ"nxpBt_m{; |TU,p].rRXr'wi7gX8;]ܰr[/.~BKo[1޺vAwO~F]߅!18朚Ajteڹt=QŜ*+mUQ=Ke9p Tn=CM&1Ԭg"O*m=2" _J=ˬ50Xhe ?m WU4]/~3mEtb>I&g84ro;M4=N>Ǚdug Zla&%Mkhїe3{N4zκs6`5FO"۰H|J"vxIIʣ-n@]ZC]ELRIlY|eupdW ߠNKAENǛ%m^#J.8{V~l o 55-C)he9zh"[(nK9ӃFkƸs_aOl;Vr_X+ZSqLJuua!NS"'=!ܺJZ]rǫ̰[!uAԞhnRxlpdd( fZh[rIe b"ZS[UJGcf g&<+YsEL@+ y#`5S sȃj|g:sڊv/P 'Ģa/3w-ՋC e{>%gM89z5ga]zZ(-S2gwu;4rE!X֍$bv seTgasVT9E<rr+!}c xҨYPpdr9f]q=8k|82, IiF<4X@H Bu'[Kx֞|ÙxM$,e'JJF*%QWJD,3z[@JSCF%TCU.g|y:+,. y|^Lw R`|NK) skYs>|g_X?v2kB?MG %b@}:!E~/F9k!p֤Uk ~|#Bsɚc.I`'֒w2T 6Qq̤H;dQ^ƷB&}a[(Q'J:$Gkc@V@ƽ?VV)^b!E v&+ Իlzr̄1U(|ۂ> Xĸ3mG:٦@(^bJCe9&:led'j2}'n(j!d8 @H{fɌG`"0^,?}\9s):h1܍,kgzq#^:-P?ˬ/u;Q3* 1";w`+hĺ5.e qjUZר}B c1CRt?kyl54~aK0Ӿsh-47指{2J9TΤqC(a̛0L rԊi̲UOXfխr?kb!]%TXy-njۏ![%'2xM7i=b_F%YQ3Dz#lzYVª(ex{ [Z>Kf@ q z=PR!Ƚ#5^<7}ZZ̀H$Zaxci0<$qͦ5q9,K.uXH4z5ALD  @kVWWDlc涤f-QcRDh^_u ϵ 9ǠPu"~sMW׾OL^򤆚YB7n:AϻGCEfC22ţWPu +rE\=kltZfs g(Iofw<oՙ}ˆ5=85ڑ?R~j2R17 &)4I,Ճ6eTʜ稟;34~"⹞"q ΖiThD T\m|3;Z"SQ3pԫ+'ўϕ~*[riGM#=2vnFjۃGݷ8qPm<:6bڹDlܼ]7BhugYmj̟K@~Ƞ*V: iU*'ٗ}P[QB 8c@/cq'EF\>(&nx귤t6+)kKeVCox} tv$}9A$4!qxq4"D>bxoJfhu8&~-W| i06<ت }[! `tXgHA<`y3ζ.K&p i:6ɨw(w`AdZxOU;E~OF ʞDC-E-´4^zTN;A'deֲ@r-ԧ]=4zkt` aPsIlrQ%ZO)y^eTJMոbb Cj醡Ŧ恠e[0η.w$zoW/) F@p2m**Y]f{WdTQ}_ ΘN>_zI(MˬoŢ~xl3K`6?Qr`;(L/t2lXwe@3{e9ÓE*gC;$4i̱60ZȼC< I1y,+MUT%$4A%!HJDBbUQ`H@DDT%q mcl'vrǓ?cmǃcmv͘61PwU{ڗuZ[nBK  Lq` ?7?;fʿ1T$߽8^C+K^Oll|xpubyf{DdXPs?G# y%&vr( @!S-UJzŦu qzQQ2XpnoFoj){}Jfٯ|W{kkPw/ѻ_+հu}moa-Ҟ:v:(igQ@I/B-Vۻ2%Cs jVP,zyiV޴*~Ux/aюD ߄2~FCma#42 ! 8g`%a,Eb ^3_ߣ&OAv ;jhê2C~txkhƜz,YVskeZ*똞V s0)In___em 4~dwkjm@]߽{ϥ /En:A~|dol|G*ŸKލKC_{4ST[Ix+Wy<5(-\T^ŠpY++ky!}?(c"rz[x}c+aLyUDVʴh/yC/6rJ*{GbuLoz0؋[ZX|1Žuե z ypDZ7Bжחk[Mě,ls Hxk J*>JtI wy(Ex$X%.%/d9Nnn5;~*Ay2UVo[E259g/?4c4c]!{qgP:4=,[yo䜷߫o4W >%ӞsN#0U1k1{U> @ O1¨lTȇh'P[v߯'jlI9零 e0(`u1cXY+) fhFZir93Jrb!?ޣEMNA\ɱ\h݁SQK9Ծ0~KGF.H-̉nC0iOe=>В=*`V~$Ë^y?a 8 { rzCA{.8ɵ:LZ\<ÞOq.`2x OW-zGg)c^ɽ-17mvt\c`cy{L5o?wנ2g*l"?k liWVy3,=bD`VPVAKkUkîX{k$)-=;Ζ]i'<;sV6:ǞM(3 n"]U ӷgrU% s`?px񱗭J{J_u.^kL9Asq,`VꞘQHPjFEkFd>1̘۾Tt;:Qӭp')ӟɵ޿sR)!c~49!טv8`oE>{ Ŋk ?uʶF)Q׽5K|R $x5;1a^BVV{<ʙxOpոapyƍƽp;-tl3zpͶ0=ӼP2qyϵۻx||Nh@BS4b"0 [fhT5#C8=1UsCFJ(';Վ}0VFtInWG8$?̝νtS|Ci)ٰ&b,Ϟu` R,C= ?ع~n0Z3S;뚶įNLFIDSxX+@sx0Fo T<ԠWƄEi]lŠamR5'Xg=\jC$W<ߌC]Cvb4.B{ݤt2 _x\ZeD1$Do '0:PAԧ“x:--EE[Ņؽ7^mJRaN~39N~* 9>DLQ U3L }KD^9U2GdFg!20wVo!*^SPx)mz~@xUi*Q[;/e^i4-Kl57 E~R xaXy-h#a?@7Pǭ5Qz9Aae6;[MQ, *ɡPNPhF`W)d1,+ܣQWch$ ( e݅9΃_aezݱcvauFph SSQ^vE2˫gZ$z_Nu(#~,/TO<ԓAZ/;Uգ'6g~&skjo&֭Baa֨qjs4z!jh%Z`ۗ&P~A|3s$;7vbfj\ewږ`U>WfqhT (*Փ =}I9sauɲrzfm@ҲHg 챱z(̃kv}Qx̿4A<荲˪&5a.{v,x3,^u4_f}"tL`4*7%ܖ\3`hLlzl b4}S )>'q*M 3^̼{^5xn+z"灮OUJOvLڵwb*N˱z.R``3zopFq\CXy0N1ZFrVƭ5X ?՝D'Uk7Wh%z^fѾ:{POH[{_>pzN ;̟i[XR$~-4(>/VF뵒&փ fs^iebQzCd$w@˒8p>*'G먫bT݉P9Y +1QN;g('.TOfuG|@\ߥB#h84F خbb-g'Hrn+ߏNk^X9Pn.Q(ôp4,3 Dg7Xv'.>3AG` Py UlC} 55*sPGSDžA6eT/1(zT~e7٫)vo#oe,Jv%ۚ0r[Գ+*ܷo!x )em]SBس1=Q{vVaa;@HWT+m~7ac~9uǓ70P߭LUԭa' lxPT,*-5=Z`݆*n_DQ`96-8soWOkκ tF~oܲ^ lrwOav_hٴWV"ֿD+"P ?@/>yZB],t=Y7K,z) l_e}ר)5D9p{3Kvs /s1ߘ>}B1}Aps|-Mlaj_)Dio\+oDY3ܽSX][ef֢-P m8)ɭ #!uIBvrR7/pOcBޔ,d?f(dBCTpg19lߛL9L}J<_n]ςB练ޖʮSLC[J{y ˧(7uPWh99̺]NVͬ.I#_LjZe9*UԮ0/yxxjebo v(<[rߖڷ[o*yŗ(·_J!ZIWDX9nL_ˬcWf#׫;^^R ssJ #_KE=(StW:ȓ ,,F|Vӗv?\3v>:E3YNӐ4,V .M`/^J!\CwPNy]P}Wg POeL]jzkVjA/Sorm0.n/ z7ԑ 2/2($J\'[b+.]ص/(m.PYoT_VEvWȓ;vKp h|d*yp}Rh)-%[SfeQ{ ּ%KtsLkޝ[rҾ? ΢vU{IHf@>W?T,?ʯ/b)\O^Zl($ׄsݽK``\Q% l'80D K541Ng5Ƞ0R8=Zn +Zu<\/Y* (npNYRv\W Y*)y6z6 ?,Ĩv``9#4x 4|˓'X_p&* Uj@cO'N^~3PX9(YA%VY.g҅uKˈ0#J<\viʲPyV}h4'A%*6=+ a'Q!rn)J]4ފףJℌo;htW o(G~̨<[ a@,iЬ(deQ5u׃V$ U &??.ƽLj__ϿO?BV}=wst1 |Yv$29o@&ߖGf"닳8Kt\[3)q̮O.RnPtjW)b;}3/v*;J+P̿dhT|&߃$Q"ݷpTy{ރ? 7ƵՆ})*UBzl508׃vTTTD7q?+g| |޿3ރWIhV o2:Gݢx=hor\WԚl K`٨BëB1Cרvd,,~vg4Xh B#Z+DK>{SIjdzO{Ҋ-YbعT*Oӈ!o_o7@mm_Jh/'/;+TP%?B(".q7§p`Ʀ+;܂9H$Lc.s*k<qh+cJd LmI_3av$Od]k'LBOU '6o(2z{pr8uئoz}6 *iZw8]n16)7+4hgqZZr7g>Nu" 4菵oۜD;I~$G=԰J yt]T͂+dM;y%| Y[.BWWv ܸZnO 7Bc)WS>m }M}4z~3uam(ZJI{77nqW6A`Ryl<5J[U ]V?i\3_1n@itJ``EoV9ds)SLhYV9>P)^;"= ׆þBnNTCB=j S5̌zHۣU{K{9)[yД.u<5BH]v-g4/Sl2as~Wx^վ$➜ϸd ,u\|q#O&iN3]A g+:WN|3D3)U:RZAOJZ}&Oe.[ oirozM'xPXNw# $6a퍴*]ah=okWLc}HOn9wt0 ) GHfFV&Ay {_'ȼ:S iNZ݊3kzdx3>Th+*r:އQ,f޶^͘ٷ2*t]e CGIXRe8)uaS-h"^3| aJJVUAnq2vpd}(3۲fo]+ӷ7mbmTҩ/=>~OaSAfGy܃qj{Hjoo,hJne!5k){~fS}AՐ>jsQmAbo% _g˽, l3yC+ KtҨH'B>5QG 0knJu;B@EXD^`iu-px=hYB;>(6b$::Fbb^y00eȺ_^U" wlEQuNL㉛է턉 -ǒ7=h7^3FŊuB+c[N}IF`^ |t,#i)yifN=#|xSu۲T*sRdz(@\db%&292fO!ܬ ,*>{=vX_z684)T,PǕ OuSTdKMj ڏ=}=r@l|O6p`RE;qS5gcE* it.? Yڰ,+BٚE{JZ|= 4|kBTJT}8w3߀='ʲ>@`y k1S*2$Jiq.i%JhXB&UK.]}:߲ҷ[uFh6,XaG~=o"A,c|:Rݳ=uVG]:! 4{%u䅔t2qf3Z0C7E\:߹o 3,ˀFRvNN9@ߛrii%L|'Mw$7Sbw_xrp#?\җ['ukP?̹j;oߌxO'J9gܶ0Y)%)~s[x:l as2eV^vUNJz7&3ylU:Oв`6Q~g|)WWuF|IҟzY E沉ɲšKǎ׹4g` #kAn NѓB &,j nᶖ; >.Dvل{dY`Bp.;Ś^ fq3TwIB˜,晒֖_#wPc9W* 3)r*KZެ˲i'` v% gDNz6Jh@z?3o.3F FNt!Z\DISw],?SZ{fWhu ͸/DshVuA|ϳF:X%֐ǹ]Ќ(sz;Io:`vIO0M'س'M{,I1吝I{q2:W/>^NA2F>,EeadqR=s0O߂q RMV]3bUzgo4=t'iMG?> ka~aU`npGV+y$ls0|Svs =Wrɽn['[6vO)F@7}܅|6@_ǵ #/\{/Oľ;fO:Nk1fIyxGZ=v*ťz:~$DwzXc}d(R 44!%9I_j <5QeJμc#=/.Llgild*+DٝTt8KڏJmԶkQMդUjsPmnv.:x>8;mfp6.|.ws}ڂw#}_XYȼfSM{1y:R\A8=uMs(ia_x|&3{SI 7*`=sR8]NS(܋ExRP@w+i6Q<{ 3փĎi6U=7BxJT+oG[F%!>\`9&UuQFn$5}E୺q?'yŸ%|CM?G<4:C. 09#a>ZPξUvS1:v\{aJ3@?veU?x>a&blE{(Y5o3H+ L2 9I+mRj{e'| Ӹ' ams!EiPi'Z4ٜٞ7Իb ivKDLl"#fa^}?Nz):y 7 ;iP6trpʂl}=+pZyh8aS FͱC䁙Ľ*b,Ң##+_kKMr앪788#׻#s(ywxXz .sO^#ؒc5;8򊡾z3\M~#"LuoU#J8Yr#Hk49!6"Ip^=R{\.&|DXXA2Zc Ki,/]A"pl`!3#rBzA a!0 $ӨDxqgs}<-1? _fn9zQV⻋I:Ʀ-|w>nq}5=(4Ei/bD:#b_gnCYOi~iv<ʗU+:%]Anp^'׹]4(o]DnW+cLt )G:jsk%J_X?QoOr7W~Y,.w:cnZqvcahb`j05kv9%/ol7%a0Bs=OUj tVN/ɢ)둵f$(vUMexEJ5hq: pZu3jyYﰻug O.d7%PQ/tU9$"ʓS%RP [/v~)y;zCar;OQP,d7'/ڜ,u,EN+}5+:eXmRʡt@Sxcڼ!W[! G7tBB'4 bפT*Ր*er7$B2kK,iuJ67ǗߒHVrSՇPVó!ŕYih0{zX T1ni0~#^z>fM8*:̂vvt``i{sNɁS6nsaHO&_Q䬌4Xct,I;:@qs_p5 RZtNsAG2nI瘷IF]4Gߟum;Q h X< 2OZ,H{=?' E A3ǝ/63>MAx㿖^O&L:-q73];F9eku4MflR9i61E] :6 &y4?Bޞme67UK1j5!GmZ(T9xw%4?^&1P2y@#+A( q^f*|#]90s̹eDԘp-XN*  B16/$=7\bpc[Z*4{pY+mAYw+U$b $EHUɽvz㌶Xa8ZoI<{tmvxE?|E5k[^ s7Nv1뽰ioo]Y7ݖMz^_Ǭi_uKʾ&RM>Z-iPFVHPFF԰հհqTw޼C;#~;0 CrL#~pVƛZ0_G#Ai.Є>aG4c.])&YH嬰 U)8 PJLi: (7ap3>-ZOɎXT " ?RHơ~Yk_dh\ A `7Z|J3&j7FA^O=n^W0:f.Kmxr0`rc 3(o9Bsh*)扩M?!? 7i'KʺniQA)Lx ol %h4pTP~M7*H#!,QܠFj6*P5f/AO=> 7Om'94׏Vtp/0Ar[;v AoAM#m3_`w=ݕgC@nsK}g n"1hh~DZr7?#~~>i'k)~~,\+D 0Op/9X^aE`LS4^" ˽sچŤNq5,SZܫZRՑ}-e`񇡑r)p;fcKz~Gw^ d wnQp; xEâ ^iA11Gk# K :'+(v̵ֹv`*얬GwWt ~%-Hբ,je(]Eڰ>|MzvwcCҞ¤7ʀ㐷_/uO(ɱ$Xg VQA_|TѡK_Q(a-rq L} !'r%<8OtKH/j =q.)IL2%."&:MIII&\!ɔD'&c\j$( ]2 SbKج,1%'ј'$ ʤIh$V_XcLҘ4F$4me̤S̬J$4!CQ$VިL4Ndqg6(k8Fe*z.I^[SmXskpdeڍSӅ&;~^Mд9& S>ۆj?eJCo=_MxZrYv8?CucML'gps/:; pw6~: a@,1[ІǺN4%4Iھ?8R;_JPc諪v:C_s |AW^Y]-h{ZGy8jn m8k_MgNI8_,|a# .UhĞHD5Kx}w52VPF6Ph9AfVRK+_>]NȰ4 NwNZh(w;&0Bs ȱ#Aw;IbnJQQؕ~ܼBa.Z{㤥%B!" ٳAp6 iFoI,S[R5NM>CǀTl~C`0.ۯ{?!sG HPWtT* ʫ lKj (XQ`w3(g? 3*: (Jz{, }Lz%:hNQ j)p$q5˱D+9%M5-K{3fiZjiBti5MTth£'N.ؚ~H2vZ ZJ 9e_ӥu'L,_,T^RatO,'R'V z`7!m/0jOtJeV:g]ٮ4ynICB!2L; 7.~NU)6uZ.| {xxFŮ4 i{E<㭜)~#P1~"6>NHDRgi'ޜN_DCzxWr.Ҁ<:_QFMh3w,շoa|\VM6}yO˞(M[bkѧN81qFdM%zG^>U/Ag 5YkiT 64I|x޹pg1])*q7F+:)dOh8/ RGOKq4t.S-:`%=vЁ;`&moTtŎ1xGZUŠ:d$ݟI ^yd;)E'ڼz Z_nTfu6Wv+DZk ,r&U[lzT@RWS{x{ z "d1jc@}(G6m7aQ)ɻ;'ɯu_* UhhW;^ xqTxCD\>F[8 Z#/=>^ScZ i:Lt1+%ZPgE{@a6j{4ۄtGTOY&v[BBhdAmT<OPbF·̵JA @+W7g^嬡a΂3+c& ZdbA7菻J 7=?w`kt k?<_z^+;~ ωv82.9ڊ.8-sB܏k@$;JZ sK-S^6[MaQ|am2{YSF=OxWVZdc%F_M}v]sB P,šs]/?fU6ˏ[~>h:WNSX0TT0PUZ5@|--Z6aǬGJBFXM3lߨjA/Βw5*=)K7yEX6c pC/r4h8\ҠU (Un53ODX9~{l^ `%z[lM]%9&JѧsK'zmkQ=* ^{ IhC`51ø:kht"\"I\ y.$a5,61%i BziiMm7yLe7u:9nA6@U=He>i765qӱѴebӁ>q"NYhoD֢RGn-ojSaD)Rlen_t50k۵p h["*-|&ZxP~gվΒ?$E&Oٓ~67BRľ&iiG{±o؁<9prM˜,~S‘H8 r Q?viy;-hv4__!t:Q\'!J'DEף[EzF3㿯OT={_c0-?{#֭;axꬕb5f٭Z4]mB Yt4 :]GY(ɯm1!ϒ2{買H0@|)|G1…a0!?;:ɇ>{gu19{e&$HR+79s9|JMk jH>,gRY2ˆO'⛉ȤG#q[v펳 iQph^*ChIWkBv FI$mk!~C~^Cx-[%Ej=a9rn.!C f* =j*:64W~G)& a |KlA+R%0A_i_:xtz$Za} aq6<Nxy}pP;XCKGK#n;9=p% 3^I=X;Cq/3YuЈ ڄRMZ|OU{Y( r {fXWha0)_ypB[-:7>&/kex@ (78aLƽ6nM3ej՗1OLKZdPaSL,<|jiE|g"bet( wTy∙M)yAܒfg*GK3: tN{ws9Է6MvMg SrL )eC.l\f;fU^ܓ6U`/2<Ĵy}{/l>1I}Zu=Hو(͗4s绐4KJp-9X7x,FԉcXk1O {uZ|C " >fp}ȷY cſtr vqo݊Y5-zgL}re4mNt|b>Nf?_ . J4)DݻnL͙9em6΀ 5ۆV*o#rICF-T7k7m"E̙ O*Qz[ouE~c}iXmJO$򜳬_EC2t20Dn*ʝ }|?@ 3wu UL}*{}KTjshx= ܁VubkBj_"= -`dR)z]z]gfT}W5-uoI;Yw_sV /Z?pI_II/&!g Me _%oeX1\s;Oi̹=:ZėR6B#vb~myOF>2^[IGR*r"+g74{lOM0ɺ[!ܮ[\Olh_ofnaEG( &|_Q|_AfysW@e{{鿿Ĝ֬$ f=鬚\P@IHXB؝yhe M^xyg.6MijΞQ~!-ۙwR ޛ솴Y{ՐX7xRz[ o152$ `əX pnS9W/*lBBb둒{BIKRz2G@U=v7t1d"2m㍽?yom[?xg8#v!v5ir`0t!s]}>s&7ϵM^|j$YN+J&{@pm%Z{y7.mr3PX5.ݍ oNno׿l> Tל7JJSbaq0#W KRF|6hR5o"RM^e s[^n9ah2|YV; zMl0®P"$yY==Ȳ&`#oOn Wwd;ō#2PhThݥDȬy" 8f-XNamܽW{uUɭ420'Ԡ |gL˰%2pќMŊqc=hOM%a)Jk)[_7PSl_vF020Ͻm*? 훴'b3H2gIx`GK# q~xĭ]!bpv[o,8%.CEIgtoPnL\*{Ui! %$.#! Dxм+7Iʖ<|y<*ʁj*G=mQ H?΀ TmTREE^ʯpՃr3/UWAR<෍\+-Ebݬ"=*u3N#+7j!IC h,D=,|gty $_*8r`0̭,YIf'A;-*td/b}&۶cQ?KwKb{Z|gx8D(~ V\׼ڀ 6ʛsAoh*:/m%fBLy-21?2nEWP,'G,?S_Zib-:98ecN_ W-lwh7DVbBi菗:@) x4nhgԛg' fIFнGg' iV{D" x~V#<hPXW ޛg-{($_s'fiYrn紜.|Qqv02ߎ~Zs{S*!X{umy+Wᶾ߾wͫuY~4FD_‹޸hS? G 7X6KGZ8z ߏC#NH@Ũ\SwЛ%̖E ^+*1VX ĵ@Qh1rЕtnVyzX ~EtY#khZ=G@,q:i _b`;ބDLZ],#X?{t6w|d:ʨڻQ9 אe#fF5'*WCڤ-{\>F&\++}!_(}R2F$9ߒm\㩏J+f ֗OĒ?Fn)9e^h]=s-BY@SS$ԎOJ\J_V|R_b>s])ޫи%{:(CnVt5O'c34ɽRZ9Tz9RӒ|?Łyc;$G{v{ ڳ۶45_3Fb!|J~5#7Ki}}H Gj6Jfc/@UeZ0[":ɠ. ר=3lJgeؠC!VGnT񈏃rϣԾ(_~AԚgvaKZ!~ x{gGwg(dƉ}QPɖCp-wůKAGG0sVonC f%mBJ;=1x6nH$/47զs&/UmDR Ni̵…*8hU>\,ɃOSVoX@{E }k*W5@M+V&gkk<̺|pCZ _.W\TxjRA!aaɏ/dOhy͙ oOrp8;R}iN}pW;`#ȱw/Wq {5PHY9XX{o<x9Y+Y{I Sr9Yޛ,e KRfZ\/ZQUIdoNZK༉e%wzK̠9=-<.S'p$M~Z?7TV8[hvgH S%ξW?$}U?SC "gFNvP˷ZoL峾(b6W/t'ļ&#qSh4NPlWR]/w.c"æD#9qn3|LyZN!t$7=ݠ>Efi ߦ2hwg\-"|t_Vչ]Vsڶ\}MKL Q-U#0Cc$Q2MNz1-.di n2aǰ{{T]OzN񂲤lYIᖪ]s >PJ(Mb"Y%)𘂶<_ʔ~Ib"~cE2>NpX!7?/B42}&IagW;T?gB%CvK#mSÛyz}yS>ýSʵU*\>%Y&@M9UV;(ɋ, _E~X-JpM[eg9!WBd&ɭ_<2hyZUK}X?;EPĬ ǹ MRI)Ҙr$~w[ w7QlWz>Bs KK%K\5%xu?3c'*X;>hʲ2$˲tGZ x$ݳFZYҢ"ʤ_!"I*,RQ5V˿e|I4e!Z&O+%ۻsUMY7+Cʐ$TQ&GZ )3,{:#".pBȼ JԉQ:Ϗ9!5u!k=(*wfTL=') Kʞ^0>[NhEK3pbಙ.+֊ fJRC J_ʒ(B/'`U?+\SAwCWc9ZѸoi` g gw{Z8b0zۂ$bE,l[ 0Ra~¥5T׺Ra,KZ 5t xAw%m@GI km+0yfhW[ۥy1~@EOfm\i-[hVvqkhJ'ʕ4KSZ4ˌiS [:*^z,zeZەG0}*\ulLsB#i 3sxi\ciJY^Vgf[2hN_X$|'خ H¨QX%uHjɋ_jڥ5R53;*irwK(M $ďba uJΚ9rO{w$pKA4ɭ0Bk3)EA 5ط'IϲѐG% j6RÔ,9Jp5%ܯFgJ~Vj( 5pkm8c-`Dˁ s2$GK3l$ibXP[ T΀5c*_1]с PF Z 8.M1X4$eKn3'hEkZ{|ߐMW(-əҘB>mH-fmg(Mսng5 #UҤfXАWvno%P^‚U MA6Nh'I4 <|ͬH9ѵ2bQ 5h8ЭTl'+Fb 8iYǛϖ6Z'r]Jघ1ڤagc4vJCuJWfu ™-b>Lus" B5 ԙKz$BLp7Sjeh,=GTl 3l-H[Os%Kvg wúv7V-Y9sV峲rSZRO._T`(xAGW/VYG lf`SU<]8vu Rg%[̚N= BWڅs" ]pM?%1Q>P1ϯZ.xQC'S*0Ω* e-BpEhE 0E`[8JZg:|,0<׮8Qgi4Ҙ*]C䬼059TTr>6hPx** uPk{V!:eٴ)vX+h,졃ɞZ[ֱ'B3kqMY8&zeD, e-RۡҨԟyn+{>hp Ҭ9%.UjNZO 7qufۀڕ$ex*LudS@z?Z;*&m6!}Q\\f?׋8$o/S8C:u4ydwxV*e3kL\o3Ǧ?%YyEdH%))e!_ 0t95~4[mҀM~|(8î3|*C/4V֞iZK}2yT>T.PڲKjq_Tyߑ=[C`=;a(qlKG%[ng56]*,=TSRFV؏p"&KNi'/cbKgT"\IXB1c@AΆ9WX?Q|y/){E %kh<~uPghp_P*"ewv-Y7޳P[G-Zp!9#oH<'_*g [(ʢdY h,'0.kFYc (C;1ʥ{ֶTO*,FRn# aĀɶ@bt-ȿ㸕+,cwk3r*hB㩅xKksc5kf`ŧc3zG6T4oAϥTX cWn>Pi"91T*'3fFymcÆc_şJ୽4*v[/gs\XHU׀'^u[Ӳ|Z`OU[wk# qIx.=n\]d,}M[ko*]±BqI$?)\($ʓ?Q8m5 x6ӧRM]'d;37x"@ӅJt3ʢq=Wٝb1k^!qhMkQ7L4VF~±WxKI]@ʯz`- ,G-[ CvXfH_բP]5߆+-U-, SbwNgE0 uUu7x`M؆@+DbZ)=4Ơ9k}޺/ض %czjZg0 zJ]by»Cj̐r^Oӻ͚f5yfOlO4&M; I"3 "B9)AcMq)q؂tܒ$r(&$$ [V19ǐ#%C3''45rc-Es wT_#ߖDVo\*șDƜMF_90TS}`ߛU5-11Eޤєǧ;g4_RS~9Mʠf>f +lCgx)`Ap_Br֮4SFڮm<Sf~1svPޏvkr225W\vݒ(LYXp'K3ФMbQɍ)xϤ[s4nM<^WÛRqq]MR\ikZox%֤D}>?dڻ56*LF1)5I%] )wb+ґw@/fht/PKTG} 7 ADATH/ADATH.GFA x\Wy(4FoE%Y3ؒzY/+%Kے-BˏDV,' 'r(RHoȡBJsҔJ! NKSM9ȳB#9IO@X2B5]# = O6pü?3 ea>7Ojw?og]^s6w{{wf݄v;s4}'UOw!s$3{ml``1F @@Wtݛݛ hlSVF=hjb{`dal@@϶z={=7bnf`6w{-!`c'v6wz=:zn n4=0@@Ow4F`o`p$0X vԷVx! llo l v74vvAwv/пo {*`U zF3v?2l l _opg8h!ܺ}[po|~kۂC~o[oW> `[o$8v{=ޞQ /uwQ]``O?\aL@ #A{W|> Do 08b_Cpdz;a! |Ƕ7576oz=আ̻gkpt`/'760ܴ)h757 ˜6Mhogp0i3 G}>cjkpd6 \O b;[z5 #[a#C!)@?X [y?o4 0֭Mm0!Xk 6栽w>7`w?3;o v_ok3 |l֠=' m 5.6vpd6Ȯ!hwpx48 pww?{GGl]CAXvg;G]+õvAwwXoVͰ] v8wa;p`LۍnU׸am[uc{?a<bԑO[V[GƎ.!?5l#^g{}m/-G;@#-H %~z)|coAfg3*#6Qf=0ۓ6@>xƎ&ø.y#GrԲlۨ2&h&|ͣ-;q!cB?1h;ʹ=y66QiC% !E\}?W?oQ*Nc+ W [L+2W"^ӈ)p pXnu/]{ R3 ҝ7K؂Y[aN Sݮc։{ǁ̌Y=ƎZݲc|UʣftѼY<ۈA/!e{Ǚxbѯ\U'b+~`×!k쀋uVcYN^\ur5v׿xgyEt- FG:j'~4p:b^4 fJÉTqp)O<|)nY"YF;Wޣc'tg@[{PMү| iѐn5|aNmIG EF=C4ưOk%ZPa;GTSߥBYN~V"}'8N>n'#WK{;$u@xadұI S Bx@&<_>'.W;_Rf EP dR?i{O)^v >)t eBTvch6 GtnjYjCHSXtjYvNm,ǝ{9FKGp1Rrܒs"a?m6H) ;EVڳϜbؖ{WZ+-pS'AΘ8jX6:;@I G) r`u˅ hiS(Ԧ>=-{ON>xVǎ ,!$ cӥZ$ENRZ[Aѯ=@Xp-ѝɏnlaۚ1 N4tݑ$+8+Nn)s-F~y#_p} (0s8%1'tboΠOPz );?9Xfn4;{hbL pjq3mi z4KGh_>v=KcA%oivP(B(BPWZ#Y[#ѡ->ycdg< .8n:\< +v>x_ 巐R\$ŝ A%%m0NԮ!CF&4~v0Krab1ݐ)'_cd`c2>q9I<@WN{ Eӂk3YR_FGW򽁁=so H Țp1wj se+z;80W䔌8Fx"߲AbbgPr!x3,94 mW&B[,@W>0XWy ?.utzw'd=6@HkDQ*Y mVr+<_nrz7eZ($^%lZ}xEe.B  '8 sU ;( Ӂs$dZ` Aь=?P6 ¾+x9q'w$x+t)7khAHy/{Ղӊ*ĕEnj,W e6ٴޮ0R`'B p.oe^`Tov-^iª:UYLQ'oŻfkmM-rj2&K ^-G!DFUVm(v/$"]wF/(nFlزE]ŭJ,|=G+Ey䉳w8݀WGNyɉmu4v>yVpiUOYsth^0]&SWfd'%'TpI(_0_HK@D*V^HdR/ ;rŠwL2Y!Rƚ'F*^*1ܙX kVǪ[l2-#(-J ٚOa=h+Cr"%wkEWh7AǵzY[2#Ye'x $ dYՄw20<lE¯,pQ'nw5nVU t9e==J-a-K1T}GlsjHёUP9bQ^_tÚyg[fEbR:YiXISM\uXZƞ<7C?I 8l"feޮ]QarmFPF}iO]ZtZ0y9ڤYȘqkzÀI۝ކ &W\3"jTbiAd:z\F6p݈k! Kۄnc3;L=Rĉmk_ > ޏpk_tbkh8[dvH/¸'J >i\MТNjb}$ "ŋg[l+=LyGLbSԧϐ/\뺘MWzϾBL }xEq5sJ6l4R\hN{z(Uk", DUW϶Gfn6i᳟tq~ڵ(å~pmXWGldmu .1P=f3D@rT+Y=f:M `9Es_113im_6/wul_8*lKU:CЋ4 <7Kr LHzxCA//{eiTJz-o.Qt3!Ar 8FeO`rU:-ipC79-(fj1LIL)tx9[4ӄiC9xvi0an>m0Ϫ>Dzq%9cox3`w*K0ˁx-kI] ڹV$$CC+} [oCJ׻QRWDm]=2XXۧ-?| RӞ,CF%܅uݨD§>l>>>Ͼ>ǖ_Lh }}`jҪ5Ҫ Og.1gm/p,8ϻ,rߞƓZ1ϛjQ~GWC~KdsĆDOM&7飕boX V vx%N+*(" Z jP%ȸn}Qj㕛2AN8 A(@Ռg]M:9%ލh> mf%߾rIE0 l^]mx5 m4v瑉҂O'Ղ~ukgXE՞E/,'NWVrLCM}0uĻЊ- ߐ|ؽ zJz%\/9 utJR/qr@kesqY|F _ I$/DvYjWT >Yg|gSZ|~AEt0^ۡA_;gTio0N4Z.{ww}{Z;O*M@H _wb3aX,5OE3LQԤ-$m86,thq>1hO$htg6%w &'Q;XŸoo}i#goA`Ks'ye|Q¯;I:tx~:" .WuO+NK*k%ߏ9-Z-n $.\8N5lkZ/F>A<$~ąwryQPټ4{~H2?ڨ Ja~-m7TbSM&BL*hU{ W^y t9y0Yl9G֪$k4`.vy.|]G¾R?U`?&d1^Bg-~~\CkF2`q3ѡg?Ut'䗅,g"^}H.pcV$1%GqunF.~b~|`F=Wr>ͅ>ﵗ, ݽS$$iN5l]#õ={#7$IS,3,i1Ax%r%ٯ&=7(v.ǵRfC -Z}(6K.W]!+, g ɭ Е&i%/<.Q !+lK{N<^B}!F B`5D\ ]$<gj kk<):osL/ ÖjrYMωD~0FjU?󀼌O#4:VXOdZ7ߔ_L›CD@w7F-V荘"Gv8OΣe+3Z9@O "54=E|@RـLYo糽Y03Ijݧ7e'N3ot $Hx^;[m_kMKdܭ~&ل u[5D])yu/OJ{!\']x,4c;:}P ;vkuڡ Tn2H5EۘG2AP8&E$t dIb9SO|>P熵_H}~uġ.z!Jf2#INu>')u5FؗVf&Tjܩ ܨRZ"3^r4t\sh\ȷ,Ƨ 1ebO"SZhB (uLrYT=y!aJ28J9UY̙z9RYΔ}G^9wyVz>K-50buk6VROZT]PuXZ)a^,ܰ魵`_y( <~C`MpB S232p( %$:i0TF&΍:.U~U@Aڜq6.(AysT5R٥.!H~vL{bK(aiK]ɵKKP,xீ}5gkA7A<;bl_LerYjCnÝ+_]IH d_LzSzDې#16\aF[5c,şuH/ތQfO$]G `@Uh@k؛HCM=Ь ,ѹκk?ۈ]^ZIqܩ>;p "U,5`Vv/h8Xe702.O]CP^)WR [~q {:&?/i]U`X0qR _l5M/͎U xBf3-"{Q9 љ_CX q; >)SI?|KH1y[ekFQۿX+a+QA&vq~#K۵ *\\Wk1jʖ 8Ȯ<&kegon \6vJV}&jZAk[0]X5Gé{xįʍ{.Tq^U3j4Az=G>uz>FmP)]!$qe@& i4$֓&O^rBXN#DŽ_^Yq ߿VU/si%B1J5_hMnv_^'W˔nRˊ~u[MŭCZ[AC} G;X7>Ә|=q<[ja$6Eha0s؛)_oŔ YJz#=#U\.Ptl-% K ƃ8fm;5پ.ccuӋk^@6%̄^ [2`4lOM?̖/pǙ^Jͤ*[!Ư7_ߕ:OHgSD8-Xԭ&NJp7 v!Ϣa !Bo{TGouZK]<Ϥ5Bjq<J.= IsV?Q0/{YaC[Y@*+H_6uxΥ,僝)dxRrп_CKED! Ӡou21tnh1-@ȗ P-=fr4({A =A ͽ*# ]D9Bir*dob~a}87\a"0|ص}TW&mtSjL6Td,e65=0zZ']M{ii6T}-.ȩTeQ>݈LhYJ nTg"jxwлF-^\:['=6֗fh^kHV.ɓ:/u^G\RcK,w5v=7Βz9z*86*FSDx-fw֛ѓaATv}R^c&rITXfaJA>]^3Snčtym+r,r:W$F!wF7 :^x gr2qW:.Bg D.ߌkQqam8n9C0P$]O->K>+^iaFS7p5 LaW@9Nk߶wa@$MB6`ֲ(Z#$W*|ZFEx/zBʃq1nT))b[O xUʈxNa*LKJ.(AJԶ(A5fz$'>!"$ om)"F"o%]h$MZgZmJgJ/ݕ6o}#>e]g\]w(?pbj?X麵M ? -cQ3^0t>TU#8V_UHȡxGSaeF9 UŻa4esEKߒ&W҈o뉿%Y2s(>qlۀ7~0l~brfxΈ\DjȾ/fq!*m"P8bĊaŁW+aD ";范Rqt28g ™q BiS\*T(u\\\KElD"Mp0{m쵡G6Wu1PQUEW"/W6<}r$J!,h\gr)`CҾS.eS2eGqE7-JA#bd=|,DJոz,Cq[I76/cҋU姕6Fv L+ ;oqI$hس-w5˨s ^c4y^l>/Rauh:HTm꯯T6&p{|+Vi[P1Kܟ^.K*ش\o VjzQ. ȧZ ˧u%VwI&U]r3 &!jʁmAlrb(SMjX'!3d@`c@3M`͆ʵos^0G(~ֵTa -z&4Z \XVDw5l-=j=pm[,>_vV-RaNeKިH#iBGrOsD_-L4p#2v-Tp^]k Mwn Wn5bݑfHKʔ6x`AҐE9qj' 'bd| =o#5qub˓*ӑBLBr:eƼRA8 A2 _HYedD>GA%^J 5<;dCHg+jiwңh$Fޛ9r {av쫔% ];-Y e$pq?/9=q+WtHEG\Z:<ߐo.(! e*K\7 Z'lɕ9T^|(;KؓSgQ+qh(#ׄX>n19rTol0΢:|V7G ̚7"FՉλ*wiQ\xBFC=@==!CVHrSĢ^ 695LWJv^|_dح@o>=?YD?yٜ5:i:}[)N_)86Yy.!Xٰ70!O՘h$lEs}^ȕVCEEpW$˵Ւ,?rW. o^3[{ wshO ~UZ)'B8礜y0K^\7KUf`P>}>59~^g!6EGIl:8k ަ-7%vF7A΂v luJ7/gaW=N,5]9R>Y4[?_Rb^Hۿ!j|w=-۫[ sy1s 2|"_j3CYmx5 z|K+RρH@d}K]iX}@%RټJ@ |CXӅ P6 )@(猗y=&dHuftiҘs#ύ9|<7R2`]. ᾘ݅ ,^y:'Ԃ7 V~3 eg,Ȱs6$A.&G|As>[0_f{'}N'c2K}tGdKF[S˶畫5Q%D tijYn!TQ'6RcޱZ|gĿTGȈ0ic>DϽq8riC>70ūx÷FCOLN$yŽN"y:a-,8m@X'/ATa,<' " 7ww2#2QZ UªVE˪`PQ,5IPc/c& _&H%A;ȸXOWtFTehΓ#<%u" D{%J.<5y5XT1JtǸAkEj(p˜[ݕ͝ E2#UOe,EFjNjHK6z%>r, ?IS)zƃVjOl`<:0)w@(I>aJ5RBS?*^xU:VNP4DiU6s"PA^q U K|id5={(o|JރbX 2P Rq G +\-kPr1C(|΂JUҒ܊1d*j6(LA[⌫ f\x*{#C5FX(ᏢLA}Yj0Ѳb=G{GkMbXFkx`|=Ddu5Im-1}7הOKhm_w7nkҘ u?)м٘ǏN}oZC8G:nЍU?ѠkHH1o`*F/iVI|R-z/B-]pҀS}E琙%^y|I|7ѹٿqR|"QjU #4?0p}<ɍXGǓzܶeZd}t LZ>Mi#ВN7DDFqvtYU{3m)]`7"` zbXLŸ,1 +EW3 $b(jAknUL>G:t̚Y#2 99$+uh^zq BڙPI>W)Mܗ}Gqe (>|֐[ܾK6UcyyJEZ {e[J&ISQͿH$ _{O3!.[ZE/'B HMRjp7%Ր;b0oDfwLJ߇ >.> 6GTY=`3.ðz}e˗U\~oU\*.OU\~fU\j*Ed` #;Sp*{Ug Z|MWqVQ,޵J4U g,g9bE俰T:IL#+FRH@_)I6!H| 1ő?U^d&k'TW\F}Z VBW_jqzݎHc6C&\&^re8G?jv`3G0$B!B'M"> J%ܐ1GSU aAԘ{/ήH"dC»?p;=9km#C#ȮEVcV~ y1GZ9 I>UPT=RfyΘ5[,.[5ao{9xm_W үv#em!)YA9'd ~S4@ඓHeyϺ-:7XUޏ1W /3Mb /. 5b 27euB Fa%(\~QD&\UT@b8[ZN 5 ؠEȻ_`rW<= M׀jbg)!Q-:5ׯaAXI{' '0knk/SoY:G_%~̘b)_uJGfvLew)ZOph;39ޜ:7At +2F֝XxJ)e{'k}oK=aSSaWl?t+a֡.Lm=XՔ|gʵpk\~%C~E3w؅XII KEG [d`x`^ՠϐL];{Ϡ;\ߨ  }>(:E0sSD2! em% 7AI&c>7AFcQ.&@ zMhVu{P,}VwhDdՙ83ihg$Rs^Hl[8*]dj N0ixYzf o/؆zG(ׯzO -U\ichrThtRX-Uyk-| ;q(U4 't_Pw0>P7K}#MKg?3㞼価?F3 >N6CKW)*]~>`uz8BpxL~|kdJ\Rȵe[n$eu&oIt;E8-u eYsrn;82ܐx4*WhS;ȼv#ϢUPox3$Xx13T*^1f9i~[͸X^o{μFhFk\؆ZGEAj^VM{io\J K-'Z|-=o$Qf#ljOJfjhQ67L6O9(ߨ>X='N1}_'q'6o<8Lt#Eq̌kI|{F| mrB`E:"HǴw )==0*frJQ%i?.ֆW\3ЩzzWEg5iZpmvKT=-8頯ex82% K` a%yتhNKF[`?A[jVn/ TOA=+U!kŗ<i |\Qz*y!o:e˃Cnl–ϋE'"`M*>)('DA7*I1, k="XV B{:_#3,j03U%925]]!'%|H@Nvwm1X<]4^izfG8h Mi>= I[+{cxVsB%1ڒ.X|Y2QPda3af*kfK38RN gahYls/g.nH\9:7 ,\Ĝloqjߠnƥz"qt\|6=}#&6ъ5aow5Y:ۈ{!=@OГw Nq/t6 .ld+(ܖO>e8HN֩*jFb6S#90c\HӪ-kAk\5&;A;B|v|wrwExںn9NCIUj^-Cc&V"r`bVѬR+/dj\ZwY Cj\n<>>siѣ[Qʕ{>I>`Q z#]b>{q 5b0`{HƀZgH6Dm9`]:zl|Ω1_#ҍ\ M-*ѸZs1kk1FnrZ4w|'D#G)c[ts"i ,ָFt$߶P)֪vcHWke]{9l_i0Gj_?_x%HPa+FA>ā" T 89^#'q4>IcGrN٥PBx$2>5HJ R'(6x{_ tv1ׯwyI|ss+sCtPy ' yXs|w柤\ Q籙c]~F(QqsӟWg8|N#cB<șcW]0]b59e%邼)\{z\ļ@3"[3|Q6gb)&3tk`(+:7׿E|ҽ+vVo}Oi⛙U4ͯ'֫Ezs%KW@#Vf}ZCSFFP{[<ӗa:sTc5׋n={1VJ!J:<}vŜaƂOjQhb 2DSv4Z#*Te4)y]&ݮU,F5SҸ3>* èVi g0ꭾඊ!iD]_>ħ$Ò8}Ԡ[Js$6Xʂ-'-vrtpS{Qs[Ψ-g;En8xQ ,Wj>+S%ߔ0ܤ\"\mѢUv7CJ3 ?lZM٤?0ƨF1j;4t㡍=JvɹSwۋ3\C' fgnsat@ma| J:~E:< E.O*/g9{$gH6Ggwn<]PJ 5yE7>C:J \1{Лx$\Nrh90C˺Pڶ$ aۢ@Ua 7QVS@ TZ ."G b_A򧓾G_TBKZyd?+P+ѕ;nʽv[ 9%x4'eD+gˈFÑ +׮ C~崢4\82Q. e뎆odD( IKirȹۡE澓.T;fYIԽQT0D^v΁ ~#S!ɼ+`+/U%'.G>}; uQ+S}`{q S]_\~',L+kRa}rS㘩RdU F9-鵰,dL2ɒ곾DCa ֋N]{S҈i9~I/a JbQڮX/v&Bu{ʱYJOwÓXʧLAѶb) q]|#!{  Э\ S6jeh7(ȴ̰*33hw~Ȩ͹N-ds rV68 P1,}y9*#V>'ޛ gG,v-OPsFCX ԛH0?Ɣiѷ ROޛ{X,c@*NN1?RP)v ?h`<*$8NJww.jW?!k%Stg]2%^EK#nO% ۫fw~muA5G;o%lQ_/Umم[]ܘWC$Sr:x(vᬷC17g Iò]tUnX fZܚMl1pPF j n%<0Dƻ y+k+6e%nQq7B)Q\6,Bٶ1vIݤd*{h̀eމ| pKj1zكrK܅b:!<=!> 'fW*k1 #psw(ܸN;;0*/Kβnl:=7R ܃ KD1TNz9jcX:씸Q@NC[w9\R2deʋVm^<{F(֓Z\ )"?"gG-ڄ}56k ̱7+J'޶W$~р_km"lT$MbPIBzD_U:q;vڌΐ"p`ܭ]w5iTρKa$I$6/0d9{~FyUm\y󻼹PBkB[yg䉫 >iʾ|8 =676i;`]>V³L:KK4 68(_}P, DR?zo9GLPFtli%)XX9frY,W>"S$ɤ|C8.!2N*ptBb\a*ͺt!yYKe*oB wkT-h',gkYۧ,k gIPw'T6:;Ӊ^Q*6߶K7'u2K?6_F%ynޖtr`Jw%ۋ7.hFFVeMނDH/p>XK_8CnH2֡U ]6VB)Wˡ(qcvE=uCj-Y3rKK˹?-+N@|,EaƱs-fGBmq+~>`tB#ݽݗV닮-P+y7>?lT[nV}T<4qζNuyE/N7:>$x#YÉeӾS}%],чc%gr;,y< ߙa3#w="N!uý5@g`+OGtasTll"i8>Q2c'J-qNCe'P4:lg@" FRb"Kx i]lwAZB0\My™a*F“Ax_W5,p.$cPxKX<$ge#[ۚ7fZ- UN$'KYgH-ʎCA9KF[XX/yNpFx] `yx<;+[2%u!hƟJi Hg 3h/ GlF&[fsTeljm VZvo@;{!lwL{c<6{b؇؁\PlT4k/}P:Mԝ`b y iOE8³ j"TӒE0^WxG|ZBC!D$u[6s&,o,P,MrpXoLDYJUې xV|F"_G1ċӍ'sx µ-N7x*CTۚsq {x;0=$ܧ4eqB^J8Sk^S^|H#{s[!{{]?F-u<{^PRxj8}؈dJMjxQ\|sCh |MU;*jTΛ ͕A.|:>:}9P߃ڧśa|Qnp"hݠoJkj4MqJX-*Uxqk(8o 꿴6qxzݟ<4V WpcMғ+O3S]D}LkKk:TR-dcLodr-^8"k2/n#xk(Ԫ sw'dz4nQCu]B@9T|'%ytWQW {;(Y?t§:<^d YVTOyxkq'뤮 PnFX'U>^cB42F<FqOtV3R;8?S%>Έ;$U4{[ʄ.*ZUI@)>oc{H^iA$>-F߰ùdDY"sߏ/!&w3T,l^r{[z[c~j1?Nc_!SVDcH٩"/pFHǫjΎ(N~1"ȼ"'(oR8~ZLa y8'P+a>y0grɋCl; ƀק =JZ%9$:J_hSaN kR̐rjc;%rzadž2J&H?rtm6&Du {8,#kcONAV}sEYwx5/ЧV*u8U%E:Ԝ5oAq!ƳT˾8pPj ^S#@HmhTN B Sq _er8KxSEJ1(>Pu jbSbBT).;etZEX@V*e3 ϡ/_FuS5;߭} |Uՙ>Hb'3  "<Pk)fZZKZԱ8imBu:F:V!٣^NKVZm'9笵^搈&' !G\KgEtctu)I kZ4r65cuj(F#ڒيWֽK]9"5rEa뵲k}XfE𡴌kOt Px2(}ꮃֳрsL_gOU~~g+qt=4jCn l~ӟw:0&k?+12|4tUT2h9(|E|if$6o4={^ݞ}=`6i v]m#Y۵j2XPIM[h@ tNΊϾD3H&b8"Tߺ oZX$2WX 稯pڧ }yK%\O;n?piwf±=j$M@._>X՛""7R'߄غi HQn'#\8촷>F?f) ~,JZJkR>RNS]&jI騤{M.2R3)+UJ@)cR>RVQIr <`Rv(TSJf,.K/zw7rWiw#,\|'6:QieE&"o?5槕q_MOx"ՠKHMKk5XiFj#MXBA bo %ƞu[DR-N }5{4Djܮz~HńU1eg_Z=@H7bGNB7fB:.CPyrB)=L.\#wO{{2[4q)hd^o vf]zhNKN>0oG[M啛QZ~wޠ2ۥcV>K Zgy~_ϓ?7I1cf9AK^|i$46':f_t%"B!3S!>_œ'H"7³7NoA|EGPVw: nv0f9XH*}7^}D,̂R%$f-35I{&iHu\kL6[`KVUƞ̾t f/`W״2X чb8F~MΕ:{QvAy}FHpnXu*r/z냳i#J9+-|a=cZ9VN!7YwWR=ܣ4)w܍\Fo& ~Fj?P!D|b aw|p97;Q,`U5=5hk3Fr#<-0#}$lϒQwbO%- b$TS>d4?9]}m+%<-']4bk`&0岶,q f>Ѐ2t˚&g,G*Aqi( GÞWPq#Gnjl;7lٴH}T8`]R!]F }=`%HvA%t` 3q-b~#S̗|eyWZ\p܋V 忍]摏S Twh8WQ~_y\QY?A2|D?^}_&Rϩo_-lr8f:lQwMͥ,}\ǝYQv/U boI%jݯAG_n"Q-Woc=6`Pyוn֐Wۡ9ZCB:DLʆrJS+;M7cXڡ-v֚|5Қ,d0Fk3C\Of}aK*733:=r.@ wx2{b! z/ ;?-ECdNp4߻} Tg/ 5eQyXƮ-޹}~ʱX%ǒm2`9!gNuntQ)m7zRmv0u7JEoef{}q2ʑlM׫z^'C[Pk(uN"4Μu0ϒeP~-\M7ߴivp@v#yCϪڶ~'//y*olnXc:gʓ\3M׫)}%> JؤuZ ^M[7o`XJmZ<%۶PˑvkU3E!.F<}o0!>l0~NOt7$f[&vԳoM*}ג#O\Y -pb_GlF`4ݵ@١Nm8p-֒THCmgSa#kԘB6ѦΞ|䡝"+bKOFH8)}C|7&#kjSpB$tR&HL߸sM8bH'8U[zZ+PKrއ$)ߵM"wBE߃lzs[l™8]Nwa|T1 $9p0*dSh'2m5ɬCcCyw?ڎzk3MM[+9HxkfVLgz*{2JOd{|vaz7LJiiaO$U{ 'ŔC2q:1: B΅8Oۿzkr^<#VW.\4= 8پx~- L?ڶC, 6+ v0P!4%xE >Fgj)YuzV$xVk)} }c=lE`c]r &kmREA"Y b;8wu53 Ejo<$$IKxi| cs8AM )4bʽt9JENh!MB?vrFE 3in况2k + iWn|0,x8Qܰv@l܌;lNÑ,x0mh P,ZD!q#io1]O8þdQ'F\xa/5wЩ2J5ظ"͗Ka}p8"ApIK: ~r'Vݐz7>B׿)|=CEec/<}@4N%&2w K<A\#nqsԎO9v/!=9]cY)GHi8{mH%zYq=tThmBLDzQy~JUh-85i;9;}Ix=i.Dt5NO lgxѾsI_AzZw~~,D͂ ɏWycxw^T=ڪ?c ߲99>ϓiOv"zfe2q9}rF%&zQ(d<)Xq'Ѡ;;j@Acw<18:U/r C[4:. et\N9'^vl+{ ĄK%16{#3YpS1Ȕ +T\ժ"*%=cTk!R e"ao&؍ Spr5 0/7K]e;*uJjzkz9).LO'|=u'k!A2G=8ы"3 OF6w8st&49u` Xj?zt.Ee*wELYthA$ r8>.V$T;h}f5!*Xa+a%Iɷj-9l|ts]`l¨Ux3e5g9y:ܼ/#З} *hAHO?G]ZO]  zո}) HXtz:odxy*O:ZFE]Pa܎D-{,=T2t7S9j=ØeĂ\I8xx8 `nKgܦcMX :ݠw68nt;*<@?3˧}R#EtDE/FFdR-Xѿ6C?VN+s+]`NkkQc mԫ< 2?j-׃ z Yg@msDh2Hp]~MRxa|8 Ϲ.alHDs_ %̑M M 3 G]޾K<gtx f8Msl i': !ZɊ9Wy.ݏw{Dߡ& OY2+`Ú_jҹp37]zJ?cQDyZK {С£#Hί @o{Og?@oZ?(W;Jw!%"Ciw &p@--ccnIPD ~mCHJ=fRͶC."kt5Ȱίǁ-DzűS]!eh|Z2+$&Td'0,RbuɹUJ`b~LHR:}}VCIqåÙRَ)]ϥ{>X\+b24jYVBClFJ>V<8PE3БUkvt .v)R$,Xq5n,V nKHzh-ݐuU5r\H~u3.SRaC8ct$O dCm؇t2t{NT 'zKM5.% x0ȹ; \x6MۗrjIxo\ :B%[6v:Vb=_Kz2(&, φd`Kc]s2$~1X$r.l֍V)ʹp ObG 9}dDwZߴe=9.&42@Ny9=10`-Xgpx)<~!|P 6X,4HJrmJ T Ikpѷ0[7*]JʸIަ1odLa mx07HfC,#֕>v˃#0:$t爬9BF̤FЮ2J#L'0*[ԓyVOP 3G 6PZ*ΎS`^ƕDt|A{)z "U'߶ꣲL-k} W$?'uʡLȍbZi-wf,G 3ߦ >Q2rJ'tf*Ⱥ;"5\V~9bF?e{EN⨵&: ~Ac4{(QDV{&F6 {`?!I> 5Gz^n@ni7 dKPt2m\'?sR~qpǍI swC_qeE_# Ұ<DN^mi"w?6f\HqnIKç /tv>U* t*OȅO`GZS/QwpLvy[_4nԮ5bjRaQ\LKx(F^3  33ʜqrռy <F[\eblBxIɳOu -F4"Y?G^K{[yŪv?&K$#؇؄+6n:E+鉈Gpښ}e:Bۏ:D|;'wtԔy~}P"ǘKfwYaiAeԢ-LYzϋV,ӿ`-Ҧbii]OS;|je$#ժfW3;ΞU~ Q4W.m]N" L3rOwS]l faX09gF|{}d!^Ho:Ixe*<=J X>#oOEzN4o5rj}vhL/W3;\fvx^y? q?[d8.'x$`:qnˎaV>YѺGQk'P 'ҿcE;F﫡-O;}eٰ ;ZЗk؍.O *{L-Vݏn@k<]FYW-ztdUǕwx WvOf,j- J11>דI{XJmEboنFƛW,^J֫ep9oGױs, BRX^2Ӫ 7E:`0&`Hzqҁ0SE:@fgpaՉ3gT|XXQ< Y`pId92ڹj'虷EèEB&m6]ikjrDVtY{X2lHi?/V93Ffۃ&}|+Qy׏UgIC=)ŮQpj>y0b3yTIX8+W 7[oN\=;"tb?й9zUDgNBΥ`5?Q<˹H?r7dAWw)2 \]^ud^Z2Qd@+f{+BUAzZ.jUt)gv :6v TexBXU;4q.!T}D#t頂ctjlе~{VXd0箣wv|nzc;Y{Lwq4<yC#i1vՉS*}⥗oaQnVm`!fFJ-'P; ɝ>%Q.Pb+9}?+Vz+.W<+%.?BsK>P0CWMƼ]/5!yz=4a XJ?%gdjd;v`vOУi;-:aGypE:>] W%5 :Х,w6*G@]8kVuF#)]i \ڥӂ#FL"vͫ4ѧ'mh^>xD"ՋUm_(kƢZYr)bҎ o /~.U |~y՚u,,bEs#ְV?(ҏr[~c~vʹt2e$7 xzBtG@W!F=xriݹ=0'.t&2pݴ?}gyLJܴmۙ_vإ/= ~ѫv!7w=YzDZx7K b.تK]$F9( \/hUKņi .ԙ-e<`|G=#aM)f>Z9D7!/|&1ą7'Zw\=UڣO=(*2P7&;%hdde|2zs_E 9vC?J#ĕё dz)x{dߦN_rUF<ڠm5)wlku؏F4yl0Eu_ pex.轿@m ĵ̚g[w>" !% ~%,:dXAkƮo(f?G2$pURp:fσmiGʪ^/yw'򋷨ī8E/"JWY.0U=7BwS5sm]}Ɵ7l\d}i<#;ErOpSiqФGy5Iɢ/)̯"Wc`R]8 V'D@.fMa9H=okꊰJiC~Ͽ])]+n d{RoaF-W5`ȕ(WTsDX3%3ʠǺ,RA9\ rT(o~?mW:-b0`< i%yvNNglZ<{ G e>o-y>9rFo*տ>BH6}`=b ppbT8/<]f7s}N_ fO]%oBJɈ![I{Aӈ "rT)}F #ďsDx_XBu_Ւjjv7:Om9}Gd7EݞpHՌO}C?E}3y0Bc⣑UgDPW ++zޏڸ ͥ F.ba Q~/?R8ڕV^ 2/O̕2zm^5 _,6ofre7E|u,6D}\/2 {70qy~ȁy4o©2ج1fCOxo3% -n ?TySn\F_S3 Fvjmx'9z]Wׇ4GP2^:{d4{Ķ&+R7KHiŹmX@1q W^L;㜬rpW"m<#~@{F/K]׻=rKARʥxZW1 f/#XuaݭKY6RTG5},/Mݯk28izGwQa_qS'T`+,(˜EJ^K'k 5ecmP@m`q6ΓW'~v)͎Jc<p+/5`}a `z3.%XQ(웽Rx>k}ޟ<]d@7NkPcTւޅHzoةzydٞ&Jݔv1 ۚuk&pYKxr5 0ҭ޹}& ùVy\"`^O ͤ!^Y !KiU{O[me%}o[C}zknfX%brso+a$tf.BdNZ= */xLr[GrJc ]DdXYXh_Iy" ҞK5? j9i_ pLhne?F//iD0XYcߖ :lj$Xh'G;\ cY C+;mIݛ6oohIa`MCo$4WmQO^:ބ@yւ-?WFRZrǺ~X|(FzĒ0$}"#U)?yc?Ft3'V'Ho(߫/$?*}wY2)'e ?B/STƦ 9VHo jCmۃ(0@$5)݋^Xڣni=EWhcXcB͖|$9ɍ`lB YI}ǑE:F<*"f$BDBfgs+ՄEIF_ - `h&-^G<ށ='_̝%A)UZx(b--hNhȞhs3zeQ%H9df$}[>hn.pJpopHtIKVEjwKzhfXШE![4A 8|Co\ Z gFS3fv+& :#$Gb|faf)e8UqYf~ꍛMδ|O:֓f&+n uTD=D 1WfW^/A; )pgl>]q׷Tw+ŋ -3™PElߝ@c!;z[L/Q1p Kb0l$8 s6̰{)޿ ̞[w_꾂vlD{KD"T(oeF8oHAFYr6Q_W6M{t'X)y+{]!9{)@b,"yZI5~i<ڶS|bþ#\#Eg5.z iA5mѥ`.*i krxA"Yk!gL; ֦ZD_ǹXw{{\+4But m>f YجdϿAkQCr =넢Voyn .Kn:]X=t&R)>`N2MH*Ґl+=Hc'.(DfV[w^bf_|eSv<=%Bcͽ0b[=qVyC֖P!St hPQx.YR˯IHN"2qo) Gk˫UK&FD(e48o.1?yZ3 =a=U"2vS0Gqu~n+쪿: Ɖ?UI<7,p3X+d%"^yTYEwVq}Bfrm>#N]~oJF~^wKE##u:S0Y}(|0R0/">8r0`.pd0y R{9L05mb:|dF'Ypbn E2 Xi/2>aiBclQsǜ!Np=Fiu&E?𴷗4b0iqGeZjк`|L`ZX_VrSŽ(01ICK,-(b{35OX;w}t f7c2d1QyA%dÚ{557w)wƶҳ s#tpTn=U \Kܟ^ H1)%SaND&vj} Pƫ|# |ÿ ofԜOfA=`Z]8 y@h!x2<mm}X_>oGq+jx^Qme$Ki$g\c/H| U47ÎѨ4K~df\eD9hgH$j>7pJj*xXOe%}{!9:K1܈Asզ|aÁ)#w~,.Pk00EalI u([p*cT"+SS:Xsf++!'-ySR^sRV Rq/_)!aBYy4cL)?_,wKECR|$BHlWh);F^KB'*k? VéybDUz*sz} "h2g< Ωzm&:$@ V ϕT Au$Auڷn T.As_}F nfjP3@l:O7\t˨_ys#TU%eMv2(t)~= I+ GUB9Jh( {NXc]pU>#XQ}F?p YǕ*K{BlyDn 42%#҂J=$3|!WX}DxYQ g+.`pJKB_{h-gy@XyH`'-YAKa_8{KRW4*^N2z޵;mx8vTȿlQ<7+Ej=獕#=b씿dolvj-/~CT#x(2qs,;' wc1/ KDZb|jYB!F%E߼^rX^`N8 )ُ -I]Z(H膉 <^#xWwqGWPYcvno]^7yJ:y 3!>E i:ͪe zYwXXJzT+!TZ_g`3bGJ#ش{ADqFbeh@ 勓]Ur|PK!Ꙝ( ADATH/DATEIEN/10B___DE.871PK!<W ADATH/DATEIEN/12G1__DE.871PKnj!Yk ADATH/DATEIEN/VIDEOPK!sF~j ADATH/DATEIEN/ADRESSENPK2Bª5  ADATH/DATEIEN/10C_ZEUG.912PKĈB RrB  i ADATH/DATEIEN/07A_ZEUG.921PK?_w|< : ADATH/ANLEITUN.GEN/LIESMICH.ASCPK?@rS? n'ADATH/ANLEITUN.GEN/LIESMICH.GFXPK/UG8~`$ CADATH/ADATH.PRGPKTG} 7  ADATH/ADATH.GFAPK (DT     ( & 4 $"    :  "F z~  .R60 N2 $@2L  4 Bwieder ein. Das Programm kann allein vom Men aus abgebrochen werden, und zwar mit CONTROL+SHIFT+ALTERNATE. B) Funktionen 1) DATEI dimensionieren / DATEI umdimensionieren Es werden die notwendigen Werte verlangt. Der Dateiname wird nur angenommen, wenn er keine unzulssigen Zeichen enthlt, dann aber automatisch auf das FILE-Titel-Format gebracht; die Zahl der mg- lichen Datenstze und Felder wird entsprechend dem gegebenen Speicherplatz wie den Bedingungen des GfA-Basic berechnet und bei berschreitung eine Warnung ausgegeben. (Die relativ niedrige Zahl erklrt sich aus dem hohen Platzbedarf des Kommentarfelds. Wer we- nig Kommentar und viele Datenstze braucht, kann die Begrenzung mit CLR auf Wie sie vielleicht bereits gemerkt haben, enhlt dieser Ordner nur ein einziges Programm mit der Endung "TOS", sowie diesen Text. Das bedeutet, da die komplette urprngliche Ordnerstruktur samt allen Dateien komprimiert wurde, um Diskettenplatz zu sparen. Bitte kopieren Sie dieses TOS-Programm auf Ihre Festplatte oder eine leere Diskette und starten Sie es. Die Dateien werden nun automatisch entpackt und die urprngliche Ordnerstruktur wieder hergestellt. Das Archiv (das TOS- Programm) braucht nun nicht mehr auf der zweiten Diskette aufgehoben zu werden. Lschen Sie aber auf _keinen_ Fall das Original von der Diskette, die Sie vom PD-Service bezogen haben. Sie bentigen dies als Sicherheitskopie, falls einmal die entkomprimierten Daten durch unglckliche Zuflle verloren gehen sollten. Und nun viel Spa mit Ihren neuen Programmen... Ihr ST-Computer-PD-Service eidliches Linefeed beim Scrollen zu vermeiden. 3) DATEI pflegen, StzeHet uitpakken van de disk De .TOS files zijn zelfuitpakkend. Werkwijze: neem een lege dubbelzijdige floppy disk. zet daar een enkele .TOS file op, dubbelklik de file (uitvoeren) en op de disk komen een aantal folders met files te voorschijn. Ga zo te werk voor al de files op deze disk. unden, der den Suchbegriff enthlt.) Eintragungen sind mg- lich in einzelne Felder oder fortlaufend in mehrere (mit der Mg- lichkeit zu bequemem berspringen oder Weiterblttern). Zusatzinformationen werden in den Kommentarteil geschrieben; die Eigenschaften des Insert- bzw. Overwritemodus sind hierbei etwas modifiziert. Bei Ausgabe des Kommentars wird der Mauspfeil zunchst an das Textende gesetzt; dort erscheint zum Schreiben auch der Cursor, falls die Maus nicht bewegt wurde. Mit SHIFT+INSERT bzw. SHIFT+CLR kann man sofort an den Textanfang zu springen; TAB bewirkt den Einschub, SHIFT+DELETE das Lschen einer Zeile; AL- TERNATE+DELETE lscht alles nach dem Cursor. Ist ein ******************************************************************** Deze diskette is samengesteld door de Stichting ST, Postbus 11129, 2301 EC Leiden. Onze bibliotheek van public domain programma's omvat op dit moment (winter 1993) al meer dan achthonderd disks. Daarop vindt u programma's op elk gebied, van tekstverwerker en database tot de leukste spelletjes, de fraaiste tekenprogramma's en de handigste utilities. Ook bevat onze bibliotheek een speciale afdeling voor public domain disks met Macintosh software, die te gebruiken zijn onder de ALADIN emulator. Deze MAC-PD serie bevat tot nu toe ongeveer vijfendertig disks. ******************************************************************** U vindt in het twee maandelijks tijdschrift "ST" (Onafhankelijk tijd- schrift van en voor gebruikers van Atari ST computers) een overzicht en een bespreking van de inhoud van de nieuwe public-domain diskettes. Dit tijdschrift bevat tevens een bestelkaart zodat U vlot over de software kunt beschikken. De november/december uitgave 1993 bevat een compleet overzicht van de Public Domain bibliotheek op dat moment. De Stichting ST geeft ook een speciale PD catalogus disk uit. Deze public domain disk is geproduceerd en gedistribueerd door: ************** Stichting ST afd. Software Bakkersteeg 9A 2311 RH LEIDEN ************** Ondanks onze controle komt het af en toe voor dat een diskje niet goed is gecopieerd.Mocht U dit overkomen, aarzel dan niet en stuur de defecte disk aan ons terug. U krijgt dan direct een vervangende disk toegestuurd. ************************************************************************ Teneinde het voor ons mogelijk te maken om productiefouten op te sporen en vervolgens in de toekomst te vermijden, zijn alle disks, geproduceerd door de Stichting ST, voorzien van een groen productienummer. ************************************************************************ * * Wir wnschen viel Spa mi