1
0
mirror of https://github.com/cc65/cc65.git synced 2024-12-25 02:29:52 +00:00
cc65/libsrc/atari5200/conioscreen.s

93 lines
2.3 KiB
ArmAsm
Raw Normal View History

2014-05-28 21:38:22 +00:00
; setup default CONIO screen (20x24, Antic mode 6, BASIC mode 1)
;
; 28-May-2014, Christian Groessler <chris@groessler.org>
.include "atari5200.inc"
2014-05-16 00:10:19 +00:00
SCREEN_BUF_SIZE = 20 * 24
SCREEN_BUF = $4000 - SCREEN_BUF_SIZE
.export screen_setup
.export screen_width, screen_height
.export conio_color
screen_width = 20
screen_height = 24
.segment "ONCE"
; initialize color registers, display list, and screen memory
screen_setup:
2014-05-16 00:10:19 +00:00
; 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 #GTIA_COLOR_WHITE
2014-05-16 00:10:19 +00:00
sta COLOR0
lda #GTIA_COLOR_LIGHTRED
2014-05-16 00:10:19 +00:00
sta COLOR1
lda #GTIA_COLOR_LIGHTGREEN
2014-05-16 00:10:19 +00:00
sta COLOR2
lda #GTIA_COLOR_BLACK
2014-05-16 00:10:19 +00:00
sta COLOR3
sta COLOR4 ; background
2014-05-16 00:10:19 +00:00
; set display list
lda #<dlist
sta SDLSTL
lda #>dlist
sta SDLSTH
rts
.bss
conio_color: .res 1
.segment "DLIST"
; display list for 20x24 text mode
dlist: .repeat 3
.byte DL_BLK8
.endrepeat
2022-04-17 14:06:22 +00:00
.byte DL_CHR20x8x2 | DL_LMS
.word SCREEN_BUF
.repeat 23
.byte DL_CHR20x8x2
.endrepeat
.byte DL_JVB
.word dlist
; end of display list
.assert ((* >> 10) = (dlist >> 10)), error, "Display list crosses 1K boundary"
.end