4IBM qph >> FastCopy PRO << by Martin Backschat, Bergstr.16, D-8071 Hepberg // (c) 1991 ICP Verlag/TOS Magazin, Wendelsteinstr. 3, D-8011 Vaterstetten, Tel. 0810633954m  @`! #@%`')+-/1 Oo9;=?ACE`GIKMOQ S@U`WY[]_a c@e`gikmoq s@u`wy{} @` / @ `  @ @ ` ǀ O o ٠ /@` !a /Aa!#A%a')+-/1!3A5a9=?A!OEaGIKMOQ!SAUaWY[]_a!cAeiko/sAy{}/Oa!Aa!Aa!Aa!Aaǁɡ!Aoׁ١!Aa/Aa " B b  !"!B!b!!!!"!""#B"%b"'")"+"-"/#1"#3B#5b#7#9#;#=#?$A"$CB$Eb$G$I$K$M$O%Q"%SB%Ub%W%Y%[%]%_&a"&cB&eb&g&i&k&m&o'q"'sB'ub'w'y'{'}'(/(B(b((((()")B)b))))"*B*o*****+"+B+b+++++,",B,b,ǂ,ɢ,,-/-B-  @`! #@%`')+-/1 Oo9;=?ACE`GIKMOQ S@U`WY[]_a c@e`gikmoq s@u`wy{} @` / @ `  @ @ ` ǀ O o ٠ /@` !a /Aa!#A%a')+-/1!3A5a9=?A!OEaGIKMOQ!SAUaWY[]_a!cAeiko/sAy{}/Oa!Aa!Aa!Aa!Aaǁɡ!Aoׁ١!Aa/Aa " B b  !"!B!b!!!!"!""#B"%b"'")"+"-"/#1"#3B#5b#7#9#;#=#?$A"$CB$Eb$G$I$K$M$O%Q"%SB%Ub%W%Y%[%]%_&a"&cB&eb&g&i&k&m&o'q"'sB'ub'w'y'{'}'(/(B(b((((()")B)b))))"*B*o*****+"+B+b+++++,",B,b,ǂ,ɢ,,-/-B-DEMOS r!DRUCKER !LIBRARYS w!PROGRAMY ! BUGABOO PRG KpDBUGABOO SYM #CALL PRG lFORCE BIN ` ~LOADER S t L_1A0000PRG ).TURBOASSCFG l=TURBOASSDAT l TURBOASSINF /cTURBOASSPRG "r]TURBOINSPRG #rY. !.. !HYPERSW !NOTIZBLK !THNKWORK !VDISK3_7 X!AES_DEMOSRC C M AUTO300FPRG 3AUTO300SPRG 5AUTOBOOTSRC %7(CALL SRC lBCHRONO SRC LaaCOOKIE SRC {gDAY_CALCSRC VGGT SRC VHANOI SRC |vaSCRNDUMPSRC VmjSCRNERR SRC VqSHIP SRC ZAw TAT SRC vWPROT SRC tVZXBRA SRC V . !.. !HYPER ACC `IHYPER INF ŴHYPERSW SRC XHYPERSW TXT €n. !.. !NOTIZBLKRSC N7N NOTIZBLKRSD N:NOTIZBLKSRC kC2. !.. !LEVEL DAT r @THNKWORKPI2 eB}THNKWORKPIC j}THNKWORKSRC vr. !.. !VDISK ACC 6#VDISK37DDOC L'VDISK37DSRC 4. !.. !DESKJET CFG ~]DESKJET HEX ~EPSON CFG !=EPSON HEX 4MAKE_CFGPRG q2OMAKE_CFGSRC v/NEC CFG !NEC HEX 4SLM804 CFG xe(SLM804 HEX xe. !.. !AES_VDI S X,BIOS S BwBUGABOO S XxBUGABOO SRC m_XX&GEMDOS S GEM_VARSS ځX3HEADER S NEWS TXT n"(PREAD_ME TXT gTURBOASSTXT Mo4eXBIOS S . ! .. !FLOPP ! GOTOWE ! CACHE SRC Q`FORMAT S `FORMAT SRC `PARTYCJE fSET_BLK S t u. ! .. ! FORCE DUP FORCE S c ~FORCE SRC U ~/NOWY 8;SET_BLK S `vVBL TXT + ZAPIS . ! .. ! DRIVER H F~4.tjy,r/~OTyj X.R,~n܍Rܫ~m'/=nMTn#b7zVOTy[#jO~Tjpr$j~OTyj#/rjO~JJJJJJJJB2&$""" "("$$$"." $N"($*(" " """"  ".  , #  ! 69"""D"""H""LH".1"L(RS+R"T"%&"YY"ZZ [["]&]^^"""""fijkklmmnno"nfi"Fo" """ "" " ""$ ""   "&"2 """{"&"~ ""~"I"I6$"I"I."I"P  STP"RIJ(@:4668J(R"I$ U $U WVXYZ[\T6"*,>2BRP&^"` ^`  gfhijkT(z  & H@t@@@?@s@@@K(@M$@l$@m2@n@ *@O@G@ @@@Ro   Eb  |B><`     .& ,&$P&04486&   0   pqrstu,vwxy" !"#&$%&'()M$CN$*+,-./0123ar456789:;<=>?(@}W=IAQS;epBCDq_EFJ(z{O"T"|}~   &&&$ " 2 "   $&(&* "0 ,"2& "$*$"(4:$BT,o:|G " <Ҏ.A/ /#H/<JNAO <aI3~R@gJ <aI3KLLHMA"Hp 0QNR` <OaP~3QKgRM<_ <`aIa K <q <`aII N0# <aI2<_ <`aIf0| g| | c| | b>,CrC QWfJi gDAVAHG>HG@0;NA pJPA Vf `Nu N00; <<`IBi T N00= <>aI"@#zA N0 <BaI0<C N00i00)i000  <E`I N00= <>aI :FGf N00I <>aI":J$:K N00= <aI":U$:V`L<, N00W <>aI$:X6<Sg6<QHBgtfDB N00 <>aIz\|c4<|bt N000 <aI":c$:d N00e <>aI&:g(:hJg*,,, ؃pEb6HEHCQjچpEe8HEHDQlJDoHDJDoHDHGaHG N00p`<r <b`IH<As ؃ <aP< <aPBV <aPAs <aP< <aP< <aP< <aP< <aPLHG N00Q <>aI6:v$ N00S <>aI8:w$ HGB҂As <=D <aP< <aPLNuBV <baI NBX0W <>aIAyCO""EzK ~"J N0 O G <|aI<: N00}&J <pa <a??<LNAHAtBBBP (pf|AV"0<NBp0:?LNuHA]BXBBP/JXf@_`@aH1@bH@@cH1@d1zKeAf"psNBp0:?LNu,,,,C{K MAP X:??? Y:???K SHIPS PLANETS INPUT _vdi appl_init_aesap_idMgraf_handle int_ininitwind_paramainloopevnt_messageaddr_inevnt_multigem_exitmainlo1mainlo2jumptabmainlo3"m_menu%(msg_redraw +.m_top1m_close69m_full#N&msg_arrowp%)m_hslid6(,m_vslid<+/m_size.2m_move147m_aopen6:m_aclos9 WF_TOPiwind_setWF_CURRXYWH hwind_getint_out#b?#f?fwind_closeFMD_SHRINKformdial3 form_dial#f?wi_gw3m_full1WF_PREVXYWH #b?#f?m_full0FMD_STARTFMD_FINISHwi_gw1WM_SIZEDWF_HSLIDEm_slide WF_VSLIDEm_slid0#b?#f?WF_WORKXYWH #f?msg_arrow1msg_arrow2msg_arrow3#b?msg_arrow4msg_arrow5BEG_UPDATE kwind_updateM_OFFNgraf_mouse#b?#f? WF_FIRSTXYWHmsg_redraw1 #b?#f?msg_redraw7msg_redraw2msg_redraw3msg_redraw4msg_redraw5msg_redraw6redraw WF_NEXTXYWHEND_UPDATEM_ONptsincontrol't #b?#b?'t #b?wind_tabloop1dwind_createWF_NAMEloop2WF_INFOFMD_GROWewind_open gem_ex1gem_ex2gwind_delete appl_exit-tglobal?addr_outts?ptsout0wind18zwindi1>z@wind2Kz0wind3Sz>z@wind4]zGgg_gem_init appl_read appl_write appl_findappl_tplay appl_trecord appl_bvset appl_yield evnt_keybd evnt_button evnt_mouse evnt_mesag evnt_timer evnt_dclick menu_barmenu_icheck menu_ienable !menu_tnormal "menu_text#menu_register $menu_unregister(objc_add)objc_delete *objc_draw+objc_find,objc_offset -objc_order .objc_edit/objc_change 2form_do4form_alert 5form_error 6form_center 7form_keybd 8form_button Fgraf_rubberbox Ggraf_dragbox Hgraf_movebox Igraf_growbox Jgraf_shrinkbox Kgraf_watchbox Lgraf_slidebox Ograf_mkstate Psrcp_readQsrcp_write Rscrp_clear Zfsel_input [fsel_exinput jwind_findlwind_calcmwind_newnrsrc_loadorsrc_freeprsrc_gaddr qrsrc_saddr rrsrc_obfix xshel_readyshel_write zshel_get{shel_put|shel_find}shel_envrn ~shel_rdefshel_wdefxgrf_stepcalc xgrf_2box MN_SELECTEDWM_REDRAWWM_TOPPEDWM_CLOSEDWM_FULLEDWM_ARROWEDWM_HSLIDWM_VSLIDWM_MOVEDWM_NEWTOPWM_UNTOPPED(AC_OPEN)AC_CLOSE2CT_UPDATE3CT_MOVE4CT_NEWTOPWA_UPPAGEWA_DNPAGEWA_UPLINEWA_DNLINEWA_LFPAGEWA_RTPAGEWA_LFLINEWA_RTLINEG_BOXG_TEXTG_BOXTEXTG_IMAGEG_PROGDEFG_IBOXG_BUTTONG_BOXCHARG_STRINGG_FTEXTG_FBOXTEXTG_ICON G_TITLE/_StackSize,NORMALSELECTEDCROSSEDCHECKEDDISABLEDOUTLINED SHADOWEDMU_KEYBDMU_BUTTONMU_M1MU_M2MU_MESAG MU_TIMERARROWTEXT_CRSRHOURGLASSBUSYBEEPOINT_HANDFLAT_HANDTHIN_CROSSTHICK_CROSSOUTL_CROSSUSER_DEFWI_NAMEWI_CLOSEWI_FULLWI_MOVEWI_INFO WI_SIZE@WI_UPARROWWI_DNARROWWI_VSLIDEWI_LFARROWWI_RARROWWI_HSLIDEWF_KINDWF_FULLXYWHWF_NEWDESKWF_HSLSIZEWF_VSLSIZEEND_MCTRLBEG_MCTRLbasepage_aes_ptermvdi_handle#b?gr_hwchar_gem_init2 d v_opnvwk_vdi# t_do_pterm_gem_exitev_clsvwk_aes1_aes_pbt?#t_vdi1_vdi2  _vdi_pbts?gr_hhchargr_hwboxgr_hhboxAES/VDI-Library-EQUs NONE_FLGSELECTABLE_FLG DEFAULT_FLGEXIT_FLGEDITABLE_FLGRBUTTON_FLG LASTOB_FLG@TOUCHEXIT_FLG HIDETREE_FLG INDIRECT_FLG  v_opnwkv_clswkv_clrwkv_updwkwvst_load_fonts xunload_fonts vs_clipv_plinev_pmarkerv_gtext v_fillarea v_cellarray gv_contourfill rvr_recfl v_bar v_arc v_pieslice v_circle v_ellipse v_ellarc v_ellpie v_rbox v_rfbox  v_justified vswr_modevs_colorvsl_typeqvsl_udstyvsl_widthvsl_colorlvsl_endsvsm_typevsm_height vsm_color vst_height kvst_point vst_rotation vst_fontvst_colorjvst_effects 'vst_alignment vsf_interior vsf_stylevsf_colorhvsf_perimeter pvsf_udpatmvro_cpyfmyvrt_cpyfmnvr_trnfmiv_get_pixel !vsin_modevrq_locator vsm_locator vrq_valuator vsm_valuator vrq_choice vsm_choice vrq_string vsm_string o%vsc_formvvex_timvzv_show_c{v_hide_c|vq_mouse}vex_butv~vex_motvvex_curvvq_key_sfvq_extndvq_color#vql_attributes $vqm_attributes %vqf_attributes &vqt_attributes tvqt_extent uvqt_widthvqt_namevq_cellarray svqin_modevqt_fontinfo vqt_justified vq_chcells v_exit_cur v_enter_cur v_curupv_curdownv_curright c_curleftv_curhome v_eeos v_eeol v_curaddress  v_curtext v_rvonv_rvoffvq_curaddress vq_tabstatus v_hardcopy v_dspcurv_rmcurv_form_adv v_output_windowv_clear_disp_listv_bit_image vq_scanv_alpha_text <vs_palette =v_sound>vs_muteQvt_resolution Rvt_axisSvt_originTvq_tdimensions Uvt_alignment [vsp_film\vqp_filename ]vsc_expose bv_meta_extents cv_write_meta cvm_pagesize cwm_coordsdvm_filename ev_offsetfv_fontinit ;F*;* AES-Demo (unvollendet)- *;*D *;* Wer mal einen Absturz des Multi-Tasking-Kerns vom AES sehen will, *;* mu lediglich solange auf einen Slider klicken (Auto-Repeat), bis *;* der Rechner steht (das geht ziemlich schnell). Nach einer Analyse *;* des Screenmanagers und des Multi-Tasking-Kerns mute ich feststellen,*;* da die (ja, es heit DIE, da AES ein Pluraletantum ist, d.h. nur in *;* der Mehrzahl existiert) AES einen Programmierfehler enthlt, der bei *;* Auto-Repeat auf Slidern mit den Messages durcheinander kommt (verein-*;* facht gesagt) und daraufhin der Task-Buffer berluft, d.h. Game Over*;*D *;* 1989 by -soft, written by Markus Fritze 29.01.1990 00:54 *;F*;1k Stack fr das Programm;F*;* Initialisierung der Library (GEMDOS & AES) *;F*;Basepageadresse holen;Gre der Basepage + Stackgre (1k);+ Gre des TEXT-Segments;+ Gre des DATA-Segments;+ Gre des BSS-Segments;= Gesamtlnge des Programms;Lnge nun gerade;+ Programmstart (Basepageadresse);Stack endet dort;Programmlnge;Adresse der Basepage;Basepageadresse merken;Funktionsnummer + Dummyword (0);Mshrink(0,Basepageadr,Prglnge);Nur noch den Stack korrigieren;Programm als GEM-Applikation anmelden;-1: appl_init() Fehler (kann beim;aktuellen GEM nie (!) auftreten!);keine ID fr das Programm => Ende;Handle der Bildschirm-Workstation ermitteln;Handle fr VDI-Aufrufe merken;Zeiger merken (s.u.);1,1,1,1,1,1,1,1,1,1,2;Workstation ffnen;-39: kein Speicher fr VDI-Workstation;kein Speicherplatz fr eine Workstation;F*;* Nun geht's mit dem Programm los$ *;F*;Zeiger auf int_in (Global!);Bildschirmaufbau fertig;Window-Parameter (Global!);Bildschirmaufbau fertig;ev_mflags (Tastatur & Message);evnt_message-Buffer;evnt_multi();Bildschirmaufbau beginnt erneut;Taste gedrckt?;Dann Ende;Message-Typ holen;Die Nummern 10,20-29,40,41;nach 0-11 wandeln;unbekannte Message!;dann raus =>;Handle der gewnschten Fensters;max.4 Fenster testen;Zeiger auf nchsten Eintrag in der Windowtab;Handle gefunden?;evtl. weiter suchen;Window nicht gefunden;Window berhaupt offen;Weiter, wenn nicht;Windownr ins obere Word;in Tabellenoffset umrechnen;und entsprechendes Unterprogramm aufrufen;Window noch offen?;mindestens ein Window offen;Programm beenden;Window nun zu;fo_dilittlx;fo_dilittly;fo_dilittlw;fo_dilittlh;fo_dibigx & fo_dibigy;fo_dibigw & fo_dibigh;Grow-Box ausgeben;Redraw erzwingen;Redraw erzwingen;Redraw erzwingen;Welches Fensterteil wurde angewhlt?;Die aktuelle Windowhandle;W & H holen;Vertikaler Slider;horizontal oder vertikal?;Horizontaler Slider;W ins untere Word;Seitenweite oder Einzelschritt?;da Einzelschritt;Richtung;-Schrittweite;H. oder v.Slider;Sliderposition ermitteln;Sliderposition nicht grer als 10;und nicht kleiner als 1;Slider neu setzen;Redraw fr das Fenster anfordern;Die Maus ausschalten;X & Y holen;W & H holen;Ende, if W=0 and H=0;Message%(4 & 5) = Xs & Ys;Message%(6 & 7) = Ws & Hs;X2=X+W:Y2=X+H;X=Max(X,Xs);Y=Max(Y,Ys);X2s=Xs+Ws:Y2s=Ys+Hs;X2=Min(X2,X2s);Y2=Min(Y2,Y2s);W=X2-X:H=Y2-Y;H<0 => kein Redraw;W<0 => kein Redraw;Bildschirmabschnitt neuzeichnen;Die Maus wieder anschalten;F*;* Redraw(Windownr,Fx,Fy,Fw,Fh,X,Y,W,H) = redraw(D7,D1,D2,D3,D4) *;F*;Clipping an;X,Y;X+W-1,Y+H-1;replace;nicht fllen;X=X-1:Y=Y-1;W=W+2:H=H+2;punktiert;vsf_interior();Desktop-Punktierung;vsf_style();Fllfarbe;vsf_color();replace;vswr_mode();Position des horizontalen Sliders;holen;mal 3.6;Position des vertikalen Sliders;holen;mal 3.6;W=W/2:H=H/2;evtl. Unterlauf von W;X_mitte=X+W:Y_mitte=Y+H;Zentrum;Radius;Anfangswinkel;Endwinkel;xor (fr MOVEBOX bei dem Verschieben;von Windows);F*;* Allgemeines Init-Gedns (nur fr das Demo) *;F*;Mausform nun Pfeil;wind_get(0,x,y,w,h);Die Gre umkopieren;die errechneten Parameter;Window-Parameter;4 Windows sollen geffnet werden;Die Window-Komponenten;max.Window-Gre kopieren;Fenster erstellen;Die Handle fr diese Schleife merken;Die Handle merken;Die Window-Handle bergeben;Den Window-Namen setzen;Adresse des Namens errechnen;Infozeile eintragen?;Nein! =>;Die Window-Handle bergeben;Die Infozeile setzen;Adresse der Infozeile errechnen;Die Koordinaten kopieren;Grow-Box ausgeben;Window nun offen;Window-Parameter;Window 2-Handle;Vertikalen Slider nach unten;F*;* Nun wollen wir das Programm auch noch beenden *;F*;4 Windows schlieen und verwerfen;Window schlieen;Window lschen (aus der internen Verwaltung);Bildschirmaufbau beginnt;Clipping aus;vs_clip();kein Fehler!;F*;* Verlassen des Programms, *;F*;Workstation schliessen;Applikation wieder abmelden;Pterm(Fehlercode);F*;* Mein eigener kleiner AES-Aufruf$ *;* D0=Die ersten 4 Eintrge im control-Array (Bytebreite!) *;* Bit 24-31 = Der Opcode bzw. die Funktionsnummer *;* Bit 16-23 = Anzahl der Eintrge in int_in *;* Bit 8-15 = Anzahl der Eintrge in int_out *;* Bit 0-7 = Anzahl der Eintrge in addr_in *;* Die Anzahl der Eintrge in addr_out ist stets 0. *;* Ausnahme:Bei rsrc_gaddr() sollte dort eine 1 stehen (Atari hlt sich *;* allerdings selbst nicht dran) *;F*;die (es heit DIE!) AES aufrufen;besser retten, man kann nie wissen;control-Array lschen;und die neuen Daten eintragen;Ist es rsrc_gaddr()?;Nein! =>;Anzahl der Eintrge in addr_out=1;AES aufrufen;int_out[0];Der AES-Parameterblock;F*;* Und das gleiche nochmal fr die VDI-Funktionen *;* D0 = Die Eingabeparameter* *;* Bit 24-31 = Opcode der Funktion *;* Bit 16-23 = Lnge des Intin-Arrays *;* Bit 8-15 = Identifikationsnummer fr Unter-Opcodes *;* Bit 0-7 = Anzahl der Eintrge in ptsin *;* Die Gertekennung wird der Variable "gr_handle" entnommen. *;F*;das VDI aufrufen;alle Parameter lschen;kein Opcode vorhanden? => Kurzformat;Funktionsnummer in den Bits 0-7;alle anderen Parameter sind 0!;Anzahl der Eintrge in ptsin;Unter-Opcode;Anzahl der Eintrge in intin;Funktionsnummer;VDI-Handle;int_out[0];Der VDI-Parameterblock;F*;* und ein paar Daten fr das Demo$ *;F*;F*;* und noch ein wenig BSS-Bereich% *;F*;Adresse der Basepage;ID der Applikation;Die Handle der Bildschirm-Workstation;Breite (in Punkten) eines Zeichens;Hhen (in Punkten) eines Zeichens;Mae eines Rechtecks, in das ein Standardzeichen;komplett hineinpassen wrde;Ab hier ein paar Variablen fr das Demo;Die Parameter fr 4 Windows;F*;* Die AES-"Library"2 *;F*;ab GEM 2.0;ab GEM 2.0;ab GEM 2.0;ab GEM 2.0;ab TOS 1.4;ab TOS 1.4;ab GEM 2.0;ab GEM 2.0;ab GEM 2.0;ab GEM 2.0; Die Messages des AES;Meneintrag angewhlt;Teil eines Windows mu neu gezeichnet werden;Window ist nun das aktuelle Fenster;Window soll geschlossen werden;Window soll auf max.Gre gebracht werden;Scollbalken angeklickt;Der horizontale Slider wurde bewegt;Der vertikale Slider wurde bewegt;Die Gre des Windows wurde gendert;Das Window wurde bewegt;Das Fenster wurde aktiviert (siehe WM_TOPPED);Der Fenster wird gleich inaktiv (erst ab GEM 2.0!);Ein Acc wurde angeklickt.(30 bzw. 31 ist FALSCH!);Prg wurde beendet, ACC soll seinen Speicher freigeben.;Funktion unbekannt; WM_ARROWED angeklickt (nun die genauere Definition);Balken oberhalb des Sliders;Balken unterhalb des Sliders;Pfeil nach oben;Pfeil nach unten;Balken links vom Slider;Balken rechts vom Slider;Pfeil nach links;und Pfeil nach rechts; Die Objekttypen des Resource-Baumes;Bitte in entsprechender Literatur nachschlagen; Object-Flags bei einem Objekt;Bitte ebenfalls in der Literatur nachlesen; Objekt-Status bei einem Objekt;s.o.; Die einzelnen Bits bei evnt_multi();Tastaturereignis;Maustastenereignis;1.Mausereignis;2.Mausereignis;Message des AES;Timer-Ereignis; form_dial();Bildschirmhintergrund reservieren;Ausdehnende Box zeichnen;Schrumpfende Box zeichnen;Bildschirmbereich wieder freigeben; graf_mouse(); Parameter bei wind_create(); Parameter bei wind_get() & wind_set(); wind_update();F*;* Die VDI-"Library" ) *;* Wer nheres dazu wissen mchte, sollte sich im Profibuch von Sybex *;* die Informationen dazu besorgen.# *;F*;1. Kontrollfunktionen;Open workstation;Close workstation;Open virtual screen workstation;Close virtual screen workstation;Clear workstation;Update workstation;Load fonts;Unload fonts;Set clipping rectangle;2. Ausgabefunktionen;Polyline (Byte 0=count(n));Polymarker (Byte 0=count(n));Text (Byte 2=n);Filled area (Byte 0=count(n));Cell array (Byte 2=n);Contour fill;Fill rectangle;Bar;Arc;Pie;Circle;Ellipse;Elliptical arc;Elliptical pie;Rounded rectangle;Filled rounded rectangle;Justified graphics text (Byte 2=n+2);3. Attribut-Funktionen;Set writing mode;Set color representation;Set polyline line type;Set user-defined line style pattern;Set polyline line width;Set polyline color index;Set polyline end styles;Set polymarker type;Set polymarker height;Set polymarker color index;Set character height, absolute mode;Set character height, points mode;Set character baseline vector;Set text face;Set graphic text color index;Set graphic text special effects;Set graphic text alignment;Set fill interior index;Set fill style index;Set fill color index;Set fill perimeter visibility;Set user-defined fill pattern (Byte 2=16*planes);4. Rasteroperationen;Copy raster, opaque;Copy raster, transparent;Transform form;Get pixel;5. Eingabefunktionen;Set input mode;Input locator, request mode;Input locator, sample mode;Input valuator, request mode;Input valuator, sample mode;Input choice, request mode;Input choice, sample mode;Input string, request mode;Input string, sample mode;Set mouse form;Exchange timer interrupt vector;Show cursor;Hide cursor;Sample mouse button state;Exchange button change vector;Exchange mouse movement vector;Exchange cursor change vector;Sample keyboard state information;6. Auskunftsfunktionen;Extended inquire function;Inquire color representation;Inquire current polyline attributes;Inquire current polymarker attributes;Inquire current fill area attributes;Inquire current graphic text attributes;Inquire text extent (Byte 2=n);Inquire character cell width;Inquire face name and index;Inquire cell array;Inquire input mode;Inquire current face information;Inquire just.graph.text (Byte 2=n+2) GEM 2.0!;7. Escapes;Inquire addressable alpha character cells;Exit alpha mode;Enter alpha mode;Alpha cursor up;Alpha cursor down;Alpha cursor right;Alpha cursor left;Home alpha cursor;Erase to end of alpha screen;Erase to end of alpha text line;Direct alpha cursor address;Output cursor addressable alpha text (Byte 2=n);Reverse video on;Reverse video off;Inquire current alpha cursor address;Inquire tablet status;Hardcopy;Place graphic cursor at location;Remove last graphic cursor;Form advance;Output window;Clear display list;Output bit image file (Byte 2=n+5);Inquire printer scan;Output alpha text (Byte 2=n);Select palette;Generate specified tone;Set/clear tone muting flag;Set tablet axis resolution in lines/inch;Set table axis resolution in lines;Set tablet x and y origin;Return tablet x and y dimensions;Set tablet alignment;Set camera file type and exposure time;Inquire camera file name;Disable or enable file exposure for frame preview;Update metafile extents;Write metafile item (Byte 0=num_ptsin, Byte 2=num_intin);Physical page size;Coordinate window;Change gem vdi filename (Byte 2=n);Set line offset;Init system font;v_escape2000(times) -> (klappt mit dem Konzept leider nicht...)RP<㮧~%)hK3}r5e_,6@ŅCP|_kCI!/oXqԽ}4X'R)|";eDg!`!************************************************************************* * -soft GEM-Library * * 1989/90 -soft, written by Markus Fritze 24.10.1990 16:08 * ************************************************************************* ************************************************************************* * Globale Variablen: * ************************************************************************* _StackSize EQU 1024 ;1k Stack fr das Programm ************************************************************************* * Initialisierung der Library (GEMDOS & AES) * ************************************************************************* _gem_init: movea.l 4(SP),A6 ;Basepageadresse holen movea.w #$0100+_StackSize,A5 ;Gre der Basepage + Stackgre (1k) adda.l 12(A6),A5 ;+ Gre des TEXT-Segments adda.l 20(A6),A5 ;+ Gre des DATA-Segments adda.l 28(A6),A5 ;+ Gre des BSS-Segments move.l A5,D1 ;= Gesamtlnge des Programms and.b #$FE,D1 ;Lnge nun gerade add.l A6,D1 ;+ Programmstart (Basepageadresse) movea.l D1,SP ;Stack endet dort move.l A5,-(SP) ;Programmlnge move.l A6,-(SP) ;Adresse der Basepage move.l A6,basepage ;Basepageadresse merken move.l #$4A0000,-(SP) ;Funktionsnummer + Dummyword (0) trap #1 ;Mshrink(0,Basepageadr,Prglnge) lea 12(SP),SP ;Nur noch den Stack korrigieren move.l #appl_init,D0 bsr _aes ;Programm als GEM-Applikation anmelden move.w D0,ap_id moveq #-1,D7 ;-1: appl_init() Fehler (kann beim addq.w #1,D0 ;aktuellen GEM nie (!) auftreten!) beq _pterm ;keine ID fr das Programm => Ende move.l #graf_handle,D0 bsr _aes ;Handle der Bildschirm-Workstation ermitteln move.w D0,vdi_handle ;Handle fr VDI-Aufrufe merken movem.w int_out+2(PC),D1-D4 movem.w D1-D4,gr_hwchar lea int_in(PC),A0 movea.l A0,A1 ;Zeiger merken (s.u.) moveq #10,D0 _gem_init2: move.w #1,(A0)+ ;1,1,1,1,1,1,1,1,1,1,2 dbra D0,_gem_init2 addq.w #1,-(A0) move.l #v_opnvwk,D0 bsr _vdi ;Workstation ffnen moveq #-39,D7 ;-39: kein Speicher fr VDI-Workstation move.w 12+control(PC),vdi_handle beq _do_pterm ;kein Speicherplatz fr eine Workstation ************************************************************************* * Hier kommt das Hauptprogramm... * * D0 enthlt den Exit-Code des Programms * ************************************************************************* ;************************************************************************ ;* Verlassen des Programms * ;************************************************************************ _gem_exit: move.w D0,D7 ;Exit-Status merken moveq #v_clsvwk,D0 bsr _vdi ;Workstation schliessen _do_pterm: move.l #appl_exit,D0 bsr _aes ;Applikation wieder abmelden _pterm: move.w D7,-(SP) ;Fehlercode move.w #$4C,-(SP) trap #1 ;Pterm(Fehlercode) ************************************************************************* * Mein eigener kleiner AES-Aufruf * * D0=Die ersten 4 Eintrge im control-Array (Bytebreite!) * * Bit 24-31 = Der Opcode bzw. die Funktionsnummer * * Bit 16-23 = Anzahl der Eintrge in int_in * * Bit 8-15 = Anzahl der Eintrge in int_out * * Bit 0-7 = Anzahl der Eintrge in addr_in * * Die Anzahl der Eintrge in addr_out ist stets 0. * * Ausnahme:Bei rsrc_gaddr() sollte dort eine 1 stehen (Atari hlt sich * * allerdings selbst nicht dran) * ************************************************************************* _aes: movem.l D1-A6,-(SP) ;besser retten, man kann nie wissen lea control(PC),A0 clr.l (A0)+ clr.l (A0)+ ;control-Array lschen clr.w (A0) movep.l D0,-7(A0) ;und die neuen Daten eintragen cmpi.b #112,-7(A0) ;Ist es rsrc_gaddr()? bne.s _aes1 ;Nein! => move.b #1,1(A0) ;Anzahl der Eintrge in addr_out=1 _aes1: lea _aes_pb(PC),A0 move.l A0,D1 move.w #200,D0 trap #2 ;AES aufrufen moveq #0,D0 move.w int_out(PC),D0 ;int_out[0] movem.l (SP)+,D1-A6 rts _aes_pb: DC.L control ;Der AES-Parameterblock DC.L global DC.L int_in DC.L int_out DC.L addr_in DC.L addr_out ************************************************************************* * Und das gleiche nochmal fr die VDI-Funktionen * * D0 = Die Eingabeparameter * * Bit 24-31 = Opcode der Funktion * * Bit 16-23 = Lnge des Intin-Arrays * * Bit 8-15 = Identifikationsnummer fr Unter-Opcodes * * Bit 0-7 = Anzahl der Eintrge in ptsin * * Die Gertekennung wird der Variable "gr_handle" entnommen. * ************************************************************************* _vdi: movem.l D1-A6,-(SP) lea control+2(PC),A0 clr.w (A0)+ ;alle Parameter lschen clr.l (A0)+ clr.w (A0) move.l D0,-(SP) tst.b (SP) ;kein Opcode vorhanden? => Kurzformat addq.l #4,SP bne.s _vdi1 move.b D0,1-8(A0) ;Funktionsnummer in den Bits 0-7 bra.s _vdi2 ;alle anderen Parameter sind 0! _vdi1: move.b D0,3-8(A0) ;Anzahl der Eintrge in ptsin lsr.w #8,D0 move.w D0,10-8(A0) ;Unter-Opcode swap D0 move.b D0,7-8(A0) ;Anzahl der Eintrge in intin lsr.w #8,D0 move.w D0,0-8(A0) ;Funktionsnummer _vdi2: move.w vdi_handle(PC),12-8(A0) ;VDI-Handle lea _vdi_pb(PC),A0 move.l A0,D1 moveq #$73,D0 trap #2 moveq #0,D0 move.w int_out(PC),D0 ;int_out[0] movem.l (SP)+,D1-A6 rts _vdi_pb: DC.L control ;Der VDI-Parameterblock DC.L int_in DC.L ptsin DC.L int_out DC.L ptsout ISYMBOL 'GEM_VARS.SYM' ************************************************************************* * und noch ein wenig BSS-Bereich * ************************************************************************* BSS basepage: DS.L 1 ;Adresse der Basepage control: DS.W 16 global: DS.W 15 addr_in: DS.L 3 addr_out: DS.L 1 int_in: DS.W 128 int_out: DS.W 128 ptsin: DS.W 128 ptsout: DS.W 128 ap_id: DS.W 1 ;ID der Applikation vdi_handle: DS.W 1 ;Die Handle der Bildschirm-Workstation gr_hwchar: DS.W 1 ;Breite (in Punkten) eines Zeichens gr_hhchar: DS.W 1 ;Hhen (in Punkten) eines Zeichens gr_hwbox: DS.W 1 ;Mae eines Rechtecks, in das ein Standardzeichen gr_hhbox: DS.W 1 ;komplett hineinpassen wrde END  ş7GҺ`CkCo츉msBV+ \p]O-ޏ 0*~P F-I1i#T2hC8m#D0mÀ6l!OHqNq%}yw9EܻrUӬB F6^xXr8][ qq@~IN# C׃6 et>&؏8lG1#!K)k^,O$6,B7Rv%b>Nn)̐r̗6/xԌd%ҏ֞#E77P^ԤBFmB+~M?/ eA[%M3J]Jf{A8ׯ8;Ş\C;ڃ_xPL x;z ёq8H~#F٬)O FvxcwT>*QʔQ^S R'}ݖ%ʞ8r;z ёq8D:xoyC#Rcgbݎ)`0$`XBRASBOTH e bC 8"WdL/:NuXBRASBOTH znCg# `^AHC<:BgXRbAgaV`a L/:NuJfHL@HLaBNup8`U@jpA@BQNuxANu:g QHLH@LBNuXBRASBOTHa0|4"P0|4H)|| Sg| Sg L/:Nu xNF'Ap C"QNA0!A.p"$&(*,."@$@&@(@*@,@H~A8` xN *oA3O&0| // /<JNAO Mv/?<NA\BgHz?<NNAPrJkBA"prt<0k< b @Q#A%r<Sg<FfrHz ?<&NN\/< NMXgPHz?< NA\?<NAT<1k|b?S@f?kpHz|Hx ??<?NAO (??<>NAXJcLFP?<Hz?<k0HzNAX/<Hz?<CNAO BgHx4?<1NA@| /<NNX3.?<"NNT @A# C, ##"A.!#LAH!F x h"h$ hdC38Nu\AUTO\AUTO*.PRG\AUTO\DESKTOP.IN2E Jak wybierasz rozdzielczo ? Nisk ... (1) redni ... (2) Wysok ... (3)b 8 0r~>l (Cn_$lHq؞Þ΀zq[8އi,ŒhD]Lku'o8:Bkqe`˓&G&505qŽ<--XW쁯ؤ :G ޼ p{ZMޗ9m+|8mHjK(?ml9I7t_ہyQ33rʔ,n6b{#M XZQ~Ew-k R$6Ї^|4"{W7.Otcsgwwz\K S?C'Y [ʣ#6Uj,ysuyQ]vYY|([ F1Q86W'뾣}hF֌Wbwr]M2G @jLU&rk/u3n8^@ܧR! \61makefile.dos as8051/src@@)#(kͷ2[x[ԭPWjەqlfͷ߷%].@4۾`uÇ:0A9HG:TDw aĤak5Ne-|:"ɟ6pXrvCQy%J쿳1bѓ7h1R'I*3MaJ+Jtj a  Ao ҕPFd V%R{cb`0 `XBRABOTH e bC 8"WdL/:NuXBRABOTH znCg# `^AHC<:BgXRbAgaV`a L/:NuJfHL@HLaBNup8`U@jpA@BQNuxANu:g QHLH@LBNuXBRABOTHa0|4"P0|4H)|| Sg| Sg L/:Nu xNF'Ap C"QNA0!A.p"$&(*,."@$@&@(@*@,@H~A8` xN *oA3Of0| // /<JNAO Mr/?<NA\BgHz?<NNAPrJkBA"prt0k< b @Q#A%r<Sg<FfrHz ?<&NN\/< NMXgPHz?< NA\?<NAT1k|b?S@f?kpHzxHx??<?NAO (??<>NAXJcLFP?<Hz?<k0Hz8/??<@NAO ??<>NAX/<Hz?<CNAO BgHx4?<1NA@| /<NNX3.?<"NNT @A# C, ##"A.!#LAH!F x h"h$ hdC38Nu\AUTO\AUTO*.PRG\AUTO\DESKTOP.IN2E Welche Auflsung wnschen Sie? Gering ... (1) Mittel ... (2) Hoch ... (3)b 8 0r~>l (7?u1C P†0Ϧo8˹k[n[V ^[soL:Sbs+e,,ROos=+wZ< ܧ]Yas8051.prjs as8051/src@@)#(Zw.BAy{.ƿ¾9Ve9+SW޴r7~Lg Eiͻ=,D/xMā˙3_h(VÙ&6%B;c}Xsg"+̫^OuH*׊IЬ-@jzq%u;7c?iɚfu ܧVOd<as8051.cjsf as8051/src@@)#(ѶlSOݭ&L-IAC@>6ff$JI6޽Ӻt=Sޕ[U*RX9e%Sd_w8nuzbZ~2LɕuzW߫VlhuzZZ{j)݉:.D44>&F@"HM& "KL( "$$( 4 8 "4 .""$3"3 ,8&"$"/8&$" I "G @$&@2-0"" &*'&(&("(&&"&"  5777  $5" ;;$$$; $$ ;!*+ )." ""$$   0$"0=%>: ?<@9*A6BCD $"#`XBRABOTH e bC 8"WdL/:NuXBRABOTH zCg# ` A C :gXRbAga`aL/:NuJfHL@H2LaB Nup8`U@jpA@BQNuxANu:gQH-L2H@L-B NuXBRABOTHa0|4"P0|4H)|| Sg| SgL/:Nu xNF'Ap C"QNAI!Ap"$&(*,."@$@&@(@*@,@H~A8` xN*oA3EO#0| // /<JNAO M$/?<NA\BgHz%?<NNAPrJkA"prt0k< b @Q'# A%r<Sg<Ffr*Hz+?<&NN\/< NMXgHz6?< NA\?<NAT1k|b?S@f?kHz$Hx??<?NAO (??<>NAXJcF9?<HzkHz$/??<@NAO ??<>NAX/<Hz5ms zurck?;dann Ende;sonst die Koordinaten verdoppeln;Alten Mausvektor anspringen;F*;* 200Hz-IRQ: *;F*;warten bis das VDI seinen Maustreiber;einsetzt;dann den eigenen nochmal einsetzen;und weiteres Patchen verhindern (BRA);Bildschirm an?;Ja! =>;Toggle-Zeit nehmen;Zeit hochzhlen;Timeout erreicht?;Ende, wenn nicht;Keyboard-Vektor gendert?;Nein! =>;Bildschirm stets wieder an...;Screen aus;F*;* Bildschirm ausschalten, wenn ntig... *;F*;Bildschirm aus?;Ja! =>;Farben retten;Bildschirm aus;Zeit zurcksetzen;F*;* Bildschirm toggeln1 *;F*;Auflsung?;high-res =>;alles auf schwarz;s/w <-> w/s;F*;* Bildschirm anschalten, wenn ntig... *;F*;Bildschirm an? (PC-relativ mglich!);Ja! =>;"Bildschirm wieder an"-Flag;Farben zurck;Zeit zurcksetzen;F*;* Keyboard-IRQ7 *;F*;Bildschirm wieder an...;IOREC(IKBD);Bufferadr holen;+ Tailoffset;kbshift holen;ins obere Byte;Scancode ins untere Byte;berflssige Bits (CAPS) ignorieren;CTRL+ALT+RSHFT+Delete = Cold-Boot;CTRL+ALT+Delete = normaler RESET;fertig;_sysbase;und anspringen;200Hz-Takte bis zum Ausschalten;15s Timeout;akt.Takt;0 => Bildschirm ist an, <>0 => aus;200Hz-Zhler fr die dyn.Mausbeschl.;Adresse des Mausvektors;16 gerettete Farben;F*;* Der nicht-residente Initialisierungsteil *;F*;Basepageadresse;fr Ptermres() die Lnge merken;Stackpointer neu setzen;256 Byte Basepage;Lnge des TEXT-Bereichs;+ Lnge des DATA-Bereich;+ Lnge des BSS-Bereich;zu reservierender Speicher;Adresse der Basepage;Mshrink;Fsetdta(deskbuff);Fsfirst(7,autofil);60Hz ist Default (s.u.);Datei nicht gefunden;Zeiger auf das 4.Zeichen des Filenamens;3 Ziffern holen;Timeoutzeit aus dem Filenamen holen;Illegale Zeichen=> kein Screen-Saver;mal 200 (da 200Hz-Timer);60-Hz (gleichzeitig Default);50-Hz;Frequenz einsetzen;Initialierung in Supervisormode;kbshift();Control?;Text ausgeben;auf Taste warten;mittlere Auflsung?;Nein! =>;Farbe 15 holen;und nach Farbe 3 kopieren;Auflsung setzen (evtl.RESET !);fr's Desktop-Info-File;"DESKTOP.IN"+Auflsung ffnen;und einlesen;und schlieen;Fehler aufgetreten;'DESKTOP.INF' setzen;"DESKTOP.INF" ist ein hidden File;im Hauptinhaltsverzeichnis ffnen;und das eingelesene schreiben;Datei nicht vergessen zu schlieen;"DESKTOP.INF" ist ein hidden File;Fattrib();Programmlnge --> TOS;und resident halten;Initialisierungsteil im Supervisormode:;IRQs aus;Monitorfrequenz einstellen (wird gepatched);iorec(IKBD);Kbdvbase();originalen Mausvektor merken;und neuen Mausvektor rein;Keyboardtreiber erweitern;Screensaver in den 200Hz-Timer;Sysbase;Zeiger ins ROM;Kbshift-Varadr ab Blitter-TOS;Ist's das Blitter-TOS?;Ja!;kbshift-Adr (vor dem Blitter-TOS);Wird im AUTO-Ordner gesucht;Original-"DESKTOP.INF";Auflsung in der Extension;Buffer fr das DESKTOP.IN?-File;Der Programmstack bei Init9I\U-'>&M.܉Y|2P afn<32rLewgO_C --Lp1x򌣆Ih/D."Mce]Y ܋?S_NM=JFHz~O.桧iNzH=fkrkϤȖeJw^>nG C-$ezv\UoskgǓ#y9›4KZfHEZbYKC' (`oFV|xZ8KRD4琜Kv}橞һ*煲?#h{ΏEL_N58Ɵ 7mYvsR1GمۃH@= ~Bxn[<2"gxzW6_D9J o=VcM1hH`1S;-3@KK?M&:ieM:`'s3p3M yyASݏXSGP̃`iO:@Ev=F@r!&fO\Hǜz2D?w:IS<5 z\76xI@d0gf/EaiOBXďAGk>CTxP_*5HG 6I841}#(; v9u%&I#`Z`3G'wն~g@]!Mi$1qZ7uX-"BRĤz$i7G$>mmQm;************************************************************************ ;* BIOS-Library, bergabe in Registern * ;* 1989 by -soft, written by Markus Fritze 18.06.1988 01:59 * ;************************************************************************ getmpb: move.l A0,-(SP) clr.w -(SP) bsr bios addq.l #6,SP rts bconstat: move.w D0,-(SP) move.w #1,-(SP) bsr bios addq.l #4,SP rts bconin: move.w D0,-(SP) move.w #2,-(SP) bsr bios addq.l #4,SP rts bconout: move.w D1,-(SP) move.w D0,-(SP) move.w #3,-(SP) bsr bios addq.l #6,SP rts rwabs: move.w D0,-(SP) move.w D1,-(SP) move.w D2,-(SP) move.l A0,-(SP) move.w D3,-(SP) move.w #4,-(SP) bsr bios lea 14(SP),SP rts setexc: move.l A0,-(SP) move.w D0,-(SP) move.w #5,-(SP) bsr bios addq.l #8,SP rts tickcal: move.w #6,-(SP) bsr bios addq.l #2,SP rts getbpb: move.w D0,-(SP) move.w #7,-(SP) bsr bios addq.l #4,SP rts bcostat: move.w D0,-(SP) move.w #8,-(SP) bsr bios addq.l #4,SP rts mediach: move.w D0,-(SP) move.w #9,-(SP) bsr bios addq.l #4,SP rts drvmap: move.w #$0A,-(SP) bsr bios addq.l #2,SP rts kbshift: move.w D0,-(SP) move.w #$0B,-(SP) bsr bios addq.l #4,SP rts ;************************************************************************ ;* Allgemeiner Bios-Einsprung, welcher alle Register rettet (auer D0) * ;* ACHTUNG! Sonst knnten die Register D0-D2/A0-A2 zerstrt werden * ;************************************************************************ bios: move.l A0,D0 lea regsave(PC),A0 movem.l D0-D7/A1-A7,(A0) move.l (SP)+,-(A0) ;Rcksprungadr retten trap #13 movea.l D0,A0 ;Fehlermeldung retten movem.l regsave(PC),D0-D7/A1-A7 exg A0,D0 move.l retsave(PC),(SP) rts retsave: DS.L 1 regsave: DS.L 15 as8051.yjsz as8051/src@@)#(Lm+n"I xJHQ)Sm)exSkѻ H(ے6ۑ'9^ur`\$`,LArc's PFX 1.13P 1990 -soft, Markus Fritze g.h` /H*@"m mA$H -(H!!!!!!!!Sj JC pg QN , HD , p,m:<0r Q&N~Q~d RESn`, HED@|D@ArTApAQڀn&-A& LA(HJkf&CH"grאg<fA``+D +E+F.ޅR؃+D؅+D+VC m Sj mJfA, "gr/r$&(*,."A$A&A(A*A,AH~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H`Sf"|`B QL gpNޭ!:-lz5-9l BUGABOO.PRG$`?\NKH=*Sharew"-BasisversionMarkus Fritze, Birkhahnkamp 382000 Nord0tedt 1)O#Hl/<#NMP#D @ TASSWNC~@ZfHP_ < a <4, V, l!PpVF@ gHz?< NA\P N`| Bugaboo V1.7.6 resident I)H!@)I!X g ޭf_)a#&\B,)J!0gQRB!JCj Qk)K!TDNC.l$Fp)@#B H P"LAgBaexQPACJVرe x,.f  X |f"P&8Y~XXGJg9G!4 |.H)H$FaSH @J,qxNN)l!@Үk,n<1LkNVBN$mgw,"t2"|*!LmN* hN! !AF)H N -soft'{s von ? und Sren Hellwig Ein 68_Prozessor ist aktiv. Parameter wuen gela KAOS installiert! Wir g nt fr GAR NIX! Bei!blem of Fehler ibt es KEINEN Suppo nNp $$ Bp ޤ,=BA1vNJgsfQ&|/,f uNI!n0B,j!Bn",NJ, gA!1<|g0!2Q Xg NվN 8",#d !taujNJ!0faJfoL0a0[0\9|Tcd0bP!XfbgNj^ZC2 ,zgZ @r:gR0 ggC!_`t`x@0"fFJf ff``B)Hz -fRz`Hl!`*!R!`m0zLrNr0`aݰ0d00e19c ak @a)A0>g 02f@vB*S,H*HC^ET N|B6g0Ae,v0Zc Qae 0zb0k @*gJf`r2M]@Z!1N &#@!|?/)].,"PRNPBREAKPOINTSSAVESYMBOLTABLQSINFOQTEMSETMEMORYLISTLLoDISEMQDUMPLEXECUTELOADGOUN?TRACER cCAPIFMO~PCOMPAR'a{PYPRECTQ}H `FINDD`PCLSASCIIRaEbLPEXITQUg`TYPPHOWTMO_USEON#`Nsca~dF"a`HIDxPaPDSEK;`RdWRITEeeb:aabdce` aKRcERA`KKaFREړ`K6gRM6gNAMEFORMATGETREGVPERPN`R8pPENFCLO`CLR`CHEav@p`QgqKSUM6qIQWITCHvq`B`CURS`INIBwBSSCLEAROBSERPDQNCRWABS(`NTINU7pATTRIBUPABE{LBqHELPbFDC(`OKIE%`RSCANBF~8#~"&''M沂ed@(gkP `fk,Q&\\Q ,!g&"w@~ ZP Z rPRAgSAxj\X!ANrU@kAW"0wNu1WQ U    U"U,6@JT^( ZP Xh0ڢڤ-ڤ7AڤKUڤt_ڢ ޠ ZU:c :j u Adse:ZeiljLabeln :>erl j OK EGK !~*\C*B00D@ВPB^@=$"fpvP`Ja2$\SAg_4e"k,r/ pW&_`"Jc`="a *BWG붐Ip֔Nr,uBҢd;fe"fĀ7fK%f_ddaz`{a{0, Dv0 r?j"BWS@kg @\g@@`@`P9_Pl )l`,SLQg0||Ng`Ad!`w~_`~v|z l,f)ppC]@_!pо}(`D\ >)Nn.H*l!"-@OA6A>, SG?Rlv^>uN9|@ LNuBl `  gR/@e. ,Nu44,m@ R<{,@ f^Fdtkn\N< !0}Rfڐ^`./A ~"1L~"_&xrParAWB0, &RFᦐ!&P,G,nJk gJ !B!Ѧ1A `2fNF$ڐ!$axay`8F'H瀀 o 0nsgbnug\nwgV@|PgL|`gB0@n@g6 mggNs0ñ|w;b4(d 084f$`yjCv3}V 3 !A#",$n<", anU",!@n0(|䪐g$@VZ `̡n#f ["*\nUn֓nҪvb.$,VZ .` -$Hp v Jra"t@ < Rr < lg <(GSTr{)# HfwL`LgFb[ dsa` ,!S´0k IH&@U\µ [rm|mܚKp:^SymbolanzahlRP':P"Speichervegung:Start d60DebuggersW%$x$Ende|/,w'fre i!0e%s///!Programm/'=/!TEXT-Segmenqt1J?!ATAc?,p9$:r# xdC?F, \A"ڐgf`baaY3͠>ZlN&BbP4Bi$Mcht!0den% vahn?JA NEIN pAHAaHAYaYHM>Jl f@$ptA6|A6 BL@Nu0123456789ABCDEFGabcdefagp.|A/|@$NuHH"l!$z(B"8BLp0 beCL?Nu4Eg `:REEf(T0S@G@:EEGPz &#tВ[Db0gz0|AQL3P0JDfp0`cAd'B@;VQ:[Mb_|XSt EgHx Dfe`:|A`VPxtvQe:|A@JgJgt@0Ƶ|AxQMڐPp}R0PA,OaL?Jf0ywPb:e^BϽf@a`pog*zag bw;gb gbѻe bzbJ)HzpSNuwc!`_bdNu78` b,fa`$v;0WJCk;0 Nu%@.$ p; ;Nuʗ?<aZg$ag?$AWbC>:Д&EqDNu$lҗ4, SB4pw gHb#gNb[gh:r:b$A8`,zrRtrq,fXatrzr4:4&At)JJBgNup>rS$HA?JAf(`޺st_g2@b]fG``VsvCaa,gwJ & SCAo>vL|`upFb"gtbw'gnb!g^@b.fmp&4 <WgrLgrAgrBg`=nCY`CpHA`pBJBfHBBf`,Ia"NNuzx?4aBg zPJE r-fNqgbbH?~a$tRB; Rg ; fNu,(.#=[]"/%$b+fNarԁi`` b-f98a\߁i`b|fK&aJ`b^fa:`b>a ?`"$a`2uP8*Tamp Z`b/’a0a `b&fa`O%Nqa~C $`Xf|a J{gNur }~daF -g:ENa} qFaD1u/uQ(8{g"@Щ&pb)`` ٬Ub}fata.fwtytWg tBf b"x$x XP*!̠ &ArJk g`2`"!Π ~^4CG^$Hr0Jk>RA 1 pJ1 &JAg HkJ3f%@ÐP8DgC J`r0)2) "i J@g4eP4g 0N`"%`" `4"g "A"1 `2%0"Ct]dL4fVaؾ*",qhJkbbC zg`` $°2,A~d H"1tJS@j{p+#@Vr`֠,noNz<` JRLLFtk43pNdVr&HCHCJCf ҃e Ҁa&eIrgJ(g< fSw`P K&wHSB:$KA~r,QkJ5g$KH!,e`JfAv"W`$K ,#g 2"@0,#`MS:B7."<j|޳ݖҪߛSYMFLAG  USERSCR 6INITRING`" TABb #TRACE TDELAY@MIDInOVAN"CACH>~ LINES?i _1`"!!10_#BASE1!@STA0!SAVEAREA$FENPAGEBP#PC, US+BKBOLS2SK SRsʙC^*P$3^ a^`w^M\ ^/^DISBUFFEBSEK TR:TOsSECMIDD7RIV>$FmLfzh`pLm`&HBA (:f0`dPb|Ak/?0p@AN,X _T$H"HJg \f"H`g8 d R""Rg$Ba0/ z0p;\J@`$HfBJ KA0p#T36?R@?Hzp0pG#PA`Jb!<\Bg0p/ !ܦ"NMOp:*Jk" |! (I!# x!I6## ~6 v6!#r 2~ 2vBgHz0p=NAPO >NAXO ~3f!009vp):%&0~>!J%n9LA:NoH2FN2DT2Bv z4NМ0,2p`0$2002Nx:\X? OO1OCOUOgOb  Qab gP`LvIRNuPߏaBW L~BCHC/86HD8HC"(ab~BBDJlVDDJlRDDvdԂփ`pbd|mDdD$NPbap@jRA.R(*HDHDPԄe(HADVNRHEJPD^`3`k4p`0p`,p`(p`$? WdJle?,82$0HH"Bx>?A$`! fRJl g!B,j/p-(aDr(`p:(aQ(`$`vA`R``L c`F``@``:``4 `. 0`( P`" j` ` |``` `U``J,!g .l!NQ0,!&Ph!hQ `?Im Batch-Mode nicht erlaubt?Unbekannter Befehl?Ian`F``(Bitte Eingab`otieren!)?NkIllegaaBreakpoin`bbf?Syntax-c?WertmKlamm`a`L`l exisa.t=peine SymboltOqle)qlc}h`Druck'qDateidmit FOPEN geffne`΋swur`peitsxEs Vp kfp ProgrAppladenErrorDrivb pdyUnknown commandCRC-erBadpquestSeek`qumediaSecwtorrfou No pap'pWri`fauJpRpdGe`alpshap{_protDM= changeudevices~DsIns,qdiskEINVFNߋygsefPpPf݌ENHNDLZugriff verwhrtEISpe``vollEIes LpwerkENSAMEENMFILERAN }πTRN:uformatEGSBFDʀ,szu kurziTOSd@@,OK(U`*|Nz|N{*.NFLq!?<hNNT|hg.NF/<nNNX@n$p_9@ N 8f &0PaN&@&0`aJg0&0laQT&0Va"a`&0L8?rCookie-Ja+rp : Name : "" = $ t dp `|QpAZbR`CT kfNPrNLOAD BzQan, $* Zat/ a*_)Nz N %f]:R d  d gX`NuMk PP`jؠ~b*SgPfVrtOa8`rt`7!iWº&0/a/a&038ͱrsegmepks nun rptiv."Hv|,gD I2, Ag"[A"|34, gS I, 2auJgfv.zBva~p1 ]S 䲀b,E d`BE Gd "۰`Sl Rl lP /u`Bvc)_aLNtyABWft`Lfta*ɅJ@g&Xtat|4A.S !5.N/B! _*l!@,wl!D$g] r*AXub,A`<"gaNW.en Sie ls}pn? (j/n)ՐH0eXrtvxz|~&G pS BJg,K$MHSfg`@ @ C "@fNB "*_Vgv8t$>v8,Av8HAJAf_HANuT`|f .GL~`^Dg2dg,-JPa +atR@NuaXk`2< sajl XJkf"C`#`|zT`S!$U"HHf8C"&#4TSR"u6#ha ض|b\ 0| %6`0 #| `40x*40 4 (92<` D5І40?^kg%xR(c b>>7Y h40c2<c? 0A@w|gP@kH`8 f6+CQBx@2Р|/g-fa**q@l8S@An2t4qb S7Cިj `@kJ@jsDjrkk*p&rn[ft,3auaFvvM(g`b.`S2!pb`vr`7P3gP=0U {= 4 퐲Af!ݠ bg };fSHJ5l`j"! k]ТAg:ag4sg= SHpТpƂPgUςp0c1p_@0k,bJ@BDg Z RЁRH, Rǁn Qz`(<n (0dTXO`:gkb gjg>`$+gZ`1'gF[6R Ps ?PXS$Q`< 4 HHf0|`$RP`@TS4ɐp`W8Rn(hX| @Pn)h}v/#g`rqdN8gp~pCTcT昲 V‚ѡUTuT BtJk.fYJ,HGo& '|Khpr5g"p`S*,,,Cfr4, 8BL0Hbfbf CL$u4Af`2RA̓ N .ABCDEFGHIJKLMNOPQRSTUVWXYZ1CtH~a֫0&u` g|W0hgADC@f&.B+%.L+Հ6W+ A1~fInhuZnIj09%IzUIQj!P%QzRUQX %Xz UX N(1U9`fJ`fZ`2,uȅSJJ#9JZRT!R }R (@BCCdV .Sbb% $a$HGsp!'$ L"$!(#'( j!\%ee Si(#$z' E]$g1i(X$3z'$0GEY(lE1Pi(T3z'T1TY(nu1i(3z'0H]$b1i(3z'1)d H()3z*LH9oAi(hCz'AO+LO+G@ :L)ceAi(tCz'tAx9mAi(Cz' @M9kAi(Cz' @NH9fAi(Sz'QZLZ \Z[Pa jUQi(dSz'dP Ri]$`Qi(Sz'&PSEx2$Q(S'P&a aPRi(Sz'PTST3N b h{ dVX)hEai(Tcz'Ta)iuai(cz'`(S78S-7HShH9b);`:9CHK)3A$a1B@$u$uqY t{MP uUqD)uaqfq:taqfqJtauiqzsr Uq Duq qrM?4VH"{DV$~TFdPUU3N%WUF)PQUG3"N\TP^U3NRYTCN_ Ł8B^gCNSŁ]UCN[UCNAV(RWSNZUS~x5PUGcNXeYYUcnIxqU wEO%4@9ƑJƑZ  DՑ X" "6ٕAx55ElVI`fZ`ILLEGAuL8JJWv5%NJ&LEU5ULINBƠr^PLfH ')$%8)H)HMOV5Ώ0fp1u{p u8pʣp0@In W 6ḇֲXq7| »eq<pu2>UqVN qHNE8 qD@)xD 9xDJw q@*d9ȵIOXuNqNOx5 qFRՙ&:wF&JwF@]U9]ה]Հ]ب6uйՅFڡP8"@RESpROX! ')58)%H)DX9!Pvᐆ% %ȥH"TH5sR9T%wRTxe;uS SW& qTS& qUS6 qWSxtQ ehpG6 q\^S6 qRS$F q_HS]SF q[SF qVSWV qZ cuPx$ JW*}+)׃"!aÆg<OgدQ0K 0aHAJAf.HACX4k Af>4v6J@gd0.gPJ00,f0,0? 00*g>$0tRkSk0bC N2P`E0Qa`A0Q0QNԤ1P6CABe0M zHzEPN$0p#0r2>}0"N0h46a QNaNr1|p0@+g~Ej@gvA@g @ gA p;~1|`p,1RACb6fRgRJfJ1gkp*1aQ5`ND2hA`;BBMrkg nBtG@FʎKP0!e!h!g!f!nN ,!g2 @ ( h`BSj0aa3N)l!@9| !)H"l!L i! BJPJPA~pBQNur`g0pbI9A P@|A "h ?0<BSjPh((&fp@&Ca|NFN,l><4x8<z`|0 gLh,A|@gB,<1 g6h^1g,P1 g h(ag0Agz0Xg0EfSFg JEg r0ASj`A`^H`DA_GHz1p1{@5NPrfsumme =M||@;g^0VgX"a4`J,_gZJ,kR/1A_A0,c ??<>NAXavau!|x.l#Fm`~ fAc`VNSicher, da Sie alles zurcksetzen wopn? (j/n) dpSystemvektor#p+wg@0"g<0\f."H@nqg"twPBdoH2qP@4dA|  Ip\1`Szp;gpcAP)@! KcP,@p&:^jQ`!BQGR! p"%@ܿBX1J!(g6*lҕp&@R $@&j@N" ,l!$!,d, b,Jg)ca&H0aoxLkJfQ)M0`H"ޭ`p(1p.1/^b"AP:"a1KpGtp <HPL1Mx|p gJgxNBR@Jf2/p6~,ft an&f`Rp-~P,_L?Nu+?KGRXDTѠab$a~gpAޤa>Bg/ `LH$Bl"%@j`TrN0Q|Akn@bfHa>PBytpfrei. *auf dem L?werk X:0`aPT.$RGA@M a(J2"$.aʘ". "pVHz2uSGk?`NMXr @<( :((gbB΢M=E=X =P*%@$xv`/ Bg`NMO"TF M0<Jf\W@WEJXfRDSEWPf,NuRG?/`6aOPNuLzJgFzpD7gz1Sgq]0z0*`R$T^lg|0ghʔ9A`c>,,$|O8}0N 2N{tqPgZ1ΑŋZ2 t0蠐>EhJDj$Ū??k`Cxf $kZ` 1a2NFile-Attribute:[|WĞDȹ^2/PN \=g,|fȐ` |9_ng.ӣMs`,up_:g( N>0;$2PMj NBCt1 8/PFq~UBj@8 HA I lgca|Ua,gBhu g6g.ҩg"Qgh )AgghP@f}$pJlgpl @KSЈA@F1h>0,pk ,)@ H H@ n1panaaDk0a*Q1N}Q1Dy"08NunذajP 0sch2b4˶XgTշ.gH|g20g,շgU P gP NuHm,giJy0Bb5<@fAPc"@Bi@PBQ NuPc@ ꑶ"f`hg}pfH_"S`zp& 0zp!0n0vzZ`1nhõ֞ÜhdhV$l!&l!`iH)J!)K! cu0jZ`_1"Z`Wـa~tZ`=d>cB}aIJ2`Ipperp vonIbisI+5A5g J/fJP6Q ^1pz$|HGapQ?$OTE $I6|}qPHꑴ{~1Hf~pzzpRf P{ lfa9O@?4H;PDE Gz0H`|Q 0$l$J$j,C<@gjA`p u f`fSl fmPBUGABOO.INFSIGMA=`ap ަ!aBg0$=NAP>kDKzI MM / 4?NA|b f -Sof Uft!mLAI 10ft? * 9| 82 82 9|U Bl 9|N A rpjPp_r RAd2`53a g"h`gPhoxd@@d`,JZ`H5Bz/GDN/PE")AAՆ0:S0=neStartadresse ~*@:Lng)B>5D:End#H,Avc2NrOHsBz0 g>ŕY*1hqfHrcq hrRA` AazB!@0BnrKaFZ f"@)I!&i)K)KҲ!Q)O9S6J)y ` !wPĘO / ʰANA l NNh&U|I\.l! k0&k$)k| +RLPvBl l!)hPT#EK@# )I˜PߺpBq#(|@IBa$p)JƬR<2E\\0r@׮PP ꫐ana6\#0TP$EvCn?*@)M!Q@0 .PA&HCЉ$I"سeA 4a TbZd)n`, Jnf(n`Jg $mR` rђg|e`E`"FJf..)GpP)Fo!$܇`,"}P"g &@A#p B2RAg"ҩR`XXp0*i,M~Ƽ`0aB,p`H$HC!`Pz @g"LE a |"BNuqBNuQC "B)O $fP @fA~p$HpO&/A$`jaCnrzC"ptf(p V`f4aPp k)nB|ymboltabe" mu segment-rel/vprogramm sein]fehlerhaftz(g|Q&( ((*(,܄`$,t") )@gct@gc`d.A(,6CeJg0BCv<g$lg h=rt`hCrti/i/ z B|QtBtft$Ұ #A >TY"Jh~H$H&I~"$ Ђ␲dF"`cC$`b0" ߂AL  0H3EFc(Hd Jad L"KaL/!zctaJ@!6_)x 1"PU|PH {|PL!l |2 )H BgNAFyPQL! P/.}, INA\4Ѣ@P"$gNqfRۥ$@(3NsQa|C,loz?Tg\PfRQ)N۫PCj. ,J:"A,ZkJf oj`e:^! 0k"G[0`0)`0 `0"v?-a[^fwR4蘱Bk~0,N&vn}gН&p~2P JCggR,@:mr dv\1*`0123456789ABCDEFyDFF6j1QSG@f.QYʳR`0-``"R,A|Đb`0.`0w|8yRDLSDj`0`0,aYf"2aJZFQDDDgToTD*LT lVDv%.lf08ѽY`f8ܪ @DLXSZ``Lw ``>pa\Tof\Y r:$a}5>,Pgwp(p-`D@Dp)`:tt lp[|[C{@E N< `$M\ ENd@*I$l&l6,,Sj`T juN~nt mgln|t౨` ",!g ,A$n&no`,g$ADge,0]zBaXPk2/ B@S1f R@@d"Sp JPfp;`a~$_`E^@9C`5j*<~F R|$@gTVZWkpv|~"D4HNAXT@ZfY(!X}2Hl `#NMPACI2<i"jA#2!0FPB&Z@`Q ` n.l#{$}_q , 3 R1NAWon Sie d2@Debugger resi9@t halten? (j/n) Pn3A gB x NN0 1v?v5RCPfj.Ap`!^b1gAW"P|PP_ahXXgpX( ,#/NuFQMWre es ihn2@genehm,8Kzu verlassSHaX4CG($Hr0JkRA 1g,J1VP&JAg Hk J3 `[P@6P8DgT J`0E t84"R|n.=f߰|aУ>JDg̘Pg"`b2`$0NN>< `PK00#!`t9pC@2 WrP0BA9ABABJk貼=b C`ꀁgaQ2P "2")a@0no+N{NutװRdS@jp Xg"A22`33 C`Haaj"NuC~``t+v`hdMga@d,gaa*aa$| g`f`9A ?aAާ`p 6qNuS@z`SYMFLAG 4! RING 0pl TRACE1s0 TDELAY2q&rMIDI0xOVERSCAN4tCACH@r6qvVMEM~pCK4s SHIFT1v CLICKwK|AsEStrPC0q2p7pSCROLLD#uCONTERMuCOL00rqu 1SMA{LLwSIZ@q3q(p LINES1s'q .vUSPymcSmSR~u3CCd*stDISBASEcBUFFEt,m@ApB~qaB,/@rJg*B{rJAf +oV soNu PC= lgmRgD0-D7 A0-A/ @f p?ǰؠ(װb겑:-Lxrtv frU;@ g n0p @ર9?`VZNXq@<ST,xHz 52(A*X_gZ/$dI`er;I Ê0..8HzNu (JNRu2.y L"-.B1V0a.T6t rFLK2Vw< ,a_ <ì@, F, З`VRNBT@fVVV$80<rp"<"@@H0qgr ab `TdrpaV_$8f JguG0@op$O"Sj0&8&F.JRfXtx &?JxpӨ8Zpf*'8`of$,og[gV}tATPrcJ1fJy0@fj068~tp1‚~rx~Vf 1Â~:R@l Pl8}#`ѪPZ8ap .Ha^ripavpka `p-ap 8.Nך TOS-Version0q:vom GEMD  p VDI G& ist vorhan9@ TaktfrequenzMHz zus. HardwaPnicha BanksSTE-TT BasoisadF@se16-SpeedPPC BlittIMP-MMUFP004pectre-GAS{-O$PScantacy 6888NTSCPALUSAFRGDAUKPAITASWEXFXGTURFINNORDENSAUHOL???BBj0(" јA0p 0<NBBNu J8p 8p( j0Po",$"@Y`ېp`o",(P\ ,!g"ېNԀ`gj0n`2r``S,rt8@sR<Jg ,Aa=p M0,<r-A)e0,Jc@RFg*g$?g``0g8`0g2`0g,`0 gN`0@^2gB|d1g6{||noNuTkı g g` AD @gTNuRf X0Jf1R<1 1Rg|01 1_ di@n@@M0%A %A v%A%@/%A }HJ@ L@V@_ d ih@n@ t @JM LM0@J wL XHH!JQNqNp@NsPNtNwPNGN}vPNz$%@{%$9NrH H NPN`Ah%H@ BN@SNXAKBDPFWN@N(PH@A wBDKQ@KQFKPMJ>JKQIA'P*P>P QP[`Wd,Pp PP4 P ʐ@JM* P P]"QñPsP{ 6QQHP`Q@ &`H &` 2mQ2QQQCPP`P.Q.Qk`6:}wa6 z`n`kaqax`a(``kaqa``8s ``|ka{k`` a0` }ac#xed*4, PkH/fR^^64Ae [d`t fClscccsneeqvcvsplmigeltgtle$_Jj40|HB f (d |bf prpa`꠬꠩JEjaab<#guB"`B @g`wlL < ^fL *Q |pa8L> "6KJgWHDU,V"" B$#0!arBGC|)z *:>BHN\ftJdI|,fp;p0Ƣ#¼9PNInit DPut pix[elDGeRLDHorizontal lFilled rectanglepolygon BitblCTexShow moussHideTransformUndraw spritsD Copy raster >SeedfD0a0f6",!8gP$A"2Tjps El!4nf:ӌtfJ@gVfH2a`UoBNu40\r?^`p€`49pyfr`ήp(a)Ƣ(aJp+Nu.ƲJg"<gsHHҎ`"Ҏ?X`2"0;p@@SpPƢA_|0ƢD!^ZY`rrWfzppCRƢOUL#2``$FQpBpEVpKPpT'r-Wg!>'"!uArQ|:Ӯ26޾2vf g2}0";pYjD-*Bj(B41A>2H` spzU5_gX`2wf2l2:r2k1&~22(2R2\2022PNu?JXG-N<2/f*2TP2Ha ^Nu"H@HA0 A ,#g("@0, E0,#`fPLNuCܲf`6Na2? d,bJAjA0V[^W M L?1~"v"RNn!f"NI^DVD!NDNF/?$*,|3}*M ~a 2J2-BNu~r0=fvპ^ z`0f| v^ R`WTRSUV2;kXΐ"3ah< r Bf$m R H0 m3Y"J+ X2"`"2 <\]x0 004"2`m11Nq1H2Nd0+f.lB v!Lrlf4<П6<8`0-fU8l B Af4<Ր@@QC i2D`]0|f0B@ BP@Bfn4<@x ÂZ0^f2B@ BRP@B 8$<"6B C[a$ A຾AUT SNn!mQ*fi !Pr'n4Pf1"1`0/AU hRfz@rRfzW1 40&1t hR,abrRL^@z4<@Dsr|0%f<4P@ !!a.rR@FzW"XBu@2@$Nu0!f( (bawr1f1qWR58b~f8 )ba,Lbf" )pF)° i <`3F8b-g2Qa-:n!D * ycU^gDjDfDcw(g00{gx4Pg $HH´f *Ap2oR<"oRGz@0)fS-p0.gNu:&"в0Lg30Wg*ɧU"0ZrBn",q0}f8rv!R@"12A2gRf 4A2YX` )f R@YU ؟2u10Vv.f6\r(3|o3ߐVvBg3| QYPqfVQDtft.MpeT]Nu%gq)g1/4/>38041Jk e SEg02$qJDgJg b0YA2Nu1f1q"À>2o"* vs` sx0Ds$H4u!PfaZ0C0r3`u!Cf,a!Cf|a0Rfta>ƀ)M98bUfa0SfJa BrD| OqSf@a ذ[zRfKpv|8L`r< b rH`t0 Jt"^fB0DgFV0g>lr؈,Έ"t dR) @62L"r BtH-b )2j>rLB^Pr82!UWzBfB2p1)VA|0̺BT0)T_>B`H "bHlh?1A\BgPPJkp9@Lu/ / / ?,֌@arO g:%t>aXX6Dp=a>ܪ/?a$ġJjˣ*Ha"<a,a MNu A~H!| l!H !LJ8nNAIfJ!gF @L~.zXBRABUG1/<`^|H|2||||~U| | U| | U| l|UV|@|U*|||||ü|æ|Ð|z|d|N|8|"| |V||U |!Ӵ|U"Ӟ|#ӈ|U$r|%\|U&F|'0|U(|)|*|+ت|,|-㬪|.|/《|0j|T|2>|3(|4{5|6|7Ъ|8|9|:|;x|Pb|=L*|>6|?YJMRET~`BF'/ I`pH~)_X9_ )@<| <0 @te \d !N|Ag PQ^~J,h0~0S@20enjpSc_"l/ ?,0bdAZ g [/N$",΂pHz41p,|00p-"2B  pE"1 f4,@!j$Maf"M R0fT6,r fWf)Nx NNa6`: s0|Jf[0T |HHf z0Jf R< @ P)l! ! d AGp)H p,gA NB0J,g)l01 ߬QdQ0FPQCAVkf gP^ /@@hN@kJl g0h0r7RA&3|RA@gnPg(@131 (#` 2|Hz4f"A")0R±0)Ax Ax0 2cz1`521R`NuBus Error0AddresFIllegal InstructionZero Divide`CHK, 9P2ZcpTRAPcc, TYVB[Pr0PPe Viola"S Trace Line 1010 EmuPA TPX Excep"Q #1 CoprocPor ProtocolYFormatEUninitializedPterrupOtZZZ.ZDJY2~fjfjfjSpurio@hLevel 1g Auto VecRdAQor (HBLd3ocd4cVJrd51cd)6Xcd7yc #$%&'()*+,/Qp #!"-.Stopp`Pu0FPU Unorder`Cond `$Q1rInexact Pul`2r/QsQby; z+P3tpflow4rOperandE5:v16rNot a Numb]e`NAN7Y58PMMUqfigurT9ЊU?"S:Ac:Q b;yD$?NP`nnAbPhxPogram{me/ beivUe Pa=e`EAb/ durz[SHIFT][CTRL][ALHELP] gedrck EB}RTStFBreakpointpr-қPePnentUserUnknown XqU, FC:o wr `ngqadQfrom /H@ l hdp[H2@p"#@L1 f zP m 옡> k| ʘ~ g 10P _{Nu|H4IVl A"TfNh0kP|~bJCEJkJV!(N_$!Lg",!fZJ@gN1gHLgBJVL/:|Nu"/U!@e䲬(|d"|h2HzLNu/<4r$9ebLUfWbAJA$kVJVhnNuA tಿ doahPHzqjJZg xZC@p"؟QB{z^~8^!NH>LST >$d:qdrzf&pf N@g fa qgrq`rsIIp&Wpn">?<&N_N\L@$rlCE`,0(HY@fE')I!P)J!H)k!T)o$J&@AZ SYM} /NAT`l$NA\}HlhNNAPJk\Bgr=z.kJ,,$4)K#/ /RF<??NAO l#X# PfgBY9F#>NAX/f)K E0,$J/<J!p)@ v)@_vHxHj./)@!@ހ)G!DIj`v@Lq,Or$xdBrIrNz| N{\ g rJ@jrd.N!IGAnn3~@)r`Lɠhpx@RA.N"x,,'0!@<gTȂ~`XpM,o*@ap28po@p䙄q!.NF 8g @Jg KAOSgP`Pt h03ۈ@Ha<wЕµ"@`϶a.aappNA!a!1AY&&*A8Xn\ aH\rtAxB6K ;0(ftJff "Y`XRA@fNu ')+-/?RESET ACn@H~(HNh)HBd(l1ESЖ>8k8A!C_x``f6<gfQ`f?ҮcH^N 4 0<B@NJlG g8!Lv`!aq$B,=^NԜ~Nu@LqH0BTJ, f;#XJfv6HA=CjYoj T XpȻ`hH@#8Pp`o aEĵg"phE g#i[ڤR;?E g pHwa6< a.<_a&lp,a6V<mQANuT~I?R*g6aO2Lw6a a/S@ L(ua`~.0w'p,pg0<E@G?r6[!䡲x '&r p8bv֡`(pg  $ e%pu" `֡pS{֠(L Y g*pJ()f{p&fr4Rpf&rp"!(&b`E=@p (@~&;` ' ,# $ %e ( av0!pH/kpptu," H H@ 8wH@0H)0 Nu1r}8f41p50Nu9Ns9LqI=Q QB!0Q |3Q^0ka4Hz>0VIl|Paler Spe PPe`ch!p ap H 8fb@M=P>tJ.@@0t21pfxG0BBx>4pL@ 1:C.2<AV0<a fLfNu0a0?9|T[\ )@L@H@ABB` ,ptp2(hg8X"P 1qg,=fA&C v$Tg$g$Rf`1AFlpJ 1` 4J|9B|)I`"@SljX [R_g V`^F9HIƐ8bw`2Ɛf`v,>g ܐ=0rt`Ɛ:fAad@a|pkD@f0@l"A"p#BƐSfD` =g ` @4`;dNИEvA`rܐ@ܐAܐB?gVr@  ar lPt f Cgpxq@@t[`@8pJLTgftqVH0 `,\@'{[(}]{bfsg ,Sgt0Nuv``= @V@g(|ge"|pb 0a |evC>`v @g0{;,D2;0R4P P`*v g$|e| b UA0@r` |)f0< r{rfrBAHB@ ag>,f@X@g"Pgf}p#@Bbf4 lr A@"Tf f08psr8n~RapJ `j4JBIt@H@"i $r&F$ǑCP gNuIHJAfP$i HCQ"#6F)ЇQ6 6gf$Hw@A"XE5}*:r"Lo@r"rҜ |)`21O0O0>O0pO0xO0b1O0 ~рS)TѾlO0O0FO0UO0O0O0%N1 `0/Acm xs?Ў e`Trfe撰V`.gcj`L6cDpFHI|b$HJAg| rD  @g.,!! Ѐ>bh0XAp@eȾ| e]&p,0e&pU,0'F0)e01dX];p0,@9@aab06WCKQ@k& 8H@Pg0g P@LD&~a`J,rg8vb <H` e PVt0t0d`u6d2fc6A)Cn$IgfPQ"JSCk SX\R,H"JRC|Od Rk\S $I ޽cBNJgJ, T v0`PP!&`*\+{}[]-~|/ ^=,;:<>#()?M!*&o$&g@wgfDg(O0Nb(,`$d,$ `, f {,,`,^a4 b.N@C:V *dv P!)O! J 0NDBR`Q$AJ!(V4, SB ,!g @e d a` Jl fva",N=bNuR)DF/,/<9G >^Gl 9A;Vp>`@gp$RKf 1S0`RM!1R!RVgjPgdP g8P0|9c!AeFc f~p!drZ!PPj9F a r~<0P c_@Q W? X)_h Akl0iaX'&q`@Xk@Hl"Hx"?nJ@XRs` 9ZAoAAF@_NATA:BNux:\XP_A.PI spN Xf <"Nx!fjz.3 kκkHGGp,"H0gfA?B,`HG0KpM־pGоpRPk`KMx7GWPGTvSݑ*SQPa0R4 TS\"2P8wHoPPKPHPK*ڲPMP4Q6Md Q.pVb0 "m2m2bPbY,S?A#[ ro`g"f,AafC#p3p#SpE0@҇ efp.RÀ"P"dt @ 0,c$TAT/[?^CfABÀϲf g0젯( !~C̡d0A0gSCK!̡Ɯ!j9 .j1ިH@C0kNuP}P0 栿  N;  sؠ hҡ Ha rOBֳ/Ni $)>$BN}uJgXʁ?GoM "p息~N. 09_Z6(C;p(CT(^ $fTlZ**QC!`j ! gRIBAf X}`(.!**1`@Z*1aS@jpIf"հ(0ppeuULpN VNRO[0|vsj 6 lн7h`Phhh@hh0hh h  h ph h {h``D@X>gh=nL0С?D2v}`c 2IAJ6GA3 v&gv<aıAp'00ޮL$HAg`S9HΕ΁~bIA̱rP`@fZEGP"HfSd`?2 S'1$0tPAdrPAԨ"`dG%Pwk`Okwkkw?kЏkwk/kwkkwkokwkk_k*ްJBg*pPBvr8Ld 4`$$QԇqarްC8 z`:`flrx~_ _DgTްJv0g UCCCCCCC_SB`45Cߞ5C>5C~5C5C^0) 0CбHS@L H  LG Ia<.gn0,g<0!gЈ0)0܈0/00(00&g$Z P`5Po )N(v.AlK(T` PvWgLfv;6>@"R,A/ a&_(an10p=Qz;@`pM@Kkt0@>"~@!,dc("0XV0 O|qw<`Ж dH` @Q*l!\ gw0$K0@=Dfa@Ոf4Hn0Xr3)nz0z?g`2U:442z3 4(C[1.454a,Jv\Z:A$R~z,BLpgXqe İd,H j NH$a @L$eg UEb BU`J@g,HaЦL`^C*apJ.MRg gf0J!pH ,ܰ0)l~)Zq~qb8鉂؊epkpfaBbr >DG#SGT?`G-pnQ~t0paNp>pfhpH`"x$O!0 A [gSfG@FN@gN 9G ׀@JfrNfN.h@ Over wrt ` Inse ? a0v6pvQq$*pvRpj*9Cxzv^Trace>Do PCrts Ttraps SkipޖSourHexdump Disassm LisMwitch Tr68020 Tnosube Go xMark: Breakp InfDirecMQuizϒxk"J 2(hfRx~a_ p9@|@V21Agj0DLPS@Arc NrPHAa4JAgvx>aU "HR,iP]6-Z"Y`k| bV 1Vbg~B,cf2- g& f-|ͻg( fh0*wH Ib`wZP`>(H _IJPk @g(f`Ҡ0`Jcf&Vg PQ\z@\&`aܲFrg`wAeZZcwaeNzbH] Atn.t|RBn@f@AD`t&@ gnH]@@ag@QNrހg02PS"Jgpad0:Xh@Nu@|aޒPz`wJB8P(`J!J(0 apB@2< 10PV,RPkPj1ytR fpBlXE*(EhftZLFPDFNG?DGOppcxLJ@k":EE6rP|c6RFGaON`p/Rn08LIHBBB߄C&BK*m 4JBI4BJ^BD2"M0Kd0HIJKY@YAPBPCFL,S@SARBR;LTBTS~W@WA\B\C`r&BH\g  fRpAiп|`>g6cgtgrUf a|OJjR¡`L0Ri&BtPJf.NvX?fNur"w2}LMVEJjL642AABR@QD{S@H1\dPQNuhZR&Q7C@UO^TBXSW@]g `pE vdXHmvpp0bC{f@^g0ҠNu0D^FHILOFkTGkPī6(Ce$hxRJfDCd@CeRCCd"Ŭ.d2<>:4ݠ2IAJ68L|(( lJC,r4<vPJkDfJAf0Lc0' 0ߴr/A 0)J2CCCAAz6<P$''&/!,S.@A"H%0%08HPG||;@Xfz0V0$HEPpRR8GkJSBk zp1F4tP@Y?@ HSB@SC!%2I1N ;N>"H`1PP@H8L@SDk>R IB6ƠRI0 FARh1Ѐ0%I KWCr@8DD|D8|?00_LI+@0M0Kl~C 50k 6@ ILB;JTCX\B;@6f :,YdAr`LO^ELcѬw00@@@ @@@Q `COJz% P+RRS"KSNB,K@Fclose?9Fd@9Fwri6pAFtBpekCFattribEFdupFF;foGqrHMallocIM}rJ-MshrinkKPexecLvbNFsfirstOFsnextV=pnaLpWF\4pKq`Ngubp kc Frunfd FfeFofFflush{Up|LgGetmpbB`stat``a]Rwabs Sp$Tickcalb Mediach Drvmap KbshiftP=InitmousSsbrk PhysbapLog1rezԀsppԀpap6pԀcolor[xprd nwr _pfmt`dsb Midi` Mfpint`Io~ URs`f*Keytbl`Random[Pro?tobtngpScrdmpCurKJrAJrBioskeyp Ikbd`JdisuJGbGcessOffgibitOnBXbJqr%pDosound!Wrt"Kbd}v1#Kbr5q$Prk%Vsync&'r$'Puntawp)p5q*w/DMAr+s,0ta_i1r2ns3Ur5r6 ;rt_aud<op=`_songJr>p_t ? c۠fo@BldeP_E`SQ_EpVRPBaSQCVhT5QP[UpVPGrayWPmear_qwk_clsrupddi_esc_pline߰mark+p_gրt_fillapðest_heighat ϐQlps_gsl_type+Gwidp,&m.mm%t_foH&f۠w`ioïstyl2f%q_ atj_valuchoipgswr_J"_egql_sutwpqmfalignme̤nv+q_?d%ntourq*pKpw`"pixeJt_efofectpo,endsro_cpyfmr_trnj B"pJ4\b "HB" 00Zd0r@wj.p f0>1x  ߶R~r1~<>1^ |̢Z>n4^2$N8Ҁ02DPmܖ,K-%Y-NY#m+e7e+꛲9)ie:~JW,I>[(rGW IA?;kqk\8******************************************************************************* * Source zum Erzeugen der Symboltabelle BUGABOO.SYM, welche der Debugger beim * * Start automatisch nachldt. Die Bezeichnungen stammen vom Atari DB * ******************************************************************************* reset EQU $04 bus_err EQU $08 addr_err EQU $0C illegal EQU $10 div_zero EQU $14 CHK_com EQU $18 TRAPV_com EQU $1C privilege EQU $20 trace EQU $24 Line_A EQU $28 Line_F EQU $2C spurious EQU $60 auto_i_1 EQU $64 auto_i_2_hbl EQU $68 auto_i_3 EQU $6C auto_i_4_vbl EQU $70 auto_i_5 EQU $74 auto_i_6 EQU $78 auto_i_7 EQU $7C busy_int EQU $0100 dcd_int EQU $0104 cts_int EQU $0108 gpu_done EQU $010C timer200 EQU $0114 IKBD_MIDI EQU $0118 ring_ind EQU $0138 proc_lives EQU $0380 proc_regs EQU $0384 proc_pc EQU $03C4 proc_usp EQU $03C8 proc_stk EQU $03CC ; BIOS Variables etv_timer EQU $0400 ;vector for timer interrupt chain etv_critic EQU $0404 ;vector for critical error chain etv_term EQU $0408 ;vector for process terminate etv_xtra EQU $040C ;5 reserved vectors memvalid EQU $0420 ;indicates system state on RESET memcntrl EQU $0424 ;mem controller config nibble resvalid EQU $0426 ;validates 'resvector' resvector EQU $042A ;[RESET] bailout vector phystop EQU $042E ;physical top of RAM membot EQU $0432 ;bottom of available memory; memtop EQU $0436 ;top of available memory; memval2 EQU $043A ;validates 'memcntlr' and 'memconf' flock EQU $043E ;floppy disk/FIFO lock variable seekrate EQU $0440 ;default floppy seek rate timer_ms EQU $0442 ;system timer calibration (in ms) fverify EQU $0444 ;nonzero: verify on floppy write bootdev EQU $0446 ;default boot device palmode EQU $0448 ;nonzero ==> PAL mode defshiftmd EQU $044A ;default video rez (first byte) sshiftmd EQU $044C ;shadow for 'shiftmd' register v_bas_adr EQU $044E ;pointer to base of screen memory vblsem EQU $0452 ;semaphore to enforce mutex in vbl nvbls EQU $0454 ;number of deferred vectors vblqueue EQU $0456 ;pointer to vector of deferred vfuncs colorptr EQU $045A ;pointer to palette setup (or NULL) screenpt EQU $045E ;pointer to screen base setup (|NULL) vbclock EQU $0462 ;count of vblank interrupts frclock EQU $0466 ;count of unblocked vblanks (not blocked by vblsem) hdv_init EQU $046A ;hard disk initialization swv_vec EQU $046E ;video change-resolution bailout hdv_bpb EQU $0472 ;disk "get BPB" hdv_rw EQU $0476 ;disk read/write hdv_boot EQU $047A ;disk "get boot sector" hdv_mediach EQU $047E ;disk media change detect cmdload EQU $0482 ;nonzero: load COMMAND.COM from boot conterm EQU $0484 ;console/vt52 bitSwitches (%%0..%%2) trp14ret EQU $0486 ;saved return addr for _trap14 critiret EQU $048A ;saved return addr for _critic themd EQU $048E ;memory descriptor (MD) _md EQU $049E ;(more MD) savptr EQU $04A2 ;pointer to register save area nflops EQU $04A6 ;number of disks attached (0, 1+) con_state EQU $04A8 ;state of conout() parser save_row EQU $04AC ;saved row# for cursor X-Y addressing sav_context EQU $04AE ;pointer to saved processor context bufl_1 EQU $04B2 ;two buffer-list headers bufl_2 EQU $04B6 hz_200 EQU $04BA ;200hz raw system timer tick the_env EQU $04BE ;Pointer to System-Environment drvbits EQU $04C2 ;bit vector of "live" block devices dskbufp EQU $04C6 ;pointer to common disk buffer autopath EQU $04CA ;pointer to autoexec path (or NULL) vbl_list EQU $04CE ;initial _vblqueue (to $4ee) dumpflag EQU $04EE ;screen-dump flag (non-zero abort screen dump) prtabt EQU $04F0 ;printer abort flag sysbase EQU $04F2 ;-> base of OS shell_p EQU $04F6 ;-> global shell info end_os EQU $04FA ;-> end of OS memory usage exec_os EQU $04FE ;-> address of shell to exec on startup scr_dump EQU $0502 ;-> screen dump code prv_lsto EQU $0506 ;-> _lstostat() prv_lst EQU $050A ;-> _lstout() prv_auxo EQU $050E ;-> _auxostat() prv_aux EQU $0512 ;-> _auxout() pun_ptr EQU $0516 memval3 EQU $051A ;validates 'memcntlr' and 'memconf' _is_prt EQU $051E _is_aux EQU $0522 _is_con EQU $0526 _is_midi EQU $052A _is_ikbd EQU $052E _is_rawcon EQU $0532 _is_dev6 EQU $0536 _is_dev7 EQU $053A _i_prt EQU $053E _i_aux EQU $0542 _i_con EQU $0546 _i_midi EQU $054A _i_ikbd EQU $054E _i_rawcon EQU $0552 _i_dev6 EQU $0556 _i_dev7 EQU $055A _os_prt EQU $055E _os_aux EQU $0562 _os_con EQU $0566 _os_midi EQU $056A _os_ikbd EQU $056E _os_rawcon EQU $0572 _os_dev6 EQU $0576 _os_dev7 EQU $057A _o_prt EQU $057E _o_aux EQU $0582 _o_con EQU $0586 _o_midi EQU $058A _o_ikbd EQU $058E _o_rawcon EQU $0592 _o_dev6 EQU $0596 _o_dev7 EQU $059A _p_cookies EQU $05A0 cart_port EQU $FA0000 os_start_old EQU $FC0000 os_start_new EQU $E00000 memconf EQU $FFFF8001 ;memory configuration vbasehi EQU $FFFF8201 vbasemid EQU $FFFF8203 ;Video base address vcounthi EQU $FFFF8205 vcountmid EQU $FFFF8207 vcountlo EQU $FFFF8209 ;Video display counter syncmode EQU $FFFF820A ;video sync mode vbaselo EQU $FFFF820D ;Video base address (lo; STE only) linewid EQU $FFFF820F ;Width of a scan-line (Words, minus 1; STE only) palette EQU $FFFF8240 ;color registers 0..15 rezmode EQU $FFFF8260 ;Resolution mode (0=320x200,1=640x200,2=640x400) hscroll EQU $FFFF8265 ;Horizontal scroll count (0..15; STE only) color0 EQU $FFFF8240 color1 EQU $FFFF8242 color2 EQU $FFFF8244 color3 EQU $FFFF8246 color4 EQU $FFFF8248 color5 EQU $FFFF824A color6 EQU $FFFF824C color7 EQU $FFFF824E color8 EQU $FFFF8250 color9 EQU $FFFF8252 color10 EQU $FFFF8254 color11 EQU $FFFF8256 color12 EQU $FFFF8258 color13 EQU $FFFF825A color14 EQU $FFFF825C color15 EQU $FFFF825E diskctl EQU $FFFF8604 ;disk controller data access fifo EQU $FFFF8606 ;DMA mode control dmahi EQU $FFFF8609 dmamid EQU $FFFF860B dmalo EQU $FFFF860D ;DMA base address ; GI ("psg") sound chip: giselect EQU $FFFF8800 ;(W) sound chip register select giwrite EQU $FFFF8802 ;(W) sound chip write-data ; 68901 ("mfp") sticky chip: mfp EQU $FFFFFA00 ;mfp base gpip EQU mfp+1 ;general purpose I/O aer EQU mfp+3 ;active edge reg ddr EQU mfp+5 ;data direction reg iera EQU mfp+7 ;interrupt enable A & B ierb EQU mfp+9 ipra EQU mfp+$0B ;interrupt pending A & B iprb EQU mfp+$0D isra EQU mfp+$0F ;interrupt inService A & B isrb EQU mfp+$11 imra EQU mfp+$13 ;interrupt mask A & B imrb EQU mfp+$15 vr EQU mfp+$17 ;interrupt vector base tacr EQU mfp+$19 ;timer A control tbcr EQU mfp+$1B ;timer B control tcdcr EQU mfp+$1D ;timer C & D control tadr EQU mfp+$1F ;timer A data tbdr EQU mfp+$21 ;timer B data tcdr EQU mfp+$23 ;timer C data tddr EQU mfp+$25 ;timer D data scr EQU mfp+$27 ;sync char ucr EQU mfp+$29 ;USART control reg rsr EQU mfp+$2B ;receiver status tsr EQU mfp+$2D ;transmit status udr EQU mfp+$2F ;USART data ; 6850 registers: keyctl EQU $FFFFFC00 ;keyboard ACIA control keybd EQU $FFFFFC02 ;keyboard data midictl EQU $FFFFFC04 ;MIDI ACIA control midi EQU $FFFFFC06 ;MIDI data ; FPU registers: FP_stat EQU $FFFFFA40 FP_cmd EQU $FFFFFA4A FP_ccr EQU $FFFFFA4E FP_op EQU $FFFFFA50 ; Clock registers: s_units EQU $FFFFFC21 s_tens EQU $FFFFFC23 m_units EQU $FFFFFC25 m_tens EQU $FFFFFC27 h_units EQU $FFFFFC29 h_tens EQU $FFFFFC2B weekday EQU $FFFFFC2D day_units EQU $FFFFFC2F day_tens EQU $FFFFFC31 mon_units EQU $FFFFFC33 mon_tens EQU $FFFFFC35 yr_units EQU $FFFFFC37 yr_tens EQU $FFFFFC39 cl_mod EQU $FFFFFC3B cl_test EQU $FFFFFC3D cl_reset EQU $FFFFFC3F END YdUN\ڻ˭Y.8K֣YN ^?Jz~&+&BiⶶF\X+G{r7͡>[tD;R8$m.4.wTȗJ!\`P<QFt)G=%=h=n0`ƒ:k$m?&@&A B CD E F"GH&I$JKLM N$O P$QR0STUVW(XYZ[\]^$_`abcdefghijklmnopqrstuvwxyz{|}~$22,     bus_err addr_errdiv_zeroCHK_comTRAPV_com privilege$trace(Line_A,Line_F`spuriousdauto_i_1hauto_i_2_hbllauto_i_3pauto_i_4_vbltauto_i_5xauto_i_6|auto_i_7busy_intdcd_intcts_int gpu_donetimer200IKBD_MIDI8ring_indproc_livesproc_regsproc_pcproc_uspproc_stketv_timeretv_criticetv_term etv_xtra memvalid$memcntrl&resvalid*resvector.phystop2membot6memtop:memval2>flock@seekrateBtimer_msDfverifyFbootdevHpalmodeJdefshiftmdLsshiftmdNv_bas_adrRvblsemTnvblsVvblqueueZcolorptr^screenptbvbclockffrclockjhdv_initnswv_vecrhdv_bpbvhdv_rwzhdv_boot~hdv_mediachcmdloadcontermtrp14retcritiretthemd_mdsavptrnflopscon_statesave_rowsav_contextbufl_1bufl_2hz_200the_envdrvbitsdskbufpautopathvbl_listdumpflagprtabtsysbaseshell_pend_osexec_osscr_dumpprv_lsto prv_lstprv_auxoprv_auxpun_ptrmemval3_is_prt"_is_aux&_is_con*_is_midi._is_ikbd2_is_rawcon6_is_dev6:_is_dev7>_i_prtB_i_auxF_i_conJ_i_midiN_i_ikbdR_i_rawconV_i_dev6Z_i_dev7^_os_prtb_os_auxf_os_conj_os_midin_os_ikbdr_os_rawconv_os_dev6z_os_dev7~_o_prt_o_aux_o_con_o_midi_o_ikbd_o_rawcon_o_dev6_o_dev7_p_cookiescart_portos_start_old os_start_new memconfvbasehivbasemidvcounthivcountmid vcountlo syncmode vbaselolinewid@palette`rezmodeehscroll@color0Bcolor1Dcolor2Fcolor3Hcolor4Jcolor5Lcolor6Ncolor7Pcolor8Rcolor9Tcolor10Vcolor11Xcolor12Zcolor13\color14^color15diskctlfifo dmahi dmamid dmalogiselectgiwritemfpgpipaerddrieraierb ipra iprb israisrbimraimrbvrtacrtbcrtcdcrtadrtbdr!tcdr#tddr%scr'ucr)rsr+tsr-udr/keyctlkeybdmidictlmidi@FP_statJFP_cmdNFP_ccrPFP_op!s_units#s_tens%m_units'm_tens)h_units+h_tens-weekday/day_units1day_tens3mon_units5mon_tens7yr_units9yr_tens;cl_mod=cl_test?cl_reset_reset_illegalAT_hdd_basetrap_0trap_1trap_2trap_3trap_4trap_5trap_6trap_7trap_8trap_9trap_Atrap_Btrap_Ctrap_Dtrap_Etrap_FM** Source zum Erzeugen der Symboltabelle BUGABOO.SYM, welche der Debugger beim ** Start automatisch nachldt. Die Bezeichnungen stammen vom Atari DB *M*; BIOS Variables;vector for timer interrupt chain;vector for critical error chain;vector for process terminate;5 reserved vectors;indicates system state on RESET;mem controller config nibble;validates 'resvector';[RESET] bailout vector;physical top of RAM;bottom of available memory;;top of available memory;;validates 'memcntlr' and 'memconf';floppy disk/FIFO lock variable;default floppy seek rate;system timer calibration (in ms);nonzero: verify on floppy write;default boot device;nonzero ==> PAL mode;default video rez (first byte);shadow for 'shiftmd' register;pointer to base of screen memory;semaphore to enforce mutex in vbl;number of deferred vectors;pointer to vector of deferred vfuncs;pointer to palette setup (or NULL);pointer to screen base setup (|NULL);count of vblank interrupts;count of unblocked vblanks (not blocked by vblsem);hard disk initialization;video change-resolution bailout;disk "get BPB";disk read/write;disk "get boot sector";disk media change detect;nonzero: load COMMAND.COM from boot;console/vt52 bitSwitches (%%0..%%2);saved return addr for _trap14;saved return addr for _critic;memory descriptor (MD);(more MD);pointer to register save area;number of disks attached (0, 1+);state of conout() parser;saved row# for cursor X-Y addressing;pointer to saved processor context;two buffer-list headers;200hz raw system timer tick;Pointer to System-Environment;bit vector of "live" block devices;pointer to common disk buffer;pointer to autoexec path (or NULL);initial _vblqueue (to $4ee);screen-dump flag (non-zero abort screen dump);printer abort flag;-> base of OS;-> global shell info;-> end of OS memory usage;-> address of shell to exec on startup;-> screen dump code;-> _lstostat();-> _lstout();-> _auxostat();-> _auxout();validates 'memcntlr' and 'memconf';memory configuration;Video base address;Video display counter;video sync mode;Video base address (lo; STE only);Width of a scan-line (Words, minus 1; STE only);color registers 0..15;Resolution mode (0=320x200,1=640x200,2=640x400);Horizontal scroll count (0..15; STE only);disk controller data access;DMA mode control;DMA base address; GI ("psg") sound chip:;(W) sound chip register select;(W) sound chip write-data; 68901 ("mfp") sticky chip:;mfp base;general purpose I/O;active edge reg;data direction reg;interrupt enable A & B;interrupt pending A & B;interrupt inService A & B;interrupt mask A & B;interrupt vector base;timer A control;timer B control;timer C & D control;timer A data;timer B data;timer C data;timer D data;sync char;USART control reg;receiver status;transmit status;USART data; 6850 registers:;keyboard ACIA control;keyboard data;MIDI ACIA control;MIDI data; FPU registers:; Clock registers:(xS t3./( !z8@LOieWf:C6iʬ)$kbHu %_1O3>u)_NSǶ*cybZ5/の75dzzWUucw1 G4p$92xGĎҋG0J(U[rR(^ң8(yP<̹އ Ν,-7`6"~M50Qs؉#F$;E\1 CcFK6:HxZp>#͓֭KV8kx8vӘ.B3+1&ܗ#aPRv"vVT/ x>~~B 3nG =ߊԠoufSYMbus_err addr_errdiv_zeroCHK_comTRAPV_com privilege$trace(Line_A,Line_F`spuriousdauto_i_1hauto_i_2_hbllauto_i_3pauto_i_4_vbltauto_i_5xauto_i_6|auto_i_7busy_intdcd_intcts_int gpu_donetimer200IKBD_MIDI8ring_indproc_livesproc_regsproc_pcproc_uspproc_stketv_timeretv_criticetv_term etv_xtra memvalid$memcntrl&resvalid*resvector.phystop2membot6memtop:memval2>flock@seekrateBtimer_msDfverifyFbootdevHpalmodeJdefshiftmdLsshiftmdNv_bas_adrRvblsemTnvblsVvblqueueZcolorptr^screenptbvbclockffrclockjhdv_initnswv_vecrhdv_bpbvhdv_rwzhdv_boot~hdv_mediachcmdloadcontermtrp14retcritiretthemd_mdsavptrnflopscon_statesave_rowsav_contextbufl_1bufl_2hz_200the_envdrvbitsdskbufpautopathvbl_listdumpflagprtabtsysbaseshell_pend_osexec_osscr_dumpprv_lsto prv_lstprv_auxoprv_auxpun_ptrmemval3_is_prt"_is_aux&_is_con*_is_midi._is_ikbd2_is_rawcon6_is_dev6:_is_dev7>_i_prtB_i_auxF_i_conJ_i_midiN_i_ikbdR_i_rawconV_i_dev6Z_i_dev7^_os_prtb_os_auxf_os_conj_os_midin_os_ikbdr_os_rawconv_os_dev6z_os_dev7~_o_prt_o_aux_o_con_o_midi_o_ikbd_o_rawcon_o_dev6_o_dev7cart_portos_start_oldos_start_newmemconfvbasehivbasemidvcounthivcountmid vcountlo syncmode vbaselolinewid@palette`rezmodeehscroll@color0Bcolor1Dcolor2Fcolor3Hcolor4Jcolor5Lcolor6Ncolor7Pcolor8Rcolor9Tcolor10Vcolor11Xcolor12Zcolor13\color14^color15diskctlfifo dmahi dmamid dmalogiselectgiwritemfpgpipaerddriera ierb ipra iprbisraisrbimraimrbvrtacrtbcrtcdcrtadr!tbdr#tcdr%tddr'scr)ucr+rsr-tsr/udrkeyctlkeybdmidictlmidi@FP_statJFP_cmdNFP_ccrPFP_op!s_units#s_tens%m_units'm_tens)h_units+h_tens-weekday/day_units1day_tens3mon_units5mon_tens7yr_units9yr_tens;cl_mod=cl_test?cl_resetillegalreset . %_# Kcitx=wd~08aR7!^-}Y ~1t)ͱ'=Ct86N)੣P}ʼJ@_@RܔwQDT"|NXLi؅>B=gG?{y9;zl:0>n [F۫ L@t8W\ӖIX}ǏSTȚ*N/3?`mM*$^_qw9!Lw5_*GjPSaՠ Ǹ]PSa_= RT[5*\Ǹ]KK5_ g"R/[5*_8\5_*G8R[5"&&:4 @B&6 "@* ( hdv_rw; 1. odczyt z dysku/dyskietki:; a-jeeli bufor wolny to do bufora; b-jeeli brak miejsca w buforze:; -sprwawd czy s sektory ju zapisane (nie do zapisu); jeeli tak wybierz najdawniej uywane i zwolnij; goto 1a;; ustaw danie oraz parametry odczytu i czekaj na wykonanie; jeeli dysk nie pracuje (nie jest wykonywana adna operacja ); to zainicjuj wykonywanie operacji; skopiuj zawartosc bufora do miejsca przeznaczenia;; 2. zapis na dysk/dyskietk:; a-sprawd miejsce w buforze:; -jeeli brak to znajd ju zapisane sektory (nie do zapisu); wybierz najdawniej uywane i zwolnij; b-przekopiuj dane do bufora; c-ustaw parametry i danie zapisu;; 3. kontrola bpb:; tak jak przedtem.;?)H?t5v硫OxVu52!&Z3Zn$̝_Ӊ̓նۗy61_C*ji{Q>>>>&Ey5U1Us ,ie 8JVN&|돧81yXPM3Ҽcκθî7߼I%6K{w8ð^;O}wvHn`IB3wYs4V?+EXÓ,WeՅ%<b'PtLDF!Ah߅4gCG=ԟ'Z\(3F|aK:T*UUj oR@1}:z5*@eEg[a;]ŗKtͽe4lo?Lۘu'+%1zӥR6?^fotv&kзd HeU|tBn_R` ]wV`^ oOHxv//<JNAO Hx/<NMP @Y BUG1f XBRAfC/ A0Nu Hz?< NAUWNABgNAE Wo ist der Bugaboo?鋥-jPvW]{JgG׹`Ns3a7W1tb`My[ -`K,i'bgr:ATc1=3r³09d#=LS#.^>bߔ[K6*?o98Ӕ+,| %5 9B?Rq_o3ShJhTԡG8tYWߟgO~AGys$Qf<ΙT;/8j\p9×5{,,{{=}b.mE~Oil܂e>>?~'\PbC?D1zc7GM&>U O6rrd(IOy3ec5|7% 5t9)}z(&)ao&P{INt;4Z>f'o'|g.m-yyǢ<fXR횙:I:/~}>c^?o8?8o'ᄊ{rΧMzuz\g6Q\"AU$p31e Р=7R_3 ?9xy kpiG|?Sk?/Nw??c'/^N5cM أFf|c>AQ9\?YfʜQA FlqM ƣ?Yf^d%{M d^M ƣ5UegM d^c5M42&& $(   oOHx //<JNAO Hx/<NMP @Y BUG1f XBRAfC/ ANu Hz?< NAUWNABgNAE Wo ist der Bugaboo?start1no_debugger_exitmessageendev 7F** Programm um den residenten Bugaboo aufzurufen ** 1988/9 -soft, von Markus Fritze 17.02.91 *F*;kein Fast-Load (siehe 68000er 11/89);Basepageadr;Stackpointer hinter die Commandline;Lnge des Starters;Basepageadr des Starters;Mshrink();Busfehlervektor holen;Bugaboo vorhanden?;Ende, wenn nicht;Ende, wenn nicht;Rcksprungadresse;Debuggereinsprungadr auf den Stack;Mu stets 0 sein!;Beginn des freien Speichers;ab in den Debugger;Maus auschalten (nicht ganz sauber...);Fehlermeldung ausgeben;auf Taste wartenbcځ r(nRdwn^@qOrŜ.dj9^lD뎋~ス܇I?C\W7̙6=`_˭aSc_56p:`NXrf Y,%f[pmX̑ dx{;W:se}aERw_E'/7dRV|N865'gSǔ^WqBa{o|0֏,iiǥcTU˥cJ] tvjrZ{My]M.S_c_-c:Jj V:-+ LT3<{ت̭y7,Ó*4(Ж'ѯɔ,#&ix^LS\&7vWPPLg]|wܫ'!2flm-ƨQ,IpQ3YTU1H'ASL &PֆE+S) $p80D:3)! $C&ᎅ":D]h&Y5 1g Dtֈ J%Ö4TCFopDT1 .*]5}x1%:1 (РAY5(!QP Zp:q4tB\cjڃgUX`?(LE@008UMpР`Yn WIKӊ Q` aI54^t|=4^5,V |Il-V΋ ^yIf|ˡ V ~In V ~II|ˡ &BDDDHFFDFD0@H*0&$"" ""   $"$"$"$""   !""#"# $%(%&'"('$()*+,,-,-*.&//& 0 011  (" 4 644 7$7$$ =" $">"@ "" BCDE@F G$@D@@EBKKC M*NN""OPQ$RQ$R  N $9 &RU >TRV2TRW4R 68P <F$XYZ YZ""\X ^^__``\TRaBR 68P <H$bcd cd["["$e[efb ]gghh]iijj]kkfTRl[FD m m]F   nn nn&"nTRo5Npqqq"TRrAL$$uvwvw " v$  x" *Ty z}~    2 8 :4  TSL  03. ,o:| " |Ҏ.A/ //<JNAO ?</NA#?<NAT<AAr:a*|B(B(Ar.a(BGA a A a A a |lp`pAa Aa a< g<g<g<0k<:j`|_S<g<g< fSJl~ <jAp`Ap<gR<g<g< fR< kBG` ABaEg??<-NAXABaDg??<+NAXAr:aB(B(Ar.aA a A a A2a BgNAHM3BF?<Hz?<NNAPJfa5~RF?<ONATJfa5Q6JFnA8a a`9>A:a M3T;<SFAa Na MR9Q=xvaA<Aa Aa a< g<gHgPgafHM3SG.H ACC-Load: Exit: fYTime : YDate : fYfY Y System continues booting ...KHfEYKein Accessory vorhanden !YTaste ...fEYp ACC-LOADER: Y Selected qY Back: YChoose: & DYCancel: eKfY Change Filename: <A:\*.AC?haupt_prgdta_puffpathtimeGET_TIME$dateGET_DATE$start1text1cconwsdo01text2text3if01else01B" cursor_x)  cursor_yendif01*  +  text4text8do02crawcinloop01else02start2loop02if02endif02if03then03endif03if04endif04if05else05endif05if06endif06if07then07endif07if08endif08endif09endif10text5acc_namessearch_readycopy_namesearch_accshow_acctext6ende2text7,  # next_acc1# # do03sel_accchooseinstallcurs_upcurs_downloop03rep01# # # choose2new_namerep03endif11rep04endif13endif12endif14text10text9cconwscrawcinGET_TIME$get_time3get_time1get_time2two_nrget_time7nr_twoget_time4get_time5get_time6GET_DATE$get_date4get_date1get_date2get_date3get_date10get_date5get_date6get_date7get_date8get_date9GET_DATE/TIME-Unterprogrammetwo_nr2nr_two2Name aus DTA in Puffer copycopy_name2copy_name3 Zeige selektierte AccsX8 # next_acc2next_acc4next_acc3rep02{|' ; 7 " G7)  @  g+  @  g5 X8 G7 : ,  ; / D$ ! " '! X8 7 " 7 9 7 ]= Ā7 " 'w@G' ;Dieses Programm ist Public-Domain !;Das Programm 'CHRONO' ermglicht die Eingabe von Zeit, Datum und;zu ladender Accessories. Dazu wird 'CHRONO.PRG' in den AUTO-Ordner;kopiert. Beim Booten knnen nun die aktuelle Systemzeit und -datum;eingegeben werden. Dies ist bei ATARI-ST ohne eingebauter Uhr sehr;hilfreich. Auerdem kann in den Acc-Modus verzweigt werden. Es werden;vom aktuellen Laufwerk alle vorhandenen Accessory-Namen geladen, die;die Extension 'AC?' tragen. Nun kann ausgewhlt werden, welche Acc's;geladen werden und welche nicht. Im folgenden werden dann nur die;genderten Acc's bearbeitet. Zu ladende Acc's bekommen die Standard-;extension 'ACC' whrend die brigen die Extension 'ACX' tragen und;damit vom System nicht geladen werden knnen.;'CHRONO.PRG' ist nur 1970 Bytes lang (entspricht 2 Clustern).;F*;* CHRONO.PRG: Eingabe von Zeit, Datum und zu ladender Accessories *;* 1990 by Jrgen Luers" 09.06.1990 *;F*; bra haupt_prg ;(solange ausgetestet wird);Basepageadresse holen;Gre der Basepage + Stackgre (1k);+ Gre des TEXT-Segments;+ Gre des DATA-Segments;+ Gre des BSS-Segments;= Gesamtlnge des Programms;Lnge nun gerade;+ Programmstart (Basepageadresse);Stack endet dort;Programmlnge;Adresse der Basepage;Funktionsnummer + Dummyword (0);Mshrink(0,Basepageadr,Prglnge);Nur noch den Stack korrigieren;Initialisierung;Fkt-Nr. von 'Fgetdta';GEMDOS;Pufferadr. merken;Fkt-nr. von 'Dgetdrv';GEMDOS;Stack korrigieren;Laufwerksbuchstabe ermittelt;und in Suchpfad eintragen;Hauptprogramm;Adr. des Zeit-Textes;Trennzeichen fr Zeit-String;Zeit holen;Zeit in D5 merken;Sekunden auf Null;keine Sekunden;Adr. des Datum-Textes;Trennzeichen fr Datum-String;Datum holen;Datum in D4 merken;Zeiger auf 1. Zeichen;Adr. des Textes;Begrssungstext ausgeben;Adr. des Zeit-Textes;Zeit ausgeben;Adr. des Datum-Textes;Datum ausgeben;Zeiger auf Zeit ?;Sprung, falls nein !;zeigt auf erstes Zeichen von Zeit;dazu Offset des Zeichens;und als Cursor-x-Position;und Cursor-y-Position eintragen;zum Ende des IF01;zeigt vor erstes Zeichen von Datum;dazu Offset des Zeichens;und als Cursor-x-Position;und Cursor-y-Position eintragen;Adr. des Cursor-Positions-Textes;Cursor-Position setzen;Adr. des Textes;Cursor ein;auf Taste warten (in D0);Taste merken !;Taste ?;Sprung, falls ja !;Taste ?;Sprung, falls ja !;Taste 'Esc' ?;Sprung, falls ja !;Taste '0' oder darber ?;Sprung, falls nein !;Taste '9' oder darunter ?;Sprung, falls nein !;Sprung zum Ende von IF02;Unterstrich in D6;Zeiger auf vorheriges Zeichen;Zeiger auf ':' ?;Sprung, falls ja !;Zeiger auf ersten '.' ?;Sprung, falls ja !;Zeiger auf zweiten '.' ?;Sprung, falls nein !;Zeichen berspringen !;Zeiger noch gro genug ?;Sprung, falls ja !;sonst Zeiger auf letztes Datum-Zeichen;zeigt Zeiger auf Zeit ?;Sprung, falls nein !;Adr. des Zeit-Strings in A0;Zeichen in Zeit-String eintragen;Sprung zum Ende von IF05;Adr. des Datum-Strings in A0;Zeichen in Datum-String eintragen;Taste ?;Sprung, falls nein !;Zeiger auf nchstes Zeichen;Zeiger auf ':' ?;Sprung, falls ja !;Zeiger auf ersten '.' ?;Sprung, falls ja !;Zeiger auf zweiten '.' ?;Sprung, falls nein !;Zeichen berspringen !;Zeiger rechts von letztem Zeichen ?;Sprung, falls nein !;Zeiger auf erstes Zeichen !;Sprung zur Zeichenausgabe und weiter;Adr. des Zeit-Textes;Zeit-String auswerten;Zeit holen;mit alter Zeit vergleichen;Sprung, falls gleich;neue Zeit;Fkt-Nr. von 'Tsettime';GEMDOS;Stack korrigieren;Adr. des Datum-Textes;Datum-String auswerten;Datum holen;mit altem Datum vergleichen;Sprung, falls gleich;neues Datum;Fkt-Nr. von 'Tsetdate';GEMDOS;Stack korrigieren;Adr. des Zeit-Textes;Trennzeichen fr Zeit-String;Zeit holen;keine Sekunden;Adr. des Datum-Textes;Trennzeichen fr Datum-String;Datum holen;Adr. des Zeit-Textes;Zeit ausgeben;Adr. des Datum-Textes;Datum ausgeben;Adr. des Textes;Endemeldung ausgeben; illegal ;(solange ausgetestet wird);Pterm ausfhren => Programmende;ACC-Loader;Register sichern;Adr. des Acc-Namen-Puffers;Zhler fr Acc's;Normales File;Adr. des Suchpfades;Fkt-Nr. von 'Fsfirst';GEMDOS;Stack korrigieren;ACC gefunden ?;Sprung, falls nein !;Name in Puffer kopieren;max. Anzahl von Acc's minus 2;Acc-Zhler inkrementieren;Fkt-Nr. von 'Fsnext';GEMDOS;Stack korrigieren;ACC gefunden ?;Sprung, falls nein !;Name in Puffer kopieren;weiter nach ACC's suchen;Anzahl gelesener Acc's testen;Sprung, falls min. 1 Acc vorhanden;Adr. des Textes;Fehler-Text ausgeben;auf Taste warten ...;Sprung zum ACC-Load-Ende;Acc-Anzahl merken;Adr. des Textes;Begrssung ausgeben;Adr. der Acc-Namen;in ersten 2 Bytes steht Flag;x-Koordinate des Cursors;y_Koordinate des Cursors;Acc-Anzahl als Schleifenzhler;Adr. des Cursor-Textes;Cursor setzen;Adr. des Acc-Namens;Acc-Name ausgeben;Zeiger auf nchsten Namen;y-Koordinate auf nchste Zeile;Weiter, bis alle Acc's ausgegeben;sptere Cursor-x-Position in D4;sptere Cursor-y-Position in D3;Selektierte Acc's zeigen;Selektierte Acc-Anzahl merken;Cursor-x-Position;Cursor-y-Position;Adr. des Cursor-Textes;Cursor setzen;Adr. des Textes;Cursor ein;auf Taste warten (in D0);Taste 'Return' ?;Sprung, falls ja !;Taste 'Esc' ?;Sprung, falls ja !;Cursor nach oben ?;Sprung, falls ja !;Cursor nach unten ?;Sprung, falls ja !;Taste 'Undo' ?;Sprung, falls nein !;Register sichern;Adr. der Acc-Namen/Flags;Acc-Anzahl als Schleifenzhler;2. Flag-Byte;1. Byte identisch;Flag eintragen;Zeiger auf nchstes Flag;Weiter, bis alle Flags rckgesetzt;Register restaurieren;Sprung;Cursor eins hher;Cursor oben angekommen ?;Sprung, falls nein !;plus Acc-Anzahl;Sprung;Cursor eins tiefer;Acc-Anzahl in D0;plus Cursor-Offset;Cursor unten angekommen ?;Sprung, falls nein !;minus Acc-Anzahl;Sprung;Rechenregister lschen;Cursor-Position kopieren;Acc-Nummer bestimmt;Tabellen-Offset bestimmt;Adr. der Acc-Namen/Flag's;Flag gesetzt ?;Sprung, falls ja !;max. Acc-Anzahl erreicht ?;Sprung, falls ja !;Flag negieren;Sprung;Adr. der Acc-Namen/Flags;Adr. des neuen Acc-Namens;Acc-Anzahl als Schleifenzhler;Flag auslesen, Zeiger auf akt. Acc-Name;Zeiger auf akt. Acc-Name;Acc bleibt unangewhlt ?;Sprung, falls ja !;Acc bleibt angewhlt ?;Sprung, falls ja !;Kopie der Adr. des neuen Namens;Namen-Lnge als Schleifenzhler;Buchstabe holen;Buchstabe kopieren;Namen-Ende erreicht ?;weiter, bis Name kopiert;Acc wird deaktiviert ?;Sprung, falls ja !;'X' hinten in Extension eintragen;Sprung;'C' hinten in Extension eintragen;Adr. des Hinweistextes;Hinweistext ausgeben;Adr. fr Restzeile lschen;Restzeile lschen;Adr. des neuen Namens;Adr. des alten Acc-Namens;Zero (will Fkt. so haben);Fkt-Nr. von 'Frename';GEMDOS;Stack korrigieren;Zeiger auf nchsten Acc-Namen;weiter, bis alle Acc's bearbeitet;Register restaurieren;zum Chrono-Programmteil zurck;L=;Unterprogramme (bergabe ber D0/A0);L=;gibt mit 0 terminierten Text (Adr. in A0) auf Bildschirm aus;Register sichern;Adr. des Textes;Fktnr. von Cconws;GEMDOS;Stack korrigieren;Register restaurieren;liest ein Zeichen von Tastatur (Rckgabe in D0);Register sichern;Fktnr. von Cconws;GEMDOS;Stack korrigieren;Register restaurieren;allgemeine Zeitroutine (Register bleiben erhalten);falls D1.B < 128 ==> Zeit wird geholt und in String (Adr. A0.L, Lnge 9 Bytes); eingetragen -> 'hh_mm_ss',0; in D0.L wird Zeit im GEMDOS-Format zurckgegeben; der Inhalt von D1.B wird als Trennzeichen verwendet; (im Allgemeinen: ':');falls D1.B >127 ==> Zeit wird in D0.L im GEMDOS-Format erwartet und wird wie; oben in String eingetragen; D0.L bleibt erhalten; der Inhalt von D1.B-128 wird als Trennzeichen verwendet;falls D1.B = 0 ==> Zeit wird aus String (wie oben) gelesen und im; GEMDOS-Format in D0.L abgelegt;Register sichern;Fkt-Flag = 0 ?;Sprung, falls ja !;Fkt-Flag >= 128 ?;Sprung, falls ja !;Fktnr. von Tgettime;GEMDOS;Stack korrigieren;D1 restaurieren;A0 restaurieren;Sprung !;D1 korrigieren;D0 nun Langwort;Kopie von Zeit;Verschiebezahl in D2;Stunden ermittelt;Stunden in String eintragen;Trennzeichen in String eintragen;Kopie der Zeit;Minuten isolieren;Minuten ermittelt;Minuten in String eintragen;Trennzeichen in String eintragen;Kopie der Zeit;Sekunden isolieren;Sekunden ermittelt;Sekunden in String eintragen;Nullterminierung;Kopie der Zeit;Sprung zum Ende der Routine;D1 lschen;Zeit-Stunde holen;Zeit-Stunde ok ?;Sprung, falls ja !;Zeit-Stunde auf 23;und in D1 eintragen;Trennzeichen berspringen;Zeit-Minuten holen;Zeit-Minuten ok ?;Sprung, falls ja !;Zeit-Minuten auf 59;Platz schaffen fr Minuten;in Zeit eintragen;Trennzeichen berspringen;Zeit-Sekunden holen;Zeit-Sekunden ok ?;Sprung, falls ja !;Zeit-Sekunden auf 59;durch 2 teilen;Platz schaffen fr Sekunden;und in Zeit eintragen;Register restaurieren;allgemeine Datumroutine (Register bleiben erhalten),(Jahr-1900);falls D1.B < 128 ==> Date wird geholt und in String (Adr. A0.L, Lnge 9 Bytes); eingetragen -> 'dd_mm_jj',0; in D0.L wird Datum im GEMDOS-Format zurckgegeben; der Inhalt von D1.B wird als Trennzeichen verwendet; (im Allgemeinen: '.');falls D1.B >127 ==> Date wird in D0.L im GEMDOS-Format erwartet und wird wie; oben in String eingetragen; D0.L bleibt erhalten; der Inhalt von D1.B-128 wird als Trennzeichen verwendet;falls D1.B = 0 ==> Datum wird aus String (wie oben) gelesen und im; GEMDOS-Format in D0.L abgelegt.;Register sichern;Fkt-Flag = 0 ?;Sprung, falls ja !;Fkt-Flag > 128 ?;Sprung, falls ja !;Fktnr. von Tgetdate;GEMDOS;Stack korrigieren;D1 restaurieren;A0 restaurieren;Sprung !;D1 korrigieren;D0 nun Langwort;Kopie von Datum;Tag ermittelt;Tag in String eintragen;Trennzeichen in String eintragen;Kopie des Datums;Monat isolieren;Monat ermittelt;Monat in String eintragen;Kopie des Datums;Trennzeichen in String eintragen;Verschiebezahl in D2;modifizierte Jahreszahl ermittelt;Jahreszahl fast fertig;nchstes Jahrtausend ?;Sprung, falls nein;sonst korrigieren;Jahr in String eintragen;Nullterminierung;Kopie des Datums;Sprung zum Ende der Routine;D1 lschen;Datum-Tag holen;Datum-Tag gleich Null ?;Sprung, falls nein !;Datum-Tag auf Eins;Datum-Tag zu gro ?;Sprung, falls nein !;Datum-Tag auf 31;und in D1 eintragen;Trennzeichen berspringen;Datum-Monat holen;Datum-Monat gleich Null ?;Sprung, falls nein !;Datum-Monat auf Eins;Datum-Monat zu gro ?;Sprung, falls nein !;Datum-Monat auf 12;und an richtige Stelle;im Datum eintragen;Trennzeichen berspringen;Datum-Jahr holen;Jahr korrigieren;noch 1900 ?;Sprung, falls ja!;Jahr fast fertig;Verschiebezahl in D2;Jahr korrigieren;und im Datum eintragen;Register restaurieren;wandelt 2-stellige Zahl (in D0.B) in Textstring um (verndert D0 !);Textadr. in A0.L (A0 zeigt danach hinter Text!), Textlnge 2 Bytes;D0 nun 0...127;Wert >=100;Sprung, falls nein;erste Ziffer nicht darstellen;Zehnerpotenz berechnen;Ziffer in ASCII wandeln;Ziffer in String eintragen;Divisionsrest in Low-Byte;Ziffer in ASCII wandeln;Ziffer in String eintragen;wandelt 2-stelligen String (Adr. in A0.L, Lnge 2) in Zahl (D0.L) um;(A0 zeigt danach hinter Text!);Register sichern;D0 lschen;D1 lschen;erste Ziffer;in Zahl wandeln;Sprung, falls Fehler;Ziffer > 9 ?;Sprung, falls Fehler;und Ziffer schon mal speichern;zweite Ziffer;in Zahl umwandeln;Sprung, falls Fehler;Ziffer > 9 ?;Sprung, falls Fehler;erste Ziffer um 1 Stelle nach links;zweite Ziffer hinten dran hngen;Register restaurieren;trgt Filename aus DTA in Puffer (Adr. A6.L) ein (verndert D4,D5,A4,A5,A6);Adr. des DTA-Puffers;plus Offset des Filenamens;Flag-Adr. merken;Flag lschen;max. Namenlnge-1;'C' gefunden ?;Sprung, falls nein !;'.ACC'-Extension ?;Sprung, falls nein;Flag setzen;Buchstabe kopieren;nchsten Buchstaben, bis fertig;zeigt selektierte Acc's an und gibt in D0.W Anzahl selektierter Acc's aus;D7 <=> Anzahl der Acc's;Register sichern;Acc-Zhler auf Null;Adr. der Acc-Namen;x-Koordinate des Cursors;y_Koordinate des Cursors;Adr. des Cursor-Textes;Cursor setzen;Basis des Acc-Flags/Namens;2 Flag-Bytes berspringen;Extension '.ACC' ?;Sprung, falls nein !;weiteres Acc erlaubt ?;Sprung, falls ja !;Flag lschen;Sprung zum nchsten Acc;Acc zhlen;Acc-Name ausgeben;Adr. fr Restzeile lschen;Zeile ab Cursor lschen;y-Koordinate auf nchste Zeile;Zeiger auf nchsten Namen;Weiter, bis alle Acc's ausgegeben;max. Anzahl ausgewhlter Acc's;unbenutzte Acc-Anzahl bestimmt;Adr. fr Restzeile lschen;Zeile ab Cursor lschen;y-Koordinate auf nchste Zeile;Adr. des Cursor-Textes;Cursor auf nchste Zeile;weiter, bis unbenutzte Stellen gelscht;Register restaurieren;Clear screen;Cursor-Position;Reverse ein;Cursor-Position;Hide Cursor;Cursor-Position;9 Byte fr Zeitstring;Cursor-Position;9 Byte fr Datumstring;Hide Cursor;Cursor-Position ...;y-Koordinate des Cursors;x-Koordinate des Cursors;Nullterminierung;Hide Cursor;Cursor-Position;Cursor-Position;Zeile ab Cursor lschen;Home Cursor, Nullterminierung;Hide Cursor;Bildschirm lschen;Cursor-Position;Cursor-Position;Hide Cursor;Bildschirm lschen;Cursor-Position;Reverse ein;Cursor-Position;Reverse aus;Cursor-Position;Cursor-Position;Cursor-Position;Null-Terminator;Cursor ein;Zeile ab Cursor lschen;Hide Cursor;Cursor-Position;Puffer fr neuen Acc-Namen;zur Sicherheit;Pfadname;Adresse des DTA-Puffers;Puffer fr alle Accessory-Namen und -Flag's;Leereintrag zur Vereinfachung&ly8&2SȄEErCf=*ٮdLfٟ`!^u]Ά̠pc5-[ݝJN>` ;1%+tXi(l=gɮߛ_}(%,'e*v;swqduV)FKD ++Vo ΄mMJCVhymɈt™2)-lh5-Q} BILDER\MODEL.PICa {Ʊwxx![󕍹-. Ӧ, %KhRirZhkdX,߂FkV&V%"d)r—Oj2P:]S$Jxs|mmͶ8H!²jF V:ߵ`Ӧ.Mz /O9MZ_|?@S_Ƃ|Y H,h9|_9}O,@O/9fD//9}MO/R R@@,@@@@@@@@@@@4N:H$""("    "$    ,  R*$&*D"TR"&LB4<26 "$$  $$$""&( " 4  $!(T B?< NA/@ ;Abschlu-Cookie suchen;Lnge der bisherigen Liste merken;8 Eintrge dazu;Anzahl merken (fr Ptermres);Zeiger auf das evtl. Cookie Jar;'DEMO' ins Cookie Jar eintragen;Rckgabeflag merken;Supervisormode wieder aus (siehe oben);Rckgabewert von insert_cookie();resident bleiben =>;Pterm0();Programm mu resident bleiben;mal 8 (da ein Cookie = 8 Bytes);zustzlicher Platz fr die Cookies;Ptermres();Supervisormode wieder aus;Pterm0();String ausgeben;auf eine Taste warten;Cookie D0.l suchen (N=1, nicht gefunden);Cookie mit dem Namen D0.l suchen.;Parameter:  D0.l : Name des Cookies;  D0.l : Wert des gefundenen Cookies; N=1 : Cookie nicht gefunden (D0.l = Lnge des bisherigen Jars);gesuchten Namen merken;Zeiger auf das Cookie Jar holen;ist leer => nix gefunden;Namen eines Cookies holen;und den Wert holen;Eintrag gefunden?;Ja! =>;Ende der Liste?;Nein! => weiter vergleichen;N-Flag=1, d.h. nix gefunden;Cookie D0.l ins Cookie Jar;eigenen Cookie in das Cookie jar;Parameter:  D0.l : Name des Cookies;  D1.l : Wert des Cookies;  D2.l : Lnge eines eventuell einzurichtenden Cookie Jars (Langworte);  A0.l : Adresse eines eventuell einzurichtenden Cookie Jars;  D0.w : 0 - alles ok, Cookie wurde eingetragen; 1 - wie (1), aber nun resetfest, d.h. resident bleiben; 2 - wie (2), aber nicht resetfest eingeklinkt; <0 - Fehler aufgetreten, Cookie nicht eingetragen;Lnge einer evtl. Liste merken;Zeiger auf das Cookie Jar holen;ist leer => Liste einrichten;Anzahl der Slots;Slotanzahl erhhen;Namen und Wert eines Cookies holen;leeren Cookie gefunden?;Nein => weiter suchen;alle Slots belegt?;Ja! => neue Liste anlegen;neuen Cookie & Listenende einfgen;alles ok!;und raus;weniger als 2 Eintrge?;das ein Fehler! (Liste zu klein!);alten Reset-Vektor merken;und eigenen einsetzen;Cookie Jar initialisieren;Markierung: Ende der Cookie-List;Anzahl der Slots nach D3;Namen und Wert des Cookies einsetzen;Liste resetfest eingerichtet, alles ok;und raus;Fehler, Cookie nicht eingetragen;und raus;reset-feste Routine zum Entfernen des Cookie Jars;altes Reset-Valid;XBRA-Protokoll;-soft-Kennung, Cookie-List;alter Reset-Vektor;Cookie Jar entfernen;Reset-Vektor zurck;weiter mit dem RESET;reicht der Platz?;Nein => Fehler und raus;Anfang der Liste erneut holen;neuen Cookie Jar eintragen;Ende nicht kopieren (-1 fr DBRA);Eintrge der Liste kopieren;Anzahl der Slots;eigenes Element eintragen + Listenende;alles ok, resident bleibenpL2%7Xp qK_^˚[z!45{-߫c&>ZU?P6<Ǩ/ evtl. Tagedifferenz zwischen 2 Tagen?!?) ** A0 zeigt auf den Wochentag (als ASCII-String) ** Neue Version, (eventuell) ohne Fehler ab dem 1.Mrz ** 1988/9 by -soft, written by Markus Fritze *F*;Gettime();nur das Datum interessiert;Der Tag;Der Monat;Das Jahr (Long fr DIVU s.u.);Monat= Mrz, April, ... =>;Monat+12;Jahr-1;damit es auf Wortbreite bleibt;Jahroffset merken;mal 365;Schaltjahreskorrektur dazu addieren;und 1980*365.25 wieder dazu;- Jahr/100;+ Jahr/400;Den Tag merken;+ (Tag-1)*31;- Monat*0.4+2.3;jetzt das Komma bercksichtigen;+ Tag;+ Magic;mod 7;Wochentag aus der Tabelle suchen;Wochentag berlesen)x <*Y{X4ZPdi D:1p+r^|rl:UGST-CFG:HP Deskjet  !   =XUC4VFV8)Ĥƛ:"?1NP WM אY6Pe]43G&ԃ4*Y%%d]4SK˧ mSn&eV5qn(Aڡft%11Nz )BdY .t\Y l՜z1<7 YV[E"OM'oD7`O:'-mHwSH6X7_⅓sJO"LYUTB+j;+0" *Jq' i'm׏I?Ըx:\o՞fk} JD2;+6!cHݝWIfbb52pDA`>3!~'Ɓć P^J{54r _jdreW'-M fd_Aupb^^">ڋ5d^ho}AO#^W,EsukգZciXkH)J4k G?/U6%c~A(Nq:~l.DmuM8.hyKٳ3#NjB{8DKqQT܌vD)H0v-v*"GF?yxFq4Aeݻ_swo; a$|Ĩ`cO@f#K4Mw$R :ѹʱFFE pRmʩ*< o!ηW<3wo7osSt_ yA]==/* tablica zawierajca driver dysku */ #define dlugosc_drivera 3233 unsigned char driver[] = { 96, 26, 0, 0, 11, 50, 0, 0, 1, 56, 0, 0, 6, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 96, 0, 1, 224, 96, 0, 1, 180, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 13, 10, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 13, 10, 42, 42, 42, 42, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 42, 42, 42, 13, 10, 42, 42, 42, 42, 32, 65, 85, 84, 79, 32, 73, 68, 69, 32, 65, 84, 45, 66, 117, 115, 32, 104, 97, 114, 100, 32, 100, 105, 115, 107, 32, 32, 32, 32, 32, 32, 42, 42, 42, 42, 13, 10, 42, 42, 42, 42, 32, 32, 32, 32, 32, 98, 111, 111, 116, 101, 114, 32, 32, 118, 50, 46, 48, 46, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 42, 42, 42, 13, 10, 42, 42, 42, 42, 32, 65, 117, 116, 111, 114, 58, 32, 77, 105, 114, 111, 115, 212, 97, 119, 32, 77, 105, 101, 115, 122, 99, 122, 97, 107, 46, 32, 32, 32, 32, 32, 42, 42, 42, 42, 13, 10, 42, 42, 42, 42, 32, 71, 108, 105, 119, 105, 99, 101, 32, 49, 57, 57, 51, 46, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 42, 42, 42, 13, 10, 42, 42, 42, 42, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 42, 42, 42, 13, 10, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 13, 10, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 13, 10, 0, 0, 47, 8, 63, 60, 0, 9, 78, 65, 92, 143, 78, 117, 80, 249, 0, 0, 12, 112, 65, 250, 0, 4, 35, 200, 0, 0, 12, 114, 35, 207, 0, 0, 12, 108, 32, 70, 209, 199, 145, 252, 0, 0, 1, 0, 46, 72, 77, 250, 10, 76, 96, 66, 81, 249, 0, 0, 12, 112, 42, 111, 0, 4, 32, 45, 0, 12, 208, 173, 0, 20, 208, 173, 0, 28, 208, 188, 0, 0, 1, 0, 47, 0, 47, 13, 63, 60, 0, 0, 63, 60, 0, 74, 78, 65, 79, 239, 0, 12, 66, 167, 63, 60, 0, 32, 78, 65, 92, 79, 35, 192, 0, 0, 12, 108, 77, 250, 10, 39, 65, 250, 253, 226, 97, 132, 32, 78, 97, 128, 51, 252, 0, 1, 0, 0, 14, 154, 51, 252, 255, 3, 0, 0, 14, 156, 51, 248, 4, 194, 0, 0, 12, 106, 36, 120, 0, 8, 65, 250, 0, 62, 35, 200, 0, 0, 0, 8, 34, 79, 71, 249, 0, 247, 0, 0, 112, 0, 97, 0, 1, 120, 35, 202, 0, 0, 0, 8, 62, 0, 102, 6, 112, 0, 97, 0, 1, 138, 112, 1, 97, 0, 1, 98, 74, 64, 103, 6, 74, 71, 102, 18, 96, 96, 112, 1, 97, 0, 1, 116, 96, 88, 46, 73, 35, 202, 0, 0, 0, 8, 48, 60, 0, 160, 97, 0, 3, 2, 48, 60, 0, 176, 97, 0, 2, 250, 49, 250, 9, 198, 4, 194, 49, 252, 0, 0, 4, 70, 63, 60, 0, 0, 63, 60, 0, 14, 78, 65, 88, 143, 78, 113, 112, 255, 74, 57, 0, 0, 12, 112, 103, 6, 46, 122, 9, 164, 78, 117, 47, 58, 9, 158, 63, 60, 0, 32, 78, 65, 92, 79, 63, 60, 255, 255, 63, 60, 0, 76, 78, 65, 35, 250, 11, 218, 0, 0, 14, 164, 19, 252, 0, 1, 0, 0, 14, 158, 97, 0, 3, 178, 65, 250, 5, 10, 33, 200, 1, 12, 33, 252, 0, 0, 7, 124, 4, 122, 35, 248, 4, 114, 0, 0, 12, 118, 35, 248, 4, 118, 0, 0, 12, 122, 35, 248, 4, 126, 0, 0, 12, 126, 33, 252, 0, 0, 8, 4, 4, 114, 33, 252, 0, 0, 8, 18, 4, 118, 33, 252, 0, 0, 8, 32, 4, 126, 63, 60, 0, 255, 63, 60, 0, 6, 78, 65, 88, 143, 74, 64, 103, 44, 2, 64, 0, 223, 65, 250, 11, 110, 144, 124, 0, 65, 50, 58, 11, 70, 85, 65, 176, 16, 103, 8, 65, 232, 0, 30, 81, 201, 255, 246, 49, 192, 4, 70, 63, 0, 63, 60, 0, 14, 78, 65, 92, 143, 65, 250, 11, 40, 48, 58, 11, 34, 192, 252, 0, 48, 65, 240, 8, 0, 67, 250, 252, 124, 46, 8, 33, 199, 4, 50, 158, 137, 74, 121, 0, 0, 12, 112, 103, 36, 65, 250, 252, 76, 222, 188, 0, 0, 0, 28, 47, 7, 47, 8, 63, 60, 0, 0, 63, 60, 0, 74, 78, 65, 79, 239, 0, 12, 46, 122, 8, 184, 112, 0, 78, 117, 222, 188, 0, 0, 1, 0, 47, 58, 8, 170, 63, 60, 0, 32, 78, 65, 92, 79, 63, 60, 0, 0, 47, 7, 63, 60, 0, 49, 78, 65, 233, 72, 0, 64, 0, 160, 23, 64, 0, 25, 16, 43, 0, 29, 8, 0, 0, 6, 103, 10, 12, 0, 0, 254, 103, 4, 112, 0, 96, 2, 112, 255, 78, 117, 72, 231, 1, 4, 8, 0, 0, 0, 102, 6, 75, 250, 8, 124, 96, 4, 75, 250, 8, 130, 233, 72, 0, 64, 0, 160, 62, 0, 97, 38, 48, 7, 97, 84, 97, 0, 0, 146, 48, 7, 97, 26, 48, 7, 97, 0, 0, 192, 114, 0, 48, 7, 97, 0, 1, 156, 48, 7, 97, 0, 1, 74, 76, 223, 32, 128, 78, 117, 23, 64, 0, 25, 112, 32, 23, 124, 0, 4, 0, 57, 78, 113, 81, 200, 255, 252, 23, 124, 0, 0, 0, 57, 97, 4, 97, 12, 78, 117, 8, 43, 0, 7, 0, 29, 102, 248, 78, 117, 8, 43, 0, 6, 0, 29, 103, 248, 78, 117, 97, 244, 23, 64, 0, 25, 23, 124, 0, 236, 0, 29, 65, 250, 8, 28, 97, 0, 6, 112, 65, 250, 6, 172, 97, 0, 253, 36, 65, 250, 8, 58, 97, 0, 253, 28, 65, 250, 7, 206, 97, 0, 253, 20, 59, 122, 7, 254, 0, 2, 59, 122, 7, 252, 0, 6, 59, 122, 7, 252, 0, 10, 78, 117, 97, 180, 65, 250, 6, 145, 97, 0, 252, 246, 23, 71, 0, 25, 23, 124, 0, 144, 0, 29, 97, 150, 112, 0, 16, 43, 0, 5, 65, 250, 6, 163, 83, 64, 192, 252, 0, 37, 65, 240, 8, 0, 97, 0, 252, 210, 65, 250, 7, 132, 97, 0, 252, 202, 78, 117, 97, 0, 255, 124, 34, 45, 0, 8, 23, 65, 0, 9, 23, 124, 0, 1, 0, 13, 23, 124, 0, 0, 0, 17, 23, 124, 0, 0, 0, 21, 34, 45, 0, 4, 2, 65, 0, 15, 130, 64, 83, 65, 23, 65, 0, 25, 23, 124, 0, 145, 0, 29, 97, 0, 255, 62, 97, 2, 78, 117, 97, 0, 255, 64, 23, 124, 0, 255, 0, 5, 23, 124, 0, 1, 0, 9, 23, 124, 0, 1, 0, 13, 23, 124, 0, 0, 0, 21, 23, 124, 0, 0, 0, 17, 23, 64, 0, 25, 23, 124, 0, 16, 0, 29, 97, 0, 255, 10, 78, 117, 72, 231, 1, 4, 46, 0, 97, 0, 254, 224, 8, 7, 0, 4, 103, 6, 75, 250, 7, 38, 96, 4, 75, 250, 7, 20, 48, 7, 97, 0, 255, 116, 48, 7, 97, 6, 76, 223, 32, 128, 78, 117, 97, 0, 254, 228, 23, 64, 0, 25, 23, 124, 0, 40, 0, 9, 23, 124, 0, 227, 0, 29, 97, 0, 254, 198, 78, 117, 23, 64, 0, 25, 8, 43, 0, 6, 0, 29, 103, 36, 12, 43, 0, 255, 0, 29, 103, 28, 12, 43, 0, 254, 0, 29, 103, 20, 74, 43, 0, 29, 103, 14, 97, 0, 254, 168, 23, 124, 0, 224, 0, 29, 97, 0, 254, 148, 78, 117, 72, 231, 29, 4, 62, 0, 48, 7, 116, 1, 97, 0, 3, 178, 112, 1, 65, 250, 6, 188, 97, 0, 4, 208, 74, 64, 102, 0, 0, 140, 122, 0, 52, 58, 8, 172, 196, 252, 0, 30, 75, 250, 8, 166, 75, 245, 40, 0, 65, 250, 8, 98, 48, 5, 208, 64, 208, 69, 229, 72, 65, 240, 0, 0, 32, 16, 2, 128, 0, 255, 255, 255, 176, 188, 0, 71, 69, 77, 102, 78, 16, 16, 8, 0, 0, 0, 103, 70, 8, 0, 0, 1, 103, 64, 8, 0, 0, 7, 103, 14, 186, 124, 0, 3, 102, 52, 48, 7, 34, 40, 0, 4, 96, 148, 27, 64, 0, 1, 8, 7, 0, 4, 103, 8, 8, 237, 0, 4, 0, 1, 96, 6, 8, 173, 0, 4, 0, 1, 88, 136, 88, 141, 42, 216, 42, 144, 81, 141, 97, 24, 26, 128, 27, 124, 0, 1, 0, 2, 82, 69, 186, 124, 0, 4, 102, 0, 255, 122, 76, 223, 32, 184, 78, 117, 32, 56, 4, 194, 228, 136, 116, 28, 114, 1, 82, 65, 83, 66, 103, 24, 226, 136, 101, 246, 32, 56, 4, 194, 3, 192, 33, 192, 4, 194, 82, 121, 0, 0, 14, 154, 48, 1, 78, 117, 112, 255, 78, 117, 77, 250, 8, 18, 62, 58, 7, 238, 85, 71, 32, 78, 97, 50, 65, 238, 0, 12, 48, 16, 224, 72, 226, 72, 29, 64, 0, 2, 8, 46, 0, 2, 0, 1, 103, 18, 112, 0, 16, 22, 49, 192, 4, 70, 63, 0, 63, 60, 0, 14, 78, 65, 88, 143, 77, 238, 0, 30, 81, 207, 255, 206, 78, 117, 47, 14, 16, 40, 0, 1, 2, 64, 0, 16, 0, 64, 0, 160, 116, 1, 34, 40, 0, 4, 44, 72, 97, 0, 2, 140, 112, 1, 65, 250, 5, 150, 97, 0, 3, 170, 67, 238, 0, 12, 97, 4, 44, 95, 78, 117, 69, 250, 5, 132, 65, 234, 0, 11, 97, 84, 50, 192, 114, 0, 18, 42, 0, 13, 50, 193, 194, 192, 50, 193, 50, 0, 65, 234, 0, 17, 97, 62, 235, 72, 72, 192, 128, 193, 50, 192, 65, 234, 0, 22, 97, 48, 50, 192, 50, 0, 65, 234, 0, 14, 97, 38, 210, 64, 50, 193, 210, 105, 255, 252, 210, 105, 255, 250, 50, 193, 65, 234, 0, 19, 97, 18, 144, 65, 114, 0, 50, 41, 255, 244, 128, 193, 50, 192, 50, 188, 0, 1, 78, 117, 16, 40, 0, 1, 225, 72, 16, 16, 78, 117, 32, 120, 4, 106, 78, 144, 97, 2, 78, 117, 72, 231, 1, 2, 80, 248, 4, 62, 112, 4, 97, 78, 77, 248, 134, 6, 60, 188, 1, 144, 60, 188, 0, 144, 60, 188, 1, 144, 60, 188, 0, 128, 62, 60, 0, 208, 97, 20, 62, 60, 0, 15, 81, 207, 255, 254, 97, 18, 81, 248, 4, 62, 76, 223, 64, 128, 78, 117, 97, 12, 49, 199, 134, 4, 96, 6, 97, 4, 62, 56, 134, 4, 64, 231, 63, 7, 62, 60, 0, 32, 81, 207, 255, 254, 62, 31, 70, 223, 78, 117, 64, 231, 0, 124, 7, 0, 17, 252, 0, 14, 136, 0, 18, 56, 136, 0, 20, 1, 194, 60, 0, 248, 130, 0, 19, 193, 255, 255, 136, 2, 70, 223, 78, 117, 78, 115, 48, 47, 0, 4, 32, 122, 4, 108, 67, 250, 0, 62, 96, 26, 48, 47, 0, 14, 32, 122, 4, 98, 67, 250, 0, 114, 96, 12, 48, 47, 0, 4, 32, 122, 4, 88, 67, 250, 0, 76, 69, 250, 6, 110, 52, 58, 6, 104, 83, 66, 114, 0, 176, 18, 103, 12, 82, 65, 69, 234, 0, 30, 81, 202, 255, 244, 96, 2, 32, 73, 78, 208, 48, 58, 6, 76, 192, 252, 0, 30, 65, 250, 6, 70, 65, 240, 8, 0, 194, 252, 0, 18, 65, 240, 24, 0, 34, 72, 69, 234, 0, 12, 112, 8, 50, 218, 81, 200, 255, 252, 32, 8, 78, 117, 112, 0, 78, 117, 23, 124, 0, 229, 0, 29, 97, 0, 251, 218, 16, 43, 0, 9, 72, 128, 82, 64, 78, 117, 40, 74, 77, 239, 0, 4, 42, 110, 0, 2, 71, 249, 0, 247, 0, 0, 16, 44, 0, 1, 2, 64, 0, 16, 0, 64, 0, 160, 50, 0, 23, 64, 0, 25, 97, 200, 74, 64, 103, 6, 48, 1, 97, 0, 252, 198, 56, 46, 0, 8, 112, 0, 16, 42, 0, 2, 200, 192, 60, 46, 0, 6, 204, 192, 34, 6, 126, 0, 30, 6, 224, 142, 205, 71, 74, 70, 103, 4, 82, 135, 96, 6, 44, 60, 0, 0, 1, 0, 32, 44, 0, 8, 176, 132, 99, 0, 0, 130, 144, 129, 176, 132, 99, 122, 42, 44, 0, 4, 54, 22, 34, 5, 210, 132, 52, 6, 16, 44, 0, 1, 2, 64, 0, 16, 0, 64, 0, 160, 97, 122, 32, 77, 48, 6, 8, 3, 0, 0, 103, 6, 97, 0, 0, 238, 96, 4, 97, 0, 1, 144, 74, 64, 102, 18, 216, 134, 42, 72, 44, 60, 0, 0, 1, 0, 83, 71, 102, 196, 112, 0, 78, 117, 16, 43, 0, 5, 8, 0, 0, 0, 102, 44, 8, 0, 0, 1, 102, 26, 8, 0, 0, 2, 102, 24, 8, 0, 0, 4, 102, 26, 8, 0, 0, 6, 102, 16, 8, 0, 0, 7, 102, 14, 96, 8, 112, 249, 96, 10, 112, 254, 96, 6, 112, 252, 96, 2, 112, 248, 32, 120, 4, 4, 114, 0, 18, 20, 63, 1, 63, 0, 78, 144, 88, 143, 74, 64, 102, 178, 96, 0, 255, 114, 47, 3, 23, 64, 0, 25, 22, 43, 0, 29, 8, 3, 0, 7, 102, 240, 8, 3, 0, 6, 103, 234, 8, 3, 0, 4, 103, 228, 54, 60, 1, 144, 78, 113, 81, 203, 255, 252, 8, 0, 0, 4, 102, 10, 65, 250, 2, 202, 67, 250, 2, 172, 96, 8, 67, 250, 2, 167, 65, 250, 2, 200, 23, 81, 0, 5, 23, 66, 0, 9, 116, 0, 130, 232, 0, 10, 52, 1, 72, 65, 82, 65, 23, 65, 0, 13, 132, 232, 0, 6, 23, 66, 0, 17, 224, 74, 23, 66, 0, 21, 72, 66, 196, 124, 0, 15, 128, 66, 23, 64, 0, 25, 38, 31, 78, 117, 50, 60, 1, 255, 18, 216, 81, 201, 255, 252, 78, 117, 47, 13, 52, 0, 42, 72, 74, 120, 4, 68, 103, 8, 23, 124, 0, 60, 0, 29, 96, 6, 23, 124, 0, 48, 0, 29, 83, 66, 50, 13, 32, 77, 8, 1, 0, 0, 103, 10, 67, 250, 2, 104, 97, 200, 65, 250, 2, 98, 50, 60, 16, 0, 16, 43, 0, 29, 83, 65, 103, 70, 8, 0, 0, 3, 103, 242, 97, 88, 75, 237, 2, 0, 34, 60, 0, 1, 0, 0, 112, 255, 83, 129, 103, 52, 16, 43, 0, 29, 8, 0, 0, 6, 103, 242, 8, 0, 0, 4, 103, 236, 8, 0, 0, 7, 102, 230, 8, 0, 0, 5, 102, 18, 8, 0, 0, 0, 102, 12, 8, 0, 0, 3, 102, 158, 74, 66, 102, 208, 112, 0, 32, 77, 42, 95, 78, 117, 16, 44, 0, 1, 2, 64, 0, 16, 0, 64, 0, 160, 97, 0, 250, 182, 112, 255, 96, 230, 112, 127, 54, 152, 54, 152, 81, 200, 255, 250, 78, 117, 47, 13, 52, 0, 42, 72, 23, 124, 0, 32, 0, 29, 32, 77, 50, 13, 8, 1, 0, 0, 103, 4, 65, 250, 1, 208, 97, 36, 74, 64, 102, 26, 50, 13, 8, 1, 0, 0, 103, 10, 65, 250, 1, 190, 34, 77, 97, 0, 255, 28, 75, 237, 2, 0, 83, 66, 102, 210, 32, 77, 42, 95, 78, 117, 34, 60, 0, 1, 0, 0, 112, 255, 83, 129, 103, 38, 8, 43, 0, 3, 0, 29, 103, 244, 97, 30, 16, 43, 0, 29, 8, 0, 0, 0, 102, 18, 8, 0, 0, 7, 102, 240, 10, 64, 0, 80, 2, 64, 0, 80, 102, 230, 112, 0, 78, 117, 112, 127, 48, 211, 48, 211, 81, 200, 255, 250, 78, 117, 82, 111, 122, 112, 111, 122, 110, 97, 110, 121, 32, 100, 121, 115, 107, 58, 13, 10, 0, 87, 121, 107, 111, 110, 97, 110, 105, 101, 32, 119, 101, 119, 110, 211, 116, 114, 122, 110, 121, 99, 104, 32, 116, 101, 115, 116, 214, 119, 32, 107, 111, 110, 116, 114, 111, 108, 101, 114, 97, 58, 13, 10, 0, 78, 105, 101, 32, 119, 121, 107, 114, 121, 116, 111, 32, 216, 97, 100, 110, 121, 99, 104, 32, 98, 212, 211, 100, 214, 119, 46, 32, 32, 32, 32, 32, 32, 32, 32, 32, 0, 66, 212, 209, 100, 32, 117, 114, 122, 209, 100, 122, 101, 110, 105, 97, 32, 102, 111, 114, 109, 97, 116, 117, 106, 209, 99, 101, 103, 111, 46, 32, 32, 32, 32, 32, 32, 0, 66, 212, 209, 100, 32, 98, 117, 102, 111, 114, 97, 32, 115, 101, 107, 116, 111, 114, 214, 119, 46, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 0, 66, 212, 209, 100, 32, 117, 107, 212, 97, 100, 117, 32, 107, 111, 110, 116, 114, 111, 108, 105, 32, 98, 212, 211, 100, 214, 119, 32, 40, 32, 69, 67, 67, 32, 41, 46, 0, 66, 212, 209, 100, 32, 109, 105, 107, 114, 111, 112, 114, 111, 99, 101, 115, 111, 114, 97, 32, 119, 32, 107, 111, 110, 116, 114, 111, 108, 101, 114, 122, 101, 46, 32, 32, 0, 65, 117, 116, 111, 109, 97, 116, 121, 99, 122, 110, 121, 32, 115, 116, 97, 114, 116, 32, 112, 114, 111, 103, 114, 97, 109, 117, 46, 13, 10, 0, 83, 116, 97, 114, 116, 32, 112, 114, 111, 103, 114, 97, 109, 117, 32, 122, 32, 100, 121, 115, 107, 105, 101, 116, 107, 105, 46, 13, 10, 0, 0, 255, 255, 0, 0, 1, 188, 10, 6, 24, 56, 22, 8, 8, 126, 38, 8, 18, 10, 8, 8, 6, 8, 8, 96, 1, 1, 1, 16, 0 }; oĝaL>.rkE㡏4畹|`mLEdӝuqNeGاJ)\]"w_Xњ=̩j5"fRqϗvz"9? 4IkxB\ky4;[\|$I6ҽ& {đ9! 3N\;SܠDϺ.W+ESd.w#9F'cTbj vkԛ#y6H[Sv#}ДXr Z@|42!)Y3q@:36.qi_H T]#ըIc>}vƃ4JWjː?4oPf&_C)4<@_G{9,F;kxg *}4 TT"1c̋I,lX>[~~a0죓46M6!􆩲 |[ םUEF,r\1X S~,v}l%)j 5:%:..곤#1et-eu;]Edvʹ4~ŋ,rY?Ѱ5>6XIhyAet;:#4kœi푠?"UP(:?\y,=̾t#âw_tc}!0w%ߓeO1G|xN<_CQauKuy$1Q ]M ߿JDáz3sRI n!6hGTHEねN{J"Sݼ>vMcttTLBbևMj=6Ce /t؈ÓGH+ xp2/(AUrFmBqe݄Ec&_L\}mr'kR\?N4w跦Z;uSuj-d)GST-CFG:Epson FX80 H  R R}R R{Ra^ R{R R@R R}R R\Re^ eR~R R}R R~R R[R R]R R @R R{R R[Ro^ R|R R|Ru^ R|R yR~R R\R R]R R#R R\R R~Rf R|R R\Ra_o_ R]R R[Ra~o~ R\R R|R R~Rcr yR~RY R@R R~R+_>_<_ R[R< dG%W@=Zw h:|hwn1JD(:A_<  8WF=*)EF}~ LeIسђ7 rU;o/G%y2d驤ȡԃ,+$R;g< /)4ݻqx0nPr.4wE3U;'#F@A7 ":% jX6P]Ӈ+Σ12$3<%|0Q!R14*}5O$1 nk5 xh4HJA-.A+B7bxIkYxIpfѫ?uoygj5*8ԝ:ROi+C`[ t8aptvEd ;+@6(etgzXnϻH)V{V************************************************************************* * Druckeransteuerungsdatei fr EPSON-kompatible Drucker * * * * alle Angaben sind in HEX zu machen (siehe unten) * * * * Die Daten sind 1st Word (plus) kompatibel, es kann also eine * * bereits vorhandene CFG-Datei weiterhin genutzt werden. * * * * 1989 by -soft, written by Markus Fritze 19.11.1988 18:21 * ************************************************************************* * Druckername (max.32 Zeichen lang) Epson FX80 * Konfigurationsvariablen (werden noch ignoriert) 0,0,C,48,0,0 * Druckersteuerzeichen * (1) Funktionsnummer (in der jetzigen Version gibt es nur die 1) * (2) gesendeter String * 1, D,A * CR/LF Zeilenvorschub beim Drucker *1F * Sequenz vor einer Zeile 20, 1B,52,0 * Sequenz vor dem Drucken, USA-Fnt whlen *21, 1B,52,2 * Sequenz nach dem Drucken 0 * NULL Endekennung dieser Tabelle * Konvertierungstabelle (EPSON-kompatible Drucker) * * (1) ST Zeichencode (in aufsteigender Reihenfolge) * (2) Ausgabestring (darf auch fehlen) * * Codes, denen der Ausgabestring fehlt, werden als Space gedruckt * * Codes, welche nicht in der Tabelle angefhrt sind, werden ohne Wandlung * direkt gedruckt 7F *  - N/A 80 * - N/A 81, 1B, 52, 2, 7D, 1B, 52, 0 * - German 82, 1B, 52, 1, 7B, 1B, 52, 0 * - French 83, 61, 8, 5E * - a BS ^ 84, 1B, 52, 2, 7B, 1B, 52, 0 * - German 85, 1B, 52, 1, 40, 1B, 52, 0 * - French 86, 1B, 52, 4, 7D, 1B, 52, 0 * - Danish 1 87, 1B, 52, 1, 5C, 1B, 52, 0 * - French 88, 65, 8, 5E * - e BS ^ 89, 65, 8,1B,52,1,7E,1B,52,0 * - e BS French 8A, 1B, 52, 1, 7D, 1B, 52, 0 * - French 8B * - N/A 8C * - N/A 8D, 1B, 52, 6, 7E, 1B, 52, 0 * - Italian 8E, 1B, 52, 2, 5B, 1B, 52, 0 * - German 8F, 1B, 52, 4, 5D, 1B, 52, 0 * - Danish 1 90, 1B, 52, 9, 40, 1B, 52, 0 * - Norwegian 91, 1B, 52, 4, 7B, 1B, 52, 0 * - Danish 1 92, 1B, 52, 4, 5B, 1B, 52, 0 * - Danish 1 93, 6F, 8, 5E * - o BS ^ 94, 1B, 52, 2, 7C, 1B, 52, 0 * - German 95, 1B, 52, 6, 7C, 1B, 52, 0 * - Italian 96, 75, 8, 5E * - u BS ^ 97, 1B, 52, 1, 7C, 1B, 52, 0 * - French 98, 79, 8,1B,52,1,7E,1B,52,0 * - y BS French 99, 1B, 52, 2, 5C, 1B, 52, 0 * - German 9A, 1B, 52, 2, 5D, 1B, 52, 0 * - German 9B * - N/A 9C, 1B, 52, 3, 23, 1B, 52, 0 * - UK 9D, 1B, 52, 8, 5C, 1B, 52, 0 * - Japanese 9E, 1B, 52, 2, 7E, 1B, 52, 0 * - German 9F, 66 * - f A0 * - N/A A1 * - N/A A2 * - N/A A3 * - N/A A4, 1B, 52, 7, 7C, 1B, 52, 0 * - Spanish A5, 1B, 52, 7, 5C, 1B, 52, 0 * - Spanish A6, 61, 8, 5F * - a BS _ A7, 6F, 8, 5F * - o BS _ A8, 1B, 52, 7, 5D, 1B, 52, 0 * - Spanish A9 * - N/A AA * - N/A AB * - N/A AC * - N/A AD, 1B, 52, 7, 5B, 1B, 52, 0 * - Spanish AE * - N/A AF * - N/A B0, 61, 8, 7E * - a BS ~ B1, 6F, 8, 7E * - o BS ~ B2, 1B, 52, 4, 5C, 1B, 52, 0 * - Danish 1 B3, 1B, 52, 4, 7C, 1B, 52, 0 * - Danish 1 B4 * - N/A B5 * - N/A B6 * - N/A B7 * - N/A B8 * - N/A B9, 1B, 52, 1, 7E, 1B, 52, 0 * - French BA * - N/A BB * - N/A BC * - N/A BD, 63 * - c BE, 72 * - r BF * - N/A C0, 79, 8,1B,52,1,7E,1B,52,0 * - y BS French C1, 59 * - Y C2 * - N/A C3 * - N/A C4 * - N/A C5 * - N/A C6 * - N/A C7 * - N/A C8 * - N/A C9 * - N/A CA * - N/A CB * - N/A CC * - N/A CD * - N/A CE * - N/A CF * - N/A D0 * - N/A D1 * - N/A D2 * - N/A D3 * - N/A D4 * - N/A D5 * - N/A D6 * - N/A D7 * - N/A D8 * - N/A D9 * - N/A DA * - N/A DB * - N/A DC * - N/A DD, 1B, 52, 2, 40, 1B, 52, 0 * - German DE * - N/A DF * - N/A E0 * - N/A E1, 1B, 52, 2, 7E, 1B, 52, 0 * - German E2 * - N/A E3 * - N/A E4 * - N/A E5 * - N/A E6 * - N/A E7 * - N/A E8 * - N/A E9 * - N/A EA * - N/A EB * - N/A EC * - N/A ED * - N/A EE * - N/A EF * - N/A F0 * - N/A F1, 2B, 8, 5F * - + BS _ F2, 3E, 8, 5F * - > BS _ F3, 3C, 8, 5F * - < BS _ F4 * - N/A F5 * - N/A F6 * - N/A F7 * - N/A F8, 1B, 52, 1, 5B, 1B, 52, 0 * - French F9 * - N/A FA * - N/A FB * - N/A FC * - N/A FD * - N/A FE * - N/A 0 * NULL Endekennung dieser Tabelle á>f4}8eN^5'K9{j-4;/XHP>paRM<<<<><a><Qapa*Q>L@Nua 1dž`a>8@?>< Q>FNu@|8<FNu|ڋ0/>iCﱴyInhc>; ],yfJSHctë2GL)-~Jz@%j/@D7% ЃI{@>ĺkזF?\@> M1YE1] <-Ak>\ T4mJ%>4\b2 fgC2ONy}>FOFmf.f f@>V:QmpO(_Kmxs]Ơ }@oSfMhh}dbO&^u1G#ϖLȒa3L0 _u \D8poX`g!)IGR lQK+S.KU5@EK*)l<0֥50s:1'#U̩CKax'xp~0xZ۸o6`Ix BAH5^3#S]*1<a><QapaQ L@Nua1`a>8@?>< Q >FNu@|8<FNudiskctlgiselectgiwriteforceintdrive_head_sel out_D7_to_DMAlbFC1592get_D7_from_DMA wait_DMAlbFC1636>flock;reset DMA;select drive A albo B _`*[sG2Ԟa-Xݚ@bFoԩ.gDfiG`pgNFѡŖ,9g[>FRvA Z=;qWzEvϷ` ķO0{c>g[wZCeݲi9jp;,9,z .YkD}T~~Yeo4 Rw/ 0,OH>0ȏ-mȔ{xF,t0T.?Š q~ 2~^_W*HF7S)Ga~ )'Z>n}_Ά8?Z3`-tQWウ:T!l=YC@Zbw (9-(aTr[:ZzEPFVJLANoMj_5zeCzvT{)򥟻㫿<1_WvԽأ7q*0Qa4KRvÂnJZ3`3\.aFu!dTØ`[Y!Vap8q1#!M x;/NZ^/j Pb N &e[el̈́ڢr{kLoX?HysjmR|H3h͔[Jrޤ(jpd}Um2H1_Ďyj.''Wy:0̧;KaiMu|/ixXzYv.4gKp9zVeviF$ 4:eߊ! EHq`9+HY46o. R ,N|g\Lx7OProcedura formatowania cieki: ; Parametry: ; D0 - nr dysku ; D1 - nr cylindra ; D2 - nr gowicy ; D3 - liczba sektorw na ciece ; A0 - adres 512 bajtowego bufora ; A1 - lista zych sektorw ; 4(SP) - sektor startowy ; 6(SP) - przeplot formatowanie: link A6,#-2 ;A6 jako wskanik parametrw ;na stosie oraz zmiennych ;lokalnych w funkcji movem.l A2-A3,-(SP) movea.l A1,A2 lea adres_bazowy_dysku,A1 move.b D3,rejestr_liczby_sekt(A1) ;ustawienie liczby sektorw ;na ciece move.w D3,-2(A6) move.b D1,rejestr_cylindra_dolny(A1) lsr.w #8,D1 move.b D1,rejestr_cylindra_grny(A1) ;ustawienie wybranego cylindra andi.w #$01,D0 lsl.w #4,D0 ori.w #$A0,D0 andi.w #$0F,D2 or.w D2,D0 move.b D0,rejestr_gowicy_dysku(A1) ;Wybr dysku i gowicy ;Wypenienie tablicy przeplotu ;kodami pustymi - $DD movea.l A0,A3 move.l #$DDDDDDDD,D0 move.w #$7F,D1 pust_wypen: move.l D0,(A3)+ dbra D1,pust_wypen movea.l A0,A3 ;Pocztek tablicy przeplotu move.w 8(A6),D0 ;nr sektora startowego move.w $0A(A6),D1 ;przeplot move.w D3,D2 ;liczba sektorw na ciece lsl.w #1,D2 ;*2 - dugo tablicy przeplotu lea 0(A0,D2.w),A1 ;adres koca tablicy przeplotu ;w A2 mamy list zych sektorw kolejny_sektor: bsr.s zy_sektor ;sprawdzenie czy sektor z D0 ;ma by oznaczony jako zy kontrola_wskanika: cmpa.l A3,A1 ;czy aktualny wskanik jest wewntrz ;tablicy przeplotu? bhi.s jeszcze_w_tablicy suba.l D2,A3 ;ustawienie go w tablicy jeszcze_w_tablicy: cmpi.w #$DDDD,(A3) ;Czy pozycja jest pusta ? beq.s pusta_pozycja addq.l #2,A3 bra.s kontrola_wskanika pusta_pozycja: move.w D0,(A3) ;wpisanie sektora do tablicy adda.l D1,A3 adda.l D1,A3 ;adres kolejnego pola w tablicy addq.w #1,8(A6) ;kolejny sektor move.w 8(A6),D0 cmp.w -2(A6),D0 bls.s dobry_nr_sekt moveq #1,D0 move.w D0,8(A6) dobry_nr_sekt: subq.w #1,D3 ;zmniejszenie liczby sektorw ;pozostaych do wpisania bne.s kolejny_sektor lea adres_bazowy_dysku,A1 move.w adres_wrt_prekomp_trk,D0 ;Odczytanie nru cylindra ;prekompensacji zapisu lsr.w #2,D0 ;Nr / 4 ( przesunicie w prawo ) move.b D0,rejestr_prekompensacji(A1) move.b #$50,rejestr_komend(A1) ;start_komendy lea adres_rej_przerwa,A2 czekanie_na_format: btst #3,rejestr_stanu(A1) ;Czy ustawiony bit DRQ ? beq.s czekanie_na_format ;skok gdy = 0 bsr.s zapisz_bufor ;Zapis bloku 512 bajtw ;procedura z zapisu sektorw oczekiwanie_format: btst #bit_IRQ_HD,(A2) ;Czy wygenerowane przerwanie ? ;linia IRQ =1 beq.s oczekiwanie_format move.b rejestr_stanu(A1),D0 ;odczyt rejestru stanu ;oraz automatyczne skasowanie ;linii IRQ btst #0,D0 ;kontrola bitu ERROR w rejestrze stanu bne.s bd_format ;skok gdy <> 0 moveq #0,D0 ;nie ma bdow bra.s dobry_format bd_format: move.b rejestr_bdw(A1),D0 dobry_format: movem.l (SP)+,A2-A3 ;odczytanie uywanych rejestrw unlk A6 ;odzyskanie A6 rts ;powrt z procedury ; Procedura suca do ustawienia atrybutu formatowanego sektora ; zy / normalmy ; Parametry: ; D0 - numer sektora ; A2 - lista zych sektorw zy_sektor: movem.l D1/A2,-(SP) moveq #0,D1 sprawd_kolejny: move.b (A2)+,D1 beq.s nie_znaleziony ;gdy 0 to koniec listy cmp.w D1,D0 bne.s sprawd_kolejny ;gdy <> to kolejny element listy lsl.w #8,D0 move.b #$80,D0 ;zy sektor bra.s koniec_zego nie_znaleziony: lsl.w #8,D0 koniec_zego: movem.l (SP)+,D1/A2 rts zapisz_bufor: moveq #127,D0 ;128 podwjnych sw ;do zapisu ptla_write: move.w (A0)+,(A1) ;skopiuj 2 sowa move.w (A0)+,(A1) dbra D0,ptla_write ;powtarzaj dopuki D0>=0 ;z inkrementacj D0 rts lista: dc.b $11,$20,$25,0 bufor: ds.w 256 end 8?M}*Jxuh,ΐC>2E h˹]{y4 &񯂛=§X)~csυsau;̓l<3I %Zm>M%7 ^~yJLZq'afabew=+%K⨘ AaF5C7Obms7Ue_Pr$`sq}; d`uIr ?Oɍ ^lgT◹Qm:JFLldp)dO'PPԱЙ)ucyPIA]:"V&EHE8W"cXڛz_a”mF7? 0|ͫ>dC 43nMf:q;EF:7 \4GҲ=QrM';{^aTHg٣UO5My jva.4OQMS/ Cwt2gFXgC$ (7/M҇WBxf?2%zӀ*T`0%ꔧ^݋ńׇ|ښv"GTax>5<0n^=ͬ5=Dx9ٱֲ2cs-58/=S{yiXi `G_{'5^uY.cd 5mkmccdu8X& 똸.Qb"dd4$qEF$b64L[lg|i}uYW-8c+A!}:24m<02=y >0Ur,,h-@{#KJ7ҟ?kdQbJhѣӹ>jߛ7V:ŌBv'qRs/::,Ft'vȩRqs:/ʼnajV1/::,bV:󋹁V7:?+j i7V:ŋjV7 !    $&& " "   $& """"  "( D"#"" $#$%' @A Cp2<Ut v1?<?<aNVH0$IC C=CA IA @H@BB@ &H <2<&Q&H0.2. 4JC ab SgT`6Rn0.ncp=@SCfC 09H@|PE)gag)fp`) L N^NuH@ rgAfH<`HLNup22Q%Nu % rejestr_numeru_sekt rejestr_liczby_sektlistaformatowanie adres_bazowy_dysku buforrejestr_cylindra_dolnyrejestr_cylindra_grnyrejestr_gowicy_dyskupust_wypenkolejny_sektor zy_sektorkontrola_wskanika jeszcze_w_tablicy pusta_pozycjadobry_nr_sekt adres_wrt_prekomp_trkrejestr_prekompensacjirejestr_komend adres_rej_przerwa czekanie_na_formatrejestr_stanuzapisz_buforoczekiwanie_formatbit_IRQ_HDbd_formatdobry_formatrejestr_bdw rejestr_danych sprawd_kolejny nie_znaleziony koniec_zegoptla_write !; Procedura formatowania cieki:; Parametry:; D0 - nr dysku; D1 - nr cylindra; D2 - nr gowicy; D3 - liczba sektorw na ciece; A0 - adres 512 bajtowego bufora; A1 - lista zych sektorw; 4(SP) - sektor startowy; 6(SP) - przeplot;A6 jako wskanik parametrw;& na stosie oraz zmiennych;& lokalnych w funkcji;ustawienie liczby sektorw;1 na ciece;ustawienie wybranego cylindra;Wybr dysku i gowicy;% Wypenienie tablicy przeplotu;% kodami pustymi - $DD;Pocztek tablicy przeplotu;nr sektora startowego;przeplot;liczba sektorw na ciece;*2 - dugo tablicy przeplotu;adres koca tablicy przeplotu;% w A2 mamy list zych sektorw;sprawdzenie czy sektor z D0;& ma by oznaczony jako zy;czy aktualny wskanik jest wewntrz;& tablicy przeplotu?;ustawienie go w tablicy;Czy pozycja jest pusta ?;wpisanie sektora do tablicy;adres kolejnego pola w tablicy;kolejny sektor;zmniejszenie liczby sektorw;& pozostaych do wpisania;Odczytanie nru cylindra;+ prekompensacji zapisu;Nr / 4 ( przesunicie w prawo );start_komendy;Czy ustawiony bit DRQ ?;skok gdy = 0;Zapis bloku 512 bajtw;& procedura z zapisu sektorw;Czy wygenerowane przerwanie ?;& linia IRQ =1;odczyt rejestru stanu;' oraz automatyczne skasowanie;' linii IRQ;kontrola bitu ERROR w rejestrze stanu;skok gdy <> 0;nie ma bdow;odczytanie uywanych rejestrw;odzyskanie A6;powrt z procedury; Procedura suca do ustawienia atrybutu formatowanego sektora; zy / normalmy; Parametry:; D0 - numer sektora; A2 - lista zych sektorw;gdy 0 to koniec listy;gdy <> to kolejny element listy;zy sektor;128 podwjnych sw;& do zapisu;skopiuj 2 sowa;powtarzaj dopuki D0>=0;& z inkrementacj D0@DH'R}QƆCdk΅a?IV"' Gdn gx7^/YX3aUD(A(ӚMUV(߅X (UYdD,E55! ڌhGЃX74so=yb?1@2qN;.&i(4]@"OZɆ@_ Ц}{ppz*ު\<(?D9ύ?;O-y2? ,xUTeh+GaVĨ%*)]ʬ|gEjG*Z>}v+X\UGRQ|ikcDWV VMN;************************************************************************ ;* GEMDOS-Library, bergabe in Registern * ;* 1989 by -soft, written by Markus Fritze 18.06.1988 01:16 * ;************************************************************************ pterm0: clr.w -(SP) trap #1 cconin: move.w #1,-(SP) bsr gemdos addq.l #2,SP rts cconout: move.w D0,-(SP) move.w #2,-(SP) bsr gemdos addq.l #4,SP rts cauxin: move.w #3,-(SP) bsr gemdos addq.l #2,SP rts cauxout: move.w D0,-(SP) move.w #4,-(SP) bsr gemdos addq.l #4,SP rts cprnout: move.w D0,-(SP) move.w #5,-(SP) bsr gemdos addq.l #4,SP rts crawio: move.w D0,-(SP) move.w #6,-(SP) bsr gemdos addq.l #4,SP rts crawcin: move.w #7,-(SP) bsr gemdos addq.l #2,SP rts cnecin: move.w #8,-(SP) bsr gemdos addq.l #2,SP rts cconws: move.l A0,-(SP) move.w #9,-(SP) bsr gemdos addq.l #6,SP rts cconrs: move.l A0,-(SP) move.w #$0A,-(SP) bsr gemdos addq.l #6,SP rts cconis: move.w #$0B,-(SP) bsr gemdos addq.l #2,SP rts dsetdrv: move.w D0,-(SP) move.w #$0E,-(SP) bsr gemdos addq.l #4,SP rts cconos: move.w #$10,-(SP) bsr gemdos addq.l #2,SP rts cprnos: move.w #$11,-(SP) bsr gemdos addq.l #2,SP rts cauxis: move.w #$12,-(SP) bsr gemdos addq.l #2,SP rts cauxos: move.w #$13,-(SP) bsr gemdos addq.l #2,SP rts dgetdrv: move.w #$19,-(SP) bsr gemdos addq.l #2,SP rts fsetdta: move.l A0,-(SP) move.w #$1A,-(SP) bsr gemdos addq.l #6,SP rts super: move.l D0,-(SP) move.w #$20,-(SP) bsr gemdos addq.l #6,SP rts tgetdate: move.w #$2A,-(SP) bsr gemdos addq.l #2,SP rts tsetdate: move.w D0,-(SP) move.w #$2B,-(SP) bsr gemdos addq.l #4,SP rts tgettime: move.w #$2C,-(SP) bsr gemdos addq.l #2,SP rts tsettime: move.w D0,-(SP) move.w #$2D,-(SP) bsr gemdos addq.l #4,SP rts fgetdta: move.w #$2F,-(SP) bsr gemdos addq.l #2,SP rts sversion: move.w #$30,-(SP) bsr gemdos addq.l #2,SP rts ptermres: move.w D0,-(SP) move.l D1,-(SP) move.w #$31,-(SP) trap #1 dfree: move.w D0,-(SP) move.l A0,-(SP) move.w #$36,-(SP) bsr gemdos addq.l #8,SP rts dcreate: move.l A0,-(SP) move.w #$39,-(SP) bsr gemdos addq.l #6,SP rts ddelete: move.l A0,-(SP) move.w #$3A,-(SP) bsr gemdos addq.l #6,SP rts dsetpath: move.l A0,-(SP) move.w #$3B,-(SP) bsr gemdos addq.l #6,SP rts fcreate: move.w D0,-(SP) move.l A0,-(SP) move.w #$3C,-(SP) bsr gemdos addq.l #8,SP move.l D0,D7 rts fopen: move.w D0,-(SP) move.l A0,-(SP) move.w #$3D,-(SP) bsr gemdos addq.l #8,SP move.l D0,D7 rts fclose: move.w D7,-(SP) move.w #$3E,-(SP) bsr gemdos addq.l #4,SP rts fread: move.l A0,-(SP) move.l D0,-(SP) move.w D7,-(SP) move.w #$3F,-(SP) bsr gemdos lea 12(SP),SP rts fwrite: move.l A0,-(SP) move.l D0,-(SP) move.w D7,-(SP) move.w #$40,-(SP) bsr gemdos lea 12(SP),SP rts fdelete: move.l A0,-(SP) move.w #$41,-(SP) bsr gemdos addq.l #6,SP rts fseek: move.w D0,-(SP) move.w D7,-(SP) move.l D1,-(SP) move.w #$42,-(SP) bsr gemdos lea 10(SP),SP rts fattrib: move.w D0,-(SP) move.w D1,-(SP) move.l A0,-(SP) move.w #$43,-(SP) bsr gemdos lea 10(SP),SP rts fdup: move.w D0,-(SP) move.w #$45,-(SP) bsr gemdos addq.l #4,SP rts fforce: move.w D0,-(SP) move.w D1,-(SP) move.w #$46,-(SP) bsr gemdos addq.l #6,SP rts dgetpath: move.w D0,-(SP) move.l A0,-(SP) move.w #$47,-(SP) bsr gemdos addq.l #8,SP rts malloc: move.l D0,-(SP) move.w #$48,-(SP) bsr gemdos addq.l #6,SP rts mfree: move.l A0,-(SP) move.w #$49,-(SP) bsr gemdos addq.l #6,SP rts mshrink: move.l D0,-(SP) move.l A0,-(SP) pea $4A0000 bsr gemdos lea 12(SP),SP rts pexec: move.l A2,-(SP) move.l A1,-(SP) move.l A0,-(SP) move.w D0,-(SP) move.w #$4B,-(SP) bsr gemdos lea 16(SP),SP rts pterm: move.w D0,-(SP) move.w #$4C,-(SP) trap #1 fsfirst: move.w D0,-(SP) move.l A0,-(SP) move.w #$4E,-(SP) bsr gemdos addq.l #8,SP rts fsnext: move.w #$4F,-(SP) bsr gemdos addq.l #2,SP rts frename: move.l A0,-(SP) move.l A1,-(SP) pea $560000 bsr gemdos lea 12(SP),SP rts fdatime: move.w D0,-(SP) move.w D7,-(SP) move.w D1,-(SP) move.w #$57,-(SP) bsr gemdos lea 10(SP),SP rts ;************************************************************************ ;* Allgemeiner Gemdos-Einsprung, welcher alle Register rettet (auer D0)* ;* ACHTUNG! Sonst knnten die Register D0-D4/A0-A4 zerstrt werden. * ;************************************************************************ gemdos: move.l A0,D0 lea regsave(PC),A0 movem.l D0-D7/A1-A7,(A0) move.l (SP)+,-(A0) ;Rcksprungadr retten trap #1 movea.l D0,A0 ;Fehlermeldung retten movem.l regsave(PC),D0-D7/A1-A7 exg A0,D0 move.l retsave(PC),(SP) rts retsave: DS.L 1 regsave: DS.L 15 N־MEKa(;?&}bsTk#-̭x6j#[Xc.j*KZץd6P+lyBIXٟUX {"[_90-3mLUI;Q\zmѕ y4 \@\yڍMa%W]5W_\iUi9׊.μ3X 3UރY*ZSUD*ՆSqk"j,yejUxD6RŹ, gܡrB皪7)(ݟ[]_a=ƻi6nZkoǸCG?6uf}o[{n=O:οgFv~]M;_8o_v~5Mwjv\[ @En+~ :YulL}PtiRZr'cshFH?Rt]bdj$dA f ˆbHI" .2|jK:OqCd@ǙJ4kr1dE9wv1jͫ <(ō3P~A^I?yI!w W|# qJiz{T+uɬTZi׵̣9d0 ]ft+2u=խrwqןK9 }+~& آxM㾥eYլx- !wQ ӷUF轭x{Y.u!h6*QWSȫ!kKGJ ' (klappt mit dem Konzept leider nicht...) END iAl}+1-ݲcakZ,D{S'?eՐM{|~:;=y>yOWUZU>5,ϋ]ExGK_7}\~V8%v oZƟ0u7 X?6#كwQg{=vwO܁>F;  ;R ٤{kohqAt8 u 3kp]=|ҡ-_rv/uqz>%'26]̕x+ n=4;sm@7s06B{݁⁤0( y}>X;/_|#flr@B?}D`Gw ơCAF~- z;A=vK-~ev} O𱧢D]"} 8XsŃ/_Уԣkiupkk${@lE~Vګ67WO%k^mb`o֛wl(zX>1c4B?t1!YZ))l6;{͎miק)+ׁ^ \ mTe׃4xa`AF aogNt]>ƍఱ :istuw0'A.oPޤo(\!e" BƑZBu U e i=ΨckT/(k-(tJ:4i"CCXͪ=CP(t2j zNP VPBCPClը{ P7 C?ACPܨuPT8  #?XR:{To$trG7HoHTo$s}$jsy,#yLRa}fY8M)q}}>Y]g]Bfg]]n KAKM}qfAM?q}{|ԽffM}q[tA}R Mq}[}fYM6BB$H:B & :<  : >0 0pACE?SgJaIJaJ0Nu0Nuhheturm1turm2turm3turmexitend_itzhler;D*;* Trme von Hanoi (simuliert durch den Atari ST) *;* umgesetzt von Markus Fritze am 18.10.1988 15:30 bis 15:45 *;* Zur Vorlesung "Grundlagen der Programmierung" von W.Gerken *;* an der Fachhochschule Wedel.% *;* Geschwindigkeit: ~80 Verschiebungen pro Sekunde = ~12.5ns pro V.*;* Lnge des Algorithmus: 30 Bytes + umgebenden Code *;* 1988 by -soft, written by Markus Fritze 18.10.1988 15:45 *;D*;Anzahl der Elemente;Anzahl der Turmelemente;Zeiger auf den vollen Turm 1;Zeiger auf den leeren Turm 2;Zeiger auf den leeren Turm 3;n wird lokal verndert;n-1;if n=0 then exit;Reihenfolge zu s.u. ndern;turm(n-1,s1,s3,s2);s1 -> s2;Reihenfolge zu s.u. ndern;turm(n-1,s3,s2,s1);Reihenfolge der Trme wieder normal;Ebene zurck;s1 -> s2;Ebene zurck;Quellturm (1);erstellen;Zielturm (2);Hilfsturm (3) }}gw,kW5 ¿k ~4Q Atk]Z_AWjt y^o0՝c;C_g`L_r|_a_5zUByl(AۆUFdB! *!X2Yc^ k5N^)իR)Ur G`rV*bQ:=z0\V:% ِ1][D!cB} B\PJhꄏJ oD$~hUԤ|}tAkd0g\X7~?ZGuiN?1j1-3xpPoIrРf ԃ_7z晽MR 7$| ރ߀o;************************************************************************ ;* Header-Library, Programmrumpf * ;* 1989 by -soft, written by Markus Fritze 18.06.1988 01:30 * ;************************************************************************ movea.l 4(sp),a6 ;Basepageadresse holen movea.w #$100+$400,a5 ;Gre der Basepage + Stackgre (1k) adda.l 12(a6),a5 ;+ Gre des TEXT-Segments adda.l 20(a6),a5 ;+ Gre des DATA-Segments adda.l 28(a6),a5 ;+ Gre des BSS-Segments move.l a5,d1 ;= Gesamtlnge des Programms and.w #$FFFE,d1 ;Lnge nun gerade add.l a6,d1 ;+ Programmstart (Basepageadresse) move.l d1,sp ;Stack endet dort move.l a5,-(sp) ;Programmlnge move.l a6,-(sp) ;Adresse der Basepage move.l #$4A0000,-(sp) ;Funktionsnummer + Dummyword (0) trap #1 ;Mshrink(0,Basepageadr,Prglnge) lea 12(sp),sp ;Nur noch den Stack korrigieren ;Das war schon alles. In A6 befindet sich noch die Basepageadresse und in a5 ;liegt die totale Programmlnge (TRAP #1 zerstrt D0-D2 und A0-A2!) ;Hier kann nun das eigene Programm liegen clr.w -(sp) trap #1 ;Pterm ausfhren => Programmende OR.ACC;yA {{Vsq]\rXԑXMu%cqr[3MWpq[F;, w#W ^/TaB۪ pRU=0H?-[7'v#q/@"$|ӌTUgʴZș)=aiu*}*[)ʏ+3x*~+q#>KS6Vū~w_\DW&=KH/g VReQX A!k67:q{>4+ٛ'+W}xkMz jz`BT>r֬EcG+%Wxuu#{L!5xjb(z늦YJ;(蝻k8adu@vZJZN Y{toMl}#Mًk"?!T !ͅpIBo:#\_pb&߃wˆǁ֒Oɠht0I{BKdB߸vOhPƉUJg/wZdޓ啲jgp"ԧipT'V7{^n&<7}ʡ>3_O.،UJ{H \<~I$ݗ кOSnP~2ɦO4\;/pRxN}}(a]p9iU2Wo'eϪ@g谛09 y=G}F̈GtGpGn z9^KW1!ExE} B-oE&uQ 'l'rIЭs`Tt f P /OHx//<JNAO zaa < anMNAXJfNuJEf:AR, <4HABBA"0<NB0:LNu> Hhv~ Hypercache-ST[2][ |Hypercache ST|Cache ein-/ausschalten?][AN|AUS|WEITER][2][ |Einstellungen sichern?][SPEICHERN|ENDE|WEITER][2][ |Hypercache auf Bit 6|oder Bit 7?][BIT 6|BIT 7|PRGINFO][1][ |Hypercache ST-Switch V1.0|1989 -soft|von Markus Fritze][ OK ][3][ |Fehler beim Speichern!][ABBRUCH]C:\HYPER.INFPPOWERDOS\POWERDOS.PRGZ+A&_{4۞~n-td#m)141R>)JoۨrKd_gw|ݗmߑm`kP&-E L'_S67Iױz9Qa_ 6Uڶrz ܏-%{ϗmʻKK[cU$ 4H%IbRGb~RNk3# Ve[M˧&[QGzѷbj>YRSoe|MBXq eI0ղ_7N6Qu{SQ9V҅t:depPW3uK4V$is4s9(q&r=+9`7O{4V6Udm%V3bJMh Ye%HKSY l. Js8?)@ /> "(>  $09'#)1 !,$ G(D(+@E?3(74.,( @@@ @ "@@&% fP /OHx&//<JNAO za-a8 <a M K :f:A, <a A, <a p(Pf0:'@R@:A, <a W@gT@3'a`:A , <a U@kf:gBgNAza`:)A(, <a |g3)`:A?, <a :g` 2:)ZAph2:'gF@??<WNNXNuI5:fWB?< NA/@8A<ANA\Bg/ ?<NAXJfNuJEf:A4, <HABBA"0<NB0:LNu Hypercache-ST[2][ |Hypercache ST|Cache ein-/ausschalten?][AN|AUS|WEITER][2][ |Einstellungen sichern?][[SPEICHERN|ENDE|WEITER][2][ |Hypercache auf Bit 6|oder Bit 7?][BIT 6|BIT 7|PRGINFO][1][ |Hypercache ST-Switch V1.0|1989 -soft|von Markus Fritze]S[ OK ][3][ |Fehler beim Speichern!][ABBRUCH][C:\HYPER.INFA appl_init#menu_register evnt_mesag 4form_alertstartown_stackappstart1acc_alert2aesaddr_inint_indo_itacc_namemainloopevnt_buffacc_alertdo_it1contrlaes_para_blkint_outgswitch_cache1 10global  "addr_outende% cache_statusacc_alert3cache_bitdo_it3Gfnamerdwrt_status rdwrt_stat_err save_anfangsave_ende10Wacc_io_error &r,rdwrt_status1 Wswitch_cacheHYPER.ACC7rdwrt_status2acc_infodo_it4GFdo_it5do_it0gwg;F*;* Hypercache-ST Switch V1.0* *;* Ein kleines Programm zum An/Abschalten des Cache bei Hypercache ST *;* Das Programm luft als ACC & PRG (nur umbenennen!). *;* Diesen Trick kann man sehr gut zum Testen von ACCs verwenden. *;* ACHTUNG! Neben dem alten Test auf parent, hat Atari den Test des A0- *;* Registers als ACC-Test empfohlen, d.h. wenn A0 den Wert 0 *;* enthlt, ist das Programm auch als PRG gestartet worden, *;* ein Wert <>0 ist als Zeiger auf die Basepage des ACC anzu- *;* sehen. Wenn das nicht mal eine gute Tat von Atari ist (Denn *;* bedenke: ltd. GEMDOS braucht die Basepage NICHT 256 Bytes *;* vor dem TEXT-Segment zu stehen! Auch wenn dies immer so ist.*;* Ausnahme: Das AES/DESKTOP im ROM, dort steht die Basepage *;* sinnvollerweise dann doch im RAM...) *;*D *;* 1989 by -soft, written by Markus Fritze 08.12.1989 21:18 *;F*;Fast-Load (siehe 68000er 11/89);Auszug aus der GEM-Library;Zeiger auf die Basepage, wenn ACC;0<> kein ACC =>;-1=PRG (0 steht fr ACC);Basepage vom Stack holen;Eigenen Stack einrichten (fr ACC ntig!);Programmlnge;Basepageadr des Starters;MShrink();Status einlesen;und Cache entsprechend schalten;appl_init();zwei globale Variablen;PC-relative-Adressierung spart 1 Word;wenn PRG direkt starten;appl_id;menu_register();F*;* Die Hauptschleife des ACCs) *;F*;evnt_mesag();ACC_OPEN?;1.Alert;Status toggeln;form_alert(an,aus,weiter);WEITER angewhlt;neuen Status setzen;Cache schalten;2.Alert;SPEICHERN ist Default;form_alert(Sichern, Weiter, Abbruch);SPEICHERN;WEITER;ENDE;wenn ACC in die Event-Schleife zurck;sonst Pterm0();Status sichern (1: Status lesen);SPEICHERN;3.Alert;akt.Einstellung anzeigen;form_alert(Bit 6,Bit 7,Abbruch);PRGINFO =>;Bit 6 oder 7 merken;4.Alert;Programminfo anzeigen;form_alert(Abbruch);wenn ACC in die Event-Schleife zurck;bei PRG-Aufruf wieder zum Haupt-Alert;F*;* Cache schalten (Bit 6 oder 7, Cache an oder aus) *;F*;Bit 6 oder 7? (1 oder 2);$40 bzw. $80 erzeugen;neuen Status setzen;Cache an? Ja! =>;Cache an/aus;F*;* Status in der Datei HYPER.INF speichern (D5:0) bzw. lesen (D5:1) *;F*;'C:\HYPER.INF' (Pointer hinter '\');als PRG gestartet?;Ja! =>;Zeiger auf den Pfad;Super(on);Bootdevice;Bootdevice einsetzen;Super(off);Fcreate() oder Fopen();Fehler =>;Fwrite() oder Fread();sollte 0 sein!;Fclose();alle Bytes geschrieben (gelesen)?;Nein! =>;alles ok!;Lesen?;Ja! => kein Fehler;ABBRUCH;form_alert(Abbruch);F*;* Mein eigener kleiner AES-Aufruf$ *;* D0=Die ersten 4 Eintrge im int_in-Array (Bytebreite!) *;F*;int_in-Array lschen;und die neuen Daten eintragen;AES aufrufen;F*;* Nun ein paar wichtige Daten( *;F*;0: Cache an, 1:Cache aus;Bit 6 oder 7 (1 oder 2);F*;* Und ordentlich Zwischenspeicher$ *;F*;Allgemeine AES-Variablen;0=ACC, -1=PRG;jedem Programm seinen eigenen StackeZw deP ; Nދ>yL 6Jm8k^8:| 6=e\P9l4U2qd$KN~uo_Z6etЖEQQܯC|XխgJ4i<4iMS_1YIKLMzKL_竟!ځwhH2w8Ҡڠ@P8ҳ;&pS8w)YI˥B!DoqؐEJKH ӳ ğ?.e纡Յe5B=60xZ%u |Y~՛Ӭ_%R/_bб9X03ثIK^ym9 TTs>]Z j.T5o-`e44gҀ(jٜXa!wz?n8 R!)?AJ@7,lK/$'Q:Ngnp$"8rdOŸŞ`q֡pcלa!TRUCbNusD9?@wB^.U>q޶6=vlBO;@3iI6Xf&}G"=Ifbg򲣊_<F'Aހ: .q S 659*iCf7K&S1y?@sϩrqj.T}=6i_f[ FEZR`%A"ErVRrrTF^zS=ug}B+gfL߆l^G5vab*&b1Vm'>6%:5I[xLC"{U7"SK/Uj KiV/i aX%6,?tDK5rCg9U'V/)UsƖҬQў"l ZQ~9 B=ۺ2%4*fBi5E d$mƢ6c}V1X-GZ|b~;ng ;ƢBh?%v8[8(9[1{S8.VR8[imu ͣ|'6$œI}dz bra.s poczatek nazwa: dc.b 'CARS.REL',0 directory: dc.b 'F:\SYMULATO.RY\LOTUS.3' even poczatek: pea directory(PC) move.w #$3B,-(SP) trap #1 addq.l #6,SP tst.l D0 bne term move.l SP,-(SP) move.w #$20,-(SP) trap #1 move.l D0,konkon linea #0 [ Init ] linea #$0A [ Hidem ] lea $FFFFFA01.w,A0 moveq #0,D0 movep.l D0,0(A0) movep.l D0,8(A0) movep.l D0,$10(A0) move.b #$48,$16(A0) lea $060000,SP lea $FFFF8240.w,A0 move.w #7,D0 petla_1: clr.l (A0)+ dbra D0,petla_1 bsr.s procedura jmp $0664A0 procedura: move.w #$19,-(SP) trap #1 addq.l #2,SP add.w D0,nr_dysku move.w D0,-(SP) move.w #7,-(SP) trap #$0D addq.w #4,SP tst.w D0 beq.s koniec move.w #2,-(SP) pea nazwa(PC) move.w #$3D,-(SP) trap #1 addq.w #8,SP move.w D0,handle pea $0664A0 move.l #$020000,-(SP) handle equ *+2 move.w #0,-(SP) move.w #$3F,-(SP) trap #1 adda.w #$0C,SP move.w handle(PC),-(SP) move.w #$3E,-(SP) trap #1 addq.w #4,SP nr_dysku equ *+2 move.b #'A',$4510+$0664A0 rts konkon equ *+2 koniec: move.l #12345678,(SP) move.w #$20,-(SP) trap #1 addq.l #4,SP term: clr.w (SP) trap #1 end 3;Snpq՚(ۡ=뗁1/-M-h[C޻ބNGXp`0vCḊ= ig+ ldSsb繽[{ZޡP=2,+PʊDb/WgSS/_KFM`Y v2јy}/JolE~Rچ&\ˡ+I4b.ᷳVPx2,=p_y/Pݻ!jL^_]'.>3I'"(=~UYKJ|#Zԕfhg$fGI ǵrHߚ4hQM4r=*̹T046is~i{&]8hw=y4Z@>-q|l@vr]'z]9z-:n>}Z)ท]zTQr:r;ڂk=`4'hn Fe?^W׆ǫEc'C-0_7:9`,,oO4Hx://<JNAO K/ ?<NA\BgHz?<NNAPJkA |t0< c_Jk<b鎌Q*n, MJfJfHx?<HNA\/?<HNA\Jgdo`/?<INA\/?<HNA\JgH*@/.,HnHzH/<KNAO.k*/ ?<INA\/B/<KNAO Sf BgHx?<1NABgNAL_*.PRGBUGABOO.PRG {iExR} /&CG6mrAIHu}`%Sj\!#לcOnMlcЀ0F Q"3m[)-=nA\@s۟i;E!P(& opo|LK5܃/%It"&0/Pi}9w ;u|VWj RP5_x-c%[UΕp>eNX%C\$6#IC{}\| 8J{~mo˰U-,xZ2ZaW;AP+<04K)yŰ6f&Bzס o;4cDrIǂxGT)U %?S2{Xj.44gݭtս|YC〜i?`n,o:| " |Ҏ.A/ //<JNAO < a3bMBV NAXJkP L&GST-&CFG:a|` g4< eQBatafQaav$KBaJgta@JAkRBDga`aQ MpR@Jf .W.CFGBBg/ ?<NAXJktfp`2<0k< c_<bIa:`^0 ,f>a*DNugb< da< e<*fa< d`g>< g< gNu :g /?<INA\ :g /?<INA\BV CFG Konverter | fr Druckertreiber | | von Markus Fritze| 1989 -soft][ Weiter ][3][ Irgendein Fehler ist | aufgetreten ..... ][ Ende ]:VFC $޶2f =l?࢖3At; J; ܺy,GwEg8htAvvѰ4Avz{@&X:_H8H8?H/@D`M"'/H6QЧB@6:4448J.$ (869;<=>2G ,8I3& @ 5 @:@@ ?@"",o:| " |Ҏ.A/ //<JNAO <a3MBV < a# < < aK?<NAT@A:Bg/ ?<GNAPJfS\*.HEXB# # <aJyg< < aKJf %\fBK -:f@A??<NAXJkT/ ?<;NA\JkKBg/ ?<NNAPJk?</NAT @.(R/?<HNAg(@#NAg\&@#SBg/ ?<=NAP<k/ /??<?NAO fB4x??<>NAXJk L&GST-&CFG:a|`g< eQBa ta"fQ!a"a v$KBa"Jgta"@JAkRBDga `a Q# MpR@Jf .W).CFGBBg/ ?<NAXJkf`2<0k< c_<bIa`^0 ,faDNug'< da< e<*fa< d`g'< g< gNu :g/?<INA\ :g/?<INA\BV < a#3 < < a <4aBgNAHA5BBA6"0<NBp0:LNu[1][ HEX -> CFG Konverter | fr Druckertreiber | | von Markus Fritze| 1989 -soft][ Weiter ][3][ Irgendein Fehler ist | aufgetreten ..... ][ Ende ] appl_initaesap_idMgraf_handle+int_in0Ngraf_mousealertaddr_in4form_alertpathloop1fname- Zfsel_inputint_out-gem_exitloop2loop3loop4errormerk_hex_memmerk_cfg_memnext_linescode_jmp0code_loop1code_jmp1ignore_restcode_loop3get_hexbcode_jmp4code_jmp3code_loop5code_jmp2endeloopy1loopy2get_hexb0get_hexb3get_hexb1get_hexb2get_charspcreturnnext_lines1error1error2alert2appl_exitcontrolaes_pb05:global ?addr_out5CFg appl_read appl_write appl_findappl_tplay appl_trecord appl_bvset appl_yield evnt_keybd evnt_button evnt_mouse evnt_mesag evnt_timer evnt_multi evnt_dclick menu_barmenu_icheck menu_ienable !menu_tnormal "menu_text#menu_register $menu_unregister(objc_add)objc_delete *objc_draw+objc_find,objc_offset -objc_order .objc_edit/objc_change 2form_do3 form_dial5form_error 6form_center 7form_keybd 8form_button Fgraf_rubberbox Ggraf_dragbox Hgraf_movebox Igraf_growbox Jgraf_shrinkbox Kgraf_watchbox Lgraf_slidebox Ograf_mkstate Psrcp_readQsrcp_write Rscrp_clear [fsel_exinput dwind_create ewind_openfwind_close gwind_delete hwind_getiwind_setjwind_findkwind_update lwind_calcmwind_newnrsrc_loadorsrc_freeprsrc_gaddr qrsrc_saddr rrsrc_obfix xshel_readyshel_write zshel_get{shel_put|shel_find}shel_envrn ~shel_rdefshel_wdefxgrf_stepcalc xgrf_2box MN_SELECTEDWM_REDRAWWM_TOPPEDWM_CLOSEDWM_FULLEDWM_ARROWEDWM_HSLIDWM_VSLIDWM_SIZEDWM_MOVEDWM_NEWTOPWM_UNTOPPED(AC_OPEN)AC_CLOSE2CT_UPDATE3CT_MOVE4CT_NEWTOPWA_UPPAGEWA_DNPAGEWA_UPLINEWA_DNLINEWA_LFPAGEWA_RTPAGEWA_LFLINEWA_RTLINEG_BOXG_TEXTG_BOXTEXTG_IMAGEG_PROGDEFG_IBOXG_BUTTONG_BOXCHARG_STRINGG_FTEXTG_FBOXTEXTG_ICON G_TITLENONESELECTABLEDEFAULTEXITEDITABLERBUTTON LASTOB@TOUCHEXITHIDETREEINDIRECTNORMALSELECTEDCROSSEDCHECKEDDISABLEDOUTLINED SHADOWEDMU_KEYBDMU_BUTTONMU_M1MU_M2MU_MESAG MU_TIMERFMD_STARTFMD_GROWFMD_SHRINKFMD_FINISHARROWTEXT_CRSRHOURGLASSBUSYBEEPOINT_HANDFLAT_HANDTHIN_CROSSTHICK_CROSSOUTL_CROSSUSER_DEFM_OFFM_ONWI_NAMEWI_CLOSEWI_FULLWI_MOVEWI_INFO WI_SIZE@WI_UPARROWWI_DNARROWWI_VSLIDEWI_LFARROWWI_RARROWWI_HSLIDEWF_KINDWF_NAMEWF_INFOWF_WORKXYWHWF_CURRXYWHWF_PREVXYWHWF_FULLXYWHWF_HSLIDE WF_VSLIDE WF_TOP WF_FIRSTXYWH WF_NEXTXYWHWF_NEWDESKWF_HSLSIZEWF_VSLSIZEEND_UPDATEBEG_UPDATEEND_MCTRLBEG_MCTRL;F*;* Make CFG - erstellt aus .HEX-Dateien .CFG-Dateien *;* 1988/9 by -soft, written by Markus Fritze *;F*;Fast-Load (siehe 68000er 11/89);Basepageadresse holen;Gre der Basepage + Stackgre (1k);+ Gre des TEXT-Segments;+ Gre des DATA-Segments;+ Gre des BSS-Segments;= Gesamtlnge des Programms;Lnge nun gerade;+ Programmstart (Basepageadresse);Stack endet dort;Programmlnge;Adresse der Basepage;Funktionsnummer + Dummyword (0);Mshrink(0,Basepageadr,Prglnge);Nur noch den Stack korrigieren;Das war schon alles. In A6 befindet sich noch die Basepageadresse und in a5;liegt die totale Programmlnge (TRAP #1 zerstrt D0-D2 und A0-A2!);Programm als GEM-Applikation anmelden;F*;* Nun geht's mit dem Programm los$ *;F*;Zeiger auf int_in (Global!);Mausform nun Pfeil;Titelalert ausgeben;Dgetdrv();Dgetpath();Ende suchen;Extension anhngen;Fileselector ausgeben;Mausform nun Biene;Ende des Pfades suchen;Extension lschen;Dsetdrv();Dsetpath();Fsfirst();Datei nicht gefunden? => Ende;Fgetdta();Dateilnge holen;fr das abschlieende Nullbyte;Malloc() fr HEX-Datei;Malloc() fr CFG-Datei;Lnge wieder zurck;Fopen();Fread();Datei komplett gelesen?;Datei mit Nullbyte abschlieen;Fclose();Dateiheader;Leerzeilen vorne berlesen;Der Filename darf max.32 Zeichen lang sein;Druckername holen;Zeilenende erreicht;schon 32 Zeichen lang?;mit Nullbyte abschlieen;5 Hexbytes holen;Fehlerhafte Eingabe;6.Byte holen;dann den Rest ignorieren;2 Datensegmente;Lnge des Strings;Funktionsnummer oder ST-ASCII-Code;0=Tabellenende;2 Bytes sind's schon;Hexzahlen holen;ein Byte mehr;bis zum Komma;Lnge eintragen;dann den Rest ignorieren;Ende des Filenames suchen;Extension suchen;.CFG statt .HEX;Fcreate();Fwrite();Fclose();Datei komplett geschrieben?;Bit 15=1 fr fehlerhafte Eingabe;Hexzahl holen;nchstes Zeichen holen;Zeichencode zurckwandeln;Flags setzen;Z-Flag setzen;dann den Rest ignorieren;bis zum ersten Zeichen < 32;Nchstes Zeile ermitteln (Remarks & Leerzeilen berlesen);<=32 => CR/LF und Space berlesen;kein Remark =>;bis zum ersten Zeichen < 32;Spaces berlesen;Tabs berlesen;Mfree();Mfree();Mausform nun Pfeil;Fehleralert ausgeben;Applikation wieder abmelden;und verlassen mit Pterm0();F*;* Mein eigener kleiner AES-Aufruf$ *;* D0=Die ersten 4 Eintrge im contrl-Array (Bytebreite!) *;* Bit 24-31 = Der Opcode bzw. die Funktionsnummer *;* Bit 16-23 = Anzahl der Eintrge in int_in *;* Bit 8-15 = Anzahl der Eintrge in int_out *;* Bit 0-7 = Anzahl der Eintrge in addr_in *;* Die Anzahl der Eintrge in addr_out ist stets 0. *;* Ausnahme:Bei rsrc_gaddr() dort sollte dort eine 1 stehen (Atari hlt *;* sich allersdings selbst nicht dran) *;F*;besser retten, man kann nie wissen;contrl-Array lschen;und die neuen Daten eintragen;AES aufrufen;F*;* Nun folgt noch der DATA-Bereich$ *;F*;Der AES-Parameterblock;F*;* Fr das Programm3 *;F*;F*;* und noch ein wenig BSS-Bereich% *;F*;AES-Arrays;ID der Applikation;Buffer fr den Pfadnamen;Der Filename;Bufferadresse des CFG-Speichers;Bufferadresse des HEX-SpeicherspGdF>I,,q`EGST-CFG:NEC P6 H  tR R~Ra~o~ R\R R|R R~Rcr yR~RY R@RʭbW:f Mݾo~ fE M|%̓J(@(N|gVizI4@05>IJfb wY$%D՜bAĀǀGxX:x՝aĀ gxX'xaǀ՝xĀs{Vh]`@Dwvwjp@c^gW=WN $]ݠ՜Ľ&(HDF&:Y:`Ȯ dULԹH2@ 7FHݣ ђFhɎm2EcH@@l{  2ELlnHHPPQE M `Q'kF_x-pт 3Q_uj:$dgA @aP"IFY/ K¤2t"QCZ08OlMj`4g VO#0p'g6AAg3AgRAG&C9ItKG,IQR& f\Q(_R@n'"Hr jOȃ`Ja`?&/, f 2 UgIVr\X f P|!xI(,6>0 @k<mVWM}I*@A_E wE0GjrQ([ԝj !Apx1:*gmM:"AE@ R Bx +************************************************************************* * Druckeransteuerungsdatei fr den NEC-kompatible Drucker * * * * alle Angaben sind in HEX zu machen (siehe unten) * * * * Die Daten sind 1st Word (plus) kompatibel, es kann also eine * * bereits vorhandene CFG-Datei weiterhin genutzt werden. * * * * 1989 by -soft, written by Markus Fritze 29.12.1988 01:56 * ************************************************************************* * Druckername (max.32 Zeichen lang) NEC P6 * Konfigurationsvariablen (werden noch ignoriert) 0,0,C,48,0,0 * Druckersteuerzeichen * (1) Funktionsnummer (in der jetzigen Version gibt es nur die 1) * (2) gesendeter String * 1, D,A * CR/LF Zeilenvorschub beim Drucker *1F * Sequenz vor einer Zeile 20, 1B,74,1,1B,52,0 * Sequenz vor dem Drucken *21, 1B,52,2 * Sequenz nach dem Drucken 0 * NULL Endekennung dieser Tabelle * Konvertierungstabelle * * (1) ST Zeichencode (in aufsteigender Reihenfolge) * (2) Ausgabestring (darf auch fehlen) * * Codes, denen der Ausgabestring fehlt, werden als Space gedruckt * * Codes, welche nicht in der Tabelle angefhrt sind, werden ohne Wandlung * direkt gedruckt 7F *  - N/A 9E, 1B, 52, 2, 7E, 1B, 52, 0 * - German B0, 61, 8, 7E * - a BS ~ B1, 6F, 8, 7E * - o BS ~ B2, 1B, 52, 4, 5C, 1B, 52, 0 * - Danish 1 B3, 1B, 52, 4, 7C, 1B, 52, 0 * - Danish 1 B4 * - N/A B5 * - N/A B6 * - N/A B7 * - N/A B8 * - N/A B9, 1B, 52, 1, 7E, 1B, 52, 0 * - French BA * - N/A BB * - N/A BC * - N/A BD, 63 * - c BE, 72 * - r BF * - N/A C0, 79, 8,1B,52,1,7E,1B,52,0 * - y BS French C1, 59 * - Y C2 * - N/A C3 * - N/A C4 * - N/A C5 * - N/A C6 * - N/A C7 * - N/A C8 * - N/A C9 * - N/A CA * - N/A CB * - N/A CC * - N/A CD * - N/A CE * - N/A CF * - N/A D0 * - N/A D1 * - N/A D2 * - N/A D3 * - N/A D4 * - N/A D5 * - N/A D6 * - N/A D7 * - N/A D8 * - N/A D9 * - N/A DA * - N/A DB * - N/A DC * - N/A DD, 1B, 52, 2, 40, 1B, 52, 0 * - German DE * - N/A DF * - N/A FE * - N/A 0 * NULL Endekennung dieser Tabelle a<JB?`٣DžuăNq 8x\ r%;ϜBtW3G?<&`:Ձ>eAEp.a.ɡ^N<y0?`{}x.rޢ?N^noPWyw^Eg3~ |>39'xVK`G^ߎ(7c@Yαn>\ p -soft's TurboAss V1.7.6 q 07.05.91 Version 1.7.6: TurboAss: - Es wird eine Meldung ausgegeben, wenn KAOS installiert ist, da es Probleme geben kann. - Die MacTraps-Makros sind nicht mehr drin. Das spart etwa 10KB. Wer sie unbedingt braucht, kann eine solche TurboAss-Version bekommen. - .DCB, .DCB.B, .DCB.W und .DCB.L werden vom Assembler nun erkannt und in DCB, etc. konvertiert. Bugaboo: - Es wird eine Meldung ausgegeben, wenn KAOS installiert ist, da es Probleme gibt! - SYSINFO wurde erweitert. Es wird nun die SFP004 (68881 fr 68000er), sowie ein 68881/2 erkannt. Spectre-GCR-Erkennung an den TT angepat. - Der 68040 wird erkannt. - Da die Variablen REZ und COLORS entfallen sind, gibt es endlich eine Art Ersatz: Die Variable USERSCR zeigt auf die Struktur des aktu- ellen Bildschirms, INITSCR zeigt auf die Stuktur des Bildschirms beim Aufruf des Debuggers. Ich glaube, da man nun wieder genug Unsinn mit den Bildschirmseiten treiben kann... Hier nun noch die Struktur: RSRESET scr_colors: RS.W 16 ;die 16 Farben scr_adr: RS.L 1 ;die Videoadresse scr_offset: RS.B 1 ;Offset to next line (STE) scr_hscroll: RS.B 1 ;Horizontal Bit-wise Scroll (STE) scr_rez: RS.B 1 ;die Video-Auflsung scr_sync: RS.B 1 ;das Sync-Bit des Shifters scr_moni: RS.B 1 ;der Monitor ($00:s/w $40:Farbe) scr_overscan: RS.B 1 ;OverScan ($00:Ja $FF:Nein) Version 1.7.5: TurboAss: - Nach dem Speichern wird wieder die Cursorposition vor dem Speichern angesprungen. - Um PARTs einzuklappen kann man nun auch auf den ENDPART Help drcken. Auch kann ein PART eingeklappt werden, der in der ersten Sourcetextzeile anfngt. - Der TurboAss hat nach Shift-F6 gefragt: "Sourcetext lschen?". Dabei hat er allerdings "JA" und "NEIN" vertauscht! Sagte man NEIN, so wurde der Source gelscht. Ein sehr peinlicher Fehler. Wann der in den Code hineingekommen ist, ist mir ein Rtsel... - a EQU 8:lsl.l #a,D1 => Es wurde falscher (zuflliger) Code erzeugt. Sollte jetzt richtigen Code erzeugen. ADDQ, SUBQ, sowie alle Verschiebebefehle (ASL,LSL,ROL,ROXL, etc.) waren davon betroffen. Bugaboo: - Die Variable TRACE wurde wieder eingefhrt. Nheres siehe Anleitung. Die Variable ist irgendwann einmal "verloren" gegangen. - SYSINFO erkennt nun auch, wenn eine IMP-MMU im Rechner vorhanden ist. SYSINFO teilweise korrigiert (Taktanzeige, TT-Info, etc). - Der Bugaboo luft noch NICHT auf dem Grobildschirm vom TT! Sonstige Programme: - Zustzlich zu MODULE.SRC gibt es nun auch RBMODULE.SRC von Ralf Biedermann. Man kann damit neben SMALLDRI (siehe Anleitung) auch SMALLGST erzeugen, um z.B. Assembler-Module in Fortan eionzubinden. - TURBOASS.DAT bzw. MODULE.SRC: Bei Modula-Modulen werden nicht mehr doppelt soviele Words erzeugt, wie das Programm lang ist. Wer kein TDI-Modula hat ( CODE( Hexcodes ) ), der sollte MODULE.SRC neu assemblieren, wobei vorher das Flag TDI_MODULA = 0 zu setzen ist. Dann wird INLINE( Hexcodes ) erzeugt. Version 1.7.4: TurboAss: - Angepat an den Bugaboo V1.7.4. Um den Debugger nachladen zu knnen, mu man unter "Informationen" und "Reorganisieren" nun mindestens 250000 Bytes eintragen. Davon bleiben dann (wie gehabt) 40000 Bytes brig. Diese Vergrerung war ntig, weil das Nachladen von BUGABOO.SYM einen Absturz bei zu wenig Speicher bewirken konnte. - Funktioniert nun auch im TT-FastRam. Malloc() darf sich auch Blcke aus dem FastRam holen. Der Assembler wird somit nochmal ein Stck schneller. Bei Problemen (ich habe keinen TT, s.u.) evtl. die Bits dafr lschen. Wenn der Fehler dann nicht mehr auftritt => Fehler- meldung an mich! - XBRA-ID "TASS" fr alle benutzten Vektoren. Bugaboo: - Angepat an den TT. Da ich selbst keinen TT habe, kann ich Fehler bzgl. des TT auch nicht ohne weiteres erkennen bzw. nachvollziehen. Falls es Probleme gibt, bitte ich um eine genaue Fehlerbeschreibung (mglichst mit Beispiel). - Neues Exception-Handling. . Exception-Texte nun englisch . Anpassung an den TT . Es werden nun alle unbenutzten Vektoren von 2 bis 63 abgefangen. . kleinere Unschnheiten korrigiert - SYSINFO an den TT angepat - Symbole werden in der Symboltabelle nun auf 32 Bit verglichen und nicht mehr mit nur 24 Bit. Ausnahme: Das HiWord (Bits 16-31) wird wenn es gleich $FF ist, auf $FFFF erweitert. Dies ist bei Short- Adreierung auf den I/O-Bereich sinnvoll. - XBRA-ID "BUG1" fr alle benutzten Vektoren. Sonstige Programme: - CALL.PRG, CALL.SRC : Anpassung an den Bugaboo V1.7.4 Der Bugaboo V1.7.4 wird durch das alte CALL.PRG nicht mehr erkannt! - umsortiert und neu geordnet. Dies war ntig, da das TOOL-Archiv so gro war, da es entpackt nichtmal mehr auf eine Diskette pate. Im TOOLS-Archiv sind nun nur noch 3 Ordner: PACKER, TOSPATCH und neu dazugekommen ist: MIDIMAZE.2 Version 1.7.3: TurboAss: - Symbolsuche im Block strzt nicht mehr ab, wenn das Symbol auerhalb des Blockes definiert ist, aber im Block nicht vorkommt. Bugaboo: - nix neues Version 1.7.2: TurboAss: - assembliert nun auch auf dem TT - funktioniert auch in der Bildschirmauflsung TT-mittel - kann Symboltabelle wieder an den Debugger bergeben (Fehler war seit Version 1.7.1 drin) - Wenn man ein SRC-File durch Doppelklick auf dem Desktop in den TurboAss geladen hat, wurde der Filename stets auch an den Bugaboo weitergereicht, wenn dieser z.B. nach der Assemblierung aufgerufen wurde. Dies ist nun behoben! (Fehler war seit ARGV-Commandline-Aus- wertung durch den TurboAss drin) Bugaboo: - nix neues Einige nderungen vom TurboAss V1.26 zur Version V1.7.1: ACHTUNG!!! Wichtige nderungen im Debugger (siehe unten) !!! Noch ein paar in der Version V1.70 nicht vorhandene, aber in der Anleitung aber schon beschriebene, Features: -lokale Symbole sind immer noch NICHT implementiert -PC-relative Optimierungen ber Segmentgrenzen knnen immer noch NICHT wieder in absolute Adressierungen zurckgewandelt werden -Absolut-Long kann immer noch NICHT automatisch nach Absolut-Short optimiert werden -Absolut-Short kann immer noch NICHT automatisch nach Absolut-Long zurckgewandelt werden Allgemeines: -Der TurboAss und Bugaboo sollten auf ALLEN ST bzw. STE funktionieren. Lediglich eine Anpassung an den TT lt noch auf sich warten, da ich noch keinen TT habe. Der Bugaboo in der Version V1.26 funktioniert nicht auf Rechnern mit IMP-MMU. Der Fehler ist ebenfalls raus. -Der Debugger untersttzt jetzt OverScan, d.h. er arbeitet zwar immer noch auf dem kleinen Bildschirm, kann aber auf den OverScan-Modus um- schalten. Der TurboAss nutzt nun auch eine erhhte Auflsung, z.B. von OverScan, Maxon-MGE (s/w-Modus), Atari-Grobildschirm. -Ich habe eine neue Versionsnummern-Zhlung eingefhrt, also nicht verwirren lassen: V1.7.0 steht fr Version 1, 7.Erweitung im Funk- tionsumfang und 0.Bugfix der 7.Erweiterung. Wen diese Versionsnummer- ierung an Apple erinnert, der hat recht (aber nicht weitersagen...). Ich kann nun die Versionen etwas genauer auseinander halten. Erweiterungen des Assemblers: -ASCII-Laden ist nun etwa 1.5 bis 4 (!) mal schneller. -Bei ADDQ bzw. SUBQ ist kein # mehr ntig. Der Assembler ergnzt es nun automatisch (wie bei MOVEQ und TRAP auch). -Wenn man mit SHIFT-F2 die Accessory-Leiste aufgerufen hat, kommt man mit UNDO oder ESC wieder zurck zum Assembler. -Mit dem Pseudo-Opcode BREAKPT 'String' kann man einen speziellen Breakpoint bereits im Assembler einsetzen. Der Unterschied zur ILLEGAL-Directive ist der anzugebende String. Dieser String wird beim Erreichen des Breakpoints vom Debugger nmlich als Befehlszeile angesehen, d.h. der String wird vom Debugger sofort ausgefhrt. Somit kann man sich beim Erreichen der Directive z.B. automatisch einen Speicherdump o.. ausgeben lassen. Der String darf sogar mehrere Befehle enthalten, welche mit ':' zu trennen sind (':' entspricht somit RETURN, wenn man selbst tippt). Folgt dem ':' noch ein '-', so wird der Befehl nicht ausgegeben. Ein abschlieendes ':' ist jedoch nicht ntig. Beispiel: BREAKPT '"Speicherberlauf":-M ^A0#4:L PC#4' Der Text 'Speicherberlauf' wird bei Erreichen des Breakpoints ausgegeben. Dann werden 4 Zeilen ab A0 als Memorydump ausgegeben. Ab Abschlu werden noch 4 Zeilen ab PC (der automatisch hinter die Directive gesetzt wird) gelistet. -Beim Laden von ASCII-Sourcetexten (mit F8) bzw. beim Zuladen wird nun die Lnge der Datei in kb, sowie die schon gelesenen kb ausgegeben. Dies ermglicht endlich ein Abschtzen der Ladezeit bei groen Dateien. -Symbol ersetzen (Ctrl-E) hat nun eine weiter SEHR (!!!) praktische Mglichkeit ganze Symbolgruppen umzubenennen. Jeder, der schon einmal ein reassembliertes Programm dokumentiert hat, kennt das Problem: Man hat ein Unterprogramm (nennen wir es "draw_shape") mit etwa 30 Labeln. blich ist wohl die Bezeichnung der Label mit "draw_shape1", "draw_shape2", etc. statt der vorgegebenen Bezeichnung "Lxxxx" o.. Ab sofort ist dies kein Problem mehr: Das Unterprogramm als Block markieren, als zu suchendendes Symbol "~" eingeben und als zu ersetzendes Symbol (in unserem Beispiel) "draw_shape". Nun OK drcken. Das erste Symbol im Block heit nun "draw_shape"; die Folgesymbole sind aufsteigend numeriert. Diese Funktion nennt sich "Umbennen von Symbolen", d.h. wenn ein Symbol zweimal existiert (doppelte Deklaration), wird es, obwohl es sich nicht mehr im Block befindet, an beiden Stellen umbenannt (denn intern es es ja dasselbe Symbol). Wer dies Vermeiden will, kann nur zu "Symbol ersetzen" bergehen und dort im Block ersetzen. -Wieder habe ich mich dazu herabgelassen einige weitere Optimierungen zu implementieren. Diesmal bringen die Optimierungen zwar keinen Speicherplatz, dafr werden pro Opcode 4 Takte eingespart. Es werden Folgende Befehle optimiert: CLR.L Dx in MOVEQ #0,Dx LSL.x #1,Dx in ADD.x Dx,Dx (ACHTUNG: V-FLAG WIRD VERNDERT!) ASL.x #1,Dx in ADD.x Dx,Dx ROXL.x #1,Dx in ADDX.x Dx,Dx ADDA.W #xx,Ay in LEA xx(Ay),Ay Die Optimierungen knnen mit CTRL-O ausgefhrt werden (siehe Meneintrag "Assembler" und dort unter "Optimierungen"). -Der Assembler kennt nun smtliche Toolbox und OS-Traps des Mac. Inklusive der evtl. Parameter. Da wohl die wenigsten einen Apple Macintosh haben, profitieren wohl lediglich Sren und ich davon... -Die HELP-Taste zum Einklappen von PARTS funktioniert nun anders. Man erinnert sich: PART in eine Zeile, ENDPART irgendwo dahinter. Wenn man nun auf dem PART stand und HELP gedrckt hat, dann wurde der Textblock eingeklappt, bzw. mit CTRL-HELP auch alle folgenden Blcke. Nun wird HELP folgendermaen behandelt: HELP sucht nun ab der Cursorzeile einen PART (aufwrts!), wird ein PART gefunden, so wird der Block einge- klappt. Man erspart sich also das Suchen von der PART-Directive. Beim Ausklappen von einem PART wird die Zeile mit dem Part nun auch auto- matisch auf dem Screen (vertikal :-) zentriert. -Mit CTRL-SHIFT-U werden unbenutzte Symbole entfernt. Dies ist fr die Leute praktisch, welche die List-Ausgabe in eine Datei umlenken, mit einem Texteditor nachbearbeiten und nun in den Assembler laden. CTRL-U markiert weiterhin alle unbenutzen Symbole als Warnungen, welche man ja mit ALT-W an/ausschalten kann. -Der TurboAss kennt jetzt auch die ARGV Parameterbergabe. Erweiterungen des Debuggers: -Einige neue Tastenkombinationen (hnlich dem MonST2): CTRL-Y : F1 - aktuellen Befehl tracen CTRL-S : F5 - aktuellen Befehl berspringen CTRL-A : F2 - Breakpoint hinter den aktuellen Befehl + GO (!) -Wenn der Debugger die Datei "BUGABOO.SYM" findet (dort wo auch "BUGABOO.INF" gesucht wird), wird diese Datei geladen (ach nee) und der Disassembler wird alle absolut short bzw. long Adressierungen ber diese Tabelle laufen lassen. Soll heien, wenn in der Tabelle z.B. _sysbase = $4f2 steht, wird der Disassembler bei allen Befehlen, welche auf diese Adresse mit obigen Adressierungsarten zugreifen, die Adresse durch den Symbolnamen "_sysbase" ersetzen. Eine "BUGABOO.SYM" Datei befindet sich (mit Sourcetext) bereits im LIBRARY-Ordner. Die SYM-Dateien lassen sich mit F1 erzeugen (siehe Anleitung). -Ich habe vergessen zu erwhnen, da man ohne den Debugger zu verlassen nun einen Blick in den Sourcecode werfen kann, wenn man vom Assembler aus in den Debugger gesprungen ist. Also: wenn man irgend- wann whrend des Debuggens nicht mehr wei wo man sich im Source be- findet; einfach F6 drcken. Dann kann man die aktuelle Position im Sourcecode sehen. ndern kann man da natrlich nix. Noch was: Der Blick in den Sourcecode kostet KEINEN (!) Speicherplatz, nicht einmal die Symboltabelle ist ntig, da der Assembler die Adressen umrechnen kann. Die Adressen am linken Rand sind brigens alle gleich, dies liegt daran, da Sren und ich noch keine Mue gefunden haben den Sourcecode-Teil auch nur irgendwie zu optimieren (Wenn der Source lnger als 10000 Zeilen ist, wird's ziemlich langsam). Aber besser langsam und unflexibel, als gar nix. (P.S. Welcher Assembler-Debugger hat schon einen solchen Debugger?) -Bei Bedingungen der Befehle: Scc, Bcc und DBcc ndert sich der "" am Zeilenanfang in ein "", wenn die Bedingung erfllt ist! Allerdings nur am aktuellen PC. ACHTUNG! NEUHEITEN IM DEBUGGER: -Smtliche Filenamen und Pfade (z.B. LOAD, DIR, etc.) MSSEN jetzt in Anfhrungszeichen (") eigeschlossen werden. Dies ist zwar lstig, ist aber durch eine Umstellung der internen Strukturen ntig geworden. -Bisher konnte man ja dem Debugger in der Commandline einen Filenamen oder einen Befehl bergeben (mit "@" davor). Dies kann man nun auch, wenn man mit dem CALL.PRG den residenten Debugger aufruft. -Man kann nun soviele Befehle pro Zeile angeben, wie ntig. Dazu sind die Befehle durch einen ":" zu trennen (deswegen mu man die Pfade in Anfhrungszeichen angeben). -Auch in der oben erwhnten Commandline kann man nun mehrere Befehle angeben. Zu beachten ist auch, da bei der BREAKPT-Directive des Assemblers nun auch Doppelpunkte, anstellen von "|" zur Trennung der Befehle verwandt werden mssen. -Das Scrolling im Debugger verhlt sich etwas anders als vorher. Das "ruhige" Scrolling ohne Flackern der untersten Zeile mute dran glauben (an was, kommt spter). -Auf allgemeinen Wunsch hin, funktioniert: DIR ".." auch ohne "\" am Ende wieder (fr Unwissende, damit kommt man ein Verzeichnis zurck, d.h. eine Ordnerebene nach oben). -Wenn bis hierher irgendwelche Probleme, Ungereimtheiten, etc. auftreten, bitte sofort bei mir melden! -Man kann nun mit "#load "Filename.Bug" " eine ASCII-Datei einlesen. Was das soll? Nun, die Datei kann beliebig Befehle enthalten. Zeilen, welche mit einem "%" anfangen werden ignoriert. Mal sehen, was sich in Zukunft bei den Batch-Dateien ergibt (ich bitte um Vorschlge!). Achtung: Die Befehle DIR, FOPEN, FCLOSE und FORMAT sind in einer Batch-Datei nicht mglich. -Der KEY-Befehl wurde ersatzlos gestrichen. Da die Tastaturmakros im Debugger diesen berflssig machen. -Neue Variablen im Debugger: MIDI :<>0 => Scancodes ber MIDI werden ignoriert, sonst werden diese als Tastencodes interpretiert (fr PC-Tastaturen) CACHE :Inhalt des CACR-Registers bei 68020 oder hher MEMCHECK:<>0 => Speichertest entfllt. Ein Dump wrde dann statt "--"-Zeichen einfachen einen Busfehler ergeben. ALL :Setzt alle Register (D0-A6) auf den gleichen Wert. Praktisch zum Lschen o.. (die Variable kann man natrlich nur setzen) SYMFLAG :<>0 => interne Symboltabelle (BUGABOO.SYM) nicht benutzen SYMTAB :Zeiger auf die interne Symboltabelle (0=keine vorhanden) -Vor dem Verlassen des Debuggers, wird getestet, ob an Adresse $40C eine gltige Adresse steht. Wenn dem so ist, springt der Bugaboo den Vektor an. Wofr das gut ist? Nun, so kann man noch auf die Schnelle seine Workstation schlieen o.. Man braucht nur ein Unterprogramm einklinken, da all solche Dinge tut. Damit kann man dann ein Programm beliebig abbrechen (und wieder in den Assembler zurck), ohne da beim nchsten Start das VDI abstrzt (weil eine Workstation nicht geschlossen wurde). -Mit dem neuen Befehl COOKIE kann man sich das aktuelle CookieJar ansehen (wenn vorhanden). Damit folge auch ich der Modeerscheinung stets jeden Kleinkram in den Debugger einzubauen (zumal man sich das CookieJar mit "m.l {5a0}.l" ausgeben lassen konnte). -Ich habe noch einige Vorschlge von Thomas Waldmann bercksichtigt (auch wenn in Deinem Brief das Gegenteil steht, Thomas): .Wenn man die (neue) Variable RING auf 1 setzt, wird der Ring-Indikator-IRQ nicht mehr angeschaltet. Das werden Modem-User wohl zu schtzen wissen. Default: RING=0 .Die Variable SAVEAREA ist jetzt auch unter dem Namen S zu erreichen. Der lange Name hat mich auch schon immer gestrt. .Beim DIR-Befehl wird jetzt vor Programmen mit der Extension PRG, TOS, TTP, APP, ACC, PRX und ACX automatisch LE als Default vorgegeben. Auch dies sollte wohl sinnvoll sein, da man Programme zum Debuggen sowieso mit LE laden mu. .Hat eine GEMDOS-, (X)BIOS-Funktion einen bergabeparameter, welcher ein Langwort ist, wird das Langwort (wenn >0) als Zeiger aufgefat und der String auf den er zeigt ausgegeben (maximal jedoch 32 Zeichen). Damit kann man sofort sehen, welche Datei z.B. bei Fsfirst gesucht wird. Leider kann man auch sehen, welchen Speicherblock (bzw. welchen Inhalt) man freigibt. Lt sich leider nicht einfach ndern. -Und wieder einige Vorschlge von Thomas Waldmann: .Die nachgeladene Symboltabelle "BUGABOO.SYM" kann man nun auch selbst nutzen. Man kann z.B. ?{.phystop}.l eintippen, um phystop auszulesen. Der Debugger nutzt jedoch weiterhin zuerst die Symbole der Tabelle des nachgeladenen Programms. Wenn dort das Symbol nicht gefunden wurde, wird in "BUGABOO.SYM" gesucht. -Wenn man OverScan im Debugger nutzen will, mu man zuerst die neue Variable OVERSCAN auf 1 setzen und die Einstellungen sichern. Ab dann erkennt der Debugger OverScan beim Umschalten. Diese Erkennung hat aber einen Nachteil: Der Bildschirm flackert beim Tracen ("wie Sau"). Dies liegt daran, da zur Erkennung vom aktivierten OverScan min. 2 VBLs gebraucht werden und somit die Umschaltung der Bildschirmseiten auffllt. Wenn man als OverScan-User die Variable auf 0 setzt, kann man den Debugger nur in normalen Modus benutzen. Mit dem neuen Befehl OVERSCAN kann man den User-Screen zwischen normaler Auflsung und OverScan Auflsung umschalten. Dies wird mit dem entsprechenden XBIOS- Befehl aus dem OverScan Treiber getan. Somit wird also auch das GEM umgeschaltet. Halt, halt, halt: Das mit dem Flackern gibt's nicht mehr! Es ist doch zu lstig. Dafr merkt der Debugger allerdings das Umschalten von den Auflsungen nicht mehr. Da sowas aber nur selten getraced werden mu, kann man (so glaube ich (und auch Karsten Isakovic)) darauf verzichten -Die Variable REZ (und andere, die mit dem Bildschirm zu tun haben) sind erstmal ersatzlos entfallen. Sonstiges: -Andreas Alich hat uns freundlicherweise ein Programm names RSC2S zur Verfgung gestellt. Dieses Programm ermglicht es RSC-Dateien direkt in den Assemblerquelltext einzubinden. Nheres im RSC2S-Ordner. Markus Fritze CbT GXZ0x3/Of?Z;k@y03AX@0{3 ޤLCc֐fol_O,|gK1?!-appSxqyYRY0r3 L "/FЀym*x~^`7̩Lpb3 ~uEߺ9?g|y~Iw| abWگW czĀ4ry`ݝԄ}Yix=moV7be|[g~!,w}laOP`CGXY/`%R~"vD5ZwO鏠<=h:^ʌS O$(n৐@$T|G8)àv B;pG I[,g?({*dpeI_l*/ ?DL yN|p|Np||gyH)`2|M7&?`*x;.Q|rg,sK}?BD 4?a cM`(8[K@hr!þ2$O e ^hl;ϸdNe0<8dNW'dA#@~/?St#F 5G`h3-LNsA,:S'd&W,/߀ w6=E}7o_ Qj4G^+?QYKn]q[{"`s!~a3ARR$ J N@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@______________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@______________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@______________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@______________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@______________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@______________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@______________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@______________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@______________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@______________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@______________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@______________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@______________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@______________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@______________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX<>EXITSAVE ??/20$Cb;Zy3Rq +Ji#Ba:Yx :V r         6  R0ȹLV<88Y 8y`L8#^EWf%< g5ǎ0  gnIy6<( _{D̀9"'Ժ`P@pD#@o启!P`  Py?{2 (@8s|5Xɛ < N0>^y>~{x._{m.{nDl/y xsp8/<  =<xH| ! L \` t|='pyA܁ܾ#91Ao߱yxzx Ip$,?1~~ŝ/V  7W`/``{g`PKrz B 0!J/laqy ;2Yġ@y t TaFYyf]@/ #.CL? 0~p0[`j) >NOTIZBLKFIRSTLINLASTLINELASTPAGENEXTPAGEEXITBUTSAVEBUTTEXTSTRխcu= 73 ?k?_~{Gg` 9N`@o ?>O|G@ b>/m;>??<?O/p_xoW=?#Fހ~H~\,|C^>`pC1y`?{T$/ ևkA޾!!X^fҦaY7?Dܐ9 u?W7?/ GGG³}-cSP$\,| ?~7_>'g`'c;1gX@kK ͟o>qw;#O^H3'x->QBidMwpĒ`oߟ@]x`vw3X70$d??-x?/Ód0X!nqp `jy'3< egGt`%,l \ 3G|\3?b`/`h _(hAXۇ[C@z8֍4/P pumPlz [q=>::7!@$ǂǀ`` qP0o.3 Zs?/<pQ#gqƗ\͞0 8dugo_buf equ 512 ;sektorw do_zapisu equ 1 ;status sektora do zapisu ; ; Struktura pozycji w buforze: ; drive nr .B ; status .B ; bit 7 - zapis przez DMA(1)/nie DMA(0) ; bit 0 - sektor do zapisu (1) ; nr sektora .W ; adres bufora .L ; wskanik do nastpnego .L ; TEXT inicjuj_bufor: move.w #dlugo_buf,d1 move.l wskanik_listy(pc),a0 ;wskanik pierwszego pola move #512,d0 mulu d1,d0 ;dugo pl informacyjnych move.l a0,a1 add.l d0,a1 ;wskanik do obszaru danych subq #1,d1 move.w #$FF00,d0 ptla_inicjacji: move.w d0,(a0) ;drive_nr=$FF & status = $00 move.l a1,4(a0) lea 12(a0),a0 move.l a0,-4(a0) lea 512(a1),a1 dbf d1,ptla_inicjacji moveq #-1,d0 move.l d0,-4(a1) ;ostatni wskazuje na -1 rts ; Parametry: ; d0.w drive_nr ; d1.w nr_sektora ; ; Wyjcie funkcji: ; D0.L wskanik pozycji poprzedniej dla A0 lub A1 ; A0.L wskanik pozycji znalezionej ; A1.L wskanik pierwszej pustej pozycji ; lub ostatniej pozycji zapisanej ; Gdy A0 == -1.L wtedy A1 wany. ; ; Funkcja wyszukuje w licie wybrany sektor, ; natomiast w przypadku nie znalezienia zwraca ; wskanik do wolnej pozycji w licie. znajd_sektor: movem.l d2-d4/a2-A3,-(a7) moveq #0,d2 move.l d2,d3 move.l d2,a2 move.l d2,a1 move.l wskanik_listy(pc),a0 moveq #-1,d4 ;warto wskanika w ostatniej pozycji szukaj_sektora: cmp.b d0,(a0) bne.s nie_ten_dysk cmp.w 2(a0),d1 bne.s nie_ten_dysk move.l d4,a1 ;wskanik do pustego sektora=-1.L move.l a2,d0 ;poprzedni bra.s sekt_znaleziony nie_ten_dysk: tst.b 1(a0) ;Czy sektor do zapisu ? status bne.s sektor_zajty move.l a0,a3 ;wolny sektor move.l a2,d3 sektor_zajty: cmp.b #$FF,(a0) ;Czy sektor jeszcze nie zajty ? (dysk = -1) bne.s szukaj_dalej move.l a0,a1 move.l a2,d2 ;poprzedni wskanik przed wolnym szukaj_dalej: move.l a0,a2 move.l 8(a2),a0 cmp.l d4,a0 bne.s szukaj_sektora move.l d4,a0 ;gdy sektor nie znaleziony A0=-1.L move.l a1,d0 ;czy znaleziony wolny sektor? bne.s wsk_peny ;tak move.l a3,d0 ;czy znaleziony sektor do skasowania? beq.s wsk_pusty ;nie move.l a3,a1 ;ustaw sektor do skasowania move.l d3,d0 ;jako wolny bra.s sekt_znaleziony wsk_pusty: move.l d4,a1 ;brak miejsca w buforze move.l d4,d0 ;i nic nie znalezione wsk_peny: move.l d2,d0 sekt_znaleziony: movem.l (a7)+,d2-d4/a2-A3 rts ; Parametry: ; A0.L przestawiana_pozycja ; A1.L poprzednia_pozycja ; Funkcja przestawia wybran pozycj na pocztek listy. na_pocztek: move.l a2,-(a7) lea wskanik_listy(pc),a2 move.l 8(a0),8(a1) move.l (a2),a1 move.l 8(a1),8(a0) move.l a0,(a2) move.l (a7)+,a2 rts ; Parametry: ; D0.W drive ; D1.W sektor startowy ; D2.W liczba sektorw ; ; Funkcja przygotowuje miejsce do zapisu lub odczytu ; sektorw z dysku lub na dysk. ; ; Wynik: ; D0 = 0 gdy gotowe ; D0 =-1 gdy brak miejsca przyg_miejsce: movem.l d4-d7,-(a7) move d0,d5 move d1,d6 move d2,d7 subq #1,d7 moveq #-1,d4 ptla_przyg: move d5,d0 move d6,d1 add d7,d1 bsr znajd_sektor cmp.l d4,d0 beq koniec_przyg cmp.l d4,a0 bne.s przyg_peny move.b d4,(a1) ;pusty sektor (drive =-1) move.l a1,a0 przyg_peny: move.l d0,a1 bsr na_pocztek dbf d7,ptla_przyg moveq #0,d0 koniec_przyg: movem.l (a7)+,d4-d7 rts ; Parametry: ; D0.w drive ; D1.w sektor startowy ; D2.w liczba sektorw ; A0.L miejsce przeznaczenia (waciwy bufor) ; ; Wykonanie operacji powoduje przygotowanie bufora dla odczytywanych ; sektorw, zainicjowanie odczytania brakujcych sektorw ; i przekopiowanie caoci do miejsca przeznaczenia. ; ; Wynik: ; D0.L standardowe bdy rw odczytuj_sektory: movem.l d5-d7/A6,-(a7) move.l a0,a6 move d0,d5 move d1,d6 move d2,d7 move.w #dugo_buf,d0 lsr.w #1,d0 cmp.w d0,d7 bhi.s odczyt_normal kontr_wolnych_rd: move.w #dugo_buf,d0 sub.w liczba_do_zapisu,d0 cmp.w d7,d0 bhi.s os1 bsr sprawd_inicjacj bra.s kontr_wolnych_rd os1: move d5,d0 bsr przyg_miejsce move d5,d0 move d6,d1 move d6,d2 bsr doczytaj_sektory tst d0 bne bd_odczytu move d5,d0 move d6,d1 move d6,d2 move.l a6,a0 bsr kopiuj_z_cache bd_odczytu: movem.l (a7)+,d5-d7/a6 rts odczyt_normal: move d5,d0 movem.l (a7)+,d5-d7/a6 pea read_sectors(pc) ;standardowy_odczyt rts ; Parametry: ; D0.w drive ; D1.w sektor startowy ; D2.w liczba sektorw ; A0.L miejsce przeznaczenia (waciwy bufor) ; ; Wykonanie operacji powoduje zapenienie bufora zapisywanymi ; sektorami i zainicjowanie zapisu tych sektorw ; i przekopiowanie caoci do miejsca przeznaczenia. ; zapisuj_sektory: movem.l d5-d7/A6,-(a7) move.l a0,a6 move d0,d5 move d1,d6 move d2,d7 move.w #dugo_buf,d0 lsr.w #1,d0 cmp.w d0,d7 bhi.s zapis_normal kontr_wolnych_wr: move.w #dugo_buf,d0 sub.w liczba_do_zapisu,d0 cmp.w d7,d0 bhi.s zs1 bsr sprawd_inicjacj bra.s kontr_wolnych_wr zs1: bsr zatrzymaj_zapis move d5,d0 move d6,d1 move d7,d2 bsr przyg_miejsce move d5,d0 move d6,d1 move d6,d2 move.l a6,a0 bsr kopiuj_do_cache bsr inicjuj_zapis moveq #0,d0 movem.l (a7)+,d5-d7/a6 rts ; ; Parametry: ; D0 - nr dysku ; D1 - sektor startowy ; D2 - liczba sektorw ; A0 - adres przeznaczenia ; Wynik: ; D0 - <> 0 wystpienie bdu ; ; Procedura znajduje w buforze wybrane sektory ; i kopiuje je do miejsca przeznaczenia ; w przypadku nie znalezienia sektora ; generowany jest bd. kopiuj_z_cache: movem.l d5-d7/a6,-(a7) subq #1,d2 move d0,d5 move d1,d6 move d2,d7 move.l a0,a6 ptla_rd_copy: move d5,d0 move d6,d1 move d7,d2 bsr znajd_sektor move a0,d0 cmp.l #-1,d0 beq.s copy_rd_err lea 4(a0),a0 move a6,d3 btst #0,d3 beq.s kopiuj_r_parz moveq #64,d0 petla_niep_rd: move.b (a0)+,(a6)+ move.b (a0)+,(a6)+ move.b (a0)+,(a6)+ move.b (a0)+,(a6)+ move.b (a0)+,(a6)+ move.b (a0)+,(a6)+ move.b (a0)+,(a6)+ move.b (a0)+,(a6)+ dbf d0,petla_niep_rd bra.s skopiowa_rd kopiuj_r_parz: moveq #16,d0 petla_parz_rd: move.l (a0)+,(a6)+ move.l (a0)+,(a6)+ move.l (a0)+,(a6)+ move.l (a0)+,(a6)+ move.l (a0)+,(a6)+ move.l (a0)+,(a6)+ move.l (a0)+,(a6)+ move.l (a0)+,(a6)+ dbf d0,petla_parz_dr skopiowa_rd: dbf d7,ptla_rd_copy moveq #0,d0 copy_rd_err: movem.l (a7)+,d5-d7/a6 rts ; ; Parametry: ; D0 - nr dysku ; D1 - sektor startowy ; D2 - liczba sektorw ; A0 - adres rda ; Wynik: ; D0 - <> 0 wystpienie bdu ; ; Procedura znajduje w buforze wybrane sektory ; i kopiuje zawarto rda do bufora ; w przypadku nie znalezienia sektora ; generowany jest bd. kopiuj_do_cache: movem.l d5-d7/a6,-(a7) subq #1,d2 move d0,d5 move d1,d6 move d2,d7 move.l a0,a6 ptla_wr_copy: move d5,d0 move d6,d1 move d7,d2 bsr znajd_sektor move a0,d0 addq.l #1,d0 beq.s copy_wr_err move.b #do_zapisu,1(a0) lea 4(a0),a0 move a6,d3 btst #0,d3 beq.s kopiuj_w_parz moveq #64,d0 petla_niep_wr: move.b (a6)+,(a0)+ move.b (a6)+,(a0)+ move.b (a6)+,(a0)+ move.b (a6)+,(a0)+ move.b (a6)+,(a0)+ move.b (a6)+,(a0)+ move.b (a6)+,(a0)+ move.b (a6)+,(a0)+ dbf d0,petla_niep_wr bra.s skopiowa_wr kopiuj_w_parz: moveq #16,d0 petla_parz_wr: move.l (a6)+,(a0)+ move.l (a6)+,(a0)+ move.l (a6)+,(a0)+ move.l (a6)+,(a0)+ move.l (a6)+,(a0)+ move.l (a6)+,(a0)+ move.l (a6)+,(a0)+ move.l (a6)+,(a0)+ dbf d0,petla_parz_wr skopiowa_wr: dbf d7,ptla_wr_copy moveq #0,d0 copy_wr_err: movem.l (a7)+,d5-d7/a6 rts DATA wskanik_listy: dc.l pocztek_listy BSS liczba_do_zapisu: ds.l 1 pocztek_listy: 9ρx25׍DEFFF*\?<:86;ߪ78>]eGP)V3dfijlmpprtw{|A>+y+25ylLڶ]ƖK2"JHLbE_qu3fҀ笗 ZN[/D_?KrbD̹IKolhYVR^G^u;;9u:qJEC@<952/Ē(()+-/247:=@MNKZ[d]cdd ilo"soSlo&wWxo;>Tby<;:.$!      "$%&)+-./'246780;=?@A9DFHIJBMOQRSKVXZ[\T_acde]hjlmnfqsuvwoz|~x!*3<ENW`ir{ ]#,5>GPYbkt} T(R^_ `abc d Aefghijklmnop qrstuvwxyz{|}~*       .& ,&$&0404/8$'()6&0 ,"&$$(     J(""   !"#$% &'()*&+,-.&/012345&6$7 89:";<=>? @2ABCD EFGHIJKLMNO"PQRS T U V$WXY&Z([&\*] ^_`ab"c0 d,efghijklm"no2pqr&st u"vwxyz${|}~*$"(4:$BT @@@ "@ @ @@+"@1$@ @, @@0&% fP /MOHx&//<JNAO <a9=@,A$r=A A$-H <a9Q?<NAT<A@paapaJ.f=n, A-H <a9=@1A-H <a9pPfpa#`pPfA+0'0,BPpa2aA+0(0,BPpa2` P)f0(a#`p-@ <a9L<=| H< <a90.o=@A 00C <a9pA B  <a9A 0L@ADEH0H <a9A 00 <a90.aA$-H A p . -@6 8 <sa9Bn <ya92A$Bp r<H;N`JngSnNu=ANungRnNuBnNupaapaX=n <a9 <a9J.gBgNANuH"RA 0 0AAHAAACp"CAQNuHn?<ANA\BgHn?<< L&Mf|  / / ??<@NAO fIQJk??<>NAXNuBgHn?<=NAP,k~I:<&LIxaf< g< gSDk`BeSEkR@fJk??<>NAXNuSGnK / Hx??<?NAO .jpNuNuA+00,BX03C7 01=@ =|A+-H < `=@ <HABBBPAC"0<NBp0.LNu             ______________________________X<>EXITSAVE / Notizblock Notizblock . C:\NOTIZBLK.TXT appl_init#menu_register evnt_mesagev_clsvwkstartACC_IDown_stackappstart1 appl_write _aesaddr_inint_inmainloopacc_nameevent_loopevnt_buff_te_6_ob_6control_te_5_ob_5int_out_te_4d v_opnvwk_ob_4_te_3_ob_3_te_2global_ob_2_te_firstlin_ob_firstlin_ob_0addr_outsend_id_tree_notizblk ende0^% ACC_OPENACC_CLOSEACC_ACCMgraf_handlemesag_buffap_idversion_objects)AC_CLOSE(AC_OPENmenu_idsend_message - event_loop1event_loop2 ,a<$,e,a@$_aes _g_title_g_icon_g_fboxtext save_pages_g_ftext_g_string_g_boxchar appl_exit-_aes_pb  "_g_button_g_ibox_g_userdef_g_image_g_boxtext_g_text_g_box_notizblk_textstr_savebut_exitbut_nextpage_lastpage_lastline_firstlin_nbb_nib_nted_nobsAES/VDI-Library-EQUs appl_read appl_findappl_tplay appl_trecord appl_bvset appl_yield evnt_keybd evnt_button evnt_mouse evnt_timer evnt_multi evnt_dclick menu_barmenu_icheck menu_ienable !menu_tnormal "menu_text$menu_unregister(objc_add)objc_delete *objc_draw+objc_find,objc_offset -objc_order .objc_edit/objc_change 2form_do3 form_dial4form_alert 5form_error 6form_center 7form_keybd 8form_button Fgraf_rubberbox Fgraf_rubbox Ggraf_dragbox Hgraf_movebox Hgraf_mboxIgraf_growbox Jgraf_shrinkbox Kgraf_watchbox Lgraf_slidebox Ngraf_mouse Ograf_mkstate Psrcp_readQsrcp_write Rscrp_clear Zfsel_input [fsel_exinput dwind_create ewind_openfwind_close gwind_delete hwind_getiwind_setjwind_findkwind_update lwind_calcmwind_newnrsrc_loadorsrc_freeprsrc_gaddr qrsrc_saddr rrsrc_obfix xshel_readyshel_write zshel_get{shel_put|shel_find}shel_envrn ~shel_rdefshel_wdefxgrf_stepcalc xgrf_2box MN_SELECTEDWM_REDRAWWM_TOPPEDWM_CLOSEDWM_FULLEDWM_ARROWEDWM_HSLIDWM_VSLIDWM_SIZEDWM_MOVEDWM_NEWTOPWM_UNTOPPED2CT_UPDATE3CT_MOVE4CT_NEWTOPWA_UPPAGEWA_DNPAGEWA_UPLINEWA_DNLINEWA_LFPAGEWA_RTPAGEWA_LFLINEWA_RTLINEG_BOXG_TEXTG_BOXTEXTG_IMAGEG_PROGDEFG_IBOXG_BUTTONG_BOXCHARG_STRINGG_FTEXTG_FBOXTEXTG_ICON G_TITLENONE_FLGSELECTABLE_FLG DEFAULT_FLGEXIT_FLGEDITABLE_FLGRBUTTON_FLG LASTOB_FLG@TOUCHEXIT_FLG HIDETREE_FLG INDIRECT_FLGNORMALSELECTEDCROSSEDCHECKEDDISABLEDOUTLINED SHADOWEDMU_KEYBDMU_BUTTONMU_M1MU_M2MU_MESAG MU_TIMERFMD_STARTFMD_GROWFMD_SHRINKFMD_FINISHARROWTEXT_CRSRHOURGLASSBUSYBEEPOINT_HANDFLAT_HANDTHIN_CROSSTHICK_CROSSOUTL_CROSSUSER_DEFM_OFFM_ONWI_NAMEWI_CLOSEWI_FULLWI_MOVEWI_INFO WI_SIZE@WI_UPARROWWI_DNARROWWI_VSLIDEWI_LFARROWWI_RARROWWI_HSLIDEWF_KINDWF_NAMEWF_INFOWF_WORKXYWHWF_CURRXYWHWF_PREVXYWHWF_FULLXYWHWF_HSLIDE WF_VSLIDE WF_TOP WF_FIRSTXYWH WF_NEXTXYWHWF_NEWDESKWF_HSLSIZEWF_VSLSIZEEND_UPDATEBEG_UPDATEEND_MCTRLBEG_MCTRL v_opnwkv_clswkv_clrwkv_updwkwvst_load_fonts xunload_fonts vs_clipv_plinev_pmarkerv_gtext v_fillarea v_cellarray gv_contourfill rvr_recfl v_bar v_arc v_pieslice v_circle v_ellipse v_ellarc v_ellpie v_rbox v_rfbox  v_justified vswr_modevs_colorvsl_typeqvsl_udstyvsl_widthvsl_colorlvsl_endsvsm_typevsm_height vsm_color vst_height kvst_point vst_rotation vst_fontvst_colorjvst_effects 'vst_alignment vsf_interior vsf_stylevsf_colorhvsf_perimeter pvsf_udpatmvro_cpyfmyvrt_cpyfmnvr_trnfmiv_get_pixel !vsin_modevrq_locator vsm_locator vrq_valuator vsm_valuator vrq_choice vsm_choice vrq_string vsm_string o%vsc_formvvex_timvzv_show_c{v_hide_c|vq_mouse}vex_butv~vex_motvvex_curvvq_key_sfvq_extndvq_color#vql_attributes $vqm_attributes %vqf_attributes &vqt_attributes tvqt_extent uvqt_widthvqt_namevq_cellarray svqin_modevqt_fontinfo vqt_justified vq_chcells v_exit_cur v_enter_cur v_curupv_curdownv_curright c_curleftv_curhome v_eeos v_eeol v_curaddress  v_curtext v_rvonv_rvoffvq_curaddress vq_tabstatus v_hardcopy v_dspcurv_rmcurv_form_adv v_output_windowv_clear_disp_listv_bit_image vq_scanv_alpha_text <vs_palette =v_sound>vs_muteQvt_resolution Rvt_axisSvt_originTvq_tdimensions Uvt_alignment [vsp_film\vqp_filename ]vsc_expose bv_meta_extents cv_write_meta cvm_pagesize cwm_coordsdvm_filename ev_offsetfv_fontinitP0>0>0>0>0>0>0_ob_7>_te_70_ob_8>_te_80_ob_9>_te_90_ob_10>_te_100_ob_11>_te_110_ob_12>_te_120_ob_13>_te_130_ob_14>_te_140_ob_lastline>_te_lastline 0_ob_lastpageJ_str_lastpage 0_ob_nextpageJ_str_nextpage 0_ob_exitbutJ_str_exitbut 0_ob_savebutJ _str_savebut 0_ob_textstr?_str_textstr 0_tedinfosset_page_tmplt_firstlin_valid_firstlin XACC-Unterprogramme !_tmplt_2#_valid_2 *_tmplt_3,_valid_3 3_tmplt_45_valid_4 <_tmplt_5>_valid_5 E_tmplt_6G_valid_6 N_tmplt_7P_valid_7 DefmouseW_tmplt_8Y_valid_8 `_tmplt_9b_valid_9 Gpyi_tmplt_10k_valid_10 2 0 r_tmplt_11t_valid_11 0  0 {_tmplt_12}_valid_12 $T _tmplt_13_valid_13 _tmplt_14_valid_14 read_pages_tmplt_lastline_valid_lastline RSC-Daten+ ACC-Hauptschleife mit XACC,e~ mainloop,e.NOTIZBLK.ACCtext_buf_end ,eget_byte1get_byte,e,a@$read_pagesx1read_pagesx Startup-Coderead_pages\,e~ save_pages3fname,e€save_pages2save_pages4set_page1pageanzDefmousetext_buffernext_page1main_looplast_page1save_buttonpagersc_initloopexit_buttonmainloop_exit1 varbasenext_pagemainloop_exitwindow_namelast_pageset_pagewind_handle 77save_pages1 1-0 0-0 save_pagesjumptabread_pages1read_pages3read_pages0+ + %  Gۂ2 0 0  0 $T ,_";F*;* Ein kleines Programm, welches einen Notizblock darstellt. *;* Das Programm luft als ACC & PRG (nur umbenennen!). *;* Diesen Trick kann man sehr gut zum Testen von ACCs verwenden. *;* ACHTUNG! Neben dem alten Test auf parent, hat Atari den Test des A0- *;* Registers als ACC-Test empfohlen, d.h. wenn A0 den Wert 0 *;* enthlt, ist das Programm auch als PRG gestartet worden, *;* ein Wert <>0 ist als Zeiger auf die Basepage des ACC anzu- *;* sehen. Wenn das nicht mal eine gute Tat von Atari ist (Denn *;* bedenke: ltd. GEMDOS braucht die Basepage NICHT 256 Bytes *;* vor dem TEXT-Segment zu stehen! Auch wenn dies immer so ist.*;* Ausnahme: Das AES/DESKTOP im ROM, dort steht die Basepage *;* sinnvollerweise dann doch im RAM...) *;* Das XACC-Protokoll der Stufe 0 wird untersttzt. *;* 1990 by -soft, written by Markus Fritze 08.04.1990 13:26 *;F*;Fast-Load (siehe 68000er 11/89);Version 1.0;Anzahl der Seiten;Zeiger auf die Basepage, wenn ACC;0<> kein ACC =>;-1=PRG (0 steht fr ACC);Basepage vom Stack holen;Eigenen Stack einrichten (fr ACC ntig!);Programmlnge;Basepageadr des Starters;Mshrink();appl_init();RSC relozieren;Dgetdrv();Suchpfad fr "NOTIZBLK.TXT";Datei einlesen;wenn PRG direkt starten;menu_register();ID merken;F*;* Die Hauptschleife des ACCs inkl. XACC-Protokoll der Stufe 0 *;F*;evnt_mesag();AC_CLOSE? Nein! => weiter;Message ACC_ID an das Hauptprogramm;AC_OPEN? Nein => weiter;ACC wurde aufgerufen;Empfnger: das Hauptprogramm;das ACC-Hauptprogramm ausfhren;ACC wurde beendet;Empfnger: das Hauptprogramm;Message von einem ACC?;Nein => wieder auf einen Event warten;ID des ACCs holen;und Message ACC_ID verschicken;F*;* Das eigentliche Hauptprogramm& *;F*;Desktopgre ermitteln;XYWH des Desktops;NAME;max.Windowgre setzen;Window erstellen;ist nicht mglich! =>;die Handle merken;Windowhandle;WF_NAME setzen;Windownamen setzen;NAME;Gesamtmae des Fensters errechnen;XY = 0;WH des Objektbaumes ermitteln;Windowausmae errechnen;WH des Windows;Desktopbreite - Windowbreite;Desktophhe - Windowhhe;Breite durch 2;Hhe durch 2;XY des Windows;WH des Windows;WF_WORKXYWH;Windowarbeitsbereich errechnen;kein Startobjekt, Tiefe = 8;XY bertragen;WH des Objektbaumes ermitteln;Startobjekt lschen;Doppelklick-Flag lschen;Button deselektieren;die max. Seitenzahl als Konstante;vorherige Seite;nchste Seite;Programm verlassen;wie exit_button, nur mit Speichern;erste Seite erreicht?;Ja! =>;eine Seite zurck;auf die letzte Seite;letzte Seite erreicht?;Ja! =>;eine Seite vor;auf die erste Seite;Busy Bee;Seiten abspeichern;Arrow;Stack korrigieren;Window schlieen;und entfernen;wenn ACC dann nur RTS;sonst Pterm0();Seite in D0 in die RSC einsetzen;damit die Seitennummer bei 1 anfngt;Zehnerstelle;Einerstelle;Lnge einer Seite;Zeiger auf den Textbuffer;15 Zeilen pro Seite;Zeiger im Tedinfo setzen;Zeiger auf das nchste Tedinfo;Textpointer weitersetzen;Fdelete();Fcreate();Filehandle merken;Fehler =>;temp.Zeilenbuffer;Zeiger auf den Textbuffer;Anzahl der Zeilen-1 (fr DBRA);Zeile kopieren;CR/LF anhngen;Bufferadresse;Lnge der Zeile;Fwrite();alles Bytes geschrieben?;Fehler =>;Zeiger auf die nchste Zeile;alle Zeilen geschrieben? Nein! =>;Datei offen?;Nein! =>;Fclose();Fopen();Filehandle merken;Fehler =>;Anzahl der Bytes im Buffer = Buffer leer;Seitenbuffer;Anzahl der Zeilen-1 (fr DBRA);Zeiger auf die nchste Zeile;30 Bytes pro Zeile;Dateiende =>;LF?;das wird ignoriert =>;CR?;Ja! =>;Zeilenende?;dann Bytes nicht mehr bertragen;Byte bertragen;Zeilenrest lschen;schon alle Zeilen eingelesen?;Nein, aber Seitenbuffer ist voll =>;Ende der Datei?;Nein! =>;Datei offen?;Nein! =>;Fclose();noch Bytes im Buffer?;Ja! =>;Eingabebuffer;Buffergre;Filehandle;Fread();Anzahl der gelesenen Bytes;Dateiende!!! Z=0;Byte aus dem Buffer holen;Z=1;F*;* ACC_ID-Message verschicken (D0=Empfnger) *;F*;appl_init()-ID;nicht mehr als 16 Bytes;Versionsnummer & Protokollstufe;Zeiger auf den ACC-Namen (Hier=Menname);menu_register()-ID;F*;* 8 Word-Message an D0 verschicken# *;F*;ID des Empfngers nach int_in;16 Bytes versenden;Zeiger auf den Message-Buffer;Message abschicken;Mausform D0 setzen;F*;* Mein eigener kleiner AES-Aufruf$ *;* D0=Die ersten 4 Eintrge im control-Array (Bytebreite!) *;* Bit 24-31 = Der Opcode bzw. die Funktionsnummer *;* Bit 16-23 = Anzahl der Eintrge in int_in *;* Bit 8-15 = Anzahl der Eintrge in int_out *;* Bit 0-7 = Anzahl der Eintrge in addr_in *;* Die Anzahl der Eintrge in addr_out ist stets 0. *;* Ausnahme:Bei rsrc_gaddr() sollte dort eine 1 stehen (Atari hlt sich *;* allerdings selbst nicht dran) *;F*;besser retten, man kann nie wissen;control-Array lschen;und die neuen Daten eintragen;AES aufrufen;int_out[0];Der AES-Parameterblock;F*;* Nun ein paar wichtige Daten( *;F** erzeugt von Rsc2S v1.01 1990 by Andreas Alich* objects:* trees:;F*;* Und ordentlich Zwischenspeicher$ *;F*;F*;* Die AES-"Library"2 *;F*;ab GEM 2.0;ab GEM 2.0;ab GEM 2.0;dies ist der richtige Name!;dies ist der richtige Name!;ab GEM 2.0;ab TOS 1.4;ab TOS 1.4;ab GEM 2.0;ab GEM 2.0;ab GEM 2.0;ab GEM 2.0; Die Messages des AES;Meneintrag angewhlt;Teil eines Windows mu neu gezeichnet werden;Window ist nun das aktuelle Fenster;Window soll geschlossen werden;Window soll auf max.Gre gebracht werden;Scollbalken angeklickt;Der horizontale Slider wurde bewegt;Der vertikale Slider wurde bewegt;Die Gre des Windows wurde gendert;Das Window wurde bewegt;Das Fenster wurde aktiviert (siehe WM_TOPPED);Der Fenster wird gleich inaktiv (erst ab GEM 2.0!);Ein Acc wurde angeklickt.(30 bzw. 31 ist FALSCH!);Prg wurde beendet, ACC soll seinen Speicher freigeben.;Funktion unbekannt;Messagenummern des XACC-Protokolls;der Protokollstufe 0; WM_ARROWED angeklickt (nun die genauere Definition);Balken oberhalb des Sliders;Balken unterhalb des Sliders;Pfeil nach oben;Pfeil nach unten;Balken links vom Slider;Balken rechts vom Slider;Pfeil nach links;und Pfeil nach rechts; Die Objekttypen des Resource-Baumes;Bitte in entsprechender Literatur nachschlagen; Object-Flags bei einem Objekt;Bitte ebenfalls in der Literatur nachlesen; Objekt-Status bei einem Objekt;s.o.; Die einzelnen Bits bei evnt_multi();Tastaturereignis;Maustastenereignis;1.Mausereignis;2.Mausereignis;Message des AES;Timer-Ereignis; form_dial();Bildschirmhintergrund reservieren;Ausdehnende Box zeichnen;Schrumpfende Box zeichnen;Bildschirmbereich wieder freigeben; graf_mouse(); Parameter bei wind_create(); Parameter bei wind_get() & wind_set(); wind_update();F*;* Die VDI-"Library"2 *;* Wer nheres dazu wissen mchte, sollte sich im Profibuch von Sybex *;* die Informationen dazu besorgen.# *;F*;1. Kontrollfunktionen;Open workstation;Close workstation;Open virtual screen workstation;Close virtual screen workstation;Clear workstation;Update workstation;Load fonts;Unload fonts;Set clipping rectangle;2. Ausgabefunktionen;Polyline (Byte 0=count(n));Polymarker (Byte 0=count(n));Text (Byte 2=n);Filled area (Byte 0=count(n));Cell array (Byte 2=n);Contour fill;Fill rectangle;Bar;Arc;Pie;Circle;Ellipse;Elliptical arc;Elliptical pie;Rounded rectangle;Filled rounded rectangle;Justified graphics text (Byte 2=n+2);3. Attribut-Funktionen;Set writing mode;Set color representation;Set polyline line type;Set user-defined line style pattern;Set polyline line width;Set polyline color index;Set polyline end styles;Set polymarker type;Set polymarker height;Set polymarker color index;Set character height, absolute mode;Set character height, points mode;Set character baseline vector;Set text face;Set graphic text color index;Set graphic text special effects;Set graphic text alignment;Set fill interior index;Set fill style index;Set fill color index;Set fill perimeter visibility;Set user-defined fill pattern (Byte 2=16*planes);4. Rasteroperationen;Copy raster, opaque;Copy raster, transparent;Transform form;Get pixel;5. Eingabefunktionen;Set input mode;Input locator, request mode;Input locator, sample mode;Input valuator, request mode;Input valuator, sample mode;Input choice, request mode;Input choice, sample mode;Input string, request mode;Input string, sample mode;Set mouse form;Exchange timer interrupt vector;Show cursor;Hide cursor;Sample mouse button state;Exchange button change vector;Exchange mouse movement vector;Exchange cursor change vector;Sample keyboard state information;6. Auskunftsfunktionen;Extended inquire function;Inquire color representation;Inquire current polyline attributes;Inquire current polymarker attributes;Inquire current fill area attributes;Inquire current graphic text attributes;Inquire text extent (Byte 2=n);Inquire character cell width;Inquire face name and index;Inquire cell array;Inquire input mode;Inquire current face information;Inquire just.graph.text (Byte 2=n+2) GEM 2.0!;7. Escapes;Inquire addressable alpha character cells;Exit alpha mode;Enter alpha mode;Alpha cursor up;Alpha cursor down;Alpha cursor right;Alpha cursor left;Home alpha cursor;Erase to end of alpha screen;Erase to end of alpha text line;Direct alpha cursor address;Output cursor addressable alpha text (Byte 2=n);Reverse video on;Reverse video off;Inquire current alpha cursor address;Inquire tablet status;Hardcopy;Place graphic cursor at location;Remove last graphic cursor;Form advance;Output window;Clear display list;Output bit image file (Byte 2=n+5);Inquire printer scan;Output alpha text (Byte 2=n);Select palette;Generate specified tone;Set/clear tone muting flag;Set tablet axis resolution in lines/inch;Set table axis resolution in lines;Set tablet x and y origin;Return tablet x and y dimensions;Set tablet alignment;Set camera file type and exposure time;Inquire camera file name;Disable or enable file exposure for frame preview;Update metafile extents;Write metafile item (Byte 0=num_ptsin, Byte 2=num_intin);Physical page size;Coordinate window;Change gem vdi filename (Byte 2=n);Set line offset;Init system font;v_escape2000(times) -> (klappt mit dem Konzept leider nicht...);Buffer fr evnt_mesag();Message-Buffer fr appl_write();ID des ACCs durch menu_register();Windowhandle (0=Window ist zu);ID des ACCs durch appl_init();0=ACC, -1=PRG;aktuelle Seite (0 bis ...);Spalten*Zeilen*Seiten;jedem Programm seinen eigenen Stackse}xrle^VOHA;50$##$%&(*S/ %*ܘp VZ_djpwfՅztnyd(Y MKKKUX&~rUVY\hkneMu{~L\\E` }x&PW &'.uC7ssÐLbyvf[ZҺV r>wqkf`ZTNH]X630.,G\k..-+)'"5:>BGK[{`ֵ<|6NHIKMPTX[rdd ,ΦfhkmorubX3rIn9Wyƙz. Imz,,젨@UZx.䦦7`Yvw8+}fE+5~ysmga[Uw<`D}2210/5,* ,<@EJPV]d?`޸rm{2bmhd_\uDDLO/=]rJKh]ղYimjd=yһ>4f?KgEo /+sⲴd~^w,K<꣚?f@b_kԖVpqVl廕eq] ^뗅c0p hb]K} y\=642!P;(%" $(,/_LRYaiq3nnhsb3u\"_-p ߙ^ُ%Xau}սh9-.Wɬ/g-5l%XC,2[3tWqqW*̠Vݡ%c^ZVu5+źDB>;%g1-*&9vz' #253,]DV^.$001501B0>.w 0000,0000,0000,0000,0000,0000,0000,0000 "................" $001501C0>.w 0000,0003,26F8,0747,454D,0000,0031,0000 "....&..GEM...1.." $001501D0>.w 8EC7,0347,454D,0000,8EF8,0000,E000,0347 "...GEM.........G" $001501E0>.w 454D,0001,6EF8,0000,F800,0347,454D,0002 "EM..n......GEM.." $001501F0>.w 66F8,0000,C000,0000,0000,0000,0000,DC74 "f..............t" lg:o{C 'DA4*&6<327@FQ]el_TZgvyp</7ƵƸfy`99LmF GZT9$H8QތV zs  5!$#$%'1841//8FMT[bg#GWawέ_ȼƼԻƳè#8P|`¾ӁYþƽY.뻶'=?[kNJ~xm̯‚~{ww|Wxzvqohachh`WRTgYQD;65:AC<2+$!" M@ ! "&*-/379;>><@FNSTTPPU_ggc^^dmtyy~/ߙ[+(l TurboAss V1.5-Installation 20.05.90 Frage: -Huch, was ist denn das? Da sind ja gar keine Ordner mehr auf der Disk! Antwort: -Die gesamte TurboAss-Disk ist ein einzelne Blcke aufgeteilt worden. Jeder Block wurde mit dem LArc (nicht LHarc) fr sich gepackt. Um diese Disk wieder entpacken zu knnen, gibt es das Programm TURBOINS.PRG. Frage: -Wie kann ich mich registrieren lassen? Antwort: -Das Programm TurboIns ist in der Lage ein komplettes Registrierungs- formular auszudrucken. Wer keinen Drucker hat, kann dort entnehmen was fr eine Registrierung mglichst anzugeben ist. Die Registrierung ist an die in der einfhrenden Dialogbox angegebene Adresse zu senden. Frage: -Wie habe ich TurboIns zu bedienen? Antwort: -TurboIns ist in GEM eingebunden. Man kann alle Buttons wahlweise mit der Maus selektieren oder ab mit ALTERNATE und den unterstrichenen Buchstaben. Jede Dialogbox kann man mit UNDO verlassen. Wenn man TurboIns startet, kann man whlen, ob man den Assembler installieren oder sich registrieren lassen will. Wenn man Installieren whlt, kann man in der folgenden Dialogbox anwhlen, welche Programmteile man entpacken will. Auch den Zielpfad kann man ndern. Wer nur ein Laufwerk hat, lese bitte auch die Antwort auf die folgende Frage weiter unten. Wenn man sich fr das Registrieren entschieden hat, erscheint eine von zwei Dialogboxen. Wenn man beide Dialoge richtig ausgefllt hat, sollte man DRUCKEN anwhlen. Wenn die Postleitzahl oder die Bankleitzahl dem Programm unbekannt ist, wird eine Warnung ausgeben. Man kann diese ignorieren oder aber abbrechen, um die Eingaben zu kontrollieren. Das Programm vergleicht die PLZ und BLZ mit einer Liste von >3000 PLZ und >6400 BLZ. Frage: -Ich habe keine Platte und nur ein Laufwerk. Wie kann ich den Assembler entpacken? Antwort: -Man braucht erstmal zwei doppelseitig formatierte Disketten (im folgenden B1 und B2 genannt). Als Zielpfad gibt man "B:\" an, somit ist immer, wenn das TOS die Disk B verlangt, entweder Disk B1 oder B2 einzulegen. Wenn das TOS die Disk A haben will, so ist die Originaldisk einzulegen. Von den Buttons deselektiert man "Tools". Dann klickt man auf "INSTALLIEREN". Nach einigem hin und her mit Disk B1 und der Originaldisk, landet man wieder in der Dialogbox. Nun sollte "Tools" bereits selektiert sein. Man kann also sofort wieder auf "INSTALLIEREN" klicken, um die Disk B2 zu bespielen. Wenn man den zweiten Durchgang geschafft hat, darf man das Installprogramm verlassen. Frage: -Was ist neu, auer das nun alle Dateien gepackt sind? Antwort: -Die Datei NEWS.TXT im Ordner TEXTE gibt darber Auskunft. Dazu ist jedoch vorher die Datei TEXTE.LZS zu entpacken. Global lt sich sagen: weniger Fehler sind drin. Insbesondere die bekanntesten Fehler der Version 1.26 sollten behoben sein: Autorepeat nach dem Laden des Assembler, sowie sonstige Probleme mit der Tastatur sollten der Vergangenheit angehren. Der TurboAss sollte nun auch auf dem STE funktionieren. Der Bugaboo sollte nun auch auf Rechnern mit einer besonderen Baureihe der GLUE funktionieren und nicht einfach nur den Rechner "einfrieren". Frage: -Warum ist der Markus so unfreundlich am Telefon? Antwort: -Wer mich morgens um 8 Uhr aus dem Bett klingelt (weil ich gerade mal einen freien Tag habe), kann anscheinend nicht lesen: In der Anleitung steht deutlich: NIE VOR 12UHR !!! Aber ich habe anscheinend vergessen zu sagen, da nach 22 Uhr auch keine Anrufe mehr eintrudeln sollten... Irgendwie scheinen Uhren noch nicht die Verbreitung zu haben, die ich erwartet htte... Frage: -Warum dauert die Registrierung, Anfragen, etc. immer so lange? Antwort: -Da ich fast jeden Tag von morgens bis abends fernab von zu Hause studieren mu, habe ich kaum noch Zeit Post zu beantworten. Zudem gibt es erhebliche Probleme Zeit zu finden um mal eben 7000 Fotokopien zu machen, damit Ihr zu den Anleitungen kommt. Es kann also schon mal ein ganzes Weilchen dauern. Wenn erstmal wieder Semesterferien sind, wird es (fr ein viertel Jahr) wieder schneller gehen. Bitte immer daran denken, da wir keine Firma sind, sondern nur Studenten, die ihrem Hobby frnen... Frage: -Was macht die Makro-Version? Antwort: -Die Zeit... zudem noch die ganze Post. Nun denn, ich habe erstmal ein schnes GEM-Desktop fr den Assembler geschrieben. Unsere neue Dialogbox-Routine knnt ihr ja schon im TurboIns-Programm bewundern. Als nchstes mssen wir uns Gedanken machen, wie wir den 68030, 68881, etc. sinnvoll untersttzen knnen. Makros, Includes, lokale Symbole, u.v.a.m. wollen auch wohl geplant sein. Wenn wir einen TurboAss V2 herausbringen, dann soll er auch wirklich perfekt sein. Zudem haben wir noch einige Ideen, wie man noch schner, besser und schneller in Assembler Programme entwickeln kann. Auch diese wollen wir bercksichtigen. Wenn noch jemand Vorschlge hat, soll er sich bitte jetzt melden und nicht erst, wenn der TurboAss V2 fertig ist. Frage: -Bin ich schnell per DF zu erreichen? Antwort: -Ja! Mailbox: D-Box Hamburg, 040-8502786 rep 040-8502786 300/1200/2400 8N1 (als GAST einloggen) Mein Name ist dort (wer htte es gedacht?): MARKUS Frage: -Wer hat diesen Mist geschrieben? Antwort: Markus Fritze ѨVq  9J ɍQ]@퇏caXC l< R599x: RppAr BO z33RUY`+HN\=քgDQ1zc<cJ m&*ypYBZ:k(G|Ѝ0|RV `-C Kdkٙ#x^\órufgn%nJ"٬fSrD s (sB-h!2L!g2|@02I2c#Ȁts˱feE C A:NE:Vnp0' <#Eg"<ܢ$<-g W`G;B$ "o0@S@2zTZ@|ǯpok`f 1gr, txSg8htܿCgSҗ7c @CgfEJh["L.?)@f8җ7{f`8h > S@f8-st\PSf@8h-tSH>B@"" ,. 2JJF ,"*"*" """  $ &  &   &,"$$$   @@  o<| Hz?<&NN\?>LJBf/?<1NA08TS@ xVXtJWf!<?<NATAtNuXBRAVDEMJxf,x!?<NNT3<1A@C p2|w2Q BgHz?<kHzHx"??<@NAO J@kp8H@8H/Hx}??<@NAO Jk??<>NAX!1R9 9Z oA NuA:\PICA.PICvbl_init_exitloop0returnown_vblfnameexitmerk_rezextensionmerk_colorsloop1abortfilenoW7F** Diese Routine ermglicht das Abspeichern des Bildschirms mittels ** Alt+HELP. Der Bildschirm wird im DEGAS-Format abgelegt. ** 1989 by -soft, written by Markus Fritze 19.06.1988 16:07 *F*;Fast-Load (siehe 68000er 11/89);Basepageadresse vom Stack holen;Gre der Basepage = 256 Byte;+ Gre des TEXT-Segments;+ Gre des DATA-Segments;+ Gre des BSS+Segments;Superexec(vbl_init) - Programm einklinken;Fehlernummer (-1 = Kein VBL-Slot mehr frei);Gre des gesamten Programms;PtermresF** VBL-Slot belegen (wenn noch einer frei ist) ** Ich wei auch, da kein VBL-Slot ntig ist (der alt_help-Vektor ist ** sicherlich einfacher), aber dies soll auch nur ein Beispiel sein, um ** zu zeigen, wie sich ein Programm in den VBL einklinken sollte. *F*;nvbls;_vblqueue;fr den AUTO-Ordner den 1.Slot ignorieren;Default = Fehler: Kein Slot frei;Leeren Slot suchen;Leeren gefunden, bzw. Ende der Tabelle?;keinen freien Slot gefunden;VBL-Slot belegen;Dgetdrv() - aktuelles Laufwerk ermitteln;und merken;Kein Fehler aufgetretenF** Die VBL-Routine4 *F*;kein Folgevektor;Alt+HELP gedrckt?;=> Anscheinend nicht;etv_critic merken;etv_critic auf RTS legen;Auflsung merken (0-2);Extension setzen ("1"-"3");Hier stehen die Farben;und hier sollen sie hin;16 Farben gibt's;Farbe holen;berflssige Bits ausmaskieren;und die Farben merken;schon alle Farbregister ausgelesen;Fopen("?:\PIC?.PI?",0);Fehler aufgetreten;Fwrite(Handle,34.L,Auflsung+Farben);Fehler aufgetreten;Physbase holen;= Bildschirmadresse;Gre des Bildschirms;Filehandle;Fwrite(Handle,320.L,Bildschirmadr);Fehler aufgetreten;Filehandle;Fclose(Handle);etv_critic wieder auf normalen Wert;_dumpflg setzen, da "Hardcopy" ist fertig;Filenamen fr's nchste mal ndern<$Ϩ*_η?x;/rE/M*S[0e8~LL7x/ ryogQ?x Owtx qn;/0]@x [:x7{y0g2#Yw-HrPxPx7#}ܗv\h:msFWW{vBx ^ռ2=xVR{$<r79E!S3} ?<0@WP?7 ź+?__78ѕ$<Q")<r>>to}+6TѼLQ}ԉz[zB^CQL}q' lytPvT[zVTU=^+vTuԡ+vTu+H>JB<@"" ,. 2JJF ,"*"4*" """  $ &  &   &,"$$$   @@  o<| Hz?<&NN\?>LJBf/?<1NA08TS@ xVXtJWf |?<NATAtNuXBRAVDEMJxf,x!?<NNT31A@C p2|w2Q BgHz?<kHzHx"??<@NAO J@kp8H@8H/Hx}??<@NAO Jk??<>NAX!1R9 9Z oA NuA:\PICA.PICvbl_init_exitloop0returnown_vblfnameexitmerk_rezextensionmerk_colorsloop1abortfilenoW7F** Diese Routine ermglicht das Abspeichern des Bildschirms mittels ** Alt+HELP. Der Bildschirm wird im DEGAS-Format abgelegt. ** Dieser Sourcetext enthlt den in der Anleitung beschriebenen Fehler! ** 1989 by -soft, written by Markus Fritze 19.06.1988 16:07 *F*;Fast-Load (siehe 68000er 11/89);Basepageadresse vom Stack holen;Gre der Basepage = 256 Byte;+ Gre des TEXT-Segments;+ Gre des DATA-Segments;+ Gre des BSS+Segments;Superexec(vbl_init) - Programm einklinken;Fehlernummer (-1 = Kein VBL-Slot mehr frei);Gre des gesamten Programms;PtermresF** VBL-Slot belegen (wenn noch einer frei ist) ** Ich wei auch, da kein VBL-Slot ntig ist (der alt_help-Vektor ist ** sicherlich einfacher), aber dies soll auch nur ein Beispiel sein, um ** zu zeigen, wie sich ein Programm in den VBL einklinken sollte. *F*;nvbls;_vblqueue;fr den AUTO-Ordner den 1.Slot ignorieren;Default = Fehler: Kein Slot frei;Leeren Slot suchen;Leeren gefunden, bzw. Ende der Tabelle?;keinen freien Slot gefunden;VBL-Slot belegen;Dgetdrv() - aktuelles Laufwerk ermitteln;und merken;Kein Fehler aufgetretenF** Die VBL-Routine4 *F*;kein Folgevektor;Alt+HELP gedrckt?;=> Anscheinend nicht;etv_critic merken;etv_critic auf RTS legen;Auflsung merken (0-2);Extension setzen ("1"-"3");Hier stehen die Farben;und hier sollen sie hin;16 Farben gibt's;Farbe holen;berflssige Bits ausmaskieren;und die Farben merken;schon alle Farbregister ausgelesen;Fopen("?:\PIC?.PI?",0);Fehler aufgetreten;Fwrite(Handle,34.L,Auflsung+Farben);Fehler aufgetreten;Physbase holen;= Bildschirmadresse;Gre des Bildschirms;Filehandle;Fwrite(Handle,320.L,Bildschirmadr);Fehler aufgetreten;Filehandle;Fclose(Handle);etv_critic wieder auf normalen Wert;_dumpflg setzen, da "Hardcopy" ist fertig;Filenamen fr's nchste mal ndernv`207g0H3G?3 P^ZmWP0?983>7P00>buw;Pp`X z*lҭP% ̸1ĝ>D`i03,olmRj1uqܓ:?x Y'-  sjM‡P jzxkuqw0n\8n?rv@1 movea.l 4(SP),A5 lea stos(PC),SP move.l $0C(A5),D0 add.l $14(A5),D0 add.l $1C(A5),D0 add.l #$0100,D0 move.l D0,-(SP) move.l A5,-(SP) move.w #0,-(SP) move.w #$4A,-(SP) trap #1 lea 12(SP),SP ^Ιto[w1EgL.VxtΘttΘΘc.'=.238阘2cl:dX< txLrhtΙ tGqqt1>szY^lޓq~>g> T.K)=g]..9ow[k3.33..3..<vO<qq1`sW< >xxNJu.Zu鑝3dgL3:tΙ33FL鑝H:gL?@?@^ d~ޘ: j^L˦V3:dgΙ|-fgL# movea.l 4(SP),A5 lea stos(PC),SP move.l $0C(A5),D0 add.l $14(A5),D0 add.l $1C(A5),D0 add.l #$0100,D0 move.l D0,-(SP) move.l A5,-(SP) move.w #0,-(SP) move.w #$4A,-(SP) trap #1 lea 12(SP),SP [H36tL!A30 x'<h:bΙ8h:b`4ӹҹx PəpgM8xhLY>0Y ;wKV,^.צ197tc`L@&t tq1L@'q JgwΙӔ]c/Ӟ}ưSfPg`X8<5f@ȉ1hޘ 6zc&@qp0 "1d|SFi  ̺e[cL If>LqAO u{9t͚+&on% E7}:v$ U|`IL03D;]oKj Euʼ<O:ZNhZ<HO:Z <x ;`}fU >u CS-`x eo_:b8N 4u銼?@?o ?{If 6fխ9HLL@'1|q L 8h!9cC]8Gӟz/c]2)ݗ1HDgL5>[_eLF[dfZ)[Yg nk6Y_f4.ѤY_f+s4%֤Y_ }L>-@Y_f L4>֤J<FJDDDDDDD.HH8HHJB&8@" $$'()0/-$", ""( "" D"/4&045 "5(# & " 662""(>  2#"*(2  " ".   "9 : :;<;<$ !*6=( @@@ @ "@@+"@1$@, @&% fP /OHx&//<JNAO <a 3,M K :f:,A, <a 31A, <a pPfpa#`pPfA+0'0,BPpa2aA+0(0,BPpa2` P)f0(a`:A, <aU@gpaHz.?<&NN\pa:gBgNANu3 <$HABBA"0<NB0:LNuA+00,BX03C7 01:;|A+, < `H?8>P>xraraRD|f1>LNuA1|v6KHC afIHA2<v afHQ91Ap < af1ANqpP1|Nq0Nupи8gdpNu Park Harddisk[2][ |Sollen die Harddisks|geparkt werden?][Ja|Nein] appl_init#menu_register evnt_mesag 4form_alertstartACC_IDown_stackappstart1 appl_writeaesaddr_inint_inmainloopacc_nameevent_loopevnt_buffacc_alertmainloop1defmousecontrlaes_para_blkint_outpark_all_hd5park_short_time park_all_hd3park_all_hd1 global  "addr_outsend_idNgraf_mouseende܀% ACC_OPENACC_CLOSEACC_ACCmesag_buffap_idversionpark_all_hd)AC_CLOSE(AC_OPENmenu_idsend_message - event_loop1event_loop2mainloop2)̀SHIP.ACCpark_all_hd4park_wait_hdpark_wait_hd1 park_wait_hd2 7;F*;* Ein kleines Programm zum Parken der aller angeschlossenen Harddisks *;* Das Programm luft als ACC & PRG (nur umbenennen!). *;* Diesen Trick kann man sehr gut zum Testen von ACCs verwenden. *;* ACHTUNG! Neben dem alten Test auf parent, hat Atari den Test des A0- *;* Registers als ACC-Test empfohlen, d.h. wenn A0 den Wert 0 *;* enthlt, ist das Programm auch als PRG gestartet worden, *;* ein Wert <>0 ist als Zeiger auf die Basepage des ACC anzu- *;* sehen. Wenn das nicht mal eine gute Tat von Atari ist (Denn *;* bedenke: ltd. GEMDOS braucht die Basepage NICHT 256 Bytes *;* vor dem TEXT-Segment zu stehen! Auch wenn dies immer so ist.*;* Ausnahme: Das AES/DESKTOP im ROM, dort steht die Basepage *;* sinnvollerweise dann doch im RAM...) *;* Ab der Version 1.2 untersttzt das ACC das XACC-Protokoll der *;* Stufe 0, d.h. andere Programme knnen den Namen und die ID des *;* ACCs feststellen um mit ihm zu kommunizieren. *;*D *;* Ab Version 1.3 ist sogar wieder eine Routine drin, welche (nun *;* sogar alle) Platten parken kann. Die Routine ist sinnigerweise *;* in der Version 1.2 rausgeflogen. Hat das wirklich niemand gemerkt? *;*D *;* 1989 by -soft, written by Markus Fritze 01.02.1990 16:18 *;F*;Fast-Load (siehe 68000er 11/89);Auszug aus der GEM-Library;Messagenummern des XACC-Protokolls;der Protokollstufe 0;Original-Messages;Version 1.3;Zeiger auf die Basepage, wenn ACC;0<> kein ACC =>;-1=PRG (0 steht fr ACC);Basepage vom Stack holen;Eigenen Stack einrichten (fr ACC ntig!);Programmlnge;Basepageadr des Starters;Mshrink();appl_init();zwei globale Variablen;PC-relative-Adressierung spart 1 Word;wenn PRG direkt starten;menu_register();ID merken;F*;* Die Hauptschleife des ACCs inkl. XACC-Protokoll der Stufe 0 *;F*;evnt_mesag();AC_CLOSE? Nein! => weiter;Message ACC_ID an das Hauptprogramm;AC_OPEN? Nein => weiter;ACC wurde aufgerufen;Empfnger: das Hauptprogramm;das ACC-Hauptprogramm ausfhren;ACC wurde beendet;Empfnger: das Hauptprogramm;Message von einem ACC?;Nein => wieder auf einen Event warten;ID des ACCs holen;und Message ACC_ID verschicken;F*;* Das eigentliche Hauptprogramm& *;F*;form_alert();Abbruch angewhlt;Busy Bee anschalten;Alle max.16 Platten parken;Mauszeiger wieder als Pfeil;wenn ACC dann nur RTS;sonst Pterm0();F*;* Mauszeiger umdefineren (D0=neue Mausform) *;F*;Mausform merken;graf_mouse();F*;* Mein eigener kleiner AES-Aufruf$ *;* D0=Die ersten 4 Eintrge im contrl-Array (Bytebreite!) *;F*;int_in-Array lschen;und die neuen Daten eintragen;AES aufrufen;F*;* ACC_ID-Message verschicken (D0=Empfnger) *;F*;appl_init()-ID;nicht mehr als 16 Bytes;Versionsnummer & Protokollstufe;Zeiger auf den ACC-Namen (Hier=Menname);menu_register()-ID;F*;* 8 Word-Message an D0 verschicken# *;F*;ID des Empfngers nach int_in;16 Bytes versenden;Zeiger auf den Message-Buffer;Message abschicken;F*;* Alle max.16 Platten parken) *;F*;flock retten;und sperren;Controllernummer 0-7;Laufwerk 0;parken;Laufwerk 1;parken;nchster Controller;fertig?;nein, nchsten Controller nehmen;flock restaurieren;Zugriff auf HDC;Drive nummer;"Park unit";1.Byte senden;Unit nummer;4 Byte senden;Byte 2-5 senden;Timeout =>;und das 6.Byte senden;4 Sekunden Timeout;auf das Parken warten;Timeout =>;FDC wieder selektieren;0.15 Sekunden-Timeout;Endewert des Timers;HDC fertig?;Ja! => (Z-Flag=1);Timeoutzeit erreicht?;Nein! => weiter warten;Timeout (Z-Flag=0);F*;* Nun ein paar wichtige Daten( *;F*;F*;* Und ordentlich Zwischenspeicher$ *;F*;Die Standard-AES-Felder;Buffer fr evnt_mesag();Message-Buffer fr appl_write();ID des ACCs durch menu_register();ID des ACCs durch appl_init();0=ACC, -1=PRG;jedem Programm seinen eigenen StackqFP@x3wGd#x< ΙĤDx3vP3.2Π:ftxftytu7yg9ft7tu8Ҷyg<cΙs ³j#4xek0K~㓀3(ݸRYz<d'@uǣ< ̰!fᱻ!< fѻ<HOobf<~uԵ9tx@u#6Yfp`u f/Üi@uxs3Px x0xTx4 ˕4Czu303l3q FxP1ɌNFxGP!<#<èth4;ju<&k6g6]#K7!t/;+~@$R@=)69q[?r(^qLȑJS X4 ~` }:ۘ{+3b o~_ufL 3LȑfD+"QƔkFwsVf 0u;C7 FTBʇlQmVd LV öyc`ad !p x(< l;Avȃ Ɓ1n8Du 1 31v]LfOCd"f'm0᷀&7kZ^*ϔ pi/o{B!y=܁ Zr ܇}ax@xRxbߌ!H#e 1[!hw:nCB:S!4C>@F J nQj,ZPa ?5AC" -~{ w45$'xH%L@7`aA$; 4xu&+<OO8 s&0xpU!gf************************************************************************* * Druckeransteuerungsdatei fr den Atari-Laser SLM804 * * * * alle Angaben sind in HEX zu machen (siehe unten) * * * * Die Daten sind 1st Word (plus) kompatibel, es kann also eine * * bereits vorhandene CFG-Datei weiterhin genutzt werden. * * * * 1989 by -soft, written by Markus Fritze 05.11.1989 15:05 * ************************************************************************* * Druckername (max.32 Zeichen lang) SLM804 * Konfigurationsvariablen (werden noch ignoriert) 0,0,C,48,0,0 * Druckersteuerzeichen * (1) Funktionsnummer (in der jetzigen Version gibt es nur die 1) * (2) gesendeter String * 1, D,A * nach einer Zeiler (Hier: CR/LF Zeilenvorschub) 1F,20,20,20,20,20,20,20,20 * vor einer Zeile (Hier: 8 Leerzeichen) *20 * vor dem Drucken 21, C * nach dem Drucken 0 * NULL Endekennung dieser Tabelle * Konvertierungstabelle * * (1) ST Zeichencode (in aufsteigender Reihenfolge) * (2) Ausgabestring (darf auch fehlen) * * Codes, denen der Ausgabestring fehlt, werden als Space gedruckt * * Codes, welche nicht in der Tabelle angefhrt sind, werden ohne Wandlung * direkt gedruckt 0 * NULL Endekennung dieser Tabelle 8ʹU#x+rV^ʽ {pە1l`댫qYxO*"5UFP/D/F:GH,""N:I9;`,wWj7aW2 V ]u3, q8+T`4Fݩ8=Ʃ98g<` C30&`H㳎XH;3`fd306b[4`E!vfpMQ? 'NJ5ɉ g  ~^8A<gD<qy23haT%˭fiD&!-SG뙖:+Vthb뢬k|Sh\ 8vo]\ LQ3GSvoe\SĒ "u|Sh&!u|Shu|B@"&"(" & "   """""""   ##$%%$"""""""' (())*++*,,$ (>:4448J.$ (2/35679FGHIJKLMNOPQRSTUV[@\@ WXYZ@]@^_`abd@e@c@fghijo@ @pklmn@ @qrstuv@ @w@xyz{|}  @-JJJJJ!J"@.@4@@08:O <a# #' <a?<NNTU@fHz ?<&NN\aHz?<&NN\`Hz?< NN\><S?<%NNTQp3333333 ~|?<%NNT|mE E |mE E |(mE! E" | mE"A2<u0| E!A2<0| |mARFfAE2<u0| EA2<0| |EA2<u0 EA2<0 PG|hop3333333~A?<%NNT|`nE E |pnE E E! E" E"A2<u0 E!A2<0 |onARFfAE2<u0| EA2<0| ||_nEA2<u0| EA2<0| PG|o'E! E" z "hBi3| Nu-8Nu-NuHA.BBA/"0<NBp0:0LNu(  F  2-27<AFKPUZ_d 20  ????? ?*?5U?*?5k{ ]UUUUUUV_Vy?9     appl_initevnt_timer,TAT.ACCown_stackaes3int_in0linea_var_adrendlessconstate1actionconstate2sound1action1spr3_datspr7_datspr5_datspr2_datspr6_datspr4_datspr1_dataction2action3spr_save_buff1 spr_save_buff2 action4spr_save_buff3 spr_save_buff4 action5spr_save_buff5 spr_save_buff6 action6action9action7/action10action11action12action15action13action16old_constatecontrolaes_pbint_out/.4global08addr_in:addr_out<>@BD!qqqqqqqqqqqqqqqqqqqqqQqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq;K*;* Ein kleines PD-Accessory, welches aus jede Harddisk gehrt *;K*;Fast-Load (siehe 68000er 11/89);Programm als GEM-Applikation anmelden;evnt_timer();luft nur auf Monochrom;Tastaturklick aus;tat, tata, ...;Tastaturklick wieder an;wieder eine kleiner Pause;Dosound();Vsync();Vsync();F*;* Mein eigener kleiner AES-Aufruf$ *;* D0=Die ersten 4 Eintrge im contrl-Array (Bytebreite!) *;* Bit 24-31 = Der Opcode bzw. die Funktionsnummer *;* Bit 16-23 = Anzahl der Eintrge in int_in *;* Bit 8-15 = Anzahl der Eintrge in int_out *;* Bit 0-7 = Anzahl der Eintrge in addr_in *;* Die Anzahl der Eintrge in addr_out ist stets 0. *;* Ausnahme:Bei rsrc_gaddr() dort sollte dort eine 1 stehen (Atari hlt *;* sich allersdings selbst nicht dran) *;F*;besser retten, man kann nie wissen;contrl-Array lschen;und die neuen Daten eintragen;AES aufrufen;F*;* Nun folgt noch der DATA-Bereich$ *;F*;Der AES-Parameterblock;Die AES-VariablenV 近c 9Ԋp] '=O K/.[‹?S_3q!琓39u+> 8xa߫{>x oWs/z3?դml5?w^6?ngњm@s=˼DS覲[V O=9/GpA~/^^<8]>e`x ^| Yxsx'a\یqqvnn j;x&čf Ǒnp"PfwC1wjjjj***UTUTUTUTUUQUUQUUQUUQUUQ**Q****TNJ_UҊPQUUQUUUU*UUUUUUXU@mlQw*ujjjj*/@_UP*88?@TUTUTUTUUQUUUU]UUU_UUXU@mUlUU****88UUTǪ UQUUxU<UUUUUUUUUQUUUjjjj*qUUT/UTUTUTUTUQUUxU<UUQUUUUWud UU****88UWP`UQUUUUUUUUUWudQUAUjjjj**@U?TL *TUTUTUTUQUUQUUUU@UWUUQUUQ ****U@ UUQUUPUUQUUQUUQ|(QT*Ice! 2xPtlU4pTH 5T`^^;=(|    &&   ~~@@@@CC@@@us֌,8k=:ǫ33 so?"ך?5x1x~~=bF?CVCxeO`-f2)^ `!Rx'C#rf}:}ne||vK?F7Ɏ׀x2΍1N7e#b-#_1|3]FZ#gF2N8 p}}C1Ä@G0KNj}l u .p}|zy,% 4ؒK %8I Nt%=5Vؚ{2{ %?z?x+1pk@׀X"?|MNq/ڥ%ZƉ9z9xƋ&OkF@%@u9$/i2ie%78 R8̼3C%Ef%gJ2'?:@֛\!|}} gj |0ΌYE~A͵em p}Ee58 p}@C"~8Po" q ? 픣FGst_ e>"UYAE߀4_0 #7Uߋ*@ȍȾ [;*1̎3 \Ѹ818n>D\YoGST-CFG:Epson FX80 H  R R}R R{Ra^ R{R R@R R}R R\Re^ eR~R R}R R~R R[R R]R R @R R{R R[Ro^ R|R R|Ru^ R|R yR~R R\R R]R R#R R\R R~Rf R|R R\Ra_o_ R]R R[Ra~o~ R\R R|R R~Rcr yR~RY R@R R~R+_>_<_ R[RDr)6b3B(PA: @?ঢ@SD8@C㺑0,(Cd HDP`GRPx@D ` BBB#@Et3!C bM0 Ԑ z % 81tI@D@t !1 @A!2! D $QC H8 @ >8x"0%A3: D ( F b !#1,0h\ &!!:XЇ8 BbJ`P !" @fPBJ 1ƠN" `@ "@p@ d-soft01```DEBUGGER4pNuJCjpNupNupNu-soft01```STANDARDnpNupNu <GRPA"NNpN M NNpNuSTANDARDPROGRAMM SPEICHERN-soft01``,`JDATAS A CrёC QpNuJEf -Эb J fpNupNuANU@b8 <TSLA NN.-ޭMpNA rNASNApFJDg!|ALLO|CC&`!|EMOR|YC$N Kz|DATA ZrN,XSSS  RJS K NJbNpNu+ >]& g$q$|3DATA-Zeilen fr welches BASIC? GFA OMIKRON ABBRUCH ??_o/7  ?`?@|>|>;\:l6/7 `A%=MEMORY(00000) FOR I%=0 TO 00000 READ B% POKE A%+I%,B% NEXT I% DATAZEILEN SPEICHERN$-soft01``,`6ABSOLUT A CrёC QpNuJ fpNupNuAPh Jg" ANJjAPh ANU@b(>,-ܭܭM܎ANkf JEgNpNu"pBAJg,"F$NpӒg|e`E` <SBAAJGg *A޽fpNuNNpN N NNpNu"HYgn$ y&$absolutes Formatzur Adresse:$23456 KOPIEREN SPEICHERN ABBRUCH ABSOLUTES PROGRAMM SPEICHERNRELATIVES PROGRAMM SPEICHERN-soft01```FAST STDtpNupNu <GRPA(NNpN M NNpNuFSTANDARDPROGRAMM SPEICHERN-soft01``` BASIC vpNuJ fpNupNu,-ܭܭChJgv,IVJf, /?<HN\.g&G$NڵfEC&Nڵf"GSQ, /?<IN\\"MALp 2QY",MA <XAB` MApBNNpN N NNpNupNuH瀀A ѐLNH oCE&J$رe C&rѓg|e`G`/@LNuBASIC-RELATIV SPEICHERNRELATIVES PROGRAMM SPEICHERN-soft01```SMALLDRIHpNupNu,-.ޭ/?<HN\JgC$I"-g4 J&J"(g&&4|f|@6&`Aeڗ+K&@ K BXSf gJ`rgB<fм`Ё"1dd'`ԟ'`Ɲ'`pOADNNpNpЭЭЭ MN K NN/ ?<IN\pNupNuIM DRI-LINKERFORMAT SPEICHERN-soft01```RUN GAMEM"/?<HNA\.g|M}BgHz?<=NAP<kf//??<?NAO *??<>NAXfFM}"BgHz?<=NAP<k0/}/??<?NAO *??<>NAXf A pNupNuA MRF!f JCjJk"H02fT`pNupNuM Jk< z>"N0S@2SA4.G 4.SB$HQ JQ KQ\`pNu\TURBOASS\DEMOS\THNKWORK\THNKWORK.PIC\TURBOASS\DEMOS\THNKWORK\THNKWORK.PI2-soft01``"`NSAVEGAMEAJgpNupNuA MRF!fJk"H02fT`pNupNuM Jk< zB"N0S@2SA4.G 4.SB$HQ JQ KQ\` <GRPA"NNpN M NNpNuSPIEL SPEICHERN-soft01```4OMINLINEpNuJEf -Э|b J fpNupNu <SABATNN.-ޭMpN J INLI NE "SGNQ"   JNNpNuOMIKRON-INLINE SPEICHERN-soft01```$GFA-INL pNuJEf J fpNupNu,-ܭM܎ <LNIA"NNpN N NNpNuGFA-INLINE SPEICHERN-soft01```$MODULA pNuJEf J fpNupNu.-ޭM <DOMA~NNpN Kz|CODE (\r0NH,\USS);  VJS K NJbNpNuINLINE (MODULA-INLINE SPEICHERN-soft01```PARALLELpNupNuG'M'D@|8MKa$ <:Sj,k*Na߈pNs9g `NqNqNqfNufz' fz' >fz' >fz#nHz#nHz#zz4z#zz4z' Nz' Nz' >rz' >rz#nTz#nTz!Bz!.Bzc>8XzcF8XzJ9f6AŬ0(2(A2NJf0(@2(A2NJfNu0(2(N 3g 2gNuNuJ9ASM!( 1B@U` *?D:\TURBO.ASM\PROGRAMY\GOTOWE\*.SRC j@'"DG p;6: AA?A N*cPP(P%)a#f Lp$"80  /_8p| /_8p| /_8p| 29,  @@$ YH@XA@ (7 DEAbpk/PP - C1p# D?!@0;0 4@8c@Bɒh`t@0P=#@0("0@P`@  H@M p`A#0 O@PD "`H``B O q0 B*88$'P Ϣ@ | |3# @8 @0P&PH 0yA(` p8|B  A qA 1z "8@C * 9 AC!dDfP"ApA* b@d8fBAH@`@P0cDpAp* 9BB@Cb &7 O:p(!" OP@D_?È ( _0 p| /_8p| /_8p| TurboAss 1989 -soft von Markus Fritze & Sren Hellwig Version 1.70 Markus Fritze, Sren Hellwig Mrz 1990 1.1 Turbo-Ass Kurzanleitung 1 1 Allgemeines 1.1 Einleitung Nach langem hin und her haben wir uns entschlossen unser Assembler-Paket als Shareware auf den Markt zu werfen. Der Assembler wurde vormals durch OMIKRON.Software unter dem Namen OMIKRON.Assembler verkauft. Die Shareware-Version ist jedoch eine erweiterte Version des OMIKRON.Assemblers. Sie enthlt weniger Fehler, weitere Features und ist noch ein wenig schneller. Zum Paket gehrt (natrlich) auch ein Debugger, der Bugaboo (vormals OMIKRON.Debugger). Somit kann nun jeder User in den Genu eines schnellen und leistungsfhigen Assemblers und Debuggers kommen; zumal es zwar viele Programmiersprachen als Shareware bzw. PD gibt, aber noch keinen (vernnftigen) Assembler. DIE FIRMA OMIKRON.SOFTWARE HAT NICHTS MIT DIESEM ASSEMBLER-PAKET ZU TUN. -SOFT IST ALLEINIGER INHABER ALLER RECHTE AM ASSEMBLER UND DEBUGGER! Dieser Text ist nicht als eine Anleitung gedacht, sondern nur als Kurzeinfhrung in den Assembler. Die vollstndig Anleitung auf ca. 240 Seiten gibt es bei den Autoren. Zur Not kann auch das ST-Magazin 11/89 und 12/89 herangezogen werden. Dort hat die Referenzkarte den Assembler und Debugger zum Thema. Nachtrag: Es fehlen ziemlich viele Features in diesem README, im Vergleich zur Anleitung, es wird mir einfach zu viel... (Markus) 1.2 Features des Turbo-Ass - Einfache und durchdachte (!) Bedienung. - Der Assembler bersetzt durchschnittlich 1 300 000 Zeilen pro Minute. - Syntax-Check bereits bei der Eingabe. Teilweise sogar Semantik-Check! Es werden sowohl Tippfehler, wie auch doppelt vergebene Symbolnamen bereits bei der Eingabe gemeldet. - Viele besonders leistungsfhige Funktionen des Editors, z.B. Suche von Symbolen, Ersetzen von Symbolen, Einklappen von Programmteilen (wie in GFA-Basic 3.0), u.v.a.m. - Fantastische Kombination von Debugger und Assembler. Bei einem Absturz eines Programms im Debugger kann der Assembler automatisch die Absturzadresse in eine 1.1 Turbo-Ass Kurzanleitung 2 Zeilennummer umrechnen!!! - Eigene Tastatur- und Bildschirmtreiber => selbst bei hrtesten Programmabstrzen funktionieren Assembler und Debugger noch. - KEINE Makros!!! - u.v.a.m. 1.3 Was ist Shareware? - Jeder kann/darf/mu/soll den Turbo-Ass kopieren! Dabei mssen aber stets ALLE (!) Dateien mitkopiert werden. - Wem den Assembler gefllt, sollte uns fairerweise 50DM berweisen. Das hat fr alle Parteien Vorteile: Fr uns: - Wir arbeiten nicht ganz umsonst (im Turbo-Ass stecken 3 "Mannjahre" Arbeit) Fr den User: - Er bekommt eine 240 Seiten starke Anleitung - Er bekommt die neuste Version mit persnlicher Seriennummer - Er bekommt das erste Update kostenlos - Er erhlt bei gefundenen Fehlern eine fehlerfreie Version - Er kann sich bei Problemen an uns wenden - Er bekommt fr jeden User, der bei Registierung seine Seriennummer angibt, 10DM (allerdings maximal 10 mal, wir wollen keine PD-Vertriebe finanzieren). Das Geld ist also eine "Entschdigung" fr das Vorfhren des Assemblers und das Kopieren. - Nochmal: Lt sich jemand registrieren, so gibt er die Seriennummer des vorher benutzen Assemblers an. Der User, dem diese Seriennummer gehrt, bekommt vom uns 10DM. Alles klar? Wer diese Angebot annehmen will, wende sich bitte an: Markus Fritze Birkhahnkamp 38 2000 Norderstedt 1 Tel: 040/5223955 (ab 18Uhr, auch am Wochenende (NIE VOR 12UHR!!!)) 1.1 Turbo-Ass Kurzanleitung 3 BLZ: 20069111, Norderstedter Bank Kontonummer: 407860 Ich bitte allerdings teilweise um etwas Geduld; ich hoffe die meiste Post am selben Tag zu erledigen, wenn aber keine Anleitungen mehr da sind oder wenn wir gerade einige Neuerungen implementieren, kann es schon mal etwas dauern (Wenn nach 2-3 Wochen allerdings nix passiert kann eine Anfrage klren, ob die Post auch angekommen ist). 1.4 Hardwarevorraussetzungen Atari ST mit 512k, wobei allerdings erst ab 1Mb Assembler und Debugger gemeinsam im RAM gehalten werden knnen, was seinerseits wieder ein sehr wirksames Debugging erst ermglicht. Die hohe Auflsung bietet sich wohl eher an, als die mittlere Auflsung (Ist einfach augenfreundlicher); aber der Turbo-Ass luft sowohl in Farbe, wie auch in S/W. 1.5 Installation TURBOASS.PRG, TURBOASS.CFG, TURBOASS.DAT, BUGABOO.PRG und CALL.PRG auf eine Disk, bzw. in einen Ordner kopieren. Das war's. 1.6 Zu den Autoren Sren Hellwig und ich (Markus Fritze) sind zur Zeit 21 bzw. 22 Jahre alt und studieren technische Informatik an der FH-Wedel bei Hamburg. Deswegen bitte wir auch teilweise um etwas Geduld, wenn Anfragen nach Updates, etc. kommen; das Studium geht leider vor. Zudem beantworte ich jeden Brief, der Rckporto beinhaltet. Post ohne Rckporto wird nur in Ausnahmefllen beantwortet (Zur Registrierung ist KEIN Rckporto ntig!) 1.7 Haftung/Rechte Alle Rechte am Turbo-Ass liegen bei -soft. Wobei jeder seinen Assembler beliebig kopieren darf. Auch das Upload in Mailboxen ist erlaubt. Der Turbo-Ass und das Handbuch wurden mit grter Sorgfalt erstellt. Leider sind Fehler nie auzuschlieen, deswegen mchten wir sie darauf hinweisen, da wir weder eine Garantie fr die Fehlerfreiheit geben, noch die Haftung fr irgendwelche Folgen, gleich ob durch Fehler im Handbuch, in der Software oder in der Hardware verursacht, bernehmen knnen. Es wird wohl jeder verstehen, da wir keine besondere Begeisterung verspren, wenn jemand behauptet, der Assembler habe im seine 1.1 Turbo-Ass Kurzanleitung 4 Platte mit Sourcetexten im Werte von mehreren Millionen Mark zerstrt, uns auf Schadenersatz verklagen will. Also: Benutzung auf eigene Gefahr! (Dieser Abschnitt gilt wohl bei allen Softwarefirmen. 2 Der Assembler 2.1 Benutzeroberflche Die Benutzeroberflche ist nicht von GEM o.. abhngig, d.h. neu programmiert, das hat den Vorteil, da der Assembler sicherer gegen Abstrze und auch schneller ist. Zudem konnten einige nette Features implementiert werden. Trotzdem sollte die Umstellung von GEM wohl nicht ins Gewicht fallen. Die kleinen Buchstaben in den Buttons bewirken mit ALT zusammen gedrckt, das Anklicken des Buttons wie mit der Maus. 2.2 Die Maus im Assembler Man kann mit der Maus eine ganze Menge Dinge machen, hier sei jedoch nur die Benutzung im Assembler erklrt: Im Sourcetext: Linke Maustaste: Einfachklick: Cursor setzen langer Klick: Block markieren (mit Scrollen) Doppelklick : Sprung zur Definition des angeklickten Symbols Rechte Maustaste: Einfachklick: Sourcetext scrollen (nur am Rand klicken!) Doppelklick : Formel in den Rechner bernehmen In der Statuszeile: einfach alles mal mit links bzw. rechts anklicken... 2.3 Der Editor Jede eingegebene Zeile wird automatisch auf ihren Syntax und teilweise auch auf die Semantik berprft. Wenn die Zeile fehlerfrei ist, wird sie sofort formatiert ausgegeben. Bei einem Eingabefehler wird in der Statuszeile die Fehlermeldung angezeigt. 2.4 Besonderheiten Als Adressierungsart wird auch "absolut short" direkt untersttzt. Dazu ist hinter der Adresse ".w" anzugeben. 1.1 Turbo-Ass Kurzanleitung 5 Line-A-Routinen knnen mit "LINEA #Nummer" eingegeben werden. Der Assembler wandelt nicht-Motorola Eingaben wenn mglich automatisch in das Motorola-Format um. 2.5 Optimierungen Der Assembler kann einige Optimierungen selbststndig finden. Dazu gehren: Absolut lang -> relativ relativ -> relativ short Absolut lang -> PC-relativ MOVE.L #xx,A0 -> LEA xx,A0 (wenn dannach PC-relativ was bringt) MOVE.L #xx,-(SP)-> PEA xx,A0 (wenn dannach PC-relativ was bringt) Ferner werden einige fr C-Compiler typische Sprnge gefunden (z.B. 2 aufeinanderfolgende BRA, wobei das 2.BRA nie angesprungen werden kann) Wenn der Assembler optimieren kann, erscheint nach dem Assemblieren ein Button "ANPASSEN", welcher die Optimierungen im Sourcetext vornimmt. Dabei kann auch zurck-"optimiert" werden, wenn dies ntig sein sollte. 2.6 Formeln Alles was so Standard ist: + - * / ! (log.NOT) ~ (NOT bzw. EOR) << (SHL) >> (SHR) | (OR) & (AND) sowie Vergleiche Als Zahlenbasis sind mglich: Dezimal : . oder nix Hexadezimal : $ Binr : % ASCII : " oder ' Als interne Variablen sind ^^DATE (GEMDOS-Datum), ^^TIME (GEMDOS-Zeit) * (akt.PC), ^^RSCOUNT (akt.Wert des RS-Zhlers) und ^^SYMTAB (<>0, wenn Symboltabelle erzeugt wird) Symbole sind max.23 Zeichen lang. Alle Zeichen sind signifikant. Erlaubt sind auch Umlaute und alle anderen Zeichen > 126. 2.7 Tastaturkommandos Cursortasten, Backspace, etc. wie gewohnt CTRL-Y, CTRL-B, etc. wie in TEMPUS CTRL-D verdoppelt die Cursorzeile. CTRL-M/ALT-M ermglicht das Verschieben der Zeile. CTRL-W ndert die Zahlenbasis der Zahl unter dem Cursor CTRL-U markiert alle Zeichen mit Warnungen, in welchen ein 1.1 Turbo-Ass Kurzanleitung 6 Symbol definiert ist, welches nirgends benutzt wird. Damit kann man prima unbenutzt Unterprogramme finden! ALT-Zehnerblock wie bei MS-DOS ESC+Buchstabe Abkrzung fr einen Befehl CTRL-ESC Tastaturmakro beginnen. Dann zu belegende Taste drcken. Alle folgenden Tasten (nicht die Maus!) werden aufgezeichnet. Mit ALT-ESC wird die Definition abgeschlossen. Die belegte Taste kann mit CTRL-ESC, Taste, ALT-ESC wieder freigegeben werden. 2.8 Ein paar Worte zu den Mit "Laden..." kann auch ein ASCII-Text eingeladen werden. Er wird dabei automatisch ins interne Format gewandelt. "Symbol suchen..." und "Symbol ersetzen..." ermglichen das schnelle Finden bzw. schnelle Ersetzen von Symbolen. Dabei knnen z.B. alle Symbole gefunden werden, die mit "M" anfangen (Maske:"M*"), ohne da jeder MOVE-Befehl gefunden wird (wie bei ASCII-Editoren blich). "Sprung zu Zeile.." ermglich auch das Springen zu Symboldefinitionen (Eingabe:z.B."M*"). Die Dialogboxen im "Einstellungen" Men sind zum Teil selbsterklrend, der Rest ist entweder unwichtig oder zu kompliziert, als da er hier erklrt werden knnte. 2.9 Der Assembler Wird mit F1 aufgerufen. Treten bei der Assemblierung Fehler auf, werden alle fehlerhaften Zeilen markiert. Nach der Assemblierung kann man dann mit CTRL-J bzw. Shift-CTRL-J von Fehler zu Fehler springen. Der Assembler speichert die Fehler, die Cursorposition, die Marker etc. brigens mit dem Sourcetext ab! In der Dialogbox nach (!) der Assemblierung, knnen noch einige Extras eingestellt werden: - Soll eine Symboltabelle an das Programm gehngt werden (bzw. an den Debugger bergeben werden)? - Ferner kann das erzeugte Programm in verschiedenen Formaten abgespeichern. Mglich sind: DEBUGGER : Sprung in den Debugger mit Programmbergabe (KEIN SPEICHERN) STANDARD : Programm abspeichern (halt ganz normal...) DATAS : Data-Zeilen erzeugen (fr OMIKRON.Basic) ABSOLUT : Programm fr eine best. Adresse (z.B. EPROM) erzeugen BASIC : spezielles Format fr Basic, welches sich selbst reloziert OMINLINE : INLINE-Zeile fr OMIKRON-Basic erzeugen 1.1 Turbo-Ass Kurzanleitung 7 PARALLEL : spez.bertragungsformat zum Amiga SMALLDRI : DRI-Format erzeugen (allerdings OHNE Importe) GFAINLINE : GFA-Inline-Format erzeugen. FSTANDARD : Fast-Load-Bit im Header setzen (ST-Magazin 11/89), sonst wie STANDARD 2.10 Pseudo-Opcodes des Assemblers DC, DS, BLK, DCB, EVEN, ALIGN, TEXT, DATA, BSS, END, =, EQU, GLOBAL, CNOP, ORG, ILLEGAL und REG wie blich. DXSET Lnge[,Fllwert] Tabelle definieren DX 'String' Tabelleneintrag auf Lnge mit Fllwert aufgefllt RS, RSRESET, RSSET, RSEVEN, RSBSS Relatives Segment OPT D+ normale Symboltabelle an OPT X+ erweiterte Symboltabelle an OPT W+ Warnungen an OPT P+ PC-relatives Programm mu erzeugt werden OPT O+ Optimierungen an Mit '-' kann etwas ausgeschaltet werden OUTPUT 'Filename' Default-Filename PATH 'Pfad' Pfad fr IBYTES setzen IBYTES 'DEGAS.PI3',32000,34 Ldt ein Daten-File der Lnge 32000 ab Byte 34 der Datei ein (Hier: ein Degas-Bild) BASE is' viel zu kompliziert... REPT Anzahl, ENDR wiederholt Anzahl mal den Sourcetextteil zwischen REPT und ENDR IF, ELSE, ENDC bedingte Assemblierung FAIL Assemblierung abbrechen 3 Der Debugger 3.1 Vorwort Es ist eigentlich unmglich den Debugger KURZ zu beschreiben, deswegen hier nur die wichtigsten Befehle (mit HELP kann man alle mal sehen bzw. in der Anleitung) 3.2 Allgemeines Der Debugger benutzt selber keine I/O-Routinen des TOS, d.h. er ist ziemlich unanfllig gegen Abstrze. Bei Lade-Operationen u.. wird aber dann natrlich doch auf's GEMDOS 1.1 Turbo-Ass Kurzanleitung 8 zurckgegriffen. Er verwaltet eine eigene Bildschirmseite, soda Programm und Debugger sich nicht auf einer gemeinsamen Seite tummeln. Das Debugging kann sowohl mit Tastatur und Maus erfolgen. Der Debugger kann resident im RAM gehalten werden, indem er in den AUTO-Ordner kopiert wird oder mit dem Befehl RESIDENT gehalten wird. Der Debugger kann dann mit CALL.PRG aufgerufen werden. Auch der Assembler kann auf den Debugger zugreifen (Er kann ihn aber auch nachladen). 3.3 Die Bedienung Die 2 oberen Zeilen entsprechen den Funktionstasten (mit und ohne Shift). Die 3 Folgezeilen stellen die Registerinhalte und Flags dar. Alle Teilen in diesen 5 Zeilen knnen mit der Maus ausgelst werden. Die restlichen (max.20 Zeilen) sind frei vernderbar. Hier erfolgen die Eingaben, die Ausgaben. Hier tobt das Leben... Die Tastaturbelegung (Cursortasten, CTRL-M, CTRL-1, etc.) ist hnlich der des Assemblers. Eingaben erfolgen stets ab Zeilenanfang bzw. hinter der Hexzahl. Leerzeichen werden ignoriert bzw. dienen als Trenner. Wenn der Assembler den Debugger aufgerufen hat, kann man CTRL-HELP zurckspringen. Dabei wird der aktuelle PC-Stand in eine Zeilennummer UMGERECHNET. D.h. wenn ein Programm beim Debuggen abgestrzt ist und der PC im Programm steht, kann man CTRL-HELP zur entsprechenden Stelle im Sourcetext springen. Mit SHIFT-SHIFT kann ein laufendes Programm angehalten werden. Der Ring-Indikator funktioniert allerdings auch. Der Debugger ist zudem RESETFEST. Als Notbremse ab und zu sinnvoll. F1 - Fhrt den nchsten Befehl aus SF1 - Bricht beim nchsten Sprungbefehl ab. Simuliert den Tracemode des 68020 Prozessors. F2 - Setzt hinter den nchsten Befehl einen Breakpoint und startet das Programm. Damit kann z.B. schnell ein Unterprogramm ausgefhrt werden oder ein DBRA beendet werden. SF2 - nicht weiter wichtig 1.1 Turbo-Ass Kurzanleitung 9 F3 - Startet das Programm und bricht beim nchsten RTS ab. ACHTUNG! Wenn mit MOVEM Werte auf dem Stack gerettet werden => Bomb! SF3 - wie F3 nur bis zum nchsten RTE F4 - Fhrt den nchsten TRAP NICHT aus, sondern springt in ihn hinein. SF4 - Programm ohne Endebedingung starten F5 - nchsten Befehl ignorieren, d.h. berspringen SF5 - Insert/Overwrite toggeln F6 - Sourcecode anzeigen (nur wenn vom Assembler bergeben) SF6 - die umgerechneten Marker des Assemblers anzeigen. F7 - Memorydump ab dem PC SF7 - Breakpoints anzeigen F8 - Disassemble mit Dump ab PC SF8 - Info ber die Speicherbelegung F9 - List ab PC (mit Symbolen, wenn vorhanden) SF9 - Screen lschen, Warmstart F10 - Umschalten der Bildschirmseite (Toggeln) SF10- Quit mit Sicherheitsabfrage 3.4 Die Befehle Alle Befehle knnen auf ein Minimum abgekrzt werden. An ALLEN Stellen sind als Parameter beliebige Ausdrcke erlaubt (d.h. Formeln etc.) ?Term Rechnet den Term aus Term darf (bis auf Vergleiche) alle Operationen des Assemblers enthalten. Zudem ist mit {400}.l eine indirekte Adressierung mglich. ".l" gibt dabei die Zugriffsbreite an. Alle Zahlen werden als HEXZAHLEN angesehen. Dezimalzahlen sind mit "." einzuleiten. Bei einer Symboltabelle kann man mit ".Symbolname" auf dieses zugreifen. Definierte Variablen (ein Teil davon) ^D0-^D7 Die Register D0-D7 1.1 Turbo-Ass Kurzanleitung 10 ^A0-^A7 Die Register A0-A7 PC, USP, SSP, SR, CCR, SP Die gleichnamigen Register ^M0-^M9 Die umgerechneten Marker des Assemblers Alle obigen Variablen sind mit LET Variable=Term nderbar. LET lt sich mit "~" abkrzen. Noch ein paar Read-Only-Variablen: TEXT, DATA, BSS, START, END, BASEPAGE, BP, ACTPD, MEMBASE, SAVEAREA Es gibt noch etwa 20-30 weitere nicht so wichtige Variablen. BREAKPOINT [Nummer=Adresse[,[*|=Wert|Anzahl|?Bedingung]|K]] Breakpoints anzeigen, lschen, ndern, setzen B5=PC+.100 Breakpoint 5 (0-15 ist mgl) auf Adresse PC+100 setzen B K Alle Breakpoints lschen B Alle Breakpoints anzeigen BK3 Breakpoint 3 lschen B0=Adr,Anzahl : Breakpoint bricht beim Anzahl. Erreichen ab. B0=Adr,* : Breakpoint bleibt auch nach dem Erreichen erhalten. Normale Breakpoints werden automatisch gelscht. B0=Adr,=Wert : Zhler auf die Adresse Adr setzen. In ^BC0 wird hochgezhlt wie oft die Adresse erreicht wurde. B0=Adr,?Term : Bedingter BKPT, Abbruch, wenn Term<>0 z.B. B0=Adr,?^D0=4711 => Abbrucht, wenn PC=Adr UND D0= GO [Adr] Programm an Adresse Adr, bzw. PC starten TRACE Wie F1 SHOWMEMORY Term 16 Bytes ab Term stets anzeigen UNTRACE [Adr] 1.1 Turbo-Ass Kurzanleitung 11 solange Tracen, bis Bedingung erfllt IF Term Bedingung fr UNTRACE OBSERVE Trapno,Funkno Abbruch, wenn Trapno(Funktion) ausgefhrt wird. z.B. OBSERVE 14,8 => Abbruch bei XBIOS(8) = Floprd() CLS 2.Bildschirmseite lschen MOUSEON / MOUSEOFF VDI-Maus an/aus |Befehl Befehl ausfhren (zum Testen echt prima) LEXECUTE "Filename"[,"Commandline"] Programm ausfhrbar laden (=> Pexec()) Dann mit GO zu starten. LOAD "Filename"[,Adresse] File nicht ausfhrbar laden SAVE ["Filename"[,Adresse[,Endadresse]]] File abspeichern DIR Pfadmaske Directory anzeigen Pbefehl P vor einem Befehl leitet diesen zum Drucker um FOPEN Filename, Fbefehl, FCLOSE Ausgabe eines Befehls in eine Datei ERASE, KILL Filename Datei lschen (mit Jokern!) FREE Freier Hauptspeicher FREE Drive Freier Platz auf einem Laufwerk MKDIRECTORY Name Ordner erstellen RMDIRECTORY Name Ordner lschen (wenn leer) NAME oldname,newname 1.1 Turbo-Ass Kurzanleitung 12 File umnennen FATTRIBUT Filename,attribut File-Attribut ndern/setzen FORMAT DS/SS,Laufwerk Disk formatieren TYPE Filename ASCII-Datei anzeigen (SPACE hlt Ausgabe an) READSEKTOR Track,Sektor,Seite,Adresse,Laufwerk (0 oder 1) Sektor mit XBIOS(8) einlesen WRITESEKTOR s.o. Sektor mit XBIOS(9) schreiben Alle in diesem Abschnitt angegebenden Befehle erlauben den gleichen Syntaxbei den Parametern, der deswegen an dieser Stelle erklrt wird, und im folgenden nur noch mit [Parameter] bezeichnet wird. Es gilt also: [Parameter] = [Von][[,]#[Zeilen]|,Bis|[,][Bytes[]]] Es sind also alle Parameter wahlfrei, d.h. man braucht keine Parameterangeben. Der Debugger nimmt dann vorgegebene interne Werte. Wenn der Ausdruck "Von" fehlt, wird ab der aktuellen Adresse z.B. disassembliert. Die aktuelle Adresse ist die Zahl am Zeilenanfang, bzw. wenn diese fehlt, die zuletzt benutzte Adresse. Als Endadresse gilt der Ausdruck "Bis", der jedoch nicht angegeben werden mu. Wird statt "Bis" ein "#" angegeben wird genau eine Zeile ausgegeben. Ein dem "#" folgender Term, gilt als Zeilenanzahl. Es knnen somit z.B. genau 8 Zeilen ausgegeben werden. Es werden jedoch maximal 99 Zeilen ausgegeben. Fehlt die Endangabe gnzlich, werden (normalerweise) 16 Zeilen ausgegeben. Die Anzahl lt sich jedoch einstellen, indem man die Variable "Lines" entsprechend ndert. Die letzte Mglichkeit ist die Angabe der Byteanzahl in eckigen Klammern. Sie kann genauso, wie die Zeilenanzahl angegeben werden. Die "]" ist optional, d.h. man kann sie auch weglassen. Beispiel: "d text #5" Disassembliert 5 Zeilen ab Anfang des geladenen Programms. Beispiel: "m data[30]" Ein Memorydump des DATA-Segments (48 Bytes lang). 1.1 Turbo-Ass Kurzanleitung 13 DISASSEMBLE [Parameter] Disassemble mit Dump, der Dump kann gendert werden! LIST [Paramter] Disassemble ohne Dump mit Symbolen, Opcodes knnen gendert werden (RETURN nicht vergessen) SYMBOLTABLE [Parameter] evtl. vorhandene Symboltabelle anzeigen MEMORY[.B|.W|.L][Parameter] Memorydump mit Ausgabebreite (nderbar) ASCII [Parameter] ASCII-Dump (nderbar) FIND [Von,Bis],Terme{,Term} geladenes Programm oder Speicherbereich nach den Termen durchsuchen HUNT s.o. wie Find, jedoch nur auf geraden Adressen ASCFIND [Von,Bis],String ASCII-Suche im Disassemblerlisting (mit Jokern). Langsam, aber ab und zu praktisch CONTINUE Hunt, Find oder ASCFIND fortsetzen, wenn mit ESC abgebrochen INFO mal ausprobieren SYSINFO auch mal ausprobieren MOVE, COPY Von,Bis,Nach Speicherblock kopieren FILL Von,Bis,Term{,Term} Speicherblock fllen CLR [Von,Bis] Speicherblock lschen (oder alles) COMPARE Von,Bis,Adr Bereich Von,Bis mit Bereich ab Adr vergleichen EXIT, QUIT, SYSTEM Debugger verlassen 1.1 Turbo-Ass Kurzanleitung 14 RESIDENT Debugger resident halten SET, LET, ~ siehe oben RESET ALL Debugger-Kaltstart HELP Gibt alle Befehle unsortiert aus (wie man sieht, ein paar mehr als hier beschrieben) Inhaltsverzeichnis Turbo-Ass V1.1 1 Allgemeines .......................................... 1 1.1 Einleitung ...................................... 1 1.2 Features des Turbo-Ass ............................ 1 1.3 Was ist Shareware? ................................ 2 1.4 Hardwarevorraussetzungen ........................ 3 1.5 Installation .................................... 3 1.6 Zu den Autoren .................................... 3 1.7 Haftung/Rechte .................................. 3 2 Der Assembler ......................................... 4 2.1 Benutzeroberflche .............................. 4 2.2 Die Maus im Assembler .............................. 4 2.3 Der Editor ....................................... 4 2.4 Besonderheiten .................................. 4 2.5 Optimierungen ................................... 5 2.6 Formeln ......................................... 5 2.7 Tastaturkommandos ............................... 5 2.8 Ein paar Worte zu den............................... 6 2.9 Der Assembler .................................... 6 2.10 Pseudo-Opcodes des Assemblers .................... 7 3 Der Debugger .......................................... 7 3.1 Vorwort ......................................... 7 3.2 Allgemeines ..................................... 7 3.3 Die Bedienung .................................... 8 3.4 Die Befehle ...................................... 9 - I - Aѱ:yR{9Y۸Z8yCD Rxx\Rt_xpP8"cIxR/@!]|X:yX_,:.&265)"8z QQ5||*j^ü\Eu0qLD*:(la=H_tq! *!V#)F}]=ҦHC>!~v N!]Gp"Otdpx=<"*"( 4ț-T '_! Jd<:8:9x_拥zC"=ғcbb‚ |xyxpwu""lT /cMȯlRth@8gT +Ȁo`*~NvAfF '&eD BsFvF"?.C} 99;Eݽ|#BS1962<44 ~ή>/wBq"mbiA&8(<24??< xNH@SgXL|NsCDEFnew_biosold_biosweiter_longframenew_bios1endedrv_tabloopschutzmore_e777J** Wprot - schtzt mittels Rwabs() beliebig Laufwerke gegen Beschreiben ** 1987-9 by -soft, written by Markus Fritze ** Fehler beseitigt von Chr. Pagalies% ** TT-Anpassung: Markus Fritze, *J*;Fast-Load (siehe 68000er 11/89);Programmlnge;In den Trap #13 einklinken;Ptermres(A6,0);XBRA-Kennung;Wprot heit diese Routine;der alte BIOS-Vektor;Aufruf aus dem Usermode?;dann weiter =>;CPU mit Format-Word (z.B. der TT);Nein! =>;das Format-Word beachten;Rwabs();Lesen?;dann Ende;Ende der Tabelle => normale Routine;mit dem gewnschten Laufwerk vergleichen;zu schtzendes Laufwerk gefunden =>;weiter suchen;ab ins BIOS;Devicenumber;Disk ist write protected;etv_critic aufrufen;WEITER angeklickt?;dann nochmal diesen Alert;zu schtzende LaufwerkeLpӳVRRT51wv* *ʪO .I򍈱puW6v IH.Or - .HM 1tQ2PsKL wN hLOtjRSQx@p_}EbVUABDp@O  8TDI84Z ]^KWr-[nf[-DV [ ~[1 T [1T ~@"&(J &*J,"B<@6  $"    "$$$   "$) ) "$,-* 3673:7 $>>>???@@@AAABBHH IFKMOQSUVXZ\R[]__`]Y`"$Rb`J`L `N`P`Tc`WDd eddf fg g jikh e   % m oo$o  o$o& p"p  p"pqqrssr! v vv#0" &{"*} $    "} "" $ < *(8  $"  <  N. $   "$/  $(("P   DH,LD*,,&  $(">:*&&&    BCN     $          "x6="~<>l   D <<   "  ",  %%&""*003&5'"$-888&)::":::::** =>?@AB CDEFGH IJKLM NOPQ8pST4pVW&pYZ1[\]^_`ab cdefghijkl mnpqrstuvwx yzt{|}~ u w(;$, n.7( 02 0* @@ 0@@ @@z@y2. |@9$@@@$@.@@@,+!"@$ @#4E*+*0 @00'Hz?<&NN\BgNAMaBn=|`B. 0. k=@BnQBnP PJnfApJVg=|Aa2.K a ndJ. k. f. f0.@;k| b@0;NBnA(aa n*dJngNI0.H"LA+p Q,Q| ~zB. a.a/"n0010HJ.2jA5@r  CQ6`A9r CPQ:A;aGaD91Sa0.gS@=@A^$LC@$ٳe`0.|ag=@RnIH"LpBQb`-z`z`z`z`"LA+p"Qc`B.EJEfxagx6JgvJEj0@<0<@=`-0HG2IArF;h4;i+4`-?0HG2IArF;i4(|Nu NAXf=GpNIaRBnpN .gHnn?<ANA\BgHnn?<NAXfpNpNRnnbBnNSnjJAgSA=ANAtCu KgCwf< NxaxN=n 0.R@|=@S@=@PPyBnzQa.P|a/a~a=a0.J.gJ@f @Dg @ag @9fB.| n00<?r Qa=BnB. aJnfJ. gP|aagJ.f 0.nc=@A2.@1>n0.2.g R@=@AeSn` HA0<r fr WgB.|JLNuJnfSnjBnNu0.2.a|~. g|ao|`K. g|ao|`HC. g~ao~`K. g~ao~aGF=@=AtaJGfJFgRnaC8f. fB. NuH;0jHGFat<gt<gt<gt<fSgSfaGFtaRnaaaapLNupLNuHAAA<f` pJgpSgpLNuHAAAJkpSgpSf`pSgpSgpWfLNuHB.|BnBnp0@@@@@A0.@CE$J.f$r pxv0QQTQpR@2H@<R@-@A=PABn0<r g (fndQLNuJ.2kHA"n0E8pra|gJG (Ix(IPQXRA|fCR@| fCpr"QLNu&J(Ix*|f$<ăgz`Jg<[Jg[(IPQ*HCJgzR@aS@Jg<[Jg(`J.faaHA"n0E4pra|JG (Ix((IQPRA|fCR@| fC`p'r2BYQLNuA4AA (HCHNu0 Graphix by Harald Weinreich < - 1.2.'89 *;F*;Superexec(start);Pterm0();Globale Offset-Variable;Nach dem Demo auf Level 1 schalten;Start bei Level "-1" = Titeldemo;Titeldemo laufen lassen;Joystick-Richtungen lschen;Level setzen;Gesamtscore lschen;Demo-Mode aus;Timer fr den Demo-Mode lschen;ungltig machen;Spiel nicht aktiv;Level vorhanden?;ja, alles ok;Hier stehen die Level;Level komplett leer?;ja! =>;Sonst ist min. ein Level vorhanden;Levelanzahl;Rcksprungadr;Tastatur auswerten, Joystick auch;Das Demo startet nach 10 Sekunden;Feuertaste?;dann das Spiel starten;keine F-Taste ?;M*;* Der Copyright-Hinweis5 *;M*;Demo startet nach 10 Sekunden;M*;* Der Leveleditor; *;M*;Hier stehen die originalen Level;Adresse des akt.editierten Levels;Level retten;Spiel aktiv (Blcke setzen);aktuelle X-Koordinate;aktuelle Y-Koordinate;Wall selected;Joystick-Daten lschen;Levelarray aufbauen, Zeit lschen, etc.;Level zeichnen;Y*32*80;zur logbase;X*4;Farbe oder s/w;X*8;Cursor darstellen;Cursor darstellen;zur logbase;Cursor darstellen;untere Textzeile neu ausgeben;Seite anzeigen;Tastatur auswerten, Joystick auch;Joystickbewegung umsetzen;Feuertaste gedrckt;Flag zurcksetzen;aktuelle Taste holen;F1 - Mauer setzen;F2 - Target setzen;F3 - Block setzen;F4 - EXIT setzen;Clr/Home - Level lschen;UNDO - Level rekonstruieren;F10 - Editor verlassen;Space - Zeichen setzen;N - Neuen Level einrichten;Delete - Level lschen;Level erstmal lschen;keine Level mehr da!;Daten aller Level;Level berkopieren;ab in die Hauptschleife;max.100 Level;Hier stehen die originalen Level;Adresse des akt.editierten Levels;Level lschen;ab in die Hauptschleife;Wand;Zielfeld;Block;Ausgang (nur zu verschieben);Level zurckholen;war schon gedrckt;Lschen?;akt.Zeichen holen;steht dort was? =>;sonst setzen;setzen oder lschen?;setzen;lschen;Exit? (Ist nur verschiebbar);Nein =>;Position im Level errechnen;D0=5*Y+Int(X/4);D1=X and %11;Byte holen;entsprechendes Feld lschen;Element in Position schieben;und einsetzen;Verschiebetabelle;Lschmaske;Position im Level errechnen;D0=5*Y+Int(X/4);D1=X and %11;Byte holen;eines der 4 Felder isolieren;in die unteren 2 Bit schieben;M*;* Die restlichen F-Tasten3 *;M*;Wirklich laden?;NEIN! =>;Fgetdta();DTA-Buffer-Adr merken;Fsfirst(path,satt);nicht gefunden;Lnge der Datei;Dateilnge nicht durch 64 teilbar;Fopen(path,attr);fhandle merken;? TOS-Fehler;Adresse des Buffers;Dateilnge;fhandle;Fread(hndl,byts,buff);Fclose(hndl);Datei nicht komplett gelesen;Anzahl der geladenen Level setzen;1.Level lschen;keine Level da!;Wirklich speichern?;NEIN! =>;keine Levels zum Speichern;mal 64 (Levelgre) = Dateilnge;Fdelete(path);Fcreate(path,attr);fhandle merken;? TOS-Fehler;Adresse des Buffers;Dateilnge;fhandle;Fwrite(hndl,byts,buff);Fclose(hndl);Datei nicht komplett geschrieben;Joystick;Keyboard;M*;* Ein kleines Demo fr den Titel & Level 1" *;M*;akt.Level merken;Die Demo-Level zhlen ab 0;Die normalen Level zhlen ab -1;Demo-Mode an;gespeicherte Schritte lschen;Demo-Position auf den Anfang setzen;M*;* Die Hauptroutine: Das Game0 *;M*;Spiel nun aktiv;Levelarray aufbauen, Zeit lschen, etc.;Uhr starten;Level zeichnen;untere Textzeile neu ausgeben;Seite anzeigen;Tastatur auswerten, Joystick auch;Demo an?;Dann geht's hinten weiter .;Taste gedrckt?;dann Ende;F10 - Abbruch;UNDO - Level neu starten;Level-Neustart;Pause;Nein! =>;Uhr stoppen;2. Seite ist am Anfang "logbase";logbase lschen;und schwarze Seite anzeigen;weiter, wenn Taste gedrckt;oder Joystick bewegt;Uhr wieder starten;Spieler bewegen;Alle Steine ok?;Nein, noch nicht.;Ende des Demos;erreichtes Levelergebnis holen;> der Hiscore?;NEIN! => kein neuer Hiscore .;wird allerdings gleich gelscht;Hier steht der originale Level;Da auch "-1" mglich ist!;Hiscore auch im Level setzen;und zum Gesamtscore addieren;Ende, wenn nur ein Level vorhanden;nchster Level;hchster Level erreicht;Nchsten Level;und Ende;M*;* Sind alle Steine am richtigen Ort? (Z=1, wenn nicht) *;M*;Hier steht der Level;Feldgre;Spieler auf Exit?;Flag dafr setzen;Nein, noch nicht;Uhr anhalten;Spieler auf dem Ausgang? Z=1, wenn nicht;M*;* Score um einen Punkt erniedrigen* *;M*;Demo-Mode an?;dann Score lschen;sonst ein Punkt abziehen;Ende, wenn noch positiv;sonst Score lschen;M*;* Bewegung des Spieler und Verschieben der Objekte *;M*;Cursor right?;Feld ist gltig;Cursor left?;Feld ist gltig;Cursor down?;Feld ist gltig;Cursor up?;Feld ist gltig;Object an (D0;D1) entfernen;Spieler setzen;Object an (D0;D1) setzen;Feuertaste?;dann Autorepeat;Joystick-Daten lschen;Mauer oder nix => Fertig;Block bewegen;Position des Blockes errechnen;Umgebung des Blocks holen;nach rechts?;Keine gltige Bewegung;Hintergrund ist mglich;Zielfeld ist mglich;Zielposition des Blockes errechnen;Verschiebungen+1;fnf Punkte weniger;Bewegung ist mglich;Bewegung nicht mglich;M*;* Objekt an (D1;D0) lschen1 *;M*;Y*22;+X;Hier steht der Level;Adresse des Feldes;Object holen;Diamand an?;Weg, wenn nicht;Zielfeld setzen;freies Feld;Nix los!;Exit;Zielfeld;Hintergrund setzen;M*;* Mauer oder Spieler an (D1;D0) setzen (D2<0: Spieler) *;M*;Y*22;+X;Hier steht der Level;Adresse der Position;Object holen;Block oder Spieler;der Spieler =>;Diamant aus;Leeres Feld;Diamant an;Zielfeld;Spieler auf freiem Feld;Spieler auf Zielfeld;Spieler auf Exit;M*;* Level nach level_dat umkopieren und in ein erweitertes Format wandeln *;M*;Uhr anhalten;Bewegungen lschen;Verschiebungen lschen;Uhrzeit lschen;Hier steht der originale Level;Da auch "-1" mglich ist!;und hier soll er hin;12 Zeilen kopieren;5 Byte pro Zeile;4 Felder pro Byte;rechten & linken Rand berspringen;X-Koordinate des Starts holen;oberstes Bit lschen;Y-Koordinate des Starts holen;aktuelle Spielerkoordinate;Y*22;+X;Highscore setzen;Hier steht der originale Level;Player auf Exit setzen;Anzahl der Ziel-Felder ermitteln;Block auf Zielfeld;pro Feld 100 Punkte mehr;M*;* Level nach logbase zeichnen/ *;M*;Farbmonitor?;Level in Farbe zeichnen;Level-Daten;Bildschirmadresse;Grafik-Daten;Zeile=1;Spalte=1;Zeichen an der Position ermitteln;Zusatzsbits ausmaskieren;Die Wand bekommt eine Extra-Behandlung;32 Pixelzeilen kopieren;Zeichen kopieren;Nchste Bildschirmposition;Zeile voll?;nein, noch nicht;Nchstes Bildschirmposition errechnen;letzte Zeile bereits ausgegeben?;Nein! Oben geht's weiter ^;untere Linie ziehen;Wnde erfahren eine Sonderbehandlung, da evtl.Rahmen gezeichnet werden mssen;31 Pixelzeilen kopieren;1.Zeile?;Weiter, wenn nicht;Oben eine Mauer?;Ende, wenn ja;sonst oben eine Linie ziehen;Ist rechts eine Wand?;Nein! =>;Dann Wand rechts abschlieen;Ist links auch eine Wand?;Nein! =>;Dann Wand links abschlieen;Wert wieder rekonstruieren;Pixelzeile schreiben;Nchste Pixelzeile;Nun kommt die Abhandlung der 31. & letzten Pixelzeile einer Wand:;letzte Pixelzeile holen;Ist unten auch eine Wand?;Ja! =>;sonst eine Linie ziehen;Ab hier werden evtl. zwei einzelne Punkte gesetzt, welche einen sonst;erkennbaren Schnheitsfehler korrigieren.;z.B: Wand1 Wand2; Leer Wand3;Es wird bei Wand2 ein Pixel in der linken unteren Ecke gesetzt (Eckstck);2. Mglichkeit: Wand1 Wand2; Wand3 Leer;Hier wird bei Wand1 ein Pixel in der rechten unteren Ecke gesetzt;Zeile+1 (dewegen unten zwei Wandzeilen!);umgebende Zeichen der nchsten Zeile holen;Zeile wieder zurck;rechts auch eine Wand?;dann nichts tun =>;rechts einen Punkt setzen;links auch eine Wand?;dann nichts tun =>;links einen Punkt setzen;letzte Pixelzeile schreiben;Nchstes Zeichen ausgeben;M*;* Level in Farbe nach logbase zeichnen& *;M*;Im Demo keine Verzgerung;3 mal zeichnen => etwa die monochrom;Geschwindigkeit;Level-Daten;Bildschirmadresse;Grafik-Daten;Zeile=1;Spalte=1;Zeichen an der Position ermitteln;Zusatzsbits ausmaskieren;Adresse der Grafiken;16 Pixelzeilen kopieren;Zeichen kopieren;Nchste Bildschirmposition;Zeile voll?;nein, noch nicht;Nchstes Bildschirmposition errechnen;letzte Zeile bereits ausgegeben?;Nein! Oben geht's weiter ^;untere Linie ziehen;M*;* Zeichen um bzw. an einer bestimmten Position ermitteln *;* => D0.W:Zeile (1-12)6 *;* D1.W:Spalte (1-20)5 *;* <= D2.W:aktuelles Zeichen (5, siehe Tabelle unten) *;* D3.L:Byte 3 - oberes Zeichen (2)' *;* Byte 2 - unteres Zeichen (8)& *;* Byte 1 - linkes Zeichen (4)' *;* Byte 0 - rechtes Zeichen (6)& *;* 1 2 3B *;* 4 5 6B *;* 7 8 9B *;M*;Level-Daten;Zeile*22;+Spalte;Adresse des aktuellen Zeichens;oberes Zeichen holen;unteres Zeichen holen;linkes & rechtes Zeichen holen;aktuelles Zeichen holen;M*;* Verzgerung bei Bewegung des Joysticks (Spiel sich besser) *;M*;M*;* Taste holen (D0=0, wenn keine gedrckt, sonst D0.W=Scancode der Taste) *;M*;Cconis();Taste gedrckt?;Nein, dann weiter;Crawin();Scancode nach unten;Tastencode merken;Demo-Mode aktiv?;Richtungen fr's Demo holen;Joystick-Steuerung;Richtungen lschen;Joystick-Richtungen;und mal 2;Adresse der Demo-Daten des Levels;Ende des Demos (nix mehr tun);Anzahl isolieren;Richtung merken;M*;* Autorepeat-Ausgabe setzen1 *;M*;'off';'on ';M*;* switch_screen: Physbase & Logbase vertauschen *;M*;M*;* Untere Zeile neu ausgeben1 *;M*;Levelnummer einsetzen;und ausgeben;M*;* Frage in D0 stellen, auf "Y" oder "Z" bzw. "N" warten *;M*;die vier Zeichen bertragen;String ausgeben;Tastatur auswerten;Taste holen;Z;Y;0= NEIN, <>0= JA;M*;* Text ab A0 ausgeben, aber ganze Seite auch noch neu ausgeben *;M*;Level intern entpacken;Level zeichnen;untere Textzeile neu ausgeben;Text ausgeben;Bildschirmseiten umschalten;M*;* Text ab A0 ausgeben7 *;M*;Farbmonitor?;ja! =>;Spalte holen;Zeile holen;Spaltenoffset errechnen;Spalte dazu;Adresse auf dem Schirm;Adresse des 16x16-Fonts;Zeichen holen;Ende des Strings;Noch ein String;nchste Koordinate holen;nur einmal ausgeben;Zeichen mehrfach ausgeben?;Anzahl holen;Space ausgeben;Adresse des Zeichens;16 Pixelzeilen ausgeben;Zeichen invertieren;Pointer auf das nchste Zeichen;Zeichen mehrfach ausgeben?;Spalte holen;Zeile holen;Spaltenoffset errechnen;Spalte dazu;Adresse auf dem Schirm;Adresse des 16x16-Fonts;Zeichen holen;Ende des Strings;Noch ein String;nchste Koordinate holen;nur einmal ausgeben;Zeichen mehrfach ausgeben?;Anzahl holen;Space ausgeben;Adresse des Zeichens;8 Pixelzeilen ausgeben;Zeichen invertieren;Pointer auf das nchste Zeichen;F*;* Dezimal-Zahl in D0 nach A0 ausgeben *;* Anzahl der Stellen in D4+ *;F*;Zahl in den Buffer;M*;* Allgemeines Init: *;M*;Bildschirmadressen merken;Farben retten;die akt.Auflsung;und die Auflsung merken;Farbpalette setzen;geringe Auflsung an;Bildschirmadresse durch 256 teilbar;machen;1.Seite ist am Anfang "physbase";2. Seite ist am Anfang "logbase";eigener 200Hz-Timer;originalen 200Hz-Timer auch noch nutzen;eigene Joystickroutine;Joystick an, Maus aus;Adresse des 8x8-Fonts;Adresse des 16x16-Fonts;Keyboard-Buffer lschen;Titel-Level kopieren;Tastaturklick aus / Kbshift-Bits aus;Autorepeat-Text setzen;Level laden;M*;* Allgemeines Exit: *;M*;Nicht beenden;Joystick-Vektor zurck;Farben zurck;Bildschirmadressen zurcksetzen;alter 200Hz-Timer;Maus wieder an;M*;* Eigene Joystick-IRQ-Routine/ *;M*;Demo aktiv?;dann nix tun;Joystick-Steuerung;M*;* Eigene 200Hz-IRQ-Timer-Routine, *;M*;200Hz-Zhler;pro Sekunde einen Punkt weniger;Sekunden hochzhlen;Minuten hochzhlen;Stunden erhhen;M*;* Hier beginnt nun der DATA-Bereich) *;M*;Offset zum Anfang;8 mal;Zeilenanzahl;je 4 Byte;Zeilenoffset;Offset zum Anfang;8 mal;Zeilenanzahl;je 8 Byte;Zeilenoffset;Offset zum Anfang;1 mal;eine Zeile;je ein Wort;keine 2.Zeile;Platz fr die Daten;Bildschirmposition;M*;* Hier beginnt nun der BSS-Bereich* *;M*;Die Globale Offset-Variable steht stets in A6;0=Monochrom, <>0=Farbe;angezeigte Bildschirmseite;aktuell zu bearbeitende Bildschirmseite;Adressen der Fonts;aktueller Level (0-24);gemerkter Level (da das Demo den Level ndert);X-Koordinate des Spielers;Y -"-;Levelanzahl (hier 25);Position des Demos;akt.Level des Demos;Anzahl der Schritte in die gespeicherte Richtung;gespeicherte Richtung;<>0 => Demo-Mode aktiv;=0 => Spiel luft gerade (Blockanzeige .);Joystick-Daten (Bits 0-3);=0 => Zeit steht;200Hz Zhler mit Werten von 0-199;200Hz Zhler;akt.Tastencode;Anzahl der Bewegungen des Spielers;Anzahl der Verschiebungen durch den Spieler;Die erreichten Punkte;gesamter Score;Hiscore des akt.Levels;alter Joystick-Vektor;alte Joystick-Vektor-Adresse;Bildschirmadresse beim Start;Bildschirmauflsung beim Start;alte Farbpalette;gemerkte conterm-Variable;<>0, wenn Feuertaste im Editor gedrckt;fr UNDO im Editor (64 Byte Levelbuffer);Platz fr den aktuellen Level;Level "-1" = Titel;Platz fr max.100 Level;eigener Stack;die 2 Bildschirmseiten x*l? 8 l ` )f DMm04yvø8r`#Uu]m `uY @ ' ={w@ LEtmt}`hn1NNN*Shareware-BasisversionMarkus Fritze, Birkhahnkamp 382000 Norderstedt 1KMK"M,K4"M6, D "tt`<RSR0lN/+OaV ܀l^-xlFS,y J R G#G7#t#e#HP,H%<P$r%<.c$H%0P$ H PX0bt%k0b#%k##h#hbb"R,y/vT.c zX$j $jD$jz zps stssj dH8%P2$tH$P$H+~rbi{XBRATASSW Ns oI4)HDC / //<JNAO Hz/<#NMP#jNC)ODAH ѐ.PNvA3" pӘQA3pӘQACD$I2<C"Q%@ 8g @Jg KAOSgP`P3NX)|U?|.2N9fBlBlQ^QQBlB,>QD.|bp9@9@NNTp)@D9@D$9@DAhn)HD NQaNBl9|6AP+xr2:VN*xQ+J,3g ANY,?gJ,fPaY"lDAf(Cv22p A$UhNY|Th2~|`B<f8 i, Af Rf Gf Vf =gSJfJfA`RJf Cprf @C; (:fp@@A??<N)(XB < g < gJfS g<\f"RE>x  bB" @bHرeBHl;?<;N)(\ )\g\*.*"g <.fRfB)`gJf !\fR`! Qi   &- r3 +H$ACHTUNG! KAOS ist installiert!Ab hier garantieren wird fr GAR NIX!Bei Problemen und Fehlern gibt esKEINEN Support oder Hotline! BEL TurboAss V1.7.6 #0000 Autoren: Sren HellwigMarkus FritzeAnleitung: Christoph PagaliesMarkus Fritze1989-91 -soft OK .z.a v.z& ,IưIgLBIBIA NY`% r3 T l     &Herzlichen Glckwunsch!Sie sind ein groartigerProgrammierer! Der Assemblerist beim Debuggen beschdigtworden! OH GRAUS!     .&r3SP beim Einsprungin mainloop falsch! WEITER Q+0,/AaQ _HBlHlN~X @ VfRR@RBC2<Ae02Bi@kBQp?AC Qp-N' LQ+Q-.zBr29|^9|`xN(NVxBDa9B/J,+jdP,p?A0C Q9B9F9F9CJlfJ,+gNֶN' J@g`Q-EaJ,;g NNBD0,AaQ A2<q"XWgJkpJ@ko`0ANC64,Jlg0,/AaQ _4,Cc4`P+0,/AaQ _r2?9|^9| `xN(8NVx0,9@^Dd8/AaQ _:,A@00lBdNSNSNT(jNSڐ|Ak:|e||e*|4d$Ax@AJPgpa< gt``JBgSB9B`t|bCgRB9B``t9B`V49B`L,+2,/AaQ _NuBl`6pN' J,+fJlg9F<,aJ,kF0,jJf&aBfjanACp?"QBlB`*a\apBlN`,g a f&a*A"Mp"QBlN`|ba  `f>SGppSGGoRCNuJCg~CgxH>1p<0d`RG1p<0d`RG1pg8<0eGg&2GRAp RGRBSAjBG><)B1pSGCdL`LJCgCg6><)B1pSGBl`JCg|fJBgSBClSC>ppRG|m`BBa(a$2; <Nu0,lf4,D9BCcv49B`l <Nu0,A2@00lBbV9A<a>9l`B0,A@20lBd,9A9AT@209AN(XQ*` 0,A@20lBdle9lT@9pN(XQ*`9A2,RA9AN(XQ*`0,lb9@0,R@9@N(X`9@N(X`J*gJlgza.A0,@<00aTH~LhdHlN~XBA"lT0,DpOQ0,lbpNVL~Sl`pNVL~Sl`RBle9BN(X`9B0,R@9@N(X`A0,R@40lBdJ*gaA0,@<00a0,R@400H~azHlN~XBA0,>D"lTpOQL~0,Rle$H瀀0,RR@@A9pLNV`.NV9B` a`R,^ ,^eQ^/,^,^HHH{ 9|^0,<| 9@`NTJ)_^NuberschreibenEinfgen I Einfgen II N!` UgJg/a:RJEk2-Ul>Jj20k"JfQ|;Q0,/ CaQ"_*`R0Jk`p-0;gNZ\ DR6Jj0kzQ|;Q0,/ CaQ"_*`JEfJjNp0-|0g-||0fp-`Jj"p -f m`J-gJj`Jj0-fm` -l`Һ|mn m`Hm`>J-k0`|JEfm`m`Jk|`E0|g -Rg2,Blg$5m%|m`AVNY`Qa&j5mpa aflaZa `TC)I<"l -lHzNi 1f aNzNi 1f aNDNuDNup-0;gN|ZjPPP,P|Pj44PPZp0-1pJ-gz0-|? 1ffa0jj`T/ p0-@?ajjHGp0j|? 1fa@7@`||g |f&_`p0+a<7@HG`p0-5@`J-fp0-|?avjj`Jmkp0-aV5@`|-@|g$`j-@0|0g`X0-f`Jp0- 1f8a5@`./ AN"""""""""_NuJFg a ~ Ug mRg mRgJf fm a`PJ- f.J f( fa m 0,/AaQ _a``9F"MA0p QNu9|"MA 2,BF`""2Q SlBa N` Ug -RgH~HlN~XB @A0L~`afa ACp?"Q.z~P+|-/<P` ,^g6Bl`B+|Bmp;@ ;@Bmp ѬRlBa ~`0,/AaQ _JUk2,gRAABlSA  gJ g~RAkzJmk SAg< g<:f :fRSAJAkTSA  gJAoSAg"< f ;fSAnSARA gJAkd`0,BS@@da9B9|`a9F9|+U +m;mB+|Bm mR f Na}R`-<g<Xg<>g<ga4ffab;m;|BBmBm` mRg mRgam B- `V mRg. mRg&K RF4af aKSFNuSF0a t`AH0,@400F <af aL @NuL @`rlld(rҬx|drҬd2,BRAldNurNulBfaJfraflENdp0*+jUn>gtD@ lxC2"d3 d# d `HA# # # # QHAQѬx`8 N",xC0d0d d `HA QHAQx0`Q lpr- * Agrj8D@C2"d3 d# d `HA# # # # QHAQѬ`8 K",C0d0d d `HA QHAQ"K* @ H j `2QNuatf8r Ӭ2,B$lFeC #"#"3"QBBSmBmRlBP,NulBeNuapt- 0$MA 2,BF`$$4Q NC",xd0d d `HA QHAQx l0SlBP,JBg6", KC d0d d `HA QHAQNu lp0-k2J0jH `t` lp0-k2J0jrH `t"lifRBg$IC JQjJBf:0Q je"*<g&<g<f L``P`0Hzp0-k6|dN|dp0-k"|e2@ 6f*H@H`"Nug@?`|?r@6`XH0;gNZZZlllllllllAp-1Nup0-lgP.NuSl Nup-|fp0-@?`Fp0-k`p0-|0fp0-`(0-gp0-`p0-jNup0-j@?2 0flgP.Nup0-@?"aTC0k<g|fNu@?Ha`H`a`ZlBb4g00,Rlg,Rl0,@A00r- K RF@eNu`ra00,R@G<30rLhdl` - K QNuAaC0,RS@QQAC0,R0QC,N0XJgQf0RPNX0,lS@`lBbra`JFg,Jlg(Sl0,@A00rK- SF@bNua <,LhdNu0,RR@AaCU@!QQ0,R@X@AC0,R1!QC,NS`0XJgif0NX0,lS@`$Ldr) C RlQHdNuLdrC) SlQHdNupN' lBg mRg9FC2Ap?"Qaa`hBlHB0,NXEr 0|gFe fpS@5@QpA차gPdPgSP`be hf `SPA,NXJghbPg$bSXSXJf0,R/AaQ _au.LhBNuNauLhBNuH@2,RRA0,AaQR@AfLNuaf 9|9Fa`aEr 0FeR@g5@QpA차gPbPgRP`bRPA,NXJghbPbRXRXJf`tNu0<,9@a`"4<; :e@`4<;"K M2p|g&A( SAFgJ( gQf<aX`:dg2,B l"l`:dg|a.`4<; :d`4<;"K M2plBg*JPk&( A RAFgJ( gQf<a`p:deg r l"l`:d[gR<a`HJlBg@ M2pASAe Fg8p(g;Jf6<a`:dg2,B lFg`:cg|a^`J,?g<aN`a>a(`JlBg mRgaJ@g9F<a`l Mp2lBg0pA RAFg"JPk p(g/An0 _gJ,?gNu:c%gr l`:cgX<a` p-gr-aJ@fApNY|`N' <aN`' Keine weiteren FehlerA>NYJ@kA\NNo"NְlBb|9F<aBl`j''PC-offset = $00000lBg, M0R@A lBgJhk<a` JFg M0S@kAJhk`H@9F0,"M2lBgC RAFgJQk if`"lr`H@`H@ANYJ@kx|gr9FArp|9b|0dDN J@oH"M2lBg"C RAFg4JQk0)k lJPkXf`"lr`ta"9F<aBlLapZ`))&)<$ )F123456789123456789012345Zeilennummer oder Symbolname: ABBRUCH Springe zulBe<,BA,NXJg Pchb<0aHhd9F0,RR@H9@S@a! Fg 0S@az`oxBl)ld)lh)ltlao^ApR@Xf9@NurLhdldl*l,lt&l` - K QNur*l,lt&l` - K QNuH炀 M (Tg(<RgUg.ASFj`$ (gJ(W2LA<Na`LA` -Rf mRgH MJ-W-JXk Rf PRgAP`LN0a`lBg~le9|9Fan8`flBg^9FlbBlan`Hp)@an `:Tab`pg(0,ldlBg?aHh4,lBc4,B6,BBWlBg>SB l"H2<BBBBQ lU0,BS@eP2kARq`ar- K Q"M lSB 0Q l" ,"K`H@0QH@Q l" ,xx"N`H@0QH@Qt4Cr 0|gleld3|`iQ lBЀ"Ёp<,NaP,Bl` lp0-k(@Sp20 lSAb0JAg0`, l`$pg0,ld@eleH8H?aHh4,lBc4,B9B_0"M$N KrS@) C QH(,?"l$,g" l `H@0SWgH@Qc< l ,gS`H@3 QH@Q"W l S`H@2QH@Q`8 gS@ l`H@0QH@Q"l S`H@0QH@Q"l$,g" l `H@0SWgH@Qc@ l ,gS`H@3 QH@Q"o l S`H@2QH@Q`: /gS l`H@0QH@Q"l S`H@0QH@Q"l$," l `H@0SWgH@Qc l ,gS`H@3 QH@Q"o l S`H@2QH@QLh4,l6,FCr 0|gldFeleC3@`B3@Q9FB9FLP,BlNa`ٞ /gS l`H@0QH@Q"l S`H@0QH@QLh4,l6lCr 0|gleFdldC3@`B3@Q9F9FlLpaHhdBlBlNah`pgT0,ldH@cldlBe6H8H?aHht4,lBc4,B9B8_0"M$N KrS@) C QHԬd Ьd Ьd Ьx|d$,gR l g(TC `H@3 QH@Q lmլլլ"W l S`H@2QH@Q$,gX lx g*TC `H@3 QH@Q lmլլլx"o l S`H@2QH@Q$, l g*TC `H@3 QH@Q lmլլլ"o l S`H@2QH@Q lr01AllBlbllCr 0|g FeD3@QLhG&,rSD$K0`Q%ma^+jE0H`J,g~BD9lBH:f49FD9lF:f"J,)gR9lDBlF0,lBd9lH4,DpNJHQ/0a::2,FaLhJ@k"9BD9AF9A9F<apNJ`<apNJ`p- K RB -Tf`PXL`BJ,/kXJ- g4<ANzB`HpNu:,+f,+f mRg mRgJUkdHHHl ,;gN~B:grACpf gRBB( XLKMMnJgaJ@g9BD" ALh,J,/k<;gpNuJf Jmj6RApNua4 -l R<;g<*f @@pNuV`N`HHlN~BXLANuLhrp- K RBEgR,+fN,+fFlHf:Pgt:f(Eg$0a`4:Pg4,B:g4,pNupNuH`&NgLgg M,KgFf&Ng6gggf`f&Jf"`ggJgƲgf`p`pS`pLaNuJ,f`A Ph hhJ,)fhhh ANYS@fD665Ap VJ@k:W0AXC:grEpQB`QBA)Cp VJ@k AQBJ,gpNJBDBl9lBH:#fD9FD9FH9F9lF:f*J,)gv9lH9lD9lBlF` 9lF9FD4,DHP/0a:: 2,FaLhJ@k69BD9AF9A9A`p|c0[@9@aHhd:fN'9F<0ahH~HlN~XBL~0l9@9@^:f,NSpNJANYk|g|gr4,AaCC IfAaJ@g,A2<@BQA:gSS@QJ,0gB|-NֶQ-J@f(A9IEa`pNJRl`<apNJP,`/p:gSJg gR@R`"Nu!===z&)<$ =D =E =D== 66 > D .E > >E >!D!>-& >8$>A$123456789012345678901234567890123456789012345678901234567890Text suchen und ersetzen Anfang Cursor Block AllquantorExistenzquantorGro=kleinAnzahl alle wahlweise Ersetzen Weiter Abbruch pNJ`ʈh PJf h PNuAZ,?aAPh J,?f Ph APh ,?g h PA0k@"A’//?,>?<@N)(O gN)Hl=?<AN)(\`N)pNJ`$ABE#BpaVk"JGgANYS@fHl>?<AN)(\`.)<$ & B|AD.EAD.EB<BOD%BWEBHD B` AA BE BD B)D E# .DS SicherheitskopieTastaturklickSprung in den Debugger nichts starten starten & zurck Symbolnamen gro klein beides Extension fr ASCII-SourcenAutokonfig. beim LadenDATEI LSCHEN)C6C?Ce&CC$&)<$r3Dateiwirklich lschen?Achtung!Es werden nur die ab jetzt eingebenenoder hinzugeladenen Zeilen konvertiert.H@Ar,?parAIQ0489lB:f4t:f"J,)g9l4,Be 8,ldh480aܴ&l$lJRkatp@g*JkHEREHE`ʼRE mRgt mRglaBjx*<K RBDgLJUkle:ANYAR(APh h J,)gPh h ANY|g|fN!A P~ gN J@kg9@EopA<*gJ2orCpVg~tARBJ2f<?g<*gt:gH&l,l9lBBlQp0kKC?A?<#\8PANYJ@k|g|fE45|RgJH$t*l,lt&l*<aj6K RBlBep0K-|L`$Eo`pf :E0a `QQ`p05Pk2Ag=Nu=Nug 0@;PNu2Af0uP@?uPNu=DNuJ,)glQH8,0aL&l$l*<aj.PJUkRDleJ,f ANYLx8N!`PH&HGEo/ C?<""p"#@#@#@ #@#@A(rRAJ2g`<?f`<*f0k R@|m&lA?DB(aJ@jA)H I BUGA BOO. PRG&IA=xaa`?<Hl>?<NN)(PJZJ,fEr <GRPa6kJGg lb#^N=ACD#x2<C Q.<n!AMHNi!I ,?4P/?<HN)(\ BHzHl>/<KNAOJo)@D0B/B/<KNAOAL"hNaL!/?<IN)(\ xY BUG1f* XBRAf")`pAjip(8(P9| N

IE*IfAJGg:)|,F)|,JAkp  QpNJG>N)pNJL`DRUCKERANPASSUNG LADENP+A>xC>g<.fS :ᘰ< g.ᘰ< gfBAEzC޸r!< fBQAa3JGgpNJBgHl>a~?<=N)(PO9@>k>B, aBl|-NS9F9l9|4`pASCII-SOURCE ZULADEN 0kB von 0kBcH?<//"?<NNAPJ@k,?</NAT @"(p dTAHAP+xN(Q+A 0A0LNu/AN`ArT :m0 f0R :m0`A`0 _NuN)BgHl>xaV?<=N)(PO9@>kB, aXAS@J WgBl^P-)l89|4BlNS ,U@9@ ,|t)@ ,)@ ,)@A &ANZ0<tBl $f,/ L:x "_< fx RB< gSr`6(`0,?fJAf$| Pl8,BcD@d?<?N)(O Jk B1aNu"pNJQ-|Bl`!hnh&r3????? Zeilen konntennicht tokenisiert werdenCrpNJADP+/xN((Q+ INYCx`pNJA NY`ix )<&r3i i )<&r3i i )<&r3Illegales FileformatFehler beim LadenTOS-Fehler -??Fehler beim Speichernp` a @ga4kA>xC>g<.fS :ᘰ< g.ᘰ< gfBCr!< fBQAE JBgEa,kJGgA>a+kpNJBgHl>?<H V*l,lt&l<,BJBg0,R@g<,l0,a*C$ E``r- K SFeDJUk@ mRgHHlN~X gB(LAf|  ma``gaXLjPzN)J@k pNJ`"aB,>`ASCII-SOURCE SPEICHERNASCII-BLOCK SPEICHERNHl 8/?,>?<@N)(O JkC°eNuLjPC>`2XO?,>?<>N)(XOaLjP`p`Da >gAdPhPJ,)fPPhANY2kW@gN>gpNJp N>HV*l,lt&l<,BSAg40,R@g<,l0,ap`,+fr- K SFenJUkjHHlN~X gB(LpN>ApN>JfpN> -RfJ-jr- K SF mTf`xp!N>pNJLj@`AFNYS@o`mpm& m$)<$m)<$ m&Sourcetext drucken? ALLES BLOCK Drucker antwortet nicht NOCHMAL pJ,)g A NYS@Num$ mn& alles oder Block SOURCETEXT LADENSYMBOLTABELLE LADENndn|n& )<$Der Sourcetext ist nochnicht gesichert! WEITER P`J,,gafgANYS@f(A;C>xJ,k4EA <CRSa(kJGgpNJBgHl>x?<=N)(PO9@>kHlHx?,>?<?N)(O JkaC I0r>XXQA0r=XXQAr=pXQQfpNJ)i:)i\)i`Ed ):aEv )6aAz0E(4/A+J(Lf )\`f04pANY|`^Ji\gDAB PPP+ANYQ+J@kA \f `g&BBN)`/A ( _^f`pNJ9iB9ip9U@j9id6pA1>U@jJ)JgpAX1JSQ`9iJN9iLP9iNR9iJT9iNVpAX1PU@j,?p)n,?)Zg@baa@C l ) Ѭ"Ҁda l0 lt )Ѭx"Ҁ|da lp0,Ѭ"ҀdİgL ) lC??<>N)(XOaa*N<)H`Jg//?,>?<?N)(O JkNua`:pNJaANYBiH`J,?gX ,?jf o:)ij?)if?/,?<IN)(\&,??/?<HN)(\)@aaNuH@.a $ j TrGa DTOrGa 8XOrG|Pa (THGOp?GOrGa Tr2` 0s s0sBsUsgsz sLade SourcecodeErstellungsdatum:, 31.12.1988 12:00letzte nderung :, 31.12.1988 12:00Bitte Passwort eingeben:01234567g`pkBQ`Nug eBPNurRAg gB`B`Jg ReCNugJgV` <MYSAg<.f|.SYMBC> <MYSEa"k|gA>aJ@k`f~a$`H|`pNJBg/?<=N)(PO9@>kjHlHx?,>?<?N)(O JkLCp SYMf>4,$lHlHx?,>?<?N)(O JkgC*A2`&9Bp?N)pNJ0L>NugDA Q !i!i!i!i!i !i!i|RBv ׬`.xWD&1@@VfJ(j$)(f !iiC S@fZ`0!ii|`HAs!C;Jg.fPJ(g \fRC>xJgfPJg `LNuHA>xC>g<.fPRGBLNuJlBg lJkf fJXgNuDNuagN!HpNJN6d$A;p@A??<N)(X"HJfS!<\f ):fRBHl;?<;N)(\C>xg<.fS.SRCB`jaLgN!J,f^HpNJ$A;C>xg<.fS.SRCBC>xE <CRSak8JGg2a|D.A>xJ,?faakpNJaLBgHl>x?<kCBpBQar3|3lB3FHl[p3U@j3l6dpA3>U@jpAXJSQpAX3PU@j#l?f#l?jp,?V@n ,#@/,/aj ,gjH@"l I$laƳdP lAC?XXQHlHx?,>?<@N)(O Jk C>xror?,>?<@p&/gN)(O JkJe`QN)J@k8Q,`B,>pNJ.BLaJ,>gpJ,D.njB,>QD.`\)@>N).BLaf ,>`.BLaVC>xpNJANYN)/ ?<AN)(\|0aBlHhdBlB,>a.`LC>`JgbH , lR<""lE?<$$$$`H@# QH@Q lPP"laT lE?< BLNuH瀀 lS0,S@kA JfJ(fB`LNu!z )<&r3Die Diskette ist voll!SOURCETEXT SPEICHERN/?<*N)(T4HB?<,N)(T4#B6#l:f#B:$Nu@@f"|b<04|glBb <a`|bf9`9`v l2;t`PRBJXkf9` HA| pNJ,D.kBQD.J,,fJ,+g0aVApgJ,,fA&NYJ@kU@gS@fP>`NQD.`r3|||&|$-|\|$|$|&Die nderungen wurden noch nicht gesichert! ABBRUCH VERLASSEN SPEICHERN Mchten Sie denAssembler verlassen? JA NEIN aN=F'"8ADC0<C"Q!!`F#N=^/,D?< NA\BgNAr,+Aar,+Aar,+Aar?<*N)(Tr@AFaZHr@A;aLHr@|PA,a:a|#dA>NYJ@kL l?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~N!P+HHxAr2,BN(2,AN(2,AN(2,AN(H0tv l2,SSAk*A Jgj bgHCRCHC`RC`HBRBHB`RB`r2AN(HB2AN(2AN(HC2AN(L x",xtAN(",AN(",|tAN(",AN(",?AN(Q+LANYS@fA ? ? aP~J@j|f*/,?<IN)(\ ,??/?<HN)(\)@A Ctr  Q ,&,??aNCtArPP ScH0CtA ,"(,bVr$X&Y љXXg`H@6QH@QQ lpB@ !@L ,lt*l&lHhdBla`rCA$$X&Y ёEGg`H@7"QH@QQ`A&NYS@faB`F/,?<IN)(\)l?)l?)l)l ,??/?<HN)(\)@A Ctr "И""Q)l`'' 9 @ N \ l{$&Zeilenanzahl:Programm (Bytes):Remarks (Bytes):Tabelleneintrge:1234567 von 12345671234567 von 123456712345 von 6553512345 von 16363davon:12345 Symbole12345 Formeln12345 DC-Zeilen12345 Sonstige REORGANISIEREN Zielcode maximal 1234567 Bytes$)<&Der Speicher reicht nichtfr den Sourcetext. LSCHEN p F,?gpj`P+AjP",?JjP`扂xAN(2,?Aa2,?AaQ+A@0^0d0jA:zNYS@o\P?:fAjtra¤| dr )A?ADaJk9A?AB000A2a4kl?g9A?1@NA@333`rpt<0k<bIQDNuDNuptp<0IQNu'  )<$ & .59 HETDcD l ~000555999V:H:FarbeBildabschaltung nein sekSuchfunktionen von vorne letzte Zeile normal SuchzeichenP+rAfx2,NN(AY2,PN(AN2,RN(AC2,TN(A82,VN(Q+rpAPh 4XV@ pAQANYkU@gAa\i9ANAaPi9APAaDi9ARAa8i9ATAa,i9AVrA,pPW| XAQa Nrp< g0k"| b20k| b @DNuDNu4 &")<$( 2 >  LT^ m g u#D+D#D+D#D+D# D+ D# D+ D# D+ .D?????????? A7 SP DarstellungBefehlstabOperandentabRemarktabPseudooptabPseudo-RemtabOpcodesPseudoopsRegisterStackHexzahlZahl krzen gro klein ja ANYS@faNa&A>x NONA ME.S0RCBaapN' BBBP|B,,p)@r A0Qp?ABQBlBlN ,x,lt)Nx NdBXBQ*l)M M0,B`BBBXQ:;@BmBlB&l)K l)H0,`BBBBBBBBQBlBlBB,RB,N| _Hhd` rr3$&Programm lschen? JA NEIN yAl(NY(J@k|g|g|gvAҰ|gA ]@k AgA0,U@lf4lf.4,0,@>@0pRGR@|mB1R@|mpg< gN ^`P+`0Hx@Ap @ @`VAFaj6p Aa$AaAaAmC!fy`rJg`NuyHx@p Jjp-DAA$AB%A! x P+N(Q+<-f A fAa|AaLA`E  Q]h&'$<$$$$$%4% $ % << >> % ( ) ausrechnen Formel bernehmen ENDE ohne Vorzeichen Rechenzeichen: + - * / & | ^Vorzeichen : + - ! ~ *FEHLER*N$8$OAH!A (A!0< || fA|Nu.J!<Nu@H` @HaeJ?<|NN|T&2Y<A+2I<?A+<@@+??<-NAXHC??<+NAXLFNuC"pHAaHAYaYpNu0123456789ABCDEF/ptQ"Nupg< g<ae <{dJNupSNu<0< e_< edNu<7DNuv;0WJCk;0 Nu%@.$ HJgBBDJlVDDJlRDDvdԂփ`pbd|mDdD$LNuH?,OA,a>a J@fLLNu/a$<+faarԁi,`<-fa a^i`ذ<|f aaJ`Ȱ<^f aa:`<f >f Raa `"$Nu/aP$<*f aaBa`</f aa0a`ܰ<&f avaā`̰<%fafaa$`"$Nu<!faLa JgrNurNu<~f a4aFNu<-g<+faa NuaaDNu/<(ga&$Nuaa̰<)fa$Nu.NrpLNuH?~<'gL<"gFt ak4aae S`PadJr&HCHCJCf҃eҀeaaeL~NurgJf(g< fSaj`SN J@kp"aT`HC?<$H/ "#X#X3P Jg .fS.BAKB?<AN)(T/ /<VN)(O LNu?</?<NN)(POJ@k<,?g&pNJ/A.NY _?pNJ0U@k/?<AN)(\DNu!)<$&r3File existiert bereits! BERSCHREIBEN H)JB E=x)JBr$QE>)JBr$QA>g<<.fJn:C=xJfSI!<.g<\g<:fRI\*.f`*Jg|.@H@B(`A`*a. lBp :f <AN6^`N6dBl@ < N1R<,@N1Bl@ ,AN1 <N1Ra9F@L$lBJf~l@gnE>p"QE=x"Hp"Q"HJf \fRB ):f"p|A??<N)(XN6dJkTN6d/ ?<;N)(\JNuHN?<NA\?<*N)(9@>,N)(9@TB,l0,zh2<S`Jf .g.M Q,l0,BS@PzM Q)xaJkA"8 打Wjp )JpNJ" p gAlJ,(gAD2")xN(A:")xN(A5") xN(A1",xN(Ar2,BxN(p SAgpn"Av",t4,Ba"<.a`"xN(pnr2,SAfp 4RAAxN(2,peSAfpGRAAN(Q+A YJ,"f vA*(ff2<,&Sg ek(Ph h`Ph h` Ph h2N(Q+A H@|g$ |g |g Jg pNJADNYGJGLk<aaNH l"lJlgJijC JQjLNup0)0`J,(gP,N%0,a(Hhd0`Nu4JY )<dtt(t &t 6t( Ft Vt ft( vttt(tED'D $(TEXT: DATA: BSS: REST: ) Zeilen mit Fehlern und Warnungen Bytes relozierbaren Codes erzeugt.relativen Codes erzeugt.( Zeilen pro Minute)SymboltabelleWas nun? keine standard erweitert ANPASSEN -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -No&r3$6&)<$Symboltabelle mit Symbolen erzeugt.Assemblierung whrend des 1.Passin Zeile abgebrochen !!Zielcodespeicher ist vollBenutzer-Fehler (FAIL)File konnte nicht geffnet werdenkein PC-relatives Programm erzeugt SPEICHERN $lD$j,C6g,gJf`ggf`"K&HfSfpNupNuSIGMA=|M>/?<NA\G A;aHzg4XGa,<\a&08F|A<:aR Bg Qf6..aNu?</ ?<NNAPJ@jNu../?<HNA\,gBg/ ?<=NAP:k//??<?NAO (??<>NAXfh,F V`f..MAE0z -sofF ft01fg<@g<BgL>NuS@`JhjSn~J gkth oR$ B$Bt`R@A `Y(4(D0|0g((DgR( D$Dxt`t`$3(`4((`(4(D|f$3()B)H 9@ ``Jl kXSeg 0, l `D9| `:JhjP#`,R@A JPk4(|*g|,f``|#`J,#jR@A JPk (,fQ#`Q#``t(9B`Y``T`t4(9s(P `J, gJ,!fJ-k 4(lfP!`rR@A JPk(<Bg̴<@g<DfQ Q!`DH|z9| Q#Q Q!6<tpJAg lA&lR@A жhnngt(4; g^N X4 .f@V:Ae (<g <gL>NuJ(gR|`(BgR|`JhjSAgJ gkh oR$ |$Bt`R@A `r2,g0 l"lBQtJ(fJ(j (jTRBBQp QSAf2P+Axa|dQ+APh PJAfPPh AxNY|f$<ED <MYSAaDkJGgA>a~kNSpNJBgHl>?<KC>*SYMHUHx?,>?<@a|2O Jk&l$lt? Mp !j!j!j !j!j!j!j|SFWƑHUHP?,>?<@a{O Jk񠰈f JFfa{`4LC>`(SYMBOLTABELLE SPEICHERNJ,gH&,,C?t½epր",R"A*A&l4,pDJk& ,gSBkJJ+f>"" +B <g<g<gJF"pѬRDcG ` l 錘!Dg*$I"lAT"H$Q M "QRBLo=gH瀀ANYLNuSBkJ+fd"" +B <g<g<gJF"J+g|H"""2RDpѬpѬRDc0-j^UlNcDGNpPRF`<<<< Xpr2-4Jd$@ 3faXJ3jVJ3gTjRA"3Jkjf4BgF$,Rf /pa 'ԁ)Bp` paT`&p`paHAr`'Ӭp` Bg$,RB`g pa` 0- g V$ g V%gQ&f|&gQ&f|&gJk lg W'` :)YJ-V` *Jl jVp0-4Jd 3fa J3j,J3gj 3)@9F )I )Mp`pa4p`pa*p`p#a `p#*la` Jl k"Seg"l *l<, `9| `p$a`pH@0tJmk 4-ԬNuJ,#f^m?a`JgP#m`J23H``RFPJ]k"p0|*g |,fp` |#p`p Kab`jp aX`0-?J3ga"3p-@JNNq`&W`"V`^`\`]`_`[` Z`[`ZNuJ,#jRFPJ]kp ,fQ#`p!a`|J,#gQ#`np"a`d$p-"a"aԀ,B`DPD,/ r2-At \WR C>t WAC )eڨopNJBgHh ?<=aqPJ@kR9@>Bg?/(?<BaqO //f.?,>?<?aqO Jk!@aq~pNJ"_p`pNJ"_pH@0Nup a ZpNJ"_p`"_`pr2-A (:f@A??<aq(XT/?<;aq\`r2-Aa8J@f` -fg)@`v)s`jB`b ,ѬB`R ,R@)@`@p0Uc&B W,@<`3633b333p3>p`J, f p0-a9s)MP p`p&/ *la *_`pP!`p&*la `J, g6J,!fJ-k0-lgRFPJ]k Dg @g Bf`p'a p`HJ, g Q Q!`6p(a `,p0-Ap0k 3 `` p0-A1|p0-a `9m`r0-p>-<0f60J3ga.3J3kp`J3kpa` Jjpa~$-||@mgZB ,@fpa֚cTp0-kf"',3`,Q`~`pa`B ,@fpa|cp0-kf"',3`JgCp0k&|e,`0J-gC p0-j`PMRF`fZ`r@Ag2 J3ga B$3J3jfgDJ3k6|/|d@8|f,0@H 4k:`6TfH2I@8AA`0@?|(k|b H 4k6Höf0N B@Jfpa>`pa&P(`pa`gDJ3k&"0Hf00Fep8ar`AAg8N0HgB@Jfpa`0||Pfpa`p5aP(`Jmj0-gD@ 6`fp1a|g|c HBgNp)aNpS@gp0avN|?HJ3gaJ3j$&3A4TH2XXf2gNpa(N`pJN@pjP P@PHH\Jg8rb2CN HHfCN BJf paCNpaNr f.`r fV`Jmj0-gD@ 6`fp1a|Ug0HHf&C` ag9| `4p0-2IdrJ3j J3gj"3Ag",RAҀӬr`Ѭ`r-Ip0-kJ3gaJ3j2)`B|?g]@k @)B`p)p`pa`JgR`p0-a0r2- 3g '7p`TAp0-@?AJAgRN @,@|g2p0j@?J3gaJ3kpa`P,gDJ3k>$J"k$*Yn(`~&<cSn`dSo*pXN0@|g2|fr~`H@X@0@|g|fN~`0(A`82p0j|@?J3gaJ3kpaJ`B$3gDJ3kJl:k :J:f Hg B@Jfpa`pak >J>f HHg BJfpad`paLRN0@|gV|f~` H@R@0@|g6|f`~Jk"fK RF` - l.RN",A` `0(A`"p`$p0-|0|0fJ3jJ3j 3k-AgR"|,A~`~Jk(fK RF` - lRN",Afpal`H}A3($Ovp~< fV<ar 3g3gF`D'|bJEk WLNuJ-f|Rl3H LNu|`|Rl3H.J`|`H0aR6$ g>< e8<b20| @@H{ a,vNuW`U`R` S`T`VHH`":L NuH0ax6$ gZJf ahEԁip`<f aVEi^`ذ<faD`̰<fa8`<f a,JEf`<f aJEf`":L Nu|`H0a`6$<fJCfaPJEfa>i`<fJCfa6JEfJga`ʰ<faā`< f aa$`":L NuH0<bJf.a0O<<L Nu<a<?c<@L NuS`zrkf2`4"`0r2kVJ3jDJ3kf2<VHkz"3gDgFgJWHHNu|`|`|?I2;N">*6"z`",`r2,`r2,`J,&^HH`J,"V`H?<NNT/?<NNT"ቂL`\pQ x TASSf `Y BUG1f4 XBRAf,)`pR,PAji((8:=fp 9@Ay>pR2IJ0j9@@9|N9|P9|(R9|T9| V| ]B,\B,[B,ZB,X| YP?Q?pa{B?<aYT2A;CaAkA/Hx}?,>?<?aY&O JoaY r || ASMfXfPp CN2QpC?2Q,?VD@?CA"C6XC < AUSJ,?g < EIN"0<C"QXbX"lDJ)faRkC;fA@0?0,?000p J,?gpjA> NONA0ME.CArg < gQBA> NONA ME.P0RGBaX:J@g)|,F)|,JHx?<HaW\O$)@?J,gal r a)B?)|@?J,j?&,??o*/?<HaW\Oaa, l0BlBlBpayNupayANY`*0, l`BBBBBBBBQNu paxANY`Ht?<aW(T2<AmX<PnR|A??<aWXBgHl?<GaVP"HJf \fB/ ?<;aV\J@kt\Hl?<;aV\??<aVXJBLNu &)<&Der vorhandene Speicherreicht nicht aus !Das Format des vorhandenen.INF-Files ist unbekannt.DEBUGGER LADEN ,???,?gJ,g0 m@?FNuNu"@ ?Љ)@?S$raܰԂ raܢԂC/$< "eӗ"$<eր $)I)It)Ix)I|)I)I)I)I)I)I)I)I)I)I/$r a*S2.a"f Ga$f G.a*f2J)jnmghJ)gZJ,-fTpaOH̐9H`$,^r2)| ^xaQ)B^a~La|*a|~ja|*)@+| fB+)`Q7Aa+tJg ;g *g.a! f, Ga#F gp<@i6a:f`&J) f 7i6a+tp.8) "iNpa*<;g<*gJf-<e< b+gf |9pBlLNuQ1̐9HA"l<&lr`$$Q$$$$$$$$|eGSlYd)KLNua)`vpr+]Ak|b9`p`D@` g <.g < fp`p @ WRa t gp `Lp`FHx&|gfE HMD԰bXSgJf`(,Da) ,f@R$ Bpg0K2gRvfJ-jpAF+ +`p`pLdNuH@Cprg < g <,g<;g<(gq`| LNu7|@p`g.<;g(<*g"a!J+f|B Hf7CNu7|BNu7|DNua |7@7|F$Ita'F4a( ,fa(RB|m.Gp`~SNu7|Hp0+j a' a B7@`a!Jkf|J| bj7CNu mRg 0Nu7|6g<;f7|Nu7|0<'g<"fa|$I7@rggQgp.G`BNuaZ0+|b\@2JgbCa% ,fRHa$J+f*b~CkNu7| ak@a Co<*gBX(@߰|TEg<|DAgV|BSgn|OFg"a#7@  g ;g A`NuTH7|Nua|XTfp(J1fX7|Nuah|TAfp(J1fX7|Nu(<߰<Sfp(J1fV7| Nu(<߰<Ffhp(J1fZV7|Nu(X(|NuX(|߰|DCfaڰ|Wg|Bf| X`|X`agJ) g ) b"iN7|r2+ka$va\2+"l#Nu7|Xr2+kjzaX"l1`J+fF#Nu7|r2+k8"lJ1gza1@J+f #Nua7|Nu.Gp`,aJ+f>0+@f䶼c"f*Ƽ0+H@'CkNu0<@+g<'CkNu7|Nu7|Nu7|.Nu7|Nu7|va"r;Ng RA|m`RARA<+g <-f:a"g<,g<*g ;fSH7CNuXDLFPOW7|86za kb'Ca"T ,fR ^f|Nu7| BSNu2,Fg|g.Gp`7|BS9FNu2,Fg|f0,|g@c7|BS9FNu.Gp`2,Fg|f0,|g@c7| BS9FNua6J+f<b7Ca>zaJ+fbpC$7CNu2<4`2<`2<4@`2<@` 2<4`2<a0+|g~|bHCJCf&HCHA67CvBka! ,fBRHaJ+f|g.|@gc HHf`c 2HfƁk'CprNu0<0`2<<a>0+|df:@A7@7CNuf"0<`2< ` 2<`2<a0+|d2f@A7@7Cp0+|g"lpNuf0<`?+* a|@ <7@G"Ez7_` 7|aaVTE|ga ,f6aB03PksPfrRAa ,fa&sPgIA7P`IA7P7PSH&JpNua J3PgPPB3PsPv"XRNu?+* a<|@ <7@G"Ez7_` 7|aaVTE|ga6 ,f6aB03PksPfrRAa ,fa&sPgIA7P`IA7P7PSH&JpNuapJ3PgPPB3PsPvc 4H´f2TRNu?+* az|@ <7@G"Ez7_` 7|aajTE|gat ,f:aVg03PksPfrRAaV ,fa8gsPgIA7P`IA7P7PSHRRf&JpNua 'gB "g<dg8<\gN<-f8a n+a \gH -fa P@+Nua F+a \g"a k`a 7@a -g \fa p7@Nu+`a ^7@0+|?|b6kk`"2<`2<a az \ga (jBa k@+Nup?k|a2<a Nua H7@` \gT #gSa\J3Pff+Nu \fa :7@a`Ұ<#gPa kp+a ,f.@+aRa nk+Nu \fVa7@Nu++NuRaJ+f0|b ^CC++` \g|2<a \Nua`a7@a0 ,fRa$+`n|Nu7D<*f8RH +g -favJ+f|gHHf CNu7|NqNu #gSHaFJ+ga>|Nu7D<*f6RH +g -f(ae 2Hf pJCjsP4TSNu<#fRH`aJ3Pg PsP4TSNu<DgX<dgR #faJ+f8|b |4TSa2<a "J+fp8kg kbNuk`a+a2<`<Dg<<dg6 #faBJ+f|b|4TSaH2<`k`a+a,2<`2<aaa4k(+Nu2<an+@?|c |b2+AAA7A@+Nu7D2<`22<`2<a$a0+2<ar?+|c.<cv?@|g^ ?g0+2<a+<|gV<>gP<?g<c<c+A?7@I0AkH@+Nu||7|@2<alNu2+AA@?|m|m| ArTS2<akLav #gS"a0J@jp`a/J@kJ)oJ)o7|7@rNuav7@kHNu Ar`VP@xahTSa \g2< akH0+@8| f6+pCQNuTSal2< akHNuC~vJ1fBkNuaHx@2|/g|-fa0x@@l>S@An|/g̰<;gJ1f S7CNuaj ak|NuakDNuak@+aa(+4TSNua+4TSaak@+Nuv (ga rJ3Pfc0Hf`03PS@7P` #gSa 6J3Pf,c HHfCa6aRkF@+Nua`J3Pf 7P3PNu/ a.7P3P|\222"_NuNu2<aNf+Nu #fa 4|Nu #fRa J3Pf,?f bkag<;fSHNu #fRa VJ3Pfb+Nua>Nuakn+Nu`dC|f<Ag@<ag:<sg <SgSHpNu<pg <PgUHpNupJ1fpNuUHpNup@0k|ntJ1 fJ@Nu Dg dgpNuRHp|0k|nC{tJ1 fJ@NuR<0k <n@Nu.Gp`(<0k<nt(J1 fTNuXO`Rg"k<bgx|gF`*<g$+gb`+|g(<gN<fJ3Pg03PS@ 7PXS$NuJ3Pg 03PS7P`@ g6 HHf2|`&J3Pg03PS|7P` H@J@g HfTS4Nup.G`R (faXk )fNuvH@kCz<#gB<Dg<dg<Ag <ag<(gT<-g<Cg(<cg <Sgd<sg\<Ug<uga (gtfN \g .fjR<Lg`<lgZ<Wg<wg<sg<Sfn+8J3Pg03PS@7PTSc H@R@g|f4LDNu+9J3Pg03PS@ 7PXS$LDNu (sg (Sf> (pg (Pf,p(J1f fv|?VLDNu (cg (Cf (rg (Rfp(J1f f*|>VLDNu (PgB (pg: (rg (Rfp(J1f f||TLDNup(J1f`pT`af+LDNuaf+LDNuR fxa ak<LDNuR<pg<Pfp`&W`R Sg sg ag Afa4 )fb +g f+LDNup.G`Rf+LDNu ((g`tfTHa6k )f +LDNup.G`z pg PgSH`b pg PgSH` fxRH<cg<Cf )gBJ,1g4TSBRaD+;J3Pg03PSR@7PKPTSLDNu+:c Hf4J3Pg03PS@7PTSLDNuRa|g ag Af(a )gHf0+J,1g4TSBRaJ3Pg03PSR7PKPTSLDNufp(+c HfX4J3Pg03PS@7PTSLDNup Sg sgNuRH<Pg<pfhpNu Dg dgaȰ|g ag Af>a )g0 .f( Wg wg lg LfR )fRJ3Pfc HHfCTNuH>G?< < &'@Ktpr5gkQ`r=f`S*,?<,,?@CBr4,@8BL0Hbfbf CL|Nu4Af`2RAAf̓L|Nu.0123456789:>ABCDEFGHIJKLMNOPQRSTUVWXYZ_ABCDEFGHIJKLMNOPQRSTUVWXYZH4,?g| _fvREG?>==<==<>==><>><+-|^*/&%=<>  H&6aFKM7P|Ev6tz|raJ ((f -g ~fz`zR`rg< g<.g<(g|<,gv<;gp<)f RA|m`—AkzIrHG&z[WgHSz WfRE G!3P` RHRA|g8 (gAIEa`hAJBfISHLldNuapp !gp (~gSpaJAkBn|gֲ|g$b4Nun$Nu *g( ^g.avJ)j J)kfD4NuR4NuRH ^fb/ EC?gfS$_C?< ")CPJg$ffJ0 D@4Nup`p`pLld.G`&r`FDR`H0xp<(g<$g<%g<"g̰<'gİ<-gİ<+g<.fRr<0kJ< bDR< f0k< bҁe$ҁeҁe҂eҀd` r`*r`,r`& .gRr`R -fRFDv r< f0k̰<bSCkӁ< f0k<c r`Rpv"gWffSCR`B rBRH`R -fRFDvt< f<0kN< c$_< e><c< < e,<b$SCk@"< f<0k$< c_< e<cА< < e<c rSJDjDL NuHx6EnPp,2gJ2o ,HtRrZ@J2WfdS@&l86*l]fbX U@"lCrvRA1g6g`6J20f :fRH :fRH) LlNuLl.G`ײ"lPrp,2fB)J2WfB!"l0, T8Rl :fR :fR) LlNuJ,-kH~>vEmF4,"lpr,2g J2o,HRK?f&$HpR@gS<gS@|c ` J<g`pB`BB C@7@'I $_Nu  g ( gSHNuH瀀A  BX0<&BQLNuRNu op"< Q$l opJUk0-kr2Epfl2gR@` -o( -g -g -:g -Xf| `|:g:R@ -l6lNl o -l0NJlNfRHJg2CH pA` .lTlj oTJlTfZR`TJ@j oERJ- fRHNurx P h z " F FDC.DS.TEXTDATABSSEVENEQU OPT ENDRSRESETRSBSSRS.RSSET REG IBYTES BASE PATH CNOP OUTPUT IFELSEENDCRSEVENDX.B DXSET DCB.FAIL ORG SETREPT ENDRSWITCHCASE ENDSGLOBAL COMMONDEFAULT ENDPARTISYMBOL == BREAKPT @2;HCBg<Ae <Zb,\`Nup-a$lx0;NEVJ- fRNu,:NVj! ),16=CJ^O U8Zt^d8ipv{8JV C p-1,\ 0<lN9@Np0-@?"M-Kx|<gH<g|<<25@j<g-JlNk(RNA?a<<05@k <gn|gTD,`*INu0IA@|g"|g0JlNka,Q< `@V@@"ް(fSlNWg`p05@5@Kx,`J,<25@j8g-JlNkjTNA?a 05@k<g4|gLTD,`IA0JlNk42a4,Q< `p05@5@Kx,`,<25@j8g-JlNkXNA?a05@k<g4|gTD,`IA0JlNk"a,Q< `p05@5@Kx,`C-@1,\ r2-,<0-H@|gHzHt`ha"g,|0-@Ht`HNuC!p-H1,\ 0-@|gr2-,<tH`r2-`p0-@|g`Nu"-0-fH@t|gH`JjL-`DxJmk r2-"2|`f0-r`HRA|gHd+Hd|-,`< NuXDLFPOWx"|a J-g,^Nur2-"2a`p aE"g@,|Hzp0-H|Ht`"*g,0-||Ht`"*g,`p-|c^,\DC.Wg |B(,r2-j0@g |g `*NuOFFNuA0`p-g,\R2-A?`EQNEGTGELTLED NDpaNupJmjNur2-<Cf< `C `PART LIBRARY <`< <|`| |@  ` H      @ i M @JMw LM~0@J p0L HHJGNqNp~NsNwhNuNvNr]H cH 3NP8N`8NhH@ N@NXAK8DP8FWN8@#NXHdH@'A BKDS@OFJJPPPQ`a`Wp K K ]] BJ IJM   P 4J ;JM  =KBK @ H   -J &JM      /+/( +( lpl8 p8 tyt0 y0 ROXL.WROXR.WROR.WROL.WLSL.WLSR.WASL.WASR.WADDA.LADDA.WCMPA.WCMPA.LSUBA.WSUBA.LLINEAMOVEQEXT.WEXT.LMOVE.BMOVE.WMOVE.LMOVEA.WMOVEA.LMOVEP.WMOVEP.LILLEGALDBSBADDANDASLASRADDQADDXABCDADDIANDIBSRBRABTSTBCLRBSETBCHGCMPCLRCMPMCMPICHKDIVUDIVSEOREXGEORIJMPJSRLEALSRLSLLINKMOVEMULUMULSNOPNEGNOTNEGXNBCDORORIPEARTSROLRORROXLROXRRTERTRRESETSUBSUBQSWAPSUBXSUBISBCDSTOPTSTTRAPTRAPVTAS.BUNLKBKPTBWL?2p?i@6;0)X|~{0)j|?Jj|Aig\Hzf0@|Hf"Eg<Ae <Zb,]`xg l](L"oPb I f?r2J-k80@8| gaa2,xN JGfDERJ- f Nua `J-f-k?<`\| J@g|0H@|0p~Nua Z`"??N.,x0r2JGf:J-kaNabDERJ- f NuJ-f-k?<`XMOVEM.W ???BERJ- f ^NuHpATQ2LNupJAg(Vg a&kJAgg-WR@akJAfNu/`@,[ ,[HS@NuA7A6A5A4A3A2A1A0D7D6D5D4D3D2D1D0a7a6a5a4a3a2a1a0d7d6d5d4d3d2d1d0aeERJ- f Nu:)0EE/Jkg(<Ae <[d,]`R,?ga $_`B$_Jj0@H|f2 (dg (Df" (Bg (bf,]RA`h mf| ,](  gF(`@T F HILSCCCSNEEQVCVSPLMIGELTGTLET F HILSHSLONEEQVCVSPLMIGELTGTLEJEj8.]B0@g |gtl]|@g(L`(WJEgL / $o Pb J$_JEg2xHD N:L"JGf$6KJgHD ,xNL"JGfDNuD JNu` BGJ5@f5@kp?C@0; EN L l L ^ n ~   b j r z   2 D ^ n D ,<#J5@gjr25@|?`2|?J-g#A?`|`|a,?f0R2.AI[ pRA ( Wg ]NuInit Putpix Getpix Line Hline Fillrec FillpolyBitblk Textblk Showm Hidem Transm Undraw Draw Copy Fill |`.Y¼fr`-(aV)Nu(aJ)+NuJg0 gR.]S $oPb J,<`2,<` A|fJ,Yg[S[PNu[AA0Nu[DAA0NuY`Y`Y`NY`X[C[C[RNu[S[RNu[U[S[PNu#2,<`Zr2,<#J5@gD`Jik2)ggf AgȲ|@g#"|`?a2(a)NuY`~BCp8A|8gH` pA|d^@_gV|g|g|gX|g\|gD| g|@g&|gh|gv|gx|g|g@PNu?2?J5@j|<5@g-F?"a` ,<aF2/(a22T`2H|a(.wNu"|`2,<a ([P[C)Nu2?J5@j|<5@g-F?"a` ,<a2([P[C,DJAj|A,[(0X@@0.w g|l)Nu?<`h?<``?<`X?<`P?<`H?<`@?<`80H@8YA@A??<`5@g-`J5@f†Htf*+t†05@g -tD†B4BfB|gp|g; ^g; Z,Oa?Jfp0_<:e^SlNfL@NuV||"pJgfQL@Nu$%& $SlNM`J,ZgMHzJv|cJjHAaHAYaYJ,XfJfJCg HPtA| UlNLNuJfa`0123456789ABCDEF0123456789abcdef%SlNpJk pHAJFkptJ,Xgt0SlNҁdt|1Q`*JfSJ@f0`\|H JAg|0HA|0r"_Nu/ "lHk,CJ)kJf 2RSlNSlNf< "_NufA?g ^^UlNCSlNf< "_Nu*DATETIMERSCOUNTRANDOMSYMTABRELOCUIg@f-`4~`.|g )|@f )gzpA@t;qg|0g (|f2|0g~|g|!Jjg-2a`HzHrtg"|`&2,<`"_Nu+-|^<<>>*/&%=<><=>=<>"og  ұb I$/ԼSBg&g (fr@QSfS`SNuHbUEy0|2*f|2CYo0)@012*@CT_j(|gb2SgJf`pg"Crf,j(`LFNu$(-DPO"CLEADSY"MARKDCAS"IMMEDASYN&NEWOfNEWTOOpJ5Pg005Pk0|lr@g 6DNu06DNuDNuDNug@?`r@f 6|?`0.|?`?pJ2Pg*02Pk,|lr@g 5DNu5DNuTDNug 0|5P`r@f0rP|?rP`0|?5@`N lp0*k0pNuBl`9|^HzSa4N`6H lQpC,R6<rRtTR@PJXk4fJ(g2$HR@PJXkg f2SCb`UB*`UB*BBBLNuHx0"lEO(pr,2gJ2orG?pa) p l2< Q&l2, lGStRSAkG J+fJkPt`JBgX$l*lJUkLaV2,&lGpG SAkJg&&&&&&&&|`$lp J*o Sl`pa(tL|>Nu,lt&lp-<l$zaia*zaiaK JUjNu0;gNZ0-|?Ap0k<g<fH`@?/a~ _p``Z0-@0|0f0-@?a\`>0-@|f0-`J-g0-`-g0-`0-kv`0-`p0-Cp0k|?a`2 3gQNuCRk TgT`<g0kQ`H~>|`H~>|Jlgpa&p l2< Q&l2, lGSRSAkG J+fJjP`$l*lJUk>a*lYp4,BSBe*K JUk0J2gJf|`-Ul:`pa&L2|:gT||gJ2||`gQQ9ThPP pPr21a# (fT(0(B(`FQQ9Thhh phr21a#`JgHxp l"ltpQP0k(g<)gڲ<*g<5g8<f02||`f2|?atk0B)3Ap1@B(`<2gP<7gJ<3g(<4f2|| |f~2<Q2?<>aXNu A>H!|NAIp @L>.>NuGANgNAXJkf GST-fF CFG:f>AAp JgQJf\)N,Fpg`R)N,JpNu TURBOASS.CFG ,,Bg /?<INA\pNuHAaHA`HAaHAYaYHM@Jl?fM&p4A6a)B6 a)L@Nu0123456789ABCDEF0123456789abcdefXBRATASS3*`lXBRATASS3*`VXBRATASS3*`@XBRATASS3*`*XBRATASS3*`XBRATASS3*F'HIn>:l1!!Nh!8g O!.yEbpaEjpa~a,+P+Ax!pA!F#CF3|2AaApt0A TBQ|c~ A1pCA|~X"aQQA"8̒Da\28a\"8apA"<abZ"8aXA5p?Q"8f@d"AA~"a*QpaAxa-(J@kU@kfNNN|8fpaAa,A,a&AJa AhaAaAaAaAa`ga`p`%/w$/&/$. .0.T.x ./. . /#/F/h ./ / //////D0: D4: A0: A4: SK: PC: SR: USP: VER: SSP: Ein kleines internes ProblemBomben:Bitte notieren Sie sich die obigenWerte und setzen Sie sich mit unsin Verbindung. ENDE ZURCK DRUCKEN Bomben: R#??HAaHAYaYHp4|| LNu0123456789ABCDEFHa LNa MJf~ 9G@)NB NAXO 7rf!r!~!v?<aT??:z?<aXHzz?<;a\?<aXLNu0:Nof!Fr!D~!Bv z4N0:,ofpNu z$N0:ofpNu zNx:\X[3][ |der Speicher reicht nicht!|(fr den Textscreen)][ ABBRUCH ][3][ |Auflsung zu gering!|(min. 640x200 Pixel)][ ABBRUCH ][3][ |Auflsung zu gro!|(max. 70 Zeilen)][ ABBRUCH ])HB9|@ <4a~ <a??<LNA < a~R@g peaHA lF>dALJ|e|e <a0(9@D:9@@0,>R@D/?<HNA\A)@Tg?<NNT)@N0,>U@9@R <mMЌB)@bA4CEf0,D42,:UAS@024R@BXXXQ0,:S@|d"ACJE*Ht:@|`153NCLNE\N l62<0<&H4,:SBQRQA\N0<:HS@DQ0,JH9@+0,LH9@+P+P+P+P+P+Q+)|`?9|+ArCz B x h0(H9@+p///?<NNO @Cf"""AtJg<(g2<0e,Jk( (:b $i g$irtRBWfBP`A+@JXk0(g&<0e JkJ(k$irtRBWfBX`0,+U@f$p$kJg#^Hx?<#NN\9@+p)@)@+ x h"h$ hlC)ID4@NCHI]n|L@HDA@0?p0?Qaa A"xga\N~)Iz!A"xg)I~!P+A "xpg)I!pAz"xg)ID!paLFNuHpaFpaB?<"NNT @B($ lD4B(/<NNX @BQ+B,+,+aLNuH2<AV0<a QLNu@NCHI\T|LDH@aafa !z!~!p!DLFNuH`a$J"B Q"a4LNuHACa>Ca6C a.Ca&LNuHACaCaLNu<mQANuTNuH@,l,FrgSg`UkRaXQp`pL@NuH,l,JrgSg`p Uk Ra$Q`aL@NuH/<NMXJLNuH`|?/<NM\LNu9|+B,+B,+ 8)@+)@+B,+B,+B,+BvNuH` ,f`Arp@|2(hg*X"P 1J+fC$Tg$g$Rf`1AFLNu 4J|9B|)I`"@SljX 4J|9BRg |)I`B`rHIZ:CaYa8gL?NsJ,+f,H @j g4 Yf,?ga< g)LNuN<)J,+fF||e|{ +{$+||m |n@+Nu ,+d2E6t,+S r "r $r t,+S,+fNB,+Nu++@++E++E++@++@,+<*f`z<f`n<6f`b<f`V<f`J<f`><8f`2<fv,+g A+0rt`P :fA `a &AA+NuJkDJ,+f0@+l++l++İ<Sf@ , +g , +f0` 8 xNB,+B,+Q+`rA+A+A+J,+g` ,?gAar lf|t ,+f ,+g ln,+f,+g lj0,+g4,+ȴ|ctBA "UTg4ft,+VH0 ` \@'{[(}]{[}](\+~@<bft,+g,+SgQ+,+Nua&gJ+fFx@pa lTpD8,>|CD8B:,<Q ! gRIBCD9g aJ@f` pajQp!a`Fx@Q+`|vt,+g*<ge$<pb0,+ |evC+`g<;e&<Db ;0r<g4@ `*v g$<e< b UA0@r` <)f0< r<rfrBAHB@ H@,?g(rE<JgrF<Ng<"<Ae.<Db(H@H@,?g<ce<qbH|cH ;g H@aDgB,+NutHHKMePPRSHJ,+fAr2(Xhg"Pgg#1AJ+gbf4 l+r A"Tf (Rg!P"Rfr!B+B+` l+f R(jz|C+dl )H+`df\P+`VJgRgJgBQ+A"TgfC"Rf" g""Tf I`XC+d )@+ )H+pLNuHp fP@+gF 8+)x+Wd SC+EJt0HAjp2SAAc02QQ+LNuRHIT$R?+jJ,+g$J,+gS,+fS,+fP+l++,+a,+J,+f l +efJ,+f`S,+n^B,+<g2Jl+g 8)@+֐+Ұ(dQ+B+`: |+`" ` 8)@+Ґ+,+ⰼdQ+`B+9|+B,+?,H lHNTSl+j:9|1+Q+R,+ ,<+e$B,+R,+ ,<+eB,+R,+ ,+eB,+p,+g J,D.gPD.LNsRfHIR|RbJxgJx>f08Jkr8,\gjS,]fd| ]l\,+,+,+?/,^p0,<|)@^p ,+gpCaNSl`p J+gpMa<)_^0a Jg@+A+J+f`A J,?g < `Jp,+  H@:p,+  H@:p,+  H@J+fJ,+f aL+aJ,+gaLNsE+4,+JA"lN4,LADrAd244,J@|UH:FEt@@H6,Hh$8,F&FF44@q@HCQ&Eq@HCQDQQ+NuJ+f"HA+0"X2,F23DQLNu@`px|~|lFx??``0 ? `` 0?3ooJ+faNNuJ,+fQ+Q+Nul+ga9@+aNuH@C0k`LNu4  ;  F'Ap C"QNA0!A.p"$&(*,."@$@&@(@*@,@H~A8` xNaFpr0,+2,+H:9@+9A+J,D+fJAfaVJAg J,D*fB,D+JlDj@J,\kaJAg<,+fB,+,+f^,+f,+gjB,+`aDNuJ,+fp",+g0,<_@l+b < `^S@l+gW@l+bJ,+f 9`:J,D*f~P`J+fpQ`UAjrJ,+gVlRe2,R9AJ+g80,+r:PAAb 9`2,LQAAe 9` 9t` 9|`DNu,+gB,+`J+ghJ,D*f,+f,+gFJg@0,+̰|bPD*PD+Q 9`d2,LQAAePD*PD+Q 9`FQD*DNu|f2,<@J@g8| cT<gV<g|b( 9TJ,g 94DNul+` 9l`| b 9J,g. 9`& 9` 9J,+g 9J,g 9DNuJ,f\9@UA9A 9DNuH lT9@9AD$ #fR <#g<:g<;g<,g< WR"9AC pBg (:g ( g (,WfNS|BgV ))gX )wg ,f )(fW` ).fUI" 9ApCA` Q <LDNuLDNu) cg.<Cg(<pg4<Pg. )Ag )af )(fY` )Pg )pg` )sg )Sg`pH lTDCtJ1 gJ J1 WJ@k,2g RJ1 jR4aВJ@k 9@JBo" 9L,+fDNuLDNup,+fEU2a 9,L`E\a 9L`PrSAfSJAk QBNuHp",+frp,+fvJl+f4,+gJlDk9|D`Bpr lD `RgRfp`SARAJfR@AdJlDjaa\lDg 9@Daa`LNu D,D9@D$ ,DRgp)@DJ,+fPD+`0,Dk2t lD J@gS@RBJfSBRgRf0 lD ` Tg\SfQJf"HpR@JfrRg RgUfRA`vl+b*@l+c"l+e6,+SC0S@kJfQgvlDg9CDaLNu0,DlDfa^ ,Dg4 @R)lD Drt:,DJ0P[gata|Qtap lD9lD D0,Dk0R@9@D)lDD S@g S@JfQ)HDRrtvga2`` lD HaBlDBlDrtvp a x<,DtRDlDftga`lDf??,Dxz)HD"HREJf9FDRlDRDJ0P[~tlDf)lDD )HD9lDDCD9EDt~rgrUa>aQ<atRJjBlDvr9_D8RgRRfrtp VlDaHB,D-a aLNuHrtvp0,<_@)@DAxaQNLNu00:00:00H| l6<>:Rfx"lN4,D@6,DpCC0,Hk2,:SA4<6,DJAfQRlDLNuHa<"lNp0,@ lba6a0Ar pJ0fa.R@QLNuaBR@QLNuHa lNp0,@"lbaaLNua9| \Nu\\gHaan:"lNrCC2,Hk4,:SBFDQaLNu ,+fa*JgB+JlDjQDNuH,o@g< fa`a`L.NuHa*LNuNuJ,+fJg|azRl`0,`lRA@pa`S@2,L6BQQa lT2,>RADp aB^LNuH8L| l6?<>:"lN4,^TB@6,`pCC0,Hk2,:SA4<6,D0JkDfJAfQLNu JAfQLNu lX2(R4(P hLl:eBISA?Q2JAfQLNuHaaP l6:"lNrCC2,Hk4<6,D0,:U@QJl^jpaRLNu lT4,^TBD6,`NuHa papa a LNu:S@D lN2,SAS@jaLNu/pa NuHa2R@`aR@RAlRcaLNuHAB0T@TADDH:: lNC0,@Ha L lTC0,l`fl^ga9F`9G^a`afD g- g- fa:ͻgr( f*h *H IaxJ,+fa`Na gB`p(H IJPkA (g(f`L `J+fL l"&(*,."B$B&B(B*B,BH~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H`SfL||0HgS@!Q|gSAQLNui q  a  ow+   &lez$jss0b%k#h/v.c,y    TurboAss V1.7... ^I -------------------------- Accessories F1 Datei  Neu anlegen... F6  Laden... F8  Zuladen... F8  Symbole zuladen... ------------------------ Sichern ^Q  Sichern unter... F9  ASCII-Sichern... F9 ------------------------ Datei lschen... ------------------------ Ende... F10 Assembler  Assemblieren A  Assemblieren... F1 --------------------------  Debugger F2  Debugger nachladen D  Debugger lschen -------------------------- Optimierungen... ^O  Warnungen anspringen W Editor  Rechner... F5  Zeichentabelle... ^+ ----------------------- Informationen... F4 ----------------------- Drucken... F7  Drucker: Suchen  Symbol suchen... F3  Symbol ersetzen... F3  Text suchen... ^L  Text ersetzen... ^E ------------------------- Sprung zu Zeile... Z  Nchster Fehler J  Nchster SFehler S  Nchster Merker ^S Block  Blockanfang setzen ^B  Blockende setzen ^K  Blockmarken lschen ^H ------------------------- Block verschieben ^V  Block kopieren C  Block lschen Y ------------------------- Block speichern... ------------------------- Block drucken Einstellungen  Darstellung... F5  Editor 1... F4  Editor 2... F7  Editor 3... ---------------------------- Einstellungen sichern Hilfe  Mencodes:   - Shift  ^ - Control   - Alternate   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~??_o/7  ?`?@|>|>;\:l6/7 `` 7o 2e2e2e22 2}2}}}o7 `Z: Sp: Syntax-FehlerIllegaler SymbolnameUnbekannter BefehlDoppelte DeklarationWert zu gro / zu kleinSymbolname zu langUnzulssige AdressierungOperandensyntax falschZweiter Operand fehltUnerlaubte ExtensionPosition auerhalb der DateiFehler beim SpeichernAusdruck zu komplexUnerlaubter OperandIm BSS-Bereich nicht erlaubtZu viele ParameterINTERNAL ERROROffset zu groSymbol nicht definiertOffset/Wert wird negativSymbol wird nicht benutztLabel hier nicht erlaubtOffset zu kleinDivision durch NullAdresse wurde begradigtFalsche SegmentfolgeFilename zu langIllegaler FilenameUnerlaubte RechenoperationString zu langB??.S in NOP gewandeltIF nicht abgeschlossenELSE ohne IFENDC ohne IFREPT nicht abgeschlossenENDR ohne REPTEQU-Wert nicht nderbarSWITCH nicht abgeschlossenCASE ohne SWITCHENDS ohne SWITCHKann zu B??.S optimiert werdenKann zu relativen Sprung optimiert werdenGleiche ParameternummernZu wenig ParameterName bereits reserviertLong-Adressierung einer RS-Konstantenderung nicht erwnscht!Sprung auf die nchste AdresseUnntiger SprungbefehlPC-relative Adressierung mglichWandlung nach PEA sinnvollWandlung nach LEA sinnvollKann zu SHORT optimiert werdenPC-relative Adressierung ber SegmentgrenzeUm 4 Takte optimiert (12 auf 8 bzw. 8 auf 4)$9Qd}7JYh-@[j /Nx1RmY1 "0VP~ fBt  <*2> (0.|.= .BSS n.COMM ڜ.COMMON ڜ.DATA <.DC.B .DC.L L.DC.W .DCB .DCB.B .DCB.L .DCB.W .DS.B .DS.L .DS.W .END `.ENDC .ENDR .EQU ߘ.EVEN .EXTERN X.GLOBL X.PUBLIC X.REPT .SET .TEXT .XDEF X.XREF X= ߘ== f>PART ABCD ABCD.B ADD n@ADD.B hADD.L nЀADD.W n@ADDA ADDA.L ADDA.W ADDI :@ADDI.B :ADDI.L :ADDI.W :@ADDQ dP@ADDQ.B dPADDQ.L dPADDQ.W dP@ADDX @ADDX.B ADDX.L рADDX.W @ALIGN ALIGN.W AND @AND.B AND.L AND.W @ANDI 6@ANDI.B 6ANDI.L 6ANDI.W 6@ASL v@ASL.B vASL.L vASL.W v@ASR v@ASR.B vASR.L vASR.W v@BASE BCC dBCC.B >dBCC.L dBCC.S >dBCC.W dBCHG @BCHG.B @BCHG.L @BCLR BCLR.B BCLR.L BCS eBCS.B >eBCS.L eBCS.S >eBCS.W eBEQ gBEQ.B >gBEQ.L gBEQ.S >gBEQ.W gBGE lBGE.B >lBGE.L lBGE.S >lBGE.W lBGT nBGT.B >nBGT.L nBGT.S >nBGT.W nBHI bBHI.B >bBHI.L bBHI.S >bBHI.W bBHS dBHS.B >dBHS.L dBHS.S >dBHS.W dBKPT pHHBLE oBLE.B >oBLE.L oBLE.S >oBLE.W oBLK BLK.B BLK.L BLK.W BLO eBLO.B >eBLO.L eBLO.S >eBLO.W eBLS cBLS.B >cBLS.L cBLS.S >cBLS.W cBLT mBLT.B >mBLT.L mBLT.S >mBLT.W mBMI kBMI.B >kBMI.L kBMI.S >kBMI.W kBNE fBNE.B >fBNE.L fBNE.S >fBNE.W fBNZ fBNZ.B >fBNZ.L fBNZ.S >fBNZ.W fBPL jBPL.B >jBPL.L jBPL.S >jBPL.W jBRA `BRA.B >`BRA.L `BRA.S >`BRA.W `BREAKPT ܂BSET BSET.B BSET.L BSR aBSR.B >aBSR.L aBSR.S >aBSR.W aBSS nBTST xBTST.B xBTST.L xBVC hBVC.B >hBVC.L hBVC.S >hBVC.W hBVS iBVS.B >iBVS.L iBVS.S >iBVS.W iBZ gBZ.B >gBZ.L gBZ.S >gBZ.W gBZE gBZE.B >gBZE.L gBZE.S >gBZE.W gCASE CHK ACLR B@CLR.B $BCLR.L BCLR.W B@CMP 6@CMP.B 0CMP.L 6CMP.W 6@CMPA CMPA.L CMPA.W CMPI : @CMPI.B : CMPI.L : CMPI.W : @CMPM HCMPM.B CMPM.L CMPM.W HCNOP COMM ڜCOMMON ڜDATA <DBCC TDBCS UDBEQ WDBF QDBGE \DBGT ^DBHI RDBHS TDBLE _DBLO UDBLS SDBLT ]DBMI [DBNE VDBNZ VDBPL ZDBRA QDBT PDBVC XDBVS YDBZE WDC DC.B DC.L LDC.W DCB DCB.B DCB.L DCB.W DEFAULT ںDIVS DIVS.W DIVU DIVU.W DS DS.B DS.L DS.W DSBSS DSBSS.B DSBSS.L DSBSS.W DX .DX.B .DXSET tELSE END `ENDC ENDIF ENDP ENDPART ENDR ENDS PEOR $@EOR.B $EOR.L $EOR.W $@EORI 6 @EORI.B 6 EORI.L 6 EORI.W 6 @EQU ߘEVEN EXG bEXG.L bEXT HEXT.L HEXT.W HFAIL GLOBAL XGLOBL XIBYTES ۔IF ܒIFD ܒIFEQ ܒIFGE ܒ IFGT ܒIFLE ܒIFLT ܒ IFND ܒIFNE ܒILLEGAL JINCBIN ۔ISYMBOL JMP NJSR NLEA ALEA.L ALEA.W ALINEA 4LINK <NPLSL vHLSL.B vLSL.L vLSL.W vHLSR vHLSR.B vLSR.L vLSR.W vHMOVE j0MOVE.B jMOVE.L j MOVE.W j0MOVEA j0MOVEA.L j MOVEA.W j0MOVEM HMOVEM.L HMOVEM.W HMOVEP MOVEP.L HMOVEP.W MOVEQ pMOVEQ.L pMULS MULS.W MULU MULU.W NBCD $HNEG $D@NEG.B $DNEG.L $DNEG.W $D@NEGX $@@NEGX.B $@NEGX.L $@NEGX.W $@@NOP NqNOT $F@NOT.B $FNOT.L $FNOT.W $F@OPT hOR @OR.B OR.L OR.W @ORG ORI 6@ORI.B 6ORI.L 6ORI.W 6@OUTPUT PART PATH PEA H@REG 6REPEAT REPT RESET NpROL vXROL.B vROL.L vROL.W vXROR vXROR.B vROR.L vROR.W vXROXL vPROXL.B vROXL.L vROXL.W vPROXR vPROXR.B vROXR.L vROXR.W vPRS RS.B RS.L RS.W RSBSS PRSEVEN XRSRESET HRSSET RTE NsRTR NwRTS NuSBCD SCC $TSCC.B $TSCS $USCS.B $USECTION SELECT SEQ $WSEQ.B $WSET SF $QSF.B $QSGE $\SGE.B $\SGT $^SGT.B $^SHI $RSHI.B $RSHS $TSHS.B $TSLE $_SLE.B $_SLO $USLO.B $USLS $SSLS.B $SSLT $]SLT.B $]SMI $[SMI.B $[SNE $VSNE.B $VSPL $ZSPL.B $ZST $PST.B $PSTOP NrSUB n@SUB.B hSUB.L nSUB.W n@SUBA SUBA.L SUBA.W SUBI :@SUBI.B :SUBI.L :SUBI.W :@SUBQ dQ@SUBQ.B dQSUBQ.L dQSUBQ.W dQ@SUBX @SUBX.B SUBX.L SUBX.W @SVC $XSVC.B $XSVS $YSVS.B $YSWAP H@SWAP.L H@SWAP.W H@SWITCH TAS $JTAS.B $JTEXT TRAP pN@TRAPV NvTST $J@TST.B $JTST.L $JTST.W $J@UNLINK NXUNLK NXXDEF XXOR $@XOR.B $XOR.L $XOR.W $@XORI 6 @XORI.B 6 XORI.L 6 XORI.W 6 @XREF XpN0,>g ??<>aXOpNHJ,D,g$HANkH gLNuHA>N.kpaLNuH?Hl>?<LNuH?Hl>?<=a(PJ@kd9@>LNuH.2,>gL//??<?aO f4LNuH.2,>g //??<@aO C>gpNLNuH0,>g??<>aXLNuHHl>?<AaPLNu`zH~("P+aQ+L~NuH~"a aa(L~NuH~"a aaL~NuP+>,?Bl?NuQ+9G?NuH~"aaVaL~NuH~"aaJaL~Nu`ak(NuHarLNuH`ptg2< g0k*< e_k < e<cf` t鈀`J`SJg `aDLNuNNNtNNN@N6N2NNNN NNNNNNvN@NNNNN 8B6  0VL F< Rx(X\F $ , *p jV J.0  DDJ26H$ ~&:  8l2r"   t F | F F( * &6, tFB.V & > t ~    BN L(2H0*T" <4$$" "ND(:FDn: JH$&  >    t< `0J b 2  \ P R6 Lh* lDp   N4( .6l.0$  <0  .D8 *J   N 8 .:  L0:` R 8lL (B ,T6D P   , d @0~J&  <*<$  F(   |2 DZ .<    6^   >$<n8<  >86 z\Z2 80b <H.n Ȗ$ˆR 0V X<   Z^* H*hBNm3 ,pNmNuKx3,p.Nm3,pNm 3,pNmNmNmNmNmNmNmNm3,pNmNu3,p..KxNm3,pNmNmNmNmNmNmNmNm3,pNmNu3,p..KxNm3,pNmNmNmNmNmNmNmNm3,pNmNuH~89,pDDG0#@/BG0.#@/fG0V#@/"<B89."HDDI-3@,rDI`XNtBߦADDetlev UeckerZermatter Strae 23b1000 Berlin 51 o,h-Nj2| " <҈.A/ /-Hf/<JNAO =|daJndfaa`?.d?<LNAaRapa rCpAn a@paL|gS@gNupa:|fa6`pa*| g| g`a`pa|gڰ|g`at`HaLpaRpa FG&k &kC$If"JpR@JfpGIL~k g`atBHn//<KNAOJj*A8Ca"TaCaA8aU@g0`$fSNuALfAaFTn AaNAXJCgA=|8-H8 <4aNupa CArJQACV h h#(K g @JUfa*XJfrp`paCgg`pDaradf A_CxgfrpaU@gNupara8g<gT<fN QAxC︴Xg6frpaJU@g&Nutp|0k< b&ԃԂԀQpNu?<NATJfrp` papCa8*HG g&(@ @f fG4Ipg??<NAX`aP`r@@@/IpAa h hNuHpa rA h h . rXt<0QLNuIK aj|taFJ@f ta>J@g|4a2܀*`I:Kxa>|taJ@f taJ@g V@4a@:`NuH`p` gSEja QLNuzNuH < ax=@k @a 4a nxdrpa=|d`NuPpaA8BP1|B NuH6-H8 <6a I:!Tra Lxz gL0 " fI88H <3 a t` rta$ LNuH6-H8 <6a hI:!Tra Lxz gL0 " fI88H <3 a ,t` rta"$ LNuH@aXprɕaLNuHO>*Jʗg$OGaI8ra LI8p(H <*a 0"Ma"20a2JAk |pa 0O(LNuH*IpfJ@j0.n-Hp>k 0 f rta>paf|zvJkFgJGg=Fn0a<~xa.pC82'2222""2""RYRY22BQ <a :&.:g.L@aJAgpn@Q@gC822pa`g2.D-H8p-@8-C< <+a ja`t>0 g`$p -H8=G8 <,a rr B@H@n:PR@kt"j _fRARBBgjf=Fna,0a$jB<a$0aJkJGg6Gg2a`.C82BYp` C82BYp22-H8 <.a 8.:Nup$Eg<-H8p-@8-C< <+a k00rQ@gp` r@gp`pa`L0.na6a=Fn0LNuJ@k a -H8=@8=A: <8a lJ@W>.:NuNugHCXQgJQfTNrNu ~r zPjP2H bHZH8PGLG74M6 K4~a`a0$p $jBaNu~/60taGf&Nutp`t`t0raF>Nurta:>gr`&0rta*>Ff rtaJ@fzNuaJJ@j~|ag>XNupH6x6JBjJ@n 0`( fB:(AgLNuHx4I<xe<vp (f*( g"<f"h "iv( 10"n^1g"( f ( g( fR@A`pLNuH0Pl02h4iAo42@@3B0)hl0(2(h4)iAo43@@@3BDoDo`pLNuHL"S@SAXPHLNupH=@8E8$t%nx"g$%h-R|-jAt"Ja@f J"Ha`BB <aJLNuH`rH`H`rI /?NA\LJNufSNuH/<NAXLNu-@8 G#|N!_?9#"Ύ2e2S#|Mx}|j'Kek:rGsy:DWҕ@tq,|FCM[Q7IHΜ,gFpiGZ@ -j69pu~QC,1g QCY.O/aԱ.n(c$e>(VS|>G:8#"2 ^7 o>G#.#!trSb>NNB2##T|rnCt(7r3߫ȌN 1y[H}UNs}5azWkgI\-Vc~ΧSYKM8Ԗ}$,RJ(E No֯u]?婒-K/qZ\⻹І|NKJ$:G.k3Wnߦ0*77kY]=Nw7J9~tߝ83eY_%{UיWzr*@fVF16>ҿ:5U1 7-g %ED[WCE}:@<7 }%I=u~Cmu~5: 1@ 9sƈo]G}9}ʀZЩJ:d&龟-t5"O: U^vZ:F=`]mN!ӈްJ1TEnFtKç97z"H1c1?:RCx8\U˞|,'H/wIqYHegEybҠؤ҆.JL<122-% CK:pyiAe&RҋIN>|!鳇C{꧅-}Ϣ~6j %Ɍ ߿m:fnflç};|H'GӟO i> OfuO{yv>ӦWSht0N"e;WIrwonagB|e?薭nQG#ztޛR%z Mӄ]~۠7˝0Թ /J]3|.|k}{hJ&z Ν=7@dsWs+ߛU3ӿ}a/u:rZ~ttWd:Nd']e|Cwl$$tTD`&=G1iP j4{-|3 _U|g[ܭHc:|Y(f1]m[Z$G42QE1P[MBJ cC:YE GPZ1J.ALL KE!;7)kISyGyznNcRWSzvzϠWE1M~pu}1|⛼!R7AxcyiG:^It]5Q^d81cCKcQ}?c1qTǥk?٢"wZS `Kfet6kkMZC N5}98-jt,$dt>G#|,cѭG9N3}5eI΢H:X7?eL:^G#!FDRDGG2##=N qc AsE,8E%.ckHV%(*^0+8Ӏp_kۡdŎANGE}yoxeN@A28|u;Xץܧܸ@m@J`Aznۘ~s΅3鴀 3]6~鴁k1K=ѧt?^ pӨ:wu\)U  @t6:H5ǝ6P p`#|,:MoSt}'N\pk_q}tz>7O>cBo_{Ό"RSw#!t~>It7$c>R^8\%kx(ㅖ4C:SRpci5$c,:4:2ZJrg (<:p%2,RH,gE3(mH:u|֜jHMm0c(1QC(21111e c1c(cӣ(e cnY=1c<1c1c:2C81H3:7z>}M :w!7ntXt8`̈́#7E8Ӏ\Ĺ:ߊ~~Tܬm)VNzdĞYop(NtNeiEr8hHqӦ};]^;yЃk k8GCW鹺I>q5hZA+pi )'%')c<1uՂs,=ɈtS`6kK,wOYeTm23"n(}1#ОEqUS@o⃢s^zong(zwӮNF:1os3]9 w1ߌZ_J)t7`W]|φ, GtwZؖO{p+W/?Z[n c];~rNH_g':%;Ѭæ ~-yiz~-d /N]s_[Rorp};MC:nہ קtS0*@-t5ccßIӈuN3[# 28ӓ(G@tVFOw z,nH 8ρe?Eκn{ eGt. MvSepW}uoN'ӋwhŪz0GAa_b2Nqt5}XN; ҏAFTwE務>MMԶPnsL}2n\ƼH+czw_ SӁ=8, $7jb~/&Hǜ*m4nKj#|>G>G#|>N13+ߛƛ{ϓn)x[lMĦZZZ=:p䴣ÇKfqd'4EIB9 gҒ)%c`{Wǖ|2\`K>G#"2> |"|c|n|7>G$d>G>^X ،'{/>GO|>G##䌇$Z-p?|FDB>2/c!>H|c|>G#a:wNӄE΄|Qv{߾ |a},s|ҷZê'?MwRȁj٪jȟtUw=8Vdm:N2d<|ªY|[ۢ/ϱo!$ |s&yϏc-Ӟ=E4% W^>CqqE>I#ފ؊Ӕf:wZMuit=?:n=NojOҲ##l]o]9MrOL(>G#|%|>G:89 ӿLȽԍگkݤ?Z|ot>z#:!(]9M?L`-0 /NW=sNC8Ӊu$aZ2zu7_~8ӫw0tjijQ1Z˧j.\j{s8N/'Taq.n0ŴЦ+:gUK7׸`MVve5,>XmjS ʉE|#(gFP 4Ҋ(і1 NĵHҊN> >KIL,zQ{râ'MdO\Ϟ#tCXgzpzܰΝuK~ެy}N63Sj6{NOyOҸ@-A MӊDmoϝȑojn$ߥq'mUN_37縇5Ne|'?He,|8s>s>t7Q~[Λ'H*X(t7~`M] |2']0GM|ܰ>s࿚.g~`-mNӊ?t9M.i>QgEaY:&> {{]֯p#munzl~_'CIp=8nzu?/?{̲3BLb_/GǹtwKP:D\Ϻ%;@-DN2zI8.t7I|/{;k>@<ϳRkbFDdtI_6|N|,|e&#%I>N#;'|:rK@2OH|FEWo/outUhʰ>G\#b2#"2*Xab4s˪>J||%NY{/<ΔES䌈|c|>It6K aW}EOo1 L(),i)eI(gK:4CE,(c2QC(e(:2,NϔYe:|PϜ(:2|122p1PQӃå gJ(e1X(cE1QC22N(Yie 1PtcGF1Qc(e e 1X82PQÅQC,g (1QC83āX:13 epX8Qc,3 c>3H8t]1(rXh|Sȵ=| W>+{At|D5>/zIiKU}SIӏtQkӒL+2:}0 v)zp8$bN%ϞCL?y?dtW,:/}://+xy90%zd;sۡ5NvDoM/$D_{k\;MB"cFC1e "ק$D\e<"4=]_MӴ]T| DՎVKr:-#{Oi tLJ'N{@B^n-kGbC5cEN|篛ӏDM?@&օ>/qůMtӝ6ONq1FGBiq7N]^{}qEdL'1![gGr`Q]l?~܋|#qoN=ӟ?^gnD߾|zO}65(cX=~i}2YvbuE|9vpoM=9˦ Wyܔ-Z,'Z2^Mn#(+4ߑ|篜;kW f96ϫϑ|$m{/LQtoq}tq.>nT[~`nXtItwE$dt3]9=bt b&1]a9C6:n3TyG=ͽOtR~.#{ R;鶺qLg]YZگ^ sGyN98NQӴU{@򻎝pt@Tcǥ_-p{dd1\Uީwi-:wEY|~,[FG2M9i^J7ED] NnGq1>HȌo>qa'c5k54ҏQƟ2f7Yjj6~0XMkQߥD|^t~8K2;猹>x|OuIWRxqtb1!x1g2ɖ>H|#`rgzծno~r7N wfʮ|+>NZTgO?XDX~ۻ^{r]'zo.\i ѯ4nQ+휫ބ"8oM_D&XבzFtC}!ʯ>;N_l7w>77 1t ̎ns _>G#!Lc>ofޒ{ՌȌ+篮l_qUpUكO8_N䌉>I>K\'{YLtq*X|t,,7:P1FR@N(<12žŠ<2(g1e1(,e eQC:pg2RQ c8QGpc(e :xY:XpQgΌE e(e2ã82Bc1q_#r%d>IFGBºQ[| ҁWqW ,|执ֿ\{Eon_ Od;U\*+ߋoNonjKO}?N_EK,JN犩ҥTj}vq>[vuo(\tNE gN(e(p8pYg  c>YC,QC1e2XPpc(eΔpۋ3ֺp_UlsUˢįe,dVAP鴫૒q]9ll?tqiL:[NtkD2&Qu:wG7<8 <^C5w:NF$o~GvNʺޘ$c䛽};n|>o*1ng/<-aΝ82xgN%4:1pg(8pe2pP1xeҋ(1tcAe,8Qc,rΛFC|G,~f2ϖӂMӈt7ONootw*F}}Gp6ng2:Ϝw~fj>S2_+^>@Lu󙯆tE:ޛ^ /nӊ(ŝьQC(eh:xӇp:xgcYyC,<|)8:Pp.&T_F4NND7Ӛ`4t,&YНt؏Gb@bf?KR^dFD#ddOҾ6r}5_Y]6}el>s=|'!Nȹ3jr>sgNg~tֽ@|q^XfLS:w>z\ ޞgA_DLsΜGx83O(ΖZIѧbQԑ g eLXYԣ% 1(3KHC8TsNreD(p:skl>s\jFD+Oڴ.n.d?8|(vdiF:wy0߽m ZnW^{wzt2*~ ?y:nowm۷M:mmvna 6ۦmmammtmbmvmo|m 6nmmm7M|mtݶh{mm6mammۦߪ˿mM:mmm6ymoí|mnt m۶tݶn>Sm|m*tņ!Ql9M6nߩqn7Nmtmttí0?muOM6mݷ6ۦ6~ mmc^;Tznſ S~ UR68*mۦmmtm۪majmmniSnnmimPTWڪmWANtm7Omn~nl7Nt5MvݱZuNAm۰jm۶mn~bj݇jYm|m6oSom nmm[ummo U W] P`4abBh5MwAz1O?`z7L;MmuTMmn6nmo7Ovu6nttmSmmnamSovmVmM۶mwUvmm|m~t6~l66mtto[mmtmvmmmmmmnSbmSmmmmm6nӶU߃A6m)vnmmmmmmmm۶nmmwmmaMm>6mMmnmmnmmݶmmmmMm۶mmMoaMmtmm)ӪumnuUAۦ~6mN6[m}mն۶6۶mtmm66nu tmSmmmmmm6mmmmnmmn:mmmmmۦmMmmm6۪nnmtݶݶmmnߛmml_mmmmvmmamӦnvmnTmmmmvۦۦmMm6۠momnnmmm6mm[m6molUmmmmm[mmۦ}mamml<ۦmtnmۦ6mmmnmmmmmmm=j $ bIrTurboAss V1.5-Installation1990 -soft, geschrieben von Markus Fritze Welche Teile sollen installiert werden? Assembler und DebuggerLibrarysPD-Programme und ToolsDemosTexte: Anleitung und Neuheiten Globaler Pfad x:\TURBOASS\ ________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXINSTALLIERENZURCKTurboAss V1.5-Registrierung1990 -soft, geschrieben von Markus FritzeMarkus Fritze Name : ________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXBirkhahnkamp 38 Adresse : ________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX2000 Norderstedt 1 ________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX(040)5223955 Telefon : ______________________XXXXXXXXXXXXXXXXXXXXXXBundesrepublik Deutschland Land : ________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0000bisherige TurboAss-Seriennummer : ____9999mein Computertyp:@ __________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXDRUCKENZURCKSEITE #2TurboAss V1.5-Registrierung1990 -soft, geschrieben von Markus Fritze@-----------------Kontonummer : __________________XXXXXXXXXXXXXXXXXX@-------BLZ : ________99999999@-----------------------------Kreditinstitut : ______________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Zahlungsart: per Nachnahme (plus Nachnahmegebhr)mit beiliegendem Bargeldmit beiliegendem Verrechnungsscheckhabe bereits berwiesenWER KEINE ANGABE ZUR BANKVERBINDUNG MACHT, KANNDIE 10DM WERBEPRMIE NICHT ERHALTEN!DRUCKENZURCKSEITE #11990 -soft, geschrieben von Markus FritzeTurboAss V1.5 Installation & RegistrierungMit diesem Programm kann man die gepacktenDateien des TurboAss einfach entpacken. Zudemkann man sich ein Registrierungsformular aus-drucken lassen. README.TXT lesen!-soft, z.Hd. Markus FritzeBirkhahnkamp 382000 Norderstedt 1 Anschrift von -soft: (040)522 39 55 (privat, nie vor 12 Uhr!!!)Kontonummer : 407860, Norderstedter BankBankleitzahl: 20069111INSTALLIERENREGISTRIERENPROGRAMMENDE[3][ |Whlen Sie bitte eine |hhere Auflsung mit|mindestens 640 Pixeln|in der Horizontalen.][ ABBRUCH ][3][ |Drucker antwortet nicht!][ ABBRUCH ][3][ |Die Angaben sind nicht|vollstndig!][ ABBRUCH ][3][ |Die Bankleitzahl gibt|es in der Bundesrepublik|nicht!][ ABBRUCH |WEITER][3][ |Die Postleitzahl gibt|es in der Bundesrepublik|nicht!][ ABBRUCH |WEITER] R  k$?@Amn,o* 2[)), @)3i)3@))i!)3=Bi'331MNO{|,}$ B0apq0CD%],+4 2 4,  )@@&@ @  @    ,  " >( % 4 Z2 v4 2 2 (   2   & n   : 2  !%(#4 V2 r4 #  //   `1 `0 `/ ` r$#  $  EM%T#2 62 R0...E! . g    n *(  + 8% E" jXdXjXpXwXPRG.*LIB.*TOOL.*DEMOS.*TEXTE.*x:\TURBOASS\TURBOASS.PRGBUGABOO.PRG[3][ |Fehler beim Install!| ][ MIST ][1][ |"" nicht gefunden!| ][ WEITER | ABBRUCH ]N<nR0 @f&3ː0<N$:3QfNR4N>963 fFAŬ0( @{f6090 @g @g @>g @:g @gJ @gBNzNNNHNN2NNNNNNN0N1lNJNONN NNXNJyg yG0<@BSNNNu .#&3*NVJyRfNu.#&0<N#&3*NVJyRfNu .#&3*NVJyRfB962Nu3.#&#&3*NVJyRfNu962 Kg MgNuy. jBy. y.$y .&y .(y .*y .,09.2@j$00FC06C0>! addq.l #1,frclock $00FC06C6>! subq.w #1,vblsem $00FC06CC>! bmi.w $FC079A $00FC06D0>! movem.l D0-A6,-(SP) $00FC06D4>! addq.l #1,vbclock $00FC06DA>! suba.l A5,A5 $00FC06DC>! move.b $FA01(A5),D1 $00FC06E0>! move.b $8260(A5),D0 $00FC06E4>! and.b #3,D0 $00FC06E8>! cmp.b #2,D0 $00FC06EC>! bge.s $FC0702 $00FC06EE>! btst #7,D1 $00FC06F2>! bne.s $FC0722 $00FC06F4>! move.w #$7D0,D0 $00FC06F8>! dbra D0,$FC06F8 $00FC06FC>! move.b #2,D0 $00FC0700>! bra.s $FC0714 $00FC0702>! btst #7,D1 $00FC0706>! beq.s $FC0722 $00FC0708>! move.b $44A(A5),D0 $00FC070C>! cmp.b #2,D0 $00FC0710>! blt.s $FC0714 $00FC0712>! clr.b D0 $00FC0714>! move.b D0,$44C(A5) $00FC0718>! move.b D0,$8260(A5) $00FC071C>! movea.l $46E(A5),A0 $00FC0720>! jsr (A0) $00FC0722>! jsr $FCA6EE $00FC0728>! suba.l A5,A5 $00FC072A>! tst.l $45A(A5) $00FC072E>! beq.s $FC0746 $00FC0730>! movea.l $45A(A5),A0 $00FC0734>! lea $8240(A5),A1 $00FC0738>! move.w #$F,D0 $00FC073C>! move.w (A0)+,(A1)+ $00FC073E>! dbra D0,$FC073C $00FC0742>! clr.l $45A(A5) $00FC0746>! tst.l $45E(A5) $00FC074A>! beq.s $FC075E $00FC074C>! move.l $45E(A5),$44E(A5) $00FC0752>! move.b $450(A5),$8203(A5) $00FC0758>! move.b $44F(A5),$8201(A5) $00FC075E>! bsr.w $FC1360 $00FC0762>! move.w nvbls,D7 $00FC0768>! beq.s $FC078A $00FC076A>! subq.l #1,D7 $00FC076C>! movea.l vblqueue,A0 $00FC0772>! movea.l (A0)+,A1 $00FC0774>! cmpa.l #0,A1 $00FC077A>! beq.s $FC0786 $00FC077C>! movem.l D7-A0,-(SP) $00FC0780>! jsr (A1) $00FC0782>! movem.l (SP)+,D7-A0 $00FC0786>! dbra D7,$FC0772 $00FC078A>! suba.l A5,A5 $00FC078C>! tst.w $4EE(A5) $00FC0790>! bne.s $FC0796 $00FC0792>! bsr.w $FC0CFA $00FC0796>! movem.l (SP)+,D0-A6 $00FC079A>! addq.w #1,vblsem $00FC07A0>! rte RBxp%Ha iP vqtuv(zFą{yGG$$8@O?R*JT=ܜz2%FB:&:,84\AEXƧ3ذ%or6.ΦIqS*0=4<28aiI qQQ ё`\WSvrqv&ɻ T(-Z< ($hFGE{zY»O7@ȰQaG%iz@ (8$ ;8(k"HzHx??<?NAO a3`3ByBy0:":`R@f3J9fAJ# <a P(fa`Hx?<HNA\r 3AFa3 kHzHx??<@NAO a` pA aBy`<f$?:?:?:a4a\PP`V<f0PpAaS@fNAXNu xNHa<AAa A r ~ vAL!rAH!~AD!vHz?<NA\BgHz?<NNAP!~r!|~!zvaLNupNupNupNuprt0k AQNuC@z x&!tА[D<0g z0ЃQNuJDf0Nu dH瀀aHa#r Z#v t#~ #. 83F gּּHx?<HNA\/?<HNA\(/?<HNA\мJy >gм!./?<INA\2:0 8!Jy >g1F xN 8."@2<""""Q!N!^?<%NNTB^"8. :HS@"x.BYQ <A"x.""""QJy >g@ <[A"8N# "A2Q"Ar0<YQ0g"A!6aa:LNuHa x."h(!r"hB!v"h\!~2h 1F(8."h!.6( 2( 8! xN 8."@2<""""QJCg xNrBQ!N!^!6?<%NNTB^aJCg/?<INA\LNuHa^ 8By x.@g f3a2(!#a4L0:"Nu x.CF!vC,!rC`!~Nu4VHHzt?<&NN\Hx?<HNA\&/?<HNA\&Hx?<HNA\!6/?<INA\Hz?< NA\LNuVDISK V3.7, still alive... x.CF!vC,!rC`!~2( 8!0( g1FNuHa: x.3a>Lp0:,NuHa x.3aLp0: NuB?< NA\#Nu/: ?< NA\Nu /XBRAVDSK0/ zCF`2XBRAVDSK0/ zC&`XBRAVDSK0/ zCzfNN"x.Cp0/ H@ o"/fH0/ fH`LHLH LH@LH`LHLHLHLHLHLH LH@LH`LHLHLHLHCQ\LpNuHS@QpNupNuA NutA:\VDISK.INHA:\VDISK.INF Ramdisk 3.7X:\*.*[2][ACHTUNG:| |Alle Daten der|Ramdisk werden|gelscht| ][JA|NEIN][3][Konnte Datei| |"VDISK.INH"| |nicht erzeugen][ABBRUCH][3][Konnte Datei| |"VDISK.INH"| |nicht ffnen][ABBRUCH][3][Konnte Datei| |"VDISK.INF"| |nicht erzeugen][ABBRUCH][3][Die Datei "VDISK.INH"|ist zu gro fr die|momentane Gre von VDISK][ABBRUCH][3][Fr diese Ramdiskgre|ist nicht gengend|Speicher vorhanden][ABBRUCH][1][Ramdiskinhalt als|Datei "VDISK.INH" sichern][ABBRUCH|WEITER][1][Ramdiskinhalt von|Datei "VDISK.INH" laden][ABBRUCH|WEITER][1][Laufwerk whlen][ A: | B: | C: ][3][Das Ziellaufwerk hat|zu wenig Kapazitt][ABBRUCH]VDISK 3.7 Resetfeste RamdiskChristian Markus fr den TurboAss Frei: ____ KGre: ____ K Laufwerk: _9999X00000000D-+AutobootParam. sichernInhalt ladenInhalt sichernANMELDENABMELDENABBRUCHf"$ $8"T"p      "    ' '0    2  *(" "  & d&">>*r0 t8000?@A:"y)"Q($y)$R(0<"$"$"$"+--------------------------------------------------------------+ ! ! ! V V DDDDD I SSSSS K K AAAA CCCCC CCCCC ! ! V V D D S K K A A C C ! ! V V D D I S K K A A C C ! ! V V D D I SSSS KK AAAAAA C C ! ! V V D D I S K K A A C C ! ! V V D D I S K K A A C C ! ! VV DDDDD I SSSSS K K O A A CCCCC CCCCC ! ! ! ! Version 3.7 ! +--------------------------------------------------------------+ Dieses Programm zusammen mit dieser Dokumentationsdatei frei kopiert werden. Es ist mit dem Turbo Assembler entwickelt worden, der von Markus Fritze und Sren Hellwig als Shareware Paket ver- trieben wird. Kurzbeschreibung des Programms VDISK.ACC 5.4.90 ======================================== Das Programm VDISK.ACC ist ein Puplic-Domain Programm und somit frei kopierbar, jeder darf es benutzen und an Freunde weiter- geben. Es handelt sich hierbei um eine residente resetfeste Ramdisk, die als Accessory ausgefhrt ist. Bei einem Rechner- absturz oder Reset wird der Inhalt der Ramdisk nicht gelscht, allerdings mu sich beim erneuten Booten die Datei 'VDISK.ACC' wieder auf der Bootdiskette befinden. Dagegen geht der Inhalt natrlich beim Ausschalten des Rechners ganz verloren. Wird allerdings die Option 'Autoboot' gesetzt, braucht sich die Datei 'VDISK.ACC' nicht auf der Diskette zu befinden. In diesem Fall werden AUTO-Ordner und Accessories von der Ramdisk gebootet. Vorsicht: die Option Autoboot nur bei Systemen ohne Festplatte benutzen, sonst gibt es evtl. Schwierigkeiten bei einem Reset. Einige Virendetektoren erkennen die resetresidente Routine der eventuell als Virusprogramm, es ist aber harmlos! Bedienung von VDISK.ACC: ======================= Sofern sich die Datei 'VDISK.ACC' beim Booten auf der Bootdisk befunden hat, ist das Accessory mit 'Ramdisk' in der ersten Menleiste 'Desk' eingetragen. Nach Anklicken von 'Ramdisk 3.5' erscheint eine Dialogbox, in der zwei Boxen zur Einstellung von Parametern des anzumeldenden Laufwerks vorgesehen sind: 'FREI' ====== Im Dialogfeld 'FREI' wird der freie Speicher in KB angezeigt. 'GRSSE' ======== In das Dialogfeld 'GRSSE' kann die gewnschte Gre der Ramdisk in KB angegeben werden. Die Mindestgre fr VDISK ist 100KB. Zu Beachten ist, da die Ramdisk zur Verwaltung der Daten noch ca. 24KB bentigt. Auerdem verlangt VDISK noch 20KB fr TOS, damit z.B. die File-Selektorbox noch ausfhrbar ist. 'LAUFWERK' ========== Im Dialogfeld 'Laufwerk' wird die aktuell eingestellte Laufwerks- kennung der Ramdisk angezeigt. '+','-' ======= Mit diesen beiden Knpfen kann die Laufwerkskennung der Ramdisk verstellt werden. Es sind die Laufwerke 'C' bis 'P' selektierbar. 'ABBRUCH' ========= beendet die Dialogbox, ohne jedoch eine Ramdisk an bzw. abzumelden. 'ANMELDEN' ========== installiert eine Ramdisk in der gewnschten Grsse mit gewhlter Laufwerkskennung. 'ABMELDEN' ========== meldet eine zuvor installierte Ramdisk wieder ab. Dabei wird der zuvor reservierte Speicher wieder freigegeben, der Inhalt der Ramdisk geht verloren. Wurde zwischen Installation und Abmelden ein Reset ausgelst, erfolgt ein automatischer Reset nach Abmelden der Ramdisk, dies ist aus Betriebssystemgrnden erforderlich. 'Autoboot' =========== aktiviert den Ramdisk-Bootmodus. Nach einem Reset werden der AUTO- Ordner und die Accessories dann aus der Ramdisk gebootet. Dabei installiert VDISK ein reset-residentes Programm welches vom TOS als solches bei einem Systemstart erkannt wird. Hinweis: Einige Virusfindprogramme halten diese Routine fr einen Virus, sie ist aber harmlos und dient nur den Zwecken der Ramdisk. 'Param. SICHERN' ================ speichert die Parameter der Ramdisk (Grsse, Laufwerk und bootfhigkeit) in der Datei 'VDISK.INF' auf der Bootdiskette, von der VDISK.ACC geladen wurde (das kann u.U. auch die Ramdisk selbst sein). 'INHALT SICHERN' ================ speichert den momentanen Inhalt der Ramdisk als eine (ziemlich) groe Datei mit Namen 'VDISK.INH' auf dem Laufwerk A:, B: oder C: ab. Eine ltere Sicherungsdatei wird dabei berschrieben. Sollte der vorhandene Speicherplatz auf dem gewhlten Laufwerk nicht ausreichen, erfolgt eine Warnmeldung. 'EINLADEN' ========== ldt den (zuvor gesicherten) Inhalt einer Ramdisk aus einer Datei 'VDISK.INH' auf Laufwerk A:,B: oder C: wieder in die Ramdisk ein, der aktuelle Inhalt der Ramdisk wird dabei berschrieben. $ieiRјa,ildӔVϑqCC#hƊuIU#x̶1]UusP̖⪪{:*jƦ4VeEI[\7 9!Ed ,D@"&       &*"" """"$ "& "& $$"$ "*""" "B1 "*2$ $"6 $2""689 89""1:0;" ;:;:("$,"D$$"*" &"D&"H"""""M"H$"""M" "&, "&Q$"S ""S"",WXXY"YZ" Z&,$W$ ^_` ` _"",""^cdee d`c$f$h& ih"if l""Ul n"U""*U"n rs"Ur U"U"u"""""E*sE} } ".t} "HB3 q$*  &V(&*? (&$,\G"", "&], G"g&>$ *JB>HHDH>>HFDF<:@*$m$$$$$$$" " "$"" " """ "8( < p:(6("""$"( J *  B(  ((4,$0(4.$*&"$D x$@@@@v :&&~  "$  <>((" $"0~' {|}RBo<:<jRL[B@|&6TRB& "A >O P  "!$#&% (' *),+  .-/ 102 435 768 :9; <= > ?@ A BC D EF G HI J KL M NO P QR S TUaV W XYbZ [ \] ^ _`5a b cdke f ghLi j klKm n opIq r stJu v wxTy zT" @@ @@@!@<@#@%@C@2@-@/@4> ,@y{0@=F)+R&@&AOJ$Vg"O/ //<JNAO < a3A~3# kHz-Hx??<?NAO a3345`37-By/By40:/":0`R@f3/J9fA<# <a P(fa`Hx?<HNA\r 3=A>a?3 kHz-Hx??<@NAO a3`pAja\Byk`U<f?:4?:-?:/ama\P)PF`<fPFpAoa\S@fapQ)J9+gHzq?<&NN< faPF`<fatPFp:Ra]aGJ9FgQNu x.p0(w#yr z#{NuHzu?<&NN\pA|a\U@faBgHz~?<=NAP.kM/Hx??<?NA A0z-bag|?aaG`Ap`\pAa\<~NuHzu?<&NN\pAa\U@fEaHz~?<ANA\BgHz~?<NAXNu xNHa.<AA}aA r ~ vA!rA!~A!vHz?<NA\BgHz}?<NNAP! r!~!vaLNupNupNupNuprt0k AQNuCz x&!tА[D<0gz0ЃQNuJDf0Nu dH瀀aL3# <4`#A00 # % <*`p3  ted_in3O ted_in4P  0 -0 00  0 30 60  0 90 0 0  0  0 !0 #0 %0 '0 )0 +0dummy_fname regsautoboottlong17versionown_hdv_mediach own_hdv_rwdta_bufferhdv_mediachhdv_rwmedia_change W@A3B0 5B0 w3B0 5B0 W7VDSKxbra_idVDISK.ACCF** Filename: VDISK.SRC0 ** Funktion: Residente Ramdisk mit variabler Gre *F** History:; **D ** Ver#: |Datum: |nderung: |Autor: ** -|-|#-| - ** 2.0 |12.12.87|Neues Dialogkonzept |Ch.Markus ** 2.1 |27.05.88|Kleinere Bugs beseitigt, Drives C-P |Ch.Markus ** 2.2 |06.08.88|AHDI 1.7 kompatibel |Ch.Markus ** 3.0 |10.08.88|Assembler-Version |Markus Fritze ** 3.1 |06.06.89|Kleinere Bugs beseitigt |Ch.Markus ** 3.2 |05.08.89|Groen Bug beseitigt (ABMELDEN!) |Markus Fritze ** 3.3 |10.08.89|XBRA (RAM), schneller, ... |Markus Fritze ** 3.4 |18.09.89|XBRA behoben, VDI rausgeworfen (kurz)|Markus Fritze ** 3.5 |05.04.89|Inhalt speichern korrigiert f.TOS 1.4|Ch.Markus ** 3.6 |22.10.90|einige allg. nderungen |Markus Fritze ** 3.7 |15.12.90|schweren Bug in rdrw behoben |Markus Fritze *F*;Version der VDISKF** Allgemeine Definitionen, *F*;Fast-Load (siehe 68000er 11/89);XBRA-ID (nun ohne );512 Bytes Codelnge VDISK.ASM;Mindestgre 100Kb;FATDIR + 20 Kb briglassen;47 Sektoren Dir + FatF** Definitionen aus OBDEFS.H* *F*;Objekttypen;Objekt Flags;Objekt ZustaendeF** main() - Accessory installieren$ *F*;Stack wegen ACC nicht nutzbar (Basepage);Eigenen Stack einrichten;ACC oder PRG?;0=ACC, -1=PRG;ACC => kein Setblock;Programmlnge;Lnge des Starters;Basepageadr des Starters;Setblock();appl_init();18 Objekte im Baum;die Objektnummer;Adresse des Baumes;rsrc_obfix();PRG?;Ja! =>;menu_register();RSC-Adr;form_center();bootdrv=Dgetdrv();Auf welchem LW stehen wir ?;Buchstaben merken;Ist VDISK bereits installiert;Aktuelle Parameter ermitteln;Resetflag setzen;Ramdiskgre ermitteln;akt. Ramdisklwnummer holen;Laufwerk aus der Maske nehmen;wenn man hier (pc) dahinter setzt => kein Fehler (laut Genst 2!);Das war's;Resetflag lschen;Ramdiskparameter einlesen;Fopen(inf,0);Datei VDISK.INF vorhanden ?;Alle 3 Variablen auf einmal lesen;Fread();Datei wieder schlieen;Button selektieren, wenn bootbar;Das war's;Default-Parameter annehmen;bei A geht die Suche los;erstes freies Laufwerk suchen;PRG?;dann direkt startenF** Warteschleife des Accessories auf Aufruf *F*;evnt_message;ACC_OPEN?F** Programm ausfhren1 *F*;vor v_opnvwk() !;Malloc(-1) - freien Speicher ermitteln;durch 1024 (Bytes pro Kilo);und in den String einsetzen;wind_update() - Update fr andere sperren;wind_create();wind_open();Dialog mit Benutzer fhren;wind_close();wind_delete();wind_update() - Update wieder freigeben;ACC?;dann zurk;sonst Pterm0()F** Dialog mit dem Benutzer fuehren$ *F*;graf_mouse(ARROW) - Mausform setzen;fr disabled;Dialogbox aktualisieren;disabled lschen;und auch einsetzen;laufwerk[0]='A'+diskno;objc_draw(dialog,0,8,xobj,yobj,wobj,hobj);Dialogschleife beginnen;form_do(dialog,GROESSE);Falls Abbruch:Ende des Dialogs;gewnschte Gre holen;Nur bei nicht installierter Ramdisk testen;Mindestgre unterschritten?;Ramdisk zu gro?;Zu wenig Speicher?;form_alert();und Ende;und Zahl wieder in die RSC einsetzen;objc_draw(dialog,5,1,xobj,yobj,wobj,hobj);LW_MIN?;Laufwerksnummer abwrts?;eine Laufwerksnummer runter;zu klein?;dann wieder oben anfangen;Laufwerksnummer schon belegt?;Ja! ^^;objc_draw(dialog,7,1,xobj,yobj,wobj,hobj);LW_PLS;Laufwerksnummer hoch;Laufwerksnummer schon belegt?;dann die nchste testen ^^;ARB_SICH - Arbeit sichern gewhlt;Parameterdatei VDISK.INF speichern;Alle 3 Variablen auf einmal sichern;Fwrite();form_alert();ANMELDEN;Ramdisk installieren;Mediachange;ABMELDEN;Ramdisk abmelden;Sicherheitsabfrage;Speicher/Systemvariablen und;Status auf nicht installiert;Wurde nach Installation Reset gedrckt?;Fertig, wenn nicht;Superexc(do_reset) => Game Over;LOADDISK;Ramdisk-Inhalt einladen;SAVEDISK;Ramdisk-Inhalt sichern;Weiter geht's obenF** Ramdiskbeginn ermitteln, *F*;Phystop holen;;Clusterzahl holen;Offset Ramdiskroutinen addieren;sect * $400;Globales ReturnF** Inhalt einer Ramdisk vom File lesen *F*;Ramdiskparameter;im Supervisor-Modus holen;Wirklich laden ?;Ende, wenn nicht;Laufwerksbuchstaben holen;Datei ffnen (R/O);Dateiname;Fopen;Filehandle retten;Fehler aufgetreten ?;Diskgre lesen;Meldung Datei zu gro;Mausform: Biene;Kommando: lesen;Inhalt einlesen/Fclose;Mausform: Pfeil;Mediachange;Meldung File not found;als Alert anzeigen;Laufwerk erfragen (A,B oder C);Laufwerk setzenF** Inhalt einer Ramdisk auf Datei ausgeben *F*;Ramdiskparameter;im Supervisor-Modus holen;Wirklich speichern?;Ende, wenn nicht;Laufwerksbuchstaben holen;Alte Datei lschen;Datei erzeugen;Dateihandle retten;Meldung File error;Fehlermeldung ausgeben;Header/Dateigre speichern;Fwrite();Inhalt schreiben/Fclose;Alle Bytes geschrieben ?;Wenn nicht: Fehlermeldung!;(zu kurze) Ausgabedatei lschen;Message holenF** Ramdisk-Inhalt laden bzw. speichern, D7=Fhandle, D6=$3F oder $40 ** oder Zahl der gelesenen/geschrieben Bytes als Rckgabewert *F*;Fread() / Fwrite();Zahl der Bytes merken;Datei schlieen;Fclose();F*;* Reset ausfhren4 *;F*;RESET ausfhrenF** Media-Change auf Laufwerk D0' *F*;Laufwerk der Ramdisk holen;das Laufwerk einsetzen;Supervisormode an;alte Vektoren retten;und neue Vektoren rein;fr Fsfirst();Fsfirst() - ein Zugriff auf das Laufwerk;alte Vektoren wieder einsetzen;Usermode wieder an;Fehler!;Datentrger wurde gewechselt;Media-ChangeF** Dezimalzahl ab A0 nach D0 holen$ *F*;Zahl erstmal lschen;da unten .W benutzt wird, auch lschen;4 Ziffern holen;Ziffer holen;ASCII-Wert abziehen;war es ein Space? => nchste Ziffer;Zahl nach ober schieben;und letzte Ziffer dazu;Was das etwa schon alles?F** Zahl in D0 dezimal nach A0 ausgeben *F*;Zeiger hinter die Tabellen;Fllzeichen (vor der Zahl);4 Stellen ausgeben;Eine Null?;dann vorher aber testen;Ab nun drfen Nullen ausgegeben werden;Ersatzzeichen fr evtl.Fhrungsnull;letzte Position?;Nein => normal ausgeben;sonst unbedingt eine Null ausgebenF** form_alert A0 mit Default D0 aufrufen *F*;form_alert()F** objc_draw() - Objekt D0 neu zeichnen *F*;objc_draw(dialog,5,1,xobj,yobj,wobj,hobj)F** Mausform = Pfeil (normal)* *F*;Maus normalF** Mausform = Biene3 *F*F** Mein eigener kleiner AES-Aufruf$ ** D0=Die ersten 4 Eintrge im int_in-Array (Bytebreite!) *F*;besser retten, man kann nie wissen;int_in-Array lschen;und die neuen Daten eintragen;AES aufrufenG** Filename: VDISKASM.S0 **E-** History:< **E ** Ver# |Datum: |nderung: |Autor: ** D-** 1 |27.08.86|Ursprungsversion Ramdisk (C'T 9/86) |P. Glasmacher ** 2 |18.12.86|Gendert/ergnzt fuer VDISK.ACC |Ch. Markus ** 3 |22.01.87|Byteweise bertr. Optimiert |Ch. Markus ** 4 |20.04.87|Speicher wird vor Ben. initialisiert |Ch. Markus ** 5 |14.09.87|Restart-Routine fuer Mega-ST geaendert |Ch. Markus ** 6 |08.10.87|Media-Change Funktion installiert |Ch. Markus ** 7 |15.11.87|Fehler in der Restart-Routine beseitigt|Ch. Markus ** 8 |29.11.87|getsize Routine verbessert |Ch. Markus ** 9 |03.12.87|ramdisk Routine verbessert |Ch. Markus **10 |12.12.87|Restartroutine resetresident(ROMTOS) |Ch. Markus **11 |06.08.88|Autoboot-Routine gendert->AHDI 1.7 |Ch. Markus **12 |09.08.88|An meine Gewohnheiten angepat |Markus Fritze **13 |06.06.89|Registerbelegung gendert/Autoboot |Ch. Markus **14 |10.08.89|XBRA, mehr Speed, ... |Markus Fritze **15 |18.09.89|XBRA-Fehler behoben |Markus Fritze *G*;Sektoren fuer Dir + FatF** ramdisk(drvnum,cluster,bootflag) RAMDISK neu installieren **D-** A0 = Hilfsregister1 ** A1 = Hilfsregister1 ** D0 = Hilfsregister1 ** D1 = Hilfsregister1 ** D3 = Speicherbedarf0 ** D4 = Pointer auf Restspeicherbeginn *F*;Parameter von 'C' umkopieren;Register retten;in den Supervisor-Modus;Alte Vektoren sichern;phystop merken;Bootdevice merken;d1 = ben. Speicher;Zahl der 1024-Byte Cluster;* 2 = 512-Byte Sektoren;+ Sektoren fr Dir's und Fat's;Sektoren ;512 Bytes;ergibt Speicherbedarf;Autoboot installiert ?;Nein, dann weiter;$200 Bytes fuer Reset-Routine;$200 Bytes fuer Ramdisk-Routinen;Freien Speicher ermitteln;Diskgroesse davon abziehen;Restspeicher reservieren;d2 = Restspeicher;Die Adresse des Hauptspeichernblks;Ramdiskspeicher reservieren;Bildschirmspeicher aussparen;Autoboot installiert ?;Nein, dann weiter;Resetroutine aussparen;Restspeicher freigeben;Laufwerksnummer holen;Laufwerksbit setzen;Autoboot installiert ?;Nein, dann weiter;Bootlaufwerk ist Ramdisk;Kopierschleife vorbereiten;Bildschirm umkopieren;Systemvariablen anpassen;Warten bis zum nchsten VBL;Screenpointer zurcksetzen;Speicherbereich der Ramdisk;lschen;Lschschleife;Ramdisk-Routinen oberhalb von;phystop verschieben;Umkopierschleife;Autoboot installiert ?;Nein, dann weiter;d0 Anzahl der Bytes;a0 Sourceadresse;d1 Zieladresse;Adresse eintragen;a1 Zieladresse;Resetroutine umkopieren;$200 Unterhalb v_bas_ad;Zieladresse holen;D1 lschen;256 Worte (index d0);Summieren auf D1;d0=$5678-d1;Checksum-Korrektur im Wort;unterhalb phystop ein-;tragen;Memtop herabsetzen;Autoboot installiert ?;Nein, dann weiter;Resetroutine aussparen;Disk-Vektoren umsetzen;in den User-Modus;Register restaurierenF** resetmem() Speicher der Ramdisk wieder freigeben **D-** A0 = Pointer auf Variablen-Block# ** A1 = Pointer auf Variable* ** D0 = Hilfsregister1 ** D1 = Hilfsregister, Laufwerksnummer, Schleifenzhler ** D3 = Bootit-Flag3 ** D4 = Ramdiskbeginn (Phystop)F*;Register retten;in den Supervisor-Modus;Offset auf Vektoren holen;Alte Vektoren zurcksetzen;Altes Bootdevice setzen;Ramdiskbeginn merken;Oldtop holen;phystop zuruecksetzen;Autoboot-Flag holen;Laufwerksnummer holen;Laufwerksbit lschen;Kopierschleife vorbereiten;Bildschirm umkopieren;Autoboot installiert ?;Restartroutine lschen;512 Bytes loeschen;Systemvariablen umsetzen;Warten bis zum naechsten VBL;in den User-Modus;Von Oldtop $8000 abziehen;Autoboot installiert ?;Nein, dann weiter;Von Oldtop $200 abziehen;Speicher freigebenF** restart() Vektoren der Ramdisk bei Warmstart retten **D-** A0 = Pointer auf Variablen-Block# ** D0 = Hilfsregister + Rckgabewert Restart-Modus ** D1 = Laufwerksnummer/ *F*;Register retten;In den Supervisor-Modus;Laufwerksbit holen;Erstinstallation annehmen;phystop als Ramdiskbeginn holen;Ist es ein unberhrter MEGA 4 ?;Nein, dann ende;Ist Magic Number prsent ?;Nein, dann Ende;Restart melden (Return=1);Vektoren zuruecksetzen;Laufwerksnummer holen;Laufwerksbit setzen;In den User-Modus;Register restaurierenF** Ramdiskvektoren setzen- **D-** A0 = Pointer auf Variablen-Block# ** A1 = Pointer auf Variable* *F*;Neue Vektoren setzenF** Reset-Residente Restartroutine (wird nach v_bas_ad - $200 kopiert **D-** A0 = Hilfsregister1 ** D0 = GEMDOS-Rckgabewerte* ** D3 = Speichergre (wird gerettet) *F*;Magic-Wort fuer Reset;Hier wird die Adresse eingetr.;Im Supervisor-Modus...;Freien Speicher ermitteln;d3 = freier Speicher;Restspeicher - $200 reserv.;d3 = restmem;$200 Bytes reservieren;Rest wieder freigeben;Erfolgsmeldung ausgeben;Register restaurierenF** Eigentliche Reset-Routine, die Vektoren wieder restauriert **D-** A0 = Pointer auf Variablen-Block# ** A1 = Pointer auf Variable* ** D0 = Hilfsvariable1 ** D1 = Laufwerksnummer/ *F*;Vektoren restaurieren;Laufwerksnummer holen;Laufwerksbit setzen;Bootflag holen;Nicht gesetzt! =>;Bootlaufwerk ist RamdiskF** getsize - Diskgre zurckliefern" **D-** A0 = Pointer auf Variablen-Block# ** D0 = Rckgabewert Laufwerksgrsse der Ramdisk *F*;Register retten;In den Supervisor-Modus;phystop als VDISK-Beginn;clusterzahl;Register restaurierenF** getdrive - Laufwerksnummer zurckliefern **D-** A0 = Pointer auf Variablen-Block# ** D0 = Rckgabewert Laufwerksnummer der Ramdisk *F*;Register retten;drvnum;Register restaurierenF** CPU in den Supervisor-Modus bringen **D-** D0 = Rckgabewert Stackadresse% *F*F** CPU in den User-Modus bringen& *F*F** Eigentliche RAM-Disk Routinen (werden hinter phystop kopiert) *F*;Magic Number, ab hier wird kopiert;Laufwerksnummer der Ramdisk;Alte Speicherobergrenze;Altes Bootdevice;Autoboot-Flag;Sektorgroesse;Cluster/Sektor;Bytes/Cluster;Groesse Rootdir;Fat in Sektoren;Start von Fat2;Start Datensektoren;Anzahl der Datensektoren;16Bit-FATF** BIOS-Call auffangen und auf RAM-DISK Zugriff testen **D-** A0 = Vektor auf Originalroutine$ ** A1 = Vektor auf Ramdiskroutine% ** D0 = Laufwerksnummer/ *F*;alter Getbpb-Vektor;Laufwerksnummer nach d0;alte Adresse nach a0;neue Adresse nach a1;Prfen auf Ramdisk;alter Rwabs-Vektor;Laufwerksnummer nach d0;alte Adresse nach a0;neue Adresse nach a1;Prfen auf Ramdisk;alter Mediach-Vektor;Laufwerksnummer nach d0;alte Adresse nach a0;neue Adresse nach a1;Prfen, ob Ramdisk Zugriff;Nein, dann alte Routine;Neue Routine ausfhren;Jump auf alte RoutineF** RAM-DISK Routinen2 *F*F** Rwabs() Routine4 *F*;Ramdiskbase ist;Phystop + $200;Startrecord;D0 mal 512;Quellpuffer laden;Lesen oder Schreiben ?;1 = Schreiben;Lesen: Quelle und Ziel tauschen;Sektoren zu transferieren;Ungerade Adresse;-> Byteebertragung;evtl. 0 Sektoren lesen? =>;einen kompletten Sektor bertragen;schon alle Sektoren? Nein! =>;Fehlercode ist immer 0;Sektoren mal 64;1 abziehen;Byteweise bertragen;Bis zum Ende;Fehlercode ist immer 0F** Mediach() Routine2 **D-** A0 = Pointer auf Variablen-Block# ** D0 = Rckgabewert2 *F*;Es wurde nicht gewechseltF** Getbpb() Routine3 **D-** A0 = Pointer auf Variablen-Block# ** D0 = Rckgabewert2 *F*;Adresse des Parameterblocks;nach d0 bertragenF** Ende der RAM-Disk Routinen) *F*F** Hier beginnt der DATA-Bereich& *F*F** Nun ein paar wichtige Daten( *F*F** Ein paar allgemeine Variablendefinitionen *F*;Namen der externen Dateien;Pfad fr media-change; Strings fr die TEDINFO-Strukturen;normale Strings;Die TEDINFO-Strukturen;und endlich die RSC-Daten;Objekt 0;Objekt 1;Objekt 2;Objekt 3;Objekt 4;Objekt 5;Objekt 6;Objekt 7;Objekt 8;Objekt 9;Objekt 10;Objekt 11;Objekt 12;Objekt 13;Objekt 14;Objekt 15;Objekt 16;Objekt 17F** Und ordentlich BSS-Bereich) *F*;Diese 3 Variablen mssen hintereinander liegen:;die folgenden 3 Variablen mssen auch hintereinander liegen;0=ACC, -1=PRG;Rueckgabewert bei Funktionen;User-Stackpointer;jedem Programm seinen eigenen StackY}+(ʆ΢ܪtԄW'SSo=5'_#1)ec;W8`ĴȀ tٸ;ӕаr K)J) LO 1r2ֶVPu-*+Ȏ NHLv412zsPNnNt`XtBfjDr;cc ll̵tԥ-]=.YW`ejcom fQך^Rjdfjanje*,_V\ؒ/ڐh+s =/oucm5M{ ؔܰpsM5SO}Ck]E u 7谄ŽtH䗤{ٚX몙D;,pu41%!).&'23YEYX_@+!uCuqb *gwu7366U52,JJ/KJIMMG6|S]Vx`VScI^vbXXbvQIZoTbANZESAZ^|{qqVRw~XfsALaCQnQTcYVbZ_KABhNOYDH~ Ch$ez;{XYJJ{j[ŔVgW8{cL*9_SFAY_TZ13;+6),/.41<1DMLJٝUE) Y IQ~Vv^6:2(tr/+ikHH u ( vՒNi!\씴ȇ(O/[sSp;(;************************************************************************ ;* XBIOS-Library, bergabe in Registern * ;* 1989 by -soft, written by Markus Fritze 18.06.1988 02:20 * ;************************************************************************ initmous: move.l A0,-(SP) move.l A1,-(SP) move.w D0,-(SP) clr.w -(SP) bsr xbios lea 12(SP),SP rts ssbrk: move.w D0,-(SP) move.w #1,-(SP) bsr xbios addq.l #4,SP rts physbase: move.w #2,-(SP) bsr xbios addq.l #2,SP rts logbase: move.w #3,-(SP) bsr xbios addq.l #2,SP rts getrez: move.w #4,-(SP) bsr xbios addq.l #2,SP rts setscreen: move.w D0,-(SP) move.l A0,-(SP) move.l A1,-(SP) move.w #5,-(SP) bsr xbios lea 12(SP),SP rts setpalette: move.l A0,-(SP) move.w #6,-(SP) bsr xbios addq.l #6,SP rts setcolor: move.w D0,-(SP) move.w D1,-(SP) bsr xbios addq.l #4,SP rts floprd: move.w D0,-(SP) move.w D1,-(SP) move.w D2,-(SP) move.w D3,-(SP) move.w D4,-(SP) clr.l -(SP) move.l A0,-(SP) move.w #8,-(SP) bsr xbios lea 20(SP),SP rts flopwr: move.w D0,-(SP) move.w D1,-(SP) move.w D2,-(SP) move.w D3,-(SP) move.w D4,-(SP) clr.l -(SP) move.l A0,-(SP) move.w #9,-(SP) bsr xbios lea 20(SP),SP rts flopmt: move.w D0,-(SP) move.l D1,-(SP) move.w D2,-(SP) move.w D3,-(SP) move.w D4,-(SP) move.w D5,-(SP) move.w D6,-(SP) move.l A1,-(SP) move.l A0,-(SP) move.w #$0A,-(SP) bsr xbios lea 26(SP),SP rts getdsb: move.w #$0B,-(SP) bsr xbios addq.l #2,SP rts midiws: move.l A0,-(SP) move.w D0,-(SP) move.w #$0C,-(SP) bsr xbios addq.l #8,SP rts mfpint: move.l A0,-(SP) move.w D0,-(SP) move.w #$0D,-(SP) bsr xbios addq.l #8,SP rts iorec: move.w D0,-(SP) move.w #$0E,-(SP) bsr xbios addq.l #4,SP rts rsconf: move.w D0,-(SP) move.w D1,-(SP) move.w D2,-(SP) move.w D3,-(SP) move.w D4,-(SP) move.w D5,-(SP) move.w #$0F,-(SP) bsr xbios lea 14(SP),SP rts keytbl: move.l A0,-(SP) move.l A1,-(SP) move.l A2,-(SP) move.w #$10,-(SP) bsr xbios lea 14(SP),SP rts random: move.w #$11,-(SP) bsr xbios addq.l #2,SP rts protobt: move.w D0,-(SP) move.w D1,-(SP) move.l D2,-(SP) move.l A0,-(SP) move.w #$12,-(SP) bsr xbios lea 14(SP),SP rts flopver: move.w D0,-(SP) move.w D1,-(SP) move.w D2,-(SP) move.w D3,-(SP) move.w D4,-(SP) clr.l -(SP) move.l A0,-(SP) move.w #$13,-(SP) bsr xbios lea 20(SP),SP rts scrdmp: move.w #$14,-(SP) bsr xbios addq.l #2,SP rts cursconf: move.w D0,-(SP) move.w D1,-(SP) move.w #$15,-(SP) bsr xbios addq.l #6,SP rts settime: move.l D0,-(SP) move.w #$16,-(SP) bsr xbios addq.l #6,SP rts gettime: move.w #$17,-(SP) bsr xbios addq.l #2,SP rts bioskeys: move.w #$18,-(SP) bsr xbios addq.l #2,SP rts ikbdws: move.l A0,-(SP) move.w D0,-(SP) move.w #$19,-(SP) bsr xbios addq.l #8,SP rts jdisint: move.w D0,-(SP) move.w #$1A,-(SP) bsr xbios addq.l #4,SP rts jenabint: move.w D0,-(SP) move.w #$1B,-(SP) bsr xbios addq.l #4,SP rts giaccess: move.w D0,-(SP) move.w D1,-(SP) move.w #$1C,-(SP) bsr xbios addq.l #6,SP rts offgibit: move.w D0,-(SP) move.w #$1D,-(SP) bsr xbios addq.l #4,SP rts ongibit: move.w D0,-(SP) move.w #$1E,-(SP) bsr xbios addq.l #4,SP rts xbtimer: move.l A0,-(SP) move.w D0,-(SP) move.w D1,-(SP) move.w D2,-(SP) move.w #$1F,-(SP) bsr xbios lea 12(SP),SP rts dosound: move.l A0,-(SP) move.w #$20,-(SP) bsr xbios addq.l #6,SP rts setprt: move.w D0,-(SP) move.w #$21,-(SP) bsr xbios addq.l #4,SP rts kbdvbase: move.w #$22,-(SP) bsr xbios addq.l #2,SP rts kbrate: move.w D0,-(SP) move.w D1,-(SP) move.w #$23,-(SP) bsr xbios addq.l #6,SP rts prtblk: move.l A0,-(SP) move.w #$24,-(SP) bsr xbios addq.l #6,SP rts vsync: move.w #$25,-(SP) bsr xbios addq.l #2,SP rts supexec: move.l A0,-(SP) move.w #$26,-(SP) bsr xbios addq.l #2,SP rts puntaes: move.w #$27,-(SP) bsr xbios addq.l #2,SP rts blitmode: move.w D0,-(SP) move.w #$40,-(SP) bsr xbios addq.l #4,SP rts ;************************************************************************ ;* Allgemeiner Xbios-Einsprung, welcher alle Register rettet (auer D0) * ;* ACHTUNG! Sonst knnten die Register D0-D2/A0-A2 zerstrt werden * ;************************************************************************ xbios: move.l A0,D0 lea regsave(PC),A0 movem.l D0-D7/A1-A7,(A0) move.l (SP)+,-(A0) ;Rcksprungadr retten trap #14 movea.l D0,A0 ;Fehlermeldung retten movem.l regsave(PC),D0-D7/A1-A7 exg A0,D0 move.l retsave(PC),(SP) rts retsave: DS.L 1 regsave: DS.L 15 dE8عz:z˱jTR+'+82>,6-\AYBQ/07#<5)8EA2CޘM׳ !G&\~L(^^!g}(L ^̍S4t G!g[f G&[Nס G3=ޑƛZ׳ G&3[N&JJJ&JFB@"0 " *.(F&. $ $ .  o<| Hz?<&NN\BgJ@f/?<1NAA &H"P gCE fg&I"Q`E$ pNu&pNuXBRAHFx@L/:NuUSERown_idvektor_init_exitset_inold_vec/set_outvektor_looppxbra_vektor own_xbra7F** Beispiel fr das XBRA-Protokoll$ ** (fr vektorverbiegende Programme, siehe ST-Magazin 10/88 & 12/88) **D ** Mein Dank gilt an dieser Stelle Marcel Waldvogel aus der Schweiz. ** Er machte mich darauf aufmerksam, da ich nur eine Ebene tief suche. ** Dieser Fehler ist nun behoben.% **D ** Dank auch an Uwe Kuhring fr das Erkennen von allen weiteren Fehlern ** So langsam gibt es nicht viel mehr Mglichkeiten, was ich noch ** falsch machen kann.... **D ** 1990 by -soft, written by Markus Fritze 22.10.1990 00:54 *F*;Fast-Load (siehe 68000er 11/89);ID der eigenen Routine (siehe XBRA-Protokoll);Wird patchen den VBL-Vektor;Basepageadresse vom Stack holen;Gre der Basepage = 256 Byte;+ Gre des TEXT-Segments;+ Gre des DATA-Segments;+ Gre des BSS+Segments = Programmlnge;Superexec(vektor_init) - Programm einklinken;Pterm0()-Functioncode oder Fehlercode;Ausgeklinkt?;Ja, dann Ende mit Pterm0();Gre des gesamten Programms;Ptermres() bzw. Pterm0()F** Vektor gem des XBRA-Protokolls belegen, bzw. wieder freigeben *F*;Basisadresse des Vektors (z.B. VBL);Vektoradresse merken;den Vektor erstmal auslesen;ein Null-Vektor => Listenende => einklinken;Zeiger hinter das Protokoll!?!;Zeiger auf den XBRA-Header;XBRA-Protokoll erkannt?;Nein => sofort einsetzen;eigene Routine schon installiert?;wenn ja, dann nun ausklinken;letzte Vektoradresse merken;Zeiger auf die tiefere Ebene;Protokoll testen;Zeiger auf den XBRA-Header;alte Vektoradresse merken;eigene Routine einklinken;Flag fr das Einklinken setzen;Folge-Routine in vorherigen Vektor;Flag fr das Ausklinken setzenF** Hier beginnt nun unsere eigene Routine *F*;XBRA-Protokoll-Kennung;Eigene Kennung;Die alte Vektoradresse;Sicher ist sicher .;nicht geistreich, aber schn;Register wieder zurck;Zeiger auf die alten Routine;und anspringenDQ gOQDg F @g F!GGg F~Dh FiFi F 0hFA@=k G@@hF " "g F""qFv F__p FU J J U Pg FU J g F_ _  g FBBRBBW(*(WgF~Fh F j F?@@?h F P 1h FAD$ABgF@PhF* *g F**pFORMILBMANHD(@DLTA@4ACp0  sd]F@@ b FĎp p pZO  hFAAhF3s3888050888h F|0 00 h FLJiF; Procedura inicjujca zapis sektorw na dysk ; z pamici Cache. inicjuj_zapis: move.l wskaznik_bpb(pc),a4 move.l wskaznik_listy(pc),a3 moveq #-1,d6 kolejny_element: btst #0,1(a3) ;sektor do zapisu? bne.s zapisz_wybr_sekt cmp.l d6,8(a3) beq.s koniec_listy move.l 8(a3),a3 bra.s kolejny_element koniec_listy: rts BSS DMA_lock: ds.w 1 AT_lock: ds.w 1 g Gg 6dD@h A @@h > $$ i< (Ɛ D@j :DD@@@uMqJ( ` (!@$ ! fH B@ `g G g 6bR""Lh A""BBƒBch > %TTPi< HHBB@B@@H@K֨ (TPj :T((,T@@@uFORMILBMANHD(@DLTAj@ FCP