1
0
mirror of https://github.com/cc65/cc65.git synced 2024-12-26 08:32:00 +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:
cuz 2002-10-03 11:18:49 +00:00
parent 2f44fb05a4
commit 7fffd12f11
3 changed files with 96 additions and 8 deletions

View File

@ -42,7 +42,9 @@ 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_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_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_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 = 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
@ -76,10 +86,15 @@ TGI_HDR_JUMPCOUNT = 19 ; Number of jump vectors
.global _tgi_curx ; Current drawing cursor X
.global _tgi_cury ; Current drawing cursor Y
.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_yres ; Y resolution of the current mode
.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
;------------------------------------------------------------------------------
; Driver entry points
@ -103,7 +118,8 @@ TGI_HDR_JUMPCOUNT = 19 ; Number of jump vectors
.global tgi_line
.global tgi_bar
.global tgi_circle
.global tgi_textstyle
.global tgi_outtext
;------------------------------------------------------------------------------
; ASM functions
@ -113,5 +129,8 @@ TGI_HDR_JUMPCOUNT = 19 ; Number of jump vectors
.global tgi_inv_arg
.global tgi_linepop
.global tgi_set_ptr
.global tgi_popxy
.global tgi_popxy2
.global tgi_curtoxy

View File

@ -47,6 +47,18 @@
/*****************************************************************************/
/* Definitions */
/*****************************************************************************/
/* Constants used for tgi_textstyle */
#define TGI_TEXT_HORIZONTAL 0
#define TGI_TEXT_VERTICAL 1
/*****************************************************************************/
/* 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);
/* 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 */

View File

@ -28,7 +28,9 @@
.word 200 ; Y resolution
.byte 2 ; Number of drawing colors
.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
; to an RTS for test versions (function not implemented). A future version may
@ -55,7 +57,8 @@
.word LINE
.word 0 ; BAR
.word CIRCLE
.word TEXTSTYLE
.word OUTTEXT
; ------------------------------------------------------------------------
; Data.
@ -109,6 +112,11 @@ OLDCH1: .res 1
CHUNK2: .res 1
OLDCH2: .res 1
; Text output stuff
TEXTMAGX: .res 1
TEXTMAGY: .res 1
TEXTDIR: .res 1
; Constants and tables
.rodata
@ -450,7 +458,7 @@ GETPIXEL:
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.
;
; 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
cmp #39 ;End if move past end of screen
bcs EXIT
@C1: lda POINT
@C1: lda POINT
adc #8
sta POINT
bcc @CONT
@ -1139,6 +1147,31 @@ PCHUNK2:
sta (X2),y
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
; of range, a carry is returned and INRANGE is set to a value !0 zero. If