X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libsrc%2Fc64%2Fcputc.s;h=d5ba79ed79b8cdf634b58dffdafecef7d590ccf8;hb=148a6569e55822a562380c56df0340bccc653749;hp=bb7384a6a1a6bf0dc7b844edcd93d3dcdeb8a4a3;hpb=53dd513176425872128ef26031d00952ef7a0628;p=cc65 diff --git a/libsrc/c64/cputc.s b/libsrc/c64/cputc.s index bb7384a6a..d5ba79ed7 100644 --- a/libsrc/c64/cputc.s +++ b/libsrc/c64/cputc.s @@ -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