]> git.sur5r.net Git - cc65/commitdiff
Add 80 column mode
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 19 Dec 2002 21:22:22 +0000 (21:22 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 19 Dec 2002 21:22:22 +0000 (21:22 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@1788 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/c128/c128.inc
libsrc/c128/color.s
libsrc/c128/conio.s
libsrc/c128/cputc.s

index 9e101d4f9c00c042358d862ea00b258e4e00e622..7524b3f7394864a926dc659f7b22f421ca637062 100644 (file)
@@ -25,6 +25,7 @@ CRAM_PTR              = $E2           ; Pointer to current char in color RAM
 
 CHARCOLOR       = $F1
 RVS             = $F3           ; Reverse output flag
+SCROLL         = $F8           ; Disable scrolling flag
 FETCH           = $2A2          ; Fetch subroutine in RAM
 FETVEC          = $2AA          ; Vector patch location for FETCH
 STASH           = $2AF          ; Stash routine in RAM
index f60529b24eb19da730b2afc96b66f45a5ede4b4c..1e7d577b2a0549088c42f4c049497334d3665313 100644 (file)
        .include        "c128.inc"
 
 
-_textcolor:
+.proc   _textcolor
+
        bit     MODE            ; Check 80/40 column mode
-       bpl     @L1             ; Jump if 40 columns
-       tax
-       lda     $CE5C,x         ; Translate VIC color -> VDC color
-@L1:   ldx     CHARCOLOR       ; get old value
+               bmi     @L1             ; Jump if 40 columns
+        ldx    CHARCOLOR       ; get old value
        sta     CHARCOLOR       ; set new value
        txa
+        ldx     #$00
        rts
 
+@L1:    tax                     ; Move new color to X
+        lda     CHARCOLOR       ; Get old color + attributes
+        and     #$F0            ; Keep old attributes
+       ora     $CE5C,x         ; Translate VIC color -> VDC color
+        ldx     CHARCOLOR       ; Get the old color
+        sta     CHARCOLOR       ; Set the new color + old attributes
+        txa                     ; Old color -> A
+        and     #$0F            ; Mask out attributes
+        ldx     #$00            ; Load high byte
+        rts
+
+.endproc
+
+
+.proc   _bgcolor
 
-_bgcolor:
        ldx     VIC_BG_COLOR0   ; get old value
        sta     VIC_BG_COLOR0   ; set new value
        txa
+        ldx     #$00
        rts
 
+.endproc
+
+
+.proc   _bordercolor
 
-_bordercolor:
                ldx     VIC_BORDERCOLOR ; get old value
        sta     VIC_BORDERCOLOR ; set new value
        txa
+        ldx     #$00
        rts
 
+.endproc
+
index fddbd863259767bfc06fc4bd0ea2e12e9b35bc2b..11da9294158b19bc79b80d264a4b2a3fdbaeadd3 100644 (file)
@@ -19,6 +19,9 @@ keyvec:       .res    2
 
 initconio:
 
+       lda     #$80
+       sta     SCROLL
+
 ; Save the old vector
 
        lda     KeyStoreVec
index 9ba194290c829e1d1348f65a8b566ac48858a527..c3b835e13a19b04869a7a69cdf77eac196f30f40 100644 (file)
@@ -8,7 +8,6 @@
        .export         _cputcxy, _cputc, cputdirect, putchar
        .export         newline, plot
        .import         popa, _gotoxy
-       .import         xsize
         .import         PLOT
 
        .include        "c128.inc"
@@ -19,71 +18,17 @@ _cputcxy:
        jsr     popa            ; Get Y
        jsr     _gotoxy         ; Set cursor, drop x
        pla                     ; Restore C
+       jmp     PRINT
 
 ; Plot a character - also used as internal function
 
-_cputc: cmp            #$0A            ; CR?
-       bne     L1
-       lda     #0
-       sta     CURS_X
-               beq     plot            ; Recalculate pointers
+_cputc         = PRINT         ; let the kernal handle it
 
-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
-
-cputdirect:
-       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
+cputdirect     = $c33b
 
 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
-
-; 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
-
-
+       lda     #17
+       jmp     PRINT
 
 ; Set cursor position, calculate RAM pointers
 
@@ -92,15 +37,7 @@ plot:        ldy     CURS_X
        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
-               ldy     CURS_X
-       sta     (SCREEN_PTR),y  ; Set char
-       lda     CHARCOLOR
-       sta     (CRAM_PTR),y    ; Set color
-       rts
+putchar        = $CC2F