POKE mal wieder
Tastatur statt Joystick
Beim Commodore 64 lassen sich alle Joystick-Funktionen auch über die Tastatur steuern. Hier eine Liste der entsprechenden Tasten:
Joystick Port 1 | Joystick Port 2 | ||
Feuer | = SPACE | Feuer | = CTRL + »J« |
Links | = CTRL | Links | = CTRL + »D« |
Rechts | = »2« | Rechts | = CTRL + »G« |
Oben | = »1« | Oben | = CTRL + CRSR RIGHT |
Unten | = »§-« | Unten | = CTRL + »A« |
Zeitlupe für den VC20
Läßt man ein Programm auf dem Bildschirm auflisten, so läuft es in Sekundenschnelle durch. Mit dem Befehl POKE 37877,0 werden nun alle Funktionen des VC20 extrem verlangsamt, und man kann sich so ein Programm in Ruhe ansehen. Durch Drücken einer beliebigen Taste wird das Listen noch weiter verlangsamt und mit der RUN/STOP-Taste so lange angehalten, wie man die Taste gedrückt hält.
Man kann den Befehl auch innerhalb eines Programms anwenden um zum Beispiel während der Testphase bestimmte Abschnitte sehr langsam und somit nachvollziehbar ablaufen zu lassen.
Mit POKE 37877,72 oder einfach durch gleichzeitiges Drücken von RUN/STOP und RESTORE wird wieder der Normalzustand hergestellt.
(Johannes Conrad)Kommas mit INPUT lesen
Häufig steht man vor dem Problem, einen Textstring mit INPUT zu lesen, der auch Kommas enthalten soll. Versucht man es mit einem normalen INPUT-Befehl, dann meldet der Computer nur EXTRA IGNORED. Mit dem folgenden kleinen Trick kann sowohl der C 64 als auch der VC 20 Texte mit Komma einlesen.
Unmittelbar vor dem INPUT setzt man den Tastenzähler auf 1 und POKEt ein Anführungszeichen in den Tastaturpuffer. Es ergibt sich folgende Programmzeile:
POKE 198,1 : POKE 631,34 : INPUT A$
Probieren Sie’s aus.
Verstimmter C 64?
Benutzt man für ein Musikstück die im Commodore 64-Handbuch angegebenen High- und Low-Bytes, um die Töne zu POKEn, dann klingen sie häufig unrein oder »verstimmt«. Das vermeidet man, indem man die Low-Bytes neu festlegt. Man kann sie nach der folgenden Formel berechnen:
Low-Byte = Frequenz * 17 - High-Byte * 256
Ist das Ergebnis negativ, dann nimmt man ersatzweise diese Formel: Low-Byte = Frequenz * 17 - (High-Byte - 1) * 256
(Roger Limberg)VC 20-Tips
Umschalten des VC20 auf die Grundversion bei eingesteckter Speichererweiterung:
POKE 642,16 : POKE 644,30 : POKE 648,30 : SYS 64824
Mit POKE 55,30 : SAVE »(Name)« kann ein SAVE-Schutz umgangen werden, mit dem viele Programme geschützt sind.
Der Befehl POKE 36867,48 erzeugt eine zusätzliche Zeile unterhalb des normalen Bildschirms, die während des gesamten Programms stehen bleibt und nur über POKE-Befehle zugänglich ist.
(Frank Pachollek)Basic-Programme retten
Ein versehentlich mit »NEW« oder durch einen RESET gelöschtes Programm kann beim VC 20 durch Eingabe der folgenden Befehle im Direktmodus wieder zurückgeholt werden: POKE 46, PEEK(56) -1 : POKE 45, PEEK(55) + 247 : CLR »Return«
POKE PEEK(44) * 256 + PEEK(43) + 1, PEEK(44) »Return« 63999 »Return«
FOR I = PEEK(44) * 256 + PEEK(43) TO PEEK(46) * 256 + PEEK(45) : IF PEEK(I) OR PEEK(I + 1) OR PEEK(I + 2) THEN NEXT »Return«
POKE 45, (I + 3) AND 255 : POKE 46, (I + 3) / 256 : CLR »Return«
Unter Umständen erhält man jetzt eine Fehlermeldung, aber das Programm ist jedenfalls wieder da!
(Ralf Berle)C 64 - Bildschirm scrollen
Nach der Eingabe von SYS 59626 wird der gesamte Bildschirm um eine Zeile nach oben verschoben. Umgekehrt geht’s aber auch, nämlich mit SYS 59749. Damit werden alle Zeilen ab der aktuellen Cursorposition um eine Position nach unten geschoben. Um den ganzen Bildschirm abwärts zu scrollen, müßte man daher den Cursor in die Bildschirmzeile -1 bringen. Und auch das kann man dem Computer tatsächlich vorgaukeln, und zwar durch POKE 214, 255 : SYS 59749 : SYS 58640.
(Michael Wins)In C 64-Spiele gePOKEt
Hier sind einige interessante POKE-Befehle, mit denen man jeden Highscore überbieten kann. Doch Vorsicht, diese Befehle funktionieren nicht bei allen Versionen dieser Spiele.
- Fort Apocalypse: »POKE 14697,0 : POKE 14760,0 : POKE 36366,0«. Danach hat man beliebig viele Hubschrauber, einen unendlichen Treibstoffvorrat, und der Bonus wird nie erniedrigt.
- Hunchback: »POKE 9521,234 : POKE 9522,234 : POKE 9523,234«. Hier hat man unendlich viele Helden zur Verfügung.
- Neptune: »POKE 7870,60«. Mit diesem POKE hat man auf einen Schlag 60 Taucher.
- Jungle Hunt: »POKE 2242,234 : POKE 2243,234«. Der Held hat unendlich viele Leben.
Basic-Programme retten
Die Betriebssystemroutine »Angleich von Koppeladressen» ab Adresse 42291 ermöglicht ein schnelles und einfaches »UNNEW« nach einem versehentlichen »NEW« oder Reset:
POKE 2049,1 : POKE 2050,1 : SYS 42291
Danach kann zumindest wieder geLISTet werden. Ein vollständiges »UNNEW» verlangt allerdings die Korrektur der Zeiger auf den Beginn der Variablen und Felder. Dazu wäre allerdings die Kenntnis der Programmlänge notwendig. Man kann sich aber behelfen, indem man das Programm notfalls in Teilen auf dem Bildschirm aufLISTet und die einzelnen Zeilen mit der RETURN-Taste neu übernimmt.
(Gerhard Wagner)Spezialeffekt
Wenn man beim C 64 in die Speicherstelle 532 70 Werte zwischen 0 und 15 schreibt (POKE 53270,x), kann man den Bildschirm um bis zu sieben Bildpunkte nach links oder rechts scrollen lassen. Ist x kleiner als 8, dann scrollt der Bildschirmausschnitt um x Bildpunkte nach links, sonst um x-8 Bildpunkte nach rechts.
POKE 53270,8 stellt den Normalzustand wieder her.
Dieser Trick läßt sich gut bei Action-Spielen als optische Untermalung beispielsweise einer Explosion einsetzen.
(Michael Keukert)Einige POKEs für den VC 20
Im folgenden ist X immer eine Zahl zwischen 0 und 255. POKE 36865,X: Zentriert den Bildschirm in vertikaler Richtung. Man kann dadurch den Bildschirm nach oben oder unten verschieben. Der Normalzustand wird mit X=38 erreicht. POKE 36864,X: Dieser Befehl ist für die horizontale Bildzentrierung zuständig. Er verschiebt den Bildschirm nach links oder rechts. Der Normalwert ist X=12.
POKE 37879,X: Mit diesem Befehl wird die interne Uhr des VC 20 beeinflußt. Man kann sie schneller oder langsamer laufen lassen. Die letzte Möglichkeit ist besonders beim LISTen interessant. Drückt man nämlich bei verlangsamtem Zeitgeber zusätzlich noch die CTRL-Taste, dann kann man sich einzelne Zeilen fast beliebig lange betrachten. POKE 37879,72 stellt den Normalzustand wieder her.
(Detlef Krischak)Miner 2049er
Ärgert es Sie auch, daß Sie beim Miner 2049er nie die letzten Bilder vor Augen bekommen? Eigentlich ist das unnötig, denn es gibt einen einfachen Weg, um in die letzten Spielstufen zu gelangen:
Sie brauchen nur entweder die Leertaste bei der Tastatur oder den Feuerknopf am Joystick einige Zeit gedrückt halten. Die augenblickliche Spielstufe wird dann übersprungen und Sie gelangen ins nächste Bild.
(Armin Robl)Directory ohne Programmverlust
Häufig möchte man sich das Directory einer Diskette ansehen ohne das gerade im Speicher befindliche Programm zu zerstören. Wenn man das DOS 5.1 nicht geladen hat, behilft man sich meist mit der zeitaufwendigen Zwischenspeicherung des Programms auf der Diskette. Es geht jedoch auch einfacher und schneller. Geben Sie einfach den folgenden Befehl ein: POKE 44, PEEK(46) + 1
Damit wird der Basic-Anfang auf einen freien Speicherbereich gestellt. Sie können jetzt wie gewohnt mit »LOAD "$",8« das Directory laden und anschließend auflisten.
Mit POKE 44,8 sind Sie dann wieder im eigentlichen Programm.
(Heinzpeter Oelkers)Commodore Joystick verbessert
Der Joystick VIC-1311 für den VC 20 benötigt eine relativ große Hebelbewegung, um die Kontakte zu schließen. Bei Spielen, die eine hohe Reaktionsgeschwindigkeit erfordern, ist diese Eigenschaft sehr ungünstig. Man kann jedoch recht einfach Abhilfe schaffen:
Man entfernt die vier Schrauben an der Unterseite des Gehäuses und hebt den oberen Teil des Joysticks mit der Platine vorsichtig ab. Nun wird die Platine an den Durchtrittsöffnungen der Schrauben mit je einer etwa 1 Millimeter dicken Unterlegscheibe verstärkt. Die vier Unterlegscheiben können mit einem Tropfen Alleskleber (Vorsicht, nicht die Kontakte verkleben !) gegen Verrutschen gesichert werden. Danach wird der Joystick wieder zusammengeschraubt. Wenn Sie alles richtig gemacht haben und insbesondere keine Teile übriggeblieben sind, dann werden die Kontakte des Joysticks nun bei erheblichen kleineren Hebelbewegungen geschlossen.
(M. Kunze)Tips zum C 64
Mit »POKE 808,225« wird die STOP-Taste ausgeschaltet und das Programm kann nicht mehr angehalten werden. »POKE 808,237« schaltet STOP wieder ein.
Eine Repeat-Funktion für alle Tasten wird mit »POKE 650,128« aktiviert. »POKE 650,0« schaltet wieder auf den Normalzustand zurück (Repeat-Funktion nur für die Leertaste und die Cursortasten sowie bei DEL und INST). Mit »POKE 650, 64« wird auch die Wiederholfunktion für diese Tasten abgeschaltet.
»POKE 657, 128« verhindert die Umschaltung zwischen Text- und Grafikmodus mit der Kombination von Shift- und Commodore-Taste. »POKE 657,0« hebt dies wieder auf.
Die Cursorfarbe kann mit »POKE 646,x« festgelegt werden, wobei für »x« der entsprechende Farbcode einzusetzen ist.
»PRINT PEEK(186) ergibt die Gerätenummer des zuletzt angesprochenen Peripheriegerätes.
(Thomas Lopatic)Zwei Tips für den C 64
Die Speicherstellen 57 und 58 enthalten die Zeilennummer der aktuellen Basic-Zeile. Die Abfrage geschieht mit PRINT PEEK(57) + 256 * PEEK(58).
Mit »PRINT PEEK(1)« kann abgefragt werden, ob eine Taste an der Datasette gedrückt ist. Es gibt drei mögliche Werte:
7: Taste gedrückt,
55: keine Taste gedrückt,
39: Taste gedrückt, aber Programmlauf unterbrochen.
Diese Abfragen sind für die benutzerfreundliche Programmierung von Kassettenoperationen recht nützlich.
(Wolfgang Meyer)VC 20 — Grundversion simuliert
Mit der folgenden kurzen Routine lassen sich die meisten Grundversions- oder +3 KByte-Programme auch mit einer 8 KByte-Erweiterung laden und ausführen:
POKE 648, 30 : SYS 64821
POKE 4096, 0 : POKE 44, 16 : NEW
Danach wird das Programm ganz normal geladen und gestartet. Da der Bildschirmspeicher durch die kleine Routine an der gleichen Stelle wie in der Grundversion liegt, sind die meisten Grundversions-Programme ohne weitere Änderungen direkt lauffähig.
(Sven Jensen)Maschinensprache »getürkt«
Es gibt eine einfache Methode, um beim VC 20 mit mindestens 8 KByte-Erweiterung aus einem ganz normalen Basic-Programm scheinbar ein Maschinensprache-Programm zu machen.
Zunächst gibt man die folgende Zeile ein:
10 SYS 4621
Danach folgt im Direktmodus:
POKE 43, 1 : POKE 44, 19 : POKE 4864, 0 : NEW
Keine Angst, die Programmzeile 10 ist nicht verloren. Jetzt • muß das folgende kleine Programm eingegeben werden.
10 FOR A = 4621 TO 4643
20 READ D : S = S + D : POKE A, D
30 NEXT
40 IF S§(2039 THEN PRINT "FEHLER IN DATAS"
50 DATA 169, 36, 133, 43, 169, 18, 133, 44
60 DATA 169, 0, 141, 34, 3, 141, 35, 3, 32
70 DATA 89, 198, 76, 174, 199, 0
Dieses Programm wird jetzt mit »RUN« gestartet. Anschließend wird im Direktmodus der Basic-Start verschoben: POKE 43, 36 : POKE 44, 18 : POKE 4643, 0 : NEW
Damit sind wir schon fast am Ziel. Jetzt kann ein beliebiges Basic-Programm geladen oder geschrieben werden. Die letzte ausführbare Zeile dieses Programms muß immer lauten:
»(Zeilennummer)« POKE 43, 1 : POKE 44, 18 : END
Um das Programm abspeichern zu können, muß man jetzt noch POKE 43, 1 : POKE 44, 18 eingeben. Gibt man nun LIST ein, so sieht man nur 10 SYS 4621. Das auf solch wundersame Art zum »Maschinenprogramm« gewordene Basic-Programm kann jetzt ganz normal gepeichert, geladen und gestartet werden. Allerdings ist jetzt ein hervorragender Listschutz realisiert, zumal im Maschinenspracheteil des Programms noch die RUN/STOP-Taste gesperrt wird. Ein Versuch, das Programm damit abzubrechen, führt stets zu einem völligen »Absturz« des Computers.
(A. Kaminski)»PRINT AT« einfach gemacht
Sehr oft kommt es vor, daß man eine PRINT-Ausgabe an eine bestimmte Bildschirmstelle schreiben will. Üblicherweise arbeitet man in solch einem Falle mit Cursor-Steuerzeichen, was aber einerseits recht langsam ist und andererseits auch die Übersichtlichkeit eines Programms nicht gerade erhöht. Eine Cursorsteuerung über SYS-Kommando unter Ausnutzung der entsprechenden Betriebssystem-Routine ist da schon komfortabler. Aber es geht auch viel einfacher.
Will man beispielsweise einen Text in die 14. Zeile, 5. Spalte schreiben, so geht das auch folgendermaßen:
POKE 214, 13 : PRINT : PRINT TAB(5);"Text"
Adresse 214 enthält nämlich die Zeilenposition des Cursors. Um diese allerdings richtig einsetzen zu können, muß noch ein leerer PRINT-Befehl nachgeschickt werden. Der in Adresse 214 zu POKEnde Zahlenwert ist daher nicht die gewünschte Cursorzeile, sondern der um eins verminderte Wert.
Antimerge für C 64
Alle reden von Merge, aber niemand davon, daß man vielleicht auch mal ein Programm aufspalten will, zum Beispiel, um ein Unterprogramm aus einem größeren Programm herauszulösen.
Alle unnötigen Zeilen einzeln zu löschen ist meist zu aufwendig. Besser ist es, man ändert nur bei den Zeilen, die man noch braucht, die Zeilennummer, so daß diese Zeilen am Programmende zu stehen kommen. Zum Beispiel kann man aus 4321 die Zeilennummer 54321 machen. Die Sprungadressen ändert man natürlich mit.
Jetzt setzt man vor den Teil, den man behalten möchte, eine STOP-Zeile und macht dann ein »RUN« direkt auf diese Zeilennummer. Natürlich hält das Programm infolge des Stoppbefehls gleich wieder an, aber die Speicherzellen 61/62 enthalten jetzt die Adresse der Zeile. Mit »POKE 43,PEEK(61) +1 : POKE 44,PEEK(62) kann daher jetzt der untere (nicht benötigte) Teil des Programms abgeschnitten werden. Der Rest wird ganz normal mit »SAVE« gespeichert.
Natürlich geht das auch andersherum, indem die Zeilen, die man behalten möchte, an den Anfang des Programms gebracht werden und anschließend die Adressen 45 und 46 nach der durch PEEK(61) und PEEK(62) bestimmten Adresse verändert werden.
(Rudolf Schmid-Fabian)Sequentielle Datei als Basic-Programm laden
Es sind eine Reihe von Anwendungen denkbar, bei denen aus einer sequentiellen Datei auf Diskette oder Kassette ein lauffähiges Basic-Programm erstellt werden soll (Datenfernübertragung, Umwandlung von Textfiles in Basic-Programme). Der folgende Einzeiler macht's beim VC 20 möglich:
OPEN 1, $Gerät(, $Sekundäradresse(, "$Name)" : POKE 812, 238 : POKE 781, 1 : SYS 65478
Dieses Miniprogramm öffnet das File Nummer 1 als Eingabefile (anstelle der Tastatur). Außerdem wird der CLALL-Vektor des Betriebssystems auf ein »RTS« gesetzt, so daß beim Einlesen von Programmzeilen keine Files geschlossen werden.
Deshalb werden nach Eingabe der obigen Befehlszeile von der ausgewählten Datei solange Zeilen eingelesen und sofort im Direktmodus ausgeführt, bis die Betriebssystem-Routine CLRCHN aufgerufen wird (zum Beispiel durch einen Syntaxfehler in den gelesenen Zeilen oder durch GET #1, A$).
Um in den normalen Eingabemodus zurückzukehren, muß nur »POKE 812, 239 : CLR« eingegeben werden.
Zum Ausprobieren: Laden Sie ein beliebiges Basic-Programm und geben Sie danach im Direktmodus ein:
OPEN 1,8,3,"LISTING,S,W": CMD 1 : LIST : PRINT#1 : CLOSE 1
Dadurch wird das momentan im Speicher befindliche Programm als sequentielles File auf Diskette gespeichert. Datasetten-Besitzer müssen den OPEN-Befehl abändern in »OPEN 1,1,2,"LISTING"«.
Löschen Sie jetzt den Arbeitsspeicher mit »NEW«. Wenden Sie nun unseren Einzeiler auf die sequentielle »LISTING«Datei an:
OPEN 1, 8 ,3, "LISTING,S,R" : POKE 812,238 : POKE 781,1 : SYS 65478
Bei der Datasette geben Sie stattdessen »OPEN 1,1,0, "LISTING" : …« ein (das Zurückspulen des Bandes nicht vergessen).
Nun werden alle Zeilen des sequentiellen Listings eingelesen, und Sie haben zum Schluß wieder das fertige Programm vor sich.
Natürlich können Sie vor der Anwendung des Einzeilers auch bereits ein Programm im Speicher stehen haben. Da der Computer die Zeilen, die er aus dem sequentiellen File liest, genauso wie Direkteingaben behandelt, werden die neu gelesenen Zeilen mit dem bereits vorhandenen Programm gemischt.
Es ist sogar denkbar, sich spezielle Befehlsfiles für Stapelverarbeitung zu erstellen. Der Computer kann dann ohne weiteres Zutun die vordefinierten Aufgaben durchführen.
(Florian Matthes)VC 20 Tips
POKE 792, 34 : POKE 793, 3 - Nach Drücken der RESTORE-Taste führt der Computer einen Kaltstart aus.
SYS 65511 - Dieser Befehl schließt alle Dateien POKE 198, 0 : WAIT 198, 1 - Der Computer wartet, bis eine Taste gedrückt wird.
SYS 64802 - Es wird ein vollständiger Kaltstart ausgeführt
SYS 64818 - Kaltstart des VC 20, ist schneller als SYS 64802
POKE 818,34 : POKE 819,2 53 : POKE 37150,2 - Damit wird das Abspeichern von Programmen verhindert (Kopierschutz). Nach der Eingabe von »SAVE« führt der Computer einen Kaltstart durch.
(Thomas Hahn)Cursor abschalten
Mit dem Befehl "POKE 788,210" wird beim VC 20 der Cursor abgeschaltet. Eine Rücksetzung in den Normalzustand ist mit RUN/STOP-RESTORE möglich.
(Dietmar Roudaschl)Tips & Tricks
MERGE für C 64 / VC 20
Hier ist eine einfache MERGE-Routine zum Verbinden zweier Basic-Programme. Sie kann sowohl für die Floppy als auch für die Datasette (auch mit Turbo-Tape) verwendet werden. Einzige Voraussetzung: Das zweite Programm muß höhere Zeilennummern haben als das erste. Und so wird’s gemacht:
- Sie laden das erste Programm. Dann geben Sie im Direktmodus ein:
PRINT PEEK(43), PEEK(44)
Diese beide Zahlen schreiben Sie sich auf. - Sie geben ein:
POKE 43, (PEEK(45) + 256 * PEEK(46) - 2) AND 255 (Return)
POKE 44, (PEEK(45) + 256 * PEEK(46) - 2) / 256 (Return)
Laden Sie nun das zweite Programm. Danach geben Sie ein:
POKE 43, (erste Zahl) : POKE 44, (zweite Zahl) (Return)
Nun befinden sich beide Programme hintereinander im Speicher.
(Michael Keukert)Funktionstastenbelegung unter Simons Basic
Simons Basic bietet ja bekanntlich die Möglichkeit, die Funktionstasten mit beliebigen Zeichenketten zu belegen. Um nun die Funktionstasten nicht jedesmal nach dem Einschalten neu belegen zu müssen, wäre es sinnvoll, die Belegung auf Floppy abspeichern zu können.
Die Funktionstastenbelegung ist bei Simons Basic in dem von Basic nicht erreichbaren Speicherbereich $C64D bis $C74B (50765 bis 51019 dezimal) abgelegt. Mit dem folgenden kleinen Programm wird dieser Speicherbereich als Maschinenprogramm abgespeichert:
10 INPUT "Filename "; X$
20 OPEN 5, 8, 5, X$ + »,P,W»
30 A = 50765 : E = 51019
40 H = INT(A / 256) : L = A AND 255
50 PRINT#5, CHR$(L); CHR$(H);
60 FOR I = A TO E
70 PRINT#5, CHR$(PEEK(I));
80 NEXT I :CLOSE 5
Mit LOAD "Name",8,1 kann die Funktionstastenbelegung nun jederzeit geladen werden, ohne ein eventuell vorhandenes Basic-Programm zu zerstören.
(Uwe Schwarz)Hilfe für »Turbo Tape«
Das Programm »Turbo Tape» ist ja ein Segen für alle diejenigen, die sich keine Floppy leisten können oder wollen. Es gibt allerdings einige Maschinenprogramme, die nach dem Gebrauch von »Turbo Tape» abstürzen.
Abhilfe: Nach dem Laden das Programm LISTen und den SYS-Befehl zu Anfang notieren. Nun SY8 64738 und danach den notierten SYS-Befehl eingeben — und schon läuft das Programm.
(Andreas Klofanda)Basic-Programme retten
Ein durch NEW oder durch einen Reset gelöschtes Basic-Programm kann durch Eingabe folgender Zeilen im Direktmodus wieder zurückgeholt werden:
POKE 46, PEEK(56) -1 : POKE 45, PEEK(55) + 247 : CLR (Return)
POKE PEEK(44) * 256 + PEEK(43) + 1, PEEK(44) (Return)
63999 (Return)
FOR I = PEEK(44) * 2 56 + PEEK(43) TO PEEK(46) * 2 56 + PEEK(45) : IF PEEK(I) OR PEEK(I + 1) OR PEEK(I + 2) THEN NEXT (Return)
POKE 45, (I + 3) AND 255 : POKE 46, (I + 3) / 256 : CLR (Return)
Diese »Rettungsmaßnahme« funktioniert sowohl beim VC 20 wie auch beim C 64.
(Ralf Berle)Programm retten bei »LOAD ERROR«
Beim VC 2 0 ist es nach einem »LOAD ERROR« von der Datasette in vielen Fällen doch noch möglich, das Programm zu retten. Voraussetzung ist allerdings, daß es sich noch einwandfrei LISTen läßt. Ist das der Fall, dann kann man mit
POKE 45,PEEK(831) : POKE 47,PEEK(831) : POKE 49, PEEK(831) :POKE (46),PEEK(832) : POKE 48,PEEK(832) : POKE 50,PEEK(832)
das Programm mit ziemlicher Gewißheit wieder lauffähig machen.
Cursor steuern
Das Betriebssystem des C 64 enthält eine Routine, die man benutzen kann, um den Cursor an eine beliebige Stelle zu setzen. Geben Sie doch mal folgendes ein:
POKE 214, (Zeile) : POKE 211, (Spalte) : SYS 58640 : PRINT "TEXT"
Und noch ein Tip
Der FORMULAR TOO COMPLEX - Error ist sehr unangenehm, da sich das Programm danach oft nicht mehr listen läßt. Nach Eingabe von POKE 24,0 verhält sich der Computer aber wieder normal.
(Roger Limberg)Einige WAIT-Befehle
Folgende Befehle warten auf spezielle Tasten:
WAIT 198, 1 wartet auf beliebige Taste
WAIT 653, 1 Wartet auf Shift
WAIT 653, 2 Wartet auf Commodore-Taste
WAIT 653, 4 Wartet auf CNTRL
Tips & Tricks
Listschutz
Möchte man ein Programm mit einem einfachen Listschutz versehen, so verfährt man folgendermaßen:
- Man ergänzt die Zeile, ab der der Listschutz wirksam werden soll, mit ":REM".
- Man fährt mit dem Cursor auf das zweite Anführungszeichen und drückt fünfmal die Taste INST.
- Nun wird ebenfalls fünfmal die Taste DEL gedrückt, so daß zwischen den Anführungszeichen fünf reverse T stehen. ..list
- Zuletzt bewegt man den Cursor hinter das zweite Anführungszeichen und drückt die Tastenkombination SHIFT und L. Anschließend RETURN nicht vergessen.
Wenn nun versucht wird, das Programm zu listen, gelangt der Computer nur bis zu der Zeile, in der der Listschutz steht und bricht dann den Vorgang mit »Syntax Error« ab.
(Thomas Lopatic)C64 beschleunigt
Für alle diejenigen C 64 - Besitzer, denen die Bewegung des Cursors bisher zu langsam war, gibt es einen speziellen POKE:
Mit POKE 56325,5 wird der Cursor rasend schnell und flitzt bei Betätigung der Cursortasten nur noch so über den Bildschirm. Wer’s lieber gemütlicher mag, der sollte es stattdessen einmal mit POKE 56325,255 probieren.
(Oliver Bausch)Text und Grafik mischen: Textomat-Tip
Bei Ihrem Software-Test des Textomat von Data-Becker (Ausgabe 9/84) wurde als gravierender Nachteil angeführt, daß bei einmal gestartetem Ausdruck keine Unterbrechung mehr möglich ist. Ich arbeite in Zusammenhang mit Textomat mit einem Epson-Drucker RX 80 F/T. Um den begonnenen Ausdruck zu unterbrechen, kann man einfach den ON-LINE-Schalter betätigen und den Drucker anschließend ausschalten. Sekunden später meldet sich der Textomat am Bildschirm mit dem zu druckenden Text zurück.
Basic-Programme verbinden
So manch C 64-Besitzer wird es schon geärgert haben, daß sein Computer keinen MERGE-Befehl besitzt. Mit wenig Aufwand ist es aber dennoch möglich, Basic-Programme aneinanderzuhängen:
- Im Direktmodus »PRINT PEEK(43); PEEK(44)« eingeben und sich die Ergebnisse merken.
- Das erste Programm normal laden.
- Erscheint jetzt nach »PRINT PEEK(45)« eine Null oder eine Eins, dann geben Sie »POKE 43, 2 56 4- PEEK(45) - 2 : POKE 44, PEEK(46) - 1 : NEW« ein. Im anderen Fall wird »POKE 43, PEEK(45) - 2 : POKE 44, PEEK(46) : NEW« eingegeben.
- Nun wir das anzuhängende Programm geladen (Achtung! Das anzuhängende Programm muß die höheren Zeilennummern haben).
- Jetzt POKEn Sie in die Speicherstellen 43 und 44 die zu Anfang gemerkten Werte.
Beide Programme sind nun verbunden und können ganz normal gehandhabt werden. Wichtig bei der ganzen Prozedur ist, daß keine Variablen definiert werden, da das MERGEn sonst nicht richtig funktioniert.
(Thomas Lopatic)POKEs für den C 64
Mit POKE 775, 1 ist ein (fast) perfekter Listschutz aktiviert. Auch ein SAVE-Schutz ist mit wenig Aufwand möglich: POKE 801,0 : POKE 802,0 : POKE 818,165. Nach diesen drei POKE-Befehlen kann das Programm weder auf Kassette noch auf Diskette kopiert werden. Schließlich gibt es noch eine Möglichkeit, die RUN/STOP-Taste abzuschalten, und zwar mit POKE 808,225. Wiedereinschalten ist mit POKE 808,237 möglich.
(Thomas Lopatic)DOS 5.1 und Reset
Fast alle Maschinenprogramme bleiben auch nach einem Reset erhalten und brauchen nur mit SYS < Startadresse > wieder aufgerufen zu werden. Nur bei dem viel benutzten DOS 5.1 geht es nicht. Warum ? Ganz einfach, weil dieses Programm die Zero-Page-Adresse $BA benutzt, in welcher die Gerätenummer steht, also normalerweise die »8« bei Verwendung einer einzelnen Floppy. Diese Speicherzelle wird nun bei einem Reset auf Null gesetzt, und nichts geht mehr. Erst nach dem Laden von der Floppy wird diese Adresse wieder mit »8« belegt.
Das gleiche muß man tun, wenn man nach einem Reset wieder mit dem DOS 5.1 arbeiten will, ohne es erneut zu laden: Nach »POKE 186,8 : SYS 52224« steht das DOS wieder zur Verfügung.
Eine dauerhafte Lösung erhält man durch Ergänzung des DOS mit zwei vorangestellten Befehlen, die das gleiche bewirken:
LDA #8
STA $BA
oder in Form von POKEs:
РОКЕ 52220,169 : РОКЕ 52221,8 : POKE 52222,133 : POKE 52223,186
Das so erweiterte DOS wird dann mit einem Monitorprogramm von $CBFC bis $CF58 abgespeichert.
Dieses »DOS 5.2« wird dann mit »SYS 52220« aufgerufen und benutzt zwangsweise die Gerätenummer 8. Natürlich kann das normale DOS 5.1 immer noch mit »SYS 52224« gestartet werden, ist allerdings natürlich nicht »Reset-fest«.
(Helmut Weiser)GOTO X für VC 20
Viele schätzen es, viele wünschen es sich: Einen berechneten GOTO-Befehl auf einen variablen Ausdruck anstelle einer Zeilennummer. Hier ist eine schnelle und sichere Methode, die nur 17 Bytes Speicherplatz benötigt.
Schreiben Sie als erste Programmzeile
1 REM"*********" (mindestens neun Sternchen). Anschließend geben Sie im Direktmodus ein: "PRINT PEEK(43) + PEEK(44) * 256 + 6" (RETURN).
Die daraufhin angezeigte Adresse notieren Sie sich bitte. Ohne Erweiterung müßten Sie den Wert 4103 erhalten haben, mit 3 KByte Erweiterung 1031 und ab 8 KByte Erweiterung 4615.
Jetzt POKEn Sie ab der notierten Adresse bitte folgende Werte ein: 32, 138, 205, 32, 247, 215, 76, 163, 200.
Wenn Sie nun die erste Zeile (mit dem REM) aufLISTen, sehen Sie einige Grafikzeichen. Diese stellen ein kurzes Maschinenspracheprogramm dar, das einen mathematischen Ausdruck in einen ganzzahligen Wert umrechnet. Diese Zeile muß immer die erste Programmzeile sein und darf auch nicht mehr geändert werden. Das übrige Programm kann natürlich wie gewohnt editiert werden.
8ie haben jetzt im Programm einen simulierten GOTO X -Befehl zur Verfügung, der mit SYS (Adresse) X aufgerufen wird. Für Adresse müssen Sie die anfangs notierte Adresse einsetzen (Klammern nicht vergessen). Für X kann ein beliebiger arithmetischer Ausdruck stehen wie zum Beispiel 5, A, A+2, C + D/SQR(9) oder PEEK(5).
Der neue Befehl hat im übrigen die gleichen Auswirkungen wie der normale GOTO-Befehl. Ist eine Zeilennummer nicht vorhanden, gibt es daher ebenfalls einen »UNDEF’D STATEMENT ERROR».
(Thomas Maul)Bits hörbar gemacht
Die von der Datasette kommenden Signale können zur Kontrolle hörbar gemacht werden, indem ganz einfach der Lautstärkeregler des Sound-Chips auf maximale Lautstärke gesetzt wird, also durch »POKE 54296,15« beim C.64. Gleichzeitiges Betätigen der Tasten RUN/STOP und RESTORE versetzt den Computer wieder in den Normalzustand.
(Holger Kierey)POKEs für den 64’er
POKE 775,200 Listschutz ein
POKE 775,167 Listschutz aus
POKE 788,49 Run Stop ein
POKE 788,52 Run Stop aus
POKE 808,237 Run Stop Restore ein
POKE 808,225 Run Stop Restore aus
POKE 650,128 Dauerfunktion für alle Tasten
POKE 650,0 Dauerfunktion nur für Space und Cursortasten
POKE 650,64 Dauerfunktion aus für alle Tasten
INPUT ohne Fragezeichen
Die Ausgabe eines Fragezeichens beim INPUT-Befehl kann durch Öffnen einer Tastaturdatei unterdrückt werden:
10 OPEN 1,0 : REM Tastaturdatei eröffnen
20 INPUT#1,A$ : REM Einlesen von Tastatur ohne Fragezeichen
30 REM Nicht vergessen, die Datei mit CLOSE 1 wieder zu schließen
Zwei Einzeiler
Zahlenkonvertierungen von Dezimal nach Hexadezimal braucht man recht häufig. Hier sind zwei Einzeiler zu diesem Thema:
— Hex $X nach dezimal X
10 x=0:fori = 1tolen(x$):x0=asc(mid$(x$,i,1)):x=16*x+x0-48 + (x0(64)*7: next
— Dezimal X nach hex $X
10 x$=":fori = 1to4:x0=x/16:x=x-int(x0)*16:x$=chr$(48+x-(x(9)*7) +x$:x=x0:next
Listschutz
Einen verblüffenden Listschutz für einzelne Zeilen erhält man, indem man an die eigentliche Programmzeile einen REM-Befehl anhängt und dahinter in Anführungszeichen eine Reihe reverser »T« gefolgt von einem Doppelpunkt und einem beliebigen Text schreibt.
Geben Sie doch einmal folgendes ein:
10 PRINT"BAUM":REM19reverse T:
10 PRINT"BLUME"
Wenn Sie dieses kleine Programm starten, schreibt der Computer »Baum«, listen Sie aber das Programm, so sehen Sie nur die Zeile 10 PRINT»BLUME«.
(Roger Limberg)