mirror of
https://github.com/cc65/cc65.git
synced 2024-11-16 18:08:04 +00:00
Add 80 column mode
git-svn-id: svn://svn.cc65.org/cc65/trunk@1788 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
36fe6284a8
commit
8775a9da8a
@ -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
|
||||
|
@ -11,27 +11,48 @@
|
||||
.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
|
||||
|
||||
|
@ -19,6 +19,9 @@ keyvec: .res 2
|
||||
|
||||
initconio:
|
||||
|
||||
lda #$80
|
||||
sta SCROLL
|
||||
|
||||
; Save the old vector
|
||||
|
||||
lda KeyStoreVec
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user