X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libsrc%2Fvic20%2Fcputc.s;h=43aacdae34e6ba8cd48bd768e09f7335fca9727d;hb=c9869c1a26a5be1f3e3c789ed31e56568fa69059;hp=cf3c02fdfa2f9c3535e23a09029f882c0194c41c;hpb=36fe6284a84a279ab94c47a74a6bb572e1aa0e0a;p=cc65 diff --git a/libsrc/vic20/cputc.s b/libsrc/vic20/cputc.s index cf3c02fdf..43aacdae3 100644 --- a/libsrc/vic20/cputc.s +++ b/libsrc/vic20/cputc.s @@ -5,92 +5,90 @@ ; void cputc (char c); ; - .export _cputcxy, _cputc, cputdirect, putchar - .export newline, plot - .import popa, _gotoxy - .import xsize + .export _cputcxy, _cputc, cputdirect, putchar + .export newline, plot + .import gotoxy .import PLOT - .include "vic20.inc" + .include "vic20.inc" _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? - bne L1 - lda #0 - sta CURS_X - beq plot ; Recalculate pointers +_cputc: cmp #$0A ; CR? + bne L1 + lda #0 + sta CURS_X + beq plot ; Recalculate pointers -L1: cmp #$0D ; LF? - beq newline ; Recalculate pointers +L1: cmp #$0D ; LF? + beq newline ; Recalculate pointers ; Printable char of some sort - cmp #' ' - bcc cputdirect ; Other control char - tay - bmi L10 - cmp #$60 - bcc L2 - and #$DF - bne cputdirect ; Branch always -L2: and #$3F + cmp #' ' + bcc cputdirect ; Other control char + tay + bmi L10 + cmp #$60 + bcc L2 + and #$DF + bne cputdirect ; Branch always +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 L3 - jsr newline ; new line - ldy #0 ; + cr -L3: sty CURS_X - rts + iny + cpy #XSIZE + bne L3 + jsr newline ; new line + ldy #0 ; + cr +L3: sty CURS_X + rts newline: - clc - lda xsize - adc SCREEN_PTR - sta SCREEN_PTR - bcc L4 - inc SCREEN_PTR+1 - clc -L4: lda xsize - adc CRAM_PTR - sta CRAM_PTR - bcc L5 - inc CRAM_PTR+1 -L5: inc CURS_Y - rts + clc + lda #XSIZE + adc SCREEN_PTR + sta SCREEN_PTR + bcc L4 + inc SCREEN_PTR+1 + clc +L4: lda #XSIZE + adc CRAM_PTR + sta CRAM_PTR + bcc L5 + inc CRAM_PTR+1 +L5: inc CURS_Y + rts ; Handle character if high bit set -L10: and #$7F - cmp #$7E ; PI? - bne L11 - lda #$5E ; Load screen code for PI - bne cputdirect -L11: ora #$40 - bne cputdirect +L10: and #$7F + cmp #$7E ; PI? + bne L11 + lda #$5E ; Load screen code for PI + bne cputdirect +L11: ora #$40 + bne cputdirect ; 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 @@ -98,9 +96,9 @@ plot: ldy CURS_X ; position in Y putchar: - ora RVS ; Set revers bit - ldy CURS_X - sta (SCREEN_PTR),y ; Set char - lda CHARCOLOR - sta (CRAM_PTR),y ; Set color - rts + ora RVS ; Set revers bit + ldy CURS_X + sta (SCREEN_PTR),y ; Set char + lda CHARCOLOR + sta (CRAM_PTR),y ; Set color + rts