1 ;*****************************************************************************/
5 ;* TGI kernel interface */
9 ;* (C) 2002-2012, Ullrich von Bassewitz */
10 ;* Roemerstrasse 52 */
11 ;* D-70794 Filderstadt */
12 ;* EMail: uz@cc65.org */
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. */
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: */
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 */
32 ;*****************************************************************************/
36 ;------------------------------------------------------------------------------
40 ID .byte 3 ; Contains 0x74, 0x67, 0x69 ("tgi")
41 VERSION .byte 1 ; Interface version
42 LIBREF .addr ; Library reference
44 XRES .word 1 ; X resolution
45 YRES .word 1 ; Y resolution
46 COLORCOUNT .byte 1 ; Number of available colors
47 PAGECOUNT .byte 1 ; Number of screens available
48 FONTWIDTH .byte 1 ; System font width in pixel
49 FONTHEIGHT .byte 1 ; System font height in pixel
50 ASPECTRATIO .word 1 ; Fixed point 8.8 format
51 FLAGS .byte 1 ; TGI driver flags
54 INSTALL .addr ; INSTALL routine
55 UNINSTALL .addr ; UNINSTALL routine
56 INIT .addr ; INIT routine
57 DONE .addr ; DONE routine
58 GETERROR .addr ; GETERROR routine
59 CONTROL .addr ; CONTROL routine
60 CLEAR .addr ; CLEAR routine
61 SETVIEWPAGE .addr ; SETVIEWPAGE routine
62 SETDRAWPAGE .addr ; SETDRAWPAGE routine
63 SETCOLOR .addr ; SETCOLOR routine
64 SETPALETTE .addr ; SETPALETTE routine
65 GETPALETTE .addr ; GETPALETTE routine
66 GETDEFPALETTE .addr ; GETDEFPALETTE routine
67 SETPIXEL .addr ; SETPIXEL routine
68 GETPIXEL .addr ; GETPIXEL routine
69 LINE .addr ; LINE routine
70 BAR .addr ; BAR routine
71 TEXTSTYLE .addr ; TEXTSTYLE routine
72 OUTTEXT .addr ; OUTTEXT routine
73 IRQ .addr ; IRQ routine
77 ;------------------------------------------------------------------------------
78 ; The TGI API version, stored at TGI_HDR_VERSION
82 ;------------------------------------------------------------------------------
83 ; Bitmapped tgi driver flags, stored in TGI_HDR::VARS::FLAGS.
84 ; Beware: Some of the bits are tested using the BIT instruction, so do not
85 ; change the values without checking the code!
87 TGI_BM_FONT_FINESCALE = $80 ; Bitmap fonts are fine grained scalable
89 ;------------------------------------------------------------------------------
95 TGI_TEXT_HORIZONTAL = 0
98 ;----------------------------------------------------------------------------
99 ; Results of tgi_outcode
104 TGI_CLIP_BOTTOM = $04
107 ;------------------------------------------------------------------------------
108 ; ASM accessible color constants
110 .global tgi_color_black:zp ; Target-specific value for black
111 .global tgi_color_white:zp ; Target-specific value for white
113 ;------------------------------------------------------------------------------
114 ; C accessible variables
116 .global _tgi_drv ; Pointer to driver
117 .global _tgi_error ; Last error code
118 .global _tgi_gmode ; Flag: graphics mode active
119 .global _tgi_curx ; Current drawing cursor X
120 .global _tgi_cury ; Current drawing cursor Y
121 .global _tgi_color ; Current drawing color
122 .global _tgi_font ; Which font to use
123 .global _tgi_textdir ; Current text direction
124 .global _tgi_vectorfont ; Pointer to vector font
125 .global _tgi_textscalew ; Text magnification for the width
126 .global _tgi_textscaleh ; Text magnification for the height
127 .global _tgi_charwidth ; Width of scaled system font char
128 .global _tgi_charheight ; Height of scaled system font char
129 .global _tgi_xres ; X resolution of the current mode
130 .global _tgi_yres ; Y resolution of the current mode
131 .global _tgi_xmax ; Maximum X coordinate
132 .global _tgi_ymax ; Maximum Y coordinate
133 .global _tgi_colorcount ; Number of available colors
134 .global _tgi_pagecount ; Number of available screen pages
135 .global _tgi_fontwidth ; System font width
136 .global _tgi_fontheight ; System font height
137 .global _tgi_aspectratio ; Aspect ratio, fixed point 8.8
138 .global _tgi_flags ; TGI driver flags
140 ;------------------------------------------------------------------------------
141 ; ASM accessible variables
143 .global tgi_clip_x1 ; Coordinate for line clipper
144 .global tgi_clip_y1 ; Coordinate for line clipper
145 .global tgi_clip_x2 ; Coordinate for line clipper
146 .global tgi_clip_y2 ; Coordinate for line clipper
148 ;------------------------------------------------------------------------------
149 ; Driver entry points
152 .global tgi_uninstall
158 .global tgi_setviewpage
159 .global tgi_setdrawpage
161 .global tgi_setpalette
162 .global tgi_getpalette
163 .global tgi_getdefpalette
168 .global tgi_textstyle
171 ;------------------------------------------------------------------------------
174 .global tgi_clear_ptr
175 .global tgi_clippedline
178 .global tgi_imulround
187 ;------------------------------------------------------------------------------
188 ; C callable functions
196 .global _tgi_getaspectratio
197 .global _tgi_getcolor
198 .global _tgi_getcolorcount
199 .global _tgi_getdefpalette
200 .global _tgi_geterror
201 .global _tgi_geterrormsg
202 .global _tgi_getmaxcolor
205 .global _tgi_getpagecount
206 .global _tgi_getpalette
207 .global _tgi_getpixel
208 .global _tgi_gettextheight
209 .global _tgi_gettextwidth
213 .global _tgi_imulround
216 .global _tgi_install_vectorfont
220 .global _tgi_load_driver
222 .global _tgi_outtextxy
223 .global _tgi_pieslice
224 .global _tgi_setaspectratio
225 .global _tgi_setcolor
226 .global _tgi_setdrawpage
227 .global _tgi_setpalette
228 .global _tgi_setpixel
229 .global _tgi_settextdir
230 .global _tgi_settextscale
231 .global _tgi_settextstyle
232 .global _tgi_setviewpage
233 .global _tgi_uninstall