1
0
mirror of https://github.com/cc65/cc65.git synced 2024-06-01 13:41:34 +00:00

atari5200: add alternative conio screen (20x12 resolution)

This commit is contained in:
Christian Groessler 2019-04-02 21:31:12 +02:00 committed by Oliver Schmidt
parent ec5e38617a
commit db01036e2e
3 changed files with 97 additions and 6 deletions

View File

@ -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 #<SCREEN_BUF

View File

@ -15,10 +15,9 @@
.importzp screen_width, screen_height
.importzp ptr4
.constructor screen_setup, 26
.import screen_setup_20x24
screen_setup = screen_setup_20x24
.import screen_setup
.constructor screen_setup_constructor, 26
screen_setup_constructor = screen_setup
_cputcxy:
pha ; Save C

View File

@ -0,0 +1,92 @@
; setup alternative CONIO screen (20x12, Antic mode 7, BASIC mode 2)
;
; 02-Apr-2019, Christian Groessler <chris@groessler.org>
.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
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 SDLSTL
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