]> git.sur5r.net Git - cc65/blobdiff - asminc/tgi-kernel.inc
Fixed _textcolor definition.
[cc65] / asminc / tgi-kernel.inc
index aca870087457e94c9923efdce11a36974c7cb412..fba78afff51d2d0b52dd88cb2a7ea73d84213b1e 100644 (file)
@@ -6,10 +6,10 @@
 ;*                                                                           */
 ;*                                                                           */
 ;*                                                                           */
-;* (C) 2002      Ullrich von Bassewitz                                       */
-;*               Wacholderweg 14                                             */
-;*               D-70597 Stuttgart                                           */
-;* EMail:        uz@musoftware.de                                            */
+;* (C) 2002-2012, Ullrich von Bassewitz                                      */
+;*                Roemerstrasse 52                                           */
+;*                D-70794 Filderstadt                                        */
+;* EMail:         uz@cc65.org                                                */
 ;*                                                                           */
 ;*                                                                           */
 ;* This software is provided 'as-is', without any expressed or implied       */
 
 
 ;------------------------------------------------------------------------------
-; Offsets into the driver header
-
-TGI_HDR_ID              = 0             ; Contains 0x74, 0x67, 0x69 ("tgi")
-TGI_HDR_VERSION         = 3             ; Interface version
-TGI_HDR_XRES            = 4             ; X resolution
-TGI_HDR_YRES            = 6             ; Y resolution
-TGI_HDR_COLORCOUNT      = 8             ; Number of available colors
-TGI_HDR_PAGECOUNT       = 9             ; Number of screens available
-TGI_HDR_FONTSIZE_X      = 10            ; System font size in X direction
-TGI_HDR_FONTSIZE_Y      = 11            ; System font size in Y direction
-TGI_HDR_RES             = 12            ; Reserved for extensions
-
-TGI_HDR_JUMPTAB         = 16
-TGI_HDR_INSTALL         = TGI_HDR_JUMPTAB+0     ; INSTALL routine
-TGI_HDR_DEINSTALL       = TGI_HDR_JUMPTAB+2     ; DEINSTALL routine
-TGI_HDR_INIT            = TGI_HDR_JUMPTAB+4     ; INIT routine
-TGI_HDR_DONE            = TGI_HDR_JUMPTAB+6     ; DONE routine
-TGI_HDR_GETERROR       = TGI_HDR_JUMPTAB+8     ; GETERROR routine
-TGI_HDR_CONTROL         = TGI_HDR_JUMPTAB+10    ; CONTROL routine
-TGI_HDR_CLEAR           = TGI_HDR_JUMPTAB+12    ; CLEAR routine
-TGI_HDR_SETVIEWPAGE     = TGI_HDR_JUMPTAB+14    ; SETVIEWPAGE routine
-TGI_HDR_SETDRAWPAGE     = TGI_HDR_JUMPTAB+16    ; SETDRAWPAGE routine
-TGI_HDR_SETCOLOR        = TGI_HDR_JUMPTAB+18    ; SETCOLOR routine
-TGI_HDR_SETPALETTE      = TGI_HDR_JUMPTAB+20    ; SETPALETTE routine
-TGI_HDR_GETPALETTE      = TGI_HDR_JUMPTAB+22    ; GETPALETTE routine
-TGI_HDR_GETDEFPALETTE   = TGI_HDR_JUMPTAB+24    ; GETDEFPALETTE routine
-TGI_HDR_SETPIXEL        = TGI_HDR_JUMPTAB+26    ; SETPIXEL routine
-TGI_HDR_GETPIXEL        = TGI_HDR_JUMPTAB+28    ; GETPIXEL routine
-TGI_HDR_HORLINE         = TGI_HDR_JUMPTAB+30    ; HORLINE routine
-TGI_HDR_LINE            = TGI_HDR_JUMPTAB+32    ; LINE routine
-TGI_HDR_BAR             = TGI_HDR_JUMPTAB+34    ; BAR routine
-TGI_HDR_CIRCLE          = TGI_HDR_JUMPTAB+36    ; CIRCLE routine
-TGI_HDR_TEXTSTYLE       = TGI_HDR_JUMPTAB+39    ; TEXTSTYLE routine
-TGI_HDR_OUTTEXT         = TGI_HDR_JUMPTAB+42    ; OUTTEXT routine
-
-TGI_HDR_JUMPCOUNT       = 21            ; Number of jump vectors
+; The driver header
+
+.struct TGI_HDR
+        ID                  .byte   3   ; Contains 0x74, 0x67, 0x69 ("tgi")
+        VERSION             .byte   1   ; Interface version
+        LIBREF              .addr       ; Library reference
+        VARS                .struct
+            XRES            .word   1   ; X resolution
+            YRES            .word   1   ; Y resolution
+            COLORCOUNT      .byte   1   ; Number of available colors
+            PAGECOUNT       .byte   1   ; Number of screens available
+            FONTWIDTH       .byte   1   ; System font width in pixel
+            FONTHEIGHT      .byte   1   ; System font height in pixel
+            ASPECTRATIO     .word   1   ; Fixed point 8.8 format
+            FLAGS           .byte   1   ; TGI driver flags
+        .endstruct
+        JUMPTAB             .struct
+            INSTALL         .addr       ; INSTALL routine
+            UNINSTALL       .addr       ; UNINSTALL routine
+            INIT            .addr       ; INIT routine
+            DONE            .addr       ; DONE routine
+            GETERROR        .addr       ; GETERROR routine
+            CONTROL         .addr       ; CONTROL routine
+            CLEAR           .addr       ; CLEAR routine
+            SETVIEWPAGE     .addr       ; SETVIEWPAGE routine
+            SETDRAWPAGE     .addr       ; SETDRAWPAGE routine
+            SETCOLOR        .addr       ; SETCOLOR routine
+            SETPALETTE      .addr       ; SETPALETTE routine
+            GETPALETTE      .addr       ; GETPALETTE routine
+            GETDEFPALETTE   .addr       ; GETDEFPALETTE routine
+            SETPIXEL        .addr       ; SETPIXEL routine
+            GETPIXEL        .addr       ; GETPIXEL routine
+            LINE            .addr       ; LINE routine
+            BAR             .addr       ; BAR routine
+            TEXTSTYLE       .addr       ; TEXTSTYLE routine
+            OUTTEXT         .addr       ; OUTTEXT routine
+        .endstruct
+.endstruct
 
 ;------------------------------------------------------------------------------
-; Text style constants
+; The TGI API version, stored at TGI_HDR_VERSION
+
+TGI_API_VERSION         = $06
+
+;------------------------------------------------------------------------------
+; Bitmapped tgi driver flags, stored in TGI_HDR::VARS::FLAGS.
+; Beware: Some of the bits are tested using the BIT instruction, so do not
+; change the values without checking the code!
+
+TGI_BM_FONT_FINESCALE   = $80           ; Bitmap fonts are fine grained scalable
+
+;------------------------------------------------------------------------------
+; Text constants
+
+TGI_FONT_BITMAP         = 0
+TGI_FONT_VECTOR         = 1
 
 TGI_TEXT_HORIZONTAL     = 0
 TGI_TEXT_VERTICAL       = 1
 
+;----------------------------------------------------------------------------
+; Results of tgi_outcode
+
+TGI_CLIP_NONE           = $00
+TGI_CLIP_LEFT           = $01
+TGI_CLIP_RIGHT          = $02
+TGI_CLIP_BOTTOM         = $04
+TGI_CLIP_TOP            = $08
+
 ;------------------------------------------------------------------------------
-; Variables
+; ASM accessible color constants
 
-       .global _tgi_drv                ; Pointer to driver
-       .global _tgi_error              ; Last error code
-        .global _tgi_mode               ; Graphics mode or zero
+        .global tgi_color_black:zp      ; Target-specific value for black
+        .global tgi_color_white:zp      ; Target-specific value for white
+
+;------------------------------------------------------------------------------
+; C accessible variables
+
+        .global _tgi_drv                ; Pointer to driver
+        .global _tgi_error              ; Last error code
+        .global _tgi_gmode              ; Flag: graphics mode active
         .global _tgi_curx               ; Current drawing cursor X
         .global _tgi_cury               ; Current drawing cursor Y
         .global _tgi_color              ; Current drawing color
+        .global _tgi_font               ; Which font to use
         .global _tgi_textdir            ; Current text direction
-        .global _tgi_textmagx           ; Text magnification in X dir
-        .global _tgi_textmagy           ; Text magnification in Y dir
+        .global _tgi_vectorfont         ; Pointer to vector font
+        .global _tgi_textscalew         ; Text magnification for the width
+        .global _tgi_textscaleh         ; Text magnification for the height
+        .global _tgi_charwidth          ; Width of scaled system font char
+        .global _tgi_charheight         ; Height of scaled system font char
         .global _tgi_xres               ; X resolution of the current mode
         .global _tgi_yres               ; Y resolution of the current mode
+        .global _tgi_xmax               ; Maximum X coordinate
+        .global _tgi_ymax               ; Maximum Y coordinate
         .global _tgi_colorcount         ; Number of available colors
         .global _tgi_pagecount          ; Number of available screen pages
-        .global _tgi_fontsizex          ; System font X size
-        .global _tgi_fontsizey          ; System font Y size
+        .global _tgi_fontwidth          ; System font width
+        .global _tgi_fontheight         ; System font height
+        .global _tgi_aspectratio        ; Aspect ratio, fixed point 8.8
+        .global _tgi_flags              ; TGI driver flags
+
+;------------------------------------------------------------------------------
+; ASM accessible variables
+
+        .global tgi_clip_x1             ; Coordinate for line clipper
+        .global tgi_clip_y1             ; Coordinate for line clipper
+        .global tgi_clip_x2             ; Coordinate for line clipper
+        .global tgi_clip_y2             ; Coordinate for line clipper
 
 ;------------------------------------------------------------------------------
 ; Driver entry points
 
         .global tgi_install
-        .global tgi_deinstall
+        .global tgi_uninstall
         .global tgi_init
         .global tgi_done
-       .global tgi_geterror
+        .global tgi_geterror
         .global tgi_control
         .global tgi_clear
         .global tgi_setviewpage
@@ -114,23 +162,72 @@ TGI_TEXT_VERTICAL       = 1
         .global tgi_getdefpalette
         .global tgi_setpixel
         .global tgi_getpixel
-        .global tgi_horline
         .global tgi_line
         .global tgi_bar
-        .global tgi_circle
         .global tgi_textstyle
         .global tgi_outtext
 
 ;------------------------------------------------------------------------------
 ; ASM functions
 
-        .global tgi_emu_bar
+        .global tgi_clear_ptr
+        .global tgi_clippedline
+        .global tgi_curtoxy
         .global tgi_getset
+        .global tgi_imulround
         .global tgi_inv_arg
+        .global tgi_inv_drv
         .global tgi_linepop
-        .global tgi_set_ptr
+        .global tgi_outcode
         .global tgi_popxy
         .global tgi_popxy2
-        .global tgi_curtoxy
-
+        .global tgi_set_ptr
 
+;------------------------------------------------------------------------------
+; C callable functions
+
+        .global _tgi_arc
+        .global _tgi_bar
+        .global _tgi_circle
+        .global _tgi_clear
+        .global _tgi_done
+        .global _tgi_ellipse
+        .global _tgi_getaspectratio
+        .global _tgi_getcolor
+        .global _tgi_getcolorcount
+        .global _tgi_getdefpalette
+        .global _tgi_geterror
+        .global _tgi_geterrormsg
+        .global _tgi_getmaxcolor
+        .global _tgi_getmaxx
+        .global _tgi_getmaxy
+        .global _tgi_getpagecount
+        .global _tgi_getpalette
+        .global _tgi_getpixel
+        .global _tgi_gettextheight
+        .global _tgi_gettextwidth
+        .global _tgi_getxres
+        .global _tgi_getyres
+        .global _tgi_gotoxy
+        .global _tgi_imulround
+        .global _tgi_init
+        .global _tgi_install
+        .global _tgi_install_vectorfont
+        .global _tgi_ioctl
+        .global _tgi_line
+        .global _tgi_lineto
+        .global _tgi_load_driver
+        .global _tgi_outtext
+        .global _tgi_outtextxy
+        .global _tgi_pieslice
+        .global _tgi_setaspectratio
+        .global _tgi_setcolor
+        .global _tgi_setdrawpage
+        .global _tgi_setpalette
+        .global _tgi_setpixel
+        .global _tgi_settextdir
+        .global _tgi_settextscale
+        .global _tgi_settextstyle
+        .global _tgi_setviewpage
+        .global _tgi_uninstall
+        .global _tgi_unload