6/84, S. 18-19
Leserforum

Leserforum

Rechengenauigkeit

Wieso kommt beim Arbeiten mit der Sinus-Funktion beim VC 20 ein anderer Wert heraus als mit meinem Taschenrechner?

Albert Bartels

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.

Andreas Volz

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.

Hans Mair

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?

Harald Janning

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?

Gundolf Plischke

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?

Carsten Bruch

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.

Ralph Babel

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.

Ralph Babel

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.

Ralph Babel

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ß).

Ralph Babel

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.

Guido Stapel

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.

R. Babel

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.

Ralph Babel

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.

Guido Stapel

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.

Guido Stapel

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).

Detlef Wacker

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.

Detlef Wacker

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

Guido Stapel

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.

Frank Tecker

PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →