Leserforum 1/94 Nikolaus Heusler Arnd Leserforum 64'er Redaktion 10.12.93 10.12.93 Objekt: 64'er Magazin Ausgabe: 01/94 Rubrik: Leserforum Redakteur: Arnd Autor: Nicki Heusler, XXX/XXXXXX Datum: 12.10.1993 Thema: Leserforum Anfragen/Antworten Bitte ersetzt in diesem Text alle Symbole // durch den Klammeraffen! ================================================================================ //u:Leserforum //zu:Unterbrechung //t4:Auf die Frage von Harry Weiler in 64'er 3/93, warum sich bei eingesteckter Final Cardridge III kein Interrupt auslösen läßt, kenne ich eine sehr einfache Antwort: Das Modul besitzt eine eigene Interrupt-Routine, die zum Beispiel für die Steuerung der Maus benötigt wird. Da auch FC III nicht in der Lage ist, den Vektor dauerhaft zu fixieren, überschreibt es ihn nach jedem POKE- und SYS-Befehl mit seinem Sollwert. Auf herkömmliche Weise kommt man an den IRQ-Vektor also nicht heran. Glücklicherweise haben die Entwickler den NMI übersehen, der eine IRQ-Programmierung doch noch ermöglicht. Man ruft von Basic aus ein Maschinenprogramm auf, das einen Timer-NMI vorbereitet und dann wieder zurückkehrt. Der IRQ-Vektor wird nun völlig unnötig vom Modul überschrieben, der NMI-Vektor hingegen bleibt unangetastet. Während sich die Cardridge in Sicherheits wiegt, schlägt nach Ablauf des Timers der NMI zu, ändert den IRQ-Vektor im Sinne des Programmierers und das Modul ist überlistet. Hier ist ein kurzes Beispiel: c000 ldx #$31 ;NMI-Vektor c002 ldy #$c0 ;auf $c031 c004 stx $318 c007 sty $319 c00a ldx #$ff ;Startwert für Timer A c00c stx $dd04 c00f ldy #$ff c011 sty $dd05 c014 ldx #$10 ;Startwert für Timer B c016 ldy #0 c018 stx $dd06 c01b sty $dd07 c01e lda $dd0d ;Unterlauf von Timer B c021 lda #$82 ;als NMI-Quelle c023 sta $dd0d c026 lda #$41 ;Timer B mit Timer A c028 sta $dd0f ;als Trigger starten c02b lda #1 ;Timer A starten c02d sta $dd0e c030 rts ; neue NMI-Routine c031 cli c032 pha c033 lda $dd00 ;NMI-Register löschen c036 lda #$42 ;IRQ-Vektor auf $c042 c038 sta $314 c03b lda #$c0 c03d sta $315 c040 pla c041 rti ; neue IRQ-Routine c042 inc $d020 ;Beispiel: Rahmen flimmern c045 jmp $ea31 ;zum System-IRQ //t4:Dabei wird allerdings die Interruptroutine der Final Cardridge III nicht mehr aufgerufen. Wer einen besseren Vorschlag hat, soll uns schreiben. //ar:Rüdiger F. Strey, 17033 Neubrandenburg //t4:Die Antwort von Jan Lieder zu diesem Problem in 64'er 10/93 stimmt meines Erachtens nicht. Denn erstens läßt sich das Modul mit »KILL« abschalten und greift danach nicht mehr in den Interrupt ein, und zweitens gibt es den Befehl »OFF«, der alles bis auf den Schnell-Lader abschaltet. Dieser Befehl wird im Handbuch nicht erwähnt. Übrigens läßt das Modul auch das Präfix »$« für hexadezimale Zahlen zu, auch dieser Hinweis fehlt im Handbuch. //ar:Christian Abt, 26802 Moormerl, Oldersum //zu:Wanted: 1581 //t4:Drei kurze Fragen zur Floppy 1581: Wo gibt es dieses Laufwerk noch, und was kostet es? Kann ich damit auch auf dem PC oder dem Amiga bespielte Disketten lesen? //ar:Alexander Görg, 56410 Montabaur //zu:Komm mal, Comal! //t4:Wo bekomme ich Informationsmaterial über die Programmiersprache COMAL 0.14? In einer der letzten Ausgaben des 64'er-Magazins wurde erwähnt, daß COMAL im Prinzip ein weiterentwickeltes Basic mit neuen Funktionen ist. Ich wäre also sehr an einer Aufstellung aller Funktionen und Befehle interessiert.
//ar:Mario Eickemeier, 37081 Göttingen //t4:Hier sind drei Adressen von COMAL-Usergruppen in Deutschland, die Ihnen sicherlich weiterhelfen können: Comal User Group, C. Canisius, Freiheitsstraße 30, 40627 Düsseldorf Comal User Group Bielefeld, c/o K. D. Polloczek, August-Bebel-Straße 80, 33602 Bielefeld Comalgruppe Deutschland, D. Belz, 25938 Utersum/Föhr, Tel. 04683/500 //ar:Nikolaus M. Heusler, XXXXX XXXXX //zu:Drucker-Sonderwünsche Made in China //t4:Ich möchte einen Drucker Epson FX 850 mit paralleler Schnittstelle sowie einem seriellen Interface #8143 an den C 64 (Made in China) anpassen. Mit einem parallelen Druckerkabel (Userport nach Centronics) und der Final Cardridge (Interface: Centronics, Type: Epson compatible) hat das Gerät nur einmal den Bildschirm gedruckt. Wie kann ich den Signalfluß überprüfen, um zu ermitteln, ob Rechner oder Drucker defekt ist? Leider besitze ich keinen Schaltplan. Welches Anschlußkabel benötige ich, um den Rechner mit der seriellen Druckerschnittstelle zu verheiraten? Wie initialisiere ich den C 64 dafür? Welches Interface benötige ich für die elektronische Schreibmaschine ERIKA 3004 electronic (ein DDR-Robotron-Produkt)? Wo erhalte ich das passende Interface, und wie betreibe ich Erika per C 64? //ar:Hartmut Hegenbart, 06406 Bernburg //zu:Geospell stürzt ab //t4:Antwort auf die Frage von Steffen Kopf in 64'er 9/93: Warum stürzt Geospell nach einigen Neueingaben bzw. nach dem Suchen ab?
Dieser Fehler tritt auf, wenn man als persönliches Wörterbuch die bereits vorhandene »GeoDictionary«-Datei wählt, da diese bedingt durch die Klasse »pers. Dict.« ebenfalls im Auswahlfenster angezeigt wird. Da das Programm jedoch vom englischen Dictionary-File ausgeht, welches als »reine Daten« deklariert und nicht für Änderungen vorgesehen ist, stürzt es im genannten Fall nach einigen Eingaben ab, da die neuen Daten vermutlich Teile des Programms überschreiben. Es ist für die Arbeit mit Geospell also unbedingt erforderlich, ein eigenes persönliches Wörterbuch anzulegen. In dieses werden dann die neuen Wörter geschrieben und stehen bei Wahl des eigenen persönlichen Buches wieder für neue Text-Prüfungen zur Verfügung. //ar:Hagen Edlich, 06869 Coswig //zu:Basic ohne Handbuch //t4:Leider besitze ich kein Handbuch zu meinem C 64. Daher bitte ich Euch, folgende Fragen zu beantworten: 1. Wie erreiche ich, daß mein C 64 in einem Basicprogramm zufällig zwischen zwei Zeilennummern wählt? 2. Ist es möglich, in Basic einen Text mehrere Sekunden lang stehen zu lassen und dann erst zur nächsten Zeilennummer weiterzugehen?
//ar:Thomas Scheicher, 57258 Freudenberg //t4:ad 1: Der Befehl A=INT(RND(TI)*2) weist der Variablen A zufällig entweder den Wert 0 oder 1 zu. Um zufällig entweder zu Zeile 1000 oder 2000 zu verzweigen, könnten Sie folgenden Programmausschnitt einsetzen: //li:500 A = INT(RND(TI)*2) 510 IF A=0 GOTO 1000:REM FALLS A=0 520 GOTO 2000:REM FALLS A=1 //t4:Hinweis: Die Funktion RND(TI) erzeugt Zufallszahlen zwischen 0 und 0,9999999, die Funktion INT(...) rundet ganzzahlig ab. ad 2: Um in einem Basicprogramm eine Pause einzufügen, verwenden Sie eine FOR..NEXT-Schleife, die den Rechner einige Zeit lang aufhält: //li:400 FOR I=1 TO 2000 : NEXT //t4:Diese beiden Befehle warten etwa eine Sekunde. Für andere Wartezeiten ändern Sie einfach die Konstante 2000 entsprechend: 4000 für 2 Sekunden und so weiter. //ar:Nikolaus M. Heusler, XXXXX XXXXX //zu:Fragen zu Amica Paint und zum C 128 //t4:Gibt es Amica Paint eine Farbdruck-Routine? Wo erhalte ich den Source-Code zu diesem Malprogramm? Wie müssen beim C 128 die VDC-Register geändert werden, um 160 vier Pixel breite Zeichen zu erzeugen? Wo gibt es ein kommentiertes Betriebssystem-Listing für den C 128? //ar:Christian Ening, 4423 Gescher //zu:Kein bunter Hund //t4:Ich habe einen C 64 und GEOS 2.0. Neben vielen Programmen der GEOS-Serie habe ich seit kurzem auch Geobasic. Zu meinem Erstaunen habe ich festgestellt, daß wohl die Möglichkeit, Text farbig zu gestalten, nicht so wie im Commodore-Basic nicht gegeben ist. Auch gibt es im Handbuch weder eine Aussage für noch wider diese Möglichkeit. Ich es nicht möglich, einzelne Zeichen oder Wörter farblich darzustellen, ohne auf Sprites auszuweichen. Wenn doch, wie? //ar:Ralph Grund, 13187 Berlin //zu:Boxen in Bayern //t4:Zur Frage von Christian Brand in 64'er 10/93 über Datenfernübertragung
Als Terminalprogramm für den C 64 eignet sich Novaterm in der Version 9.3 oder 9.4, das Public Domain erhältlich ist. Die Unterstützung des Userports zum Modem ist allerdings nur bis 2400 Baud möglich. Höhere Raten lassen sich nur mit Swiftlink oder einer ACIA-Karte erzielen, falls auch das Modem so schnell ist. Einige Mailboxen in Bayern (Name, Standort, Parameter, Telefonnummer): //li:private FFB-Box, Fürstenfeldbruck, 300 bis 14400 Baud, 8N1, Tel. 0814117287 DHB, Hamm, 300 bis 2400 Baud, 8N1, Tel. 02381442291 Schnitzel-Box, Mühlheim Kärlich, 300 bis 2400 Baud, 8N1, Tel. 0263049862 //ar:Thorsten Oelfke, Hilden //t4:Anm. d. Red.: Weder Hamm noch Mühlheim Kärlich liegen unseres Wissens in Bayern. Dennoch veröffentlichen wir diese Nummern gern. //zu:Scanny scannt schlecht //t4:Ich möchte mit dem Programm »Scanner« aus 64'er 4/93 (Extratouren) arbeiten, haben dabei aber ein Problem: Bei der Anwahl des Menüpunktes 4 (Einscannen) wird der Bildschirm weiß, nichts weiteres passiert. Nun stellte ich fest, daß das Basicprogramm nur bis zu dem SYS 49152 in Zeile 445 kommt. Entweder mache ich einen groben Fehler, oder das Programm verträgt sich nicht mit meinem Drucker, einem Star LC-10 mit Wiesemann-Interface. Kann ich die Druckeradresse auf 4 ändern? //ar:Manfred Kowarsch, 64407 Fr.-Crumbach //t4:Uns sind zu diesem Programm keine Fehler bekannt. Sollte ein Leser positive Erfahrungen mit dem Star LC-10 und Interface gemacht haben, wären wir für eine kurze Nachricht dankbar. //ar:Nikolaus Heusler, XXXXX XXXXX //zu:Booten unerwünscht //t4:Zur Frage von Ronny Bachmann in 64'er 10/93
Das geschilderte Problem läßt sich nicht auf einfache Weise beheben. Das DOS versucht, den Code »CB« als Fileverkettung zu lesen, und verweist somit auf Spur 67, Sektor 66, was den Fehler Nr. 68 zur Folge hat. Man könnte das Problem umgehen, indem man keinen Eintrag im Directory auf Spur 1, Sektor 0 verweisen läßt: Löschen Sie die beschriebene USR-Datei bzw. das File »CBM« auf der Test/Demodisk. Da Collect (Validate) dann aber den Sektor wieder freigibt, hilft folgende kleine Zeile weiter: //li:OPEN 1,8,15,"B-F 1 0 1 0":CLOSE 1:COLLECT:OPEN 1,8,15,"B-P 1 0 1 0":CLOSE 1 //ar:Thorsten Oelfke, Hilden //zu:Allemannische Tastatur //t4:Gibt es für den C 64 ein Programm, das die amerikanische Tastaturbelegung auf deutsche Belegung umstellt? //ar:Anja Gläser, 2810 Verden/Aller //zu:Wer kennt den µC 8031? //t4:Für eine ansprechende Schaufenster-Werbung habe ich vor einiger Zeit ein Maschinenprogramm für den C 64 (6510) geschrieben. Da es gut läuft und Kunden auch gelegentlich nachfragen, möchte ich das Programm auf einen MCS-51-Mikrocontroller umschreiben. Ich suche einen Assembler für MCS-51, speziell µC 8031, der mir auf dem C 64 als Entwicklungsumgebung die Programmierung und möglichst auch einen simulierten Programmlauf und das Brennen von Eproms über entsprechende Hardware ermöglicht. Wer bietet ein solches System an, welche Funktionen bietet es? Besonders für die Testphase möchte ich auf EPROMs als Programmspeicher verzichten und auf gestützte statische RAMs (6264) oder EEPROMs (2864) zurückgreifen. Wie gestaltet sich hier der günstigste hardwaremäßige Anschluß an den C 64 an Stelle üblicher Eprommer? //ar:Matthias Wagner, 92249 Vilseck //zu:Nachschub für die Tastatur //t4:Antwort auf die Frage von Dennis Küper in 64'er 10/93: Wo gibt es eine neue Tastatur für den C 64?
Laut Produktführer 1/93 kann man C 64-Tastaturen für DM 79,- und C 128-Tastaturen für DM 149,- bei Conrad Elektronik, 92240 Hirschau bestellen. //ar:Roy Bachmann, 99848 Wutha-Farnroda //zu:tiefgefrorene Sprites //t4:Wenn ich Programme mit dem »Diashow-Maker« einfriere und speichere, sind Sprites auf diesen Bildern vorhanden. Beim Konvertieren in ein anderes Grafikformat gehen sie jedoch verloren. Wie kann ich Bilder mit Sprites konvertieren?
//ar:Bernd Lorenz, 58706 Menden //t4:In 64'er 4/88 wurde das Programm »Uniprint« veröffentlicht, das eine entsprechende Funktion bietet. Damit können Sie Grafiken auch drucken - mit Sprites. »Uniprint« wurde noch einmal im Sonderheft 32 vorgestellt. //ar:Nikolaus M. Heusler, XXXXX XXXXX //zu:Datasette als Streamer //t4:Zur Frage von Holger Schmitz in 64'er 10/93, ob und wie man eine Datasette als Streamer einsetzen kann, haben wir drei Vorschläge erhalten:
In »das große Commodore 64 Buch« von Data Becker, Düsseldorf, ISBN 3-89011-370-2 wird ab Seite 793 ein Fast-Tape-System mit einigen Anwendungen vorgestellt. Dazu gehören auch ein Backup-Programm von Diskette auf Kassette und umghekehrt sowie ein Katalogisierungsprogramm für Fast-Tape-Kassetten. Eine Diskette zum Buch gibt es meines Wissens nicht, es steht also einige Abtipp-Arbeit ins Haus, falls Sie das Buch noch erhalten. Leider hat das Backup-Programm von Disk auf Tape einige Einschränkungen, die seinen Wert doch erheblich mindern. So werden Dateien über 92 Blocks nicht kopiert, außerdem keine SEQ, USR und REL-Files. In einem »Aufwasch« können jeweils nur 48 Programme kopiert werden. Der Quelltext ist aber ausreichend dokumentiert, Sie daß Sie ggf. versuchen können, das Programm selbst zu erweitern. //ar:Jürgen Hund, 04435 Schkeuditz //t4:Der Einsatz einer Datasette als Streamer erscheint mir aufgrund der zu geringen Aufzeichnungsdichte nicht sinnvoll. Bei normaler Auszeichnung passen etwa 300 Bit pro Sekunde auf das Band, das entspricht 27 Sekunden Band pro Kilobyte oder 461 Minuten (über sieben Stunden) für 1 Megabyte. Aus Gründen der Datensicherheit ist der Faktor 10 das größtmögliche, was man aus dem Tape noch herausholen kann. Ein Megabyte würde dann immer noch 45 Minuten fressen. Eine weitere Beschleunigung kann erreicht werden, indem Sie Ihren Computer an die Hifi-Anlage anschließen. //ar:Thorsten Rieger, 37520 Osterode/Harz //t4:Schreiben Sie ein kleines Basic-Programm, das die Diskette Block für Block ausliest und in ein File auf Cassette schreibt. //ar:Norbert Wirth, 90249 Nürnberg //zu:verbrannt //t4:Ich besitze den Eprombrenner 1012 von Data 2000. Allerdings glaube ich einfach nicht, daß man nur 31 Blocks auf ein Eprom brennen kann! Als ich versuchte, ein kurzes Basicprogramm zu brennen, wurde zwar »gebrannt«, aber das Programm lief nicht. Bei späteren Leertest war das Eprom angeblich leer. Wer weiß mehr über die Bedienung dieses Eprommers?
//ar:Matthias Mehlhose, 15890 Eisenhüttenstadt //t4:Eproms, die mit dem C 64 eingesetzt werden, haben fast immer Bezeichnungen, die mit 27 beginnen, zum Beispiel 2764 oder 27128. Die Zahl hinter der 27 gibt die Speicherkapazität des Bausteins in Kilobit an. So passen also in ein 2764 genau 8 Kilobyte oder etwa 32 Blocks auf Diskette. Der 27128 faßt schon 16 KByte, also 64 Blocks. //ar:Nikolaus M. Heusler, XXXXX XXXXX //zu:Weißglut //t4:Folgendes Programm bringt mich zur Weißglut: //li:10 POKE 2040,13:POKE 53269,1 20 FOR N=0 TO 35:READ Q:POKE 853+N,Q:NEXT 30 POKE 53248,50:POKE 53249,100 40 DATA 0,0,0,0,8,0,0,28,0,0,62,0,0,28,0,0,136,128 50 DATA 0,127,0,0,8,0,0,8,0,0,8,0,0,20,0,0,20,0,0,34,0 60 DATA 0,34,0,0,65,0,0,0,0 //t4:Es erzeugt ein weißes Männchen auf dem Bildschirm, das sich nicht bewegt. Das Problem ist dabei, daß ich das Männchen gerne per Joystick bewegen würde. Wie muß ich das Programm ändern bzw. ergänzen? Antworten Sie mir bitte, oder ich explodiere!
//ar:Ted Schirmer, 02763 Zittau //t4:Bloß das nicht! Sie müssen Sie Zeile 30 Ihres Programms ändern und folgende Zeilen ergänzen: //li:30 X=50:Y=100:S=6:POKE 53264,0 70 A=PEEK(56320) 80 IF (A AND 16)=0 THEN END 90 IF (A AND 1)=0 THEN Y=Y-S:IF Y<38 THEN Y=38 100 IF (A AND 2)=0 THEN Y=Y+S:IF Y>230 THEN Y=230 110 IF (A AND 4)=0 THEN X=X-S:IF X<14 THEN X=14 120 IF (A AND 8)=0 THEN X=X+S:IF X>326 THEN X=326 130 POKE 53249,Y:POKE 53248,X AND 255:POKE 53264,X/256 140 GOTO 70 //t4:Die Steuerung des Sprites erfolgt mit dem Joystick in Port 2. Soll per Port 1 gesteuert werden, ändern Sie in Zeile 70 die Zahl 56320 in 56321. In Zeile 80 wird geprüft, ob Sie den Feuerknopf gedrückt haben. Wenn ja, stoppt das Programm. Die Geschwindigkeit, mit der sich das Sprite bewegt, bestimmt die Variable S, die in Zeile 30 auf 6 gesetzt wird. Die aktuellen Koordinaten finden Sie in den Variablen X (waagerecht) und Y (senkrecht). In Zeile 90 bis 120 wird per IF-Abfrage außerdem sichergestellt, daß das Sprite nicht den Bildschirm verlassen kann. //ar:Nikolaus M. Heusler, XXXXX XXXXX