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:
parent
2f44fb05a4
commit
7fffd12f11
@ -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
|
||||
|
||||
|
||||
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user