]> git.sur5r.net Git - cc65/blobdiff - libsrc/pet/cputc.s
interrupt flag is cleared/restored rather than cleared/set
[cc65] / libsrc / pet / cputc.s
index 3c8b21d147a0e7c277f9f27ebdf36f797d4c7368..7dca231437f72e93a510c70a5e89eed4dad4f8b5 100644 (file)
@@ -6,7 +6,7 @@
 ;
 
        .export         _cputcxy, _cputc, cputdirect, putchar
-       .export         advance, newline, plot
+       .export         newline, plot
        .import         popa, _gotoxy
        .import         xsize, revers
 
@@ -21,40 +21,41 @@ _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
+        iny
+        cpy     xsize
+        bne     L3
+        jsr     newline         ; new line
+        ldy     #0              ; + cr
+L3:     sty     CURS_X
+        rts
+
 newline:
        clc
        lda     xsize
@@ -63,7 +64,6 @@ newline:
        bcc     L4
        inc     SCREEN_PTR+1
 L4:    inc     CURS_Y
-L9:            sty     CURS_X
        rts
 
 ; Handle character if high bit set