mirror of
https://github.com/cc65/cc65.git
synced 2024-12-27 00:29:31 +00:00
Started to add tgi text output functions
git-svn-id: svn://svn.cc65.org/cc65/trunk@1428 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
2f44fb05a4
commit
7fffd12f11
@ -42,7 +42,9 @@ TGI_HDR_XRES = 4 ; X resolution
|
|||||||
TGI_HDR_YRES = 6 ; Y resolution
|
TGI_HDR_YRES = 6 ; Y resolution
|
||||||
TGI_HDR_COLORCOUNT = 8 ; Number of available colors
|
TGI_HDR_COLORCOUNT = 8 ; Number of available colors
|
||||||
TGI_HDR_PAGECOUNT = 9 ; Number of screens available
|
TGI_HDR_PAGECOUNT = 9 ; Number of screens available
|
||||||
TGI_HDR_RES = 10 ; Reserved for extensions
|
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_JUMPTAB = 16
|
||||||
TGI_HDR_INSTALL = TGI_HDR_JUMPTAB+0 ; INSTALL routine
|
TGI_HDR_INSTALL = TGI_HDR_JUMPTAB+0 ; INSTALL routine
|
||||||
@ -64,8 +66,16 @@ TGI_HDR_HORLINE = TGI_HDR_JUMPTAB+30 ; HORLINE routine
|
|||||||
TGI_HDR_LINE = TGI_HDR_JUMPTAB+32 ; LINE routine
|
TGI_HDR_LINE = TGI_HDR_JUMPTAB+32 ; LINE routine
|
||||||
TGI_HDR_BAR = TGI_HDR_JUMPTAB+34 ; BAR routine
|
TGI_HDR_BAR = TGI_HDR_JUMPTAB+34 ; BAR routine
|
||||||
TGI_HDR_CIRCLE = TGI_HDR_JUMPTAB+36 ; CIRCLE 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 = 19 ; Number of jump vectors
|
TGI_HDR_JUMPCOUNT = 21 ; Number of jump vectors
|
||||||
|
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
; Text style constants
|
||||||
|
|
||||||
|
TGI_TEXT_HORIZONTAL = 0
|
||||||
|
TGI_TEXT_VERTICAL = 1
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
; Variables
|
; Variables
|
||||||
@ -76,10 +86,15 @@ TGI_HDR_JUMPCOUNT = 19 ; Number of jump vectors
|
|||||||
.global _tgi_curx ; Current drawing cursor X
|
.global _tgi_curx ; Current drawing cursor X
|
||||||
.global _tgi_cury ; Current drawing cursor Y
|
.global _tgi_cury ; Current drawing cursor Y
|
||||||
.global _tgi_color ; Current drawing color
|
.global _tgi_color ; Current drawing color
|
||||||
|
.global _tgi_textdir ; Current text direction
|
||||||
|
.global _tgi_textmagx ; Text magnification in X dir
|
||||||
|
.global _tgi_textmagy ; Text magnification in Y dir
|
||||||
.global _tgi_xres ; X resolution of the current mode
|
.global _tgi_xres ; X resolution of the current mode
|
||||||
.global _tgi_yres ; Y resolution of the current mode
|
.global _tgi_yres ; Y resolution of the current mode
|
||||||
.global _tgi_colorcount ; Number of available colors
|
.global _tgi_colorcount ; Number of available colors
|
||||||
.global _tgi_pagecount ; Number of available screen pages
|
.global _tgi_pagecount ; Number of available screen pages
|
||||||
|
.global _tgi_fontsizex ; System font X size
|
||||||
|
.global _tgi_fontsizey ; System font Y size
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
; Driver entry points
|
; Driver entry points
|
||||||
@ -103,7 +118,8 @@ TGI_HDR_JUMPCOUNT = 19 ; Number of jump vectors
|
|||||||
.global tgi_line
|
.global tgi_line
|
||||||
.global tgi_bar
|
.global tgi_bar
|
||||||
.global tgi_circle
|
.global tgi_circle
|
||||||
|
.global tgi_textstyle
|
||||||
|
.global tgi_outtext
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
; ASM functions
|
; ASM functions
|
||||||
@ -113,5 +129,8 @@ TGI_HDR_JUMPCOUNT = 19 ; Number of jump vectors
|
|||||||
.global tgi_inv_arg
|
.global tgi_inv_arg
|
||||||
.global tgi_linepop
|
.global tgi_linepop
|
||||||
.global tgi_set_ptr
|
.global tgi_set_ptr
|
||||||
|
.global tgi_popxy
|
||||||
|
.global tgi_popxy2
|
||||||
|
.global tgi_curtoxy
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -47,6 +47,18 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/* Definitions */
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Constants used for tgi_textstyle */
|
||||||
|
#define TGI_TEXT_HORIZONTAL 0
|
||||||
|
#define TGI_TEXT_VERTICAL 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/* Functions */
|
/* Functions */
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
@ -163,6 +175,30 @@ void __fastcall__ tgi_outtext (int x, int y, const char* text);
|
|||||||
void __fastcall__ tgi_bar (int x1, int y1, int x2, int y2);
|
void __fastcall__ tgi_bar (int x1, int y1, int x2, int y2);
|
||||||
/* Draw a bar (a filled rectangle) using the current color. */
|
/* Draw a bar (a filled rectangle) using the current color. */
|
||||||
|
|
||||||
|
void __fastcall__ tgi_textstyle (unsigned char magx, unsigned char magy,
|
||||||
|
unsigned char dir);
|
||||||
|
/* Set the style for text output. */
|
||||||
|
|
||||||
|
unsigned __fastcall__ tgi_textwidth (const char* s);
|
||||||
|
/* Calculate the width of the text in pixels according to the current text
|
||||||
|
* style.
|
||||||
|
*/
|
||||||
|
|
||||||
|
unsigned __fastcall__ tgi_textheight (const char* s);
|
||||||
|
/* Calculate the height of the text in pixels according to the current text
|
||||||
|
* style.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void __fastcall__ tgi_outtext (const char* s);
|
||||||
|
/* Output text at the current graphics cursor position. The graphics cursor
|
||||||
|
* is moved to the end of the text.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void __fastcall__ tgi_outtextxy (int x, int y, const char* s);
|
||||||
|
/* Output text at the given cursor position. The graphics cursor is moved to
|
||||||
|
* the end of the text.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* End of tgi.h */
|
/* End of tgi.h */
|
||||||
|
@ -28,7 +28,9 @@
|
|||||||
.word 200 ; Y resolution
|
.word 200 ; Y resolution
|
||||||
.byte 2 ; Number of drawing colors
|
.byte 2 ; Number of drawing colors
|
||||||
.byte 1 ; Number of screens available
|
.byte 1 ; Number of screens available
|
||||||
.res 6, $00 ; Reserved for future extensions
|
.byte 8 ; System font X size
|
||||||
|
.byte 8 ; System font Y size
|
||||||
|
.res 4, $00 ; Reserved for future extensions
|
||||||
|
|
||||||
; Next comes the jump table. Currently all entries must be valid and may point
|
; Next comes the jump table. Currently all entries must be valid and may point
|
||||||
; to an RTS for test versions (function not implemented). A future version may
|
; to an RTS for test versions (function not implemented). A future version may
|
||||||
@ -55,7 +57,8 @@
|
|||||||
.word LINE
|
.word LINE
|
||||||
.word 0 ; BAR
|
.word 0 ; BAR
|
||||||
.word CIRCLE
|
.word CIRCLE
|
||||||
|
.word TEXTSTYLE
|
||||||
|
.word OUTTEXT
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
; Data.
|
; Data.
|
||||||
@ -109,6 +112,11 @@ OLDCH1: .res 1
|
|||||||
CHUNK2: .res 1
|
CHUNK2: .res 1
|
||||||
OLDCH2: .res 1
|
OLDCH2: .res 1
|
||||||
|
|
||||||
|
; Text output stuff
|
||||||
|
TEXTMAGX: .res 1
|
||||||
|
TEXTMAGY: .res 1
|
||||||
|
TEXTDIR: .res 1
|
||||||
|
|
||||||
; Constants and tables
|
; Constants and tables
|
||||||
|
|
||||||
.rodata
|
.rodata
|
||||||
@ -450,7 +458,7 @@ GETPIXEL:
|
|||||||
rts
|
rts
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
; HORLINE: Draw a horizontal line from X1/Y to X2/Y, where X1 = ptr1,
|
; HORLINE: Draw a horizontal line from X1/Y to X2/Y, where X1 = ptr1,
|
||||||
; Y = ptr2 and X2 = ptr3, using the current drawing color.
|
; Y = ptr2 and X2 = ptr3, using the current drawing color.
|
||||||
;
|
;
|
||||||
; This is a special line drawing entry used when the line is know to be
|
; This is a special line drawing entry used when the line is know to be
|
||||||
@ -686,7 +694,7 @@ XFIXC: sta TEMP
|
|||||||
bmi @C1 ;Skip if column is negative
|
bmi @C1 ;Skip if column is negative
|
||||||
cmp #39 ;End if move past end of screen
|
cmp #39 ;End if move past end of screen
|
||||||
bcs EXIT
|
bcs EXIT
|
||||||
@C1: lda POINT
|
@C1: lda POINT
|
||||||
adc #8
|
adc #8
|
||||||
sta POINT
|
sta POINT
|
||||||
bcc @CONT
|
bcc @CONT
|
||||||
@ -1139,6 +1147,31 @@ PCHUNK2:
|
|||||||
sta (X2),y
|
sta (X2),y
|
||||||
EXIT3: rts
|
EXIT3: rts
|
||||||
|
|
||||||
|
; ------------------------------------------------------------------------
|
||||||
|
; TEXTSTYLE: Set the style used when calling OUTTEXT. Text scaling in X and Y
|
||||||
|
; direction is passend in X/Y, the text direction is passed in A.
|
||||||
|
;
|
||||||
|
; Must set an error code: NO
|
||||||
|
;
|
||||||
|
|
||||||
|
TEXTSTYLE:
|
||||||
|
stx TEXTMAGX
|
||||||
|
sty TEXTMAGY
|
||||||
|
sta TEXTDIR
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
; ------------------------------------------------------------------------
|
||||||
|
; OUTTEXT: Output text at X/Y = ptr1/ptr2 using the current color and the
|
||||||
|
; current text style. The text to output is given as a zero terminated
|
||||||
|
; string with address in ptr3.
|
||||||
|
;
|
||||||
|
; Must set an error code: NO
|
||||||
|
;
|
||||||
|
|
||||||
|
OUTTEXT:
|
||||||
|
rts
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
; Calculate all variables to plot the pixel at X1/Y1. If the point is out
|
; Calculate all variables to plot the pixel at X1/Y1. If the point is out
|
||||||
; of range, a carry is returned and INRANGE is set to a value !0 zero. If
|
; of range, a carry is returned and INRANGE is set to a value !0 zero. If
|
||||||
|
Loading…
Reference in New Issue
Block a user