]> git.sur5r.net Git - cc65/blob - asminc/tgi-kernel.inc
New TGI routines tgi_getaspectratio/tgi_setaspectratio.
[cc65] / asminc / tgi-kernel.inc
1 ;*****************************************************************************/
2 ;*                                                                           */
3 ;*                                tgi-kernel.inc                             */
4 ;*                                                                           */
5 ;*                             TGI kernel interface                          */
6 ;*                                                                           */
7 ;*                                                                           */
8 ;*                                                                           */
9 ;* (C) 2002-2009, Ullrich von Bassewitz                                      */
10 ;*                Roemerstrasse 52                                           */
11 ;*                D-70794 Filderstadt                                        */
12 ;* EMail:         uz@cc65.org                                                */
13 ;*                                                                           */
14 ;*                                                                           */
15 ;* This software is provided 'as-is', without any expressed or implied       */
16 ;* warranty.  In no event will the authors be held liable for any damages    */
17 ;* arising from the use of this software.                                    */
18 ;*                                                                           */
19 ;* Permission is granted to anyone to use this software for any purpose,     */
20 ;* including commercial applications, and to alter it and redistribute it    */
21 ;* freely, subject to the following restrictions:                            */
22 ;*                                                                           */
23 ;* 1. The origin of this software must not be misrepresented; you must not   */
24 ;*    claim that you wrote the original software. If you use this software   */
25 ;*    in a product, an acknowledgment in the product documentation would be  */
26 ;*    appreciated but is not required.                                       */
27 ;* 2. Altered source versions must be plainly marked as such, and must not   */
28 ;*    be misrepresented as being the original software.                      */
29 ;* 3. This notice may not be removed or altered from any source              */
30 ;*    distribution.                                                          */
31 ;*                                                                           */
32 ;*****************************************************************************/
33
34
35
36 ;------------------------------------------------------------------------------
37 ; The driver header
38
39 .struct TGI_HDR
40         ID                  .byte   3   ; Contains 0x74, 0x67, 0x69 ("tgi")
41         VERSION             .byte   1   ; Interface version
42         VARS                .struct
43             XRES            .word   1   ; X resolution
44             YRES            .word   1   ; Y resolution
45             COLORCOUNT      .byte   1   ; Number of available colors
46             PAGECOUNT       .byte   1   ; Number of screens available
47             FONTWIDTH       .byte   1   ; System font width
48             FONTHEIGHT      .byte   1   ; System font height
49             ASPECTRATIO     .word   1   ; Fixed point 8.8 format
50         .endstruct
51         JUMPTAB             .struct
52             INSTALL         .addr       ; INSTALL routine
53             UNINSTALL       .addr       ; UNINSTALL routine
54             INIT            .addr       ; INIT routine
55             DONE            .addr       ; DONE routine
56             GETERROR        .addr       ; GETERROR routine
57             CONTROL         .addr       ; CONTROL routine
58             CLEAR           .addr       ; CLEAR routine
59             SETVIEWPAGE     .addr       ; SETVIEWPAGE routine
60             SETDRAWPAGE     .addr       ; SETDRAWPAGE routine
61             SETCOLOR        .addr       ; SETCOLOR routine
62             SETPALETTE      .addr       ; SETPALETTE routine
63             GETPALETTE      .addr       ; GETPALETTE routine
64             GETDEFPALETTE   .addr       ; GETDEFPALETTE routine
65             SETPIXEL        .addr       ; SETPIXEL routine
66             GETPIXEL        .addr       ; GETPIXEL routine
67             LINE            .addr       ; LINE routine
68             BAR             .addr       ; BAR routine
69             TEXTSTYLE       .addr       ; TEXTSTYLE routine
70             OUTTEXT         .addr       ; OUTTEXT routine
71             IRQ             .addr       ; IRQ routine
72         .endstruct
73 .endstruct
74
75 ;------------------------------------------------------------------------------
76 ; The TGI API version, stored at TGI_HDR_VERSION
77
78 TGI_API_VERSION         = $03
79
80 ;------------------------------------------------------------------------------
81 ; Text constants
82
83 TGI_FONT_BITMAP         = 0
84 TGI_FONT_VECTOR         = 1
85
86 TGI_TEXT_HORIZONTAL     = 0
87 TGI_TEXT_VERTICAL       = 1
88
89 ;----------------------------------------------------------------------------
90 ; Results of tgi_outcode
91
92 TGI_CLIP_NONE           = $00
93 TGI_CLIP_LEFT           = $01
94 TGI_CLIP_RIGHT          = $02
95 TGI_CLIP_BOTTOM         = $04
96 TGI_CLIP_TOP            = $08
97
98 ;------------------------------------------------------------------------------
99 ; ASM accessible color constants
100
101         .global tgi_color_black:zp      ; Target-specific value for black
102         .global tgi_color_white:zp      ; Target-specific value for white
103
104 ;------------------------------------------------------------------------------
105 ; C accessible variables
106
107         .global _tgi_drv                ; Pointer to driver
108         .global _tgi_error              ; Last error code
109         .global _tgi_gmode              ; Flag: graphics mode active
110         .global _tgi_curx               ; Current drawing cursor X
111         .global _tgi_cury               ; Current drawing cursor Y
112         .global _tgi_color              ; Current drawing color
113         .global _tgi_font               ; Which font to use
114         .global _tgi_textdir            ; Current text direction
115         .global _tgi_vectorfont         ; Pointer to vector font
116         .global _tgi_textscalew         ; Text magnification for the width
117         .global _tgi_textscaleh         ; Text magnification for the height
118         .global _tgi_charwidth          ; Width of scaled system font char
119         .global _tgi_charheight         ; Height of scaled system font char
120         .global _tgi_xres               ; X resolution of the current mode
121         .global _tgi_yres               ; Y resolution of the current mode
122         .global _tgi_xmax               ; Maximum X coordinate
123         .global _tgi_ymax               ; Maximum Y coordinate
124         .global _tgi_colorcount         ; Number of available colors
125         .global _tgi_pagecount          ; Number of available screen pages
126         .global _tgi_fontwidth          ; System font width
127         .global _tgi_fontheight         ; System font height
128         .global _tgi_aspectratio        ; Aspect ratio, fixed point 8.8
129
130 ;------------------------------------------------------------------------------
131 ; ASM accessible variables
132
133         .global tgi_clip_x1             ; Coordinate for line clipper
134         .global tgi_clip_y1             ; Coordinate for line clipper
135         .global tgi_clip_x2             ; Coordinate for line clipper
136         .global tgi_clip_y2             ; Coordinate for line clipper
137
138 ;------------------------------------------------------------------------------
139 ; Driver entry points
140
141         .global tgi_install
142         .global tgi_uninstall
143         .global tgi_init
144         .global tgi_done
145         .global tgi_geterror
146         .global tgi_control
147         .global tgi_clear
148         .global tgi_setviewpage
149         .global tgi_setdrawpage
150         .global tgi_setcolor
151         .global tgi_setpalette
152         .global tgi_getpalette
153         .global tgi_getdefpalette
154         .global tgi_setpixel
155         .global tgi_getpixel
156         .global tgi_line
157         .global tgi_bar
158         .global tgi_textstyle
159         .global tgi_outtext
160
161 ;------------------------------------------------------------------------------
162 ; ASM functions
163
164         .global tgi_clippedline
165         .global tgi_curtoxy
166         .global tgi_getset
167         .global tgi_imulround
168         .global tgi_inv_arg
169         .global tgi_inv_drv
170         .global tgi_linepop
171         .global tgi_outcode
172         .global tgi_popxy
173         .global tgi_popxy2
174         .global tgi_set_ptr
175
176 ;------------------------------------------------------------------------------
177 ; C callable functions
178
179         .global _tgi_arc
180         .global _tgi_bar
181         .global _tgi_circle
182         .global _tgi_clear
183         .global _tgi_done
184         .global _tgi_ellipse
185         .global _tgi_getaspectratio
186         .global _tgi_getcolor
187         .global _tgi_getcolorcount
188         .global _tgi_getdefpalette
189         .global _tgi_geterror
190         .global _tgi_geterrormsg
191         .global _tgi_getmaxcolor
192         .global _tgi_getmaxx
193         .global _tgi_getmaxy
194         .global _tgi_getpagecount
195         .global _tgi_getpalette
196         .global _tgi_getpixel
197         .global _tgi_getxres
198         .global _tgi_getyres
199         .global _tgi_gotoxy
200         .global _tgi_imulround
201         .global _tgi_init
202         .global _tgi_install
203         .global _tgi_install_vectorfont
204         .global _tgi_ioctl
205         .global _tgi_line
206         .global _tgi_lineto
207         .global _tgi_load
208         .global _tgi_load_driver
209         .global _tgi_outtext
210         .global _tgi_outtextxy
211         .global _tgi_pieslice      
212         .global _tgi_getaspectratio
213         .global _tgi_setcolor
214         .global _tgi_setdrawpage
215         .global _tgi_setpalette
216         .global _tgi_setpixel
217         .global _tgi_setviewpage
218         .global _tgi_textheight
219         .global _tgi_textscale
220         .global _tgi_textstyle
221         .global _tgi_textwidth
222         .global _tgi_uninstall
223         .global _tgi_unload