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