C 64
Tips & Tricks

Cursorsteuerung leicht gemacht

Bei professionellen Programmen der PC-Klasse kann der Cursor meist über Eingabegeräte wie die Maus positioniert werden. Daß es auch recht gut mit dem Joystick und dem C 64 funktioniert, beweist dieses Programm.

Haben Sie den kurzen MSE-Lader eingetippt und gestartet, können Sie den Cursor mit einem Joystick in Port 2 steuern. Das Steuerprogramm befindet sich ab Adresse $C000 bis $C066 im Speicher. Die ersten 15 Bytes nimmt eine Initialisierungsroutine in Anspruch, die den Interruptvektor auf $C00F legt und das Steuerprogramm in den Kernalinterrupt einbindet. Die Routine wird mit SYS 49152 aufgerufen. Das Programm benutzt Speicherzelle $02 als Zählregister, da der Joystick nur bei jedem sechsten Interrupt abgefragt wird. In Zeile 300 des Assemblerlistings wird die Zählvariable um 1 erniedrigt. Ist die Variable 0, wird sie auf 6 gesetzt und in die Steuerungsroutine verzweigt. Ab Zeile 360 wird der Tastaturpuffer auf freien Platz überprüft. Sollte der Puffer voll sein, wird sofort in die Interruptroutine des Betriebssystems ($EA31) gesprungen. In Zeile 400 wird der Joystick abgefragt und das entsprechende Cursorsteuerzeichen in den Akku geladen. Ab 800 wird das Zeichen in den Tastaturpuffer geschrieben und der Pufferzeiger erhöht.

(P.Siepen/hm)
PROGRAMM : CURSORSTEUERUNG C000 C066
-----------------------------------
C000 : A9 0F 8D 14 03 A9 C0 8D   B2
C008 : 15 03 A9 06 85 02 60 C6   41
C010 : 02 F0 03 4C 31 EA A9 06   F2
C018 : 85 02 A6 C6 E0 08 90 03   B7
C020 : 4C 31 EA AD 00 DC 29 01   03
C028 : C9 00 D0 05 A9 91 20 5E   2A
C030 : C0 AD 00 DC 29 02 C9 00   2C
C038 : D0 05 A9 11 20 5E C0 AD   6B
C040 : 00 DC 29 04 C9 00 D0 05   63
C048 : A9 9D 20 5E C0 AD 00 DC   C7
C050 : 29 08 C9 00 D0 05 A9 1D   06
C058 : 20 5E C0 4C 31 EA A6 C6   F4
C060 : 9D 77 02 E6 C6 60         A2
Listing zu »Cursorsteuerung leicht gemacht«. Das Programm muß mit dem MSE auf Seite 68 eingegeben werden.
10 REM*********************************
20 REM*    CURSOR STEUEREUNG          *
30 REM*                               *
65 REM*       PETER SIEPEN            *
70 REM*                               *
75 REM*     VON-STEPHAN-STR.6         *
80 REM*                               *
82 REM*     4200 OBERHAUSEN 1         *
84 REM*                               *
85 REM*  TELEFON :(0208)/26555        *
90 REM*********************************
95 :
100 SYS9*4096
110 .OPT P,OO
111 :
112 :
113 :
114 :
120 *= $C000
125 :
130 :
140 :
150 TEST  = $02         ;ZAEHLVARIABLE
160 JOY   = 56320       ;PORT #2
170 AZITP = $C6         ;ANZAHL ZEICHEN IM PUFFER
174 :
175 :
180 LDA #<BEGINN;INTERUPTVEKTOR
185 STA $314
190 LDA #>BEGINN;AUF NEUE
195 STA $315    ;ADDRESSE SETZEN
200 LDA #$06    ;ZAEHLVARIABLE
205 STA TEST    ;HOCHSETZEN
210 RTS         ;ZURUECK ZU BASIC
215 :
220 :
225 :
300 BEGINN   DEC TEST
320 :        BEQ START   ;GENUG LEER IRR
330 :        JMP $EA31   ;NEIN WEITER MIT IRR
340 START    LDA #$06    ;ZAEHLVARIABLE HOCHSETZEN
350 :        STA TEST
360 :        LDX AZITP   ;TASTATURPUFFER
370 :        CPX #$08    ;VOLL
380 :        BCC WEITER
390 :        JMP $EA31   ;JA WEITER MIT INTERUPT
400 WEITER   LDA JOY     ;WENN JOY NICHT
410 :        AND #1      ;NACH OBEN
420 :        CMP #0      ;WEITER
430 :        BNE NOBEN
440 :        LDA #"{up}" ;WENN JA STEUERZEICHEN
450 :        JSR AUSG    ;AUSGEBEN
460 NOBEN    LDA JOY
470 :        AND #2
480 :        CMP #0
490 :        BNE NUNTEN
500 :        LDA #"{up}"
510 :        JSR AUSG
520 NUNTEN   LDA JOY
530 :        AND #4
540 :        CMP #0
550 :        BNE NLINKS
560 :        LDA #"{left}"
570 :        JSR AUSG
580 NLINKS   LDA JOY
590 :        AND #8
600 :        CMP #0
700 :        BNE NRECHTS
710 :        LDA #"{right}"
720 :        JSR AUSG
730 NRECHTS  JMP $EA31
740 :
750 :
760 :
770 :
780 :
790 :
800 AUSG     LDX $C6     ;X-REG FUER
810 :        STA $277,X  ;INDIZIERTE
820 :        INC AZITP   ;ADDRESSIERUNG
830 :        RTS         ;LADEN
840 :                    ;IN TASTPUFFER
850 :                    ;SCHREIBEN
860 :                    ;ANZAHL ZEICHEN
870 :                    ;IM TASTPUFFER
880 :                    ;ERHOEHEN
890 :
900 :
READY.
Assemblerprogramm der Cursorsteuerung
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →