]> git.sur5r.net Git - cc65/blob - libsrc/atari5200/conioscreen.s
atari5200: put default display list into its own memory area
[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_20x24
11
12                 .segment "ONCE"
13
14 screen_setup_20x24:
15
16                 ; initialize SAVMSC
17                 lda     #<SCREEN_BUF
18                 sta     SAVMSC
19                 lda     #>SCREEN_BUF
20                 sta     SAVMSC+1
21
22                 ; initialize cursor position
23                 lda     #0
24                 sta     COLCRS_5200
25                 sta     ROWCRS_5200
26
27                 ; clear screen buffer
28                 ldy     #<(SCREEN_BUF_SIZE-1)
29                 ldx     #>(SCREEN_BUF_SIZE-1)
30 clrscr:         sta     (SAVMSC),y
31                 dey
32                 cpy     #$FF
33                 bne     clrscr
34                 dex
35                 cpx     #$FF
36                 bne     clrscr
37
38                 ; set default colors
39
40                 lda     #40
41                 sta     COLOR0
42                 lda     #202
43                 sta     COLOR1
44                 lda     #148
45                 sta     COLOR2
46                 lda     #70
47                 sta     COLOR3
48                 lda     #0
49                 sta     COLOR4
50
51                 ; set display list
52
53                 lda     #<dlist
54                 sta     SDLSTL
55                 lda     #>dlist
56                 sta     SDLSTH
57
58                 rts
59
60
61                 .segment "DLIST"
62
63 ; display list for 20x24 text mode
64
65 dlist:          .repeat 3
66                 .byte   DL_BLK8
67                 .endrepeat
68                 
69                 .byte   DL_CHR20x8x2 | DL_LMS
70                 .word   SCREEN_BUF
71
72                 .repeat 23
73                 .byte   DL_CHR20x8x2
74                 .endrepeat
75
76                 .byte  DL_JVB
77                 .word   dlist
78
79 ; end of display list
80
81 .export         __DLISTSIZE__
82 __DLISTSIZE__   = * - dlist
83
84 .assert ((* >> 10) = (dlist >> 10)), error, "Display list crosses 1K boundary"
85
86                 .end