Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » KC-BASIC inkompatibel mit CAOS 4.4 » Themenansicht

Autor Thread - Seiten: -1-
000
05.04.2010, 21:40 Uhr
danielk

Avatar von danielk

Eins meiner Lieblingsspiele auf dem KC ist Enterprise (EPRISE.KCB auf Club-Diskette 033). Der ein oder andere wird es wahrscheinlich auf dem Clubtreffen akustisch vernommen haben. Wie dem auch sei, das Spiel zeigt einen Grafikfehler der mich schon des längeren wurmte. Zur Illustration hier mal ein paar Schnappschüsse:



Links oben zeigt den Bildschirm kurz nach dem Start des Spiels. Die Darstellung ist hier noch in Ordnung. Nach ein paar Spielrunden sieht es dann mehr und mehr so aus wie auf den anderen drei Bildschirmfotos. Man kann deutlich erkennen, dass die verwendeten Grafikzeichen offenbar mit Müll überschrieben wurden. In der Regel sieht man die Grafikfehler zuerst im Fernsensorbildschirm. Üblicherweise reicht es zwei oder drei Quadranten leer zu räumen und dann tauchen auch schon die Grafikfehler auf.

Ich habe mich über Ostern mal rangesetzt um die Ursache des Problems zu ermitteln. Zuerst dachte ich natürlich an ein Hardwareproblem, aber das ist es nicht. Nach etlichen Versuchen und Basteleien sowohl am echten Gerät als auch im Emulator kann ich folgendes berichten:

1. Es ist ganz klar ein Softwareproblem; der Fehler tritt auch im Emulator auf. Das Spiel ist allerdings fast vollständig in BASIC programmiert, und die wenigen POKEs lassen sich leicht eingrenzen.

2. Der Fehler ist ausschließlich auf einem KC 85/5 mit CAOS 4.4 zu beobachten. KC 85/3 und KC 85/4 mit CAOS 4.2 funktionieren einwandfrei.

3. Es liegt nicht am eingebetteten Maschinenprogramm, welches zwar inkompatibel mit dem KC 85/4 ist aber keine entscheidende Bedeutung für den Programmablauf hat. Ich habe es probehalber für den KC 85/4 angepasst, womit nun der Grafikeffekt für die Zerstörung der Enterprise korrekt funktioniert. Auf die fehlerhafte Darstellung im Spiel hat dies aber keinen Einfluss.

4. Es liegt auch nicht an den eingestreuten "POKE 862,25"-Befehlen, die anscheinend dem Kopierschutz dienen. Ich habe diese probehalber mal in Kommentare umgewandelt, mit dem Ergebnis das LIST jetzt auch nach dem Programmstart funktioniert. Auf das Spielgeschehen hat das keinen Einfluss.

5. Der BASIC-Autostarter ist auch nicht die Ursache. Der Fehler tritt auch dann auf, wenn man das BASIC-Programm klassisch per CLOAD "EPRISE" einliest und per RUN startet.

6. Die einzigen direkten Speicherzugriffe im BASIC-Programm dienen dem Ablegen der Zeichenbildtabelle im Speicherbereich BC00H...BDFFH, genau wie im System-Handbuch am Beispiel beschrieben. Nach der Initialisierung erfolgen keine weiteren Schreibzugriffe auf diesen Bereich.

7. Der Fehler äußert sich darin, dass nach und nach Teilbereiche der Speicherbildtabelle ab etwa BD00H scheinbar willkürlich mit den Bytes FBH und A0H vollgeschrieben werden. Es sind immer diese zwei Werte, sowohl im Emulator als auch am echten Gerät. In der Regel erscheinen die Müll-Bytes als Paar FBA0H oder A0FBH, aber nicht immer.

8. Und nun der wahrscheinlich wichtigste Hinweis: Das Problem tritt nicht auf, wenn man beim Kaltstart des BASIC-Interpreters den Speicher auf 32767 beschränkt, d.h. den Bereich unter 8000H.

Ich habe wirklich alles doppelt und dreifach geprüft, aber es scheint tatsächlich ein Problem in den Änderungen von CAOS 4.4 zu sein. Natürlich ist es auch möglich, dass der BASIC-Interpreter etwas unerlaubtes tut, was durch Zufall mit CAOS 4.2 noch funktioniert hat. In jedem Fall besteht hier anscheinend eine Inkompatibilität.

Schleichende Speicherkorruption ist eine üble Sache, und es ist nicht auszuschließen, dass auch andere Programme außer Enterprise davon betroffen sein könnten. Vielleicht könnte sich jemand der sich im CAOS-Quellcode auskennt die Sache mal ansehen? Ich selbst bin für's erste erstmal geschafft.

Um die Sache zu erleichtern, habe ich ein paar Dateien zusammengetragen. In dem Verzeichnis findet Ihr das auf den KC 85/4 angepasste Spiel ohne Kopierschutz, in den Varianten mit und ohne Autostart. Die epdump*.kcc-Dateien sind Speicherabzüge. In epdump8.kcc kann man ab Adresse BD00H die überschriebenen Bytes sehen.

So weit, so gut. Jetzt ist, glaube ich, Mario dran.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
06.04.2010, 14:29 Uhr
Mr. Museum



Hast Du mal probiert es unter HCBASIC2 im CP/M zu starten?

Wie ist das Verhalten da?
--
Gruß,

Micha (der ohne Farbfilm)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
08.04.2010, 00:21 Uhr
danielk

Avatar von danielk


Zitat:
Mr. Museum schrieb
Hast Du mal probiert es unter HCBASIC2 im CP/M zu starten?

Wie ist das Verhalten da?

OK, ich hatte mich gestern mal rangesetzt und Enterprise nach HCBASIC2 portiert. Die Farbanimation zur Zerstörung der Enterprise habe ich erstmal deaktiviert. Die nochmals modifizierte Variante habe ich wieder als eprise.sss zum Runterladen zur Verfügung gestellt.

Wie ich erwartet hatte, tritt die beschriebene Speicherkorruption mit HCBASIC2 auf dem D004 nicht auf. Es gibt zwar diverse andere Darstellungsfehler, aber diese sind gänzlich anderer Art. So flackert der Strichcursor an vielen unmöglichen Stellen herum, und eigentlich gelöschter Text und Attribute bleiben teilweise auf dem Bildschirm stehen. Davon abgesehen ist es vollständig spielbar und der modifizierte Zeichensatz bleibt erhalten.

Ich denke das von mir beschriebene Problem hat seine Ursache in der Speicherverwaltung von KC-BASIC im Grundgerät. BASIC muss ja letztendlich CAOS-Schnittstellen aufrufen, um die Segmente zu schalten. Meine Vermutung ist, dass sich CAOS 4.4 da anders verhält als CAOS 4.2, was letztendlich zur beschriebenen Speicherkorruption führt.

Die Fehler in HCBASIC2 sind ein anderes Thema. Ich muss sagen, ich war beeindruckt dass das Spiel ansonsten vollständig funktioniert, inklusive des modifizierten Zeichensatzes. Wenn ich Zeit finde, nehme ich mich vielleicht mal den Darstellungsfehlern in HCBASIC2 an. Aber eins nach dem anderen.

Ich denke, das Fehlverhalten von KC-BASIC mit CAOS 4.4 ist erstmal das dringendere Problem. Liest Mario eigentlich hier im Forum mit?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
08.04.2010, 06:23 Uhr
Mobby5




Zitat:
danielk schrieb

Ich denke, das Fehlverhalten von KC-BASIC mit CAOS 4.4 ist erstmal das dringendere Problem.


Ganz meine Meinung. Das das bis jetzt noch niemand bemerkt hat.
--
und ausserdem muss in Zeile 20 der Doppelpunkt durch ein Semikolon ersetzt werden
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
08.04.2010, 22:00 Uhr
maleuma



Hallo Danielk,

Ja, ich lese hier in unregelmäßigen Abständen mit.
Das ist ein interessanter Effekt, der sicher nicht leicht zu finden sein wird. An den BASIC-Erweiterungen von CAOS wurde eigentlich nichts wesentliches geändert, aber natürlich rufen alle BASIC-Befehle auch die CAOS-Unterprogramme auf.

Es sieht so aus als wäre zu einem bestimmten Zeitpunkt eine falsche Speicherebene aktiv. Man müßte herausfinden, bei welchen BASIC-Befehlen die "Müllbytes" im IRM entstehen. Ich werde mir die Dateien aber bei Gelegenheit einmal ansehen.
--
Mario.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
09.04.2010, 00:45 Uhr
susowa



Ich wollte Mario den Vortritt lassen :-) aber auch was dazu schreiben.


Zitat:
maleuma schrieb
Es sieht so aus als wäre zu einem bestimmten Zeitpunkt eine falsche Speicherebene aktiv.

Dem stimme ich "gefühlsmässig" auch zu. Ich vermute eine nicht erlaubte Stackbenutzung in einer INT-Routine, sprich der IRM ist an, obwohl er aus sein müsste oder irgendwas in dieser Richtung.


Zitat:
Man müßte herausfinden, bei welchen BASIC-Befehlen die "Müllbytes" im IRM entstehen.

Das ist die einzige Chance, um die Ursache erstmal einzukreisen. Leider hat sich Daniel natürlich eines der grössten BASIC-Programme "herausgesucht" :-), so dass die Sache nicht gerade einfacher wird.

Ich würde mit allen Sound-Befehlen anfangen, einfach mal komplett auskommentieren und schauen, was passiert.


Ich hatte beim CAOS-Maustreiber und BASIC-Programmen bereits mit ähnlichen Effekten zu tun, siehe:

http://www.iee.et.tu-dresden.de/~kc-club/02/KCN97-03/KCN97-03-08.HTML

drittletzter Absatz, letzter Satz, habe aber die Sache nie ernsthaft weiter verfolgt. Ich vermute daher auch, dass dieses Problem vielleicht schon mit Version 4.22 entstanden ist, wer weis.

MfG Ralf
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
09.04.2010, 15:49 Uhr
danielk

Avatar von danielk


Zitat:
maleuma schrieb
Es sieht so aus als wäre zu einem bestimmten Zeitpunkt eine falsche Speicherebene aktiv. Man müßte herausfinden, bei welchen BASIC-Befehlen die "Müllbytes" im IRM entstehen. Ich werde mir die Dateien aber bei Gelegenheit einmal ansehen.

Super, danke! Wenn ich irgendwie helfen kann sag Bescheid.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
09.04.2010, 15:59 Uhr
danielk

Avatar von danielk


Zitat:
susowa schrieb

Zitat:
maleuma schrieb
Man müßte herausfinden, bei welchen BASIC-Befehlen die "Müllbytes" im IRM entstehen.

Das ist die einzige Chance, um die Ursache erstmal einzukreisen. Leider hat sich Daniel natürlich eines der grössten BASIC-Programme "herausgesucht" :-), so dass die Sache nicht gerade einfacher wird.

Gibt es vielleicht eine Möglichkeit, einen Emulator mit Debug-Funktionalität zu nutzen und einfach einen Haltepunkt einzurichten, der bei Veränderung des Inhalts einer Speicherzelle auslöst? Im Prinzip sollte so etwas im Emulator eigentlich kein Problem sein, denke ich. Auf die Schnelle konnte ich aber weder in KCemu noch in jkcemu eine solche Funktion finden. Kennt jemand vielleicht eine Software, mit der man das machen könnte?


Zitat:
Ich würde mit allen Sound-Befehlen anfangen, einfach mal komplett auskommentieren und schauen, was passiert.

Gute Idee, das probiere ich über's Wochenende mal aus.


Zitat:
Ich hatte beim CAOS-Maustreiber und BASIC-Programmen bereits mit ähnlichen Effekten zu tun, siehe:
[...]

Interessant ist, dass in Deinem Fall die Speicherbegrenzung den Fehler erst auslöste. Bei Enterprise hilft dagegen die Speicherbegrenzung den Fehler zu umgehen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
09.04.2010, 21:00 Uhr
maleuma



Die Idee mit dem SOUND-Befehlen ist gut. Wenn es hilft, keine Tonausgaben zu haben, dann habe ich eine Idee wo der Fehler liegt:

BASIC arbeitet mit einem eigenen Stack, und der liegt ohne Begrenzung unterhalb C000H. Wenn von BASIC Systemrufe ausgeführt werden, die den IRM benötigen, dann werden die CAOS-Routine IRMON / IRMOFF ausgeführt. Und diese Routinen wechseln auch den Stack zum CAOS-Stack-Bereich während der IRM on ist.

Wenn jetzt ein Interrupt von der Tondauer kommt, dann kann entweder der CAOS-Stack oder der BASIC-Stack aktiv sein. Die Interrupt-Routine initialisiert die CTC2 neu und nutzt zwei IRM-Arbeitszellen für die Einstellung der Blinkzeit. Deshalb wird in der ISR der IRM eingeschalten und danach folgt ein CALL.
Ich denke das ist das Problem: Denn wenn gerade der BASIC-Stack aktiv ist, liegt der Stack dann automatisch im IRM...

Lösung: erst den CALL ausführen und dann den IRM nur für den Zugriff auf die Arbeitszelle einblenden. Wenn das funktioniert, mache ich CAOS 4.5.
--
Mario.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
09.04.2010, 21:07 Uhr
Mobby5




Zitat:
maleuma schrieb

Wenn das funktioniert, mache ich CAOS 4.5.


Ich bin dafür.
--
und ausserdem muss in Zeile 20 der Doppelpunkt durch ein Semikolon ersetzt werden
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
09.04.2010, 23:10 Uhr
BobCat

Avatar von BobCat

Kurze Frage als Laie:

KC85/4 System Handbuch:

3.5.2. Schalter für IRM und STACK
Diese Gruppe der Programme schaltet den IRM und verändert den STACK.
F018H: Einschalten des IRM und Setzen des Stackpointers auf (SYSP). Darf
nur mit Programm auf F01BH zusammen verwendet werden.
F01BH: Abschalten des IRM und Rückstellen des Stackpointers. Diese Programme
werden auch von BASIC genutzt.
Für die Programme F018H und F01BH gilt:
Der Registerinhalt von BC geht verloren.

hat es damit etwas zu tun ??

Dieser Beitrag wurde am 09.04.2010 um 23:12 Uhr von BobCat editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
10.04.2010, 00:04 Uhr
susowa




Zitat:
maleuma schrieb
Wenn jetzt ein Interrupt von der Tondauer kommt, dann kann entweder der CAOS-Stack oder der BASIC-Stack aktiv sein.
Lösung: erst den CALL ausführen und dann den IRM nur für den Zugriff auf die Arbeitszelle einblenden. Wenn das funktioniert, mache ich CAOS 4.5.

Da habe ich gleich noch weitere Anregungen. Das CALL IRET z.B. in ISRC2 und allen anderen Stellen raus, da es genauso lang ist, wie die beiden Befehle aber durch die Stackbenutzung zu Problemen führen könnte.

Die angedeutete Lösung in ISRC2 müsste funktionieren, verletzt aber trotzdem den bereits oft diskutierten Grundsatz: "INT-Routinen dürfen keine Zustände voraussetzen oder Zustände verändern, wenn per EI weitere INT's erlaubt wurden". Das geht nur, wenn der IRM im DI gelesen wird.

Das gleiche Problem hat auch ISRSB, welches im EI in den IRM schreibt und auch ISRPB, wo im EI der IRM ein- und ausgeschaltet wird.

Ich hatte damals während der Entwicklung des Maustreibers genau die gleichen Probleme und erst wirklich Ruhe, als der obige Grundsatz konsequent durchprogrammiert war und das hat überhaupt keinen Spass gemacht und sieht im Quelltext auch nicht unbedingt elegant aus. Für das System sollte es aber m.M. nach aber eigentlich so gemacht werden.

Die IRM-Switcherei mit den Systemarbeitszellen ist beim KC85(/4,5,...) wirklich problematisch und wird durch den RAM8 des /4+ nicht unbedingt einfacher, beim /2,3 war das ungefährlicher, da es RAM unter dem IRM nur mit 64er oder 2*16er Erweiterungsmodul gab.
Ich weis nicht, ob die ersten 4er CAOS-Versionen da immer voll auf der Höhe der (eigenen) Zeit waren, wir haben ja auch schon einige richtige Fehler gefunden und beseitigt.

Dieser Beitrag wurde am 10.04.2010 um 00:23 Uhr von susowa editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
10.04.2010, 02:08 Uhr
danielk

Avatar von danielk


Zitat:
maleuma schrieb
Die Idee mit dem SOUND-Befehlen ist gut. Wenn es hilft, keine Tonausgaben zu haben, dann habe ich eine Idee wo der Fehler liegt:

Es hilft.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
10.04.2010, 11:55 Uhr
susowa




Zitat:
danielk schrieb
Es hilft.

Na, da hat es aber Einer eilig - kleiner Nachtschwärmer :-) ?!

Aber - Super! Damit hast Du dann wohl den Startschuss für die nächste CAOS-Version gegeben ...
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
10.04.2010, 13:08 Uhr
susowa




Zitat:
BobCat schrieb
Kurze Frage als Laie:
3.5.2. Schalter für IRM und STACK
hat es damit etwas zu tun ??

Das ist nur die (eine) Systemschnittstelle für Anwenderprogramme und die ist natürlich sauber, sonst würde nicht viel funktionieren. Ich versuche mal den Ablauf prinzipiell nachzustellen.

Der "Fehler" oder das Problem liegt etwas tiefer. Eine INT-Routine unterbricht das gerade laufende (BASIC-)Programm an beliebiger Stelle. Wenn BASIC ohne RAM-Begrenzung läuft, befindet sich im Stack (SP-Register Z80) eine Adresse, welche sich im RAM8 befindet und damit auch immer in den adressmässig parallel liegenden IRM zeigt.

Wenn nun der IRM eingeschaltet wird, ohne gleichzeitig den Stack auf RAM0 umzustellen (dort liegt er normalerweise, wenn kein BASIC-Programm läuft), kann es zu Problemen kommen.

Falls der von Mario beschriebene INT oder auch ein anderer ausgelöst wird, kommt es bei einem CALL in der INT-Service-Routine zur Ablage der RET-Adresse auf der gerade aktiven Adresse des Z80 SP-Registers.

Der BASIC-Stack zeigt, wie oben beschrieben, auf RAM8 und kann eigentlich auch von der INT-Routine gefahrlos benutzt werden.

Wenn aber der IRM an ist, welcher hardwareseitig eine höhere Priorität als der RAM8 hat, legt er sich vor den RAM8.

Die RET-Adresse des CALL wird damit zwar auf der RAM8-Adresse des BASIC-Stack abgelegt, aber der ist gar nicht im Zugriff, sondern befindet sich gerade hinter dem IRM!

Damit wird sie also im realen Leben in den IRM geschrieben und verursacht die von Daniel beschriebene Speicherkorruption im IRM.

Damit sollte alles klar sein - oder :-) ?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
10.04.2010, 14:05 Uhr
danielk

Avatar von danielk


Zitat:
susowa schrieb
Na, da hat es aber Einer eilig - kleiner Nachtschwärmer :-) ?!

In der Tat.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
10.04.2010, 14:10 Uhr
danielk

Avatar von danielk


Zitat:
susowa schrieb
Damit sollte alles klar sein - oder :-) ?

Was mir noch nicht ganz klar ist, ist warum das Paar Müllbytes nicht immer an einer geraden Adresse ausgerichtet ist. Ich dachte der Stack-Pointer wird stets in zwei-Byte-Schritten inkrementiert?

Hm warte, ich glaube ich habe mir die Frage gerade selbst beantwortet -- kann ein Interrupt auch inmitten der Ausführung eines PUSH-Befehls auftreten, nachdem erst ein Byte geschrieben wurde?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
017
10.04.2010, 14:18 Uhr
BobCat

Avatar von BobCat

Ah, jetzt ja :-)
Ich hatte beim testen eines KCs auch diesen Effekt beobachtet. Leider kann ich nicht mehr sagen bei welchem Programm es war.
Da ich da die DRAMs gewechselt hatte, wurde ich nachdenklich. Da ansonsten aber alles lief, habe ich an den Vogel Strauß gedacht ;-) ... und damit war die Sache abgehakt.

Danke
götz
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
018
10.04.2010, 16:55 Uhr
susowa



OK, um die ganze Sache bzgl. EPRISE mal abzuschliessen noch die folgenden Info's für alle Beteiligten. Ich kann nun die von Mario vermutete Stelle bestätigen:


Quellcode:
ISRC2    ; CTC2: Tonlg
    CALL    IRET   ;EI/RETI
    PUSH    AF
    PUSH    DE
    IN    A,88H
    LD    E,A
    SET    2,A    ;IRM on
    OUT    88H
    CALL    TOFF   ;*
    LD    A,E
    OUT    88H
    POP    DE
    POP    AF
    RET

Das ist ein Codeausschnitt aus dem CAOS 4.4 von der Homepage, welche Daniel sicherlich auch in seinen ROM's hat.

Der Befehl CALL TOFF legt die Adresse des folgenden Befehls LD A,E (Code 7B) auf den Stack und ratet mal wie die lautet:

0FBA0H

Ist also identisch mit den "Müllbytes", welche Daniel diagnostiziert hat. Damit ist der vermutete Fehler nun auch nachgewiesen und kann beseitigt werden.


Zitat:
danielk schrieb
Hm warte, ich glaube ich habe mir die Frage gerade selbst beantwortet -- kann ein Interrupt auch inmitten der Ausführung eines PUSH-Befehls auftreten, nachdem erst ein Byte geschrieben wurde?

Kann ich so aus dem Hut auch nicht sagen. Kannst ja mal in den Zeitdiagrammen der Maschinenzyklen nachforschen aber ich denke schon, dass eine INT-Annahme auch dazwischen geht.


MfG Ralf
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
019
10.04.2010, 17:39 Uhr
maleuma




Zitat:
susowa schrieb
Da habe ich gleich noch weitere Anregungen. Das CALL IRET z.B. in ISRC2 und allen anderen Stellen raus, da es genauso lang ist, wie die beiden Befehle aber durch die Stackbenutzung zu Problemen führen könnte.

Die angedeutete Lösung in ISRC2 müsste funktionieren, verletzt aber trotzdem den bereits oft diskutierten Grundsatz: "INT-Routinen dürfen keine Zustände voraussetzen oder Zustände verändern, wenn per EI weitere INT's erlaubt wurden". Das geht nur, wenn der IRM im DI gelesen wird.

Das gleiche Problem hat auch ISRSB, welches im EI in den IRM schreibt und auch ISRPB, wo im EI der IRM ein- und ausgeschaltet wird.

OK, dann beginne ich mal mit der Bearbeitung der CAOS-Quelltexte.
Angegungen nehme ich natürlich gern an. Das CALL IRET ist meiner Meinung nach nicht problematisch, ein definierter Stack ist ja vor der Unterbrechung aktiv und kann auch von der ISR genutzt werden. Den Grundsatz würde ich etwas anders formulieren: "INT-Routinen dürfen keine Zustände voraussetzen und müssen veränderte Zustände wiederherstellen." Das hat nichts mit EI oder DI zu tun, denn auch wenn weitere INT's erlaubt sind, kann die laufende INT-Routine nur durch einen anderen INT wieder unterbrochen werden, der die aktuellen Zustände ebenfalls wiederherstellt.
Problematisch sind allerdings PUSH/POP und CALL's in einer INT-Routine wenn gleichzeitig Speicherebenen geschaltet wurden. Das werde ich nochmal bei allen INT-Routinen prüfen.
--
Mario.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
020
10.04.2010, 21:53 Uhr
paulotto




Zitat:
susowa schrieb

Zitat:
danielk schrieb
Hm warte, ich glaube ich habe mir die Frage gerade selbst beantwortet -- kann ein Interrupt auch inmitten der Ausführung eines PUSH-Befehls auftreten, nachdem erst ein Byte geschrieben wurde?

Kann ich so aus dem Hut auch nicht sagen. Kannst ja mal in den Zeitdiagrammen der Maschinenzyklen nachforschen aber ich denke schon, dass eine INT-Annahme auch dazwischen geht.


MfG Ralf

ein Befehl wird immer erst vollständig abgearbeitet, bevor der Interruptzyklus startet da der Interrupt nur mit der letzten steigenden Flanke des letzten Maschinenzyklus eines Befehls abgefragt wird.

Gruß,

Klaus
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
021
11.04.2010, 11:11 Uhr
susowa




Zitat:
paulotto schrieb
ein Befehl wird immer erst vollständig abgearbeitet, bevor der Interruptzyklus startet da der Interrupt nur mit der letzten steigenden Flanke des letzten Maschinenzyklus eines Befehls abgefragt wird.

Danke :-) !

Dann wird Daniels Frage aber wieder interessant. Wie kommt es dann, dass sich FB A0 sowohl auf geraden als auch ungeraden Adressen wiederfindet, siehe folgender Auszug aus edump8.kcc ?


Quellcode:
BDC0 80 C0 E0 F0 F8 FC FE FF FF FE FC F8 F0 A0 FB A0
BDD0 FB 03 07 0F 1F 3F 7F A0 FB A0 FB A0 FB A0 FB A0
BDE0 FB A0 FB A0 FB A0 FB A0 FB A0 FB A0 FB A0 FB A0
BDF0 A0 FB A0 FB FB A0 FB A0 FB FF A0 FB 00 A0 FB A0
BE00 A0 FB FB A0 FB A0 FB A0 A0 FB FB A0 FB A0 FB A0
BE10 A0 FB A0 A0 FB A0 FB A0 FB A0 FB A0 FB A0 FB FF
BE20 18 18 A0 FB 18 18 18 A0 FB A0 FB FF FF 00 00 00
BE30 A0 FB A0 FB 00 00 00 00 00 A0 FB 00 00 00 00 00

Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
022
12.04.2010, 12:22 Uhr
kaiOr

Avatar von kaiOr


Zitat:
maleuma schrieb
OK, dann beginne ich mal mit der Bearbeitung der CAOS-Quelltexte.
Angegungen nehme ich natürlich gern an.

Die Wartezeit mit "Autostart Floppy" ist recht lang und führt zum Freeze wenn das D004 defekt ist, wobei man eigentlich unter CAOS zum Selbsttest kommen sollte/möchte.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
023
12.04.2010, 19:40 Uhr
maleuma



Das ist keine CAOS-Angelegenheit, sondern im D004-EPROM festgelegt.
CAOS 4.4 sorgt lediglich für einen automatischen JUMP FC.
Wenn das D004 defekt ist, kannst Du nur das Grundgerät zuerst einschalten und wenn dieses im CAOS-Menü ist, das D004 einschalten. Dann gibst Du von Hand JUMP FC FF ein.
Geht leider nicht anders wenn man den Comfort des Autostart haben will.
--
Mario.

Dieser Beitrag wurde am 12.04.2010 um 19:41 Uhr von maleuma editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
024
12.04.2010, 20:00 Uhr
kaiOr

Avatar von kaiOr

Mein D004 ist inzwischen repariert, ich fand die Lösung damals nur eben nicht sonderlich elegant.

Du kannst dir sicher denken wie oft man das Aus- und Einschaltspiel treiben muss um dem Fehler auf die Schliche zu kommen. Vielleicht andersrum, wenn einem CAOS 2 Sek. Zeit ließe um mit ESC abzubrechen bevor "JUMP FC" ausgelöst wird, wäre einem auch gedient.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
025
18.04.2010, 17:04 Uhr
danielk

Avatar von danielk

*ganzvorsichtiganfrag* Wie sieht's aus? Kann man vielleicht irgendwie helfen?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
026
30.04.2010, 06:37 Uhr
danielk

Avatar von danielk

Gefunden in CAOS ROM F:

Quellcode:
ISRT    ;ISR für Fremdtastatur
        PUSH    HL
        PUSH    DE
        PUSH    BC
        PUSH    AF
        IN      A,88H
        LD      C,A
        SET     2,A    ;IRM on!
        OUT     88H
        LD      B,(IX+4);CAOS-C
        PUSH    BC    ;merken

Gleich darunter nochmal:

Quellcode:
ISRSB   ;ISR SIO B (Empfang)
        ;MC-Load oder Fremdtastatur
        PUSH    HL
        PUSH    DE
        PUSH    BC
        PUSH    AF
        IN      A,88H
        LD      C,A
        SET     2,A    ;IRM on!
        OUT     88H
        LD      B,(IX+4);CAOS-C
        PUSH    BC    ;merken

Ausgerechnet die Routine für die externe Tastatur... autsch!
Eine mögliche Verlagerung der Interrupttabelle wird auch nicht berücksichtigt:

Quellcode:
ISB2    LD      HL,ISRT    ;neue Tast.-ISR
        DI
        LD      (1E2H),HL
        EI

Die DI- und EI-Befehle scheinen mir auch überflüssig. Für die korrekte Implementierung mit separatem High-Teil des Vektors aus I oder (MIXIT) werden sie aber doch wieder gebraucht.

Dieser Beitrag wurde am 30.04.2010 um 06:42 Uhr von danielk editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
027
30.04.2010, 14:50 Uhr
Mobby5





Was bedeutet denn hierbei Fremdtastatur beim KC oder die explizite Angabe "externe Tastatur"? Heisst das, dass der Fehler mit der Original-KC-Tastatur nicht auftritt?
--
und ausserdem muss in Zeile 20 der Doppelpunkt durch ein Semikolon ersetzt werden
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
028
30.04.2010, 15:41 Uhr
Enrico
Default Group and Edit


Ich hatte auch mit ext. Tastatur noch keine Fehler.
Hab eh nix anderes mehr.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
029
30.04.2010, 16:59 Uhr
Mobby5




Zitat:
Enrico schrieb
Ich hatte auch mit ext. Tastatur noch keine Fehler.
Hab eh nix anderes mehr.

Der KC hatte noch nie was anderes
--
und ausserdem muss in Zeile 20 der Doppelpunkt durch ein Semikolon ersetzt werden
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
030
30.04.2010, 17:01 Uhr
Enrico
Default Group and Edit


Ha, ha.
Du weist genau, wie ich das meine.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
031
30.04.2010, 17:56 Uhr
danielk

Avatar von danielk


Zitat:
Mobby5 schrieb
Was bedeutet denn hierbei Fremdtastatur beim KC oder die explizite Angabe "externe Tastatur"? Heisst das, dass der Fehler mit der Original-KC-Tastatur nicht auftritt?

Richtig. Das ist die Interruptroutine für die V.24-Tastatur am M003. Die Problematik ist die gleiche wie die beim Tonerzeugungsinterrupt: Liegt der Stack zum Zeitpunkt des Interrupts im RAM8, wird er vom zugeschalteten IRM überlagert.

Zitat:
Enrico schrieb
Ich hatte auch mit ext. Tastatur noch keine Fehler.

Bist Du sicher? Der Fehler äußert sich ja durch sporadisches Überschreiben eines normalerweise freien RAM-Bereiches. Selbst wenn einem auffällt, dass irgendetwas nicht in Ordnung ist, vermutet man wohl nicht unbedingt sofort einen Fehler in den Interrupt-Service-Routinen von CAOS... Mir war das Problem in den V.24-Routinen auch nicht in der Praxis aufgefallen; es sollte aber dennoch beseitigt werden. Es sind so viele Faktoren im Spiel, dass es schon ein Weilchen dauern kann bis man ein eindeutiges Muster wahrnimmt. Oder ist Dein KC noch nie abgestürzt?

Ich bin diesbezüglich auch gerade kräftig am Schaffen. Mit der Überarbeitung der V.24-Routinen bin ich fast fertig. Das ganze ist ziemlich haarig, da man zumindest bei ISRSB die gleichzeitige Nutzung von Stack und IRM nicht wirklich vermeiden kann. Ich habe es jetzt so gelöst, dass der Stack temporär auf (SYSP) umgebogen wird wenn SP höher als (SYSP) ist. Die ISRT-Routine, die nach dem Empfang des ersten CR von der V.24-Tastatur installiert wird, habe ich so überarbeiten können, dass zumindest im laufenden Betrieb keine Umlagerung des Stacks notwendig ist.

Auf Grund des knappen Platzes im CAOS-ROM E musste ich noch ein paar Tänze veranstalten und Teile von Routinen in den CAOS-ROM C auslagern. Zur Sicherheit habe ich das erst mal nur bei Routinen gemacht, die ohnehin schon den CAOS-ROM C zuschalten. Hoffentlich reicht es auch noch für eine überarbeitete Variante des M008/M021-Joystick-Treibers.

Dieser Beitrag wurde am 30.04.2010 um 17:57 Uhr von danielk editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
032
02.05.2010, 02:35 Uhr
danielk

Avatar von danielk

So, ich habe mittlerweile ein neues CAOS erzeugt und in EEPROMs geschrieben. Funktioniert soweit wunderbar, sowohl im Emulator als auch im Gerät. Ich habe eine Reihe von Tests durchgeführt, und es sieht soweit recht gut aus: Die V.24-Tastatur, der IBM-Zeichensatz, die Tonausgabe, die Magnetband-Routinen und die Floppy-Disk-Schnittstelle wurden durch meine Änderungen nicht in der Funktion beeinträchtigt. Ach ja, und die Grafikfehler in Enterprise sind natürlich auch nicht mehr da.

Also, wer Lust verspürt: Meine experimentelle CAOS 4.5 Vorab-Version steht zum Test zur Verfügung. Die Versionskennung habe ich vorerst nicht erhöht, da dies noch nicht die endgültige Version 4.5 ist. Das überlasse ich dann doch lieber Mario. Ich werde auch noch Differenzdateien erstellen, so dass die vorgenommenen Änderungen leichter nachvollzogen werden können.

So, und jetzt mache ich mich mal an die Joystick-Routine.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
033
02.05.2010, 09:25 Uhr
Mr. Museum



Wuss? CAOS 4.5 bekommt Joystik treiber ins ROM? Geil
--
Gruß,

Micha (der ohne Farbfilm)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
034
02.05.2010, 10:47 Uhr
susowa




Zitat:
danielk schrieb
So, ich habe mittlerweile ein neues CAOS erzeugt ...

Schon mal was von Teamwork gehört !?

Warum machst Du das nicht zusammen mit Mario, der bereits seit einiger Zeit genau an den gleichen Stellen arbeitet ?

Also - Daumen runter
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
035
02.05.2010, 13:23 Uhr
danielk

Avatar von danielk


Zitat:
susowa schrieb

Zitat:
danielk schrieb
So, ich habe mittlerweile ein neues CAOS erzeugt ...

Schon mal was von Teamwork gehört !?

Heh! Um das klarzustellen: Die endgültige Entscheidung über die Implementierung bleibt natürlich bei Mario! Ich will hier niemanden übergehen.


Zitat:
Warum machst Du das nicht zusammen mit Mario, der bereits seit einiger Zeit genau an den gleichen Stellen arbeitet ?

Nanu? Ich hatte doch gefragt, ob ich irgendwie helfen kann?! Da keine Reaktion kam, habe ich mir gedacht, dass Mario mit anderen Dingen Hände und Füße voll haben wird; unter anderem mit den KC 85/5-Handbüchern.


Zitat:
Also - Daumen runter

Ach komm... ich verstehe jetzt nicht, was daran so furchtbar schlimm sein soll. Selbst wenn sich herausstellen sollte, dass meine Arbeit redundant ist, dann ist das halt mein Pech.

Nachtrag:

Ich glaube hier liegt auch ein kulturelles Problem vor. Ich bin es gewöhnt, im Open-Source-Umfeld zu arbeiten. Da ist alles öffentlich einsehbar -- auch und gerade die momentanen Entwicklerversionen von Software. Bei CAOS ist das nicht der Fall -- alles was ich habe sind die Hinweise im KC 85/5-Handbuch über geplante Features und reservierte Speicherzellen, und daran versuche ich mich zu orientieren.

Sich abseits der öffentlichen Kommunikationskanäle privat auszutauschen wird wo ich herkomme eher ungern gesehen, daher habe ich das auch schon instinktiv nicht gemacht. Wenn mir irgendwo der Schuh drückt und der Entwickler des Schuhs unpässlich ist, dann kümmere ich mich um das Problem halt selbst. Die Teamarbeit liegt dann in der Integration des Ganzen.

Mein Vorschlag wäre, auf gitorious.org oder github.org ein Repository für CAOS einzurichten. Dann könnte jeder genau sehen, wie der momentane Stand ist, und Änderungen können im Detail nachvollzogen werden. Das würde es natürlich notwendig machen, mit ganz normalen Textdateien außerhalb von EDAS zu arbeiten. Das Umwandeln könnte man ja weitestgehend automatisieren.

Die Nutzung eines Versionsverwaltungssystems wollte ich schon seit längerem mal vorschlagen. Bisher hatte ich mich zurückgehalten, da ich befürchtete bei einigen im Umfeld historischer Computer damit einen kleinen Kulturschock auszulösen. Wenn man mir allerdings mangelnde Teamarbeit vorwirft...

Dieser Beitrag wurde am 02.05.2010 um 14:04 Uhr von danielk editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
036
02.05.2010, 17:01 Uhr
danielk

Avatar von danielk

Und nochmal was zur Motivation:

Das ganze ist für mich ein Hobby. Mir macht Programmieren einfach Spaß. Und nach drei Wochen Warten hatte ich einfach Lust, mal auszuprobieren ob ich es vielleicht auch selber hinkriege. Und dann kam ich halt ein bisschen in Fahrt...

Ist das wirklich so verwerflich?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
037
02.05.2010, 17:29 Uhr
BobCat

Avatar von BobCat

Nein, sicherlich nicht. Es geht ja mehr darum das es keinen Wirrwarr gibt. Gerade im Bereich der Betriebssysteme ist das ganz wichtig, daß es dort, auch für spätere Anwendungen keine Zersplitterung gibt.
Deswegen sollte mit Mario alles abgesprochen werden.
Eine Splittung würde eine weitere Diffusion und abnehmendes Interesse am KC-System bedeuten. Deswegen ist Komptibilität und allgem. Gültigkeit so wichtig.
So wie ich das in 019 lese, ist Mario dort am arbeiten. Ich denke das eine endgültige Lösung wieder aus einem Guß sein wird / muß
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
038
02.05.2010, 17:33 Uhr
danielk

Avatar von danielk


Zitat:
BobCat schrieb
Eine Splittung würde eine weitere Diffusion und abnehmendes Interesse am KC-System bedeuten. Deswegen ist Komptibilität und allgem. Gültigkeit so wichtig.

Na klar! Das habe ich doch selbst auch stets betont!

Denn genau deswegen heißt das Verzeichnis auf dem Server caos45-test und nicht caos45. Und genau deswegen habe ich auch die Versionskennung in EDFF bei 44H belassen. Dass die eigentliche Release von Mario gemacht werden soll hatte ich doch von Anfang an dazugesagt.

Dieser Beitrag wurde am 02.05.2010 um 17:33 Uhr von danielk editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
039
02.05.2010, 17:44 Uhr
BobCat

Avatar von BobCat


Zitat:
Na klar! Das habe ich doch selbst auch stets betont!

Ich weiß, ... und zum probieren geht's ja auch erstmal. Ich denke das es dazu evtl. auch noch Anderes geben wird.

Dieser Beitrag wurde am 02.05.2010 um 17:45 Uhr von BobCat editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
040
02.05.2010, 17:51 Uhr
danielk

Avatar von danielk


Zitat:
BobCat schrieb
Ich weiß, ... und zum probieren geht's ja auch erstmal. Ich denke das es dazu evtl. auch noch Anderes geben wird.

Am liebsten wäre mir, wie schon gesagt, die Nutzung eines Versionsverwaltungssystems wie git. Normalerweise arbeitete ich nur damit, selbst für meine persönlichen Ein-Mann-Hobbyprojekte. Die Frage ist, ob Mario das genehm ist, denn es ist schon eine ziemlich radikale Umstellung.

Nachtrag:

Für Windows-Nutzer gibt es übrigens mittlerweile msysgit; eine Cygwin-Umgebung zur Unix-Emulation braucht man also wohl nicht mehr. Ob es auch Frontends mit grafischer Benutzeroberfläche für git unter Windows gibt weiß ich nicht. Alternativ kann man natürlich auch einfach eine Linux-Distribution seiner Wahl installieren und fertig...

Dieser Beitrag wurde am 02.05.2010 um 18:09 Uhr von danielk editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
041
02.05.2010, 21:41 Uhr
AlexHuck




Zitat:
danielk schrieb
Nachtrag:

Für Windows-Nutzer gibt es übrigens mittlerweile msysgit; eine Cygwin-Umgebung zur Unix-Emulation braucht man also wohl nicht mehr. Ob es auch Frontends mit grafischer Benutzeroberfläche für git unter Windows gibt weiß ich nicht.

Ich verwende TortoiseGit, weil ich mit TortoiseSVN und TortoiseHG schon gut zurecht komme.
--
Jeder blamiert sich, so gut er kann.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
042
02.05.2010, 21:47 Uhr
Mr. Museum



Solange eine Kommunikation zum Systemkoordinator aka Mario steht, finde ich, dass Daniel das richtige macht, am Ende nimmt er Mario nur nen bissken Arbyte ab.
--
Gruß,

Micha (der ohne Farbfilm)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
043
03.05.2010, 09:53 Uhr
danielk

Avatar von danielk


Zitat:
Mr. Museum schrieb
Solange eine Kommunikation zum Systemkoordinator aka Mario steht, finde ich, dass Daniel das richtige macht, am Ende nimmt er Mario nur nen bissken Arbyte ab.

Danke! Hast Du Lust, den eingebauten Joystick-Treiber zu testen? Ich habe nämlich gerade eine neue CAOS-Testversion hochgeladen. Abgesehen von der Integration des Joystick-Treibers habe ich auch noch einen weiteren kleinen IRM/Stack-Umschaltfehler gefunden und beseitigt.

Heute Abend werde ich noch etwas mehr über die Details schreiben und Diff-Dateien zur Verfügung stellen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
044
03.05.2010, 10:03 Uhr
Mr. Museum



@Daniel, gerne, das Problem ist nur, ich hab hier keinen Brenner... Ich wäre frühestens nächste Woche dazu fähig, EPROMs zu beschreiben, muss dazu nach Hohenstein-E um entweder meinen DelaIII zu holen, oder Vesuv samt Atari TT mit Pinatubo ankurbeln.

Einzige Alternative, du schickst mir nen gebrannten EPROM wenn Du meinst, es läuft und ich teste es hier in Leipzig, als Warensendung halten sich die Kosten im Rahmen, würde Dir dann das Teil zurückschicken.
--
Gruß,

Micha (der ohne Farbfilm)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
045
14.05.2010, 23:10 Uhr
danielk

Avatar von danielk


Zitat:
Mr. Museum schrieb
@Daniel, gerne, das Problem ist nur, ich hab hier keinen Brenner...

OK, in dem Fall lassen wir es einfach. So tragisch ist es nicht. Aber danke für das Angebot!

Mario, Ralf und meinereiner stehen übrigens mittlerweile in regem Austausch via E-Mail. CAOS 4.5 ist im Kommen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
046
15.05.2010, 22:30 Uhr
Mr. Museum



@danielk: nächste woche nehm ich meinen Brenner mit nach Leipzig, bzw. ich frag nen Kollech ob er mir mal nen EPROM befüllt, dann kanns losgehn.
--
Gruß,

Micha (der ohne Farbfilm)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
047
24.12.2013, 11:26 Uhr
ralle



Moin...

Ich hole den mal aus der Versenkung, weil ich noch einen Bug im CAOS4.4 gefunden habe.

Sichtbar wird dieser, wenn ich folgendes kleines Basic-Prog starte:

1 cls
2 window 8,18,8,18: rem window ohne werte stellt großes fenster wieder her
3 paper 0:rem Farbwert Hintergrundfarbe
4 cls

Normal sollte sich das "Kästel" so etwa mittig befinden. Im Caos 4.5 ist der Bug nicht mehr vorhanden (Test mit ReiseKC)

Scheint andere Probleme zu haben, ich werde den KC einfach mal wechseln müßen. Bug ist bei der einen Kiste noch vorhanden, trotz 4.5
--
Gruß Ralle

Wenn Sie dazu neigen, Bedienungsanleitungen zusammen mit dem Verpackungsmaterial wegzuwerfen, sehen Sie bitte von einem derart drastischen Schritt ab!...
... Nachdem Sie das Gerät eine Weile ausprobiert haben, machen Sie es sich am besten mit dieser Anleitung und ihrem Lieblingsgetränk ein oder zwei Stunden lang in Ihrem Sessel bequem. Dieser Zeitaufwand wird Sie dann später belohnen...

aus KENWOOD-Bedienungsanleitung TM-D700

Dieser Beitrag wurde am 24.12.2013 um 16:05 Uhr von ralle editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek