Beiträge von Amadeus777999

    Du hast eh einiges geleistet - wahrscheinlich bist Du in ein paar Stunden oder Tagen damit fertig. Du kannst auf jeden Fall Stolz auf Deinen Forscherdrang sein!
    Solltest Du wirklich etwas vertieft Programmieren wollen, dann solltest Du trotzdem einen anderen Ansatz wählen, da Du sonst total verwirrt wirst... und dann alles hinwirfst.


    Gutes Wissen ist rar und es sich anzueigenen schwierig - selbst in Zeiten des "internets".

    Ich schreib noch etwas, vielleicht bringt Dich das ein Stückchen weiter - aber kann auch sein das ich an Deinen Fragezeichen vorbeierzähle, da es nicht direkt mit Deinem Problem zusammenhängt. Hole auch soviele weiter Meinungen(z.B. bei stackoverflow oder das TASM / MASM / NASM manual) wie möglich ein um Dich vor unabsichtlichen Fehlern zu schützen.



    Segment / "assume"
    Bezüglich der segmente - die Direktiven im assembler wie z.B. "assume" klären das die Segmente gültig sind, sprich code, daten, stack sind korrekt initialisiert und das Programm findet somit gültige Bedingungen für eine hoffentlich korrekte Ausführung vor. Wenn Dein assembler listing nicht an ein anderes Objekt, welches das Hauptprogramm stellt, andockt, dann musst Du das im assembler mittels Direktive, wie z.B. assume, regeln.



    Segment Override
    Der segment-override wurde früher oft benutzt wenn jemand, ein einem Speichermodell, wo nur ein Datensegment voranden ist(z.B. tiny / small), in ein anderes(z.B. dem VGA Speicher) schreiben wollte. Da die "lineare", eingeblendete, Adresse des VGA(0xA0000) grösser als 16 bit ist, passt sie nicht in ein Standardregister wie ax, bx etc. sondern ergibt erst im Tandem mit einem Segment die Möglichkeit dort zu lesen / schreiben. Das war der grosse Trick des PCs die magischen 64KiB im "real mode" zu umgehen - Segment:Offset Adressen.
    Es wurde also ein linearer 1MiB grosser Addressraum mittels eines Hilfskonstrukt aus zwei 16 bit Registern etwas "umständlich" zugänglich gemacht.



    Das Segmentregister "es" wurde hier z.B. mit dem Wert A000(Segmenteil der linearen Adresse A0000(-> A0000) des VGA Bereichs) geladen und dann mittels


    "mov byte ptr es:[di], byte_value"


    z.B. ein Pixel gesetzt. Denn die effektive Adresse ist hier "es * 16 + di". Nun können die hinteren 16 bit der Adresse(A0000) mittels "di" ohne Probleme angesprochen werden und man "wandert" somit über den Schirm.


    Zum Lernen
    Vielleicht wäre es einfacher wenn Du die ganz alten, oder systemnahen, DOS "Hindernisparcours" vorerst wegglässt, und einfach Assembler(hilfsroutinen) im 32bit protected mode benutzt, wobei Du hier an einen geeigneten Compiler "andockst".
    So ein Compiler, wie z.B. WatcomC, hat bereits alles korrekt aufgesetzt sodas Du auf einen 64+MiB grossen, linearen Addressraum ohne Segmentierung (dank DPMI) zugreifen kannst. Einziger Nachteil ist, dass eine Interaktion mit dem System(z.B. BIOS / SVGA VBE1.2, etc.) welches realen Dosspeicher braucht, ein wenig aufwendiger ist.
    Nachdem Du hier Erfahrung gesammelt hast, gehst Du wieder zurück zum 16bit mode und erledigst Probleme die eine umständlichere Herangehensweise erfordern.


    Du darfst die Programmierung selbst nicht mit den Eigenheiten bezüglich der Ansprache von Geräten verwechseln. Komplexitäten ergeben sich oft durch das Prozedere etwas "fachgerecht" zu erledigen und nicht durch die formale Sprache mittels Du der dies erledigen willst. ModeX z.B. ist, meiner Meinung nach, umständlich da die hardware die diesen bereithält relativ komplex ist. Die vom user benutzte Sprache ist hier eher unschuldig.


    Das mit dem bios ist extrem interessant, aber zum Lernen eher schlecht da Du von Details die jenseits von assembler liegen abgelenkt wirst - Syntax- und hardware-probleme verschmelzen dann zu einem tödlichen Brei. Zudem ist das 16bit Programmiermodel relativ komplex durch z.B. Speicher-Segmentierung und Einschränkung(en) beim Registergebrauch.


    Wichtig wäre eher mal "x86", "real mode", "segment", "interrupts - software / hardware" zu recherchieren.

    Ich kann Dir keine definitive Hilfe leisten(da ich sowas noch nie gemacht habe) aber...


    die interrupts mittels "cli" "abzuschalten" ohne sie mit "sti" wiederherzustellen scheint seltsam - vielleicht passiert das aber in einem anderen Teil des codes.


    Das "ds:xxxx" ist ein segment override mit einer absoluten adresse xxxx. Ich nehme an der code ist "tiny" wo alle segmente auf die selbe Adresse zeigen.


    push / pop bezieht sich immer indirekt auf ss was jedoch im kleinen Speichermodell nicht von Bedeutung ist, denn cs = ds = ss(64KiB Speicherraum).


    "assume seg:nothing" erklärt den vorher erklärten Werte für das segment Register als ungültig. Es sollte also ein Fehler bei der nächste Indirektion einer Adresse auf Daten geschehen. Nachdem hier aber noch eine Indirektion erfolgt, ist es vielleicht ein "Trick" den ich nicht kenne oder ein Fehler seitens IDA bei der "Übersetzung".



    Zeile 79 - "and" und "or" liefern das gleiche Ergebnis wenn die unteren bits eines der Operanden 0 sind - ist also Formsache.


    Bitte alles Gesagte mit Vorsicht geniessen.... wenn man nicht jeden Tag aktiv das Ganze betreibt, wird man schnell rostig.

    Ich weiss nicht wie die PC - Netzteilqualität, mal abgesehen von der Leistung, in den 90igern bei Vobis und Co. war - vielleicht besser da Computerteile im Allgemeinen teurer waren - weisst Du vielleicht dazu etwas Darius?


    Die in den alten Towern waren ja belustigend riesig... man hätte fast meinen können das dort drin ein Hamster mit Arbeitsrad interniert war.


    Für die alten Geräte kauf ich meistens Corsair CX4xx und das hat bisher ganz gut funktioniert. Die totalen Billigsdorfer sind eher grindig und den "geliebten" alten boards kann man schon was gönnen. Gibt es vielleicht "Geheimtipps" unter 400 Watt die nicht so "modisch" aber doch gut sind?

    Ich habe vor kurzem ein paar kaum benutzte Crts weitergegeben... eine relativ schwere "Abhandlung". Jetzt hab ich einen 19er SUN als Verglühgerät und die besseren Röhren, Sun GDM-5510(StandardBild im Anhang), IIyama 451 u.a., sind im Kasten verstaut. Danach hätte ich noch einen 19er Samsung 951 und einen 19er Philips zum Spassschauen. Mal sehen wie lange die durchhalten.
    Die guten Röhrer sind eher selten geworden. Einen IBM200 gäbe es noch 100km von mir aber ich muss mal schauen ob der Zustand ok und der Verkäufer halbwegs normal ist. Es gab noch einen feinen IIyama aber der ist mir zu weit weg.


    Da ich endlich wieder an der DoomII megawad weiterarbeiten konnte, habe ich mir ein wenig die originalen levels angesehen - eine totale Freude durch solch legendärn Hallen zu wandern.
    Speziell die maps von American McGee können begeistern. Technisch gesehen sind seine Werke besser als die von Romero. Letzterer hat jedoch das Talent eine ausgewogene Mischung aus Perfektion und Tollerei zu schaffen, deswegen stimmt es mich immer wieder etwas traurig das er nur ein paar Welten zu DoomII beigesteuert hat... sowas von Schade.
    Ich werde vielleicht paar kleine Rezensionen über ein paar levels schreiben, muss aber erst schauen ob sowas überhaupt lesenswert ist.


    Ansonsten bastle ich immer noch am C Tutorial, das ich wieder um ein ganz nettes Beispiel, bezüglich der "Zeiger auf arrays", erweitern konnte. Nüchtern gesehen jedoch kommt man in C mit 2-dimensionalen Feldern aus und selbst komplexere software Titel benutzen nur einen Kern der Sprache(die Zeiger auf arrays wirken etwas akademisch sind aber mit Funktionszeigern halt ein Zeichen das man etwas mehr von C verstehen und vielleicht nutzen gelernt hat).
    Dies ist auch verständlich, da software zu entwickeln(für mich zumindest) sowieso relativ aufwendig ist und man sich nicht unnötig nochmals mit Komplexitäten belasten will. Eine primitive Kapselung der Daten(Strukturen und Speicherklassenqualifikatoren wie 'static') so wie der Typenqualifikator 'const' genügen um relativ saubere Programme zu schreiben... und relativ sei hier nochmals hervorgehoben.


    Beim Gitarrespielen bin ich jetzt endlich auch weitergekommen und es könnte sein das ich im Sommer schon einige Slayer songs mit voller Geschwindigkeit spielen kann - mal sehen.

    Der Maxi ist sehr praktibel und ich werde mir vielleicht auch einen zulegen. Zum Glück gibt es solche Geräte welche die Sphäre des Urgerätes etwas ausweiten... könnte einige Leute geben denen so ein Ding als Einstiegsdroge dient. "Echte" Tastatur, nettes Gehäuse, leicht mit software erweiterbar, programmierbar, HDMI - was will man mehr um das wenige Geld.


    Ein echter 64er ist natürlich durch absolut nichts zu ersetzen und ein CRT, fürs "feeling" und Bild, ein Muss. Allerdings benötigt der hin und wieder Pflege wegen der ICs und des Diskettenlaufwerks. Ich habe, nach einer Verschenkaktion, nur mehr eine 1541 und benutze die z.B. so wenig wie möglich.


    Noch interessanter finde ich den Mega65 (video) der wirklich viele "Register" spielt - ich hoffe das der irgendwann mal um einen Preis im Bereich von 200-400€ zu haben ist.

    Einen schnellen 486er würd ich einem Pentium System immer vorziehen, da es was "Besonderes" ist. Ausnahme wären für mich Pentium60/66 und Pro.


    Wenn Du eine PCI Karte einer neueren Generation wählst, dann wähle vielleicht eher nach dem RamDAC aus - die Karte mit dem schärfsten Bild würd ich einbauen. Schnell (genug) sind die allermeisten gegenüber einem 486/langsamen Pentium - mit Ausnahmen wie z.B. der Matrox Impression(?).


    Voodoo ist mehr ein cooler gag, aber probiers auf jeden Fall aus - ich hatte im P60 eine V2 laufen und obwohl wenig sinnvoll, wars doch recht interessant. Das Problem mit den langsameren Rechnern ist, dass sie ausser Transformation der Daten auch anscheinend mit der Übertragung am PCI Bus nicht ganz so flott sind. (Nachprüfen könnte man diese Hypothese vielleicht mit einem späten top 486er board, das man gegen ein SS7 board bei einem Bustakt von 50mhz antreten lässt. Im 486er board einen 150er 5x86 und im SS7 einen 133er@100... und dann sehen wie die Voodoo sich (er)schlägt. Falls es kein SS7 mit 50mhz fsb gibt dann eben ein "high end" S7. )

    ach komm, man muss immer schaun zu welcher Zeit es rauskam, und wie ein Spiel sich von den andern abheben kann. Warcraft war immer etwas cartooniger und ist sich seiner Linie treu geblieben! Siehe World of Warcraft, Warcraft3, etc.


    Die Änderung auf 640x480 hat leider die gröbere, alte Optik abgelöst und damit für mich das flair zerstört. Auch beim sound ist mir das ganze zu disney-haha-mässig und obendrein die teilweise dümmlichen Orc designs. Dazu kommt noch das die Handhabung der Einheiten durch die Vielauswahl etwas trivialisiert worden ist. Dadurch ergibt sich ein viel passiveres und weniger action-lastiges Gefühl.


    Beim Einser war der Humor indirekt gegeben und brachialer, während er beim 2er schon angepflegt wurde.


    Das 3er trieb das ganze auf die Spitze und war für mich nur im LAN interessant. Ein SUPER Spiel aber es hätte auch "Fantasiespiel III" heissen können.


    Auf was ich mit meiner lästigen Nörgelei hinaus will, ist das eine Armee von Spieleentwicklern oft nicht ganz kapiert, oder kapieren will - da die Kohle wo herkommen muss, das ein Spiel eine Art snapshot ist der selten, bis nie, den Transit via Technik und Design in eine neue Form überlebt. Ähnliches könnte man vielleicht auch für Filme / Musik sagen. Deswegen schmücken sich leider so viele "Bastarde" mit grossen Namen.


    Ich selbst habe dieses Dilema zum ersten Mal mit QuakeIII erlebt und bin dann vom "Zug der xten Neuveröffentlichung" für immer abgesprungen. Quake3 war als Spiel an sich ein imposantes Werk, aber genau die Dinge die, z.B. den 1er und 2er geil gemacht haben, waren einfach nicht vorhanden. Das Quake flair war verschwunden und der "mainstream" erledigte den Rest.

    Ich habe nochmals den dos port von Doom(pcdoomv2 / Alexey Khokhokolov) bezüglich der "render"-limits und des "heap"'s erweitert. Vielleicht funktionieren jetzt manche mega levels die noch vanilla kompatibel sind, aber dazumals zuviel des Guten waren.



    Neue parameter sind


    -ds <num>... drawsegs / "Wändeanzahl" erhöhen (standard - 256)
    -vp <num>... visplanes / "Decken/Bödenanzahl" erhöhen (standard - 128)


    -vs <num>... vissprites / "Objekte" erhöhen (standard - 128)


    -heapmegs <num> ... MiB die die Zone erhält(standard - 8 )


    -dp_numeric ... nur mit '-devparm' zu kombinieren um die Limits(+framerate) in Zahlen zu sehen


    -no_fpu ... Sicherheitsparameter falls jemand auf einem SX unterwegs ist(unwahrscheinlich in der Nutzung, allerdings vielleicht "später" mal interessant)



    Desweiteren konnte ich am C Tutorial bezügl. ModeX/Y etwas weiter bringen.


    Die C basierten Themen sind jetzt stark an Anzahl geschrumpft und es werden nur die Erweiterten beibehalten. Es hat keinen Sinn redundant wieder etwas zu erzählen ohne einen neuen Einblick geben zu können(oder zumindest das Material praxisgerecht zu kombinieren). Im Sommer sollte zumindest 1 Kapitel fertig sein.



    Wenn man zu manchen Dingen, speziell WatcomC, mehr liest, dann fällt einem auf, das Vieles ein Kreisschreiben ist - man muss also aufpassen um sich da nicht mit(r)einzuklinken.

    Warcraft II - Orc Mission 14 geschafft und damit das Spiel "beendet".


    Gegenüber den ersten Teil ist es leider enttäuschend - zu cartoon-mässig und der Schwierigkeitsgrad zu niedrig... von der letzen Mission mal abgesehen. Die Dark Portal Maps sind natürlich schon wieder eine andere Welt, aber jetzt hab ich mal mindestens ein Jahr genug vom 2er. Schade dass es fürs 1er keine community gibt die es pflegt und vielleicht konservativ erweitert.


    Als Einzelspiel gesehen würd ich dem 2er trotzdem 85 von 100 verleihen. Beim Multiplayer würde die Zahl auf knapp 90 steigen, aber es ist zu lange her um das authentisch zu hinterlegen.

    Kommt immer drauf an. Es gibt viele Kanäle die guten content bringen aber die ich trotzdem nie finanziell unterstützen werde weil ich weiss das der Betreiber mehr in einem Jahr verdient als ich vermutlich in meinem ganzen Leben. Und das ohne Übertreibung.
    Perifractic z.B. ist so ein Kandidat. Ich schaue seine Videos gerne, aber der Kerl ist Schauspieler, lebt in einer Villa in Kalifornien und wird gesponsort. Mir fällt jetzt kein Grund ein warum ich ihn unterstützen müsste.
    Anders z.B. beim 8-Bit Guy. Er lebt sicher auch nicht schlecht, aber nichtmal ansatzweise vergleichbar. Er ist sehr bodenständig und sein Engagement für die Community ist unglaublich. Da kann man durchaus mal ein Spiel von ihm kaufen ;)


    Das waren jetzt mal 2 Beispiele von Youtubern die jeder hier kennen dürfte.


    Ich dachte es sind nur Leute wie "pewdiepie"(spelling?), mit richtig VIELEN subscribern, die wirklich monetär gut unterwegs sind?
    Ein Kanal wie der des "Perifractic" wirft Geld ab... wie sollte das funktionieren?

    Ok, dann ist sicher die library besser, da man schneller etwas zu sehen bekommt. Der Schneeeffekt beim Weihnachtsdemo war übrigens sehr lässig.


    Das Buch klingt interessant, poste halt vielleicht hin und wieder wie Du so voran kommst.

    Das Gehäuse gefällt mir sehr gut. Die Innereien erinnern mich lebhaft an einen Kauf dazumals, auch 1998, in einem Geschäft(VDS), welches schon seit gut 15 Jahren von der Bildfläche verschwunden scheint. Ich denke es war ein 233er + mainboard und Ram.
    Obwohl der PII schon nachdrückte war semi-"high end" noch teuer.... geschätzter Set-preis (sehr ungenau!) 15000 Schilling.


    Der Kauf war der letzte in einem noch "kultigen" Computergeschäft... ab 2004 war alles nur noch Birg und online.

    Die MGL wurde von Scitech damals auf ihrem FTP Server zur freien Verfügung gestellt.Inklusive SourceCode, Demos, DOS/Windows und ich glaube OS/2 Version, nur einen wichtigen Patch musste ich noch ausfindig machen, der einen kleinen aber feinen Bug behebt.
    Lauffähig mit Watcom 10.6, 11.0, Borland, Visual C++ 1.52(?), und noch weiteren Compilern aus der Zeit.
    Du findest sie noch auf einigen FTP Servern, das Problem ist nur, dass du Windows 3.1 oder Windows 95 zum installieren brauchst.
    Ich könnte dir eine Version zukommen lassen, oder dich an die entsprechende Seite verweisen, falls es dich interessiert.
    Leider wie gesagt nur Version 4.x. Ich glaube es gab auch noch eine 5er und 6er Version, die auch mal online gestellt wurde, da bin ich mir aber nicht ganz sicher.


    Danke!
    Der source code würde mir genügen. Solltest du Zeit finden, schick ihn mir bitte oder poste ihn hier.