----> CODERS.GER-MAG 4/97 <---- [============================================================================] Editorial [============================================================================] Hallo Da bist du heute morgen aufgestanden um wie jedes Jahr am Nikolaus eine Tafel Schokolade aus deinem Stiefel zu ziehen , und was ist das ... Eine Tafel Schokolade wie jedesmal , aber irgendwas scheint da noch ganz tief im Stiefel zu stecken. Also greifst du noch mal rein ... Und was ist dass ? WAU !!! Das ist ja das coolste Channelmag auf der Welt ... (#Coders.ger ist ja auch der einzige Channel der sowas hat) Die Tafel schoko fliegt gleich in ein Eck und wirfst einen blick ins Inhaltverzeichnis. Natuerklich faellt dir gleich unsere neue Rubrik Interview auf die du sofort in dich hinein saugst. Danach beschaeftigst du dich mit NEWS WEB und FUN Corner (der zwar nicht viel zu lachen in sich birgt) Und dann liesst du unsern besonderst grossen Weihnachts C Kurs, und schreibt noch schnell ne mail wie cool du das Coders.ger Mag findest und fragst an ob du nicht auch was dafuer tun kannst ... ps : Frohe Weihnachten und ein bugfreies neues Jahr [Die Redaktion] -----------------------------------------------------------------------------/ [============================================================================] Inhalt [============================================================================] LESERBRIEFE : WERBUNG : NEWS : #CODERS.GER : Wie man das Channelmag bekommen kann Legal Stuff oder Wie ich einen Artikel einsende HARDWARE CORNER : FUN CORNER : Spruch des Monats NET CORNER : Interessante WWW Seiten TIPS&TRICKS : INTERVIEW : Interview mit Melcom/Crystal KURSE : C KURS fuer Einsteiger (Teil 3) Hugi Assembler KURS (Teil 2) -----------------------------------------------------------------------------/ [============================================================================] Leserbriefe [============================================================================] Naja, ich lass mich da jetzt nicht drüber aus, aber eigentlich ist ein Test über so wenig Testdaten etwas unfair. Zumal mein absoluter Lieblingspacker nicht aufgeführt wurde. Die Krönung der Packkunst ist für mich immer noch JAR mit den Parametern -m4 (gut, das dauert etwas länger dann..) Außerdem, wenn Ihr mal den Test macht, dann versucht doch mal z.B. die Watcom 11 CD zu packen.. Da machen Zip, ARJ, RAR und Konsorten schlapp. Die schaffen es nicht mal sich die Fileliste in den Speicher zu ziehen. [submissiv] Lieber Submissiv :) leider verfuegten wir zur Zeit des Tests noch nicht ueber JAR (wir haben immer noch keinen :() Trotzdem scheint JAR momentan der beste Packer zu sein (Kompression) ps: Wenn du uns ne Watcom 11 CD schickst (kostenlos :) hohlen wir den Test gern nach :):):) .... Leserbriefe , Kommentare , Fragen , Antworten??? An : The_Coders.ger_mag@usa.net bdietri@informatik.uni-kl.de -----------------------------------------------------------------------------/ [============================================================================] Werbung [============================================================================] +-+ +-+ +-+ ++ +-+ ¦ ¦ ¦ ¦ ¦+¦ ¦¦ + ¦ +-+ +-+ +-+ ++ +-+ Hugi #8 ¨ 03.08.97 600kb txt ¨ German v1.1 (09.08.97): printer bug removed ----------------------------- Inhaltsverzeichnis: ---------------------------- Allgemeines Editorial...............................................................Adok Das etwas andere (?) Vorwort............................................Adok Hall of Comments.....................................................diverse Addy-Liste..............................................................Adok How to support us?......................................................Adok Computer Szene-News..............................................................Adok Neue Releases Juli-September 1997.......................................Adok NoLogic monthly group infox 9-10/97.............................Black Shadow Die Evulution-Story.....................................................Adok Fighters von MoS-Software...............................................Olli E-Mail und Snailmail - zwei Schreibstile im Vergleich...................Adok Schreibstile im Vergleich II............................................Adok Wie werde ich "Kinderporno-Händler", ohne es zu ahnen...................Cydo Liftoff stellt sich vor und testet sein Notebook.....................Liftoff Leser kommen zu Wort..................................................Kaktus Lords of the Realm II - Der Bericht..................................Mr.M!ke Ich und mein System - Wahre Erlebnisse..........................Black Shadow Zeitschriften und Diskmags Berichtigung des Artikels über CHIP 6/97 aus Hugi #7.............Jabberwocky D.E.R. - Disc EDV Report (aus dem Jahr 1990).....................Jabberwocky Games illu.......................................................Jabberwocky Was Zeitschriften so treiben und schreiben 2.....................Jabberwocky Humor und Satire Witze 2..............................................................LeidPen Dr. Dietstein 6.................................................Pater Noster Interview mit dem wahren Programmierer von Windoofs 95..........Black Shadow Science Jokes 2.........................................aus diversen Quellen Die Schwarzweiß-Klinik 4........................................Pater Noster Grenzenlose Lamerei 3...................................................Adok Die wahnsinnigen Abenteuer des Raumschiffs MS-DOSe..............Black Shadow Stories und Poesie Borkland-Roman 2: Im Turm des Klyda...................................Muffin Der Eismensch..................................................Helmut Schida Ich hätt' sicher gewonnen......................................Helmut Schida Die Jo-Saga: Das Alter der Frauen..............................Helmut Schida Die Jo-Saga: Dr. Dr. Dr. Jo....................................Helmut Schida One night stand....................................................Lois Abel Die vierte Serie...............................................Helmut Schida Sonntagmorgen-Symphonie........................................Helmut Schida Programmieren Adok's Way to Assembler 7...............................................Adok Adok's Way to C Folge 5 (oder etwa nicht...?)...........................Adok Die Pascal-Page......................................................Mr.M!ke Der Rollladeneffekt.....................................................Adok Wahlfreier Zugriff auf Textdateien in Pascal......................Bücherwurm Fixe Tricks und Tips mit Grips Nr. 16................................LeidPen Hugi-Leser unter sich Hugi-Charts Volume #1...................................................Adok Die Laber-Rubi: Informationen........................................diverse Die Laber-Rubi: Fragen, Antworten und Diskussionen...................diverse Die Laber-Rubi: Scene-Umfrage........................................diverse Steckbrief von Mr.M!ke...............................................Mr.M!ke Steckbrief Version 3 von Muffin.......................................Muffin Die Schöpfungsgeschichte Von der Antike ins Mittelalter..........................................Adok Sonstiges Auflösung von "Can stay ouse dough?"....................................Adok Ein Realitätsbericht......................................Muffel & Schnurfin Drecksnazis!............................................................TOXO Die Hemden aus Berlin.................................................Muffin Mr. Laurel & Mr. Hardy - eine Legende..............................Schnurfel Menschlichkeit..........................................................TOXO Lustige Musik, die sowieso keiner hört..................................TOXO Eine Stunde bei Frau Spier, ein Graul, das glaube mir!................Kaktus Chronik der Vampire.....................................................TOXO Das Leben von Ali Alltag..............................................Muffin GeZ vs. Marius..........................................................Adok Der Rest der Welt Last Resort - Credits...................................................Adok Impressum......................................................Adok & Kaktus ------------------- News (nach dem Erscheinen von Hugi #8): ------------------ *) Hugi #8 erschien am 3. Oktober (als ob wir das noch nicht gewußt hätten ;) ). *) Am 18. Oktober erschien eine überarbeitete Version der ersten sieben Folgen von Adok's Assembler-Kurs als Plain-ASCII-Textfile. *) TOXO läßt ausrichten, daß er zur Zeit "nix tun kann", weil er weder Geld noch Compi hat. XXX kann ebenfalls nix tun, weil sein Monitor kaputt ist. *) Mr. SEQ jointe die Hugi-Crew. Er betreut die brandneue Online-Version des Hugi (http://www.geocities.com/siliconvalley/bay/6096) und wird vermutlich auch für die musikalische und grafische Untermalung des DOS-Hugi sorgen. *) Die Group Magic Bits Software Development, der auch Muffin angehörte, hat sich aufgelöst. Nachfolgegroup ist Cyberdream. *) XXX beabsichtigt, sein Handle zu ändern. Es stehen mehrere Handles zur Wahl, Adok soll für ihn eines davon aussuchen. :) *) Adok (und nicht Mr.M!ke, wie ursprünglich gemeldet - der ist nämlich mit seiner neuen Group Way-X und ihrem Strategiespiel Path of Mankind beschäftigt) codet an einem neuen Magsystem. Allzu viel wird jedoch noch nicht verraten, denn man soll ja nichts verschreien. Die Muzax wird von Mr. SEQ kommen, die GFX wahrscheinlich auch. *) Wegen der Arbeiten am neuen Magsystem, das schon in Hugi #9 eingesetzt werden soll, wurde der Erscheinungstermin von Hugi #9 vom 1. Dezember auf ...hm... auf den Tag verschoben, an dem das Magsystem fertig ist. -------------------- Für unsere lieben Einsteiger: FAQ ----------------------- Q: Was ist Hugi? A: Hugi ist ein Diskmag. Q: Diskmag??? Was ist das? A: Ein Diskmag ist ein Magazin auf Diskette (wow, wie geistreich). Q: Aha, und was ist eine Diskette? A: ...argh... (Stunden vergehen) Q: Aha, jetzt weiß ich, was eine Diskette, ein Speichermedium, Daten, Diskettenlaufwerk, DOS, Computer usw. ist. Nun, also zurück zum Thema: Was ist Hugi? A: ...grmpf... Guck' ihn dir doch einfach einmal an...: http://home.pages.de/~hugi/ Hugi ist Freeware, also brauchst du diesbezüglich keine Bedenken zu haben. Q: Was bedeutet Freeware? A: ...grummel... Hugi ist Freeware, das heißt, du kannst und SOLLST ihn in unveränderter Form frei kopieren, weitergeben, in Mailboxen uploaden blablabla. Alle Mitarbeiter am Hugi arbeiten ehrenamtlich, also nix Kommerz. Q: Äh, ja, gut... und was ist eine Mailbox? A: AAAAAAAAAAAAAAAAAAAARRRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGHHHHHHHHHHHH!!!!!!!!!! (Ach, wie kindisch wir doch sind...) -------------------- Aktueller Memberstatus der Hugi-Crew: ------------------- handle | profession (+ writing) | additional comment ---------------------------------------------------------------- adok | code (main), editing (main) | meet me on #coders.ger mr.m!ke | code (utils) | working on a civ2-clone mr. seq | music, gfx, editing (online) | sometimes on #coders.ger, too muffin | --- none --- (writing only) | founded a new group (cyberdream) toxo | code (intros) | computer- & homeless :( xxx | --- none --- (writing only) | screenless :( any questions? write to adok@blackbox.at! Ende der Werbung - zumindest für diesmal! :) -----------------------------------------------------------------------------/ [============================================================================] +++ News +++ News +++ News +++ News +++ News +++ [============================================================================] --[Intel: Bug im Pentium II entdeckt]----------------------------------------- Nachdem vorletzte Woche ein Fehler in der Cyrix-CPU entdeckt wurde, gibt sich jetzt auch Intel die Ehre. Bei der Befehlsfolge "F0 0F C7 C8" steht sowohl der Standard-, als auch der MMX-Pentium nicht gut da. Der Rechner bleibt stehen und muß neu gestartet werden. Obwohl böswillige Programmierer Abstürze provozieren könnten, stellt der Bug trotzdem keine echte Bedrohung dar, da Standardprogramme, die durch einen Assembler compiliert wurden, diesen Fehler nicht enthalten können. Der wunde Punkt blieb von Intel bisher unkommentiert. Bug im Pentium? Intel schweigt sich aus http://www.intel.de/deutsch/PentiumII/home.htm -----------------------------------------------------------------------------/ --[Pentium-Bug jetzt beseitigt]----------------------------------------------- Bug im Pentium und Pentium MMX. Der Fehler läßt sich laut Intel durch eine Software-Sequenz unschädlich machen. Nun müßten die Betriebssystem- Hersteller dafür sorgen, daß der Bugfix in die jeweiligen Plattformen integriert würden. Eine elegante Lösung: statt hunderttausende Chips zurückzurufen, werden einfach die Software-Hersteller zu einer Zusammenarbeit überredet. Für Linux existiert bereits ein Patch. http://support.intel.com/support/processors/pentium/ppiie/index.htm -----------------------------------------------------------------------------/ --[Preisknüller-Notebooks bei Aldi]------------------------------------------- Ab sofort können Sie bei Ihrem Einkauf im Aldi neben Joghurt, Dosenobst und Milchtüten auch HighTech einpacken: Für begrenzte Zeit verkauft der Konzern in seinen Fillialen billige Notebooks. Die Geräte sind mit 32 MByte RAM, 133er MMX-Pentium und vorinstalliertem Windows ausgestattet. Ganze 2998 Mark soll der Spaß kosten. Kein schlechtes Angebot. Service und Ersatzteil-Lieferung übernimmt ein externer Spezialist. Billig-Notebooks bei Aldi http://wiesbaden-online.de/old/96/05/03/topnews/aldi2.html -----------------------------------------------------------------------------/ --[Symantec hält die Festplatte rein]----------------------------------------- Ein altes Problem vieler Windows-User scheint endlich gelöst. Der neue Norton Uninstaller Deluxe von Symantec soll laut Herstellerangaben mit jedem Programm-Fragment zurechtkommen. Nach einem mißglückten Installationsversuch versetzt der InstallGuard den Rechner in seinen Urzustand zurück, bevor der Uninstaller seine Arbeit verrichtet. Die Besonderheit ist, daß nicht nur jedes Fragment entfernt werden kann, sondern auch Programmteile die schon vor der Installation des Uninstaller Deluxe, verschütt gegangen sind. Der Norton Uninstall Deluxe ist ab sofort für 99 Mark erhältlich. Uninstaller von Symantec http://www.symantec.com/region/de/press/n971103a_de.html -----------------------------------------------------------------------------/ --DER SiEBTE HiMMEL--------------------------------------------------[melcom]- o Das Internet vertieft für Schüler und Studenten nutzbar machen - das haben sich zwei Abiturienten vorgenommen. So liegen etwa Referate als vorlage vor, die direkt online gelesen und gespeichert werden können. Natürlich nur zur persönlichen Verwendung... http://www.schulhilfen.com -----------------------------------------------------------------------------/ --DAS BUCH DER BüCHER "David Flanagan: JavaScript"-------------------[melcom]- o Bücher zur Web-Programmierung gibt es mittlerweile wie Sang am Meer. Als rundum empfehlenswertes Lern- und Nachschlagewerk sticht "JavaScript" von David Flanagan aus der Masse heraus. Auf 700 Seiten wird nicht nur ein leicht lesbarer Einstieg in die "HTML-Erweiterungs-Sprache" offeriert. Auch "Profi-Themen" wie "JavaScript und Java", "Techniken für Kompatibilität" oder "Sicherheit in Javascript" finden eine kompetente Behandlung. Unterstützung für den "Entwickleralltag" bietet ein umfang- reicher Referenzteil, der sämtliche Javascript-Objekte, -Methoden und -Event-Handler beschreibt. Auf die Unterschiede zwischen den verschie- denen Browsertypen wir ebenso eingegangen wie auf "Programmierfußangeln", die Netscape und Microsoft in Form von Sofwarebugs ausgelegt haben. Titel: David Flanagan: JavaScript -Das umfassende Referenzwerk (2.Auflage), 69.- Mark, ISBN 3-930673-56-8 Fazit: Kaufen, Kaufen... Wünscht es Euch zu Weihnachten. -----------------------------------------------------------------------------/ --Cyberpolizist überwacht Hacker-------------------------------------[melcom]- o Vor Hackerangriffen soll ein neues System von Network General ab Dezember unternehmensinterne Netzwerke schützen. Sobald Hacker in das Firmennetz eingringen, registriert die Serversoftware deren Aktivitäten und kann sie sofort dem Systemadminstrator via E-Mail, Pager oder Bildschirmmeldung mitteilen. http://www.nbc.com Fazit: Ich lach mich kaputt! -----------------------------------------------------------------------------/ [MELCOM] [============================================================================] #Coders.ger [============================================================================] Wie man das Channelmag bekommen kann Wie die meisten von euch wissen hat der Channel #Coders.ger ein Homepage im WWW. (http://home.pages.de/~coders.ger) Seid ihr Vieluser dieses Channels koennt ihr euch dort in den Mailveteiler eintragen und bekommt neben dem Mag noch andere Anfragen und Informationen von Channelusern. Wenn ihr dieses aus irgendeinem Grund nicht tun wollt gibt es noch die Moeglichkeit das Mag mit Hilfe einer Mail zu abonnieren. Schick eine Mail an : The_Coders.ger_Mag@usa.net Ins Topic : "ich möchte bitte gerne das Mag beziehen, wenn es nicht zuviel Umstände macht und ich würdig genug bin dieses göttliche Teil zu erhalten" ;) Oder einfach "Mag her!" und in den Body die Emailaddresse an die ihr es geschickt haben wollt. Legal Stuff oder Wie ich Artikel einsende Mit Erhalt dieses Mag habe ich mich verpflichtet fuer jede jemals erscheinende Ausgabe des Coders.ger Channelmags mindestens einen Beitrag zu leisten, d.h. einen Artikel zu schreiben. Diese Verpflichtung gilt ueber den Tod hinaus. Artikel an : The_Coders.ger_Mag@usa.net P.S.: Die Artikel sollten in der Form in der ihr sie uns Schickt frei kopierbar sein. -----------------------------------------------------------------------------/ [============================================================================] Fun Corner [============================================================================] Spruch des Monats : "Chatten das ist neudeutsch fuer talken" SAT 1 Moderator Beckmann -----------------------------------------------------------------------------/ [============================================================================] Net Corner [============================================================================] --[Einige Links zum Thema Emulator und kostnix]------------------------------- o http://home2.swipnet.se/~w-28929/ o http://www.iscs.nus.sg/~chankumh/EMU/emulator.html o http://app.nexus-online.com/lazarus/ o http://home6.inet.tele.dk/aqvist/uae/ o http://www.geocities.com/SiliconValley/Bay/3211/ o http://phenomena.viaduct.se/emulators.html o http://www.geocities.com/SiliconValley/Heights/9021/DUAE_GUS.html o http://www.netrunner.com.br/dosuae/ o http://www.csc.liv.ac.uk/~u5ms/pp/index.html o http://www.fatal-design.com/desktop/ o http://romcity.simplenet.com/ o http://www.geocities.com/TimesSquare/Castle/7587/ o http://emu.internexus.net/GameShock/ o http://www.focus-asia.com/home/magicrat/emulation/index.html o http://www.enterspace.org/world/ o http://pages.infinit.net/quake/3dw/psxemu.htm o http://homer.span.ch/~spaw1015/L8R/index.html -----------------------------------------------------------------------------/ --[Einige Links zum Thema: WEB creation]-------------------------------------- -Gifs -buttons, backgrounds etc. o http://www.kostenlos.de/internet/home.htm Kostenlos.de o http://people.wiesbaden.netsurf.de/~oliver Oliver -Web Grafiken selber erstellen - hier einige hilfen dazu o http://privat.schlund.de/graphic/ Marcos Homepage o http://www.matanet.com/imagine Metanet -Telekom Dfü Installation o http://home.t-online.de/home/albert.rommel/ppp.htm Installationshinweise -----------------------------------------------------------------------------/ --[Einige Links zum Thema: html Scripts]-------------------------------------- -cgi o http://www.cgi-resources.com CGI Resources o http://www.freecode.com/index.html?matts_andafreeb Internet Source Code o http://worldwidemart.com/scripts/ Matt's Script Archive o http://www.cgi-perl.com/ The CGI/Perl Cookbook -Java o http://www.gamelan.com Gamelan o http://www.jars.com Java Aplet Rating System o http://www.javashare.com JavaShare -----------------------------------------------------------------------------/ --[Einige Links zum Thema: Shareware Archives]-------------------------------- o http://www.gauss-is.com/tools/ Die Internet tools site o http://www.freeware.com Freeware.com o http://www.freewarenow.com Freewarenow.com o http://www.regio3.de/nonags Nonags o http://www.nonags.com Nonags.com o http://www.treiber.de Treiber.de o http://tucows.rz.fh-hannover.de/ Toucows (hannover) o http://www.shareware.com Shareware.com -----------------------------------------------------------------------------/ --[Einige Links zum Thema: Game & Fun]---------------------------------------- -Tools, Updates, Fun, etc o http://www.deathmatchmaker.com DeathMatchMaker o http://www.gamers.org DoomGate o http://www.gamewoks.de GameWorks o http://www.penthousemag.com/duke/index.html Geilste Duke Level wo gibt o http://www.gamecenter.com GameCenter o http://www.gamesdomain.co.uk Games Domain -----------------------------------------------------------------------------/ --[Einige Links zum Thema: Programming]--------------------------------------- -sound o http://www.dc.ee/Files/Programm.Sound Programming.Source.Sound -compilers o http://www.idiom.com/free-compilers/ Free Compilers and Interpreters o http://www.eg3.com/compiler.htm Compiler Internet Resources o http://www.cs.vu.nl/~jprins/tp.html Turbo Pascal Programmers Page o http://www.inf.fu-berlin.de/lehre/kurse/cplusplus/Skript.book.html Kurse o http://www.hoaxarts.org/crystal/ Kurse -gfx o http://www.dimension3d.com/ Dimension 3D o http://www.uni-essen.de/~hrz030/3d/ 3D-Formate o http://www.dcs.ed.ac.uk/%7Emxr/gfx/ Graphic File Formats o http://www.vesa.org/ VESA o http://www.hoaxarts.org/vegas/ 3D, Direct X -----------------------------------------------------------------------------/ --[Einige Links zum Thema: Hardware kauf/bestellung]-------------------------- o http://www.magic-eye.com Magic-Eye der Hardware Laden in Garbsen -----------------------------------------------------------------------------/ [============================================================================] Interview [============================================================================] Hier also mein kleines Interview mit Melcom^HoaxArts^Crystal. Achja, ich bin btw dynamite!^tlp^rmtz^imc^ctl^d4n. Nur damit ihr wisst, wem ihr den Aufwand zu verdanken habt. ;) Jetzt aber los! So melcom, dann stell dich erstmal kurz vor... Mein realname ist Andreas Thomas Urban, ich bin 25 Jahre alt (leider) und wohne in Garbsen/Hannover. Seit wann bist du in der Szene ? ich bin seit 1992 in der Demoszene, frueher auf dem Amiga, mittlerweile versuche ich mich aber auch auf dem PC. In der Trackerszene bin ich aktiv seit 1986, damals natuerlich auch auf dem Amiga. 1994 bin ich dann voellig auf den PC umgestiegen. In welchen Gruppen bist du momentan ? Hoax Arts und Crystal. Welche Ziele haben die beiden Gruppen ? Hoax Arts ist eine reine music/art group, ohne coder. Crystal ist gerade im Aufbau und wird eine Demogruppe werden. Ein paar Fragen zu crystal. Seit wann existiert crystal ? Crystal gibt es seit ca. 1990 als Demogruppe auf dem Amiga, aber seit ein paar Monaten wurde die Gruppe auf dem Amiga komplett aufgeloest und formt sich jetzt auf dem PC neu. Welche member sind in crystal und was sind ihre Aufgaben ? Einmal ich (Melcom/Hoax Arts), als website-maintainer, coder und organizer. Dann sind da noch dynamite!^tlp^rmtz^imc^d4n als coder, Rave-o-Tek/Nebula als musician, Alien/Zyklop als c64-musician und kazmeyer/Hoax Arts als gfx-man. Was habt ihr in Crystal als naechstes vor ? Viele, viele Demos natuerlich und Kurse/Hilfen fuer Anfaenger. Kommen wir zu Hoax Arts. Zunaechst moechte ich auch hier gerne wissen, welche Member in Hoax Arts sind und welche Aufgaben sie uebernehmen. Da ich gehoert habe, das ihr ziemlich International seit, koenntest du vielleicht auch noch angeben, aus welchen Laendern die Member jeweils kommen. In Hoax Arts sind coolman (USA) als musician, gfx-man und java-coder, kazmeyer (Kanada) als musician und gfx-man, traxx (Deutschland) als musician und ich (melcom) als coder, organizer, website-maintainer und musician. Was habt ihr in Hoax Arts fuer Zukunftsplaene ? Musik fuer Games, Demos und Intros komponieren, HTML-Seiten erstellen, Website-Maintaining machen und vielleicht sogar noch etwas coden. Mir ist zu Ohren gekommen, dass du jetzt auch Musik fuer die legendaeren Erfinder der 3D-Shooter machst. Wie bist du zu deinem Job bei Id gekommen ? Ich hatte ja schon damals Songs fuer Epic Megagames gemacht und dadurch haben mich Id angeschrieben, ob ich nicht auch einen Song fuer die Invitation Demo ihres neuen Quake 2 schreiben koennte. Epic Megagames ? Wie bist du denn dazu gekommen ? Ich hatte einige Music Disks an die Power Play geschickt. Die muessen die Jungs von Epic Megagames wohl gehoert haben, denn sie haben mich daraufhin kontaktiert, ob ich nicht die Musik fuer ihr neues Spiel "Space Invaders" machen koennte. Da habe ich natuerlich zugesagt. Was ich noch mitbekommen habe ist, dass du jetzt auch Lieder fuer Plastic, einer franzoesischen Spielefirma, die fuer Disney arbeitet, schreibst. Ist da was dran ? Ja! Definitiv! Ich soll 2 tunes fuer ihr "Hercules" Spiel schreiben. Mehr kann ich dazu aber jetzt noch nicht sagen, da es noch strengster Geheimhaltung unterliegt. ;-) Deine Tracker-Vorbilder... ...sind Purple Motion/Future Crew, Falcon/Pulse und Zodiak/FM. Und deine absoluten Lieblingslieder ? Da gibt es viele. Aber die Lieder, die ich wohl am meisten hoere, sind "Astraying Voyages" von Purple Motion und "Her Beauty Face" von dir und mir. ;-) Mit welchen Trackern machst du deine Musik ? Jetzt mit dem Impulse Tracker von Pulse, frueher aber mit dem Scream Tracker von PSI. Bin also der typische IT umsteiger. ;-) Machst du deine Samples alle selber ? Teils, teils. Einige mache ich selber. Wenn mir aber mal welche sehr gut gefallen, rippe ich die auch schonmal. [dynamite!] -----------------------------------------------------------------------------/ [============================================================================] Kurse [============================================================================] --[C - Kurs Teil 3]----------------------------------------------------------- Von if bis else In Teil 3 unseres "beliebten C Kurses" (1 Leser) gehen wir auf Schleifen und Verzweigungen ein. if - then - else Betrachten wir als erstes die wohl allen bekannte if Anweisung. if (Ausdruck) Anweisung; ist wohl die einfachste Form des if Befehls in C. Wenn der Ausdruck wahr ist wird die Anweisung ausgefuehrt sonst wir nichts getan. Beispiel 3.1 int main () { ... if (Zahl10 als wahr erkannt wird. (0 ist false) Sollen in dem Anweisungsteil mehr als eine Anweisung stehen setz man die befehle in einen Block (also { 1.anw; 2.anw; 3.anw ; ... ; } ) In allen bis jetzt behandelten Beispielen war der Falsezweig leer. Will man auch im Fall das die Bedingung falsch ist einen Aweisungsblock ausfuehren benutzt man das Schluesselwort else. Beispiel 3.3 ... if (zahl1>= &= ^= |= Der einzige wichtige Zuweisungsoperator ist das Gleichheitszeichen =, die uebrigen Operatoren bieten nur eine verkuerzte Schreibweise. Beispiele: x = 3; /* x erhaelt den Wert 3 */ x = 1 + 1; /* x erhaelt den Wert 2 */ x*= 1 + 1; /* Kurzform von x = x * (1 + 1) */ x/= 1 + 1; /* Kurzform von x = x / (1 + 1) */ 4.4. Arithmetische Ausdruecke Arithmetische Ausdruecke sind u.A. die Vorzeichen + und -, aber auch die inkrement- und dekrementoperatoren ++ und --, sowie die "normalen" binaeren Operatoren + - / * und %. Bei der Auswertung der binaeren Operatorn + - / * und % wird uebrigens gg. eine Typanpassung vorgenommen. Die Sache mit den Vorzeichen sollte ohne grosse Erklaerung klar werden. Schreibt man vor einen Operanden ein -, so wird sein Wert negativ. Schreibt man also vor eine 3 ein -, so ist ihr Wert -3. Tabelle 4.1: Binaere Ausdruecke +----------------+---------------------------------------------------+ | Ausdruck | Wert / Wirkung | +----------------+---------------------------------------------------+ | x + y | Addition von x und y | | x - y | Subtraktion von x und y | | x * y | Multiplikation von x und y | | x / y | Division von x und y. Bei Integer werden die | | | Nachkommastellen einfach abgeschnitten. | | x % y | Modulo von x und y (der Rest einer Division). | | | x und y muessen Integer sein. | +----------------+---------------------------------------------------+ 4.4.1. Inkrementieren und Dekrementieren Mit ++ und -- kann man jede beliebige Variable um 1 erhoehen oder erniedrigen. Auch auf Pointer ist das anzuwenden, doch wird dann nicht (wie vielleicht erwartet) die Adresse, auf die der Pointer zeigt einfach um 1 erhoeht. Beim inkrementieren eines Pointers zeigt der Pointer automatisch auf das naechste objekt. Zeigte er also beispielsweise vorher auf einen Integer, so wird er beim inkrementieren gleich um 2 erhoeht (da ein Integer 2 bytes belegt) um auf das naechste Objekt zu zeigen. Man unterscheidet auch zwischen Praefix- und Postfix-Notation. Bei Praefix- wird die Variable VOR der eigentlichen Operation erhoeht und bei Postfix-Notation NACH der Operation. Beispiel: int a,b; b = 1; a = ++b + 1; /* b=2, a=3; Praefix-Notation */ b = 1; a = b++ + 1; /* b=2, a=2; Postfix-Notation */ b = 1; b = ++b; /* auch moeglich; b=2; Praefix-Notation */ 4.5. Vergleiche In C gibt es folgende Vergleichsoperatoren: > >= < <= == != Auch die logischen Verknuepfungen gehoeren zu den Vergleichen: && || ! Alle Vergleiche liefern einen integer zurueck der entweder den Wert 0 fuer false oder einen Wert ungleich 0 fuer true besitzt. Tabelle 4.2: Vergleichsoperatoren +----------------+---------------------------------------------------+ | Ausdruck | Wert / Wirkung | +----------------+---------------------------------------------------+ | x < y | true, wenn x kleiner y | | x > y | true, wenn x groesser y | | x <= y | true, wenn x kleiner gleich y | | x >= y | true, wenn x groesser gleich y | | x == y | true, wenn x gleich y | | x != y | true, wenn x ungleich y | +----------------+---------------------------------------------------+ | a && b | true, wenn a UND b wahr sind (logisches UND) | | a || b | true, wenn a ODER b wahr sind (logisches ODER) | | !a | true, wenn a false ist | +----------------+---------------------------------------------------+ 4.6. Bit-Ausdruecke Auch einzelne Bits lassen sich in C manipulieren. Dafuer gibt es die vier Bit-Operatoren &, |, ^ und ~, zu denen auch die Shift-Operatoren << und >> gehoeren. Tabelle 4.3: Bit-Ausdruecke +----------------+------------------------------------------+ | Ausdruck | Wert / Wirkung | +----------------+------------------------------------------+ | x & y | Bitweises UND von x und y | | x | y | Bitweises ODER von x und y | | x ^ y | Bitweises exklusives ODER von x und y | | x ~ y | Einerkomplement von x (Inversion) | +----------------+------------------------------------------+ | x << y | Links-Shift von x um y Stellen | | x >> y | Rechts-Shift von x um y Stellen | +----------------+------------------------------------------+ Beispiele: unsigned char i; /* 8-bit, ohne vorzeichen */ i = 1; /* Bitmuster: Ergebnis: */ i = i << 2; /* 0000 0001 << 3 8 */ i = i >> 2; /* 0000 1000 >> 2 2 */ i = i | 5; /* 0000 0010 | 0000 0101 7 */ i = i & 3; /* 0000 0111 & 0000 0011 3 */ i = i ^ 5; /* 0000 0011 ^ 0000 0101 6 */ i = ~i; /* ~ 0000 0110 = 1111 1001 249 */ 4.7. Konditional- und Kommaausdruecke Konditionalausdruecke werden mit ? und : gebildet. Kommaausdruecke natuerlich mit dem Komma (,). 4.7.1. Kommaausdruecke Das , hat, abhaengig vom Kontext, unterschiedliche Bedeutungen. Als Operator wird es aber dazu benutzt, 2 Ausdruecke hintereinander auszuwerten. Beispiel: for(x=0; y>0; x++,y--); Damit wird bei jedem Schleifendurchlauf x um eins hoch und y um eins herunter gezaehlt. 4.7.2. Konditionalausdruecke Mit Konditionalausdruecken kann man jeweils einen von zwei Ausdruecken auswerten lassen. Am Besten zuerst das Beispiel: maximum = (a > b) ? a : b; /* Maximumbildung */ Ist a groesser als b, dann wird a in maximum geschrieben, ansonsten b. Allgemein bedeutet das also: Ist der Ausdruck vor dem ? wahr, so wird der Ausdruck VOR dem : ausgewertet, ansonsten der Ausdruck NACH dem :. 4.8. Prioritaeten Wie auch in der Mathematik gibt es eine gewisse Prioritaet unter den Operatoren, die festlegt in welcher Reihenfolge ein Ausdruck ausgefuehrt wird. Die uebliche Grundrechenregel "Punkt- vor Strichrechnung" und die hohe Prioritaet der Klammern () gelten natuerlich auch in C. So ergibt: (3 + 7) * 2 erwartungsgemaess den Wert 20. In der folgenden Tabelle sind alle Operatoren ihrer Prioritaet nach geordnet. In einer Zeile stehende Operatoren haben dieselbe Prioritaet. Die Assoziativitaet gibt die Richtung an, in der Operatoren und Operanden zusammengefasst werden. Tabelle 4.4: Prioritaet der Operatoren +-----------------------------------------+-----------------+ | Operator | Assoziativitaet | +-----------------------------------------+-----------------+ | () [] -> . | links -> rechts | | ! ~ ++ -- + - * & (type) sizeof | rechts -> links | | * / % | links -> rechts | | + - | links -> rechts | | << >> | links -> rechts | | < <= > >= | links -> rechts | | == != | links -> rechts | | & | links -> rechts | | ^ | links -> rechts | | | | links -> rechts | | && | links -> rechts | | || | links -> rechts | | ?: | links -> rechts | | = = -= *= /= %= &= ^= |= <<= >> = | rechts -> links | | , | links -> rechts | +-----------------------------------------+-----------------+ -----------------------------------------------------------------------------/ --[Hugi s Assembler Kurs Teil 2]---------------------------------------------- Hugi Assembler Kurs Teil 2 (Folge 3) Dieser Artikel wurde uns freundlicherweise von Adok/Hugi Diskmag zur verfuegung gestellt. Der Kurs "Adok's Way to Assembler" ist Freeware. Das heisst, dass er in unveraenderter Form frei kopiert und weitergegeben werden kann. Das Copyright liegt bei Adok (Claus-Dieter Volko). (nochmals herzlichen Dank Adok) Adok's Way to Assembler Folge 3 +++ Variablen gibt es auch in Assembler! +++ Was sind Variablen? Unsere Mathelehrer würden auf diese Frage antworten: "Platzhalter für bestimmte Werte." In Assembler muß man das ein klein wenig anders definieren. Variablen sind ganz normale Speicherstellen, nur verbirgt sich ihr Offset hinter einem "Decknamen", auch Variablenname oder Bezeichner genannt. Letztes Mal lief uns einmal der Befehl MOV BYTE PTR 1000h,AL über den Weg. Mit solchen Anweisungen läßt sich eine beliebige Speicherstelle manipulieren. JEDOCH muß hier der Offset - in unserem Beispiel 1000h - als Konstante angegeben werden und daher schon beim Coden bekannt sein. Hier schaffen Variablen Abhilfe! Ein Befehl wie MOV BYTE PTR variable,AL bewirkt, daß der Speicherstelle, auf die die Variable zeigt, der Wert eines Registers zugewiesen wird. Und hier braucht sich der Coder nicht darum zu kümmern, welchen Offset die Speicherstelle hat - beim Compilieren ersetzt der Assembler automatisch die Variable durch den konstanten Offset. +++ Variablendefinition +++ Cool! Doch halt, eines fehlt noch! Bevor eine Variable verwendet werden kann, muß sie natürlich zuerst definiert werden. Das geht nach dem Schema "Name Typ Inhalt". Was 'Name' bedeutet, erklärt sich wohl von selbst. Bei 'Typ' wird es schon etwas komplizierter. Es gibt mehrere, verschiedene Typen. Die wichtigsten sind DB und DW. DB reserviert eine Speicherstelle mit der Länge von einem Byte. Das entspricht einer Zahl von 0 bis 255 bzw. einem ASCII-Zeichen. Sollten im 'Inhalt' (wie im folgenden Beispielprogramm, deshalb will ich's ja jetzt sagen ;) ) mehrere Zeichen, also ein sogenannter 'String', stehen, werden einfach so viele Bytes reserviert, wie der String Zeichen hat. DW reserviert ZWEI Speicherstellen mit der Länge von ZWEI Bytes, also einem Word. Das entspricht einer Zahl von 0 bis 65535 bzw. ZWEI ASCII-Zeichen. Last but'nt least kann man mit 'Inhalt' die Speicherstelle gleich auf einen Anfangswert setzen, ohne ihn extra mit MOV zuweisen zu müssen. Der Wert kann dabei entweder als Zahl oder als Zeichen angegeben werden. (Wird der Wert als Zeichen angegeben, so muß man ihn zwischen Anführungszeichen oder Hochkommas setzen.) Will man von dieser Option keinen Gebrauch machen, setzt man einfach ein Fragezeichen hin. Habe ich das lieb ausgedrückt? Also, ein Beispiel für eine Variablendefinition: vary DB ? (das Fragezeichen gehört dazu!) Ebenso lassen sich mit dem DB/DW-Befehl Arrays definieren. Schreibt man DB Anzahl DUP(?), wobei Anzahl für die Anzahl der Bytes, welche reserviert werden sollen, steht, wird... äh, tja, diese Anzahl von Bytes reserviert. :) Das Fragezeichen bewirkt, wie bereits gesagt, daß diese Bytes nicht initialisiert werden, sprich, der zuvor vorhandene Speichermüll stehenbleibt. Anstelle des Fragezeichens läßt sich auch ein numerischer Wert einsetzen: feld DB 10 DUP (0) Obige Anweisung etwa würde, von der Variablen feld beginnend, zehn Bytes reservieren und diese mit dem Wert 0 initialisieren. Um dieses Kapitel abzuschließen, gibt's ein Beispielprogramm. MODEL SMALL ;Kleinstes EXE-Speichermodell DATA SEGMENT ;Beginn Data-Seg ASSUME DS:DATA ;DS zeigt auf Data-Seg text DB "ASM rulez!$";Variable text DATA ENDS ;Ende Data-Seg CODE SEGMENT ;Beginn Code-Seg ASSUME CS:CODE ;CS zeigt auf Code-Seg MOV AX,SEG DATA ;Data-Seg initialisieren MOV DS,AX ; MOV AX,0900h ;Funkt. 9 MOV DX,OFFSET text ;Offset -> DX INT 21h ;String ausgeben MOV AX,4C00h ;Funkt. 4Ch, Exit-Code 0 INT 21h ;DOS-Exit CODE ENDS ;Ende Code-Seg END ;Ende des Proggys Und, wie manche vielleicht beim aufmerksamen Durchlesen des Listings bemerkt haben... Um gleich zwei Fliegen auf einen Schlag zu erwischen (wie brutal), habe ich das Programm als EXE-Datei aufgebaut. Somit werden wir gleich das Geheimnis um dieses Dateiformat lüften! Ein Programm wird mit folgenden Befehlen zu einer EXE-Datei compiliert: TASM /T/L progname TLINK progname Um EXEs zu erzeugen, entfällt bei TLINK also der Parameter /T. Nun zum Aufbau einer EXE an Hand dieses Beispiels! +++ EXE-Dateien +++ Zeile 1: MODEL SMALL Stellt das Speichermodell SMALL ein. Es ist das kleinste Speichermodell für EXE-Dateien. Zeile 2: DATA SEGMENT Der Vorteil von EXEs ist ja, daß das Programm mehrere Segmente haben kann. Hier definieren wir den Anfang des Datasegments, in dem meistens die Variablen gespeichert werden! Zeile 3: ASSUME DS:DATA Damit wird DS befohlen, auf das Dataseg zu zeigen. Das allein genügt jedoch nicht, wie wir bald sehen werden... Zeile 5: DATA ENDS Ende des Datasegs! Zeile 6: CODE SEGMENT Das kennen wir ja schon. Anfang des Codesegs. Zeile 7: ASSUME CS:CODE Und CS zeigt auf's Codeseg... chrrrr... Zeile 8: MOV AX,SEG DATA DAS IST JETZT NEU! Um DS auf's Dataseg zeigen zu lassen, genügt ASSUME nicht. Vielmehr muß man das Segment manuell an DS zuweisen. Mit diesem Befehl weisen wir das Datensegment AX zu... Zeile 9: MOV DS,AX ...und damit bringen wir das Ganze an den recht- mäßigen Besitzer, DS. Zeile 15: CODE ENDS Ende des Codesegs. Zeile 16: END Ende des Proggys. Wie ihr seht, entfällt also bei EXE-Dateien zum einen ORG 100h, zum anderen kann auf ein Startlabel verzichtet werden. Deshalb genügt es, am Ende des Programms statt END und dem Startlabel (z.B. END start) einfach nur END zu schreiben. +++ Interrupt 21h Funktion 9 +++ Nun, auch dieses Programm gibt etwas auf dem Bildschirm aus. Diesmal wird aber nicht nur ein einzelnes Zeichen, sondern ein ganzer String ausgegeben! Und, wie ihr euch wohl denken werdet... auch dieses Programm verwendet dazu einen Interrupt. Es ist Interrupt 21h Funktion 9! (Schon wieder Funktion 9, die Zahl 9 scheint wohl ein Synonym für Textausgabe zu sein.) So funktioniert diese Funktion: AH=9, DS=Segment, in dem sich der String befindet, DX=Offset des Strings. Ganz wichtig: Der String muß mit einem Dollarzeichen (Umschalt/Shift und 4 gleichzeitig drücken) enden. Dieses Zeichen wird nicht auf dem Bildschirm ausgegeben. Übrigens ist INT 21h einer der Interrupts, die von DOS zur Verfügung gestellt werden. Deshalb nennt man seine Funktionen "DOS-Funktionen". Jetzt sind auch die restlichen Zeilen des Proggys hoffentlich klar! Zeile 4: text DB "ASM rulez!$" Definiert die Variable text, in der der String gespeichert werden soll. Zeile 10: MOV AX,0900h Schreibt die Funktionsnummer in AH und löscht zum Spaß gleichzeitig AL. Zeile 11: MOV DX,OFFSET text Mit dem Operator OFFSET wird der Offset der Variablen text an DX zugewiesen. Zeile 12: INT 21h Ruft INT 21h Ufo 9 auf, die den Text ausgibt! Zeile 13: MOV AX,4C00h Funktionsnummer 4Ch... Zeile 14: INT 21h ...zum Beenden des Programms. +++ Variablen in COM-Dateien +++ In COM-Dateien Variablen zu verwenden, ist nicht ganz so einfach. Denn in COM- Dateien darf es nur ein Segment geben, das Codeseg. Was nun? Die Variablen in das Codeseg schreiben? Gute Idee, aber VORSICHT! So einfach geht das nicht! Damit ihr versteht, warum es so nicht geht, ist ein bißchen Theorie notwendig. Also: Die ganzen ASM-Befehle wie MOV werden als Mnemonics bezeichnet. Wenn man nun aus einem Assemblerprogramm assembliert, also eine COM- oder eine EXE-Datei erzeugt, werden diese Mnemonics in eine für den Compi verständliche Form umgewandelt, die OP-Codes. Dabei sind die OP-Codes jedoch nichts anderes als Zahlen, die vom Compi als Befehle interpretiert werden! Das Teuflische an der Sache ist nun, daß der Computer nicht zwischen Daten und Befehlen entscheiden kann. Wenn sich also inmitten des Codesegments eine Variable befindet, führt der Compi den Befehl aus, der den OP-Code des Inhalts der Variable hat! Hat man großes Pech und enthält die Variable OP-Codes, mit denen der Interrupt zum Formatieren der Festplatte ausgelöst wird... So schlimm wird's zwar nur selten kommen, aber auf jeden Fall ist es ärgerlich, wenn der Computer die Variableninhalte als Befehle interpretiert und somit unerwünschte Nebeneffekte auftreten. Wie kann man das umgehen? Die Antwort lautet: Ganz einfach! Man muß einfach dafür sorgen, daß die Variablen bei der Ausführung des Programms übersprungen werden. So macht es auch dieses Beispielprogramm: MODEL TINY ;Für COM-Files CODE SEGMENT ;Beginn Code-Seg ASSUME CS:CODE,DS:CODE;CS und DS zeigen auf Code-Seg ORG 100h ;Startadresse COM start: ;Startlabel JMP begin ;Sprung zu Label begin text DB "ASM rulez!$";Variable text begin: ;'Richtiger' Beginn des Proggys MOV AX,0900h ;Funkt. 9 MOV DX,OFFSET text ;Offset -> DX INT 21h ;String ausgeben MOV AX,4C00h ;Funkt. 4Ch, Exit-Code 0 INT 21h ;DOS-Exit CODE ENDS ;Ende Code-Seg END start ;Ende des Proggys Wie gehabt, erzeugt ihr daraus eine COM-Datei mit den Befehlen TASM /T/L progname und TLINK progname /T. Wenn ihr das Programm startet, wird genauso wie beim vorigen Proggy der Text 'ASM rulez!' ausgegeben. Doch schaut mal, wieviel Speicherplatz die beiden Programme benötigen! Die EXE-Datei belegt über 500 Byte (ein halbes Kilobyte), die COM-Datei... nur 16 Byte!!! Das liegt daran, daß EXE-Dateien am Anfang noch einen 500 Byte großen Header beinhalten, während COM-Dateien wirklich nur OP-Codes enthalten. Schauen wir uns nun an, wie wir das Problem mit den Variablen gelöst haben. +++ Der JMP-Befehl +++ In der 6. Zeile finden wir einen neuen Befehl! Mit Hilfe von JMP kann man ein Label 'anspringen'. Das heißt, daß der Compi die nächsten Befehle überspringt und erst nach dem angegebenen Label (in unserem Beispiel begin) fortsetzt. 'Rücksprünge' (das Label befindet sich irgendwo vor dem JMP-Befehl) sind natürlich auch möglich. JMP ist nicht der einzige Sprungbefehl - jedoch der einzige bedingungslose. JMP sagt dem Compi, daß er unbedingt zu einem bestimmten Label springen muß. Die anderen Sprungbefehle werden nur dann ausgeführt, wenn eine bestimmte Bedingung erfüllt ist. Wir werden sie noch später kennenlernen! Übrigens sind Labels auch nichts anderes als Decknamen für bestimmte Speicherstellen. Der Unterschied zu Variablen ist, daß man Labels auch anspringen kann. Weiter mit dem Programm: In Zeile 7 wird nun die Variable definiert. Dank des JMPs in Zeile 6 wird der Inhalt dieser Variable nicht ausgeführt. In Zeile 8 finden wir dann das Label, zu dem gesprungen wurde, und der Rest müßte klar sein. Bis zum nächsten Mal viel Spaß wünscht euch (immer noch) euer Adok! -----------------------------------------------------------------------------/ [============================================================================] t h e e n d [============================================================================] Redaktion ...................... Bj, ASP Newsmanager .................... Melcom writers ........................ Dynamite Melcom Bj Adok others (more writers wanted) design ......................... Melcom Copyright (c) 1997 CODERS.GER TEAM - the_coders.ger_mag@usa.net