]> git.sur5r.net Git - cc65/blobdiff - libsrc/c128/cputc.s
Fixed gcc compiler warning (#867)
[cc65] / libsrc / c128 / cputc.s
index 5442e9f571f7dcb9aebd22c4d4343283e3716f9b..66726084373ef1c18524adebabe6c5847a0adbe5 100644 (file)
@@ -6,16 +6,13 @@
 ; void cputc (char c);
 ;
 
-       .export         _cputcxy, _cputc, cputdirect, putchar
-       .export         newline, plot
-        .constructor    initcputc
-        .destructor     donecputc
-       .import         popa, _gotoxy
-        .import         PLOT
+        .export         _cputcxy, _cputc, cputdirect, putchar
+        .export         newline, plot
+        .import         gotoxy
 
-       .include        "c128.inc"
+        .include        "cbm_kernal.inc"
+        .include        "c128.inc"
 
-cputdirect      = PRINT
 newline         = NEWLINE
 
 ;--------------------------------------------------------------------------
@@ -23,69 +20,68 @@ newline         = NEWLINE
 .code
 
 _cputcxy:
-       pha                     ; Save C
-       jsr     popa            ; Get Y
-       jsr     _gotoxy         ; Set cursor, drop x
-       pla                     ; Restore C
+        pha                     ; Save C
+        jsr      gotoxy         ; Set cursor, drop x and y
+        pla                     ; Restore C
 
 ; Plot a character - also used as internal function
 
-_cputc: cmp            #$0A            ; CR?
-               beq     cr              ; Output a cr
+_cputc: cmp     #$0A            ; CR?
+        beq     cr              ; Output a cr
 
-       cmp     #$0D            ; LF?
-               bne     L2
-               jmp     NEWLINE         ; Update cursor position
+        cmp     #$0D            ; LF?
+        bne     L2
+        jmp     NEWLINE         ; Update cursor position
 
 ; Printable char of some sort
 
-L2:    cmp     #' '
-               bcc     L4              ; Other control char
-       tay
-       bmi     L5
-       cmp     #$60
-       bcc     L3
-       and     #$DF
-       bne     L4              ; Branch always
-L3:    and     #$3F
-L4:     jmp     PRINT                  ; Output character
+L2:     cmp     #' '
+        bcc     cputdirect      ; Other control char
+        tay
+        bmi     L5
+        cmp     #$60
+        bcc     L3
+        and     #$DF
+        bne     cputdirect      ; Branch always
+L3:     and     #$3F
+
+; Output one character to the screen. We will disable scrolling while doing so
+
+cputdirect:
+        tax                     ; Save output char
+        lda     SCROLL
+        pha                     ; Save scroll flag
+        lda     #$C0
+        sta     SCROLL          ; Disable scrolling
+        txa                     ; Restore output char
+        jsr     PRINT
+        pla
+        sta     SCROLL          ; Restore old scroll flag
+        rts
 
 ; Handle character if high bit set
 
-L5:    and     #$7F
-               cmp     #$7E            ; PI?
-       bne     L6
-       lda     #$5E            ; Load screen code for PI
-       bne     L4
-L6:    ora     #$40
-       bne     L4              ; Branch always
+L5:     and     #$7F
+        cmp     #$7E            ; PI?
+        bne     L6
+        lda     #$5E            ; Load screen code for PI
+        bne     cputdirect
+L6:     ora     #$40
+        bne     cputdirect      ; Branch always
 
 ; Carriage return
 
-cr:    lda     #0
-       sta     CURS_X
+cr:     lda     #0
+        sta     CURS_X
 
 ; Set cursor position, calculate RAM pointers
 
-plot:  ldy     CURS_X
-       ldx     CURS_Y
-       clc
-       jmp     PLOT            ; Set the new cursor
+plot:   ldy     CURS_X
+        ldx     CURS_Y
+        clc
+        jmp     PLOT            ; Set the new cursor
 
 ; Write one character to the screen without doing anything else, return X
 ; position in Y
 
-putchar        = $CC2F
-
-;--------------------------------------------------------------------------
-; Module constructor/destructor. Don't move the constructor into the INIT
-; segment, because it shares most of the code with the destructor.
-
-initcputc:
-       lda     #$C0
-        .byte   $2C
-donecputc:
-        lda     #$00
-       sta     SCROLL
-        rts
-
+putchar = $CC2F