]> git.sur5r.net Git - cc65/blobdiff - libsrc/pce/cputc.s
Fixed bugs; and, improved the efficiency of some pce library functions.
[cc65] / libsrc / pce / cputc.s
index 5f720dd5767da54e2f0fd794372a89b49515cca5..04d901423b98023a43fdfdeacd2dcb16928a9051 100644 (file)
@@ -5,6 +5,7 @@
 
         .export         _cputcxy, _cputc, cputdirect, putchar
         .export         newline, plot
+        .forceimport    initconio       ; force conio initiation
 
         .import         gotoxy
         .import         PLOT
@@ -23,76 +24,59 @@ _cputcxy:
 
 _cputc: cmp     #$0D            ; CR?
         bne     L1
-        lda     #0
-        sta     CURS_X
-        beq     plot            ; Recalculate pointers
+        stz     CURS_X
+        bra     plot            ; Recalculate pointer
 
 L1:     cmp     #$0A            ; LF?
-        beq     newline         ; Recalculate pointers
+        beq     newline         ; Recalculate pointer
 
 ; Printable char of some sort
 
 cputdirect:
         jsr     putchar         ; Write the character to the screen
 
-; Advance cursor position
+; Move the cursor (rightwards) to the next position.
 
 advance:
         ldy     CURS_X
         iny
         cpy     xsize
         bne     L3
-        jsr     newline         ; new line
-        ldy     #0              ; + CR
+        inc     CURS_Y          ; new line
+        cly                     ; + CR
 L3:     sty     CURS_X
-        jmp     plot
 
-newline:
-        inc     CURS_Y
-
-; Set cursor position, calculate RAM pointers
+; Set cursor position; calculate VRAM pointer.
 
 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:
-
-        ora     RVS             ; Set revers bit
-
-        tax
-
-        st0     #VDC_MAWR       ; Memory Adress Write
+newline:
+        inc     CURS_Y
+        bra     plot
 
-        lda     SCREEN_PTR
-        sta     VDC_DATA_LO
+; Write one character to the screen without doing anything else.
 
-        lda     SCREEN_PTR+1
-        sta     VDC_DATA_HI
+putchar:
+        ora     RVS             ; Set reverse bit
 
-        st0     #VDC_VWR        ; VWR
+        st0     #VDC_MAWR       ; Memory-Address Write
+        ldy     SCREEN_PTR
+        ldx     SCREEN_PTR+1
+        sty     VDC_DATA_LO
+        stx     VDC_DATA_HI
 
-        txa
+        st0     #VDC_VWR
         sta     VDC_DATA_LO     ; character
 
-        lda     CHARCOLOR
-
+        lda     CHARCOLOR       ; pallette number
         asl     a
         asl     a
         asl     a
         asl     a
-
-        ora     #$02
+        ora     #>$0200         ; high nybble of char. index
         sta     VDC_DATA_HI
 
         rts
-
-;-------------------------------------------------------------------------------
-; force the init constructor to be imported
-
-        .import initconio
-conio_init      = initconio