amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Suche [ - Suche - Neue Beiträge - Registrieren - Login - ]

Erste << 14 15 16 17 18 -19- 20 21 22 23 24 >> Letzte Ergebnisse der Suche: 2156 Treffer (30 pro Seite)
whose   Nutzer

30.10.2007, 19:46 Uhr

[ - Direktlink - ]
Thema: TLSFMem und PAB
Brett: Amiga, AmigaOS 4

Zitat:
Original von Cego:
@whose:
weißt du was das schlimme daran ist? ne ganze community musste ihn motivieren damit er weitermacht und einer machts kaputt :(


Richtig, in diesem Fall Chris... es ist doch so: Niemand, der sich in einer Gruppe von Gleichgesinnten befindet, läßt sich gern für das verantwortlich machen, was einer aus dieser Gruppe verursacht hat (wobei man in diesem Fall ganz vortrefflich darüber streiten kann, ob dieser eine nun wirklich der Schuldige bzw. Auslöser ist. Ich sehe das eigentliche Problem ganz woanders, aber da mag ich mich auch irren. Wenn ich mich irren sollte, ist das Ganze noch viel schlimmer und kindischer, als ich es eh schon befürchte). Das geht mir zum Beispiel so und einer sehr großen Mehrheit in unserer Gesellschaft auch.

Mal davon abgesehen ist "Sippenhaft" eh schon lange nicht mehr en vogue, aber er macht das immer und immer wieder. Wieso müssen wir uns das eigentlich gefallen lassen? Weil er ein tolles Produkt abgeliefert hat? Das ist noch längst kein Grund dafür, sich alles gefallen lassen zu müssen.

Ich bin daher in keinster Weise ein drittes Mal bereit, wenn sich ein Entwickler aufgrund einer solchen "Argumentation" entschließt, die Brocken hinzuschmeißen, mich auf seine Seite zu schlagen (wieso drittes Mal? Wer erinnert sich noch eines Herrn Kruse? Da wars das Gleiche). Aus dem ganz einfachen Grund, weil in einem solchen Fall der Hinschmeißende "der Schuldige" ist.

Warum? Weil er alle, die ihn unterstützt haben (und das ist in solchen Fällen bisher immer die unschuldige Mehrheit gewesen), vors Schienbein tritt. Ohne ersichtlichen und vor allem vernünftigen Grund.

Es mag sein das Chris denkt, daß "diese Community" ihn nicht verdient hat, "diese Community" kann aber mit Fug und Recht das Gleiche über ihn denken, nur mit umgekehrten Vorzeichen. Ich glaube nicht, daß eine andere "Community" vergleichbarer Größe ihm solche Unterstützung geboten hätte, wie er sie bei uns erhielt. Und der Dank dafür ist mehrfache Erpressung "dieser Community" zu seinem rein persönlichen Nutzen.

Er mag denken, daß er "uns" nichts mehr schuldig ist. Soweit in Ordnung. Wir sind ihm aber inzwischen genausowenig etwas schuldig. Wenn doch, was soll das denn sein? Geld? Hat er bekommen. Anerkennung? Hat er reichlich bekommen. Zuspruch? Auch den hatte er reichlich, wegen und trotz der Elbox-Sache und der kollektiven Verurteilung der 68K-Anwender.

Was bitte erwartet er denn noch alles von uns? Sollen wir PAB jetzt teeren und federn, damit Chris sich "dieser Community" gegenüber wieder wie ein erwachsener Mensch aufführt?

Darüber läßt er sich in keinster Weise aus und das kann man nur so betrachten: Das Ganze ist schlicht eine Trotzreaktion von jemandem, der dem Sandkastenalter irgendwie nie so ganz entwachsen ist. Oder, etwas überspitzt ausgedrückt: "Uääh, der böse Bube widerspricht mir andauernd und keiner hilft mir dabei, ihn zu verprügeln". Und solche Trotzreaktionen soll man auch noch wiederholt ernst nehmen? Das finde ich entschieden zu viel verlangt.

Zitat:
das ist eigentlich ne Sache zwischen ihm und PAB. ist nicht unser bier, weswegen ich aber auch sagen muss, dass grad deswegen dieser thread unnötig ist, wobei ja sein thread gelöscht wurde. man kann sich drüber streiten.

In der Tat. Denn ich meine, daß durch sein öffentliches Beleidigen einer Person aus "dieser Community" es durchaus zu mehr als nur "einer Sache zwischen den beiden" geworden ist. Das wäre es vielleicht gewesen, wenn das auch unter den beiden geblieben wäre. Aber es war Chris' freie Entscheidung, diesen Krampf in die Öffentlichkeit zu tragen, da muß er schlicht und ergreifend ebenso öffentliche Kritik moralischer Art hinnehmen. Es hat ihn verdammt nochmal niemand aus "dieser Community" gezwungen, so einen #*&/$ in ein offen einsehbares Readme zu schreiben, oder?

Auf uns fällt sowas allerdings irgendwann zurück ("Das ist ein Haufen Idioten und Trolle") und der feine Herr Entwickler zieht sich sicherheitshalber schon mal unauffällig aus der Malesse zurück, verteilt zum "Abschied" Schuldzuweisungen und stellt sich als Opfer hin, obwohl er selbst einen nicht unerheblichen Teil Schuld an der Eskalation trägt und völlig unbeteiligte Leute nur für ihre Meinungen zu seiner Kinderstube und seinem Rechtsempfinden büßen läßt (nennen wir das Kind einmal beim Namen: Persönlich geworden ist nicht PAB, egal, wie nervig er auch sonst sein mag, aber ein persönlich oder auch trollig Werden kann man ihm in diesem Fall einfach nicht ankreiden. Diesen Schuh kann und muß Chris sich anziehen. Die Kommentatoren in dem gelöschten News-Thread fanden zu einem überwiegenden Teil einfach nur Chris' Methode nicht in Ordnung und das ist, verdammt nochmal, völlig legitim, das zu meinen und sogar moralisch wie auch juristisch gedeckt. Ganz im Gegensatz zu Chris' Entgleisung).

Entschuldigung, sowas kann ich nicht mehr einfach so stehen lassen und ich kann ebenfalls kein verständnis dafür mehr aufbringen.

Bei der Elbox-Geschichte hatte ich schon leichte Bauchschmerzen deswegen, aber so langsam entwickelt sich daraus eine heftige Kolik (wo bitte lag z.B. bei der Elbox-Sache die Schuld der zahlenden 68k-Anwender? Sie lag nicht bei Ihnen, aber sie sollten sich vor Chris' Karren spannen lassen, um seine Ziele und/oder Forderungen durchzusetzen. Wirklich ok war und ist sowas definitiv nicht. Ich würde das als "Manipulation" bezeichnen und ich mag es überhaupt nicht, wenn jemand mich zu manipulieren versucht. Schon gar nicht, wenn dieser Jemand das zum wiederholten Male versucht, irgendwann muß dann auch mal gut sein).

Zitat:
aber wie ich bereits sagte am besten ist es immer noch solche leute zu ignorieren die einem auf die eier gehen ;)

Stimmt, das wäre erste Wahl gewesen. Das hat aber nicht den gewünschten Effekt: Ein kleines Heer von zu Kreuze kriechenden Anwendern kann man mit schlichtem Ignorieren nicht erzeugen.

Bei Ego-Problemen, wodurch auch immer diese zum Tragen kommen mögen (wie gesagt, ich glaube nicht so wirklich an die Mär von "nur PAB ist Schuld", meiner Meinung nach steckt da zusätzlich noch etwas ganz anderes hinter), ist es natürlich was Feines, wenn hundert Leute ankommen und betteln, daß man doch nicht aufgeben möge, alles halb so wild sei blablabla.

Nur: ist es die Aufgabe "dieser Community", sich um die recht persönlichen Probleme eines Entwicklers zu kümmern, indem sie Bauchpinselei betreibt, wenn dieser Entwickler mit einer leicht verminderten Form der Erpressung um die Ecke kommt, und sich damit dessen Willkür und Launen immer mehr auszuliefern?

Ich denke nicht.

@Chris:

Ok, das wars dann wohl... machs gut, vielleicht sehen wir uns irgendwann mal wieder in "dieser Community". Würde mich, trotz des Heckmecks, sehr freuen, irgendwann einmal wieder gute Produkte von Dir zu registrieren. Sofern Du es schaffst, Deine Probleme mit gewissen Leuten zu lösen, ohne alle anderen mit hineinzuziehen und verantwortlich zu machen für Deinen persönlichen Kram.

Das hat "diese Community" nämlich wirklich nicht verdient und auch nicht nötig.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233


[ Dieser Beitrag wurde von whose am 30.10.2007 um 19:56 Uhr geändert. ]
 
whose   Nutzer

30.10.2007, 16:37 Uhr

[ - Direktlink - ]
Thema: Samba 2.25 - A4k/PPC & WinXP (sooo langsam...)
Brett: Amiga, AmigaOS 4

@aPEX:

Gute Fragen ;)

Zum Langsam: Das scheint auf einem 68K eher normal zu sein, SMB ist ja nicht gerade klein und ressourcenschonend. Besonders schnell läuft es auch hier nicht (auch 4000er).

Die TCP_NODELAY Zeile ist bei mir auskommentiert und mit MiamiDX bekomme ich diese Meldung für Swat nicht. Ich erinnere mich ganz dunkel, daß ich die Meldung ehedem auch mal bekam, aber das ist ziemlich lange her.

Mal ne ganz dumme Frage: Welche Samba-Version setzt Du denn ein? Eventuell hängt es ja damit zusammen.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

30.10.2007, 13:21 Uhr

[ - Direktlink - ]
Thema: TLSFMem und PAB
Brett: Amiga, AmigaOS 4

Zitat:
Original von platon42:
Zitat:
Original von gunatm:
Selbst wenn du Recht hättest, sieht das wie billige Rache aus. Hast du das nötig? Ich will ein Nein hören. ;)


Was ich sicher nicht nötig habe, ist mich mit dieser "Community" (oder was da so an Leuten übrig geblieben ist) abzugeben. Das war sicher mein letztes Produkt für den Amiga.

Du willst ein Nein hören? Nein, ich lasse mich nicht erpressen oder auf diese Art und Weise zensieren.


Du lieber Himmel... "diese Community" hat sich mit Dir eine ganze Weile abgegeben, das Schmierentheater mit Poseidon68K hingenommen und Dich bekniet, weiterzumachen. Was erwartest Du jetzt eigentlich von uns? Das wir alles kritiklos hinnehmen, was Du im Zorn verbockst?

Ich hatte ja bereits geschrieben, daß es durchaus in Ordnung geht, wenn Du einen schlechten Tag hast und denke, daß man da schnell mal etwas macht, was so ganz sicher nicht von der "freien Meinungsäußerung" abgedeckt ist.

Aber verdammt nochmal, das war keine Meinungsäußerung, die Du da losgelassen hast, das war (und ist) klipp und klar eine Beleidigung, Rufschädigung und was weiß ich, was Dir ein mittelmäßiger Anwalt im Normalfall dafür "reindrücken" würde.

Was ist eigentlich so schwer daran, einfach mal etwas Dampf abzulassen, auf wirklich gutgemeinte Ratschläge anderer zu hören (sprich: die Beleidigung aus dem ReadMe herausnehmen oder wenigstens so weit entschärfen, daß sie wirklich als "freie Meinungsäußerung" durchgehen würde) und vor allem: Nicht alle über einen Kamm zu scheren.

Es ist ja keineswegs so, daß Dir jeder hier (und aus "dieser Community" allgemein) ans Bein pinkeln will... im Moment tust Du aber so, als wären ausnahmslos alle Amiganer "Trolle und Idioten" (Zitat) von dem Kaliber, daß Dir so schwer zu schaffen macht. Sind sie aber nicht.

Also, sei bitte so fair und halte "diese Community" in ihrer Gesamtheit aus diesem Kindergarten-Scheiß heraus. Es gibt durchaus Sachen, die Du nicht verdient hast (gewisse Firmen, gewisse Leute), aber es gibt auch Sachen, die wir nicht verdient haben.

Z.B. als Ablaßventil für Deinen Zorn herhalten zu müssen, und das nicht zum ersten Mal.

Wie schon erwähnt, wenn Du der Ansicht bist, daß Reden hilft, dann sag das bitte. Ich bin bereit, da noch ein Mal als Teil "dieser Community" meinen aktuellen Zorn runterzuschlucken und mit Dir darüber zu reden. Aber nach dieser Aktion und nach diesen Worten über "diese Community" ist das definitiv das letzte Mal, ich lasse mich nämlich auch nur äußerst ungern erpressen.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

27.10.2007, 20:01 Uhr

[ - Direktlink - ]
Thema: Registerzugriff in C
Brett: Programmierung

Grüezi! :)

Zitat:
Original von jolo:

Hmmm, da habe ich aber Mist gebaut wenn's keiner versteht...
Software-Interrupts werden natürlich auch von einem Hardwarebaustein generiert, allerdings liegt es am Betriebssystem die Hardwarekomponenten auszuwählen, die für diesen Vorgang nötig sind.


Mir war das soweit schon klar, es ist nur schwer zu vermitteln über den Beispiel-Code ;) Der Beginner sieht nur, daß da ein Signal vom timer.device gesendet wird und denkt im ersten Moment "Ah, wie ich das vorher auch schon gemacht habe. Wozu dann aber den SoftInt? Welchen Gewinn habe ich dadurch? Ist ein SoftInt wirklich was ganz anderes als ein normaler Task? Wieso nicht direkt die CIA-Timer und deren Interrupt nutzen?"

Es ist ja nicht so, daß man jedes winzige Detail dieses Ablaufs erklären müßte, aber ein grober Überblick über die tatsächlichen Abläufe kann nie schaden und hilft u.U. auch beim Verständnis von fortgeschritteneren Techniken.

Zitat:
Zitat:
Wenn ich ehrlich bin muß ich sagen, daß ich dieses Beispiel für Anfänger wesentlich schwerer zu durchschauen finde, weil dort nicht so wirklich klar wird, auf welche Weise der SoftInt "aufgerufen" wird bzw. was diesen Interrupt eigentlich auslöst.

Da gebe ich Dir vollkommen Recht. Das Problem bei der Amiga-Programmierung ist, dass wir immer verstehen wollen, wie was funktioniert, weil wir auch immer die Strukturen von Hand initialisieren müssen. Unter anderen Betriebssystemen benutzt man Funktionen, die keinen Einblick auf die Zugrunde liegenden Eigenschaften gewähren, also mehr oder weniger Black-Boxes nacheifern.


Das ist leider so unter anderen OSsen und führt auch oft zu einem völligen Mißverständnis der zugrunde liegenden Prinzipien. Ich denke, grundlegendes Verständnis der Technik kann nie schaden, Vorteile von Blackboxes hin oder her. Ich habe festgestellt, daß Blackbox-Prinzipien immer erst dann verstanden werden, wenn man tiefer in die Materie eingestiegen ist und die Probleme selbst kennengelernt hat, die bei "Hardware-Banging" auftreten. Learning by doing ;)

Ging mir selbst übrigens auch oft so ;)

Zitat:
Das Amiga-Betriebssystem ist eigentlich sehr ausgeklügelt angelegt, was die Effizienz der Hardware angeht - es gibt natürlich auch hier Ecken und Kanten - allerdings mangelt es an Dokumentationen, wie man was verwenden soll.

Dein Wort in der Friedens Ohren...

Zitat:
Wir benutzen z.B. das Timer-Device um eine gewisse Zeitspanne zu warten, ohne zu Wissen, dass es den CIA-A Baustein in Beschlag nimmt.
Wir benutzen das Timer-Device um Interrupts zu generieren, ohne zu Wissen, dass es entweder den CIA-A/CIA-B Baustein oder auch die Video-Hardware benutzt, um in bestimmten Zeitabständen eine bestimmte Aktion zu tätigen.


Ich sags mal so: Das sind Irrtümer, die hauptsächlich den Blackbox-Spezialisten unterlaufen. Aus eben dem Grund, weil sie die Technik dahinter gar nicht kennen, nicht wissen, was innerhalb der Blackbox im Groben abläuft, auf welchen Bausteinen/technischen Merkmalen die Blackbox basiert usw.


Zitat:
Zurück zu unserem Beispiel.
Wie oben eingeräumt, gebe ich Dir vollkommen Recht; das Beispiel ist wirklich nicht ganz einfach zu verstehen.

Es wird ein "echter" Interrupt generiert - allerdings nur einmal aufgerufen (StartIRQ).
Da wir einen wiederkehrenden Interrupt benötigen, jedoch unsere Interrupt-Routine nur einmal aufgerufen wird, greifen wir zu einem Trick. Wir starten innerhalb unseres Interrupts unseren Interrupt erneut - dabei sagen wir dem Timer-Device, dass es erst nach soundsovielen Sekunden uns erneut aufrufen soll.
Nachdem dies geschehen ist und unser Interrupt beendet wurde, vergehen soundsoviele Sekunden bis unser Interrupt erneut aufgerufen wird - und wir wiederholen das Prozedere.


Ja, der Teil ist eigentlich leicht verständlich ;) Man fragt sich als Anfänger aber automatisch, was die Quelle des Aufrufs ist, sieht nur das Signaling, kümmert sich nicht weiter um die "Kleinigkeit" PA_SOFTINT und spart sich darüber dann auch die Mühe, das nicht ganz einfach verständliche Kapitel "Exec: Interrupts" in den RKMs gründlich zu lesen, weil das ja dem normalen Task-Signaling sehr ähnlich ist. Daß das timer.device in diesem Fall mit Cause() statt Signal() arbeitet, bekommt man gar nicht mit ;)

Zitat:
Nehme an, Du müsstest in einer Schleife jedes Mal 400 Millisekunden warten um irgendeinen Wert, der sich alle 400 Millisekunden ändert, zu lesen. Im Prinzip rufst Du dann auch immer DoIO() auf - vorher hast Du die "Auszeit" mit 400 Millisekunden festgelegt.
Im Prinzip verwenden wird das Gleiche für unseren Interrupt, sagen aber dem Timer-Device, dass es keinen Prozess/Task etwas signalisieren soll (mp_SigTask), sondern einem Interrupt (PA_SOFTINT) und verwenden nicht DoIO sondern BeginIO.


Und hier wird es dann endlich klar, daß der SoftInt wirklich ein Int ist, der via Cause() gestartet wird ;)

Zitat:
Zitat:
Ich denke nicht, daß ein Unerfahrerener so ohne weiteres kapiert, daß dieser "Interrupt" quasi wie ein normaler Task via Signal vom timer.device "aufgeweckt" wird (was ja keineswegs der landläufigen Vorstellung von einem Interrupt entspricht).

Wie gesagt, deshalb habe ich ja auch versucht zu erklären, warum ich so gerne das Ganze abstrahiert hätte. Ist mir ganz klar nicht gelungen. :(


Meiner Meinung nach für das Verständnis der ganzen Sache aber weit dienlicher in dieser Form. Abstrahiert wäre das Ganze für einen Anfänger auch abstrakt (d.h. ohne jeden Ankerpunkt für das Verständnis) geblieben.

Zitat:
Ich hätte zudem darauf hinweisen müssen, dass nicht das Timer-Device den Interrupt auslöst sondern nur anfordert.
Auslöser ist Cause() - und das verursacht den Level-1 Interrupt - durch das Setzen des 2. Bits im INTREQ Register ($DFF09C). Damit ist wiederum der Hardwarebaustein gefunden, der erst einen Level-1 Interrupt unter Classics ermöglicht, Agnus.


Ah, und wieder ein Anhaltspunkt mehr für ausgiebige Lektüre der RKMs mit ein klein wenig Hintergrundwissen ;) Jetzt verstehe sogar ich wieder ein klein wenig mehr, was mir vorher nie so ganz klar geworden ist. Danke schön! :)

Zitat:
Ich fand das erste Beispiel jedenfalls schön praxisbezogen und gut dokumentiert, Abstraktion wie im letzten Beispiel ist eigentlich ein Thema für fortgeschrittenere Programmierer und für seine Zwecke auch gar nicht wirklich nötig.

Zitat:
Wie gesagt, den Datentyp wollte ich verstecken - das geht aber nicht bei nur einem Quellcode...
Stelle Dir vor, die drei Funktionen wären in einer Link-Lib. Der Datentyp den InitIRQ() zurückgibt würde in einer Include-Datei mit "VOID *" spezifiziert anstatt mit "struct TimeOutIRQData *" - und nur die drei Funktionen wüssten, das "VOID *" in Wirklichkeit "struct TimeOutIRQData *" wäre. Wäre es dann nicht extrem leicht für einen Nutzer, diese Funktionen zu verwenden?


Wäre es ohne VOID * auch, zumindest für AmigaOS-Gewöhnte ;)

Aber hast schon Recht, bei konkreten Implementierungen muß man nicht unbedingt wissen, wie sie intern funktionieren. Deine Erläuterungen hier haben aber definitiv dazu beigetragen, die Abläufe im OS und die Stolperfallen, die auf einen lauern können, besser zu verstehen, da bin ich absolut sicher. Nochmals vielen Dank dafür!

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

27.10.2007, 14:22 Uhr

[ - Direktlink - ]
Thema: Registerzugriff in C
Brett: Programmierung

Salve! ;)

Zitat:
Original von jolo:

Zitat:
Groß auf Funktion testen konnte ich es mangels Sampler allerdings nicht ;-)

Da seit Jahren mein A4000 im Keller verbannt ist, kann ich es auch nicht mehr testen...
Und meinen Digitizer an den PC anschließen - hmmm, nicht mein Ding. :}


Ich schätze mal, es funktioniert. Sound wird auf jeden Fall "ausgegeben", auch wenn ich hier (mangels Daten) nichts höre.

Zitat:
Zitat:
Ein Knackser zum Start dürfte aber darauf hinweisen, daß es versucht, Audio abzuspielen. Beenden ließ es sich mit Break-C ebenfall problemlos.

Ja, das Knacksen bedeutet, dass Daten an die Harware transferiert werden. Müsste aber schnell vorbei sein - es werden ja keine unterschiedliche Werte gelesen.


Ein "Knackser" ist per (Audiophilen-) Definition kurz ;) Aber richtig, danach ist Ruhe.

Zitat:
Zitat:
Nachtrag: Es scheint aber die Sound-Emulation von WinUAE zu beeinflussen, der Windows-Sound klingt reichlich verbogen nach Start des Audio-Grabber. Eine Ahnung, was dafür verantwortlich sein könnte?

Das ist ein Fehler von WinUAE bzw. Windows-XP. Auch ohne AudioGrabber passiert dies bei mir hin und wieder. Meistens reicht es aus, WinUAE neu zu starten. Wenn's dann noch nicht klappt, PC neu starten...
Entweder dies ist ein Initialisierungsfehler von WinUAE oder es hat mit dem unzureichenden Timing unter XP zu tun.
Windows ist nicht gerade ein Timing-Weltmeister.


Ok, dann weiß ich mehr. Es reicht bei mir, nach dem Break-C die WinUAE-Konfiguration mit F12 zu aktivieren, um den verbogenen Windows-Sound wieder "geradezubiegen".


Zitat:
Zitat:
Sehr schönes Beispiel für Interrupts in C übrigens, vielen Dank dafür!

Man sollte den Code mit Vorsicht genießen - er ist dermaßen hardwarenah geschrieben, dass der Interrupt weder unter Amithlon, OS4 noch MorphOS zum Laufen gebracht werden kann. Erstens gibt es dort keine CIAs, noch ist "poken" dort erlaubt.
Da allerdings der parallele Port direkt ausgelesen wurde, gehe ich davon aus, dass die Hardwarevoraussetzungen für diesen Typ von Interrupt erfüllt sind.


Ja gut, auf die evtl. nicht vorhandenen CIAs sollte man natürlich achten. Aber grundsätzlich war es ein schönes Beispiel für Interrupts in C mit Bezug zur Praxis. Ich denke nicht, daß SoftInterrupts so häufig Verwendung finden, es sei denn, man möchte dafür Sorge tragen, daß einen das Multitasking nicht bei zeitkritischen Aufgaben ausbremst. Hardware-Interrupts sind meiner Meinung nach eigentlich häufiger anzutreffen (u.A. für die CIA-Timer).

Zitat:
Ein schönes Beispiel, in meinen Augen, folgt jetzt.
Dieses benutze ich in abgewandelter Form in echten Applikationen.
Sollte unter OS4, Amithlon und MorphOS auch laufen.
Es ist ein Level-1 Interrupt - somit können gefahrlos andere Interrupts von diesem aus aufgerufen werden. Zudem wird selbst bei rechenintensivem Code innerhalb des Interrupts das System nicht schwerwiegend beeinflusst, da ja alle systemkritischen Interrupts mit einer höheren Priorität arbeiten. Nur Prozesse laufen mit einer niedrigeren Priorität.


Wenn ich ehrlich bin muß ich sagen, daß ich dieses Beispiel für Anfänger wesentlich schwerer zu durchschauen finde, weil dort nicht so wirklich klar wird, auf welche Weise der SoftInt "aufgerufen" wird bzw. was diesen Interrupt eigentlich auslöst. Es wird auch nicht ganz klar, welchen Nutzen man daraus ziehen kann, daß "andere Interrupts" davon aufgerufen werden können.

Für die Vorstellung Vieler dürfte ein Interrupt etwas "im Wesen deutlich verschiedenes" zu Tasks/Prozessen sein, diese Beispiel zeigt aber im Grunde (korrigiere mich, wenn ich da falsch liege) einen Task, der teilweise aus dem "normalen" Multitasking rausgenommen und auf Interrupt-Ebene verlagert wurde.

Ich denke nicht, daß ein Unerfahrerener so ohne weiteres kapiert, daß dieser "Interrupt" quasi wie ein normaler Task via Signal vom timer.device "aufgeweckt" wird (was ja keineswegs der landläufigen Vorstellung von einem Interrupt entspricht).

Da war das CIA-abhängige Beispiel schon etwas informativer bzw. einfacher zu begreifen, finde ich.

Ok, MaikG hat noch so seine Probleme mit dem Verständnis, das liegt aber wohl eher an mangelnder Erfahrung mit C und mit dem System AmigaOS (er hackt ganz gern ;) ).

Ich fand das erste Beispiel jedenfalls schön praxisbezogen und gut dokumentiert, Abstraktion wie im letzten Beispiel ist eigentlich ein Thema für fortgeschrittenere Programmierer und für seine Zwecke auch gar nicht wirklich nötig (mal davon abgesehen daß ihm derzeit noch das Verständnis für Blackboxes fehlt)

Mit etwas mehr Erläuterungen, zum Beispiel wofür sowas wie ein SoftInt eigentlich gut ist und wie man den, außer in Verbindung mit dem timer.device, in der Praxis nutzt, ist es aber sicherlich auch ein sehr schönes Beispiel für Interrupts in C :)

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

26.10.2007, 22:28 Uhr

[ - Direktlink - ]
Thema: Neues Gehäuse für einen 4000er
Brett: Amiga, AmigaOS 4

Zitat:
Original von Mika:
Zitat:
Original von Marcus:
@Mika:

ich meinte ja auch nicht das der in einen pc tower soll,...

ich dachte nur das es eventuell einen atx tower gibt, der baugleich ist, und als ersatzteilspender dient...


Ich habe bis heute keinen Tower gefunden wo die Maß halbwegs passen würden da der Elbox 23 cm breit ist!


Er hätte schmaler sein können (ganz so hoch ist das Konstrukt aus MoBo und Zorro-/Mediator-Daughterboard nicht), aber das hätte eine Umarbeitung des Blechs der Rückseite bedingt, die über das Stanzen neuer Löcher für die Amiga-MoBo-Anschlüsse hinausgeht, weil man bei moderneren Towergehäusen weniger Platz für die Anschluß-Durchbrüche zur Verfügung hat.

Noch dazu ist einem oftmals die Deckelfalz des Seitendeckels im Weg, da müßte man ebenfalls Ausbrüche machen usw.

Das haben die sich mit diesem fetten Monster gespart, denn der hat von vornherein genug Platz für die Anschluss-Durchbrüche auf der rechten Seite (wenn man sich das anschaut sieht man, daß neben der Falz des Seitendeckels weit mehr als ein Zentimeter Platz ist, was bei modernen Gehäusen nicht der Fall ist. Da konnte man recht bequem die Rückseite abnehmen, die zusätzlichen Löcher stanzen und die Rückseite dann wieder draufnieten).

BTW., der Elbox-Tower ist kein ATX-Tower, sondern ein AT ;)

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

25.10.2007, 22:21 Uhr

[ - Direktlink - ]
Thema: Registerzugriff in C
Brett: Programmierung

@jolo:

Also, ich hab das 1. AudioGrabber gerade mal durch den vbcc gescheucht (Cubic-Installation), Compilerlauf war völlig problemlos (keine Warnungen oder Fehler). Groß auf Funktion testen konnte ich es mangels Sampler allerdings nicht ;-)

Ein Knackser zum Start dürfte aber darauf hinweisen, daß es versucht, Audio abzuspielen. Beenden ließ es sich mit Break-C ebenfall problemlos.

Sehr schönes Beispiel für Interrupts in C übrigens, vielen Dank dafür!

Grüße

Nachtrag: Es scheint aber die Sound-Emulation von WinUAE zu beeinflussen, der Windows-Sound klingt reichlich verbogen nach Start des Audio-Grabber. Eine Ahnung, was dafür verantwortlich sein könnte?

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233


[ Dieser Beitrag wurde von whose am 25.10.2007 um 23:14 Uhr geändert. ]
 
whose   Nutzer

19.10.2007, 16:22 Uhr

[ - Direktlink - ]
Thema: Eine ganz kurze A4000 Uhrenakku Frage!
Brett: Amiga, AmigaOS 4

Zitat:
Original von Mirko_Naumann:
Also mein 4000T war wohl auch aus der letzten Produktion. Auf dem sind nur zwei Pins (so wie für Jumper), an denen ein Stecker mit Batterie 3,6 V angesteckt war. Daher war es total simpel, ein Batteriefach mit Batterien anzuschließen.

Mein 1200er hat ein Mikronik Z3 Board für 4000er Turbokarten. Mit Uhr ist da nix. Deswegen mußte ich ein Uhrmodul auf den Uhrenport stecken. Und da ist nix mit Ladefähigkeit gewesen.

Aber gut - wieder was dazu gelernt: es gibt verschiedene Versionen.


Ja, das ist richtig... und irgendwie hast Du das Kunststück hinbekommen, nur batteriegepufferte Uhren zu haben. Das gibt es auch nicht oft ;)

Trotzdem ist bei den Classics ein Akku (bei den älteren Amigas NiCd in Tonnenform, bei den neueren auch oft Lithium in Eine-Knopfzelle-Form, was man ja leicht mit einer Knopfzellen-Batterie verwechselt) deutlich häufiger anzutreffen als eine nicht-wiederladbare Alkali-Batterie in Knopfzellenform. Ich habe hier z.B. nur akkugepufferte Uhren in meinen A1200/4000/600/1000. Ich hatte in der ganzen Zeit nie eine Uhr/Uhrenerweiterung mit Knopfzellen-Batterie in irgendeinem meiner Rechner verbaut.

Als kleinen Anhaltspunkt kann man ja nochmal auf das Unterscheidungsmerkmal hinweisen: Knopfzellen mit einem U vor der Nummer sind Akkus, CR XXXX sind nicht-wiederaufladbare Batterien.

Nicht, daß sich jemand aus Unwissen mal eine TK mit Uhr oder einen 4000T der ersten Serie "sprengt".

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

19.10.2007, 16:11 Uhr

[ - Direktlink - ]
Thema: Eine ganz kurze A4000 Uhrenakku Frage!
Brett: Amiga, AmigaOS 4

Zitat:
Original von Sperrmuell:

Zitat:
Original von whose:
Selbst bei den RAM-Erweiterungen war es eher ungewöhnlich, die Uhr mit einer Knopfzelle zu füttern, bei den 500ern noch weit seltener zu finden als bei den 1200ern und auch dort war das eigentlich ziemlich selten.


Beim A1200 wohl kaum, da gibt es dutzende Ram-Erweiterungen, die alle eine Knopfzelle haben (u.a. von Phase5, DKB, Micronik, Microbotics, M-Tec, Elsat). Beim A500 trifft dies schon eher zu.


Bist Du Dir da sicher, daß es sich dabei nicht um Akkus handelt?

Wechselbare Knopfzellen-Batterie habe ich nur bei der DKB-Erweiterung und bei der von Mikronik gesehen, ansonsten sind die "Knopfzellen" grundsätzlich fest verbaut, geklebt oder gelötet.

Wir hätten uns wohl vorher darauf einigen sollen, ob es nur um die Bauform oder doch mehr um die Batterie-Technik gehen soll. Mir ging es darum, daß die meisten Erweiterungen einen Akku (wenn auch aus Platzgründen meist in Form einer Lithium-Knopfzelle) besitzen und keine Batterie.

Es wäre nicht das erste Mal, daß jemand versucht, den platten Panasonic U2020/U2032-Akku auf einer Blizzard12x0-TK mit einer Knopfzellen-Batterie zu ersetzen, weil er es nicht besser weiß.

Grüße


--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

19.10.2007, 04:13 Uhr

[ - Direktlink - ]
Thema: Eine ganz kurze A4000 Uhrenakku Frage!
Brett: Amiga, AmigaOS 4

Zitat:
Original von Sperrmuell:
Der A4000T hat von Hause aus eine Lithium Batterie, da liegt natürlich kein Ladestrom an. Das gilt auch für den A4000D Rev.D mit gleicher Batterie.

Alle anderen Modelle, die von Werk aus eine Batterie bzw. Akkumulator haben, wie A500+, A2000, A3000D, A3000T und A4000D habe alle Ladestrom.

Wie das Dritthersteller auf deren Produkte gelöst haben ist sicher wieder eine ganz andere Sache.


Mag sein, daß ich mich jetzt irre, weils wirklich schon lange her ist, aber die ersten Serien-A4000T hatten wohl durchaus noch Ladestrom, der per nachträglich eingelöteter Diode "deaktiviert" wurde, um die (billigeren) Knopfzellen einsetzen zu können.

Ich erinnere mich dunkel an eine Anleitung in irgendeinem Magazin, um den Kisten wieder einen Akku statt der Knopfzelle zu verpassen und den "Aufschrei", dens davor gab, als man bei Vorstellung der Serienmodelle die Knopfzelle statt des noch in den kurz zuvor gezeigten Vorserienmodellen des T vorhandenen Akkus entdeckte...

Selbst bei den RAM-Erweiterungen war es eher ungewöhnlich, die Uhr mit einer Knopfzelle zu füttern, bei den 500ern noch weit seltener zu finden als bei den 1200ern und auch dort war das eigentlich ziemlich selten.

Da Mirko aber wohl genau diese Konstellationen hatte, sei es ihm verziehen, daß er diese "Warnung" abgegeben hat. Ich selbst kenne sämtliche Modelle der Classic-Reihe bis auf den 4000D Rev. D und die zur selben Zeit hergestellten 4000T nur mit Akku und hatte auch nur eine einzige RAM-Erweiterung mit RTC für den 1200er auf einer der Köln-Messen in der Hand, die keinen Akku trug.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

18.10.2007, 23:55 Uhr

[ - Direktlink - ]
Thema: Eine ganz kurze A4000 Uhrenakku Frage!
Brett: Amiga, AmigaOS 4

@Sperrmuell:

liest sich so, als hätte da jemand die Classics in erstaunlich kurzer Zeit vergessen ;) Für "die" drei AmigaOnes ist das ja zutreffend, nur für alle anderen Amigas nicht :D

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

26.09.2007, 18:25 Uhr

[ - Direktlink - ]
Thema: cv64 3D Problemchen :)
Brett: Amiga, AmigaOS 4

Zitat:
Original von Neodym:
Zitat:
Original von Bluebird:
was mir aber sofort aufgefallen ist das die 3d wohl die einzige karte war bei der mit cgx screen drag wieder geht


Das geht nicht nur auf der CV3D. Das liegt an CGX, welches auf fast allen "alten" (Amiga-)Graphikkarten Screen-Dragging ermöglicht. Erst ab der CVPPC ging das nicht mehr, weil bestimmte Hardwarefunktionalitäten in den Graphikchips nicht mehr vorhanden sind. Und ein Workaround in Software wäre zu aufwendig geworden bzw. hätte unter mangelnder Rechenleistung der Amiga-Hardware gelitten.


*hust* Um genau zu sein, es ging eigentlich nur auf den beiden Zorro-CyberVisions und der Merlin (2? Weiß ich gar nicht mehr so genau, ist lange her), weil diese Karten eine dem Screendragging entsprechende Funktionalität in Hardware hatten.

Auf den Tseng- oder ET-basierenden Karten geht das Screen-Dragging auch mit CGFX nicht. Wäre mir jedenfalls neu, daß man mit einer Picasso2 Screendragging unter CGFX veranstalten könnte.

Möglich, daß es auch mit noch älteren Karten wie denen von GVP ging, das kann ich aber beim besten Willen nicht sagen, da ich diese Karten nie selbst in Aktion erlebt habe.

Grüße


--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

22.09.2007, 02:34 Uhr

[ - Direktlink - ]
Thema: A590: Netzteil öffnen
Brett: Amiga, AmigaOS 4

@AmigaDepot:

Hat das Netzteil an den Ecken diese runden Plastik-"Füße", also so Nöppel? Wenn ja, hebel die mal aus ihrem Sitz (sind geklebt) und schau mal, ob sich die Schrauben darunter verbergen. Wird gern gemacht, um die "häßlichen Schraubenköpfe" zu verdecken.

Ich kann mir nicht so ganz vorstellen, daß das Gehäuse nur an den Ecken verklebt sein soll (wenns denn überhaupt geklebt ist), weil solche Verklebungen auf Dauer wohl nicht halten würden (Scherkräfte, sowas mag Kleber im Allgemeinen überhaupt nicht). Wenn, dann wäre es wohl an der gesamten Stoßlinie verklebt bzw. mit Rastnasen stabilisiert und Du könntest es nicht in der Mitte auseinanderdrücken.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

20.09.2007, 21:12 Uhr

[ - Direktlink - ]
Thema: A4000D Ersatz-Mainboardbattrie
Brett: Amiga, AmigaOS 4

@Mnemonic:

Schau mal bei reichelt.de da habe ich meinen 3GP-60-Akku auch her. Kann allerdings zwischendurch mal sein, daß die Dinger nicht lieferbar sind, da solltest Du bei einer möglichen Bestellung drauf achten.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

16.09.2007, 13:44 Uhr

[ - Direktlink - ]
Thema: Timing nochmal
Brett: Programmierung

Zitat:
Original von MaikG:

So, habs nochmal getestet:
code:
WHILE myseconds%<10
        POKEW tr& + IORequestio_Command%, TR_ADDREQUEST&
        POKEL tr& + tr_time% + tv_secs%, 0&
        POKEL tr& + tr_time% + tv_micro%, 44& REM 125=8000Hz
        SendIO&(tr&)
        INCR mycount%:IF mycount%=8000 THEN mycount%=0:INCR myseconds% REM 11.39   
        junk& = WaitIO&(tr&)
        REM INCR mycount%:IF mycount%=8000 THEN mycount%=0:INCR myseconds%    rem 11.41   11.46 mit DOIO
      WEND


Also keine großen berechnungen, nur die sekundenzählung.
Bei 10sek mit 44 micros, entweder 11.39 sek oder 11.41(siehe Position).
Wie erwähnt, sind aber 44 keine 8000 HZ sondern wesentlich mehr.
Bei 125 komme ich auf etwa 18 sekunden.
In dem Minicode kann ja kaum ein Fehler sein.


Naja, in dem Minicode an sich nicht. Ok, die 8000 ist etwas "daneben", weil man bei 44 auf irgendwas um die 22KHz kommen müßte.

Nur verstehe ich wirklich nicht, wieso das nur bei Dir wesentlich langsamer läuft. Der "Minicode" läuft bei mir (gemessen mit EClock) auf dein paar Mikrosekunden genau und man kann das Spielchen bequem bis zu einem Wert von 22 treiben (wahrscheinlich auch noch wesentlich weiter), ohne daß sich an der Genauigkeit etwas ändert.

Allerdings habe ich keine Ahnung, was MaxonBASIC (das verwendest Du doch?) daraus macht...

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

16.09.2007, 05:40 Uhr

[ - Direktlink - ]
Thema: Timing nochmal
Brett: Programmierung

@Mad_Dog:

Danke für die Links. Das bestätigt nochmal, was ich mir bereits (trotz technischer Unwissenheit auf dem Gebiet) dachte. Man hat demnach (abhängig vom Typ des A/D-Wandlers) etwas Zeit, bevor der nächste Wert ansteht und der Wandel-Vorgang an sich läuft in einem bestimmten Takt ab.

Wenn man diesen Zeitrahmen überschreitet, der sich aus dem Wandlertakt ergibt, arbeitet man am Wandlertakt vorbei und verliert irgendwann zwangsläufig Werte bzw. liest Werte mehrfach. Ist das so korrekt gedacht?

Wenn ja, dann würde das bedeuten, daß man mit bestimmten Samplefrequenzen letzten Endes am "Leiern" gar nicht vorbeikommt, wenn der Samplevorgang zu lang angesetzt ist, da sich der Abtast-Takt und der Wandlertakt mit der Dauer des Samplevorgangs bei diesen Frequenzen auf jeden Fall gegeneinander verschieben und man im ungünstigen Fall mehrfach "alte" Werte liest oder mehrfach Werte "überspringt".

Eine Sample-Frequenz von z.B. 10000 wäre dann per se schon eine schlechte Idee, wenn der Wandler auf die "üblichen" Frequenzen von z.B. 22,05KHz getrimmt ist. Man kann dann nur geradzahlig gebrochene Frequenzen der maximalen Samplingfrequenz des Wandlers einigermaßen korrekt abtasten, also z.B. 11,02KHz oder 5,51. Die dazwischen liegenden Abtastfrequenzen wären dann nur "mehr oder weniger" brauchbar, je nach Verhältnis Samplefrequenz/Wandlerfrequenz und Dauer des Vorgangs.

Wenn ich hier jetzt falsch denken sollte, dann klärt das bitte auf. Wenn ich aber richtig denke, dürften wir dem "Fehler" schon um ein ganzes Stück nähergekommen sein.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

16.09.2007, 02:31 Uhr

[ - Direktlink - ]
Thema: Timing nochmal
Brett: Programmierung

Zitat:
Original von Mad_Dog:
Ich habe mir nochmal meinen Code von damals angeschaut.

Zur Erinnerung poste ich hier nochmal die Stelle, wo ich die Daten für ein Zeitfenster einlese:

...

Wie man sieht, hole ich den Wert vom Parallelport (ja, böse - ich lese direkt aus dem CIA-Register), sende dann ein Timer-Request und warte dann, bis ich eine Antwort erhalte. Optional hätte ich das Auslesen des Wertes auch zwischen dem SendIO und WaitIO machen können, wenn ich davon ausgehe, dass das fix genug geht.


So hätte ich das auch gemacht. Was ich mich allerdings bei den Samplern frage ist folgendes: Geht die Wandlung da immer mit "Fullspeed" oder wie wird das gehandhabt? Ich stelle mir das eigentlich immer als getakteten Vorgang vor und was passiert dann, wenn man mit dem Auslesen des Werts "außerhalb" des Wandlertakts liegt?

Was mir noch an Maiks Code aufgefallen ist: Er benutzt immer noch UNIT_ECLOCK, obwohl man ihm damals schon gesagt hat, daß UNIT_MIKROHZ praktikabler ist (und nicht ungenauer).

@MaikG

Benutz doch bitte mal UNIT_MIKROHZ, wie Mad_Dog es hier zeigt. Und bitte spiel das Sample erst nach dem kompletten Sample-Vorgang ab, um das zu überprüfen. Ich wette, da leiert es auf einmal nicht mehr.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

16.09.2007, 00:00 Uhr

[ - Direktlink - ]
Thema: Timing nochmal
Brett: Programmierung

Zitat:
Original von MaikG:
>Was darauf hinweist, daß Dein Timing (aus welchem Grund auch immer) unregelmäßig abläuft.

Sagte ich doch. Ich möchte sagen der Code ist von dir.


Ich möchte sagen, der Code ist keineswegs von mir, das ist Deiner. Nachdem ich mir den BASIC-Code nun etwas genauer angesehen habe, möchte ich sogar sagen: Der Code ist keinesfalls von mir, denn da passiert genau das, was ich schon die ganze Zeit bemängele.

Die äußere FOR-Schleife z.B.... da unterbrichst Du den Takt mit Sicherheit, denn da passiert viel zu viel anderes, bis der nächste Request auf den Weg geht. Der Zeitraum zwischen Empfang der Message und dem nächsten Request muß so kurz wie irgend möglich sein, damit das nicht zu schnell "wegläuft".

Normalerweise müßtest Du das Ganze vorher auch noch kalibrieren, damit es Langzeit-stabil läuft. Denn die Zeit, die zwischen Message und nächstem Request vergeht, müßtest Du streng genommen vom gewünschten Warte-Intervall abziehen.

Desweiteren ist es eigentlich großer Käse, ein bekanntes Intervall (dort: 50 Sekunden) nochmal in 1-Sekunden-Häppchen aufzuteilen. Warum machst Du das denn so?

Zitat:
Übrigens wird bei Multimon - 18000 HZ eine CPU Last von ganzen
5% angezeigt.


Wo kann man dieses ominöse Multimon eigentlich herbekommen? Ich habe gestern schon mal danach gesucht, aber finde nichts dergleichen, nur Zeugs für Multi-Monitor-Betrieb.

Ich persönlich glaube nämlich nicht daran, daß es ohne den Timer-Interrupt des CIAs arbeitet. Übrigens, man kann seine eigene Interrupt-Behandlung in eine sog. Interrupt-Server-Chain einhängen, das wird also nicht unbedingt als richtiger Interrupt angezeigt und inwieweit Scout das anzeigt weiß ich auch nicht.

Maik, ich kann Dir immer noch nur folgenden guten Rat geben: Untersuch Dein Programm genau, erkläre nicht alle, die Dir nicht auf Anhieb helfen können für inkompetent und vor allem setz die Ratschläge doch einfach mal so um, wie sie Dir gegeben werden.

Dein BASIC-Programm von oben läuft jedenfalls nicht so, wie man es Dir angeraten hat, im Gegenteil. Und es ist auch nicht das, was man Dir in dem DTMF-Thread als Hinweis gegeben hat.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

15.09.2007, 14:27 Uhr

[ - Direktlink - ]
Thema: Timing nochmal
Brett: Programmierung

Zitat:
Original von MaikG:
>Der Leiereffekt kommt dadurch genauso zustande wie das scheinbar
>ungenaue Timing-Verhalten (das Problem in dem Thread damals, was
>wir dann ja zu einem großen Teil "beheben" konnten).

Da gings um zu große abweichungen beim Timing. Ein Prog was
halbwegs was erkennt lief nur auf den 68060. Das halbwegs
wird dann auch vom leiern sein.


Das eine hängt aber auch mit dem anderen zusammen.

Zitat:
>Stell Dir ein Zeitdiagramm mit senkrechten Flanken vor, die Plateaus
>geben an, wie viel Zeit ihm bleibt, um einen Wert ans audio.device
>weiterzureichen

Es leiert auch wenn ich eine Sekunde Sample, 1 Sekunde wiedergebe und
dann wieder Sample. Also keine Audiowiedergabe während des Samplen.


Was darauf hinweist, daß Dein Timing (aus welchem Grund auch immer) unregelmäßig abläuft.

Zitat:
Über Interrupts hab ich nicht wirklich was gefunden, aber das
Programm Multimon(macht in etwa das selbe) setzt lt. Scout zumindest
kein Interrupt.


Gut, dann wissen wir noch mehr. Es geht also, auch ohne Tricksereien mit dem CIA. Da bleibt dann nicht mehr viel, MultiMon müßte demnach auch mit dem timer.device arbeiten und vor allem entweder mit der UNIT_ECLOCK oder UNIT_MICROHZ, den UNIT_VBLANK wäre für den Zweck nicht geeignet.

Am Sinn meiner Antwort ändert das jedenfalls nichts. Irgendwo hast Du eine Unregelmäßigkeit in Deinem Timing, die mußt Du finden.

Schau Dir doch nochmal den Thread von damals an, Mad_Dog hat, wenn ich mich recht erinnere, genau aus diesem Anlaß, ein kleines Sampler-Programm geschrieben. Das funktioniert recht gut und die Sourcen kannst Du Dir auch ansehen. Eventuell fällt Dir dann ein Unterschied zu Deinem Programm auf.

@Mad_Dog:

Ich habe nicht gesagt, daß das unmöglich wäre. Ich habe nur gesagt, daß es nicht trivial ist.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

15.09.2007, 06:08 Uhr

[ - Direktlink - ]
Thema: Timing nochmal
Brett: Programmierung

@Mad_Dog:

Genau das meinte ich ja damit... wenn er die Abtasterei nicht innerhalb des "Zeitfensters" halten kann, kommt er in Schwulitäten. Der Leiereffekt kommt dadurch genauso zustande wie das scheinbar ungenaue Timing-Verhalten (das Problem in dem Thread damals, was wir dann ja zu einem großen Teil "beheben" konnten).

Das timer.device benutzt er ja, um in einem konstanten zeitlichen Abstand "hinzuschauen", aber er muß es flott "bedienen" und mögliche Störungen durch andere Tasks minimieren, damit das nicht aus dem Zeitfenster "rausrennt".

Stell Dir ein Zeitdiagramm mit senkrechten Flanken vor, die Plateaus geben an, wie viel Zeit ihm bleibt, um einen Wert ans audio.device weiterzureichen (das ist die Zeit, die bis zum Eintreffen der nächsten Message vergeht). Kann er diese Zeiten nicht halten (zum Beispiel weil er zu viel Zeit bei der Bearbeitung der gewonnenen Daten braucht, Stichwort Goertzel), gerät der Takt durcheinander. Er kommt quasi zu spät zum Wait().

Genauso, wenn die "Täler" nicht gehalten werden (welche die verfügbare Zeit zwischen Message-Empfang, Auslesen des aktuellen Wertes und Absenden des nächsten IORequests darstellen, und sie sind erheblich kürzer als die Plateaus. Streng genommen dürfte dort überhaupt gar keine Zeit "verbraten" werden, aber das geht nun mal nicht, Abtasten braucht Zeit).

Hilft halt nichts, wenn z.B. zwischen Message-Empfang und neuem Request auch noch "zufällige" Pausen eingefügt werden. Kommen z.B. zwei größere Pausen nacheinander geht ihm ein Abtastzeitpunkt flöten und er liest ein Datum weniger, als in die gewünschte Dauer hineingehört. Das passiert ein paar Mal und schon "leiert" es.

Es hat seinen Sinn, daß manche Steuerprogramme für Parallelport-Sampler das System für die Abtast-Dauer "einfrieren", 22,05KHz ist schon eine ziemlich frickelige Angelegenheit, was das Timing angeht ;)

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

14.09.2007, 18:58 Uhr

[ - Direktlink - ]
Thema: Timing nochmal
Brett: Programmierung

@MaikG:

Hm, hatte ich das damals nicht mehr erwähnt? Die "zufälligen" Ergebnisse kommen wohl dadurch zustande, daß Du in Deinem Programm nicht schnell genug auf die Message des timer.device reagierst (bzw. reagieren kannst).

Um da ein recht zuverlässiges Timing hinzubekommen (wenn Du es ganz genau haben wolltest, müßtest Du sogar mit Interrupts arbeiten), mußt Du quasi "sofort" den nächsten Request losschicken, wenn Du die Message bekommen hast, daß der vorige Request "erledigt" ist.

Wenn Du "zu viel" Zeit brauchst, kann Dir ein anderer Task "dazwischenpfuschen" und das Absenden des nächsten Requests verzögern. Diese Verzögerung ist (aus naheliegenden Gründen) natürlich nicht vorausberechenbar, der "bremsende" Task kann z.B. eine weit höhere Priorität als Deiner haben und gerade eine Menge CPU-Last verursachen, IO-Operationen in diesem Moment starten usw. usf.

Dazu kommt, daß auch das "Aufwachen", ausgelöst durch die Message vom timer.device, nicht immer in exakt der gleichen Zeit abläuft (aus den oben schon genannten Gründen, denn wenn Dein Programm noch nicht "an der Reihe ist", wirds auch nicht aufgeweckt sondern bekommt die Message etwas später bzw. wird etwas später aktiv. Dieses "etwas später" hängt natürlich auch wieder von vielen Faktoren ab, die man schlecht vorausberechnen kann). Eine gewisse (nicht feststehende) Latenzzeit ist also immer dabei.

Da ich Dich eigentlich als "och, das probieren wir einfach mal"-Entwickler kenne, dachte ich, daß Du schon mit Task-Prioritäten rumexperimentiert hättest. Spätestens da wäre es Dir aufgefallen, daß diese "zufällige" Timing-Geschichte u.A. mit der Taskpriorität Deines Programms zu tun hat.

Also, 100%-Timing wirst Du so nicht hinbekommen, aber recht nahe ans Ideal kommt man schon (für Audio in nicht allzu hoher Qualität reicht es).

Dazu solltest Du Dir Berechnungen jeder Art zwischen Empfang der Message und Senden des nächsten Requests sparen, die Priorität Deines Tasks erhöhen und vor allem möglichst wenig andere Sachen, die ordentlich CPU-Last erzeugen können, nebenbei laufen lassen.

Oder Dich in das Thema "Timer-Interrupts mit AmigaOS" einlesen.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

14.09.2007, 00:39 Uhr

[ - Direktlink - ]
Thema: C-Array? später ändern?
Brett: Programmierung

Zitat:
Original von Holger:
Zitat:
Original von whose:
Du referierst doch so gern über Standards, dann schau doch mal in den (soweit ich weiß 1991 endgültig festgelegten) ANSI-Standard für BASIC rein. Da findest Du einiges, was Du der Sprache BASIC immer und immer wieder (durch schlichte Weglassung eben dieser Tatsachen) absprichst.

Wo kann man das denn nachlesen? Ich mein, außer durch Kaufen eines in der Praxis irrelevanten Buches?

Da es in Deiner Praxis irrelevant ist, hast Du natürlich auch nicht gegoogelt und gelesen. Interessiert Dich ja nicht wirklich. Ich weiß nicht, ob man über Dinge diskutieren sollte, die einen (außer mit Blick auf die Tatsache, daß sie nicht in das persönliche Bild einer perfekten Welt passen) eigentlich nicht interessieren.

Zitat:
Zitat:
Da wären u.A. zu nennen: Lokale Variablen, Funktionen, Typprüfung und Vorabdeklaration.
Gewiss doch, es gibt einiges. Solange aber z.B. Vorabdeklaration nicht zwingend ist, stellt sie nur überflüssige Schreibarbeit dar.

Und schon wieder... wer, außer Dir, behauptet denn, daß es nicht zwingend ist?

Zitat:
Zitat:
Wenn Du allerdings nur das Minimal-ANSI-BASIC betrachtest, hast Du zweifellos Recht. Nur ist da die standardisierte Entwicklung von BASIC halt nicht stehengeblieben, wie Du es immer wieder so gern kolportierst.
In der Praxis schon. Zumindest was standardkonforme Features angeht.

Grummel... eben nicht. Es bedeutet nicht, daß in der Praxis die standardisierte Entwicklung stehengeblieben ist, nur weil Du die Entwicklung nicht mehr mitverfolgt hast.

Zitat:
Zitat:
Diese Art der Weiterentwicklung hat es übrigens bei nahezu allen Programmiersprachen gegeben und oftmals haben sich Hersteller von Compilern/Interpretern über die jeweiligen Standards hinweggesetzt, was, wie Du schon so treffend bemerktest, nichts über die Sprachdefinition an sich aussagt.
Der Versuch, grundsätzliche Schwächen einer Programmiersprache im Nachhinein zu beheben, macht aus ihr keineswegs etwas grundsätzlich anderes. Natürlich stellt es aus meiner Sicht ein erstrebenswertes Ziel dar, dass sich sowohl Compiler-Entwickler, als auch Anwendungsprogrammierer an existierende Standards halten. Das ist aber etwas völlig anderes, als aus einem nicht oder kaum in der Praxis umgesetzten Standard (einer Weiterentwicklung) eine prinzipielle Aussage über eine Programmiersprache zu treffen.

Das ist ja das Problem: Du tust es ununterbrochen (eine prinzipielle Aussage über eine Programmiersprache treffen), weil Du glaubst, daß der Standard in der Praxis nicht umgesetzt wurde.

Du vermischst munter herstellereigene Erweiterungen des z.B. höchsten und weiterentwickelten Standards mit "nicht standardkonform", weil Compilerhersteller diesen Standard nochmal spezifisch erweitern.

Selbst AmiBlitz folgt ANSI-BASIC, erweitert selbiges aber nochmal. Die Anforderungen des Standards werden beibehalten.

Das gilt nicht nur für AmiBlitz sondern für viele andere BASIC-Dialekte ebenfalls. PureBasic, TrueBasic, BlitzMax usw. usw. Das sind BASIC-Dialekte, die immer noch verwendet werden. Nicht nur hobbymäßig. Das sind in der Praxis verwendete Sprachen, unabhängig davon, wie hoch oder niedrig Du den Praxiswert einschätzt.

Zitat:
Wenn man alle Schwächen von Basic behebt, dann noch Deklarationszwang einführt und das Ganze noch um OO etc. erweitert, kommt am Ende eine Sprache heraus, die zwar nicht zu 100% zu Oberon kompatibel ist, aber trotzdem fast genauso aussieht. Warum das dann noch Basic sein soll, nun ja...

B sah ehedem auch noch ganz anders aus, heute heißt es C++. Was solls? Es stört irgendwie niemanden außer Dir, daß manche der heute verwendeten BASICs nicht mehr so aussehen wie zu Zeiten des seligen C64.

So ganz verstehe ich nicht, wo genau eigentlich Dein Problem liegt. Einerseits mokierst Du Dich darüber, daß BASIC irgendwie nicht mehr wirklich relevant ist und bringst andererseits, wenn es um den Amiga geht (auf dem BASIC für einige Leute durchaus noch relevant ist), nichts, was für die Amiga-Programmierung relevant sein könnte, außer "vernichtende" Kritiken der jeweils verwendeten Programmiersprachen, die für Amiga relevant sind.

Das Amiga-Leben für Java-Entwickler mag ja hart sein, das ändert aber nichts daran, daß Java auf dem Amiga derzeit keine praktische Bedeutung hat, egal, wie geil man es persönlich findet. BASIC hingegen hat eine praktische Bedeutung auf dem Amiga, egal, wie schlecht man es persönlich findet. Es ändert nichts an den Tatsachen, wenn man ständig dagegen zu Felde zieht und zu diesem Zweck halbgare Argumente und schlechten Diskussionsstil verwendet.

Zitat:
Zitat:
Eine Sprache, in der man sich nicht mißverständlich oder gar unsinnig ausdrücken kann, ist eine tote Sprache, weil sie keine Kreativität erlaubt.
Mag für menschliche Sprachen gelten. Für Programmiersprachen nicht.

was zeigt, daß Du den Sinn nicht verstanden hast. Ohne "Fehler" keine Weiterentwicklung.

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

13.09.2007, 19:39 Uhr

[ - Direktlink - ]
Thema: C-Array? später ändern?
Brett: Programmierung

Zitat:
Original von Holger:

Und so gilt auch für Basic, dass Basic erst einmal die grundlegende Sprache ist, wie sie einst definiert wurde und von fast allen Basic-Dialekten erst mal unterstützt wird. Was darüber hinaus einige Dialekte machen, sagt nichts über Basic aus.


Einspruch, Euer Ehren...

Du referierst doch so gern über Standards, dann schau doch mal in den (soweit ich weiß 1991 endgültig festgelegten) ANSI-Standard für BASIC rein. Da findest Du einiges, was Du der Sprache BASIC immer und immer wieder (durch schlichte Weglassung eben dieser Tatsachen) absprichst.

Da wären u.A. zu nennen: Lokale Variablen, Funktionen, Typprüfung und Vorabdeklaration.

Also all das, was nach Deiner Aussage nur "Dialekt-abhängig" ist. Ist es nicht.

Wenn Du allerdings nur das Minimal-ANSI-BASIC betrachtest, hast Du zweifellos Recht. Nur ist da die standardisierte Entwicklung von BASIC halt nicht stehengeblieben, wie Du es immer wieder so gern kolportierst.

Diese Art der Weiterentwicklung hat es übrigens bei nahezu allen Programmiersprachen gegeben und oftmals haben sich Hersteller von Compilern/Interpretern über die jeweiligen Standards hinweggesetzt, was, wie Du schon so treffend bemerktest, nichts über die Sprachdefinition an sich aussagt.

Zum momentanen Thema noch eine sehr persönliche Sicht der Dinge von mir:

Eine Sprache, in der man sich nicht mißverständlich oder gar unsinnig ausdrücken kann, ist eine tote Sprache, weil sie keine Kreativität erlaubt.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

13.09.2007, 00:03 Uhr

[ - Direktlink - ]
Thema: cv64 3D Problemchen :)
Brett: Amiga, AmigaOS 4

Zitat:
Original von Bluebird:
@whose:im ibrowse ordner unter images/picture , das steht fuer die verschiedenen arten die ein bild haben kann , also laden decodiren fehler usw ...


Ah, jetzt weiß ich, was Du meinst. Ja, das "soll" tatsächlich transparent sein, das handhabt aber die Software, in diesem Fall IBrowse. Hat mit der Hardware in diesem Fall rein gar nichts zu tun. Hier wäre eventuell etwas rumprobieren mit anderen Datatypes angesagt, wobei ich nicht weiß, ob IBrowse diese Bilder tatsächlich mit Datatype lädt (deswegen "eventuell").

An Deiner GraKa liegt es jedenfalls definitiv nicht, die Grafikchips unterstützen diese Art der Transparenz zwar (nennt sich colour key), aber diese Eigenschaft wird weder von CGFX noch von P96 für 68K genutzt (leider).

Zitat:
ps: achja pointer wars , in dem ganzen urwald im prefs ordner uebersieht man schon einiges oder sieht den wald vor bae umen nicht mehr hehe

;)

Grüße
--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

12.09.2007, 23:07 Uhr

[ - Direktlink - ]
Thema: cv64 3D Problemchen :)
Brett: Amiga, AmigaOS 4

Zitat:
Original von Bluebird:
also der rosa ecke icon bei ib ist wohl das selbe , das solte wie ichmeine wohl transparent sein , jedenfals wenn ich die bilder einlade sehen die ecken auch rosa aus , egal ob cgx rechner oder eben das p96 sys :)


Welches IB-Icon ist das denn? Ich sehe hier nichts dergleichen, weder auf der CV64/3D noch auf der CVPPC.

Zitat:
den maus pfeil konnte man doch editieren ? wenn ich nicht so doof waere wuesste ich auch noch wie :) aber mir kommts langsam vor viele sachen sind zwar d aber man macht/ nuzt sie so selten da man garnicht mehr weiss wie es geht ... ;)

Eigentlich ganz einfach: Prefs/Pointer ;)

Das wird Dir aber nicht viel nützen, da die 3. Farbe des Virge-Hardware-Sprites stets invertierter Hintergrund ist (frag mich aber nicht, wofür das gut sein soll). Von der Sorte Hardware-Sprites gibts bei den älteren GraKas mehrere, die Voodoo soll wohl auch dazugehören (konnte ich aber nicht wirklich definitiv rausfinden).

Übrigens gibt es einen ähnlichen "Transparenz"-Effekt auf z.B. der CVPPC nicht (also nicht wirklich, ich hatte den auch eine Weile auf der Karte, aber das war eindeutig ne Software-Sache. Nach einem letztlich gelungenen Update auf den letzten CGFX-Release ist dieser Effekt nicht mehr vorhanden. Auf der CV64/3D ist das aber immer noch so, unabhängig von der CGFX-Version).

Grüße


--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

12.09.2007, 11:49 Uhr

[ - Direktlink - ]
Thema: cv64 3D Problemchen :)
Brett: Amiga, AmigaOS 4

@Bluebird:

Das mit dem Mauszeiger ist normal, der Rand ist tatsächlich "transparent". Naja, in Wirklichkeit werden da die Farben wohl eher invertiert. Ist anscheinend eine Eigenheit des Hardware-Sprites des Virge. Das kenne ich von meiner CV64/3D (die unter CGFX läuft) auch.

Zu dem Rest kann ich aber wenig sagen. "Verfärbungen" könnten mit einer nicht ganz perfekten Installation zusammenhängen, ähnliche Probleme hatte ich auch schon mal, allerdings wie gesagt unter CGFX.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

12.09.2007, 03:38 Uhr

[ - Direktlink - ]
Thema: flash ide drive
Brett: Amiga, AmigaOS 4

@wawa:

Das die Platte am cybscsi nicht mehr erkannt wird wundert mich eigentlich schon... eventuell niedrigere Bootpriorität als die Flash-Karte? Wenn der Controller aktiv ist, wird der immer als erstes "abgesucht" und wenn die Platte VOR dem Einbau der Flash-Karte erkannt wurde gibt es sehr wenige Gründe, weshalb das nun anders sein sollte. Schau doch mal im Early-Startup-Menü, welche Prioritäten die einzelnen Partitionen (die bootfähigen) haben.

Die Warmstart-Sache könnte dagegen damit zu tun haben, daß genau die Flash-Karte (bzw. der Adapter) nicht schnell genug "da" ist.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

11.09.2007, 21:02 Uhr

[ - Direktlink - ]
Thema: Shell fernsteuern ?
Brett: Programmierung

@Kaesebroetchen:

Hast Du Dir mal DICE angesehen? Ich weiß zwar jetzt nicht, ob der Compiler seine Fehlermeldungen im Editor ausgibt, aber es wäre zumindest naheliegend. Und soweit ich weiß, liegt der Sourcecode von DICE und einigen Komponenten vor, eventuell wirst Du da fündig.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

11.09.2007, 11:27 Uhr

[ - Direktlink - ]
Thema: Aufnahme mit Tocatta!
Brett: Amiga, AmigaOS 4

@MaikG:

Ich z.B. wäre so einer... löten kann ich, messen kann ich auch, und ein bißchen weiß ich über digitale Elektronik. Nur mit Mikrofontechnik habe ich mich noch nicht weiter beschäftigt.

Ich denke mal das geht vielen so.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
whose   Nutzer

11.09.2007, 11:09 Uhr

[ - Direktlink - ]
Thema: Aufnahme mit Tocatta!
Brett: Amiga, AmigaOS 4

@MaikG:

Viel besser.

Jetzt kann auch ein Laie etwas damit anfangen ;)

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233
 
 
Erste << 14 15 16 17 18 -19- 20 21 22 23 24 >> Letzte Ergebnisse der Suche: 2156 Treffer (30 pro Seite)

Suchbegriffe
Schlüsselwörter      Benutzername
Suchoptionen
Nur in diesen Foren suchen
   nur ganze Wörter
Nur Titel anzeigen
alle Treffer anzeigen

.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.