Tips & Tricks

Anhalter — Programmstop auf Tastendruck

Mit dieser kleinen Maschinensprach-Routine können Sie jedes Programm anhalten. Der Computer stoppt so lange, bis Sie eine Taste drücken

Dieses kleine Maschinenprogramm kann Ihnen in vielerlei Hinsicht nützlich sein. Man kann sich beispielsweise folgende Anwendungsgebiete vorstellen: In einem selbstprogrammierten Spiel wird oft eine Pause-Taste benötigt, ähnlich, wie es sie auch in manchen kommerziellen Spielen gibt Auch das Auflisten von Programmen kann jederzeit angehalten werden und sogar der Datenfluß zur Floppy ist gegen eine Unterbrechung nicht gefeit Mit dem Programm »Anhalter« steht es Ihnen vollkommen frei, zu entscheiden, an welchen Stellen ein Programm angehalten werden soll.

Nach dem Starten des Programms (siehe Listing 1) werden Sie zunächst gefragt, wohin das Programm verschoben werden soll (bitte Dezimalzahlen eingeben). Da das Programm vollkommen frei verschiebbar ist, brauchen Sie keine weiteren Angaben zu machen. Danach brauchen Sie nur noch die Funktionstaste F1 zu drücken um Ihr Programm zu stoppen. Soll das Programm weiter laufen, so genügt es, eine beliebige Taste zu betätigen.

Falls Sie nicht die F1-Taste, sondern eine andere mit der Anhalte-Funktion belegen möchten, so ist dies möglich. Dazu brauchen Sie nur in die Speicherstelle (Startadresse + 16) den Wert der neuen Taste hineinschreiben. Diesen Wert erhalten Sie, indem Sie folgende Zeile im Direktmodus eingeben, die gewünschte Taste drücken und sich die angezeigte Zahl merken.
FOR I=1 TO 10000 : PRINT PEEK(203): NEXT

Jetzt können Sie die Abfrage ändern:
POKE Startadresse + 16,X (X=neuer Wert)

Listing 2 erläutert die genaue Funktionsweise des Programmes.

(Georg Kramer/aw)
0 rem *****************************
1 rem **   +++ anhalter +++      **
2 rem **-------------------------**
3 rem ** written by georg kramer **
4 rem **    auf dem moore 15     **
5 rem **     4783 anroechte      **
6 rem **    tel.: 02947/3511     **
7 rem **     (c) 07.06.1985      **
8 rem *****************************
9 :
10 print"{clr}{down}   ++ anhalter ++":print
15 input" {rvon}startadresse :{rvof} 49152{left}{left}{left}{left}{left}{left}{left}";s
20 ifs<0ors>65535then10
30 fori=0to33:reada:x=x+a
40 pokes+i,a:next
50 ifx<>4231thenprint"data-fehler !":end
60 pokes+7,(s+13)/256
70 pokes+2,(s+13)-peek(s+7)*256
80 sys(s)
90 print:print" programm anhalten => f1"
95 end
100 rem *** maschinenprogramm ***
101 data120,169,13,141,20,3,169,192,141,21,3,88,96,165,203,201,4,240,3,76
102 data49,234,32,135,234,165,203,201,64,240,247,76,49,234
Listing 1. »Anhalter«. Bitte beachten Sie die Eingabehinweise auf Seite 6
,C000    7B          SEI            ;Interrupt abschalten
,C001    A9  0D      LDA    #$0D    ;Interrupt auf C00D
,C003    8D  14  03  STA    $0314   ;setzen
,C006    A9  C0      LDA    #$C0    ;
,C008    8D  15  03  STA    $0315   ;
,C00B    58          CLI            ;Interrupt zulassen
,C00C    60          RTS            ;Rückkehr zum Basic
,C00D    A5  CB      LDA    $CB     ;hole Wert der letzten
                                    gedrückten Taste
,C00F    C9  04      CMP    #$04    ;vergleiche mit Wert
                                    für F1-Taste
,C011    F0  03      BEQ    $C016   ;verzweige:ja
                                    =eig.Routine,
                                    nein=norm.IRQ
,C013    4C  31  EA  JMP    $EA31   ;verlasse
                                    Routine zum normalen
                                    IRQ
,C016    20  87  EA  JSR    $EA87   ;springe zur normalen
                                    Tastaturabfrage
,C019    A5  CB      LDA    $CB     ;hole Wert der letzten
                                    gedrückten Taste
,C01B    C9  40      CMP    #$40    ;vergleiche mit $40
                                    (#64) = keine Taste
,C01D    F0  F7      BEQ    $C016   ;wenn keine Taste,
                                    dann zur Tastaturabf.
,C01F    4C  31  EA  JMP    $EA31   ;wenn Taste gedrückt,
                                    dann norm. IRQ
Listing 2. Schnell eingegeben und leicht zu verstehen — der Source-Code von »Anhalter«
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →