]> git.sur5r.net Git - cc65/blobdiff - libsrc/c64/cputc.s
Clear __oserror on success.
[cc65] / libsrc / c64 / cputc.s
index bb7384a6a1a6bf0dc7b844edcd93d3dcdeb8a4a3..d5ba79ed79b8cdf634b58dffdafecef7d590ccf8 100644 (file)
@@ -1,17 +1,17 @@
 ;
-; Ullrich von Bassewitz, 06.08.1998
+; Ullrich von Bassewitz, 1998-08-06, 2009-09-26
 ;
-; void cputcxy (unsigned char x, unsigned char y, char c);
-; void cputc (char c);
+; void __fastcall__ cputcxy (unsigned char x, unsigned char y, char c);
+; void __fastcall__ cputc (char c);
 ;
 
        .export         _cputcxy, _cputc, cputdirect, putchar
-       .export         advance, newline, plot
+       .export         newline, plot
        .import         popa, _gotoxy
-       .import         xsize, revers
+        .import         PLOT
 
        .include        "c64.inc"
-       .include        "../cbm/cbm.inc"
+
 
 _cputcxy:
        pha                     ; Save C
@@ -21,55 +21,55 @@ _cputcxy:
 
 ; Plot a character - also used as internal function
 
-_cputc: cmp    #$0D            ; CR?
+_cputc: cmp            #$0A            ; CR?
        bne     L1
        lda     #0
        sta     CURS_X
                beq     plot            ; Recalculate pointers
 
-L1:    cmp     #$0A            ; LF?
-               bne     L2
-       ldy     CURS_Y
-       iny
-       bne     newline         ; Recalculate pointers
+L1:    cmp     #$0D            ; LF?
+               beq     newline         ; Recalculate pointers
 
 ; Printable char of some sort
 
-L2:            cmp     #' '
+       cmp     #' '
        bcc     cputdirect      ; Other control char
        tay
        bmi     L10
        cmp     #$60
-       bcc     L3
+       bcc     L2
        and     #$DF
        bne     cputdirect      ; Branch always
-L3:    and     #$3F
+L2:    and     #$3F
 
 cputdirect:
-       jsr     putchar         ; Write the character to the screen
+       jsr     putchar         ; Write the character to the screen
 
 ; Advance cursor position
 
 advance:
        iny
-       cpy     xsize
-       bne     L9
-       ldy     #0              ; new line
+       cpy     #XSIZE
+       bne     L3
+       jsr     newline         ; new line
+       ldy     #0              ; + cr
+L3:    sty     CURS_X
+       rts
+
 newline:
        clc
-       lda     xsize
+       lda     #XSIZE
        adc     SCREEN_PTR
        sta     SCREEN_PTR
        bcc     L4
        inc     SCREEN_PTR+1
-L4:    clc
-       lda     xsize
+       clc
+L4:    lda     #XSIZE
        adc     CRAM_PTR
        sta     CRAM_PTR
        bcc     L5
        inc     CRAM_PTR+1
 L5:    inc     CURS_Y
-L9:            sty     CURS_X
        rts
 
 ; Handle character if high bit set
@@ -84,12 +84,12 @@ L11:        ora     #$40
 
 
 
-; Set cursor position, calculate RAM pointers
+; Set cursor position, calculate RAM pointers.
 
 plot:  ldy     CURS_X
        ldx     CURS_Y
        clc
-       jmp     PLOT            ; Set the new cursor
+               jmp     PLOT            ; Set the new cursor
 
 
 
@@ -97,7 +97,7 @@ plot: ldy     CURS_X
 ; position in Y
 
 putchar:
-       ora     revers          ; Set revers bit
+       ora     RVS             ; Set revers bit
                ldy     CURS_X
        sta     (SCREEN_PTR),y  ; Set char
        lda     CHARCOLOR