Eigener Treiber für OPTi 929 Soundkarten

  • Ja Tastatur wäre schon schön. Aber ist jetzt nicht ein muss.

    Ein Muss ja sowieso nicht, ist schließlich mein Freizeitvergnügen ;)
    Ich fand die Maussteuerung einfacher zu programmieren und mir reicht sie.
    Aber.... da ihr mich ja aber so nett darum gebeten habt, @Cpl. Rex Barkin und @struuunz, habe ich mich gestern Abend wieder an meinen 486er gesetzt und die Tastatursteuerung zusammengeschrieben. :tasskaff
    Sogar auch für den Mixer!


    Wenn eine Maus gefunden wird, ist alles wie bisher, wenn keine gefunden wird, könnt ihr nun mit den Pfeiltasten eine Option aufrufen und + und - (alternativ Enter oder Leertaste) die dazu verfügbaren Einstellungsmöglichkeiten durchschalten. Die Button lassen sich durch ihre Anfangsbuchstaben aufrufen.


    Falls ihr Tastaturverrückten eine Maus angeschlossen habt und dennoch lieber die Tastatur verwenden wollt, dann geht das auch: Mit dem Parameter "/K".


    Bitteschön OPTi929 Treiber 1.01.zip




    Super einen 924 hab ich :D

    Prima. Der Treiber dafür ist in Arbeit. :)

    Kleiner Industrie-486er mit 100 MHz (Intel 80486DX-4), 32 MB SD-RAM, Diamond SpeedSTAR Plus Rev. C6 und SB 16 ( CT2770 )

  • Darf man Fragen ob die Gui einfach ansi/console ist oder ein framework?


    Gui, Framework? Das ist ja fast schon eine Adelung! Wir reden hier über absoluten Lowlevel-Kram. :D
    Im grunde habe ich mir nur ein paar Routinen geschrieben, die Fenster etc. direkt in den Bildschirmspeicher schreiben. Obwohl alles nur 80x25 Textmodus ist, benutze ich sogar einen zusätzlichen Puffer, damit es auch auf langsameren Systemen keinen langwierigen Bildaufbau gibt.


    Geschrieben ist das ganze in Pascal mit einem Haufen eigener Assemblerroutinen und ohne Nutzung von Borlands eigenen Units (also auch keine Gefahr von Runtime error 200 auf schnelleren Rechnern etc.).
    Ursprünglich wollte ich C zur Programmierung des Treibers nehmen, aber da ich früher hauptsächlich Pascal für DOS-Sachen verwedet habe, hatte ich da den ganzen Kram noch (Textmodus-Routinen, OPL3-Player, Sound Blaster Routinen) und so war es für mich deutlich weniger Aufwand, so einen Treiber mit Setup und allem zu schreiben.


    Die Routinen für die "Gui" habe ich zum Beispiel im Sommer 1998 geschrieben. Der Player für die FM-Musik im Mixer entstand ursprünglich 1999 für einen Intro :D
    Beides Quellcodes, die ich noch von meinen alten Disketten retten konnte. :)


    Ich werde den Quellcode auch bei Github einstellen, wenn ich dazu gekommen bin, ihn noch etwas lesbarer zu gestalten und zu sortieren. Wenn dich meine Textmodus-Routinen interessieren, kann ich dir den Code dafür auch gerne schicken oder ihn hier in unserem Programmierbereich posten.

    Kleiner Industrie-486er mit 100 MHz (Intel 80486DX-4), 32 MB SD-RAM, Diamond SpeedSTAR Plus Rev. C6 und SB 16 ( CT2770 )

    Einmal editiert, zuletzt von Dragonsphere ()

  • Ah okay sehr fein.
    Dann war das mit der Tastatureingabe doch nochmal ein Task :D ..


    Vielleicht solltest du dir überlegen solche Sachen oder den Treiber mal bei Github einzustellen.
    Nachlass für eine bessere Menschheit usw.. :)


    Trotz der Angst, ein Kind alleine raus in die Welt wandern zu lassen.
    Aber besser als wenn es irgendwann verschwindet und unsere Nachkommen sich über den ominösen aber genialen
    closed Source Treibers eines gewissen Dragonsphere unterhalten :D...
    Also gibt ja schon ein paar Projekte wo die Urheber nicht mehr auffindbar sind und es toll wäre, wenn man die Quellen zu hätte.
    Aber das musst du entscheiden.


    Ich suche auch zur Zeit viel Kram von damals zusammen, auch viel qbasic, pascal, Delphi, c, c++ kram und stells just 4 fun ein :)

  • Ich werde den Quellcode auch bei Github einstellen, wenn ich dazu gekommen bin, ihn noch etwas lesbarer zu gestalten und zu sortieren. Wenn dich meine Textmodus-Routinen interessieren, kann ich dir den Code dafür auch gerne schicken oder ihn hier in unserem Programmierbereich posten.


    :D Hatte ich gerade noch angefügt.
    Ich habe auch kürzlich damit angefangen, meine alten Sachen dort einzustellen. Den Quellcode vom Treiber nur noch nicht, da die Dateien unter Windows Probleme mit der Codierung machen. Auch möchte ich noch ein paar Kommentare einfügen etc. Durch die Verwendung von uralten und neuen Sachen ist teilweise auch die Benennung von Variablen nicht einheitlich usw.

    Kleiner Industrie-486er mit 100 MHz (Intel 80486DX-4), 32 MB SD-RAM, Diamond SpeedSTAR Plus Rev. C6 und SB 16 ( CT2770 )

  • Ne alles gut .. hab mal nen Double Buffer TextModus mit Speicherroutinen für eine qBasic Lib gebaut.. aber das war selbst auf nem Pentium 200 grotten lahm..
    Jede Schleife und peek poke unter basic ist eine Katastrophe.. aber naja wenn man sich erstmal in son LowEnd Ding einarbeitet möchte man auch das Maximale herausholen.
    qBasic war halt schon der Anfang vom Ende (VB...) und nicht wie auf anderen Systemen noch sehr Hardware nah.
    Am Ende hat man quasi auch nur noch Assemblerroutinen in den Speicher gepoked und dann mit nem Jump ausgelöst.. das ist ja schon fast cheaten :D
    Naja die zweite Leidenschaft war wie gesagt Pascal und Delphi/Kylix, wobei dort halt auch das Framework den größten Haken darstellt.
    Erstens wegen des besagten crt unit bugs und anschließend wegen der überaus strammen Komplexität des TObject Baums.. und der teilweise recht unoptimierten Routinen für
    Standardaufgaben (ein hoch auf C# btw)..
    Also am Ende wäre wohl auch Pascal nur mit Inline Assembler richtig schnell und cool.. bei C wäre das dann wohl kein Thema mehr.. das STL und derer ganz guten Implementierung in Borland...
    Aber Borland hat immer sein eigenen Scheiss verzapft.. bei Pascal, C++ usw... nix war kompatibel zu WatCom oder Intel.. hat mich damals auch genervt.


    Naja long Story short.. aktuell erstmal nichts unter Dos, das ist mir zuviel gebastel/Zeit aufwändig im Moment.. aber bald gibt es ein retro HW/SW Projekt von mir. Sehr nützlich für alle
    oldschool Medien Fans und Low Budget geplagten :) aber dazu mehr in ein paar Wochen. Soll ja eine Überraschung werden.


    Find ich aber gut wenn du den Treiber unter GPL stellst und anderen Kram veröffentlichst.. Denke in den letzten Decaden ist viel cooler Scheiss als Nachlass auf dem Schrottplatz gelandet :(

  • Kurzer Nachtrag für alle Interessierten:


    Da mich @Ter Roshak ja daran erinnert hat und man seine Quellcodes ja nicht genug sichern kann, steht der Quellcode vom Treiber jetzt bei GiHub drin - Ohne weitere Optimierungen zur Lesbarkeit
    Zur Verfügung gestellt habe ich ihn unter MIT License. Also frei verwendbar, solange ich bei den Credits auftauche.


    https://github.com/JKnipperts/OPTi82c929_Driver

    Kleiner Industrie-486er mit 100 MHz (Intel 80486DX-4), 32 MB SD-RAM, Diamond SpeedSTAR Plus Rev. C6 und SB 16 ( CT2770 )

  • Das mit der Lesbarkeit ist erstmal zweitrangig.. ist ja quasi auch ne art IP Schutz :D...
    Aber das lässt sich ja noch nachträglich bei Bedarf machen. So wie im echten Leben.
    Dokumentation zu letzt in den letzten 5 Minuten Deadline :D und Handbuch "nachreichen"

  • Kurzer Nachtrag für alle Interessierten:


    Da mich @Ter Roshak ja daran erinnert hat und man seine Quellcodes ja nicht genug sichern kann, steht der Quellcode vom Treiber jetzt bei GiHub drin - Ohne weitere Optimierungen zur Lesbarkeit
    Zur Verfügung gestellt habe ich ihn unter MIT License. Also frei verwendbar, solange ich bei den Credits auftauche.


    https://github.com/JKnipperts/OPTi82c929_Driver

    einfach nur Weltklasse, herzlichen Dank

    meine Schätze: Commodore 464, Amiga 520 und einen Atari 1200 STE, MOS 286 DX2-55 und 486 MMX@120

  • @Dragonsphere Deine Arbeit hier an diesem Treiber und dem ganzen drumherum bewundere ich enorm!
    Ist das eigentlich "nur" dein Hobby oder hast du auch einen professionellen Programierhintergund?

    :-Darius
    Und normalerweise sollte mal so etwas dabei herausspringen:
    :5er
    Wie immer - Lob und Anerkennung - :D

    :freak RetroComputerPoPe - Dr. (Ehrenhalber) Darius von Bernstein - Grünstein - Lötstein :freak


    * Bezwinger der EIZO ( ͡° ͜ʖ ͡° ) *


    Päpstlicher DOSianer mit mittlerweile jeder DOS-Architektur (XT/286/386/486/586/686...)
    Status: Don't mess with the RetroPoPe / Erweiterter Amateur mit der unoffiziellen Bräter-Lizenz *g*

  • @Dragonsphere Deine Arbeit hier an diesem Treiber und dem ganzen drumherum bewundere ich enorm!
    Ist das eigentlich "nur" dein Hobby oder hast du auch einen professionellen Programierhintergund?

    Reines Hobby. Ich habe als Schüler angefangen zu Programmieren. Damals hat mich mein Physiklehrer zum Programmieren mit Turbo Pascal gebracht :)
    Ich habe da sehr viel gemacht. Hatte auch ein paar Freunde, die auch Programmiert haben und wir eiferten unseren Helden aus der Demoszene nach.
    Später, als DOS nicht mehr so angesagt war, habe ich mir dann selber C++ beigebracht und mit Visual C++ angefangen unter Windows zu programmieren. Programmieren auf den neueren Windows Systemen fand ich aber nie so spannend, wie fürher unter DOS. Mir fehlte der direkte Hardware-Zugriff und die Herausforderung, mit begrenzten Ressourcen (Arbeitsspeicher, CPU-Takt) zu arbeiten. Das Hobby schlief mehr udnd mehr ein. Hatte dann mit Studium und Arbeit aber immer weniger Zeit dafür und arbeite auch nicht im IT Bereich.
    Als ich dann 2016 den 486er aus meiner Signatur aus der Bucht fischte und vom Retro-Virus befallen wurde, überkam micht auch die Sehnsucht nach Programmieren unter DOS. Auch sicherte ich jetzt alle Disketten, die ich noch irgendwo wiederfand und entdekcte einige alte Quellcodes von mir. Viel ist aber leider verloren gegangen, da ich meinen DOS-Programmen in den frühen 2000er für Wertlos hielt und nicht weiter gesichert/beachtet habe :(
    Ich installierte dann Pascal, C und einen Assembler auf meinem 486er und schrieb mein erstes Programm seit etwa 10 Jahren und mein erstes DOS Programm seit bestimmt 15 Jahren. Und wie ihr am Setup für MARS 3D und diesem Treiber seht, ich kann es immer noch :D
    Mittlerweile programmiere auf dem alten Rechner fast lieber, als das ich Spiele spiele. Finde das nach der Arbeit immer ganz entspannend, man kann so völlig in eine andere Welt abtauchen und es ist einfach cool, wenn der PC genau das umsetzt, was man ihm sagt :D . Erst recht unter DOS.



    Ja manche Leute muss man ja fast dazu drängen Geld anzunehmen :D

    Ich gebe dir gerne meine Paypal-Daten :D

    Kleiner Industrie-486er mit 100 MHz (Intel 80486DX-4), 32 MB SD-RAM, Diamond SpeedSTAR Plus Rev. C6 und SB 16 ( CT2770 )

  • Ist es eingentlich schwierig noch eine Keyboardsteuerung einzubauen. Wenn man jetzt mal zB eine neuen Rechner zusammenbaut und keine Maus installieren kann oder will?
    Hab gelesen dass die Installation ohne Maus gar nicht geht.

  • @Dragonsphere Na das ist doch mal eine tolle "Karriere" was das Hobby Programmieren angeht. Ich bin da leider nie über diverse Basic Varianten und das zusammenklicken einfachster Windows Progämmchen in Delphi hinaus gekommen. Wohl auch weil mir so ein Umfeld fehlte, mit weiteren interessierten, wie bei dir. Es hat sich ausser mir eigentlich leider kaum wer für tiefgreifenderes am PC interessiert, schon gar nicht für die dann damals um 2000 herum "alten" DOS Geschichten.
    Die Leute um mich herum waren hauptsächlich alle nur mehr oder weniger am spielen interessiert, was ich aber immer recht schnell langweilig fand. Das konnte kaum wer verstehen und für die aus meiner sicht tollen DOS Adventures schon gar nicht.
    Ich hab in der Zeit daher viel ausprobiert, an Hardware geschraubt, gelötet etc. und die dubiosesten Betriebssysteme erkundet. :D Hat mir auch viel Spaß gemacht. In der Zeit kristallisierte sich auch meine Vorliebe für die IBM Kisten heraus, zum einen wegen OS/2 zum anderen weil sie wahrscheinlich der genaue Gegenpol zur typischen Spielekiste waren.
    Und als ich mal mit einem riesigen HP Laserjet vom Sperrmüll nachhaus kam, wurde ich dann für vollkommen verrückt erklärt.

  • @streets, die Keyboardsteuerung habe ich doch schon eingebaut. :) Ist wahrscheinlich über die ganzen Beiträge zur Veröffentlichung des Quellcodes etwas untergegangen.
    Gestern habe ich eine leicht veränderte Version (1.01) hier gepostet. Download wieder im ersten Beitrag von desem Thread und in meinem ersten Post von gestern, 14 :08.
    Da habe ich genau das umgesetzt, was du ansprichst. Wenn keine Maus gefunden wird, kann man jetzt mit den Pfeiltasten eine Option wählen (wird rot hervorgehoben) und mit +/- bzw. Leertaste und Enter die Einstellungen vornehmen.
    Die Button können per Pfeiltasten oder mit den Anfangsbuchstaben ausgewählt werden.
    Gleiches gilt auch für den Mixer.
    Wenn eine Maus gefunden wird, ist alles beim alten. Neben den Einstellungen werden dann wieder die beiden Pfeilsymbole angezeigt, mit der die Einsellungsmöglichkeiten durchgeschaltet werden können.



    So sieht das jetzt aus, wenn beim Programmstart keine Maus gefunden wurde:




    (Wer gerade die Version 1.0 bei sich installiert und gewöhnlich eine Maus angeschlossen hat, muss nicht zwingend auf die 1.01 aktualisieren. Bis auf die Möglichkeit, die Programme auch mit Tastatur zu bedienen, habe ich nichts verändert. )

    Kleiner Industrie-486er mit 100 MHz (Intel 80486DX-4), 32 MB SD-RAM, Diamond SpeedSTAR Plus Rev. C6 und SB 16 ( CT2770 )

  • @Dragonsphere Na das ist doch mal eine tolle "Karriere" was das Hobby Programmieren angeht. Ich bin da leider nie über diverse Basic Varianten und das zusammenklicken einfachster Windows Progämmchen in Delphi hinaus gekommen. Wohl auch weil mir so ein Umfeld fehlte, mit weiteren interessierten, wie bei dir. Es hat sich ausser mir eigentlich leider kaum wer für tiefgreifenderes am PC interessiert, schon gar nicht für die dann damals um 2000 herum "alten" DOS Geschichten.
    Die Leute um mich herum waren hauptsächlich alle nur mehr oder weniger am spielen interessiert, was ich aber immer recht schnell langweilig fand. Das konnte kaum wer verstehen und für die aus meiner sicht tollen DOS Adventures schon gar nicht.
    Ich hab in der Zeit daher viel ausprobiert, an Hardware geschraubt, gelötet etc. und die dubiosesten Betriebssysteme erkundet. :D Hat mir auch viel Spaß gemacht. In der Zeit kristallisierte sich auch meine Vorliebe für die IBM Kisten heraus, zum einen wegen OS/2 zum anderen weil sie wahrscheinlich der genaue Gegenpol zur typischen Spielekiste waren.
    Und als ich mal mit einem riesigen HP Laserjet vom Sperrmüll nachhaus kam, wurde ich dann für vollkommen verrückt erklärt.

    Ich habe das Hobby damals mit zwei guten Freunden geteilt, einer ist auch etwas älter als ich und hatte schon früher mit dem Programmieren angefangen. Und dann ja auch noch einen Lehrer, der uns in der Hinsicht förderte. Da hatte ich also wirklich ein gutes Umfeld dafür.
    Das fing bei mir aber auch etwas früher an als bei dir. Etwa um 1996/97 herum. Mein Freundeskreis war komplett mit DOS-Games groß geworden und da war Windows 95 aktuell und DOS noch nicht völlig veraltet. Selbst für die reinen "Gamer" war es damals noch ganz normal, dass man für manche Spiele in den MS-DOS Modus wechseln musste. Auch erschien zu der Zeit ja noch jede Menge neue Software und Spiele für DOS.
    Und wir alle hatten damals eine ziemliche Neugier herauszufinden, wie unsere Lieblingsspiele aufgebaut waren. Grafik und Sounddateien einfach mal austutauschen usw. Quasi erste Ansätze von dem, was man heute Modden nennen würde :D Und dann waren da natürlich die nervigen Kopierschutzgeschichten... Mein Anreiz Assembler zu lernen bestand erstmal überhaupt nicht darin, damit zu programmieren, sondern einen Disassembler/Debugger bedienen und die Kopierschutzroutinen von Spielen finden zu können. Natürlich rein zu Studienzwecken *hust hust* ;)


    Für verrückt wurde ich da nicht gehalten, höchstens etwas "nerdig" :D


    Aber ein paar Jahre später fühlte ich mich dann ja auch gezwungen auf Windows-Programmierung umzusteigen. Ich habe mich damals sogar mit einem eigenen Cracktro bei TRSi beworben, die wollten mich aber nicht, weil ider ein reines DOS-Programm war und ich keinen Cracktro für die immer mehr aufkommenden Windows-Games hätte schreiben können.
    Dann habe ich auch bald meine eigenen DOS-Sachen nicht mehr sonderlich wert geschätzt und dachte, "die brauchst du eh nie wieder". Im Laufe der Jahre landete dann die letzte Festplatte von mir, die noch eine DOS-Partition mit Programmierkram enthielt, genau wie viele alte Disketten m Müll ;(


    Für Hardware interessiere ich mich auch schon lange und habe auch viel geschraubt und gelötet. Jeden meiner Computer seit 1998 selbst gebaut. Aber ich war da ganz "typisch", wollte möglichst das neuste und schnellste und der alte Kram flog aus Platzmangel schnell raus.

    Kleiner Industrie-486er mit 100 MHz (Intel 80486DX-4), 32 MB SD-RAM, Diamond SpeedSTAR Plus Rev. C6 und SB 16 ( CT2770 )

  • Meinen vollsten Respekt hast du bereits!


    Könntest du im ersten Post ggf. sammeln mit welchen Karten die Treiber alle getestet wurden, dann kann ich in den nächsten Tagen vielleicht auch noch eine ergänzen!


    Vielleicht kannst du das ja sogar in die Release Notes packen?

  • Meinen vollsten Respekt hast du bereits!


    Könntest du im ersten Post ggf. sammeln mit welchen Karten die Treiber alle getestet wurden, dann kann ich in den nächsten Tagen vielleicht auch noch eine ergänzen!


    Vielleicht kannst du das ja sogar in die Release Notes packen?

    Habe meine beiden Karten mit eini paar Anmerkungen im ersten Post ergänzt.
    Gerne könnt ihr mir schreiben wie sich der Treiber mit euren Karten macht. Dann ergänze ich das dort und packe es in die Readme zum Treiber.


    Sehr schön geworden :thumbup:
    Finde das Menü auch sehr gut gelungen.

    Danke! :)


    Was die Kompatibilität der einzelnen Karten zum Sound Blaster Pro angeht, hier noch ein paar Infos:


    Ich habe ja schon öfter darauf hingewiesen, dass es ein verbreiteter Irrtum ist, der OPTi Chip seit komplett für den Sound Blaster Sound zuständig und der Codec für den WSS-Sound.
    Nur der Codec verarbeitet Audiodaten, der OPTI-Chip sorgt nur dafür, dass der Codec auch wie ein Sound Blaster angesprochen werden kann. Genauso funktionieren übrigens auch die Aztech Soundkarten.


    Die Codecs wurden von den Firmen Crystal und Analog Devices entwickelt und auch stetig weiterentwickelt. Man hatte sich auf gemeinsame Basisfunktionen geeinigt (WSS), aber jeder der Hersteller entwickelte seinen Codec weiter und fügte neue Funktionen hinzu.


    Hier mal eine kleine Übersicht der wichtigsten Features:



    AD1848



    - Unterstützt Digital Interpolation


    - Analoger Low-Pass Filter


    - Sample Raten von 5.5 kHz to 48 kHz, 8 und 16 Bit, Mono und Stereo



    AD1846



    - kostenreduzierte Version vom AD1848
    - gleicher Funktionsumfang




    AD1845


    - gleichzeitige Aufnahe/Wiedergabe (Full Duplex)


    - FIFO Puffer für Aufnahme, Wiedergabe


    - Gegenüber AD1848 und AD1846 deutlich verbesserter und erweiterter Mixer


    - Sample Raten von 4.0 kHz to 50 kHz


    - "MODE2" mit erweiterten Funktionen
    - Unterstützt mehr Formate für Audiodaten, auch Kompression.
    - Kein ADPCM, aber dessen "Vorstufen" sodass weniger CPU-Last bei ADPCM anfällt.
    - kein Low-Pass Filter!



    CS4231


    - gleichzeitige Aufnahe/Wiedergabe (Full Duplex)


    - FIFO Puffer für Aufnahme und Wiedergabe


    - Sample Raten von 5.5 kHz bis 48 kHz


    - Unterstützt ADPCM direkt im Codec



    CS4231A


    - Wie CS4231 aber verbesserter Mixer und "MODE 2" mit erweiterten Registern/Funktionen



    CS4248


    - gleichzeitige Aufnahe/Wiedergabe (Full Duplex)


    - FIFOs Puffer für Aufnahme, Wiedergabe


    - Sample Raten von 4.0 kHz to 50 kHz


    - Keine ADPCM Unterstützung im Codec



    Bei den Codecs, die kein ADPCM können, kümmert sich zwar der OPTi Chip darum, aber die Berechnung läuft über die CPU.
    Das sorgt dann gerne mal für Aussetzer oder verzerrten Ton.
    Der AD1845 kann zwar kein ADPCM, unterstützt aber die "Vorstufen" für dessen Berechnung und funktioniert daher mit vielen Spielen, die ADPCM nutzen, besser als der AD1848/AD1846.


    Am besten für Sound Blaster Kompatibilität mit ADPCM sind aber wohl Karten mit Crystal CS4231 oder CS4231A.
    Die Crystal Codecs haben auch den Ruf, rauschärmer zu sein.
    ABER: Nur die AD1848 und 1846 haben einen integrierten Low-Pass-Filter, wie ihn auch die SB Pro besitzen. Wurde der nicht noch extern von den Kartenherstellernauf der Platine realisiert, klingt der Sound deutlich "flacher". Das merke ich zum Beispel deutlich beim Vergleich der Schutle HOT 233 (AD1845), mit der Miro (AD1848).

    Kleiner Industrie-486er mit 100 MHz (Intel 80486DX-4), 32 MB SD-RAM, Diamond SpeedSTAR Plus Rev. C6 und SB 16 ( CT2770 )

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!