![Leserforum Leserforum](18-1.jpg)
Leserforum
Rechengenauigkeit
Wieso kommt beim Arbeiten mit der Sinus-Funktion beim VC 20 ein anderer Wert heraus als mit meinem Taschenrechner?
Die meisten Basic-Interpreter rechnen intern mit einer geringeren Genauigkeit als ein Taschenrechner. Besonders bei höheren mathematischen Funktionen kann es daher zu kleinen Abweichungen kommen.
Commodore 64-Programme auf VC 20?
Sind die für den C 64 abgedruckten Programme auch für den VC 20 zu benutzen ? Natürlich nur, soweit die benötigte Peripherie vorhanden ist.
Sofern es sich um reine Basic-Programme ohne POKEs und PEEKs handelt, gibt es keine Schwierigkeiten bei der Übernahme von Programmen des C 64 auf den VC 20 oder umgekehrt. Wegen der unterschiedlichen Zeichenzahl pro Bildschirmzeile (22 Zeichen beim VC 20, 40 Zeichen beim C 64) wird die Bildschirmdarstellung unter Umständen jedoch etwas unübersichtlich. Entsprechende Änderungen bei den PRINT-Befehlen sind jedoch auch für den Anfänger nicht allzu schwer zu bewerkstelligen. Falls das Programm aber POKE-Befehle oder Maschinenspracheteile enthält, ist die Anpassung ohne Kenntnis der jeweils anderen Systemadressen kaum möglich.
»PRINT #« abkürzen?
Ich habe das Programm »Datenverwaltung« aus Heft 4/84 abgetippt und es läuft einwandfrei bis auf die Speicherung der Daten. Immer wenn ich »S« (= speichern) drücke und den Kassettenrecorder auf »Aufnahme« schalte, erscheint ein Syntax-Error in Zeile 615.
In Zeile 615 wird mit dem PRINT #-Befehl in eine Banddatei geschrieben. Sehr wahrscheinlich haben Sie bei der Eingabe dieses Befehls die Abkürzung »?» für PRINT verwendet, was bei PRINT # nicht zulässig ist.
VC 20 erweitern ?
Welche Speichererweiterung ist ideal für den VC 20?
Der VC 20 hat ja leider die unangenehme Eigenschaft, daß Video- und Farbspeicher je nach Speicherausbau unterschiedliche Adressen im RAM einnehmen. Ideal erscheint daher die Verwendung einer Erweiterungsplatine mit mehreren Steckplätzen, so daß man zwischen den verschiedenen Speichererweiterungen umschalten kann. Eine andere Lösung ist die Verwendung einer 64 KByte RAM-Karte. Zwar kann der VC 20 mit soviel Speicher eigentlich gar nichts anfangen, aber diese Karte kann alle denkbaren Speichererweiterungen simulieren. Man spart sich so das lästige Umstecken der einzelnen Erweiterungen.
Eine solche 64 KByte RAM-Karte bietet zum Beispiel die Firma Roos Elektronic, Kleiner Markt 7, in 4190 Kleve an.
Maschinensprache laden?
Wie kann ich mit dem Commodore 64 Maschinenprogramme laden? Welche Hard- oder Software fehlt mir dafür?
Maschinenspracheprogramme werden entweder mit »LOAD ”Name”,1,1« (von Kassette) oder mit »LOAD ”Name”,8,1« (von Diskette) geladen.
Die Sekundäradresse »1« veranlaßt den Computer, das Programm nicht wie üblich an den Basic-Anfang zu verschieben, sondern es an seine originale Startadresse zu laden.
Autostart
Wie bringe ich meine Programme dazu, daß sie nach dem Laden von Diskette oder Kassette automatisch starten?
Beim Laden von Datassette ist ein Autostart sehr einfach: Drücken Sie gleichzeitig »Shift« und die »RUN/STOP«-Taste. Es wird das nächste Programm von Kassette gelesen und sofort gestartet. Beim Diskettenbetrieb empfiehlt es sich, zunächst das DOS 5.1 von der Demo-Diskette zu laden. Der DOS-Befehl »↑» (Hochpfeil), gefolgt von einem Programmnamen, lädt das entsprechende Programm von Diskette und startet es automatisch.
So wertet man Formeln in Basic-Programmen aus
Frage: "Wie wertet man Basic-Programme aus?”
Ausgabe: 64/5
Name: Steffen Roehn
Die Routine ab Adresse 44446/$AD9E (nicht $AD9F!) wertet zwar sowohl numerische als auch Stringausdrücke aus, jedoch muß beim Auswerten eines Strings nach dessen Bearbeitung derselbe auch wieder aus dem Stringstack entfernt werden, da dieser sonst überläuft (daher auch der »FORMULA TOO COMPLEX«). Dies erfolgt durch Aufruf der Routine »FRESTR« ab Adresse 46755/$ B6A3, wobei gleichzeitig auch geprüft wird, ob es sich bei dem gelesenen Ausdruck auch um einen String handelt. Erklärungen zur Formelauswertung und anderem, was dazu gehört, befinden sich außerdem im »Interface Age Systemhandbuch zum Commodore 64« auf den Seiten 10 bis 22.
Komma als Satzzeichen
Frage: "Kann man bei einem Inputbefehl das Komma als normales Satzzeichen verwenden?”
Ausgabe 64/5
Name: Gerhard Giessmann
Um einen INPUT-Befehl auch Kommata (und Doppelpunkte) akzeptieren zu lassen, muß man lediglich als erstes Zeichen ein Anführungszeichen eingeben, das nicht in die Variable nach »INPUT« übernommen wird. Diese Eingabe läßt sich auch automatisch über den Tastaturpuffer simulieren, indem man »POKE 631, 34: POKE 198, 1« vor den »INPUT« setzt. Jetzt wird das Anführungszeichen von selbst ausgegeben. Eleganter ist es natürlich, wenn eine eigene Eingaberoutine verwendet wird, wie beispielsweise »INPUTFORM« und »INPUTLINE« im EXBASIC LEVEL II.
VC 20-Programme auf CBM 8032
Frage: "Wie kann ich Programme von VC 20 auf dem CBM 8052 zum laufen bringen?”
Ausgabe: 64/5
Name: Gerhard Grahl
Das Einlesen von Relativprogrammen (abgespeichert ohne Sekundäradresse) auf Kassette mit beliebiger Startadresse in den CBM 8032 erfolgt durch OPEN 1: POKE 635, 1: POKE 636, 4: SYS 62456
Das Programm kann nun gelistet werden (allerdings beherrschen die Drucker zum 80er meist nicht das Pfundzeichen, was bei Ausgabe von »Control Red« beachtet werden muß). Mit Exbasic Level II können Diskettenprogramme durch »MERGE« in den 80er geladen werden.
Nach einer Stunde Fernseher justieren
Frage: "Nach zirka einer Stunde verliert mein Fernseher die Farbe, was kann ich dagegen tun?”
Ausgabe: 64/5
Name: Klaus Heinz
Die einfachste Lösung dieses allgemein verbreiteten Problems erscheint mir im Nachjustieren der Sendereinstellung am Fernseher (was dann von Zeit zu Zeit mal geschehen muß).
Das Problem kann auch an einem verstellten Trimmer des C 64 liegen. Dieser befindet sich auf der Rückseite des Computers und kann mittels eines kleinen Schraubendrehers von außen verstellt werden.
Entfernungsberechnung mit VC 20
Frage: "Wie kann ich mit dem VC 20 die Entfernung zwischen zwei Koordinaten auf der Oberfläche der Erde berechnen?”
Ausgabe: 64/5
Name: Harald Lang
Ich habe ein solches Programm für C 64 geschrieben. Es läßt sich leicht an den VC 20 anpassen. Interessenten können sich an mich wenden.
Info: Alfred Born, Hermannstr. 10, 1000 Berlin 64, Tel. 030/6 2198 28
Bildschirm horizontal scrollen
Frage: "Kann ich mit dem C 64 den Bildschirm horizontal scrollen lassen?”
Ausgabe: 64/5
Name: Andres Linz
Das Scrolling (insbesondere Softscrolling) ist im »Interface Age Systemhandbuch zum Commodore 64« auf den Seiten 60 bis 64 ausführlich erklärt.
Drucker/Floppy-Einschalt-Test
Frage: "Mit welchen Befehlen kann ich überprüfen, ob der Drucker oder die Floppy eingeschaltet ist?”
Ausgabe: 64/5
Name: Ernst Jeschke
Eine Überprüfung, ob ein Drucker am seriellen Bus angeschlossen ist, läßt sich beim Commodore 64 durch folgende Befehle erreichen:
100 POKE 768, 185 110 OPEN 1, 4: PRINT#1 120 POKE 768, 139
Da so jegliche Fehlermeldung unterdrückt wird, kann nun durch Abfrage der Statusvariablen »ST« geprüft werden, ob die Leerzeile (oder jeder beliebige andere Text wie zum Beispiel nicht druckende Steuerzeichen!) vom Drucker angenommen wurde. Somit kann verhindert werden, daß ein Programmlauf durch »DEVICE NOT PRESENT« abgebrochen wird. Ein Test auf Vorhandensein einer Diskettenstation kann durch entsprechende Programmänderung erfolgen.
Um abzufragen, ob der Drucker angeschaltet ist, muß man eine Probezeile an den Drucker schicken. Dies funktioniert nur, falls noch ein anderes Gerät am seriellen Port angeschlossen ist (Floppy, Plotter): 10 OPEN4,4
20 PRINT#4, "------" 30 PRINT#4 40 CLOSE4
2. Möglichkeit: Die Speicherstelle 186 enthält die Adrese des Gerätes, mit dem zuletzt Daten ausgetauscht wurden. Also 8 bei Disk, 1 bei Datasette und 4 nach dem Drucken. Dies ist in Ladeprogrammen gut verwendbar.
10 A = PEEK(186) 20 IFB=0THEN B=1:LOAD"NAME”,A,1 30 SYS Startadresse
Somit ist kein Umschreiben von Ladeprogrammen von Floppy auf Recorder oder umgekehrt mehr nötig.
Schachprogramme
Frage: "Kennt jemand ein spielstarkes Schachprogramm für den C 64?”
Ausgabe: 64/5
Name: Peter Jugl
Außer den genannten Schachprogrammen Grandmaster und Sargon II gibt es, soweit mir bekannt, nur noch zwei spielstärkere Programme:
1. CHESS 7.0 von ODESTA (auf Diskette)
Features: Spiele können auf Diskette abgespeichert und wieder eingelesen werden, viele Meisterpartien sind bereits gespeichert, Blindschachvariationen möglich, Zurücknahme, Prüfung eines Feldes auf Bedrohung und so weiter. Preis: zirka 300 Mark.
2. Colossus 2.0 (auf Kassette)
Ähnliche Möglichkeiten wie oben, aber durch die Kassettenspeicherung etwas begrenzt. Preis: zirka 120 Mark. Beide Programme sind im Fachhandel erhältlich.
Vermutlich wird Herrn Jugl kein Computerprogramm schlagen, so daß er auf einen Schachcomputer zurückgreifen sollte. Die Spitzenschachcomputer schlagen Computerschachprogramme übrigens recht einfach und überzeugend. Die guten NOVAG-Schachcomputer haben mich persönlich überzeugt, da sie recht spielstark sind, keine Spielfehler machen (jedenfalls keine offensichtlichen) und ständig auf den neuesten Stand gebracht werden können, da sie mit EPROM-Technik arbeiten. Das heißt: Gibt es ein neues, spielstärkeres Programm, so kann man seinen alten Schachcomputer einfach nachrüsten (= austauschen).
Vom Bildschirm auf Kassette
Frage: "Ich suche ein Programm, um Daten vom Bildschirm (C 64) auf Kassette speichern und von dort wieder abrufen zu können”
Ausgabe: 64/5
Name: Thomas Mandl
Das Problem, welches sich Herrn Mandl stellt, muß in zwei Kategorien aufgespalten werden:
1) Abspeichern des Bildschirminhaltes 40 x 25 Zeichen:
Wenn nur rechnerspezifische Zeichen (also keine hochauflösende Grafik) abgespeichert werden sollen, so ist dies recht einfach. Eine denkbare Lösung wäre, die 1000 Zeichen (40 x 25) mit der PEEK(X)-Funktion in einen Vektor einzulesen und diesen Vektor dann in ein sequentielles File auf Kassette zu schreiben. Die 1000 Zeichen stehen im Computer ab Adresse 1024 bis Adresse 2023. Mit folgendem Programm können die Zeichen ausgelesen werden:
10 DIM A(1000) 20 FOR I = 1 TO 1000 30 A(I) = PEEK(I + 1023) 40 NEXT I
Dieser Vektor (A) kann nun einfach auf Kassette geschrieben und jederzeit wieder geladen werden. Mit POKE(X) kann dann der Text/die Grafikzeichen einfach wieder auf den Bildschirm zurückbefördert werden. Eine Erweiterung des obigen Programmes verdeutlicht dies:
50 PRINT »SHIFT/CLR HOME« (Bildschirm löschen) 60 FOR I = 1 TO 1000 70 POKE 1023 + I,A(I) 80 NEXT I 90 END
Wenn man noch die Farben der 1000 Zeichen abspeichern will, so muß man zusätzlich noch den Speicherbereich von 55296 bis 56295 auslesen. Das Verfahren ist identisch! So kann immerhin schon eine Blockgrafik (mit Grafikzeichen) in Farbe oder ein Text abgespeichert werden.
2) Abspeichern von hochauflösender Grafik:
Bei hochauflösender Grafik ist das schon etwas umständlicher, denn hier muß man das Bitmuster der Grafik abspeichern. Das Verfahren ist identisch mit jenem, das eine hochauflösende Grafik auf einen Drucker bringt (Hardcopy). Vielleicht schreibt ein anderer Leser für Herrn Mandl ein entsprechendes Programm, ich habe leider keine Zeit dazu, da ich im Abistreß stehe.
Um Daten direkt vom Bildschirm auf Kassette übertragen zu können, muß man in Basic mit Files arbeiten:
60000 OPEN 1,1,1,»Bildschirm« 60050 FOR I = 1024 TO 2023 60100 P = PEEK(I):PRINT#1,I 60150 NEXT I : CLOSE 1 Nun umgekehrt: 60000 OPEN 1,1,0,»Bildschirm« 60050 FOR I = 1024 TO 2023 60100 INPUT#1,P:POKEI,P 60150 NEXT I:CLOSE 1
Das DOS auf der Demodiskette - noch 2 Befehle
Bei Ihrem Bericht über das DOS 5.1 in der Mai-Ausgabe des 64’ers wurden zwei Befehle des DOS 5.1 nicht behandelt.
Das ist einmal der Befehl: % Name.
Dieser Befehl lädt ein Maschinenprogramm ein, das sonst mit LOAD”Name”,8,l geladen werden muß. Nach diesem Befehl braucht auch kein NEW mehr eingegeben werden, wie es sonst nach dem Laden eines Maschinenprogramms nötig ist, um keinen OUT OF MEMORY ERROR zu erhalten.
Der zweite der beiden weiteren Befehle ist >Q.
Er bewirkt, daß das DOS 5.1 verlassen wird. Dies ist dann wichtig, wenn ein anderes Programm in den Bereich geladen werden soll, in dem das DOS 5.1 hegt (hex CC00 bis CF58 = dez 52224 bis 53080). Da die Routine zur Überprüfung der Eingabe in diesem Bereich liegt, würde ein Überschreiben dieser Routine in den meisten Fällen zum Absturz führen.
Das DOS 5.1 kann nach >Q mit SYS 52224 wieder gestartet werden.