Assembler-Beispiel C9 - CMP (RAUTE)$nn.asm
Aus C64-Wiki
Zur Navigation springenZur Suche springen
; Dieses Programm zeigt eine Eingabe-Routine, die mit Return beendet wird. ; Es werden nur die ASCII-Zeichen 32-95 zugelassen. (Steuerzeichen werden herausgefiltert) ; Die Länge der Eingabe kann auf einen konstanten Wert begrenzt werden. ; DEL kann zur Korrektur verwendet werden. ; Das Ergebnis der Eingabe liegt ab $c042. Das Ende wird durch eine 0 gekennzeichnet. ; Programmstart mit SYS 49152 *=$c000 ; Startadresse des Programms BSOUT = $ffd2 GETIN = $ffe4 MAX = 10 start ldx #0 ; Zeichenzähler stx counter eingabe jsr GETIN ; Zeichen einlesen beq eingabe ; wenn keine Taste gedrückt --> zurück zur Eingabe cmp #13 ; wenn Return-Taste --> Programmende beq ende cmp #20 ; wenn nicht die DEL-Taste --> verzweige nach weiter bne weiter ldx counter beq eingabe ; wenn Zeichenzähler=0 --> DEL-Taste ignorieren dec counter ; Zeichenzähler-1 jmp out ; DEL ausführen weiter cmp #32 ; nur Zeichen mit ASCII-Code zwischen 32 und 95 zulassen bcc eingabe ; wenn < 32 --> zurück zur Eingabe cmp #96 bcs eingabe ; wenn >= 96 --> zurück zur Eingabe ausgabe ldx counter cpx #MAX bcs eingabe ; wenn max. Eingabelänge erreicht --> Zeichen ignorieren sta text, x ; Zeichen speichern inc counter ; Zeichenzähler +1 out jsr BSOUT ; Zeichen ausgeben jmp eingabe ende lda #0 ; das Ende des Textes mit 0 abschließen ldx counter sta text, x rts ; Rücksprung ins BASIC counter .byte 0 text .byte 0