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