plus/4 Portal - powerd by Websitebaker.

peeks, pokes & sys

Sie stellen das Werkzeug, die Basis für den Zugriff auf schnelle Systemroutinen dar: die Peeks, Pokes und Sys-Aufrufe für den C16/116 & Plus/4.
Wer sie kennt, kann sich einiges an Programmierarbeit sparen und so manchen Peformance-Gewinn umsetzen.
Die thematische Übersicht über wichtige Peeks, Pokes und Sys-Aufrufe:

Screen

Tastatur

Datassette

Programmablauf

Modul


Screen


#. Streifen auf dem Bildschirm erzeugen

poke65287,70

Erzeugt Streifen auf dem Bildschirm.

poke65287,8

Schaltet wieder die normale Anzeige ein.



^ TOP



#. Bildschirmflimmern anzeigen

poke65299,40

Bildschirmflimmern (Zeichen) einschalten.

poke65299,208

Normalzustand wieder herstellen.



^ TOP



#. Bildschirmfarben einstellen

poke65301,x (x=0-127)

Bildschirmhintergrundfarbe einstellen.

poke65305,x (x=0-127)

Bildschirmrahmenfarbe einstellen.

poke65287,40

Bildschirm komplett schwarz.



^ TOP



#. Fenster (Windows) definieren

Definieren von Windows (Fensterbereiche) auf dem Print-Screen:

Linkes, oberes Eck:

poke2022,y (0-24)

poke2023,x (0-39)

Rechtes, unteres Eck:

poke2021,y (0-24)

poke2024,x (0-39)

Zwar ersetzt dieses keine "echte" Fenstertechnik von grafischen Benutzoberflächen, bietet jedoch im Print-Screen gute Möglichkeiten, einen bestimmten Screenbereich unabhängig vom restlichen Bildschirm abzubilden und sogar Scrolling im Fenster durchzuführen ohne den restlichen Bildschirm durcheinander zu bringen.

Wichtig: Nach dem Einrichten des Fenster unbedingt den Befehl SCNCLR durchführen.

Durch Ausführen von 2xHOME werden die Fenster wieder aufgehoben.



^ TOP



#. Home-Position auf dem Bildschirm setzen

sys55353

ruft die HOME Routine auf und setzt den Cursor auf die Koordinate 0,0 (x,y).



^ TOP



#. Bildschirm löschen (CLR-Home)

sys55374

ruft die CLR-Home (Clear Home) Routine auf. Löscht den Bildschirm und setzt den Cursor auf die Koordinate 0,0 (x,y).



^ TOP



#. Bildschirm an- und ausschalten

poke65286,peek(65286)and239

Schaltet den Bildschirm aus.

poke65286,peek(65286)or16

Schaltet den Bildschirm ein.


Sollen rechenintensive Vorgänge durchgeführt werden oder der Grafikaufbau beschleunigt werden, so empfiehlt es sich den Bildschirm auszuschalten um ca. 30% Rechengeschwindigkeit einzusparen.




^ TOP



Tastatur


#. Schaltet Repeat der Tasten ab

poke1344,0

Schaltet die Wiederholungsfunktion der Tastatur komplett ab.

poke1344,128

Schaltet die normale Wiederholungsfunktion wieder ein.

poke1345,X

Stellt die Verzögerung der Repeat-Funktion ein.


^ TOP



#. Tastatur abfragen

Peek(198)

Gibt den Code für die gedrückte Taste zurück.



^ TOP



#. CONTROL + S Kombination ausschalten

poke2039,x

Variable:

x=1-255

Schaltet die verlangsamte Listfunktion aus, indem es die Tastenkombination blockt.

poke2093,0

Schaltet wieder in den Normalzustand.



^ TOP



#. Abfrage für SHIFT / CTRL und COMMODORE Tasten

peek(1347)

Abfrage für das Drücken der Spezialtasten des Commodore Plus/4:

1= SHIFT

2= COMMODORE

3= SHIFT+COMMODORE

4= CTRL

5= SHIFT+CTRL

6= COMMODORE+CTRL



^ TOP



#. Blockieren von Gross-/Kleinbuchstaben Umschaltung

poke1351,128

Blockiert das Umschalten von Gross- auf Kleinbuchstaben und umgekehrt.

poke1351,0

Stellt wieder den Normalzustand her.



^ TOP



Datassette


#. Status der Datassette abfragen

Peek(1)

Die Rückgabewerte wie folgt:

200=Ausgeschaltet

192=Play/Rew/FastForward/Forward gedrückt

208=Play+Record

216=Störung

Programmbeispiel:

100 d=peek(1)
200 if d=216 then print "Es ist ein Fehler aufgetreten."


^ TOP



Programmablauf


#. Tastaturpuffer ausfüllen und ausführen

poke1319-1328,x

poke 239,y

Variablen:

x=CHR$-Codes

y=Anzahl der gepufferten Codes

Programmbeispiel:

Will man automatisiert ein Programm von einem laufenden Programm nachladen, lässt sich das hervorragend mit dem Tastaturpuffer realisieren:

10 REM *** BILDSCHIRM LOESCHEN ***
20 SCNCLR
30 REM *** HOME SETZEN UND LADEBEFEHL SCHREIBEN ***
40 PRINTCHR$(19)"DLOAD"CHR$(34)"PROGRAMMNAME"CHR$(34)
50 REM *** 2x CURSOR-DOWN SIMULIEREN ***
60 FORI=1TO2:PRINTCHR$(17):NEXT I
70 REM *** STARTBEFEHL SCHREIBEN ***
80 PRINT"RUN"
90 REM *** TASTATURPUFFER FUELLEN ***
100 POKE1319,19 : REM HOME
110 POKE1320,13 : POKE 1321,13 : REM 2X RETURN
120 POKE 239,3 : REM ANZAHL DER GEPUFFERTEN TASTENDRUECKE
130 END

Diese Verfahrensweise eignet sich hervorragend um Maschinenprogramme nachzuladen oder einen BASIC-Loader zu realisieren.

Das abgebildete Beispielprogramm kann in der Download-Sektion heruntergeladen werden.



^ TOP



#. Reset durchführen

sys65529

Führt einen RESET durch.



^ TOP



Modul


#. Wie kann ich das Turbo Plus Modul abschalten

Manchmal reicht es nicht das Turbo Plus Modul von Kingsoft mittels dem Befehl TUROFF abzuschalten. Ein ewiges Aus- und Einbauen des Moduls ist der Haltbarkeit der sowieso schon alten Module sicherlich nicht zuträglich.

Deshalb gibt es nun ein kleines BASIC-Programm, welches das Modul softwaremäßig komplett abschaltet und so problematische Programme wieder zum Laufen bringt, obgleich das Modul sich noch im Schacht befindet:

1 SCNCLR:FORI=0TO9STEP3:READA$:CHAR,0,I,A$:NEXT
2 POKE1319,19:FORI=1320TO1323:POKEI,13:NEXT:POKE239,5:END
3 DATA SCROLLOFF,TUROFF,EXOFF,"KILL:SCNCLR"

Danke an Götz-Tobias Heger für den Tipp in der Compute mit 5/89.



^ TOP