Assembler-Beispiel EA - NOP.asm

Aus C64-Wiki
Zur Navigation springenZur Suche springen
; Dieses Programm erzeugt schräge schwarz-weiß-Balken, die sich am Bildschirm bewegen.
; Programmstart mit SYS 49152

*=$c000   ; Startadresse des Programms

           sei              ; Interrupts sperren
           lda $d020        ; VIC-Register für Rahmenfarbe
           pha              ; Rahmenfarbe am Stapel sichern

           lda #$0b         ; VIC-Steuerregister, Bit 4 gelöscht: Bildschirm aus
           sta $d011        ; (Achtung, verstellt ggf. Rasterzeilen-Interrupts)

init       ldx #$00         ; Rahmenfarbe schwarz
loop       stx $d020

           lda $dc01        ; CIA 1 Datenport B (Tastatur-Matrix)
           cmp #$ff         ; Warte auf Tastendruck
           bne taste

           inx              ; Rahmenfarbe weiß
           nop              ; 2 Taktzyklen verbrauchen
           nop              ; 2 Taktzyklen verbrauchen
           nop              ; 2 Taktzyklen verbrauchen
           nop              ; 2 Taktzyklen verbrauchen
           nop              ; 2 Taktzyklen verbrauchen
           cpx #$02         ; prüfe, ob Rahmenfarbe rot
           bne loop         ;   nein -> loop
           jmp init         ;   ja   -> init

taste      lda #$1b         ; VIC-Steuerregister, Bit 4 gesetzt: Bildschirm an
           sta $d011

           pla              ; Rahmenfarbe holen ...
           sta $d020        ; ... und wiederherstellen
           cli              ; Interrupts freigeben 
           rts              ; Rücksprung