NNNNNN@>p NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNO`  @`! #@%`')+-/1 3@5`79;?A C@E`GIKMOQ S@U`WY[]_a c@e`gikmoq s@u`wy{} @` @ ` @ ` O o @ ` ǀ ɠ @ ` ׀ ٠  @` @`!Aa   !Aa!!#A%a')+-/1!3A5a79;?A!CAEaGIKMOQ!SAUaWY[]_a!cAeagikmoq!sAuawy{}!Aa!Aa!Aa!Aa!Aaǁɡ!Aׁ١!AaAa " B b  !/!B!b!!!!!"!""#B"%'")"+"-"/#1"#3B#5b##;#=#?$A"$CB$Eb$G$I$K$MO%Q"%SB%Ub%W%Y%[%]%_&a"&eb&g&ik&m&o'q"'sB'ub''y'{'}'(/( !"#$%'()*+,-./0123456:;<=>?@ABCDEFGHIJKLMOPQRSTUVWXYZ[\]^_`abefghiklmnopqrstuvxyz{|}~O`  @`! #@%`')+-/1 3@5`79;?A C@E`GIKMOQ S@U`WY[]_a c@e`gikmoq s@u`wy{} @` @ ` @ ` O o @ ` ǀ ɠ @ ` ׀ ٠  @` @`!Aa   !Aa!!#A%a')+-/1!3A5a79;?A!CAEaGIKMOQ!SAUaWY[]_a!cAeagikmoq!sAuawy{}!Aa!Aa!Aa!Aa!Aaǁɡ!Aׁ١!AaAa " B b  !/!B!b!!!!!"!""#B"%'")"+"-"/#1"#3B#5b##;#=#?$A"$CB$Eb$G$I$K$MO%Q"%SB%Ub%W%Y%[%]%_&a"&eb&g&ik&m&o'q"'sB'ub''y'{'}'(/( !"#$%'()*+,-./0123456:;<=>?@ABCDEFGHIJKLMOPQRSTUVWXYZ[\]^_`abefghiklmnopqrstuvxyz{|}~ASS_MAC d?GTOOLSCI MULTTOOL myNECPRINT SHOW_ME 5ySPEEDER_U777NOTEPAD ACC 4{j0NOTEPAD TXT 7{w&LEES DIT T`KA350 V`. d?.. d?AES IS d?HPLIESMICHDOK d??VDI IS d?(YPAES S d?=VDI S d?`TOS IS d?F4TOS S d?,fTOS030 IS d?TOS030 S d?8 HS-ASS.ISASS_MAC Version 1.10===================="Assembler: GFA, Version 1.5Versionsdatum: 13.10.1990Macros fr: GEM-AES(C) 1989,90 by3Martin Birn, Knoblochstrae 51, D-7100 Heilbronn7Nhere Informationen enthlt die Datei LIESMICH.DOK.R-------------------------------------------------------------------------------einige Symboleni1) 2)'mn_selecte Message-Nummernwm_redrawm_toppewm_closewm_fullewm_arrowewm_hsliwm_vsliwm_sizewm_movewm_newtowm_untoppeac_ope(ac_clos)ct_updat2ct_mov3ct_newto4/wa_uppagWM_ARROWED-Untermeldungenwa_dnpagwa_uplinwa_dnlinwa_lfpagwa_rtpagwa_lflinwa_rtling_boObjekteg_texg_boxtexg_imagg_userdeg_ibog_buttog_boxchag_string_ftexg_fboxtexg_icog_titl normaselectablFlagsdefaulexieditablrbuttolasto touchexi@hidetreindirecnon1) 2)selecteStatuscrossecheckedisableoutlineshadowe draw3@whitebawhitFarbenblacregreeblucyayellomagentlwhitlblac lre lgree lblu lcya lyellolmagentibFontsmal#te_lefTextausrichtungte_righte_cntlink1)recht1)zentrier1) ip_holloFllmusterip_1patip_2patip_3patip_4patip_5patip_6patip_solihoh1)massi1)$transparen1) Textmodusdecken1)(ohn1) Rahmen (fr OB_SPEC) k_rshifTastencodesk_lshifk_ctrk_almu_keybEreignissemu_buttomu_mmu_mmu_mesamu_time .ed_starOBJC_EDIT-Unterfunktionened_inied_chaed_en/fmd_starFORM_DIAL-Unterfunktionen&fmd_gronicht bei GEM 2.0(fmd_shrinnicht bei GEM 2.0fmd_finis(no_icoIcons bei FORM_ALERTnotwai4sstostop wird als Opcode interpretiertarroMausformentext_crs!hourglasbei GEM 2.0busybepoint_hanflat_hanthin_crosthick_crosoutl_crosuser_dem_ofm_o#namFensterkomponentenclosful"mmovmove geht nicht!infsiz uparro@dnarrovslidlfarrortarrohslid'hotclosebonur bei GEM 2.0,wf_resvWIND_GET-Unterfunktioenwf_workxywwf_currxywwf_prevxywwf_fullxywwf_hslidwf_vslid wf_to wf_firstxyw wf_nextxyw wf_resvd wf_hslsizwf_vslsizwf_scree'wf_wxywneue Bezeichnungenwf_cxywwf_pxywwf_fxyw,wf_namWIND_SET-Unterfunktionenwf_infwf_newdes wf_tattrab GEM 2.0 ef_siztoab GEM 2.03end_updatWIND_UPDATE-Funktionsnummernbeg_updatend_mctrbeg_mctr$wc_bordeWIND_CALC-Modiwc_wor7r_treTypen fr RSRC_GADDR bzw. RSRC_SADDRr_objecr_tedinfr_iconblr_bitblr_strinr_imagedatr_obsper_teptexr_teptmpl r_tepvali r_ibpmas r_ibpdat r_ibptex r_bipdatr_frstr_frimAES-Parameterblockcontrogloba int_iint_ouaddr_iaddr_ouAaespcontroglobaint_iint_ouaddr_iaddr_ou Hilfsmacro AEopcodccc5E opcod c c c @ aestra  Funktionen APPL_INI*AE     % APPL_REAap_riap_rlengtap_rbufA int_iEap_riEap_rlengtEap_rbuf addr_i*AE     ' APPL_WRITap_wiap_wlengtap_wpbufA int_iEap_wiEap_wlengtEap_wpbuf addr_i*AE      APPL_FINap_fpnamEap_fpnam addr_i*AE     ( APPL_TPLAap_tpmeap_tpnuap_tpscalA int_iEap_tpnuEap_tpscalEap_tpme addr_i*AE     " APPL_TRECORap_trmeap_trcounEap_trcoun int_iEap_trme addr_i*AE     2 APPL_BVSEap_bvdisap_bvharerst ab GEM 2.0!A int_iEap_bvdisEap_bvhar*AE     APPL_YIELerst ab GEM 2.0!*AE     APPL_EXI*AE      EVNT_KEYB*AE     * EVNT_BUTTOev_bclickev_bmasev_bstatA int_iEev_bclickEev_bmasEev_bstat*AE     9 EVNT_MOUSev_moflagev_moev_moev_mowidtev_moheighA int_iEev_moflagEev_moEev_moEev_mowidtEev_moheigh*AE      EVNT_MESAev_mgpbufEev_mgpbuf addr_i*AE     $ EVNT_TIMEev_tlocounev_thicoun"ev_thicounnormal bergebenA int_iEev_tlocounEev_thicoun*Langwort bergeben (im INTEL-FORMAT!)Eev_tlocoun int_i*AE     ACHTUNG!IDa der GfA-Assembler maximal 16 bergabeparameter verarbeiten kann undHEVNT_MULTI 17 Parameter hat, mu anstatt der letzten beiden Worte einJLANGWORT bergeben werden (im INTEL-FORMAT!). Dies drfte normalerweiseeh einfacher sein. EVNT_MULTev_mflagev_mbclickev_mbmasev_mbstatev_mm1flagev_mm1ev_mm1ev_mm1widtev_mm1heighev_mm2flagev_mm2ev_mm2ev_mm2widtev_mm2heighev_mmgpbufev_mtcounA int_iEev_mflag"ev_mbclickEev_mbclickev_mbmasEev_mbmas ev_mbstatEev_mbstat"ev_mm1flagEev_mm1flagev_mm1Eev_mm1ev_mm1Eev_mm1"ev_mm1widtEev_mm1widt$ev_mm1heighEev_mm1heigh"ev_mm2flagEev_mm2flagev_mm2Eev_mm2ev_mm2Eev_mm2"ev_mm2widtEev_mm2widt$ev_mm2heighEev_mm2heigh ev_mtcounEev_mtcounEev_mmgpbuf addr_i*AE     EVNT_DCLICev_dneev_dgetseA int_iEev_dneEev_dgetse*AE     6 EVNT_DCLICKev_dneev_dgetsedas gleiche mit der5A int_i alten BezeichnungEev_dneEev_dgetse*AE      MENU_BAme_btreme_bshoEme_bsho int_iEme_btre addr_i*AE     ( MENU_ICHECme_ctreme_citeme_cchecA int_iEme_citeEme_cchecEme_ctre addr_i*AE     * MENU_IENABLme_etreme_eiteme_eenablA int_iEme_eiteEme_eenablEme_etre addr_i*AE     + MENU_TNORMAme_ntreme_ntitlme_nnormaA int_iEme_ntitlEme_nnormaEme_ntre addr_i*AE !    % MENU_TEXme_ttreme_titeme_ttexEme_tite int_iA addr_iEme_ttreEme_ttex*AE "    $ MENU_REGISTEme_rapime_rpstrinEme_rapi int_iEme_rpstrin addr_i*AE #    - MENU_UNREGISTEme_uapierst ab GEM 2.0!Eme_uapi int_i*AE $    ' OBJC_ADob_atreob_aparenob_achilA int_iEob_aparenEob_achilEob_atre addr_i*AE (    # OBJC_DELETob_dltreob_dlobjecEob_dlobjec int_iEob_dltre addr_i*AE )    T OBJC_DRAob_drtreob_drstartoob_drdeptob_drxcliob_drycliob_drwcliob_drhcliA int_iEob_drstartoEob_drdeptEob_drxcliEob_drycliEob_drwcliEob_drhcliEob_drtre addr_i*AE *    5 OBJC_FINob_ftreob_fstartoob_fdeptob_fmob_fmA int_iEob_fstartoEob_fdeptEob_fmEob_fmEob_ftre addr_i*AE +    # OBJC_OFFSEob_oftreob_ofobjecEob_ofobjec int_iEob_oftre addr_i*AE ,    - OBJC_ORDEob_ortreob_orobjecob_ornewpoA int_iEob_orobjecEob_ornewpoEob_ortre addr_i*AE -    ; OBJC_EDIob_edtreob_edobjecob_edchaob_edidob_edkinA int_iEob_edobjecEob_edchaEob_edidEob_edkinEob_edtre addr_i!AE .   d OBJC_CHANG ob_ctreob_cobjecob_cresvob_cxcliob_cycliob_cwcliob_chcliob_cnewstatob_credraA int_iEob_cobjec-  falls res. Wort bergeben wurdeob_cresvEob_cresv"ob_cxcliEob_cxcliob_cycliEob_cycliob_cwcliEob_cwcliob_chcliEob_chcliEob_cnewstatEob_credrafalls nicht" E E E EEEEob_ctre addr_i*AE /    FORM_Dfo_dotrefo_dostartoEfo_dostarto int_iEfo_dotre addr_i*AE 2    ACHTUNG BEI FORM_DIAL!JDie Unterfunktionen 1 und 2 (wachsende/schrumpfende Rechtecke zeichnen)Psind ab GEM 2.0 nicht mehr verfgbar. Statt dessen sollte die XGRF-Bibliothekverwendet werden.f FORM_DIA fo_diflafo_dilittlfo_dilittlfo_dilittlfo_dilittlfo_dibigfo_dibigfo_dibigfo_dibigA int_iEfo_diflaEfo_dilittlEfo_dilittlEfo_dilittlEfo_dilittlEfo_dibigEfo_dibigEfo_dibigEfo_dibig*AE 3    # FORM_ALERfo_adefbttfo_astrinEfo_adefbtt int_iEfo_astrin addr_i*AE 4     FORM_ERROfo_enuEfo_enu int_i*AE 5     FORM_CENTEfo_ctreEfo_ctre addr_i*AE 6    2 FORM_KEYBfo_ktrefo_kobjecfo_kobnexfo_kchaA int_iE fo_kobjecE fo_kchaE fo_kobnexE fo_ktre addr_i*AE 7    + FORM_BUTTOfo_btrefo_bobjecfo_bclickA int_iE fo_bobjecE fo_bclickE fo_btre addr_i*AE 8    5 GRAF_RUBBERBOgr_rgr_rgr_rminwidtgr_rminheighA int_i Egr_r Egr_rEgr_rminwidtEgr_rminheigh*AE F    2 GRAF_RUBBOgr_rgr_rgr_rminwidtgr_rminheigh'A int_iunter einem neuen Namen Egr_r Egr_rEgr_rminwidtEgr_rminheigh*AE F    0 GRAF_RBOgr_rgr_rgr_rminwidtgr_rminheighA int_iebenso Egr_r Egr_rEgr_rminwidtEgr_rminheigh*AE F    _ GRAF_DRAGBOgr_dwidtgr_dheighgr_dstartgr_dstartgr_dboundgr_dboundgr_dboundgr_dboundA int_iEgr_dwidtEgr_dheighEgr_dstartEgr_dstartEgr_dboundEgr_dboundEgr_dboundEgr_dbound*AE G    K GRAF_MOVEBOgr_mwidtgr_mheighgr_msourcegr_msourcegr_mdestgr_mdestA int_iEgr_mwidtEgr_mheighEgr_msourceEgr_msourceEgr_destEgr_dest*AE H    H GRAF_MBOgr_mwidtgr_mheighgr_msourcegr_msourcegr_mdestgr_mdest*A int_idas selbe wie GRAF_MOVEBOXEgr_mwidtEgr_mheighEgr_msourceEgr_msourceEgr_destEgr_dest*AE H    /ACHTUNG BEI GRAF_GROWBOX UND GRAF_SHRINKBOX!PDie Funktionen sind ab GEM 2.0 nicht mehr implementiert und werden ignoriert.^ GRAF_GROWBOgr_gstgr_gstgr_gstwidtgr_gstheighgr_gfingr_gfingr_gfinwidtgr_gfinheighA int_iEgr_gstEgr_gstEgr_gstwidtEgr_gstheighEgr_gfinEgr_gfinEgr_gfinwidtEgr_gfinheigh*AE I    ` GRAF_SHRINKBOgr_sfingr_sfingr_sfinwidtgr_sfinheighgr_sstgr_sstgr_sstwidtgr_sstheighA int_iEgr_sfinEgr_sfinEgr_sfinwidtEgr_sfinheighEgr_sstEgr_sstEgr_sstwidtEgr_sstheigh*AE I    : GRAF_WATCHBOgr_wptregr_wobjecgr_winstatgr_woustatA int_iEgr_wobjecEgr_winstatEgr_woutstatEgr_wptre addr_i*AE K    8 GRAF_SLIDEBOgr_slptregr_slparengr_slobjecgr_slvA int_iEgr_slparenEgr_slobjecEgr_slvEgr_slptre addr_i*AE L     GRAF_HANDL*AE M    # GRAF_MOUSgr_monumbegr_mofaddEgr_monumbe int_i(gr_mofaddEgr_mofadd addr_i*AE N     GRAF_MKSTAT*AE O     SCRP_REAsc_rpscraEsc_rpscra addr_i*AE P     SCRP_WRITsc_wpscraEsc_wpscra addr_i*AE Q    ! FSEL_INPUfs_iinpatfs_iinseA addr_iEfs_iinpatEfs_iinse*AE Z    ACHTUNG!(FSEL_EXINPUT gibt es erst ab TOS 1.4!, FSEL_EXINPUfs_einpatfs_einsefs_elabeA addr_iEfs_einpatEfs_einseEfs_elabe*AE [    EZUR UNABHNGIGKEIT von den TOS-Versionen folgendes Binding nutzen:- FSEL_NEWINPUfs_ninpatfs_ninsefs_nlabe G"$E  in den Supervisor-Modus u   F OS-Header$EVersionsnummer holenEE  in den User-Modus u   % welches TOS? G old_to7FSEL_EXINPUfs_ninpatfs_ninsefs_nlabe nt1old_toFSEL_INPUfs_ninpatfs_ninsent 4 WIND_CREATwi_crkinwi_crwwi_crwwi_crwwi_crwA int_iEwi_crkinEwi_crwEwi_crwEwi_crwEwi_crw*AE d    / WIND_OPEwi_ohandlwi_owwi_owwi_owwi_owA int_iEwi_ohandlEwi_owEwi_owEwi_owEwi_ow*AE e     WIND_CLOSwi_clhandlEwi_clhandl int_i*AE f     WIND_DELETwi_dhandlEwi_dhandl int_i*AE g     WIND_GEwi_ghandlwi_gfielEwi_ghandl int_iEwi_gfiel int_i*AE h    7 WIND_SEwi_shandlwi_sfielwi_swwi_swwi_swwi_swA int_iEwi_shandlEwi_sfielEwi_swEwi_swEwi_swEwi_sw*AE i    - WIND_SETwi_shandlwi_sfielwi_sw1wi_swA int_iEwi_shandlEwi_sfielEwi_sw1 wi_swEwi_sw*AE i     WIND_FINwi_fmwi_fmA int_iEwi_fmEwi_fm*AE j     WIND_UPDATwi_ubegenEwi_ubegen int_i*AE k    9 WIND_CALwi_ctypwi_ckinwi_cinwi_cinwi_cinwi_cinA int_iEwi_ctypEwi_ckinEwi_cinEwi_cinEwi_cinEwi_cin*AE l    ACHTUNG BEI WIND_NEW!*Die Funktion existiert erst ab TOS 1.4! WIND_NE*AE m     RSRC_LOAre_lpfnamEre_lpfnam addr_i*AE n    RSRC_FRE*AE o     RSRC_GADDre_gtypre_gindeA int_iEre_gtypEre_ginde*AE p    ' RSRC_SADDre_stypre_sindere_saddA int_iEre_stypEre_sindeEre_sadd addr_i*AE q    RSRC_OBFIre_otrere_oobjecEre_oobjec int_iEre_otre addr_i*AE r    NBei den folgenden beiden Routinen wurden im Profibuch die Namen verwechselt!vgl. ST-Computer 11/89, S. 186 SHEL_REAsh_rptaish_rpcmA addr_iEsh_rptaiEsh_rpcm*AE x    9 SHEL_WRITsh_wdoesh_wisgsh_wisovesh_wptaish_wpcmA int_iEsh_wdoeEsh_wisg#Esh_wisoveERST AB GEM 2.0A addr_iEsh_wptaiEsh_wpcm*AE y     SHEL_GEsh_gaddsh_gleEsh_gle int_iEsh_gadd addr_i*AE z     SHEL_PUsh_paddsh_pleEsh_ple int_iEsh_padd addr_i*AE {     SHEL_FINsh_fpbufEsh_fpbuf addr_i*AE |    SHEL_ENVRsh_epvalush_eparA addr_iEsh_epvaluEsh_epar*AE }    ACHTUNG!+ALLE weiteren Funktionen ERST AB GEM 2.0 SHEL_RDEsh_rlpcmsh_rlpdiA addr_iEsh_rlpcmEsh_rlpdi*AE ~     SHEL_WDEsh_wlpcmsh_wlpdiA addr_iEsh_wlpcmEsh_wlpdi*AE     = XGRF_STEPCALxg_storgxg_storgxg_stxxg_styxg_stxg_stA int_iExg_storgExg_storgExg_stxExg_styExg_stExg_st*AE     Aufruf der AES-Funktionen <3aestraA controAdresse des Kontrollfelds7Hvier Bytes schreiben (auf Wortadressen) E aespAdresse bergebenE AES-Magicu Aufruf [fertig%~z&~&}%'%*$q%$W6${$g$&$%r&& ( (!(a!)'!E'_ ' & &   <=Dz&'&'"'k'(jr( ( qfi-=uI&(&'& & & %   !S]!3!^  *4*4U))((^''E%XUWyZxx'Fv'(^( 2) )*4*4;8ZxG'A'''''?X`7~'`'`(@*+ +"]+%@*%@(@%@@*@*(@*-`% 1 10-`(@'`* %@ %@1%?"Z @'`'`@ % }**0*  1!1#!/I#-#,2"+W"*! """ *U+WC,2-/ID1 1 D  6CMU( ** "* "*" !""(#M##! 6!  ( * {+ /,h ,D, 6+ASS_MAC 1989,90 by Martin Birn, Knoblochstrae 51, D-7100 Heilbronn =============================================================================== Versionsnummer: 1.10 Datum der letzten nderung: 13.10.1990 Sprache: Assembler (GFA, V 1.5) =============================================================================== 1. Allgemeines -------------- Die im Ordner ASS_MAC.xxx befindlichen Dateien sind PUBLIC DOMAIN und drfen frei kopiert werden, solange diese Datei unverndert (!) mitkopiert wird. Auerdem ist es untersagt, ASS_MAC zu verkaufen oder einem Programm beizu- legen, das nicht Public Domain ist. In solchen Fllen ist eine schriftliche Erlaubnis des Autors notwendig! Bei den Quelltexten handelt es sich um eine Macrosammlung fr den GFA- und andere Assembler, die die Aufrufe des Betriebssystems betrchtlich vereinfacht. Sie sollten am Beginn des TEXT-Segmentes eines Assembler-Quelltextes mit INCLUDE eingefgt werden. Beide Macrosammlungen liegen sowohl in der kompri- mierten Form fr den GFA-Assembler (*.IS) als auch als normaler ASCII-Text (*.S) vor. Die Macros werden unter den gngigen Bezeichnungen aufzurufen. Die Parameter werden in der gleichen Reihenfolge wie in C bergeben (vgl. z.B. [I]). Dabei ist zu beachten, da bei einigen Funktionen Rckgabewerte erwartet werden. In C wird hierzu je eine Rckgabevariable bergeben. Da sich die hier vorhandenen Macros jedoch nicht um die Rckgabe kmmern, sind auch keine Rckgabevariablen anzugeben. Die Rckgabe sollte vom Programm selbst organisiert werden, da ja meist nicht alle Rckgabeparameter bentigt werden. Die Werte knnen aus den GEM-Ausgabefeldern unter den unten angegebenen Namen angesprochen werden. Fr einige Funktionen existieren zwei Macros, da auch in den Dokumentationen oft verschiedene Namen angegeben werden oder weil sich diese gendert haben. Auerdem wurden auch die erst in GEM 2.0 bzw. TOS 1.4 (=GEM 1.3) implementier- ten Funktionen bercksichtigt. Die Macros entsprechen also genau den in [I] an- gegebenen Funktionen. Beachten Sie hierzu bitte die entsprechenden Hinweise im Quelltext. Neben den Macros wurden noch verschiedene Symbole fr den Zugriff auf AES- Funktionen vereinbart. An einigen Stellen muten nderungen zu den in [I] an- gegebenen Namen vorgenommen werden, da z.B. 'move' als Opcode erkannt wird. Auch dies wurde im Quelltext vermerkt. GLEICH ZU BEGINN EIN WICHTIGER HINWEIS! Die vereinbarten Symbole wurden klein geschrieben. Sie sollten das also beim Aufruf ebenfalls tun, da es sonst Fehlermeldungen hagelt. Den GFA-Assembler knnen Sie im Men 6,1 anweisen, alle Symbole klein zu schreiben, dann ist dieses Problem endgltig erledigt. Sollten Sie ihn aber anweisen, alle Symbole GROSS zu schreiben, mssen Sie mit dieser Einstellung die Macros zuerst in das Sourcetext-Format und dann wieder in das Assembler-Format konvertieren, damit diese Anpassungen vorgenommen werden. Analoges gilt fr Macronamen, die ich grundstzlich GROSS schreibe - das dient der bersicht. 2.1. Die AES-Macros ------------------- Der eigentliche Aufruf erfolgt mit dem Macro AES bzw. dem Unterprogramm AESTRAP. Dieser Labbel darf nicht weiter vergeben werden. Das Unterprogramm wird durch den Befehl SECTION 63,TEXT am Codeende abgelegt, da es sonst ja gleich nach dem Programmstart ausgefhrt werden wrde (-->Absturz!). Die Belegung des CONTROL-Feldes erfolgt mit dem MOVEP-Befehl, wie dies in [II] vorgeschlagen wird. Das entsprechende Langwort mit den kombinierten Parametern wird im Macroaufruf mit den SHIFTs berechnet. HINWEIS!! Bei Versionen vor 1.3 des GFA-Assemblers gibt es einen Fehler bei der Tokenisierung des MOVEP-Befehls, der in aestrap verwendet wird. Falls es da zu Fehlern kommen sollte, entweder die betreffende Zeile mit dem Cursor weitrumig umfahren (damit nicht neu tokenisiert wird) oder sich fr nur 10 DM die neue Version bestellen (das lohnt sich auf jeden Fall wegen der Tastaturmacros und den - zumindest teilweise - beseitigten Fehlern). 2.2. Die VDI-Macros ------------------- Hier wird das contrl-Feld auf herkmmliche Weise gefllt, da bei einigen Funk- tionen auch variable Werte eingesetzt werden mssen und man eh noch Handle und ggf. Unterfunktionsnummer eintragen mu. ACHTUNG!!!! - - - - - - Das intin- bzw. intout-Feld wurde fr maximal 256 Werte eingerichtet. Dies kann bei sehr langen Textausgaben zu wenig sein. In diesem Fall mssen Sie die Ver- einbarung in den Zeilen 24 bzw. 26 abndern oder die Macros so umschreiben, da andere Adressen eingesetzt werden. Letztere Mglichkeit hat aber den Nachteil, da das VDI fr jedes Zeichen ein Wort (!) erwartet und die Texte nicht wie ge- wohnt (vom GEMDOS her) byteweise abgelegt werden knnen. 2.3. Die TOS-Macros ------------------- Hier gibt es eigentlich nicht viel zu sagen, auer, da auch alle dokumentier- ten Systemvariablen und die meisten Hardware-Registeradressen als Symbole ver- einbart wurden. 2.4. Die TOS030-Macros ---------------------- Tja, Sie lesen richtig! Auch die neuen Funktionen des im ATARI TT eingebauten TOS030 werden bereits untersttzt! Der Quelltext ist ZUSTZLICH zu TOS.IS bzw. TOS.S einzubinden, da nur die wirklich neuen Funktionen enthalten sind. Be- achten Sie aber bitte, da Programme, die diese Funktionen verwenden, nicht mehr auf einem ST laufen. Bei der Namensgebung habe ich mich an die in [VII], [VIII] und [IX] angegebenen Namen gehalten; es kann aber durchaus sein, da sich hier noch etwas ndert. Auch das Parameterformat ist diesen Quellen ent- nommen worden. Da ich selbst noch keinen TT besitze, konnte ich die Richtig- keit dieser Angaben leider auch nicht berprfen. Sollten Sie also hier einen Fehler finden oder auf neuere Angaben stoen, setzen Sie sich bitte mit mir in Verbindung! 3. Globale Labbels ------------------ Die in den Macros verwendeten Feldnamen drfen ebenso wie die in den Bindings enthaltenen Symbole nicht weiter vergeben werden. Dies gilt grundstzlich fr ALLE entsprechenden Buchstabenfolgen, unabhngig von Gro- und Kleinschreibung! Auch 'aEsPB' ist also reserviert!! Daran sollte man sich auch bei anderen Labels halten - falls sich jemand vom GFA-Assembler die Labels in Gro- oder Kleinschreibung konvertieren lt kommt es sonst nmlich zu Fehlern. Die Felder werden unter folgenden Namen angesprochen: aespb: AES-Parameter-Block control (MIT zwei 'o's): AES-Kontrollfeld addr_in, addr_out: AES-Adreein- bzw. ausgabefeld int_in, int_out (MIT '_'): AES-Integerein- bzw. ausgabefeld pb: VDI-Parameterblock contrl (OHNE das 2. 'o'!): VDI-Kontrollfeld ptsin, ptsout: VDI-Koordinatenein- bzw. ausgabefeld intin, intout (OHNE '_'): VDI-Integerein- bzw. ausgabefeld aestrap, vditrap: Unterprogramme fr den Aufruf der Routinen 4. Andere Assembler ------------------- Falls Sie nicht im Besitz des GFA-Assemblers sind, mssen die Macro-Definitio- nen ggf. angepat werden. Vorsicht ist vor allem mit den lokalen Labbels in den VDI-Textausgabe-Macros geboten. Diese Macros mssen Sie ggf. entsprechend der Angaben in Ihrem Handbuch abndern. Selbverstndlich mu Ihr Assembler in der Lage sein, INCLUDE-Dateien und Macros zu verarbeiten, sonst luft rein gar nichts!! Dann kann man Ihnen nur raten, sich sofort einen vernnftigen Assemb- ler zu besorgen (lohnt sich!). Ansonsten hoffe ich, da endlich auch benutzerfreundliche Programme in Assemb- ler geschrieben werden, zumal sich das wegen der Programmlnge vor allem bei Accessories anbietet. 5. Literaturhinweise -------------------- I. Jankowski/Reschke/Rabich: 'Das ATARI ST Profibuch', 2. Auflage Sybex-Verlag, Dsseldorf. ISBN 3-88745-501-0, 69.-- DM. Enthlt u.a. eine komplette bersicht ber alle Betriebssystem-Routi- nen, auch die des neuen TOS 1.4. Ist auf jeden Fall jedem, der sich ernsthaft mit dem ST beschftigen will, zu empfehlen. II. ST-Computer 7-8/89, Seite 161 ff. Enthlt einen interessanten Artikel ber Assembler-Optimierung, wie sie auch von den hier vorgestellten Macros verwendet wird. III. ST-Computer 11/89, Seite 151 ff. Enthlt einen Artikel ber die Neuheiten des TOS 1.4 im GEMDOS/ (X)BIOS. IV. ST-Computer 12/89, Seite 99 ff. Enthlt einen Artikel ber die nderungen an AES und VDI im TOS 1.4. V. ST-Computer 1/90, Seite 122 ff. / 131 ff. Enthlt einen Artikel ber die TOS-Versionen und ber den Einbau eines gepatchten TOS 1.4. VI. Claus Brod/Anton Stepper: Scheibenkleister II - Massenspeicher am ST Maxon-Computer GmbH, Eschborn (1989). ISBN 3-927065-00-5, 79.-- DM. Ein Buch fr alle, die (z.B. in Assembler) einen Massenspeicher an- sprechen wollen oder aber noch auf der Suche nach einem guten Disk- monitor oder Formatierprogramm sind (incl. Disk). VII. ST-Computer 12/89, Seite 37ff.: "Reise zum Mittelpunkt des TT" VIII. ST-Computer 5/90, Seite 182ff. "Atari TT - Neues von der Butterdose" IX. ST-Computer 10/90, Seite 52ff. und 57ff. "Atari TT, die dritte - Mit 32 MHz an den Start" bzw. "Wie ST-kompatibel ist der TT?" 6. TOS 1.4 ---------- Falls es sich noch nicht herumgesprochen hat: Das neue TOS gibt's fr knapp 200 DM zum Austauschen. Dies lohnt sich schon wegen der Verbesserungen am Desk- top (Dateien verschieben, GEM-Programme automatisch starten) und des schnelle- ren GEMDOS (vor allem fr Harddisk-Besitzer!!!). Achten Sie darauf, da Sie die richtige Version bekommen (2 Chips fr neue oder 6 Chips fr alte STs). Der Einbau ist eigentlich problemlos, doch die 'Anleitung' ist zumindest bei der Ausfhrung mit 6 Chips fehlerhaft (es sind falsche Steckplatznummern an- gegeben). Tatschlich mssen die Chips bei einem alten 1040 ST in die Steck- pltze U2-U7 hinten links unter dem Transformator eingebaut werden (die letzte Zahl der Chip-Nummer ist um 1 hher als die des Steckplatzes!). Ob dies bei Ih- rem ST genauso ist, ist natrlich nicht gesagt (siehe auch [V]). Inzwischen werden die Chips auch von anderen Anbietern verkauft - teilweise schon mit ei- nigen Patches versehen. 7. nderungen seit der ersten Version der Macrosammlung: -------------------------------------------------------- - Der fehlerhafte Name von VSF_PERIMETER wurde verbessert. - Der fehlerhafte Aufruf von FSEL_EXINPUT wurde korrigiert (bei frheren Ver- sionen wurde weiterhin die alte Routine aufgerufen). - Das Macro FSEL_NEWINPUT wurde hinzugefgt. Es werden die Parameter von FSEL_EXINPUT bergeben. Die Titeladresse wird jedoch nur bercksichtigt, wenn eine TOS-Version 1.4 vorliegt. So funktionieren Ihre Programme automatisch auf allen TOS-Versionen. Durch die Versionsabfrage ist das Macro etwas lang geraten. Dies knnte vermieden werden, wenn die Funktion als Unterprogramm gestaltet worden wre, was aber den Nachteil htte, da dieses auch dann im Speicher wre, wenn man die Funktion nicht bentigt. Auerdem mten die Pa- rameter dann ber den Stack bergeben werden. Sie knnen dies ja ggf. abn- dern. Oft wird es aber auch gnstig sein, diese Funktion innerhalb eines Un- terprogrammes nur einmal aufzurufen, da man so gleich noch den aktuellen Pfad und Namen retten kann (fr den Fall, da der Benutzer Abbruch anwhlt und man diese dann restaurieren will). FSEL_NEWINPUT wurde implementiert, wie in [IV] angegeben. - Auerdem wurde das Macro VQ_GDOS aufgenommen [I, Seite 10), mit dem man ber- prfen kann, ob GDOS installiert worden ist. - Fehler bei VRT_CPYFM wurde behoben. - Fehler bei SHEL_FIND wurde behoben. - Bedingte Assemblierung bei EVNT_MULTI und einigen anderen Funktionen. Die Parameter werden nur noch dann bergeben, wenn sie auch angegeben sind. Es knnen also nicht benutzte Parameter einfach weggelassen werden. ACHTUNG: Die Kommata mssen aber trotzdem angegeben werden. - Da der Resource-Analyser und -Reassembler R_A_U_R von PD-Disk 228 der ST- Computer-Serie zum Groteil - aber eben nicht ganz - die selben Vereinba- rungen an den Sourcetextbeginn schreibt (bis auf Gro- und Kleinschreibung, aber darauf kann man sich ja bei GFA-Assembler-Benutzern nicht verlassen), wie sie auch bereits in AES.IS enthalten sind und ich Ihnen nicht zumuten mchte, jedesmal im Resource-Quelltext die doppelten Labels zu entfernen, habe ich die wenigen abweichenden Labels aufgenommen. Sie sind mit dem Kommentar ;1) versehen. Falls Sie also den Assembler angewiesen haben, alle Symbole in Kleinbuchstaben zu konvertieren und den Resource-Quelltext zu- sammen mit einem Programm assemblieren, das AES.IS benutzt (und NUR dann!), sollten Sie die am Anfang des R_A_U_R-Textes stehenden equ's entfernen. Wenn Sie den R_A_U_R-Quelltext in einen Assembler-Quelltext umwandeln, mssen Sie darauf achten, da Sie sich ggf. die Labels anpassen lassen! ABER: Verwenden SIE diese abweichenden Bezeichnungen in IHREN Programmen nur, wenn sie uch noch mit einer ;2) gekennzeichnet sind, da man sich normaler- weise an die dokumentierten Bezeichnungen halten sollte. Nur so versteht auch jemand auer Ihnen, was Sie da zusammenschreiben. 8. Sonstiges ------------ Falls Sie einen Fehler in dieser Macrosammlung finden oder ein Macro nicht funktionieren sollte (der Assembler meldet z.B. Fehler bei der Parameterber- gabe), so melden Sie sich bitte bei mir (meine Adresse folgt ganz unten). Insbesonders gilt das wie bereits erwhnt fr die TOS030-Macros. Sollte Ihnen diese Macrosammlung auerdem viel Arbeit abgenommen und Zeit ge- spart oder davor bewahrt haben, ein im Vergleich zu PD-Software doch relativ teures kommerzielles Produkt mit dem selben Zweck zu erstehen, so knnten Sie mir als kleine Anerkennung einen kleinen (oder auch groen) Betrag auf mein Konto Nr. 004872485 bei der Kreissparkasse Heilbronn, Blz. 620 500 00 berwei- sen oder mir zuschicken. Sofern dieser Betrag so gro ist, da ich davon eine Diskette und die Versandkosten finanzieren kann (10 DM), und ich Ihre An- schrift entziffern kann (!), so werde ich Ihnen eine 3.5"-Diskette mit dem Quellcode eines Uhr-Accessorys (eine resetfeste Uhr auch fr alte STs!, Assemb- ler!) und ggf. die neueste Version der Macrosammlung zuschicken. Auch ein Demo des u.g. Programmes ist darauf enthalten! Viel Spa beim Programmieren wnscht Ihnen Der Autor =============================================================================== HINWEIS - HINWEIS - HINWEIS - HINWEIS - HINWEIS - HINWEIS - HINWEIS - HINWEIS - =============================================================================== Ab sofort ist bei mir ein Programm zur komfortablen Steuerung von Modellbahnen erhltlich. Es verfgt ber eine Gleisplansteuerung, Fahrstraensteuerung, An- fahrverzgerung fr Loks und vieles mehr. Auch das Erstellen von Fahrplnen ist mglich. Die Ansteuerung der Anlage erfolgt interruptgesteuert, um Verzge- rungen zu minimieren. Das Programm luft auf allen STs (...und trotzdem ist es in Assembler geschrieben!!), auch unter TOS 1.4, erfordert aber die hohe Auf- lsung. Nhere Informationen, insbesonders ber anlagenseitige Hardwarevoraussetzungen, knnen bei mir kostenlos angefordert werden. Hier meine Adresse: Martin Birn Knoblochhstrae 51 7100 Heilbronn Wie bereits oben angekndigt, gibt es fr 10 DM eine Demo-Version zusammen mit dem Uhrprogramm und der evt. verbesserten Macrosammlung. Dieser Betrag kann spter auf den Kaufpreis angerechnet werden. (D+ +!+#*(#(M##(#((M(,%h0!1  1K`--`(M`#(#####!> @EA#`#`_| $(((# $ "j `##z!W?AB" " HS-ASS.ISASS_MAC Version 1.10===================="Assembler: GFA, Version 1.5Versionsdatum: 13.10.1990Macros fr: GEM-VDI(C) 1989,90 by3Martin Birn, Knoblochstrae 51, D-7100 Heilbronn7Nhere Informationen enthlt die Datei LIESMICH.DOK.R-------------------------------------------------------------------------------VDI-Parameterblockcontr 2intiggf. abndern (STRINGLNGE!!!)ptsi3intouggf. abndern (STRINGLNGE!!!)ptsou /pcontrintiptsiintouptsouHilfsmacro VDI VDopcodccEopcodEcEc @ vditra Hilfsmacro VQ_GDOS/liefert 0, falls GDOS nicht installiert ist. VQ_GDOE  u % `>  Funktionen V_OPNWwork_iEwork_i pA contr!VD    E inti p  V_CLSWhandlA contrEhandl !VD     V_OPNVWwork_ihandlA contrEhandl Ework_i p!VD d   E inti p  V_CLSVWhandlA contrEhandl !VD e    V_CLRWhandlA contrEhandl !VD     V_UPDWhandlA contrEhandl !VD     VST_LOAD_FONThandlselecEselec intiA contrEhandl !VD w   VST_UNLOAD_FONThandlselecEselec intiA contrEhandl !VD x   " VS_CLIhandlclip_flapxyarraEclip_fla intiEpxyarra pA contrEhandl !VD   E ptsi p  V_PLINhandlcounpxyarraEpxyarra pA contrEhandl !VD coun E ptsi p V_PMARKEhandlcounpxyarraEpxyarra pA contrEhandl !VD coun E ptsi p  V_GTEXhandlstrin A ptsi E EFstrin A intiE "s EBEsA contrEhandl VD   ! V_FILLAREhandlcounpxyarraEpxyarra pA contrEhandl !VD  coun E ptsi p F V_CELLARRAhandlpxyarrarow_lengtel_usenum_rowwrt_modcolarraEcolarra pEpxyarra pA contrEhandl Erow_lengtEel_useEnum_rowEwrt_modEnum_rowKrow_lengtVD n E inti pE ptsi p  V_CONTOURFILhandlindeEinde inti A ptsi E EA contrEhandl !VD g    VR_RECFhandlpxyarraEpxyarra pA contrEhandl !VD r  E ptsi p  V_BAhandlpxyarraEpxyarra pA contrE  Ehandl !VD   E ptsi p # V_ARhandlradiubeganendan A ptsi E E""Eradiu" A intiEbeganEendanA contrE  Ehandl !VD    # V_PIhandlradiubeganendan A ptsi E E""Eradiu" A intiEbeganEendanA contrE  Ehandl !VD     V_CIRCLhandlradiu A ptsi E E"Eradiu"A contrE  Ehandl !VD    # V_ELLIPShandlxradiuyradiu A ptsi E EExradiuEyradiuA contrE  Ehandl !VD    . V_ELLARhandlxradiuyradiubeganendan A ptsi E EExradiuEyradiu A intiEbeganEendanA contrE  Ehandl !VD    . V_ELLPIhandlxradiuyradiubeganendan A ptsi E EExradiuEyradiu A intiEbeganEendanA contrE  Ehandl !VD     V_RBOhandlpxyarraEpxyarra pA contrE  Ehandl !VD   E ptsi p  V_RFBOhandlpxyarraEpxyarra pA contrE   Ehandl !VD   E ptsi p 7 V_JUSTIFIEhandlstrinlengtword_spacchar_spac A ptsi E EElengt"Fstrin A intiEword_spacEchar_spac E "s EBEsA contrE   Ehandl VD    VSWR_MODhandlmodEmod intiA contrEhandl !VD     VS_COLOhandlindergb_i A inti EindeF rgb_iEEA contrEhandl !VD     VSL_TYPhandlstylEstyl intiA contrEhandl !VD     VSL_UDSThandlpatterEpatter intiA contrEhandl !VD q    VSL_WIDThandlwidt A ptsi Ewidt"A contrEhandl !VD     VSL_COLOhandlcolor_indeEcolor_inde intiA contrEhandl !VD    $ VSL_ENDhandlbeg_stylend_styl A intiEbeg_stylEend_stylA contrEhandl !VD l    VSM_TYPhandlsymboEsymbo intiA contrEhandl !VD     VSM_HEIGHhandlheigh A ptsi"EheighA contrEhandl !VD     VSM_COLOhandlcolor_indeEcolor_inde intiA contrEhandl !VD     VST_HEIGHhandlheigh A ptsi"EheighA contrEhandl !VD     VST_POINhandlpoinEpoin intiA contrEhandl !VD k    VST_ROTATIOhandlanglEangl intiA contrEhandl !VD     VST_FONhandlfonEfon intiA contrEhandl !VD     VST_COLOhandlcolor_indeEcolor_inde intiA contrEhandl !VD     VST_EFFECThandleffecEeffec intiA contrEhandl !VD j   $ VST_ALIGNMENhandlhor_ivert_i A intiEhor_iEvert_iA contrEhandl !VD '    VSF_INTERIOhandlstylEstyl intiA contrEhandl !VD     VSF_STYLhandlstyle_indeEstyle_inde intiA contrEhandl !VD     VSF_COLOhandlcolor_indeEcolor_inde intiA contrEhandl !VD     VSF_PERIMETEhandlper_viEper_vi intiA contrEhandl !VD h   " VSF_UPDAhandlpfill_paplaneEpfill_pa pEplane C A contrEhandl VD p  2 VRO_CPYFhandlwr_modpxyarrapsrcmfdpdesmfdEwr_mod intiEpxyarra pA contrEpsrcmfdEpdesmfdEhandl !VD m  E ptsi p = VRT_CPYFhandlwr_modpxyarrapsrcmfdpdesmfdcolor_inde A intiEwr_modFcolor_indeEEpxyarra pA contrEpsrcmfdEpdesmfdEhandl !VD y  E ptsi p " VR_TRNFhandlpsrcmfdpdesmfdA contrEpsrcmfdEpdesmfdEhandl !VD n    V_GET_PIXEhandl A ptsi E EA contrEhandl !VD i    VSIN_MODhandldev_typmod A intiEdev_typ EmodA contrEhandl !VD !    VRQ_LOCATOhandl A ptsi E EA contrEhandl !VD     VSM_LOCATOhandl A ptsi E EA contrEhandl !VD    ! VRQ_VALUATOhandlvaluator_iEvaluator_i intiA contrEhandl !VD     VSM_VALUATOhandlval_iEval_i intiA contrEhandl !VD     VRQ_CHOIChandlch_iEch_i intiA contrEhandl !VD     VSM_CHOIChandlA contrEhandl !VD    . VRQ_STRINhandlmax_lengtecho_modecho_x A intiEmax_lengtEecho_modEecho_x pA contrEhandl %VD echo_mod E ptsi p . VSM_STRINhandlmax_lengtecho_modecho_x A intiEmax_lengtEecho_modEecho_x pA contrEhandl %VD echo_mod E ptsi p  VSC_FORhandlpcur_forEpcur_for pA contrEhandl !VD o  %E inti p  VEX_TIMhandltim_addA contrEtim_adEhandl !VD v    V_SHOW_handlreseErese intiA contrEhandl !VD z    V_HIDE_handlA contrEhandl !VD {    VQ_MOUShandlA contrEhandl !VD |    VEX_BUThandlpusrcodA contrEpusrcodEhandl !VD }    VEX_MOThandlpusrcodA contrEpusrcodEhandl !VD ~    VEX_CURhandlpusrcodA contrEpusrcodEhandl !VD     VQ_KEY_handlA contrEhandl !VD     VQ_EXTNhandlowflaEowfla intiA contrEhandl !VD f   % VQ_COLOhandlcolor_indeset_fla A intiE color_indeEset_flaA contrEhandl !VD     VQL_ATTRIBUTEhandlA contrEhandl !VD f    VQM_ATTRIBUTEhandlA contrEhandl !VD $    VQF_ATTRIBUTEhandlA contrEhandl !VD %    VQT_ATTRIBUTEhandlA contrEhandl !VD &    VQT_EXTENhandlstrinFstrin A intiE "s EBEsA contrEhandl VD t   VQT_WIDThandlelement_nuEelement_nu intiA contrEhandl !VD    0 VQ_CELLARRAhandlpxyarrarow_lengtnum_rowEpxyarra pA contrEhandl Erow_lengtEnum_rowVD  E ptsi p  VQIN_MODhandldev_typEdev_typ intiA contrEhandl !VD s    VQT_FONTINFhandlA contrEhandl !VD    ACHTUNG!!!;Die folgende Funktion ist erst ab GEM 2.0 implementiert!9 VQT_JUSTIFIEhandlstrinlengtword_spacchar_spac A ptsi E EElengt"Fstrin A intiEword_spacEchar_spac E "s EBEsA contrEhandl VD   ESCAPE-FUNKTIONEN VQ_CHCELLhandlA contrE  Ehandl !VD     V_EXIT_CUhandlA contrE  Ehandl !VD     V_ENTER_CUhandlA contrE  Ehandl !VD     V_CURUhandlA contrE  Ehandl !VD     V_CURDOWhandlA contrE  Ehandl !VD     V_CURRIGHhandlA contrE  Ehandl !VD     V_CURLEFhandlA contrE  Ehandl !VD     V_CURHOMhandlA contrE  Ehandl !VD     V_EEOhandlA contrE   Ehandl !VD     V_EEOhandlA contrE   Ehandl !VD     V_CURADDREShandlrocolum A inti EroEcolumA contrE   Ehandl !VD     V_CURTEXhandlstrin A intiFstrinE "s EBEsA contrE   Ehandl VD    V_RVOhandlA contrE   Ehandl !VD     V_RVOFhandlA contrE  Ehandl !VD     VQ_CURADDREShandlA contrE  Ehandl !VD     VQ_TABSTATUhandlA contrE  Ehandl !VD     V_HARDCOPhandlA contrE  Ehandl !VD     V_DSPCUhandl A ptsi E EA contrE  Ehandl !VD     V_RMCUhandlA contrE  Ehandl !VD     V_FORM_ADhandlA contrE  Ehandl !VD     V_OUTPUhandlxyarraExyarra pA contrE  Ehandl !VD   E ptsi p  V_CLEAR_DISP_LIShandlA contrE  Ehandl !VD    F V_BIT_IMAGhandlfilenamaspecx_scaly_scalh_aligv_aligxyarraExyarra p A intiEaspecEx_scalEy_scalEh_aligEv_alig E Ffilenam" sEBEsA contrE  Ehandl VD    VQ_SCAhandlA contrE  Ehandl !VD     V_ALPHA_TEXhandlstrin A intiFstrinE "s EBEsA contrE  Ehandl VD    VS_PALETThandlpalettEpalett intiA contrE < Ehandl !VD    " V_SOUNhandlfrequencduratio A intiEfrequencEduratioA contrE = Ehandl !VD     VS_MUThandlactioEactio intiA contrE > Ehandl !VD     VT_RESOLUTIOhandlxreyre A inti Exre EyreA contrE Q Ehandl !VD     VT_AXIhandlxreyre A inti Exre EyreA contrE R Ehandl !VD    ! VT_ORIGIhandlxorigiyorigi A intiExorigiEyorigiA contrE S Ehandl !VD    + VQ_TDIMENSIONhandlxdimensioydimensi A intiExdimensioEydimensioA contrE T Ehandl !VD     VT_ALIGNMENhandldd A inti Ed EdA contrE U Ehandl !VD    VSP_FILhandlindelightnes A inti EindeElightnesA contrE [ Ehandl !VD     VQP_FILMNAMhandlindeEinde intiA contrE \ Ehandl !VD     VSC_EXPOShandlstatEstat intiA contrE ] Ehandl !VD    , V_META_EXTENThandlmin_min_max_max_ A ptsi Emin_ Emin_ Emax_ Emax_A contrE b Ehandl !VD    6 V_WRITE_METhandlnum_intia_intinum_ptsia_ptsiEa_inti pEa_ptsi pA contrE c Ehandl )VD num_ptsinum_intiE inti pE ptsi p $ VM_PAGESIZhandlpgwidtpgheigh A inti"EpgwidtEpgheighA contrE c Ehandl !VD     VM_COORDhandlllllurur A inti E  Ell Ell Eur EurA contrE c Ehandl !VD     VM_FILENAMhandlfilenam A intiFstrinE "s EBEsA contrE d Ehandl VD    V_OFFSEhandloffseEoffse intiA contrE e Ehandl !VD     V_FONTINIhandlfont_hdEfont_hd intiA contrE f Ehandl !VD     V_ESCAPE200handltimeEtime intiA contrE  Ehandl !VD    Aufruf der VDI-Funktionen <&vditraE pAdresse bergebenE sAES-Magicu Aufruf [fertig) -)*,.{L0(0 0 .{, *)) %= #a ! 6  M (   `:!"#%'_'`['` %!#""!!" `"# %&('M'' 6' %= H`^g8nGY    a~tinBqbH`d  F    [ \NpgU  Q B >  ;  ~d `!d^!"48"n"'"4"Qn"Y#. #. !x !x !a t ~ UB .b `" "H ! !w !> ! [!x !D\ p  ~"4"4"g"U#. #W Q# # # #~ ~"  ) !D)!("'"N'"'F"&"1&.%&V@&V=$F$I$: &4 ^&;ASS_MAC Version 1.10 ;==================== ; ;Assembler: GFA, Version 1.5 ;Versionsdatum: 13.10.1990 ; ;Macros fr: GEM-AES ; ;(C) 1989,90 by ;Martin Birn, Knoblochstrae 51, D-7100 Heilbronn ; ;Nhere Informationen enthlt die Datei LIESMICH.DOK. ;------------------------------------------------------------------------------- ;einige Symbole nil equ -1 ;1) 2) mn_selected equ 10 ;Message-Nummern wm_redraw equ 20 wm_topped equ 21 wm_closed equ 22 wm_fulled equ 23 wm_arrowed equ 24 wm_hslid equ 25 wm_vslid equ 26 wm_sized equ 27 wm_moved equ 28 wm_newtop equ 29 wm_untopped equ 30 ac_open equ 40 ac_close equ 41 ct_update equ 50 ct_move equ 51 ct_newtop equ 52 wa_uppage equ 0 ;WM_ARROWED-Untermeldungen wa_dnpage equ 1 wa_upline equ 2 wa_dnline equ 3 wa_lfpage equ 4 wa_rtpage equ 5 wa_lfline equ 6 wa_rtline equ 7 g_box equ 20 ;Objekte g_text equ 21 g_boxtext equ 22 g_image equ 23 g_userdef equ 24 g_ibox equ 25 g_button equ 26 g_boxchar equ 27 g_string equ 28 g_ftext equ 29 g_fboxtext equ 30 g_icon equ 31 g_title equ 32 normal equ $0 selectable equ $1 ;Flags default equ $2 exit equ $4 editable equ $8 rbutton equ $10 lastob equ $20 touchexit equ $40 hidetree equ $80 indirect equ $100 none equ 0 ;1) 2) selected equ $1 ;Status crossed equ $2 checked equ $4 disabled equ $8 outlined equ $10 shadowed equ $20 draw3d equ $40 whitebak equ $80 white equ 0 ;Farben black equ 1 red equ 2 green equ 3 blue equ 4 cyan equ 5 yellow equ 6 magenta equ 7 lwhite equ 8 lblack equ 9 lred equ 10 lgreen equ 11 lblue equ 12 lcyan equ 13 lyellow equ 14 lmagenta equ 15 ibm equ 3 ;Font small equ 5 te_left equ 0 ;Textausrichtung te_right equ 1 te_cntr equ 2 links equ 0 ;1) rechts equ 1 ;1) zentriert equ 2 ;1) ip_hollow equ 0 ;Fllmuster ip_1patt equ 1 ip_2patt equ 2 ip_3patt equ 3 ip_4patt equ 4 ip_5patt equ 5 ip_6patt equ 6 ip_solid equ 7 hohl equ 0 ;1) massiv equ 7 ;1) transparent equ 0 ;1) Textmodus deckend equ 1 ;1) ohne equ 0 ;1) Rahmen (fr OB_SPEC) k_rshift equ $1 ;Tastencodes k_lshift equ $2 k_ctrl equ $4 k_alt equ $8 mu_keybd equ $1 ;Ereignisse mu_button equ $2 mu_m1 equ $4 mu_m2 equ $8 mu_mesag equ $10 mu_timer equ $20 ed_start equ 0 ;OBJC_EDIT-Unterfunktionen ed_init equ 1 ed_char equ 2 ed_end equ 3 fmd_start equ 0 ;FORM_DIAL-Unterfunktionen fmd_grow equ 1 ;nicht bei GEM 2.0 fmd_shrink equ 2 ;nicht bei GEM 2.0 fmd_finish equ 3 no_icon equ 0 ;Icons bei FORM_ALERT note equ 1 wait equ 2 sstop equ 3 ;stop wird als Opcode interpretiert arrow equ 0 ;Mausformen text_crsr equ 1 hourglass equ 2 ;bei GEM 2.0 busybee equ 2 point_hand equ 3 flat_hand equ 4 thin_cross equ 5 thick_cross equ 6 outl_cross equ 7 user_def equ 255 m_off equ 256 m_on equ 257 name equ $1 ;Fensterkomponenten close equ $2 full equ $4 mmove equ $8 ;move geht nicht! info equ $10 size equ $20 uparrow equ $40 dnarrow equ $80 vslide equ $100 lfarrow equ $200 rtarrow equ $400 hslide equ $800 hotclosebox equ $1000 ;nur bei GEM 2.0 wf_resvd equ 1 ;WIND_GET-Unterfunktioen wf_workxywh equ 4 wf_currxywh equ 5 wf_prevxywh equ 6 wf_fullxywh equ 7 wf_hslide equ 8 wf_vslide equ 9 wf_top equ 10 wf_firstxywh equ 11 wf_nextxywh equ 12 wf_resvd2 equ 13 wf_hslsize equ 15 wf_vslsize equ 16 wf_screen equ 17 wf_wxywh equ 4 ;neue Bezeichnungen wf_cxywh equ 5 wf_pxywh equ 6 wf_fxywh equ 7 wf_name equ 2 ;WIND_SET-Unterfunktionen wf_info equ 3 wf_newdesk equ 14 wf_tattrb equ 18 ;ab GEM 2.0 ef_siztop equ 19 ;ab GEM 2.0 end_update equ 0 ;WIND_UPDATE-Funktionsnummern beg_update equ 1 end_mctrl equ 2 beg_mctrl equ 3 wc_border equ 0 ;WIND_CALC-Modi wc_work equ 1 r_tree equ 0 ;Typen fr RSRC_GADDR bzw. RSRC_SADDR r_object equ 1 r_tedinfo equ 2 r_iconblk equ 3 r_bitblk equ 4 r_string equ 5 r_imagedata equ 6 r_obspec equ 7 r_teptext equ 8 r_teptmplt equ 9 r_tepvalid equ 10 r_ibpmask equ 11 r_ibpdata equ 12 r_ibptext equ 13 r_bipdata equ 14 r_frstr equ 15 r_frimg equ 16 .BSS ; ;AES-Parameterblock ; control: .DS.w 5 global: .DS.w 3 .DS.l 6 int_in: .DS.w 16 int_out: .DS.w 7 addr_in: .DS.l 3 addr_out: .DS.l 1 .DATA aespb: .DC.l control,global,int_in,int_out,addr_in,addr_out .TEXT ; ;Hilfsmacro ; .MACRO AES opcode,c1,c2,c3 move.l #(\opcode<<24)|(\c1<<16)|(\c2<<8)|\c3,d1 jsr aestrap .ENDM ; ;Funktionen ; .MACRO APPL_INIT AES 10,0,1,0 .ENDM .MACRO APPL_READ ap_rid,ap_rlength,ap_rbuff lea.l int_in,a0 move.w \ap_rid,(a0)+ move.w \ap_rlength,(a0) move.l \ap_rbuff,addr_in AES 11,2,1,1 .ENDM .MACRO APPL_WRITE ap_wid,ap_wlength,ap_wpbuff lea.l int_in,a0 move.w \ap_wid,(a0)+ move.w \ap_wlength,(a0) move.l \ap_wpbuff,addr_in AES 12,2,1,1 .ENDM .MACRO APPL_FIND ap_fpname move.l \ap_fpname,addr_in AES 13,0,1,1 .ENDM .MACRO APPL_TPLAY ap_tpmem,ap_tpnum,ap_tpscale lea.l int_in,a0 move.w \ap_tpnum,(a0)+ move.w \ap_tpscale,(a0) move.l \ap_tpmem,addr_in AES 14,2,1,1 .ENDM .MACRO APPL_TRECORD ap_trmem,ap_trcount move.w \ap_trcount,int_in move.l \ap_trmem,addr_in AES 15,1,1,1 .ENDM .MACRO APPL_BVSET ap_bvdisk,ap_bvhard ;erst ab GEM 2.0! lea.l int_in,a0 move.w \ap_bvdisk,(a0)+ move.w \ap_bvhard,(a0) AES 16,2,1,0 .ENDM .MACRO APPL_YIELD ;erst ab GEM 2.0! AES 17,0,1,0 .ENDM .MACRO APPL_EXIT AES 19,0,1,0 .ENDM .MACRO EVNT_KEYBD AES 20,0,1,0 .ENDM .MACRO EVNT_BUTTON ev_bclicks,ev_bmask,ev_bstate lea.l int_in,a0 move.w \ev_bclicks,(a0)+ move.w \ev_bmask,(a0)+ move.w \ev_bstate,(a0) AES 21,3,5,0 .ENDM .MACRO EVNT_MOUSE ev_moflags,ev_mox,ev_moy,ev_mowidth,ev_moheight lea.l int_in,a0 move.w \ev_moflags,(a0)+ move.w \ev_mox,(a0)+ move.w \ev_moy,(a0)+ move.w \ev_mowidth,(a0)+ move.w \ev_moheight,(a0) AES 22,5,5,0 .ENDM .MACRO EVNT_MESAG ev_mgpbuff move.l \ev_mgpbuff,addr_in AES 23,0,1,1 .ENDM .MACRO EVNT_TIMER ev_tlocount,ev_thicount .IF \?ev_thicount ;normal bergeben lea.l int_in,a0 move.w \ev_tlocount,(a0)+ move.w \ev_thicount,(a0) .ELSE ;Langwort bergeben (im INTEL-FORMAT!) move.l \ev_tlocount,int_in .ENDIF AES 24,2,1,0 .ENDM ;ACHTUNG! ;Da der GfA-Assembler maximal 16 bergabeparameter verarbeiten kann und ;EVNT_MULTI 17 Parameter hat, mu anstatt der letzten beiden Worte ein ;LANGWORT bergeben werden (im INTEL-FORMAT!). Dies drfte normalerweise ;eh einfacher sein. .MACRO EVNT_MULTI ev_mflags,ev_mbclicks,ev_mbmask,ev_mbstate,ev_mm1flags,ev_mm1x,ev_mm1y,ev_mm1width,ev_mm1height,ev_mm2flags,ev_mm2x,ev_mm2y,ev_mm2width,ev_mm2height,ev_mmgpbuff,ev_mtcount lea.l int_in,a0 move.w \ev_mflags,(a0)+ .IIF \?ev_mbclicks, move.w \ev_mbclicks,(a0)+ .IIF \?ev_mbmask, move.w \ev_mbmask,(a0)+ .IIF \?ev_mbstate, move.w \ev_mbstate,(a0)+ .IIF \?ev_mm1flags, move.w \ev_mm1flags,(a0)+ .IIF \?ev_mm1x, move.w \ev_mm1x,(a0)+ .IIF \?ev_mm1y, move.w \ev_mm1y,(a0)+ .IIF \?ev_mm1width, move.w \ev_mm1width,(a0)+ .IIF \?ev_mm1height, move.w \ev_mm1height,(a0)+ .IIF \?ev_mm2flags, move.w \ev_mm2flags,(a0)+ .IIF \?ev_mm2x, move.w \ev_mm2x,(a0)+ .IIF \?ev_mm2y, move.w \ev_mm2y,(a0)+ .IIF \?ev_mm2width, move.w \ev_mm2width,(a0)+ .IIF \?ev_mm2height, move.w \ev_mm2height,(a0)+ .IIF \?ev_mtcount, move.l \ev_mtcount,(a0) move.l \ev_mmgpbuff,addr_in AES 25,16,7,1 .ENDM .MACRO EVNT_DCLICK ev_dnew,ev_dgetset lea.l int_in,a0 move.w \ev_dnew,(a0)+ move.w \ev_dgetset,(a0) AES 26,2,1,0 .ENDM .MACRO EVNT_DCLICKS ev_dnew,ev_dgetset ;das gleiche mit der lea.l int_in,a0 ; alten Bezeichnung move.w \ev_dnew,(a0)+ move.w \ev_dgetset,(a0) AES 26,2,1,0 .ENDM .MACRO MENU_BAR me_btree,me_bshow move.w \me_bshow,int_in move.l \me_btree,addr_in AES 30,1,1,1 .ENDM .MACRO MENU_ICHECK me_ctree,me_citem,me_ccheck lea.l int_in,a0 move.w \me_citem,(a0)+ move.w \me_ccheck,(a0) move.l \me_ctree,addr_in AES 31,2,1,1 .ENDM .MACRO MENU_IENABLE me_etree,me_eitem,me_eenable lea.l int_in,a0 move.w \me_eitem,(a0)+ move.w \me_eenable,(a0) move.l \me_etree,addr_in AES 32,2,1,1 .ENDM .MACRO MENU_TNORMAL me_ntree,me_ntitle,me_nnormal lea.l int_in,a0 move.w \me_ntitle,(a0)+ move.w \me_nnormal,(a0) move.l \me_ntree,addr_in AES 33,2,1,1 .ENDM .MACRO MENU_TEXT me_ttree,me_titem,me_ttext move.w \me_titem,int_in lea.l addr_in,a0 move.l \me_ttree,(a0)+ move.l \me_ttext,(a0) AES 34,1,1,2 .ENDM .MACRO MENU_REGISTER me_rapid,me_rpstring move.w \me_rapid,int_in move.l \me_rpstring,addr_in AES 35,1,1,1 .ENDM .MACRO MENU_UNREGISTER me_uapid ;erst ab GEM 2.0! move.w \me_uapid,int_in AES 36,1,1,0 .ENDM .MACRO OBJC_ADD ob_atree,ob_aparent,ob_achild lea.l int_in,a0 move.w \ob_aparent,(a0)+ move.w \ob_achild,(a0) move.l \ob_atree,addr_in AES 40,1,2,1 .ENDM .MACRO OBJC_DELETE ob_dltree,ob_dlobject move.w \ob_dlobject,int_in move.l \ob_dltree,addr_in AES 41,1,1,1 .ENDM .MACRO OBJC_DRAW ob_drtree,ob_drstartob,ob_drdepth,ob_drxclip,ob_dryclip,ob_drwclip,ob_drhclip lea.l int_in,a0 move.w \ob_drstartob,(a0)+ move.w \ob_drdepth,(a0)+ move.w \ob_drxclip,(a0)+ move.w \ob_dryclip,(a0)+ move.w \ob_drwclip,(a0)+ move.w \ob_drhclip,(a0) move.l \ob_drtree,addr_in AES 42,6,1,1 .ENDM .MACRO OBJC_FIND ob_ftree,ob_fstartob,ob_fdepth,ob_fmx,ob_fmy lea.l int_in,a0 move.w \ob_fstartob,(a0)+ move.w \ob_fdepth,(a0)+ move.w \ob_fmx,(a0)+ move.w \ob_fmy,(a0) move.l \ob_ftree,addr_in AES 43,4,1,1 .ENDM .MACRO OBJC_OFFSET ob_oftree,ob_ofobject move.w \ob_ofobject,int_in move.l \ob_oftree,addr_in AES 44,1,3,1 .ENDM .MACRO OBJC_ORDER ob_ortree,ob_orobject,ob_ornewpos lea.l int_in,a0 move.w \ob_orobject,(a0)+ move.w \ob_ornewpos,(a0) move.l \ob_ortree,addr_in AES 45,2,1,1 .ENDM .MACRO OBJC_EDIT ob_edtree,ob_edobject,ob_edchar,ob_edidx,ob_edkind lea.l int_in,a0 move.w \ob_edobject,(a0)+ move.w \ob_edchar,(a0)+ move.w \ob_edidx,(a0)+ move.w \ob_edkind,(a0) move.l \ob_edtree,addr_in AES 46,4,21 .ENDM .MACRO OBJC_CHANGE ob_ctree,ob_cobject,ob_cresvd,ob_cxclip,ob_cyclip,ob_cwclip,ob_chclip,ob_cnewstate,ob_credraw lea.l int_in,a0 move.w \ob_cobject,(a0)+ .IF \#=9 ;falls res. Wort bergeben wurde .IF \?ob_cresvd move.w \ob_cresvd,(a0)+ .ELSE clr.w (a0)+ .ENDIF .IIF \?ob_cxclip, move.w \ob_cxclip,(a0)+ .IIF \?ob_cyclip, move.w \ob_cyclip,(a0)+ .IIF \?ob_cwclip, move.w \ob_cwclip,(a0)+ .IIF \?ob_chclip, move.w \ob_chclip,(a0)+ move.w \ob_cnewstate,(a0)+ move.w \ob_credraw,(a0) .ELSE ;falls nicht clr.w (a0)+ .IIF \?3, move.w \3,(a0)+ .IIF \?4, move.w \4,(a0)+ .IIF \?5, move.w \5,(a0)+ .IIF \?6, move.w \6,(a0)+ move.w \7,(a0)+ move.w \8,(a0)+ .ENDIF move.l \ob_ctree,addr_in AES 47,8,1,1 .ENDM .MACRO FORM_DO fo_dotree,fo_dostartob move.w \fo_dostartob,int_in move.l \fo_dotree,addr_in AES 50,1,1,1 .ENDM ;ACHTUNG BEI FORM_DIAL! ;Die Unterfunktionen 1 und 2 (wachsende/schrumpfende Rechtecke zeichnen) ;sind ab GEM 2.0 nicht mehr verfgbar. Statt dessen sollte die XGRF-Bibliothek ;verwendet werden. .MACRO FORM_DIAL fo_diflag,fo_dilittlx,fo_dilittly,fo_dilittlw,fo_dilittlh,fo_dibigx,fo_dibigy,fo_dibigw,fo_dibigh lea.l int_in,a0 move.w \fo_diflag,(a0)+ move.w \fo_dilittlx,(a0)+ move.w \fo_dilittly,(a0)+ move.w \fo_dilittlw,(a0)+ move.w \fo_dilittlh,(a0)+ move.w \fo_dibigx,(a0)+ move.w \fo_dibigy,(a0)+ move.w \fo_dibigw,(a0)+ move.w \fo_dibigh,(a0) AES 51,9,1,0 .ENDM .MACRO FORM_ALERT fo_adefbttn,fo_astring move.w \fo_adefbttn,int_in move.l \fo_astring,addr_in AES 52,1,1,1 .ENDM .MACRO FORM_ERROR fo_enum move.w \fo_enum,int_in AES 53,1,1,0 .ENDM .MACRO FORM_CENTER fo_ctree move.l \fo_ctree,addr_in AES 54,0,5,1 .ENDM .MACRO FORM_KEYBD fo_ktree,fo_kobject,fo_kobnext,fo_kchar lea.l int_in,a0 move.w fo_kobject,(a0)+ move.w fo_kchar,(a0)+ move.w fo_kobnext,(a0) move.l fo_ktree,addr_in AES 55,3,3,1 .ENDM .MACRO FORM_BUTTON fo_btree,fo_bobject,fo_bclicks lea.l int_in,a0 move.w fo_bobject,(a0)+ move.w fo_bclicks,(a0) move.l fo_btree,addr_in AES 56,2,2,1 .ENDM .MACRO GRAF_RUBBERBOX gr_rx,gr_ry,gr_rminwidth,gr_rminheight lea.l int_in,a0 move.w \gr_rx,(a0)+ move.w \gr_ry,(a0)+ move.w \gr_rminwidth,(a0)+ move.w \gr_rminheight,(a0) AES 70,4,3,0 .ENDM .MACRO GRAF_RUBBOX gr_rx,gr_ry,gr_rminwidth,gr_rminheight lea.l int_in,a0 ;unter einem neuen Namen move.w \gr_rx,(a0)+ move.w \gr_ry,(a0)+ move.w \gr_rminwidth,(a0)+ move.w \gr_rminheight,(a0) AES 70,4,3,0 .ENDM .MACRO GRAF_RBOX gr_rx,gr_ry,gr_rminwidth,gr_rminheight lea.l int_in,a0 ;ebenso move.w \gr_rx,(a0)+ move.w \gr_ry,(a0)+ move.w \gr_rminwidth,(a0)+ move.w \gr_rminheight,(a0) AES 70,4,3,0 .ENDM .MACRO GRAF_DRAGBOX gr_dwidth,gr_dheight,gr_dstartx,gr_dstarty,gr_dboundx,gr_dboundy,gr_dboundw,gr_dboundh lea.l int_in,a0 move.w \gr_dwidth,(a0)+ move.w \gr_dheight,(a0)+ move.w \gr_dstartx,(a0)+ move.w \gr_dstarty,(a0)+ move.w \gr_dboundx,(a0)+ move.w \gr_dboundy,(a0)+ move.w \gr_dboundw,(a0)+ move.w \gr_dboundh,(a0) AES 71,8,3,0 .ENDM .MACRO GRAF_MOVEBOX gr_mwidth,gr_mheight,gr_msourcex,gr_msourcey,gr_mdestx,gr_mdesty lea.l int_in,a0 move.w \gr_mwidth,(a0)+ move.w \gr_mheight,(a0)+ move.w \gr_msourcex,(a0)+ move.w \gr_msourcey,(a0)+ move.w \gr_destx,(a0)+ move.w \gr_desty,(a0) AES 72,6,1,0 .ENDM .MACRO GRAF_MBOX gr_mwidth,gr_mheight,gr_msourcex,gr_msourcey,gr_mdestx,gr_mdesty lea.l int_in,a0 ;das selbe wie GRAF_MOVEBOX move.w \gr_mwidth,(a0)+ move.w \gr_mheight,(a0)+ move.w \gr_msourcex,(a0)+ move.w \gr_msourcey,(a0)+ move.w \gr_destx,(a0)+ move.w \gr_desty,(a0) AES 72,6,1,0 .ENDM ;ACHTUNG BEI GRAF_GROWBOX UND GRAF_SHRINKBOX! ;Die Funktionen sind ab GEM 2.0 nicht mehr implementiert und werden ignoriert. .MACRO GRAF_GROWBOX gr_gstx,gr_gsty,gr_gstwidth,gr_gstheight,gr_gfinx,gr_gfiny,gr_gfinwidth,gr_gfinheight lea.l int_in,a0 move.w \gr_gstx,(a0)+ move.w \gr_gsty,(a0)+ move.w \gr_gstwidth,(a0)+ move.w \gr_gstheight,(a0)+ move.w \gr_gfinx,(a0)+ move.w \gr_gfiny,(a0)+ move.w \gr_gfinwidth,(a0)+ move.w \gr_gfinheight,(a0) AES 73,8,1,0 .ENDM .MACRO GRAF_SHRINKBOX gr_sfinx,gr_sfiny,gr_sfinwidth,gr_sfinheight,gr_sstx,gr_ssty,gr_sstwidth,gr_sstheight lea.l int_in,a0 move.w \gr_sfinx,(a0)+ move.w \gr_sfiny,(a0)+ move.w \gr_sfinwidth,(a0)+ move.w \gr_sfinheight,(a0)+ move.w \gr_sstx,(a0)+ move.w \gr_ssty,(a0)+ move.w \gr_sstwidth,(a0)+ move.w \gr_sstheight,(a0) AES 73,8,1,0 .ENDM .MACRO GRAF_WATCHBOX gr_wptree,gr_wobject,gr_winstate,gr_woustate lea.l int_in,a0 move.w \gr_wobject,(a0)+ move.w \gr_winstate,(a0)+ move.w \gr_woutstate,(a0) move.l \gr_wptree,addr_in AES 75,4,1,1 .ENDM .MACRO GRAF_SLIDEBOX gr_slptree,gr_slparent,gr_slobject,gr_slvh lea.l int_in,a0 move.w \gr_slparent,(a0)+ move.w \gr_slobject,(a0)+ move.w \gr_slvh,(a0) move.l \gr_slptree,addr_in AES 76,3,1,1 .ENDM .MACRO GRAF_HANDLE AES 77,0,5,0 .ENDM .MACRO GRAF_MOUSE gr_monumber,gr_mofaddr move.w \gr_monumber,int_in .IIF \?gr_mofaddr, move.l \gr_mofaddr,addr_in AES 78,1,1,1 .ENDM .MACRO GRAF_MKSTATE AES 79,0,5,0 .ENDM .MACRO SCRP_READ sc_rpscrap move.l \sc_rpscrap,addr_in AES 80,0,1,1 .ENDM .MACRO SCRP_WRITE sc_wpscrap move.l \sc_wpscrap,addr_in AES 81,0,1,1 .ENDM .MACRO FSEL_INPUT fs_iinpath,fs_iinsel lea.l addr_in,a0 move.l \fs_iinpath,(a0)+ move.l \fs_iinsel,(a0) AES 90,0,2,2 .ENDM ;ACHTUNG! ;FSEL_EXINPUT gibt es erst ab TOS 1.4! .MACRO FSEL_EXINPUT fs_einpath,fs_einsel,fs_elabel lea.l addr_in,a0 move.l \fs_einpath,(a0)+ move.l \fs_einsel,(a0)+ move.l \fs_elabel,(a0) AES 91,0,2,3 .ENDM ;ZUR UNABHNGIGKEIT von den TOS-Versionen folgendes Binding nutzen: .MACRO FSEL_NEWINPUT fs_ninpath,fs_ninsel,fs_nlabel movem.l d0-d3/d7/a0-a3,-(sp) clr.l -(sp) move.w #$20,-(sp) ;in den Supervisor-Modus trap #1 addq.l #6,sp movea.l $4f2,a0 ;OS-Header move.w 2(a0),d7 ;Versionsnummer holen move.l d0,-(sp) move.w #$20,-(sp) ;in den User-Modus trap #1 addq.l #6,sp cmpi.w #$104,d7 ;welches TOS? movem.l (sp)+,d0-d3/d7/a0-a3 blt .\~old_tos FSEL_EXINPUT \fs_ninpath,\fs_ninsel,\fs_nlabel bra .\~ntr .\~old_tos: FSEL_INPUT \fs_ninpath,\fs_ninsel .\~ntr: .ENDM .MACRO WIND_CREATE wi_crkind,wi_crwx,wi_crwy,wi_crww,wi_crwh lea.l int_in,a0 move.w \wi_crkind,(a0)+ move.w \wi_crwx,(a0)+ move.w \wi_crwy,(a0)+ move.w \wi_crww,(a0)+ move.w \wi_crwh,(a0) AES 100,5,1,0 .ENDM .MACRO WIND_OPEN wi_ohandle,wi_owx,wi_owy,wi_oww,wi_owh lea.l int_in,a0 move.w \wi_ohandle,(a0)+ move.w \wi_owx,(a0)+ move.w \wi_owy,(a0)+ move.w \wi_oww,(a0)+ move.w \wi_owh,(a0) AES 101,5,1,0 .ENDM .MACRO WIND_CLOSE wi_clhandle move.w \wi_clhandle,int_in AES 102,1,1,0 .ENDM .MACRO WIND_DELETE wi_dhandle move.w \wi_dhandle,int_in AES 103,1,1,0 .ENDM .MACRO WIND_GET wi_ghandle,wi_gfield move.w \wi_ghandle,int_in move.w \wi_gfield,int_in+2 AES 104,2,5,0 .ENDM .MACRO WIND_SET wi_shandle,wi_sfield,wi_sw1,wi_sw2,wi_sw3,wi_sw4 lea.l int_in,a0 move.w \wi_shandle,(a0)+ move.w \wi_sfield,(a0)+ move.w \wi_sw1,(a0)+ move.w \wi_sw2,(a0)+ move.w \wi_sw3,(a0)+ move.w \wi_sw4,(a0) AES 105,6,1,0 .ENDM .MACRO WIND_SETL wi_shandle,wi_sfield,wi_sw12,wi_sw3 lea.l int_in,a0 move.w \wi_shandle,(a0)+ move.w \wi_sfield,(a0)+ move.l \wi_sw12,(a0)+ .IF \?wi_sw3 move.w \wi_sw3,(a0)+ .ENDIF AES 105,6,1,0 .ENDM .MACRO WIND_FIND wi_fmx,wi_fmy lea.l int_in,a0 move.w \wi_fmx,(a0)+ move.w \wi_fmy,(a0) AES 106,2,1,0 .ENDM .MACRO WIND_UPDATE wi_ubegend move.w \wi_ubegend,int_in AES 107,1,1,0 .ENDM .MACRO WIND_CALC wi_ctype,wi_ckind,wi_cinx,wi_ciny,wi_cinb,wi_cinh lea.l int_in,a0 move.w \wi_ctype,(a0)+ move.w \wi_ckind,(a0)+ move.w \wi_cinx,(a0)+ move.w \wi_ciny,(a0)+ move.w \wi_cinb,(a0)+ move.w \wi_cinh,(a0) AES 108,6,5,0 .ENDM ;ACHTUNG BEI WIND_NEW! ;Die Funktion existiert erst ab TOS 1.4! .MACRO WIND_NEW AES 109,0,0,0 .ENDM .MACRO RSRC_LOAD re_lpfname move.l \re_lpfname,addr_in AES 110,0,1,1 .ENDM .MACRO RSRC_FREE AES 111,0,1,0 .ENDM .MACRO RSRC_GADDR re_gtype,re_gindex lea.l int_in,a0 move.w \re_gtype,(a0)+ move.w \re_gindex,(a0) AES 112,2,1,0 .ENDM .MACRO RSRC_SADDR re_stype,re_sindex,re_saddr lea.l int_in,a0 move.w \re_stype,(a0)+ move.w \re_sindex,(a0) move.l \re_saddr,addr_in AES 113,2,1,1 .ENDM .MACRO RSRC_OBFIX re_otree,re_oobject move.w \re_oobject,int_in move.l \re_otree,addr_in AES 114,1,1,1 .ENDM ;Bei den folgenden beiden Routinen wurden im Profibuch die Namen verwechselt ;vgl. ST-Computer 11/89, S. 186 .MACRO SHEL_READ sh_rptail,sh_rpcmd lea.l addr_in,a0 move.l \sh_rptail,(a0)+ move.l \sh_rpcmd,(a0) AES 120,0,1,2 .ENDM .MACRO SHEL_WRITE sh_wdoex,sh_wisgr,sh_wisover,sh_wptail,sh_wpcmd lea.l int_in,a0 move.w \sh_wdoex,(a0)+ move.w \sh_wisgr,(a0)+ move.w \sh_wisover,(a0) ;ERST AB GEM 2.0 lea.l addr_in,a0 move.l \sh_wptail,(a0)+ move.l \sh_wpcmd,(a0) AES 121,3,1,2 .ENDM .MACRO SHEL_GET sh_gaddr,sh_glen move.w \sh_glen,int_in move.l \sh_gaddr,addr_in AES 122,1,1,1 .ENDM .MACRO SHEL_PUT sh_paddr,sh_plen move.w \sh_plen,int_in move.l \sh_paddr,addr_in AES 123,1,1,1 .ENDM .MACRO SHEL_FIND sh_fpbuff move.l \sh_fpbuff,addr_in AES 124,0,1,1 .ENDM .MACRO SHEL_ENVRN sh_epvalue,sh_eparm lea.l addr_in,a0 move.l \sh_epvalue,(a0)+ move.l \sh_eparm,(a0) AES 125,0,1,2 .ENDM ;ACHTUNG! ;ALLE weiteren Funktionen ERST AB GEM 2.0 .MACRO SHEL_RDEF sh_rlpcmd,sh_rlpdir lea.l addr_in,a0 move.l \sh_rlpcmd,(a0)+ move.l \sh_rlpdir,(a0) AES 126,0,1,2 .ENDM .MACRO SHEL_WDEF sh_wlpcmd,sh_wlpdir lea.l addr_in,a0 move.l \sh_wlpcmd,(a0)+ move.l \sh_wlpdir,(a0) AES 127,0,0,2 .ENDM .MACRO XGRF_STEPCALC xg_storgw,xg_storgh,xg_stxc,xg_styc,xg_stw,xg_sth lea.l int_in,a0 move.w \xg_storgw,(a0)+ move.w \xg_storgh,(a0)+ move.w \xg_stxc,(a0)+ move.w \xg_styc,(a0)+ move.w \xg_stw,(a0)+ move.w \xg_sth,(a0) AES 130,6,6,0 .ENDM ; ;Aufruf der AES-Funktionen ; .SECTION 60,TEXT aestrap: lea.l control,a0 ;Adresse des Kontrollfelds movep.l d1,1(a0) ;vier Bytes schreiben (auf Wortadressen) move.l #aespb,d1 ;Adresse bergeben move.w #$c8,d0 ;AES-Magic trap #2 ;Aufruf rts ;fertig .TEXT .END T55{8I3 Z,o WF"TmT5(# #B# $%+#"A f L.?=9!J#'+')(# I3?pe F"$ W$ T# # ! MgDP6`I& x&I %d $ $ # ^# ! ueg n"$ W%8 % &- & ' & x*UQ+ +*>**)|):(@ -'& '$ %1 R%3 T&M'+'('(@Y()*UQ$ # # $ $@ $ %3 T&'}T'')|)z)o( V'& & M' & w& %N $ * (= &( $%%)&](9*,*,-( $+ *    $i i $  00/=-t,&e+K) (W '?!%!%&X%&T%%'?%g(W%+)$+K%,&%-t$"/="0 0;ASS_MAC Version 1.10 ;==================== ; ;Assembler: GFA, Version 1.5 ;Versionsdatum: 13.10.1990 ; ;Macros fr: GEM-VDI ; ;(C) 1989,90 by ;Martin Birn, Knoblochstrae 51, D-7100 Heilbronn ; ;Nhere Informationen enthlt die Datei LIESMICH.DOK. ;------------------------------------------------------------------------------- .BSS ; ;VDI-Parameterblock ; contrl: .DS.w 12 intin: .DS.w 256 ;ggf. abndern (STRINGLNGE!!!) ptsin: .DS.w 8 intout: .DS.w 256 ;ggf. abndern (STRINGLNGE!!!) ptsout: .DS.w 12 .DATA pb: .DC.l contrl,intin,ptsin,intout,ptsout .TEXT ; ;Hilfsmacro VDI ; .MACRO VDI opcode,c1,c3 move.w \opcode,(a0) move.w \c1,2(a0) move.w \c3,6(a0) jsr vditrap .ENDM ; ;Hilfsmacro VQ_GDOS ; ;liefert 0, falls GDOS nicht installiert ist. .MACRO VQ_GDOS move.w #-2,d0 trap #2 cmpi.w #-2,d0 sne d0 ext.w d0 .ENDM ; ;Funktionen ; .MACRO V_OPNWK work_in move.l \work_in,pb+4 lea.l contrl,a0 VDI #1,#6,#11 move.l #intin,pb+4 .ENDM .MACRO V_CLSWK handle lea.l contrl,a0 move.w \handle,12(a0) VDI #2,#0,#0 .ENDM .MACRO V_OPNVWK work_in,handle lea.l contrl,a0 move.w \handle,12(a0) move.l \work_in,pb+4 VDI #100,#6,#11 move.l #intin,pb+4 .ENDM .MACRO V_CLSVWK handle lea.l contrl,a0 move.w \handle,12(a0) VDI #101,#0,#0 .ENDM .MACRO V_CLRWK handle lea.l contrl,a0 move.w \handle,12(a0) VDI #3,#0,#0 .ENDM .MACRO V_UPDWK handle lea.l contrl,a0 move.w \handle,12(a0) VDI #4,#0,#0 .ENDM .MACRO VST_LOAD_FONTS handle,select move.w \select,intin lea.l contrl,a0 move.w \handle,12(a0) VDI #119,#0,#1 .ENDM .MACRO VST_UNLOAD_FONTS handle,select move.w \select,intin lea.l contrl,a0 move.w \handle,12(a0) VDI #120,#0,#1 .ENDM .MACRO VS_CLIP handle,clip_flag,pxyarray move.w \clip_flag,intin move.l \pxyarray,pb+8 lea.l contrl,a0 move.w \handle,12(a0) VDI #129,#2,#1 move.l #ptsin,pb+8 .ENDM .MACRO V_PLINE handle,count,pxyarray move.l \pxyarray,pb+8 lea.l contrl,a0 move.w \handle,12(a0) VDI #6,\count,#0 move.l #ptsin,pb+8 .ENDM .MACRO V_PMARKER handle,count,pxyarray move.l \pxyarray,pb+8 lea.l contrl,a0 move.w \handle,12(a0) VDI #7,\count,#0 move.l #ptsin,pb+8 .ENDM .MACRO V_GTEXT handle,x,y,string lea.l ptsin,a0 move.w \x,(a0)+ move.w \y,(a0) movea.l \string,a0 lea.l intin,a1 move.w #-1,d0 clr.w d1 .\~sl: addq.w #1,d0 move.b (a0)+,d1 move.w d1,(a1)+ bne .\~sl lea.l contrl,a0 move.w \handle,12(a0) VDI #8,#1,d0 .ENDM .MACRO V_FILLAREA handle,count,pxyarray move.l \pxyarray,pb+8 lea.l contrl,a0 move.w \handle,12(a0) VDI #9,\count,#0 move.l #ptsin,pb+8 .ENDM .MACRO V_CELLARRAY handle,pxyarray,row_length,el_used,num_rows,wrt_mode,colarray move.l \colarray,pb+4 move.l \pxyarray,pb+8 lea.l contrl,a0 move.w \handle,12(a0) move.w \row_length,14(a0) move.w \el_used,16(a0) move.w \num_rows,18(a0) move.w \wrt_mode,20(a0) move.w \num_rows,d0 mulu.w \row_length,d0 VDI #110,#2,d0 move.l #intin,pb+4 move.l #ptsin,pb+8 .ENDM .MACRO V_CONTOURFILL handle,x,y,index move.w \index,intin lea.l ptsin,a0 move.w \x,(a0)+ move.w \y,(a0) lea.l contrl,a0 move.w \handle,12(a0) VDI #103,#1,#1 .ENDM .MACRO VR_RECFL handle,pxyarray move.l \pxyarray,pb+8 lea.l contrl,a0 move.w \handle,12(a0) VDI #114,#2,#0 move.l #ptsin,pb+8 .ENDM .MACRO V_BAR handle,pxyarray move.l \pxyarray,pb+8 lea.l contrl,a0 move.w #1,10(a0) move.w \handle,12(a0) VDI #11,#2,#0 move.l #ptsin,pb+8 .ENDM .MACRO V_ARC handle,x,y,radius,begang,endang lea.l ptsin,a0 move.w \x,(a0)+ move.w \y,(a0)+ clr.l (a0)+ clr.l (a0)+ move.w \radius,(a0)+ clr.w (a0) lea.l intin,a0 move.w \begang,(a0)+ move.w \endang,(a0) lea.l contrl,a0 move.w #2,10(a0) move.w \handle,12(a0) VDI #11,#4,#2 .ENDM .MACRO V_PIE handle,x,y,radius,begang,endang lea.l ptsin,a0 move.w \x,(a0)+ move.w \y,(a0)+ clr.l (a0)+ clr.l (a0)+ move.w \radius,(a0)+ clr.w (a0) lea.l intin,a0 move.w \begang,(a0)+ move.w \endang,(a0) lea.l contrl,a0 move.w #3,10(a0) move.w \handle,12(a0) VDI #11,#4,#2 .ENDM .MACRO V_CIRCLE handle,x,y,radius lea.l ptsin,a0 move.w \x,(a0)+ move.w \y,(a0)+ clr.l (a0)+ move.w \radius,(a0)+ clr.w (a0) lea.l contrl,a0 move.w #4,10(a0) move.w \handle,12(a0) VDI #11,#3,#0 .ENDM .MACRO V_ELLIPSE handle,x,y,xradius,yradius lea.l ptsin,a0 move.w \x,(a0)+ move.w \y,(a0)+ move.w \xradius,(a0)+ move.w \yradius,(a0) lea.l contrl,a0 move.w #5,10(a0) move.w \handle,12(a0) VDI 11,2,0 .ENDM .MACRO V_ELLARC handle,x,y,xradius,yradius,begang,endang lea.l ptsin,a0 move.w \x,(a0)+ move.w \y,(a0)+ move.w \xradius,(a0)+ move.w \yradius,(a0) lea.l intin,a0 move.w \begang,(a0)+ move.w \endang,(a0) lea.l contrl,a0 move.w #6,10(a0) move.w \handle,12(a0) VDI #11,#2,#2 .ENDM .MACRO V_ELLPIE handle,x,y,xradius,yradius,begang,endang lea.l ptsin,a0 move.w \x,(a0)+ move.w \y,(a0)+ move.w \xradius,(a0)+ move.w \yradius,(a0) lea.l intin,a0 move.w \begang,(a0)+ move.w \endang,(a0) lea.l contrl,a0 move.w #7,10(a0) move.w \handle,12(a0) VDI #11,#2,#2 .ENDM .MACRO V_RBOX handle,pxyarray move.l \pxyarray,pb+8 lea.l contrl,a0 move.w #8,10(a0) move.w \handle,12(a0) VDI #11,#2,#0 move.l #ptsin,pb+8 .ENDM .MACRO V_RFBOX handle,pxyarray move.l \pxyarray,pb+8 lea.l contrl,a0 move.w #9,10(a0) move.w \handle,12(a0) VDI #11,#2,#0 move.l #ptsin,pb+8 .ENDM .MACRO V_JUSTIFIED handle,x,y,string,length,word_space,char_space lea.l ptsin,a0 move.w \x,(a0)+ move.w \y,(a0)+ move.w \length,(a0)+ clr.w (a0) movea.l \string,a0 lea.l intin,a1 move.w \word_space,(a0)+ move.w \char_space,(a0)+ move.w #1,d0 clr.w d1 .\~sl: addq.w #1,d0 move.b (a0)+,d1 move.w d1,(a1)+ bne .\~sl lea.l contrl,a0 move.w #10,10(a0) move.w \handle,12(a0) VDI #11,#2,d0 .ENDM .MACRO VSWR_MODE handle,mode move.w \mode,intin lea.l contrl,a0 move.w \handle,12(a0) VDI #32,#0,#1 .ENDM .MACRO VS_COLOR handle,index,rgb_in lea.l intin,a0 move.w \index,(a0)+ movea.w rgb_in,a1 move.l (a1)+,(a0)+ move.w (a1)+,(a0) lea.l contrl,a0 move.w \handle,12(a0) VDI #14,#0,#4 .ENDM .MACRO VSL_TYPE handle,style move.w \style,intin lea.l contrl,a0 move.w \handle,12(a0) VDI #15,#0,#1 .ENDM .MACRO VSL_UDSTY handle,pattern move.w \pattern,intin lea.l contrl,a0 move.w \handle,12(a0) VDI #113,#0,#1 .ENDM .MACRO VSL_WIDTH handle,width lea.l ptsin,a0 move.w \width,(a0)+ clr.w (a0) lea.l contrl,a0 move.w \handle,12(a0) VDI #16,#1,#0 .ENDM .MACRO VSL_COLOR handle,color_index move.w \color_index,intin lea.l contrl,a0 move.w \handle,12(a0) VDI #17,#0,#1 .ENDM .MACRO VSL_ENDS handle,beg_style,end_style lea.l intin,a0 move.w \beg_style,(a0)+ move.w \end_style,(a0) lea.l contrl,a0 move.w \handle,12(a0) VDI #108,#0,#2 .ENDM .MACRO VSM_TYPE handle,symbol move.w \symbol,intin lea.l contrl,a0 move.w \handle,12(a0) VDI #18,#0,#1 .ENDM .MACRO VSM_HEIGHT handle,height lea.l ptsin,a0 clr.w (a0)+ move.w \height,(a0) lea.l contrl,a0 move.w \handle,12(a0) VDI #19,#1,#0 .ENDM .MACRO VSM_COLOR handle,color_index move.w \color_index,intin lea.l contrl,a0 move.w \handle,12(a0) VDI #20,#0,#1 .ENDM .MACRO VST_HEIGHT handle,height lea.l ptsin,a0 clr.w (a0)+ move.w \height,(a0) lea.l contrl,a0 move.w \handle,12(a0) VDI #12,#1,#0 .ENDM .MACRO VST_POINT handle,point move.w \point,intin lea.l contrl,a0 move.w \handle,12(a0) VDI #107,#0,#1 .ENDM .MACRO VST_ROTATION handle,angle move.w \angle,intin lea.l contrl,a0 move.w \handle,12(a0) VDI #13,#0,#1 .ENDM .MACRO VST_FONT handle,font move.w \font,intin lea.l contrl,a0 move.w \handle,12(a0) VDI #21,#0,#1 .ENDM .MACRO VST_COLOR handle,color_index move.w \color_index,intin lea.l contrl,a0 move.w \handle,12(a0) VDI #22,#0,#1 .ENDM .MACRO VST_EFFECTS handle,effect move.w \effect,intin lea.l contrl,a0 move.w \handle,12(a0) VDI #106,#0,#1 .ENDM .MACRO VST_ALIGNMENT handle,hor_in,vert_in lea.l intin,a0 move.w \hor_in,(a0)+ move.w \vert_in,(a0) lea.l contrl,a0 move.w \handle,12(a0) VDI #39,#0,#2 .ENDM .MACRO VSF_INTERIOR handle,style move.w \style,intin lea.l contrl,a0 move.w \handle,12(a0) VDI #23,#0,#1 .ENDM .MACRO VSF_STYLE handle,style_index move.w \style_index,intin lea.l contrl,a0 move.w \handle,12(a0) VDI #24,#0,#1 .ENDM .MACRO VSF_COLOR handle,color_index move.w \color_index,intin lea.l contrl,a0 move.w \handle,12(a0) VDI #25,#0,#1 .ENDM .MACRO VSF_PERIMETER handle,per_vis move.w \per_vis,intin lea.l contrl,a0 move.w \handle,12(a0) VDI #104,#0,#1 .ENDM .MACRO VSF_UPDAT handle,pfill_pat,planes move.l \pfill_pat,pb+4 move.w \planes,d0 lsl.w #4,d0 lea.l contrl,a0 move.w \handle,12(a0) VDI #112,#0,d0 .ENDM .MACRO VRO_CPYFM handle,wr_mode,pxyarray,psrcmfdb,pdesmfdb move.w \wr_mode,intin move.l \pxyarray,pb+8 lea.l contrl,a0 move.l \psrcmfdb,14(a0) move.l \pdesmfdb,18(a0) move.w \handle,12(a0) VDI #109,#4,#1 move.l #ptsin,pb+8 .ENDM .MACRO VRT_CPYFM handle,wr_mode,pxyarray,psrcmfdb,pdesmfdb,color_index lea.l intin,a0 move.w \wr_mode,(a0)+ movea.l \color_index,a1 move.l (a1),(a0) move.l \pxyarray,pb+8 lea.l contrl,a0 move.l \psrcmfdb,14(a0) move.l \pdesmfdb,18(a0) move.w \handle,12(a0) VDI #121,#4,#3 move.l #ptsin,pb+8 .ENDM .MACRO VR_TRNFM handle,psrcmfdb,pdesmfdb lea.l contrl,a0 move.l \psrcmfdb,14(a0) move.l \pdesmfdb,18(a0) move.w \handle,12(a0) VDI #110,#0,#0 .ENDM .MACRO V_GET_PIXEL handle,x,y lea.l ptsin,a0 move.w \x,(a0)+ move.w \y,(a0) lea.l contrl,a0 move.w \handle,12(a0) VDI #105,#1,#0 .ENDM .MACRO VSIN_MODE handle,dev_type,mode lea.l intin,a0 move.w \dev_type,(a0)+ move.w \mode,(a0) lea.l contrl,a0 move.w \handle,12(a0) VDI #33,#0,#2 .ENDM .MACRO VRQ_LOCATOR handle,x,y lea.l ptsin,a0 move.w \x,(a0)+ move.w \y,(a0) lea.l contrl,a0 move.w \handle,12(a0) VDI #28,#1,#0 .ENDM .MACRO VSM_LOCATOR handle,x,y lea.l ptsin,a0 move.w \x,(a0)+ move.w \y,(a0) lea.l contrl,a0 move.w \handle,12(a0) VDI #28,#1,#0 .ENDM .MACRO VRQ_VALUATOR handle,valuator_in move.w \valuator_in,intin lea.l contrl,a0 move.w \handle,12(a0) VDI #29,#0,#1 .ENDM .MACRO VSM_VALUATOR handle,val_in move.w \val_in,intin lea.l contrl,a0 move.w \handle,12(a0) VDI #29,#0,#1 .ENDM .MACRO VRQ_CHOICE handle,ch_in move.w \ch_in,intin lea.l contrl,a0 move.w \handle,12(a0) VDI #30,#0,#1 .ENDM .MACRO VSM_CHOICE handle lea.l contrl,a0 move.w \handle,12(a0) VDI #30,#0,#0 .ENDM .MACRO VRQ_STRING handle,max_length,echo_mode,echo_xy lea.l intin,a0 move.w \max_length,(a0)+ move.w \echo_mode,(a0) move.l \echo_xy,pb+8 lea.l contrl,a0 move.w \handle,12(a0) VDI #31,\echo_mode,#2 move.l #ptsin,pb+8 .ENDM .MACRO VSM_STRING handle,max_length,echo_mode,echo_xy lea.l intin,a0 move.w \max_length,(a0)+ move.w \echo_mode,(a0) move.l \echo_xy,pb+8 lea.l contrl,a0 move.w \handle,12(a0) VDI #31,\echo_mode,#2 move.l #ptsin,pb+8 .ENDM .MACRO VSC_FORM handle,pcur_form move.l \pcur_form,pb+4 lea.l contrl,a0 move.w \handle,12(a0) VDI #111,#0,#37 move.l #intin,pb+4 .ENDM .MACRO VEX_TIMV handle,tim_addr lea.l contrl,a0 move.l \tim_adr,14(a0) move.w \handle,12(a0) VDI #118,#0,#0 .ENDM .MACRO V_SHOW_C handle,reset move.w \reset,intin lea.l contrl,a0 move.w \handle,12(a0) VDI #122,#0,#1 .ENDM .MACRO V_HIDE_C handle lea.l contrl,a0 move.w \handle,12(a0) VDI #123,#0,#0 .ENDM .MACRO VQ_MOUSE handle lea.l contrl,a0 move.w \handle,12(a0) VDI #124,#0,#0 .ENDM .MACRO VEX_BUTV handle,pusrcode lea.l contrl,a0 move.l \pusrcode,14(a0) move.w \handle,12(a0) VDI #125,#0,#0 .ENDM .MACRO VEX_MOTV handle,pusrcode lea.l contrl,a0 move.l \pusrcode,14(a0) move.w \handle,12(a0) VDI #126,#0,#0 .ENDM .MACRO VEX_CURV handle,pusrcode lea.l contrl,a0 move.l \pusrcode,14(a0) move.w \handle,12(a0) VDI #127,#0,#0 .ENDM .MACRO VQ_KEY_S handle lea.l contrl,a0 move.w \handle,12(a0) VDI #128,#0,#0 .ENDM .MACRO VQ_EXTND handle,owflag move.w \owflag,intin lea.l contrl,a0 move.w \handle,12(a0) VDI #102,#0,#1 .ENDM .MACRO VQ_COLOR handle,color_index,set_flag lea.l intin,a0 move.w color_index,(a0)+ move.w \set_flag,(a0) lea.l contrl,a0 move.w \handle,12(a0) VDI #26,#0,#2 .ENDM .MACRO VQL_ATTRIBUTES handle lea.l contrl,a0 move.w \handle,12(a0) VDI #102,#0,#0 .ENDM .MACRO VQM_ATTRIBUTES handle lea.l contrl,a0 move.w \handle,12(a0) VDI #36,#0,#0 .ENDM .MACRO VQF_ATTRIBUTES handle lea.l contrl,a0 move.w \handle,12(a0) VDI #37,#0,#0 .ENDM .MACRO VQT_ATTRIBUTES handle lea.l contrl,a0 move.w \handle,12(a0) VDI #38,#0,#0 .ENDM .MACRO VQT_EXTENT handle,string movea.l \string,a0 lea.l intin,a1 move.w #-1,d0 clr.w d1 .\~sl: addq.w #1,d0 move.b (a0)+,d1 move.w d1,(a1)+ bne .\~sl lea.l contrl,a0 move.w \handle,12(a0) VDI #116,#0,d0 .ENDM .MACRO VQT_WIDTH handle,element_num move.w \element_num,intin lea.l contrl,a0 move.w \handle,12(a0) VDI #130,#0,#1 .ENDM .MACRO VQ_CELLARRAY handle,pxyarray,row_length,num_rows move.l \pxyarray,pb+8 lea.l contrl,a0 move.w \handle,12(a0) move.w \row_length,14(a0) move.w \num_rows,16(a0) VDI #27,#2,d0 move.l #ptsin,pb+8 .ENDM .MACRO VQIN_MODE handle,dev_type move.w \dev_type,intin lea.l contrl,a0 move.w \handle,12(a0) VDI #115,#0,#1 .ENDM .MACRO VQT_FONTINFO handle lea.l contrl,a0 move.w \handle,12(a0) VDI #131,#0,#0 .ENDM ;ACHTUNG!!! ;Die folgende Funktion ist erst ab GEM 2.0 implementiert! .MACRO VQT_JUSTIFIED handle,x,y,string,length,word_space,char_space lea.l ptsin,a0 move.w \x,(a0)+ move.w \y,(a0)+ move.w \length,(a0)+ clr.w (a0) movea.l \string,a0 lea.l intin,a1 move.w \word_space,(a0)+ move.w \char_space,(a0)+ move.w #1,d0 clr.w d1 .\~sl: addq.w #1,d0 move.b (a0)+,d1 move.w d1,(a1)+ bne .\~sl lea.l contrl,a0 move.w \handle,12(a0) VDI #132,#2,d0 .ENDM ; ;ESCAPE-FUNKTIONEN ; .MACRO VQ_CHCELLS handle lea.l contrl,a0 move.w #1,10(a0) move.w \handle,12(a0) VDI #5,#0,#0 .ENDM .MACRO V_EXIT_CUR handle lea.l contrl,a0 move.w #2,10(a0) move.w \handle,12(a0) VDI #5,#0,#0 .ENDM .MACRO V_ENTER_CUR handle lea.l contrl,a0 move.w #3,10(a0) move.w \handle,12(a0) VDI #5,#0,#0 .ENDM .MACRO V_CURUP handle lea.l contrl,a0 move.w #4,10(a0) move.w \handle,12(a0) VDI #5,#0,#0 .ENDM .MACRO V_CURDOWN handle lea.l contrl,a0 move.w #5,10(a0) move.w \handle,12(a0) VDI #5,#0,#0 .ENDM .MACRO V_CURRIGHT handle lea.l contrl,a0 move.w #6,10(a0) move.w \handle,12(a0) VDI #5,#0,#0 .ENDM .MACRO V_CURLEFT handle lea.l contrl,a0 move.w #7,10(a0) move.w \handle,12(a0) VDI #5,#0,#0 .ENDM .MACRO V_CURHOME handle lea.l contrl,a0 move.w #8,10(a0) move.w \handle,12(a0) VDI #5,#0,#0 .ENDM .MACRO V_EEOS handle lea.l contrl,a0 move.w #9,10(a0) move.w \handle,12(a0) VDI #5,#0,#0 .ENDM .MACRO V_EEOL handle lea.l contrl,a0 move.w #10,10(a0) move.w \handle,12(a0) VDI #5,#0,#0 .ENDM .MACRO V_CURADDRESS handle,row,column lea.l intin,a0 move.w \row,(a0)+ move.w \column,(a0) lea.l contrl,a0 move.w #11,10(a0) move.w \handle,12(a0) VDI #5,#0,#2 .ENDM .MACRO V_CURTEXT handle,string lea.l intin,a0 movea.l \string,a1 move.w #-1,d0 clr.w d1 .\~sl: addq.w #1,d0 move.b (a1)+,d1 move.w d1,(a0)+ bne .\~sl lea.l contrl,a0 move.w #12,10(a0) move.w \handle,12(a0) VDI #5,#0,d0 .ENDM .MACRO V_RVON handle lea.l contrl,a0 move.w #13,10(a0) move.w \handle,12(a0) VDI #5,#0,#0 .ENDM .MACRO V_RVOFF handle lea.l contrl,a0 move.w #14,10(a0) move.w \handle,12(a0) VDI #5,#0,#0 .ENDM .MACRO VQ_CURADDRESS handle lea.l contrl,a0 move.w #15,10(a0) move.w \handle,12(a0) VDI #5,#0,#0 .ENDM .MACRO VQ_TABSTATUS handle lea.l contrl,a0 move.w #16,10(a0) move.w \handle,12(a0) VDI #5,#0,#0 .ENDM .MACRO V_HARDCOPY handle lea.l contrl,a0 move.w #17,10(a0) move.w \handle,12(a0) VDI #5,#0,#0 .ENDM .MACRO V_DSPCUR handle,x,y lea.l ptsin,a0 move.w \x,(a0)+ move.w \y,(a0) lea.l contrl,a0 move.w #18,10(a0) move.w \handle,12(a0) VDI #5,#1,#0 .ENDM .MACRO V_RMCUR handle lea.l contrl,a0 move.w #19,10(a0) move.w \handle,12(a0) VDI #5,#0,#0 .ENDM .MACRO V_FORM_ADV handle lea.l contrl,a0 move.w #20,10(a0) move.w \handle,12(a0) VDI #5,#0,#0 .ENDM .MACRO V_OUTPUT handle,xyarray move.l \xyarray,pb+8 lea.l contrl,a0 move.w #21,10(a0) move.w \handle,12(a0) VDI #5,#2,#0 move.l #ptsin,pb+8 .ENDM .MACRO V_CLEAR_DISP_LIST handle lea.l contrl,a0 move.w #22,10(a0) move.w \handle,12(a0) VDI #5,#0,#0 .ENDM .MACRO V_BIT_IMAGE handle,filename,aspect,x_scale,y_scale,h_align,v_align,xyarray move.l \xyarray,pb+8 lea.l intin,a0 move.w \aspect,(a0)+ move.w \x_scale,(a0)+ move.w \y_scale,(a0)+ move.w \h_align,(a0)+ move.w \v_align,(a0)+ move.w #3,d0 movea.l \filename,a1 clr.w d1 .\~sl: move.b (a1)+,d1 move.w d1,(a0)+ bne .\~sl lea.l contrl,a0 move.w #23,10(a0) move.w \handle,12(a0) VDI #5,#2,d0 .ENDM .MACRO VQ_SCAN handle lea.l contrl,a0 move.w #24,10(a0) move.w \handle,12(a0) VDI #5,#0,#0 .ENDM .MACRO V_ALPHA_TEXT handle,string lea.l intin,a0 movea.l \string,a1 move.w #-1,d0 clr.w d1 .\~sl: addq.w #1,d0 move.b (a1)+,d1 move.w d1,(a0)+ bne .\~sl lea.l contrl,a0 move.w #25,10(a0) move.w \handle,12(a0) VDI #5,#0,d0 .ENDM .MACRO VS_PALETTE handle,palette move.w \palette,intin lea.l contrl,a0 move.w #60,10(a0) move.w \handle,12(a0) VDI #5,#0,#1 .ENDM .MACRO V_SOUND handle,frequency,duration lea.l intin,a0 move.w \frequency,(a0)+ move.w \duration,(a0)+ lea.l contrl,a0 move.w #61,10(a0) move.w \handle,12(a0) VDI #5,#0,#2 .ENDM .MACRO VS_MUTE handle,action move.w \action,intin lea.l contrl,a0 move.w #62,10(a0) move.w \handle,12(a0) VDI #5,#0,#1 .ENDM .MACRO VT_RESOLUTION handle,xres,yres lea.l intin,a0 move.w \xres,(a0)+ move.w \yres,(a0) lea.l contrl,a0 move.w #81,10(a0) move.w \handle,12(a0) VDI #5,#0,#2 .ENDM .MACRO VT_AXIS handle,xres,yres lea.l intin,a0 move.w \xres,(a0)+ move.w \yres,(a0) lea.l contrl,a0 move.w #82,10(a0) move.w \handle,12(a0) VDI #5,#0,#2 .ENDM .MACRO VT_ORIGIN handle,xorigin,yorigin lea.l intin,a0 move.w \xorigin,(a0)+ move.w \yorigin,(a0) lea.l contrl,a0 move.w #83,10(a0) move.w \handle,12(a0) VDI #5,#0,#2 .ENDM .MACRO VQ_TDIMENSIONS handle,xdimension,ydimensin lea.l intin,a0 move.w \xdimension,(a0)+ move.w \ydimension,(a0) lea.l contrl,a0 move.w #84,10(a0) move.w \handle,12(a0) VDI #5,#0,#2 .ENDM .MACRO VT_ALIGNMENT handle,dx,dy lea.l intin,a0 move.w \dx,(a0)+ move.w \dy,(a0) lea.l contrl,a0 move.w #85,10(a0) move.w \handle,12(a0) VDI #5,#0,#2 .ENDM .MACRO VSP_FILM handle,index,lightness lea.l intin,a0 move.w \index,(a0)+ move.w \lightness,(a0) lea.l contrl,a0 move.w #91,10(a0) move.w \handle,12(a0) VDI #5,#0,#2 .ENDM .MACRO VQP_FILMNAME handle,index move.w \index,intin lea.l contrl,a0 move.w #92,10(a0) move.w \handle,12(a0) VDI #5,#0,#1 .ENDM .MACRO VSC_EXPOSE handle,state move.w \state,intin lea.l contrl,a0 move.w #93,10(a0) move.w \handle,12(a0) VDI #5,#0,#1 .ENDM .MACRO V_META_EXTENTS handle,min_x,min_y,max_x,max_y lea.l ptsin,a0 move.w \min_x,(a0)+ move.w \min_y,(a0)+ move.w \max_x,(a0)+ move.w \max_y,(a0)+ lea.l contrl,a0 move.w #98,10(a0) move.w \handle,12(a0) VDI #5,#2,#0 .ENDM .MACRO V_WRITE_META handle,num_intin,a_intin,num_ptsin,a_ptsin move.l \a_intin,pb+4 move.l \a_ptsin,pb+8 lea.l contrl,a0 move.w #99,10(a0) move.w \handle,12(a0) VDI #5,\num_ptsin,\num_intin move.l #intin,pb+4 move.l #ptsin,pb+8 .ENDM .MACRO VM_PAGESIZE handle,pgwidth,pgheight lea.l intin,a0 clr.w (a0)+ move.w \pgwidth,(a0)+ move.w \pgheight,(a0) lea.l contrl,a0 move.w #99,10(a0) move.w \handle,12(a0) VDI #5,#0,#3 .ENDM .MACRO VM_COORDS handle,llx,lly,urx,ury lea.l intin,a0 move.w #1,(a0)+ move.w \llx,(a0)+ move.w \lly,(a0)+ move.w \urx,(a0)+ move.w \ury,(a0) lea.l contrl,a0 move.w #99,10(a0) move.w \handle,12(a0) VDI #5,#0,#5 .ENDM .MACRO VM_FILENAME handle,filename lea.l intin,a0 movea.l \string,a1 move.w #-1,d0 clr.w d1 .\~sl: addq.w #1,d0 move.b (a1)+,d1 move.w d1,(a0)+ bne .\~sl lea.l contrl,a0 move.w #100,10(a0) move.w \handle,12(a0) VDI #5,#0,d0 .ENDM .MACRO V_OFFSET handle,offset move.w \offset,intin lea.l contrl,a0 move.w #101,10(a0) move.w \handle,12(a0) VDI #5,#0,#1 .ENDM .MACRO V_FONTINIT handle,font_hdr move.l \font_hdr,intin lea.l contrl,a0 move.w #102,10(a0) move.w \handle,12(a0) VDI #5,#0,#2 .ENDM .MACRO V_ESCAPE2000 handle,times move.w \times,intin lea.l contrl,a0 move.w #2000,10(a0) move.w \handle,12(a0) VDI #5,#0,#1 .ENDM ; ;Aufruf der VDI-Funktionen ; .SECTION 60,TEXT vditrap: move.l #pb,d1 ;Adresse bergeben move.w #115,d0 ;AES-Magic trap #2 ;Aufruf rts ;fertig .TEXT .END LLLLLN$.Jf222222ɻLSfdWL0;Wsvvƪ&uY>&д|[[[[[[~~~~rdWLz[[eLDDvvvvvvvvgLLLNQQQQQQtgLLLNgLLLNgLLLNYLLLLLoogLLLNLLQQQQQQtpooooo[SSSSSSvoooooo33333QQQQQgLLLNQQQQQQQttgLLLN]]]]]u]]t]eQeeehHS-ASS.ISeASS_MAC Version 1.10===================="Assembler: GFA, Version 1.5Versionsdatum: 13.10.1990%Macros fr: GEMDOS, BIOS, XBIOS(C) 1989,90 by3Martin Birn, Knoblochstrae 51, D-7100 Heilbronn7Nhere Informationen enthlt die Datei LIESMICH.DOK.R------------------------------------------------------------------------------- Trap-Definitionen# GEMDOfunktiole GEMDOS-TrapE  Funktionsnummeru  Trap ausfhren3 ; Parameter 2 bergeben ?% ; ja0  Stack mit wenig Parametern aufrumen2A Stack mit vielen Parametern aufrumen ; nein%funktioL funktio    BIOfunktiole BIOS-TrapE  Funktionsnummeru  Trap ausfhren /  Stack mit wenig Parametern aufrumen1A Stack mit vielen Parametern aufrumen ! XBIOfunktiole XBIOS-TrapE  Funktionsnummeru  Trap ausfhren /  Stack mit wenig Parametern aufrumen1A Stack mit vielen Parametern aufrumen    GEMDOS-Funktionen# PTERsta Funktion $0 und $4cEGEMDO L GEMDO  CCONIGEMDO   CCONOUchaEGEMDO   CAUXIGEMDO   CAUXOUchaEGEMDO    CPRNOUchaEGEMDO    CRAWIparEGEMDO   CRAWCIGEMDO  CNECIGEMDO   CCONWaddEGEMDO    CCONRaddEGEMDO   CCONIGEMDO    DSETDRdri $e, DsetdrvEGEMDO   CCONOGEMDO  CPRNOGEMDO  CAUXIGEMDO  CAUXOGEMDO  DGETDRGEMDO   FSETDTaddEGEMDO   SUPEstcEGEMDO   TGETDATGEMDO *  TSETDATdat EdatGEMDO +  TGETTIMGEMDO ,  TSETTIMtim EtimGEMDO -  FGETDTGEMDO / SVERSIOGEMDO 0  PTERMREkeeexiEEGEMDO 1   DFREinfdriEEGEMDO 6   DCREATpatEGEMDO 9   DDELETpatEGEMDO :   DSETPATpatEGEMDO ;   FCREATpatattEEGEMDO < w  FOPEpatattEEGEMDO = w  FCLOShndEGEMDO > w  FREAhndbytbufEEEGEMDO ?  w  FWRIThndbytbufEEEGEMDO @  w  FDELETpat EpatGEMDO A w  FSEEnbyhndfmoEEEGEMDO B    FATTRIpatwriattEEEGEMDO C   FDUshnEGEMDO E   FFORCnhnshnEEGEMDO F   DGETPATpatdriEEGEMDO G   MALLOnbyEGEMDO H  MFREfraEGEMDO I   MSHRINmmermeEE"GEMDO J    PEXEmodpatpcmpenEEEEGEMDO K   FSFIRSpatsatEEGEMDO N  FSNEXGEMDO O  FRENAMpthpthEE"GEMDO V    FDATIMbufhndinfEEEGEMDO W    BIOS-Funktionen GETMBpmbEBIO    BCONSTAdeEBIO   BCONIdeEBIO    BCONOUdechaEEBIO    RWABrwfbusecrecdriEEEEEBIO    SETEXvecveEEBIO   TICKCABIO    GETBPdriEBIO    BCOSTAdeEBIO    MEDIACdriEBIO   DRVMABIO    KBSHIFmodEBIO    XBIOS-Funktionen INITMOUtypparvecEEEXBIO    PHYSBASXBIO   LOGBASXBIO   GETREXBIO    SETSCREElloploreEEEXBIO     SETPALLETTpalEXBIO    SETCOLOcolcolEEXBIO   " FLOPRbufdevststrksidsecEEEEE"EXBIO   " FLOPWbufdevststrksidsecEEEEE"EXBIO   + FLOPFMbufdevspttrksidintmagfcoEEEEEEE"EXBIO    MIDIWcnptEEXBIO    MFPINintvecEEXBIO   IOREdevEXBIO    RSCONbauflousrstsscEEEEEEXBIO    KEYTBunsshfcapEEEXBIO   RANDOXBIO   PROTOBbufserdskexfEEEEXBIO   # FLOPVEbufdevststrksidsecEEEEE"EXBIO   SCRDMXBIO   CURSCONattratEEXBIO    SETTIMdatEXBIO   GETTIMXBIO  BIOSKEYXBIO   IKBDWncpntEEXBIO    JDISINintEXBIO    JENABINregEXBIO    GIACCESregEEXBIO    OFFGIBIbitEXBIO    ONGIBIbitEXBIO    XBTIMEtimcntdatveEEEEXBIO     DOSOUNptEXBIO    SETPRconEXBIO !  KBDVBASXBIO "  KBRATinirepEEXBIO #  PRTBLptEXBIO $  VSYNXBIO %  SUPEXEcodEXBIO &  PUNTAEXBIO '  BLITMODflaEXBIO @  #Einige Hardware-Registeradressen Shifter-memcon Speicher-Konfigurationen8dbase Highbyte der Adresse des Bildschirms7dbase Midbyte der Adresse des Bildschirms5vcounth Hibyte des Video-Adress-Zhlers*vcountmi Midbyte -"-*vcountlo Lowbyte -"-+syncmod Synchronisationsmodus-color@ Shifter-Farbregister 0-15colorBcolorDcolorFcolorHcolorJcolorLcolorNcolorPcolorRcolor1Tcolor1Vcolor1Xcolor1Zcolor1\color1^"shiftm` Bildauflsung DMA-Chip5diskctr Disk-Kontroller-Registerauswahl&dmamod DMA-Status/-Modus/dmahig DMA Basis und Zhler: high-dmami -"- : mid-dmalo -"- : lowFloppy-Controller7cmdre 1770/FIFO Kommando-Register-Auswahl5trackre 1770/FIFO Spur-Register-Auswahl8sectorre 1770/FIFO Sektor-Register-Auswahl5datare 1770/FIFO Daten-Register-Auswahl Soundchip*psgselec (W) Registerauswahl$psgrea (R) Daten lesen)psgwrit (W) Daten schreiben/psgtonea Kanal A: Feineinstellung/psgtonea -"- A: Grobeinstellungpsgtoneb Kanal Bpsgtonebpsgtonec Kanal Cpsgtonec%psgnois Rauschgenerator*psgmixe I/O-Steuerung, Mixer-psgamp Kanal A, B, C: Amplitudepsgamp psgamp :psgenvlp Hllkurven-Periode: Feineinstellung:psgenvlp -"- : Grobeinstellung*psgport PORT A (nur Ausgabe)1psgport PORT B (Centronics-Ausgabe)Bits in "psgporta"rtsou RTS outputdtrou DTR output,strob Centronics strobe output=ou@ ; "general purpose" output68901 (MFP)mf Register-Basismfpgpi I/O&mfpae active edge)mfpdd Daten-Richtung.mfpier interrupt enable A.mfpier -"- B/mfpipr interrupt pending A/mfpipr -"- B1mfpisr interrupt inService A1mfpisr -"- B,mfpimr interrupt mask A,mfpimr -"- B)mfpv Vektor-Register+mfptac timer A control+mfptbc timer B control0mfptcdc timer C & D control(mfptad timer A data(mfptbd! timer B data(mfptcd# timer C data(mfptdd% timer D data$mfpsc' sync char,mfpuc) USART control reg*mfprs+ receiver status*mfpts- transmit status%mfpud/ USART dataACIA's 6850.aciakeyctr keyboard ACIA control$aciakeyd keyboard data)aciamidic MIDI ACIA control!aciamidid MIDI data dokumentierte Systemvariablenproc_liveproc_regproc_pproc_usproc_stetv_timeetv_critietv_teretv_xtr memvali memcntl$resvali&resvecto*physto._membo2_memto6memval:floc>seekrat@_timr_mB_fverifD_bootdeFpalmodHdefshiftmJsshiftmL_v_bas_aNvblseRnvblT_vblqueuVcolorptZscreenp^_vbclocb_frclocfhdv_inijswv_venhdv_bprhdv_rvhdv_boozhdv_mediac~_cmdloacontertrp14recriticrethem_____msavpt_nflopcon_statsave_rosav_contex_buf_hz_20_drvbit_dskbuf_autopat_vbl_lis_dumpfl_prtab_sysbas_shell_end_oexec_oscr_dumprv_lstprv_ls prv_auxprv_au)pun_pterst ab Blitter-TOS!!memval_is_pr_is_au"_is_co&_is_mid*_is_ikb._is_rawco2_is_dev6_is_dev:_i_pr>_i_auB_i_coF_i_midJ_i_ikbN_i_rawcoR_i_devV_i_devZ_os_pr^_os_aub_os_cof_os_midj_os_ikbn_os_rawcor_os_devv_os_devz_o_pr~_o_au_o_co_o_mid_o_ikb_o_rawco_o_dev_o_devGertenummernpr Druckerau RS-232,co Bildschirm (VT-52-Emulator)mid MIDIikb TastaturGrawco Bildschirm (alle ASCII-Zeichen von dez.0 - dez.255)&.# .@'q.j+++&+%- %- &-+(.# /?0F-&?9# (- - - +++m'q# @ @ @$`"v @# @&g&*&.# .@'q.j+++&+%- %- &-+(.# /?0F-&?9# (- - - +++m'q# @`++``y@$@"@y$$//Y @ @%#Y @# @&g&*&.# .@'q.j+++&+%- %- &-+(.# /?0F-&?9# (- - - %+%++m'q# @Y @ @%#Y @+- - /+/+&*&.# .@'q.j+++&+%- %- &-+(.# /?0F-&"v @$` @"v @# @&g&*&.# .@'q.j+++&+%- %- &-+(.# /?0F-&?9# (- - - ;ASS_MAC Version 1.10 ;==================== ; ;Assembler: GFA, Version 1.5 ;Versionsdatum: 13.10.1990 ; ;Macros fr: GEMDOS, BIOS, XBIOS ; ;(C) 1989,90 by ;Martin Birn, Knoblochstrae 51, D-7100 Heilbronn ; ;Nhere Informationen enthlt die Datei LIESMICH.DOK. ;------------------------------------------------------------------------------- .TEXT ; ; Trap-Definitionen ; .MACRO GEMDOS funktion,len ; GEMDOS-Trap move.w #\1,-(sp) ; Funktionsnummer trap #1 ; Trap ausfhren .IF \?2 ; ; Parameter 2 bergeben ? .IF \2<=8 ; ; ja addq.l #\2,sp ; Stack mit wenig Parametern aufrumen .ELSE lea.l \2(sp),sp ; Stack mit vielen Parametern aufrumen .ENDIF .ELSE ; ; nein .IF \funktion<>$4c&\funktion<>$0 addq.l #2,sp .ENDIF .ENDIF .ENDM .MACRO BIOS funktion,len ; BIOS-Trap move.w #\1,-(sp) ; Funktionsnummer trap #13 ; Trap ausfhren .IF \2<=8 addq.l #\2,sp ; Stack mit wenig Parametern aufrumen .ELSE lea.l \2(sp),sp ; Stack mit vielen Parametern aufrumen .ENDIF .ENDM .MACRO XBIOS funktion,len ; XBIOS-Trap move.w #\1,-(sp) ; Funktionsnummer trap #14 ; Trap ausfhren .IF \?2 .IF \2<=8 addq.l #\2,sp ; Stack mit wenig Parametern aufrumen .ELSE lea.l \2(sp),sp ; Stack mit vielen Parametern aufrumen .ENDIF .ELSE addq.l #2,sp .ENDIF .ENDM ; ; GEMDOS-Funktionen ; .MACRO PTERM stat ; Funktion $0 und $4c .IF \?1 move.w \1,-(sp) GEMDOS $4c,4 .ELSE GEMDOS 0 .ENDIF .ENDM .MACRO CCONIN GEMDOS 1 .ENDM .MACRO CCONOUT char move.w \1,-(sp) GEMDOS 2,4 .ENDM .MACRO CAUXIN GEMDOS 3 .ENDM .MACRO CAUXOUT char move.w \1,-(sp) GEMDOS 4,4 .ENDM .MACRO CPRNOUT char move.w \1,-(sp) GEMDOS 5,4 .ENDM .MACRO CRAWIO parm move.w \1,-(sp) GEMDOS 6,4 .ENDM .MACRO CRAWCIN GEMDOS 7 .ENDM .MACRO CNECIN GEMDOS 8 .ENDM .MACRO CCONWS addr move.l \1,-(sp) GEMDOS 9,6 .ENDM .MACRO CCONRS addr move.l \1,-(sp) GEMDOS $a,6 .ENDM .MACRO CCONIS GEMDOS $b .ENDM .MACRO DSETDRV driv ; $e, Dsetdrv move.w \1,-(sp) GEMDOS $e,4 .ENDM .MACRO CCONOS GEMDOS $10 .ENDM .MACRO CPRNOS GEMDOS $11 .ENDM .MACRO CAUXIS GEMDOS $12 .ENDM .MACRO CAUXOS GEMDOS $13 .ENDM .MACRO DGETDRV GEMDOS $19 .ENDM .MACRO FSETDTA addr move.l \1,-(sp) GEMDOS $1a,6 .ENDM .MACRO SUPER stck move.l \1,-(sp) GEMDOS $20,6 .ENDM .MACRO TGETDATE GEMDOS $2a .ENDM .MACRO TSETDATE date move.w \date,-(sp) GEMDOS $2b,4 .ENDM .MACRO TGETTIME GEMDOS $2c .ENDM .MACRO TSETTIME time move.w \time,-(sp) GEMDOS $2d,4 .ENDM .MACRO FGETDTA GEMDOS $2f .ENDM .MACRO SVERSION GEMDOS $30 .ENDM .MACRO PTERMRES keep,exit move.w \2,-(sp) move.l \1,-(sp) GEMDOS $31,8 .ENDM .MACRO DFREE info,driv move.w \2,-(sp) move.l \1,-(sp) GEMDOS $36,8 .ENDM .MACRO DCREATE path move.l \1,-(sp) GEMDOS $39,6 .ENDM .MACRO DDELETE path move.l \1,-(sp) GEMDOS $3a,6 .ENDM .MACRO DSETPATH path move.l \1,-(sp) GEMDOS $3b,6 .ENDM .MACRO FCREATE path,attr move.w \2,-(sp) move.l \1,-(sp) GEMDOS $3c,8 tst.w d0 .ENDM .MACRO FOPEN path,attr move.w \2,-(sp) move.l \1,-(sp) GEMDOS $3d,8 tst.w d0 .ENDM .MACRO FCLOSE hndl move.w \1,-(sp) GEMDOS $3e,4 tst.w d0 .ENDM .MACRO FREAD hndl,byts,buff move.l \3,-(sp) move.l \2,-(sp) move.w \1,-(sp) GEMDOS $3f,12 tst.w d0 .ENDM .MACRO FWRITE hndl,byts,buff move.l \3,-(sp) move.l \2,-(sp) move.w \1,-(sp) GEMDOS $40,12 tst.w d0 .ENDM .MACRO FDELETE path move.l \path,-(sp) GEMDOS $41,6 tst.w d0 .ENDM .MACRO FSEEK nbyt,hndl,fmod move.w \3,-(sp) move.w \2,-(sp) move.l \1,-(sp) GEMDOS $42,10 .ENDM .MACRO FATTRIB path,writ,attr move.w \3,-(sp) move.w \2,-(sp) move.l \1,-(sp) GEMDOS $43,10 .ENDM .MACRO FDUP shnd move.w \1,-(sp) GEMDOS $45,4 .ENDM .MACRO FFORCE nhnd,shnd move.w \2,-(sp) move.w \1,-(sp) GEMDOS $46,6 .ENDM .MACRO DGETPATH path,driv move.w \2,-(sp) move.l \1,-(sp) GEMDOS $47,8 .ENDM .MACRO MALLOC nbyt move.l \1,-(sp) GEMDOS $48,6 .ENDM .MACRO MFREE frad move.l \1,-(sp) GEMDOS $49,6 .ENDM .MACRO MSHRINK mmem,rmem move.l \2,-(sp) move.l \1,-(sp) clr.w -(sp) GEMDOS $4a,12 .ENDM .MACRO PEXEC mode,path,pcmd,penv move.l \4,-(sp) move.l \3,-(sp) move.l \2,-(sp) move.w \1,-(sp) GEMDOS $4b,16 .ENDM .MACRO FSFIRST path,satt move.w \2,-(sp) move.l \1,-(sp) GEMDOS $4e,8 .ENDM .MACRO FSNEXT GEMDOS $4f .ENDM .MACRO FRENAME pth1,pth2 move.l \2,-(sp) move.l \1,-(sp) clr.w -(sp) GEMDOS $56,12 .ENDM .MACRO FDATIME buff,hndl,info move.w \3,-(sp) move.w \2,-(sp) move.l \1,-(sp) GEMDOS $57,10 .ENDM ; ; BIOS-Funktionen ; .MACRO GETMBP pmbp move.l \1,-(sp) BIOS 0,4 .ENDM .MACRO BCONSTAT dev move.w \1,-(sp) BIOS 1,4 .ENDM .MACRO BCONIN dev move.w \1,-(sp) BIOS 2,4 .ENDM .MACRO BCONOUT dev,char move.w \2,-(sp) move.w \1,-(sp) BIOS 3,6 .ENDM .MACRO RWABS rwfl,buf,secn,recn,driv move.w \5,-(sp) move.w \4,-(sp) move.w \3,-(sp) move.l \2,-(sp) move.w \1,-(sp) BIOS 4,14 .ENDM .MACRO SETEXC vecn,vec move.l \2,-(sp) move.w \1,-(sp) BIOS 5,8 .ENDM .MACRO TICKCAL BIOS 6,2 .ENDM .MACRO GETBPB driv move.w \1,-(sp) BIOS 7,4 .ENDM .MACRO BCOSTAT dev move.w \1,-(sp) BIOS 8,4 .ENDM .MACRO MEDIACH driv move.w \1,-(sp) BIOS 9,4 .ENDM .MACRO DRVMAP BIOS 10,2 .ENDM .MACRO KBSHIFT mode move.w \1,-(sp) BIOS 11,4 .ENDM ; ; XBIOS-Funktionen ; .MACRO INITMOUS type,para,vect move.l \3,-(sp) move.l \2,-(sp) move.w \1,-(sp) XBIOS 0,12 .ENDM .MACRO PHYSBASE XBIOS 2,2 .ENDM .MACRO LOGBASE XBIOS 3,2 .ENDM .MACRO GETREZ XBIOS 4,2 .ENDM .MACRO SETSCREEN lloc,ploc,rez move.w \3,-(sp) move.l \2,-(sp) move.l \1,-(sp) XBIOS 5,12 .ENDM .MACRO SETPALLETTE palp move.l \1,-(sp) XBIOS 6,6 .ENDM .MACRO SETCOLOR coln,colr move.w \2,-(sp) move.w \1,-(sp) XBIOS 7,6 .ENDM .MACRO FLOPRD buff,devn,stsc,trkn,sidn,secn move.w \6,-(sp) move.w \5,-(sp) move.w \4,-(sp) move.w \3,-(sp) move.w \2,-(sp) clr.l -(sp) move.l \1,-(sp) XBIOS 8,20 .ENDM .MACRO FLOPWR buff,devn,stsc,trkn,sidn,secn move.w \6,-(sp) move.w \5,-(sp) move.w \4,-(sp) move.w \3,-(sp) move.w \2,-(sp) clr.l -(sp) move.l \1,-(sp) XBIOS 9,20 .ENDM .MACRO FLOPFMT buff,devn,sptk,trkn,sidn,intl,magc,fcod move.w \8,-(sp) move.l \7,-(sp) move.w \6,-(sp) move.w \5,-(sp) move.w \4,-(sp) move.w \3,-(sp) move.w \2,-(sp) clr.l -(sp) move.l \1,-(sp) XBIOS 10,26 .ENDM .MACRO MIDIWS cnt,ptr move.l \2,-(sp) move.w \1,-(sp) XBIOS 12,8 .ENDM .MACRO MFPINT intn,vect move.l \2,-(sp) move.w \1,-(sp) XBIOS 13,8 .ENDM .MACRO IOREC devn move.w \1,-(sp) XBIOS 14,6 .ENDM .MACRO RSCONF baud,flow,usr,rsr,tsr,scr move.w \6,-(sp) move.w \5,-(sp) move.w \4,-(sp) move.w \3,-(sp) move.w \2,-(sp) move.w \1,-(sp) XBIOS 15,14 .ENDM .MACRO KEYTBL unsh,shft,capl move.l \3,-(sp) move.l \2,-(sp) move.l \1,-(sp) XBIOS 16,14 .ENDM .MACRO RANDOM XBIOS 17 .ENDM .MACRO PROTOBT buff,sern,dskt,exfl move.w \4,-(sp) move.w \3,-(sp) move.l \2,-(sp) move.l \1,-(sp) XBIOS 18,14 .ENDM .MACRO FLOPVER buff,devn,stsc,trkn,sidn,secn move.w \6,-(sp) move.w \5,-(sp) move.w \4,-(sp) move.w \3,-(sp) move.w \2,-(sp) clr.l -(sp) move.l \1,-(sp) XBIOS 19,20 .ENDM .MACRO SCRDMP XBIOS 20 .ENDM .MACRO CURSCONF attr,rate move.w \2,-(sp) move.w \1,-(sp) XBIOS 21,6 .ENDM .MACRO SETTIME date move.l \1,-(sp) XBIOS 22,6 .ENDM .MACRO GETTIME XBIOS 23 .ENDM .MACRO BIOSKEYS XBIOS 24 .ENDM .MACRO IKBDWS nch,pntr move.l \2,-(sp) move.w \1,-(sp) XBIOS 25,8 .ENDM .MACRO JDISINT intn move.w \1,-(sp) XBIOS 26,4 .ENDM .MACRO JENABINT regn move.w \1,-(sp) XBIOS 27,4 .ENDM .MACRO GIACCESS regn move.w \2,-(sp) move.w \1,-(sp) XBIOS 28,6 .ENDM .MACRO OFFGIBIT bitm move.w \1,-(sp) XBIOS 29,4 .ENDM .MACRO ONGIBIT bitm move.w \1,-(sp) XBIOS 30,4 .ENDM .MACRO XBTIMER timr,cntl,data,vec move.l \4,-(sp) move.w \3,-(sp) move.w \2,-(sp) move.w \1,-(sp) XBIOS 31,12 .ENDM .MACRO DOSOUND ptr move.l \1,-(sp) XBIOS 32,6 .ENDM .MACRO SETPRT conf move.w \1,-(sp) XBIOS 33,4 .ENDM .MACRO KBDVBASE XBIOS 34 .ENDM .MACRO KBRATE init,rept move.w \2,-(sp) move.w \1,-(sp) XBIOS 35,6 .ENDM .MACRO PRTBLK ptr move.l \1,-(sp) XBIOS 36,6 .ENDM .MACRO VSYNC XBIOS 37 .ENDM .MACRO SUPEXEC code move.l \1,-(sp) XBIOS 38,6 .ENDM .MACRO PUNTAES XBIOS 39 .ENDM .MACRO BLITMODE flag move.w \1,-(sp) XBIOS 64,4 .ENDM ; ;Einige Hardware-Registeradressen ; ;Shifter memconf = $ffff8001 ; Speicher-Konfigurationen dbaseh = $ffff8201 ; Highbyte der Adresse des Bildschirms dbasel = $ffff8203 ; Midbyte der Adresse des Bildschirms vcounthi = $ffff8205 ; Hibyte des Video-Adress-Zhlers vcountmid = $ffff8207 ; Midbyte -"- vcountlow = $ffff8209 ; Lowbyte -"- syncmode = $ffff820a ; Synchronisationsmodus color0 = $ffff8240 ; Shifter-Farbregister 0-15 color1 = $ffff8242 color2 = $ffff8244 color3 = $ffff8246 color4 = $ffff8248 color5 = $ffff824a color6 = $ffff824c color7 = $ffff824e color8 = $ffff8250 color9 = $ffff8252 color10 = $ffff8254 color11 = $ffff8256 color12 = $ffff8258 color13 = $ffff825a color14 = $ffff825c color15 = $ffff825e shiftmd = $ffff8260 ; Bildauflsung ;DMA-Chip diskctrl = $ffff8604 ; Disk-Kontroller-Registerauswahl dmamode = $ffff8606 ; DMA-Status/-Modus dmahigh = $ffff8609 ; DMA Basis und Zhler: high dmamid = $ffff860b ; -"- : mid dmalow = $ffff860d ; -"- : low ;Floppy-Controller cmdreg = $80 ; 1770/FIFO Kommando-Register-Auswahl trackreg = $82 ; 1770/FIFO Spur-Register-Auswahl sectorreg = $84 ; 1770/FIFO Sektor-Register-Auswahl datareg = $86 ; 1770/FIFO Daten-Register-Auswahl ;Soundchip psgselect = $ffff8800 ; (W) Registerauswahl psgread = $ffff8800 ; (R) Daten lesen psgwrite = $ffff8802 ; (W) Daten schreiben psgtoneaf = 0 ; Kanal A: Feineinstellung psgtoneac = 1 ; -"- A: Grobeinstellung psgtonebf = 2 ; Kanal B psgtonebc = 3 psgtonecf = 4 ; Kanal C psgtonecc = 5 psgnoise = 6 ; Rauschgenerator psgmixer = 7 ; I/O-Steuerung, Mixer psgampa = 8 ; Kanal A, B, C: Amplitude psgampb = 9 psgampc = $a psgenvlpf = $b ; Hllkurven-Periode: Feineinstellung psgenvlpc = $c ; -"- : Grobeinstellung psgporta = $e ; PORT A (nur Ausgabe) psgportb = $f ; PORT B (Centronics-Ausgabe) ;Bits in "psgporta" rtsout = 8 ; RTS output dtrout = $10 ; DTR output strobe = $20 ; Centronics strobe output out = $40 ; ; "general purpose" output ;68901 (MFP) mfp = $fffffa00 ; Register-Basis mfpgpio = $fffffa00+1 ; I/O mfpaer = $fffffa00+3 ; active edge mfpddr = $fffffa00+5 ; Daten-Richtung mfpiera = $fffffa00+7 ; interrupt enable A mfpierb = $fffffa00+9 ; -"- B mfpipra = $fffffa00+$b ; interrupt pending A mfpiprb = $fffffa00+$d ; -"- B mfpisra = $fffffa00+$f ; interrupt inService A mfpisrb = $fffffa00+$11 ; -"- B mfpimra = $fffffa00+$13 ; interrupt mask A mfpimrb = $fffffa00+$15 ; -"- B mfpvr = $fffffa00+$17 ; Vektor-Register mfptacr = $fffffa00+$19 ; timer A control mfptbcr = $fffffa00+$1b ; timer B control mfptcdcr = $fffffa00+$1d ; timer C & D control mfptadr = $fffffa00+$1f ; timer A data mfptbdr = $fffffa00+$21 ; timer B data mfptcdr = $fffffa00+$23 ; timer C data mfptddr = $fffffa00+$25 ; timer D data mfpscr = $fffffa00+$27 ; sync char mfpucr = $fffffa00+$29 ; USART control reg mfprsr = $fffffa00+$2b ; receiver status mfptsr = $fffffa00+$2d ; transmit status mfpudr = $fffffa00+$2f ; USART data ;ACIA's 6850 aciakeyctrl = $fffffc00 ; keyboard ACIA control aciakeydr = $fffffc02 ; keyboard data aciamidicr = $fffffc04 ; MIDI ACIA control aciamididr = $fffffc06 ; MIDI data ; ;dokumentierte Systemvariablen ; proc_lives = $380 proc_regs = $384 proc_pc = $3c4 proc_usp = $3c8 proc_stk = $3cc etv_timer = $400 etv_critic = $404 etv_term = $408 etv_xtra = $40c memvalid = $420 memcntlr = $424 resvalid = $426 resvector = $42a phystop = $42e _membot = $432 _memtop = $436 memval2 = $43a flock = $43e seekrate = $440 _timr_ms = $442 _fverify = $444 _bootdev = $446 palmode = $448 defshiftmd = $44a sshiftmd = $44c _v_bas_ad = $44e vblsem = $452 nvbls = $454 _vblqueue = $456 colorptr = $45a screenpt = $45e _vbclock = $462 _frclock = $466 hdv_init = $46a swv_vec = $46e hdv_bpb = $472 hdv_rw = $476 hdv_boot = $47a hdv_mediach = $47e _cmdload = $482 conterm = $484 trp14ret = $486 criticret = $48a themd = $48e _____md = $49e savptr = $4a2 _nflops = $4a6 con_state = $4a8 save_row = $4ac sav_context = $4ae _bufl = $4b2 _hz_200 = $4ba _drvbits = $4c2 _dskbufp = $4c6 _autopath = $4ca _vbl_list = $4ce _dumpflg = $4ee _prtabt = $4f0 _sysbase = $4f2 _shell_p = $4f6 end_os = $4fa exec_os = $4fe scr_dump = $502 prv_lsto = $506 prv_lst = $50a prv_auxo = $50e prv_aux = $512 pun_ptr = $516 ;erst ab Blitter-TOS!! memval3 = $51a _is_prt = $51e _is_aux = $522 _is_con = $526 _is_midi = $52a _is_ikbd = $52e _is_rawcon = $532 _is_dev6 = $536 _is_dev7 = $53a _i_prt = $53e _i_aux = $542 _i_con = $546 _i_midi = $54a _i_ikbd = $54e _i_rawcon = $552 _i_dev6 = $556 _i_dev7 = $55a _os_prt = $55e _os_aux = $562 _os_con = $566 _os_midi = $56a _os_ikbd = $56e _os_rawcon = $572 _os_dev6 = $576 _os_dev7 = $57a _o_prt = $57e _o_aux = $582 _o_con = $586 _o_midi = $58a _o_ikbd = $58e _o_rawcon = $592 _o_dev6 = $596 _o_dev7 = $59a ; ;Gertenummern ; prt = 0 ; Drucker aux = 1 ; RS-232 con = 2 ; Bildschirm (VT-52-Emulator) midi = 3 ; MIDI ikbd = 4 ; Tastatur rawcon = 5 ; Bildschirm (alle ASCII-Zeichen von dez.0 - dez.255) .END s-&?)b($#c!E!lb@s<$w4C> ? + ( % ( - . 4(5*4/{1Q0.1-/-R-,)(i(-/1b0 Q0 ,*% !(*K+,,T+*G!.*)@%*)@(+)?+4%+#,g Z*(..^    ,J 1 3321/o@2t(21T%/~,D)0#(0(00/T.@^ 2'y2)61, .T.@+Y0''0 0b0HS-ASS.ISfASS_MAC Version 1.10===================="Assembler: GFA, Version 1.5Versionsdatum: 13.10.1990Macros fr: TOS030(C) 1989,90 by3Martin Birn, Knoblochstrae 51, D-7100 Heilbronn7Nhere Informationen enthlt die Datei LIESMICH.DOK.R-------------------------------------------------------------------------------eine neue GEMDOS-Funktion... MXALLOsizmod Emod EsizGEMDO D   %...und viele neue XBIOS-Funktionen! DMAREAsectocounbuffedevn EdevnEbuffe EcounEsectoXBIO *  " DMAWRITsectocounbuffedevn EdevnEbuffe EcounEsectoXBIO +   BCONMAdevn EdevnXBIO ,   _ESETSHIFmod EmodXBIO P   _EGETSHIFXBIO Q  _ESETBANmod EmodXBIO R   _ESETCOLOreva Eva EreXBIO S  % _ESETPALETTstartrecountrepadd EpaddEcountreEstartreXBIO T   % _EGETPALETTstartrecountrepadd EpaddEcountreEstartreXBIO U    _ESETGRAfla EflaXBIO V   _ESETSMEAfla EflaXBIO W   noch eine neue Systemvariable_p_cookie!&/- 1 3? ~5@ 7[ 8 Y8<3O--2/*00/0-V0,I/*,--0i!-< /z0t0m0/"-<3 5 71 6 .I--.+0n)0'`1%0$%4.@ PI-.000. -  !) #U %' %~ )w#/( / 1 3 (","*)?"*)@(*)@."/0.+(* 4( 9o"74&*0 (0000&" * #@ o@)/@+?-.F@..5@+@#@H   ! - 3. 6 4@;ASS_MAC Version 1.10 ;==================== ; ;Assembler: GFA, Version 1.5 ;Versionsdatum: 13.10.1990 ; ;Macros fr: TOS030 ; ;(C) 1989,90 by ;Martin Birn, Knoblochstrae 51, D-7100 Heilbronn ; ;Nhere Informationen enthlt die Datei LIESMICH.DOK. ;------------------------------------------------------------------------------- .TEXT ; ;eine neue GEMDOS-Funktion... ; .MACRO MXALLOC size,mode move.w \mode,-(sp) move.l \size,-(sp) GEMDOS 68,10 .ENDM ; ;...und viele neue XBIOS-Funktionen ; .MACRO DMAREAD sector,count,buffer,devno move.w \devno,-(sp) move.l \buffer,-(sp) move.w \count,-(sp) move.l \sector,-(sp) XBIOS 42,16 .ENDM .MACRO DMAWRITE sector,count,buffer,devno move.w \devno,-(sp) move.l \buffer,-(sp) move.w \count,-(sp) move.l \sector,-(sp) XBIOS 43,16 .ENDM .MACRO BCONMAP devno move.w \devno,-(sp) XBIOS 44,6 .ENDM .MACRO _ESETSHIFT mode move.w \mode,-(sp) XBIOS 80,6 .ENDM .MACRO _EGETSHIFT XBIOS 81 .ENDM .MACRO _ESETBANK mode move.w \mode,-(sp) XBIOS 82,6 .ENDM .MACRO _ESETCOLOR reg,val move.w \val,-(sp) move.w \reg,-(sp) XBIOS 83,8 .ENDM .MACRO _ESETPALETTE startreg,countreg,paddr move.l \paddr,-(sp) move.w \countreg,-(sp) move.w \startreg,-(sp) XBIOS 84,12 .ENDM .MACRO _EGETPALETTE startreg,countreg,paddr move.l \paddr,-(sp) move.w \countreg,-(sp) move.w \startreg,-(sp) XBIOS 85,12 .ENDM .MACRO _ESETGRAY flag move.w \flag,-(sp) XBIOS 86,6 .ENDM .MACRO _ESETSMEAR flag move.w \flag,-(sp) XBIOS 87,6 .ENDM ; ;noch eine neue Systemvariable ; _p_cookies = $5a0 .END  (@i * -@+&"@?@i `0{/0X/.),)-O"h f%'@-;/{1z21%/%%%8)w*Z#,I(*s+h'-}' /@(`.Z*-,K,"-*%.(. .. BEISPIEL__1 BEISPIEL__2 fBEISPIEL__3 BEISPIEL__4 LBEISP_1 PIC }BEISP_2 PIC }BEISP_3 PIC }BEISP_4 PIC }GTOOLSCIPRG $=aINFO TXT /f+ 1 20 5 2 50 5 3 60 5 4 80 5 5 90 15 6 20 5 7 54 5 8 54 5 9 54 5 10 85 8 11 84 8 12 87 5 - + 1 10 5 5 80 8 50 87 8 100 54 8 600 248 8 1200 54 8 4000 578 50 - + 1 587 87 2 577 54 3 502 88 4 588 54 5 563 5 6 591 5 7 588 8 8 512 5 9 538 87 10 547 8 11 577 87 12 560 54 - + 1 54 8 2 50 5 3 54 8 4 87 8 5 24 8 6 57 8 - ```aف````a```aaa`a`a`aa`Xa`a`aa`a`8``` ` f>``f````f<|~<8|`|<||8f<~ffffnfffl~`~ff`>ffx ```ff`fffl<`<`>|f``~ @`> 0|0@@| B 00@@>| 0`@@ >0`|@0@p30B?"sp0o@ "óP>30?<30 |!`|>a"$0>@(p(* 0H*  .@`??? 0 33 ?0@37  ;   3 >@3@ ?>30B  3p` ? ?30  ?c0 <~?? f`?  f| ? DG@<3?|@ f3@ ff6~ <<3?| 4DG3 px y<<ffDGDG@ fn@@0@@ QQ  @>@DDODGDDODGDG>@@ @Q@ Q@>@ @DODG~?DDODGDG:@*Q*€@>!DODG DDODGDG@A"@ B!Q@?A @"DODG?@DDODGDG"0B@~pQ|@ 30 DODGDODGDG 30@ !@A?g3DDODGsDODGDG@??f3g?g3~DDODG`0g3DODGDG ? g3?@?C7DDODG?DODGDG@w??3?37??"37DDODGDDDDDDODGDG0B??p??3 ??30@DDODGDDDDDDODGDG030??? ?? ??>DDDDODGDDDDDDODGDG>@??????DDDDODGDDDDDDODGDG>?? ?? ??DDDDODGDDDDDDODGDG@??????aDDDDODGDDDDDDODGDG"0B??"p??"c??>0DDDDODGDDDDDDODGDGc0??a????$DDDDODGDDDDDDODGDG.@??*??*??:DDDDODGDDDDDDODGDG??????DDDDODGDDDDDDDODGDG:@!??*A??*??>DDDDODG>DDDDDDODGDGc0B??p??c ?(?l30DDDDODGHDDDDDDODGDG30"??B????DDDDODGDDDDDDODGDGB??????DDDDODG DDDDDDODGDG ??@?=??<?foDDDDODGDDDDDDODGDGBf??o??o??oDDDDODG DDDDDDODGDG30 ?<?3p@?=?c??0?DDDDODGDDDDDDODGDG0??????DDDDDDODGDGDDDDDDODGDG??????DDDDDDODGDGDDDDDDODGDG??????DDDDDDODGDGDDDDDDODGDG????>??|DDDDDDODGDGDDDDDDODGDG0??p??ð??0DDDDDDODGDGDDDDDDODGDG0????>??|DDDDDDODGDGDDDDDDODGDG??????DDDDDDODGDGDDDDDDODGDG?@?@?Q?Q>?@?@|DDDDDDDODG DGDDDDDDDODG DG?@?@?Q ?Q ?@?@DDDDDDDODG DGDDDDDDDODG DG0~?@~?@p|>Q |>Q >x<@x<@|0DDDDpDxDDNDG DGDDDDpDxDDNDG DG0@@0<`00< p` `pp8f` `a00 |a00 ` f `a00`0f a0000x< ~~`p`񙁁`a񁙀`a`a8 >0 03003>v>?>>>>3333 03333`63k?3 ? 033?3333c030 03303a33c3?333aaa??03|>3~ J3J33z2><|6@@(|>|@|||x @@0q1a10  |@@|D`0 tTT  |@8`@D@D0  @@ ` @<| @0@|`@|xx0 a`a`ax a@| @|xx0D@ p@0F`@tp Tp~ T `8||<x8l 8~  f <@< x|p|@ @h|p|l 8p@ 0 t T|T|8 @ @<|TT \@Dl8 @ $$ `   `aa a a|~JJz28|DD|8     ~x xxx<<<`338fff| 77nn ;; vv 33fff 330ff<xx?xxx~~<<0P`aa @@ a @@ a @@  @@ `  `` ` LJ       3303sp㳰330330330cspó3030>|@@@@@@@30@sp@㳰@330@330@@@@@@8>@@l@@?@@P@@@P8` @@@`@ @6@p@@@<@@@8@x@>@@ @@p@ 6@@ @@ @0@@@@>@ @@| @@`@@@@>@@@ @@8@  @?@@@@@|@@ @@|@@`@@@@@ @@ p@@ @@@ @@@p@ A@A@B@D`@30H@spP@3P@330@330@@@@@@@@@@@@>@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a30spc30@@c30@@a h80 >>>>><@>@ @ @>@>@@@@``08`a@`pp````@`a````@aa`a`aa```@aa`a``a```@aa``0q``a`a@30c098@ $3p@ .`3@*30@ *30@ :@`@`@"`@"`a@~`a@|`a@ @ @@@@>@ 0@ 0@333@13030000c13330@131001330@133001110@31p1310@"@"@"@>@@@@ @ :@ *@*@>@@@330@3sp@0c@ 30@ 30@>@>@@ @ @LJ @<@@@ 4@ 44@@@@ @ @< @<@@@44@44@44@@@@ @< >@$@|@@ @$$@$$@$$0@>$p@$3@($30@$,$30|@$4$@$$@ @@ @(R@@R@| @@@@@@@@|@@D>@@ @@ @@ >@@ $>@@x@@ @@ @:@@(*@@$,*@@x4>@@ 8>@@@l@@@?@@@P@@@(@P8` @@<@@@$`@ @6@|@p@@@@<@ @@@ 30@8@x@ sp@>@@ ó@ @@p@<< 30@ 6@@ @30@@ @0@ "@@@ @@>@@ < @@|@$ @@`@|@@@:@@@>@*@@@@$*@ @@@8@$|>@ @ @?@$D@@@@@@@|@@@?>@( " @ߞ@,"@|@@4~@`@@|@@@ @@ @@ @  p@@(@ ~~~@@, @@??> @@4 @@p@@> A@@| A@@ B@@< >D`@@LJ$>H@@ $P~~~@@$ P??>@@8 @@ @@ <@P@@@@P<"@@@@P$@@@@< @@~~~@@ 0@@??>@ @ p@|@ @4:3@ @@4*30@ @"0@4*30@@@BP@>@@L@@@~~~Y@~~~@@P@@ ?>s33@??>@ 0@| f~f@@@@<L@@@Y 0@ @s33@@P@@@@ fff@@@P4L@@P4~~~Y@P~~~@@@P4 ??>s33@ 0??>@ @|fff@@@:L@@(*Y | 0@DT*s33@@@P@|T>fff@@DTL@|~~~Y@~~~@P@??>s33@ ??> 0@$$fff@@T.L@X*Y 0 @P*s33@@P333@@@|:fff@fvf@@L@||~~~Y@P~~~@@$??>s33@ 0??>33@ @$fff@fff@@$>L@| Y  0@ s33@@333@@P@Dfff@fff@@D @D ~~~@~~~@P@D 0??>333@ ??>333@ 0@8< pfff@fff@@ "@ H< "0ٙ 0ٙ @T"0s33@@Ps33@@@T>T$8   >~ @~@?> > =  @83   ?3 ~?0  3 p0 v3?> 3>?>3>?>>8>3 30 33 33 3333 333303 k3 ?0 33 ?033 33?303 c3 0033 0033 33030c>030>3380p ;;   1  `j&jAON@NlNĈNNN~Hy,,?<#NN\+@"Ep NNgdEp NrN&pNnN@pNnN@pNnN@pNnN@pNnN@pNnN@pNnN@pNnN0VHVqpNnN@pNnN0VHVspNnN0VHVlpNnN0VHVmpNnN0VHVnpNnN@pNnNAl 00pNnNAd 00pNnN+@NpNnN@pNnN@pNnNA 00pN`NE NE N(<vptrE vN~ENN~NN NE.NlN`NpNpNpNpN6<0<trNpN6<0<trN>Ep ANZpNpNpNpNNAtF2<NpNpNpNp NNEpANZEp ANZA4<rNA4<rNEp AtNZEpANZEpANZE+pANZpNpNpNp NNA4<2<NA4<2<NA4<,2<NpNpNpNpNNAt4<2<NpNpNpNpNNN̦$mP$N̸$mT$N̦$mPVHH/N̸$mTVHHgpN|pNNu|||||||Pq|QsPlPmPn|Al0B0Bmjp +@N||A0B0Nu <~AN. <~AN. <~AN. <~AvN. <~A|N. <~A톂N. <~A$N <~AN. <~AN. <~AN. <~AN. <~A톈N. <~A톎N. <~A*N <~AHN <~A톚N. <~A0NpP~AxN4pP~A6Np~ABN <~ATN <~A톸N. <~A톲N.NuEN@ADNBmp$m@$N͈A탤 00A탤N>N,CDNCDNh$m@R$m@ roEN@A NBmzp$m@$N͈At 00AtN>N,C NC Nh$m@R$m@ roEN@p$m@$N͈A| 00A|N>N,C&NC&Nh$m@R$m@ roEN@p$m@$N͈A탄 00A탄N>N,C,NC,Nh$m@R$m@ roEHN@p$m@$N͈A탔 00A탔N>N,C8NC8Nh$m@R$m@ roExN@p$m@$N͈A탌 00A탌N>N,C2NC2Nh$m@R$m@ roEN@p$m@$N͈A태 00A태N>N,C>NC>Nh$m@R$m@ roNupNEN@$m@B$m@("m6NNt$m@("m6NEpNf$m@R$m@ rFoN~$m@("m6NN~x$m@ؒ"m6NA6NAfx*<|~NNuNTA8NANANA퀬N>"p N:/H8 AN AN A N AN `x"mBN /AN>/AN>/A N>/AN>/?<NNT/AN>/AN>,*(&$" _N$A퀬N>"p N:/H8 AN AN A N AN tAN/tA NfBAftrNpNZE֘NNHy,,?<#NN\+@" m8(<z|~Np m8trNp m8t"<N mENR`6N(`.N'`&ND`N`Nf`N0`N`N` @g> @g> @g> @g @g @g. @g. @g. @ g. @ g. @ g. @ g. @ g. @g. @g. @g. @g. @g. @g. @g2 @g& @g& @g& @g& @g& @g(pN\rfN.@pN\rDfN2 pN\rCfN3pN\rbfN4^` ?<NAT+@2?< NATJfNuEGpZN/EpNr"_tN+AAftrNNu|NTAN?<NAT+@pAЭN"EpN\"mNh/-N~"HA,NANgN`E.NlArN&p+@p+@pNnANAp+N*gN.\pNn(-"mHNN(-"mHNNJ(- mAH 00pNn(-"m$NN(-"m$NNJ(- mAH 00pNn(-"m*NN(-"m*NNJ(- mAH 00pNn(-"m0NN(-"mHNp-N$fD(-"m$Np-N$f0(-"m*Np-N$f(-"m0Np-N$fR`+m+mRpNN |E.NlA(<zN|~NA(<*<,<E~NpNpNpNpNNpNpNpN6<0<|4<^rNp-NƠp NƘp-SfEp+NN^A턨Np NƘp-NƠpEOpNtb2<NEep Ntv2<N6<0<4<2<N>6<0<4<2<N>ErpN4<2<N6<0<4<2<N>6<0<4<2<N>EpN4<2<N6<0<4<2<N>6<0<4<2<N>EpN4<2<N6<0<4<2<N>6<0<4<2<N>EpN4<2<N6<`0<$4< 2<N>6<^0<"4<2<N>EpN4<2<,Np-SfpXN"4<2<N`p N"4<2<Np-UfpXN"4<2<N`p N"4<2<Np-SfpXN"4<2<N`p N"4<2<Np-UfpXN"4<2<N`p N"4<2<NNfN`p-SfpXN"4<2<N`p N"4<2<Np-UfpXN"4<2<N`p N"4<2<Np-SfpXN"4<2<N`p N"4<2<Np-UfpXN"4<2<N`p N"4<2<NN̦ANN̸ANAN>`N` AN>`d`XNgRQ퇤|`FNg@Q퇤|`4Ng.Q퇥|`|NgvQ퇥|`jNJgbNf`XpN|`~ @m @o @m @o @m @o @m @o @ m @$o @m< @o`4pN|`,pN|`$ @m @o, @m @oJm @o`pNpNpNp-NNx"mBNN0-H` N<`0N=`(NBd` NB` @g @g @g @g|NuN~SR+mRp+@NN`NuNTALNEpN/ < OK N6"-"_tN$mL$Nǚ`ӪN NTA\NEp>N/Ep Nr"_tN$m\pNp$m\UfN~pNpNpNpNNpNƠpNƘNbpNNpNp NpNp NNEp6NpNpNpNp NNNbEGp4NpNpNpNpNNNbNbNbNbNbE{pZNpNƘEGpNpNpNpNpNNEpJNEp/NENp0NE~p?NpNp)N"NEp#NEpNEpNE pNEp$NECp0NEspNEpNEGpNEp/NENp0NE~p?NpNp)N"NEp#NEpNEpNEpNE p8NpNpNpNpNNNb6<0<"t_rN>6<`0<=4<2< N>6<^0<;4<2<"N>pNpNpNp NNEpN4<12<1NpNpNpNpNNN̦`N̸` NSg` @m @;o` @"m @^o`N~AtrNNǚ`VN EEpN/ < OK N6r"_tN+ApNNǚ`NuNNNǚ` Nupo,EXpBN/ < OK N6r"_tN+AN`N~ENlNTA@NANtANtADNAHNN~pNpNpNp-NNAdClNJBnDBA큼 00p-Sf0-[@g0-Y@g$m@B -NN`$m@ &<:<N/?? -NN8:&N&<x:<N*NB+@pJ-sgpRf8p-NrpNprNAdN> & -$-rvN` -vz$-rvN$m@ A큼N/?? -NN8:&NAdNN m 00 m 24N&$-rUN$m@R$m@ o]p+@ -N`(- mAHCdN&<:<NA큼N&<x:<N*(- m|AH 00(- mAH 24&<:<NA큼N(- mAH 00R -od]p-Uf^ENlAlNA 00ACNA 000-[@gH0-Y@g>$m@BAN>RN`$m@ N/?? <r4<AN8:&N&<x:<N*NB+@p-NrpNprNpJ-sgpRf -6<$-rvN` -vz$-rvN$m@ AN m 00pNpNpNpNN m 24N&tԭr_NpNpNpNpNN0<10N,tԭrNN$m@R$m@ o]p+@ -N`(- mAH 24(- mAH 00(- mAH hl <r4<(- mAH 00(- mAH 24(- mAH 00(- mAH hl <r4<(- mAH 00(- mAH//(- mAH24 NN(- mAH 00(- mAH//(- mAH24 N2(- mAH 00(- mAH hl <r4<(- mAH 00(- mAH hl <r4<(- mAH 00(- mAHN&<:<N/??A큼N8:&N&<x:<N*(- m|AH 00(- mAHN&<:<N/??A큼N8:&N&<x:<N*(- mAH 00(- mAHN&<:<N/??A큼N8:&N&<x:<N*(- mAH 00R -o:]p-Sfp+@ -N`(- mAH//x mAH24 N2/?? <r4<AdNN/??(- mAH 24Nx/??x mAH24 N28:&N8:&N(- mvAH 00(- mvAHC큜NH&<:<N>(- mvAH 00R -o]p-UfRENlp+@ -N`*(- mAH hl <r4<(- mAH 00(- mAHN/??x mAHN8:&N*/?? <r4<AdNN/??(- mAH 24NxN/??x mAHN8:&N*8:&N8:&N(- mvAH 00(- mvAHC큜NH&<:<N>(- mvAH 00R -o]0-[@g0-Y@gpNrpNp-r-NAN>/AdN>/AN>&$rxNpNrpNp-r-NvxpP4<,rxNpNpNpNp-NNpNrpNprNpNrpNprN0-[@gVp+@ -N`:(- mvAHN>/(- mvAHN>&0<,4<*"NR -o]N po.Ep0N/ < OK N6r"_tN$mXN`;|A(<zN|~NA(<*<,<E~Nap-NrpNprNp+@pЭN``(- mvAHN>/(- m|AHN>/xح mvAHN>/xح m|AHN>&$"NR -o]pNrpNprNNNN AtrNpA$<ErN|AftrNNu;|A(<zN|~NA(<*<,<E~Nax"mBNNp-SfpNrpNprNpNpNpNp+@pЭN`(- mvAHClNNB/(- m|AHN>/(- mvAHClNHNB/AN>&$"N(- mvAHClNNB/(- m|AHN>/(- mvAHClNHNB/AN>&$"NR -o6]NN-fp+@pЭN`pNrpNprNpNpNpN(- mvAHClNNB/(- m|AHN>/(- mvAHClNHNB/AN>&$"Nxح mvAHClNNB/xح m|AHN>/xح mvAHClNHNB/AN>&$"NR -o ]A(<?*<|~sNN̦$mP$N/N̦$mPVHHgNfbN̦$mP$N̸$mT$$mP &<:<NAl 00p-NƠpNƘN,x"mBNNpA$trsN`PpNrpNprNpNpNpNp+@pЭN`(- mvAHClNNB/(- m|AHN>/(- mvAHClNHNB/AN>&$"Nxح mvAHClNNB/xح m|AHN>/xح mvAHClNHNB/AN>&$"NR -o0]NNx"mBNptrNpA$trsNAtrNpA$<ErNAftrN|Nu;|A(<zN|~NA(<*<,<E~Na\p+@pNrpNprNNNN AtrNpA$<ErN|AftrNNupfP(- mvAH 24(- mvAH 00(- m|AH 24(- m|AH 00AC,""NTA@N;|ax"mBNNpN-f p+@pЭN` pNrpNprNpNpNpN(- m|AH 24&<:<N/(- mvAHC,NHA퀄NNNB/(- m|AHC,NNB&$"N(- mvAHC퀄NHNB/AN>/(- mvAHC,NHA퀄NNNB/A,CNNB&$"N(- mvAHC퀄NNB/(- m|AHN>/(- mvAHC,NHA퀄N2NB/(- m|AHC,NNB&$"N(- mvAHC,NHA퀄N2NB/(- m|AHC,NNB/(- mvAHC,NHA퀄NNNB/(- m|AHC,NNB&$"N(- mvAHC퀄NNB/(- m|AHN>/(- mvAHC퀄NHNB/AN>&$"N(- m|AHCN(g (- mvAHC퀄NHNBR/(- m|AHC퀄NNB/(- mvAHC,NHA퀄NNNBS/AN>R&$"NpN(- mvAHC퀄NHA,NNNB/(- m|AHC,NNB/(- mvAHC퀄NHA,NNNB/A,CNNB&$"N(- mvAHC퀄NHNB/(- m|AHN>/(- mvAHC,NHA퀄NNNB/(- m|AHC,NNB&$"N(- mvAHC퀄NHNB/AN>/(- mvAHC,NHA퀄NNNB/A,CNNB&$"N(- mvAHC퀄NNB/AN>/(- mvAHC,NHA퀄N2NB/A,CNNB&$"N(- mvAHC,NHA퀄N2NB/A,CNNB/(- mvAHC,NHA퀄NNNB/A,CNNB&$"N(- mvAHC퀄NNB/AN>/(- mvAHC퀄NHNB/(- m|AHN>&$"N(- m|AHCN\g@pN(- mvAHC퀄NHNBR/(- m|AHC퀄NNB/(- mvAHC,NHA퀄NNNBS/AN>R&$"NpN(- mvAHC퀄NHNB/(- m|AHN>/(- mvAHC,NHA퀄NNNB/(- m|AHC,NNB&$"N(- mvAHC퀄NHNB/AN>/(- mvAHC,NHA퀄NNNB/A,CNNB&$"N(- mvAHC퀄NNB/(- m|AHN>/(- mvAHC,NHA퀄N2NB/(- m|AHC,NNB&$"N(- mvAHC,NHA퀄N2NB/(- m|AHC,NNB/(- mvAHC,NHA퀄NNNB/(- m|AHC,NNB&$"N(- mvAHC퀄NHA,NNNB/(- m|AHC,NNB/(- mvAHC퀄NHA,NNNB/A,CNNB&$"N(- mvAHC퀄NNB/(- m|AHN>/(- mvAHC퀄NHNB/AN>&$"NpN(- m|AHCN(gpN(- mvAHC퀄NHNBR/(- m|AHC퀄NNB/(- mvAHC,NHA퀄NNNBS/AN>R&$"N(- mvAHC퀄NHA,NNNB/(- m|AHC,NNB/(- mvAHC퀄NHA,NNNB/A,CNNB&$"N(- mvAHC퀄NHNB/(- m|AHN>/(- mvAHC,NHA퀄NNNB/(- m|AHC,NNB&$"N(- mvAHC퀄NHNB/AN>/(- mvAHC,NHA퀄NNNB/A,CNNB&$"N(- mvAHC퀄NNB/AN>/(- mvAHC,NHA퀄N2NB/A,CNNB&$"N(- mvAHC,NHA퀄N2NB/A,CNNB/(- mvAHC,NHA퀄NNNB/A,CNNB&$"NpN(- mvAHC퀄NNB/AN>/(- mvAHC퀄NHNB/(- m|AHN>&$"NpNR -o4]N/N̦$mPgp.N̸$mTVHHgx"mBNNNfhN̦$mP$N̸$mT$$mT N&<x:<N*&<:<NA, 00$mP &<:<NA퀄 00`xpNND| A퀄C,N\gA퀄CD""` A,CD""p+@pЭN`pNrpNprNpNpNpNpN(- m|AH 24&<:<NR&$"Np$m@$A,N>UN`(- mvAHC퀄NNBT$m@В/(- m|AH 24&<:<N/(- mvAHC,NHA퀄NNNB/(- m|AHC,NNB&$"N(- mvAHC퀄NHNB/AN>/(- mvAHC,NHA퀄NNNB/A,CNNB&$"N(- mvAHC퀄NNB/(- m|AHN>/(- mvAHC,NHA퀄N2NB/(- m|AHC,NNB&$"N(- mvAHC,NHA퀄N2NB/(- m|AHC,NNB/(- mvAHC,NHA퀄NNNB/(- m|AHC,NNB&$"N(- mvAHC퀄NNB/(- m|AHN>/(- mvAHC퀄NHNB/AN>&$"N(- m|AHCN(g(- mvAHC퀄NHNBR/(- m|AHCDNNB/(- mvAHC,NHA퀄NNNBS/AN>R&$"Np$m@$A,N>UN`(- mvAHC퀄NNBT$m@В/(- m|AH 24&<:<N/(- mvAHC,NHA퀄NNNB/(- m|AHC,NNB&$"N(- mvAHC퀄NHNB/AN>/(- mvAHC,NHA퀄NNNB/A,CNNB&$"N(- mvAHC퀄NNB/AN>/(- mvAHC,NHA퀄N2NB/A,CNNB&$"N(- mvAHC,NHA퀄N2NB/A,CNNB/(- mvAHC,NHA퀄NNNB/A,CNNB&$"N(- mvAHC퀄NNB/AN>/(- mvAHC퀄NHNB/(- m|AHN>&$"N(- m|AHCN\g.pNp$m@$A,N>UN`(- mvAHC퀄NNBV$m@В/(- m|AH 24&<:<NR&$"NpN(- mvAHC퀄NHNB/(- m|AHN>/(- mvAHC,NHA퀄NNNB/(- m|AHC,NNB&$"N(- mvAHC퀄NHNB/AN>/(- mvAHC,NHA퀄NNNB/A,CNNB&$"N(- mvAHC퀄NNB/(- m|AHN>/(- mvAHC,NHA퀄N2NB/(- m|AHC,NNB&$"N(- mvAHC,NHA퀄N2NB/(- m|AHC,NNB/(- mvAHC,NHA퀄NNNB/(- m|AHC,NNB&$"N(- mvAHC퀄NHA,NNNB/(- m|AHC,NNB/(- mvAHC퀄NHA,NNNB/A,CNNB&$"N(- mvAHC퀄NNB/(- m|AHN>/(- mvAHC퀄NHNB/AN>&$"NpN(- m|AHCN(gpN(- mvAHC퀄NHNBR/(- m|AHC퀄NNB/(- mvAHC,NHA퀄NNNBS/AN>R&$"Np$m@$A,N>UN`b(- mvAHC퀄NNBT$m@В/(- m|AH 24&<:<N/(- mvAHC,NHA퀄NNNB/(- m|AHC,NNB&$"N(- mvAHC퀄NHNB/AN>/(- mvAHC,NHA퀄NNNB/A,CNNB&$"N(- mvAHC퀄NNB/AN>/(- mvAHC,NHA퀄N2NB/A,CNNB&$"N(- mvAHC,NHA퀄N2NB/A,CNNB/(- mvAHC,NHA퀄NNNB/A,CNNB&$"NpN(- mvAHC퀄NNB/AN>/(- mvAHC퀄NHNB/(- m|AHN>&$"NpNR -od]pNpNrpNprN <r4<A4N2NB/A4CNHNB/ <r4<A4N2NB/A4CNHNB&$"N <r4<A4N2NB/A4CNHNB/ <r4<A,NNALNNNB/A,CNNxATN2NB&$"NpNrpNprN <r4<A,NNALNNNB/ <r4<A,N2ATN2NB/ <r4<A,NNALNNNB/ <r4<A,N2ATN2NB&$"NNNAftrNN |AC,""ATNN~;|NTA@NapN-f Ep3N/Ep Nr"_tN$mXp$mXUg p+@pЭN` pNrpNprNpNpNpN(- m|AH 24&<:<N/(- mvAHC,NHA퀄NNNB/(- m|AHC,NNB&$"N(- mvAHC퀄NHNB/AN>/(- mvAHC,NHA퀄NNNB/A,CNNB&$"N(- mvAHC퀄NNB/(- m|AHN>/(- mvAHC,NHA퀄N2NB/(- m|AHC,NNB&$"N(- mvAHC,NHA퀄N2NB/(- m|AHC,NNB/(- mvAHC,NHA퀄NNNB/(- m|AHC,NNB&$"N(- mvAHC퀄NNB/(- m|AHN>/(- mvAHC퀄NHNB/AN>&$"N(- m|AHCN(g (- mvAHC퀄NHNBR/(- m|AHC퀄NNB/(- mvAHC,NHA퀄NNNBS/AN>R&$"NpN(- mvAHC퀄NHA,NNNB/(- m|AHC,NNB/(- mvAHC퀄NHA,NNNB/A,CNNB&$"N(- mvAHC퀄NHNB/(- m|AHN>/(- mvAHC,NHA퀄NNNB/(- m|AHC,NNB&$"N(- mvAHC퀄NHNB/AN>/(- mvAHC,NHA퀄NNNB/A,CNNB&$"N(- mvAHC퀄NNB/AN>/(- mvAHC,NHA퀄N2NB/A,CNNB&$"N(- mvAHC,NHA퀄N2NB/A,CNNB/(- mvAHC,NHA퀄NNNB/A,CNNB&$"N(- mvAHC퀄NNB/AN>/(- mvAHC퀄NHNB/(- m|AHN>&$"N(- m|AHCN\g@pN(- mvAHC퀄NHNBR/(- m|AHC퀄NNB/(- mvAHC,NHA퀄NNNBS/AN>R&$"NpN(- mvAHC퀄NHNB/(- m|AHN>/(- mvAHC,NHA퀄NNNB/(- m|AHC,NNB&$"N(- mvAHC퀄NHNB/AN>/(- mvAHC,NHA퀄NNNB/A,CNNB&$"N(- mvAHC퀄NNB/(- m|AHN>/(- mvAHC,NHA퀄N2NB/(- m|AHC,NNB&$"N(- mvAHC,NHA퀄N2NB/(- m|AHC,NNB/(- mvAHC,NHA퀄NNNB/(- m|AHC,NNB&$"N(- mvAHC퀄NHA,NNNB/(- m|AHC,NNB/(- mvAHC퀄NHA,NNNB/A,CNNB&$"N(- mvAHC퀄NNB/(- m|AHN>/(- mvAHC퀄NHNB/AN>&$"NpN(- m|AHCN(gpN(- mvAHC퀄NHNBR/(- m|AHC퀄NNB/(- mvAHC,NHA퀄NNNBS/AN>R&$"N(- mvAHC퀄NHA,NNNB/(- m|AHC,NNB/(- mvAHC퀄NHA,NNNB/A,CNNB&$"N(- mvAHC퀄NHNB/(- m|AHN>/(- mvAHC,NHA퀄NNNB/(- m|AHC,NNB&$"N(- mvAHC퀄NHNB/AN>/(- mvAHC,NHA퀄NNNB/A,CNNB&$"N(- mvAHC퀄NNB/AN>/(- mvAHC,NHA퀄N2NB/A,CNNB&$"N(- mvAHC,NHA퀄N2NB/A,CNNB/(- mvAHC,NHA퀄NNNB/A,CNNB&$"NpN(- mvAHC퀄NNB/AN>/(- mvAHC퀄NHNB/(- m|AHN>&$"NpNR -o4]N/N̦$mPgp.N̸$mTVHHgx"mBNNNfhN̦$mP$N̸$mT$$mT N&<x:<N*&<:<NA, 00$mP &<:<NA퀄 00`xpNA,C""A퀄C,N(gA,CD""` A퀄CD""p$mXUg,`ANg AN`N~N̦&<:<NA$ 00N̸&<:<NA, 00p+@pЭN`pNrpNprNpNpNpNpN(- m|AH 24&<:<NUN`(- mvAHC$NHA퀄N2NBT$m@В/(- m|AHC,NH&<:<NUN`T(- mvAHC$NHA퀄N2NBT$m@В/(- m|AHC,NH&<:<NUN`(- mvAHC$NHA퀄N2NBV$m@В/(- m|AHC,NH&<:<NUN`(- mvAHC$NHA퀄N2NBT$m@В/(- m|AHC,NH&<:<N,/ <r4<A,NNALNNNB/ <r4<A,N2NxATN2NB&$"NpNrpNprN <r4<A4N2NB/A4N>,/ <r4<A4N2NB/A4N>rZЁ&$"NpNrpNprN <r4<A,NNALNNNB/ <r4<A,N2ATN2NB/ <r4<A,NNALNNNB/ <r4<A,N2ATN2NB&$"Np-Sf$m@B -NN`^$m@ &<:<N/?? -NN8:&N&<x:<N*NB+@pJ-sgpRfp-NrpNprN <r4<A,NNALNNNB/ -A,N.ATN2NB/ <r4<A,NNALNNNB/ -A,N.ATN2NB&$"N` <r4<A,NNALNNNB/ -A,N.ATN2NB/ <r4<A,NNALNNNB/ -A,N.ATN2NB&$"N$m@ A큼N/?? -NN8:&NAdNN m 00 <r4<A4N2NB/A4N>Э/ m 24N&$"N <r4<A4N2NB/A4N>Э/ <r4<A,NNALNNNB/ -A,N.NxATN2NB&$"N$m@R$m@ o]p-Uf$m@BAN>RN`$m@ N/?? <r4<AN8:&N&<x:<N*NB+@ <r4<A4N2NB/A4N>Э/ <r4<A,NNALNNNB/ -A,N.NxATN2NB&$"NpJ-sgpRfp-NrpNprN <r4<A,NNALNNNB/ -A,N.ATN2NB/ <r4<A,NNALNNNB/ -A,N.ATN2NB&$"N` <r4<A,NNALNNNB/ -A,N.ATN2NB/ <r4<A,NNALNNNB/ -A,N.ATN2NB&$"N$m@ AN m 00pNpNpNpNN <r4<A4N2NB/ -&<:<NA4NNNB/ m 24N&$"NpNpNpNpNN <r4<A4N2NB/ -&<:<NA4NNNB/0<10N,$"N$m@R$m@ o"]pNrpNprN <r4<A,NNALNNNB/A,CNATN2NB/ <r4<A,NNALNNNB/A,CNATN2NB&$"N <r4<A,NNALNNNB/ <r4<A,N2ATN2NB/ <r4<A,NNALNNNB/ <r4<A,N2ATN2NB&$"NpNrpNprN <r4<A4N2NB/A4N>rZЁ/ <r4<A,NNALNNNB/ <r4<A,N2NxATN2NB&$"NpNrpNprN;|A,C""Nu0-Y@gBm2 <r4<A퀌Ng AC,""-g"p+@pЭN`"p-UfVp-SfN(- mvAH//A,NN8:&NTNB/(- mAH//A,NN8:&N*NB/(- mvAH//A,NN8:&NTNB/(- m|AH//A,NN8:&N*NB&$"Nxح mvAH//A,NN8:&NTNB/xح mAH//A,NN8:&N*NB/xح mvAH//A,NN8:&NTNB/xح m|AH//A,NN8:&N*NB&$"Np-Ygp-SWHH@Jg(- mvAH 24&<:<N/??A,NN8:&NTNB/(- mAH//A,NN8:&N*NB&$"Nxح mvAH 24&<:<N/??A,NN8:&NTNB/xح mAH//A,NN8:&N*NB&$"Np-UfN(- mvAH//A,NN8:&NTNB/(- m|AH//A,NN8:&N*NB/(- mvAH//A,NN8:&NTNB/(- mAH//A,NN8:&N*NB&$"Nxح mvAH//A,NN8:&NTNB/xح m|AH//A,NN8:&N*NB/xح mvAH//A,NN8:&NTNB/xح mAH//A,NN8:&N*NB&$"Np-Ygp-UWHH@Jg(- mvAH 24&<:<N/??A,NN8:&NTNB/(- mAH//A,NN8:&N*NB&$"Nxح mvAH 24&<:<N/??A,NN8:&NTNB/xح mAH//A,NN8:&N*NB&$"Np-Wf(- mvAH//A,NN8:&NTNB/(- mAH//A,NN8:&N*NB/(- mvAH//A,NN8:&NTNB/(- mAH//A,NN8:&N*NB&$"Nxح mvAH//A,NN8:&NTNB/xح mAH//A,NN8:&N*NB/xح mvAH//A,NN8:&NTNB/xح mAH//A,NN8:&N*NB&$"Np-Yg&p-Wf(- mvAH 24&<:<N/??A,NN8:&NTNB/(- mAH//A,NN8:&N*NB&$"Nxح mvAH 24&<:<N/??A,NN8:&NTNB/xح mAH//A,NN8:&N*NB&$"N(- mvAH 24&<:<N/??A,NN8:&NTNB/(- mAH//A,NN8:&N*NB&$"Nxح mvAH 24&<:<N/??A,NN8:&NTNB/xح mAH//A,NN8:&N*NB&$"Np-Sf(- mvAH 24&<:<N/??A,NN8:&NTNB/(- mAH//A,NN8:&N*NB&$"Nxح mvAH 24&<:<N/??A,NN8:&NTNB/xح mAH//A,NN8:&N*NB&$"Np-Uf(- mvAH 24&<:<N/??A,NN8:&NTNB/(- mAH//A,NN8:&N*NB&$"Nxح mvAH 24&<:<N/??A,NN8:&NTNB/xح mAH//A,NN8:&N*NB&$"Np-Sf6p-Sf(- mvAH//A,NN8:&NTNB/(- m|AH//A,NN8:&N*NB/(- mvAH//A,NN8:&NTNB/(- m|AH//(- mAH24 N2/??A,NN8:&N*NB&$"Nxح mvAH//A,NN8:&NTNB/xح m|AH//A,NN8:&N*NB/xح mvAH//A,NN8:&NTNB/xح m|AH//xح mAH24 N2/??A,NN8:&N*NB&$"Np-YgVp-SWHH@Jg>(- mvAH 24&<:<N/??A,NN8:&NTNB/(- m|AH//(- mAH24 N2/??A,NN8:&N*NB&$"Nxح mvAH 24&<:<N/??A,NN8:&NTNB/xح m|AH//xح mAH24 N2/??A,NN8:&N*NB&$"Np-Uf(- mvAH//A,NN8:&NTNB/(- m|AH//(- mAH24 NN/??A,NN8:&N*NB/(- mvAH//A,NN8:&NTNB/(- m|AH//A,NN8:&N*NB&$"Nxح mvAH//A,NN8:&NTNB/xح m|AH//xح mAH24 NN/??A,NN8:&N*NB/xح mvAH//A,NN8:&NTNB/xح m|AH//A,NN8:&N*NB&$"Np-YgVp-UWHH@Jg>(- mvAH 24&<:<N/??A,NN8:&NTNB/(- m|AH//(- mAH24 NN/??A,NN8:&N*NB&$"Nxح mvAH 24&<:<N/??A,NN8:&NTNB/xح m|AH//xح mAH24 NN/??A,NN8:&N*NB&$"Np-Wf (- mvAH//A,NN8:&NTNB/(- m|AH//(- mAH24 NN/??A,NN8:&N*NB/(- mvAH//A,NN8:&NTNB/(- m|AH//(- mAH24 N2/??A,NN8:&N*NB&$"Nxح mvAH//A,NN8:&NTNB/xح m|AH//xح mAH24 NN/??A,NN8:&N*NB/xح mvAH//A,NN8:&NTNB/xح m|AH//xح mAH24 N2/??A,NN8:&N*NB&$"Np-Yg p-Wfz(- mvAH 24&<:<N/??A,NN8:&NTNB/(- m|AH//(- mAH24 N2/??A,NN8:&N*NB&$"Nxح mvAH 24&<:<N/??A,NN8:&NTNB/xح m|AH//xح mAH24 N2/??A,NN8:&N*NB&$"N(- mvAH 24&<:<N/??A,NN8:&NTNB/(- m|AH//(- mAH24 NN/??A,NN8:&N*NB&$"Nxح mvAH 24&<:<N/??A,NN8:&NTNB/xح m|AH//xح mAH24 NN/??A,NN8:&N*NB&$"Np-Sf>(- mvAH 24&<:<N/??A,NN8:&NTNB/(- m|AH//(- mAH24 N2/??A,NN8:&N*NB&$"Nxح mvAH 24&<:<N/??A,NN8:&NTNB/xح m|AH//xح mAH24 N2/??A,NN8:&N*NB&$"Np-Uf>(- mvAH 24&<:<a/??A,NN8:&aNB/(- m|AH//(- mAH24 a/??A,NN8:&axNB/(- mvAH 24&<:<ad/??A,NN8:&abNB/(- m|AH//(- mAH24 a,/??A,NN8:&a~NB&$"Nxح mvAH 24&<:<a~/??A,NN8:&a~a/xح m|AH//xح mAH24 a~/??A,NN8:&a~Zan/xح mvAH 24&<:<a~D/??A,NN8:&a~Ba,/xح m|AH//xح mAH24 a~/??A,NN8:&a}a~&$"NR -oR]NupNpNpNp NNpNpNpN6<0<ot2<NpNpNpNpNrpNprN6<0<jt2<N6<0<ht2<N>EpNt22<N6<pZtF2<N>6<pZtF2<N>Ep NtU2<N6<pst_2<N>6<pst_2<N>E%p Ntn2<N6<0<tx2<N>6<0<tx2<N>E/pN4<2<N6<0<4<2<N>6<0<4<2<N>EBpN4<2<NEVpN4<2<NEGp N4<2<N6<0<4<2<N>6<0<4<2<N>EnpN4<2<N6<0<4<2<N>6<0<4<2<N>E}pN4<2<N6<0<,4<2<N>6<0<,4<2<N>E4pN4<'2<N6<0<E4<12<N>6<0<E4<12<N>EpN4<@2<N6<`0<`4<H2<N>6<^0<^4<J2<N>EpN4<Y2<,Np-SfpXN"tU2<N`p N"tU2<Np-UfpXN"tn2<N`p N"tn2<Np-WfpXN"4<2<N`p N"4<2<N-fpXN"4<2<N`p N"4<2<Np-SfpXN"4<2<N`p N"4<2<Np-UfpXN"4<2<N`p N"4<2<Np-WfpXN"4<'2<N`p N"4<'2<Np-YfpXN"4<@2<N`p N"4<@2<NNfN`p-SfpXN"tU2<N`p N"tU2<Np-UfpXN"tn2<N`p N"tn2<Np-WfpXN"4<2<N`p N"4<2<N-fpXN"4<2<N`p N"4<2<Np-SfpXN"4<2<N`p N"4<2<Np-UfpXN"4<2<N`p N"4<2<Np-WfpXN"4<'2<N`p N"4<'2<Np-YfpXN"4<@2<N`p N"4<@2<NN̦Aay N̸AaxAax`zN`VAax`N`xpN|`pNJgzQ퇨|`nNJgxQ퇨|`vNJgnQ퇨|`bNJgZQ퇨Q퇨`PNgJQ|`>Ng8Q|`,Ng&Q|`NgQ|`Nf`pN|`Jm @FoB @Fm @Zo< @_m @soB @xm @oH @m @oN @m @oR @m @oV @m @,oZ @1m @Eo^ @Hm @`ob @am> @o``4pN|`,pN|`$ @m @o @m @oJm @o`pNpNpNp-NNx"mBNNpoAftrNN`AftrNNu| NTA,N m,NBmp-NƠpNƘpNpNpNpNNpNpNpN6<0<|4<^rNEpFNN^ m,N m,p N*g m,NJA큜 00x"mBNN0-H` N<`0N=`(NBd` NB` @g @g @g @g| AftrNN | NTA4N m4NBmjp-NƠpNƘpNpNpNpNNpNpNpN6<0<|4<^rNEpINN^ m4N m4p N*gJ m4NJAd 00 <r40-H+@bpNpNpNp-NNN~pNƠpNƘA~N -br Ё/ mx%*|~Nx"mBNN`tx"mBNNN̦$mP$N̸rЁ$mT$N,p m$mT$$mP"NN̦$mPVHH/N̸rЁ$mTgp.NʀgNfNFfNgx"mBNNNSfp m$mT$$mP"NNUfp m$mT$$mP"NAftrN|N ATNpNpNpNpNNpNpNpN6<0<|4<^rNAftrNp-NƠpNƘEp9NNSfN̦+@N̸+@p-NrpNp-r-N`hx"mBNNN̦+@N̸+@N, -&-$-"-NN,N̦VHH/N̸gp.NJWHHgNf`x"mBNNN̦$mP$N̸$mT$N, -$mPВ/ -$mTВ&$mT$$mP"NN/N̦$mPgp.N̸$mTVHHgNf NFfrNSox"mBNNAftrNpNrpNprN|NuNTA Npo,E[p(N/ < OK N6r"_tN+AN`p+@pNrpNprNp7NƘp-NƠATNpNpNpNx"mBNNpN6<00<A4<2rsNpNp+@ -N`pNpNpNp-NN(- mvAHakrЁ/(- mAH 24N&4<@"N(- mvAHak/(- mvAHak~&0<.4<,"NR -ob]A턊(<A*<,<>~xN m (<T*<0,<E~sNN̦$mP$N̸$mT$x"mBNNN̦/N̸/p m $"NA턊$<>rxNN/N̸$mTgp.N̦$mPVHHgNf`x"mBNNNSfN̦/N̸/p m $"NNUfN̦/N̸/p m $"NA턊$<>rxNAftrNN NTA Npo,E[p(N/ < OK N6r"_tN+AN`p+@pNrpNprNp7NƘp-NƠATNx"mBNNp+@ -N`ppNpNpNp-NN(- mvAHaivZ/(- m|AHai`[/(- mAH 24N&$"NR -o]AftrNN x"mBNNNTA NA(NANtpo,E[p(N/ < OK N6r"_tN+AN`p+@pNpNpNpNrpNprNpNpNpNpNNATNp+@pNpNpNpNN6<0<|4<^rNp(NƘp-NƠEpNx mAHNE;pN(- mAHNp-NƠpNƘEpNN^(-"mTNNx"mBNN(-"mTNNf(-"mTNNJ(- mAH 00p-Sf(- mAH//x mAH24 afB/?? <r4<AdafD/??(- mAH 24Nx/??x mAH24 ae8:&ak8:&ah(- mAH 00(- mAHC큜ae&<:<ae(- mAH 00p-UfE.Nl(- mAHaj/??x mAHaj8:&ae>/?? <r4<AdaeH/??(- mAH 24Nxajh/??x mAHajL8:&ad8:&aj8:&ag(- mAH 00(- mAH 24&<:<adA큜ad(- mAH 00pNpNpNp-NN(- mAHae^/(- mAH 24N&4<@"N(- mAHae(/(- mAHae&0<.4<,"a~Zx"mBNN`AftrNN ATNpadpabpa`pa^afpapa$pa"6<0<|4<^ra}Jp-NƠpNƘEp:NE=p5NNTAPNATNA$N$mPB$mTB m$NNSfx"mBNNx"mBNNN̦+@N̸+@pa~@pa~Jpra~N`x"mBNNN̦+@N̸+@ -o+m -o+m m$(-*-,-.-NN, -&-$-"-a|N̦VHH/N̸gp.NJWHHgNf^NJfAftra~N,N̦$mP$N̸$mT$ -"-$mPҒD/ -$mT"Ё&$mT$$mP"a{x"mBNN`> -"-$mPҒD/p m$t$mTԒ"a~lx"mBNNNSgNSgNUfTE֘NNAftra~,|N NTAXNErpN/Ep Nr"_tN$mXp$mXSfNNHy?<#NN\+@"amN ATNANgpAtra}Aftra}NuA(<*<|~a>NuANNuATNANgANAftra}FNuATNN~Aftra},Nux"mBNNpa{pa{pa{p a{a{pa{pa{pa{6<0<)t]2<aypa{pa{pa{pa{Hpa{Rpra{V6<0<$tX2<ay6<0<"tZ2<ayEpNt}2<N6<0<4<2<ay6<0<4<2<aypa{.pa{,pa{*pa{(a{0EpN4<2<N6<0<4<2<ay\6<0<4<2<ayHpazpazpazpazazEpN4<2<N6<0<4<2<ay6<0<4<2<axpazvpaztpazrp azpazxEp N4<2<N6<`0<4<2<ax6<^0<4<2<axEpN4<2<,Np-YfpXN"4<2<a`p N"4<2<ap-]fpXN"4<2<a`p N"4<2<ap-r fpXN"4<2<a`p N"4<2<azNfap`p-YfpXN"4<2<aR`p N"4<2<a>p-]fpXN"4<2<a"`p N"4<2<ap-r fpXN"4<2<a~`p N"4<2<a~N̦Aa^N̸Aa^tAa^(`ao`8Aa^`P`DNg>Q퇞|`2Ng~Q퇞|`zNgtQ퇞| `hNgbNf`XpN|`~ @m @o @m @o @m @o @m @oN @m @o @m< @o`4pN|`,pN|`$ @m @o@ @m @oJm @o`\pawpawpawp-awawx"mBNa}Nu|NTAXNx"mBNa}PATa}Hpawrpawppawnp awlawtpaw(paw2paw06<0<ot2<auXpawpawpaw pavpavprav6<0<jt2<au 6<0<ht2<au^pavpavpavEpNt<2<a|6<,pntZ2<au&6<pntZ2<aupN"ti2< a|6<,0<ts2<at6<0<ts2<atpN"4<2< a|d6<,0<4<2<at6<0<4<2<atpN"4<2< a|*6<,0<4<2<at6<0<4<2<atnpN"4<2< a{6<,0<4<2<atH6<0<4<2<at4pN"4<2< a{6<,0<4<2<at6<0<4<2<aspN"4<2< a{|6<,0<4<2<as6<0<4<2<aspN"4<2< a{B6<,0<14<2<as6<0<14<2<aspN"4<,2< a{6<`0<V4<>2<as`6<^0<T4<@2<asL0ac`ZAaR`NgJNf`@ @>m: @Vo`2pa~`*pa~`" @m @`o @m @oJm @oN@l"AaQ`acL`vpa}`nNgh|``NgZ|`RNgL|`DNg>|`6Ng0|`(Ng"|`Ng|` Ng|`pa}L`Jm @For @Zm @nol @sm @ol @m @ol @m @ol @m @ol @m @ol @m @ol @m @1ol @am @onN̦@oAaPj`ab`vpa|`nNgh| ``NgZ| `RNgL| `DNg>| `6Ng0| `(Ng"|`Ng|` Ng|`pa|`Jm @For @Zm @nol @sm @ol @m @ol @m @ol @m @ol @m @ol @m @ol @m @1ol @am @on`paipaipaip-aiaip-`pAPaj`vpAPa^`vpAPaR`vpAPaF`vpAPa:`vpAPa.`jpAPa"`^pAPa`RpAPa `FpAPa~`:pAPa~`.pAPa~`"pAPa~`pAPa~` pAPa~`pAPa~` @g6 @g: @g> @gB @gF @gJ @gN @gR @ gV @ gZ @ g^ @ gb @ gf @gj @gn @gtx"mBNanDAftraivAPNgAba~ Epa}"HAPacEp-adCbanE#pa}rCbtak$mXp$mXUghp$mXSf pagpagpagp-agagp$mXWf"pagpag0<agp-agagaz>APtramAhx2z2|~ajXx"mBNamF`tx"mBNam6N̦$mP$N̸rЁ$mT$N,pAh$mT$$mP"ahDN̦$mPVHH/N̸rЁ$mTgp.NʀgNfNFfNgNSf$x"mBNalpAh$mT$$mP"agNUf$x"mBNal~pAh$mT$$mP"agAftragpaftpafrpafpp-afjafr`~|x"mBNalpafpaepaepae6<0<ot2<ad"paepaepaepaepaeprae6<0<jt2<ac6<0<ht2<ad(E2<ab>6<^0<T4<@2<ab*6<"pdtd2<abpEpayR4<O2<,aipac^pachpacf6<pntZ2<haa6<^pntZ2<Jaapac,pac6pac46<0<ts2<haa\6<^0<ts2<JaapabA ac6<0<4<2<haa(6<^0<4<2<JaadpabA&acR6<0<4<2<ha`6<^0<4<2<Jaa.pabA,ac6<0<4<2<ha`6<^0<4<2<Ja`pabTA8ab6<0<4<2<ha`6<^0<4<2<Ja`pabA2ab6<0<4<2<ha`P6<^0<4<2<Ja`paaA>abz6<0<14<2<ha`6<^0<14<2<Ja`Vp-SfpXax*ti2<ag`p axti2<agp-UfpXaw4<2<ag`p aw4<2<agp-WfpXaw4<2<agr`p aw4<2<ag^p-YfpXaw4<2<agB`p aw4<2<ag.p-[fpXawn4<2<ag`p awZ4<2<afp-]fpXaw>4<2<af`p aw*4<2<afp-_fpXaw4<2<af`p av4<2<afp-QfpXav4<,2<af`p av4<,2<afnp-r fpXavti2<OafR`p avti2<Oaf@p-r fpXav~4<2<Oaf"`p avj4<2<Oafp-r fpXavL4<2<Oae`p av84<2<Oaep-r fpXav4<2<Oae`p av4<2<Oaep-r fpXau4<2<Oae`p au4<2<Oaexp-rfpXau4<2<OaeZ`p au4<2<OaeFp-rfpXau4<2<Oae(`p aup4<2<Oaep-rfpXauR4<,2<Oad`p au>4<,2<OadN̦AaDN̸AaDzNfaU`p-SfpXatti2<ad`p atti2<adp-UfpXat4<2<adv`p at4<2<adbp-WfpXat4<2<adF`p at4<2<ad2p-YfpXatr4<2<ad`p at^4<2<adp-[fpXatB4<2<ac`p at.4<2<acp-]fpXat4<2<ac`p as4<2<acp-_fpXas4<2<ac`p as4<2<acrp-QfpXas4<,2<acV`p as4<,2<acBp-r fpXasti2<Oac&`p asnti2<Oacp-r fpXasR4<2<Oab`p as>4<2<Oabp-r fpXas 4<2<Oab`p as 4<2<Oabp-r fpXar4<2<Oab`p ar4<2<Oab~p-r fpXar4<2<Oab``p ar4<2<OabLp-rfpXar4<2<Oab.`p arv4<2<Oabp-rfpXarX4<2<Oaa`p arD4<2<Oaap-rfpXar&4<,2<Oaa`p ar4<,2<OaaN̦AaAZN̸AaANAaA`>aR`ZAa@`NgJNf`@ @>m: @Vo`2pam `*pam`" @m @`o @m @oJm @oN@l"Aa@`aR>`vpal`nNgh|``NgZ|`RNgL|`DNg>|`6Ng0|`(Ng"|`Ng|` Ng|`pal>`Jm @For @Zm @nol @sm @ol @m @ol @m @ol @m @ol @m @ol @m @ol @m @1ol @am @onN̦@oAa?\`aQ`vpak`nNgh| ``NgZ| `RNgL| `DNg>| `6Ng0| `(Ng"|`Ng|` Ng|`pak`Jm @For @Zm @nol @sm @ol @m @ol @m @ol @m @ol @m @ol @m @ol @m @1ol @am @on`paXpaXpaXp-aXaXx"mBNa^AftraYN|NuATa^PpaXzpaXxpaXvpaXtaX|paX0paX:paX86<0<|4<^raV`p-NƠpNƘENpBaiNgx"mBNa]p-`*paWpaWpaW`vpaWpaWpaW`rpaWpaWpaW`rpaWpaWpaW`rpaWpaWpaW`~paWrpaW|paWz`zpaW^paWhp aWf`vpaWJADaW`vpaW:paWDpaWB`bpaW&paW0paW.`NpaWA aW`>paWA&aW`.paVA,aW`paVA8aWt`paVA2aWd`paVA>aWR` @g @g @g @g @g @g @g @g& @ g. @ g: @ gF @ gN @ gV @g^ @gf @gpN̦$mP$N̸$mT$aMvNf`NSfpaVd$mT$$mP"paVpaVLNUg`AftraW&NuATNgATa[0-[@f ATCa\xATakalAftraVNux"mBNa[paUpaUpaUp aUaUpaUfpaUppaUn6<0<ot2<aSpaUBpaULpaUJpaUpaU praU6<0<jt2<aS^6<0<ht2<aSpaTpaUpaUEpajt<2<a[6<,pntZ2<aSd6<pntZ2<aST6<"pdtd2<aSptd2< aS6<,0<ts2<aS&6<0<ts2<aS6<"p}t}2<aSZpt}2< aR6<,0<4<2<aR6<0<4<2<aR6<"0<4<2<aSp4<2< aR6<,0<4<2<aR6<0<4<2<aR6<"0<4<2<aRp4<2< aR:6<,0<4<2<aRP6<0<4<2<aR<6<"0<4<2<aR~6< 0<4<2<aQ6<,0<4<2<aR6<0<4<2<aQ6<"0<4<2<aR.6< 0<4<2<aQt6<,0<4<2<aQ6<0<4<2<aQ6<"0<4<2<aQ6< 0<4< 2<aQ$6<,0<14<2<aQ`6<0<14<2<aQL6<"0<'4<'2<aQ6<0<-4<!2<aP6<`0<V4<>2<aQ6<^0<T4<@2<aP6<"pdtd2<aQBEpah$4<O2<,aXhpaR0paR:paR86<pntZ2<haP6<^pntZ2<JaP6<pdtd2<raPptd2<aP\6<0<ts2<haPt6<^0<ts2<JaPb6<p}t}2<raPpt}2<aP6<0<4<2<haP26<^0<4<2<JaP6<0<4<2<raP`p4<2<aO6<0<4<2<haO6<^0<4<2<JaO6<0<4<2<raPp4<2<aO6<0<4<2<haO6<^0<4<2<JaO6<0<4<2<raO6<0<4<2<aO6<0<4<2<haON6<^0<4<2<JaO:6<0<4<2<raO|6<0<4<2<aN6<0<4<2<haN6<^0<4<2<JaN6<0<4<2<raO,6<0<4<2<aNr6<0<14<2<haN6<^0<14<2<JaN6<0<'4<'2<raNp-SfpXafZti2<aV`p afHti2<aUp-UfpXaf.4<2<aU`p af4<2<aUp-WfpXae4<2<aU`p ae4<2<aUp-YfpXae4<2<aUr`p ae4<2<aU^p-[fpXae4<2<aUB`p ae4<2<aU.p-]fpXaen4<2<aU`p aeZ4<2<aTp-_fpXae>4<2<aT`p ae*4<2<aTp-QfpXae4<,2<aT`p ad4<,2<aTp-r fpXadti2<OaT`p adti2<OaTpp-r fpXad4<2<OaTR`p ad4<2<OaT>p-r fpXad|4<2<OaT `p adh4<2<OaT p-r fpXadJ4<2<OaS`p ad64<2<OaSp-r fpXad4<2<OaS`p ad4<2<OaSp-rfpXac4<2<OaS`p ac4<2<OaSvp-rfpXac4<2<OaSX`p ac4<2<OaSDp-rfpXac4<,2<OaS&`p acn4<,2<OaSa|Aa2a|Aa2a|faD`p-SfpXac.ti2<aR`p acti2<aRp-UfpXac4<2<aR`p ab4<2<aRp-WfpXab4<2<aRv`p ab4<2<aRbp-YfpXab4<2<aRF`p ab4<2<aR2p-[fpXabr4<2<aR`p ab^4<2<aRp-]fpXabB4<2<aQ`p ab.4<2<aQp-_fpXab4<2<aQ`p aa4<2<aQp-QfpXaa4<,2<aQ`p aa4<,2<aQrp-r fpXaati2<OaQV`p aati2<OaQDp-r fpXaa4<2<OaQ&`p aan4<2<OaQp-r fpXaaP4<2<OaP`p aa<4<2<OaPp-r fpXaa4<2<OaP`p aa 4<2<OaPp-r fpXa`4<2<OaP`p a`4<2<OaP|p-rfpXa`4<2<OaP^`p a`4<2<OaPJp-rfpXa`4<2<OaP,`p a`t4<2<OaPp-rfpXa`V4<,2<OaO`p a`B4<,2<OaOayAa/ayAa/~Aa/2`>a@`ZAa/"`aygJayf`@ @>m: @Vo`2pa[:`*pa[2`" @m @`o @m @oJm @oayX@l"Aa.`a@n`vpaZ`nay0gh|``ay"gZ|`RaygL|`Dayg>|`6axg0|`(axg"|`axg|` axg|`paZn`Jm @For @Zm @nol @sm @ol @m @ol @m @ol @m @ol @m @ol @m @ol @m @1ol @am @onax@oAa-`a?@`vpaY`naxgh| ``awgZ| `RawgL| `Dawg>| `6awg0| `(awg"|`awg|` awg|`paY@`Jm @For @Zm @nol @sm @ol @m @ol @m @ol @m @ol @m @ol @m @ol @m @1ol @am @on`paFpaFpaFp-aFaFx"mBaw$aL|AftraGNup-` paFpaFpaFp+@pЭaK`|paF.paF8praF<(- mvAHa+/(- m|AHa+$p"aDxح mvAHa+/xح m|AHa+$p"aD^R -oz]` paEpaEpaEp+@pЭaK`|paE|paEpraE(- mvAHa+(/(- m|AHa+$p"aCxح mvAHa*/xح m|AHa*$p"aCR -oz]` paEpaE&paE$p+@pЭaJd`|paDpaDpraD(- mvAHa*v/(- m|AHa*b$p"aC.xح mvAHa*D/xح m|AHa*.$p"aBR -oz]` &paDjpaDtpaDrp+@pЭaI`|paDpaD"praD&(- mvAHa)/(- m|AHa)$p"aB|xح mvAHa)/xح m|AHa)|$p"aBHR -oz]` tpaCpaCpaCp+@pЭaI`paCdpaCnpraCr(- mvAHa)U/(- m|AHa(U/(- mvAHa(T/(- m|AHa(T&$"aArxح mvAHa(U/xح m|AHa(U/xح mvAHa(~T/xح m|AHa(fT&$"aA paBpaBpraBR -o]` HpaBpaBpaBp+@pЭaG`paB8paBBpraBF(- mvAHa'W/(- m|AHa'W/(- mvAHa'V/(- m|AHa'V&$"a@Fxح mvAHa'W/xح m|AHa'jW/xح mvAHa'RV/xح m|AHa':V&$"a?paA\paAfpraAjR -o]` paA`paAjpaAhp+@pЭaF`paA paApraA(- mvAHa&Y/(- m|AHa&Y/(- mvAHa&X/(- m|AHa&vX&$"a?xح mvAHa&VY/xح m|AHa&>Y/xح mvAHa&&X/xح m|AHa&X&$"a>pa@0pa@:pra@>R -o]`pa@4pa@>pa@pa>pra>(- mvAHa$b/(- m|AHa$N$p"a=xح mvAHa$0/xح m|AHa$$p"aVpa>`pa>^p+@pЭaC`|pa>pa>pra>(- mvAHa#/(- m|AHa#$p"apa8:pa88pa86pa84a8aIaPXAPaLATaLAaL$mPB$mTBBBBBagSfx"mBaga=jx"mBaga=JagN+@agX+@pa7pa7pra7`x"mBaga=&ag+@ag"+@ -o+m -o+m mxح*-|ܭ.-a9aUR -&-$-"-a5PafVHH/afgp.afJWHHgaffZAftra7`Hx"mBafaJgvQ퇸|`ja^*JgbQ퇸|`Va^JgNQ퇸|`Ba^`0Qpp aDN4<2<a3`hPppXaD64<2<a3`P @g @g`Ba]`0Qqp aD 4<2<a3`hPqpXaC4<2<a3`P @g @g`Ba]z`0PlpXaC4<2<a3j`hQlp aC4<2<a3R`P @g @g`Ba]6`0PmpXaC4<'2<a3&`rQmp aCj4<'2<a3`Z @g @g`La\`0PnpXaC>4<@2<a2`.Qnp aC&4<@2<a2` @g @g`a\f`,pa>R`"Jm @Fo4 @Fm @Zo. @_m @so4 @xm @o: @m @o@ @m @oF @m @o| @m @o @m @,o @1m @Eo @Hm @`oT @am> @oR`4pa=`,pa=`$ @m @oh @m @oJm @o`Bx"mBa\a1pa+pa+pa+p-a+a+pJ-lgpRf<-@pJ-qgpRf|`Q퇺pJ-pgpRf|`Q퇻pJ-mgpRf-@pJ-ngpRf<-@pJ-qgpRf|`Q퇾pJ-pgpRf|`Q퇿Aftra+|NuATa0pa*pa*pa*pa*a*pa*|pa*pa*6<0<|4<^ra(p-aTXpaTJEpEa/aY$mPgp.aY$mTVHHgaYgnaY Sox"mBaYPa.EaNvAftra* |Nupa(pa(x"mBaYa.p-`|pa(pa(pa(p a(a(pa(hpa(rpa(p6<0<4<2<a&6<0<4<2<a&Ep a> 4<2<a.NE*p a=4<2<a.6p2aQpa(&pa($pa("p-a(a($;|x"mBaXJa-`Q퇴pa'pa'pa'p a'a'pa'pa'pa'6<0<4<2<a%6<0<4<2<a& Ep a=B4<2<a-E3p a=*4<2<a-np2aQpa'^pa'\pa'Zp-a'Ta'\;|x"mBaWa-`Jgl @g.Nupa&pa&x"mBaWVa,p-`|pa&pa&pa&p a&a&pa&pa&pa&6<0<4<2<a$6<0<4<2<a%E(AVa?`p.aL\paLNEp2a4Ja>A\a?paH@Ѓdh`^HCH@:">H@`H2g&HCH@:<HC>H@Ѓd(`HCH@:H@r` gDBgkDE`HDBDEaBDBNugDBa8DBNutNua 11!Nux`xa`a` 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`p` 24?o4<&8: 3f AcDA@Aр[SBDBT`SBAрkfJAftTSWa>H&8:a>H&0rHGGdHGGdSWDуdi?<>0rHGGdHGGdSWDуdi2?<>0rHGGdHGGdSWDуd&2 H@kփAр[SBkփejRAd RdQRBJjDBNutNuCEdSW`?<,>CEdGeH@0r`fJCgz?<0rÐdSWЃdi?<0rÐdSWЃdid?<0ÐdSWЃd&2 H@kփAр[SBkփejRAd RdQRBJjDBNutNu?<0riP?0i?`?<`RapEgP`LJg&B.C`a8aD*9fap-I,=|p4aHz*9g ENp9` _a &nO:NMI6KT$<Nu[1][Error +111][Return]ER g g>Jf`Ar Hjr-D@Hd0H@H 0H@0CNuAF"H [1][fSEfNu`HQ?< NA\Nu"_KTMI6O: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|Nua`Vp?a a?<LNA``NuNu`aza`aaaHA-Hhp alpMah=@F?<NNTT@A0r p0Q`pdr ta0.F=@=@ACp,2QAp 2Qa a`\``pea>pCR2Ad0A2r22ab"<F0<NBLNurt=@:=A@=B NuHz(` NFbHz ?<&NN\Nu9@gNuW@Nu|^|  R^,T:&0D4(*<B$,>2::(   F..26"8@"PQ1!P1P!0PP`0  q#aaa Fa O: n*N`.`4NuNuNupc?a0QNurdAd6Ag,B(dB(dH Ao<a0toBAp`!NuNu?<OA`d?<IA`Z0<H Ia"Lt Ig Og Ug Ag Rg,afNup`a"`p`N0a6fHRa"<>Er$Wgr STD:gr COM:g r LPT:f4FA$_0=@Dk"~CA0< Bha B2"pNu$_AF Ge><QBAFpNuafgzp=` aZgzpaTaRFBd&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<.aJFkSFk4arQa`&HaFFaZQ&8*L/a,H܆jDBJ.:gtBn:Nu @$@JfS a`QNu$Aad`QBNuHza`HzaFH `$HPHQ0(ika8 $I _a IUd4Id4Id$Id `$$$$Q _Jf,aId4Id4Id$Id `$$$$Q @NuSaIdIdId`Q @Nup `/ a$I> _aG` VNuag`af`ae `ac` acpNuadpNu/ aF$I> _a<4Ae4v` VfANuHP0(R@kBa" $I _a IUd4Id4Id$Id `$$$$Q @JfNuNup `aSAfNuag`af`ae `ac` acpNuadpNuaSAkfJANuH HPhkJa $I _arIUd4Id4Id$Id `$$$$Q @JgSL`QNup `$a,Af` VNuag`af`ae `ac` acpNuadpNua4@m4v` Vf@Nu|H`|i`|l@H~|`ze`z`zd@H>|`th`tpa ".TNutj`t@H|`rk` rf`rg`r5=@|0`t)`t` tr`t2`t@-A=B|`pv8`v(`v-` v!`v `v@-AH |`JHAHBHCHDHEHFHG-HfAD-HH@-@H|p`z`z `z8.^n\Dn\@Hp tr=ED`n\n^HB=@Bnp rt=|D`n\n^n\n^A0000000000prt`Nn\n^648HH`prt`*n\n^n\n^8HH`prt`"_A `4RB`"_A42L\A` L0GF11Q-p`prHQ`Bp'rta n2rt6(SC0(S@apaB\papava0paRG=GYfx-IC=C=C$tBft=B=B(tFJ=BBBB*Do>Eo:@l6Al2DDk =DVBnDEk =EnBn@cVo Acno,_NuAH`/=@a _a]Ak024E$ Bb5B5A6CC5CK5C:8AB0000DkxEkt00A<:d>:bSFSGFn\GnXDDk0BhDEk1EBh Fchh Gchh0hb"0hbpmrt-|T^H-|TrL` Nu-HNJ?<NNT-@XDbDEbEBb=ET=DV-|PBLBp n20(L=CJ?=B^C=C\=Cj@drAdnED??RGRF=GF=FHtGJ=BltBft=B`=BnGOpЇЇ b naB222-IfHVMF,_Nup `RT np`??/ a8, > _a.4$FAFp_@[000][vx`* [g" ]g |g QSx` xQSrQ][vx`* [g" ]g |g QSx` xQStQ]BAF0-H,=@p4a42HNu 24DBaDB11!Nu 24DBa DBNu 24x6o<Ce(FC BdЄeNu B/dHDDdRdQRBNu&<:<`ߜg BbUC BcjNu BcHDDdSkg RBAрjNuNu0ftNuB H@"jNuE"ea0"ep`&6NuE "e a"d&&6NuE"e a"d66NuE"e aԵ"d666NuE"e a"d6Nu <}a$Ia `$XaH`a$HR?<NNT @"_ <}Nuvn\n^~Ha0 @xepw2AtE4*jDjHB t`0QTAtp =| D` 24JBoRBk NugSBk` 24JBoCkNugCk`aR`QNuHg"cc/ 0)a0 _$PS@kH2QNu2(g$PRAA4DBH%$Y2Pg 1AHRAA%NuBhNupLADaHTBnBL*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=BNuA*pBQBX".g paBNupra6HP?<NNT~U@g~tb3[ABpr0 0BBB R@ @fAB0000PB0Tp`00000\0X0Tp`T@00000P0BXpnT0raVA0p1| 1AQBX0$HTH0P P0Tp`0NuH(Fa$L(FNuSk [0NupNupa`p>`HPaa _&X Pf/|~Kzag @ ep 2tCN"2 S@HQCػR"_d BTAA3ApCB4$I2a222B"0@2A\xva@gF2#M 443BS@ -f HQCػR"_d@BAAb8RGRC`3RSG5G5C J1DcaRF Fe `RG GdNuXABSF1F41R1h4x1EDg"<Bp-A` n"g(t( f h fpH`aLRB`NuS@ A00HNuAPgh ghgh$g0<NupNupNupNupNuaa p-@-@(-@4-@@=|Lpra HPKLCDHXA0 1PP1P1PA L?P<@>AFGH 0000X0000X0000HSG~2gtLx0az Q&_NuSAkA> A1@H<`Lp`Ha-_\NuBJAgLPDEFbGb?HXaL0S@k@> AP"G0(JgRJ)@g1@2fJ2HPL<P0a W1@A00 pia=|@pia _C""pe`,?4<6HPa~ _2tLx0an=n|=| pia0.2paxH\P`PH|SCSDABH0`(S@k@ A=pfNup?a0QLa`S@k.@ A0gBP=@a"pga:p aJ@fnpahQ`B\Lrt`vNuHS&I. FVa8.:.L4.RBĴ@cBnaL4.RBŴAcJSA=A`@pJ.afrJk8 Eg,2. pg  qfL=A=Apjrta`8a>`2 d. Vg" gt gZ gn fPSnjBn`D=@0.n\=@0.R@S@n^=@prtaZRn0neBna(Q>j4&_NuBn`?<HyNM\`Rn<SFEneSn`2NuS@kD@ AC0g.?a$=_p 2.aPL6Fgavp `p`p`TNuBS@kl@ A=Pa=| phaJL`4p-@"<$&HA-HH-HLBnpmrt`RHz ?<&NN\Nu n2MJFo`JGo\H 8N-@-@ p-@*-@-@ H0H00(L=B=B&=CC=C=C$tBft=B=B(NuaHz ?<&NN\NuL n2M(8N-D-D x-D*-D| J@jpJAjrRBhe4(RChe6(@otAop=@=@NAXOJkpNu0< aH`0< CF2p`Tp a2`p CFp`@a CF"p`2Hza`Hye4"J`B.@=|DNua.@FpAR@C` @H` @HHye4aӔa"H`Hye4`Hye4 24`@H` @HHye4a\aJ"Hav`Hye4`Hye4 24`B.@=|DNuB.@a`=GDgNup`da`a0CF"E p`Hz?<&NN\`* n2LLJFj|@c<JGj~Ac>02 h|N n2HHNu80a|DHz ?<&NN\Nu| n2 h N n21@NuaaJjtNuaHPa pJk NuCg.BJ@g  g &g, $g %gNLNutNuRpt`2Rpt`Rptr ae OgX Xgn HgSRB ae Fb$0k  c_  c b退`tSHkajNuRB0 b b瀀`RB0 fрd`aPp`aHp`ap3o&Bo"Nu>.D<jRGg>VGg:TGjp`@HPa0CF$IpR@  f _aHd2Hd2`"QNu`<.DHSGFaAEg f< &_Nua`HNu.dfa Bo"=n`r>.D<jRGg.D<jRGg*VGgTGjp`"<.Da*`" yo" faa` yo" f aaAF "g pR@0 ,g  g  fHp`:pR@0  g  g "fR@0 ,g  g  fHpRU@"_  f#o"$H _aN`QNupR@0 ,g"  g  fa~ (fR~Nua ~ `a~NuaJkHQ ! gRf _NuXX~Nu0j\@??<NMXJk .dgp Nu`<.DHSGFa ,g gAEf< &_Nu ."Ff +"g ,g`?<%NNTNu 24JBkCkNuCktNu 24JBoSBNugRBNu2(gbc  P"H`Nu/0Har2  _ 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 @ Ee0NuagNu4.rf?HyaJNM\Nu=|D`Lja "zEfpadppa`AFEg0PaEfaFRE`ܾEfp a@a8?nnnp a2RF`<a¼nnoS@f nhfSnl=Ah=FnNup` papq4.rf?HyaհNM\Nu=|DHa@LNu|A0"P2(@e2<EF`QHP=|DJ@g$abAF$HpR@ 0 f _a`QNuHPp?ap a _2<|0`C&pHQ/Hy@NA NuC pa:NuHQ/Hy?NA Nu&g4 FgagJAga2< R@AdSf0Nu0ap Ce`&g4 FgaJBjagPAe CbRa R@Sf0Nu FgRabg JBjatAeaJAg RP0 pNu`0 Fg6a*gJAga @ea4RP 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%`B9`$H EaA AerQBL@͉H Ia("H _/ aa _/ ?aAF-H AerQB2"_A&-H A e ` \gQBa9gaZe -|p[`pZaRajAF"H0.g "Hg \f`A&fS !.gR EF _a`QNuHz?<&NN\ @Nu x NuA@Bh`A@a n@!|}Nu _S@Gd@GHpp/0NuGNpp#fpNup`p`#Nu?/NT` pNuNHMAp f9kd n2!|y`v ||9"XLv:g 4zg*Ag61 cg Jg ;e, ]b& Te` Db; g fg  bJg fg fg,HC#0j ` Hx Dg;0L{QYBj@1BA gbШ dA gd BBdL@Nu wHHKMPPR g,g&y`pBy{PXB@etAg1B# `\HCHSGvg*1B f  f&< # XB@etAf&_`A|CF4gZ"HyNN#y.>"NN @A C#P B?< NA\#{/a?< NA\AB0N }NuA#}: }* x hg3&yvAC`g#P Nu?<"NNT @ 9yfg!@ HzT?<&NN\3NuB#|4F4NuHz ?<&NN\NupAC&E|rJg" XX\QNuA&Cr g"XQ!ACf NuHx`(Hx`"Hx`Hx`Hx`Hx` Hx`Hx !4VxH A3}( Ni LHMO:|1R/9{?< NAO:pdz`~/Ma͚,_NNu(a؀.dfaҸjNu?a0` ?a2@@a` a Nu4.`Af n2LR@RANu4.`g S@SAHNutbpbr??pa(pYa"0a0`.dfNudg"J9kfa4fp`Ƣd`/9dg/9dg/9NupA~D-H=@|p4anjS@Nu[2][Programmstop?][Stop|Cont]aNf"_O:N"_O:HQ`6 9?g"9?gJ9fga"AO:Np\B`G06#f&#-KNuk"c" C gT6f`Pv6"cgRCC(D#8`>p b @?H@0-@P a˚HV n2MF-@-E B*BHHHJCo2JDo.4(=B=B&6=CC=C=C$tBft=B=B(,_NuD@v`v??NMXJNuJ@k??<NM"UAf J@fH@Nuaj0fpNu\@`a`]@><CF Ipa<0HNua`]@><CF Ipa Nu?|`?a0R@f|0aHJFkHPa _Nupo`HSHP&I>g\SG??<NMXJk Q _t&_Nu&_`Ppt`pt@S@kZ@Ha08L6BPA E=Z=A-H: DNexMQBB*gJnf߾NuaJANuag `af`apNuapNuC`C``C` C`C-KJhfJfRRRRRRRHP? @CFH~8:E#P&<2 `b$bYEf`"RAf rЁЀ`&Ѐe "ЀeЁdp`(JAkfgRer?DDЁaAa|8$HX :CFE` YEjT"_$P"2trDDd0d d d` QjNu`aDa 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"&nNuaT n2L6(n\n^HHHNua4 n20(n\HNua" n20(n^HNua n20(HNu`a Nu؄*؄؅CH`t؅X`$_  IaJYHR"H @`ʘ؄*؄؅AHNu؅X`$_ IaYHR"H` nd$HJf-HS Nup"`hHPa _a2`QNua JH aL0Nua`&x1100110011001100&x1001100110011001&x0011001100110011&x0110011001100110&x1100110011001100&x1001100110011001&x0011001100110011&x0110011001100110&x1100110011001100&x1001100110011001&x0011001100110011&x0110011001100110&x1100110011001100&x1001100110011001&x0011001100110011&x0110011001100110&x1100110011001100&x0110011001100110&x0011001100110011&x1001100110011001&x1100110011001100&x0110011001100110&x0011001100110011&x1001100110011001&x1100110011001100&x0110011001100110&x0011001100110011&x1001100110011001&x1100110011001100&x0110011001100110&x0011001100110011&x1001100110011001&x1111110011111100&x0111111001111110&x0011111100111111&x1001111110011111&x1100111111001111&x1110011111100111&x1111001111110011&x1111100111111001&x1111110011111100&x0111111001111110&x0011111100111111&x1001111110011111&x1100111111001111&x1110011111100111&x1111001111110011&x1111100111111001&x0000011100000000&x0000001110000000&x0000000111000000&x0000000011100000&x0000000001110000&x0000000000111000&x0000000000011100&x0000000000001110&x0000000000000111&x1000000000000011&x1100000000000001&x1110000000000000&x0111000000000000&x0011100000000000&x0001110000000000&x0000111000000000&x1111110011111100&x1111100111111001&x1111001111110011&x1110011111100111&x1100111111001111&x1001111110011111&x0011111100111111&x0111111001111110&x1111110011111100&x1111100111111001&x1111001111110011&x1110011111100111&x1100111111001111&x1001111110011111&x0011111100111111&x0111111001111110&x0111111111111100&x1111111111111000&x1111111111110001&x1111111111100011&x1111111111000111&x1111111110001111&x1111111100011111&x1111111000111111&x1111110001111111&x1111100011111111&x1111000111111111&x1110001111111111&x1100011111111111&x1000111111111111&x0001111111111111&x0011111111111110&x0011111111111110&x0001111111111111&x1000111111111111&x1100011111111111&x1110001111111111&x1111000111111111&x1111100011111111&x1111110001111111&x1111111000111111&x1111111100011111&x1111111110001111&x1111111111000111&x1111111111100011&x1111111111110001&x1111111111111000&x0111111111111100DESK Info-----------------------123456DATEI ASCII-Datei laden... * Bild laden... Bildschirm speichern... Werte eingeben --------------------------- Programm beendenARBEITEN Liniengraphik * Punktgraphik * Balkengraphik * 3D-Balkengraphik * 3D-Feldgraphik * ------------------------- Y-Achse skalieren * Y-Achse einteilen * X-Achse Basiswert * Lin / log Skalierung * X-Achse Offset * X-Achse komprimieren * SCHRIFT Beschriften 0 Grad * Beschriften 90 Grad * X-Achse beschriften (1) X-Achse beschriften (2) Y-Werte in Graphik ---------------------------- Bereich lschen * Ausschnitt kopieren * zustzliche Linien * Rahmen zeichnen * BILDPUFFER Bild entfernen ------------------------------ Pufferinhalt hinzufgen Bildschirminhalt in Puffer 3D-Feld Bildschirm holen 3D-Feld-Bildschirm in Puffer OPTIONEN Schriftgre Sonderzeichen * ------------------------- Fllmuster whlen... * Fllen------------------------- Symbole whlen * Standardabweichungen Linienart whlen * Graphiktiefe * ***GTOOLSCI.PARGtoolsci.par Graphic Tool Science PD Programm zur Erstellung wissenschaftlicher GraphikenCopyright by Stephan Jansen Welle 4 3403 Friedland 1Men-Repeat Graphic Tool Science: | | Dr. St. Jansen, Welle 4 | 3403 Friedland 1 OK :\*.*Unteren Bereich der Y-Achse angeben......: Oberen Bereich der Y-Achse angeben......: *.picDie im Speicher befindlichen | Daten editieren oder neue | Datenreihe eingeben? Edit | Zurck | Neu Datenreihe eingeben.............(Return)Datenreihe ansehen.........(Pfeiltasten)Datenreihe korrigieren........(Clr/Home)Datenreihe einfgen.............(Insert)Datenreihe lschen..............(Delete)Ende der Dateneingabe................(-)Hilfestellung.....................(Help) Datei speichern? JA | Nein . Datenreihe ansehenX-Wert.............. Y-Wert.............. Standardabweichung.. Datenreihe hinzufgenDatenreihe gelscht. Datenreihe korrigieren Korrigierter X-Wert............. Alter X-Wert wird bernommen..... Korrigierter Y-Wert.............. Alter Y-Wert wird bernommen..... Korrigierte Standardabweichung... Std.abweichung wird bernommen... . Datenreihe eingebenBitte die Zahl fr die Teilung der Y-Achse eingeben: Modus der Koordinaten-achsen whlenX-Achse linearX-Achse logarithmischY-Achse linearY-Achse logarithmisch Das geht nicht Das Dateiformat | stimmt nicht! | Unbedingt korrigieren! OK | INFO D a t e i f o r m a t d e r A S C I I - D a t e i Erluterung dazu in Klammern (Die Linien sind die Seitenbegrenzungen.) + (Plus am l i n k e n , o b e r e n Rand = Anfang 1 (Position des X-Wertes) 15.878 (Position des Y-Wertes) 3.8 (Standardabweichung oder 0, wenn keine (Leerzeile) 2 87.9 5.8 3 ( etc. ) 78.69 4.8 8 (Position des X-Wertes) 10 47.8 3.99 - (Minus bedeutet Ende der Datei.) Kein Screenformat Zuwenig Daten im Speicher,| um eine Graphik erstellen| zu knnen!Zuwenig Daten im Speicher| um Linien zu zeichnenBalkenbreite noch nicht|fixiert. Trotzdem weiter? JA | NeinStandardabweichungen:nach obennach untennach oben und untenStd.abweichungen ausBegrenzung der Standard-Querbalken obenQuerbalken untenkeine Querbalken Bitte eingeben, um wieviel Pixel die Graphik verschoben werden soll. Bitte eingeben, um wieviel Prozent die Graphik komprimiert werden soll. Verschiebung der X-Achse nach oben in Prozent :Zuerst Datei erstellen | oder laden!Text eingeben: Text eingeben : Linke Taste: Strahl positionieren. Rechte Taste: Abbruch Erster und letzter Wert: X-Skalenwert: Bei gedrckter linker Taste Gre des Bereiches angeben. Mit gedrckter linker Taste lschen. Rechts Ende. | Schlu? JA | NEINSchriftgre whlen:kleine Schriftmittlere Schriftgroe SchriftSonderzeichen whlen: Das Zeichen - - |horizontal oder vertikal| ausgeben? 0 Grad | Ende | 90 Grad Fllmuster whlen:Fllen: Mit linker Maustaste ausfhren. Rechte Maustaste: Fertig.Symbol whlen: Mit linker Maustaste Objekt umrahmen. Linke Taste: berlagern. Rechte Taste: berschreiben. Beide Tasten: Abbruch.Linienart whlen:durchgezogene Liniegestrichelte Liniepunktierte Liniestrich-punkt. LiniePfeil nach linksPfeil nach rechtsEinstellung wirkt aufdas Koordinatendiagrammdie Liniengraphikeingefgte Linien Mit linggggker Taste Rahmen ziehen u. positionieren. Rechts: Abbruch fixiert whlbar3D-Balkenbreite fixiert whlbarHintergrund einTiefe der Graphik in Pixel angeben (nach vorne): Tiefe der Graphik in Pixel angeben (nach hinten): Voreinstellungen speichern?Gtoolsci.PAR Alle Graphikeinstellungen | auf den Ursprungswert | setzen? JA | Nein HilfefunktionF1: Wiederholung der (*) letzten Menanwahl (*)F2: 2D-Balkenbreite fixieren bzw. freigebenF3: 3D-Balkenbreite fixierenF4: Hintergrundlinien ein/ausF9: Grundeinstellung herstellenF10: Grundeinstellung abspeichernUNDO Aktion rckgngig machenDivision 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 RETURNPMatrizenoperationen nur fr|ein- oder zweidimensionale|FelderQMatrizen haben nicht die|gleiche OrdnungRVektorprodukt nicht definiertSMatrizenprodukt nicht definiertTScalarprodukt nicht definiertUTransposition nur fr|zweidimensionale MatrizenVMatrix nicht quadratischWTransposition nicht definiertXFACT/COMBIN/VARIAT|nicht definiertZFehler bei Local[Fehler bei For\Resume (next) nicht mglich|Fatal]Stapel-FehlerbBefehl nur ab STE mglichdGFA-BASIC Compiler 3.5E D| Copyright 1986-1990|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  d  RV,ZZNNNNV0D(\ "P8:@Dx"v ~hR,4*lVDDz@h <:Hd>@@@@TB,<(   PҮzX66:@@@@@@LJ8*\ ,xZ\\@Jd*b 66:@@@@@@@ "|$& * (\n *~ f`((@4,r"&Xb0L$PB 8~| 8 $@& $x PSehr geehrter Benutzer, ich hoffe, da Ihnen dieses Programm gefllt. Das Programm kann aus entsprechend aufbereiteten ASCII-Dateien oder mit Hilfe der eingebauten Datenaufnahmefunktion Graphiken erstellen. GraphicToolScience ist nicht in der Lage, diese Graphiken auszudrucken. Ich finde das allerdings nicht unbedingt wichtig, weil die Graphiken in Textverarbeitungsprogramme wie Signum oder Graphikprogramme wie Stad etc. exportiert werden knnen. ber diesen Weg lassen sich natrlich Graphiken zu Papier bringen. Hier noch einige zustzliche Informationen, die nicht aus dem Programm selbst zu verstehen sind: Menpunkt DATEI Datei laden ASCII-Datei laden, die mit einem Texteditor erstellt worden ist. Sie mu folgendes Format haben: + (Pluszeichen oben links = Anfang der Datei) erster x-wert erster y-wert erste Standardabweichung (zwischen jedem Wertepaar steht eine Leerzeile) zweiter x-wert zweiter y-wert zweite Standardabweichung dritter x-wert dritter y-wert dritte Standardabweichung etc. letzter x-wert letzter y-wert letzte Standardabweichung - (Minuszeichen: Ende der Datei) Bitte sehen sie sich doch das Dateiformat einfach mal in den Beispieldateien an! Bild laden: Bild im 32000 Byte Format von Disk/Harddisk einlesen Bildschirm speichern: Bildschirm im 32000 Byte Format speichern Werte eingeben: Vom Programm aus knnen Werte an- oder eingefgt werden oder eine vllig neue Datei erstellt werden. MENPUNKT Arbeiten: Sie knnen whlen zwischen einer Punktgraphik, Liniengraphik, Balkengraphik und 3D Balkengraphik. Die Gre der Balken und 3D Balken lassen sich mit der Maus einstellen. Ist eine Balken- gre genehm, so fixieren Sie diese mit den Tasten F2 fr die zweidimensionalen und mit F3 fr die dreidimensionalen Balken. Erneutes Drcken auf F2 bzw F3 macht das Fixieren rckgngig. Weiter knnen Sie die Graphiken manipulieren: zB. skalieren, logarithmische Achsen whlen, Basislinie verschieben etc. Am besten probieren Sie das mal aus. MENPUNKT SCHRIFT Unter diesem Menpunkt findet man Mglichkeiten, die Graphiken zu beschriften, Teile der Kurven zu kopieren, lschen oder berschreiben. MENPUNKT BILDPUFFER Das derzeitige Bild kann abgespeichert werden, um es in nach- folgende Graphiken einzublenden. Das akuelle Bild wird also nur berlagert und nicht gelscht. Damit lassen sich z.B. mehrere X-Achsen in einer Graphik darstellen. Der 3D-Puffer wird intern fr die Darstellung mehrerer Reihen von dreidimensionalen Sulen benutzt. Er l0t sich als zustzlicher Puffer "zweckentfremden". Der 3D-Puffer berschreibt das derzeitige Bild. MENPUNKT OPTIONEN Allerlei Voreinstellungen, die sich nicht sofort auf die Graphik sondern erst nach erneuter Anwahl von Punktgraphik, Liniengraphik, Balkengraphik oder 3D Graphik auswirken. Funktionstasten: F1: Menrepeat. Das bedeutet, da der letzte Meneintrag erneut aufgerufen wird. Die Menpunkte, mit denen das geht, tragen ein Sternchen (*). F2: Balkenbreite fixieren Nach Anwahl von Balkengraphik stellen Sie mit der Maus oder mit ALT PFEIL die Balkenbreite ein. Drcken Sie ALT SHIFT PFEIL, so wird die Einstellung genauer. Wollen Sie mehrere Balkengraphiken erzeugen, die aus irgendeinem Grund gleich breit sind, so knnen Sie die Breite der Balken mit F2 fixieren. Von Bedeutung kann das sein, wenn mehrere verschiedene Graphiken zu einer vereint werden soll. F3: Drei D-Balkenbreite fixieren Desgleichen wie F2, der Wirkungsbereich erstreckt sich auf die 3D-Balken. F9: Reset Alle Einstellungen und Vernderungen werden rckgngig gemacht. Die Parameter nehmen die voreingestellten programminternen Werte an. F10: Voreinstellungen speichern Bestimmte von Ihnen gettigte Einstellungen werden permanent gespeichert und stehen beim Programmstart zur Verfgung. Das Programm legt dafr eine Datei (GTOOLSCI.PAR). Mchten Sie diese permanenten Einstellungen nicht mehr, so lschen Sie einfach diese Datei. Dann greift das Programm auf die internen Grundeinstellungen zurck. HELP. Zeigt die Tastenbelegung UNDO: Macht die letzte Aktion rckgngig. Viel Erfolg Dr. Stephan Jansen . my.. myMULTTOOLACC TR nMULTTOOLRSC MULTTOOLTXT :|O8MULTTOOLPRG TR nMULTTOOLDOC 3|OEAD_IT ``k,?AON,-J<-H:-FxvtraT0-L>-J<-H:-Fxvtr0|aT0-L<-J:-H8-Fvt"-a"-pa0-L>-J<-H:-Fxvtr0|aTj0-L>-J<-H:-Fxvtr0|aTJpa;B0-H mafjgp+@0-2H mafPgp+@0-4H maf6gp+@0-:H mafgp+@0-N`6N`.N*`xN^`pNb`hN``N`XN`PN``H @g @g @g @g @g @g @g @g @ g @ g @ g @ gNupaHtppa5DCFa?PpaH`pqa50CLa?< < ~Aa]p aHA`aR("ma`aP/AXaP"_aJJgA`//Nra8-NH"ma_a1RmN0-NkoYpa)NuEkp aE"a`.$m0$$m0 fNEkpaD/Ekp aDr"_ta7+ApfREkpaD/Ekp aD/Ekp aD"HA^,*aWA^a_$m0$$m0 f*`|`$Ekp aDz/Ekp aDl"_a+ha%0- ra4p+Aa5*;@Pp aDrPaG4CRa;?< NMTAhaBmf <r4<A`a: f^Aha/A` 24&<x:<aaA` 24&<x:<ataf A`Cp""a9fG <r4<Apa(g0pa;"/ <\*.*a;/a; "HA^,*aNTA^aP/p*a;C^a?ZJgBpA^a"ma:JgBp ma7lp\a#\g mr ap a.~$m0$$m0 op$m-J<-H:-Fxvtra;0-L>-J<-H:-Fxvtr0|a;0-L<-J:-H8-Fvt"-a#`58a5~A,a1A(a1A$a1A a1Aa1Aa1Aa1Aa10-ra"z+A0-H maM @/pa2"ma"ah0-H maL @/pa2"mat"aB0-H maL @/pa2"maN"a0-H maL @/pa2t"ma("a0-H maLx @/pa2N"m a"a0-H maLR @/pa2("m$a"a0-H maL, @/pa2"m(a"a0-H maL @/pa1"m,a"a^ -a!;AF;BH;CJ;DL0-L>-J<-H:-Fxvtra90-L<-J:-H8-Fvt"-a!:`3`Em!p a0/ <\*.*a1t/a0"HAx,*aCAxaF/p*a1p\a.gHmxHm~?jDGGe GbFGNuG GbFGNu~Nu 24HjDBaDBNuBe B/dAрQ4<`jBNutNu $HkBk Bj*DBNupNuDBBkBjDBDNuf gp`` 246jDCCe0 C/jC C@j C jr0H@{0>H@Nur{0Nu{0NutNu 246j(:<DCaf AfBfNu`Va 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`xa`a` 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` <r4<NupNJBktNu@AB`&8:~.gNa`&8:` &8:@ABJBgJEgJAfJ@f<jDFF Fdx.HGއQJGfjHGH??UGgkte <r4<` 24HL&8*a dgHL8a`L8aTJ_ k:NuH 24kBaL8a`#TJ_LkNuTJ_Lja&8* <r4<`HL aJBfL agLJBjDBa8L8a@a#DBNuLJBjDBaL8a"`#lp`n 24?o4<&8: 3f AcDA@Aр[SBDBT`SBAрkfJAftTSWa>H&8:aH&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?`?<`m>apEqdqxgPqf`LJg&B.C`a8aD*9qpfap-I,=|p4aHz*9qpg ENp9qd` _a &nO:NMqxIKm@$<Nu[1][Error +111][Return]Em> g g>Jf`Ar Hjr-D@Hd0H@H 0H@0CNuAF"H [1][fSEfNu`HQ?< NA\Nu"_Km@MqxIO: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|Nua`Np?a a?<LNA``NuNu`aza`aaaHA-Hhp alpMah=@F?<NNTT@A0r p0Q`pdr ta0.F=@=@ACp,2QAp 2Qaa`\`Xpea>pCR2Ad0A2r22a"<20<NBLNurt=@:=A@=B NuHz(` N1Hz ?<&NN\Nu9gNuWNu|^|  R^,T:&0D4(*<B$,>2::(   F..26"8@"PQ1!P1P!0PP`0  q#aaa fa O: n*NNuNuNupc?a0QNurdAd6Ag,B(dB(dH Ac<atgBAp`NuNu?<OA`d?<IA`Z0<H IaLt Ig Og Ug Ag Rg*afNup`abp`V0afHRa>>Er$Wgr STD:gr COM:g r LPT:f2FA$_0=@D~CA0< BhaB2"pNu$_AF Ge><QBAFpNuahgzp=` a\gzparAHPBHQ?NA\ _Jk`Nu/ IaL$$IAHPB Ba8AHPBHQHRBg?<VNAO _ _JkNuHz `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<.aJFkSFk4arQa`&HaFFaZQ&8*L/aL,H܆jDBJ.:gtBn:Nu(:HE:a`4JVHHarЁЀ`z@`z8H@0`z(a^*d2d2d"d""d""""d"`""""""""""""""""QjNup"X2g6C/ !UAk$!Q"_Nu @$@JfS aN`QNu$Aa0`QBNuHz a``HzaH `2HPHQ0(ika $I _aIUd4Id4Id$Id `$$$$Q _Jf,aId4Id4Id$Id `$$$$Q @NuSaIdIdId`Q @Nup `V/ aV$I> _aLG` VNuag`af`ae `ac` acpNuadpNu/ a$I> _a4Ae4v` VfANuHP0(R@kBa $I _aIUd4Id4Id$Id `$$$$Q @JfNuNup `aSAfNuag`af`ae `ac` acpNuadpNuadSAkfJANuH HPhkJaV $I _a>IUd4Id4Id$Id `$$$$Q @JgSL`QNup `aAf` VNuag`af`ae `ac` acpNuadpNua4@m4v` Vf@Nu/HP0(X@kHa $I _aIUd4Id4Id$Id `$$$$Q @Jf$Nu $Nup `FaHYAfNuag`af`ae `ac` acpNuadpNuaSAkEF$p VfWANu?HP0(T@kHa $I _aIUd4Id4Id$Id `$$$$Q @Jf4Nu0XNup `aUAfQNuag`af`ae `ac` acpNuadpNuajSAkXf SAkXfJANuth`tpa ".Nutj`t@H|`Rrk` rf`rg`r5=@|0`:pM` pO`p`po`(~*@-AH|`t)`t` tr`t2`t@-A=B|`HAHBHCHDHEHFHG-HfAD-HH@-@H|p`rAD-@f-H `r6 @`0.bHNupNuz`z `z8.^n\Dn\@Hp tr=ED`.n\n^648HH`prt` n\n^n\n^8HH`prt`"_A `4RB`"_A42L\A` L0GF11Q-p`prHQ`Bp'rta n2rt6(SC0(S@apaB\papava0pa _aV4$FAFp_@[000][vx`* [g" ]g |g QSx` xQSrQ][vx`* [g" ]g |g QSx` xQStQ]BAF0-H,=@p4ab2HNu 24DBaDB11!Nu 24DBa DBNu 24x6o<Ce(FC BdЄeNu B/dHDDdRdQRBNu&<:<`Dg BbUC BcjNu BcHDDdSkg RBAрjNuNu0ftNuB H@"jNu Lx6oFCe0FC BdЄe!Nu B/dHDDd`A*p4. g=BNuao aШNupNuaJFoHPJhja?<?B?<BNAO _*kBg?/(?<BNAO Jk NuNafoazJBkAf`a|??/?<BNA.k \Hx?<BNAO [HHNux`x*0ao< 2fJjr`0Nu~dGdEH<Nup`0@F@AJhg PLNu`dLJg(HPBHh/??<@NAXLf ѨLNuJkp%`(aJBja!| ??<>NAXOJkpNu0< aF`0< CF2p`p a0`p CFp`aCF"p`Hza `Hz"J`B.@=|DNua.@FpAR@C` B.@=|DNuB.@a=GDgNup`da`aCF"E p`xJg$_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`B$_a!HN$_a؄1HN$_aHN$_a 00N 246jDC C b H&<;)8<\:<aِaHa4(g8HP b6 a^$_// Z4HQ`S@Q _Q _a, _Nua$`p`AFtЀvQBNuAFt0 9c^QBNuAFt 0QBNua`a`aCF 0gS JfS`J@a Acr `@a A cr `@a\ A cr `N8.$H`Ha@LHP?.d=hdN8.=_d2 "@$Y4Ad2`0Q @Nu@`r ??a"P02R@H`2Q Nur ?HQa _/ ?a0 _4gSB@c:Ad,J@gB@BmS@,. RB6Vg(R F"GQpNufJ@fRB`fS@kVft0HNuaaJjtNuaHPa pJk NuCg.BJ@g  g &g, $g %gN8NutNuRpt`2Rpt`Rptr ae OgX Xgn HgSRB ae Fb$0k  c_  c b退`tSHkaNuRB0 b b瀀`RB0 fрd`ap`ap`ap3TBTNu>.D<jRGg>VGg:TGjp`*HPa0CF$IpR@  f _aHd2Hd2`"QNu`R<.DHSGFaAEg f< &_Nua`,Nu.dfaBT=n`r>.D<jRGg:VGg&TGjp`Ֆ<.DaAFa$JkNup#`z z fa2a` z f a"aAFa  f#TJkzNu0:g0.D<jRGg(VGgTGjp`<.Da&` z faa` z f aa|AF "g pR@0 ,g  g  fHp`:pR@0  g  g "fR@0 ,g  g  fHpRU@"_  f#T$H _a<`QNupR@0 ,g"  g  fa~ (fR~Nua ~ `a~NuaJkHQ ! gRf _NuXX~Nu0j\@??<NMXJk .dgp Nu`<.DHSGFa ,g gAEf< &_Nu ."Ff +"g ,g`H~=H|=@p3`ٶ=A|a~A09RyH@@-HtBe2QB p#`x?<%NNTNua$ZXNuHzxlJj xo`xdJjxc, EJDD`DDD Dz$X Pf-K&e "&J$IpSNup`L4 fd$R$&k(*ڄNdNjRofNu.#XpHXte(*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 @ Ee0NuagNu4.rf?Hya.NM\Nu=|D`LjazEfpadppa`AFEg0PaEfaFRE`ܾEfp a@a8?nnnp a2RF`<annoS@f nhfSnl=Ah=FnNup` papq4.rf?HyaڔNM\Nu=|DHa,LNu|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 FgRa~g JBja鐰AeaJAg RP0 pNu` Fg6aFgJAga @eaPRP 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:LFac.܆܆ ISk"X0HHaa<CF Ipa<0HNuah`]@><CF Ipa Nu?|`?aF0R@f|0aHJFkHPa _Nupo`ƾHSHP&I>g\SG??<NMXJk Q _t&_Nu&_`ƎaJANuag `af`apNuapNuC`C``C` C`CJhfJfRRRRRRRHP? @CFH~8:E#P&<2 `b$bYEf`"RAf rЁЀ`&Ѐe "ЀeЁdp`JAkfgRer?DDЁaAa*8$HX :CFE` YEjT"_$P"2trDDd0d d d` QjNu`BaDa 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"&nNuaP n2L6(n\n^HHHNua0 n20(n\HNua n20(n^HNua n20(HNua@:ffNuarNua J[HHNu:nfa@ z^0NuJg6$:Pf,H?<"NNT&@p/&gra :,ga &Lr`r??Q@gHyNM\0Nu#gNu"H YJQfNu YH瀀aLP|HPGkBC&֛֛֛֛֛(HDDCBg6Cv6C[RCF8[[[aL6C[RCF8:GkBFWfTL L-KA `b$I\bfBjQNu$YbfBjQNu؄*؄؅CH`d؅X`$_  IaHR"H @`̘؄*؄؅AHNu؅X`$_ IahHR"H`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|a8-IHQB0aV _JNuz"-A=B|a-I`p`p-@Nu#j:HrYaFpYazLa^pY` :/rYapYa2Hyp?o?<?NAO JkpY`ȴ/a `H.gZ <r4<?k"SWga˦`TL8Haa KOPIEREN Mit dieser Funktion lassen sich Dateien kopieren. Wie auch immer, dabei sollte man einiges beachten. Nmlich ein paar Sachen, ohne die man nicht zurechtkommen wird mit der Funktion. Wie soll sie denn berhaupt funktioklappen? Nun, das sollte ganz einfach sein. Zuerst wird in der _ersten_ Fileselectbox das QUELLfile ausgewhlt, sprich: Die Datei, die irgendwohin kopiert werden soll. Sodann erscheint drei- sterweise _schon wieder_ so eine Fileselectbox. Hier mu jetzt aber der Name der ZIELdatei eingegeben werden. Es reicht nicht, den Ordner zu whlen und OK zu drcken, nein, der Name mu eingegeben werden! Das Programm kann ja schlielich nicht wissen, wie die Zieldatei nun heien soll, gelle. Nun, das wre also diese Funktion. > VERSCHIEBEN Dazu mu ich jetzt eigentlich nicht mehr viel sagen, denn die Verschieben-Funktion ist fast identisch mit der Kopie- ren-Operation. Mit einem Unterschied: Nachdem die Datei kopiert ist, wird die QUELLdatei gelscht. Mehr nicht. > LSCHEN Lcherlich, das zu erklren. Wer eine Datei lschen will, suche sie einfach in der Fileselectbox, klicke sie an und dann auf OK (oder doppelt anklicken oder per Hand ein- tippen, wie auch immer). Sodann wird die Datei un- widerbringlich gelscht. Also immer schn vorsichtig mit dem Druck auf die Return-Taste... > HARDCOPY TO DISK Manchmal will man einfach mal den Bildschirm so ab- speichern, wie er gerade ist. Vielleicht weil er so schn ist, oder weil vielleicht ein Programm Scheie gebaut hat und man das dem Hersteller unverblmt zeigen will, oder vielleicht ist ja auch nur etwas zu sehen, was andere nicht unbedingt sehen sollen? Na, was kmmert's uns? Wie dem auch sei, nach Anwhlen dieser Funktion erscheint wieder so eine dumme Fileselectbox, in der man den Namen des ab- zuspeichernden Bildes geflligst anzugeben hat. Sodann wird der aktuelle Bildschirm im 32k-Format auf Disk/Platte abge- speichert. > DISKINFO Da gibbet eigentlich auch nicht viel zu erklren. Die Chose ist recht einfach und zeigt den freien Speicherplatz aller verfgbaren Laufwerke an. Laufwerk B geht leider nicht, und Festplattenpartitionen habe ich dreisterweise erst mal nur bis 16 MB gemacht. Beschwerden bitte vorwurfsvoll an mich! > TELEFON Wer braucht nicht andauernd ein Telefonregister? Oder lie- ber die Plattensammlung stndig archiviert? Mit diesem Ding geht's. Einfacher geht's nicht. Da, wo normalerweise die Menleiste herumsteht, darf man dann einen beliebigen Such- begriff eingeben. Wildcards werden _nicht_ akzeptiert, da- fr kann man aber auch irgendwo mitten in seinem Suchbe- griff anfangen. Oder auch nicht. Wie man will. Wie dem auch sei, das sollte man wissen: Soll ein neues Datum (Sgl. v. Data) eingegeben werden, ist als Eingabe hinter dem Frage- zeichen ein "***" (drei Sterne) einzugeben. Danach darf man dann sein Datum eingeben, welches daraufhin in einer Datei namens ?:\TELEFON.TXT gespeichert wird. Das Fragezeichen sollte noch erklrt werden. Existiert nur Laufwerk A:, ist es Laufwerk A. Klar. Wenn Festplatten existieren, isrt es Laufwerk C:. Gibt es eine RAM-Disk, wird es auf der RAM- Disk versucht, _auer_ man hat Festplatten. Naja, Ihr wer- det es schon sehen. Also nochmal: Suchen durch Eingabe eines beliebigen Stichworts, Eingabe von Daten durch Ein- gabe von drei Sternen ("***") und dann der Eingabe des Datums selbst. Wenn nicht verstanden, bitte Korrespondenten konsultieren. > MAUS AN Ist es nicht schon mal vorgekommen, da auf einmal die Maus nicht mehr zu sehen war, obwohl man sich auf dem Desktop befand? Diese Funktion schaltet die Maus (kurzfristig) wie- der ein, damit man noch retten kann, was zu retten ist. Es ist nmlich recht schwer, mit einer unsichtbaren Maus zu arbeiten, gelle. > MAUS AUS Was soll man dazu sagen? Hin und wieder kann es vorkommen, da der Rechner mal 'rumspinnt und die Maus Schlieren zieht. Dieses ble Manko lt sich durch diese geschickte Funktion ausmerzen. > CURSOR AN Irgendwann hatte ich mal das Problem, da mir der Cursor fehlte. Kann man hiermit auch beheben, auch wenn's selten vorkmmt. > CURSOR AUS Das kommt schon sehr oft vor, zettbe bei der Benutzung von Turbo ST und LHarc. Nun, damit wird ein Cursor aus- geschaltet, der sich evtl. noch auf dem Bildschirm be- findet. Nervt ja schlielich. > BILD ZEIGEN Man hat ja manchmal die blde Situation, da man ein Bild sehen will und nicht kann. Das Problem ist behoben, denn mit dem MultiTool kann man sich solche Bilder ansehen, die _nicht_ gepackt sind. Ganz simpel. Bild anklicken, fertig. So, das war's vorerst. Wer noch mehr Funktionen eingebaut haben will oder die anderen verbessert oder sonstwas, der sollte mir schreiben. Die Adresse, die im Tool steht, gilt ab dem 16.4.1991. Zur Sicherheit nochens: Martin Pittelkow, Lindemann- strae 94, 4000 Dsseldorf, Tel. (0211) 667692. (Wichtig: Erst ab dem 16.4.1991!) Spenden brauche ich nicht, es ist ja PD. Solltest Du dieses Programm von jemand anderem als einem/r Freund/in oder MAXON in Eschborn oder Mailboxen bekommen haben, gib' mir bitte Bescheid! Danke. Martin Pittelkow [PECES] [15-02-1991] HMII;MMFLHA7IIPLJ[IQqgOt5SIIIbZOSV9GFGiQOSJIIIJJJSQ2NIIQS0SG`k,?AON,-J<-H:-FxvtraT0-L>-J<-H:-Fxvtr0|aT0-L<-J:-H8-Fvt"-a"-pa0-L>-J<-H:-Fxvtr0|aTj0-L>-J<-H:-Fxvtr0|aTJpa;B0-H mafjgp+@0-2H mafPgp+@0-4H maf6gp+@0-:H mafgp+@0-N`6N`.N*`xN^`pNb`hN``N`XN`PN``H @g @g @g @g @g @g @g @g @ g @ g @ g @ gNupaHtppa5DCFa?PpaH`pqa50CLa?< < ~Aa]p aHA`aR("ma`aP/AXaP"_aJJgA`//Nra8-NH"ma_a1RmN0-NkoYpa)NuEkp aE"a`.$m0$$m0 fNEkpaD/Ekp aDr"_ta7+ApfREkpaD/Ekp aD/Ekp aD"HA^,*aWA^a_$m0$$m0 f*`|`$Ekp aDz/Ekp aDl"_a+ha%0- ra4p+Aa5*;@Pp aDrPaG4CRa;?< NMTAhaBmf <r4<A`a: f^Aha/A` 24&<x:<aaA` 24&<x:<ataf A`Cp""a9fG <r4<Apa(g0pa;"/ <\*.*a;/a; "HA^,*aNTA^aP/p*a;C^a?ZJgBpA^a"ma:JgBp ma7lp\a#\g mr ap a.~$m0$$m0 op$m-J<-H:-Fxvtra;0-L>-J<-H:-Fxvtr0|a;0-L<-J:-H8-Fvt"-a#`58a5~A,a1A(a1A$a1A a1Aa1Aa1Aa1Aa10-ra"z+A0-H maM @/pa2"ma"ah0-H maL @/pa2"mat"aB0-H maL @/pa2"maN"a0-H maL @/pa2t"ma("a0-H maLx @/pa2N"m a"a0-H maLR @/pa2("m$a"a0-H maL, @/pa2"m(a"a0-H maL @/pa1"m,a"a^ -a!;AF;BH;CJ;DL0-L>-J<-H:-Fxvtra90-L<-J:-H8-Fvt"-a!:`3`Em!p a0/ <\*.*a1t/a0"HAx,*aCAxaF/p*a1p\a.gHmxHm~?jDGGe GbFGNuG GbFGNu~Nu 24HjDBaDBNuBe B/dAрQ4<`jBNutNu $HkBk Bj*DBNupNuDBBkBjDBDNuf gp`` 246jDCCe0 C/jC C@j C jr0H@{0>H@Nur{0Nu{0NutNu 246j(:<DCaf AfBfNu`Va 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`xa`a` 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` <r4<NupNJBktNu@AB`&8:~.gNa`&8:` &8:@ABJBgJEgJAfJ@f<jDFF Fdx.HGއQJGfjHGH??UGgkte <r4<` 24HL&8*a dgHL8a`L8aTJ_ k:NuH 24kBaL8a`#TJ_LkNuTJ_Lja&8* <r4<`HL aJBfL agLJBjDBa8L8a@a#DBNuLJBjDBaL8a"`#lp`n 24?o4<&8: 3f AcDA@Aр[SBDBT`SBAрkfJAftTSWa>H&8:aH&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?`?<`m>apEqdqxgPqf`LJg&B.C`a8aD*9qpfap-I,=|p4aHz*9qpg ENp9qd` _a &nO:NMqxIKm@$<Nu[1][Error +111][Return]Em> g g>Jf`Ar Hjr-D@Hd0H@H 0H@0CNuAF"H [1][fSEfNu`HQ?< NA\Nu"_Km@MqxIO: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|Nua`Np?a a?<LNA``NuNu`aza`aaaHA-Hhp alpMah=@F?<NNTT@A0r p0Q`pdr ta0.F=@=@ACp,2QAp 2Qaa`\`Xpea>pCR2Ad0A2r22a"<20<NBLNurt=@:=A@=B NuHz(` N1Hz ?<&NN\Nu9gNuWNu|^|  R^,T:&0D4(*<B$,>2::(   F..26"8@"PQ1!P1P!0PP`0  q#aaa fa O: n*NNuNuNupc?a0QNurdAd6Ag,B(dB(dH Ac<atgBAp`NuNu?<OA`d?<IA`Z0<H IaLt Ig Og Ug Ag Rg*afNup`abp`V0afHRa>>Er$Wgr STD:gr COM:g r LPT:f2FA$_0=@D~CA0< BhaB2"pNu$_AF Ge><QBAFpNuahgzp=` a\gzparAHPBHQ?NA\ _Jk`Nu/ IaL$$IAHPB Ba8AHPBHQHRBg?<VNAO _ _JkNuHz `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<.aJFkSFk4arQa`&HaFFaZQ&8*L/aL,H܆jDBJ.:gtBn:Nu(:HE:a`4JVHHarЁЀ`z@`z8H@0`z(a^*d2d2d"d""d""""d"`""""""""""""""""QjNup"X2g6C/ !UAk$!Q"_Nu @$@JfS aN`QNu$Aa0`QBNuHz a``HzaH `2HPHQ0(ika $I _aIUd4Id4Id$Id `$$$$Q _Jf,aId4Id4Id$Id `$$$$Q @NuSaIdIdId`Q @Nup `V/ aV$I> _aLG` VNuag`af`ae `ac` acpNuadpNu/ a$I> _a4Ae4v` VfANuHP0(R@kBa $I _aIUd4Id4Id$Id `$$$$Q @JfNuNup `aSAfNuag`af`ae `ac` acpNuadpNuadSAkfJANuH HPhkJaV $I _a>IUd4Id4Id$Id `$$$$Q @JgSL`QNup `aAf` VNuag`af`ae `ac` acpNuadpNua4@m4v` Vf@Nu/HP0(X@kHa $I _aIUd4Id4Id$Id `$$$$Q @Jf$Nu $Nup `FaHYAfNuag`af`ae `ac` acpNuadpNuaSAkEF$p VfWANu?HP0(T@kHa $I _aIUd4Id4Id$Id `$$$$Q @Jf4Nu0XNup `aUAfQNuag`af`ae `ac` acpNuadpNuajSAkXf SAkXfJANuth`tpa ".Nutj`t@H|`Rrk` rf`rg`r5=@|0`:pM` pO`p`po`(~*@-AH|`t)`t` tr`t2`t@-A=B|`HAHBHCHDHEHFHG-HfAD-HH@-@H|p`rAD-@f-H `r6 @`0.bHNupNuz`z `z8.^n\Dn\@Hp tr=ED`.n\n^648HH`prt` n\n^n\n^8HH`prt`"_A `4RB`"_A42L\A` L0GF11Q-p`prHQ`Bp'rta n2rt6(SC0(S@apaB\papava0pa _aV4$FAFp_@[000][vx`* [g" ]g |g QSx` xQSrQ][vx`* [g" ]g |g QSx` xQStQ]BAF0-H,=@p4ab2HNu 24DBaDB11!Nu 24DBa DBNu 24x6o<Ce(FC BdЄeNu B/dHDDdRdQRBNu&<:<`Dg BbUC BcjNu BcHDDdSkg RBAрjNuNu0ftNuB H@"jNu Lx6oFCe0FC BdЄe!Nu B/dHDDd`A*p4. g=BNuao aШNupNuaJFoHPJhja?<?B?<BNAO _*kBg?/(?<BNAO Jk NuNafoazJBkAf`a|??/?<BNA.k \Hx?<BNAO [HHNux`x*0ao< 2fJjr`0Nu~dGdEH<Nup`0@F@AJhg PLNu`dLJg(HPBHh/??<@NAXLf ѨLNuJkp%`(aJBja!| ??<>NAXOJkpNu0< aF`0< CF2p`p a0`p CFp`aCF"p`Hza `Hz"J`B.@=|DNua.@FpAR@C` B.@=|DNuB.@a=GDgNup`da`aCF"E p`xJg$_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`B$_a!HN$_a؄1HN$_aHN$_a 00N 246jDC C b H&<;)8<\:<aِaHa4(g8HP b6 a^$_// Z4HQ`S@Q _Q _a, _Nua$`p`AFtЀvQBNuAFt0 9c^QBNuAFt 0QBNua`a`aCF 0gS JfS`J@a Acr `@a A cr `@a\ A cr `N8.$H`Ha@LHP?.d=hdN8.=_d2 "@$Y4Ad2`0Q @Nu@`r ??a"P02R@H`2Q Nur ?HQa _/ ?a0 _4gSB@c:Ad,J@gB@BmS@,. RB6Vg(R F"GQpNufJ@fRB`fS@kVft0HNuaaJjtNuaHPa pJk NuCg.BJ@g  g &g, $g %gN8NutNuRpt`2Rpt`Rptr ae OgX Xgn HgSRB ae Fb$0k  c_  c b退`tSHkaNuRB0 b b瀀`RB0 fрd`ap`ap`ap3TBTNu>.D<jRGg>VGg:TGjp`*HPa0CF$IpR@  f _aHd2Hd2`"QNu`R<.DHSGFaAEg f< &_Nua`,Nu.dfaBT=n`r>.D<jRGg:VGg&TGjp`Ֆ<.DaAFa$JkNup#`z z fa2a` z f a"aAFa  f#TJkzNu0:g0.D<jRGg(VGgTGjp`<.Da&` z faa` z f aa|AF "g pR@0 ,g  g  fHp`:pR@0  g  g "fR@0 ,g  g  fHpRU@"_  f#T$H _a<`QNupR@0 ,g"  g  fa~ (fR~Nua ~ `a~NuaJkHQ ! gRf _NuXX~Nu0j\@??<NMXJk .dgp Nu`<.DHSGFa ,g gAEf< &_Nu ."Ff +"g ,g`H~=H|=@p3`ٶ=A|a~A09RyH@@-HtBe2QB p#`x?<%NNTNua$ZXNuHzxlJj xo`xdJjxc, EJDD`DDD Dz$X Pf-K&e "&J$IpSNup`L4 fd$R$&k(*ڄNdNjRofNu.#XpHXte(*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 @ Ee0NuagNu4.rf?Hya.NM\Nu=|D`LjazEfpadppa`AFEg0PaEfaFRE`ܾEfp a@a8?nnnp a2RF`<annoS@f nhfSnl=Ah=FnNup` papq4.rf?HyaڔNM\Nu=|DHa,LNu|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 FgRa~g JBja鐰AeaJAg RP0 pNu` Fg6aFgJAga @eaPRP 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:LFac.܆܆ ISk"X0HHaa<CF Ipa<0HNuah`]@><CF Ipa Nu?|`?aF0R@f|0aHJFkHPa _Nupo`ƾHSHP&I>g\SG??<NMXJk Q _t&_Nu&_`ƎaJANuag `af`apNuapNuC`C``C` C`CJhfJfRRRRRRRHP? @CFH~8:E#P&<2 `b$bYEf`"RAf rЁЀ`&Ѐe "ЀeЁdp`JAkfgRer?DDЁaAa*8$HX :CFE` YEjT"_$P"2trDDd0d d d` QjNu`BaDa 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"&nNuaP n2L6(n\n^HHHNua0 n20(n\HNua n20(n^HNua n20(HNua@:ffNuarNua J[HHNu:nfa@ z^0NuJg6$:Pf,H?<"NNT&@p/&gra :,ga &Lr`r??Q@gHyNM\0Nu#gNu"H YJQfNu YH瀀aLP|HPGkBC&֛֛֛֛֛(HDDCBg6Cv6C[RCF8[[[aL6C[RCF8:GkBFWfTL L-KA `b$I\bfBjQNu$YbfBjQNu؄*؄؅CH`d؅X`$_  IaHR"H @`̘؄*؄؅AHNu؅X`$_ IahHR"H`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|a8-IHQB0aV _JNuz"-A=B|a-I`p`p-@Nu#j:HrYaFpYazLa^pY` :/rYapYa2Hyp?o?<?NAO JkpY`ȴ/a `H.gZ <r4<?k"SWga˦`TL8HaaAa.@pa pa!pa!pa!J$m8H mP/0H$m8H mJ 0H"-a /$m8H mP 0H0mtЈ/$m8H mJ 0H0mvЈ"-a x&$"apa a `2TaN+A|+B+C -oNppxg?-za2 -x` m40B0`t m40B0`t m40B0`d m40B0`T m40B0`D m40B0`4a`~ m40B0`n066010303050000132002006006010000 11 2#1 F0110000001 9[...................................................]0110 MultiTool EinTool,dasmantglichbentigt! ***************************************************************** Infotext!UnbedingtdiefolgendenHinweisebeachten! ---------------------------------------------------------------- IchhabemichausverschiedenenGrndenentschlossen,diese SoftwarenurberbestimmtePD-Vertreiberanbietenzulassen. DeshalbgiltderfolgendeHinweisverbindlich:DieseSoftware darfnurberdenPD-VersandderFirmaMAXONComputer(ST- Computer)vertriebenwerden.DieSoftwaredarfauerdemberdie folgendenMailboxnetzeverbreitetwerden:MagicNET,Fido,Zer berus.DasProgrammsollte,wennmglich,mitdiesemTextver breitetwerden.DieBenutzungalleranderenVertriebswegeist untersagt.Allesklar? ***************************************************************** Wozugibt'sjetztalsodasMultiTool?Ganzeinfach!Esgibt diverseSpezi-Programme,indenenmanFunktionenbentigt,die einfachnichtvorhandensind!SeiesKopieren,Verschieben, Lschenoderhnliches.DashatjetzteinEnde,dennMultiTool istausallenProgrammenmitMenleisteerreichbarundstellt diewichtigstenFunktionenzurVerfgung.Unddasgratisund24 StundenamTag.Oderauch48Stunden,wennmanzweiRechnerhat. Hehe:-) DasProgrmmleistalsACCundPRGnutzbar;einfachdieEndung ndernundfertig.AllerdingssolltesichdieRSC-Dateiaufder Boot-Partitionbefinden,wennMultiToolalsAccessorybenutzt wird.Genuggeblubbert,hierkmmtdieAnleitung,diemanja wohlbentigt. NachdemStartsindeinigeButtonszusehen,denenmaneindeutig jeweilseineFunktionzuordnenkann.Sollnichtsgemachtwerden (etwasdmmlich,abermglich,fallsmansich'verklickt'hat), drcktmaneinfachaufAbbruch,fertig.AndereFunktionen,die wesentlichntzlicherals'Abbruch'sind,sinddiefolgenden... >KOPIEREN MitdieserFunktionlassensichDateienkopieren.Wieauch immer,dabeisolltemaneinigesbeachten.Nmlicheinpaar Sachen,ohnediemannichtzurechtkommenwirdmitder Funktion.Wiesollsiedennberhauptfunktioklappen?Nun, dassollteganzeinfachsein.Zuerstwirdinder_ersten_ FileselectboxdasQUELLfileausgewhlt,sprich:DieDatei, dieirgendwohinkopiertwerdensoll.Sodannerscheintdrei sterweise_schonwieder_soeineFileselectbox.Hiermu jetztaberderNamederZIELdateieingegebenwerden.Es reichtnicht,denOrdnerzuwhlenundOKzudrcken,nein, derNamemueingegebenwerden!DasProgrammkannja schlielichnichtwissen,wiedieZieldateinunheien soll,gelle.Nun,daswrealsodieseFunktion. >VERSCHIEBEN Dazumuichjetzteigentlichnichtmehrvielsagen,denn dieVerschieben-FunktionistfastidentischmitderKopie ren-Operation.MiteinemUnterschied:NachdemdieDatei kopiertist,wirddieQUELLdateigelscht.Mehrnicht. >LSCHEN Lcherlich,daszuerklren.WereineDateilschenwill, suchesieeinfachinderFileselectbox,klickesieanund dannaufOK(oderdoppeltanklickenoderperHandein tippen,wieauchimmer).SodannwirddieDateiun widerbringlichgelscht.Alsoimmerschnvorsichtigmit demDruckaufdieReturn-Taste... >HARDCOPYTODISK ManchmalwillmaneinfachmaldenBildschirmsoab speichern,wieergeradeist.Vielleichtweilersoschn ist,oderweilvielleichteinProgrammScheiegebauthat undmandasdemHerstellerunverblmtzeigenwill,oder vielleichtistjaauchnuretwaszusehen,wasanderenicht unbedingtsehensollen?Na,waskmmert'suns?Wiedemauch sei,nachAnwhlendieserFunktionerscheintwiedersoeine dummeFileselectbox,indermandenNamendesab zuspeicherndenBildesgeflligstanzugebenhat.Sodannwird deraktuelleBildschirmim32k-FormataufDisk/Platteabge speichert. >DISKINFO Dagibbeteigentlichauchnichtvielzuerklren.DieChose istrechteinfachundzeigtdenfreienSpeicherplatzaller verfgbarenLaufwerkean.LaufwerkBgehtleidernicht,und Festplattenpartitionenhabeichdreisterweiseerstmalnur bis16MBgemacht.Beschwerdenbittevorwurfsvollanmich! >TELEFON WerbrauchtnichtandauerndeinTelefonregister?Oderlie berdiePlattensammlungstndigarchiviert?MitdiesemDing geht's.Einfachergeht'snicht.Da,wonormalerweisedie Menleisteherumsteht,darfmandanneinenbeliebigenSuch begriffeingeben.Wildcardswerden_nicht_akzeptiert,da frkannmanaberauchirgendwomitteninseinemSuchbe griffanfangen.Oderauchnicht.Wiemanwill.Wiedemauch sei,dassolltemanwissen:SolleinneuesDatum(Sgl.v. Data)eingegebenwerden,istalsEingabehinterdemFrage zeichenein"***"(dreiSterne)einzugeben.Danachdarfman dannseinDatumeingeben,welchesdaraufhinineinerDatei namens?:\TELEFON.TXTgespeichertwird.DasFragezeichen solltenocherklrtwerden.ExistiertnurLaufwerkA:,ist esLaufwerkA.Klar.WennFestplattenexistieren,isrtes LaufwerkC:.GibteseineRAM-Disk,wirdesaufderRAM- Diskversucht,_auer_manhatFestplatten.Naja,Ihrwer detesschonsehen.Alsonochmal:SuchendurchEingabe einesbeliebigenStichworts,EingabevonDatendurchEin gabevondreiSternen("***")unddannderEingabedes Datumsselbst.Wennnichtverstanden,bitteKorrespondenten konsultieren. >MAUSAN Istesnichtschonmalvorgekommen,daaufeinmaldieMaus nichtmehrzusehenwar,obwohlmansichaufdemDesktop befand?DieseFunktionschaltetdieMaus(kurzfristig)wie derein,damitmannochrettenkann,waszurettenist.Es istnmlichrechtschwer,miteinerunsichtbarenMauszu arbeiten,gelle. >MAUSAUS Wassollmandazusagen?Hinundwiederkannesvorkommen, daderRechnermal'rumspinntunddieMausSchlieren zieht.DiesesbleMankoltsichdurchdiesegeschickte Funktionausmerzen. >CURSORAN IrgendwannhatteichmaldasProblem,damirderCursor fehlte.Kannmanhiermitauchbeheben,auchwenn'sselten vorkmmt. >CURSORAUS Daskommtschonsehroftvor,zettbebeiderBenutzungvon TurboSTundLHarc.Nun,damitwirdeinCursoraus geschaltet,dersichevtl.nochaufdemBildschirmbe findet.Nervtjaschlielich. >BILDZEIGEN ManhatjamanchmaldiebldeSituation,damaneinBild sehenwillundnichtkann.DasProblemistbehoben,denn mitdemMultiToolkannmansichsolcheBilderansehen,die _nicht_gepacktsind.Ganzsimpel.Bildanklicken,fertig. So,daswar'svorerst.WernochmehrFunktioneneingebauthaben willoderdieanderenverbessertodersonstwas,dersolltemir schreiben.DieAdresse,dieimToolsteht,giltabdem 16.4.1991.ZurSicherheitnochens:MartinPittelkow,Lindemann strae94,4000Dsseldorf,Tel.(0211)667692.(Wichtig:Erst abdem16.4.1991!)Spendenbraucheichnicht,esistjaPD. SolltestDudiesesProgrammvonjemandanderemalseinem/r Freund/inoderMAXONinEschbornoderMailboxenbekommenhaben, gib'mirbitteBescheid!Danke. MartinPittelkow[PECES][15-02-1991] _?} & !a#_!#$NB#@$@. .. READ ME NECPRINTACC EEAD_IT ` NECPRINT.ACC Das Accessory NECPRINT.ACC ist nur fr NEC P6-Drucker und kom- patible gedacht. Bei anderen Druckern garantiere ich fr nichts. Mit NECPRINT.ACC kann der Bildschirm oder ein Ausschnitt davon in drei whlbaren Gren ausgedruckt werden, wobei die horizontale Position auf dem Papier mit der Maus festgelegt werden kann. Auch die Druckdichte ist whlbar. Wird die Option 'Papier zurck' aktiviert,dann fhrt das Papier in seine Ausgangsstellung zurck.Dadurch kann beim nchsten Ausdruck in gleicher Hhe gedruckt werden.Wird beim Whlen der Druckposition die rechte Maustaste gedrckt,setzt das Programm den Ausdruck rechts neben den letzten Ausdruck. Auerdem kann ein 32K-Bild geladen werden.Ich wollte zwar noch das Laden von STAD-Bildern implementieren, aber ich habe die GFA-BASIC-Source versehentlich weggeworfen(%&^##!*?*) Ich hoffe, da jemand mit dem ACC was anfangen kann. Werner Gtzer Sechzehnerstr.1e 8390 Passau ie- ser Anleitung. `@F,=jAON@Ea-vHa,0-zHjR@D/0-|HjRD/0-|>-z<-x:-vxm|vmz$"0|a7V0-|<-z:-x8-vvt"-a("-pa(.+@0-zHjR@D/0-|HjRD/0-|>-z<-x:-vxm|vmz$"0|a6A퀀4-xH2-vHa*, mpa=r!WHH/pWHHgNlN< mpa=r!WHH/pWHHg"m m <}axQ큦N pa)J mpa=>r ma< mpa=&r ma< mpa=r ma< mpa<r ma<`ahN pa(a;n;A&;B0C0-06-&4-.2-(a'Ha;j2-&HVHH/a;h2-0Hgp.a;hf`0-06-&4-.2-(a'-f`pa($N pa(TNuN ?<NAT/pWHHg mp a<$r!f|`| mpa<r!f|` mpa;r!f|`| mpa;r!fpa'pa'6<0<tra& mp a;r!f|`|pfP`Q-gtp-SfTBm(Bm.;|&;|0NN p-SfN`p-UfNX`N N`pa'a9@-f`a9;@(a9;@.ap-Sfl0-&m(lC(A&0020-0m.lC.A0002NN p-SfN`p-UfNX`N N mpa:nr!fdpa&0pa&"6<0<tra$`F?<NATJWHH/pWHHg$ECpa0v/0p a*a+4pa*pAa*pa*pa-p?apZap'apapZa/p-a-"_a/p-a-"_aC\a';m.,pm0a&`A\Cba'bBm2p4m$Њa&``$Q큕Q큖Q큗Q큘p-_D@p-m,;@40-2Hm(;@60-0m4m0-42-6agp--@0-0Hr4m4Ҋm pm42-6agp--@0-0Hr4m4Ҋm pm42-6ajgp--@R- -c>p-a,l/p-a,`"_a^/p-a,N"_aLCha&DAhCba8Cba&0Rm20-2koY|-a%X`(a)Zp-a-ZaAbaa)@p a(R--+cYa)&a(R-m,0-,koPYNu0-(Hr4m&ҊD;@$0-$H"<a@0-$Hjr@a(pa(`pAa(Zpa(Tp a(Npa+Rp?ajpZadp(a^paXpZaR/p-a+("_a&/p-a+"_aC\a% ;m.,pm0a$ `ZA\C퀞a$A\C퀤a$Q큗Bm2p4m$Њa#`Q큕Q큖Q큧Q큨Q큘p-_D@p-Ѐm,;@40-4R@;@X0-2Hm(;@60-0m4m0-42-6a8gp--@0-0Hr4m4Ҋm pm42-6agp--@p-UfZ0-0mXm0-X2-6agp--@0-0Hr4mXҊm pmX2-6agp--@R- -cp-a)/p-a)"_a/p-a)"_aC퀪a#|A퀪C퀞apC퀞a#hp-a)Z/p-a)N"_aL/p-a)<"_a:C퀰a#2A퀰C퀤a&C퀤a#Rm20-2koHYa&Xp-a*Xaa&FA퀞aa&:p a%p-Uf(a&&p-a*&aa&A퀤aa&p a%a%a%R-m,0-,koYNua0pJg`Nuapa~aNuapa:0-&Hm(;@Fp-S^HH/ mwF]HH/p-SWHHgn0-0Hm.;@Hp-UfAF0H0AH0H0`&p-WfAF0H0AH0H00-HHjRD;@N0-HHmN;@P0-NHrl@;@N0-PH"<o@;@PA퀆8-PH*<<-NH~apA퀆4-NHra0-P6<4-Nra mHo"p aaEDp*a&|4<2<a <2-FH4mVҊnBmVpaa.;A:;B<C0-FHD2-:Ho@;@:-f0-:Hj^@;@:`p-Uf0-$m80H`$m$ R $mВ$m$ R $m$ R ($mВ0|$m$ $m$ R ($mВ0|$m$ `$m$ R $mВ$m$ R `h$m$ R $mВ$m$ R $m$ R ($mВ0|$m$ `4 @g^ @gV @gN @gF @g> @g @g$m40H$m Ra&g$m0RR$m00koY`aAaA,aA(a-g"$m, $m("a&$m$ah`L`$mB$m( `$m, R^HH/0-H$m,^HHgj$m, Э @ Э$m$`N$m, R^HH/0-H$m,^HHg($m, Э @ Э$m$` Jgx @g$m VHHDa`a.DExa`bDEa`ZaR11!Nua11!Nu 24&8:DE`6 24&8:DB`&a\&8:DE`DEx`aH` 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`!a 00Nur$o, b4< J@k @[H@NuH@RBNu4<Ѐ[NuDg8k2 b4< J@k @[H@DBNuH@RBDBNu4<Ѐ[DBNu4d 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`@a8A-Hhp apMa=@F?<NNTT@A0r p0Q`pdr ta0.F=@=@ACp,2QAp 2QaXa:`x`tpeahp`(p?a(adabaHz?< NA\?<LNAfCR2A0A82r22a"<$0<NBLNurt=@:=A@=B2::(   F..26"8@"PQ1!P1P!0PP`0  q#p"AӘQNuA Nu|^|  R^,T:Hz(` N$pHz ?<&NN\Nu9gNuWNuaaaNuNuNupc?a0QNurdAd6Ag,B(dB(dH Ac<atgBAp`FNuNu?<OA`d?<IA`Z0<H IaHLt Ig Og Ug Ag Rg*afNup`ap`0a fHRa>Er$Wgr STD:gr COM:g r LPT:f2FA$_0=@D~CA0< BhapB2"pNu$_AF Ge><QBAFpNuahgzp=` a\gzp _aG` VNuag`af`ae `ac` acpNuadpNu/ a$I> _a4Ae4v` VfANuHP0(R@kBa $I _aIUd4Id4Id$Id `$$$$Q @JfNuNup `$aPSAfNuag`af`ae `ac` acpNuadpNuaSAkfJANuth`tpa ".Nutj`t@H|`fpM` pO`p`po`T~*@-AH|`Bt)`t` tr`t2`t@-A=B|`"HAHBHCHDHEHFHG-HfAD-HH@-@H|p`rAD-@f-H `r6 @`0.bHNupNuz`z `z8.^n\Dn\@Hp tr=ED`Zn\n^n\n^A0000000000prt`(Bp'rta n2rt6(SC0(S@apaB\papava0paRG=GYfx-IC=C=C$tBft=B=B(tFJ=BBBB*Do>Eo:@l6Al2DDk =DVBnDEk =EnBn@cVo Acno,_NuAH`/=@a _a V]Ak024E$ Bb5B5A6CC5CK5C:8AB0000DkxEkt00A<:d>:bSFSGFn\GnXDDk0BhDEk1EBh Fchh Gchh0hb"0hbpmrt-|+H-|+L`Nu-HN'?<NNT-@XDbDEbEBb=ET=DV-|PBLBp n20(L=CJ?=B^C=C\=Cj@drAdnED??RGRF=GF=FHtGJ=BltBft=B`=BnGOpЇЇ b na222-IfHVMF,_Nup `T np`v??/ a, > _a4$FAFp_@[000][vx`* [g" ]g |g QSx` xQSrQ][vx`* [g" ]g |g QSx` xQStQ]BAF0-H,=@p4a2HNuE"ea@"ep` &6NuE "e a"d&&6NuE"e a"d66NuE"e a"d666NuE"e aĵ"d6Nu <}a$Ia `$XaH`aHR?<NNT @"_ <}Nuvn\n^~Ha0 @xepw2AtE4*jDjHB t`0QTAtp =| D`a`QNuHg"cc/ 0)ar _$PS@kH2QNu2(g$PRAA4DBH%$Y2Pg 1AHRAA%NuBhNupLADaHTBnBL*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%` aJBja!| ??<>NAXOJkpNu0< aF`0< CF2p`p a0`p CFp`vaCF"p`hHza `Hz"J`VB.@=|DNua.@FpAR@C`4 B.@=|DNuB.@a=GDgNup` .@<.DAp$I"t Q k"RGef~`SG * g *fSG`<.DjZ\FkBJn`g Fgd Fg^HS&I.aQ`p???<NM\Qj&_NuHQ/?Hz?<&NN\` n2LLJFj|@c<JGj~Ac>02 h|N n2HHNu80a|DHz ?<&NN\Nu| n2 h N n21@NuH~=H|=@p3` =A|aA09RyH@@-HtBe2QB p#`?<%NNTNu2(gbc  P"H`Nu/0HaN2  _ PSAvjx E(Wf* ae zb Q @NuC&pHQ/Hy@NA NuC pa:NuHQ/Hy?NA Nu&g4 Fga0gJAga2< R@AdSf0Nu0ap Ce`&g4 FgaJBjagPAe CbRa R@Sf0Nu FgRag JBjaAeaJAg RP0 pNu` Fg6atgJAga @ea~RP Nup NHѨB?<?/?<BNAO JkLLNu&8aJBja.JAg Df*ڃkd0Nu DfրBH??/?<BNAO LJk!@NuHBHh Hx??<?NAO LJo ѨLNuk:fp`^k: g ѨNuBHPHQ/??<?NAO _JoѨfNuBHPHQS/??<@NAXLfѨNuJkp%`hB9`$H EavA AerQBL@͉H Ia"H _/ aaB _/ ?a8AF-H AerQB2"_A&-H A e ` \gQBa9gaZe -|p[`pZabajAF"H0.g "Hg \f`A&fS !.gR EF _ax`QNuHz?<&NN\ @Nu x NuA@Bh`(A@a2 n@!|}Nup#fpNup`p`#NuDppEȽFZgP`LJg&B.C`a8aD*9fap-I,=|p4aHz*9g ENp9` _a &nO:NMFZIKDr$<Nu[1][Error +111][Return]EDp g g>Jf`Ar Hjr-D@Hd0H@H 0H@0CNuAF"H [1][fSEfNuaP n2L6(n\n^HHHNua0 n20(n\HNua n20(n^HNua n20(HNua:ffNuarNua J[HHNu:nfa@ z^0NuJg6$:Pf,H?<"NNT&@p/&? ra :,ga &Lr`r??Q@? HyNM\0Nu#?Nua!@ 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`#@HrYapYaLaBpY` :/rYapYaHyp?o?<?NAO JkpY`V/a `\$$$lpGRAPHIK-DRUCKPROGRAMMFR NEC P6normalkleinmikroBildschirmAusschnittlightnormalnormalinversBild ladenDRUCKENPapier zurckABBRUCH;;;;{{Ç~x<$:;<GH  aq$@ a!I P  V !a  \ !g  a  r  !x a !     E  a \ HardcopyC:\NECPRINT.RSC Drucker nicht bereit Bitte Druckposition mit der Maus bestimmen Papierlsehebel auf|mittlere Stellung drehen !Speicher voll oh... "@\BtnV ( t((@PL| *$tN@+ANz`RQ|| | ;|;|LJvptrN`vptrN`vptrN`vptrN``:||| | ;|4;|`JgV @gz @gNua0?<NATrAЁN p:N/pN"_Np\NCNBm;|;|;|;|;|;|;| ;| ;| ;| ;| ;|;|;|;|;|4;|6;|d;|R;|8;|:;| <;| X;|@;|x;|Z;|b;|L;|N;|v;|T;|r;|t;|f;|;|;|;|;|;|;|;|;| ;| ;| ;| ;| N -fE5p A킺N `E5p A킺N A킺NJf,E5p3N/E5pNr"_tN@;AhNz0-rN+A:0-rN+A.0-6rN+A>0-rN+AZ -:N;AZ;Bd;C;D -.N;AZ;Bd;C;D ->N;AZ;Bd;C;DaLN@pN < ~A. 6y.. 6yREAD_ME DOC 7ySHOW_ME GFA :yvQSHOW_ME PRG Ay&BEAD_IT  ` SHOW ME Dieses Programm kann eigentlich nur Textdateien anzeigen. Aber im Gegensatz zu dem im Desktop enthaltenen Programm kann die Datei auch rckwrts gescrollt werden,was bei lngeren Texten sehr ntzlich sein kann. Wenn also die Datei einmal eingelesen ist, kann man den ganzen Text durch Auf-und abfahren mit der Maus ansehen.Dies geht vor allem mit Blitter recht schnell.Auch 1st-Word-Dateien werden einiger- maen deutlich gezeigt. Die Befehle: Maustaste 1: schaltet zwischen Textanfang und Textende hin und her Maustaste 2: ldt einen neuen Text oder zeigt den nchsten Textteil Tasten: Control-C: Beendet das Programm P:Text ausdrucken gro oder klein(nur auf NEC P6 getestet) u. Druck abbrechen Leertaste: eine Seite nach unten " +Shift: eine Seite nach oben Returntaste: eine Zeile nach unten " +Shift: eine Zeile nach oben I:inverse/normale Darstellung Das Programm pat sich dem vorhandenen Speicherplatz an und arbeitet daher am besten mit 4 Mbyte.Wenn eine Datei nicht auf einmal gezeigt werden kann, wird durch Drcken der rechten Maustaste der nchste Textteil gezeigt. SHOW ME luft in den drei gngigen Auflsungen Beste Gre Werner Gtzer Sechzehnerstr. 1e 8390 Passau i?<>0rHGGdHGGdSWDуdi2?<>0rHGGdHGGdSWDуd&2 H@kփAр[SBkփejRAd RdQRBJjDBNutNuCEdSW`?<,>CEdGeH@0r`fJCgz?<0rÐdSWЃdi?<0rÐdSWЃdid?<0ÐdSWЃd&2 H@kփAр[SBkփejRAd RdQRBJjDBNutNu?<0riP?0i?`?<`vapEgP`LJg&B.C`a8aD*9fap-I,=|p4aHz*9g ENp9`b _a &nO:NMIKv$<Nu[1][Error +111][Return]Em g g>Jf`Ar Hjr-D@Hd0H@H 0H@0CNuAF"H [1][fSEfNu`VHQ?< NA\Nu@$g\kdHfiHNufnpNupNu"lDaDNuJnDaDNuzxeҁ؄dGFA-BASIC3HD^ DTDEGH H,H<H\H\ITJDJKtKtKtKtKtPPSPZ_FERTIGBADOCSMEMORYBYTEAZSPC3YPOSY1ZEI BITANFANGBITENDEMASCHINEN_ROUTINE ZEICHEN_SATZTEXTZHOULRINSKEYSXKEYSYKEYSISUCHSCREENFBIJZEITXTADRBYTEUNTHZTIME2TIME3T3BRADIIAUSWAHLBACKLRGLATCHDATEI AUSSCHNITTACDEGPFADZEICHENVOIDBLDLEERA2E_PUFFERBILD1 DRUCKINITDRUCK1DRUCK2 DRUCK_DATEN1 DRUCK_DATEN2PFAD2DOCDOCPFZABHINTZEILEPROPHOEHESTARTNAMPRT FONTPLANEZZZMASCHINEN_ROUTINESCREENMRZSZEISPBBLAGRHYPOSMYBAANTAADLADRADBYTEB_ADRXLAESTRICHBRRAUSOOOXXUHEMZMESZSEXXXA_ALTSEKTSCHRITTFSRKTRKSIDSSMEMADRBACKDATEIMOVIX1Y1X2Y2X3Y3MOMKMO2BI2DEHOEHEBREITEBCOLENBXBYMAXYBX2ANF_ADRXPOSYPOSALT_ADRXPYPXP_ALTYP_ALTLEER LOESCH_ADRRSA2E_PFREIRESTBBXB2ALT_CONRSTADCODEXBSTADPUFANF_ADR2VNRSNRZABFMEM_INITASMALLLOFDOCDOCDOCCOUNTSIGDATFONTPROPSTARTMEMORYP_ZEILENDOCENDEVERSMVBHY_ALT PM_ZEILENDOCENDABYTEFONT PME_ZEILENPM5PPOSP_POSS_POSLESPRTZDB1AZDB2AVZDB0LOESCHY_ALT2 FONTPLADR PLANEOFFSFONTOFFSCHPLPLOFMCONVDATWIIPINLASBRFERTIG ZEICHENFERTIGZ_FERTIGDOCVOLLE24EDATEFONTSHOWGANZSTPANF PRINTFLAGFLAGPFLAGP_FLAGP_EOF MOUSEKORGANZSUBOUTZDBTEXTSTRINGLEFTPRTREGSBLDBLPARDOCCOUNTQDBZDBRDBEMINVCINMYB_ADRSTRICHSCHRITTBACKBLX1X2Y1Y2X3Y3B2H2BHA_BYTES DRUCKZEILEDRUCKDYDY2DXBABXYZREIHESPALTECABBREITEBP_ANZY_ALTXXXYYYX_RESY_RESX_RESPY_RESPX_RESIY_RESIX_WORDSX_RESMAX X_RESMAXD X_RESMAXPX_MITTEDY_MITTEDY_RESDY_RESM16 Y_MITTEM8Y_MAXDCONVCHPLPLOFM PLANEOFFSFONTOFFSZEIZBAANTDLXRAUSBRHEMZMESZSESEKTRKTRKSIDSSFSBYTEDATEIIMOMO2MKSPZEINO_GEA_LA_H DRUCKBYTE1 DRUCKBYTE2 DRUCKBYTE3 DRUCKBYTE4 DRUCKBYTE5ZEILEZEILE1DICHTESNRHOEHEBREITEBZABSTARTBAB BREITBHOEHEBREITBZAB_AZHPROPTRFA SCHRAEGSTRICHSCHRAEGINVREVNORMSTSTATSTSTAT2RES BITPLANESCONVSTARTOALPRUEFENLESENTRKPRLALA2ABFRAGESTART_BWEITERLOPENDEF_SELTESTABFRAGE2ANFANG212LOOPMAUSINIT TEXT_NORMALZZPAUSE TEXT_FASTRETRUNFASTFPRINTSTRICHABFRAGEMINIMAXDISKETTEBILD SCREENDUMPZEITREP_ANREP_AUSEINZELADR_FESTSTELLENANZEIGEPIC_INFOMEMCLRWARTENABBDISKLASSOMAUS0FRPRINTSUCHEN ZEICHENSUCHENONBREAKGOSUBBEENDENBEENDENAUSDRUCK_MIKRO SPEICHERNENDEA_NACH_BB_NACH_A B_NACH_A_QSCLEARMEM_INITENDFISNR FONT_N_SCHIRMSUBF_SELOUTTESTOUT2MOUSE0STSTATRTS FONTPLANE2 FONTPLANE4 BITPLANE4BITPLANE: *********************************** : * SHOW_ME.PRG * : * Anzeigeprogramm fr Textdateien * : * von Werner Gtzer 27.10.90 * : *********************************** T------------------------------------------------------------------------------ TASTATURBELEGUNG: ================= $Leertaste = nchste Seite &Shift+Leertaste = vorherige Seite $Return = nchste Zeile &Shift+Return = vorherige Zeile *i = inverse Darstellung &p = Drucken Ein/Aus &Esc = File auswhlen $Ctrl+c = Programmende n MAUSTASTEN: =========== *1 = erste/letzte Seite &2 = File auswhlen !T------------------------------------------------------------------------------ <$ U+,I+ !bei Interpreter aktivieren!!! PON BREAK GOSUB beenden ! " +Procedure 'beenden' aktivieren!!! .lS&,S>,*&,P<,E#,N- !nur fr Compiler !F!"#$%&'()*+,-./0123456789:;<=>? ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`abcdefghijklmnopqrstuvwxyz|~@]}[{\ d!F`dHrtvxz|~6G Hg g,A$HHHHHHHHHSfܳg`LNuk!F`||``>0l$3`@0~0>>>>>>00 ~`<f ~?~?a` c`pa?~?~aaccfaf`<`<<6`````}|<l6l<0fc`fc~``3< <00?||p`0l~k6`0`T0~000~0~f a` g`pq?aaccfaf`~`~~8~`````~~~~|~0fcdfc~``3~`~000` 80c0l~?n6` 8~cxcc`ccc0fcac``aa` n`pq`c`c1aaccf>0`df0f```f`ffffp`xf6d<6` gf00g`` 0`0l$566``0~ gxC``cc` ffc`a``aa` |`yy`c`c0a!c6f<a<w0>``~0f`````f`ffff`|xf6.6?` Cf00i`` 880$4 4`08 g~` cc`~ fc`a```a` x`yy`c`c8a3c6f~a~c~l`6|xfl``f`f`ffff`>0f6?8`f i`` >0~< `0T k>~ >000~f3~`a~~g` p`ym``a37<faAf~d~`xf~``n`f`ffff`0n;<p``l@i``  0~9`0k6c>?000f3~`a~~g` p`i`m`~`~a37<fa>~v~n~0~v``|`f`f~~~`~0~;f~``f i` 8 c0$o`0sfcc `f?c`a``aa` x`o`g```ca<>fa~:f<f<0>f``x`f`f<l6`<06f~``3f00g` c06n`00s8cc fc`a``aa`l|`o`g```c!a<60fafff0f``x``8``3f000` 8%=f 0cpccc0cc~acac``aa`ln`f`c```cqa`cp~a~vn0~f``|``x``?f00?||p>0um0``06a`a`|g~f`c`c? `c<a:~~0<f``np`p``n00||`0?f;@`>>>>0>>a~?~`>a`8c~f`a?`?c? `cal60f`f0``al`a`a`c?`a`?`>l!F                @!F.                   m!F            6convdat% : Umwandlungstabelle ASCII==>Zeichensatz $mem_init: Speicherlschroutine C2font : Zeichensatzfeld 2048*16,128 Zeichen ,H ! ! ! F4B@!B F 4AP!B F PF(8n'F wegen bitblit:y1&<32768 aF48rиn FTest,ob sich Speicher reservieren lt rFZ0n Fswenn nicht,mit weniger probieren nF!2ndFwmu fr FILESELECT-Box freibleiben $йr F$Testreservierung lschen @' F@( F @+`' F @,`( F@.u+! F @/a. F@-+! F@1a+! F @2a,! F @4,! F@5PFD9V F 09F9<FD:F6FbFD:F6FF@5FD:FvF8!Unbekannte Auflsung !!Tschs!F beenden  F4F8=V F8 nFstart nur,wenn ganzer bildschirm &8 иn Fendgltige Reservierung :8on!P ! ! !: FZeilenanzahl *oFdurch 16 teilbar(Fonthhe) 08uo! Fmaximal beschreibbare Zeilen D8xo!,! F maximaler BITBLT-Beginn fr Seitenkopie Z,8yu! FToleranz fr Unterlngen $F N FF<! Leider zu wenig speicher !!Mist !!F F beenden $F.8? !n FFfr Speicherinitialisierung e0P9 F%Anfangsadresse der Textflche 4P9u+!ߠ FBreite der Textflche fP9oFHhe " e,P9 ! FBreite/16 tP9Fe&P9:FAnzahl Rasterebenen vP9FO$P9:F " fr Font F$D4 F(BITBLT-Modus invers F$D6FB( " normal F<F,D0F*Schalter fr Textanfang/ende 4* \README.DOCFF4 !Ffr RCALL B.P9 F#Anfangsadresse Lschbereich eP 9?F#End " \d! FSpeicer lschen sp!v! !IF @ FT(BITBLT-Position 8JF %Textbeginn x F  F 8F 0MF$F<F!nur fr 1.Durchlauf e(< F wenn ganzer Text gelesen,TRUE r<FPrint-Flag  |F*D3*!\ FPosition des letzten '\' $4@=*!B* !3 FFDateiname e4*;*!3 *.*F Pfad $*!@!*F " L*F wenn Abbruch,Ende e F beenden $F T* F$I!M!*F"8gO FLnge der Datei eiFDateizhler auf 0 D 8FT FF$F 8F.<F Datei in mehreren Abschnitten zeigen $FF |F `giF&D%M Fzu zeigendes Zeichen iFZhler erhhen 8F LB "FF< FDatei fertig gelesen &8Ffsonst klingelts immer $F|F: <; ] #t Jp!  F- 4 F"<Fin der Schleife bleiben m 8\F<Fraus und weiterlesen $F8;FFBewegungsmelder e8tJFFSchreibposition eP9=FP9+FP9,FP9-FP9F8P9/FP9FP9FP9/FP9(FP96FBITBLT-Modus 28vup!5 !x Fam Dateiende nur halbe Seite F0!!F1!2F Maus in die Mitte r 2FFMausweg feststellen F* ! Fimmer +/- ganze Zeile .@ w߀!u !v F minimum u.maximum bP9 FP9 !( F8< ! ! F ganzen Bildschirm vom Textflche holen  l] F&4 S Fzu Grobuchstaben wandeln m*D7U ! FSondertastenstatus  FFJFCTRL-C =Ende  F beenden IFinvers/normal s 4!6FP96FPFdrucken o$ W FDrucker bereit ? &  Fwird schon gedruckt ? a <Fwenn nicht, dann jetzt 80%!&!Fc Mausposition durch Alert nicht verndern 8! Ausdrucken: !!Normal|Klein|Nein!FFF  Ft"{FDateizeiger fr Drucken $@#PFenormale Datenanzahl l8 D߀FlESC-Sequenzen fr Normalschrift 2B "T"B "A"B "B "P"FF,8F  Kleinschrift  u8B "S"B "B "A"B "B "gFF$F Indizierung  Zeilenvorschub Zeichenabstand 8F<Fnicht drucken $F %!&F 8F0%!&!F2! Ausdrucken: !! Weiter|Stop!FFF ߀F:<Fdrucken stop $F %!&F$F 8F0%!&!F4!Drucker nicht bereit...!!OK!FeFF %!&F$F F ^7F7*@ w !4 ! FF eine Seite nach oben 8F7,@ u !4 !v Feine Seite nach unten e$F& F 7F7.@ w ! ! Fe eine Zeile nach oben 8F70@ u ! !v Feine Zeile nach unten $FhF2@FEESC = Dateiauswahl(mousek 2 =raus) 4F$F  FFdrucken ? t6 W Fkein Dateiende und Drucker bereit ,8|P FBITBLT-Dateizhler sichern 0@!{FDateizeiger auf Druckerposition e4{PFDTest,ob noch 80 Zeichen in der Datei  {gF4@#g!#{!P Frestliche Zeichenanzahl <F$F"4A_#!M F Zeichen laden cA"Fdrucken F0@!|FDateizeiger auf BITBLT-Position a$F$F2LFwenn Maustaste oder kein Dateiende F6 Ftrechte Maustaste gedrckt e< F(@߀Flinke Maustaste a(8Ffr Eintritt in Schleife   v! 5FD0F D1F@4 5FD0FD1F$F `0F!!zum Dateiende n @ vFF 8FF Fzum Dateianfang e$F"0!1Fanfang/ende umschalten F1F$F߀F$F H%F!Return ? IF%JFnchste Zeile $ FReturnzeichen nicht zeigen $F,D%t!% XFNummer von Tabelle holen $D/tl!% XFProportionalinfo *D)tm!% XFy-Beginn des Zeichens l&D&t@!% XFHhe des Zeichens e6 I!/ /F Test,ob noch Platz in der Zeile (JFansonsten nchste Zeile b8IF6FBITBLT-Dateizhler darf nicht erhht werden n$F: J!& !) uFTest,ob noch Platz im Textfeld 4 xJ!& !) yFPlatz fr Unterlngen ? x&J!1Fvorbereiten fr neuen Text 8IF<FD0F8FLB "FFF$F$ $FP9kFFontadresse u,P9FnBreite des Fontfeldes "P9Fn!Hhe " P9Fn Breite/16 P9Fe(P9F "BITBLT-Modus odern ,P9%! Fx-anfang Quelle 6P9a ! Fux-ende Quelle B&P9a& Fy-ende Quelle x P9IFx-anfang Ziel u&P9J!) Fy-anfang Ziel x.P9aI! Fnx-ende Ziel 0P9 !a& Fn y-ende Ziel u(< ! ! FZeichen nach Textfeld *I/FFPosition fr nchstes Zeichen 8pwp! F Textende  F! >F< PROCEDURE beenden ~MFREE(a%) e RESERVE SHOWM EDIT RETURN  FFF<F lF<F 6F 8BFFl7GHF87!k FF8!7!: FFl=G HFr8=!: FF! Cr!= XFr &=F% 7F! 8kFFF :Inhalt von INLINE mem_init (ohne Vor- und Nachspann): schnelle lschroutine a0=anfang a1=ende & movem.l d3-d7/a3,-(sp)  moveq.l #0,d1  moveq.l #0,d2  moveq.l #0,d3  moveq.l #0,d4  moveq.l #0,d5  moveq.l #0,d6  moveq.l #0,d7  movea.w d7,a3  movea.l a0,a0  btst #0,d0  beq gerade  move.b d1,(a0)+ gerade: move.l a1,d0 f sub.l a0,d0 f& andi.l #$ffffff00,d0  beq less & lea.l 0(a0,d0.l),a0  movea.l a0,a2 a lsr.l #8,d0 a loop: & movem.l d1-d7/a3,-(a2) & movem.l d1-d7/a3,-(a2) & movem.l d1-d7/a3,-(a2) & movem.l d1-d7/a3,-(a2) & movem.l d1-d7/a3,-(a2) & movem.l d1-d7/a3,-(a2) & movem.l d1-d7/a3,-(a2) & movem.l d1-d7/a3,-(a2)  subq.l #1,d0  bne loop less: cmpa.l a0,a1  beq fertig  move.b d1,(a0)+  bra less &fertig: movem.l (sp)+,d3-d7/a3  rts  +T+\+d+l+t+|++++++++++++++++++,,,,,, ,&,,,2,8,>,D,J,P,V,\,b,h,n,t,z,,,,,,,,,,,,,,,,,,,,,,-- ----"-(-.-4-:-@-F-L-R-X-^-b-f-j-n-r-v-z-~--------------------------------... ......".&.*...2.6.:.>.B.F.J.N.R.V.Z.^.b.f.j.n.r.v.z.~................................/// //////"/&/*/./2/6/:/>/B/F/J/N/R/V/Z/^/b/f/j/n/r/v/z/~//////////////////////////////////////////000000 0 0000000000 0"0$0&0(0*0,0.00020406080:0<0>0@0B0D0F0H0J0L0N0P0R0T0V0X0Z0\0^0`0b0d0f0h0j0l0n0p0r0t0v0w0x0y0z0{0|0}0~000000000000000000000000000000000000000000000000000er den jeweiligen Tasten in Verbindungmit der Control- oder Alternate-Taste bedient werden.ber die Ctrl./Alt- und R-Taste kann ein kleiner Taschenrechner einge-blendet werden (Die Berechnungen werden in die Maske bernommen). ManuellDruckertreiber startenJA|NEINStandard.prgstandard.prgS T E U E R K L A S S E N W A H L ||Das Programm ist nicht vorhanden !!!Suchen|AbbruchHats geklapptJA|NOCHMALDies Programm luft|nur in der hohen und|mittleren Auflsung!Oha|Egal Weiterblttern | Zurckblttern  | Abbruch = Undo | Text drucken = F10Seite von insgesamt Lohnsteuer fr welches|Jahr ?1987|1988|1989|1990|1991|ZurckBitte Steuerklasse besti`.X@AON E.^ +@2E/^ +@E0B +@E@B +@E@ +@ EAB +@p~Ava*p~A턔a*tp~A턚a*hp~A턠a*\pa"<@a CaparPa Ca <Pa"l+|'/-?<HNA\+@ -n `/-?<INA\pa-;@pa-;@0-R@;@0-R@;@0-H"<o@;@0-S@;@0-HjrЁ;@0-HjRS@;@0-HjRS@;@ 0-@;@;|P?<NNT@[p-[`X|\N ``|\N `R;||\`DEApa/EApar"_tajA#aX`Jg @g @g @g?<NNT+@ od/-?<HNA\+@2 -rPa FUJjrЁr-\a 0+@A  pЭ+@p 4mЊD+@pЭ+@ -2f,EApaN/EApa@r"_taA#a -Э2+@ -2x m!H0-H"<o@x m!H -x m!Hx m 0HJjrЁx m!Hx mBHp-\x m!Hx mBHp-\x m!Ha| V|XPE|REAp AtapAva8 -2x mv!H -x mv!H -Ava BBBmB.;|p+@2N pJ-Cgp"pJ-EgpgpJ-EgpJfpaQEQCQIp\abCta@U0-xHr-UAtaCap-UAta.EB paCtaHmtAtC,a"Ata&&ga AtagAtrabpa"+@B` `h`Q> -lpa%0@GR`paPPC+|a(/a(pgp.pa$ā -2VHH/0-HD]HHpJ-Igpg`pJ-Cgp"pJ->gpgQD`PDa'+@+m2 -x m!H0-Hx m!H0-Hx m!H0-Hx m!Hx mBH0-Hx m!Hx mBHx mBH0-Hx m!H0-Hx m!Hp-Xx m!H0-HD"-각o@+@a&;A;B;C0- H2-Ha`0- m0-H@m -2-Ho@rl@;@0-Hx m!H0-H0mЈx m!HE턔C턚A턠a&pa"gaaCanHy NMX@YAa `Pa J`tCVAXp-Xx m!H`P?<NATJgPpJ-IgpJfPIa%;A;BC#EB p a~/EBpapr"_taA#N p-#Wg~B;|Pp-#Sf0apapTa|pavpAapp ajpadpPa^`>apaRpSaLpaFpa@pAa:pa4pa.pgazaL`QI0-H2-Ha`\a%;A;BC#EB p a/EB+p ar"_taA#N p-#UfQI0-H2-Ha<`Ja$;A;BC#EB6paD/0|R+|pa`d -x m!Hx m!Hx mp!Hx m!Hx mBHx mp!Hp-Gx m!Hx m 0HrЁx m!Hp-HSx m!H -.x m!Hp-KЭ2x m!HpЭ.x m!Hx m/0Hp-HSПx m!HE턚C턔A턠abp-Qѭ.x m 0H"-ʰl@+@` `aa Jg`NuA +@Bm -0mЈ+@&p-\2-Э+@*Bm p-\2- +@0- HЭ& @0H m*0m m oTm mo+mNuapa JkpNupNuaAHPB?HQ?<NNAP _Nu@$g\kdHfiHNufnpNupNu"lDaDNuJnDaDNuzxeҁ؄d`ef Nup`"_KBPMGI LO:HQ <-H*,`N,(MPf$h  Ј-@.HRHPBg?<JNAO H2=| dad=|.,Hx?<HNA@\re ,/?<HNA\-@І-@&&<?</NM\?<f/NM\aA.XC$I BBQ"Jrp`")gQ`BBgff$ AfA`&n-K-K-n&"At0<rX0QEA-JNu H(Nu$H$& K-KC"e a:"d aA"ךf B &nNupNH>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`@a8A-Hhp apMa=@F?<NNTT@A0r p0Q`pdr ta0.F=@=@ACp,2QAp 2Qaa:`x`tpeahp`(p?a(adabaHz?< NA\?<LNAfCR2A0A82r22a"<D0<NBLNurt=@:=A@=B2::(   F..26"8@"PQ1!P1P!0PP`0  q#p"AӘQNuA Nu|^|  R^,T:Hz(` NHz ?<&NN\Nu92gNuW2NuaaajNuNuNupc?a0QNurdAd6Ag,B(dB(dH Ac<atgBAp` NuNu?<OA`d?<IA`Z0<H Ia Lt Ig Og Ug Ag Rg*afNup`a p`H0afHRa >Er$Wgr STD:gr COM:g r LPT:f2FA$_0=@D~CA0< Bha 8B2"pNu$_AF Ge><QBAFpNuahgzp=` a\gzp _a4$FAFp_@[000][vx`* [g" ]g |g QSx` xQSrQ][vx`* [g" ]g |g QSx` xQStQ]BAF0-H,=@p4al2HNu <}a$Ia `$XaH`aHR?<NNT @"_ <}Nua`QNuHg"cc/ 0)a _$PS@kH2QNu2(g$PRAA4DBH%$Y2Pg 1AHRAA%NuBhNuao 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%` aJBja!| ??<>NAXOJkpNu0< aF`0< CF2p`p a0`p CFp`vaCF"p`hHza `Hz"J`VB.@=|DNua.@FpAR@C`4 B.@=|DNuB.@a=GDgNup` .@<.DAp$I"t Q k"RGef~`SG * g *fSG`<.DjZ\FkBJn`g Fgd Fg^HS&I.aQ`p???<NM\Qj&_NuHQ/?4(g8HP b6 a$_// Z4HQ`S@Q _Q _a _Nua`*p`<>Hz?<&NN\` n2LLJFj|@c<JGj~Ac>02 h|N n2HHNu80a|DHz ?<&NN\Nu| n2 h N n21@Nur0?HQa _/ ?a0 _4gSB@cLAc4JBg,J@g4@Bo2’S@,. SB6VgS F"GQpNufJ@fSBD@BR@HNufS@kVfpNu?<`Bg/0ao< 2JjJAfr`TNua|A((@؆*.&|؆kD`&ax,k.."*B(.&؅kr-K/.?<INA\/?<HNA\JgB n""n&ۮ&ۮ"$I`&bۛp0R@@b&n CXb` .&/?<HNA\p=`H XXHPa/ oH!_ LxNu/LNu$R"Q PLH=HAF-HHL? H>A-HLL? H>pmrt`~"XXHVMFLH-E H-YLH-E H$-Y*LH.,_NuHV,@,_Nu2(gbc  P"H`Nu/0Ha2  _ PSAvjx E(Wf* ae zb Q @NuaS@k g U@k g NuNu0Nu NuC&pHQ/Hy@NA NuC pa:NuHQ/Hy?NA Nu&g4 Fga&gJAga2< R@AdSf0Nu0ap Ce`&g4 FgaJBjagPAe CbRa R@Sf0Nu FgRag JBjaAeaJAg RP0 pNu` Fg6ajgJAga @eatRP Nup NHѨB?<?/?<BNAO JkLLNu&8a JBja$JAg Df*ڃkd0Nu DfրBH??/?<BNAO LJk!@NuHBHh Hx??<?NAO LJo ѨLNuk:fp`^k: g ѨNuBHPHQ/??<?NAO _JoѨfNuBHPHQS/??<@NAXLfѨNuJkp%`BB94`$H EaA4 AerQBL@͉H Ia"H _/ aa _/ ?avAF-H AerQB2"_A&-H A e ` \gQBa94gaZe -|4p[`pZaajAF"H0.g "Hg \f`A&fS !.gR EF _a`QNuHz?<&NN\ @Nu x NuA@Bh`A@a n@!|}NuBNpEZGgP\`LJg&B.C`a8aD*9ffap-I,=|p4a|Hz*9fg ENp9Z`: _a &nO:NMGI LKBP$<Nu[1][Error +111][Return]EBN g g>Jf`Ar Hjr-D@Hd0H@H 0H@0CNuAF"H [1][fSEfNuD@v`v??NMXJNuJ@k??<NM"UAf J@fH@Nuazj0fpNu\@`af`]@><CF Ipa<0HNuaJ`]@><CF Ipa Nu?|`?a(0R@f|0aHJFkHPaB _Nupo`@HSHP&I>g\SG??<NMXJk Q _t&_Nu&_`aJANuag `af`apNuapNuC`C``C` C`CJhfJfRRRRRRRHP? @CFH~8:E#P&<2 `b$bYEf`"RAf rЁЀ`&Ѐe "ЀeЁdp`XJAkfgRer?DDЁaAa8$HX :CFE` YEjT"_$P"2trDDd0d d d` QjNu`aDa 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"&nNuaP n2L6(n\n^HHHNua0 n20(n\HNua n20(n^HNua n20(HNua:ffNuarNua J[HHNu:nfa@ z^0NuJg6$:Pf,H?<"NNT&@p/&.ra :,ga &Lr`r??Q@.HyNM\0Nu#. NuA`A` A|`A@00HNuA `A`A|`A `A `^!"#$%&'()*+,-./0123456789:;<=>? ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`abcdefghijklmnopqrstuvwxyz|~@]}[{\ `dHrtvxz|~6G Hg g,A$HHHHHHHHHSfܳg`LNu`||``>0l$3`@0~0>>>>>>00 ~`<f ~?~?a` c`pa?~?~aaccfaf`<`<<6`````}|<l6l<0fc`fc~``3< <00?||p`0l~k6`0`T0~000~0~f a` g`pq?aaccfaf`~`~~8~`````~~~~|~0fcdfc~``3~`~000` 80c0l~?n6` 8~cxcc`ccc0fcac``aa` n`pq`c`c1aaccf>0`df0f```f`ffffp`xf6d<6` gf00g`` 0`0l$566``0~ gxC``cc` ffc`a``aa` |`yy`c`c0a!c6f<a<w0>``~0f`````f`ffff`|xf6.6?` Cf00i`` 880$4 4`08 g~` cc`~ fc`a```a` x`yy`c`c8a3c6f~a~c~l`6|xfl``f`f`ffff`>0f6?8`f i`` >0~< `0T k>~ >000~f3~`a~~g` p`ym``a37<faAf~d~`xf~``n`f`ffff`0n;<p``l@i``  0~9`0k6c>?000f3~`a~~g` p`i`m`~`~a37<fa>~v~n~0~v``|`f`f~~~`~0~;f~``f i` 8 c0$o`0sfcc `f?c`a``aa` x`o`g```ca<>fa~:f<f<0>f``x`f`f<l6`<06f~``3f00g` c06n`00s8cc fc`a``aa`l|`o`g```c!a<60fafff0f``x``8``3f000` 8%=f 0cpccc0cc~acac``aa`ln`f`c```cqa`cp~a~vn0~f``|``x``?f00?||p>0um0``06a`a`|g~f`c`c? `c<a:~~0<f``np`p``n00||`0?f;@`>>>>0>>a~?~`>a`8c~f`a?`?c? `cal60f`f0``al`a`a`c?`a`?`>                                              Unbekannte Auflsung Tschs Leider zu wenig speicher Mist !\README.DOC*.*Ausdrucken: Normal|Klein|NeinWeiter|StopDrucker nicht bereit...  Zb6$b t\((@Pr| *$erklasse. Sie zeigt Ihnen also, ob es sich empfiehlt, die Steuerklasse auf der Lohnsteuerkarte ndern zu lassen. Nettolohnermittlung ------------------- Nach Abfrage von Kalenderjahr, Steuerklasse, Status ( Beamter, Angestellter oder Arbeiter ), Brut. 7.. ANLEITUNG 8SPEEDER4PRG cSPEEDER4Q "d@. 8.. 7SPEEDER4DOC 9]RSPEEDER4S NQ06601030305800 F0110030 9[...................................................]011  Stefan Schreiber Kesselweg 14 8650 Kulmbach Speeder+ (VerdopplungderSchreib-undLesegeschwindigkeitdesAtariST) MehralsdreiJahresindnunseitErscheinenderSpeeder- Urversionvergangen,dieimmernochsehrweitverbreitetist. ZweiinderZwischenzeiterschieneneUpdatessindleider nichtganzsoweitinUmlaufgekommen,siehattenaberauchmit denbeidenneuestenTOS-VersionennochSchwierigkeiten. Ichhoffe,dadieseberflligeundhoffentlichendgltige VersionmeineundIhreErwartungenerfllenwird! EsexistierenderzeitvieroffizielleTOS-VersionenfrdenAtari ST,nmlichTOS1.0(das"alte"TOSvom6.2.86),TOS1.2(das "Blitter-TOS"),TOS1.4("Rainbow-TOS")undschlielichTOS 1.6(STE-TOS).Verkompliziertwirdallesnochdadurch,da einigeTOS-Versionen,abernichtalle,auchalsTOS.IMG-File vorliegenunddamitz.B.vonFestplattegebootetwerdenknnen. DieseSpeeder-VersionsolltenunendlichmitjedemTOS funktionieren,auchwennsichdiesesimRAMbefindensollte. HiereinekurzeEntwicklungsgeschichtedesSpeeders(ok,das interessiertzwarnurmich,aberdieseAnleitungsollhaltalles enthalten,auchwasSiegarantiertnichtbrauchenknnen!): BekanntlichliefdiealteSpeeder-Version1.4nuraufTOS V1.0,nichtjedochaufneuerenBetriebssystemsversionen. EineZwischenversion(2.0),diesichallerdingsniemals allzuweitverbreitethat,liefzwarmitBlitter-TOS,aufgrund einesminimalen,aberdennochschwerzuentdeckendenProgrammier fehlerswurdeaberbeiTOS1.4und1.6keinBeschleunigungseffekt erreicht.DieseVersionlandeteaberimmerhinmitleichten ModifizierungenaufClausBrods"Kleisterscheibe".  UpdateNr.3.0behobdiesenFehlerzwar,funktionierteallerdings abTOSV1.2nicht,wennesbeimBootenausdemAUTO-Ordner herausgestartetwurde.Undwarumnicht? WeilbeineuerenTOS-VersionendieSystemvariable$4f2(sysbase) nochnichtinitialisiertist,wennProgrammeimAUTO-Orner aufgerufenwerden,praktischalleanderenSystemvariablenaber bereitsverwendetwerdendrfen. BeiTOS1.0tratjedenfallsdieseInkonsequenznochnichtauf. Is'jaauchlogisch,oder?! Tja,unddamuichaucheinigeST-Anwenderkritisieren, diemichimmerganzentrstetanriefenundIhreMeinungzum Ausdruckbrachten,wasfreinSchrottderSpeeder+dochsei. DieseLeuteerzhltenmir,daderSpeeder+nichtfunktionierte, undichhatteihnnatrlichaufallenTOS-Versionengetestet, allerdingsnurperDoppelklickvomDesktopaus.Unddaliefeben alles.  AufjedenFallhatmirniejemandgenausagenknnen,was eigentlichnichtklappte,undmiteinbichenMhehttees mglichseinmssen,festzustellen,dabesagtesProblemnurmit AUTO-Ordnerauftrat.Nagut,alsoSchwammdrber!  DieseSpeeder+-Versiondarffreikopiertwerden,sollteaber niemalsohnedieseAnleitungweitergegebenwerden! WeichenSienachMglichkeitnurinbegrndetenAusnahmefllen vondieserBitteab.Z.B.htteichnichtsdagegen,wennSpeeder+ alsSchnelladerbeiSpieledisketteneingesetztwrde.Insolchen FllenwirdnatrlichkeinPlatzfrdieAnleitungvorhanden sein.  SiesolltenfolgendeFilesaufdieserPD-Diskettevorfinden: 1.Speeder4.prg:Speeder+-Programm 2.Speeder4.q:QuelltextdesProgramms 3.Speeder4.doc:wenndiesesFilenichtvorhandenist,knnen SiediesenTextnichtlesen/genieen/indenDesktop- Papierkorbwerfen. 4.Speeder4.s:dasgleicheimASCII-Format(ohneSchriftarten)  II.TheoretischeGrundlagenvonFastload-Utilities MagebendfrdieGeschwindigkeiteinesComputersistnicht nurseineProzessorleistung,sondernvorallemauchdie LeistungsfhigkeitseinerPeripheriewieDiskettenlaufwerke, FestplatteundDrucker.BezglichderDiskettenlaufwerkehatder ATARISTbeimArbeitenmitlngerenFileseinedurchschnittliche Lesegeschwindigkeitvon8KByte/sec.,bzw.ungefhr4KByte/sec. beimSchreiben. DieseWerteknnendurchdasAusschalteneinesVerifysverdoppelt werden.NochdazuhatdieseManahmepraktischkeinen gravierendenNachteilzurFolge,jedenfallshatmichnochkein SkeptikervomGegenteilberzeugenknnen. DieserTextistnochimmereinederwenigendetaillierten undkorrektenBeschreibungendafr,waspassiert,wenndasTrack- VerifybeimSpurwechselausgeschaltetwird(dasPrinzipaller Fastload-Utilities). EineWarnungimvoraus:Eshandeltsichhierbeiumkeineleichte Materie.Ichhabemichjedochbemht,dieseAnleitungmglichst leichtverstndlichzuverfassen.WennSieschonimvorausgen gendVertrauenzumeinemProgrammhabensollten,brauchenSie sichmitprogrammtechnischenDetailsnatrlichnichtzubelasten. WasbewirktdasProgramm"Speeder4.prg"nunkonkretundist beiderSachenichtdocheinHaken?Umevtl.ngstederSkeptiker undSicherheitsfanatikerzuzerstreuen,mchteicheinenkurzen AusflugindieTheoriedesFloppyDiscControllers(FDC)des AtariSTunternehmen. DerFDCbietetunterschiedlicheVorkehrungen,dieDatensicherheit zuerhhen.EsexistierenhauptschlichdreiArteneinesVerifys: 1.LeseneinesSektors:DerFDCarbeitetbereitshardwaremig mitPrfsummen.WenneinSektoraufdieDiskettegeschrieben wird,fgtderFDCautomatischeine16-BitPrfsummean.Diese Prfsummewirdauchals "CyclicRedudancyCheck"oderkurzCRC bezeichnet.BeimLesenberechnetderFDCausdeneingelesenen DatendieCRC-Prfsummeerneutundvergleichtdiesemitder aufderDiskettebereitsabgespeicherten.BeieinemLesefehler trittzwischendiesenbeidenWertenmitanSicherheitgrenzen derWahrscheinlichkeiteineDiskrepanzauf. 2.SchreibeneinesSektors:HieristdasVerifizierennichtganz soeinfach.DerFDCkannjedenfallsnichtunmittelbar herausfinden,obdieDatenaufderDisketterichtigangekommen sind.DieVerify-RoutinedesTOSverwendethiereinenkleinen Trick: AllegeschriebenenSektorenwerdennachdemSchreibenineinen eigenen1024Byte-Puffereingelesen(512Byteswren mindestenserforderlich).WennbeimSchreibeneinFehler aufgetretenist,kanndiesberdieCRC-Logikfestgestellt werden,dalogischerweisenunaucheinCRC-Fehlerauftreten mu.Esistsoimmerhinnichtnotwendig,daallegeschrie benenDatenmitdenimSpeichervorhandenenBytefrByte verglichenwerdenmssen. DurchdieseMethodehalbiertsichimallgemeinendieSchreib- gegenberderLesegeschwindigkeit,dajedergeschriebene SektornocheinmalzumVerifizierengelesenwerdenmu.Dieses VerifykannberdasBetriebssystemausgeschaltetwerden, indemdieSystemvariable$444aufeinenWertungleich0 gesetztwird.DiesistaberausGrndenderDatensicherheit wirklichriskant.  3.Track-VerifynachPositionierungdesSchreib/Lesekopfes: NacheinerPositionierungdesSchreib/Lesekopfesdurcheinen SEEK-,RESTOREoderSTEP-BefehldesFDCbestehtdieMglich keit,zuberprfen,obderlogischeTrackmitdemphysikal. TrackaufderDiskettebereinstimmt.Eskannnmlich vorkommen,daderSchrittmotordesDiskettenlaufwerksden BefehlsimpulsenzurPositionierungnichtfolgenkannundsich dannaufeinemfalschenTrackbefindet.ZumVerifizierenliest derFDCdasID-FelddesnchstenSektors,indemSeite,Track, SektornummerundGrealsInformationenberdenbetreffenden Sektorabgelegtsind. DieBIOS-Routine4("rwabs"),berdiefastalleDisketten zugriffelaufen,machtvondiesemVerifybeimPositionieren Gebrauch.DieentsprechendeStelleliegtbeijederBetriebs systemversionnatrlichwoanders.BeiderTOS-Version1.0 liegtsiez.B.anderAddresse$FC1B8A: $FC1B8A: moveq.l #$14,d6 ;SEEKmitVerify $FC1B90: bsr $FC1BB6 ;anFDCschicken Im"AtariSTINTERN"vonDataBeckerwirddieRoutine,inder dieseSequenzenthaltenist,als"go2track"bezeichnet,aller dingsistdieserNamenicht"offiziell".Siedientdazu,wie bereitsderNamesagt,einenbestimmtenTrackanzusteuern.  Speeder+schaltetdiesesVerifyaus,indemderFDC-Befehl$14 durch$10(SEEKohneVerify)ersetztwird.Dieshatbei lngerenFileseineVerdopplungderSchreib-undLesegeschwin digkeitzurFolge.DerGrundliegtinnutzloserWartezeitdes FDC: Nehmenwireinmalan,da50KByteoder100Sektoren,die hintereinanderliegen,gelesenwerdensollen.Nach9Sektoren (bzw.10SektorenbeieinerFATDISK,11Sektorenbei 'hyperformatierten'Disketten)muderSchreib/Lesekopfauf dennchstenTrackpositioniertwerden.Beieingeschaltetem VerifyholtderFDCdiephysik.Tracknummerausdemnchsten ID-Feld,daszuSektor1desnchstenTracksgehrt.Sektor1 istabergleichzeitigderjenigeSektor,deralsnchster gelesenwerdenmu.DadessenID-FeldsoebenamLesekopf vorbeigerauschtist,mueineganzeUmdrehungabgewartet werden,biserdasnchsteMalgefundenwird.FrdasLesen einesTrackswerdenalsostatteinerUmdrehungjeweilszwei bentigt.Diemglichebertragungsratewirddadurchhalbiert! WelcheNebenwirkungentretenbeiderAusschaltungdiesesVerifys auf?berhauptkeine!EinTrack-Verifyfindetnmlichauchbei jedemSchreib/LesevorgangaufDiskettestatt.DerFDCprftbei einemREAD-SECTOR-Befehl(bzw.WRITE-SECTOR),obdievorhandene TracknummerimID-FeldmitdergewnschtenNummerimTrack- RegisterdesFDCbereinstimmt.EinFehlerwirdbereinStatus biterkannt("Recordnotfound")undauchvomBetriebssystem registriert.WennwirklicheinmaleinfalscherTrackangesteuert ist,suchtdasBetriebssystemdiebetreffendeSpurnocheinmal( ein"RESEEK"-Vorgang).TechnischgelingtdiesbereinRESTORE( PositionierungdesLesekopfesaufTrack0)undeinemanschlie endenSEEK-BefehlandenFDC.DamitwirddiegewnschteSpur auchbeieinemPositionierungsfehlermitanSicherheitgrenzender Wahrscheinlichkeitgefunden. KeineGeschwindigkeitsvorteilebietenFastload-Utilitiesbrigens bei"Schnelladedisketten",dieauffolgendeArtformatiertworden sind: Track0beginntmitSektor1(wieimmer).Beijedemfolgenden TrackrutschtderlogischeSektor1umeinePositionnachhinten, d.h.Track1beginntmitSektor9(bzw.Sektor10beieiner Fatdisk!)understanschlieendfolgtSektor1. AufTrack2stehtSektor1schlielicherstan3.Position,usw. DurchdieseMethodewirdauchbeieingeschaltetemTrack-Verify fasteineVerdopplungderSchreib-undLesegeschwindigkeit erzielt,leiderbietenabernachwievordiewenigsten FormatierprogrammeeineOptionan,nachderDiskettenmitdieser Methodeformatiertwerdenknnen. III.MglicheProblememitFastload-Utilities  MitdemLaufwerkstypNEC-1037trateninEinzelfllenProbleme beimLesenvonDatenauf.Abundzuwerdenkorrektgeschriebene Sektorenalsdefektdeklariert.BeiweiterenLeseversuchenwerden siedennochrichtigeingelesen. Ichvermute,daessichhierbeiumeinreinmechanischesProblem diesesansonstensehrgutenLaufwerkshandelt.Beiausgeschal tetemTrack-VerifywirdnacheinemSpurwechselderzulesende SektorinderRegelvielschnellererreichtalsmitVerify(wo meistensbiszumLesenderDateneinganzerDiskettenumlauf gewartetwerdenmu!).WennderSchreib/Lesekopfnachdem Spurwechselnochetwasschwingt,werdendieDatenevtl.nicht korrekteingelesen,obwohlsienatrlichrichtigaufgezeichnet wordensind.SofernmeineTheoriestimmt,knntendurchdie leichteundflacheBauweisedesNEC-1037LaufwerkssolchePro blemeunterUmstndenauftreten.Allerdingsmuichzugeben,da dieseErklrungeinereineHypothesedarstellt,dienichtun bedingtzutrifft. FallsbeiIhnendiesesProblemauftauchensollte,empfehleich, eineSystemvariableimBetriebssystemzuverndern.Eshandelt sichumdieVariablein$440(seekrate,Word-Format).Wenn dieseVariableauf'0'stattauf'3'gesetztwird,erhhtsich dieWartezeit,diederFDCnacheinemStep-Impulseinlegt,von3 auf6ms.AufdieAddresse$440kannbrigensnurimSupervisor- Modusdes68000erszugegriffenwerden. Ichmchtenocheinmalausdrcklichdaraufhinweisen,dadieser bishernurimZusammenhangmitLaufwerkendesTypsNEC1037 aufgetretene"Fehler"imGrundenichtsmitmangelnderDaten sicherheitdesSpeeder+oderandererFastload-Programmezutun hat.DieDatenwerdenzumindestimmerkorrektaufgezeichnet,im schlimmstenFallekmemanansienacheinemneuenBootvorgang ohneFastload-Programmheran,normalerweiseaberbereitsbei einemweiterenLeseversuch. NatrlichtrittdasebenerwhnteProblemnichtaufallenNEC- 1037Laufwerkenauf,undselbstaufbetroffenenLaufwerkennur hchstsporadisch.  MitanderenLaufwerkstypenhatesbisherkeineSchwierig keitengegeben,auchnichtmit5.25"-Laufwerken. EineweitereshufigesProblemwirdFastload-Programmenvlligzu unrechtzugeschrieben: DiskettenknnenzwarmitdemeigenenLaufwerkkorrektgelesen werden,nichtjedochaufeinemanderen.DerartigeSchwierigkeiten knnenniedurchdenSpeeder+verursachtwordensein. UrsachefrsolcheProblemesindvielmehrz.B.unterschiedliche DrehzahlenderLaufwerke(300UpMistdieSolldrehzahl,die tatschlicheDrehzahleinesLaufwerkskannaberdurchausbiszu 2%vondiesemWertabweichen!),oderaucheinverstaubter Schreib/Lesekopfbeieinemderbeiden"inkompatiblen"Laufwerke etc.DerartigeFehlerhngennatrlichnichtmitdemAusschalten einesVerifyszusammen,daphysikalischeIntoleranzenzwischen Laufwerkennichtsdamitzutunhaben,obDatenmitoderohne Track-Verifyaufgezeichnetwordensind.  Die Erfahrungen in Zusammenhang mit Fastload-Programmen zeigen, da beimweitausgrtenTeil der ST-Anwender, die entsprechende Utilitiesverwenden, niemals irgendwie geartete Probleme aufge- treten sind. UndschlielichverwendeichselbstseitJahrenTOS-Versionenim EPROM,indenenichdasTrack-Verifyausgeschaltethabe. NatrlichfhleichmichtrotzeinesVerifyswenigerinmeinem Rechnerkeineswegsbedroht(eherschonvonderFileverwaltung desGEMDOS!). Auch wenn in ( seltenen ) Einzelfllen Probleme mit Fastload-Utilities beim Lesen auftreten knnen, ist der wichtigsten Forderung bezglich der Datensicherheit immer Rechnung getragen: Fehlerhaftes Aufzeichnen oder berschreiben von Daten aufgrund ausgeschaltetem Track-Verify ist unmglich. Sie sollten sich also nicht davon abhalten lassen, Ihren Diskettenlaufwerken auf die Sprnge zu helfen! III. Algorithmus von "Speeder4.prg" Nach diesen theoretischen Vorbemerkungen knnen wir endlich den 'Speeder+' unter die Lupe nehmen. Fast alle Zugriffe auf die Diskettenlaufwerke laufen, wie weiter oben schon gesagt, ber die Funktion 4 des BIOS, in der nur ein einziges Byte gendert werden mu. Im ROM ist es allerdings unmglich, dieseStellezumanipulieren ( was natrlich rgerlich ist ). Zum Glck wird diese Routine ber einen Vektor angesprungen ( Systemvariable $476 ), der auf eine eigene Routine umgebogen werden kann. Von dieser Tatsache machen z.B.auch Ramdisks und Festplatten-Treiber Gebrauch. Das Prinzip jedes Fastload-Programms besteht darin, da es als residentes Programm installiert wird. Wenn es nicht bereits selbst von der alten rwabs-Routine abgeleitet ist, wie mein alter "Speeder", mu es diese aus dem Betriebssystem kopieren. Leider ist die originale rwabs-Routine eine der lngsten Routinen im Betriebssystem, zu ihr gehren beispielsweise Unterprogramme zur DMA-Kontrolle, Fehlerbehandlung etc. Zudem stehen diese Subroutinen nicht ordentlich hintereinander, sondern sind recht  verstreut. Beim Kopieren der originalen rwabs-Routine ins RAM bestehen deutliche Unterschiede zwischen 'Fastload' und meinem Speeder+. Fastload-Versionen kopieren ab Beginn des Betriebssystems 8 KByte Daten aus dem ROM in einen programminternen Puffer, das reicht bei allen bisherigen TOS-Versionen aus, um die rwabs-Routine komplett ins RAM abzubilden. Anschlieend werden von "Fastload" noch einige Sprungaddressen reloziert, wobei je nach TOS-Version auf eine eigene Tabelle zugegriffen wird. Speeder+ verhlt sich wesentlich intelligenter. Zunchst wird mit Hilfevon Suchstrings nach dem im Speicher am weitesten vorne stehenden Unterprogramm gesucht, das noch von der rwabs-Routine aufgerufen wird. Bei allen bisherigen TOS-Versionenwar dies bis- her entweder die BIOS-Mediach-Routine oder die XBIOS-Flopread- Funktion. Speeder+ vergleichtdie Startaddressen beiderRoutinen und ko- piert ab der niedrigeren Addresse 4 KByte aus dem Rom ins RAM, damitwird imVergleichzu "Fastload" ca. 4 KByte weniger Speicherbelegt. Die Relozierroutine kommt ebenfalls ohne Tabellen aus. Es mssen lediglich die Sprungaddressen einiger jsr-Aufrufe angepat werden. Jsr-Befehle ( absolute Addressierung ) knnen leicht aufgefunden werden, indem nach dem Wort $4EB9 gesucht wird. Zwei Sprunaddressen, nmlich in den 'Critical Error Handler' und in die Sektorkopierroutine 'fastcopy', zeigen weiterhin in den ROM-Bereich. Durch diesen Trick, wirklich nur die Routinen zu kopieren, die fr die doppelte Schreib/Lesegeschwindigkeit relevant sind, ist der Speeder+ fast so kompakt wie mglich geworden. Lediglich der Vorlufer 'Speeder.prg' V1.4 reserviert noch weniger Speicher ( ca. 2.5 KByte ), luft dafr aber nur mit TOS 1.0. Anschlieend wird im Ram-Puffer noch nach der Routine 'go2track' gesucht und der FDC-Befehl 'Seek mit Verify' ($14) in 'Seek ohne Verify' ($10) umgendert. Zuletzt wird der Vektor $476 auf eine Speeder+-Routine umgebogen, die beirwabs-Aufrufenerkennt,ob Laufwerk A oder B angesprochen wird. Falls diesnicht der Fall ist, wird die Kontrolle an den entsprechendenRamdisk-, Festplattentreiber etc. abgegeben. Da Speeder+ im Gegensatz zu 'Fastload' keine Reloziertabellen verwendet, sondern ausschlielich mit Suchstrings arbeitet, drfte es sogar auf zuknftigen TOS-Versionenfunktionieren,wenn frdenSTdasTOSberhauptnochweiterentwickeltwerdensollte. Die Funktionsfhigkeit des Speeder+ ist zwar ( bisher ) auf allen TOS-Versionen des Atari ST gewhrleistet.Wahrscheinlichwirder jedochnichtaufdembereitslieferbaren'AtariTT' funktionieren.Ichweiehrlichgesagtnochnichteinmal,obdas TT-ToseinTrack-Verifyvorsiehtodernicht. Eine Anpassung des Speeder+ an den 'Atari TT'wrde ich auch auf keinenFall alsmeine Aufgabe betrachten.Aberschlielichgebe ichdafrjaauchdenQuelltextmeinesProgrammsmitheraus,so dabeiBedarfjemandohne zugroenAufwanddieseAnpassung erledigenknnte.  Kulmbach, den 18.10.90 StefanSchreiber P.S.: "Speeder+" ist ein uerst ntzliches Utility und steigert die Leistungsfhigkeit Ihres Computersystems evtl. ganz erheblich. Falls Sie dieses Programm hufig benutzen, wrde ich es fr fair halten, wenn Sie mir als Anerkennung dafr einen Betrag zuschicken, den Sie fr angemessen halten. In diesem Falle vielen Dank bereits im voraus! Stefan Schreiber Kesselweg 14 8650 Kulmbach Speeder+ ( Verdopplung der Schreib- und Lesegeschwindigkeit des Atari ST ) Mehr als drei Jahre sind nun seit Erscheinen der Speeder- Urversion vergangen, die immer noch sehr weit verbreitet ist. Zwei in der Zwischenzeit erschienene Updates sind leider nicht ganz so weit in Umlauf gekommen, sie hatten aber auch mit den beiden neuesten TOS-Versionen noch Schwierigkeiten. Ich hoffe, da diese berfllige und hoffentlich endgltige Version meine und Ihre Erwartungen erfllen wird! Es existieren derzeit vier offizielle TOS-Versionen fr den Atari ST, nmlich TOS 1.0 ( das "alte" TOS vom 6.2.86 ), TOS 1.2 ( das "Blitter-TOS" ), TOS 1.4 ( "Rainbow-TOS" ) und schlielich TOS 1.6 ( STE-TOS ). Verkompliziert wird alles noch dadurch, da einige TOS-Versionen, aber nicht alle, auch als TOS.IMG-File vorliegen und damit z.B. von Festplatte gebootet werden knnen. Diese Speeder-Version sollte nun endlich mit jedem TOS funktionieren, auch wenn sich dieses im RAM befinden sollte. Hier eine kurze Entwicklungsgeschichte des Speeders ( ok, das interessiert zwar nur mich, aber diese Anleitung soll halt alles enthalten, auch was Sie garantiert nicht brauchen knnen! ): Bekanntlich lief die alte Speeder-Version 1.4 nur auf TOS V1.0, nicht jedoch auf neueren Betriebssystemsversionen. Eine Zwischenversion ( 2.0 ), die sich allerdings niemals allzuweit verbreitet hat, lief zwar mit Blitter-TOS, aufgrund eines minimalen, aber dennoch schwer zu entdeckenden Programmier- fehlers wurde aber bei TOS 1.4 und 1.6 kein Beschleunigungseffekt erreicht. Diese Version landete aber immerhin mit leichten Modifizierungen auf Claus Brods "Kleisterscheibe". Update Nr. 3.0 behob diesen Fehler zwar, funktionierte allerdings ab TOS V1.2 nicht, wenn es beim Booten aus dem AUTO-Ordner heraus gestartet wurde. Und warum nicht? Weil bei neueren TOS-Versionen die Systemvariable $4f2 (sysbase) noch nicht initialisiert ist, wenn Programme im AUTO-Orner aufgerufen werden, praktisch alle anderen Systemvariablen aber bereits verwendet werden drfen. Bei TOS 1.0 trat jedenfalls diese Inkonsequenz noch nicht auf. Is' ja auch logisch, oder?! Tja, und da mu ich auch einige ST-Anwender kritisieren, die mich immer ganz entrstet anriefen und Ihre Meinung zum Ausdruck brachten, was fr ein Schrott der Speeder+ doch sei. Diese Leute erzhlten mir, da der Speeder+ nicht funktionierte, und ich hatte ihn natrlich auf allen TOS-Versionen getestet, allerdings nur per Doppelklick vom Desktop aus. Und da lief eben alles. Auf jeden Fall hat mir nie jemand genau sagen knnen, was eigentlich nicht klappte, und mit ein bichen Mhe htte es mglich sein mssen, festzustellen, da besagtes Problem nur mit AUTO-Ordner auftrat. Na gut, also Schwamm drber! Diese Speeder+-Version darf frei kopiert werden, sollte aber niemals ohne diese Anleitung weitergegeben werden! Weichen Sie nach Mglichkeit nur in begrndeten Ausnahmefllen von dieser Bitte ab. Z.B. htte ich nichts dagegen, wenn Speeder+ als Schnellader bei Spieledisketten eingesetzt wrde. In solchen Fllen wird natrlich kein Platz fr die Anleitung vorhanden sein. Sie sollten folgende Files auf dieser PD-Diskette vorfinden: 1. Speeder4.prg : Speeder+-Programm 2. Speeder4.q : Quelltext des Programms 3. Speeder4.doc : wenn dieses File nicht vorhanden ist, knnen Sie diesen Text nicht lesen / genieen / in den Desktop- Papierkorb werfen. 4. Speeder4.s: das gleiche im ASCII-Format ( ohne Schriftarten ) II. Theoretische Grundlagen von Fastload-Utilities Magebend fr die Geschwindigkeit eines Computers ist nicht nur seine Prozessorleistung, sondern vor allem auch die Leistungsfhigkeit seiner Peripherie wie Diskettenlaufwerke, Festplatte und Drucker. Bezglich der Diskettenlaufwerke hat der ATARI ST beim Arbeiten mit lngeren Files eine durchschnittliche Lesegeschwindigkeit von 8 KByte/sec., bzw. ungefhr 4 KByte/sec. beim Schreiben. Diese Werte knnen durch das Ausschalten eines Verifys verdoppelt werden. Noch dazu hat diese Manahme praktisch keinen gravierenden Nachteil zur Folge, jedenfalls hat mich noch kein Skeptiker vom Gegenteil berzeugen knnen. Dieser Text ist noch immer eine der wenigen detaillierten und korrekten Beschreibungen dafr, was passiert, wenn das Track- Verify beim Spurwechsel ausgeschaltet wird ( das Prinzip aller Fastload-Utilities ). Eine Warnung im voraus: Es handelt sich hierbei um keine leichte Materie. Ich habe mich jedoch bemht, diese Anleitung mglichst leichtverstndlich zu verfassen. Wenn Sie schon im voraus gen- gend Vertrauen zu meinem Programm haben sollten, brauchen Sie sich mit programmtechnischen Details natrlich nicht zu belasten. Was bewirkt das Programm "Speeder4.prg" nun konkret und ist bei der Sache nicht doch ein Haken? Um evtl. ngste der Skeptiker und Sicherheitsfanatiker zu zerstreuen, mchte ich einen kurzen Ausflug in die Theorie des Floppy Disc Controllers ( FDC ) des Atari ST unternehmen. Der FDC bietet unterschiedliche Vorkehrungen, die Datensicherheit zu erhhen. Es existieren hauptschlich drei Arten eines Verifys: 1. Lesen eines Sektors: Der FDC arbeitet bereits hardwaremig mit Prfsummen. Wenn ein Sektor auf die Diskette geschrieben wird, fgt der FDC automatisch eine 16-Bit Prfsumme an. Diese Prfsumme wird auch als "Cyclic Redudancy Check" oder kurz CRC bezeichnet. Beim Lesen berechnet der FDC aus den eingelesenen Daten die CRC-Prfsumme erneut und vergleicht diese mit der auf der Diskette bereits abgespeicherten. Bei einem Lesefehler tritt zwischen diesen beiden Werten mit an Sicherheit grenzen- der Wahrscheinlichkeit eine Diskrepanz auf. 2. Schreiben eines Sektors: Hier ist das Verifizieren nicht ganz so einfach. Der FDC kann jedenfalls nicht unmittelbar herausfinden, ob die Daten auf der Diskette richtig angekommen sind. Die Verify-Routine des TOS verwendet hier einen kleinen Trick: Alle geschriebenen Sektoren werden nach dem Schreiben in einen eigenen 1024 Byte-Puffer eingelesen ( 512 Bytes wren mindestens erforderlich ). Wenn beim Schreiben ein Fehler aufgetreten ist, kann dies ber die CRC-Logik festgestellt werden, da logischerweise nun auch ein CRC-Fehler auftreten mu. Es ist so immerhin nicht notwendig, da alle geschrie- benen Daten mit den im Speicher vorhandenen Byte fr Byte verglichen werden mssen. Durch diese Methode halbiert sich im allgemeinen die Schreib- gegenber der Lesegeschwindigkeit, da jeder geschriebene Sektor noch einmal zum Verifizieren gelesen werden mu. Dieses Verify kann ber das Betriebssystem ausgeschaltet werden, indem die Systemvariable $444 auf einen Wert ungleich 0 gesetzt wird. Dies ist aber aus Grnden der Datensicherheit wirklich riskant. 3. Track-Verify nach Positionierung des Schreib/Lesekopfes: Nach einer Positionierung des Schreib/Lesekopfes durch einen SEEK-, RESTORE oder STEP-Befehl des FDC besteht die Mglich- keit, zu berprfen, ob der logische Track mit dem physikal. Track auf der Diskette bereinstimmt. Es kann nmlich vorkommen, da der Schrittmotor des Diskettenlaufwerks den Befehlsimpulsen zur Positionierung nicht folgen kann und sich dann auf einem falschen Track befindet. Zum Verifizieren liest der FDC das ID-Feld des nchsten Sektors, in dem Seite, Track, Sektornummer und Gre als Informationen ber den betreffenden Sektor abgelegt sind. Die BIOS-Routine 4 ( "rwabs" ), ber die fast alle Disketten- zugriffe laufen, macht von diesem Verify beim Positionieren Gebrauch. Die entsprechende Stelle liegt bei jeder Betriebs- systemversion natrlich woanders. Bei der TOS-Version 1.0 liegt sie z.B. an der Addresse $FC1B8A: $FC1B8A: moveq.l #$14,d6 ; SEEK mit Verify $FC1B90: bsr $FC1BB6 ; an FDC schicken Im "Atari ST INTERN" von Data Becker wird die Routine, in der diese Sequenz enthalten ist, als "go2track" bezeichnet, aller- dings ist dieser Name nicht "offiziell". Sie dient dazu, wie bereits der Name sagt, einen bestimmten Track anzusteuern. Speeder+ schaltet dieses Verify aus, indem der FDC-Befehl $14 durch $10 ( SEEK ohne Verify ) ersetzt wird. Dies hat bei lngeren Files eine Verdopplung der Schreib- und Lesegeschwin- digkeit zur Folge. Der Grund liegt in nutzloser Wartezeit des FDC: Nehmen wir einmal an, da 50KByte oder 100 Sektoren, die hintereinanderliegen, gelesen werden sollen. Nach 9 Sektoren ( bzw. 10 Sektoren bei einer FATDISK, 11 Sektoren bei 'hyperformatierten' Disketten ) mu der Schreib/Lesekopf auf den nchsten Track positioniert werden. Bei eingeschaltetem Verify holt der FDC die physik. Tracknummer aus dem nchsten ID-Feld, das zu Sektor 1 des nchsten Tracks gehrt. Sektor 1 ist aber gleichzeitig derjenige Sektor, der als nchster gelesen werden mu. Da dessen ID-Feld soeben am Lesekopf vorbeigerauscht ist, mu eine ganze Umdrehung abgewartet werden, bis er das nchste Mal gefunden wird. Fr das Lesen eines Tracks werden also statt einer Umdrehung jeweils zwei bentigt. Die mgliche bertragungsrate wird dadurch halbiert! Welche Nebenwirkungen treten bei der Ausschaltung dieses Verifys auf? berhaupt keine! Ein Track-Verify findet nmlich auch bei jedem Schreib/Lesevorgang auf Diskette statt. Der FDC prft bei einem READ-SECTOR-Befehl ( bzw. WRITE-SECTOR ), ob die vorhandene Tracknummer im ID-Feld mit der gewnschten Nummer im Track- Register des FDC bereinstimmt. Ein Fehler wird ber ein Status- bit erkannt ( "Record not found" ) und auch vom Betriebssystem registriert. Wenn wirklich einmal ein falscher Track angesteuert ist, sucht das Betriebssystem die betreffende Spur noch einmal ( ein "RESEEK"-Vorgang ). Technisch gelingt dies ber ein RESTORE ( Positionierung des Lesekopfes auf Track 0 ) und einem anschlie- enden SEEK-Befehl an den FDC. Damit wird die gewnschte Spur auch bei einem Positionierungsfehler mit an Sicherheit grenzender Wahrscheinlichkeit gefunden. Keine Geschwindigkeitsvorteile bieten Fastload-Utilities brigens bei "Schnelladedisketten", die auf folgende Art formatiert worden sind: Track 0 beginnt mit Sektor 1 ( wie immer ). Bei jedem folgenden Track rutscht der logische Sektor 1 um eine Position nach hinten, d.h. Track 1 beginnt mit Sektor 9 ( bzw. Sektor 10 bei einer Fatdisk! ) und erst anschlieend folgt Sektor 1. Auf Track 2 steht Sektor 1 schlielich erst an 3. Position, usw. Durch diese Methode wird auch bei eingeschaltetem Track-Verify fast eine Verdopplung der Schreib- und Lesegeschwindigkeit erzielt, leider bieten aber nach wie vor die wenigsten Formatierprogramme eine Option an, nach der Disketten mit dieser Methode formatiert werden knnen. III. Mgliche Probleme mit Fastload-Utilities Mit dem Laufwerkstyp NEC-1037 traten in Einzelfllen Probleme beim Lesen von Daten auf. Ab und zu werden korrekt geschriebene Sektoren als defekt deklariert. Bei weiteren Leseversuchen werden sie dennoch richtig eingelesen. Ich vermute, da es sich hierbei um ein rein mechanisches Problem dieses ansonsten sehr guten Laufwerks handelt. Bei ausgeschal- tetem Track-Verify wird nach einem Spurwechsel der zu lesende Sektor in der Regel viel schneller erreicht als mit Verify ( wo meistens bis zum Lesen der Daten ein ganzer Diskettenumlauf gewartet werden mu! ). Wenn der Schreib/Lesekopf nach dem Spurwechsel noch etwas schwingt, werden die Daten evtl. nicht korrekt eingelesen, obwohl sie natrlich richtig aufgezeichnet worden sind. Sofern meine Theorie stimmt, knnten durch die leichte und flache Bauweise des NEC-1037 Laufwerks solche Pro- bleme unter Umstnden auftreten. Allerdings mu ich zugeben, da diese Erklrung eine reine Hypothese darstellt, die nicht un- bedingt zutrifft. Falls bei Ihnen dieses Problem auftauchen sollte, empfehle ich, eine Systemvariable im Betriebssystem zu verndern. Es handelt sich um die Variable in $440 ( seekrate, Word-Format ). Wenn diese Variable auf '0' statt auf '3' gesetzt wird, erhht sich die Wartezeit, die der FDC nach einem Step-Impuls einlegt, von 3 auf 6 ms. Auf die Addresse $440 kann brigens nur im Supervisor- Modus des 68000ers zugegriffen werden. Ich mchte noch einmal ausdrcklich darauf hinweisen, da dieser bisher nur im Zusammenhang mit Laufwerken des Typs NEC 1037 aufgetretene "Fehler" im Grunde nichts mit mangelnder Daten- sicherheit des Speeder+ oder anderer Fastload-Programme zu tun hat. Die Daten werden zumindest immer korrekt aufgezeichnet, im schlimmsten Falle kme man an sie nach einem neuen Bootvorgang ohne Fastload-Programm heran, normalerweise aber bereits bei einem weiteren Leseversuch. Natrlich tritt das eben erwhnte Problem nicht auf allen NEC- 1037 Laufwerken auf, und selbst auf betroffenen Laufwerken nur hchst sporadisch. Mit anderen Laufwerkstypen hat es bisher keine Schwierig- keiten gegeben, auch nicht mit 5.25"-Laufwerken. Eine weiteres hufiges Problem wird Fastload-Programmen vllig zu unrecht zugeschrieben: Disketten knnen zwar mit dem eigenen Laufwerk korrekt gelesen werden, nicht jedoch auf einem anderen. Derartige Schwierigkeiten knnen nie durch den Speeder+ verursacht worden sein. Ursache fr solche Probleme sind vielmehr z.B. unterschiedliche Drehzahlen der Laufwerke ( 300 UpM ist die Solldrehzahl, die tatschliche Drehzahl eines Laufwerks kann aber durchaus bis zu 2% von diesem Wert abweichen! ), oder auch ein verstaubter Schreib/Lesekopf bei einem der beiden "inkompatiblen" Laufwerke etc. Derartige Fehler hngen natrlich nicht mit dem Ausschalten eines Verifys zusammen, da physikalische Intoleranzen zwischen Laufwerken nichts damit zu tun haben, ob Daten mit oder ohne Track-Verify aufgezeichnet worden sind. Die Erfahrungen in Zusammenhang mit Fastload-Programmen zeigen, da beim weitaus grten Teil der ST-Anwender, die entsprechende Utilities verwenden, niemals irgendwie geartete Probleme aufge- treten sind. Und schlielich verwende ich selbst seit Jahren TOS-Versionen im EPROM, in denen ich das Track-Verify ausgeschaltet habe. Natrlich fhle ich mich trotz eines Verifys weniger in meinem Rechner keineswegs bedroht ( eher schon von der Fileverwaltung des GEMDOS! ). Auch wenn in ( seltenen ) Einzelfllen Probleme mit Fastload-Utilities beim Lesen auftreten knnen, ist der wichtigsten Forderung bezglich der Datensicherheit immer Rechnung getragen: Fehlerhaftes Aufzeichnen oder berschreiben von Daten aufgrund ausgeschaltetem Track-Verify ist unmglich. Sie sollten sich also nicht davon abhalten lassen, Ihren Diskettenlaufwerken auf die Sprnge zu helfen! III. Algorithmus von "Speeder4.prg" Nach diesen theoretischen Vorbemerkungen knnen wir endlich den 'Speeder+' unter die Lupe nehmen. Fast alle Zugriffe auf die Diskettenlaufwerke laufen, wie weiter oben schon gesagt, ber die Funktion 4 des BIOS, in der nur ein einziges Byte gendert werden mu. Im ROM ist es allerdings unmglich, diese Stelle zu manipulieren ( was natrlich rgerlich ist ). Zum Glck wird diese Routine ber einen Vektor angesprungen ( Systemvariable $476 ), der auf eine eigene Routine umgebogen werden kann. Von dieser Tatsache machen z.B. auch Ramdisks und Festplatten-Treiber Gebrauch. Das Prinzip jedes Fastload-Programms besteht darin, da es als residentes Programm installiert wird. Wenn es nicht bereits selbst von der alten rwabs-Routine abgeleitet ist, wie mein alter "Speeder", mu es diese aus dem Betriebssystem kopieren. Leider ist die originale rwabs-Routine eine der lngsten Routinen im Betriebssystem, zu ihr gehren beispielsweise Unterprogramme zur DMA-Kontrolle, Fehlerbehandlung etc. Zudem stehen diese Subroutinen nicht ordentlich hintereinander, sondern sind recht verstreut. Beim Kopieren der originalen rwabs-Routine ins RAM bestehen deutliche Unterschiede zwischen 'Fastload' und meinem Speeder+. Fastload-Versionen kopieren ab Beginn des Betriebssystems 8 KByte Daten aus dem ROM in einen programminternen Puffer, das reicht bei allen bisherigen TOS-Versionen aus, um die rwabs-Routine komplett ins RAM abzubilden. Anschlieend werden von "Fastload" noch einige Sprungaddressen reloziert, wobei je nach TOS-Version auf eine eigene Tabelle zugegriffen wird. Speeder+ verhlt sich wesentlich intelligenter. Zunchst wird mit Hilfe von Suchstrings nach dem im Speicher am weitesten vorne stehenden Unterprogramm gesucht, das noch von der rwabs-Routine aufgerufen wird. Bei allen bisherigen TOS-Versionen war dies bis- her entweder die BIOS-Mediach-Routine oder die XBIOS-Flopread- Funktion. Speeder+ vergleicht die Startaddressen beider Routinen und ko- piert ab der niedrigeren Addresse 4 KByte aus dem Rom ins RAM, damit wird im Vergleich zu "Fastload" ca. 4 KByte weniger Speicher belegt. Die Relozierroutine kommt ebenfalls ohne Tabellen aus. Es mssen lediglich die Sprungaddressen einiger jsr-Aufrufe angepat werden. Jsr-Befehle ( absolute Addressierung ) knnen leicht aufgefunden werden, indem nach dem Wort $4EB9 gesucht wird. Zwei Sprunaddressen, nmlich in den 'Critical Error Handler' und in die Sektorkopierroutine 'fastcopy', zeigen weiterhin in den ROM-Bereich. Durch diesen Trick, wirklich nur die Routinen zu kopieren, die fr die doppelte Schreib/Lesegeschwindigkeit relevant sind, ist der Speeder+ fast so kompakt wie mglich geworden. Lediglich der Vorlufer 'Speeder.prg' V1.4 reserviert noch weniger Speicher ( ca. 2.5 KByte ), luft dafr aber nur mit TOS 1.0. Anschlieend wird im Ram-Puffer noch nach der Routine 'go2track' gesucht und der FDC-Befehl 'Seek mit Verify' ($14) in 'Seek ohne Verify' ($10) umgendert. Zuletzt wird der Vektor $476 auf eine Speeder+-Routine umgebogen, die bei rwabs-Aufrufen erkennt, ob Laufwerk A oder B angesprochen wird. Falls dies nicht der Fall ist, wird die Kontrolle an den entsprechenden Ramdisk-, Festplattentreiber etc. abgegeben. Da Speeder+ im Gegensatz zu 'Fastload' keine Reloziertabellen verwendet, sondern ausschlielich mit Suchstrings arbeitet, drfte es sogar auf zuknftigen TOS-Versionen funktionieren, wenn fr den ST das TOS berhaupt noch weiterentwickelt werden sollte. Die Funktionsfhigkeit des Speeder+ ist zwar ( bisher ) auf allen TOS-Versionen des Atari ST gewhrleistet. Wahrscheinlich wird er jedoch nicht auf dem bereits lieferbaren 'Atari TT' funktionieren. Ich wei ehrlich gesagt noch nicht einmal, ob das TT-Tos ein Track-Verify vorsieht oder nicht. Eine Anpassung des Speeder+ an den 'Atari TT' wrde ich auch auf keinen Fall als meine Aufgabe betrachten. Aber schlielich gebe ich dafr ja auch den Quelltext meines Programms mit heraus, so da bei Bedarf jemand ohne zu groen Aufwand diese Anpassung erledigen knnte. Kulmbach, den 18.10. 90 Stefan Schreiber P.S.: "Speeder+" ist ein uerst ntzliches Utility und steigert die Leistungsfhigkeit Ihres Computersystems evtl. ganz erheblich. Falls Sie dieses Programm hufig benutzen, wrde ich es fr fair halten, wenn Sie mir als Anerkennung dafr einen Betrag zuschicken, den Sie fr angemessen halten. In diesem Falle vielen Dank bereits im voraus! `t,o.. ޮޮ/<|?< NA\B?< NA\, xnC a,H xnCaCe N$2<""""QACa#tA*B,B2< XNgFQACaV (=f|=#vx!Zv/?< NA\Bg/?<1NAbe pXUA|n`8<'0QW|g$6<|| g000q0gQUNuX/<?< NA\?<NAT/?< NA\BgNA od ytN yxN Speeder+ V4.0 is installing... (c) 1990 Stefan Schreiber Greetings to p Klapauzius q! Installation Error!!! I can't find an important TOS-function! Press p RETURN q to continue... NVH n<<<NVH>.Bi<BGadB*J.; SPEEDER+: Verdopplung der Schreib- und Lesegeschwindigkeit ; des ATARI ST ; (c) Stefan Schreiber, Oktober 1990 ; Programmiersprache: PROFIMAT-Assembler hdv_rw = $476 swv_vec = $46E data newbios4: ds.l 1 oldbios4: ds.l 1 meldetext: dc.b 13,10,"Speeder+ V4.0 is installing...",13,10 dc.b "(c) 1990 Stefan Schreiber",13,10 dc.b "Greetings to ",27,"p"," Klapauzius ",27,"q","!",13,0 align.w fehlermeldung: dc.b 10,10,"Installation Error!!!",13,10 dc.b "I can't find an important TOS-function!",13,10 dc.b "Press ",27,"p"," RETURN ",27,"q"," to continue...",13,0 align.w mediach: dc.l $4E560000, $48E70304, $0C6E0002 flopread: dc.l $3CBC0090, $3CBC0190, $3CBC0090 rwabs: dc.l $4E560000, $48E70700, $3E2E0012 go2track: dc.l $42690000, $3CBC0082, $42476100 bss buffer: ds.b 4000 text move.l 4(a7),a6 move.l 12(a6),d7 ; Lnge des PRG-Bereichs add.l 20(a6),d7 ; + Lnge des DATA-Bereichs add.l 28(a6),d7 ; + Lnge des BSS-Bereichs addi.l #$100,d7 ; + Lnge der Basepage move.l #meldetext,-(sp) move #9,-(sp) trap #1 addq.l #6,sp ; Meldetext ausgeben clr.l -(sp) move #$20,-(sp) trap #1 addq.l #6,sp ; Supervisormodus move.l d0,d6 ; sp in d6 zwischenspeichern move.l swv_vec,a0 lea mediach(pc),a1 bsr search move.l a0,a6 ; Beginn der Mediach-Routine --> a6 move.l swv_vec,a0 lea flopread(pc),a1 bsr search sub.l #30,a0 ; Beginn der floprd-Routine --> a0 lea buffer(pc),a1 cmpa.l a6,a0 ; Floppy-Routine mit niedrigster Addresse blo rainbow ; bestimmen. Diese ist je nach TOS-Version oldtos: ; eine von den beiden oben aufgefhrten move.l a6,a0 ; Routinen! rainbow: move.l a0,d2 ; d2 wird fr die Relocate-Routinen bentigt move #249,d1 copy: move.l (a0)+,(a1)+ ; Floppy-Routinen ins RAM schaufeln move.l (a0)+,(a1)+ ; 250*16 = 4000 Bytes move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ dbf d1,copy lea buffer(pc),a0 lea rwabs(pc),a1 bsr search move.l a0,newbios4 ; newbios 4: Vektor auf neue rwabs-Routine relocator: lea buffer(pc),a0 move.l d2,a5 ; untere und obere Grenze des move.l d2,a6 ; kopierten ROM-Bereichs add.l #4000,a6 move #1999,d1 loop: cmp #$4eb9,(a0)+ ; jsr ... ? beq relocate dbf d1,loop cont: lea buffer(pc),a0 lea go2track(pc),a1 bsr search cmp.b #$14,61(a0) ; FDC-Befehl 'Seek mit Verify'? bne error2 move.b #$10,61(a0) ; umndern zu 'Seek ohne Verify'! move.l hdv_rw,oldbios4 ; alte rwabs-Routine retten move.l #switch_rw,hdv_rw ; Scheduler installieren move.l d6,-(sp) move #$20,-(sp) trap #1 addq.l #6,sp ; User-Modus clr -(sp) move.l d7,-(sp) move #$31,-(sp) trap #1 ; Keep process ; Speeder+ ist jetzt als residentes Programm installiert. relocate: cmpa.l (a0),a5 ; Sprung in eine Floppy-Routine? bhi no_floppy_function cmpa.l (a0),a6 blo no_floppy_function sub.l d2,(a0) add.l #buffer,(a0) no_floppy_function: addq.l #4,a0 ; a0 auf nchsten 68000er-Befehl subq.w #2,d1 ; 2 Wrter berspringen cmp #-1,d1 ; Zhler noch im korrekten Bereich? bgt loop ; ja bra cont search: move #10000,d4 ; nicht mehr als 10000 Worte lang suchen check: move (a0)+,d0 ; pat 1. Wort? cmp (a1),d0 dbeq d4,check cmp #-1,d4 beq error move #-2,d3 check_on: add #2,d3 cmp #10,d3 beq string_found move (a0,d3.w),d0 cmp 2(a1,d3.w),d0 ; 5 weitere Worte berprfen! beq check_on dbf d4,check string_found: subq.l #2,a0 ; a0: Addresse der gesuchten Routine rts error: addq.l #4,sp ; sp reparieren error2: move.l #fehlermeldung,-(sp) move #9,-(sp) trap #1 addq.l #6,sp move #7,-(sp) trap #1 addq.l #2,sp move.l d6,-(sp) ; auf Tastendruck warten move #$20,-(sp) trap #1 addq.l #6,sp clr -(sp) trap #1 ; Term ;************************************************************************ switch_rw: cmpi #2,14(a7) ; Ramdisk oder Festplatte angesprochen? bhs old ; dann alte Routine move.l newbios4,a0 jmp (a0) ; a0 darf verwendet werden old: move.l oldbios4,a0 jmp (a0) END `#v "\``/>>> TURBO-C <<<< for ATARI-ST Version 2.0 (C)88-90 Borland International &H f&op`B@#/3/ k #/ Ј<.@#/Jy/g<"@(I$k,"Jf"JfB// ?<?<JNAO A6<HCBB`6 !jBJ)gHiRC` "fSI "WJAkHiRCBSQJ)gHiRCHy`$ON0 J"LN? 9#xg @N 9#|g @NN?<LNANvR@g NNlNB@Nu/ / E4vHy4vHy4v"J JN\PO5@5@B@G`` 2A7R@| m7|Hy3C KN,XO&_$_Nu?/ N34rR@fp`PNTBCE,>`:0 JN0@CH22|g UAgYAg`0@CH22I% RC| mB@$_6NuA-094rN34tR@fA-pNRNNu/ E4^B@N JNL R(f0*jfNR@gNR@gN`$_NuHBgBgHy,r0*NPO0<N&pNA0*NA0*NTBA0*Nr0*N5j5j 0*jS@5@ 2*jSA5A0j|7@tj7B2|7A7j?*?*0*24*NXOp??*?*4BA kpN\OBAB@NB@NZ0<NXB@&_$_Nu/ / 0<NBpN4E4|0*Npj5@5jHy4Hy4~?* ?* ?*"JA4*r pNO5j5R0*jS@5@2*RSA5AG,>0*j |7@tj7B2*|7A7R0**HjQ@7@R4*,JRTB7BT7@j7Bl?* ?* 0*2*4*NXOp??* ?*4*BA kpN~\OBAB@NB@N(0<N&&_$_NuH0OE4 jEf jgpNBCG`0@2A7RC|mHy4Hy4Hy4Hy4r 0*NOpRjpjjBAB@N:Hy4Hy4Hy4Hy4r 0*NO0*fBC`0@2A5RC|mHy4vHy4vHy4vHo r 0*NHO0jf r??*?*4* y-FpBANJ\OB@NO L Nu0<NpNBgBgBgBgr 094xNjPOp??94?94494BA y-FpN\OBAB@NDB@N0<NNu/ E4x0Nr0N2*0*NJ2*0*NX$_NuHQO<80<NPpNBBCI4v`0@2A?RC|mJDg0HlT@?@GAr0NRA0NzHy4vHy4v"L Lr 0NPO6D:K#` p*A4JlPB2,0N`RERC|mHy4vHy4v"L L2,.0NPOJFf:p??2/ o@?4/ o@??/ AB@24/ NO BmABA0NB@NB0<N@POL8xNu/ / QONG4zrAAJE-NCAKNpANJ@f CAJNCAJNCA|b@0;N*>R0@CHr 0N`x0@CHr N"`b0@CHr N`N0@CHr G4vHy4v"KA0+N XO WgN&`0@CHr jp`B@TOL Nu/ BApNE4vHy4vHy4vHy4vHy4vHy4vBgBgBgBgBgBgBgBgBgBgBgBgp?"JA42pNO.|f5|:`BAB@N^$_NuH0UO6E5DHWCrANXOG#p??*B?*@4*>BA k pN\OBAB@N0gC JN R JN A`B \fCr JN |f B@ JN 48` B@ JN 68E-N|lApN`|f2BE`&p*Ar(0N ,r(g A6pNzRE|m`FBE`.p*Ar(0N b,r*B3(t(g A[pNRzRE|mBAB@N4B@NL0N jTOL xNuH `A.pNU@gN &J@gBD6E#`0|gDn|gDW@g0| g`H|gS@gY@g2`8p[Nv`:p\Nn`2p]Nf`*p{N^`"p|NV`p}NN`p~NF` 0N J@g2p*2RCA2Hfp N J@gp N J@g RDBC|mL8Nu?6pN xpRN rpN l0N fpN `pRN ZB@N T6NuH `A.pNU@gJpN JgBD6E#`.2pN bp*2RCA2Hfr pN Hr pN @RDBC|mL8Nu?BBA46hRCCRC00hS@@1@C#p*2RBA1fPl00HhQ@3@2(IhTA3AN6Nu/ / E4G#p????*?*4*BA KB@N O Bk p????*?*4*BAAB@N O Bk"7k(7k*&_$_NuH068|pN f*pEE4G-FJ@g2QA| b:A2;N000 00$(0,|`|`|`|` |`|`BFJFgp??r???*4* SBAN (O 0NR@fp`0**g$BgBgr???*4* SpBAN O `p?Bgr???*4* SBAN O `p<F|~E0*,f,Hy4C&A0*N XOj$0*N 5|,0|Mgn,|Ggjn|gHS@gL| gN`|HgVW@gZ`|ag~n|PgZU@g^S@gd`Ԑ|bgh|g`N`Nr`N`0ND`Nd`0N`0Nl`N`p N`~0N`tN`np??r???*4* SBAN O pN&0**gBgBgr???*4* SpBAN |O BA0*N Jj$Bj,` JDg0N4B@L NuA4 PoSP0HhQ@3#NB@NNuHAg9A>t*C A4NNJDfp*l03gp*2RCA3fUCp*l0CANp*C Hy4vHy4v"L Lr 0,NPOp*l0A4JlPB2,0IlQA0,NrHy4vHy4v"L L2,.0,NPOp*CB3p???,?,?,4, BAAB@N O Bk`LB@l>9@>6`p*C*ANNRC|mB+9|00,0HlQ@7@N2B@NLNu/? y%4l&vpy4HH@@BD`p NXRDDn`rpN8&NuH0BCE#*fG4 Sg|x`p*CA*NSDSnp*kCr*A*Np*k2gvB2RS7|0+HkQ@5@2IkTA5AN2CB@NL NuH0E4G#J@f,4Bj0HjQ@7@2*IjTA7AN^`HBA0*NVA/5pN60*N|f"B@` r*B3R@|mB@NBAB@N\L Nu/ / E40* g|5|0* N.S@4G#2*IjQA7AHjT@7@N0* l|oNxSR0HjT@7@NC4p*AN*2B@NBj `rpN>&_$_NuB@A42gLSPC#r*4R@B1f|(op(hl1@0(HhQ@3@2IhTA3ANNuB@A4 PlLRPC#r*4R@B1f|(op(hl1@0(HhQ@3@2IhTA3ANNu// BCE4J@f8 RoSR`20*g@N(p*2RCAA#0f|(ov(4`40HjQ@3#N^$_&Nu// BCE4r*4RCBA#0f|(ov(J@fRoRR` jl N4`40HjQ@3#N$_&NuA(p"@ "By/xA1B3/x3/zO"Nu/ Hz?<&NN\O$_Nu JgJgJgJgJg JgJgJfSHggggg ggf @Nu g<g8g4g0g,g(g$g ggggg ggf @Nu"HJgJgJgJgJg JgJgJf SNu/ G/| g/ &S?<INA\O`G/ g/ &S?<INA\O`&_NuJ@kNuD@Nu//??<?NAO Nu?/?<NNAPONu?<NATONu?<NATONu??<NAXONu??<>NAXONu//??<@NAO Nu?/?< Menfunktionen:LADEN... ^L: NotePad-Datei ladenSPEICHERN.^S: NotePad-Datei speichernDRUCKEN ^P: Text druckenMODEM ^M: Text zum ser. Port sendenHILFE... ^H: Hilfsseite anzeigenENDE ^Q: NotePad beenden---- (Aufruf auch ber Tastenkrzel) ---==> Editorfunktionen: FullWindow, Cursor- und Maus-Steuerung arbeitet im Einfgemodus (kein Wrap) 'Tab' : Tabulatorweite 4 'Help' : Hilfsseite anzeigen 'Undo' : Rcknahme LschbefehlSH+'' / '': Zeilenanfang / -endeSH+'Delete' : Zeile lschenSH+'Home' : Text lschen----- 'NotePad V1.2' ist Freeware! -----Fehler, Fragen, Anregungen an:Michael Zuhl, Transvaalstr. 16, 1000 Berlin 65 mz'90 NotePad V1.2 -N-`-r-----%F%-,> Laden... ^L Speichern... ^S Drucken ^P Modem ^M Hilfe... ^H ----------------- Ende ^Q MEN NotePad[3][Kein Platz mehr in|der Menleiste][ OK ][3][Kein Window|mehr frei!][ Schade ]:NOTEPAD\NOTEPAD\*.DATNOTEPAD.DAT[3][|Datei kann nicht|geffnet werden !][ Aha ][3][|Fehler beim Schreiben !][ Aha ][3][|Fehler beim Lesen !][ Aha ][2][|Drucker nicht bereit ?][ Nochmal | Abbruch ][2][|Serieller Port|nicht bereit ?][ Nochmal | Abbruch ][2][| NotePad:|Text lschen?][ Ja | Nein ]56:77r  (8 P P H$ L<.40:*JF.bR,B8xNXvF"H~f L<tn@ 6@H x NR*&>&$"$  ( j&  ,> $4 > NOTEPAD - das Notizblatt-Accessory ---------------------------------- Version 1.2 16.08.90 NotePad - wozu? --------------- Bei vielen Gelegenheiten whrend der Arbeit am ST mute ich mir Notizen machen: Telefonnummern, Progamm-Ausgaben, etc., etc. Also griff ich jedes- mal zu Papier und Kugelschreiber und hatte innerhalb krzester Zeit einen nicht mehr berschaubaren Wust von fliegenden Zetteln angehuft. Mit der Zeit wurde das lstig. Sehr lstig. So lstig, da ich anfing, mir Gedanken zu machen, ob es sich bei diesem Problem nicht um eines handelt, dessen Lsung geradezu nach einer Accessory-Anwendung schreit: Ein kleines Programm, das jederzeit aus anderen (GEM-) Programmen heraus aufrufbar ist und die Notizen, die so anfallen, aufzunehmen in der Lage ist. Klingt an sich ganz einfach - aber whrend der Entwicklung von der Idee zum Programm fielen mir immer neue Anwendungsmglichkeiten und weitere Anforderungen an den Funktionsumfang ein, so da das Ganze schlielich doch einen ziemlichen Umfang angenommen hat. Die Arbeit hat sich aber gelohnt: Seitdem NotePad fertig ist greife ich nur noch uerst selten zu Papier und Kuli; das meiste kriegt NotePad zu schlucken. Realisierung ------------ NotePad soll Notizen aufnehmen - na schn. Aber wie? Ein Mini-Editor mute her; 'Mini' weil das Programm als Accessory laufen soll und somit die ganze Zeit ber den Speicher blockiert. Aber ein gewisses Ma an Komfort sollte der Editor auch bieten. Auerdem war da die Frage, wieviel Platz NotePad fr Notizen zur Verfgung stellen sollte. Ich erinnerte mich an meinen guten alten Sharp MZ80-K, auf dem ich meine ersten Erfahrungen mit Computern machte: Der Bildschirm hatte 25 Zeilen zu 40 Spalten - das sollte wohl reichen. Aber wenn auch Notizen aus anderen Programmen heraus mglich sein sollten, z.B. Zwischenergebnisse o.., dann durfte das Window von NotePad nicht den Groteil des Bildschirms bedecken; also entschied ich mich fr den mittleren Systemfont als Zeichensatz. Die Zeichen sind gerade noch lesbar und 25x40 Zeichen brauchen dann etwa ein Viertel der Bildschirmflche. Nun ist es zwar so, da die meisten Notizen nur begrenzte Zeit von Inter- esse sind; was aber, wenn man doch einmal dauerhaft etwas ablegen will? Also kam eine Funktion zum Speichern und Laden hinzu. Auch kann es vor- kommen, da man das Notierte 'Schwarz auf Wei' braucht - eine Drucker- Routine folgte. Wenn man schon mal dabei ist, I/O-Routinen zu schreiben und zustzlich noch ber ein Modem verfgt, liegt es nahe, auch an eine Ausgabe auf diesem Weg zu denken. Schlielich baute ich noch eine integrierte Hilfe-Funktion ein, falls tat- schlich mal jemand anderer mit diesem Programm umgehen mte. Bedienung --------- Der Editor arbeitet FullWindow-orientiert, soll heien, man kann den Cursor an jede Stelle des Windows bringen und dort Eingaben oder nderungen vor- nehmen. Die Cursor-Steuerung ist sowohl ber die Cursortasten als auch ber die Maus mglich. Der Editor arbeitet im Einfgemodus, das heit da ein neu eingegebenes Zeichen nicht ein altes berschreibt, sondern an der aktuellen Cursorposition eingefgt wird. Die blichen Steuerfunktionen sind eingebaut: INSERT fgt ein Leerzeichen ein, DELETE lscht das Zeichen an der aktuellen Cursorposition, BACKSPACE das Zeichen vor dem Cursor. TAB lt den Cursor an die nchste Tabulatorposition springen und fgt an den bersprungenen Stellen Leerzeichen ein (also keinen 'echten' Tabulator); die Tabulatorweite ist 4. Die Cursortasten steuern den Cursor wie man es im allgemeinen von ihnen erwartet; SHIFT und '<-' bzw. SHIFT und '->' bewegen den Cursor an den Zeilenanfang bzw. das Zeilenende. HOME bewegt den Cursor in die linke obere Ecke. SHIFT und DELETE lscht die aktuelle Zeile und SHIFT und HOME lscht nach Sicherheitsabfrage den gesamten Text. UNDO macht die letzte Lsch-Aktion rckgngig und HELP zeigt die Hilfsseite an. Um die Bedienung so komfortabel wie mglich zu gestalten, habe ich in das NotePad-Window ein Drop-down-Men eingebaut. Es verhlt sich genauso wie ein Mentitel der gewohnten Menzeile, obwohl es natrlich kein 'echtes' Men ist - das verhindert schon das AES (wo kommen wir da hin: entweder Window oder Men! Und noch dazu in einem Accessory - tztztz!). Die Meneintrge sind eigentlich selbsterklrend, daher hier nur eine kurze Auflistung: LADEN... ^L ldt eine NotePad-Datei SPEICHERN... ^S speichert eine NotePad-Datei DRUCKEN ^P druckt den Text ber den parallelen Port aus MODEM ^M sendet den Text an die serielle Schnittstelle HILFE... ^H gibt die Hilfsseite aus ENDE ^E schickt das Accessory wieder schlafen (Text und Window- Position bleiben erhalten) Der Aufruf der Meneintrge ist auch ber die angegebenen Shortcuts mglich, also z.B. das Laden einer NotePad-Datei mittels CONTROL und L. Hinweise -------- An einigen Stellen (insbesondere bei der Implementation des 'Mens') mute ich mich schwer mit dem AES anlegen - so etwas ist ja auch eigentlich nicht vorgesehen. Aber nichtsdestotrotz sehr ntzlich. Auerdem wollte ich nicht vor dem AES kapitulieren. Leider hat solche Beharrlichkeit auch ihre Schattenseiten: Ich mute Kompromisse schlieen. Um nicht den Pfad der Tugend zu verlassen (sprich: keine 'illegalen' Funktionen oder undokumen- tierten Variablen zu benutzen), nahm ich in Kauf, da an manchen Stellen kleinere 'Ungereimtheiten' auftreten. Damit sollte aber sichergestellt sein, da NotePad mit allen TOS-Versionen lauffhig ist. Die erwhnten Ungereimtheiten im einzelnen: - Ist das NotePad-Window nicht das oberste (Top-) Window, verschwindet der Mentitel oben rechts in der Titelzeite des Windows. - Wird das NotePad-Window whrend der Anzeige der Hilfsseite deaktiviert (untopped) und von einem anderen Window ganz oder teilweise verdeckt, werden neu zu zeichnende Bereiche mit dem Usertext und nicht mit dem Hilfstext aufgebaut; das fhrt dazu, da mehr oder weniger Nonsens im NotePad-Window zu lesen ist. Wird das NotePad-Window dann aber wieder aktiviert, wird der gesamte Window-Inhalt mit dem Usertext aktualisiert. Da allerdings nur selten neue Windows geffnet werden, whrend man die Hilfsseite angewhlt hat, fllt diese Unschnheit nur wenig ins Gewicht. - Klickt man bei aktivem NotePad-Window (Top-Window) in einen Bereich auerhalb des Windows, wird vom Screen-Manager die entsprechende Aktion ausgelst - so weit, so gut. Allerdings erreicht die Nachricht ber das Mausklick-Ereignis nicht immer auch NotePad (warum, wei ich nicht; die Programmierer von Digital Research wahrscheinlich auch nicht). So ist es manchmal notwendig, NotePad durch einen Mausklick ins Window wieder zu 'wecken'. Insbesondere kann es hierbei vorkommen, da beim Berhren des Mentitels das Men nicht herunterklappt; auch in diesem Fall hilft ein Mausklick auf den Mentitel. "It's not a bug - it's a feature!" heit die bliche Ausrede, glaube ich. Aber alles lt das AES eben doch nicht mit sich machen (alleine schon das Redrawing von Windows ist eine Wissenschaft fr sich - manches macht das AES oder der Screen-Manager selbst, anderes wird kategorisch abgelehnt). Ein weiterer Hinweis betrifft die NotePad-Dateien. NotePad-Texte werden immer komplett abgespeichert, d.h. alle 1000 mglichen Zeichen (nicht un- bedingt elegant, aber einfach zu implementieren). Der Text wird als ASCII- Text gespeichert, wobei keine Zeilenende-Kennzeichnung (CRLF) eingefgt wird. Das hat zwei Grnde: Zunchst ist eine Zeilenende-Kennzeichnung nicht not- wendig, da alle Zeilen gleich lang sind. Der zweite Grund ist allerdings gewichtiger und liegt im Datei-Aufzeichnungsformat des TOS. Die kleinste Aufzeichnungseinheit ist ein 'Cluster', der aus zwei Sektoren zu je 512 Bytes besteht, also 1024 Bytes umfasst. Eine NotePad-Datei mit einer Lnge von 1000 Bytes pat demnach in einen solchen Cluster und belegt somit den geringstmglichen Platz auf Diskette oder Harddisk. Htte jede Zeile ein CRLF am Ende, wrde eine NotePad-Datei 1050 Bytes umfassen und mte in zwei Clusters abgelegt werden; damit wrden aber jedes Mal 998 Bytes nutzlos verschwendet. Es ist jetzt auch klar, warum es keinen Sinn htte, nur die wirklich mit Text gefllten Teile des NotePad-Windows abzuspeichern: Der auf der Diskette bzw. Harddisk belegte Platz bliebe gleich. Da aber die NotePad-Dateien keine Zeilenende-Kennzeichnung aufweisen ist es nicht ohne weiteres mglich, sie mit anderen ASCII-Editoren zu lesen; die gesamte Datei wrde als eine einzige Zeile angesehen werden. Dieses Problem lt sich, wenn es denn unbedingt sein mu, umgehen, indem man die Zeilen- lnge im externen Editor auf 40 Zeichen/Zeile einstellt. Schlubemerkung --------------- NotePad Version 1.2 ist Freeware. Das heit, das Programm darf (und soll) beliebig weitergegeben werden. Allerdings gelten folgende Voraussetzungen: - NotePad darf nicht kommerziell vertrieben werden! (Das betrifft nicht die Unkostenbeitrge fr PD-Disketten) - NotePad sollte immer zusammen mit dieser Anleitung weitergegeben werden. - Vernderungen an NotePad mssen vor einer Weitergabe mit mir abgesprochen werden. Obwohl ich bei der Programmierung viel Mhe aufgewandt habe und NotePad bei mir seit Monaten fehlerfrei luft kann ich selbstverstndlich keinerlei Haftung fr die fehlerfreie Funktion des Programms oder eventuell aus der Benutzung von NotePad entstehende Schden bernehmen. Bei Fehlern (hoffentlich nicht!), fr Fragen (warum nicht?), fr Anregungen (sehr willkommen!) und fr Zuwendungen (dito) stehe ich gerne zur Verfgung: Michael Zuhl Transvaalstr. 16 1000 Berlin 65 NotePad Version 1.2 16.08.90 mz'90 ******************************************************************** Deze diskette is samengesteld door de Stichting ST, Postbus 11129, 2301 EC Leiden. Onze bibliotheek van public domain programma's omvat op dit moment (zomer 1991) al meer dan vijfhonderd 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 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. ************************************************************************