]> git.sur5r.net Git - cc65/blob - libsrc/atari5200/conioscreen.s
atari5200: get rid of conio_colors table
[cc65] / libsrc / atari5200 / conioscreen.s
1 ; setup default CONIO screen (20x24, Antic mode 6, BASIC mode 1)
2 ;
3 ; 28-May-2014, Christian Groessler <chris@groessler.org>
4
5                 .include "atari5200.inc"
6
7 SCREEN_BUF_SIZE =       20 * 24
8 SCREEN_BUF      =       $4000 - SCREEN_BUF_SIZE
9
10                 .export screen_setup
11                 .export screen_width, screen_height
12                 .export conio_color
13
14 screen_width    =       20
15 screen_height   =       24
16
17
18                 .segment "ONCE"
19
20 screen_setup:
21
22                 ; initialize SAVMSC
23                 lda     #<SCREEN_BUF
24                 sta     SAVMSC
25                 lda     #>SCREEN_BUF
26                 sta     SAVMSC+1
27
28                 ; initialize cursor position
29                 lda     #0
30                 sta     COLCRS_5200
31                 sta     ROWCRS_5200
32
33                 ; clear screen buffer
34                 ldy     #<(SCREEN_BUF_SIZE-1)
35                 ldx     #>(SCREEN_BUF_SIZE-1)
36 clrscr:         sta     (SAVMSC),y
37                 dey
38                 cpy     #$FF
39                 bne     clrscr
40                 dex
41                 cpx     #$FF
42                 bne     clrscr
43
44                 ; set default colors
45
46                 lda     #GTIA_COLOR_WHITE
47                 sta     COLOR0
48                 lda     #GTIA_COLOR_LIGHTRED
49                 sta     COLOR1
50                 lda     #GTIA_COLOR_LIGHTGREEN
51                 sta     COLOR2
52                 lda     #GTIA_COLOR_BLACK
53                 sta     COLOR3
54                 sta     COLOR4          ; background
55
56                 ; set display list
57
58                 lda     #<dlist
59                 sta     SDLSTL
60                 lda     #>dlist
61                 sta     SDLSTH
62
63                 rts
64
65                 .data
66
67 conio_color:    .byte   0
68
69                 .segment "DLIST"
70
71 ; display list for 20x24 text mode
72
73 dlist:          .repeat 3
74                 .byte   DL_BLK8
75                 .endrepeat
76                 
77                 .byte   DL_CHR20x8x2 | DL_LMS
78                 .word   SCREEN_BUF
79
80                 .repeat 23
81                 .byte   DL_CHR20x8x2
82                 .endrepeat
83
84                 .byte  DL_JVB
85                 .word   dlist
86
87 ; end of display list
88
89 .assert ((* >> 10) = (dlist >> 10)), error, "Display list crosses 1K boundary"
90
91                 .end