Fragen & Antworten

Sinclair

QL-Fragen

Ich bin vom Commodore 64 auf den QL umgestiegen und stehe vor folgenden Problemen:

  1. Ich suche eine Eingaberoutine, die es erlaubt. Feldlänge und Art der Eingabe (numerisch oder alphanumerisch) vorzugeben.

  2. Gesucht wird eine Routine für formatierte Zahlenausgabe.

  3. Wer hat Basic-Erweiterungen wie »mid$, left$, rightS, val, str$« und so weiter?

  4. Ich brauche Befehle oder Routine zur Realisierung einer Random-Dateiverwaltung.

H.-U. Schreiber

LPRINT III - Fehlerloses Drucken auch ohne neues EPROM möglich

Nachdem ich nach Anleitung des Sinclair-Sonderheftes 1/85 das EPROM des LPRINT III-Druckerinterfaces erneuert hatte. war — nach anfänglicher Begeisterung — die Enttäuschung groß, als doch noch, wenn auch

nicht ganz so oft. Zeichen beim Drucken verlorengingen. Nach langem Probieren fand ich heraus, daß der Fehler nicht auftaucht. wenn mit »CHR$ 5« initialisiert wird (deshalb auch nicht in Verbindung mit Tasword II). Das beruht darauf, daß bei Initialisierung mit »CHR$ 5« das EPROM nicht bei jedem zu druckenden Zeichen neu aktiviert und in den Printer-Buffer übertragen wird.

Da dann jedoch keine Sinclair-Token, also auch keine Listings druckbar sind, sah ich mir den Inhalt des EPROMs genauer an und stellte dabei fest, daß dieses durch einen emfachen POKE in Verbindung mit »CHR$ 5« doch möglich ist.

Fehlerfreies Drucken also durch Eingabe von: .LPRINT CHRS 5;: POKE 23306,30«. Diese Initialisierung wird durch den COPY-Befehl aufgehoben. Eventuell vorher festgelegter Autolinefeed oder Copymodus wird beibehalten.

S. Haustein

Tastaturabfrage

H. Fritz fragte in Happy-Computer 8/85 nach einer Tastaturabfrage Eine Abfrage der Tastatur kann man mit der Speicherzelle 23556 erreichen Dieses Byte kann die Werte 255 (keine oder SHIFT-Taste gedrückt). 13 (ENTER getastet). 32 (SPACE) oder die Werte 48 bis 57 sowie 65 bis 90 annehmen Die Abfrage in Assembler sieht dann so aus:

LD A. Wert in A laden (23556)
CP 65 Prüfung, ob Taste mit Wert 65 gedrückt. Wenn ja. dann Unterprogrammaufruf
CALL Z…

D. Fangmeyer

In der gleichen Ausgabe wurde von A Weber nach bewegten Figuren gefragt. Da nicht bekannt ist. welchen Computer er hat. unterstelle ich einen Spectrum Man gibt die Figur mit OVER1 aus. Beim zweiten PRINT an der gleichen Stelle ist die Figur verschwunden. S. Hunke

Allgemeines

Raubkopieren

Langsam widert mich diese Diskussion an Es gibt keine Ausrede für unfaires Spiel. Schließlich kann ich mich bei einem Einbruch auch nicht damit herausreden. daß ich finde. Silberbestecke seien im Laden zu teuer. Wenn die GEMA-Lösung kommt, und sie kommt bestimmt, macht man es wie immer man läßt den Schaden die Leute bezahlen, die sich fair verhalten

Ingrid Majenz

Atari

Probleme mit Atari 800XL

Immer wenn ich mit dem Programmieren meines Atari 800XL so richtig einsteige, steigt der Computeraus. Dies kann nur an einem Fehler im Betriebssystem liegen, da dieser Fehler auch bei anderen 800XL-Computern auftritt. Speziell wenn viel editiert wird, blockiert der Computer dann plötzlich die Tastatur. Nach dem Drücken von RESET nimmt der Computer dann nur noch Zahlen an. Wodurch wird dieser Zustand verursacht? Können im RAM-Speicher befindliche Programme dennoch gerettet werden? Ist dieser Fehler auch bei den älteren Atari-Computern (400/800) vorhanden? Rainer Herget

Der Fehler ist schon länger bekannt. Beim Speichern von Programmen hängt das Betriebssystem jedesmal 16 Byte an das zu speichernde Programm an Lädt man es dann wieder, sind 16 Byte verloren Um die Gefahr des Aussteigens zumindest halbwegs zu reduzieren, empfiehlt es sich. Basic-Programme öfter mal mit LIST anstelle von SAVE zu speichern. Dann muß das Programm allerdings mit ENTER geladen und mit SAVE wieder gespeichert werden. Meist stehen anschließend einige zusätzliche Byte zur Verfügung.

Beim Atari 800, also dem alten Modell, tritt dieser Fehler zumindest nicht auf. Auch der 130XE ist verschont geblieben Uns ist aber leider keine einfache Lösung bekannt, diesen Fahler bei den 800XL-Modelien zu beheben.

In dieser Ausgabe finden Sie den kompletten Basic-Interpreter Turbo-Basic für den 800XL, bei dem dieser Betriebssystemfehler beseitigt wurde.

Maus für den Atari 800XL?

Gibt es eine Maus, die sich direkt, also ohne Interface, an den 800XL oder 130XE anschließen läßt? Thomas Baron

Die Maus für den Atari 520 ST läßt sich direkt an den 800XL und 130XE (somit an alle Computer mit Atari-kompatiblen Joystickanschlüssen) anschließen. Seitens Atari ist geplant, die Maus auch für die kleinen Modelle anzubieten Wann die Maus jedoch zu kaufen sein wird, steht noch nicht fest.

Frage zum Atari 520 ST

Sind die Diskettenlaufwerke SF354 und SF 314 untereinander kompatibel? Andre Blumberg

Ja und nein, müßte die Antwort lauten. Die beiden Laufwerke unterscheiden sich eigentlich nur darin, daß das SF 354- über einen und das SF 314-Laufwerk über zwei Schreib-/Leseköpfe verfügt Das Aufzeichnungsformat ist das gleiche. Grundsätzlich liest die SF 314 alle Programme. auch das Betriebssystem, von einer mit dem SF 354-Lauf-werk formatierten Diskette (beim Booten wird immer die Unterseite der Diskette zuerst gelesen).

Möchte man jedoch mit dem Einzelkopflaufwerk ein Programm lesen, welches sich auf der zweiten Seite befindet, gibt es zwangsläufig Schwierigkeiten. Schließlich existiert für diese Seite kein Schreib-/Lesekopf.

Soll eine Diskette von einem Einzelkopf- auf ein Doppelkopflaufwerk kopiert werden, gibt es ebenfalls Probleme Der Controller erkennt nämlich, daß es sich um zwei unterschiedliche Laufwerke handelt, und gibt eine Fehlermeldung aus. In umgekehrter Reihenfolge, also beim Kopieren von einem Doppelkopf- auf ein Einzelkopflaufwerk, gibt es ebenfalls eine Fehlermeldung. Hierbei handelt es sich um eine Sicherheitsmaßnahme, damit Programme beim Kopieren nicht verloren gehen. Würde man nämlich eine beiderseitig formatierte Diskette auf eine einfache kopieren können. wäre zwangsläufig der Inhalt der zweiten Seite verloren.

Mit etwas Geduld läßt sich aber trotzdem ein Duplikat anfertigen. Dann muß allerdings jedes Programm einzeln kopiert werden.

Commodore

Basic und HiRes-Grafik?

Wie stellt man in Basic gleichzeitig HiRes-Grafik und Text unabhängig voneinander au f dem C 64 dar? Christian Scherpe

Um HiRes-Grafiken und Text auf dem Bildschirm gleichzeitig zu realisieren, gibt es zwei Wege. Der erste arbeitet mit dem Rasterzeilen-Interrupt und scheidet von vornherein aus, da mit Maschinensprache gearbeitet werden muß. Der zweite Weg basiert darauf, daß man die Text-Zeichen in die Bit-Map übertragt. Dazu kopiert man den Zeichensatz aus dem ROM in das RAM. Mit einer Tastaturabfrage stellt man fest, welche Taste gedrückt wird und holt die entsprechenden Daten des Zeichens (8 Byte) aus dem RAM. um sie Byte für Byte in die Bit-Map einzutragen.

Der ganze Vorgang ist schwierig zu vollziehen und sprengt den Rahmen des Leserforums. Er wird demnächst in einem eigenen Kurs ausführlich erklärt.

Grafik auf den MPS 801

Wie kann ich die mathematischen Grafiken aus Ausgabe 6/85 von meinem Drucker MPS 801 ausdrucken lassen?

Dieter Schneider

Die mathematischen Grafiken, die Sie in der Frage ansprechen, sind in Simons Basic programmiert. Mit COPY, einem Simons Basic-Befehl, kann man den Grafik-Bildschirm ausdrucken.

Die Uhr rückwärts laufen lassen

Wie läßt man beim C 64 die interne Uhr rückwärts laufen?

Horst Engel

Die interne Uhr des C 64 ist über die Variablen TI und TIS ansprechbar. Durch Differenzbildung kann man einen rückwärtslaufenden Wert erhalten. Die Variable TI wird alle 1/60 Sekunden um 1 erhöht. Zehn Sekunden entsprechen 600 Impulsen. Definieren Sie nun eine Variable T=600, stellen Sie TI auf Null und bilden Sie die Differenz D-TTI, dann läuft D von 600 an rückwärts.

Die Echtzeituhr in den beiden CIAs kann man nicht rückwärts laufen lassen, denn sie werden hardwaremäßig vorwärts gezählt. Auch hier hilft nur ein Differenzprogramm.

Im Prinzip die einfachste Lösung bietet sich mit den Timern in den CIAs Diese laufen ohnehin immer schon rückwärts.

Lichtgriffel und C 64

Kann man den Lichtgriffel des Hewlett Packard C-41 an den C 64 anschließen?

Torsten Leibold, Richard-Wagner-Str. 11, 6830 Schwetzingen

Zufallszahlen

Wie kann ich mehrere Zufallszahlen erzeugen, von denen keine doppelt Vorkommen darf?

Kurt Weiß

Andreas Linnebach aus Weinheim weiß hier Rat Um beispielsweise aus 49 Zahlen sieben zufällig auszuwählen, geht man folgendermaßen vor:

1 DIM a(49) 2 FOR B=1 TO 7 3 A(B)=INT(49+RND(1))+1 4 FOR C=1 TO B 5 IF A(B)=A(C) ANDB<>C THEN 3 6 NEXT:NEXT 7 FOR A=1 TO7 8 PRINT A(A) 9 NEXT

VC 20-Erweiterungen gefragt

Ich besitze einen VC 20 und finde kaum noch Software und Speichererweiterungen in den Geschäften. Wer kann mir helfen?

Robert Schütz

Ein Tip: in fast jeder Ausgabe von Happy-Computer finden Sie im Computer-Markt mehrere Kleinanzeigen, die Ihr Problem sicherlich schnell lösen können.

Zeropage = freier Speicherplatz?

Wieviele freie Speicherplätze gibt es in der Zeropage, und welche sind das im einzelnen? Unter welchen besonderen Voraussetzungen sind diese Speicherplätze frei?

Franz Semmler

Die Fragen sind zu komplex, als daß man sie in diesem Rahmen ausführlich beantworten kann. Generell sind die oberen vier Speicherplätze der Zeropage (Adresse 251 bis 254) frei. Wann und unter welchen Voraussetzungen weitere Register belegbar werden, hängt von vielen Faktoren ab. Um einen Überblick zu erhalten, ist es unerläßlich. sich mit weiterführender Literatur zu beschäftigen. Empfehlenswert sind zu diesem Thema das .C 64 Intern« von Data Becker oder das «Interface-System Handbuch« vom Interface Age Verlag.

Sicherheitskopien

Von meinen Disketten möchte ich Sicherheitskopien machen. Wer hat ein Programm für einen Disketten-Backup?

Wilfried Preuhsner

Die einfachste Art Sicherheitskopien herzustellen, besteht darin, alle Programme einer Diskette zu laden und nacheinander auf eine neue Diskette zu speichern. Es gibt aber sehr viel schnellere und komfortablere Programme. Eines der besten ist der Turbo-Nibbler 2 von Eurosystems.

Sprite-Kollisionen

Wie stelle ich fest, mit welchem Zeichen ein Sprite kollidiert ist?

Maik Gärlich

Sofort nach der Kollision liest man mit PEEK die Positionsregister aus, die das Sprite betreffen. Dabei ist auch das Register 53264 zu beachten, das Auskunft darüber gibt, ob die X-Position größer als 255 ist. Mit diesen Daten haben Sie nun den Standort des Sprites auf dem Bildschirm bestimmt, an dem die Kollision stattgefunden hat Allerdings als Punkt im Sprite-Koordinatensystem! Nun muß eine Transformation auf das normale Bildschirmsystem mit 40 Spalten und 25 Zeilen vorgenommen werden. Dazu rechnet man mit folgender Formel:

S = INT(40*(SX-24)/(344-24))
Z = INT(25*(SY-50)/(250-50))

In dieser Formel bedeutet SX die X-Position und SY die Y-Position des betreffenden Sprites. Hieraus ergibt dann S die Spalte und Z die Zeile, in der das betreffende Zeichen steht. Um jetzt herauszufinden, mit welchem Zeichen das Sprite kollidiert ist, liest man die Stelle des Bildschirm-RAMs aus, die S und Z angibt. Da jede Bildschirmzeile 40 Byte enthält, rechnet man 40*(Z-1)+S und addiert diese Zahl zur Startadresse des Bildschirm-RAM (1024-1, weil die erste Position schon enthalten ist). Der Zeichencode ergibt sich also durch:

PEEK (1023+40*(Z-1)+S

Allerdings muß man darauf achten, daß sich das Sprite nach der Kollision nicht weiterbewegt. Eventuell ist auch die Vergrößerung eines Sprite zu berücksichtigen.

Commodore 64 und MSX

Gibt es einen Umrüstsatz oder Emulator, mit dem ich meinen C 64 zum MSX-Computer umfunktionieren kann?

Lars Rompf

Simons Basic

Ich suche Simons Basic-Listings

Karlheinz Nink

Ein längeres Simons Basic-Programm finden Sie in der Happy-Computer, Ausgabe 3/85 auf Seite 63.

Astrologie und C 64

Ich suche Listings, die sich mit Astrologie beschäftigen. Wer kann mir helfen?

Armin Strom



Aus: Happy Computer 12 / 1985, Seite 159

Links

Copyright-Bestimmungen: siehe Über diese Seite