From: Christian Groessler Date: Tue, 2 Apr 2019 19:31:12 +0000 (+0200) Subject: atari5200: add alternative conio screen (20x12 resolution) X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=db01036e2e244405e371d53253ace00424749fe1;p=cc65 atari5200: add alternative conio screen (20x12 resolution) --- diff --git a/libsrc/atari5200/conioscreen.s b/libsrc/atari5200/conioscreen.s index 2c6a8a4e4..a16557d2a 100644 --- a/libsrc/atari5200/conioscreen.s +++ b/libsrc/atari5200/conioscreen.s @@ -7,7 +7,7 @@ SCREEN_BUF_SIZE = 20 * 24 SCREEN_BUF = $4000 - SCREEN_BUF_SIZE - .export screen_setup_20x24 + .export screen_setup .export screen_width, screen_height .export conio_color @@ -17,7 +17,7 @@ screen_height = 24 .segment "ONCE" -screen_setup_20x24: +screen_setup: ; initialize SAVMSC lda # + + .include "atari5200.inc" + +SCREEN_BUF_SIZE = 20 * 12 +SCREEN_BUF = $4000 - SCREEN_BUF_SIZE + + .export screen_setup + .export screen_width, screen_height + .export conio_color + +screen_width = 20 +screen_height = 12 + + + .segment "ONCE" + +screen_setup: + + ; initialize SAVMSC + lda #SCREEN_BUF + sta SAVMSC+1 + + ; initialize cursor position + lda #0 + sta COLCRS_5200 + sta ROWCRS_5200 + + ; clear screen buffer + ldy #<(SCREEN_BUF_SIZE-1) + ldx #>(SCREEN_BUF_SIZE-1) +clrscr: sta (SAVMSC),y + dey + cpy #$FF + bne clrscr + dex + cpx #$FF + bne clrscr + + ; set default colors + + lda #40 + sta COLOR0 + lda #202 + sta COLOR1 + lda #148 + sta COLOR2 + lda #70 + sta COLOR3 + lda #0 + sta COLOR4 + + ; set display list + + lda #dlist + sta SDLSTH + + rts + + .data + +conio_color: .byte 0 + + .segment "DLIST" + +; display list for 20x12 text mode + +dlist: .repeat 3 + .byte DL_BLK8 + .endrepeat + + .byte DL_CHR20x16x2 | DL_LMS + .word SCREEN_BUF + + .repeat 11 + .byte DL_CHR20x16x2 + .endrepeat + + .byte DL_JVB + .word dlist + +; end of display list + +.assert ((* >> 10) = (dlist >> 10)), error, "Display list crosses 1K boundary" + + .end